@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.bd30a71 → 0.0.0-insiders.bdcd708

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +1142 -373
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +3 -3
  3. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
  4. package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +3 -3
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +3 -3
  6. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1245 -378
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +1271 -416
  8. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +3 -3
  9. package/node_modules/@emnapi/core/dist/emnapi-core.min.js +1 -1
  10. package/node_modules/@emnapi/core/dist/emnapi-core.min.mjs +1 -1
  11. package/node_modules/@emnapi/core/dist/emnapi-core.mjs +1142 -373
  12. package/node_modules/@emnapi/core/package.json +2 -2
  13. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +32 -5
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +8 -2
  15. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  16. package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +8 -2
  17. package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +8 -2
  18. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +33 -5
  19. package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +8 -2
  20. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +33 -5
  21. package/node_modules/@emnapi/runtime/dist/emnapi.js +33 -5
  22. package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +8 -2
  23. package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
  24. package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
  25. package/node_modules/@emnapi/runtime/dist/emnapi.mjs +32 -5
  26. package/node_modules/@emnapi/runtime/package.json +1 -1
  27. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +21 -33
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -1
  29. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
  30. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +2 -1
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -1
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +21 -33
  33. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +21 -33
  34. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -1
  35. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
  36. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
  37. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +21 -33
  38. package/node_modules/@emnapi/wasi-threads/package.json +1 -1
  39. package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +47 -12
  40. package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +14310 -10201
  41. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +47 -12
  42. package/node_modules/@napi-rs/wasm-runtime/package.json +6 -4
  43. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +164 -2
  44. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +164 -2
  45. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
  46. package/node_modules/@tybys/wasm-util/dist/wasm-util.js +164 -2
  47. package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
  48. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
  49. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +22 -2
  50. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
  51. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +22 -2
  52. package/node_modules/@tybys/wasm-util/package.json +1 -1
  53. package/package.json +6 -6
  54. package/tailwindcss-oxide.wasi-browser.js +1 -0
  55. package/tailwindcss-oxide.wasi.cjs +1 -1
  56. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  57. package/wasi-worker-browser.mjs +2 -0
@@ -116,7 +116,6 @@ function createNapiModule(options) {
116
116
  filename: '',
117
117
  childThread: ENVIRONMENT_IS_PTHREAD,
118
118
  initWorker: undefined,
119
- executeAsyncWork: undefined,
120
119
  waitThreadStart: waitThreadStart,
121
120
  PThread: undefined,
122
121
  init: function (options) {
@@ -128,10 +127,10 @@ function createNapiModule(options) {
128
127
  if (!(instance === null || instance === void 0 ? void 0 : instance.exports))
129
128
  throw new TypeError('Invalid wasm instance');
130
129
  wasmInstance = instance;
131
- var exports$1 = instance.exports;
130
+ var exports = instance.exports;
132
131
  var module = options.module;
133
- var memory = options.memory || exports$1.memory;
134
- var table = options.table || exports$1.__indirect_function_table;
132
+ var memory = options.memory || exports.memory;
133
+ var table = options.table || exports.__indirect_function_table;
135
134
  if (!(module instanceof _WebAssembly.Module))
136
135
  throw new TypeError('Invalid wasm module');
137
136
  if (!(memory instanceof _WebAssembly.Memory))
@@ -140,12 +139,12 @@ function createNapiModule(options) {
140
139
  throw new TypeError('Invalid wasm table');
141
140
  wasmMemory = memory;
142
141
  wasmTable = table;
143
- if (typeof exports$1.malloc !== 'function')
142
+ if (typeof exports.malloc !== 'function')
144
143
  throw new TypeError('malloc is not exported');
145
- if (typeof exports$1.free !== 'function')
144
+ if (typeof exports.free !== 'function')
146
145
  throw new TypeError('free is not exported');
147
- _malloc = exports$1.malloc;
148
- _free = exports$1.free;
146
+ _malloc = exports.malloc;
147
+ _free = exports.free;
149
148
  if (!napiModule.childThread) {
150
149
  // main thread only
151
150
  var moduleApiVersion = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */;
@@ -158,11 +157,11 @@ function createNapiModule(options) {
158
157
  var scope_1 = emnapiCtx.openScope(envObject);
159
158
  try {
160
159
  envObject.callIntoModule(function (_envObject) {
161
- var exports$1 = napiModule.exports;
162
- var exportsHandle = scope_1.add(exports$1);
160
+ var exports = napiModule.exports;
161
+ var exportsHandle = scope_1.add(exports);
163
162
  var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1;
164
163
  var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id);
165
- napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value;
164
+ napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
166
165
  });
167
166
  }
168
167
  catch (e) {
@@ -317,6 +316,9 @@ function createNapiModule(options) {
317
316
  * @__sig vppp
318
317
  */
319
318
  function _emnapi_get_node_version(major, minor, patch) {
319
+ major >>>= 0;
320
+ minor >>>= 0;
321
+ patch >>>= 0;
320
322
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
321
323
  var versions = (typeof process === 'object' && process !== null &&
322
324
  typeof process.versions === 'object' && process.versions !== null &&
@@ -382,6 +384,7 @@ function createNapiModule(options) {
382
384
  */
383
385
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
384
386
  var envObject = emnapiCtx.envStore.get(env);
387
+ callback >>>= 0;
385
388
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
386
389
  }
387
390
  /**
@@ -487,9 +490,20 @@ function createNapiModule(options) {
487
490
  return worker;
488
491
  }
489
492
  /** @__sig vp */
493
+ function _emnapi_worker_ref(pthreadPtr) {
494
+ if (ENVIRONMENT_IS_PTHREAD)
495
+ return;
496
+ pthreadPtr >>>= 0;
497
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
498
+ if (worker && typeof worker.ref === 'function') {
499
+ worker.ref();
500
+ }
501
+ }
502
+ /** @__sig vp */
490
503
  function _emnapi_worker_unref(pthreadPtr) {
491
504
  if (ENVIRONMENT_IS_PTHREAD)
492
505
  return;
506
+ pthreadPtr >>>= 0;
493
507
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
494
508
  if (worker && typeof worker.unref === 'function') {
495
509
  worker.unref();
@@ -597,9 +611,9 @@ function createNapiModule(options) {
597
611
  _emnapi_async_send_js: _emnapi_async_send_js,
598
612
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
599
613
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
614
+ _emnapi_worker_ref: _emnapi_worker_ref,
600
615
  _emnapi_worker_unref: _emnapi_worker_unref
601
616
  });
602
- /* eslint-disable @typescript-eslint/indent */
603
617
  /** @__sig ipjp */
604
618
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
605
619
  if (!env)
@@ -607,22 +621,15 @@ function createNapiModule(options) {
607
621
  var envObject = emnapiCtx.envStore.get(env);
608
622
  if (!adjusted_value)
609
623
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
610
- var change_in_bytes_number = Number(change_in_bytes);
611
- if (change_in_bytes_number < 0) {
612
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
613
- }
614
- var old_size = wasmMemory.buffer.byteLength;
615
- var new_size = old_size + change_in_bytes_number;
616
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
617
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
618
- return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
619
- }
624
+ // eslint-disable-next-line prefer-const
625
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
626
+ adjusted_value >>>= 0;
620
627
  if (emnapiCtx.feature.supportBigInt) {
621
628
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
622
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
629
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
623
630
  }
624
631
  else {
625
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
632
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
626
633
  }
627
634
  return envObject.clearLastError();
628
635
  }
@@ -790,6 +797,7 @@ function createNapiModule(options) {
790
797
  var asyncId = asyncContext.asyncId;
791
798
  var triggerAsyncId = asyncContext.triggerAsyncId;
792
799
  if (result) {
800
+ result >>>= 0;
793
801
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
794
802
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
795
803
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -833,6 +841,8 @@ function createNapiModule(options) {
833
841
  return;
834
842
  var resource = emnapiCtx.handleStore.get(async_resource).value;
835
843
  var callback = emnapiCtx.handleStore.get(cb).value;
844
+ argv >>>= 0;
845
+ size >>>= 0;
836
846
  size = size >>> 0;
837
847
  var arr = Array(size);
838
848
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -845,6 +855,7 @@ function createNapiModule(options) {
845
855
  triggerAsyncId: trigger_async_id
846
856
  });
847
857
  if (result) {
858
+ result >>>= 0;
848
859
  var envObject = emnapiCtx.envStore.get(env);
849
860
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
850
861
  v = envObject.ensureHandleId(ret);
@@ -875,6 +886,7 @@ function createNapiModule(options) {
875
886
  var low = Number(numberValue & BigInt(0xffffffff));
876
887
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
877
888
  var high = Number(numberValue >> BigInt(32));
889
+ result >>>= 0;
878
890
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
879
891
  HEAP_DATA_VIEW.setInt32(result, low, true);
880
892
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -885,6 +897,7 @@ function createNapiModule(options) {
885
897
  if (!emnapiNodeBinding) {
886
898
  return 9 /* napi_status.napi_generic_failure */;
887
899
  }
900
+ async_context >>>= 0;
888
901
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
889
902
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
890
903
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -933,10 +946,13 @@ function createNapiModule(options) {
933
946
  if (typeof v8func !== 'function') {
934
947
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
935
948
  }
949
+ async_context >>>= 0;
936
950
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
937
951
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
938
952
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
939
953
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
954
+ argv >>>= 0;
955
+ argc >>>= 0;
940
956
  argc = argc >>> 0;
941
957
  var arr = Array(argc);
942
958
  for (; i < argc; i++) {
@@ -950,6 +966,7 @@ function createNapiModule(options) {
950
966
  if (ret.status !== 0 /* napi_status.napi_ok */)
951
967
  return envObject.setLastError(ret.status);
952
968
  if (result) {
969
+ result >>>= 0;
953
970
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
954
971
  v = envObject.ensureHandleId(ret.value);
955
972
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -987,32 +1004,62 @@ function createNapiModule(options) {
987
1004
  * ```
988
1005
  */
989
1006
  var emnapiTSFN = {
1007
+ _liveSet: {},
990
1008
  offset: {
1009
+ __size__: 0,
991
1010
  /* napi_ref */ resource: 0,
992
- /* double */ async_id: 8,
993
- /* double */ trigger_async_id: 16,
994
- /* size_t */ queue_size: 24,
995
- /* void* */ queue: 1 * 4 + 24,
996
- /* size_t */ thread_count: 2 * 4 + 24,
997
- /* bool */ is_closing: 3 * 4 + 24,
998
- /* atomic_uchar */ dispatch_state: 3 * 4 + 28,
999
- /* void* */ context: 3 * 4 + 32,
1000
- /* size_t */ max_queue_size: 4 * 4 + 32,
1001
- /* napi_ref */ ref: 5 * 4 + 32,
1002
- /* napi_env */ env: 6 * 4 + 32,
1003
- /* void* */ finalize_data: 7 * 4 + 32,
1004
- /* napi_finalize */ finalize_cb: 8 * 4 + 32,
1005
- /* napi_threadsafe_function_call_js */ call_js_cb: 9 * 4 + 32,
1006
- /* bool */ handles_closing: 10 * 4 + 32,
1007
- /* bool */ async_ref: 10 * 4 + 36,
1008
- /* int32_t */ mutex: 10 * 4 + 40,
1009
- /* int32_t */ cond: 10 * 4 + 44,
1010
- end: 10 * 4 + 48
1011
+ /* double */ async_id: 0,
1012
+ /* double */ trigger_async_id: 0,
1013
+ /* size_t */ queue_size: 0,
1014
+ /* bool */ is_some: 0,
1015
+ /* void* */ queue: 0,
1016
+ // Reuse uv_async_t storage as JS-side wakeup state: pending event + scheduled drain.
1017
+ async_pending: 0,
1018
+ async_u_fd: 0,
1019
+ /* size_t */ thread_count: 0,
1020
+ /* int32_t */ state: 0,
1021
+ /* atomic_uchar */ dispatch_state: 0,
1022
+ /* void* */ context: 0,
1023
+ /* size_t */ max_queue_size: 0,
1024
+ /* napi_ref */ ref: 0,
1025
+ /* napi_env */ env: 0,
1026
+ /* void* */ finalize_data: 0,
1027
+ /* napi_finalize */ finalize_cb: 0,
1028
+ /* napi_threadsafe_function_call_js */ call_js_cb: 0,
1029
+ /* bool */ handles_closing: 0,
1030
+ /* bool */ async_ref: 0,
1031
+ /* int32_t */ mutex: 0,
1032
+ /* int32_t */ cond: 0
1011
1033
  },
1012
1034
  init: function () {
1035
+ emnapiTSFN._liveSet = new Set();
1036
+ emnapiTSFN.offset.__size__ = 184 /* NapiTSFNOffset32.__size__ */;
1037
+ emnapiTSFN.offset.resource = 0 /* NapiTSFNOffset32.async_resource_resource */;
1038
+ emnapiTSFN.offset.async_id = 8 /* NapiTSFNOffset32.async_resource_async_context_async_id */;
1039
+ emnapiTSFN.offset.trigger_async_id = 16 /* NapiTSFNOffset32.async_resource_async_context_trigger_async_id */;
1040
+ emnapiTSFN.offset.queue_size = 60 /* NapiTSFNOffset32.queue_size */;
1041
+ emnapiTSFN.offset.is_some = 24 /* NapiTSFNOffset32.async_resource_is_some */;
1042
+ emnapiTSFN.offset.queue = 64 /* NapiTSFNOffset32.queue */;
1043
+ emnapiTSFN.offset.async_pending = 132 /* NapiTSFNOffset32.async_pending */;
1044
+ emnapiTSFN.offset.async_u_fd = 96 /* NapiTSFNOffset32.async_u_fd */;
1045
+ emnapiTSFN.offset.thread_count = 136 /* NapiTSFNOffset32.thread_count */;
1046
+ emnapiTSFN.offset.state = 140 /* NapiTSFNOffset32.state */;
1047
+ emnapiTSFN.offset.dispatch_state = 144 /* NapiTSFNOffset32.dispatch_state */;
1048
+ emnapiTSFN.offset.context = 148 /* NapiTSFNOffset32.context */;
1049
+ emnapiTSFN.offset.max_queue_size = 152 /* NapiTSFNOffset32.max_queue_size */;
1050
+ emnapiTSFN.offset.ref = 156 /* NapiTSFNOffset32.ref */;
1051
+ emnapiTSFN.offset.env = 160 /* NapiTSFNOffset32.env */;
1052
+ emnapiTSFN.offset.finalize_data = 164 /* NapiTSFNOffset32.finalize_data */;
1053
+ emnapiTSFN.offset.finalize_cb = 168 /* NapiTSFNOffset32.finalize_cb */;
1054
+ emnapiTSFN.offset.call_js_cb = 172 /* NapiTSFNOffset32.call_js_cb */;
1055
+ emnapiTSFN.offset.handles_closing = 176 /* NapiTSFNOffset32.handles_closing */;
1056
+ emnapiTSFN.offset.async_ref = 180 /* NapiTSFNOffset32.async_ref */;
1057
+ emnapiTSFN.offset.mutex = 32 /* NapiTSFNOffset32.mutex */;
1058
+ emnapiTSFN.offset.cond = 56 /* NapiTSFNOffset32.cond */;
1059
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
1013
1060
  if (typeof PThread !== 'undefined') {
1014
1061
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
1015
- PThread.runningWorkers.forEach(emnapiTSFN.addListener);
1062
+ Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
1016
1063
  var __original_getNewWorker_1 = PThread.getNewWorker;
1017
1064
  PThread.getNewWorker = function () {
1018
1065
  var r = __original_getNewWorker_1.apply(this, arguments);
@@ -1033,7 +1080,10 @@ function createNapiModule(options) {
1033
1080
  var type = __emnapi__.type;
1034
1081
  var payload = __emnapi__.payload;
1035
1082
  if (type === 'tsfn-send') {
1036
- emnapiTSFN.dispatch(payload.tsfn);
1083
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
1084
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
1085
+ emnapiTSFN.enqueue(payload.tsfn);
1086
+ }
1037
1087
  }
1038
1088
  }
1039
1089
  };
@@ -1055,18 +1105,40 @@ function createNapiModule(options) {
1055
1105
  }
1056
1106
  return true;
1057
1107
  },
1108
+ /**
1109
+ * When another thread grows the shared WebAssembly.Memory, this agent's
1110
+ * cached `wasmMemory.buffer` may still have the old shorter length
1111
+ * (V8 refreshes it lazily). If a pointer derived from shared memory lies
1112
+ * beyond the cached length, `wasmMemory.grow(0)` forces the agent to
1113
+ * observe the current memory size and refreshes the buffer.
1114
+ */
1115
+ ensureBufferFor: function (end) {
1116
+ var buffer = wasmMemory.buffer;
1117
+ if (end > buffer.byteLength) {
1118
+ wasmMemory.grow(0);
1119
+ buffer = wasmMemory.buffer;
1120
+ }
1121
+ return buffer;
1122
+ },
1058
1123
  initQueue: function (func) {
1059
1124
  var size = 2 * 4;
1060
1125
  var queue = _malloc(size);
1061
1126
  if (!queue)
1062
1127
  return false;
1063
- new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
1128
+ queue >>>= 0;
1129
+ new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
1064
1130
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
1065
1131
  return true;
1066
1132
  },
1067
1133
  destroyQueue: function (func) {
1068
1134
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
1069
1135
  if (queue) {
1136
+ var node = emnapiTSFN.loadSizeTypeValue(queue, false);
1137
+ while (node !== 0) {
1138
+ var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
1139
+ _free(node);
1140
+ node = next;
1141
+ }
1070
1142
  _free(queue);
1071
1143
  }
1072
1144
  },
@@ -1079,6 +1151,7 @@ function createNapiModule(options) {
1079
1151
  var node = _malloc(size);
1080
1152
  if (!node)
1081
1153
  throw new Error('OOM');
1154
+ node >>>= 0;
1082
1155
  emnapiTSFN.storeSizeTypeValue(node, data, false);
1083
1156
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
1084
1157
  if (head === 0 && tail === 0) {
@@ -1114,11 +1187,11 @@ function createNapiModule(options) {
1114
1187
  var waitCondition = function () {
1115
1188
  var queueSize = emnapiTSFN.getQueueSize(func);
1116
1189
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
1117
- var isClosing = emnapiTSFN.getIsClosing(func);
1118
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
1190
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0 /* State.kOpen */;
1119
1191
  };
1120
1192
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1121
- return mutex.execute(function () {
1193
+ var shouldDelete = false;
1194
+ var ret = mutex.execute(function () {
1122
1195
  while (waitCondition()) {
1123
1196
  if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) {
1124
1197
  return 15 /* napi_status.napi_queue_full */;
@@ -1135,31 +1208,35 @@ function createNapiModule(options) {
1135
1208
  }
1136
1209
  cond.wait();
1137
1210
  }
1138
- if (emnapiTSFN.getIsClosing(func)) {
1139
- if (emnapiTSFN.getThreadCount(func) === 0) {
1140
- return 1 /* napi_status.napi_invalid_arg */;
1141
- }
1142
- else {
1143
- emnapiTSFN.subThreadCount(func);
1144
- return 16 /* napi_status.napi_closing */;
1145
- }
1146
- }
1147
- else {
1211
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
1148
1212
  emnapiTSFN.pushQueue(func, data);
1149
1213
  emnapiTSFN.send(func);
1150
1214
  return 0 /* napi_status.napi_ok */;
1151
1215
  }
1216
+ if (emnapiTSFN.getThreadCount(func) === 0) {
1217
+ return 1 /* napi_status.napi_invalid_arg */;
1218
+ }
1219
+ emnapiTSFN.subThreadCount(func);
1220
+ if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
1221
+ return 16 /* napi_status.napi_closing */;
1222
+ }
1223
+ shouldDelete = true;
1224
+ return 16 /* napi_status.napi_closing */;
1152
1225
  });
1226
+ if (shouldDelete) {
1227
+ emnapiTSFN.destroy(func);
1228
+ }
1229
+ return ret;
1153
1230
  },
1154
1231
  getMutex: function (func) {
1155
1232
  var index = func + emnapiTSFN.offset.mutex;
1156
1233
  var mutex = {
1157
1234
  lock: function () {
1158
1235
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1159
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1236
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1160
1237
  if (isBrowserMain) {
1161
1238
  while (true) {
1162
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1239
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1163
1240
  if (oldValue === 0) {
1164
1241
  return;
1165
1242
  }
@@ -1167,11 +1244,11 @@ function createNapiModule(options) {
1167
1244
  }
1168
1245
  else {
1169
1246
  while (true) {
1170
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1247
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1171
1248
  if (oldValue === 0) {
1172
1249
  return;
1173
1250
  }
1174
- Atomics.wait(i32a, 0, 1);
1251
+ Atomics.wait(i32a, 0, 10);
1175
1252
  }
1176
1253
  }
1177
1254
  },
@@ -1179,21 +1256,21 @@ function createNapiModule(options) {
1179
1256
  return new Promise<void>(resolve => {
1180
1257
  const again = (): void => { fn() }
1181
1258
  const fn = (): void => {
1182
- const i32a = new Int32Array(wasmMemory.buffer, index, 1)
1183
- const oldValue = Atomics.compareExchange(i32a, 0, 0, 1)
1259
+ const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
1260
+ const oldValue = Atomics.compareExchange(i32a, 0, 0, 10)
1184
1261
  if (oldValue === 0) {
1185
1262
  resolve()
1186
1263
  return
1187
1264
  }
1188
- (Atomics as any).waitAsync(i32a, 0, 1).value.then(again)
1265
+ (Atomics as any).waitAsync(i32a, 0, 10).value.then(again)
1189
1266
  }
1190
1267
  fn()
1191
1268
  })
1192
1269
  }, */
1193
1270
  unlock: function () {
1194
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1195
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
1196
- if (oldValue !== 1) {
1271
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1272
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1273
+ if (oldValue !== 10) {
1197
1274
  throw new Error('Tried to unlock while not holding the mutex');
1198
1275
  }
1199
1276
  Atomics.notify(i32a, 0, 1);
@@ -1225,14 +1302,14 @@ function createNapiModule(options) {
1225
1302
  var mutex = emnapiTSFN.getMutex(func);
1226
1303
  var cond = {
1227
1304
  wait: function () {
1228
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1305
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1229
1306
  var value = Atomics.load(i32a, 0);
1230
1307
  mutex.unlock();
1231
1308
  Atomics.wait(i32a, 0, value);
1232
1309
  mutex.lock();
1233
1310
  },
1234
1311
  /* waitAsync () {
1235
- const i32a = new Int32Array(wasmMemory.buffer, index, 1)
1312
+ const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
1236
1313
  const value = Atomics.load(i32a, 0)
1237
1314
  mutex.unlock()
1238
1315
  const lock = (): Promise<void> => mutex.lockAsync()
@@ -1243,7 +1320,7 @@ function createNapiModule(options) {
1243
1320
  }
1244
1321
  }, */
1245
1322
  signal: function () {
1246
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1323
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1247
1324
  Atomics.add(i32a, 0, 1);
1248
1325
  Atomics.notify(i32a, 0, 1);
1249
1326
  }
@@ -1256,15 +1333,15 @@ function createNapiModule(options) {
1256
1333
  addQueueSize: function (func) {
1257
1334
  var offset = emnapiTSFN.offset.queue_size;
1258
1335
  var arr, index;
1259
- arr = new Uint32Array(wasmMemory.buffer);
1260
- index = (func + offset) >> 2;
1336
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1337
+ index = (func + offset) >>> 2;
1261
1338
  Atomics.add(arr, index, 1);
1262
1339
  },
1263
1340
  subQueueSize: function (func) {
1264
1341
  var offset = emnapiTSFN.offset.queue_size;
1265
1342
  var arr, index;
1266
- arr = new Uint32Array(wasmMemory.buffer);
1267
- index = (func + offset) >> 2;
1343
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1344
+ index = (func + offset) >>> 2;
1268
1345
  Atomics.sub(arr, index, 1);
1269
1346
  },
1270
1347
  getThreadCount: function (func) {
@@ -1273,31 +1350,31 @@ function createNapiModule(options) {
1273
1350
  addThreadCount: function (func) {
1274
1351
  var offset = emnapiTSFN.offset.thread_count;
1275
1352
  var arr, index;
1276
- arr = new Uint32Array(wasmMemory.buffer);
1277
- index = (func + offset) >> 2;
1353
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1354
+ index = (func + offset) >>> 2;
1278
1355
  Atomics.add(arr, index, 1);
1279
1356
  },
1280
1357
  subThreadCount: function (func) {
1281
1358
  var offset = emnapiTSFN.offset.thread_count;
1282
1359
  var arr, index;
1283
- arr = new Uint32Array(wasmMemory.buffer);
1284
- index = (func + offset) >> 2;
1360
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1361
+ index = (func + offset) >>> 2;
1285
1362
  Atomics.sub(arr, index, 1);
1286
1363
  },
1287
- getIsClosing: function (func) {
1288
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
1364
+ getState: function (func) {
1365
+ return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
1289
1366
  },
1290
- setIsClosing: function (func, value) {
1291
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
1367
+ setState: function (func, value) {
1368
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
1292
1369
  },
1293
1370
  getHandlesClosing: function (func) {
1294
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
1371
+ return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
1295
1372
  },
1296
1373
  setHandlesClosing: function (func, value) {
1297
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
1374
+ Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
1298
1375
  },
1299
1376
  getDispatchState: function (func) {
1300
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
1377
+ return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
1301
1378
  },
1302
1379
  getContext: function (func) {
1303
1380
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -1327,68 +1404,98 @@ function createNapiModule(options) {
1327
1404
  var ret;
1328
1405
  var arr;
1329
1406
  if (unsigned) {
1330
- arr = new Uint32Array(wasmMemory.buffer);
1331
- ret = Atomics.load(arr, offset >> 2);
1407
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1408
+ ret = Atomics.load(arr, offset >>> 2);
1332
1409
  return ret;
1333
1410
  }
1334
1411
  else {
1335
- arr = new Int32Array(wasmMemory.buffer);
1336
- ret = Atomics.load(arr, offset >> 2);
1412
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1413
+ ret = Atomics.load(arr, offset >>> 2);
1337
1414
  return ret;
1338
1415
  }
1339
1416
  },
1340
1417
  storeSizeTypeValue: function (offset, value, unsigned) {
1341
1418
  var arr;
1342
1419
  if (unsigned) {
1343
- arr = new Uint32Array(wasmMemory.buffer);
1344
- Atomics.store(arr, offset >> 2, value);
1420
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1421
+ Atomics.store(arr, offset >>> 2, value);
1345
1422
  return undefined;
1346
1423
  }
1347
1424
  else {
1348
- arr = new Int32Array(wasmMemory.buffer);
1349
- Atomics.store(arr, offset >> 2, value >>> 0);
1425
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1426
+ Atomics.store(arr, offset >>> 2, value >>> 0);
1350
1427
  return undefined;
1351
1428
  }
1352
1429
  },
1430
+ releaseResources: function (func) {
1431
+ if (emnapiTSFN.getState(func) !== 2 /* State.kClosed */) {
1432
+ emnapiTSFN.setState(func, 2 /* State.kClosed */);
1433
+ var env = emnapiTSFN.getEnv(func);
1434
+ var envObject = emnapiCtx.envStore.get(env);
1435
+ var ref = emnapiTSFN.getRef(func);
1436
+ if (ref) {
1437
+ emnapiCtx.refStore.get(ref).dispose();
1438
+ }
1439
+ var resource = emnapiTSFN.getResource(func);
1440
+ emnapiCtx.refStore.get(resource).dispose();
1441
+ emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
1442
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1443
+ HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
1444
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1445
+ envObject.unref();
1446
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1447
+ var asyncRefOffset = asyncRefAddress >>> 2;
1448
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1449
+ if (Atomics.load(arr, asyncRefOffset) > 0) {
1450
+ Atomics.store(arr, asyncRefOffset, 0);
1451
+ emnapiCtx.decreaseWaitingRequestCounter();
1452
+ }
1453
+ if (emnapiNodeBinding) {
1454
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1455
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1456
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1457
+ _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1458
+ }
1459
+ }
1460
+ },
1353
1461
  destroy: function (func) {
1462
+ emnapiTSFN._liveSet.delete(func);
1354
1463
  emnapiTSFN.destroyQueue(func);
1355
- var env = emnapiTSFN.getEnv(func);
1356
- var envObject = emnapiCtx.envStore.get(env);
1357
- var ref = emnapiTSFN.getRef(func);
1358
- if (ref) {
1359
- emnapiCtx.refStore.get(ref).dispose();
1360
- }
1361
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1362
- envObject.unref();
1363
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1364
- var arr = new Int32Array(wasmMemory.buffer);
1365
- if (Atomics.load(arr, asyncRefOffset)) {
1366
- Atomics.store(arr, asyncRefOffset, 0);
1367
- emnapiCtx.decreaseWaitingRequestCounter();
1368
- }
1369
- var resource = emnapiTSFN.getResource(func);
1370
- emnapiCtx.refStore.get(resource).dispose();
1371
- if (emnapiNodeBinding) {
1372
- var view = new DataView(wasmMemory.buffer);
1373
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1374
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1375
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1376
- }
1464
+ emnapiTSFN.releaseResources(func);
1377
1465
  _free(func);
1378
1466
  },
1379
- emptyQueueAndDelete: function (func) {
1467
+ emptyQueue: function (func) {
1468
+ var drainQueue = [];
1469
+ emnapiTSFN.getMutex(func).execute(function () {
1470
+ while (emnapiTSFN.getQueueSize(func) > 0) {
1471
+ drainQueue.push(emnapiTSFN.shiftQueue(func));
1472
+ }
1473
+ });
1380
1474
  var callJsCb = emnapiTSFN.getCallJSCb(func);
1381
1475
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1382
1476
  var context = emnapiTSFN.getContext(func);
1383
1477
  var data;
1384
- while (emnapiTSFN.getQueueSize(func) > 0) {
1478
+ for (var i = 0; i < drainQueue.length; i++) {
1385
1479
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1386
- data = emnapiTSFN.shiftQueue(func);
1480
+ data = drainQueue[i];
1387
1481
  if (callJsCb) {
1388
1482
  (wasmTable.get(callJsCb))(0, 0, context, data);
1389
1483
  }
1390
1484
  }
1391
- emnapiTSFN.destroy(func);
1485
+ },
1486
+ maybeDelete: function (func) {
1487
+ var shouldDelete = false;
1488
+ emnapiTSFN.getMutex(func).execute(function () {
1489
+ if (emnapiTSFN.getThreadCount(func) > 0) {
1490
+ emnapiTSFN.releaseResources(func);
1491
+ }
1492
+ else {
1493
+ shouldDelete = true;
1494
+ }
1495
+ });
1496
+ if (shouldDelete) {
1497
+ emnapiTSFN.destroy(func);
1498
+ }
1392
1499
  },
1393
1500
  finalize: function (func) {
1394
1501
  var env = emnapiTSFN.getEnv(func);
@@ -1403,12 +1510,13 @@ function createNapiModule(options) {
1403
1510
  envObject.callFinalizerInternal(0, finalize, data, context);
1404
1511
  };
1405
1512
  try {
1513
+ emnapiTSFN.emptyQueue(func);
1406
1514
  if (finalize) {
1407
1515
  if (emnapiNodeBinding) {
1408
1516
  var resource = emnapiTSFN.getResource(func);
1409
1517
  var resource_value = emnapiCtx.refStore.get(resource).get();
1410
1518
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1411
- var view = new DataView(wasmMemory.buffer);
1519
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1412
1520
  var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1413
1521
  var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1414
1522
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
@@ -1420,7 +1528,7 @@ function createNapiModule(options) {
1420
1528
  f();
1421
1529
  }
1422
1530
  }
1423
- emnapiTSFN.emptyQueueAndDelete(func);
1531
+ emnapiTSFN.maybeDelete(func);
1424
1532
  }
1425
1533
  finally {
1426
1534
  emnapiCtx.closeScope(envObject);
@@ -1436,7 +1544,7 @@ function createNapiModule(options) {
1436
1544
  try {
1437
1545
  if (set_closing) {
1438
1546
  emnapiTSFN.getMutex(func).execute(function () {
1439
- emnapiTSFN.setIsClosing(func, 1);
1547
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
1440
1548
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1441
1549
  emnapiTSFN.getCond(func).signal();
1442
1550
  }
@@ -1446,6 +1554,7 @@ function createNapiModule(options) {
1446
1554
  return;
1447
1555
  }
1448
1556
  emnapiTSFN.setHandlesClosing(func, 1);
1557
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1449
1558
  emnapiCtx.feature.setImmediate(function () {
1450
1559
  emnapiTSFN.finalize(func);
1451
1560
  });
@@ -1462,10 +1571,7 @@ function createNapiModule(options) {
1462
1571
  var mutex = emnapiTSFN.getMutex(func);
1463
1572
  var cond = emnapiTSFN.getCond(func);
1464
1573
  mutex.execute(function () {
1465
- if (emnapiTSFN.getIsClosing(func)) {
1466
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1467
- }
1468
- else {
1574
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
1469
1575
  var size = emnapiTSFN.getQueueSize(func);
1470
1576
  if (size > 0) {
1471
1577
  data = emnapiTSFN.shiftQueue(func);
@@ -1478,7 +1584,7 @@ function createNapiModule(options) {
1478
1584
  }
1479
1585
  if (size === 0) {
1480
1586
  if (emnapiTSFN.getThreadCount(func) === 0) {
1481
- emnapiTSFN.setIsClosing(func, 1);
1587
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
1482
1588
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1483
1589
  cond.signal();
1484
1590
  }
@@ -1489,6 +1595,9 @@ function createNapiModule(options) {
1489
1595
  has_more = true;
1490
1596
  }
1491
1597
  }
1598
+ else {
1599
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1600
+ }
1492
1601
  });
1493
1602
  if (popped_value) {
1494
1603
  var env = emnapiTSFN.getEnv(func);
@@ -1517,7 +1626,7 @@ function createNapiModule(options) {
1517
1626
  var resource = emnapiTSFN.getResource(func);
1518
1627
  var resource_value = emnapiCtx.refStore.get(resource).get();
1519
1628
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1520
- var view = new DataView(wasmMemory.buffer);
1629
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1521
1630
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
1522
1631
  asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
1523
1632
  triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
@@ -1536,8 +1645,9 @@ function createNapiModule(options) {
1536
1645
  dispatch: function (func) {
1537
1646
  var has_more = true;
1538
1647
  var iterations_left = 1000;
1539
- var ui32a = new Uint32Array(wasmMemory.buffer);
1540
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
1648
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1649
+ var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
1650
+ var index = dispatchStateAddress >>> 2;
1541
1651
  while (has_more && --iterations_left !== 0) {
1542
1652
  Atomics.store(ui32a, index, 1);
1543
1653
  has_more = emnapiTSFN.dispatchOne(func);
@@ -1549,25 +1659,86 @@ function createNapiModule(options) {
1549
1659
  emnapiTSFN.send(func);
1550
1660
  }
1551
1661
  },
1552
- send: function (func) {
1553
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
1554
- if ((current_state & 1) === 1) {
1662
+ enqueue: function (func) {
1663
+ // `pending` means a worker thread has requested a wakeup that has not
1664
+ // been drained on the main thread yet.
1665
+ var pending = func + emnapiTSFN.offset.async_pending;
1666
+ // `scheduled` prevents queueing the same main-thread drain chain more than
1667
+ // once while a previous wakeup is still in flight.
1668
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
1669
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
1670
+ if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
1555
1671
  return;
1556
1672
  }
1557
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1558
- postMessage({
1559
- __emnapi__: {
1560
- type: 'tsfn-send',
1561
- payload: {
1562
- tsfn: func
1673
+ // Match uv_async_send-style coalescing in JS: the first turn represents
1674
+ // the wakeup reaching the main thread, and the second turn performs the
1675
+ // actual TSFN drain after nearby Send/Signal calls have had a chance to
1676
+ // collapse into the shared AsyncProgressWorker state.
1677
+ emnapiCtx.feature.setImmediate(function () {
1678
+ if (!emnapiTSFN._liveSet.has(func)) {
1679
+ return;
1680
+ }
1681
+ if (Atomics.load(i32a, pending >>> 2) === 0) {
1682
+ Atomics.store(i32a, scheduled >>> 2, 0);
1683
+ return;
1684
+ }
1685
+ emnapiCtx.feature.setImmediate(function () {
1686
+ try {
1687
+ // Consume the coalesced wakeup once, then let dispatch() observe any
1688
+ // queue mutations through dispatch_state like the C implementation.
1689
+ if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
1690
+ return;
1691
+ }
1692
+ // After destroy(), the func address is freed. Skip dispatch
1693
+ // to avoid use-after-free (JS-side lifecycle check).
1694
+ if (!emnapiTSFN._liveSet.has(func)) {
1695
+ return;
1696
+ }
1697
+ emnapiTSFN.dispatch(func);
1698
+ }
1699
+ finally {
1700
+ // Allow a later wakeup to schedule a new drain chain. If another
1701
+ // worker-thread send raced with this drain, enqueue one more turn.
1702
+ if (emnapiTSFN._liveSet.has(func)) {
1703
+ Atomics.store(i32a, scheduled >>> 2, 0);
1704
+ if (Atomics.load(i32a, pending >>> 2) !== 0) {
1705
+ emnapiTSFN.enqueue(func);
1706
+ }
1563
1707
  }
1564
1708
  }
1565
1709
  });
1710
+ });
1711
+ },
1712
+ send: function (func) {
1713
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1714
+ var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
1715
+ if ((current_state & 1) === 1) {
1716
+ return;
1566
1717
  }
1567
- else {
1568
- emnapiCtx.feature.setImmediate(function () {
1569
- emnapiTSFN.dispatch(func);
1570
- });
1718
+ var pendng = func + emnapiTSFN.offset.async_pending;
1719
+ // A wakeup is already pending, so this send only needs to leave the queued
1720
+ // work in the TSFN queue and let the existing drain pick it up.
1721
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
1722
+ return;
1723
+ }
1724
+ if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
1725
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1726
+ // Worker threads only post a wakeup token. Main-thread draining is
1727
+ // serialized by enqueue() once the message is received.
1728
+ postMessage({
1729
+ __emnapi__: {
1730
+ type: 'tsfn-send',
1731
+ payload: {
1732
+ tsfn: func
1733
+ }
1734
+ }
1735
+ });
1736
+ }
1737
+ else {
1738
+ // On the main thread we can skip the cross-thread hop and schedule the
1739
+ // coalesced drain chain directly.
1740
+ emnapiTSFN.enqueue(func);
1741
+ }
1571
1742
  }
1572
1743
  }
1573
1744
  };
@@ -1580,6 +1751,13 @@ function createNapiModule(options) {
1580
1751
  envObject.checkGCAccess();
1581
1752
  if (!async_resource_name)
1582
1753
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1754
+ max_queue_size >>>= 0;
1755
+ initial_thread_count >>>= 0;
1756
+ env >>>= 0;
1757
+ thread_finalize_data >>>= 0;
1758
+ thread_finalize_cb >>>= 0;
1759
+ context >>>= 0;
1760
+ call_js_cb >>>= 0;
1583
1761
  max_queue_size = max_queue_size >>> 0;
1584
1762
  initial_thread_count = initial_thread_count >>> 0;
1585
1763
  if (initial_thread_count === 0) {
@@ -1588,6 +1766,7 @@ function createNapiModule(options) {
1588
1766
  if (!result)
1589
1767
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1590
1768
  var ref = 0;
1769
+ func >>>= 0;
1591
1770
  if (!func) {
1592
1771
  if (!call_js_cb)
1593
1772
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -1619,22 +1798,25 @@ function createNapiModule(options) {
1619
1798
  asyncResourceName = String(asyncResourceName);
1620
1799
  var resource_name = envObject.ensureHandleId(asyncResourceName);
1621
1800
  // tsfn create
1622
- var sizeofTSFN = emnapiTSFN.offset.end;
1801
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
1802
+ // eslint-disable-next-line prefer-const
1623
1803
  var tsfn = _malloc(sizeofTSFN);
1624
1804
  if (!tsfn)
1625
1805
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
1626
- new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1806
+ tsfn >>>= 0;
1807
+ new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1627
1808
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */);
1628
1809
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1629
1810
  var resource_ = resourceRef.id;
1630
1811
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1631
- HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
1812
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
1632
1813
  if (!emnapiTSFN.initQueue(tsfn)) {
1633
1814
  _free(tsfn);
1634
1815
  resourceRef.dispose();
1635
1816
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
1636
1817
  }
1637
1818
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
1819
+ HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
1638
1820
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1639
1821
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1640
1822
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
@@ -1644,9 +1826,11 @@ function createNapiModule(options) {
1644
1826
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1645
1827
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1646
1828
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
1829
+ emnapiTSFN._liveSet.add(tsfn);
1647
1830
  envObject.ref();
1648
1831
  emnapiCtx.increaseWaitingRequestCounter();
1649
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1832
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1833
+ result >>>= 0;
1650
1834
  HEAP_DATA_VIEW.setUint32(result, tsfn, true);
1651
1835
  return envObject.clearLastError();
1652
1836
  }
@@ -1656,6 +1840,8 @@ function createNapiModule(options) {
1656
1840
  abort();
1657
1841
  return 1 /* napi_status.napi_invalid_arg */;
1658
1842
  }
1843
+ func >>>= 0;
1844
+ result >>>= 0;
1659
1845
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1660
1846
  var context = emnapiTSFN.getContext(func);
1661
1847
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -1668,6 +1854,8 @@ function createNapiModule(options) {
1668
1854
  abort();
1669
1855
  return 1 /* napi_status.napi_invalid_arg */;
1670
1856
  }
1857
+ func >>>= 0;
1858
+ data >>>= 0;
1671
1859
  return emnapiTSFN.push(func, data, mode);
1672
1860
  }
1673
1861
  /** @__sig ip */
@@ -1676,13 +1864,14 @@ function createNapiModule(options) {
1676
1864
  abort();
1677
1865
  return 1 /* napi_status.napi_invalid_arg */;
1678
1866
  }
1867
+ func >>>= 0;
1679
1868
  var mutex = emnapiTSFN.getMutex(func);
1680
1869
  return mutex.execute(function () {
1681
- if (emnapiTSFN.getIsClosing(func)) {
1682
- return 16 /* napi_status.napi_closing */;
1870
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
1871
+ emnapiTSFN.addThreadCount(func);
1872
+ return 0 /* napi_status.napi_ok */;
1683
1873
  }
1684
- emnapiTSFN.addThreadCount(func);
1685
- return 0 /* napi_status.napi_ok */;
1874
+ return 16 /* napi_status.napi_closing */;
1686
1875
  });
1687
1876
  }
1688
1877
  /** @__sig ipi */
@@ -1691,26 +1880,36 @@ function createNapiModule(options) {
1691
1880
  abort();
1692
1881
  return 1 /* napi_status.napi_invalid_arg */;
1693
1882
  }
1883
+ func >>>= 0;
1694
1884
  var mutex = emnapiTSFN.getMutex(func);
1695
1885
  var cond = emnapiTSFN.getCond(func);
1696
- return mutex.execute(function () {
1886
+ var shouldDelete = false;
1887
+ var ret = mutex.execute(function () {
1697
1888
  if (emnapiTSFN.getThreadCount(func) === 0) {
1698
1889
  return 1 /* napi_status.napi_invalid_arg */;
1699
1890
  }
1700
1891
  emnapiTSFN.subThreadCount(func);
1701
1892
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
1702
- var isClosing = emnapiTSFN.getIsClosing(func);
1703
- if (!isClosing) {
1704
- var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0;
1705
- emnapiTSFN.setIsClosing(func, isClosingValue);
1706
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
1893
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
1894
+ if (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
1895
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
1896
+ }
1897
+ if (emnapiTSFN.getState(func) === 1 /* State.kClosing */ && emnapiTSFN.getMaxQueueSize(func) > 0) {
1707
1898
  cond.signal();
1708
1899
  }
1709
1900
  emnapiTSFN.send(func);
1710
1901
  }
1711
1902
  }
1903
+ if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
1904
+ return 0 /* napi_status.napi_ok */;
1905
+ }
1906
+ shouldDelete = true;
1712
1907
  return 0 /* napi_status.napi_ok */;
1713
1908
  });
1909
+ if (shouldDelete) {
1910
+ emnapiTSFN.destroy(func);
1911
+ }
1912
+ return ret;
1714
1913
  }
1715
1914
  /** @__sig ipp */
1716
1915
  function napi_unref_threadsafe_function(env, func) {
@@ -1718,11 +1917,16 @@ function createNapiModule(options) {
1718
1917
  abort();
1719
1918
  return 1 /* napi_status.napi_invalid_arg */;
1720
1919
  }
1721
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1722
- var arr = new Int32Array(wasmMemory.buffer);
1723
- if (Atomics.load(arr, asyncRefOffset)) {
1724
- Atomics.store(arr, asyncRefOffset, 0);
1725
- emnapiCtx.decreaseWaitingRequestCounter();
1920
+ func >>>= 0;
1921
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1922
+ var asyncRefOffset = asyncRefAddress >>> 2;
1923
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1924
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1925
+ if (currentValue > 0) {
1926
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
1927
+ if (currentValue === 1) {
1928
+ emnapiCtx.decreaseWaitingRequestCounter();
1929
+ }
1726
1930
  }
1727
1931
  return 0 /* napi_status.napi_ok */;
1728
1932
  }
@@ -1732,34 +1936,73 @@ function createNapiModule(options) {
1732
1936
  abort();
1733
1937
  return 1 /* napi_status.napi_invalid_arg */;
1734
1938
  }
1735
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1736
- var arr = new Int32Array(wasmMemory.buffer);
1737
- if (!Atomics.load(arr, asyncRefOffset)) {
1738
- Atomics.store(arr, asyncRefOffset, 1);
1939
+ func >>>= 0;
1940
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1941
+ var asyncRefOffset = asyncRefAddress >>> 2;
1942
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1943
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1944
+ if (!currentValue) {
1739
1945
  emnapiCtx.increaseWaitingRequestCounter();
1740
1946
  }
1947
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
1741
1948
  return 0 /* napi_status.napi_ok */;
1742
1949
  }
1743
1950
  var emnapiAWMT = {
1744
- unusedWorkers: [],
1745
- runningWorkers: [],
1746
- workQueue: [],
1951
+ pool: [],
1747
1952
  workerReady: null,
1953
+ globalAddress: 0,
1954
+ globalOffset: {
1955
+ idle_threads: 0,
1956
+ q: 1 * 4,
1957
+ next: 1 * 4,
1958
+ prev: 2 * 4,
1959
+ mutex: 3 * 4,
1960
+ cond: 4 * 4,
1961
+ exit_message: 5 * 4,
1962
+ end: 7 * 4
1963
+ },
1748
1964
  offset: {
1749
1965
  /* napi_ref */ resource: 0,
1750
1966
  /* double */ async_id: 8,
1751
1967
  /* double */ trigger_async_id: 16,
1752
1968
  /* napi_env */ env: 24,
1753
- /* void* */ data: 1 * 4 + 24,
1754
- /* napi_async_execute_callback */ execute: 2 * 4 + 24,
1755
- /* napi_async_complete_callback */ complete: 3 * 4 + 24,
1756
- end: 4 * 4 + 24
1969
+ /* int32_t */ status: 1 * 4 + 24, // 0 for pending, 1 for cancelled, 2 for completed
1970
+ queue: 2 * 4 + 24,
1971
+ queue_next: 2 * 4 + 24,
1972
+ queue_prev: 3 * 4 + 24,
1973
+ /* void* */ data: 4 * 4 + 24,
1974
+ /* napi_async_execute_callback */ execute: 5 * 4 + 24,
1975
+ /* napi_async_complete_callback */ complete: 6 * 4 + 24,
1976
+ end: 7 * 4 + 24
1977
+ },
1978
+ /**
1979
+ * When another thread grows the shared WebAssembly.Memory, this agent's
1980
+ * cached `wasmMemory.buffer` may still have the old shorter length
1981
+ * (V8 refreshes it lazily). If a pointer derived from shared memory lies
1982
+ * beyond the cached length, `wasmMemory.grow(0)` forces the agent to
1983
+ * observe the current memory size and refreshes the buffer.
1984
+ */
1985
+ ensureBufferFor: function (end) {
1986
+ var buffer = wasmMemory.buffer;
1987
+ if (end > buffer.byteLength) {
1988
+ wasmMemory.grow(0);
1989
+ buffer = wasmMemory.buffer;
1990
+ }
1991
+ return buffer;
1757
1992
  },
1758
1993
  init: function () {
1759
- emnapiAWMT.unusedWorkers = [];
1760
- emnapiAWMT.runningWorkers = [];
1761
- emnapiAWMT.workQueue = [];
1994
+ emnapiAWMT.pool = [];
1762
1995
  emnapiAWMT.workerReady = null;
1996
+ if (typeof PThread !== 'undefined') {
1997
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
1998
+ Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
1999
+ var __original_getNewWorker_1 = PThread.getNewWorker;
2000
+ PThread.getNewWorker = function () {
2001
+ var r = __original_getNewWorker_1.apply(this, arguments);
2002
+ emnapiAWMT.addListener(r);
2003
+ return r;
2004
+ };
2005
+ }
1763
2006
  },
1764
2007
  addListener: function (worker) {
1765
2008
  if (!worker)
@@ -1773,18 +2016,8 @@ function createNapiModule(options) {
1773
2016
  var type = __emnapi__.type;
1774
2017
  var payload = __emnapi__.payload;
1775
2018
  if (type === 'async-work-complete') {
1776
- emnapiCtx.decreaseWaitingRequestCounter();
1777
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
1778
- emnapiAWMT.unusedWorkers.push(worker);
1779
- emnapiAWMT.checkIdleWorker();
1780
2019
  emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */);
1781
2020
  }
1782
- else if (type === 'async-work-queue') {
1783
- emnapiAWMT.scheduleWork(payload.work);
1784
- }
1785
- else if (type === 'async-work-cancel') {
1786
- emnapiAWMT.cancelWork(payload.work);
1787
- }
1788
2021
  }
1789
2022
  };
1790
2023
  var dispose = function () {
@@ -1805,6 +2038,26 @@ function createNapiModule(options) {
1805
2038
  }
1806
2039
  return true;
1807
2040
  },
2041
+ initGlobal: function () {
2042
+ if (!emnapiAWMT.globalAddress) {
2043
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
2044
+ emnapiAWMT.globalAddress >>>= 0;
2045
+ var size = emnapiAWMT.globalOffset.end;
2046
+ var addr = emnapiAWMT.globalAddress;
2047
+ new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
2048
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
2049
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
2050
+ }
2051
+ },
2052
+ terminateWorkers: function () {
2053
+ emnapiAWMT.pool.forEach(function (w) {
2054
+ var _a, _b;
2055
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
2056
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
2057
+ w.terminate();
2058
+ });
2059
+ emnapiAWMT.pool.length = 0;
2060
+ },
1808
2061
  initWorkers: function (n) {
1809
2062
  if (ENVIRONMENT_IS_PTHREAD) {
1810
2063
  // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
@@ -1812,137 +2065,212 @@ function createNapiModule(options) {
1812
2065
  }
1813
2066
  if (emnapiAWMT.workerReady)
1814
2067
  return emnapiAWMT.workerReady;
1815
- if (typeof onCreateWorker !== 'function') {
1816
- throw new TypeError('`options.onCreateWorker` is not a function');
1817
- }
1818
- var promises = [];
1819
- var args = [];
1820
2068
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
1821
2069
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
1822
2070
  }
2071
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
2072
+ var args = [];
2073
+ emnapiAWMT.initGlobal();
1823
2074
  for (var i = 0; i < n; ++i) {
1824
- args.push(wasmInstance.exports.emnapi_async_worker_create());
2075
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
1825
2076
  }
1826
- try {
1827
- var _loop_1 = function (i) {
1828
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
1829
- var p = PThread.loadWasmModuleToWorker(worker);
1830
- emnapiAWMT.addListener(worker);
1831
- promises.push(p.then(function () {
1832
- if (typeof worker.unref === 'function') {
1833
- worker.unref();
1834
- }
1835
- }));
1836
- emnapiAWMT.unusedWorkers.push(worker);
1837
- var arg = args[i];
1838
- worker.threadBlockBase = arg;
1839
- worker.postMessage({
1840
- __emnapi__: {
1841
- type: 'async-worker-init',
1842
- payload: { arg: arg }
1843
- }
1844
- });
1845
- };
1846
- for (var i = 0; i < n; ++i) {
1847
- _loop_1(i);
2077
+ var promises = args.map(function (index) {
2078
+ if (index === 0) {
2079
+ return Promise.reject(new Error('Failed to create async worker'));
1848
2080
  }
1849
- }
1850
- catch (err) {
1851
- for (var i = 0; i < n; ++i) {
1852
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
1853
- var arg = args[i];
1854
- _free(arg);
2081
+ var worker;
2082
+ if (index < 0) {
2083
+ worker = emnapiAWMT.pool[-index - 1];
2084
+ if (worker)
2085
+ return worker.whenLoaded;
1855
2086
  }
1856
- throw err;
1857
- }
2087
+ index >>>= 0;
2088
+ var tidOffset = 20;
2089
+ var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
2090
+ var tid = view.getInt32(index + tidOffset, true);
2091
+ worker = PThread.pthreads[tid];
2092
+ return worker.whenLoaded;
2093
+ });
1858
2094
  emnapiAWMT.workerReady = Promise.all(promises);
1859
2095
  return emnapiAWMT.workerReady;
1860
2096
  },
1861
- checkIdleWorker: function () {
1862
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
1863
- var worker = emnapiAWMT.unusedWorkers.shift();
1864
- var work = emnapiAWMT.workQueue.shift();
1865
- emnapiAWMT.runningWorkers.push(worker);
1866
- worker.postMessage({
1867
- __emnapi__: {
1868
- type: 'async-work-execute',
1869
- payload: { work: work }
1870
- }
1871
- });
1872
- }
1873
- },
1874
2097
  getResource: function (work) {
1875
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
2098
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
2099
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2100
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
1876
2101
  },
1877
2102
  getExecute: function (work) {
1878
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
2103
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
2104
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2105
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
1879
2106
  },
1880
2107
  getComplete: function (work) {
1881
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
2108
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
2109
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2110
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
1882
2111
  },
1883
2112
  getEnv: function (work) {
1884
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
2113
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
2114
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2115
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
1885
2116
  },
1886
2117
  getData: function (work) {
1887
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
2118
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
2119
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2120
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
2121
+ },
2122
+ getMutex: function () {
2123
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
2124
+ var mutex = {
2125
+ lock: function () {
2126
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
2127
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
2128
+ if (isBrowserMain) {
2129
+ while (true) {
2130
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
2131
+ if (oldValue === 0) {
2132
+ return;
2133
+ }
2134
+ }
2135
+ }
2136
+ else {
2137
+ while (true) {
2138
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
2139
+ if (oldValue === 0) {
2140
+ return;
2141
+ }
2142
+ Atomics.wait(i32a, 0, 10);
2143
+ }
2144
+ }
2145
+ },
2146
+ unlock: function () {
2147
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
2148
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
2149
+ if (oldValue !== 10) {
2150
+ throw new Error('Tried to unlock while not holding the mutex');
2151
+ }
2152
+ Atomics.notify(i32a, 0, 1);
2153
+ },
2154
+ execute: function (fn) {
2155
+ mutex.lock();
2156
+ try {
2157
+ return fn();
2158
+ }
2159
+ finally {
2160
+ mutex.unlock();
2161
+ }
2162
+ }
2163
+ };
2164
+ return mutex;
2165
+ },
2166
+ getCond: function () {
2167
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
2168
+ var mutex = emnapiAWMT.getMutex();
2169
+ var cond = {
2170
+ wait: function () {
2171
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
2172
+ var value = Atomics.load(i32a, 0);
2173
+ mutex.unlock();
2174
+ Atomics.wait(i32a, 0, value);
2175
+ mutex.lock();
2176
+ },
2177
+ signal: function () {
2178
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
2179
+ Atomics.add(i32a, 0, 1);
2180
+ Atomics.notify(i32a, 0, 1);
2181
+ }
2182
+ };
2183
+ return cond;
2184
+ },
2185
+ queueInit: function (q) {
2186
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
2187
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2188
+ HEAP_DATA_VIEW.setUint32(q, q, true);
2189
+ HEAP_DATA_VIEW.setUint32(q + 4, q, true);
2190
+ },
2191
+ queueInsertTail: function (h, q) {
2192
+ emnapiAWMT.ensureBufferFor(h + 4 + 4);
2193
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
2194
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2195
+ HEAP_DATA_VIEW.setUint32(q, h, true);
2196
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2197
+ var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
2198
+ HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
2199
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2200
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
2201
+ HEAP_DATA_VIEW.setUint32(qprev, q, true);
2202
+ HEAP_DATA_VIEW.setUint32(h + 4, q, true);
2203
+ },
2204
+ queueRemove: function (q) {
2205
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
2206
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2207
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2208
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
2209
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2210
+ var qnext = HEAP_DATA_VIEW.getUint32(q, true);
2211
+ HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
2212
+ HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
2213
+ },
2214
+ queueEmpty: function (q) {
2215
+ emnapiAWMT.ensureBufferFor(q + 4);
2216
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2217
+ // eslint-disable-next-line eqeqeq
2218
+ return q == HEAP_DATA_VIEW.getUint32(q, true);
1888
2219
  },
1889
2220
  scheduleWork: function (work) {
1890
2221
  var _a;
1891
- if (ENVIRONMENT_IS_PTHREAD) {
1892
- var postMessage_1 = napiModule.postMessage;
1893
- postMessage_1({
1894
- __emnapi__: {
1895
- type: 'async-work-queue',
1896
- payload: { work: work }
1897
- }
2222
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
2223
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
2224
+ emnapiAWMT.workerReady.ready = true;
2225
+ }).catch(function (err) {
2226
+ emnapiAWMT.workerReady = null;
2227
+ throw err;
1898
2228
  });
1899
- return;
1900
2229
  }
1901
2230
  emnapiCtx.increaseWaitingRequestCounter();
1902
- emnapiAWMT.workQueue.push(work);
1903
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
1904
- emnapiAWMT.checkIdleWorker();
2231
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
2232
+ Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */);
2233
+ var mutex = emnapiAWMT.getMutex();
2234
+ var cond = emnapiAWMT.getCond();
2235
+ mutex.lock();
2236
+ try {
2237
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
1905
2238
  }
1906
- else {
1907
- var fail = function (err) {
1908
- emnapiCtx.decreaseWaitingRequestCounter();
1909
- throw err;
1910
- };
1911
- try {
1912
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1913
- emnapiAWMT.workerReady.ready = true;
1914
- emnapiAWMT.checkIdleWorker();
1915
- }, fail);
1916
- }
1917
- catch (err) {
1918
- fail(err);
1919
- }
2239
+ catch (err) {
2240
+ emnapiCtx.decreaseWaitingRequestCounter();
2241
+ mutex.unlock();
2242
+ throw err;
1920
2243
  }
2244
+ emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
2245
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2246
+ if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
2247
+ cond.signal();
2248
+ }
2249
+ mutex.unlock();
1921
2250
  },
1922
2251
  cancelWork: function (work) {
1923
- if (ENVIRONMENT_IS_PTHREAD) {
1924
- var postMessage_2 = napiModule.postMessage;
1925
- postMessage_2({
1926
- __emnapi__: {
1927
- type: 'async-work-cancel',
1928
- payload: { work: work }
1929
- }
1930
- });
1931
- return 0 /* napi_status.napi_ok */;
2252
+ var cancelled = false;
2253
+ emnapiAWMT.getMutex().execute(function () {
2254
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
2255
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2256
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */;
2257
+ if (cancelled) {
2258
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
2259
+ }
2260
+ });
2261
+ if (!cancelled) {
2262
+ return 9 /* napi_status.napi_generic_failure */;
1932
2263
  }
1933
- var index = emnapiAWMT.workQueue.indexOf(work);
1934
- if (index !== -1) {
1935
- emnapiAWMT.workQueue.splice(index, 1);
1936
- emnapiCtx.feature.setImmediate(function () {
1937
- emnapiCtx.decreaseWaitingRequestCounter();
1938
- emnapiAWMT.checkIdleWorker();
1939
- emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
1940
- });
1941
- return 0 /* napi_status.napi_ok */;
2264
+ if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0 /* AsyncWorkStatus.Pending */, 1 /* AsyncWorkStatus.Cancelled */) !== 0 /* AsyncWorkStatus.Pending */) {
2265
+ return 9 /* napi_status.napi_generic_failure */;
1942
2266
  }
1943
- return 9 /* napi_status.napi_generic_failure */;
2267
+ emnapiCtx.feature.setImmediate(function () {
2268
+ emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
2269
+ });
2270
+ return 0 /* napi_status.napi_ok */;
1944
2271
  },
1945
2272
  callComplete: function (work, status) {
2273
+ emnapiCtx.decreaseWaitingRequestCounter();
1946
2274
  var complete = emnapiAWMT.getComplete(work);
1947
2275
  var env = emnapiAWMT.getEnv(work);
1948
2276
  var data = emnapiAWMT.getData(work);
@@ -1960,7 +2288,7 @@ function createNapiModule(options) {
1960
2288
  var resource = emnapiAWMT.getResource(work);
1961
2289
  var resource_value = emnapiCtx.refStore.get(resource).get();
1962
2290
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1963
- var view = new DataView(wasmMemory.buffer);
2291
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
1964
2292
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
1965
2293
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
1966
2294
  emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
@@ -1977,6 +2305,7 @@ function createNapiModule(options) {
1977
2305
  }
1978
2306
  }
1979
2307
  };
2308
+ emnapiAWMT.init();
1980
2309
  /** @__sig ippppppp */
1981
2310
  var napi_create_async_work = singleThreadAsyncWork
1982
2311
  ? function (env, resource, resource_name, execute, complete, data, result) {
@@ -2001,6 +2330,7 @@ function createNapiModule(options) {
2001
2330
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
2002
2331
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2003
2332
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
2333
+ result >>>= 0;
2004
2334
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2005
2335
  HEAP_DATA_VIEW.setUint32(result, id, true);
2006
2336
  return envObject.clearLastError();
@@ -2028,7 +2358,8 @@ function createNapiModule(options) {
2028
2358
  var aw = _malloc(sizeofAW);
2029
2359
  if (!aw)
2030
2360
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
2031
- new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
2361
+ aw >>>= 0;
2362
+ new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
2032
2363
  var s = envObject.ensureHandleId(resourceObject);
2033
2364
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */);
2034
2365
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -2040,6 +2371,8 @@ function createNapiModule(options) {
2040
2371
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
2041
2372
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
2042
2373
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
2374
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
2375
+ result >>>= 0;
2043
2376
  HEAP_DATA_VIEW.setUint32(result, aw, true);
2044
2377
  return envObject.clearLastError();
2045
2378
  };
@@ -2053,6 +2386,7 @@ function createNapiModule(options) {
2053
2386
  envObject.checkGCAccess();
2054
2387
  if (!work)
2055
2388
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2389
+ work >>>= 0;
2056
2390
  emnapiAWST.remove(work);
2057
2391
  return envObject.clearLastError();
2058
2392
  }
@@ -2064,10 +2398,11 @@ function createNapiModule(options) {
2064
2398
  envObject.checkGCAccess();
2065
2399
  if (!work)
2066
2400
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2401
+ work >>>= 0;
2067
2402
  var resource = emnapiAWMT.getResource(work);
2068
2403
  emnapiCtx.refStore.get(resource).dispose();
2069
2404
  if (emnapiNodeBinding) {
2070
- var view = new DataView(wasmMemory.buffer);
2405
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
2071
2406
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
2072
2407
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
2073
2408
  _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
@@ -2083,6 +2418,7 @@ function createNapiModule(options) {
2083
2418
  var envObject = emnapiCtx.envStore.get(env);
2084
2419
  if (!work)
2085
2420
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2421
+ work >>>= 0;
2086
2422
  emnapiAWST.queue(work);
2087
2423
  return envObject.clearLastError();
2088
2424
  }
@@ -2092,6 +2428,7 @@ function createNapiModule(options) {
2092
2428
  var envObject = emnapiCtx.envStore.get(env);
2093
2429
  if (!work)
2094
2430
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2431
+ work >>>= 0;
2095
2432
  emnapiAWMT.scheduleWork(work);
2096
2433
  return envObject.clearLastError();
2097
2434
  };
@@ -2103,6 +2440,7 @@ function createNapiModule(options) {
2103
2440
  var envObject = emnapiCtx.envStore.get(env);
2104
2441
  if (!work)
2105
2442
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2443
+ work >>>= 0;
2106
2444
  var status = emnapiAWST.cancel(work);
2107
2445
  if (status === 0 /* napi_status.napi_ok */)
2108
2446
  return envObject.clearLastError();
@@ -2114,42 +2452,129 @@ function createNapiModule(options) {
2114
2452
  var envObject = emnapiCtx.envStore.get(env);
2115
2453
  if (!work)
2116
2454
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2455
+ work >>>= 0;
2117
2456
  var status = emnapiAWMT.cancelWork(work);
2118
2457
  if (status === 0 /* napi_status.napi_ok */)
2119
2458
  return envObject.clearLastError();
2120
2459
  return envObject.setLastError(status);
2121
2460
  };
2122
- function initWorker(startArg) {
2461
+ /** @__sig pp */
2462
+ function _emnapi_async_worker(globalAddress) {
2463
+ globalAddress >>>= 0;
2464
+ emnapiAWMT.globalAddress = globalAddress;
2465
+ var mutex = emnapiAWMT.getMutex();
2466
+ var cond = emnapiAWMT.getCond();
2467
+ mutex.lock();
2468
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
2469
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
2470
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
2471
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2472
+ for (;;) {
2473
+ emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
2474
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
2475
+ Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2476
+ cond.wait();
2477
+ Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2478
+ }
2479
+ var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
2480
+ if (q === exitMessageAddr) {
2481
+ cond.signal();
2482
+ mutex.unlock();
2483
+ break;
2484
+ }
2485
+ var work = q - emnapiAWMT.offset.queue;
2486
+ emnapiAWMT.queueRemove(q);
2487
+ emnapiAWMT.queueInit(q);
2488
+ mutex.unlock();
2489
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
2490
+ if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) {
2491
+ abort('unreachable');
2492
+ }
2493
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2494
+ var execute = emnapiAWMT.getExecute(work);
2495
+ var env = emnapiAWMT.getEnv(work);
2496
+ var data = emnapiAWMT.getData(work);
2497
+ (wasmTable.get(execute))(env, data);
2498
+ Atomics.store(statusBuffer, 0, 2 /* AsyncWorkStatus.Completed */);
2499
+ var postMessage_1 = napiModule.postMessage;
2500
+ postMessage_1({
2501
+ __emnapi__: {
2502
+ type: 'async-work-complete',
2503
+ payload: { work: work }
2504
+ }
2505
+ });
2506
+ mutex.lock();
2507
+ }
2508
+ return 0;
2509
+ }
2510
+ /** @__sig ipp */
2511
+ function _emnapi_spawn_worker(f, globalAddress) {
2512
+ if (typeof onCreateWorker !== 'function') {
2513
+ throw new TypeError('`options.onCreateWorker` is not a function');
2514
+ }
2515
+ var promises = [];
2516
+ var args = [];
2517
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2518
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2519
+ }
2520
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
2521
+ var handleError = function (e) {
2522
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
2523
+ emnapiAWMT.terminateWorkers();
2524
+ }
2525
+ };
2526
+ var ret;
2527
+ try {
2528
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2529
+ var p = PThread.loadWasmModuleToWorker(worker_1);
2530
+ if (ENVIRONMENT_IS_NODE) {
2531
+ worker_1.on('error', handleError);
2532
+ }
2533
+ else {
2534
+ worker_1.addEventListener('error', handleError, false);
2535
+ }
2536
+ emnapiAWMT.addListener(worker_1);
2537
+ emnapiTSFN.addListener(worker_1);
2538
+ promises.push(p.then(function () {
2539
+ if (typeof worker_1.unref === 'function') {
2540
+ worker_1.unref();
2541
+ }
2542
+ }));
2543
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
2544
+ var arg = args[0];
2545
+ worker_1.threadBlockBase = arg;
2546
+ worker_1.postMessage({
2547
+ __emnapi__: {
2548
+ type: 'async-worker-init',
2549
+ payload: { arg: arg, func: [f, globalAddress] }
2550
+ }
2551
+ });
2552
+ }
2553
+ catch (err) {
2554
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2555
+ var arg = args[0];
2556
+ _free(arg);
2557
+ throw err;
2558
+ }
2559
+ return ret;
2560
+ }
2561
+ function initWorker(startArg, func) {
2123
2562
  if (napiModule.childThread) {
2124
2563
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
2125
2564
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
2126
2565
  }
2127
2566
  wasmInstance.exports.emnapi_async_worker_init(startArg);
2567
+ (wasmTable.get(func[0]))(func[1]);
2128
2568
  }
2129
2569
  else {
2130
2570
  throw new Error('startThread is only available in child threads');
2131
2571
  }
2132
2572
  }
2133
- function executeAsyncWork(work) {
2134
- if (!ENVIRONMENT_IS_PTHREAD)
2135
- return;
2136
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2137
- var execute = emnapiAWMT.getExecute(work);
2138
- var env = emnapiAWMT.getEnv(work);
2139
- var data = emnapiAWMT.getData(work);
2140
- (wasmTable.get(execute))(env, data);
2141
- var postMessage = napiModule.postMessage;
2142
- postMessage({
2143
- __emnapi__: {
2144
- type: 'async-work-complete',
2145
- payload: { work: work }
2146
- }
2147
- });
2148
- }
2149
2573
  napiModule.initWorker = initWorker;
2150
- napiModule.executeAsyncWork = executeAsyncWork;
2151
2574
  var asyncWorkMod = /*#__PURE__*/ Object.freeze({
2152
2575
  __proto__: null,
2576
+ _emnapi_async_worker: _emnapi_async_worker,
2577
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
2153
2578
  napi_cancel_async_work: napi_cancel_async_work,
2154
2579
  napi_create_async_work: napi_create_async_work,
2155
2580
  napi_delete_async_work: napi_delete_async_work,
@@ -2219,6 +2644,7 @@ function createNapiModule(options) {
2219
2644
  var pointer = _malloc(arrayBuffer.byteLength);
2220
2645
  if (!pointer)
2221
2646
  throw new Error('Out of memory');
2647
+ pointer >>>= 0;
2222
2648
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
2223
2649
  info.address = pointer;
2224
2650
  info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
@@ -2240,8 +2666,7 @@ function createNapiModule(options) {
2240
2666
  }
2241
2667
  return view;
2242
2668
  }
2243
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
2244
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
2669
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
2245
2670
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
2246
2671
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
2247
2672
  var Ctor = info.Ctor;
@@ -2271,6 +2696,75 @@ function createNapiModule(options) {
2271
2696
  return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
2272
2697
  }
2273
2698
  };
2699
+ /**
2700
+ * Metadata layout in wasm shared memory (allocated with _malloc):
2701
+ * offset 0: refcount (int32, 4 bytes - for Atomics)
2702
+ * offset POINTER_SIZE: external_data (pointer)
2703
+ * offset 2*POINTER_SIZE: byte_length (size_t)
2704
+ * offset 3*POINTER_SIZE: finalize_cb (pointer)
2705
+ * offset 4*POINTER_SIZE: finalize_data (pointer)
2706
+ * offset 5*POINTER_SIZE: finalize_hint (pointer)
2707
+ * Total: 6 * POINTER_SIZE bytes
2708
+ */
2709
+ /**
2710
+ * @__postset
2711
+ * ```
2712
+ * emnapiExternalSAB.init();
2713
+ * ```
2714
+ */
2715
+ var emnapiExternalSAB = {
2716
+ registry: undefined,
2717
+ handleTable: new WeakMap(),
2718
+ init: function () {
2719
+ emnapiExternalSAB.handleTable = new WeakMap();
2720
+ emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
2721
+ ? new FinalizationRegistry(function (metaPtr) {
2722
+ emnapiExternalSAB.release(metaPtr);
2723
+ })
2724
+ : undefined;
2725
+ },
2726
+ allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
2727
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2728
+ var size = 4 * 6;
2729
+ // eslint-disable-next-line prefer-const
2730
+ var metaPtr = _malloc(size);
2731
+ if (!metaPtr)
2732
+ throw new Error('Out of memory');
2733
+ metaPtr >>>= 0;
2734
+ // refcount = 1
2735
+ Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2736
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2737
+ HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
2738
+ HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
2739
+ HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
2740
+ HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
2741
+ HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
2742
+ return metaPtr;
2743
+ },
2744
+ readMeta: function (metaPtr) {
2745
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2746
+ var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
2747
+ var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
2748
+ var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
2749
+ var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
2750
+ var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
2751
+ return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
2752
+ },
2753
+ release: function (metaPtr) {
2754
+ var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2755
+ if (oldRefcount === 1) {
2756
+ // refcount reached 0, we are the last holder
2757
+ var info = emnapiExternalSAB.readMeta(metaPtr);
2758
+ var finalize_cb = info.finalize_cb;
2759
+ if (finalize_cb) {
2760
+ var finalize_data = info.finalize_data;
2761
+ var finalize_hint = info.finalize_hint;
2762
+ (wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
2763
+ }
2764
+ _free(metaPtr);
2765
+ }
2766
+ }
2767
+ };
2274
2768
  /* eslint-disable @typescript-eslint/indent */
2275
2769
  /**
2276
2770
  * @__postset
@@ -2381,7 +2875,7 @@ function createNapiModule(options) {
2381
2875
  ptr >>>= 0;
2382
2876
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
2383
2877
  var end = ptr;
2384
- if (length === -1) {
2878
+ if (length === -1 || length === 4294967295) {
2385
2879
  for (; HEAPU8[end];)
2386
2880
  ++end;
2387
2881
  }
@@ -2472,12 +2966,12 @@ function createNapiModule(options) {
2472
2966
  return '';
2473
2967
  ptr >>>= 0;
2474
2968
  var end = ptr;
2475
- if (length === -1) {
2476
- var idx = end >> 1;
2969
+ if (length === -1 || length === 4294967295) {
2970
+ var idx = end >>> 1;
2477
2971
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
2478
2972
  while (HEAPU16[idx])
2479
2973
  ++idx;
2480
- end = idx << 1;
2974
+ end = (idx << 1) >>> 0;
2481
2975
  }
2482
2976
  else {
2483
2977
  end = ptr + (length >>> 0) * 2;
@@ -2510,12 +3004,13 @@ function createNapiModule(options) {
2510
3004
  return outPtr - startPtr;
2511
3005
  },
2512
3006
  newString: function (env, str, length, result, stringMaker) {
3007
+ length >>>= 0;
2513
3008
  if (!env)
2514
3009
  return 1 /* napi_status.napi_invalid_arg */;
2515
3010
  // @ts-expect-error
2516
3011
  var envObject = emnapiCtx.envStore.get(env);
2517
3012
  envObject.checkGCAccess();
2518
- var autoLength = length === -1;
3013
+ var autoLength = length === -1 || length === 4294967295;
2519
3014
  var sizelength = length >>> 0;
2520
3015
  if (length !== 0) {
2521
3016
  if (!str)
@@ -2525,7 +3020,9 @@ function createNapiModule(options) {
2525
3020
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2526
3021
  if (!(autoLength || (sizelength <= 2147483647)))
2527
3022
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3023
+ str >>>= 0;
2528
3024
  var strValue = stringMaker(str, autoLength, sizelength);
3025
+ result >>>= 0;
2529
3026
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2530
3027
  var value = emnapiCtx.addToCurrentScope(strValue).id;
2531
3028
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2533,12 +3030,13 @@ function createNapiModule(options) {
2533
3030
  return envObject.clearLastError();
2534
3031
  },
2535
3032
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
3033
+ length >>>= 0;
2536
3034
  if (!env)
2537
3035
  return 1 /* napi_status.napi_invalid_arg */;
2538
3036
  // @ts-expect-error
2539
3037
  var envObject = emnapiCtx.envStore.get(env);
2540
3038
  envObject.checkGCAccess();
2541
- var autoLength = length === -1;
3039
+ var autoLength = length === -1 || length === 4294967295;
2542
3040
  var sizelength = length >>> 0;
2543
3041
  if (length !== 0) {
2544
3042
  if (!str)
@@ -2584,6 +3082,7 @@ function createNapiModule(options) {
2584
3082
  if (!handle.isArray()) {
2585
3083
  return envObject.setLastError(8 /* napi_status.napi_array_expected */);
2586
3084
  }
3085
+ result >>>= 0;
2587
3086
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2588
3087
  var v = handle.value.length >>> 0;
2589
3088
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2612,11 +3111,13 @@ function createNapiModule(options) {
2612
3111
  }
2613
3112
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2614
3113
  if (data) {
3114
+ data >>>= 0;
2615
3115
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2616
3116
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
2617
3117
  HEAP_DATA_VIEW.setUint32(data, p, true);
2618
3118
  }
2619
3119
  if (byte_length) {
3120
+ byte_length >>>= 0;
2620
3121
  HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
2621
3122
  }
2622
3123
  return envObject.clearLastError();
@@ -2689,6 +3190,7 @@ function createNapiModule(options) {
2689
3190
  catch (_) {
2690
3191
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
2691
3192
  }
3193
+ result >>>= 0;
2692
3194
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2693
3195
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
2694
3196
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2718,6 +3220,7 @@ function createNapiModule(options) {
2718
3220
  var v = handle.value;
2719
3221
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2720
3222
  if (type) {
3223
+ type >>>= 0;
2721
3224
  var t = void 0;
2722
3225
  if (v instanceof Int8Array) {
2723
3226
  t = 0 /* napi_typedarray_type.napi_int8_array */;
@@ -2761,24 +3264,27 @@ function createNapiModule(options) {
2761
3264
  }
2762
3265
  HEAP_DATA_VIEW.setInt32(type, t, true);
2763
3266
  }
3267
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
2764
3268
  if (length) {
3269
+ length >>>= 0;
2765
3270
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
2766
3271
  }
2767
- var buffer;
2768
3272
  if (data || arraybuffer) {
2769
- buffer = v.buffer;
2770
3273
  if (data) {
3274
+ data >>>= 0;
2771
3275
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2772
3276
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2773
3277
  HEAP_DATA_VIEW.setUint32(data, p, true);
2774
3278
  }
2775
3279
  if (arraybuffer) {
3280
+ arraybuffer >>>= 0;
2776
3281
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2777
- var ab = envObject.ensureHandleId(buffer);
3282
+ var ab = envObject.ensureHandleId(v.buffer);
2778
3283
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2779
3284
  }
2780
3285
  }
2781
3286
  if (byte_offset) {
3287
+ byte_offset >>>= 0;
2782
3288
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2783
3289
  }
2784
3290
  return envObject.clearLastError();
@@ -2817,26 +3323,28 @@ function createNapiModule(options) {
2817
3323
  if (!handle.isDataView()) {
2818
3324
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2819
3325
  }
2820
- var v = handle.value;
3326
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
2821
3327
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2822
3328
  if (byte_length) {
3329
+ byte_length >>>= 0;
2823
3330
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
2824
3331
  }
2825
- var buffer;
2826
3332
  if (data || arraybuffer) {
2827
- buffer = v.buffer;
2828
3333
  if (data) {
3334
+ data >>>= 0;
2829
3335
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2830
3336
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2831
3337
  HEAP_DATA_VIEW.setUint32(data, p, true);
2832
3338
  }
2833
3339
  if (arraybuffer) {
3340
+ arraybuffer >>>= 0;
2834
3341
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2835
- var ab = envObject.ensureHandleId(buffer);
3342
+ var ab = envObject.ensureHandleId(v.buffer);
2836
3343
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2837
3344
  }
2838
3345
  }
2839
3346
  if (byte_offset) {
3347
+ byte_offset >>>= 0;
2840
3348
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2841
3349
  }
2842
3350
  return envObject.clearLastError();
@@ -2866,6 +3374,7 @@ function createNapiModule(options) {
2866
3374
  if (!handle.isDate()) {
2867
3375
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2868
3376
  }
3377
+ result >>>= 0;
2869
3378
  v = handle.value.valueOf();
2870
3379
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2871
3380
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -2893,6 +3402,7 @@ function createNapiModule(options) {
2893
3402
  if (typeof handle.value !== 'boolean') {
2894
3403
  return envObject.setLastError(7 /* napi_status.napi_boolean_expected */);
2895
3404
  }
3405
+ result >>>= 0;
2896
3406
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2897
3407
  var r = handle.value ? 1 : 0;
2898
3408
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2916,6 +3426,7 @@ function createNapiModule(options) {
2916
3426
  if (typeof handle.value !== 'number') {
2917
3427
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
2918
3428
  }
3429
+ result >>>= 0;
2919
3430
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2920
3431
  var r = handle.value;
2921
3432
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2945,6 +3456,8 @@ function createNapiModule(options) {
2945
3456
  if (typeof numberValue !== 'bigint') {
2946
3457
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
2947
3458
  }
3459
+ lossless >>>= 0;
3460
+ result >>>= 0;
2948
3461
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2949
3462
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
2950
3463
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2987,6 +3500,8 @@ function createNapiModule(options) {
2987
3500
  if (typeof numberValue !== 'bigint') {
2988
3501
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
2989
3502
  }
3503
+ lossless >>>= 0;
3504
+ result >>>= 0;
2990
3505
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2991
3506
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
2992
3507
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -3024,8 +3539,12 @@ function createNapiModule(options) {
3024
3539
  return envObject.setLastError(17 /* napi_status.napi_bigint_expected */);
3025
3540
  }
3026
3541
  var isMinus = handle.value < BigInt(0);
3542
+ sign_bit >>>= 0;
3543
+ words >>>= 0;
3544
+ word_count >>>= 0;
3027
3545
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3028
3546
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
3547
+ word_count_int >>>= 0;
3029
3548
  var wordCount = 0;
3030
3549
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
3031
3550
  while (bigintValue !== BigInt(0)) {
@@ -3079,6 +3598,7 @@ function createNapiModule(options) {
3079
3598
  if (!handle.isExternal()) {
3080
3599
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3081
3600
  }
3601
+ result >>>= 0;
3082
3602
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3083
3603
  var p = handle.data();
3084
3604
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3102,6 +3622,7 @@ function createNapiModule(options) {
3102
3622
  if (typeof handle.value !== 'number') {
3103
3623
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3104
3624
  }
3625
+ result >>>= 0;
3105
3626
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3106
3627
  var v = new Int32Array([handle.value])[0];
3107
3628
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3126,6 +3647,7 @@ function createNapiModule(options) {
3126
3647
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3127
3648
  }
3128
3649
  var numberValue = handle.value;
3650
+ result >>>= 0;
3129
3651
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3130
3652
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
3131
3653
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -3155,6 +3677,9 @@ function createNapiModule(options) {
3155
3677
  envObject.checkGCAccess();
3156
3678
  if (!value)
3157
3679
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3680
+ result >>>= 0;
3681
+ buf >>>= 0;
3682
+ buf_size >>>= 0;
3158
3683
  buf_size = buf_size >>> 0;
3159
3684
  var handle = emnapiCtx.handleStore.get(value);
3160
3685
  if (typeof handle.value !== 'string') {
@@ -3197,6 +3722,9 @@ function createNapiModule(options) {
3197
3722
  envObject.checkGCAccess();
3198
3723
  if (!value)
3199
3724
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3725
+ result >>>= 0;
3726
+ buf >>>= 0;
3727
+ buf_size >>>= 0;
3200
3728
  buf_size = buf_size >>> 0;
3201
3729
  var handle = emnapiCtx.handleStore.get(value);
3202
3730
  if (typeof handle.value !== 'string') {
@@ -3233,6 +3761,9 @@ function createNapiModule(options) {
3233
3761
  envObject.checkGCAccess();
3234
3762
  if (!value)
3235
3763
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3764
+ result >>>= 0;
3765
+ buf >>>= 0;
3766
+ buf_size >>>= 0;
3236
3767
  buf_size = buf_size >>> 0;
3237
3768
  var handle = emnapiCtx.handleStore.get(value);
3238
3769
  if (typeof handle.value !== 'string') {
@@ -3273,6 +3804,7 @@ function createNapiModule(options) {
3273
3804
  if (typeof handle.value !== 'number') {
3274
3805
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3275
3806
  }
3807
+ result >>>= 0;
3276
3808
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3277
3809
  var v = new Uint32Array([handle.value])[0];
3278
3810
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3313,6 +3845,7 @@ function createNapiModule(options) {
3313
3845
  envObject.checkGCAccess();
3314
3846
  if (!result)
3315
3847
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3848
+ result >>>= 0;
3316
3849
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3317
3850
  var v = emnapiCtx.addToCurrentScope(value).id;
3318
3851
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3330,6 +3863,7 @@ function createNapiModule(options) {
3330
3863
  envObject.checkGCAccess();
3331
3864
  if (!result)
3332
3865
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3866
+ result >>>= 0;
3333
3867
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3334
3868
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
3335
3869
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3351,6 +3885,7 @@ function createNapiModule(options) {
3351
3885
  value = Number(low);
3352
3886
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3353
3887
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3888
+ high >>>= 0;
3354
3889
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3355
3890
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3356
3891
  return envObject.clearLastError();
@@ -3366,6 +3901,7 @@ function createNapiModule(options) {
3366
3901
  envObject.checkGCAccess();
3367
3902
  if (!result)
3368
3903
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3904
+ result >>>= 0;
3369
3905
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3370
3906
  var v = emnapiCtx.addToCurrentScope(value).id;
3371
3907
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3466,6 +4002,7 @@ function createNapiModule(options) {
3466
4002
  value = low;
3467
4003
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3468
4004
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4005
+ high >>>= 0;
3469
4006
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3470
4007
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3471
4008
  return envObject.clearLastError();
@@ -3488,6 +4025,7 @@ function createNapiModule(options) {
3488
4025
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
3489
4026
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3490
4027
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4028
+ high >>>= 0;
3491
4029
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3492
4030
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3493
4031
  return envObject.clearLastError();
@@ -3514,6 +4052,8 @@ function createNapiModule(options) {
3514
4052
  }
3515
4053
  if (!result)
3516
4054
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4055
+ words >>>= 0;
4056
+ word_count >>>= 0;
3517
4057
  word_count = word_count >>> 0;
3518
4058
  if (word_count > 2147483647) {
3519
4059
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -3530,6 +4070,7 @@ function createNapiModule(options) {
3530
4070
  value += wordi << BigInt(64 * i);
3531
4071
  }
3532
4072
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
4073
+ result >>>= 0;
3533
4074
  v = emnapiCtx.addToCurrentScope(value).id;
3534
4075
  HEAP_DATA_VIEW.setUint32(result, v, true);
3535
4076
  return envObject.getReturnStatus();
@@ -3558,6 +4099,7 @@ function createNapiModule(options) {
3558
4099
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
3559
4100
  });
3560
4101
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
4102
+ utf8name >>>= 0;
3561
4103
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
3562
4104
  var f;
3563
4105
  var napiCallback = (wasmTable.get(cb));
@@ -3700,6 +4242,7 @@ function createNapiModule(options) {
3700
4242
  if (!finalize_cb)
3701
4243
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3702
4244
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint);
4245
+ result >>>= 0;
3703
4246
  referenceId = reference.id;
3704
4247
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3705
4248
  HEAP_DATA_VIEW.setUint32(result, referenceId, true);
@@ -3750,6 +4293,7 @@ function createNapiModule(options) {
3750
4293
  if (!ref)
3751
4294
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3752
4295
  if (result) {
4296
+ result >>>= 0;
3753
4297
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3754
4298
  data = ref.data();
3755
4299
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3793,12 +4337,15 @@ function createNapiModule(options) {
3793
4337
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3794
4338
  if (!constructor)
3795
4339
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4340
+ length >>>= 0;
4341
+ properties >>>= 0;
4342
+ property_count >>>= 0;
3796
4343
  property_count = property_count >>> 0;
3797
4344
  if (property_count > 0) {
3798
4345
  if (!properties)
3799
4346
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3800
4347
  }
3801
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
4348
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
3802
4349
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3803
4350
  }
3804
4351
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -3817,6 +4364,7 @@ function createNapiModule(options) {
3817
4364
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
3818
4365
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
3819
4366
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
4367
+ attributes >>>= 0;
3820
4368
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
3821
4369
  if (utf8Name) {
3822
4370
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -3839,6 +4387,7 @@ function createNapiModule(options) {
3839
4387
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3840
4388
  var valueHandle = emnapiCtx.addToCurrentScope(F);
3841
4389
  valueHandleId = valueHandle.id;
4390
+ result >>>= 0;
3842
4391
  HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
3843
4392
  return envObject.getReturnStatus();
3844
4393
  }
@@ -3887,6 +4436,7 @@ function createNapiModule(options) {
3887
4436
  if (!(value.isObject() || value.isFunction())) {
3888
4437
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
3889
4438
  }
4439
+ type_tag >>>= 0;
3890
4440
  if (!type_tag) {
3891
4441
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3892
4442
  }
@@ -3936,6 +4486,7 @@ function createNapiModule(options) {
3936
4486
  }
3937
4487
  var binding = envObject.getObjectBinding(value.value);
3938
4488
  if (binding.tag !== null) {
4489
+ type_tag >>>= 0;
3939
4490
  var tag = binding.tag;
3940
4491
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
3941
4492
  ret = (tag[0] === typeTag[0] &&
@@ -3946,6 +4497,7 @@ function createNapiModule(options) {
3946
4497
  else {
3947
4498
  ret = false;
3948
4499
  }
4500
+ result >>>= 0;
3949
4501
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3950
4502
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
3951
4503
  return envObject.getReturnStatus();
@@ -3977,8 +4529,12 @@ function createNapiModule(options) {
3977
4529
  }
3978
4530
  var handle = handleResult.handle;
3979
4531
  var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
4532
+ finalize_data >>>= 0;
4533
+ finalize_cb >>>= 0;
4534
+ finalize_hint >>>= 0;
3980
4535
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
3981
4536
  if (result) {
4537
+ result >>>= 0;
3982
4538
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3983
4539
  var referenceId = reference.id;
3984
4540
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4026,6 +4582,9 @@ function createNapiModule(options) {
4026
4582
  try {
4027
4583
  if (!result)
4028
4584
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4585
+ byte_length >>>= 0;
4586
+ external_data >>>= 0;
4587
+ result >>>= 0;
4029
4588
  byte_length = byte_length >>> 0;
4030
4589
  if (!external_data) {
4031
4590
  byte_length = 0;
@@ -4145,7 +4704,7 @@ function createNapiModule(options) {
4145
4704
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
4146
4705
  if (!pointer)
4147
4706
  throw new Error('Unknown ArrayBuffer address');
4148
- if (typeof len !== 'number' || len === -1) {
4707
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
4149
4708
  len = arrayBufferOrView.byteLength - offset;
4150
4709
  }
4151
4710
  len = len >>> 0;
@@ -4167,7 +4726,7 @@ function createNapiModule(options) {
4167
4726
  var pointer = viewPointerInfo.address;
4168
4727
  if (!pointer)
4169
4728
  throw new Error('Unknown ArrayBuffer address');
4170
- if (typeof len !== 'number' || len === -1) {
4729
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
4171
4730
  len = latestView.byteLength - offset;
4172
4731
  }
4173
4732
  len = len >>> 0;
@@ -4204,6 +4763,9 @@ function createNapiModule(options) {
4204
4763
  try {
4205
4764
  if (!arraybuffer_or_view)
4206
4765
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4766
+ arraybuffer_or_view >>>= 0;
4767
+ offset >>>= 0;
4768
+ len >>>= 0;
4207
4769
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4208
4770
  var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
4209
4771
  var handle = envObject.ctx.handleStore.get(handleId);
@@ -4212,6 +4774,7 @@ function createNapiModule(options) {
4212
4774
  }
4213
4775
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
4214
4776
  if (handle.value !== ret) {
4777
+ arraybuffer_or_view >>>= 0;
4215
4778
  v = envObject.ensureHandleId(ret);
4216
4779
  HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
4217
4780
  }
@@ -4270,13 +4833,16 @@ function createNapiModule(options) {
4270
4833
  p = info.address;
4271
4834
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4272
4835
  if (address) {
4836
+ address >>>= 0;
4273
4837
  HEAP_DATA_VIEW.setUint32(address, p, true);
4274
4838
  }
4275
4839
  if (ownership) {
4840
+ ownership >>>= 0;
4276
4841
  ownershipOut = info.ownership;
4277
4842
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
4278
4843
  }
4279
4844
  if (runtime_allocated) {
4845
+ runtime_allocated >>>= 0;
4280
4846
  runtimeAllocated = info.runtimeAllocated;
4281
4847
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
4282
4848
  }
@@ -4306,22 +4872,129 @@ function createNapiModule(options) {
4306
4872
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4307
4873
  var versions = runtimeVersion.split('.')
4308
4874
  .map(function (n) { return Number(n); });
4875
+ version >>>= 0;
4309
4876
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4310
4877
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
4311
4878
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
4312
4879
  HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
4313
4880
  return envObject.clearLastError();
4314
4881
  }
4882
+ /**
4883
+ * Get the handle for an external SharedArrayBuffer.
4884
+ * Must be called on the emnapi main thread.
4885
+ * @__sig ippp
4886
+ */
4887
+ function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
4888
+ if (!env)
4889
+ return 1 /* napi_status.napi_invalid_arg */;
4890
+ // @ts-expect-error
4891
+ var envObject = emnapiCtx.envStore.get(env);
4892
+ envObject.checkGCAccess();
4893
+ if (!envObject.tryCatch.isEmpty())
4894
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4895
+ if (!envObject.canCallIntoJs())
4896
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
4897
+ envObject.clearLastError();
4898
+ try {
4899
+ if (!sharedarraybuffer)
4900
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4901
+ if (!handle)
4902
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4903
+ handle >>>= 0;
4904
+ var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
4905
+ if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
4906
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4907
+ }
4908
+ var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
4909
+ if (metaPtr === undefined) {
4910
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4911
+ }
4912
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4913
+ HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
4914
+ return envObject.getReturnStatus();
4915
+ }
4916
+ catch (err) {
4917
+ envObject.tryCatch.setError(err);
4918
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4919
+ }
4920
+ }
4921
+ /**
4922
+ * Acquire a reference to an external SharedArrayBuffer.
4923
+ * Can be called on any thread.
4924
+ * @__sig vp
4925
+ */
4926
+ function emnapi_acquire_external_sharedarraybuffer(handle) {
4927
+ handle >>>= 0;
4928
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4929
+ }
4930
+ /**
4931
+ * Release a reference to an external SharedArrayBuffer.
4932
+ * Can be called on any thread.
4933
+ * @__sig vp
4934
+ */
4935
+ function emnapi_release_external_sharedarraybuffer(handle) {
4936
+ handle >>>= 0;
4937
+ emnapiExternalSAB.release(handle);
4938
+ }
4939
+ /**
4940
+ * Acquire a reference to an external SharedArrayBuffer on the current thread.
4941
+ * Can be called on any thread. Increments refcount and registers in
4942
+ * the current thread's FinalizationRegistry.
4943
+ * Exposed as Module.emnapiAcquireExternalSharedArrayBuffer (emscripten) or
4944
+ * napiModule.emnapi.acquireExternalSharedArrayBuffer (core).
4945
+ */
4946
+ function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
4947
+ if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
4948
+ throw new TypeError('Expected a SharedArrayBuffer');
4949
+ }
4950
+ if (!emnapiExternalSAB.registry) {
4951
+ throw new Error('FinalizationRegistry is not supported in this environment');
4952
+ }
4953
+ handle >>>= 0;
4954
+ var meta = emnapiExternalSAB.readMeta(handle);
4955
+ // eslint-disable-next-line prefer-const
4956
+ var external_data = meta.external_data;
4957
+ external_data >>>= 0;
4958
+ if (sab == null) {
4959
+ sab = new SharedArrayBuffer(meta.byte_length);
4960
+ new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
4961
+ }
4962
+ else {
4963
+ if (emnapiExternalSAB.handleTable.has(sab)) {
4964
+ return sab;
4965
+ }
4966
+ }
4967
+ // Increment refcount atomically
4968
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4969
+ // Register in emnapiExternalMemory.table for emnapi_sync_memory support
4970
+ if (!emnapiExternalMemory.table.has(sab)) {
4971
+ if (external_data) {
4972
+ emnapiExternalMemory.table.set(sab, {
4973
+ address: external_data,
4974
+ ownership: 1 /* ReferenceOwnership.kUserland */,
4975
+ runtimeAllocated: 0
4976
+ });
4977
+ }
4978
+ }
4979
+ // Register in handleTable and FinalizationRegistry for this thread
4980
+ emnapiExternalSAB.handleTable.set(sab, handle);
4981
+ emnapiExternalSAB.registry.register(sab, handle);
4982
+ return sab;
4983
+ }
4315
4984
  var emnapiMod = /*#__PURE__*/ Object.freeze({
4316
4985
  __proto__: null,
4986
+ $emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
4317
4987
  $emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
4318
4988
  $emnapiSyncMemory: $emnapiSyncMemory,
4989
+ emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
4319
4990
  emnapi_create_memory_view: emnapi_create_memory_view,
4991
+ emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
4320
4992
  emnapi_get_memory_address: emnapi_get_memory_address,
4321
4993
  emnapi_get_runtime_version: emnapi_get_runtime_version,
4322
4994
  emnapi_is_node_binding_available: emnapi_is_node_binding_available,
4323
4995
  emnapi_is_support_bigint: emnapi_is_support_bigint,
4324
4996
  emnapi_is_support_weakref: emnapi_is_support_weakref,
4997
+ emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
4325
4998
  emnapi_sync_memory: emnapi_sync_memory
4326
4999
  });
4327
5000
  /**
@@ -4335,6 +5008,7 @@ function createNapiModule(options) {
4335
5008
  envObject.checkGCAccess();
4336
5009
  if (!result)
4337
5010
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5011
+ result >>>= 0;
4338
5012
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4339
5013
  var value = emnapiCtx.addToCurrentScope([]).id;
4340
5014
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4352,6 +5026,8 @@ function createNapiModule(options) {
4352
5026
  envObject.checkGCAccess();
4353
5027
  if (!result)
4354
5028
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5029
+ length >>>= 0;
5030
+ result >>>= 0;
4355
5031
  length = length >>> 0;
4356
5032
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4357
5033
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
@@ -4360,9 +5036,11 @@ function createNapiModule(options) {
4360
5036
  return envObject.clearLastError();
4361
5037
  }
4362
5038
  function emnapiCreateArrayBuffer(byte_length, data, shared) {
5039
+ byte_length >>>= 0;
4363
5040
  byte_length = byte_length >>> 0;
4364
5041
  var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
4365
5042
  if (data) {
5043
+ data >>>= 0;
4366
5044
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4367
5045
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
4368
5046
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4389,6 +5067,7 @@ function createNapiModule(options) {
4389
5067
  try {
4390
5068
  if (!result)
4391
5069
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5070
+ result >>>= 0;
4392
5071
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
4393
5072
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
4394
5073
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4419,6 +5098,7 @@ function createNapiModule(options) {
4419
5098
  try {
4420
5099
  if (!result)
4421
5100
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5101
+ result >>>= 0;
4422
5102
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
4423
5103
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
4424
5104
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4449,6 +5129,7 @@ function createNapiModule(options) {
4449
5129
  try {
4450
5130
  if (!result)
4451
5131
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5132
+ result >>>= 0;
4452
5133
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4453
5134
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
4454
5135
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4486,6 +5167,7 @@ function createNapiModule(options) {
4486
5167
  if (finalize_cb) {
4487
5168
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint);
4488
5169
  }
5170
+ result >>>= 0;
4489
5171
  value = externalHandle.id;
4490
5172
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4491
5173
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4515,6 +5197,9 @@ function createNapiModule(options) {
4515
5197
  try {
4516
5198
  if (!result)
4517
5199
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5200
+ byte_length >>>= 0;
5201
+ external_data >>>= 0;
5202
+ result >>>= 0;
4518
5203
  byte_length = byte_length >>> 0;
4519
5204
  if (!external_data) {
4520
5205
  byte_length = 0;
@@ -4565,6 +5250,65 @@ function createNapiModule(options) {
4565
5250
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4566
5251
  }
4567
5252
  }
5253
+ /**
5254
+ * @__sig ipppppp
5255
+ */
5256
+ function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
5257
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5258
+ var value;
5259
+ if (!env)
5260
+ return 1 /* napi_status.napi_invalid_arg */;
5261
+ // @ts-expect-error
5262
+ var envObject = emnapiCtx.envStore.get(env);
5263
+ envObject.checkGCAccess();
5264
+ if (!envObject.tryCatch.isEmpty())
5265
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5266
+ if (!envObject.canCallIntoJs())
5267
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
5268
+ envObject.clearLastError();
5269
+ try {
5270
+ if (!result)
5271
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5272
+ byte_length >>>= 0;
5273
+ external_data >>>= 0;
5274
+ result >>>= 0;
5275
+ byte_length = byte_length >>> 0;
5276
+ if (!external_data) {
5277
+ byte_length = 0;
5278
+ }
5279
+ if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
5280
+ throw new RangeError('Memory out of range');
5281
+ }
5282
+ if (!emnapiExternalSAB.registry && finalize_cb) {
5283
+ throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
5284
+ }
5285
+ var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
5286
+ if (byte_length !== 0) {
5287
+ var u8arr = new Uint8Array(sharedArrayBuffer);
5288
+ u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
5289
+ emnapiExternalMemory.table.set(sharedArrayBuffer, {
5290
+ address: external_data,
5291
+ ownership: 1 /* ReferenceOwnership.kUserland */,
5292
+ runtimeAllocated: 0
5293
+ });
5294
+ }
5295
+ value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
5296
+ if (finalize_cb) {
5297
+ finalize_cb >>>= 0;
5298
+ finalize_hint >>>= 0;
5299
+ var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
5300
+ emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
5301
+ emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
5302
+ }
5303
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5304
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5305
+ return envObject.getReturnStatus();
5306
+ }
5307
+ catch (err) {
5308
+ envObject.tryCatch.setError(err);
5309
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5310
+ }
5311
+ }
4568
5312
  /**
4569
5313
  * @__sig ipp
4570
5314
  */
@@ -4576,6 +5320,7 @@ function createNapiModule(options) {
4576
5320
  envObject.checkGCAccess();
4577
5321
  if (!result)
4578
5322
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5323
+ result >>>= 0;
4579
5324
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4580
5325
  var value = emnapiCtx.addToCurrentScope({}).id;
4581
5326
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4585,7 +5330,7 @@ function createNapiModule(options) {
4585
5330
  /**
4586
5331
  * @__sig ipppppp
4587
5332
  */
4588
- function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
5333
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4589
5334
  if (!env)
4590
5335
  return 1 /* napi_status.napi_invalid_arg */;
4591
5336
  // @ts-expect-error
@@ -4593,6 +5338,7 @@ function createNapiModule(options) {
4593
5338
  envObject.checkGCAccess();
4594
5339
  if (!result)
4595
5340
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5341
+ property_count >>>= 0;
4596
5342
  property_count = property_count >>> 0;
4597
5343
  if (property_count > 0) {
4598
5344
  if (!property_names)
@@ -4604,6 +5350,8 @@ function createNapiModule(options) {
4604
5350
  ? emnapiCtx.handleStore.get(prototype_or_null).value
4605
5351
  : null;
4606
5352
  var properties = {};
5353
+ property_names >>>= 0;
5354
+ property_values >>>= 0;
4607
5355
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4608
5356
  for (var i = 0; i < property_count; i++) {
4609
5357
  var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
@@ -4625,6 +5373,7 @@ function createNapiModule(options) {
4625
5373
  }
4626
5374
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4627
5375
  var value = emnapiCtx.addToCurrentScope(obj).id;
5376
+ result >>>= 0;
4628
5377
  HEAP_DATA_VIEW.setUint32(result, value, true);
4629
5378
  return envObject.clearLastError();
4630
5379
  }
@@ -4639,6 +5388,7 @@ function createNapiModule(options) {
4639
5388
  envObject.checkGCAccess();
4640
5389
  if (!result)
4641
5390
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5391
+ result >>>= 0;
4642
5392
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4643
5393
  if (!description) {
4644
5394
  // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars
@@ -4679,10 +5429,9 @@ function createNapiModule(options) {
4679
5429
  if (!result)
4680
5430
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4681
5431
  var handle = emnapiCtx.handleStore.get(arraybuffer);
4682
- if (!handle.isArrayBuffer()) {
4683
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4684
- }
4685
5432
  var buffer = handle.value;
5433
+ byte_offset >>>= 0;
5434
+ length >>>= 0;
4686
5435
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
4687
5436
  var _a;
4688
5437
  byte_offset = byte_offset >>> 0;
@@ -4713,42 +5462,48 @@ function createNapiModule(options) {
4713
5462
  });
4714
5463
  }
4715
5464
  }
5465
+ result >>>= 0;
4716
5466
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4717
5467
  value = emnapiCtx.addToCurrentScope(out).id;
4718
5468
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4719
5469
  HEAP_DATA_VIEW.setUint32(result, value, true);
4720
5470
  return envObject.getReturnStatus();
4721
5471
  };
4722
- switch (type) {
4723
- case 0 /* napi_typedarray_type.napi_int8_array */:
4724
- return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4725
- case 1 /* napi_typedarray_type.napi_uint8_array */:
4726
- return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4727
- case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
4728
- return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4729
- case 3 /* napi_typedarray_type.napi_int16_array */:
4730
- return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4731
- case 4 /* napi_typedarray_type.napi_uint16_array */:
4732
- return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4733
- case 5 /* napi_typedarray_type.napi_int32_array */:
4734
- return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4735
- case 6 /* napi_typedarray_type.napi_uint32_array */:
4736
- return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4737
- case 7 /* napi_typedarray_type.napi_float32_array */:
4738
- return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4739
- case 8 /* napi_typedarray_type.napi_float64_array */:
4740
- return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4741
- case 9 /* napi_typedarray_type.napi_bigint64_array */:
4742
- return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4743
- case 10 /* napi_typedarray_type.napi_biguint64_array */:
4744
- return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4745
- case 11 /* napi_typedarray_type.napi_float16_array */:
4746
- if (typeof Float16Array !== 'function') {
5472
+ if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
5473
+ switch (type) {
5474
+ case 0 /* napi_typedarray_type.napi_int8_array */:
5475
+ return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
5476
+ case 1 /* napi_typedarray_type.napi_uint8_array */:
5477
+ return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
5478
+ case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
5479
+ return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
5480
+ case 3 /* napi_typedarray_type.napi_int16_array */:
5481
+ return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
5482
+ case 4 /* napi_typedarray_type.napi_uint16_array */:
5483
+ return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
5484
+ case 5 /* napi_typedarray_type.napi_int32_array */:
5485
+ return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
5486
+ case 6 /* napi_typedarray_type.napi_uint32_array */:
5487
+ return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
5488
+ case 7 /* napi_typedarray_type.napi_float32_array */:
5489
+ return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
5490
+ case 8 /* napi_typedarray_type.napi_float64_array */:
5491
+ return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
5492
+ case 9 /* napi_typedarray_type.napi_bigint64_array */:
5493
+ return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
5494
+ case 10 /* napi_typedarray_type.napi_biguint64_array */:
5495
+ return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
5496
+ case 11 /* napi_typedarray_type.napi_float16_array */:
5497
+ if (typeof Float16Array !== 'function') {
5498
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5499
+ }
5500
+ return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
5501
+ default:
4747
5502
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4748
- }
4749
- return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
4750
- default:
4751
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5503
+ }
5504
+ }
5505
+ else {
5506
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4752
5507
  }
4753
5508
  }
4754
5509
  catch (err) {
@@ -4781,7 +5536,9 @@ function createNapiModule(options) {
4781
5536
  if (!Buffer) {
4782
5537
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
4783
5538
  }
5539
+ result >>>= 0;
4784
5540
  var buffer = void 0;
5541
+ size >>>= 0;
4785
5542
  size = size >>> 0;
4786
5543
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4787
5544
  if (!data || (size === 0)) {
@@ -4793,6 +5550,7 @@ function createNapiModule(options) {
4793
5550
  pointer = _malloc(size);
4794
5551
  if (!pointer)
4795
5552
  throw new Error('Out of memory');
5553
+ pointer >>>= 0;
4796
5554
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
4797
5555
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
4798
5556
  var viewDescriptor = {
@@ -4806,6 +5564,7 @@ function createNapiModule(options) {
4806
5564
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
4807
5565
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
4808
5566
  HEAP_DATA_VIEW.setUint32(result, value, true);
5567
+ data >>>= 0;
4809
5568
  HEAP_DATA_VIEW.setUint32(data, pointer, true);
4810
5569
  }
4811
5570
  return envObject.getReturnStatus();
@@ -4840,8 +5599,11 @@ function createNapiModule(options) {
4840
5599
  }
4841
5600
  var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
4842
5601
  var buffer = Buffer.from(arrayBuffer);
5602
+ data >>>= 0;
5603
+ length >>>= 0;
4843
5604
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
4844
5605
  value = emnapiCtx.addToCurrentScope(buffer).id;
5606
+ result >>>= 0;
4845
5607
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4846
5608
  HEAP_DATA_VIEW.setUint32(result, value, true);
4847
5609
  return envObject.getReturnStatus();
@@ -4878,6 +5640,8 @@ function createNapiModule(options) {
4878
5640
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4879
5641
  if (!result)
4880
5642
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5643
+ byte_offset >>>= 0;
5644
+ byte_length >>>= 0;
4881
5645
  byte_offset = byte_offset >>> 0;
4882
5646
  byte_length = byte_length >>> 0;
4883
5647
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4906,6 +5670,7 @@ function createNapiModule(options) {
4906
5670
  });
4907
5671
  }
4908
5672
  }
5673
+ result >>>= 0;
4909
5674
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4910
5675
  value = emnapiCtx.addToCurrentScope(out).id;
4911
5676
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4936,6 +5701,8 @@ function createNapiModule(options) {
4936
5701
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4937
5702
  if (!result)
4938
5703
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5704
+ byte_length >>>= 0;
5705
+ byte_offset >>>= 0;
4939
5706
  byte_length = byte_length >>> 0;
4940
5707
  byte_offset = byte_offset >>> 0;
4941
5708
  var value = emnapiCtx.handleStore.get(arraybuffer).value;
@@ -4957,6 +5724,7 @@ function createNapiModule(options) {
4957
5724
  });
4958
5725
  }
4959
5726
  }
5727
+ result >>>= 0;
4960
5728
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4961
5729
  var v = emnapiCtx.addToCurrentScope(dataview).id;
4962
5730
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4986,7 +5754,10 @@ function createNapiModule(options) {
4986
5754
  envObject.checkGCAccess();
4987
5755
  if (!result)
4988
5756
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4989
- var autoLength = length === -1;
5757
+ length >>>= 0;
5758
+ utf8description >>>= 0;
5759
+ result >>>= 0;
5760
+ var autoLength = length === -1 || length === 4294967295;
4990
5761
  var sizelength = length >>> 0;
4991
5762
  if (length !== 0) {
4992
5763
  if (!utf8description)
@@ -5015,10 +5786,11 @@ function createNapiModule(options) {
5015
5786
  napi_create_external_arraybuffer: napi_create_external_arraybuffer,
5016
5787
  napi_create_external_buffer: napi_create_external_buffer,
5017
5788
  napi_create_object: napi_create_object,
5018
- napi_create_object_with_properties: napi_create_object_with_properties,
5019
5789
  napi_create_symbol: napi_create_symbol,
5020
5790
  napi_create_typedarray: napi_create_typedarray,
5021
5791
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
5792
+ node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
5793
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
5022
5794
  node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
5023
5795
  node_api_symbol_for: node_api_symbol_for
5024
5796
  });
@@ -5031,6 +5803,7 @@ function createNapiModule(options) {
5031
5803
  envObject.checkGCAccess();
5032
5804
  if (!result)
5033
5805
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5806
+ result >>>= 0;
5034
5807
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5035
5808
  var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */;
5036
5809
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5046,6 +5819,7 @@ function createNapiModule(options) {
5046
5819
  envObject.checkGCAccess();
5047
5820
  if (!result)
5048
5821
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5822
+ result >>>= 0;
5049
5823
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5050
5824
  var value = 5 /* GlobalHandle.GLOBAL */;
5051
5825
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5061,6 +5835,7 @@ function createNapiModule(options) {
5061
5835
  envObject.checkGCAccess();
5062
5836
  if (!result)
5063
5837
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5838
+ result >>>= 0;
5064
5839
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5065
5840
  var value = 2 /* GlobalHandle.NULL */;
5066
5841
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5076,6 +5851,7 @@ function createNapiModule(options) {
5076
5851
  envObject.checkGCAccess();
5077
5852
  if (!result)
5078
5853
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5854
+ result >>>= 0;
5079
5855
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5080
5856
  var value = 1 /* GlobalHandle.UNDEFINED */;
5081
5857
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5094,6 +5870,9 @@ function createNapiModule(options) {
5094
5870
  if (!env)
5095
5871
  return 1 /* napi_status.napi_invalid_arg */;
5096
5872
  var envObject = emnapiCtx.envStore.get(env);
5873
+ data >>>= 0;
5874
+ finalize_cb >>>= 0;
5875
+ finalize_hint >>>= 0;
5097
5876
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
5098
5877
  return envObject.clearLastError();
5099
5878
  }
@@ -5104,6 +5883,7 @@ function createNapiModule(options) {
5104
5883
  var envObject = emnapiCtx.envStore.get(env);
5105
5884
  if (!data)
5106
5885
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5886
+ data >>>= 0;
5107
5887
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5108
5888
  var value = envObject.getInstanceData();
5109
5889
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5117,6 +5897,9 @@ function createNapiModule(options) {
5117
5897
  });
5118
5898
  /** @__sig vpppp */
5119
5899
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
5900
+ error_code >>>= 0;
5901
+ engine_error_code >>>= 0;
5902
+ engine_reserved >>>= 0;
5120
5903
  var envObject = emnapiCtx.envStore.get(env);
5121
5904
  var lastError = envObject.lastError;
5122
5905
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -5125,6 +5908,7 @@ function createNapiModule(options) {
5125
5908
  var engineErrorCode = lastError.engineErrorCode >>> 0;
5126
5909
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5127
5910
  var engineReserved = lastError.engineReserved;
5911
+ engineReserved >>>= 0;
5128
5912
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5129
5913
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
5130
5914
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
@@ -5168,6 +5952,8 @@ function createNapiModule(options) {
5168
5952
  try {
5169
5953
  if (!msg)
5170
5954
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5955
+ code >>>= 0;
5956
+ msg >>>= 0;
5171
5957
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
5172
5958
  if (code)
5173
5959
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5194,6 +5980,8 @@ function createNapiModule(options) {
5194
5980
  try {
5195
5981
  if (!msg)
5196
5982
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5983
+ code >>>= 0;
5984
+ msg >>>= 0;
5197
5985
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
5198
5986
  if (code)
5199
5987
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5220,6 +6008,8 @@ function createNapiModule(options) {
5220
6008
  try {
5221
6009
  if (!msg)
5222
6010
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6011
+ code >>>= 0;
6012
+ msg >>>= 0;
5223
6013
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
5224
6014
  if (code)
5225
6015
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5246,6 +6036,8 @@ function createNapiModule(options) {
5246
6036
  try {
5247
6037
  if (!msg)
5248
6038
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6039
+ code >>>= 0;
6040
+ msg >>>= 0;
5249
6041
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
5250
6042
  if (code)
5251
6043
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5268,6 +6060,7 @@ function createNapiModule(options) {
5268
6060
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5269
6061
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5270
6062
  var r = envObject.tryCatch.hasCaught();
6063
+ result >>>= 0;
5271
6064
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5272
6065
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5273
6066
  return envObject.clearLastError();
@@ -5295,6 +6088,7 @@ function createNapiModule(options) {
5295
6088
  }
5296
6089
  error.code = codeValue;
5297
6090
  }
6091
+ result >>>= 0;
5298
6092
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5299
6093
  var value = emnapiCtx.addToCurrentScope(error).id;
5300
6094
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5324,6 +6118,7 @@ function createNapiModule(options) {
5324
6118
  }
5325
6119
  error.code = codeValue;
5326
6120
  }
6121
+ result >>>= 0;
5327
6122
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5328
6123
  var value = emnapiCtx.addToCurrentScope(error).id;
5329
6124
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5353,6 +6148,7 @@ function createNapiModule(options) {
5353
6148
  }
5354
6149
  error.code = codeValue;
5355
6150
  }
6151
+ result >>>= 0;
5356
6152
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5357
6153
  var value = emnapiCtx.addToCurrentScope(error).id;
5358
6154
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5382,6 +6178,7 @@ function createNapiModule(options) {
5382
6178
  }
5383
6179
  error.code = codeValue;
5384
6180
  }
6181
+ result >>>= 0;
5385
6182
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5386
6183
  var value = emnapiCtx.addToCurrentScope(error).id;
5387
6184
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5397,6 +6194,7 @@ function createNapiModule(options) {
5397
6194
  envObject.checkGCAccess();
5398
6195
  if (!result)
5399
6196
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6197
+ result >>>= 0;
5400
6198
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5401
6199
  if (!envObject.tryCatch.hasCaught()) {
5402
6200
  HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED
@@ -5413,6 +6211,10 @@ function createNapiModule(options) {
5413
6211
  }
5414
6212
  /** @__sig vpppp */
5415
6213
  function napi_fatal_error(location, location_len, message, message_len) {
6214
+ location >>>= 0;
6215
+ location_len >>>= 0;
6216
+ message >>>= 0;
6217
+ message_len >>>= 0;
5416
6218
  var locationStr = emnapiString.UTF8ToString(location, location_len);
5417
6219
  var messageStr = emnapiString.UTF8ToString(message, message_len);
5418
6220
  if (emnapiNodeBinding) {
@@ -5469,9 +6271,23 @@ function createNapiModule(options) {
5469
6271
  node_api_throw_syntax_error: node_api_throw_syntax_error
5470
6272
  });
5471
6273
  /** @__sig ipppppp */
5472
- function napi_create_function(env, utf8name, length, cb, data, result) {
6274
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
6275
+ length >>>= 0;
6276
+ var envObject = emnapiCtx.envStore.get(env);
6277
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
6278
+ if (fresult.status !== 0 /* napi_status.napi_ok */)
6279
+ return envObject.setLastError(fresult.status);
6280
+ var f = fresult.f;
6281
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
6282
+ result >>>= 0;
5473
6283
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5474
- var value;
6284
+ var value = valueHandle.id;
6285
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6286
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6287
+ return envObject.getReturnStatus();
6288
+ }
6289
+ /** @__sig ipppppp */
6290
+ function napi_create_function(env, utf8name, length, cb, data, result) {
5475
6291
  if (!env)
5476
6292
  return 1 /* napi_status.napi_invalid_arg */;
5477
6293
  // @ts-expect-error
@@ -5487,15 +6303,7 @@ function createNapiModule(options) {
5487
6303
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5488
6304
  if (!cb)
5489
6305
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5490
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
5491
- if (fresult.status !== 0 /* napi_status.napi_ok */)
5492
- return envObject.setLastError(fresult.status);
5493
- var f = fresult.f;
5494
- var valueHandle = emnapiCtx.addToCurrentScope(f);
5495
- value = valueHandle.id;
5496
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5497
- HEAP_DATA_VIEW.setUint32(result, value, true);
5498
- return envObject.getReturnStatus();
6306
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
5499
6307
  }
5500
6308
  catch (err) {
5501
6309
  envObject.tryCatch.setError(err);
@@ -5510,11 +6318,14 @@ function createNapiModule(options) {
5510
6318
  if (!cbinfo)
5511
6319
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5512
6320
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
6321
+ argc >>>= 0;
6322
+ argv >>>= 0;
5513
6323
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5514
6324
  if (argv) {
5515
6325
  if (!argc)
5516
6326
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5517
6327
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
6328
+ argcValue >>>= 0;
5518
6329
  var len = cbinfoValue.args.length;
5519
6330
  var arrlen = argcValue < len ? argcValue : len;
5520
6331
  var i = 0;
@@ -5533,11 +6344,13 @@ function createNapiModule(options) {
5533
6344
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
5534
6345
  }
5535
6346
  if (this_arg) {
6347
+ this_arg >>>= 0;
5536
6348
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5537
6349
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
5538
6350
  HEAP_DATA_VIEW.setUint32(this_arg, v, true);
5539
6351
  }
5540
6352
  if (data) {
6353
+ data >>>= 0;
5541
6354
  HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
5542
6355
  }
5543
6356
  return envObject.clearLastError();
@@ -5560,6 +6373,9 @@ function createNapiModule(options) {
5560
6373
  try {
5561
6374
  if (!recv)
5562
6375
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6376
+ argc >>>= 0;
6377
+ argv >>>= 0;
6378
+ result >>>= 0;
5563
6379
  argc = argc >>> 0;
5564
6380
  if (argc > 0) {
5565
6381
  if (!argv)
@@ -5607,6 +6423,9 @@ function createNapiModule(options) {
5607
6423
  try {
5608
6424
  if (!constructor)
5609
6425
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6426
+ argc >>>= 0;
6427
+ argv >>>= 0;
6428
+ result >>>= 0;
5610
6429
  argc = argc >>> 0;
5611
6430
  if (argc > 0) {
5612
6431
  if (!argv)
@@ -5659,8 +6478,10 @@ function createNapiModule(options) {
5659
6478
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5660
6479
  if (!result)
5661
6480
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6481
+ result >>>= 0;
5662
6482
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5663
6483
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
6484
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unused-vars
5664
6485
  var value = thiz == null || thiz.constructor == null
5665
6486
  ? 0
5666
6487
  : thiz instanceof fn
@@ -5672,6 +6493,7 @@ function createNapiModule(options) {
5672
6493
  }
5673
6494
  var functionMod = /*#__PURE__*/ Object.freeze({
5674
6495
  __proto__: null,
6496
+ _emnapi_create_function: _emnapi_create_function,
5675
6497
  napi_call_function: napi_call_function,
5676
6498
  napi_create_function: napi_create_function,
5677
6499
  napi_get_cb_info: napi_get_cb_info,
@@ -5689,6 +6511,7 @@ function createNapiModule(options) {
5689
6511
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5690
6512
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5691
6513
  var scope = emnapiCtx.openScope(envObject);
6514
+ result >>>= 0;
5692
6515
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5693
6516
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5694
6517
  return envObject.clearLastError();
@@ -5719,6 +6542,7 @@ function createNapiModule(options) {
5719
6542
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5720
6543
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5721
6544
  var scope = emnapiCtx.openScope(envObject);
6545
+ result >>>= 0;
5722
6546
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5723
6547
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5724
6548
  return envObject.clearLastError();
@@ -5753,6 +6577,8 @@ function createNapiModule(options) {
5753
6577
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5754
6578
  var scopeObject = emnapiCtx.scopeStore.get(scope);
5755
6579
  if (!scopeObject.escapeCalled()) {
6580
+ escapee >>>= 0;
6581
+ result >>>= 0;
5756
6582
  var newHandle = scopeObject.escape(escapee);
5757
6583
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5758
6584
  var value = newHandle ? newHandle.id : 0;
@@ -5781,6 +6607,7 @@ function createNapiModule(options) {
5781
6607
  }
5782
6608
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5783
6609
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */);
6610
+ result >>>= 0;
5784
6611
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5785
6612
  HEAP_DATA_VIEW.setUint32(result, ref.id, true);
5786
6613
  return envObject.clearLastError();
@@ -5807,6 +6634,7 @@ function createNapiModule(options) {
5807
6634
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5808
6635
  var count = emnapiCtx.refStore.get(ref).ref();
5809
6636
  if (result) {
6637
+ result >>>= 0;
5810
6638
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5811
6639
  HEAP_DATA_VIEW.setUint32(result, count, true);
5812
6640
  }
@@ -5829,6 +6657,7 @@ function createNapiModule(options) {
5829
6657
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5830
6658
  var count = reference.unref();
5831
6659
  if (result) {
6660
+ result >>>= 0;
5832
6661
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5833
6662
  HEAP_DATA_VIEW.setUint32(result, count, true);
5834
6663
  }
@@ -5848,6 +6677,7 @@ function createNapiModule(options) {
5848
6677
  var reference = emnapiCtx.refStore.get(ref);
5849
6678
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5850
6679
  var handleId = reference.get(envObject);
6680
+ result >>>= 0;
5851
6681
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5852
6682
  HEAP_DATA_VIEW.setUint32(result, handleId, true);
5853
6683
  return envObject.clearLastError();
@@ -5859,6 +6689,8 @@ function createNapiModule(options) {
5859
6689
  var envObject = emnapiCtx.envStore.get(env);
5860
6690
  if (!fun)
5861
6691
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6692
+ fun >>>= 0;
6693
+ arg >>>= 0;
5862
6694
  emnapiCtx.addCleanupHook(envObject, fun, arg);
5863
6695
  return 0 /* napi_status.napi_ok */;
5864
6696
  }
@@ -5869,6 +6701,8 @@ function createNapiModule(options) {
5869
6701
  var envObject = emnapiCtx.envStore.get(env);
5870
6702
  if (!fun)
5871
6703
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6704
+ fun >>>= 0;
6705
+ arg >>>= 0;
5872
6706
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
5873
6707
  return 0 /* napi_status.napi_ok */;
5874
6708
  }
@@ -5935,8 +6769,10 @@ function createNapiModule(options) {
5935
6769
  var p = new Promise(function (resolve, reject) {
5936
6770
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
5937
6771
  deferredObjectId = deferredObject.id;
6772
+ deferred >>>= 0;
5938
6773
  HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
5939
6774
  });
6775
+ promise >>>= 0;
5940
6776
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5941
6777
  value = emnapiCtx.addToCurrentScope(p).id;
5942
6778
  HEAP_DATA_VIEW.setUint32(promise, value, true);
@@ -6011,6 +6847,7 @@ function createNapiModule(options) {
6011
6847
  if (!is_promise)
6012
6848
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6013
6849
  var h = emnapiCtx.handleStore.get(value);
6850
+ is_promise >>>= 0;
6014
6851
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6015
6852
  var r = h.isPromise() ? 1 : 0;
6016
6853
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6158,6 +6995,7 @@ function createNapiModule(options) {
6158
6995
  }
6159
6996
  }
6160
6997
  }
6998
+ result >>>= 0;
6161
6999
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6162
7000
  value = emnapiCtx.addToCurrentScope(ret).id;
6163
7001
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6236,6 +7074,7 @@ function createNapiModule(options) {
6236
7074
  catch (_) {
6237
7075
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6238
7076
  }
7077
+ result >>>= 0;
6239
7078
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
6240
7079
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6241
7080
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6278,6 +7117,7 @@ function createNapiModule(options) {
6278
7117
  catch (_) {
6279
7118
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6280
7119
  }
7120
+ result >>>= 0;
6281
7121
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6282
7122
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
6283
7123
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6325,6 +7165,7 @@ function createNapiModule(options) {
6325
7165
  }
6326
7166
  }
6327
7167
  if (result) {
7168
+ result >>>= 0;
6328
7169
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6329
7170
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6330
7171
  }
@@ -6372,6 +7213,7 @@ function createNapiModule(options) {
6372
7213
  return envObject.setLastError(4 /* napi_status.napi_name_expected */);
6373
7214
  }
6374
7215
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
7216
+ result >>>= 0;
6375
7217
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6376
7218
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6377
7219
  return envObject.getReturnStatus();
@@ -6405,6 +7247,7 @@ function createNapiModule(options) {
6405
7247
  if (!cname) {
6406
7248
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6407
7249
  }
7250
+ cname >>>= 0;
6408
7251
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
6409
7252
  return envObject.getReturnStatus();
6410
7253
  }
@@ -6446,6 +7289,8 @@ function createNapiModule(options) {
6446
7289
  catch (_) {
6447
7290
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6448
7291
  }
7292
+ utf8name >>>= 0;
7293
+ result >>>= 0;
6449
7294
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
6450
7295
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6451
7296
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -6489,6 +7334,8 @@ function createNapiModule(options) {
6489
7334
  catch (_) {
6490
7335
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6491
7336
  }
7337
+ utf8name >>>= 0;
7338
+ result >>>= 0;
6492
7339
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6493
7340
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
6494
7341
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6559,6 +7406,7 @@ function createNapiModule(options) {
6559
7406
  catch (_) {
6560
7407
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6561
7408
  }
7409
+ result >>>= 0;
6562
7410
  r = ((index >>> 0) in v) ? 1 : 0;
6563
7411
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6564
7412
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6599,6 +7447,7 @@ function createNapiModule(options) {
6599
7447
  catch (_) {
6600
7448
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6601
7449
  }
7450
+ result >>>= 0;
6602
7451
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6603
7452
  value = envObject.ensureHandleId(v[index >>> 0]);
6604
7453
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6643,6 +7492,7 @@ function createNapiModule(options) {
6643
7492
  }
6644
7493
  }
6645
7494
  if (result) {
7495
+ result >>>= 0;
6646
7496
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6647
7497
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6648
7498
  }
@@ -6668,6 +7518,8 @@ function createNapiModule(options) {
6668
7518
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
6669
7519
  envObject.clearLastError();
6670
7520
  try {
7521
+ properties >>>= 0;
7522
+ property_count >>>= 0;
6671
7523
  property_count = property_count >>> 0;
6672
7524
  if (property_count > 0) {
6673
7525
  if (!properties)
@@ -6692,6 +7544,7 @@ function createNapiModule(options) {
6692
7544
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
6693
7545
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
6694
7546
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
7547
+ attributes >>>= 0;
6695
7548
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
6696
7549
  if (utf8Name) {
6697
7550
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -6816,6 +7669,7 @@ function createNapiModule(options) {
6816
7669
  }
6817
7670
  var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value;
6818
7671
  var ret = g.eval(v8Script.value);
7672
+ result >>>= 0;
6819
7673
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6820
7674
  value = envObject.ensureHandleId(ret);
6821
7675
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6844,6 +7698,7 @@ function createNapiModule(options) {
6844
7698
  if (!result)
6845
7699
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6846
7700
  var v = emnapiCtx.handleStore.get(value);
7701
+ result >>>= 0;
6847
7702
  var r;
6848
7703
  if (v.isNumber()) {
6849
7704
  r = 3 /* napi_valuetype.napi_number */;
@@ -6908,6 +7763,7 @@ function createNapiModule(options) {
6908
7763
  if (!result)
6909
7764
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6910
7765
  var handle = emnapiCtx.handleStore.get(value);
7766
+ result >>>= 0;
6911
7767
  v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */;
6912
7768
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6913
7769
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6941,6 +7797,7 @@ function createNapiModule(options) {
6941
7797
  if (handle.isBigInt()) {
6942
7798
  throw new TypeError('Cannot convert a BigInt value to a number');
6943
7799
  }
7800
+ result >>>= 0;
6944
7801
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6945
7802
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
6946
7803
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6975,6 +7832,7 @@ function createNapiModule(options) {
6975
7832
  if (handle.value == null) {
6976
7833
  throw new TypeError('Cannot convert undefined or null to object');
6977
7834
  }
7835
+ result >>>= 0;
6978
7836
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6979
7837
  v = envObject.ensureHandleId(Object(handle.value));
6980
7838
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7009,6 +7867,7 @@ function createNapiModule(options) {
7009
7867
  if (handle.isSymbol()) {
7010
7868
  throw new TypeError('Cannot convert a Symbol value to a string');
7011
7869
  }
7870
+ result >>>= 0;
7012
7871
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7013
7872
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
7014
7873
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7041,6 +7900,7 @@ function createNapiModule(options) {
7041
7900
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7042
7901
  if (!constructor)
7043
7902
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7903
+ result >>>= 0;
7044
7904
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7045
7905
  HEAP_DATA_VIEW.setInt8(result, 0, true);
7046
7906
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -7070,6 +7930,7 @@ function createNapiModule(options) {
7070
7930
  if (!result)
7071
7931
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7072
7932
  var h = emnapiCtx.handleStore.get(value);
7933
+ result >>>= 0;
7073
7934
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7074
7935
  var r = h.isArray() ? 1 : 0;
7075
7936
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7088,6 +7949,7 @@ function createNapiModule(options) {
7088
7949
  if (!result)
7089
7950
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7090
7951
  var h = emnapiCtx.handleStore.get(value);
7952
+ result >>>= 0;
7091
7953
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7092
7954
  var r = h.isArrayBuffer() ? 1 : 0;
7093
7955
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7106,6 +7968,7 @@ function createNapiModule(options) {
7106
7968
  if (!result)
7107
7969
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7108
7970
  var h = emnapiCtx.handleStore.get(value);
7971
+ result >>>= 0;
7109
7972
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7110
7973
  var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
7111
7974
  (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
@@ -7127,6 +7990,7 @@ function createNapiModule(options) {
7127
7990
  if (!result)
7128
7991
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7129
7992
  var h = emnapiCtx.handleStore.get(value);
7993
+ result >>>= 0;
7130
7994
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7131
7995
  var r = h.isDate() ? 1 : 0;
7132
7996
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7145,6 +8009,7 @@ function createNapiModule(options) {
7145
8009
  if (!result)
7146
8010
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7147
8011
  var val = emnapiCtx.handleStore.get(value).value;
8012
+ result >>>= 0;
7148
8013
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7149
8014
  var r = (val instanceof Error) ? 1 : 0;
7150
8015
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7163,6 +8028,7 @@ function createNapiModule(options) {
7163
8028
  if (!result)
7164
8029
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7165
8030
  var h = emnapiCtx.handleStore.get(value);
8031
+ result >>>= 0;
7166
8032
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7167
8033
  var r = h.isTypedArray() ? 1 : 0;
7168
8034
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7181,6 +8047,7 @@ function createNapiModule(options) {
7181
8047
  if (!result)
7182
8048
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7183
8049
  var h = emnapiCtx.handleStore.get(value);
8050
+ result >>>= 0;
7184
8051
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7185
8052
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
7186
8053
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7199,6 +8066,7 @@ function createNapiModule(options) {
7199
8066
  if (!result)
7200
8067
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7201
8068
  var h = emnapiCtx.handleStore.get(value);
8069
+ result >>>= 0;
7202
8070
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7203
8071
  var r = h.isDataView() ? 1 : 0;
7204
8072
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7228,6 +8096,7 @@ function createNapiModule(options) {
7228
8096
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7229
8097
  var lv = emnapiCtx.handleStore.get(lhs).value;
7230
8098
  var rv = emnapiCtx.handleStore.get(rhs).value;
8099
+ result >>>= 0;
7231
8100
  r = (lv === rv) ? 1 : 0;
7232
8101
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7233
8102
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -7282,6 +8151,7 @@ function createNapiModule(options) {
7282
8151
  if (!result)
7283
8152
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7284
8153
  var h = emnapiCtx.handleStore.get(arraybuffer);
8154
+ result >>>= 0;
7285
8155
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7286
8156
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
7287
8157
  try {
@@ -7340,11 +8210,13 @@ function createNapiModule(options) {
7340
8210
  });
7341
8211
  emnapiAWST.init();
7342
8212
  emnapiExternalMemory.init();
8213
+ emnapiExternalSAB.init();
7343
8214
  emnapiString.init();
7344
8215
  emnapiTSFN.init();
7345
8216
  PThread.init();
7346
8217
  napiModule.emnapi.syncMemory = $emnapiSyncMemory;
7347
8218
  napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
8219
+ napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
7348
8220
  function addImports(mod) {
7349
8221
  var keys = Object.keys(mod);
7350
8222
  for (var i = 0; i < keys.length; ++i) {
@@ -7613,12 +8485,7 @@ var MessageHandler = /*#__PURE__*/ (function (_super) {
7613
8485
  try {
7614
8486
  if (type === 'async-worker-init') {
7615
8487
  this.handleAfterLoad(e, function () {
7616
- _this.napiModule.initWorker(payload_1.arg);
7617
- });
7618
- }
7619
- else if (type === 'async-work-execute') {
7620
- this.handleAfterLoad(e, function () {
7621
- _this.napiModule.executeAsyncWork(payload_1.work);
8488
+ _this.napiModule.initWorker(payload_1.arg, payload_1.func);
7622
8489
  });
7623
8490
  }
7624
8491
  }
@@ -7644,6 +8511,6 @@ var MessageHandler = /*#__PURE__*/ (function (_super) {
7644
8511
  // }
7645
8512
  // }
7646
8513
 
7647
- var version = "1.8.1";
8514
+ var version = "1.11.1";
7648
8515
 
7649
8516
  export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version };