@tailwindcss/oxide-wasm32-wasi 4.2.4 → 4.3.0

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 (47) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +854 -307
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +3 -2
  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 -2
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +3 -2
  6. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +892 -313
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +904 -328
  8. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +3 -2
  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 +854 -307
  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 +17 -20
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -0
  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 -0
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -0
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +17 -20
  33. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +17 -20
  34. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -0
  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 +17 -20
  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/package.json +5 -5
  44. package/tailwindcss-oxide.wasi-browser.js +1 -0
  45. package/tailwindcss-oxide.wasi.cjs +1 -1
  46. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  47. package/wasi-worker-browser.mjs +4 -0
@@ -241,6 +241,7 @@
241
241
  this._beforeLoad = options.beforeLoad;
242
242
  }
243
243
  this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console);
244
+ this.threadSpawn = options.threadSpawn;
244
245
  }
245
246
  Object.defineProperty(ThreadManager.prototype, "nextWorkerID", {
246
247
  get: function () { return nextWorkerID; },
@@ -378,6 +379,12 @@
378
379
  _this_1.cleanThread(worker, payload.tid);
379
380
  }
380
381
  }
382
+ else if (type === 'spawn-thread') {
383
+ _this_1.threadSpawn(payload.startArg, payload.errorOrTid);
384
+ }
385
+ else if (type === 'terminate-all-threads') {
386
+ _this_1.terminateAllThreads();
387
+ }
381
388
  }
382
389
  };
383
390
  worker.onmessage = function (e) {
@@ -633,18 +640,6 @@
633
640
  }
634
641
  this.postMessage = postMessage;
635
642
  var wasm64 = Boolean(options.wasm64);
636
- var onMessage = function (e) {
637
- if (e.data.__emnapi__) {
638
- var type = e.data.__emnapi__.type;
639
- var payload = e.data.__emnapi__.payload;
640
- if (type === 'spawn-thread') {
641
- threadSpawn(payload.startArg, payload.errorOrTid);
642
- }
643
- else if (type === 'terminate-all-threads') {
644
- _this_1.terminateAllThreads();
645
- }
646
- }
647
- };
648
643
  var threadSpawn = function (startArg, errorOrTid) {
649
644
  var _a;
650
645
  var EAGAIN = 6;
@@ -667,7 +662,7 @@
667
662
  }
668
663
  if (!isNewABI) {
669
664
  var malloc = _this_1.wasmInstance.exports.malloc;
670
- errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8);
665
+ errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0);
671
666
  if (!errorOrTid) {
672
667
  return -48; /* ENOMEM */
673
668
  }
@@ -705,10 +700,9 @@
705
700
  if (!worker) {
706
701
  throw new Error('failed to get new worker');
707
702
  }
708
- PThread.addMessageEventListener(worker, onMessage);
709
703
  tid = PThread.markId(worker);
710
704
  if (ENVIRONMENT_IS_NODE) {
711
- worker.ref();
705
+ worker.unref();
712
706
  }
713
707
  worker.postMessage(createMessage('start', {
714
708
  tid: tid,
@@ -768,6 +762,9 @@
768
762
  return tid;
769
763
  };
770
764
  this.threadSpawn = threadSpawn;
765
+ if (this.PThread) {
766
+ this.PThread.threadSpawn = threadSpawn;
767
+ }
771
768
  }
772
769
  WASIThreads.prototype.getImportObject = function () {
773
770
  return {
@@ -1061,7 +1058,6 @@
1061
1058
  filename: '',
1062
1059
  childThread: ENVIRONMENT_IS_PTHREAD,
1063
1060
  initWorker: undefined,
1064
- executeAsyncWork: undefined,
1065
1061
  waitThreadStart: waitThreadStart,
1066
1062
  PThread: undefined,
1067
1063
  init: function (options) {
@@ -1262,6 +1258,9 @@
1262
1258
  * @__sig vppp
1263
1259
  */
1264
1260
  function _emnapi_get_node_version(major, minor, patch) {
1261
+ major >>>= 0;
1262
+ minor >>>= 0;
1263
+ patch >>>= 0;
1265
1264
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1266
1265
  var versions = (typeof process === 'object' && process !== null &&
1267
1266
  typeof process.versions === 'object' && process.versions !== null &&
@@ -1327,6 +1326,7 @@
1327
1326
  */
1328
1327
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
1329
1328
  var envObject = emnapiCtx.envStore.get(env);
1329
+ callback >>>= 0;
1330
1330
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
1331
1331
  }
1332
1332
  /**
@@ -1432,9 +1432,20 @@
1432
1432
  return worker;
1433
1433
  }
1434
1434
  /** @__sig vp */
1435
+ function _emnapi_worker_ref(pthreadPtr) {
1436
+ if (ENVIRONMENT_IS_PTHREAD)
1437
+ return;
1438
+ pthreadPtr >>>= 0;
1439
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
1440
+ if (worker && typeof worker.ref === 'function') {
1441
+ worker.ref();
1442
+ }
1443
+ }
1444
+ /** @__sig vp */
1435
1445
  function _emnapi_worker_unref(pthreadPtr) {
1436
1446
  if (ENVIRONMENT_IS_PTHREAD)
1437
1447
  return;
1448
+ pthreadPtr >>>= 0;
1438
1449
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
1439
1450
  if (worker && typeof worker.unref === 'function') {
1440
1451
  worker.unref();
@@ -1542,9 +1553,9 @@
1542
1553
  _emnapi_async_send_js: _emnapi_async_send_js,
1543
1554
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
1544
1555
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
1556
+ _emnapi_worker_ref: _emnapi_worker_ref,
1545
1557
  _emnapi_worker_unref: _emnapi_worker_unref
1546
1558
  });
1547
- /* eslint-disable @typescript-eslint/indent */
1548
1559
  /** @__sig ipjp */
1549
1560
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
1550
1561
  if (!env)
@@ -1552,22 +1563,15 @@
1552
1563
  var envObject = emnapiCtx.envStore.get(env);
1553
1564
  if (!adjusted_value)
1554
1565
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1555
- var change_in_bytes_number = Number(change_in_bytes);
1556
- if (change_in_bytes_number < 0) {
1557
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1558
- }
1559
- var old_size = wasmMemory.buffer.byteLength;
1560
- var new_size = old_size + change_in_bytes_number;
1561
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
1562
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
1563
- return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
1564
- }
1566
+ // eslint-disable-next-line prefer-const
1567
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
1568
+ adjusted_value >>>= 0;
1565
1569
  if (emnapiCtx.feature.supportBigInt) {
1566
1570
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1567
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
1571
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
1568
1572
  }
1569
1573
  else {
1570
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
1574
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
1571
1575
  }
1572
1576
  return envObject.clearLastError();
1573
1577
  }
@@ -1735,6 +1739,7 @@
1735
1739
  var asyncId = asyncContext.asyncId;
1736
1740
  var triggerAsyncId = asyncContext.triggerAsyncId;
1737
1741
  if (result) {
1742
+ result >>>= 0;
1738
1743
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1739
1744
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
1740
1745
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -1778,6 +1783,8 @@
1778
1783
  return;
1779
1784
  var resource = emnapiCtx.handleStore.get(async_resource).value;
1780
1785
  var callback = emnapiCtx.handleStore.get(cb).value;
1786
+ argv >>>= 0;
1787
+ size >>>= 0;
1781
1788
  size = size >>> 0;
1782
1789
  var arr = Array(size);
1783
1790
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -1790,6 +1797,7 @@
1790
1797
  triggerAsyncId: trigger_async_id
1791
1798
  });
1792
1799
  if (result) {
1800
+ result >>>= 0;
1793
1801
  var envObject = emnapiCtx.envStore.get(env);
1794
1802
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1795
1803
  v = envObject.ensureHandleId(ret);
@@ -1820,6 +1828,7 @@
1820
1828
  var low = Number(numberValue & BigInt(0xffffffff));
1821
1829
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1822
1830
  var high = Number(numberValue >> BigInt(32));
1831
+ result >>>= 0;
1823
1832
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1824
1833
  HEAP_DATA_VIEW.setInt32(result, low, true);
1825
1834
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -1830,6 +1839,7 @@
1830
1839
  if (!emnapiNodeBinding) {
1831
1840
  return 9 /* napi_status.napi_generic_failure */;
1832
1841
  }
1842
+ async_context >>>= 0;
1833
1843
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1834
1844
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
1835
1845
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -1878,10 +1888,13 @@
1878
1888
  if (typeof v8func !== 'function') {
1879
1889
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1880
1890
  }
1891
+ async_context >>>= 0;
1881
1892
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1882
1893
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
1883
1894
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
1884
1895
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
1896
+ argv >>>= 0;
1897
+ argc >>>= 0;
1885
1898
  argc = argc >>> 0;
1886
1899
  var arr = Array(argc);
1887
1900
  for (; i < argc; i++) {
@@ -1895,6 +1908,7 @@
1895
1908
  if (ret.status !== 0 /* napi_status.napi_ok */)
1896
1909
  return envObject.setLastError(ret.status);
1897
1910
  if (result) {
1911
+ result >>>= 0;
1898
1912
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1899
1913
  v = envObject.ensureHandleId(ret.value);
1900
1914
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -1932,29 +1946,59 @@
1932
1946
  * ```
1933
1947
  */
1934
1948
  var emnapiTSFN = {
1949
+ _liveSet: {},
1935
1950
  offset: {
1951
+ __size__: 0,
1936
1952
  /* napi_ref */ resource: 0,
1937
- /* double */ async_id: 8,
1938
- /* double */ trigger_async_id: 16,
1939
- /* size_t */ queue_size: 24,
1940
- /* void* */ queue: 1 * 4 + 24,
1941
- /* size_t */ thread_count: 2 * 4 + 24,
1942
- /* bool */ is_closing: 3 * 4 + 24,
1943
- /* atomic_uchar */ dispatch_state: 3 * 4 + 28,
1944
- /* void* */ context: 3 * 4 + 32,
1945
- /* size_t */ max_queue_size: 4 * 4 + 32,
1946
- /* napi_ref */ ref: 5 * 4 + 32,
1947
- /* napi_env */ env: 6 * 4 + 32,
1948
- /* void* */ finalize_data: 7 * 4 + 32,
1949
- /* napi_finalize */ finalize_cb: 8 * 4 + 32,
1950
- /* napi_threadsafe_function_call_js */ call_js_cb: 9 * 4 + 32,
1951
- /* bool */ handles_closing: 10 * 4 + 32,
1952
- /* bool */ async_ref: 10 * 4 + 36,
1953
- /* int32_t */ mutex: 10 * 4 + 40,
1954
- /* int32_t */ cond: 10 * 4 + 44,
1955
- end: 10 * 4 + 48
1953
+ /* double */ async_id: 0,
1954
+ /* double */ trigger_async_id: 0,
1955
+ /* size_t */ queue_size: 0,
1956
+ /* bool */ is_some: 0,
1957
+ /* void* */ queue: 0,
1958
+ // Reuse uv_async_t storage as JS-side wakeup state: pending event + scheduled drain.
1959
+ async_pending: 0,
1960
+ async_u_fd: 0,
1961
+ /* size_t */ thread_count: 0,
1962
+ /* int32_t */ state: 0,
1963
+ /* atomic_uchar */ dispatch_state: 0,
1964
+ /* void* */ context: 0,
1965
+ /* size_t */ max_queue_size: 0,
1966
+ /* napi_ref */ ref: 0,
1967
+ /* napi_env */ env: 0,
1968
+ /* void* */ finalize_data: 0,
1969
+ /* napi_finalize */ finalize_cb: 0,
1970
+ /* napi_threadsafe_function_call_js */ call_js_cb: 0,
1971
+ /* bool */ handles_closing: 0,
1972
+ /* bool */ async_ref: 0,
1973
+ /* int32_t */ mutex: 0,
1974
+ /* int32_t */ cond: 0
1956
1975
  },
1957
1976
  init: function () {
1977
+ emnapiTSFN._liveSet = new Set();
1978
+ emnapiTSFN.offset.__size__ = 184 /* NapiTSFNOffset32.__size__ */;
1979
+ emnapiTSFN.offset.resource = 0 /* NapiTSFNOffset32.async_resource_resource */;
1980
+ emnapiTSFN.offset.async_id = 8 /* NapiTSFNOffset32.async_resource_async_context_async_id */;
1981
+ emnapiTSFN.offset.trigger_async_id = 16 /* NapiTSFNOffset32.async_resource_async_context_trigger_async_id */;
1982
+ emnapiTSFN.offset.queue_size = 60 /* NapiTSFNOffset32.queue_size */;
1983
+ emnapiTSFN.offset.is_some = 24 /* NapiTSFNOffset32.async_resource_is_some */;
1984
+ emnapiTSFN.offset.queue = 64 /* NapiTSFNOffset32.queue */;
1985
+ emnapiTSFN.offset.async_pending = 132 /* NapiTSFNOffset32.async_pending */;
1986
+ emnapiTSFN.offset.async_u_fd = 96 /* NapiTSFNOffset32.async_u_fd */;
1987
+ emnapiTSFN.offset.thread_count = 136 /* NapiTSFNOffset32.thread_count */;
1988
+ emnapiTSFN.offset.state = 140 /* NapiTSFNOffset32.state */;
1989
+ emnapiTSFN.offset.dispatch_state = 144 /* NapiTSFNOffset32.dispatch_state */;
1990
+ emnapiTSFN.offset.context = 148 /* NapiTSFNOffset32.context */;
1991
+ emnapiTSFN.offset.max_queue_size = 152 /* NapiTSFNOffset32.max_queue_size */;
1992
+ emnapiTSFN.offset.ref = 156 /* NapiTSFNOffset32.ref */;
1993
+ emnapiTSFN.offset.env = 160 /* NapiTSFNOffset32.env */;
1994
+ emnapiTSFN.offset.finalize_data = 164 /* NapiTSFNOffset32.finalize_data */;
1995
+ emnapiTSFN.offset.finalize_cb = 168 /* NapiTSFNOffset32.finalize_cb */;
1996
+ emnapiTSFN.offset.call_js_cb = 172 /* NapiTSFNOffset32.call_js_cb */;
1997
+ emnapiTSFN.offset.handles_closing = 176 /* NapiTSFNOffset32.handles_closing */;
1998
+ emnapiTSFN.offset.async_ref = 180 /* NapiTSFNOffset32.async_ref */;
1999
+ emnapiTSFN.offset.mutex = 32 /* NapiTSFNOffset32.mutex */;
2000
+ emnapiTSFN.offset.cond = 56 /* NapiTSFNOffset32.cond */;
2001
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
1958
2002
  if (typeof PThread !== 'undefined') {
1959
2003
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
1960
2004
  PThread.runningWorkers.forEach(emnapiTSFN.addListener);
@@ -1978,7 +2022,10 @@
1978
2022
  var type = __emnapi__.type;
1979
2023
  var payload = __emnapi__.payload;
1980
2024
  if (type === 'tsfn-send') {
1981
- emnapiTSFN.dispatch(payload.tsfn);
2025
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
2026
+ if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
2027
+ emnapiTSFN.enqueue(payload.tsfn);
2028
+ }
1982
2029
  }
1983
2030
  }
1984
2031
  };
@@ -2005,6 +2052,7 @@
2005
2052
  var queue = _malloc(size);
2006
2053
  if (!queue)
2007
2054
  return false;
2055
+ queue >>>= 0;
2008
2056
  new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
2009
2057
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
2010
2058
  return true;
@@ -2012,6 +2060,12 @@
2012
2060
  destroyQueue: function (func) {
2013
2061
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
2014
2062
  if (queue) {
2063
+ var node = emnapiTSFN.loadSizeTypeValue(queue, false);
2064
+ while (node !== 0) {
2065
+ var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
2066
+ _free(node);
2067
+ node = next;
2068
+ }
2015
2069
  _free(queue);
2016
2070
  }
2017
2071
  },
@@ -2024,6 +2078,7 @@
2024
2078
  var node = _malloc(size);
2025
2079
  if (!node)
2026
2080
  throw new Error('OOM');
2081
+ node >>>= 0;
2027
2082
  emnapiTSFN.storeSizeTypeValue(node, data, false);
2028
2083
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
2029
2084
  if (head === 0 && tail === 0) {
@@ -2059,11 +2114,11 @@
2059
2114
  var waitCondition = function () {
2060
2115
  var queueSize = emnapiTSFN.getQueueSize(func);
2061
2116
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
2062
- var isClosing = emnapiTSFN.getIsClosing(func);
2063
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
2117
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0 /* State.kOpen */;
2064
2118
  };
2065
2119
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
2066
- return mutex.execute(function () {
2120
+ var shouldDelete = false;
2121
+ var ret = mutex.execute(function () {
2067
2122
  while (waitCondition()) {
2068
2123
  if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) {
2069
2124
  return 15 /* napi_status.napi_queue_full */;
@@ -2080,21 +2135,25 @@
2080
2135
  }
2081
2136
  cond.wait();
2082
2137
  }
2083
- if (emnapiTSFN.getIsClosing(func)) {
2084
- if (emnapiTSFN.getThreadCount(func) === 0) {
2085
- return 1 /* napi_status.napi_invalid_arg */;
2086
- }
2087
- else {
2088
- emnapiTSFN.subThreadCount(func);
2089
- return 16 /* napi_status.napi_closing */;
2090
- }
2091
- }
2092
- else {
2138
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
2093
2139
  emnapiTSFN.pushQueue(func, data);
2094
2140
  emnapiTSFN.send(func);
2095
2141
  return 0 /* napi_status.napi_ok */;
2096
2142
  }
2143
+ if (emnapiTSFN.getThreadCount(func) === 0) {
2144
+ return 1 /* napi_status.napi_invalid_arg */;
2145
+ }
2146
+ emnapiTSFN.subThreadCount(func);
2147
+ if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
2148
+ return 16 /* napi_status.napi_closing */;
2149
+ }
2150
+ shouldDelete = true;
2151
+ return 16 /* napi_status.napi_closing */;
2097
2152
  });
2153
+ if (shouldDelete) {
2154
+ emnapiTSFN.destroy(func);
2155
+ }
2156
+ return ret;
2098
2157
  },
2099
2158
  getMutex: function (func) {
2100
2159
  var index = func + emnapiTSFN.offset.mutex;
@@ -2104,7 +2163,7 @@
2104
2163
  var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2105
2164
  if (isBrowserMain) {
2106
2165
  while (true) {
2107
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
2166
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
2108
2167
  if (oldValue === 0) {
2109
2168
  return;
2110
2169
  }
@@ -2112,11 +2171,11 @@
2112
2171
  }
2113
2172
  else {
2114
2173
  while (true) {
2115
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
2174
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
2116
2175
  if (oldValue === 0) {
2117
2176
  return;
2118
2177
  }
2119
- Atomics.wait(i32a, 0, 1);
2178
+ Atomics.wait(i32a, 0, 10);
2120
2179
  }
2121
2180
  }
2122
2181
  },
@@ -2125,20 +2184,20 @@
2125
2184
  const again = (): void => { fn() }
2126
2185
  const fn = (): void => {
2127
2186
  const i32a = new Int32Array(wasmMemory.buffer, index, 1)
2128
- const oldValue = Atomics.compareExchange(i32a, 0, 0, 1)
2187
+ const oldValue = Atomics.compareExchange(i32a, 0, 0, 10)
2129
2188
  if (oldValue === 0) {
2130
2189
  resolve()
2131
2190
  return
2132
2191
  }
2133
- (Atomics as any).waitAsync(i32a, 0, 1).value.then(again)
2192
+ (Atomics as any).waitAsync(i32a, 0, 10).value.then(again)
2134
2193
  }
2135
2194
  fn()
2136
2195
  })
2137
2196
  }, */
2138
2197
  unlock: function () {
2139
2198
  var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2140
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
2141
- if (oldValue !== 1) {
2199
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
2200
+ if (oldValue !== 10) {
2142
2201
  throw new Error('Tried to unlock while not holding the mutex');
2143
2202
  }
2144
2203
  Atomics.notify(i32a, 0, 1);
@@ -2202,14 +2261,14 @@
2202
2261
  var offset = emnapiTSFN.offset.queue_size;
2203
2262
  var arr, index;
2204
2263
  arr = new Uint32Array(wasmMemory.buffer);
2205
- index = (func + offset) >> 2;
2264
+ index = (func + offset) >>> 2;
2206
2265
  Atomics.add(arr, index, 1);
2207
2266
  },
2208
2267
  subQueueSize: function (func) {
2209
2268
  var offset = emnapiTSFN.offset.queue_size;
2210
2269
  var arr, index;
2211
2270
  arr = new Uint32Array(wasmMemory.buffer);
2212
- index = (func + offset) >> 2;
2271
+ index = (func + offset) >>> 2;
2213
2272
  Atomics.sub(arr, index, 1);
2214
2273
  },
2215
2274
  getThreadCount: function (func) {
@@ -2219,30 +2278,30 @@
2219
2278
  var offset = emnapiTSFN.offset.thread_count;
2220
2279
  var arr, index;
2221
2280
  arr = new Uint32Array(wasmMemory.buffer);
2222
- index = (func + offset) >> 2;
2281
+ index = (func + offset) >>> 2;
2223
2282
  Atomics.add(arr, index, 1);
2224
2283
  },
2225
2284
  subThreadCount: function (func) {
2226
2285
  var offset = emnapiTSFN.offset.thread_count;
2227
2286
  var arr, index;
2228
2287
  arr = new Uint32Array(wasmMemory.buffer);
2229
- index = (func + offset) >> 2;
2288
+ index = (func + offset) >>> 2;
2230
2289
  Atomics.sub(arr, index, 1);
2231
2290
  },
2232
- getIsClosing: function (func) {
2233
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
2291
+ getState: function (func) {
2292
+ return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2);
2234
2293
  },
2235
- setIsClosing: function (func, value) {
2236
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
2294
+ setState: function (func, value) {
2295
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value);
2237
2296
  },
2238
2297
  getHandlesClosing: function (func) {
2239
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
2298
+ return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing));
2240
2299
  },
2241
2300
  setHandlesClosing: function (func, value) {
2242
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
2301
+ Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value);
2243
2302
  },
2244
2303
  getDispatchState: function (func) {
2245
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
2304
+ return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
2246
2305
  },
2247
2306
  getContext: function (func) {
2248
2307
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -2273,12 +2332,12 @@
2273
2332
  var arr;
2274
2333
  if (unsigned) {
2275
2334
  arr = new Uint32Array(wasmMemory.buffer);
2276
- ret = Atomics.load(arr, offset >> 2);
2335
+ ret = Atomics.load(arr, offset >>> 2);
2277
2336
  return ret;
2278
2337
  }
2279
2338
  else {
2280
2339
  arr = new Int32Array(wasmMemory.buffer);
2281
- ret = Atomics.load(arr, offset >> 2);
2340
+ ret = Atomics.load(arr, offset >>> 2);
2282
2341
  return ret;
2283
2342
  }
2284
2343
  },
@@ -2286,54 +2345,82 @@
2286
2345
  var arr;
2287
2346
  if (unsigned) {
2288
2347
  arr = new Uint32Array(wasmMemory.buffer);
2289
- Atomics.store(arr, offset >> 2, value);
2348
+ Atomics.store(arr, offset >>> 2, value);
2290
2349
  return undefined;
2291
2350
  }
2292
2351
  else {
2293
2352
  arr = new Int32Array(wasmMemory.buffer);
2294
- Atomics.store(arr, offset >> 2, value >>> 0);
2353
+ Atomics.store(arr, offset >>> 2, value >>> 0);
2295
2354
  return undefined;
2296
2355
  }
2297
2356
  },
2357
+ releaseResources: function (func) {
2358
+ if (emnapiTSFN.getState(func) !== 2 /* State.kClosed */) {
2359
+ emnapiTSFN.setState(func, 2 /* State.kClosed */);
2360
+ var env = emnapiTSFN.getEnv(func);
2361
+ var envObject = emnapiCtx.envStore.get(env);
2362
+ var ref = emnapiTSFN.getRef(func);
2363
+ if (ref) {
2364
+ emnapiCtx.refStore.get(ref).dispose();
2365
+ }
2366
+ var resource = emnapiTSFN.getResource(func);
2367
+ emnapiCtx.refStore.get(resource).dispose();
2368
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2369
+ HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
2370
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
2371
+ envObject.unref();
2372
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
2373
+ var arr = new Uint32Array(wasmMemory.buffer);
2374
+ if (Atomics.load(arr, asyncRefOffset) > 0) {
2375
+ Atomics.store(arr, asyncRefOffset, 0);
2376
+ emnapiCtx.decreaseWaitingRequestCounter();
2377
+ }
2378
+ if (emnapiNodeBinding) {
2379
+ var view = new DataView(wasmMemory.buffer);
2380
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
2381
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
2382
+ _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
2383
+ }
2384
+ }
2385
+ },
2298
2386
  destroy: function (func) {
2387
+ emnapiTSFN._liveSet.delete(func);
2299
2388
  emnapiTSFN.destroyQueue(func);
2300
- var env = emnapiTSFN.getEnv(func);
2301
- var envObject = emnapiCtx.envStore.get(env);
2302
- var ref = emnapiTSFN.getRef(func);
2303
- if (ref) {
2304
- emnapiCtx.refStore.get(ref).dispose();
2305
- }
2306
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
2307
- envObject.unref();
2308
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
2309
- var arr = new Int32Array(wasmMemory.buffer);
2310
- if (Atomics.load(arr, asyncRefOffset)) {
2311
- Atomics.store(arr, asyncRefOffset, 0);
2312
- emnapiCtx.decreaseWaitingRequestCounter();
2313
- }
2314
- var resource = emnapiTSFN.getResource(func);
2315
- emnapiCtx.refStore.get(resource).dispose();
2316
- if (emnapiNodeBinding) {
2317
- var view = new DataView(wasmMemory.buffer);
2318
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
2319
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
2320
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
2321
- }
2389
+ emnapiTSFN.releaseResources(func);
2322
2390
  _free(func);
2323
2391
  },
2324
- emptyQueueAndDelete: function (func) {
2392
+ emptyQueue: function (func) {
2393
+ var drainQueue = [];
2394
+ emnapiTSFN.getMutex(func).execute(function () {
2395
+ while (emnapiTSFN.getQueueSize(func) > 0) {
2396
+ drainQueue.push(emnapiTSFN.shiftQueue(func));
2397
+ }
2398
+ });
2325
2399
  var callJsCb = emnapiTSFN.getCallJSCb(func);
2326
2400
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2327
2401
  var context = emnapiTSFN.getContext(func);
2328
2402
  var data;
2329
- while (emnapiTSFN.getQueueSize(func) > 0) {
2403
+ for (var i = 0; i < drainQueue.length; i++) {
2330
2404
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2331
- data = emnapiTSFN.shiftQueue(func);
2405
+ data = drainQueue[i];
2332
2406
  if (callJsCb) {
2333
2407
  (wasmTable.get(callJsCb))(0, 0, context, data);
2334
2408
  }
2335
2409
  }
2336
- emnapiTSFN.destroy(func);
2410
+ },
2411
+ maybeDelete: function (func) {
2412
+ var shouldDelete = false;
2413
+ emnapiTSFN.getMutex(func).execute(function () {
2414
+ if (emnapiTSFN.getThreadCount(func) > 0) {
2415
+ emnapiTSFN.releaseResources(func);
2416
+ }
2417
+ else {
2418
+ shouldDelete = true;
2419
+ }
2420
+ });
2421
+ if (shouldDelete) {
2422
+ emnapiTSFN.destroy(func);
2423
+ }
2337
2424
  },
2338
2425
  finalize: function (func) {
2339
2426
  var env = emnapiTSFN.getEnv(func);
@@ -2348,6 +2435,7 @@
2348
2435
  envObject.callFinalizerInternal(0, finalize, data, context);
2349
2436
  };
2350
2437
  try {
2438
+ emnapiTSFN.emptyQueue(func);
2351
2439
  if (finalize) {
2352
2440
  if (emnapiNodeBinding) {
2353
2441
  var resource = emnapiTSFN.getResource(func);
@@ -2365,7 +2453,7 @@
2365
2453
  f();
2366
2454
  }
2367
2455
  }
2368
- emnapiTSFN.emptyQueueAndDelete(func);
2456
+ emnapiTSFN.maybeDelete(func);
2369
2457
  }
2370
2458
  finally {
2371
2459
  emnapiCtx.closeScope(envObject);
@@ -2381,7 +2469,7 @@
2381
2469
  try {
2382
2470
  if (set_closing) {
2383
2471
  emnapiTSFN.getMutex(func).execute(function () {
2384
- emnapiTSFN.setIsClosing(func, 1);
2472
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
2385
2473
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
2386
2474
  emnapiTSFN.getCond(func).signal();
2387
2475
  }
@@ -2391,6 +2479,7 @@
2391
2479
  return;
2392
2480
  }
2393
2481
  emnapiTSFN.setHandlesClosing(func, 1);
2482
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
2394
2483
  emnapiCtx.feature.setImmediate(function () {
2395
2484
  emnapiTSFN.finalize(func);
2396
2485
  });
@@ -2407,10 +2496,7 @@
2407
2496
  var mutex = emnapiTSFN.getMutex(func);
2408
2497
  var cond = emnapiTSFN.getCond(func);
2409
2498
  mutex.execute(function () {
2410
- if (emnapiTSFN.getIsClosing(func)) {
2411
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
2412
- }
2413
- else {
2499
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
2414
2500
  var size = emnapiTSFN.getQueueSize(func);
2415
2501
  if (size > 0) {
2416
2502
  data = emnapiTSFN.shiftQueue(func);
@@ -2423,7 +2509,7 @@
2423
2509
  }
2424
2510
  if (size === 0) {
2425
2511
  if (emnapiTSFN.getThreadCount(func) === 0) {
2426
- emnapiTSFN.setIsClosing(func, 1);
2512
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
2427
2513
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
2428
2514
  cond.signal();
2429
2515
  }
@@ -2434,6 +2520,9 @@
2434
2520
  has_more = true;
2435
2521
  }
2436
2522
  }
2523
+ else {
2524
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
2525
+ }
2437
2526
  });
2438
2527
  if (popped_value) {
2439
2528
  var env = emnapiTSFN.getEnv(func);
@@ -2482,7 +2571,7 @@
2482
2571
  var has_more = true;
2483
2572
  var iterations_left = 1000;
2484
2573
  var ui32a = new Uint32Array(wasmMemory.buffer);
2485
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
2574
+ var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2;
2486
2575
  while (has_more && --iterations_left !== 0) {
2487
2576
  Atomics.store(ui32a, index, 1);
2488
2577
  has_more = emnapiTSFN.dispatchOne(func);
@@ -2494,25 +2583,85 @@
2494
2583
  emnapiTSFN.send(func);
2495
2584
  }
2496
2585
  },
2497
- send: function (func) {
2498
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
2499
- if ((current_state & 1) === 1) {
2586
+ enqueue: function (func) {
2587
+ // `pending` means a worker thread has requested a wakeup that has not
2588
+ // been drained on the main thread yet.
2589
+ var pending = func + emnapiTSFN.offset.async_pending;
2590
+ // `scheduled` prevents queueing the same main-thread drain chain more than
2591
+ // once while a previous wakeup is still in flight.
2592
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
2593
+ var i32a = new Int32Array(wasmMemory.buffer);
2594
+ if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
2500
2595
  return;
2501
2596
  }
2502
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
2503
- postMessage({
2504
- __emnapi__: {
2505
- type: 'tsfn-send',
2506
- payload: {
2507
- tsfn: func
2597
+ // Match uv_async_send-style coalescing in JS: the first turn represents
2598
+ // the wakeup reaching the main thread, and the second turn performs the
2599
+ // actual TSFN drain after nearby Send/Signal calls have had a chance to
2600
+ // collapse into the shared AsyncProgressWorker state.
2601
+ emnapiCtx.feature.setImmediate(function () {
2602
+ if (!emnapiTSFN._liveSet.has(func)) {
2603
+ return;
2604
+ }
2605
+ if (Atomics.load(i32a, pending >>> 2) === 0) {
2606
+ Atomics.store(i32a, scheduled >>> 2, 0);
2607
+ return;
2608
+ }
2609
+ emnapiCtx.feature.setImmediate(function () {
2610
+ try {
2611
+ // Consume the coalesced wakeup once, then let dispatch() observe any
2612
+ // queue mutations through dispatch_state like the C implementation.
2613
+ if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
2614
+ return;
2615
+ }
2616
+ // After destroy(), the func address is freed. Skip dispatch
2617
+ // to avoid use-after-free (JS-side lifecycle check).
2618
+ if (!emnapiTSFN._liveSet.has(func)) {
2619
+ return;
2620
+ }
2621
+ emnapiTSFN.dispatch(func);
2622
+ }
2623
+ finally {
2624
+ // Allow a later wakeup to schedule a new drain chain. If another
2625
+ // worker-thread send raced with this drain, enqueue one more turn.
2626
+ if (emnapiTSFN._liveSet.has(func)) {
2627
+ Atomics.store(i32a, scheduled >>> 2, 0);
2628
+ if (Atomics.load(i32a, pending >>> 2) !== 0) {
2629
+ emnapiTSFN.enqueue(func);
2630
+ }
2508
2631
  }
2509
2632
  }
2510
2633
  });
2634
+ });
2635
+ },
2636
+ send: function (func) {
2637
+ var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1);
2638
+ if ((current_state & 1) === 1) {
2639
+ return;
2511
2640
  }
2512
- else {
2513
- emnapiCtx.feature.setImmediate(function () {
2514
- emnapiTSFN.dispatch(func);
2515
- });
2641
+ var pendng = func + emnapiTSFN.offset.async_pending;
2642
+ // A wakeup is already pending, so this send only needs to leave the queued
2643
+ // work in the TSFN queue and let the existing drain pick it up.
2644
+ if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
2645
+ return;
2646
+ }
2647
+ if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) {
2648
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
2649
+ // Worker threads only post a wakeup token. Main-thread draining is
2650
+ // serialized by enqueue() once the message is received.
2651
+ postMessage({
2652
+ __emnapi__: {
2653
+ type: 'tsfn-send',
2654
+ payload: {
2655
+ tsfn: func
2656
+ }
2657
+ }
2658
+ });
2659
+ }
2660
+ else {
2661
+ // On the main thread we can skip the cross-thread hop and schedule the
2662
+ // coalesced drain chain directly.
2663
+ emnapiTSFN.enqueue(func);
2664
+ }
2516
2665
  }
2517
2666
  }
2518
2667
  };
@@ -2525,6 +2674,13 @@
2525
2674
  envObject.checkGCAccess();
2526
2675
  if (!async_resource_name)
2527
2676
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2677
+ max_queue_size >>>= 0;
2678
+ initial_thread_count >>>= 0;
2679
+ env >>>= 0;
2680
+ thread_finalize_data >>>= 0;
2681
+ thread_finalize_cb >>>= 0;
2682
+ context >>>= 0;
2683
+ call_js_cb >>>= 0;
2528
2684
  max_queue_size = max_queue_size >>> 0;
2529
2685
  initial_thread_count = initial_thread_count >>> 0;
2530
2686
  if (initial_thread_count === 0) {
@@ -2533,6 +2689,7 @@
2533
2689
  if (!result)
2534
2690
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2535
2691
  var ref = 0;
2692
+ func >>>= 0;
2536
2693
  if (!func) {
2537
2694
  if (!call_js_cb)
2538
2695
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -2564,22 +2721,25 @@
2564
2721
  asyncResourceName = String(asyncResourceName);
2565
2722
  var resource_name = envObject.ensureHandleId(asyncResourceName);
2566
2723
  // tsfn create
2567
- var sizeofTSFN = emnapiTSFN.offset.end;
2724
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
2725
+ // eslint-disable-next-line prefer-const
2568
2726
  var tsfn = _malloc(sizeofTSFN);
2569
2727
  if (!tsfn)
2570
2728
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
2729
+ tsfn >>>= 0;
2571
2730
  new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
2572
2731
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */);
2573
2732
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2574
2733
  var resource_ = resourceRef.id;
2575
2734
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2576
- HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
2735
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
2577
2736
  if (!emnapiTSFN.initQueue(tsfn)) {
2578
2737
  _free(tsfn);
2579
2738
  resourceRef.dispose();
2580
2739
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
2581
2740
  }
2582
2741
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
2742
+ HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
2583
2743
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
2584
2744
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
2585
2745
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
@@ -2589,9 +2749,11 @@
2589
2749
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
2590
2750
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
2591
2751
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
2752
+ emnapiTSFN._liveSet.add(tsfn);
2592
2753
  envObject.ref();
2593
2754
  emnapiCtx.increaseWaitingRequestCounter();
2594
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
2755
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
2756
+ result >>>= 0;
2595
2757
  HEAP_DATA_VIEW.setUint32(result, tsfn, true);
2596
2758
  return envObject.clearLastError();
2597
2759
  }
@@ -2601,6 +2763,8 @@
2601
2763
  abort();
2602
2764
  return 1 /* napi_status.napi_invalid_arg */;
2603
2765
  }
2766
+ func >>>= 0;
2767
+ result >>>= 0;
2604
2768
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2605
2769
  var context = emnapiTSFN.getContext(func);
2606
2770
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2613,6 +2777,8 @@
2613
2777
  abort();
2614
2778
  return 1 /* napi_status.napi_invalid_arg */;
2615
2779
  }
2780
+ func >>>= 0;
2781
+ data >>>= 0;
2616
2782
  return emnapiTSFN.push(func, data, mode);
2617
2783
  }
2618
2784
  /** @__sig ip */
@@ -2621,13 +2787,14 @@
2621
2787
  abort();
2622
2788
  return 1 /* napi_status.napi_invalid_arg */;
2623
2789
  }
2790
+ func >>>= 0;
2624
2791
  var mutex = emnapiTSFN.getMutex(func);
2625
2792
  return mutex.execute(function () {
2626
- if (emnapiTSFN.getIsClosing(func)) {
2627
- return 16 /* napi_status.napi_closing */;
2793
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
2794
+ emnapiTSFN.addThreadCount(func);
2795
+ return 0 /* napi_status.napi_ok */;
2628
2796
  }
2629
- emnapiTSFN.addThreadCount(func);
2630
- return 0 /* napi_status.napi_ok */;
2797
+ return 16 /* napi_status.napi_closing */;
2631
2798
  });
2632
2799
  }
2633
2800
  /** @__sig ipi */
@@ -2636,26 +2803,36 @@
2636
2803
  abort();
2637
2804
  return 1 /* napi_status.napi_invalid_arg */;
2638
2805
  }
2806
+ func >>>= 0;
2639
2807
  var mutex = emnapiTSFN.getMutex(func);
2640
2808
  var cond = emnapiTSFN.getCond(func);
2641
- return mutex.execute(function () {
2809
+ var shouldDelete = false;
2810
+ var ret = mutex.execute(function () {
2642
2811
  if (emnapiTSFN.getThreadCount(func) === 0) {
2643
2812
  return 1 /* napi_status.napi_invalid_arg */;
2644
2813
  }
2645
2814
  emnapiTSFN.subThreadCount(func);
2646
2815
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
2647
- var isClosing = emnapiTSFN.getIsClosing(func);
2648
- if (!isClosing) {
2649
- var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0;
2650
- emnapiTSFN.setIsClosing(func, isClosingValue);
2651
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
2816
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
2817
+ if (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
2818
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
2819
+ }
2820
+ if (emnapiTSFN.getState(func) === 1 /* State.kClosing */ && emnapiTSFN.getMaxQueueSize(func) > 0) {
2652
2821
  cond.signal();
2653
2822
  }
2654
2823
  emnapiTSFN.send(func);
2655
2824
  }
2656
2825
  }
2826
+ if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
2827
+ return 0 /* napi_status.napi_ok */;
2828
+ }
2829
+ shouldDelete = true;
2657
2830
  return 0 /* napi_status.napi_ok */;
2658
2831
  });
2832
+ if (shouldDelete) {
2833
+ emnapiTSFN.destroy(func);
2834
+ }
2835
+ return ret;
2659
2836
  }
2660
2837
  /** @__sig ipp */
2661
2838
  function napi_unref_threadsafe_function(env, func) {
@@ -2663,11 +2840,15 @@
2663
2840
  abort();
2664
2841
  return 1 /* napi_status.napi_invalid_arg */;
2665
2842
  }
2666
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
2667
- var arr = new Int32Array(wasmMemory.buffer);
2668
- if (Atomics.load(arr, asyncRefOffset)) {
2669
- Atomics.store(arr, asyncRefOffset, 0);
2670
- emnapiCtx.decreaseWaitingRequestCounter();
2843
+ func >>>= 0;
2844
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
2845
+ var arr = new Uint32Array(wasmMemory.buffer);
2846
+ var currentValue = Atomics.load(arr, asyncRefOffset);
2847
+ if (currentValue > 0) {
2848
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
2849
+ if (currentValue === 1) {
2850
+ emnapiCtx.decreaseWaitingRequestCounter();
2851
+ }
2671
2852
  }
2672
2853
  return 0 /* napi_status.napi_ok */;
2673
2854
  }
@@ -2677,34 +2858,57 @@
2677
2858
  abort();
2678
2859
  return 1 /* napi_status.napi_invalid_arg */;
2679
2860
  }
2680
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
2681
- var arr = new Int32Array(wasmMemory.buffer);
2682
- if (!Atomics.load(arr, asyncRefOffset)) {
2683
- Atomics.store(arr, asyncRefOffset, 1);
2861
+ func >>>= 0;
2862
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
2863
+ var arr = new Uint32Array(wasmMemory.buffer);
2864
+ var currentValue = Atomics.load(arr, asyncRefOffset);
2865
+ if (!currentValue) {
2684
2866
  emnapiCtx.increaseWaitingRequestCounter();
2685
2867
  }
2868
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
2686
2869
  return 0 /* napi_status.napi_ok */;
2687
2870
  }
2688
2871
  var emnapiAWMT = {
2689
- unusedWorkers: [],
2690
- runningWorkers: [],
2691
- workQueue: [],
2872
+ pool: [],
2692
2873
  workerReady: null,
2874
+ globalAddress: 0,
2875
+ globalOffset: {
2876
+ idle_threads: 0,
2877
+ q: 1 * 4,
2878
+ next: 1 * 4,
2879
+ prev: 2 * 4,
2880
+ mutex: 3 * 4,
2881
+ cond: 4 * 4,
2882
+ exit_message: 5 * 4,
2883
+ end: 7 * 4
2884
+ },
2693
2885
  offset: {
2694
2886
  /* napi_ref */ resource: 0,
2695
2887
  /* double */ async_id: 8,
2696
2888
  /* double */ trigger_async_id: 16,
2697
2889
  /* napi_env */ env: 24,
2698
- /* void* */ data: 1 * 4 + 24,
2699
- /* napi_async_execute_callback */ execute: 2 * 4 + 24,
2700
- /* napi_async_complete_callback */ complete: 3 * 4 + 24,
2701
- end: 4 * 4 + 24
2890
+ /* int32_t */ status: 1 * 4 + 24, // 0 for pending, 1 for cancelled, 2 for completed
2891
+ queue: 2 * 4 + 24,
2892
+ queue_next: 2 * 4 + 24,
2893
+ queue_prev: 3 * 4 + 24,
2894
+ /* void* */ data: 4 * 4 + 24,
2895
+ /* napi_async_execute_callback */ execute: 5 * 4 + 24,
2896
+ /* napi_async_complete_callback */ complete: 6 * 4 + 24,
2897
+ end: 7 * 4 + 24
2702
2898
  },
2703
2899
  init: function () {
2704
- emnapiAWMT.unusedWorkers = [];
2705
- emnapiAWMT.runningWorkers = [];
2706
- emnapiAWMT.workQueue = [];
2900
+ emnapiAWMT.pool = [];
2707
2901
  emnapiAWMT.workerReady = null;
2902
+ if (typeof PThread !== 'undefined') {
2903
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
2904
+ PThread.runningWorkers.forEach(emnapiAWMT.addListener);
2905
+ var __original_getNewWorker_1 = PThread.getNewWorker;
2906
+ PThread.getNewWorker = function () {
2907
+ var r = __original_getNewWorker_1.apply(this, arguments);
2908
+ emnapiAWMT.addListener(r);
2909
+ return r;
2910
+ };
2911
+ }
2708
2912
  },
2709
2913
  addListener: function (worker) {
2710
2914
  if (!worker)
@@ -2718,18 +2922,8 @@
2718
2922
  var type = __emnapi__.type;
2719
2923
  var payload = __emnapi__.payload;
2720
2924
  if (type === 'async-work-complete') {
2721
- emnapiCtx.decreaseWaitingRequestCounter();
2722
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
2723
- emnapiAWMT.unusedWorkers.push(worker);
2724
- emnapiAWMT.checkIdleWorker();
2725
2925
  emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */);
2726
2926
  }
2727
- else if (type === 'async-work-queue') {
2728
- emnapiAWMT.scheduleWork(payload.work);
2729
- }
2730
- else if (type === 'async-work-cancel') {
2731
- emnapiAWMT.cancelWork(payload.work);
2732
- }
2733
2927
  }
2734
2928
  };
2735
2929
  var dispose = function () {
@@ -2750,6 +2944,26 @@
2750
2944
  }
2751
2945
  return true;
2752
2946
  },
2947
+ initGlobal: function () {
2948
+ if (!emnapiAWMT.globalAddress) {
2949
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
2950
+ emnapiAWMT.globalAddress >>>= 0;
2951
+ var size = emnapiAWMT.globalOffset.end;
2952
+ var addr = emnapiAWMT.globalAddress;
2953
+ new Uint8Array(wasmMemory.buffer, addr, size).fill(0);
2954
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
2955
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
2956
+ }
2957
+ },
2958
+ terminateWorkers: function () {
2959
+ emnapiAWMT.pool.forEach(function (w) {
2960
+ var _a, _b;
2961
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
2962
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
2963
+ w.terminate();
2964
+ });
2965
+ emnapiAWMT.pool.length = 0;
2966
+ },
2753
2967
  initWorkers: function (n) {
2754
2968
  if (ENVIRONMENT_IS_PTHREAD) {
2755
2969
  // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
@@ -2757,137 +2971,200 @@
2757
2971
  }
2758
2972
  if (emnapiAWMT.workerReady)
2759
2973
  return emnapiAWMT.workerReady;
2760
- if (typeof onCreateWorker !== 'function') {
2761
- throw new TypeError('`options.onCreateWorker` is not a function');
2762
- }
2763
- var promises = [];
2764
- var args = [];
2765
2974
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2766
2975
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2767
2976
  }
2977
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
2978
+ var args = [];
2979
+ emnapiAWMT.initGlobal();
2768
2980
  for (var i = 0; i < n; ++i) {
2769
- args.push(wasmInstance.exports.emnapi_async_worker_create());
2981
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
2770
2982
  }
2771
- try {
2772
- var _loop_1 = function (i) {
2773
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2774
- var p = PThread.loadWasmModuleToWorker(worker);
2775
- emnapiAWMT.addListener(worker);
2776
- promises.push(p.then(function () {
2777
- if (typeof worker.unref === 'function') {
2778
- worker.unref();
2779
- }
2780
- }));
2781
- emnapiAWMT.unusedWorkers.push(worker);
2782
- var arg = args[i];
2783
- worker.threadBlockBase = arg;
2784
- worker.postMessage({
2785
- __emnapi__: {
2786
- type: 'async-worker-init',
2787
- payload: { arg: arg }
2788
- }
2789
- });
2790
- };
2791
- for (var i = 0; i < n; ++i) {
2792
- _loop_1(i);
2983
+ var promises = args.map(function (index) {
2984
+ if (index === 0) {
2985
+ return Promise.reject(new Error('Failed to create async worker'));
2793
2986
  }
2794
- }
2795
- catch (err) {
2796
- for (var i = 0; i < n; ++i) {
2797
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2798
- var arg = args[i];
2799
- _free(arg);
2987
+ var worker;
2988
+ if (index < 0) {
2989
+ worker = emnapiAWMT.pool[-index - 1];
2990
+ if (worker)
2991
+ return worker.whenLoaded;
2800
2992
  }
2801
- throw err;
2802
- }
2993
+ index >>>= 0;
2994
+ var view = new DataView(wasmMemory.buffer);
2995
+ var tidOffset = 20;
2996
+ var tid = view.getInt32(index + tidOffset, true);
2997
+ worker = PThread.pthreads[tid];
2998
+ return worker.whenLoaded;
2999
+ });
2803
3000
  emnapiAWMT.workerReady = Promise.all(promises);
2804
3001
  return emnapiAWMT.workerReady;
2805
3002
  },
2806
- checkIdleWorker: function () {
2807
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
2808
- var worker = emnapiAWMT.unusedWorkers.shift();
2809
- var work = emnapiAWMT.workQueue.shift();
2810
- emnapiAWMT.runningWorkers.push(worker);
2811
- worker.postMessage({
2812
- __emnapi__: {
2813
- type: 'async-work-execute',
2814
- payload: { work: work }
2815
- }
2816
- });
2817
- }
2818
- },
2819
3003
  getResource: function (work) {
2820
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
3004
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3005
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
2821
3006
  },
2822
3007
  getExecute: function (work) {
2823
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
3008
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3009
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
2824
3010
  },
2825
3011
  getComplete: function (work) {
2826
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
3012
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3013
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
2827
3014
  },
2828
3015
  getEnv: function (work) {
2829
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
3016
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3017
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
2830
3018
  },
2831
3019
  getData: function (work) {
2832
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
3020
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3021
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
3022
+ },
3023
+ getMutex: function () {
3024
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
3025
+ var mutex = {
3026
+ lock: function () {
3027
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
3028
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
3029
+ if (isBrowserMain) {
3030
+ while (true) {
3031
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
3032
+ if (oldValue === 0) {
3033
+ return;
3034
+ }
3035
+ }
3036
+ }
3037
+ else {
3038
+ while (true) {
3039
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
3040
+ if (oldValue === 0) {
3041
+ return;
3042
+ }
3043
+ Atomics.wait(i32a, 0, 10);
3044
+ }
3045
+ }
3046
+ },
3047
+ unlock: function () {
3048
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
3049
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
3050
+ if (oldValue !== 10) {
3051
+ throw new Error('Tried to unlock while not holding the mutex');
3052
+ }
3053
+ Atomics.notify(i32a, 0, 1);
3054
+ },
3055
+ execute: function (fn) {
3056
+ mutex.lock();
3057
+ try {
3058
+ return fn();
3059
+ }
3060
+ finally {
3061
+ mutex.unlock();
3062
+ }
3063
+ }
3064
+ };
3065
+ return mutex;
3066
+ },
3067
+ getCond: function () {
3068
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
3069
+ var mutex = emnapiAWMT.getMutex();
3070
+ var cond = {
3071
+ wait: function () {
3072
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
3073
+ var value = Atomics.load(i32a, 0);
3074
+ mutex.unlock();
3075
+ Atomics.wait(i32a, 0, value);
3076
+ mutex.lock();
3077
+ },
3078
+ signal: function () {
3079
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
3080
+ Atomics.add(i32a, 0, 1);
3081
+ Atomics.notify(i32a, 0, 1);
3082
+ }
3083
+ };
3084
+ return cond;
3085
+ },
3086
+ queueInit: function (q) {
3087
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3088
+ HEAP_DATA_VIEW.setUint32(q, q, true);
3089
+ HEAP_DATA_VIEW.setUint32(q + 4, q, true);
3090
+ },
3091
+ queueInsertTail: function (h, q) {
3092
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3093
+ HEAP_DATA_VIEW.setUint32(q, h, true);
3094
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3095
+ var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
3096
+ HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
3097
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3098
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
3099
+ HEAP_DATA_VIEW.setUint32(qprev, q, true);
3100
+ HEAP_DATA_VIEW.setUint32(h + 4, q, true);
3101
+ },
3102
+ queueRemove: function (q) {
3103
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3104
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3105
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
3106
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3107
+ var qnext = HEAP_DATA_VIEW.getUint32(q, true);
3108
+ HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
3109
+ HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
3110
+ },
3111
+ queueEmpty: function (q) {
3112
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3113
+ // eslint-disable-next-line eqeqeq
3114
+ return q == HEAP_DATA_VIEW.getUint32(q, true);
2833
3115
  },
2834
3116
  scheduleWork: function (work) {
2835
3117
  var _a;
2836
- if (ENVIRONMENT_IS_PTHREAD) {
2837
- var postMessage_1 = napiModule.postMessage;
2838
- postMessage_1({
2839
- __emnapi__: {
2840
- type: 'async-work-queue',
2841
- payload: { work: work }
2842
- }
3118
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
3119
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
3120
+ emnapiAWMT.workerReady.ready = true;
3121
+ }).catch(function (err) {
3122
+ emnapiAWMT.workerReady = null;
3123
+ throw err;
2843
3124
  });
2844
- return;
2845
3125
  }
2846
3126
  emnapiCtx.increaseWaitingRequestCounter();
2847
- emnapiAWMT.workQueue.push(work);
2848
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
2849
- emnapiAWMT.checkIdleWorker();
3127
+ var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
3128
+ Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */);
3129
+ var mutex = emnapiAWMT.getMutex();
3130
+ var cond = emnapiAWMT.getCond();
3131
+ mutex.lock();
3132
+ try {
3133
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
2850
3134
  }
2851
- else {
2852
- var fail = function (err) {
2853
- emnapiCtx.decreaseWaitingRequestCounter();
2854
- throw err;
2855
- };
2856
- try {
2857
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
2858
- emnapiAWMT.workerReady.ready = true;
2859
- emnapiAWMT.checkIdleWorker();
2860
- }, fail);
2861
- }
2862
- catch (err) {
2863
- fail(err);
2864
- }
3135
+ catch (err) {
3136
+ emnapiCtx.decreaseWaitingRequestCounter();
3137
+ mutex.unlock();
3138
+ throw err;
2865
3139
  }
3140
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3141
+ if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
3142
+ cond.signal();
3143
+ }
3144
+ mutex.unlock();
2866
3145
  },
2867
3146
  cancelWork: function (work) {
2868
- if (ENVIRONMENT_IS_PTHREAD) {
2869
- var postMessage_2 = napiModule.postMessage;
2870
- postMessage_2({
2871
- __emnapi__: {
2872
- type: 'async-work-cancel',
2873
- payload: { work: work }
2874
- }
2875
- });
2876
- return 0 /* napi_status.napi_ok */;
3147
+ var cancelled = false;
3148
+ emnapiAWMT.getMutex().execute(function () {
3149
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3150
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */;
3151
+ if (cancelled) {
3152
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
3153
+ }
3154
+ });
3155
+ if (!cancelled) {
3156
+ return 9 /* napi_status.napi_generic_failure */;
2877
3157
  }
2878
- var index = emnapiAWMT.workQueue.indexOf(work);
2879
- if (index !== -1) {
2880
- emnapiAWMT.workQueue.splice(index, 1);
2881
- emnapiCtx.feature.setImmediate(function () {
2882
- emnapiCtx.decreaseWaitingRequestCounter();
2883
- emnapiAWMT.checkIdleWorker();
2884
- emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
2885
- });
2886
- return 0 /* napi_status.napi_ok */;
3158
+ if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0 /* AsyncWorkStatus.Pending */, 1 /* AsyncWorkStatus.Cancelled */) !== 0 /* AsyncWorkStatus.Pending */) {
3159
+ return 9 /* napi_status.napi_generic_failure */;
2887
3160
  }
2888
- return 9 /* napi_status.napi_generic_failure */;
3161
+ emnapiCtx.feature.setImmediate(function () {
3162
+ emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
3163
+ });
3164
+ return 0 /* napi_status.napi_ok */;
2889
3165
  },
2890
3166
  callComplete: function (work, status) {
3167
+ emnapiCtx.decreaseWaitingRequestCounter();
2891
3168
  var complete = emnapiAWMT.getComplete(work);
2892
3169
  var env = emnapiAWMT.getEnv(work);
2893
3170
  var data = emnapiAWMT.getData(work);
@@ -2922,6 +3199,7 @@
2922
3199
  }
2923
3200
  }
2924
3201
  };
3202
+ emnapiAWMT.init();
2925
3203
  /** @__sig ippppppp */
2926
3204
  var napi_create_async_work = singleThreadAsyncWork
2927
3205
  ? function (env, resource, resource_name, execute, complete, data, result) {
@@ -2946,6 +3224,7 @@
2946
3224
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
2947
3225
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2948
3226
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
3227
+ result >>>= 0;
2949
3228
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2950
3229
  HEAP_DATA_VIEW.setUint32(result, id, true);
2951
3230
  return envObject.clearLastError();
@@ -2973,6 +3252,7 @@
2973
3252
  var aw = _malloc(sizeofAW);
2974
3253
  if (!aw)
2975
3254
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
3255
+ aw >>>= 0;
2976
3256
  new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
2977
3257
  var s = envObject.ensureHandleId(resourceObject);
2978
3258
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */);
@@ -2985,6 +3265,8 @@
2985
3265
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
2986
3266
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
2987
3267
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
3268
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
3269
+ result >>>= 0;
2988
3270
  HEAP_DATA_VIEW.setUint32(result, aw, true);
2989
3271
  return envObject.clearLastError();
2990
3272
  };
@@ -2998,6 +3280,7 @@
2998
3280
  envObject.checkGCAccess();
2999
3281
  if (!work)
3000
3282
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3283
+ work >>>= 0;
3001
3284
  emnapiAWST.remove(work);
3002
3285
  return envObject.clearLastError();
3003
3286
  }
@@ -3009,6 +3292,7 @@
3009
3292
  envObject.checkGCAccess();
3010
3293
  if (!work)
3011
3294
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3295
+ work >>>= 0;
3012
3296
  var resource = emnapiAWMT.getResource(work);
3013
3297
  emnapiCtx.refStore.get(resource).dispose();
3014
3298
  if (emnapiNodeBinding) {
@@ -3028,6 +3312,7 @@
3028
3312
  var envObject = emnapiCtx.envStore.get(env);
3029
3313
  if (!work)
3030
3314
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3315
+ work >>>= 0;
3031
3316
  emnapiAWST.queue(work);
3032
3317
  return envObject.clearLastError();
3033
3318
  }
@@ -3037,6 +3322,7 @@
3037
3322
  var envObject = emnapiCtx.envStore.get(env);
3038
3323
  if (!work)
3039
3324
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3325
+ work >>>= 0;
3040
3326
  emnapiAWMT.scheduleWork(work);
3041
3327
  return envObject.clearLastError();
3042
3328
  };
@@ -3048,6 +3334,7 @@
3048
3334
  var envObject = emnapiCtx.envStore.get(env);
3049
3335
  if (!work)
3050
3336
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3337
+ work >>>= 0;
3051
3338
  var status = emnapiAWST.cancel(work);
3052
3339
  if (status === 0 /* napi_status.napi_ok */)
3053
3340
  return envObject.clearLastError();
@@ -3059,42 +3346,128 @@
3059
3346
  var envObject = emnapiCtx.envStore.get(env);
3060
3347
  if (!work)
3061
3348
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3349
+ work >>>= 0;
3062
3350
  var status = emnapiAWMT.cancelWork(work);
3063
3351
  if (status === 0 /* napi_status.napi_ok */)
3064
3352
  return envObject.clearLastError();
3065
3353
  return envObject.setLastError(status);
3066
3354
  };
3067
- function initWorker(startArg) {
3355
+ /** @__sig pp */
3356
+ function _emnapi_async_worker(globalAddress) {
3357
+ globalAddress >>>= 0;
3358
+ emnapiAWMT.globalAddress = globalAddress;
3359
+ var mutex = emnapiAWMT.getMutex();
3360
+ var cond = emnapiAWMT.getCond();
3361
+ mutex.lock();
3362
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
3363
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
3364
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
3365
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3366
+ for (;;) {
3367
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
3368
+ Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
3369
+ cond.wait();
3370
+ Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
3371
+ }
3372
+ var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
3373
+ if (q === exitMessageAddr) {
3374
+ cond.signal();
3375
+ mutex.unlock();
3376
+ break;
3377
+ }
3378
+ var work = q - emnapiAWMT.offset.queue;
3379
+ emnapiAWMT.queueRemove(q);
3380
+ emnapiAWMT.queueInit(q);
3381
+ mutex.unlock();
3382
+ var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
3383
+ if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) {
3384
+ abort('unreachable');
3385
+ }
3386
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3387
+ var execute = emnapiAWMT.getExecute(work);
3388
+ var env = emnapiAWMT.getEnv(work);
3389
+ var data = emnapiAWMT.getData(work);
3390
+ (wasmTable.get(execute))(env, data);
3391
+ Atomics.store(statusBuffer, 0, 2 /* AsyncWorkStatus.Completed */);
3392
+ var postMessage_1 = napiModule.postMessage;
3393
+ postMessage_1({
3394
+ __emnapi__: {
3395
+ type: 'async-work-complete',
3396
+ payload: { work: work }
3397
+ }
3398
+ });
3399
+ mutex.lock();
3400
+ }
3401
+ return 0;
3402
+ }
3403
+ /** @__sig ipp */
3404
+ function _emnapi_spawn_worker(f, globalAddress) {
3405
+ if (typeof onCreateWorker !== 'function') {
3406
+ throw new TypeError('`options.onCreateWorker` is not a function');
3407
+ }
3408
+ var promises = [];
3409
+ var args = [];
3410
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
3411
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
3412
+ }
3413
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
3414
+ var handleError = function (e) {
3415
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
3416
+ emnapiAWMT.terminateWorkers();
3417
+ }
3418
+ };
3419
+ var ret;
3420
+ try {
3421
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
3422
+ var p = PThread.loadWasmModuleToWorker(worker_1);
3423
+ if (ENVIRONMENT_IS_NODE) {
3424
+ worker_1.on('error', handleError);
3425
+ }
3426
+ else {
3427
+ worker_1.addEventListener('error', handleError, false);
3428
+ }
3429
+ emnapiAWMT.addListener(worker_1);
3430
+ emnapiTSFN.addListener(worker_1);
3431
+ promises.push(p.then(function () {
3432
+ if (typeof worker_1.unref === 'function') {
3433
+ worker_1.unref();
3434
+ }
3435
+ }));
3436
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
3437
+ var arg = args[0];
3438
+ worker_1.threadBlockBase = arg;
3439
+ worker_1.postMessage({
3440
+ __emnapi__: {
3441
+ type: 'async-worker-init',
3442
+ payload: { arg: arg, func: [f, globalAddress] }
3443
+ }
3444
+ });
3445
+ }
3446
+ catch (err) {
3447
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3448
+ var arg = args[0];
3449
+ _free(arg);
3450
+ throw err;
3451
+ }
3452
+ return ret;
3453
+ }
3454
+ function initWorker(startArg, func) {
3068
3455
  if (napiModule.childThread) {
3069
3456
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
3070
3457
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
3071
3458
  }
3072
3459
  wasmInstance.exports.emnapi_async_worker_init(startArg);
3460
+ (wasmTable.get(func[0]))(func[1]);
3073
3461
  }
3074
3462
  else {
3075
3463
  throw new Error('startThread is only available in child threads');
3076
3464
  }
3077
3465
  }
3078
- function executeAsyncWork(work) {
3079
- if (!ENVIRONMENT_IS_PTHREAD)
3080
- return;
3081
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
3082
- var execute = emnapiAWMT.getExecute(work);
3083
- var env = emnapiAWMT.getEnv(work);
3084
- var data = emnapiAWMT.getData(work);
3085
- (wasmTable.get(execute))(env, data);
3086
- var postMessage = napiModule.postMessage;
3087
- postMessage({
3088
- __emnapi__: {
3089
- type: 'async-work-complete',
3090
- payload: { work: work }
3091
- }
3092
- });
3093
- }
3094
3466
  napiModule.initWorker = initWorker;
3095
- napiModule.executeAsyncWork = executeAsyncWork;
3096
3467
  var asyncWorkMod = /*#__PURE__*/ Object.freeze({
3097
3468
  __proto__: null,
3469
+ _emnapi_async_worker: _emnapi_async_worker,
3470
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
3098
3471
  napi_cancel_async_work: napi_cancel_async_work,
3099
3472
  napi_create_async_work: napi_create_async_work,
3100
3473
  napi_delete_async_work: napi_delete_async_work,
@@ -3164,6 +3537,7 @@
3164
3537
  var pointer = _malloc(arrayBuffer.byteLength);
3165
3538
  if (!pointer)
3166
3539
  throw new Error('Out of memory');
3540
+ pointer >>>= 0;
3167
3541
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
3168
3542
  info.address = pointer;
3169
3543
  info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
@@ -3185,8 +3559,7 @@
3185
3559
  }
3186
3560
  return view;
3187
3561
  }
3188
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
3189
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
3562
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
3190
3563
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
3191
3564
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
3192
3565
  var Ctor = info.Ctor;
@@ -3326,7 +3699,7 @@
3326
3699
  ptr >>>= 0;
3327
3700
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
3328
3701
  var end = ptr;
3329
- if (length === -1) {
3702
+ if (length === -1 || length === 4294967295) {
3330
3703
  for (; HEAPU8[end];)
3331
3704
  ++end;
3332
3705
  }
@@ -3417,12 +3790,12 @@
3417
3790
  return '';
3418
3791
  ptr >>>= 0;
3419
3792
  var end = ptr;
3420
- if (length === -1) {
3421
- var idx = end >> 1;
3793
+ if (length === -1 || length === 4294967295) {
3794
+ var idx = end >>> 1;
3422
3795
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
3423
3796
  while (HEAPU16[idx])
3424
3797
  ++idx;
3425
- end = idx << 1;
3798
+ end = (idx << 1) >>> 0;
3426
3799
  }
3427
3800
  else {
3428
3801
  end = ptr + (length >>> 0) * 2;
@@ -3455,12 +3828,13 @@
3455
3828
  return outPtr - startPtr;
3456
3829
  },
3457
3830
  newString: function (env, str, length, result, stringMaker) {
3831
+ length >>>= 0;
3458
3832
  if (!env)
3459
3833
  return 1 /* napi_status.napi_invalid_arg */;
3460
3834
  // @ts-expect-error
3461
3835
  var envObject = emnapiCtx.envStore.get(env);
3462
3836
  envObject.checkGCAccess();
3463
- var autoLength = length === -1;
3837
+ var autoLength = length === -1 || length === 4294967295;
3464
3838
  var sizelength = length >>> 0;
3465
3839
  if (length !== 0) {
3466
3840
  if (!str)
@@ -3470,7 +3844,9 @@
3470
3844
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3471
3845
  if (!(autoLength || (sizelength <= 2147483647)))
3472
3846
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3847
+ str >>>= 0;
3473
3848
  var strValue = stringMaker(str, autoLength, sizelength);
3849
+ result >>>= 0;
3474
3850
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3475
3851
  var value = emnapiCtx.addToCurrentScope(strValue).id;
3476
3852
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3478,12 +3854,13 @@
3478
3854
  return envObject.clearLastError();
3479
3855
  },
3480
3856
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
3857
+ length >>>= 0;
3481
3858
  if (!env)
3482
3859
  return 1 /* napi_status.napi_invalid_arg */;
3483
3860
  // @ts-expect-error
3484
3861
  var envObject = emnapiCtx.envStore.get(env);
3485
3862
  envObject.checkGCAccess();
3486
- var autoLength = length === -1;
3863
+ var autoLength = length === -1 || length === 4294967295;
3487
3864
  var sizelength = length >>> 0;
3488
3865
  if (length !== 0) {
3489
3866
  if (!str)
@@ -3529,6 +3906,7 @@
3529
3906
  if (!handle.isArray()) {
3530
3907
  return envObject.setLastError(8 /* napi_status.napi_array_expected */);
3531
3908
  }
3909
+ result >>>= 0;
3532
3910
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3533
3911
  var v = handle.value.length >>> 0;
3534
3912
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3557,11 +3935,13 @@
3557
3935
  }
3558
3936
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3559
3937
  if (data) {
3938
+ data >>>= 0;
3560
3939
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3561
3940
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
3562
3941
  HEAP_DATA_VIEW.setUint32(data, p, true);
3563
3942
  }
3564
3943
  if (byte_length) {
3944
+ byte_length >>>= 0;
3565
3945
  HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
3566
3946
  }
3567
3947
  return envObject.clearLastError();
@@ -3634,6 +4014,7 @@
3634
4014
  catch (_) {
3635
4015
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
3636
4016
  }
4017
+ result >>>= 0;
3637
4018
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3638
4019
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
3639
4020
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3663,6 +4044,7 @@
3663
4044
  var v = handle.value;
3664
4045
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3665
4046
  if (type) {
4047
+ type >>>= 0;
3666
4048
  var t = void 0;
3667
4049
  if (v instanceof Int8Array) {
3668
4050
  t = 0 /* napi_typedarray_type.napi_int8_array */;
@@ -3706,24 +4088,27 @@
3706
4088
  }
3707
4089
  HEAP_DATA_VIEW.setInt32(type, t, true);
3708
4090
  }
4091
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
3709
4092
  if (length) {
4093
+ length >>>= 0;
3710
4094
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
3711
4095
  }
3712
- var buffer;
3713
4096
  if (data || arraybuffer) {
3714
- buffer = v.buffer;
3715
4097
  if (data) {
4098
+ data >>>= 0;
3716
4099
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3717
4100
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
3718
4101
  HEAP_DATA_VIEW.setUint32(data, p, true);
3719
4102
  }
3720
4103
  if (arraybuffer) {
4104
+ arraybuffer >>>= 0;
3721
4105
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3722
- var ab = envObject.ensureHandleId(buffer);
4106
+ var ab = envObject.ensureHandleId(v.buffer);
3723
4107
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
3724
4108
  }
3725
4109
  }
3726
4110
  if (byte_offset) {
4111
+ byte_offset >>>= 0;
3727
4112
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
3728
4113
  }
3729
4114
  return envObject.clearLastError();
@@ -3762,26 +4147,28 @@
3762
4147
  if (!handle.isDataView()) {
3763
4148
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3764
4149
  }
3765
- var v = handle.value;
4150
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
3766
4151
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3767
4152
  if (byte_length) {
4153
+ byte_length >>>= 0;
3768
4154
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
3769
4155
  }
3770
- var buffer;
3771
4156
  if (data || arraybuffer) {
3772
- buffer = v.buffer;
3773
4157
  if (data) {
4158
+ data >>>= 0;
3774
4159
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3775
4160
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
3776
4161
  HEAP_DATA_VIEW.setUint32(data, p, true);
3777
4162
  }
3778
4163
  if (arraybuffer) {
4164
+ arraybuffer >>>= 0;
3779
4165
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3780
- var ab = envObject.ensureHandleId(buffer);
4166
+ var ab = envObject.ensureHandleId(v.buffer);
3781
4167
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
3782
4168
  }
3783
4169
  }
3784
4170
  if (byte_offset) {
4171
+ byte_offset >>>= 0;
3785
4172
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
3786
4173
  }
3787
4174
  return envObject.clearLastError();
@@ -3811,6 +4198,7 @@
3811
4198
  if (!handle.isDate()) {
3812
4199
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3813
4200
  }
4201
+ result >>>= 0;
3814
4202
  v = handle.value.valueOf();
3815
4203
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3816
4204
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -3838,6 +4226,7 @@
3838
4226
  if (typeof handle.value !== 'boolean') {
3839
4227
  return envObject.setLastError(7 /* napi_status.napi_boolean_expected */);
3840
4228
  }
4229
+ result >>>= 0;
3841
4230
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3842
4231
  var r = handle.value ? 1 : 0;
3843
4232
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3861,6 +4250,7 @@
3861
4250
  if (typeof handle.value !== 'number') {
3862
4251
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3863
4252
  }
4253
+ result >>>= 0;
3864
4254
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3865
4255
  var r = handle.value;
3866
4256
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3890,6 +4280,8 @@
3890
4280
  if (typeof numberValue !== 'bigint') {
3891
4281
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3892
4282
  }
4283
+ lossless >>>= 0;
4284
+ result >>>= 0;
3893
4285
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3894
4286
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
3895
4287
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -3932,6 +4324,8 @@
3932
4324
  if (typeof numberValue !== 'bigint') {
3933
4325
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3934
4326
  }
4327
+ lossless >>>= 0;
4328
+ result >>>= 0;
3935
4329
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3936
4330
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
3937
4331
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -3969,8 +4363,12 @@
3969
4363
  return envObject.setLastError(17 /* napi_status.napi_bigint_expected */);
3970
4364
  }
3971
4365
  var isMinus = handle.value < BigInt(0);
4366
+ sign_bit >>>= 0;
4367
+ words >>>= 0;
4368
+ word_count >>>= 0;
3972
4369
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3973
4370
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
4371
+ word_count_int >>>= 0;
3974
4372
  var wordCount = 0;
3975
4373
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
3976
4374
  while (bigintValue !== BigInt(0)) {
@@ -4024,6 +4422,7 @@
4024
4422
  if (!handle.isExternal()) {
4025
4423
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4026
4424
  }
4425
+ result >>>= 0;
4027
4426
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4028
4427
  var p = handle.data();
4029
4428
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4047,6 +4446,7 @@
4047
4446
  if (typeof handle.value !== 'number') {
4048
4447
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
4049
4448
  }
4449
+ result >>>= 0;
4050
4450
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4051
4451
  var v = new Int32Array([handle.value])[0];
4052
4452
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4071,6 +4471,7 @@
4071
4471
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
4072
4472
  }
4073
4473
  var numberValue = handle.value;
4474
+ result >>>= 0;
4074
4475
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4075
4476
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
4076
4477
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -4100,6 +4501,9 @@
4100
4501
  envObject.checkGCAccess();
4101
4502
  if (!value)
4102
4503
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4504
+ result >>>= 0;
4505
+ buf >>>= 0;
4506
+ buf_size >>>= 0;
4103
4507
  buf_size = buf_size >>> 0;
4104
4508
  var handle = emnapiCtx.handleStore.get(value);
4105
4509
  if (typeof handle.value !== 'string') {
@@ -4142,6 +4546,9 @@
4142
4546
  envObject.checkGCAccess();
4143
4547
  if (!value)
4144
4548
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4549
+ result >>>= 0;
4550
+ buf >>>= 0;
4551
+ buf_size >>>= 0;
4145
4552
  buf_size = buf_size >>> 0;
4146
4553
  var handle = emnapiCtx.handleStore.get(value);
4147
4554
  if (typeof handle.value !== 'string') {
@@ -4178,6 +4585,9 @@
4178
4585
  envObject.checkGCAccess();
4179
4586
  if (!value)
4180
4587
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4588
+ result >>>= 0;
4589
+ buf >>>= 0;
4590
+ buf_size >>>= 0;
4181
4591
  buf_size = buf_size >>> 0;
4182
4592
  var handle = emnapiCtx.handleStore.get(value);
4183
4593
  if (typeof handle.value !== 'string') {
@@ -4218,6 +4628,7 @@
4218
4628
  if (typeof handle.value !== 'number') {
4219
4629
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
4220
4630
  }
4631
+ result >>>= 0;
4221
4632
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4222
4633
  var v = new Uint32Array([handle.value])[0];
4223
4634
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4258,6 +4669,7 @@
4258
4669
  envObject.checkGCAccess();
4259
4670
  if (!result)
4260
4671
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4672
+ result >>>= 0;
4261
4673
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4262
4674
  var v = emnapiCtx.addToCurrentScope(value).id;
4263
4675
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4275,6 +4687,7 @@
4275
4687
  envObject.checkGCAccess();
4276
4688
  if (!result)
4277
4689
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4690
+ result >>>= 0;
4278
4691
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4279
4692
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
4280
4693
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4296,6 +4709,7 @@
4296
4709
  value = Number(low);
4297
4710
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4298
4711
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4712
+ high >>>= 0;
4299
4713
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4300
4714
  HEAP_DATA_VIEW.setUint32(high, v1, true);
4301
4715
  return envObject.clearLastError();
@@ -4311,6 +4725,7 @@
4311
4725
  envObject.checkGCAccess();
4312
4726
  if (!result)
4313
4727
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4728
+ result >>>= 0;
4314
4729
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4315
4730
  var v = emnapiCtx.addToCurrentScope(value).id;
4316
4731
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4411,6 +4826,7 @@
4411
4826
  value = low;
4412
4827
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4413
4828
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4829
+ high >>>= 0;
4414
4830
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4415
4831
  HEAP_DATA_VIEW.setUint32(high, v1, true);
4416
4832
  return envObject.clearLastError();
@@ -4433,6 +4849,7 @@
4433
4849
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
4434
4850
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4435
4851
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4852
+ high >>>= 0;
4436
4853
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4437
4854
  HEAP_DATA_VIEW.setUint32(high, v1, true);
4438
4855
  return envObject.clearLastError();
@@ -4459,6 +4876,8 @@
4459
4876
  }
4460
4877
  if (!result)
4461
4878
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4879
+ words >>>= 0;
4880
+ word_count >>>= 0;
4462
4881
  word_count = word_count >>> 0;
4463
4882
  if (word_count > 2147483647) {
4464
4883
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -4475,6 +4894,7 @@
4475
4894
  value += wordi << BigInt(64 * i);
4476
4895
  }
4477
4896
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
4897
+ result >>>= 0;
4478
4898
  v = emnapiCtx.addToCurrentScope(value).id;
4479
4899
  HEAP_DATA_VIEW.setUint32(result, v, true);
4480
4900
  return envObject.getReturnStatus();
@@ -4503,6 +4923,7 @@
4503
4923
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
4504
4924
  });
4505
4925
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
4926
+ utf8name >>>= 0;
4506
4927
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
4507
4928
  var f;
4508
4929
  var napiCallback = (wasmTable.get(cb));
@@ -4645,6 +5066,7 @@
4645
5066
  if (!finalize_cb)
4646
5067
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4647
5068
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint);
5069
+ result >>>= 0;
4648
5070
  referenceId = reference.id;
4649
5071
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4650
5072
  HEAP_DATA_VIEW.setUint32(result, referenceId, true);
@@ -4695,6 +5117,7 @@
4695
5117
  if (!ref)
4696
5118
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4697
5119
  if (result) {
5120
+ result >>>= 0;
4698
5121
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4699
5122
  data = ref.data();
4700
5123
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4738,12 +5161,15 @@
4738
5161
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4739
5162
  if (!constructor)
4740
5163
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5164
+ length >>>= 0;
5165
+ properties >>>= 0;
5166
+ property_count >>>= 0;
4741
5167
  property_count = property_count >>> 0;
4742
5168
  if (property_count > 0) {
4743
5169
  if (!properties)
4744
5170
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4745
5171
  }
4746
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
5172
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
4747
5173
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4748
5174
  }
4749
5175
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -4762,6 +5188,7 @@
4762
5188
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
4763
5189
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
4764
5190
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
5191
+ attributes >>>= 0;
4765
5192
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
4766
5193
  if (utf8Name) {
4767
5194
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -4784,6 +5211,7 @@
4784
5211
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4785
5212
  var valueHandle = emnapiCtx.addToCurrentScope(F);
4786
5213
  valueHandleId = valueHandle.id;
5214
+ result >>>= 0;
4787
5215
  HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
4788
5216
  return envObject.getReturnStatus();
4789
5217
  }
@@ -4832,6 +5260,7 @@
4832
5260
  if (!(value.isObject() || value.isFunction())) {
4833
5261
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
4834
5262
  }
5263
+ type_tag >>>= 0;
4835
5264
  if (!type_tag) {
4836
5265
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
4837
5266
  }
@@ -4881,6 +5310,7 @@
4881
5310
  }
4882
5311
  var binding = envObject.getObjectBinding(value.value);
4883
5312
  if (binding.tag !== null) {
5313
+ type_tag >>>= 0;
4884
5314
  var tag = binding.tag;
4885
5315
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
4886
5316
  ret = (tag[0] === typeTag[0] &&
@@ -4891,6 +5321,7 @@
4891
5321
  else {
4892
5322
  ret = false;
4893
5323
  }
5324
+ result >>>= 0;
4894
5325
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4895
5326
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
4896
5327
  return envObject.getReturnStatus();
@@ -4922,8 +5353,12 @@
4922
5353
  }
4923
5354
  var handle = handleResult.handle;
4924
5355
  var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
5356
+ finalize_data >>>= 0;
5357
+ finalize_cb >>>= 0;
5358
+ finalize_hint >>>= 0;
4925
5359
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
4926
5360
  if (result) {
5361
+ result >>>= 0;
4927
5362
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4928
5363
  var referenceId = reference.id;
4929
5364
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4971,6 +5406,9 @@
4971
5406
  try {
4972
5407
  if (!result)
4973
5408
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5409
+ byte_length >>>= 0;
5410
+ external_data >>>= 0;
5411
+ result >>>= 0;
4974
5412
  byte_length = byte_length >>> 0;
4975
5413
  if (!external_data) {
4976
5414
  byte_length = 0;
@@ -5090,7 +5528,7 @@
5090
5528
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
5091
5529
  if (!pointer)
5092
5530
  throw new Error('Unknown ArrayBuffer address');
5093
- if (typeof len !== 'number' || len === -1) {
5531
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
5094
5532
  len = arrayBufferOrView.byteLength - offset;
5095
5533
  }
5096
5534
  len = len >>> 0;
@@ -5112,7 +5550,7 @@
5112
5550
  var pointer = viewPointerInfo.address;
5113
5551
  if (!pointer)
5114
5552
  throw new Error('Unknown ArrayBuffer address');
5115
- if (typeof len !== 'number' || len === -1) {
5553
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
5116
5554
  len = latestView.byteLength - offset;
5117
5555
  }
5118
5556
  len = len >>> 0;
@@ -5149,6 +5587,9 @@
5149
5587
  try {
5150
5588
  if (!arraybuffer_or_view)
5151
5589
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5590
+ arraybuffer_or_view >>>= 0;
5591
+ offset >>>= 0;
5592
+ len >>>= 0;
5152
5593
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5153
5594
  var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
5154
5595
  var handle = envObject.ctx.handleStore.get(handleId);
@@ -5157,6 +5598,7 @@
5157
5598
  }
5158
5599
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
5159
5600
  if (handle.value !== ret) {
5601
+ arraybuffer_or_view >>>= 0;
5160
5602
  v = envObject.ensureHandleId(ret);
5161
5603
  HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
5162
5604
  }
@@ -5215,13 +5657,16 @@
5215
5657
  p = info.address;
5216
5658
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5217
5659
  if (address) {
5660
+ address >>>= 0;
5218
5661
  HEAP_DATA_VIEW.setUint32(address, p, true);
5219
5662
  }
5220
5663
  if (ownership) {
5664
+ ownership >>>= 0;
5221
5665
  ownershipOut = info.ownership;
5222
5666
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
5223
5667
  }
5224
5668
  if (runtime_allocated) {
5669
+ runtime_allocated >>>= 0;
5225
5670
  runtimeAllocated = info.runtimeAllocated;
5226
5671
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
5227
5672
  }
@@ -5251,6 +5696,7 @@
5251
5696
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5252
5697
  var versions = runtimeVersion.split('.')
5253
5698
  .map(function (n) { return Number(n); });
5699
+ version >>>= 0;
5254
5700
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5255
5701
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
5256
5702
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
@@ -5280,6 +5726,7 @@
5280
5726
  envObject.checkGCAccess();
5281
5727
  if (!result)
5282
5728
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5729
+ result >>>= 0;
5283
5730
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5284
5731
  var value = emnapiCtx.addToCurrentScope([]).id;
5285
5732
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5297,6 +5744,8 @@
5297
5744
  envObject.checkGCAccess();
5298
5745
  if (!result)
5299
5746
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5747
+ length >>>= 0;
5748
+ result >>>= 0;
5300
5749
  length = length >>> 0;
5301
5750
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5302
5751
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
@@ -5305,9 +5754,11 @@
5305
5754
  return envObject.clearLastError();
5306
5755
  }
5307
5756
  function emnapiCreateArrayBuffer(byte_length, data, shared) {
5757
+ byte_length >>>= 0;
5308
5758
  byte_length = byte_length >>> 0;
5309
5759
  var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
5310
5760
  if (data) {
5761
+ data >>>= 0;
5311
5762
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5312
5763
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
5313
5764
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5334,6 +5785,7 @@
5334
5785
  try {
5335
5786
  if (!result)
5336
5787
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5788
+ result >>>= 0;
5337
5789
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
5338
5790
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
5339
5791
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5364,6 +5816,7 @@
5364
5816
  try {
5365
5817
  if (!result)
5366
5818
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5819
+ result >>>= 0;
5367
5820
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
5368
5821
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
5369
5822
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5394,6 +5847,7 @@
5394
5847
  try {
5395
5848
  if (!result)
5396
5849
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5850
+ result >>>= 0;
5397
5851
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5398
5852
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
5399
5853
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5431,6 +5885,7 @@
5431
5885
  if (finalize_cb) {
5432
5886
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint);
5433
5887
  }
5888
+ result >>>= 0;
5434
5889
  value = externalHandle.id;
5435
5890
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5436
5891
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5460,6 +5915,9 @@
5460
5915
  try {
5461
5916
  if (!result)
5462
5917
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5918
+ byte_length >>>= 0;
5919
+ external_data >>>= 0;
5920
+ result >>>= 0;
5463
5921
  byte_length = byte_length >>> 0;
5464
5922
  if (!external_data) {
5465
5923
  byte_length = 0;
@@ -5521,6 +5979,7 @@
5521
5979
  envObject.checkGCAccess();
5522
5980
  if (!result)
5523
5981
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5982
+ result >>>= 0;
5524
5983
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5525
5984
  var value = emnapiCtx.addToCurrentScope({}).id;
5526
5985
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5530,7 +5989,7 @@
5530
5989
  /**
5531
5990
  * @__sig ipppppp
5532
5991
  */
5533
- function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
5992
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
5534
5993
  if (!env)
5535
5994
  return 1 /* napi_status.napi_invalid_arg */;
5536
5995
  // @ts-expect-error
@@ -5538,6 +5997,7 @@
5538
5997
  envObject.checkGCAccess();
5539
5998
  if (!result)
5540
5999
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6000
+ property_count >>>= 0;
5541
6001
  property_count = property_count >>> 0;
5542
6002
  if (property_count > 0) {
5543
6003
  if (!property_names)
@@ -5549,6 +6009,8 @@
5549
6009
  ? emnapiCtx.handleStore.get(prototype_or_null).value
5550
6010
  : null;
5551
6011
  var properties = {};
6012
+ property_names >>>= 0;
6013
+ property_values >>>= 0;
5552
6014
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5553
6015
  for (var i = 0; i < property_count; i++) {
5554
6016
  var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
@@ -5570,6 +6032,7 @@
5570
6032
  }
5571
6033
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5572
6034
  var value = emnapiCtx.addToCurrentScope(obj).id;
6035
+ result >>>= 0;
5573
6036
  HEAP_DATA_VIEW.setUint32(result, value, true);
5574
6037
  return envObject.clearLastError();
5575
6038
  }
@@ -5584,6 +6047,7 @@
5584
6047
  envObject.checkGCAccess();
5585
6048
  if (!result)
5586
6049
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6050
+ result >>>= 0;
5587
6051
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5588
6052
  if (!description) {
5589
6053
  // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars
@@ -5628,6 +6092,8 @@
5628
6092
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5629
6093
  }
5630
6094
  var buffer = handle.value;
6095
+ byte_offset >>>= 0;
6096
+ length >>>= 0;
5631
6097
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
5632
6098
  var _a;
5633
6099
  byte_offset = byte_offset >>> 0;
@@ -5658,6 +6124,7 @@
5658
6124
  });
5659
6125
  }
5660
6126
  }
6127
+ result >>>= 0;
5661
6128
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5662
6129
  value = emnapiCtx.addToCurrentScope(out).id;
5663
6130
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5726,7 +6193,9 @@
5726
6193
  if (!Buffer) {
5727
6194
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
5728
6195
  }
6196
+ result >>>= 0;
5729
6197
  var buffer = void 0;
6198
+ size >>>= 0;
5730
6199
  size = size >>> 0;
5731
6200
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5732
6201
  if (!data || (size === 0)) {
@@ -5738,6 +6207,7 @@
5738
6207
  pointer = _malloc(size);
5739
6208
  if (!pointer)
5740
6209
  throw new Error('Out of memory');
6210
+ pointer >>>= 0;
5741
6211
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
5742
6212
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
5743
6213
  var viewDescriptor = {
@@ -5751,6 +6221,7 @@
5751
6221
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
5752
6222
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
5753
6223
  HEAP_DATA_VIEW.setUint32(result, value, true);
6224
+ data >>>= 0;
5754
6225
  HEAP_DATA_VIEW.setUint32(data, pointer, true);
5755
6226
  }
5756
6227
  return envObject.getReturnStatus();
@@ -5785,8 +6256,11 @@
5785
6256
  }
5786
6257
  var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
5787
6258
  var buffer = Buffer.from(arrayBuffer);
6259
+ data >>>= 0;
6260
+ length >>>= 0;
5788
6261
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
5789
6262
  value = emnapiCtx.addToCurrentScope(buffer).id;
6263
+ result >>>= 0;
5790
6264
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5791
6265
  HEAP_DATA_VIEW.setUint32(result, value, true);
5792
6266
  return envObject.getReturnStatus();
@@ -5823,6 +6297,8 @@
5823
6297
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5824
6298
  if (!result)
5825
6299
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6300
+ byte_offset >>>= 0;
6301
+ byte_length >>>= 0;
5826
6302
  byte_offset = byte_offset >>> 0;
5827
6303
  byte_length = byte_length >>> 0;
5828
6304
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -5851,6 +6327,7 @@
5851
6327
  });
5852
6328
  }
5853
6329
  }
6330
+ result >>>= 0;
5854
6331
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5855
6332
  value = emnapiCtx.addToCurrentScope(out).id;
5856
6333
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5881,6 +6358,8 @@
5881
6358
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5882
6359
  if (!result)
5883
6360
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6361
+ byte_length >>>= 0;
6362
+ byte_offset >>>= 0;
5884
6363
  byte_length = byte_length >>> 0;
5885
6364
  byte_offset = byte_offset >>> 0;
5886
6365
  var value = emnapiCtx.handleStore.get(arraybuffer).value;
@@ -5902,6 +6381,7 @@
5902
6381
  });
5903
6382
  }
5904
6383
  }
6384
+ result >>>= 0;
5905
6385
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5906
6386
  var v = emnapiCtx.addToCurrentScope(dataview).id;
5907
6387
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5931,7 +6411,10 @@
5931
6411
  envObject.checkGCAccess();
5932
6412
  if (!result)
5933
6413
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5934
- var autoLength = length === -1;
6414
+ length >>>= 0;
6415
+ utf8description >>>= 0;
6416
+ result >>>= 0;
6417
+ var autoLength = length === -1 || length === 4294967295;
5935
6418
  var sizelength = length >>> 0;
5936
6419
  if (length !== 0) {
5937
6420
  if (!utf8description)
@@ -5960,10 +6443,10 @@
5960
6443
  napi_create_external_arraybuffer: napi_create_external_arraybuffer,
5961
6444
  napi_create_external_buffer: napi_create_external_buffer,
5962
6445
  napi_create_object: napi_create_object,
5963
- napi_create_object_with_properties: napi_create_object_with_properties,
5964
6446
  napi_create_symbol: napi_create_symbol,
5965
6447
  napi_create_typedarray: napi_create_typedarray,
5966
6448
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
6449
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
5967
6450
  node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
5968
6451
  node_api_symbol_for: node_api_symbol_for
5969
6452
  });
@@ -5976,6 +6459,7 @@
5976
6459
  envObject.checkGCAccess();
5977
6460
  if (!result)
5978
6461
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6462
+ result >>>= 0;
5979
6463
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5980
6464
  var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */;
5981
6465
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5991,6 +6475,7 @@
5991
6475
  envObject.checkGCAccess();
5992
6476
  if (!result)
5993
6477
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6478
+ result >>>= 0;
5994
6479
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5995
6480
  var value = 5 /* GlobalHandle.GLOBAL */;
5996
6481
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6006,6 +6491,7 @@
6006
6491
  envObject.checkGCAccess();
6007
6492
  if (!result)
6008
6493
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6494
+ result >>>= 0;
6009
6495
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6010
6496
  var value = 2 /* GlobalHandle.NULL */;
6011
6497
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6021,6 +6507,7 @@
6021
6507
  envObject.checkGCAccess();
6022
6508
  if (!result)
6023
6509
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6510
+ result >>>= 0;
6024
6511
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6025
6512
  var value = 1 /* GlobalHandle.UNDEFINED */;
6026
6513
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6039,6 +6526,9 @@
6039
6526
  if (!env)
6040
6527
  return 1 /* napi_status.napi_invalid_arg */;
6041
6528
  var envObject = emnapiCtx.envStore.get(env);
6529
+ data >>>= 0;
6530
+ finalize_cb >>>= 0;
6531
+ finalize_hint >>>= 0;
6042
6532
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
6043
6533
  return envObject.clearLastError();
6044
6534
  }
@@ -6049,6 +6539,7 @@
6049
6539
  var envObject = emnapiCtx.envStore.get(env);
6050
6540
  if (!data)
6051
6541
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6542
+ data >>>= 0;
6052
6543
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6053
6544
  var value = envObject.getInstanceData();
6054
6545
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6062,6 +6553,9 @@
6062
6553
  });
6063
6554
  /** @__sig vpppp */
6064
6555
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
6556
+ error_code >>>= 0;
6557
+ engine_error_code >>>= 0;
6558
+ engine_reserved >>>= 0;
6065
6559
  var envObject = emnapiCtx.envStore.get(env);
6066
6560
  var lastError = envObject.lastError;
6067
6561
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -6070,6 +6564,7 @@
6070
6564
  var engineErrorCode = lastError.engineErrorCode >>> 0;
6071
6565
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6072
6566
  var engineReserved = lastError.engineReserved;
6567
+ engineReserved >>>= 0;
6073
6568
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6074
6569
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
6075
6570
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
@@ -6113,6 +6608,8 @@
6113
6608
  try {
6114
6609
  if (!msg)
6115
6610
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6611
+ code >>>= 0;
6612
+ msg >>>= 0;
6116
6613
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
6117
6614
  if (code)
6118
6615
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -6139,6 +6636,8 @@
6139
6636
  try {
6140
6637
  if (!msg)
6141
6638
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6639
+ code >>>= 0;
6640
+ msg >>>= 0;
6142
6641
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
6143
6642
  if (code)
6144
6643
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -6165,6 +6664,8 @@
6165
6664
  try {
6166
6665
  if (!msg)
6167
6666
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6667
+ code >>>= 0;
6668
+ msg >>>= 0;
6168
6669
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
6169
6670
  if (code)
6170
6671
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -6191,6 +6692,8 @@
6191
6692
  try {
6192
6693
  if (!msg)
6193
6694
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6695
+ code >>>= 0;
6696
+ msg >>>= 0;
6194
6697
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
6195
6698
  if (code)
6196
6699
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -6213,6 +6716,7 @@
6213
6716
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6214
6717
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6215
6718
  var r = envObject.tryCatch.hasCaught();
6719
+ result >>>= 0;
6216
6720
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6217
6721
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6218
6722
  return envObject.clearLastError();
@@ -6240,6 +6744,7 @@
6240
6744
  }
6241
6745
  error.code = codeValue;
6242
6746
  }
6747
+ result >>>= 0;
6243
6748
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6244
6749
  var value = emnapiCtx.addToCurrentScope(error).id;
6245
6750
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6269,6 +6774,7 @@
6269
6774
  }
6270
6775
  error.code = codeValue;
6271
6776
  }
6777
+ result >>>= 0;
6272
6778
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6273
6779
  var value = emnapiCtx.addToCurrentScope(error).id;
6274
6780
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6298,6 +6804,7 @@
6298
6804
  }
6299
6805
  error.code = codeValue;
6300
6806
  }
6807
+ result >>>= 0;
6301
6808
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6302
6809
  var value = emnapiCtx.addToCurrentScope(error).id;
6303
6810
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6327,6 +6834,7 @@
6327
6834
  }
6328
6835
  error.code = codeValue;
6329
6836
  }
6837
+ result >>>= 0;
6330
6838
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6331
6839
  var value = emnapiCtx.addToCurrentScope(error).id;
6332
6840
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6342,6 +6850,7 @@
6342
6850
  envObject.checkGCAccess();
6343
6851
  if (!result)
6344
6852
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6853
+ result >>>= 0;
6345
6854
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6346
6855
  if (!envObject.tryCatch.hasCaught()) {
6347
6856
  HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED
@@ -6358,6 +6867,10 @@
6358
6867
  }
6359
6868
  /** @__sig vpppp */
6360
6869
  function napi_fatal_error(location, location_len, message, message_len) {
6870
+ location >>>= 0;
6871
+ location_len >>>= 0;
6872
+ message >>>= 0;
6873
+ message_len >>>= 0;
6361
6874
  var locationStr = emnapiString.UTF8ToString(location, location_len);
6362
6875
  var messageStr = emnapiString.UTF8ToString(message, message_len);
6363
6876
  if (emnapiNodeBinding) {
@@ -6414,9 +6927,23 @@
6414
6927
  node_api_throw_syntax_error: node_api_throw_syntax_error
6415
6928
  });
6416
6929
  /** @__sig ipppppp */
6417
- function napi_create_function(env, utf8name, length, cb, data, result) {
6930
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
6931
+ length >>>= 0;
6932
+ var envObject = emnapiCtx.envStore.get(env);
6933
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
6934
+ if (fresult.status !== 0 /* napi_status.napi_ok */)
6935
+ return envObject.setLastError(fresult.status);
6936
+ var f = fresult.f;
6937
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
6938
+ result >>>= 0;
6418
6939
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6419
- var value;
6940
+ var value = valueHandle.id;
6941
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6942
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6943
+ return envObject.getReturnStatus();
6944
+ }
6945
+ /** @__sig ipppppp */
6946
+ function napi_create_function(env, utf8name, length, cb, data, result) {
6420
6947
  if (!env)
6421
6948
  return 1 /* napi_status.napi_invalid_arg */;
6422
6949
  // @ts-expect-error
@@ -6432,15 +6959,7 @@
6432
6959
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6433
6960
  if (!cb)
6434
6961
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6435
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
6436
- if (fresult.status !== 0 /* napi_status.napi_ok */)
6437
- return envObject.setLastError(fresult.status);
6438
- var f = fresult.f;
6439
- var valueHandle = emnapiCtx.addToCurrentScope(f);
6440
- value = valueHandle.id;
6441
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6442
- HEAP_DATA_VIEW.setUint32(result, value, true);
6443
- return envObject.getReturnStatus();
6962
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
6444
6963
  }
6445
6964
  catch (err) {
6446
6965
  envObject.tryCatch.setError(err);
@@ -6455,11 +6974,14 @@
6455
6974
  if (!cbinfo)
6456
6975
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6457
6976
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
6977
+ argc >>>= 0;
6978
+ argv >>>= 0;
6458
6979
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6459
6980
  if (argv) {
6460
6981
  if (!argc)
6461
6982
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6462
6983
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
6984
+ argcValue >>>= 0;
6463
6985
  var len = cbinfoValue.args.length;
6464
6986
  var arrlen = argcValue < len ? argcValue : len;
6465
6987
  var i = 0;
@@ -6478,11 +7000,13 @@
6478
7000
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
6479
7001
  }
6480
7002
  if (this_arg) {
7003
+ this_arg >>>= 0;
6481
7004
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6482
7005
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
6483
7006
  HEAP_DATA_VIEW.setUint32(this_arg, v, true);
6484
7007
  }
6485
7008
  if (data) {
7009
+ data >>>= 0;
6486
7010
  HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
6487
7011
  }
6488
7012
  return envObject.clearLastError();
@@ -6505,6 +7029,9 @@
6505
7029
  try {
6506
7030
  if (!recv)
6507
7031
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7032
+ argc >>>= 0;
7033
+ argv >>>= 0;
7034
+ result >>>= 0;
6508
7035
  argc = argc >>> 0;
6509
7036
  if (argc > 0) {
6510
7037
  if (!argv)
@@ -6552,6 +7079,9 @@
6552
7079
  try {
6553
7080
  if (!constructor)
6554
7081
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7082
+ argc >>>= 0;
7083
+ argv >>>= 0;
7084
+ result >>>= 0;
6555
7085
  argc = argc >>> 0;
6556
7086
  if (argc > 0) {
6557
7087
  if (!argv)
@@ -6604,8 +7134,10 @@
6604
7134
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6605
7135
  if (!result)
6606
7136
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7137
+ result >>>= 0;
6607
7138
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
6608
7139
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
7140
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unused-vars
6609
7141
  var value = thiz == null || thiz.constructor == null
6610
7142
  ? 0
6611
7143
  : thiz instanceof fn
@@ -6617,6 +7149,7 @@
6617
7149
  }
6618
7150
  var functionMod = /*#__PURE__*/ Object.freeze({
6619
7151
  __proto__: null,
7152
+ _emnapi_create_function: _emnapi_create_function,
6620
7153
  napi_call_function: napi_call_function,
6621
7154
  napi_create_function: napi_create_function,
6622
7155
  napi_get_cb_info: napi_get_cb_info,
@@ -6634,6 +7167,7 @@
6634
7167
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6635
7168
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6636
7169
  var scope = emnapiCtx.openScope(envObject);
7170
+ result >>>= 0;
6637
7171
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6638
7172
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
6639
7173
  return envObject.clearLastError();
@@ -6664,6 +7198,7 @@
6664
7198
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6665
7199
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6666
7200
  var scope = emnapiCtx.openScope(envObject);
7201
+ result >>>= 0;
6667
7202
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6668
7203
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
6669
7204
  return envObject.clearLastError();
@@ -6698,6 +7233,8 @@
6698
7233
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6699
7234
  var scopeObject = emnapiCtx.scopeStore.get(scope);
6700
7235
  if (!scopeObject.escapeCalled()) {
7236
+ escapee >>>= 0;
7237
+ result >>>= 0;
6701
7238
  var newHandle = scopeObject.escape(escapee);
6702
7239
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6703
7240
  var value = newHandle ? newHandle.id : 0;
@@ -6726,6 +7263,7 @@
6726
7263
  }
6727
7264
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6728
7265
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */);
7266
+ result >>>= 0;
6729
7267
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6730
7268
  HEAP_DATA_VIEW.setUint32(result, ref.id, true);
6731
7269
  return envObject.clearLastError();
@@ -6752,6 +7290,7 @@
6752
7290
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6753
7291
  var count = emnapiCtx.refStore.get(ref).ref();
6754
7292
  if (result) {
7293
+ result >>>= 0;
6755
7294
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6756
7295
  HEAP_DATA_VIEW.setUint32(result, count, true);
6757
7296
  }
@@ -6774,6 +7313,7 @@
6774
7313
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6775
7314
  var count = reference.unref();
6776
7315
  if (result) {
7316
+ result >>>= 0;
6777
7317
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6778
7318
  HEAP_DATA_VIEW.setUint32(result, count, true);
6779
7319
  }
@@ -6793,6 +7333,7 @@
6793
7333
  var reference = emnapiCtx.refStore.get(ref);
6794
7334
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6795
7335
  var handleId = reference.get(envObject);
7336
+ result >>>= 0;
6796
7337
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6797
7338
  HEAP_DATA_VIEW.setUint32(result, handleId, true);
6798
7339
  return envObject.clearLastError();
@@ -6804,6 +7345,8 @@
6804
7345
  var envObject = emnapiCtx.envStore.get(env);
6805
7346
  if (!fun)
6806
7347
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7348
+ fun >>>= 0;
7349
+ arg >>>= 0;
6807
7350
  emnapiCtx.addCleanupHook(envObject, fun, arg);
6808
7351
  return 0 /* napi_status.napi_ok */;
6809
7352
  }
@@ -6814,6 +7357,8 @@
6814
7357
  var envObject = emnapiCtx.envStore.get(env);
6815
7358
  if (!fun)
6816
7359
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7360
+ fun >>>= 0;
7361
+ arg >>>= 0;
6817
7362
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
6818
7363
  return 0 /* napi_status.napi_ok */;
6819
7364
  }
@@ -6880,8 +7425,10 @@
6880
7425
  var p = new Promise(function (resolve, reject) {
6881
7426
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
6882
7427
  deferredObjectId = deferredObject.id;
7428
+ deferred >>>= 0;
6883
7429
  HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
6884
7430
  });
7431
+ promise >>>= 0;
6885
7432
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6886
7433
  value = emnapiCtx.addToCurrentScope(p).id;
6887
7434
  HEAP_DATA_VIEW.setUint32(promise, value, true);
@@ -6956,6 +7503,7 @@
6956
7503
  if (!is_promise)
6957
7504
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6958
7505
  var h = emnapiCtx.handleStore.get(value);
7506
+ is_promise >>>= 0;
6959
7507
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6960
7508
  var r = h.isPromise() ? 1 : 0;
6961
7509
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7103,6 +7651,7 @@
7103
7651
  }
7104
7652
  }
7105
7653
  }
7654
+ result >>>= 0;
7106
7655
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7107
7656
  value = emnapiCtx.addToCurrentScope(ret).id;
7108
7657
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7181,6 +7730,7 @@
7181
7730
  catch (_) {
7182
7731
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7183
7732
  }
7733
+ result >>>= 0;
7184
7734
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
7185
7735
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7186
7736
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -7223,6 +7773,7 @@
7223
7773
  catch (_) {
7224
7774
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7225
7775
  }
7776
+ result >>>= 0;
7226
7777
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7227
7778
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
7228
7779
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7270,6 +7821,7 @@
7270
7821
  }
7271
7822
  }
7272
7823
  if (result) {
7824
+ result >>>= 0;
7273
7825
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7274
7826
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
7275
7827
  }
@@ -7317,6 +7869,7 @@
7317
7869
  return envObject.setLastError(4 /* napi_status.napi_name_expected */);
7318
7870
  }
7319
7871
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
7872
+ result >>>= 0;
7320
7873
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7321
7874
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
7322
7875
  return envObject.getReturnStatus();
@@ -7350,6 +7903,7 @@
7350
7903
  if (!cname) {
7351
7904
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7352
7905
  }
7906
+ cname >>>= 0;
7353
7907
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
7354
7908
  return envObject.getReturnStatus();
7355
7909
  }
@@ -7391,6 +7945,8 @@
7391
7945
  catch (_) {
7392
7946
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7393
7947
  }
7948
+ utf8name >>>= 0;
7949
+ result >>>= 0;
7394
7950
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
7395
7951
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7396
7952
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -7434,6 +7990,8 @@
7434
7990
  catch (_) {
7435
7991
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7436
7992
  }
7993
+ utf8name >>>= 0;
7994
+ result >>>= 0;
7437
7995
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7438
7996
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
7439
7997
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7504,6 +8062,7 @@
7504
8062
  catch (_) {
7505
8063
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7506
8064
  }
8065
+ result >>>= 0;
7507
8066
  r = ((index >>> 0) in v) ? 1 : 0;
7508
8067
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7509
8068
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -7544,6 +8103,7 @@
7544
8103
  catch (_) {
7545
8104
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7546
8105
  }
8106
+ result >>>= 0;
7547
8107
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7548
8108
  value = envObject.ensureHandleId(v[index >>> 0]);
7549
8109
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7588,6 +8148,7 @@
7588
8148
  }
7589
8149
  }
7590
8150
  if (result) {
8151
+ result >>>= 0;
7591
8152
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7592
8153
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
7593
8154
  }
@@ -7613,6 +8174,8 @@
7613
8174
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
7614
8175
  envObject.clearLastError();
7615
8176
  try {
8177
+ properties >>>= 0;
8178
+ property_count >>>= 0;
7616
8179
  property_count = property_count >>> 0;
7617
8180
  if (property_count > 0) {
7618
8181
  if (!properties)
@@ -7637,6 +8200,7 @@
7637
8200
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
7638
8201
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
7639
8202
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
8203
+ attributes >>>= 0;
7640
8204
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
7641
8205
  if (utf8Name) {
7642
8206
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -7761,6 +8325,7 @@
7761
8325
  }
7762
8326
  var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value;
7763
8327
  var ret = g.eval(v8Script.value);
8328
+ result >>>= 0;
7764
8329
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7765
8330
  value = envObject.ensureHandleId(ret);
7766
8331
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7789,6 +8354,7 @@
7789
8354
  if (!result)
7790
8355
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7791
8356
  var v = emnapiCtx.handleStore.get(value);
8357
+ result >>>= 0;
7792
8358
  var r;
7793
8359
  if (v.isNumber()) {
7794
8360
  r = 3 /* napi_valuetype.napi_number */;
@@ -7853,6 +8419,7 @@
7853
8419
  if (!result)
7854
8420
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7855
8421
  var handle = emnapiCtx.handleStore.get(value);
8422
+ result >>>= 0;
7856
8423
  v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */;
7857
8424
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7858
8425
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -7886,6 +8453,7 @@
7886
8453
  if (handle.isBigInt()) {
7887
8454
  throw new TypeError('Cannot convert a BigInt value to a number');
7888
8455
  }
8456
+ result >>>= 0;
7889
8457
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7890
8458
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
7891
8459
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7920,6 +8488,7 @@
7920
8488
  if (handle.value == null) {
7921
8489
  throw new TypeError('Cannot convert undefined or null to object');
7922
8490
  }
8491
+ result >>>= 0;
7923
8492
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7924
8493
  v = envObject.ensureHandleId(Object(handle.value));
7925
8494
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7954,6 +8523,7 @@
7954
8523
  if (handle.isSymbol()) {
7955
8524
  throw new TypeError('Cannot convert a Symbol value to a string');
7956
8525
  }
8526
+ result >>>= 0;
7957
8527
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7958
8528
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
7959
8529
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7986,6 +8556,7 @@
7986
8556
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7987
8557
  if (!constructor)
7988
8558
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8559
+ result >>>= 0;
7989
8560
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7990
8561
  HEAP_DATA_VIEW.setInt8(result, 0, true);
7991
8562
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -8015,6 +8586,7 @@
8015
8586
  if (!result)
8016
8587
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8017
8588
  var h = emnapiCtx.handleStore.get(value);
8589
+ result >>>= 0;
8018
8590
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8019
8591
  var r = h.isArray() ? 1 : 0;
8020
8592
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -8033,6 +8605,7 @@
8033
8605
  if (!result)
8034
8606
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8035
8607
  var h = emnapiCtx.handleStore.get(value);
8608
+ result >>>= 0;
8036
8609
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8037
8610
  var r = h.isArrayBuffer() ? 1 : 0;
8038
8611
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -8051,6 +8624,7 @@
8051
8624
  if (!result)
8052
8625
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8053
8626
  var h = emnapiCtx.handleStore.get(value);
8627
+ result >>>= 0;
8054
8628
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8055
8629
  var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
8056
8630
  (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
@@ -8072,6 +8646,7 @@
8072
8646
  if (!result)
8073
8647
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8074
8648
  var h = emnapiCtx.handleStore.get(value);
8649
+ result >>>= 0;
8075
8650
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8076
8651
  var r = h.isDate() ? 1 : 0;
8077
8652
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -8090,6 +8665,7 @@
8090
8665
  if (!result)
8091
8666
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8092
8667
  var val = emnapiCtx.handleStore.get(value).value;
8668
+ result >>>= 0;
8093
8669
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8094
8670
  var r = (val instanceof Error) ? 1 : 0;
8095
8671
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -8108,6 +8684,7 @@
8108
8684
  if (!result)
8109
8685
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8110
8686
  var h = emnapiCtx.handleStore.get(value);
8687
+ result >>>= 0;
8111
8688
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8112
8689
  var r = h.isTypedArray() ? 1 : 0;
8113
8690
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -8126,6 +8703,7 @@
8126
8703
  if (!result)
8127
8704
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8128
8705
  var h = emnapiCtx.handleStore.get(value);
8706
+ result >>>= 0;
8129
8707
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8130
8708
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
8131
8709
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -8144,6 +8722,7 @@
8144
8722
  if (!result)
8145
8723
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8146
8724
  var h = emnapiCtx.handleStore.get(value);
8725
+ result >>>= 0;
8147
8726
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8148
8727
  var r = h.isDataView() ? 1 : 0;
8149
8728
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -8173,6 +8752,7 @@
8173
8752
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8174
8753
  var lv = emnapiCtx.handleStore.get(lhs).value;
8175
8754
  var rv = emnapiCtx.handleStore.get(rhs).value;
8755
+ result >>>= 0;
8176
8756
  r = (lv === rv) ? 1 : 0;
8177
8757
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
8178
8758
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -8227,6 +8807,7 @@
8227
8807
  if (!result)
8228
8808
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8229
8809
  var h = emnapiCtx.handleStore.get(arraybuffer);
8810
+ result >>>= 0;
8230
8811
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
8231
8812
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
8232
8813
  try {
@@ -8605,12 +9186,7 @@
8605
9186
  try {
8606
9187
  if (type === 'async-worker-init') {
8607
9188
  this.handleAfterLoad(e, function () {
8608
- _this.napiModule.initWorker(payload_1.arg);
8609
- });
8610
- }
8611
- else if (type === 'async-work-execute') {
8612
- this.handleAfterLoad(e, function () {
8613
- _this.napiModule.executeAsyncWork(payload_1.work);
9189
+ _this.napiModule.initWorker(payload_1.arg, payload_1.func);
8614
9190
  });
8615
9191
  }
8616
9192
  }
@@ -8636,7 +9212,7 @@
8636
9212
  // }
8637
9213
  // }
8638
9214
 
8639
- var version = "1.8.1";
9215
+ var version = "1.10.0";
8640
9216
 
8641
9217
  exports.MessageHandler = MessageHandler;
8642
9218
  exports.ThreadManager = ThreadManager;