Skip to content

JSRuntime class

Abstract base class for a JavaScript runtime.

C#
public abstract class JSRuntime

Public Members

namedescription
virtual AcquireThreadSafeFunction(…)
virtual AddAsyncCleanupHook(…)
virtual AddEnvCleanupHook(…)
virtual AddFinalizer(…)(2 methods)
virtual AdjustExternalMemory(…)
virtual AsyncDestroy(…)
virtual AsyncInit(…)
virtual AwaitPromise(…)
virtual CallFunction(…)
virtual CallThreadSafeFunction(…)
virtual CancelAsyncWork(…)
virtual CheckObjectTypeTag(…)
virtual CloseCallbackScope(…)
virtual CloseEscapableHandleScope(…)
virtual CloseHandleScope(…)
virtual CoerceToBool(…)
virtual CoerceToNumber(…)
virtual CoerceToObject(…)
virtual CoerceToString(…)
virtual CreateArray(…)(2 methods)
virtual CreateArrayBuffer(…)(2 methods)
virtual CreateAsyncWork(…)
virtual CreateBigInt(…)(3 methods)
virtual CreateBuffer(…)
virtual CreateBufferCopy(…)
virtual CreateDataView(…)
virtual CreateDate(…)
virtual CreateEnvironment(…)
virtual CreateError(…)
virtual CreateExternal(…)
virtual CreateExternalBuffer(…)
virtual CreateFunction(…)
virtual CreateNumber(…)(4 methods)
virtual CreateObject(…)
virtual CreatePlatform(…)
virtual CreatePromise(…)
virtual CreateRangeError(…)
virtual CreateReference(…)
virtual CreateString(…)(2 methods)
virtual CreateSymbol(…)
virtual CreateSyntaxError(…)
virtual CreateThreadSafeFunction(…)
virtual CreateTypedArray(…)
virtual CreateTypeError(…)
virtual DefineClass(…)
virtual DefineProperties(…)
virtual DeleteAsyncWork(…)
virtual DeleteElement(…)
virtual DeleteProperty(…)
virtual DeleteReference(…)
virtual DestroyEnvironment(…)
virtual DestroyPlatform(…)
virtual DetachArrayBuffer(…)
virtual EscapeHandle(…)
virtual FatalError(…)
virtual FatalException(…)
virtual Freeze(…)
virtual GetAllPropertyNames(…)
virtual GetAndClearLastException(…)
virtual GetArrayBufferInfo(…)
virtual GetArrayLength(…)
virtual GetBigIntWordCount(…)
virtual GetBigIntWords(…)
virtual GetBoolean(…)
virtual GetBufferInfo(…)
virtual GetCallbackArgs(…)
virtual GetCallbackInfo(…)
virtual GetDataViewInfo(…)
virtual GetElement(…)
virtual GetGlobal(…)
virtual GetInstanceData(…)
virtual GetLastErrorInfo(…)
virtual GetModuleFileName(…)
virtual GetNamedProperty(…)
virtual GetNewTarget(…)
virtual GetNodeVersion(…)
virtual GetNull(…)
virtual GetProperty(…)
virtual GetPropertyNames(…)
virtual GetPrototype(…)
virtual GetReferenceValue(…)
virtual GetSymbolFor(…)
virtual GetThreadSafeFunctionContext(…)
virtual GetTypedArrayInfo(…)
virtual GetUndefined(…)
virtual GetUVEventLoop(…)
virtual GetValueArrayBuffer(…)
virtual GetValueBigInt64(…)(2 methods)
virtual GetValueBool(…)
virtual GetValueDataView(…)
virtual GetValueDate(…)
virtual GetValueDouble(…)
virtual GetValueExternal(…)
virtual GetValueInt32(…)
virtual GetValueInt64(…)
virtual GetValueStringUtf16(…)
virtual GetValueStringUtf8(…)
virtual GetValueType(…)
virtual GetValueTypedArray(…)
virtual GetValueUInt32(…)
virtual GetVersion(…)
virtual HasElement(…)
virtual HasNamedProperty(…)
virtual HasOwnProperty(…)
virtual HasProperty(…)
virtual InstanceOf(…)
virtual IsArray(…)
virtual IsArrayBuffer(…)
virtual IsAvailable(…)
virtual IsBuffer(…)
virtual IsDataView(…)
virtual IsDate(…)
virtual IsDetachedArrayBuffer(…)
virtual IsError(…)
virtual IsExceptionPending(…)
virtual IsPromise(…)
virtual IsTypedArray(…)
virtual MakeCallback(…)
virtual NewInstance(…)
virtual OpenCallbackScope(…)
virtual OpenEscapableHandleScope(…)
virtual OpenHandleScope(…)
virtual QueueAsyncWork(…)
virtual RefReference(…)
virtual RefThreadSafeFunction(…)
virtual RegisterModule(…)
virtual RejectDeferred(…)
virtual ReleaseThreadSafeFunction(…)
virtual RemoveAsyncCleanupHook(…)
virtual RemoveEnvCleanupHook(…)
virtual RemoveWrap(…)
virtual ResolveDeferred(…)
virtual RunEnvironment(…)
virtual RunScript(…)
virtual Seal(…)
virtual SetElement(…)
virtual SetInstanceData(…)
virtual SetNamedProperty(…)
virtual SetObjectTypeTag(…)
virtual SetProperty(…)
virtual StrictEquals(…)
virtual Throw(…)
virtual ThrowError(…)
virtual ThrowRangeError(…)
virtual ThrowSyntaxError(…)
virtual ThrowTypeError(…)
virtual UnrefReference(…)
virtual UnrefThreadSafeFunction(…)
virtual Unwrap(…)
virtual Wrap(…)(2 methods)
struct c_bool
struct napi_callback
struct napi_callback_info
struct napi_deferred
struct napi_env
struct napi_error_message_handler
struct napi_escapable_handle_scope
struct napi_extended_error_info
struct napi_finalize
struct napi_handle_scope
enum napi_key_collection_mode
enum napi_key_conversion
[Flags] enum napi_key_filter
struct napi_platform
enum napi_property_attributes
struct napi_property_descriptor
struct napi_ref
delegate napi_register_module_v1
enum napi_status
enum napi_typedarray_type
struct napi_value
enum napi_valuetype

Protected Members

namedescription
JSRuntime()The default constructor.

Remarks

This is a mid-level API; it is lower level than JSValue and related types and methods, while it is higher level than the napi_* native functions. This middle layer serves two purposes: 1. It is used to implement all of the higher level APIs in the library, while encapsulating tedious concerns of dynamic function binding, memory pinning, string encoding, etc. 2. It allows swapping out the runtime implementation, either for testing with mocks or for using a JS runtime other than Node.js. (Other runtimes must implement the Node API.) Guidelines for this API: - Use .NET style method names, not napi_* function naming - Prefer strings, Span, and nint over pointers - Prefer ref and out over pointers, when practical - Use napi_value instead of JSValue, JSObject, JSArray, etc. - Do not throw exceptions; return status codes instead - Avoid overloads that are purely for convenience - GC handles should be managed at a higher layer; implementations of these APIs should not allocate or dereference GC handles The base methods all have default implementations that throw NotSupportedException. This makes it easier to create runtime classes (or test mocks) that implement only part of the API surface.

See Also

Released under the MIT license