@emnapi/runtime
Advanced tools
Comparing version 0.35.0 to 0.36.0
@@ -158,2 +158,13 @@ Object.defineProperty(exports, '__esModule', { value: true }); | ||
const supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); | ||
const supportWeakSymbol = (function () { | ||
try { | ||
const sym = Symbol(); | ||
new WeakRef(sym); | ||
new WeakMap().set(sym, undefined); | ||
} | ||
catch (_) { | ||
return false; | ||
} | ||
return true; | ||
})(); | ||
const supportBigInt = typeof BigInt !== 'undefined'; | ||
@@ -763,23 +774,34 @@ function isReferenceType(v) { | ||
class StrongRef { | ||
constructor(value) { | ||
this._value = value; | ||
} | ||
deref() { | ||
return this._value; | ||
} | ||
dispose() { | ||
this._value = undefined; | ||
} | ||
} | ||
class Persistent { | ||
constructor(value) { | ||
this._ref = value; | ||
this._ref = new StrongRef(value); | ||
} | ||
setWeak(param, callback) { | ||
if (this._ref === null) | ||
if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) | ||
return; | ||
if (!supportFinalizer) | ||
return; | ||
if (this._ref instanceof WeakRef) | ||
return; | ||
this._param = param; | ||
this._callback = callback; | ||
Persistent._registry.register(this._ref, this, this); | ||
this._ref = new WeakRef(this._ref); | ||
const value = this._ref.deref(); | ||
try { | ||
Persistent._registry.register(value, this, this); | ||
const weakRef = new WeakRef(value); | ||
this._ref.dispose(); | ||
this._ref = weakRef; | ||
this._param = param; | ||
this._callback = callback; | ||
} | ||
catch (_) { } | ||
} | ||
clearWeak() { | ||
if (this._ref === null) | ||
if (!supportFinalizer || this._ref === undefined) | ||
return; | ||
if (!supportFinalizer) | ||
return; | ||
if (this._ref instanceof WeakRef) { | ||
@@ -792,6 +814,12 @@ try { | ||
this._callback = undefined; | ||
this._ref = this._ref.deref(); | ||
const value = this._ref.deref(); | ||
if (value === undefined) { | ||
this._ref = value; | ||
} | ||
else { | ||
this._ref = new StrongRef(value); | ||
} | ||
} | ||
} | ||
reset(other) { | ||
reset() { | ||
if (supportFinalizer) { | ||
@@ -805,23 +833,14 @@ try { | ||
this._callback = undefined; | ||
if (other) { | ||
this._ref = other; | ||
if (this._ref instanceof StrongRef) { | ||
this._ref.dispose(); | ||
} | ||
else { | ||
this._ref = null; | ||
} | ||
this._ref = undefined; | ||
} | ||
isEmpty() { | ||
return this._ref === null; | ||
return this._ref === undefined; | ||
} | ||
deref() { | ||
var _a; | ||
if (!supportFinalizer) { | ||
return (_a = this._ref) !== null && _a !== void 0 ? _a : undefined; | ||
} | ||
if (this._ref === null) | ||
if (this._ref === undefined) | ||
return undefined; | ||
if (this._ref instanceof WeakRef) { | ||
return this._ref.deref(); | ||
} | ||
return this._ref; | ||
return this._ref.deref(); | ||
} | ||
@@ -831,3 +850,3 @@ } | ||
? new FinalizationRegistry((value) => { | ||
value._ref = null; | ||
value._ref = undefined; | ||
const callback = value._callback; | ||
@@ -854,5 +873,2 @@ const param = value._param; | ||
const handle = envObject.ctx.handleStore.get(handle_id); | ||
if (!isReferenceType(handle.value)) { | ||
throw new TypeError('Invalid reference value'); | ||
} | ||
const ref = new Reference(envObject, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); | ||
@@ -1026,2 +1042,3 @@ envObject.ctx.refStore.add(ref); | ||
supportFinalizer, | ||
supportWeakSymbol, | ||
supportBigInt, | ||
@@ -1112,3 +1129,3 @@ supportNewFunction, | ||
const version = "0.35.0"; | ||
const version = "0.36.0"; | ||
@@ -1115,0 +1132,0 @@ exports.CallbackInfo = CallbackInfo; |
@@ -1,1 +0,1 @@ | ||
Object.defineProperty(exports,"__esModule",{value:!0});class e{constructor(e,t,s,i,r){this.parent=e,this.thiz=t,this.data=s,this.args=i,this.fn=r}getNewTarget(e){const t=this.thiz;return null==t||null==t.constructor?0:t instanceof this.fn?e.ensureHandleId(t.constructor):0}}class t{constructor(){this.current=null}pop(){const e=this.current;null!==e&&(this.current=e.parent)}push(t,s,i,r){const n=new e(this.current,t,s,i,r);return this.current=n,n}dispose(){this.current=null}}class s{constructor(e){this._values=[void 0],this._values.length=e,this._size=1,this._freeList=[]}add(e){let t;if(this._freeList.length)t=this._freeList.shift();else{t=this._size,this._size++;const e=this._values.length;t>=e&&(this._values.length=Math.ceil(1.5*e))}e.id=t,this._values[t]=e}get(e){return this._values[e]}has(e){return void 0!==this._values[e]}remove(e){const t=this._values[e];t&&(t.id=0,this._values[e]=void 0,this._freeList.push(Number(e)))}dispose(){for(let e=1;e<this._size;++e){const t=this._values[e];null==t||t.dispose()}this._values=[void 0],this._size=1,this._freeList=[]}}class i extends s{constructor(){super(2)}}const r=function(){let e;try{e=new Function}catch(e){return!1}return"function"==typeof e}(),n=function(){if("undefined"!=typeof globalThis)return globalThis;let e=function(){return this}();if(!e&&r)try{e=new Function("return this")()}catch(e){}if(!e){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return e}(),o=new Error;class a{constructor(){this._exception=o}hasCaught(){return this._exception!==o}exception(){return this._exception}setError(e){this._exception=e}reset(){this._exception=o}extractException(){const e=this._exception;return this.reset(),e}}const u=function(){var e;try{return Boolean(null===(e=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===e?void 0:e.configurable)}catch(e){return!1}}(),l="object"==typeof Reflect,c="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,h="undefined"!=typeof BigInt;function p(e){return"object"==typeof e&&null!==e||"function"==typeof e}const f="function"==typeof setImmediate?setImmediate:function(e){if("function"!=typeof e)return;let t=new MessageChannel;t.port1.onmessage=function(){t.port1.onmessage=null,t=void 0,e()},t.port2.postMessage(null)},d=function(){let e;return e="undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0,e}(),_=function(){if("function"==typeof n.Buffer)return n.Buffer;try{return d("buffer").Buffer}catch(e){}}();class v{constructor(e,t){this.id=e,this.value=t}init(e,t){this.id=e,this.value=t}data(e){return e.getObjectBinding(this.value).data}isEmpty(){return 0===this.id}isNumber(){return!this.isEmpty()&&"number"==typeof this.value}isBigInt(){return!this.isEmpty()&&"bigint"==typeof this.value}isString(){return!this.isEmpty()&&"string"==typeof this.value}isFunction(){return!this.isEmpty()&&"function"==typeof this.value}isExternal(){return!this.isEmpty()&&p(this.value)&&null===Object.getPrototypeOf(this.value)}isObject(){return!this.isEmpty()&&"object"==typeof this.value&&null!==this.value}isArray(){return!this.isEmpty()&&Array.isArray(this.value)}isArrayBuffer(){return!this.isEmpty()&&this.value instanceof ArrayBuffer}isTypedArray(){return!this.isEmpty()&&ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)}isBuffer(){return!this.isEmpty()&&"function"==typeof _&&_.isBuffer(this.value)}isDataView(){return!this.isEmpty()&&this.value instanceof DataView}isDate(){return!this.isEmpty()&&this.value instanceof Date}isPromise(){return!this.isEmpty()&&this.value instanceof Promise}isBoolean(){return!this.isEmpty()&&"boolean"==typeof this.value}isUndefined(){return!this.isEmpty()&&void 0===this.value}isSymbol(){return!this.isEmpty()&&"symbol"==typeof this.value}isNull(){return!this.isEmpty()&&null===this.value}dispose(){0!==this.id&&(this.id=0,this.value=void 0)}}class y extends v{constructor(e,t){super(e,t)}dispose(){}}function g(){Object.setPrototypeOf(this,null)}g.prototype=null;class x{constructor(){this._values=[void 0,x.UNDEFINED,x.NULL,x.FALSE,x.TRUE,x.GLOBAL],this._next=x.MIN_ID}push(e){let t;const s=this._next,i=this._values;return s<i.length?(t=i[s],t.init(s,e)):(t=new v(s,e),i[s]=t),this._next++,t}erase(e,t){this._next=e;const s=this._values;for(let i=e;i<t;++i)s[i].dispose()}get(e){return this._values[e]}swap(e,t){const s=this._values,i=s[e];s[e]=s[t],s[e].id=Number(e),s[t]=i,i.id=Number(t)}dispose(){this._values.length=x.MIN_ID,this._next=x.MIN_ID}}x.UNDEFINED=new y(1,void 0),x.NULL=new y(2,null),x.FALSE=new y(3,!1),x.TRUE=new y(4,!0),x.GLOBAL=new y(5,n),x.MIN_ID=6;class S{constructor(e,t,s,i,r=i){this.handleStore=e,this.id=t,this.parent=s,this.child=null,null!==s&&(s.child=this),this.start=i,this.end=r,this._escapeCalled=!1}add(e){const t=this.handleStore.push(e);return this.end++,t}addExternal(e,t){const s=new g,i=e.ctx.handleStore.push(s);return e.initObjectBinding(s).data=t,this.end++,i}dispose(){this.start!==this.end&&this.handleStore.erase(this.start,this.end)}escape(e){if(this._escapeCalled)return null;if(this._escapeCalled=!0,e<this.start||e>=this.end)return null;this.handleStore.swap(e,this.start);const t=this.handleStore.get(this.start);return this.start++,this.parent.end++,t}escapeCalled(){return this._escapeCalled}}class b{constructor(){this._rootScope=new S(null,0,null,1,x.MIN_ID),this.currentScope=this._rootScope}get(e){e=Number(e);let t=this.currentScope;for(;t!==this._rootScope;){if(t.id===e)return t;t=t.parent}}openScope(e){const t=this.currentScope;let s=t.child;return null!==s?(s.start=s.end=t.end,s._escapeCalled=!1):s=new S(e.ctx.handleStore,t.id+1,t,t.end),this.currentScope=s,e.openHandleScopes++,s}closeScope(e){if(0===e.openHandleScopes)return;const t=this.currentScope;this.currentScope=t.parent,t.dispose(),e.openHandleScopes--}dispose(){let e=this.currentScope;for(;null!==e;){e.handleStore=null,e.id=0,e.parent=null,e.start=x.MIN_ID,e.end=x.MIN_ID,e._escapeCalled=!1;const t=e.child;e.child=null,e=t}this.currentScope=null}}class w extends s{constructor(){super(8)}}class k extends s{constructor(){super(8)}}class m{constructor(){this._next=null,this._prev=null}finalize(){}link(e){this._prev=e,this._next=e._next,null!==this._next&&(this._next._prev=this),e._next=this}unlink(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null}static finalizeAll(e){for(;null!==e._next;)e._next.finalize()}}class E{constructor(e,t=0,s=0,i=0){this.envObject=e,this._finalizeCallback=t,this._finalizeData=s,this._finalizeHint=i}callback(){return this._finalizeCallback}data(){return this._finalizeData}hint(){return this._finalizeHint}resetFinalizer(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0}dispose(){this.envObject=void 0}}class z extends E{constructor(e,t,s,i,r,n){super(e,i,r,n),this._next=null,this._prev=null,this._refcount=t,this._ownership=s,this.link(i?e.finalizing_reflist:e.reflist)}static finalizeAll(e){m.finalizeAll(e)}link(e){m.prototype.link.call(this,e)}unlink(){m.prototype.unlink.call(this)}dispose(){this.unlink(),this.envObject.dequeueFinalizer(this),super.dispose()}data(){return this._finalizeData}ref(){return++this._refcount}unref(){return 0===this._refcount?0:--this._refcount}refCount(){return this._refcount}ownership(){return this._ownership}finalize(){const e=this._ownership,t=this._finalizeCallback,s=this._finalizeData,i=this._finalizeHint;let r;this.resetFinalizer(),this.unlink();let n=!1;if(t){const e=Number(t);try{this.envObject.callFinalizer(e,s,i)}catch(e){n=!0,r=e}}if(0===e&&this.dispose(),n)throw r}}class C{constructor(e,t,s){this.ctx=e,this.makeDynCall_vppp=t,this.makeDynCall_vp=s,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new a,this.refs=1,this.reflist=new m,this.finalizing_reflist=new m,this.destructing=!1,this.finalizationScheduled=!1,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this._bindingMap=new WeakMap,this.id=0}static create(e,t,s){const i=new C(e,t,s);return e.envStore.add(i),e.addCleanupHook(i,(()=>{i.unref()}),0),i}ref(){this.refs++}unref(){this.refs--,0===this.refs&&this.dispose()}ensureHandle(e){return this.ctx.ensureHandle(e)}ensureHandleId(e){return this.ensureHandle(e).id}clearLastError(){const e=this.lastError;return e.errorCode=0,e.engineErrorCode=0,e.engineReserved=0,0}setLastError(e,t=0,s=0){const i=this.lastError;return i.errorCode=e,i.engineErrorCode=t,i.engineReserved=s,e}getReturnStatus(){return this.tryCatch.hasCaught()?this.setLastError(10):0}callIntoModule(e){this.clearLastError();const t=e(this);if(this.tryCatch.hasCaught()){throw this.tryCatch.extractException()}return t}callFinalizer(e,t,s){const i=this.makeDynCall_vppp(e),r=this.id,n=this.ctx.openScope(this);try{this.callIntoModule((()=>{i(r,t,s)}))}finally{this.ctx.closeScope(this,n)}}enqueueFinalizer(e){-1===this.pendingFinalizers.indexOf(e)&&this.pendingFinalizers.push(e),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),f((()=>{this.finalizationScheduled=!1,this.unref(),this.drainFinalizerQueue()})))}dequeueFinalizer(e){const t=this.pendingFinalizers.indexOf(e);-1!==t&&this.pendingFinalizers.splice(t,1)}drainFinalizerQueue(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}}dispose(){0!==this.id&&(this.destructing=!0,this.drainFinalizerQueue(),z.finalizeAll(this.finalizing_reflist),z.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id),this.id=0)}initObjectBinding(e){const t={wrapped:0,tag:null,data:0};return this._bindingMap.set(e,t),t}getObjectBinding(e){return this._bindingMap.has(e)?this._bindingMap.get(e):this.initObjectBinding(e)}setInstanceData(e,t,s){this.instanceData&&this.instanceData.dispose(),this.instanceData=new z(this,0,0,t,e,s)}getInstanceData(){return this.instanceData?this.instanceData.data():0}}class D extends Error{constructor(e){super(e);const t=new.target,s=t.prototype;if(!(this instanceof D)){const e=Object.setPrototypeOf;"function"==typeof e?e.call(Object,this,s):this.__proto__=s,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}}}Object.defineProperty(D.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});class H extends D{constructor(e,t){super(`${e}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${t?` ${t}`:""}`)}}Object.defineProperty(H.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});class I extends D{constructor(e,t){super(`${e}: The current runtime does not support "BigInt".${t?` ${t}`:""}`)}}Object.defineProperty(I.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBigIntError"});class O{constructor(e){this._ref=e}setWeak(e,t){null!==this._ref&&c&&(this._ref instanceof WeakRef||(this._param=e,this._callback=t,O._registry.register(this._ref,this,this),this._ref=new WeakRef(this._ref)))}clearWeak(){if(null!==this._ref&&c&&this._ref instanceof WeakRef){try{O._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0,this._ref=this._ref.deref()}}reset(e){if(c)try{O._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0,this._ref=e||null}isEmpty(){return null===this._ref}deref(){var e;return c?null!==this._ref?this._ref instanceof WeakRef?this._ref.deref():this._ref:void 0:null!==(e=this._ref)&&void 0!==e?e:void 0}}function F(e){e.persistent.reset(),e.envObject.enqueueFinalizer(e)}O._registry=c?new FinalizationRegistry((e=>{e._ref=null;const t=e._callback,s=e._param;e._callback=void 0,e._param=void 0,"function"==typeof t&&t(s)})):void 0;class j extends z{constructor(e,t,s,i=0,r=0,n=0){super(e,t>>>0,s,i,r,n),this.id=0}static create(e,t,s,i,r=0,n=0,o=0){const a=e.ctx.handleStore.get(t);if(!p(a.value))throw new TypeError("Invalid reference value");const u=new j(e,s,i,r,n,o);return e.ctx.refStore.add(u),u.persistent=new O(a.value),0===s&&u._setWeak(),u}ref(){if(this.persistent.isEmpty())return 0;const e=super.ref();if(1===e){this.persistent.deref()&&this.persistent.clearWeak()}return e}unref(){if(this.persistent.isEmpty())return 0;const e=this.refCount(),t=super.unref();if(1===e&&0===t){this.persistent.deref()&&this._setWeak()}return t}get(){const e=this.persistent.deref();if(e){return this.envObject.ensureHandle(e).id}return 0}_setWeak(){this.persistent.setWeak(this,F)}finalize(){this.persistent.reset(),super.finalize()}dispose(){0!==this.id&&(this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),super.dispose(),this.id=0)}}class N{constructor(e,t){this.id=0,this.ctx=e,this.value=t}static create(e,t){const s=new N(e,t);return e.deferredStore.add(s),s}resolve(e){this.value.resolve(e),this.dispose()}reject(e){this.value.reject(e),this.dispose()}dispose(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null}}class R{constructor(e,t,s,i){this.envObject=e,this.fn=t,this.arg=s,this.order=i}}class B{constructor(){this._cleanupHooks=[],this._cleanupHookCounter=0}empty(){return 0===this._cleanupHooks.length}add(e,t,s){if(this._cleanupHooks.filter((i=>i.envObject===e&&i.fn===t&&i.arg===s)).length>0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new R(e,t,s,this._cleanupHookCounter++))}remove(e,t,s){for(let i=0;i<this._cleanupHooks.length;++i){const r=this._cleanupHooks[i];if(r.envObject===e&&r.fn===t&&r.arg===s)return void this._cleanupHooks.splice(i,1)}}drain(){const e=this._cleanupHooks.slice();e.sort(((e,t)=>t.order-e.order));for(let t=0;t<e.length;++t){const s=e[t];"number"==typeof s.fn?s.envObject.makeDynCall_vp(s.fn)(s.arg):s.fn(s.arg),this._cleanupHooks.splice(this._cleanupHooks.indexOf(s),1)}}dispose(){this._cleanupHooks.length=0,this._cleanupHookCounter=0}}class L{constructor(){this.refHandle=(new MessageChannel).port1,this.count=0}increase(){0===this.count&&this.refHandle.ref(),this.count++}decrease(){0!==this.count&&(1===this.count&&this.refHandle.unref(),this.count--)}}class M{constructor(){this.envStore=new i,this.scopeStore=new b,this.refStore=new w,this.deferredStore=new k,this.handleStore=new x,this.cbinfoStack=new t,this.feature={supportReflect:l,supportFinalizer:c,supportBigInt:h,supportNewFunction:r,canSetFunctionName:u,setImmediate:f,Buffer:_},this.cleanupQueue=new B,"object"==typeof process&&null!==process&&"function"==typeof process.once&&(this.refCounter=new L,process.once("beforeExit",(()=>{this.runCleanup()})))}createNotSupportWeakRefError(e,t){return new H(e,t)}createNotSupportBigIntError(e,t){return new I(e,t)}createReference(e,t,s,i,r=0,n=0,o=0){return j.create(e,t,s,i,r,n,o)}createDeferred(e){return N.create(this,e)}createEnv(e,t){return C.create(this,e,t)}getCurrentScope(){return this.scopeStore.currentScope}addToCurrentScope(e){return this.scopeStore.currentScope.add(e)}openScope(e){return this.scopeStore.openScope(e)}closeScope(e,t){this.scopeStore.closeScope(e)}ensureHandle(e){switch(e){case void 0:return x.UNDEFINED;case null:return x.NULL;case!0:return x.TRUE;case!1:return x.FALSE;case n:return x.GLOBAL}return this.addToCurrentScope(e)}addCleanupHook(e,t,s){this.cleanupQueue.add(e,t,s)}removeCleanupHook(e,t,s){this.cleanupQueue.remove(e,t,s)}runCleanup(){for(;!this.cleanupQueue.empty();)this.cleanupQueue.drain()}increaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.increase()}decreaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.decrease()}dispose(){this.runCleanup()}}let W;function A(){return new M}exports.CallbackInfo=e,exports.CallbackInfoStack=t,exports.ConstHandle=y,exports.Context=M,exports.Deferred=N,exports.DeferredStore=k,exports.EmnapiError=D,exports.Env=C,exports.EnvStore=i,exports.Finalizer=E,exports.Handle=v,exports.HandleScope=S,exports.HandleStore=x,exports.NotSupportBigIntError=I,exports.NotSupportWeakRefError=H,exports.Persistent=O,exports.RefBase=z,exports.RefStore=w,exports.RefTracker=m,exports.Reference=j,exports.ScopeStore=b,exports.Store=s,exports.TryCatch=a,exports.createContext=A,exports.getDefaultContext=function(){return W||(W=A()),W},exports.isReferenceType=p,exports.version="0.35.0"; | ||
Object.defineProperty(exports,"__esModule",{value:!0});class e{constructor(e,t,s,i,r){this.parent=e,this.thiz=t,this.data=s,this.args=i,this.fn=r}getNewTarget(e){const t=this.thiz;return null==t||null==t.constructor?0:t instanceof this.fn?e.ensureHandleId(t.constructor):0}}class t{constructor(){this.current=null}pop(){const e=this.current;null!==e&&(this.current=e.parent)}push(t,s,i,r){const n=new e(this.current,t,s,i,r);return this.current=n,n}dispose(){this.current=null}}class s{constructor(e){this._values=[void 0],this._values.length=e,this._size=1,this._freeList=[]}add(e){let t;if(this._freeList.length)t=this._freeList.shift();else{t=this._size,this._size++;const e=this._values.length;t>=e&&(this._values.length=Math.ceil(1.5*e))}e.id=t,this._values[t]=e}get(e){return this._values[e]}has(e){return void 0!==this._values[e]}remove(e){const t=this._values[e];t&&(t.id=0,this._values[e]=void 0,this._freeList.push(Number(e)))}dispose(){for(let e=1;e<this._size;++e){const t=this._values[e];null==t||t.dispose()}this._values=[void 0],this._size=1,this._freeList=[]}}class i extends s{constructor(){super(2)}}const r=function(){let e;try{e=new Function}catch(e){return!1}return"function"==typeof e}(),n=function(){if("undefined"!=typeof globalThis)return globalThis;let e=function(){return this}();if(!e&&r)try{e=new Function("return this")()}catch(e){}if(!e){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return e}(),o=new Error;class a{constructor(){this._exception=o}hasCaught(){return this._exception!==o}exception(){return this._exception}setError(e){this._exception=e}reset(){this._exception=o}extractException(){const e=this._exception;return this.reset(),e}}const u=function(){var e;try{return Boolean(null===(e=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===e?void 0:e.configurable)}catch(e){return!1}}(),c="object"==typeof Reflect,l="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,h=function(){try{const e=Symbol();new WeakRef(e),(new WeakMap).set(e,void 0)}catch(e){return!1}return!0}(),p="undefined"!=typeof BigInt;function d(e){return"object"==typeof e&&null!==e||"function"==typeof e}const f="function"==typeof setImmediate?setImmediate:function(e){if("function"!=typeof e)return;let t=new MessageChannel;t.port1.onmessage=function(){t.port1.onmessage=null,t=void 0,e()},t.port2.postMessage(null)},_=function(){let e;return e="undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0,e}(),v=function(){if("function"==typeof n.Buffer)return n.Buffer;try{return _("buffer").Buffer}catch(e){}}();class y{constructor(e,t){this.id=e,this.value=t}init(e,t){this.id=e,this.value=t}data(e){return e.getObjectBinding(this.value).data}isEmpty(){return 0===this.id}isNumber(){return!this.isEmpty()&&"number"==typeof this.value}isBigInt(){return!this.isEmpty()&&"bigint"==typeof this.value}isString(){return!this.isEmpty()&&"string"==typeof this.value}isFunction(){return!this.isEmpty()&&"function"==typeof this.value}isExternal(){return!this.isEmpty()&&d(this.value)&&null===Object.getPrototypeOf(this.value)}isObject(){return!this.isEmpty()&&"object"==typeof this.value&&null!==this.value}isArray(){return!this.isEmpty()&&Array.isArray(this.value)}isArrayBuffer(){return!this.isEmpty()&&this.value instanceof ArrayBuffer}isTypedArray(){return!this.isEmpty()&&ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)}isBuffer(){return!this.isEmpty()&&"function"==typeof v&&v.isBuffer(this.value)}isDataView(){return!this.isEmpty()&&this.value instanceof DataView}isDate(){return!this.isEmpty()&&this.value instanceof Date}isPromise(){return!this.isEmpty()&&this.value instanceof Promise}isBoolean(){return!this.isEmpty()&&"boolean"==typeof this.value}isUndefined(){return!this.isEmpty()&&void 0===this.value}isSymbol(){return!this.isEmpty()&&"symbol"==typeof this.value}isNull(){return!this.isEmpty()&&null===this.value}dispose(){0!==this.id&&(this.id=0,this.value=void 0)}}class g extends y{constructor(e,t){super(e,t)}dispose(){}}function x(){Object.setPrototypeOf(this,null)}x.prototype=null;class S{constructor(){this._values=[void 0,S.UNDEFINED,S.NULL,S.FALSE,S.TRUE,S.GLOBAL],this._next=S.MIN_ID}push(e){let t;const s=this._next,i=this._values;return s<i.length?(t=i[s],t.init(s,e)):(t=new y(s,e),i[s]=t),this._next++,t}erase(e,t){this._next=e;const s=this._values;for(let i=e;i<t;++i)s[i].dispose()}get(e){return this._values[e]}swap(e,t){const s=this._values,i=s[e];s[e]=s[t],s[e].id=Number(e),s[t]=i,i.id=Number(t)}dispose(){this._values.length=S.MIN_ID,this._next=S.MIN_ID}}S.UNDEFINED=new g(1,void 0),S.NULL=new g(2,null),S.FALSE=new g(3,!1),S.TRUE=new g(4,!0),S.GLOBAL=new g(5,n),S.MIN_ID=6;class b{constructor(e,t,s,i,r=i){this.handleStore=e,this.id=t,this.parent=s,this.child=null,null!==s&&(s.child=this),this.start=i,this.end=r,this._escapeCalled=!1}add(e){const t=this.handleStore.push(e);return this.end++,t}addExternal(e,t){const s=new x,i=e.ctx.handleStore.push(s);return e.initObjectBinding(s).data=t,this.end++,i}dispose(){this.start!==this.end&&this.handleStore.erase(this.start,this.end)}escape(e){if(this._escapeCalled)return null;if(this._escapeCalled=!0,e<this.start||e>=this.end)return null;this.handleStore.swap(e,this.start);const t=this.handleStore.get(this.start);return this.start++,this.parent.end++,t}escapeCalled(){return this._escapeCalled}}class w{constructor(){this._rootScope=new b(null,0,null,1,S.MIN_ID),this.currentScope=this._rootScope}get(e){e=Number(e);let t=this.currentScope;for(;t!==this._rootScope;){if(t.id===e)return t;t=t.parent}}openScope(e){const t=this.currentScope;let s=t.child;return null!==s?(s.start=s.end=t.end,s._escapeCalled=!1):s=new b(e.ctx.handleStore,t.id+1,t,t.end),this.currentScope=s,e.openHandleScopes++,s}closeScope(e){if(0===e.openHandleScopes)return;const t=this.currentScope;this.currentScope=t.parent,t.dispose(),e.openHandleScopes--}dispose(){let e=this.currentScope;for(;null!==e;){e.handleStore=null,e.id=0,e.parent=null,e.start=S.MIN_ID,e.end=S.MIN_ID,e._escapeCalled=!1;const t=e.child;e.child=null,e=t}this.currentScope=null}}class k extends s{constructor(){super(8)}}class m extends s{constructor(){super(8)}}class E{constructor(){this._next=null,this._prev=null}finalize(){}link(e){this._prev=e,this._next=e._next,null!==this._next&&(this._next._prev=this),e._next=this}unlink(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null}static finalizeAll(e){for(;null!==e._next;)e._next.finalize()}}class z{constructor(e,t=0,s=0,i=0){this.envObject=e,this._finalizeCallback=t,this._finalizeData=s,this._finalizeHint=i}callback(){return this._finalizeCallback}data(){return this._finalizeData}hint(){return this._finalizeHint}resetFinalizer(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0}dispose(){this.envObject=void 0}}class C extends z{constructor(e,t,s,i,r,n){super(e,i,r,n),this._next=null,this._prev=null,this._refcount=t,this._ownership=s,this.link(i?e.finalizing_reflist:e.reflist)}static finalizeAll(e){E.finalizeAll(e)}link(e){E.prototype.link.call(this,e)}unlink(){E.prototype.unlink.call(this)}dispose(){this.unlink(),this.envObject.dequeueFinalizer(this),super.dispose()}data(){return this._finalizeData}ref(){return++this._refcount}unref(){return 0===this._refcount?0:--this._refcount}refCount(){return this._refcount}ownership(){return this._ownership}finalize(){const e=this._ownership,t=this._finalizeCallback,s=this._finalizeData,i=this._finalizeHint;let r;this.resetFinalizer(),this.unlink();let n=!1;if(t){const e=Number(t);try{this.envObject.callFinalizer(e,s,i)}catch(e){n=!0,r=e}}if(0===e&&this.dispose(),n)throw r}}class D{constructor(e,t,s){this.ctx=e,this.makeDynCall_vppp=t,this.makeDynCall_vp=s,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new a,this.refs=1,this.reflist=new E,this.finalizing_reflist=new E,this.destructing=!1,this.finalizationScheduled=!1,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this._bindingMap=new WeakMap,this.id=0}static create(e,t,s){const i=new D(e,t,s);return e.envStore.add(i),e.addCleanupHook(i,(()=>{i.unref()}),0),i}ref(){this.refs++}unref(){this.refs--,0===this.refs&&this.dispose()}ensureHandle(e){return this.ctx.ensureHandle(e)}ensureHandleId(e){return this.ensureHandle(e).id}clearLastError(){const e=this.lastError;return e.errorCode=0,e.engineErrorCode=0,e.engineReserved=0,0}setLastError(e,t=0,s=0){const i=this.lastError;return i.errorCode=e,i.engineErrorCode=t,i.engineReserved=s,e}getReturnStatus(){return this.tryCatch.hasCaught()?this.setLastError(10):0}callIntoModule(e){this.clearLastError();const t=e(this);if(this.tryCatch.hasCaught()){throw this.tryCatch.extractException()}return t}callFinalizer(e,t,s){const i=this.makeDynCall_vppp(e),r=this.id,n=this.ctx.openScope(this);try{this.callIntoModule((()=>{i(r,t,s)}))}finally{this.ctx.closeScope(this,n)}}enqueueFinalizer(e){-1===this.pendingFinalizers.indexOf(e)&&this.pendingFinalizers.push(e),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),f((()=>{this.finalizationScheduled=!1,this.unref(),this.drainFinalizerQueue()})))}dequeueFinalizer(e){const t=this.pendingFinalizers.indexOf(e);-1!==t&&this.pendingFinalizers.splice(t,1)}drainFinalizerQueue(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}}dispose(){0!==this.id&&(this.destructing=!0,this.drainFinalizerQueue(),C.finalizeAll(this.finalizing_reflist),C.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id),this.id=0)}initObjectBinding(e){const t={wrapped:0,tag:null,data:0};return this._bindingMap.set(e,t),t}getObjectBinding(e){return this._bindingMap.has(e)?this._bindingMap.get(e):this.initObjectBinding(e)}setInstanceData(e,t,s){this.instanceData&&this.instanceData.dispose(),this.instanceData=new C(this,0,0,t,e,s)}getInstanceData(){return this.instanceData?this.instanceData.data():0}}class H extends Error{constructor(e){super(e);const t=new.target,s=t.prototype;if(!(this instanceof H)){const e=Object.setPrototypeOf;"function"==typeof e?e.call(Object,this,s):this.__proto__=s,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}}}Object.defineProperty(H.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});class O extends H{constructor(e,t){super(`${e}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${t?` ${t}`:""}`)}}Object.defineProperty(O.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});class F extends H{constructor(e,t){super(`${e}: The current runtime does not support "BigInt".${t?` ${t}`:""}`)}}Object.defineProperty(F.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBigIntError"});class I{constructor(e){this._value=e}deref(){return this._value}dispose(){this._value=void 0}}class j{constructor(e){this._ref=new I(e)}setWeak(e,t){if(!l||void 0===this._ref||this._ref instanceof WeakRef)return;const s=this._ref.deref();try{j._registry.register(s,this,this);const i=new WeakRef(s);this._ref.dispose(),this._ref=i,this._param=e,this._callback=t}catch(e){}}clearWeak(){if(l&&void 0!==this._ref&&this._ref instanceof WeakRef){try{j._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0;const e=this._ref.deref();this._ref=void 0===e?e:new I(e)}}reset(){if(l)try{j._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0,this._ref instanceof I&&this._ref.dispose(),this._ref=void 0}isEmpty(){return void 0===this._ref}deref(){if(void 0!==this._ref)return this._ref.deref()}}function N(e){e.persistent.reset(),e.envObject.enqueueFinalizer(e)}j._registry=l?new FinalizationRegistry((e=>{e._ref=void 0;const t=e._callback,s=e._param;e._callback=void 0,e._param=void 0,"function"==typeof t&&t(s)})):void 0;class R extends C{constructor(e,t,s,i=0,r=0,n=0){super(e,t>>>0,s,i,r,n),this.id=0}static create(e,t,s,i,r=0,n=0,o=0){const a=e.ctx.handleStore.get(t),u=new R(e,s,i,r,n,o);return e.ctx.refStore.add(u),u.persistent=new j(a.value),0===s&&u._setWeak(),u}ref(){if(this.persistent.isEmpty())return 0;const e=super.ref();if(1===e){this.persistent.deref()&&this.persistent.clearWeak()}return e}unref(){if(this.persistent.isEmpty())return 0;const e=this.refCount(),t=super.unref();if(1===e&&0===t){this.persistent.deref()&&this._setWeak()}return t}get(){const e=this.persistent.deref();if(e){return this.envObject.ensureHandle(e).id}return 0}_setWeak(){this.persistent.setWeak(this,N)}finalize(){this.persistent.reset(),super.finalize()}dispose(){0!==this.id&&(this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),super.dispose(),this.id=0)}}class B{constructor(e,t){this.id=0,this.ctx=e,this.value=t}static create(e,t){const s=new B(e,t);return e.deferredStore.add(s),s}resolve(e){this.value.resolve(e),this.dispose()}reject(e){this.value.reject(e),this.dispose()}dispose(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null}}class L{constructor(e,t,s,i){this.envObject=e,this.fn=t,this.arg=s,this.order=i}}class W{constructor(){this._cleanupHooks=[],this._cleanupHookCounter=0}empty(){return 0===this._cleanupHooks.length}add(e,t,s){if(this._cleanupHooks.filter((i=>i.envObject===e&&i.fn===t&&i.arg===s)).length>0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new L(e,t,s,this._cleanupHookCounter++))}remove(e,t,s){for(let i=0;i<this._cleanupHooks.length;++i){const r=this._cleanupHooks[i];if(r.envObject===e&&r.fn===t&&r.arg===s)return void this._cleanupHooks.splice(i,1)}}drain(){const e=this._cleanupHooks.slice();e.sort(((e,t)=>t.order-e.order));for(let t=0;t<e.length;++t){const s=e[t];"number"==typeof s.fn?s.envObject.makeDynCall_vp(s.fn)(s.arg):s.fn(s.arg),this._cleanupHooks.splice(this._cleanupHooks.indexOf(s),1)}}dispose(){this._cleanupHooks.length=0,this._cleanupHookCounter=0}}class M{constructor(){this.refHandle=(new MessageChannel).port1,this.count=0}increase(){0===this.count&&this.refHandle.ref(),this.count++}decrease(){0!==this.count&&(1===this.count&&this.refHandle.unref(),this.count--)}}class A{constructor(){this.envStore=new i,this.scopeStore=new w,this.refStore=new k,this.deferredStore=new m,this.handleStore=new S,this.cbinfoStack=new t,this.feature={supportReflect:c,supportFinalizer:l,supportWeakSymbol:h,supportBigInt:p,supportNewFunction:r,canSetFunctionName:u,setImmediate:f,Buffer:v},this.cleanupQueue=new W,"object"==typeof process&&null!==process&&"function"==typeof process.once&&(this.refCounter=new M,process.once("beforeExit",(()=>{this.runCleanup()})))}createNotSupportWeakRefError(e,t){return new O(e,t)}createNotSupportBigIntError(e,t){return new F(e,t)}createReference(e,t,s,i,r=0,n=0,o=0){return R.create(e,t,s,i,r,n,o)}createDeferred(e){return B.create(this,e)}createEnv(e,t){return D.create(this,e,t)}getCurrentScope(){return this.scopeStore.currentScope}addToCurrentScope(e){return this.scopeStore.currentScope.add(e)}openScope(e){return this.scopeStore.openScope(e)}closeScope(e,t){this.scopeStore.closeScope(e)}ensureHandle(e){switch(e){case void 0:return S.UNDEFINED;case null:return S.NULL;case!0:return S.TRUE;case!1:return S.FALSE;case n:return S.GLOBAL}return this.addToCurrentScope(e)}addCleanupHook(e,t,s){this.cleanupQueue.add(e,t,s)}removeCleanupHook(e,t,s){this.cleanupQueue.remove(e,t,s)}runCleanup(){for(;!this.cleanupQueue.empty();)this.cleanupQueue.drain()}increaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.increase()}decreaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.decrease()}dispose(){this.runCleanup()}}let T;function P(){return new A}exports.CallbackInfo=e,exports.CallbackInfoStack=t,exports.ConstHandle=g,exports.Context=A,exports.Deferred=B,exports.DeferredStore=m,exports.EmnapiError=H,exports.Env=D,exports.EnvStore=i,exports.Finalizer=z,exports.Handle=y,exports.HandleScope=b,exports.HandleStore=S,exports.NotSupportBigIntError=F,exports.NotSupportWeakRefError=O,exports.Persistent=j,exports.RefBase=C,exports.RefStore=k,exports.RefTracker=E,exports.Reference=R,exports.ScopeStore=w,exports.Store=s,exports.TryCatch=a,exports.createContext=P,exports.getDefaultContext=function(){return T||(T=P()),T},exports.isReferenceType=d,exports.version="0.36.0"; |
@@ -282,2 +282,3 @@ export declare type Ptr = number | bigint | ||
supportFinalizer: boolean; | ||
supportWeakSymbol: boolean; | ||
supportBigInt: boolean; | ||
@@ -475,3 +476,3 @@ supportNewFunction: boolean; | ||
export declare class Persistent<T extends object> { | ||
export declare class Persistent<T> { | ||
private _ref; | ||
@@ -484,3 +485,3 @@ private _param; | ||
clearWeak(): void; | ||
reset(other?: T | WeakRef<T>): void; | ||
reset(): void; | ||
isEmpty(): boolean; | ||
@@ -487,0 +488,0 @@ deref(): T | undefined; |
@@ -164,2 +164,15 @@ import { __extends } from 'tslib'; | ||
var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); | ||
var supportWeakSymbol = /*#__PURE__*/ (function () { | ||
try { | ||
// eslint-disable-next-line symbol-description | ||
var sym = Symbol(); | ||
// eslint-disable-next-line no-new | ||
new WeakRef(sym); | ||
new WeakMap().set(sym, undefined); | ||
} | ||
catch (_) { | ||
return false; | ||
} | ||
return true; | ||
})(); | ||
var supportBigInt = typeof BigInt !== 'undefined'; | ||
@@ -804,23 +817,40 @@ function isReferenceType(v) { | ||
var StrongRef = /*#__PURE__*/ (function () { | ||
function StrongRef(value) { | ||
this._value = value; | ||
} | ||
StrongRef.prototype.deref = function () { | ||
return this._value; | ||
}; | ||
StrongRef.prototype.dispose = function () { | ||
this._value = undefined; | ||
}; | ||
return StrongRef; | ||
}()); | ||
var Persistent = /*#__PURE__*/ (function () { | ||
function Persistent(value) { | ||
this._ref = value; | ||
this._ref = new StrongRef(value); | ||
} | ||
Persistent.prototype.setWeak = function (param, callback) { | ||
if (this._ref === null) | ||
if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) | ||
return; | ||
if (!supportFinalizer) | ||
return; | ||
if (this._ref instanceof WeakRef) | ||
return; | ||
this._param = param; | ||
this._callback = callback; | ||
Persistent._registry.register(this._ref, this, this); | ||
this._ref = new WeakRef(this._ref); | ||
var value = this._ref.deref(); | ||
try { | ||
// try { | ||
Persistent._registry.register(value, this, this); | ||
var weakRef = new WeakRef(value); | ||
this._ref.dispose(); | ||
this._ref = weakRef; | ||
// } catch (_) { | ||
// Persistent._registry.register(this._ref, this, this) | ||
// this._ref = new WeakRef<any>(this._ref) | ||
// } | ||
this._param = param; | ||
this._callback = callback; | ||
} | ||
catch (_) { } | ||
}; | ||
Persistent.prototype.clearWeak = function () { | ||
if (this._ref === null) | ||
if (!supportFinalizer || this._ref === undefined) | ||
return; | ||
if (!supportFinalizer) | ||
return; | ||
if (this._ref instanceof WeakRef) { | ||
@@ -833,6 +863,12 @@ try { | ||
this._callback = undefined; | ||
this._ref = this._ref.deref(); | ||
var value = this._ref.deref(); | ||
if (value === undefined) { | ||
this._ref = value; | ||
} | ||
else { | ||
this._ref = new StrongRef(value); | ||
} | ||
} | ||
}; | ||
Persistent.prototype.reset = function (other) { | ||
Persistent.prototype.reset = function () { | ||
if (supportFinalizer) { | ||
@@ -846,27 +882,18 @@ try { | ||
this._callback = undefined; | ||
if (other) { | ||
this._ref = other; | ||
if (this._ref instanceof StrongRef) { | ||
this._ref.dispose(); | ||
} | ||
else { | ||
this._ref = null; | ||
} | ||
this._ref = undefined; | ||
}; | ||
Persistent.prototype.isEmpty = function () { | ||
return this._ref === null; | ||
return this._ref === undefined; | ||
}; | ||
Persistent.prototype.deref = function () { | ||
var _a; | ||
if (!supportFinalizer) { | ||
return (_a = this._ref) !== null && _a !== void 0 ? _a : undefined; | ||
} | ||
if (this._ref === null) | ||
if (this._ref === undefined) | ||
return undefined; | ||
if (this._ref instanceof WeakRef) { | ||
return this._ref.deref(); | ||
} | ||
return this._ref; | ||
return this._ref.deref(); | ||
}; | ||
Persistent._registry = supportFinalizer | ||
? new FinalizationRegistry(function (value) { | ||
value._ref = null; | ||
value._ref = undefined; | ||
var callback = value._callback; | ||
@@ -903,5 +930,2 @@ var param = value._param; | ||
var handle = envObject.ctx.handleStore.get(handle_id); | ||
if (!isReferenceType(handle.value)) { | ||
throw new TypeError('Invalid reference value'); | ||
} | ||
var ref = new Reference(envObject, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); | ||
@@ -1081,2 +1105,3 @@ envObject.ctx.refStore.add(ref); | ||
supportFinalizer: supportFinalizer, | ||
supportWeakSymbol: supportWeakSymbol, | ||
supportBigInt: supportBigInt, | ||
@@ -1171,4 +1196,4 @@ supportNewFunction: supportNewFunction, | ||
var version = "0.35.0"; | ||
var version = "0.36.0"; | ||
export { CallbackInfo, CallbackInfoStack, ConstHandle, Context, Deferred, DeferredStore, EmnapiError, Env, EnvStore, Finalizer, Handle, HandleScope, HandleStore, NotSupportBigIntError, NotSupportWeakRefError, Persistent, RefBase, RefStore, RefTracker, Reference, ScopeStore, Store, TryCatch, createContext, getDefaultContext, isReferenceType, version }; |
@@ -39,2 +39,3 @@ declare namespace emnapi { | ||
supportFinalizer: boolean; | ||
supportWeakSymbol: boolean; | ||
supportBigInt: boolean; | ||
@@ -232,3 +233,3 @@ supportNewFunction: boolean; | ||
export class Persistent<T extends object> { | ||
export class Persistent<T> { | ||
private _ref; | ||
@@ -241,3 +242,3 @@ private _param; | ||
clearWeak(): void; | ||
reset(other?: T | WeakRef<T>): void; | ||
reset(): void; | ||
isEmpty(): boolean; | ||
@@ -244,0 +245,0 @@ deref(): T | undefined; |
@@ -195,2 +195,15 @@ var emnapi = (function (exports) { | ||
var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); | ||
var supportWeakSymbol = /*#__PURE__*/ (function () { | ||
try { | ||
// eslint-disable-next-line symbol-description | ||
var sym = Symbol(); | ||
// eslint-disable-next-line no-new | ||
new WeakRef(sym); | ||
new WeakMap().set(sym, undefined); | ||
} | ||
catch (_) { | ||
return false; | ||
} | ||
return true; | ||
})(); | ||
var supportBigInt = typeof BigInt !== 'undefined'; | ||
@@ -835,23 +848,40 @@ function isReferenceType(v) { | ||
var StrongRef = /*#__PURE__*/ (function () { | ||
function StrongRef(value) { | ||
this._value = value; | ||
} | ||
StrongRef.prototype.deref = function () { | ||
return this._value; | ||
}; | ||
StrongRef.prototype.dispose = function () { | ||
this._value = undefined; | ||
}; | ||
return StrongRef; | ||
}()); | ||
var Persistent = /*#__PURE__*/ (function () { | ||
function Persistent(value) { | ||
this._ref = value; | ||
this._ref = new StrongRef(value); | ||
} | ||
Persistent.prototype.setWeak = function (param, callback) { | ||
if (this._ref === null) | ||
if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) | ||
return; | ||
if (!supportFinalizer) | ||
return; | ||
if (this._ref instanceof WeakRef) | ||
return; | ||
this._param = param; | ||
this._callback = callback; | ||
Persistent._registry.register(this._ref, this, this); | ||
this._ref = new WeakRef(this._ref); | ||
var value = this._ref.deref(); | ||
try { | ||
// try { | ||
Persistent._registry.register(value, this, this); | ||
var weakRef = new WeakRef(value); | ||
this._ref.dispose(); | ||
this._ref = weakRef; | ||
// } catch (_) { | ||
// Persistent._registry.register(this._ref, this, this) | ||
// this._ref = new WeakRef<any>(this._ref) | ||
// } | ||
this._param = param; | ||
this._callback = callback; | ||
} | ||
catch (_) { } | ||
}; | ||
Persistent.prototype.clearWeak = function () { | ||
if (this._ref === null) | ||
if (!supportFinalizer || this._ref === undefined) | ||
return; | ||
if (!supportFinalizer) | ||
return; | ||
if (this._ref instanceof WeakRef) { | ||
@@ -864,6 +894,12 @@ try { | ||
this._callback = undefined; | ||
this._ref = this._ref.deref(); | ||
var value = this._ref.deref(); | ||
if (value === undefined) { | ||
this._ref = value; | ||
} | ||
else { | ||
this._ref = new StrongRef(value); | ||
} | ||
} | ||
}; | ||
Persistent.prototype.reset = function (other) { | ||
Persistent.prototype.reset = function () { | ||
if (supportFinalizer) { | ||
@@ -877,27 +913,18 @@ try { | ||
this._callback = undefined; | ||
if (other) { | ||
this._ref = other; | ||
if (this._ref instanceof StrongRef) { | ||
this._ref.dispose(); | ||
} | ||
else { | ||
this._ref = null; | ||
} | ||
this._ref = undefined; | ||
}; | ||
Persistent.prototype.isEmpty = function () { | ||
return this._ref === null; | ||
return this._ref === undefined; | ||
}; | ||
Persistent.prototype.deref = function () { | ||
var _a; | ||
if (!supportFinalizer) { | ||
return (_a = this._ref) !== null && _a !== void 0 ? _a : undefined; | ||
} | ||
if (this._ref === null) | ||
if (this._ref === undefined) | ||
return undefined; | ||
if (this._ref instanceof WeakRef) { | ||
return this._ref.deref(); | ||
} | ||
return this._ref; | ||
return this._ref.deref(); | ||
}; | ||
Persistent._registry = supportFinalizer | ||
? new FinalizationRegistry(function (value) { | ||
value._ref = null; | ||
value._ref = undefined; | ||
var callback = value._callback; | ||
@@ -934,5 +961,2 @@ var param = value._param; | ||
var handle = envObject.ctx.handleStore.get(handle_id); | ||
if (!isReferenceType(handle.value)) { | ||
throw new TypeError('Invalid reference value'); | ||
} | ||
var ref = new Reference(envObject, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); | ||
@@ -1112,2 +1136,3 @@ envObject.ctx.refStore.add(ref); | ||
supportFinalizer: supportFinalizer, | ||
supportWeakSymbol: supportWeakSymbol, | ||
supportBigInt: supportBigInt, | ||
@@ -1202,3 +1227,3 @@ supportNewFunction: supportNewFunction, | ||
var version = "0.35.0"; | ||
var version = "0.36.0"; | ||
@@ -1205,0 +1230,0 @@ exports.CallbackInfo = CallbackInfo; |
@@ -198,2 +198,15 @@ (function (global, factory) { | ||
var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); | ||
var supportWeakSymbol = /*#__PURE__*/ (function () { | ||
try { | ||
// eslint-disable-next-line symbol-description | ||
var sym = Symbol(); | ||
// eslint-disable-next-line no-new | ||
new WeakRef(sym); | ||
new WeakMap().set(sym, undefined); | ||
} | ||
catch (_) { | ||
return false; | ||
} | ||
return true; | ||
})(); | ||
var supportBigInt = typeof BigInt !== 'undefined'; | ||
@@ -838,23 +851,40 @@ function isReferenceType(v) { | ||
var StrongRef = /*#__PURE__*/ (function () { | ||
function StrongRef(value) { | ||
this._value = value; | ||
} | ||
StrongRef.prototype.deref = function () { | ||
return this._value; | ||
}; | ||
StrongRef.prototype.dispose = function () { | ||
this._value = undefined; | ||
}; | ||
return StrongRef; | ||
}()); | ||
var Persistent = /*#__PURE__*/ (function () { | ||
function Persistent(value) { | ||
this._ref = value; | ||
this._ref = new StrongRef(value); | ||
} | ||
Persistent.prototype.setWeak = function (param, callback) { | ||
if (this._ref === null) | ||
if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) | ||
return; | ||
if (!supportFinalizer) | ||
return; | ||
if (this._ref instanceof WeakRef) | ||
return; | ||
this._param = param; | ||
this._callback = callback; | ||
Persistent._registry.register(this._ref, this, this); | ||
this._ref = new WeakRef(this._ref); | ||
var value = this._ref.deref(); | ||
try { | ||
// try { | ||
Persistent._registry.register(value, this, this); | ||
var weakRef = new WeakRef(value); | ||
this._ref.dispose(); | ||
this._ref = weakRef; | ||
// } catch (_) { | ||
// Persistent._registry.register(this._ref, this, this) | ||
// this._ref = new WeakRef<any>(this._ref) | ||
// } | ||
this._param = param; | ||
this._callback = callback; | ||
} | ||
catch (_) { } | ||
}; | ||
Persistent.prototype.clearWeak = function () { | ||
if (this._ref === null) | ||
if (!supportFinalizer || this._ref === undefined) | ||
return; | ||
if (!supportFinalizer) | ||
return; | ||
if (this._ref instanceof WeakRef) { | ||
@@ -867,6 +897,12 @@ try { | ||
this._callback = undefined; | ||
this._ref = this._ref.deref(); | ||
var value = this._ref.deref(); | ||
if (value === undefined) { | ||
this._ref = value; | ||
} | ||
else { | ||
this._ref = new StrongRef(value); | ||
} | ||
} | ||
}; | ||
Persistent.prototype.reset = function (other) { | ||
Persistent.prototype.reset = function () { | ||
if (supportFinalizer) { | ||
@@ -880,27 +916,18 @@ try { | ||
this._callback = undefined; | ||
if (other) { | ||
this._ref = other; | ||
if (this._ref instanceof StrongRef) { | ||
this._ref.dispose(); | ||
} | ||
else { | ||
this._ref = null; | ||
} | ||
this._ref = undefined; | ||
}; | ||
Persistent.prototype.isEmpty = function () { | ||
return this._ref === null; | ||
return this._ref === undefined; | ||
}; | ||
Persistent.prototype.deref = function () { | ||
var _a; | ||
if (!supportFinalizer) { | ||
return (_a = this._ref) !== null && _a !== void 0 ? _a : undefined; | ||
} | ||
if (this._ref === null) | ||
if (this._ref === undefined) | ||
return undefined; | ||
if (this._ref instanceof WeakRef) { | ||
return this._ref.deref(); | ||
} | ||
return this._ref; | ||
return this._ref.deref(); | ||
}; | ||
Persistent._registry = supportFinalizer | ||
? new FinalizationRegistry(function (value) { | ||
value._ref = null; | ||
value._ref = undefined; | ||
var callback = value._callback; | ||
@@ -937,5 +964,2 @@ var param = value._param; | ||
var handle = envObject.ctx.handleStore.get(handle_id); | ||
if (!isReferenceType(handle.value)) { | ||
throw new TypeError('Invalid reference value'); | ||
} | ||
var ref = new Reference(envObject, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); | ||
@@ -1115,2 +1139,3 @@ envObject.ctx.refStore.add(ref); | ||
supportFinalizer: supportFinalizer, | ||
supportWeakSymbol: supportWeakSymbol, | ||
supportBigInt: supportBigInt, | ||
@@ -1205,3 +1230,3 @@ supportNewFunction: supportNewFunction, | ||
var version = "0.35.0"; | ||
var version = "0.36.0"; | ||
@@ -1208,0 +1233,0 @@ exports.CallbackInfo = CallbackInfo; |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).emnapi={})}(this,(function(t){var e=function(){function t(t,e,n,i,r){this.parent=t,this.thiz=e,this.data=n,this.args=i,this.fn=r}return t.prototype.getNewTarget=function(t){var e=this.thiz;return null==e||null==e.constructor?0:e instanceof this.fn?t.ensureHandleId(e.constructor):0},t}(),n=function(){function t(){this.current=null}return t.prototype.pop=function(){var t=this.current;null!==t&&(this.current=t.parent)},t.prototype.push=function(t,n,i,r){var o=new e(this.current,t,n,i,r);return this.current=o,o},t.prototype.dispose=function(){this.current=null},t}(),i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},i(t,e)};function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var o=function(){function t(t){this._values=[void 0],this._values.length=t,this._size=1,this._freeList=[]}return t.prototype.add=function(t){var e;if(this._freeList.length)e=this._freeList.shift();else{e=this._size,this._size++;var n=this._values.length;e>=n&&(this._values.length=Math.ceil(1.5*n))}t.id=e,this._values[e]=t},t.prototype.get=function(t){return this._values[t]},t.prototype.has=function(t){return void 0!==this._values[t]},t.prototype.remove=function(t){var e=this._values[t];e&&(e.id=0,this._values[t]=void 0,this._freeList.push(Number(t)))},t.prototype.dispose=function(){for(var t=1;t<this._size;++t){var e=this._values[t];null==e||e.dispose()}this._values=[void 0],this._size=1,this._freeList=[]},t}(),s=function(t){function e(){return t.call(this,2)||this}return r(e,t),e}(o),u=function(){var t;try{t=new Function}catch(t){return!1}return"function"==typeof t}(),a=function(){if("undefined"!=typeof globalThis)return globalThis;var t=function(){return this}();if(!t&&u)try{t=new Function("return this")()}catch(t){}if(!t){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return t}(),p=new Error,c=function(){function t(){this._exception=p}return t.prototype.hasCaught=function(){return this._exception!==p},t.prototype.exception=function(){return this._exception},t.prototype.setError=function(t){this._exception=t},t.prototype.reset=function(){this._exception=p},t.prototype.extractException=function(){var t=this._exception;return this.reset(),t},t}(),f=function(){var t;try{return Boolean(null===(t=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===t?void 0:t.configurable)}catch(t){return!1}}(),l="object"==typeof Reflect,h="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,d="undefined"!=typeof BigInt;function y(t){return"object"==typeof t&&null!==t||"function"==typeof t}var v="function"==typeof setImmediate?setImmediate:function(t){if("function"==typeof t){var e=new MessageChannel;e.port1.onmessage=function(){e.port1.onmessage=null,e=void 0,t()},e.port2.postMessage(null)}},_=function(){return"undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0}(),g=function(){if("function"==typeof a.Buffer)return a.Buffer;try{return _("buffer").Buffer}catch(t){}}(),b=function(){function t(t,e){this.id=t,this.value=e}return t.prototype.init=function(t,e){this.id=t,this.value=e},t.prototype.data=function(t){return t.getObjectBinding(this.value).data},t.prototype.isEmpty=function(){return 0===this.id},t.prototype.isNumber=function(){return!this.isEmpty()&&"number"==typeof this.value},t.prototype.isBigInt=function(){return!this.isEmpty()&&"bigint"==typeof this.value},t.prototype.isString=function(){return!this.isEmpty()&&"string"==typeof this.value},t.prototype.isFunction=function(){return!this.isEmpty()&&"function"==typeof this.value},t.prototype.isExternal=function(){return!this.isEmpty()&&y(this.value)&&null===Object.getPrototypeOf(this.value)},t.prototype.isObject=function(){return!this.isEmpty()&&"object"==typeof this.value&&null!==this.value},t.prototype.isArray=function(){return!this.isEmpty()&&Array.isArray(this.value)},t.prototype.isArrayBuffer=function(){return!this.isEmpty()&&this.value instanceof ArrayBuffer},t.prototype.isTypedArray=function(){return!this.isEmpty()&&ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)},t.prototype.isBuffer=function(){return!this.isEmpty()&&"function"==typeof g&&g.isBuffer(this.value)},t.prototype.isDataView=function(){return!this.isEmpty()&&this.value instanceof DataView},t.prototype.isDate=function(){return!this.isEmpty()&&this.value instanceof Date},t.prototype.isPromise=function(){return!this.isEmpty()&&this.value instanceof Promise},t.prototype.isBoolean=function(){return!this.isEmpty()&&"boolean"==typeof this.value},t.prototype.isUndefined=function(){return!this.isEmpty()&&void 0===this.value},t.prototype.isSymbol=function(){return!this.isEmpty()&&"symbol"==typeof this.value},t.prototype.isNull=function(){return!this.isEmpty()&&null===this.value},t.prototype.dispose=function(){0!==this.id&&(this.id=0,this.value=void 0)},t}(),S=function(t){function e(e,n){return t.call(this,e,n)||this}return r(e,t),e.prototype.dispose=function(){},e}(b);function w(){Object.setPrototypeOf(this,null)}w.prototype=null;var m=function(){function t(){this._values=[void 0,t.UNDEFINED,t.NULL,t.FALSE,t.TRUE,t.GLOBAL],this._next=t.MIN_ID}return t.prototype.push=function(t){var e,n=this._next,i=this._values;return n<i.length?(e=i[n]).init(n,t):(e=new b(n,t),i[n]=e),this._next++,e},t.prototype.erase=function(t,e){this._next=t;for(var n=this._values,i=t;i<e;++i)n[i].dispose()},t.prototype.get=function(t){return this._values[t]},t.prototype.swap=function(t,e){var n=this._values,i=n[t];n[t]=n[e],n[t].id=Number(t),n[e]=i,i.id=Number(e)},t.prototype.dispose=function(){this._values.length=t.MIN_ID,this._next=t.MIN_ID},t.UNDEFINED=new S(1,void 0),t.NULL=new S(2,null),t.FALSE=new S(3,!1),t.TRUE=new S(4,!0),t.GLOBAL=new S(5,a),t.MIN_ID=6,t}(),E=function(){function t(t,e,n,i,r){void 0===r&&(r=i),this.handleStore=t,this.id=e,this.parent=n,this.child=null,null!==n&&(n.child=this),this.start=i,this.end=r,this._escapeCalled=!1}return t.prototype.add=function(t){var e=this.handleStore.push(t);return this.end++,e},t.prototype.addExternal=function(t,e){var n=new w,i=t.ctx.handleStore.push(n);return t.initObjectBinding(n).data=e,this.end++,i},t.prototype.dispose=function(){this.start!==this.end&&this.handleStore.erase(this.start,this.end)},t.prototype.escape=function(t){if(this._escapeCalled)return null;if(this._escapeCalled=!0,t<this.start||t>=this.end)return null;this.handleStore.swap(t,this.start);var e=this.handleStore.get(this.start);return this.start++,this.parent.end++,e},t.prototype.escapeCalled=function(){return this._escapeCalled},t}(),k=function(){function t(){this._rootScope=new E(null,0,null,1,m.MIN_ID),this.currentScope=this._rootScope}return t.prototype.get=function(t){t=Number(t);for(var e=this.currentScope;e!==this._rootScope;){if(e.id===t)return e;e=e.parent}},t.prototype.openScope=function(t){var e=this.currentScope,n=e.child;return null!==n?(n.start=n.end=e.end,n._escapeCalled=!1):n=new E(t.ctx.handleStore,e.id+1,e,e.end),this.currentScope=n,t.openHandleScopes++,n},t.prototype.closeScope=function(t){if(0!==t.openHandleScopes){var e=this.currentScope;this.currentScope=e.parent,e.dispose(),t.openHandleScopes--}},t.prototype.dispose=function(){for(var t=this.currentScope;null!==t;){t.handleStore=null,t.id=0,t.parent=null,t.start=m.MIN_ID,t.end=m.MIN_ID,t._escapeCalled=!1;var e=t.child;t.child=null,t=e}this.currentScope=null},t}(),z=function(t){function e(){return t.call(this,8)||this}return r(e,t),e}(o),C=function(t){function e(){return t.call(this,8)||this}return r(e,t),e}(o),x=function(){function t(){this._next=null,this._prev=null}return t.prototype.finalize=function(){},t.prototype.link=function(t){this._prev=t,this._next=t._next,null!==this._next&&(this._next._prev=this),t._next=this},t.prototype.unlink=function(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null},t.finalizeAll=function(t){for(;null!==t._next;)t._next.finalize()},t}(),O=function(){function t(t,e,n,i){void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),this.envObject=t,this._finalizeCallback=e,this._finalizeData=n,this._finalizeHint=i}return t.prototype.callback=function(){return this._finalizeCallback},t.prototype.data=function(){return this._finalizeData},t.prototype.hint=function(){return this._finalizeHint},t.prototype.resetFinalizer=function(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0},t.prototype.dispose=function(){this.envObject=void 0},t}(),D=function(t){function e(e,n,i,r,o,s){var u=t.call(this,e,r,o,s)||this;return u._next=null,u._prev=null,u._refcount=n,u._ownership=i,u.link(r?e.finalizing_reflist:e.reflist),u}return r(e,t),e.finalizeAll=function(t){x.finalizeAll(t)},e.prototype.link=function(t){x.prototype.link.call(this,t)},e.prototype.unlink=function(){x.prototype.unlink.call(this)},e.prototype.dispose=function(){this.unlink(),this.envObject.dequeueFinalizer(this),t.prototype.dispose.call(this)},e.prototype.data=function(){return this._finalizeData},e.prototype.ref=function(){return++this._refcount},e.prototype.unref=function(){return 0===this._refcount?0:--this._refcount},e.prototype.refCount=function(){return this._refcount},e.prototype.ownership=function(){return this._ownership},e.prototype.finalize=function(){var t,e=this._ownership,n=this._finalizeCallback,i=this._finalizeData,r=this._finalizeHint;this.resetFinalizer(),this.unlink();var o=!1;if(n){var s=Number(n);try{this.envObject.callFinalizer(s,i,r)}catch(e){o=!0,t=e}}if(0===e&&this.dispose(),o)throw t},e}(O),H=function(){function t(t,e,n){this.ctx=t,this.makeDynCall_vppp=e,this.makeDynCall_vp=n,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new c,this.refs=1,this.reflist=new x,this.finalizing_reflist=new x,this.destructing=!1,this.finalizationScheduled=!1,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this._bindingMap=new WeakMap,this.id=0}return t.create=function(e,n,i){var r=new t(e,n,i);return e.envStore.add(r),e.addCleanupHook(r,(function(){r.unref()}),0),r},t.prototype.ref=function(){this.refs++},t.prototype.unref=function(){this.refs--,0===this.refs&&this.dispose()},t.prototype.ensureHandle=function(t){return this.ctx.ensureHandle(t)},t.prototype.ensureHandleId=function(t){return this.ensureHandle(t).id},t.prototype.clearLastError=function(){var t=this.lastError;return t.errorCode=0,t.engineErrorCode=0,t.engineReserved=0,0},t.prototype.setLastError=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=0);var i=this.lastError;return i.errorCode=t,i.engineErrorCode=e,i.engineReserved=n,t},t.prototype.getReturnStatus=function(){return this.tryCatch.hasCaught()?this.setLastError(10):0},t.prototype.callIntoModule=function(t){this.clearLastError();var e=t(this);if(this.tryCatch.hasCaught())throw this.tryCatch.extractException();return e},t.prototype.callFinalizer=function(t,e,n){var i=this.makeDynCall_vppp(t),r=this.id,o=this.ctx.openScope(this);try{this.callIntoModule((function(){i(r,e,n)}))}finally{this.ctx.closeScope(this,o)}},t.prototype.enqueueFinalizer=function(t){var e=this;-1===this.pendingFinalizers.indexOf(t)&&this.pendingFinalizers.push(t),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),v((function(){e.finalizationScheduled=!1,e.unref(),e.drainFinalizerQueue()})))},t.prototype.dequeueFinalizer=function(t){var e=this.pendingFinalizers.indexOf(t);-1!==e&&this.pendingFinalizers.splice(e,1)},t.prototype.drainFinalizerQueue=function(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}},t.prototype.dispose=function(){0!==this.id&&(this.destructing=!0,this.drainFinalizerQueue(),D.finalizeAll(this.finalizing_reflist),D.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id),this.id=0)},t.prototype.initObjectBinding=function(t){var e={wrapped:0,tag:null,data:0};return this._bindingMap.set(t,e),e},t.prototype.getObjectBinding=function(t){return this._bindingMap.has(t)?this._bindingMap.get(t):this.initObjectBinding(t)},t.prototype.setInstanceData=function(t,e,n){this.instanceData&&this.instanceData.dispose(),this.instanceData=new D(this,0,0,e,t,n)},t.prototype.getInstanceData=function(){return this.instanceData?this.instanceData.data():0},t}(),j=function(t){function e(n){var i=this.constructor,r=t.call(this,n)||this,o=i,s=o.prototype;if(!(r instanceof e)){var u=Object.setPrototypeOf;"function"==typeof u?u.call(Object,r,s):r.__proto__=s,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(r,o)}return r}return r(e,t),e}(Error);Object.defineProperty(j.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});var I=function(t){function e(e,n){return t.call(this,"".concat(e,': The current runtime does not support "FinalizationRegistry" and "WeakRef".').concat(n?" ".concat(n):""))||this}return r(e,t),e}(j);Object.defineProperty(I.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});var F=function(t){function e(e,n){return t.call(this,"".concat(e,': The current runtime does not support "BigInt".').concat(n?" ".concat(n):""))||this}return r(e,t),e}(j);Object.defineProperty(F.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBigIntError"});var N=function(){function t(t){this._ref=t}return t.prototype.setWeak=function(e,n){null!==this._ref&&h&&(this._ref instanceof WeakRef||(this._param=e,this._callback=n,t._registry.register(this._ref,this,this),this._ref=new WeakRef(this._ref)))},t.prototype.clearWeak=function(){if(null!==this._ref&&h&&this._ref instanceof WeakRef){try{t._registry.unregister(this)}catch(t){}this._param=void 0,this._callback=void 0,this._ref=this._ref.deref()}},t.prototype.reset=function(e){if(h)try{t._registry.unregister(this)}catch(t){}this._param=void 0,this._callback=void 0,this._ref=e||null},t.prototype.isEmpty=function(){return null===this._ref},t.prototype.deref=function(){var t;return h?null!==this._ref?this._ref instanceof WeakRef?this._ref.deref():this._ref:void 0:null!==(t=this._ref)&&void 0!==t?t:void 0},t._registry=h?new FinalizationRegistry((function(t){t._ref=null;var e=t._callback,n=t._param;t._callback=void 0,t._param=void 0,"function"==typeof e&&e(n)})):void 0,t}();function R(t){t.persistent.reset(),t.envObject.enqueueFinalizer(t)}var B,L=function(t){function e(e,n,i,r,o,s){void 0===r&&(r=0),void 0===o&&(o=0),void 0===s&&(s=0);var u=t.call(this,e,n>>>0,i,r,o,s)||this;return u.id=0,u}return r(e,t),e.create=function(t,n,i,r,o,s,u){void 0===o&&(o=0),void 0===s&&(s=0),void 0===u&&(u=0);var a=t.ctx.handleStore.get(n);if(!y(a.value))throw new TypeError("Invalid reference value");var p=new e(t,i,r,o,s,u);return t.ctx.refStore.add(p),p.persistent=new N(a.value),0===i&&p._setWeak(),p},e.prototype.ref=function(){if(this.persistent.isEmpty())return 0;var e=t.prototype.ref.call(this);1===e&&(this.persistent.deref()&&this.persistent.clearWeak());return e},e.prototype.unref=function(){if(this.persistent.isEmpty())return 0;var e=this.refCount(),n=t.prototype.unref.call(this);1===e&&0===n&&(this.persistent.deref()&&this._setWeak());return n},e.prototype.get=function(){var t=this.persistent.deref();return t?this.envObject.ensureHandle(t).id:0},e.prototype._setWeak=function(){this.persistent.setWeak(this,R)},e.prototype.finalize=function(){this.persistent.reset(),t.prototype.finalize.call(this)},e.prototype.dispose=function(){0!==this.id&&(this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),t.prototype.dispose.call(this),this.id=0)},e}(D),T=function(){function t(t,e){this.id=0,this.ctx=t,this.value=e}return t.create=function(e,n){var i=new t(e,n);return e.deferredStore.add(i),i},t.prototype.resolve=function(t){this.value.resolve(t),this.dispose()},t.prototype.reject=function(t){this.value.reject(t),this.dispose()},t.prototype.dispose=function(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null},t}(),A=function(){return function(t,e,n,i){this.envObject=t,this.fn=e,this.arg=n,this.order=i}}(),M=function(){function t(){this._cleanupHooks=[],this._cleanupHookCounter=0}return t.prototype.empty=function(){return 0===this._cleanupHooks.length},t.prototype.add=function(t,e,n){if(this._cleanupHooks.filter((function(i){return i.envObject===t&&i.fn===e&&i.arg===n})).length>0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new A(t,e,n,this._cleanupHookCounter++))},t.prototype.remove=function(t,e,n){for(var i=0;i<this._cleanupHooks.length;++i){var r=this._cleanupHooks[i];if(r.envObject===t&&r.fn===e&&r.arg===n)return void this._cleanupHooks.splice(i,1)}},t.prototype.drain=function(){var t=this._cleanupHooks.slice();t.sort((function(t,e){return e.order-t.order}));for(var e=0;e<t.length;++e){var n=t[e];"number"==typeof n.fn?n.envObject.makeDynCall_vp(n.fn)(n.arg):n.fn(n.arg),this._cleanupHooks.splice(this._cleanupHooks.indexOf(n),1)}},t.prototype.dispose=function(){this._cleanupHooks.length=0,this._cleanupHookCounter=0},t}(),W=function(){function t(){this.refHandle=(new MessageChannel).port1,this.count=0}return t.prototype.increase=function(){0===this.count&&this.refHandle.ref(),this.count++},t.prototype.decrease=function(){0!==this.count&&(1===this.count&&this.refHandle.unref(),this.count--)},t}(),P=function(){function t(){var t=this;this.envStore=new s,this.scopeStore=new k,this.refStore=new z,this.deferredStore=new C,this.handleStore=new m,this.cbinfoStack=new n,this.feature={supportReflect:l,supportFinalizer:h,supportBigInt:d,supportNewFunction:u,canSetFunctionName:f,setImmediate:v,Buffer:g},this.cleanupQueue=new M,"object"==typeof process&&null!==process&&"function"==typeof process.once&&(this.refCounter=new W,process.once("beforeExit",(function(){t.runCleanup()})))}return t.prototype.createNotSupportWeakRefError=function(t,e){return new I(t,e)},t.prototype.createNotSupportBigIntError=function(t,e){return new F(t,e)},t.prototype.createReference=function(t,e,n,i,r,o,s){return void 0===r&&(r=0),void 0===o&&(o=0),void 0===s&&(s=0),L.create(t,e,n,i,r,o,s)},t.prototype.createDeferred=function(t){return T.create(this,t)},t.prototype.createEnv=function(t,e){return H.create(this,t,e)},t.prototype.getCurrentScope=function(){return this.scopeStore.currentScope},t.prototype.addToCurrentScope=function(t){return this.scopeStore.currentScope.add(t)},t.prototype.openScope=function(t){return this.scopeStore.openScope(t)},t.prototype.closeScope=function(t,e){this.scopeStore.closeScope(t)},t.prototype.ensureHandle=function(t){switch(t){case void 0:return m.UNDEFINED;case null:return m.NULL;case!0:return m.TRUE;case!1:return m.FALSE;case a:return m.GLOBAL}return this.addToCurrentScope(t)},t.prototype.addCleanupHook=function(t,e,n){this.cleanupQueue.add(t,e,n)},t.prototype.removeCleanupHook=function(t,e,n){this.cleanupQueue.remove(t,e,n)},t.prototype.runCleanup=function(){for(;!this.cleanupQueue.empty();)this.cleanupQueue.drain()},t.prototype.increaseWaitingRequestCounter=function(){var t;null===(t=this.refCounter)||void 0===t||t.increase()},t.prototype.decreaseWaitingRequestCounter=function(){var t;null===(t=this.refCounter)||void 0===t||t.decrease()},t.prototype.dispose=function(){this.runCleanup()},t}();function q(){return new P}t.CallbackInfo=e,t.CallbackInfoStack=n,t.ConstHandle=S,t.Context=P,t.Deferred=T,t.DeferredStore=C,t.EmnapiError=j,t.Env=H,t.EnvStore=s,t.Finalizer=O,t.Handle=b,t.HandleScope=E,t.HandleStore=m,t.NotSupportBigIntError=F,t.NotSupportWeakRefError=I,t.Persistent=N,t.RefBase=D,t.RefStore=z,t.RefTracker=x,t.Reference=L,t.ScopeStore=k,t.Store=o,t.TryCatch=c,t.createContext=q,t.getDefaultContext=function(){return B||(B=q()),B},t.isReferenceType=y,t.version="0.35.0",Object.defineProperty(t,"__esModule",{value:!0})})); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).emnapi={})}(this,(function(t){var e=function(){function t(t,e,n,i,r){this.parent=t,this.thiz=e,this.data=n,this.args=i,this.fn=r}return t.prototype.getNewTarget=function(t){var e=this.thiz;return null==e||null==e.constructor?0:e instanceof this.fn?t.ensureHandleId(e.constructor):0},t}(),n=function(){function t(){this.current=null}return t.prototype.pop=function(){var t=this.current;null!==t&&(this.current=t.parent)},t.prototype.push=function(t,n,i,r){var o=new e(this.current,t,n,i,r);return this.current=o,o},t.prototype.dispose=function(){this.current=null},t}(),i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},i(t,e)};function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var o=function(){function t(t){this._values=[void 0],this._values.length=t,this._size=1,this._freeList=[]}return t.prototype.add=function(t){var e;if(this._freeList.length)e=this._freeList.shift();else{e=this._size,this._size++;var n=this._values.length;e>=n&&(this._values.length=Math.ceil(1.5*n))}t.id=e,this._values[e]=t},t.prototype.get=function(t){return this._values[t]},t.prototype.has=function(t){return void 0!==this._values[t]},t.prototype.remove=function(t){var e=this._values[t];e&&(e.id=0,this._values[t]=void 0,this._freeList.push(Number(t)))},t.prototype.dispose=function(){for(var t=1;t<this._size;++t){var e=this._values[t];null==e||e.dispose()}this._values=[void 0],this._size=1,this._freeList=[]},t}(),s=function(t){function e(){return t.call(this,2)||this}return r(e,t),e}(o),u=function(){var t;try{t=new Function}catch(t){return!1}return"function"==typeof t}(),a=function(){if("undefined"!=typeof globalThis)return globalThis;var t=function(){return this}();if(!t&&u)try{t=new Function("return this")()}catch(t){}if(!t){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return t}(),p=new Error,c=function(){function t(){this._exception=p}return t.prototype.hasCaught=function(){return this._exception!==p},t.prototype.exception=function(){return this._exception},t.prototype.setError=function(t){this._exception=t},t.prototype.reset=function(){this._exception=p},t.prototype.extractException=function(){var t=this._exception;return this.reset(),t},t}(),f=function(){var t;try{return Boolean(null===(t=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===t?void 0:t.configurable)}catch(t){return!1}}(),h="object"==typeof Reflect,l="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,d=function(){try{var t=Symbol();new WeakRef(t),(new WeakMap).set(t,void 0)}catch(t){return!1}return!0}(),y="undefined"!=typeof BigInt;function v(t){return"object"==typeof t&&null!==t||"function"==typeof t}var _="function"==typeof setImmediate?setImmediate:function(t){if("function"==typeof t){var e=new MessageChannel;e.port1.onmessage=function(){e.port1.onmessage=null,e=void 0,t()},e.port2.postMessage(null)}},g=function(){return"undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0}(),b=function(){if("function"==typeof a.Buffer)return a.Buffer;try{return g("buffer").Buffer}catch(t){}}(),S=function(){function t(t,e){this.id=t,this.value=e}return t.prototype.init=function(t,e){this.id=t,this.value=e},t.prototype.data=function(t){return t.getObjectBinding(this.value).data},t.prototype.isEmpty=function(){return 0===this.id},t.prototype.isNumber=function(){return!this.isEmpty()&&"number"==typeof this.value},t.prototype.isBigInt=function(){return!this.isEmpty()&&"bigint"==typeof this.value},t.prototype.isString=function(){return!this.isEmpty()&&"string"==typeof this.value},t.prototype.isFunction=function(){return!this.isEmpty()&&"function"==typeof this.value},t.prototype.isExternal=function(){return!this.isEmpty()&&v(this.value)&&null===Object.getPrototypeOf(this.value)},t.prototype.isObject=function(){return!this.isEmpty()&&"object"==typeof this.value&&null!==this.value},t.prototype.isArray=function(){return!this.isEmpty()&&Array.isArray(this.value)},t.prototype.isArrayBuffer=function(){return!this.isEmpty()&&this.value instanceof ArrayBuffer},t.prototype.isTypedArray=function(){return!this.isEmpty()&&ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)},t.prototype.isBuffer=function(){return!this.isEmpty()&&"function"==typeof b&&b.isBuffer(this.value)},t.prototype.isDataView=function(){return!this.isEmpty()&&this.value instanceof DataView},t.prototype.isDate=function(){return!this.isEmpty()&&this.value instanceof Date},t.prototype.isPromise=function(){return!this.isEmpty()&&this.value instanceof Promise},t.prototype.isBoolean=function(){return!this.isEmpty()&&"boolean"==typeof this.value},t.prototype.isUndefined=function(){return!this.isEmpty()&&void 0===this.value},t.prototype.isSymbol=function(){return!this.isEmpty()&&"symbol"==typeof this.value},t.prototype.isNull=function(){return!this.isEmpty()&&null===this.value},t.prototype.dispose=function(){0!==this.id&&(this.id=0,this.value=void 0)},t}(),w=function(t){function e(e,n){return t.call(this,e,n)||this}return r(e,t),e.prototype.dispose=function(){},e}(S);function m(){Object.setPrototypeOf(this,null)}m.prototype=null;var k=function(){function t(){this._values=[void 0,t.UNDEFINED,t.NULL,t.FALSE,t.TRUE,t.GLOBAL],this._next=t.MIN_ID}return t.prototype.push=function(t){var e,n=this._next,i=this._values;return n<i.length?(e=i[n]).init(n,t):(e=new S(n,t),i[n]=e),this._next++,e},t.prototype.erase=function(t,e){this._next=t;for(var n=this._values,i=t;i<e;++i)n[i].dispose()},t.prototype.get=function(t){return this._values[t]},t.prototype.swap=function(t,e){var n=this._values,i=n[t];n[t]=n[e],n[t].id=Number(t),n[e]=i,i.id=Number(e)},t.prototype.dispose=function(){this._values.length=t.MIN_ID,this._next=t.MIN_ID},t.UNDEFINED=new w(1,void 0),t.NULL=new w(2,null),t.FALSE=new w(3,!1),t.TRUE=new w(4,!0),t.GLOBAL=new w(5,a),t.MIN_ID=6,t}(),E=function(){function t(t,e,n,i,r){void 0===r&&(r=i),this.handleStore=t,this.id=e,this.parent=n,this.child=null,null!==n&&(n.child=this),this.start=i,this.end=r,this._escapeCalled=!1}return t.prototype.add=function(t){var e=this.handleStore.push(t);return this.end++,e},t.prototype.addExternal=function(t,e){var n=new m,i=t.ctx.handleStore.push(n);return t.initObjectBinding(n).data=e,this.end++,i},t.prototype.dispose=function(){this.start!==this.end&&this.handleStore.erase(this.start,this.end)},t.prototype.escape=function(t){if(this._escapeCalled)return null;if(this._escapeCalled=!0,t<this.start||t>=this.end)return null;this.handleStore.swap(t,this.start);var e=this.handleStore.get(this.start);return this.start++,this.parent.end++,e},t.prototype.escapeCalled=function(){return this._escapeCalled},t}(),z=function(){function t(){this._rootScope=new E(null,0,null,1,k.MIN_ID),this.currentScope=this._rootScope}return t.prototype.get=function(t){t=Number(t);for(var e=this.currentScope;e!==this._rootScope;){if(e.id===t)return e;e=e.parent}},t.prototype.openScope=function(t){var e=this.currentScope,n=e.child;return null!==n?(n.start=n.end=e.end,n._escapeCalled=!1):n=new E(t.ctx.handleStore,e.id+1,e,e.end),this.currentScope=n,t.openHandleScopes++,n},t.prototype.closeScope=function(t){if(0!==t.openHandleScopes){var e=this.currentScope;this.currentScope=e.parent,e.dispose(),t.openHandleScopes--}},t.prototype.dispose=function(){for(var t=this.currentScope;null!==t;){t.handleStore=null,t.id=0,t.parent=null,t.start=k.MIN_ID,t.end=k.MIN_ID,t._escapeCalled=!1;var e=t.child;t.child=null,t=e}this.currentScope=null},t}(),C=function(t){function e(){return t.call(this,8)||this}return r(e,t),e}(o),x=function(t){function e(){return t.call(this,8)||this}return r(e,t),e}(o),O=function(){function t(){this._next=null,this._prev=null}return t.prototype.finalize=function(){},t.prototype.link=function(t){this._prev=t,this._next=t._next,null!==this._next&&(this._next._prev=this),t._next=this},t.prototype.unlink=function(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null},t.finalizeAll=function(t){for(;null!==t._next;)t._next.finalize()},t}(),D=function(){function t(t,e,n,i){void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),this.envObject=t,this._finalizeCallback=e,this._finalizeData=n,this._finalizeHint=i}return t.prototype.callback=function(){return this._finalizeCallback},t.prototype.data=function(){return this._finalizeData},t.prototype.hint=function(){return this._finalizeHint},t.prototype.resetFinalizer=function(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0},t.prototype.dispose=function(){this.envObject=void 0},t}(),H=function(t){function e(e,n,i,r,o,s){var u=t.call(this,e,r,o,s)||this;return u._next=null,u._prev=null,u._refcount=n,u._ownership=i,u.link(r?e.finalizing_reflist:e.reflist),u}return r(e,t),e.finalizeAll=function(t){O.finalizeAll(t)},e.prototype.link=function(t){O.prototype.link.call(this,t)},e.prototype.unlink=function(){O.prototype.unlink.call(this)},e.prototype.dispose=function(){this.unlink(),this.envObject.dequeueFinalizer(this),t.prototype.dispose.call(this)},e.prototype.data=function(){return this._finalizeData},e.prototype.ref=function(){return++this._refcount},e.prototype.unref=function(){return 0===this._refcount?0:--this._refcount},e.prototype.refCount=function(){return this._refcount},e.prototype.ownership=function(){return this._ownership},e.prototype.finalize=function(){var t,e=this._ownership,n=this._finalizeCallback,i=this._finalizeData,r=this._finalizeHint;this.resetFinalizer(),this.unlink();var o=!1;if(n){var s=Number(n);try{this.envObject.callFinalizer(s,i,r)}catch(e){o=!0,t=e}}if(0===e&&this.dispose(),o)throw t},e}(D),j=function(){function t(t,e,n){this.ctx=t,this.makeDynCall_vppp=e,this.makeDynCall_vp=n,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new c,this.refs=1,this.reflist=new O,this.finalizing_reflist=new O,this.destructing=!1,this.finalizationScheduled=!1,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this._bindingMap=new WeakMap,this.id=0}return t.create=function(e,n,i){var r=new t(e,n,i);return e.envStore.add(r),e.addCleanupHook(r,(function(){r.unref()}),0),r},t.prototype.ref=function(){this.refs++},t.prototype.unref=function(){this.refs--,0===this.refs&&this.dispose()},t.prototype.ensureHandle=function(t){return this.ctx.ensureHandle(t)},t.prototype.ensureHandleId=function(t){return this.ensureHandle(t).id},t.prototype.clearLastError=function(){var t=this.lastError;return t.errorCode=0,t.engineErrorCode=0,t.engineReserved=0,0},t.prototype.setLastError=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=0);var i=this.lastError;return i.errorCode=t,i.engineErrorCode=e,i.engineReserved=n,t},t.prototype.getReturnStatus=function(){return this.tryCatch.hasCaught()?this.setLastError(10):0},t.prototype.callIntoModule=function(t){this.clearLastError();var e=t(this);if(this.tryCatch.hasCaught())throw this.tryCatch.extractException();return e},t.prototype.callFinalizer=function(t,e,n){var i=this.makeDynCall_vppp(t),r=this.id,o=this.ctx.openScope(this);try{this.callIntoModule((function(){i(r,e,n)}))}finally{this.ctx.closeScope(this,o)}},t.prototype.enqueueFinalizer=function(t){var e=this;-1===this.pendingFinalizers.indexOf(t)&&this.pendingFinalizers.push(t),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),_((function(){e.finalizationScheduled=!1,e.unref(),e.drainFinalizerQueue()})))},t.prototype.dequeueFinalizer=function(t){var e=this.pendingFinalizers.indexOf(t);-1!==e&&this.pendingFinalizers.splice(e,1)},t.prototype.drainFinalizerQueue=function(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}},t.prototype.dispose=function(){0!==this.id&&(this.destructing=!0,this.drainFinalizerQueue(),H.finalizeAll(this.finalizing_reflist),H.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id),this.id=0)},t.prototype.initObjectBinding=function(t){var e={wrapped:0,tag:null,data:0};return this._bindingMap.set(t,e),e},t.prototype.getObjectBinding=function(t){return this._bindingMap.has(t)?this._bindingMap.get(t):this.initObjectBinding(t)},t.prototype.setInstanceData=function(t,e,n){this.instanceData&&this.instanceData.dispose(),this.instanceData=new H(this,0,0,e,t,n)},t.prototype.getInstanceData=function(){return this.instanceData?this.instanceData.data():0},t}(),F=function(t){function e(n){var i=this.constructor,r=t.call(this,n)||this,o=i,s=o.prototype;if(!(r instanceof e)){var u=Object.setPrototypeOf;"function"==typeof u?u.call(Object,r,s):r.__proto__=s,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(r,o)}return r}return r(e,t),e}(Error);Object.defineProperty(F.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});var I=function(t){function e(e,n){return t.call(this,"".concat(e,': The current runtime does not support "FinalizationRegistry" and "WeakRef".').concat(n?" ".concat(n):""))||this}return r(e,t),e}(F);Object.defineProperty(I.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});var N=function(t){function e(e,n){return t.call(this,"".concat(e,': The current runtime does not support "BigInt".').concat(n?" ".concat(n):""))||this}return r(e,t),e}(F);Object.defineProperty(N.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBigIntError"});var R=function(){function t(t){this._value=t}return t.prototype.deref=function(){return this._value},t.prototype.dispose=function(){this._value=void 0},t}(),B=function(){function t(t){this._ref=new R(t)}return t.prototype.setWeak=function(e,n){if(l&&void 0!==this._ref&&!(this._ref instanceof WeakRef)){var i=this._ref.deref();try{t._registry.register(i,this,this);var r=new WeakRef(i);this._ref.dispose(),this._ref=r,this._param=e,this._callback=n}catch(t){}}},t.prototype.clearWeak=function(){if(l&&void 0!==this._ref&&this._ref instanceof WeakRef){try{t._registry.unregister(this)}catch(t){}this._param=void 0,this._callback=void 0;var e=this._ref.deref();this._ref=void 0===e?e:new R(e)}},t.prototype.reset=function(){if(l)try{t._registry.unregister(this)}catch(t){}this._param=void 0,this._callback=void 0,this._ref instanceof R&&this._ref.dispose(),this._ref=void 0},t.prototype.isEmpty=function(){return void 0===this._ref},t.prototype.deref=function(){if(void 0!==this._ref)return this._ref.deref()},t._registry=l?new FinalizationRegistry((function(t){t._ref=void 0;var e=t._callback,n=t._param;t._callback=void 0,t._param=void 0,"function"==typeof e&&e(n)})):void 0,t}();function L(t){t.persistent.reset(),t.envObject.enqueueFinalizer(t)}var W,M=function(t){function e(e,n,i,r,o,s){void 0===r&&(r=0),void 0===o&&(o=0),void 0===s&&(s=0);var u=t.call(this,e,n>>>0,i,r,o,s)||this;return u.id=0,u}return r(e,t),e.create=function(t,n,i,r,o,s,u){void 0===o&&(o=0),void 0===s&&(s=0),void 0===u&&(u=0);var a=t.ctx.handleStore.get(n),p=new e(t,i,r,o,s,u);return t.ctx.refStore.add(p),p.persistent=new B(a.value),0===i&&p._setWeak(),p},e.prototype.ref=function(){if(this.persistent.isEmpty())return 0;var e=t.prototype.ref.call(this);1===e&&(this.persistent.deref()&&this.persistent.clearWeak());return e},e.prototype.unref=function(){if(this.persistent.isEmpty())return 0;var e=this.refCount(),n=t.prototype.unref.call(this);1===e&&0===n&&(this.persistent.deref()&&this._setWeak());return n},e.prototype.get=function(){var t=this.persistent.deref();return t?this.envObject.ensureHandle(t).id:0},e.prototype._setWeak=function(){this.persistent.setWeak(this,L)},e.prototype.finalize=function(){this.persistent.reset(),t.prototype.finalize.call(this)},e.prototype.dispose=function(){0!==this.id&&(this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),t.prototype.dispose.call(this),this.id=0)},e}(H),A=function(){function t(t,e){this.id=0,this.ctx=t,this.value=e}return t.create=function(e,n){var i=new t(e,n);return e.deferredStore.add(i),i},t.prototype.resolve=function(t){this.value.resolve(t),this.dispose()},t.prototype.reject=function(t){this.value.reject(t),this.dispose()},t.prototype.dispose=function(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null},t}(),T=function(){return function(t,e,n,i){this.envObject=t,this.fn=e,this.arg=n,this.order=i}}(),P=function(){function t(){this._cleanupHooks=[],this._cleanupHookCounter=0}return t.prototype.empty=function(){return 0===this._cleanupHooks.length},t.prototype.add=function(t,e,n){if(this._cleanupHooks.filter((function(i){return i.envObject===t&&i.fn===e&&i.arg===n})).length>0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new T(t,e,n,this._cleanupHookCounter++))},t.prototype.remove=function(t,e,n){for(var i=0;i<this._cleanupHooks.length;++i){var r=this._cleanupHooks[i];if(r.envObject===t&&r.fn===e&&r.arg===n)return void this._cleanupHooks.splice(i,1)}},t.prototype.drain=function(){var t=this._cleanupHooks.slice();t.sort((function(t,e){return e.order-t.order}));for(var e=0;e<t.length;++e){var n=t[e];"number"==typeof n.fn?n.envObject.makeDynCall_vp(n.fn)(n.arg):n.fn(n.arg),this._cleanupHooks.splice(this._cleanupHooks.indexOf(n),1)}},t.prototype.dispose=function(){this._cleanupHooks.length=0,this._cleanupHookCounter=0},t}(),q=function(){function t(){this.refHandle=(new MessageChannel).port1,this.count=0}return t.prototype.increase=function(){0===this.count&&this.refHandle.ref(),this.count++},t.prototype.decrease=function(){0!==this.count&&(1===this.count&&this.refHandle.unref(),this.count--)},t}(),U=function(){function t(){var t=this;this.envStore=new s,this.scopeStore=new z,this.refStore=new C,this.deferredStore=new x,this.handleStore=new k,this.cbinfoStack=new n,this.feature={supportReflect:h,supportFinalizer:l,supportWeakSymbol:d,supportBigInt:y,supportNewFunction:u,canSetFunctionName:f,setImmediate:_,Buffer:b},this.cleanupQueue=new P,"object"==typeof process&&null!==process&&"function"==typeof process.once&&(this.refCounter=new q,process.once("beforeExit",(function(){t.runCleanup()})))}return t.prototype.createNotSupportWeakRefError=function(t,e){return new I(t,e)},t.prototype.createNotSupportBigIntError=function(t,e){return new N(t,e)},t.prototype.createReference=function(t,e,n,i,r,o,s){return void 0===r&&(r=0),void 0===o&&(o=0),void 0===s&&(s=0),M.create(t,e,n,i,r,o,s)},t.prototype.createDeferred=function(t){return A.create(this,t)},t.prototype.createEnv=function(t,e){return j.create(this,t,e)},t.prototype.getCurrentScope=function(){return this.scopeStore.currentScope},t.prototype.addToCurrentScope=function(t){return this.scopeStore.currentScope.add(t)},t.prototype.openScope=function(t){return this.scopeStore.openScope(t)},t.prototype.closeScope=function(t,e){this.scopeStore.closeScope(t)},t.prototype.ensureHandle=function(t){switch(t){case void 0:return k.UNDEFINED;case null:return k.NULL;case!0:return k.TRUE;case!1:return k.FALSE;case a:return k.GLOBAL}return this.addToCurrentScope(t)},t.prototype.addCleanupHook=function(t,e,n){this.cleanupQueue.add(t,e,n)},t.prototype.removeCleanupHook=function(t,e,n){this.cleanupQueue.remove(t,e,n)},t.prototype.runCleanup=function(){for(;!this.cleanupQueue.empty();)this.cleanupQueue.drain()},t.prototype.increaseWaitingRequestCounter=function(){var t;null===(t=this.refCounter)||void 0===t||t.increase()},t.prototype.decreaseWaitingRequestCounter=function(){var t;null===(t=this.refCounter)||void 0===t||t.decrease()},t.prototype.dispose=function(){this.runCleanup()},t}();function Q(){return new U}t.CallbackInfo=e,t.CallbackInfoStack=n,t.ConstHandle=w,t.Context=U,t.Deferred=A,t.DeferredStore=x,t.EmnapiError=F,t.Env=j,t.EnvStore=s,t.Finalizer=D,t.Handle=S,t.HandleScope=E,t.HandleStore=k,t.NotSupportBigIntError=N,t.NotSupportWeakRefError=I,t.Persistent=B,t.RefBase=H,t.RefStore=C,t.RefTracker=O,t.Reference=M,t.ScopeStore=z,t.Store=o,t.TryCatch=c,t.createContext=Q,t.getDefaultContext=function(){return W||(W=Q()),W},t.isReferenceType=v,t.version="0.36.0",Object.defineProperty(t,"__esModule",{value:!0})})); |
{ | ||
"name": "@emnapi/runtime", | ||
"version": "0.35.0", | ||
"version": "0.36.0", | ||
"description": "emnapi runtime", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
284702
6871