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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +1469 -511
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +61 -5
  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 +61 -5
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +61 -5
  6. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1628 -523
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +1705 -585
  8. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +61 -5
  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 +1469 -511
  12. package/node_modules/@emnapi/core/package.json +2 -2
  13. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +44 -14
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +15 -7
  15. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  16. package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +15 -7
  17. package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +15 -7
  18. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +45 -14
  19. package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +12 -6
  20. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +45 -14
  21. package/node_modules/@emnapi/runtime/dist/emnapi.js +45 -14
  22. package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +15 -7
  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 +44 -14
  26. package/node_modules/@emnapi/runtime/package.json +1 -1
  27. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +67 -63
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +59 -2
  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 +59 -2
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +59 -2
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +67 -63
  33. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +67 -63
  34. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +59 -2
  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 +67 -63
  38. package/node_modules/@emnapi/wasi-threads/package.json +1 -1
  39. package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +299 -0
  40. package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +22125 -20726
  41. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +294 -0
  42. package/node_modules/@napi-rs/wasm-runtime/package.json +25 -16
  43. package/node_modules/@napi-rs/wasm-runtime/runtime.cjs +1 -1
  44. package/node_modules/@napi-rs/wasm-runtime/runtime.js +8 -0
  45. package/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts +6 -0
  46. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +215 -33
  47. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +215 -33
  48. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
  49. package/node_modules/@tybys/wasm-util/dist/wasm-util.js +215 -33
  50. package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
  51. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js +12 -14
  52. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
  53. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +61 -19
  54. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs +12 -14
  55. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
  56. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +61 -19
  57. package/node_modules/@tybys/wasm-util/package.json +1 -1
  58. package/node_modules/tslib/package.json +1 -1
  59. package/node_modules/tslib/tslib.es6.js +10 -1
  60. package/node_modules/tslib/tslib.es6.mjs +10 -1
  61. package/node_modules/tslib/tslib.js +42 -33
  62. package/package.json +7 -7
  63. package/tailwindcss-oxide.wasi-browser.js +7 -3
  64. package/tailwindcss-oxide.wasi.cjs +27 -4
  65. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  66. package/wasi-worker-browser.mjs +2 -0
  67. package/node_modules/@napi-rs/wasm-runtime/LICENSE +0 -43
  68. package/node_modules/@napi-rs/wasm-runtime/dist/runtime.js +0 -12285
  69. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.cjs +0 -209
@@ -216,7 +216,6 @@
216
216
  function ThreadManager(options) {
217
217
  var _a;
218
218
  this.unusedWorkers = [];
219
- this.runningWorkers = [];
220
219
  this.pthreads = Object.create(null);
221
220
  this.wasmModule = null;
222
221
  this.wasmMemory = null;
@@ -241,6 +240,7 @@
241
240
  this._beforeLoad = options.beforeLoad;
242
241
  }
243
242
  this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console);
243
+ this.threadSpawn = options.threadSpawn;
244
244
  }
245
245
  Object.defineProperty(ThreadManager.prototype, "nextWorkerID", {
246
246
  get: function () { return nextWorkerID; },
@@ -324,7 +324,6 @@
324
324
  delete this.pthreads[tid];
325
325
  }
326
326
  this.unusedWorkers.push(worker);
327
- this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1);
328
327
  delete worker.__emnapi_tid;
329
328
  if (ENVIRONMENT_IS_NODE) {
330
329
  worker.unref();
@@ -344,12 +343,17 @@
344
343
  if (worker.__emnapi_tid !== undefined) {
345
344
  message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!';
346
345
  }
347
- err(message + ' ' + e.message);
348
- if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) {
349
- try {
350
- _this.terminateAllThreads();
346
+ if ('message' in e) {
347
+ err(message + ' ' + e.message);
348
+ if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) {
349
+ try {
350
+ _this.terminateAllThreads();
351
+ }
352
+ catch (_) { }
351
353
  }
352
- catch (_) { }
354
+ }
355
+ else {
356
+ err(message);
353
357
  }
354
358
  reject(e);
355
359
  throw e;
@@ -373,6 +377,12 @@
373
377
  _this_1.cleanThread(worker, payload.tid);
374
378
  }
375
379
  }
380
+ else if (type === 'spawn-thread') {
381
+ _this_1.threadSpawn(payload.startArg, payload.errorOrTid);
382
+ }
383
+ else if (type === 'terminate-all-threads') {
384
+ _this_1.terminateAllThreads();
385
+ }
376
386
  }
377
387
  };
378
388
  worker.onmessage = function (e) {
@@ -447,10 +457,6 @@
447
457
  }
448
458
  else {
449
459
  delete this.pthreads[tid];
450
- var index = this.runningWorkers.indexOf(worker);
451
- if (index !== -1) {
452
- this.runningWorkers.splice(index, 1);
453
- }
454
460
  this.terminateWorker(worker);
455
461
  delete worker.__emnapi_tid;
456
462
  }
@@ -471,14 +477,14 @@
471
477
  };
472
478
  };
473
479
  ThreadManager.prototype.terminateAllThreads = function () {
474
- for (var i = 0; i < this.runningWorkers.length; ++i) {
475
- this.terminateWorker(this.runningWorkers[i]);
480
+ var runningWorkers = Object.values(this.pthreads);
481
+ for (var i = 0; i < runningWorkers.length; ++i) {
482
+ this.terminateWorker(runningWorkers[i]);
476
483
  }
477
484
  for (var i = 0; i < this.unusedWorkers.length; ++i) {
478
485
  this.terminateWorker(this.unusedWorkers[i]);
479
486
  }
480
487
  this.unusedWorkers = [];
481
- this.runningWorkers = [];
482
488
  this.pthreads = Object.create(null);
483
489
  this.preparePool();
484
490
  };
@@ -628,18 +634,6 @@
628
634
  }
629
635
  this.postMessage = postMessage;
630
636
  var wasm64 = Boolean(options.wasm64);
631
- var onMessage = function (e) {
632
- if (e.data.__emnapi__) {
633
- var type = e.data.__emnapi__.type;
634
- var payload = e.data.__emnapi__.payload;
635
- if (type === 'spawn-thread') {
636
- threadSpawn(payload.startArg, payload.errorOrTid);
637
- }
638
- else if (type === 'terminate-all-threads') {
639
- _this_1.terminateAllThreads();
640
- }
641
- }
642
- };
643
637
  var threadSpawn = function (startArg, errorOrTid) {
644
638
  var _a;
645
639
  var EAGAIN = 6;
@@ -657,12 +651,12 @@
657
651
  return 1;
658
652
  }
659
653
  else {
660
- return -6;
654
+ return -EAGAIN;
661
655
  }
662
656
  }
663
657
  if (!isNewABI) {
664
658
  var malloc = _this_1.wasmInstance.exports.malloc;
665
- errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8);
659
+ errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0);
666
660
  if (!errorOrTid) {
667
661
  return -48; /* ENOMEM */
668
662
  }
@@ -700,10 +694,9 @@
700
694
  if (!worker) {
701
695
  throw new Error('failed to get new worker');
702
696
  }
703
- PThread.addMessageEventListener(worker, onMessage);
704
697
  tid = PThread.markId(worker);
705
698
  if (ENVIRONMENT_IS_NODE) {
706
- worker.ref();
699
+ worker.unref();
707
700
  }
708
701
  worker.postMessage(createMessage('start', {
709
702
  tid: tid,
@@ -714,10 +707,6 @@
714
707
  if (typeof waitThreadStart === 'number') {
715
708
  var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart);
716
709
  if (waitResult === 'timed-out') {
717
- try {
718
- PThread.cleanThread(worker, tid, true);
719
- }
720
- catch (_) { }
721
710
  throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.');
722
711
  }
723
712
  }
@@ -726,15 +715,17 @@
726
715
  }
727
716
  var r = Atomics.load(sab, 0);
728
717
  if (r > 1) {
729
- try {
730
- PThread.cleanThread(worker, tid, true);
731
- }
732
- catch (_) { }
733
718
  throw deserizeErrorFromBuffer(sab.buffer);
734
719
  }
735
720
  }
736
721
  }
737
722
  catch (e) {
723
+ if (worker !== undefined && tid !== undefined) {
724
+ try {
725
+ PThread.cleanThread(worker, tid, true);
726
+ }
727
+ catch (_) { }
728
+ }
738
729
  Atomics.store(struct, 0, 1);
739
730
  Atomics.store(struct, 1, EAGAIN);
740
731
  Atomics.notify(struct, 1);
@@ -743,12 +734,11 @@
743
734
  return 1;
744
735
  }
745
736
  free(errorOrTid);
746
- return -6;
737
+ return -EAGAIN;
747
738
  }
748
739
  Atomics.store(struct, 0, 0);
749
740
  Atomics.store(struct, 1, tid);
750
741
  Atomics.notify(struct, 1);
751
- PThread.runningWorkers.push(worker);
752
742
  if (!shouldWait) {
753
743
  worker.whenLoaded.catch(function (err) {
754
744
  delete worker.whenLoaded;
@@ -763,6 +753,9 @@
763
753
  return tid;
764
754
  };
765
755
  this.threadSpawn = threadSpawn;
756
+ if (this.PThread) {
757
+ this.PThread.threadSpawn = threadSpawn;
758
+ }
766
759
  }
767
760
  WASIThreads.prototype.getImportObject = function () {
768
761
  return {
@@ -860,19 +853,21 @@
860
853
  return proc_exit_1.call(this, code);
861
854
  };
862
855
  }
863
- var start = wasi.start;
864
- if (typeof start === 'function') {
865
- wasi.start = function (instance) {
866
- try {
867
- return start.call(this, instance);
868
- }
869
- catch (err) {
870
- if (isTrapError(err)) {
871
- _this.terminateAllThreads();
856
+ if (!_this.childThread) {
857
+ var start_1 = wasi.start;
858
+ if (typeof start_1 === 'function') {
859
+ wasi.start = function (instance) {
860
+ try {
861
+ return start_1.call(this, instance);
872
862
  }
873
- throw err;
874
- }
875
- };
863
+ catch (err) {
864
+ if (isTrapError(err)) {
865
+ _this.terminateAllThreads();
866
+ }
867
+ throw err;
868
+ }
869
+ };
870
+ }
876
871
  }
877
872
  patched.add(wasi);
878
873
  }
@@ -904,6 +899,7 @@
904
899
  }
905
900
  this.postMessage = postMsg;
906
901
  this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad;
902
+ this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; };
907
903
  this.instance = undefined;
908
904
  // this.module = undefined
909
905
  this.messagesBeforeLoad = [];
@@ -922,13 +918,18 @@
922
918
  if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
923
919
  var type = e.data.__emnapi__.type;
924
920
  var payload_1 = e.data.__emnapi__.payload;
925
- if (type === 'load') {
926
- this._load(payload_1);
921
+ try {
922
+ if (type === 'load') {
923
+ this._load(payload_1);
924
+ }
925
+ else if (type === 'start') {
926
+ this.handleAfterLoad(e, function () {
927
+ _this._start(payload_1);
928
+ });
929
+ }
927
930
  }
928
- else if (type === 'start') {
929
- this.handleAfterLoad(e, function () {
930
- _this._start(payload_1);
931
- });
931
+ catch (err) {
932
+ this.onError(err, type);
932
933
  }
933
934
  }
934
935
  };
@@ -954,7 +955,8 @@
954
955
  }
955
956
  };
956
957
  ThreadMessageHandler.prototype._start = function (payload) {
957
- if (typeof this.instance.exports.wasi_thread_start !== 'function') {
958
+ var wasi_thread_start = this.instance.exports.wasi_thread_start;
959
+ if (typeof wasi_thread_start !== 'function') {
958
960
  var err = new TypeError('wasi_thread_start is not exported');
959
961
  notifyPthreadCreateResult(payload.sab, 2, err);
960
962
  throw err;
@@ -964,13 +966,15 @@
964
966
  var startArg = payload.arg;
965
967
  notifyPthreadCreateResult(payload.sab, 1);
966
968
  try {
967
- this.instance.exports.wasi_thread_start(tid, startArg);
969
+ wasi_thread_start(tid, startArg);
968
970
  }
969
971
  catch (err) {
970
- if (isTrapError(err)) {
971
- postMessage(createMessage('terminate-all-threads', {}));
972
+ if (err !== 'unwind') {
973
+ throw err;
974
+ }
975
+ else {
976
+ return;
972
977
  }
973
- throw err;
974
978
  }
975
979
  postMessage(createMessage('cleanup-thread', { tid: tid }));
976
980
  };
@@ -1045,7 +1049,6 @@
1045
1049
  filename: '',
1046
1050
  childThread: ENVIRONMENT_IS_PTHREAD,
1047
1051
  initWorker: undefined,
1048
- executeAsyncWork: undefined,
1049
1052
  waitThreadStart: waitThreadStart,
1050
1053
  PThread: undefined,
1051
1054
  init: function (options) {
@@ -1094,6 +1097,11 @@
1094
1097
  napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
1095
1098
  });
1096
1099
  }
1100
+ catch (e) {
1101
+ if (e !== 'unwind') {
1102
+ throw e;
1103
+ }
1104
+ }
1097
1105
  finally {
1098
1106
  emnapiCtx.closeScope(envObject, scope_1);
1099
1107
  }
@@ -1241,6 +1249,9 @@
1241
1249
  * @__sig vppp
1242
1250
  */
1243
1251
  function _emnapi_get_node_version(major, minor, patch) {
1252
+ major >>>= 0;
1253
+ minor >>>= 0;
1254
+ patch >>>= 0;
1244
1255
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1245
1256
  var versions = (typeof process === 'object' && process !== null &&
1246
1257
  typeof process.versions === 'object' && process.versions !== null &&
@@ -1306,6 +1317,7 @@
1306
1317
  */
1307
1318
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
1308
1319
  var envObject = emnapiCtx.envStore.get(env);
1320
+ callback >>>= 0;
1309
1321
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
1310
1322
  }
1311
1323
  /**
@@ -1320,6 +1332,31 @@
1320
1332
  function _emnapi_ctx_decrease_waiting_request_counter() {
1321
1333
  emnapiCtx.decreaseWaitingRequestCounter();
1322
1334
  }
1335
+ /**
1336
+ * @__sig i
1337
+ */
1338
+ function _emnapi_is_main_runtime_thread() {
1339
+ return ENVIRONMENT_IS_PTHREAD ? 0 : 1;
1340
+ }
1341
+ /**
1342
+ * @__sig i
1343
+ */
1344
+ function _emnapi_is_main_browser_thread() {
1345
+ return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
1346
+ }
1347
+ /**
1348
+ * @__sig v
1349
+ */
1350
+ function _emnapi_unwind() {
1351
+ // eslint-disable-next-line @typescript-eslint/no-throw-literal
1352
+ throw 'unwind';
1353
+ }
1354
+ /**
1355
+ * @__sig d
1356
+ */
1357
+ function _emnapi_get_now() {
1358
+ return performance.timeOrigin + performance.now();
1359
+ }
1323
1360
  function $emnapiSetValueI64(result, numberValue) {
1324
1361
  var tempDouble;
1325
1362
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1331,18 +1368,38 @@
1331
1368
  HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
1332
1369
  HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
1333
1370
  }
1371
+ /**
1372
+ * @__deps $emnapiCtx
1373
+ * @__sig p
1374
+ */
1375
+ function _emnapi_open_handle_scope() {
1376
+ return emnapiCtx.openScope().id;
1377
+ }
1378
+ /**
1379
+ * @__deps $emnapiCtx
1380
+ * @__sig vp
1381
+ */
1382
+ function _emnapi_close_handle_scope(_scope) {
1383
+ return emnapiCtx.closeScope();
1384
+ }
1334
1385
  var utilMod = /*#__PURE__*/ Object.freeze({
1335
1386
  __proto__: null,
1336
1387
  $emnapiSetValueI64: $emnapiSetValueI64,
1337
1388
  _emnapi_call_finalizer: _emnapi_call_finalizer,
1338
1389
  _emnapi_callback_into_module: _emnapi_callback_into_module,
1390
+ _emnapi_close_handle_scope: _emnapi_close_handle_scope,
1339
1391
  _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter,
1340
1392
  _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter,
1341
1393
  _emnapi_get_node_version: _emnapi_get_node_version,
1394
+ _emnapi_get_now: _emnapi_get_now,
1395
+ _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
1396
+ _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread,
1342
1397
  _emnapi_next_tick: _emnapi_next_tick,
1398
+ _emnapi_open_handle_scope: _emnapi_open_handle_scope,
1343
1399
  _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop,
1344
1400
  _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push,
1345
1401
  _emnapi_set_immediate: _emnapi_set_immediate,
1402
+ _emnapi_unwind: _emnapi_unwind,
1346
1403
  napi_clear_last_error: napi_clear_last_error,
1347
1404
  napi_set_last_error: napi_set_last_error
1348
1405
  });
@@ -1366,9 +1423,20 @@
1366
1423
  return worker;
1367
1424
  }
1368
1425
  /** @__sig vp */
1426
+ function _emnapi_worker_ref(pthreadPtr) {
1427
+ if (ENVIRONMENT_IS_PTHREAD)
1428
+ return;
1429
+ pthreadPtr >>>= 0;
1430
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
1431
+ if (worker && typeof worker.ref === 'function') {
1432
+ worker.ref();
1433
+ }
1434
+ }
1435
+ /** @__sig vp */
1369
1436
  function _emnapi_worker_unref(pthreadPtr) {
1370
1437
  if (ENVIRONMENT_IS_PTHREAD)
1371
1438
  return;
1439
+ pthreadPtr >>>= 0;
1372
1440
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
1373
1441
  if (worker && typeof worker.unref === 'function') {
1374
1442
  worker.unref();
@@ -1410,10 +1478,6 @@
1410
1478
  };
1411
1479
  });
1412
1480
  uvThreadpoolReady.ready = false;
1413
- /** @__sig i */
1414
- function _emnapi_is_main_browser_thread() {
1415
- return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
1416
- }
1417
1481
  /** @__sig vppi */
1418
1482
  function _emnapi_after_uvthreadpool_ready(callback, q, type) {
1419
1483
  if (uvThreadpoolReady.ready) {
@@ -1430,7 +1494,7 @@
1430
1494
  var p = [];
1431
1495
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1432
1496
  var _loop_1 = function (i) {
1433
- var pthreadPtr = HEAP_DATA_VIEW.getInt32(threads + i * 4, true);
1497
+ var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
1434
1498
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
1435
1499
  p.push(new Promise(function (resolve) {
1436
1500
  var handler = function (e) {
@@ -1479,11 +1543,10 @@
1479
1543
  _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready,
1480
1544
  _emnapi_async_send_js: _emnapi_async_send_js,
1481
1545
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
1482
- _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
1483
1546
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
1547
+ _emnapi_worker_ref: _emnapi_worker_ref,
1484
1548
  _emnapi_worker_unref: _emnapi_worker_unref
1485
1549
  });
1486
- /* eslint-disable @typescript-eslint/indent */
1487
1550
  /** @__sig ipjp */
1488
1551
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
1489
1552
  if (!env)
@@ -1491,22 +1554,15 @@
1491
1554
  var envObject = emnapiCtx.envStore.get(env);
1492
1555
  if (!adjusted_value)
1493
1556
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1494
- var change_in_bytes_number = Number(change_in_bytes);
1495
- if (change_in_bytes_number < 0) {
1496
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1497
- }
1498
- var old_size = wasmMemory.buffer.byteLength;
1499
- var new_size = old_size + change_in_bytes_number;
1500
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
1501
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
1502
- return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
1503
- }
1557
+ // eslint-disable-next-line prefer-const
1558
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
1559
+ adjusted_value >>>= 0;
1504
1560
  if (emnapiCtx.feature.supportBigInt) {
1505
1561
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1506
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
1562
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
1507
1563
  }
1508
1564
  else {
1509
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
1565
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
1510
1566
  }
1511
1567
  return envObject.clearLastError();
1512
1568
  }
@@ -1674,6 +1730,7 @@
1674
1730
  var asyncId = asyncContext.asyncId;
1675
1731
  var triggerAsyncId = asyncContext.triggerAsyncId;
1676
1732
  if (result) {
1733
+ result >>>= 0;
1677
1734
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1678
1735
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
1679
1736
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -1717,11 +1774,13 @@
1717
1774
  return;
1718
1775
  var resource = emnapiCtx.handleStore.get(async_resource).value;
1719
1776
  var callback = emnapiCtx.handleStore.get(cb).value;
1777
+ argv >>>= 0;
1778
+ size >>>= 0;
1720
1779
  size = size >>> 0;
1721
1780
  var arr = Array(size);
1722
1781
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1723
1782
  for (; i < size; i++) {
1724
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
1783
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
1725
1784
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
1726
1785
  }
1727
1786
  var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
@@ -1729,10 +1788,11 @@
1729
1788
  triggerAsyncId: trigger_async_id
1730
1789
  });
1731
1790
  if (result) {
1791
+ result >>>= 0;
1732
1792
  var envObject = emnapiCtx.envStore.get(env);
1733
1793
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1734
1794
  v = envObject.ensureHandleId(ret);
1735
- HEAP_DATA_VIEW.setInt32(result, v, true);
1795
+ HEAP_DATA_VIEW.setUint32(result, v, true);
1736
1796
  }
1737
1797
  }
1738
1798
  /** @__sig ippp */
@@ -1759,6 +1819,7 @@
1759
1819
  var low = Number(numberValue & BigInt(0xffffffff));
1760
1820
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1761
1821
  var high = Number(numberValue >> BigInt(32));
1822
+ result >>>= 0;
1762
1823
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1763
1824
  HEAP_DATA_VIEW.setInt32(result, low, true);
1764
1825
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -1769,6 +1830,7 @@
1769
1830
  if (!emnapiNodeBinding) {
1770
1831
  return 9 /* napi_status.napi_generic_failure */;
1771
1832
  }
1833
+ async_context >>>= 0;
1772
1834
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1773
1835
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
1774
1836
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -1817,14 +1879,17 @@
1817
1879
  if (typeof v8func !== 'function') {
1818
1880
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1819
1881
  }
1882
+ async_context >>>= 0;
1820
1883
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1821
1884
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
1822
1885
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
1823
1886
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
1887
+ argv >>>= 0;
1888
+ argc >>>= 0;
1824
1889
  argc = argc >>> 0;
1825
1890
  var arr = Array(argc);
1826
1891
  for (; i < argc; i++) {
1827
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
1892
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
1828
1893
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
1829
1894
  }
1830
1895
  var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
@@ -1834,9 +1899,10 @@
1834
1899
  if (ret.status !== 0 /* napi_status.napi_ok */)
1835
1900
  return envObject.setLastError(ret.status);
1836
1901
  if (result) {
1902
+ result >>>= 0;
1837
1903
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1838
1904
  v = envObject.ensureHandleId(ret.value);
1839
- HEAP_DATA_VIEW.setInt32(result, v, true);
1905
+ HEAP_DATA_VIEW.setUint32(result, v, true);
1840
1906
  }
1841
1907
  return envObject.getReturnStatus();
1842
1908
  }
@@ -1871,32 +1937,62 @@
1871
1937
  * ```
1872
1938
  */
1873
1939
  var emnapiTSFN = {
1940
+ _liveSet: {},
1874
1941
  offset: {
1942
+ __size__: 0,
1875
1943
  /* napi_ref */ resource: 0,
1876
- /* double */ async_id: 8,
1877
- /* double */ trigger_async_id: 16,
1878
- /* size_t */ queue_size: 24,
1879
- /* void* */ queue: 1 * 4 + 24,
1880
- /* size_t */ thread_count: 2 * 4 + 24,
1881
- /* bool */ is_closing: 3 * 4 + 24,
1882
- /* atomic_uchar */ dispatch_state: 3 * 4 + 28,
1883
- /* void* */ context: 3 * 4 + 32,
1884
- /* size_t */ max_queue_size: 4 * 4 + 32,
1885
- /* napi_ref */ ref: 5 * 4 + 32,
1886
- /* napi_env */ env: 6 * 4 + 32,
1887
- /* void* */ finalize_data: 7 * 4 + 32,
1888
- /* napi_finalize */ finalize_cb: 8 * 4 + 32,
1889
- /* napi_threadsafe_function_call_js */ call_js_cb: 9 * 4 + 32,
1890
- /* bool */ handles_closing: 10 * 4 + 32,
1891
- /* bool */ async_ref: 10 * 4 + 36,
1892
- /* int32_t */ mutex: 10 * 4 + 40,
1893
- /* int32_t */ cond: 10 * 4 + 44,
1894
- end: 10 * 4 + 48
1944
+ /* double */ async_id: 0,
1945
+ /* double */ trigger_async_id: 0,
1946
+ /* size_t */ queue_size: 0,
1947
+ /* bool */ is_some: 0,
1948
+ /* void* */ queue: 0,
1949
+ // Reuse uv_async_t storage as JS-side wakeup state: pending event + scheduled drain.
1950
+ async_pending: 0,
1951
+ async_u_fd: 0,
1952
+ /* size_t */ thread_count: 0,
1953
+ /* int32_t */ state: 0,
1954
+ /* atomic_uchar */ dispatch_state: 0,
1955
+ /* void* */ context: 0,
1956
+ /* size_t */ max_queue_size: 0,
1957
+ /* napi_ref */ ref: 0,
1958
+ /* napi_env */ env: 0,
1959
+ /* void* */ finalize_data: 0,
1960
+ /* napi_finalize */ finalize_cb: 0,
1961
+ /* napi_threadsafe_function_call_js */ call_js_cb: 0,
1962
+ /* bool */ handles_closing: 0,
1963
+ /* bool */ async_ref: 0,
1964
+ /* int32_t */ mutex: 0,
1965
+ /* int32_t */ cond: 0
1895
1966
  },
1896
1967
  init: function () {
1968
+ emnapiTSFN._liveSet = new Set();
1969
+ emnapiTSFN.offset.__size__ = 184 /* NapiTSFNOffset32.__size__ */;
1970
+ emnapiTSFN.offset.resource = 0 /* NapiTSFNOffset32.async_resource_resource */;
1971
+ emnapiTSFN.offset.async_id = 8 /* NapiTSFNOffset32.async_resource_async_context_async_id */;
1972
+ emnapiTSFN.offset.trigger_async_id = 16 /* NapiTSFNOffset32.async_resource_async_context_trigger_async_id */;
1973
+ emnapiTSFN.offset.queue_size = 60 /* NapiTSFNOffset32.queue_size */;
1974
+ emnapiTSFN.offset.is_some = 24 /* NapiTSFNOffset32.async_resource_is_some */;
1975
+ emnapiTSFN.offset.queue = 64 /* NapiTSFNOffset32.queue */;
1976
+ emnapiTSFN.offset.async_pending = 132 /* NapiTSFNOffset32.async_pending */;
1977
+ emnapiTSFN.offset.async_u_fd = 96 /* NapiTSFNOffset32.async_u_fd */;
1978
+ emnapiTSFN.offset.thread_count = 136 /* NapiTSFNOffset32.thread_count */;
1979
+ emnapiTSFN.offset.state = 140 /* NapiTSFNOffset32.state */;
1980
+ emnapiTSFN.offset.dispatch_state = 144 /* NapiTSFNOffset32.dispatch_state */;
1981
+ emnapiTSFN.offset.context = 148 /* NapiTSFNOffset32.context */;
1982
+ emnapiTSFN.offset.max_queue_size = 152 /* NapiTSFNOffset32.max_queue_size */;
1983
+ emnapiTSFN.offset.ref = 156 /* NapiTSFNOffset32.ref */;
1984
+ emnapiTSFN.offset.env = 160 /* NapiTSFNOffset32.env */;
1985
+ emnapiTSFN.offset.finalize_data = 164 /* NapiTSFNOffset32.finalize_data */;
1986
+ emnapiTSFN.offset.finalize_cb = 168 /* NapiTSFNOffset32.finalize_cb */;
1987
+ emnapiTSFN.offset.call_js_cb = 172 /* NapiTSFNOffset32.call_js_cb */;
1988
+ emnapiTSFN.offset.handles_closing = 176 /* NapiTSFNOffset32.handles_closing */;
1989
+ emnapiTSFN.offset.async_ref = 180 /* NapiTSFNOffset32.async_ref */;
1990
+ emnapiTSFN.offset.mutex = 32 /* NapiTSFNOffset32.mutex */;
1991
+ emnapiTSFN.offset.cond = 56 /* NapiTSFNOffset32.cond */;
1992
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
1897
1993
  if (typeof PThread !== 'undefined') {
1898
1994
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
1899
- PThread.runningWorkers.forEach(emnapiTSFN.addListener);
1995
+ Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
1900
1996
  var __original_getNewWorker_1 = PThread.getNewWorker;
1901
1997
  PThread.getNewWorker = function () {
1902
1998
  var r = __original_getNewWorker_1.apply(this, arguments);
@@ -1917,7 +2013,10 @@
1917
2013
  var type = __emnapi__.type;
1918
2014
  var payload = __emnapi__.payload;
1919
2015
  if (type === 'tsfn-send') {
1920
- emnapiTSFN.dispatch(payload.tsfn);
2016
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
2017
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
2018
+ emnapiTSFN.enqueue(payload.tsfn);
2019
+ }
1921
2020
  }
1922
2021
  }
1923
2022
  };
@@ -1939,18 +2038,40 @@
1939
2038
  }
1940
2039
  return true;
1941
2040
  },
2041
+ /**
2042
+ * When another thread grows the shared WebAssembly.Memory, this agent's
2043
+ * cached `wasmMemory.buffer` may still have the old shorter length
2044
+ * (V8 refreshes it lazily). If a pointer derived from shared memory lies
2045
+ * beyond the cached length, `wasmMemory.grow(0)` forces the agent to
2046
+ * observe the current memory size and refreshes the buffer.
2047
+ */
2048
+ ensureBufferFor: function (end) {
2049
+ var buffer = wasmMemory.buffer;
2050
+ if (end > buffer.byteLength) {
2051
+ wasmMemory.grow(0);
2052
+ buffer = wasmMemory.buffer;
2053
+ }
2054
+ return buffer;
2055
+ },
1942
2056
  initQueue: function (func) {
1943
2057
  var size = 2 * 4;
1944
2058
  var queue = _malloc(size);
1945
2059
  if (!queue)
1946
2060
  return false;
1947
- new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
2061
+ queue >>>= 0;
2062
+ new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
1948
2063
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
1949
2064
  return true;
1950
2065
  },
1951
2066
  destroyQueue: function (func) {
1952
2067
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
1953
2068
  if (queue) {
2069
+ var node = emnapiTSFN.loadSizeTypeValue(queue, false);
2070
+ while (node !== 0) {
2071
+ var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
2072
+ _free(node);
2073
+ node = next;
2074
+ }
1954
2075
  _free(queue);
1955
2076
  }
1956
2077
  },
@@ -1963,6 +2084,7 @@
1963
2084
  var node = _malloc(size);
1964
2085
  if (!node)
1965
2086
  throw new Error('OOM');
2087
+ node >>>= 0;
1966
2088
  emnapiTSFN.storeSizeTypeValue(node, data, false);
1967
2089
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
1968
2090
  if (head === 0 && tail === 0) {
@@ -1998,11 +2120,11 @@
1998
2120
  var waitCondition = function () {
1999
2121
  var queueSize = emnapiTSFN.getQueueSize(func);
2000
2122
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
2001
- var isClosing = emnapiTSFN.getIsClosing(func);
2002
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
2123
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0 /* State.kOpen */;
2003
2124
  };
2004
2125
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
2005
- return mutex.execute(function () {
2126
+ var shouldDelete = false;
2127
+ var ret = mutex.execute(function () {
2006
2128
  while (waitCondition()) {
2007
2129
  if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) {
2008
2130
  return 15 /* napi_status.napi_queue_full */;
@@ -2019,31 +2141,35 @@
2019
2141
  }
2020
2142
  cond.wait();
2021
2143
  }
2022
- if (emnapiTSFN.getIsClosing(func)) {
2023
- if (emnapiTSFN.getThreadCount(func) === 0) {
2024
- return 1 /* napi_status.napi_invalid_arg */;
2025
- }
2026
- else {
2027
- emnapiTSFN.subThreadCount(func);
2028
- return 16 /* napi_status.napi_closing */;
2029
- }
2030
- }
2031
- else {
2144
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
2032
2145
  emnapiTSFN.pushQueue(func, data);
2033
2146
  emnapiTSFN.send(func);
2034
2147
  return 0 /* napi_status.napi_ok */;
2035
2148
  }
2149
+ if (emnapiTSFN.getThreadCount(func) === 0) {
2150
+ return 1 /* napi_status.napi_invalid_arg */;
2151
+ }
2152
+ emnapiTSFN.subThreadCount(func);
2153
+ if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
2154
+ return 16 /* napi_status.napi_closing */;
2155
+ }
2156
+ shouldDelete = true;
2157
+ return 16 /* napi_status.napi_closing */;
2036
2158
  });
2159
+ if (shouldDelete) {
2160
+ emnapiTSFN.destroy(func);
2161
+ }
2162
+ return ret;
2037
2163
  },
2038
2164
  getMutex: function (func) {
2039
2165
  var index = func + emnapiTSFN.offset.mutex;
2040
2166
  var mutex = {
2041
2167
  lock: function () {
2042
2168
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
2043
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2169
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
2044
2170
  if (isBrowserMain) {
2045
2171
  while (true) {
2046
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
2172
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
2047
2173
  if (oldValue === 0) {
2048
2174
  return;
2049
2175
  }
@@ -2051,11 +2177,11 @@
2051
2177
  }
2052
2178
  else {
2053
2179
  while (true) {
2054
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
2180
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
2055
2181
  if (oldValue === 0) {
2056
2182
  return;
2057
2183
  }
2058
- Atomics.wait(i32a, 0, 1);
2184
+ Atomics.wait(i32a, 0, 10);
2059
2185
  }
2060
2186
  }
2061
2187
  },
@@ -2063,21 +2189,21 @@
2063
2189
  return new Promise<void>(resolve => {
2064
2190
  const again = (): void => { fn() }
2065
2191
  const fn = (): void => {
2066
- const i32a = new Int32Array(wasmMemory.buffer, index, 1)
2067
- const oldValue = Atomics.compareExchange(i32a, 0, 0, 1)
2192
+ const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
2193
+ const oldValue = Atomics.compareExchange(i32a, 0, 0, 10)
2068
2194
  if (oldValue === 0) {
2069
2195
  resolve()
2070
2196
  return
2071
2197
  }
2072
- (Atomics as any).waitAsync(i32a, 0, 1).value.then(again)
2198
+ (Atomics as any).waitAsync(i32a, 0, 10).value.then(again)
2073
2199
  }
2074
2200
  fn()
2075
2201
  })
2076
2202
  }, */
2077
2203
  unlock: function () {
2078
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2079
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
2080
- if (oldValue !== 1) {
2204
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
2205
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
2206
+ if (oldValue !== 10) {
2081
2207
  throw new Error('Tried to unlock while not holding the mutex');
2082
2208
  }
2083
2209
  Atomics.notify(i32a, 0, 1);
@@ -2109,14 +2235,14 @@
2109
2235
  var mutex = emnapiTSFN.getMutex(func);
2110
2236
  var cond = {
2111
2237
  wait: function () {
2112
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2238
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
2113
2239
  var value = Atomics.load(i32a, 0);
2114
2240
  mutex.unlock();
2115
2241
  Atomics.wait(i32a, 0, value);
2116
2242
  mutex.lock();
2117
2243
  },
2118
2244
  /* waitAsync () {
2119
- const i32a = new Int32Array(wasmMemory.buffer, index, 1)
2245
+ const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
2120
2246
  const value = Atomics.load(i32a, 0)
2121
2247
  mutex.unlock()
2122
2248
  const lock = (): Promise<void> => mutex.lockAsync()
@@ -2127,7 +2253,7 @@
2127
2253
  }
2128
2254
  }, */
2129
2255
  signal: function () {
2130
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
2256
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
2131
2257
  Atomics.add(i32a, 0, 1);
2132
2258
  Atomics.notify(i32a, 0, 1);
2133
2259
  }
@@ -2140,15 +2266,15 @@
2140
2266
  addQueueSize: function (func) {
2141
2267
  var offset = emnapiTSFN.offset.queue_size;
2142
2268
  var arr, index;
2143
- arr = new Uint32Array(wasmMemory.buffer);
2144
- index = (func + offset) >> 2;
2269
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
2270
+ index = (func + offset) >>> 2;
2145
2271
  Atomics.add(arr, index, 1);
2146
2272
  },
2147
2273
  subQueueSize: function (func) {
2148
2274
  var offset = emnapiTSFN.offset.queue_size;
2149
2275
  var arr, index;
2150
- arr = new Uint32Array(wasmMemory.buffer);
2151
- index = (func + offset) >> 2;
2276
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
2277
+ index = (func + offset) >>> 2;
2152
2278
  Atomics.sub(arr, index, 1);
2153
2279
  },
2154
2280
  getThreadCount: function (func) {
@@ -2157,31 +2283,31 @@
2157
2283
  addThreadCount: function (func) {
2158
2284
  var offset = emnapiTSFN.offset.thread_count;
2159
2285
  var arr, index;
2160
- arr = new Uint32Array(wasmMemory.buffer);
2161
- index = (func + offset) >> 2;
2286
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
2287
+ index = (func + offset) >>> 2;
2162
2288
  Atomics.add(arr, index, 1);
2163
2289
  },
2164
2290
  subThreadCount: function (func) {
2165
2291
  var offset = emnapiTSFN.offset.thread_count;
2166
2292
  var arr, index;
2167
- arr = new Uint32Array(wasmMemory.buffer);
2168
- index = (func + offset) >> 2;
2293
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
2294
+ index = (func + offset) >>> 2;
2169
2295
  Atomics.sub(arr, index, 1);
2170
2296
  },
2171
- getIsClosing: function (func) {
2172
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
2297
+ getState: function (func) {
2298
+ return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
2173
2299
  },
2174
- setIsClosing: function (func, value) {
2175
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
2300
+ setState: function (func, value) {
2301
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
2176
2302
  },
2177
2303
  getHandlesClosing: function (func) {
2178
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
2304
+ return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
2179
2305
  },
2180
2306
  setHandlesClosing: function (func, value) {
2181
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
2307
+ Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
2182
2308
  },
2183
2309
  getDispatchState: function (func) {
2184
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
2310
+ return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
2185
2311
  },
2186
2312
  getContext: function (func) {
2187
2313
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -2211,68 +2337,98 @@
2211
2337
  var ret;
2212
2338
  var arr;
2213
2339
  if (unsigned) {
2214
- arr = new Uint32Array(wasmMemory.buffer);
2215
- ret = Atomics.load(arr, offset >> 2);
2340
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
2341
+ ret = Atomics.load(arr, offset >>> 2);
2216
2342
  return ret;
2217
2343
  }
2218
2344
  else {
2219
- arr = new Int32Array(wasmMemory.buffer);
2220
- ret = Atomics.load(arr, offset >> 2);
2345
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
2346
+ ret = Atomics.load(arr, offset >>> 2);
2221
2347
  return ret;
2222
2348
  }
2223
2349
  },
2224
2350
  storeSizeTypeValue: function (offset, value, unsigned) {
2225
2351
  var arr;
2226
2352
  if (unsigned) {
2227
- arr = new Uint32Array(wasmMemory.buffer);
2228
- Atomics.store(arr, offset >> 2, value);
2353
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
2354
+ Atomics.store(arr, offset >>> 2, value);
2229
2355
  return undefined;
2230
2356
  }
2231
2357
  else {
2232
- arr = new Int32Array(wasmMemory.buffer);
2233
- Atomics.store(arr, offset >> 2, value >>> 0);
2358
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
2359
+ Atomics.store(arr, offset >>> 2, value >>> 0);
2234
2360
  return undefined;
2235
2361
  }
2236
2362
  },
2363
+ releaseResources: function (func) {
2364
+ if (emnapiTSFN.getState(func) !== 2 /* State.kClosed */) {
2365
+ emnapiTSFN.setState(func, 2 /* State.kClosed */);
2366
+ var env = emnapiTSFN.getEnv(func);
2367
+ var envObject = emnapiCtx.envStore.get(env);
2368
+ var ref = emnapiTSFN.getRef(func);
2369
+ if (ref) {
2370
+ emnapiCtx.refStore.get(ref).dispose();
2371
+ }
2372
+ var resource = emnapiTSFN.getResource(func);
2373
+ emnapiCtx.refStore.get(resource).dispose();
2374
+ emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
2375
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2376
+ HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
2377
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
2378
+ envObject.unref();
2379
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
2380
+ var asyncRefOffset = asyncRefAddress >>> 2;
2381
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
2382
+ if (Atomics.load(arr, asyncRefOffset) > 0) {
2383
+ Atomics.store(arr, asyncRefOffset, 0);
2384
+ emnapiCtx.decreaseWaitingRequestCounter();
2385
+ }
2386
+ if (emnapiNodeBinding) {
2387
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
2388
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
2389
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
2390
+ _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
2391
+ }
2392
+ }
2393
+ },
2237
2394
  destroy: function (func) {
2395
+ emnapiTSFN._liveSet.delete(func);
2238
2396
  emnapiTSFN.destroyQueue(func);
2239
- var env = emnapiTSFN.getEnv(func);
2240
- var envObject = emnapiCtx.envStore.get(env);
2241
- var ref = emnapiTSFN.getRef(func);
2242
- if (ref) {
2243
- emnapiCtx.refStore.get(ref).dispose();
2244
- }
2245
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
2246
- envObject.unref();
2247
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
2248
- var arr = new Int32Array(wasmMemory.buffer);
2249
- if (Atomics.load(arr, asyncRefOffset)) {
2250
- Atomics.store(arr, asyncRefOffset, 0);
2251
- emnapiCtx.decreaseWaitingRequestCounter();
2252
- }
2253
- var resource = emnapiTSFN.getResource(func);
2254
- emnapiCtx.refStore.get(resource).dispose();
2255
- if (emnapiNodeBinding) {
2256
- var view = new DataView(wasmMemory.buffer);
2257
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
2258
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
2259
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
2260
- }
2397
+ emnapiTSFN.releaseResources(func);
2261
2398
  _free(func);
2262
2399
  },
2263
- emptyQueueAndDelete: function (func) {
2400
+ emptyQueue: function (func) {
2401
+ var drainQueue = [];
2402
+ emnapiTSFN.getMutex(func).execute(function () {
2403
+ while (emnapiTSFN.getQueueSize(func) > 0) {
2404
+ drainQueue.push(emnapiTSFN.shiftQueue(func));
2405
+ }
2406
+ });
2264
2407
  var callJsCb = emnapiTSFN.getCallJSCb(func);
2265
2408
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2266
2409
  var context = emnapiTSFN.getContext(func);
2267
2410
  var data;
2268
- while (emnapiTSFN.getQueueSize(func) > 0) {
2411
+ for (var i = 0; i < drainQueue.length; i++) {
2269
2412
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2270
- data = emnapiTSFN.shiftQueue(func);
2413
+ data = drainQueue[i];
2271
2414
  if (callJsCb) {
2272
2415
  (wasmTable.get(callJsCb))(0, 0, context, data);
2273
2416
  }
2274
2417
  }
2275
- emnapiTSFN.destroy(func);
2418
+ },
2419
+ maybeDelete: function (func) {
2420
+ var shouldDelete = false;
2421
+ emnapiTSFN.getMutex(func).execute(function () {
2422
+ if (emnapiTSFN.getThreadCount(func) > 0) {
2423
+ emnapiTSFN.releaseResources(func);
2424
+ }
2425
+ else {
2426
+ shouldDelete = true;
2427
+ }
2428
+ });
2429
+ if (shouldDelete) {
2430
+ emnapiTSFN.destroy(func);
2431
+ }
2276
2432
  },
2277
2433
  finalize: function (func) {
2278
2434
  var env = emnapiTSFN.getEnv(func);
@@ -2287,12 +2443,13 @@
2287
2443
  envObject.callFinalizerInternal(0, finalize, data, context);
2288
2444
  };
2289
2445
  try {
2446
+ emnapiTSFN.emptyQueue(func);
2290
2447
  if (finalize) {
2291
2448
  if (emnapiNodeBinding) {
2292
2449
  var resource = emnapiTSFN.getResource(func);
2293
2450
  var resource_value = emnapiCtx.refStore.get(resource).get();
2294
2451
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
2295
- var view = new DataView(wasmMemory.buffer);
2452
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
2296
2453
  var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
2297
2454
  var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
2298
2455
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
@@ -2304,7 +2461,7 @@
2304
2461
  f();
2305
2462
  }
2306
2463
  }
2307
- emnapiTSFN.emptyQueueAndDelete(func);
2464
+ emnapiTSFN.maybeDelete(func);
2308
2465
  }
2309
2466
  finally {
2310
2467
  emnapiCtx.closeScope(envObject);
@@ -2320,7 +2477,7 @@
2320
2477
  try {
2321
2478
  if (set_closing) {
2322
2479
  emnapiTSFN.getMutex(func).execute(function () {
2323
- emnapiTSFN.setIsClosing(func, 1);
2480
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
2324
2481
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
2325
2482
  emnapiTSFN.getCond(func).signal();
2326
2483
  }
@@ -2330,6 +2487,7 @@
2330
2487
  return;
2331
2488
  }
2332
2489
  emnapiTSFN.setHandlesClosing(func, 1);
2490
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
2333
2491
  emnapiCtx.feature.setImmediate(function () {
2334
2492
  emnapiTSFN.finalize(func);
2335
2493
  });
@@ -2346,10 +2504,7 @@
2346
2504
  var mutex = emnapiTSFN.getMutex(func);
2347
2505
  var cond = emnapiTSFN.getCond(func);
2348
2506
  mutex.execute(function () {
2349
- if (emnapiTSFN.getIsClosing(func)) {
2350
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
2351
- }
2352
- else {
2507
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
2353
2508
  var size = emnapiTSFN.getQueueSize(func);
2354
2509
  if (size > 0) {
2355
2510
  data = emnapiTSFN.shiftQueue(func);
@@ -2362,7 +2517,7 @@
2362
2517
  }
2363
2518
  if (size === 0) {
2364
2519
  if (emnapiTSFN.getThreadCount(func) === 0) {
2365
- emnapiTSFN.setIsClosing(func, 1);
2520
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
2366
2521
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
2367
2522
  cond.signal();
2368
2523
  }
@@ -2373,6 +2528,9 @@
2373
2528
  has_more = true;
2374
2529
  }
2375
2530
  }
2531
+ else {
2532
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
2533
+ }
2376
2534
  });
2377
2535
  if (popped_value) {
2378
2536
  var env = emnapiTSFN.getEnv(func);
@@ -2401,7 +2559,7 @@
2401
2559
  var resource = emnapiTSFN.getResource(func);
2402
2560
  var resource_value = emnapiCtx.refStore.get(resource).get();
2403
2561
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
2404
- var view = new DataView(wasmMemory.buffer);
2562
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
2405
2563
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
2406
2564
  asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
2407
2565
  triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
@@ -2420,8 +2578,9 @@
2420
2578
  dispatch: function (func) {
2421
2579
  var has_more = true;
2422
2580
  var iterations_left = 1000;
2423
- var ui32a = new Uint32Array(wasmMemory.buffer);
2424
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
2581
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
2582
+ var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
2583
+ var index = dispatchStateAddress >>> 2;
2425
2584
  while (has_more && --iterations_left !== 0) {
2426
2585
  Atomics.store(ui32a, index, 1);
2427
2586
  has_more = emnapiTSFN.dispatchOne(func);
@@ -2433,25 +2592,86 @@
2433
2592
  emnapiTSFN.send(func);
2434
2593
  }
2435
2594
  },
2436
- send: function (func) {
2437
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
2438
- if ((current_state & 1) === 1) {
2595
+ enqueue: function (func) {
2596
+ // `pending` means a worker thread has requested a wakeup that has not
2597
+ // been drained on the main thread yet.
2598
+ var pending = func + emnapiTSFN.offset.async_pending;
2599
+ // `scheduled` prevents queueing the same main-thread drain chain more than
2600
+ // once while a previous wakeup is still in flight.
2601
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
2602
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
2603
+ if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
2439
2604
  return;
2440
2605
  }
2441
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
2442
- postMessage({
2443
- __emnapi__: {
2444
- type: 'tsfn-send',
2445
- payload: {
2446
- tsfn: func
2606
+ // Match uv_async_send-style coalescing in JS: the first turn represents
2607
+ // the wakeup reaching the main thread, and the second turn performs the
2608
+ // actual TSFN drain after nearby Send/Signal calls have had a chance to
2609
+ // collapse into the shared AsyncProgressWorker state.
2610
+ emnapiCtx.feature.setImmediate(function () {
2611
+ if (!emnapiTSFN._liveSet.has(func)) {
2612
+ return;
2613
+ }
2614
+ if (Atomics.load(i32a, pending >>> 2) === 0) {
2615
+ Atomics.store(i32a, scheduled >>> 2, 0);
2616
+ return;
2617
+ }
2618
+ emnapiCtx.feature.setImmediate(function () {
2619
+ try {
2620
+ // Consume the coalesced wakeup once, then let dispatch() observe any
2621
+ // queue mutations through dispatch_state like the C implementation.
2622
+ if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
2623
+ return;
2624
+ }
2625
+ // After destroy(), the func address is freed. Skip dispatch
2626
+ // to avoid use-after-free (JS-side lifecycle check).
2627
+ if (!emnapiTSFN._liveSet.has(func)) {
2628
+ return;
2629
+ }
2630
+ emnapiTSFN.dispatch(func);
2631
+ }
2632
+ finally {
2633
+ // Allow a later wakeup to schedule a new drain chain. If another
2634
+ // worker-thread send raced with this drain, enqueue one more turn.
2635
+ if (emnapiTSFN._liveSet.has(func)) {
2636
+ Atomics.store(i32a, scheduled >>> 2, 0);
2637
+ if (Atomics.load(i32a, pending >>> 2) !== 0) {
2638
+ emnapiTSFN.enqueue(func);
2639
+ }
2447
2640
  }
2448
2641
  }
2449
2642
  });
2643
+ });
2644
+ },
2645
+ send: function (func) {
2646
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
2647
+ var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
2648
+ if ((current_state & 1) === 1) {
2649
+ return;
2450
2650
  }
2451
- else {
2452
- emnapiCtx.feature.setImmediate(function () {
2453
- emnapiTSFN.dispatch(func);
2454
- });
2651
+ var pendng = func + emnapiTSFN.offset.async_pending;
2652
+ // A wakeup is already pending, so this send only needs to leave the queued
2653
+ // work in the TSFN queue and let the existing drain pick it up.
2654
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
2655
+ return;
2656
+ }
2657
+ if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
2658
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
2659
+ // Worker threads only post a wakeup token. Main-thread draining is
2660
+ // serialized by enqueue() once the message is received.
2661
+ postMessage({
2662
+ __emnapi__: {
2663
+ type: 'tsfn-send',
2664
+ payload: {
2665
+ tsfn: func
2666
+ }
2667
+ }
2668
+ });
2669
+ }
2670
+ else {
2671
+ // On the main thread we can skip the cross-thread hop and schedule the
2672
+ // coalesced drain chain directly.
2673
+ emnapiTSFN.enqueue(func);
2674
+ }
2455
2675
  }
2456
2676
  }
2457
2677
  };
@@ -2464,6 +2684,13 @@
2464
2684
  envObject.checkGCAccess();
2465
2685
  if (!async_resource_name)
2466
2686
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2687
+ max_queue_size >>>= 0;
2688
+ initial_thread_count >>>= 0;
2689
+ env >>>= 0;
2690
+ thread_finalize_data >>>= 0;
2691
+ thread_finalize_cb >>>= 0;
2692
+ context >>>= 0;
2693
+ call_js_cb >>>= 0;
2467
2694
  max_queue_size = max_queue_size >>> 0;
2468
2695
  initial_thread_count = initial_thread_count >>> 0;
2469
2696
  if (initial_thread_count === 0) {
@@ -2472,6 +2699,7 @@
2472
2699
  if (!result)
2473
2700
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2474
2701
  var ref = 0;
2702
+ func >>>= 0;
2475
2703
  if (!func) {
2476
2704
  if (!call_js_cb)
2477
2705
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -2503,35 +2731,40 @@
2503
2731
  asyncResourceName = String(asyncResourceName);
2504
2732
  var resource_name = envObject.ensureHandleId(asyncResourceName);
2505
2733
  // tsfn create
2506
- var sizeofTSFN = emnapiTSFN.offset.end;
2734
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
2735
+ // eslint-disable-next-line prefer-const
2507
2736
  var tsfn = _malloc(sizeofTSFN);
2508
2737
  if (!tsfn)
2509
2738
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
2510
- new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
2739
+ tsfn >>>= 0;
2740
+ new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
2511
2741
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */);
2512
2742
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2513
2743
  var resource_ = resourceRef.id;
2514
2744
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2515
- HEAP_DATA_VIEW.setInt32(tsfn, resource_, true);
2745
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
2516
2746
  if (!emnapiTSFN.initQueue(tsfn)) {
2517
2747
  _free(tsfn);
2518
2748
  resourceRef.dispose();
2519
2749
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
2520
2750
  }
2521
2751
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
2752
+ HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
2522
2753
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
2523
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.context, context, true);
2754
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
2524
2755
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
2525
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.ref, ref, true);
2526
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.env, env, true);
2527
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
2528
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
2529
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
2756
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
2757
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
2758
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
2759
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
2760
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
2530
2761
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
2762
+ emnapiTSFN._liveSet.add(tsfn);
2531
2763
  envObject.ref();
2532
2764
  emnapiCtx.increaseWaitingRequestCounter();
2533
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
2534
- HEAP_DATA_VIEW.setInt32(result, tsfn, true);
2765
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
2766
+ result >>>= 0;
2767
+ HEAP_DATA_VIEW.setUint32(result, tsfn, true);
2535
2768
  return envObject.clearLastError();
2536
2769
  }
2537
2770
  /** @__sig ipp */
@@ -2540,10 +2773,12 @@
2540
2773
  abort();
2541
2774
  return 1 /* napi_status.napi_invalid_arg */;
2542
2775
  }
2776
+ func >>>= 0;
2777
+ result >>>= 0;
2543
2778
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2544
2779
  var context = emnapiTSFN.getContext(func);
2545
2780
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2546
- HEAP_DATA_VIEW.setInt32(result, context, true);
2781
+ HEAP_DATA_VIEW.setUint32(result, context, true);
2547
2782
  return 0 /* napi_status.napi_ok */;
2548
2783
  }
2549
2784
  /** @__sig ippi */
@@ -2552,6 +2787,8 @@
2552
2787
  abort();
2553
2788
  return 1 /* napi_status.napi_invalid_arg */;
2554
2789
  }
2790
+ func >>>= 0;
2791
+ data >>>= 0;
2555
2792
  return emnapiTSFN.push(func, data, mode);
2556
2793
  }
2557
2794
  /** @__sig ip */
@@ -2560,13 +2797,14 @@
2560
2797
  abort();
2561
2798
  return 1 /* napi_status.napi_invalid_arg */;
2562
2799
  }
2800
+ func >>>= 0;
2563
2801
  var mutex = emnapiTSFN.getMutex(func);
2564
2802
  return mutex.execute(function () {
2565
- if (emnapiTSFN.getIsClosing(func)) {
2566
- return 16 /* napi_status.napi_closing */;
2803
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
2804
+ emnapiTSFN.addThreadCount(func);
2805
+ return 0 /* napi_status.napi_ok */;
2567
2806
  }
2568
- emnapiTSFN.addThreadCount(func);
2569
- return 0 /* napi_status.napi_ok */;
2807
+ return 16 /* napi_status.napi_closing */;
2570
2808
  });
2571
2809
  }
2572
2810
  /** @__sig ipi */
@@ -2575,26 +2813,36 @@
2575
2813
  abort();
2576
2814
  return 1 /* napi_status.napi_invalid_arg */;
2577
2815
  }
2816
+ func >>>= 0;
2578
2817
  var mutex = emnapiTSFN.getMutex(func);
2579
2818
  var cond = emnapiTSFN.getCond(func);
2580
- return mutex.execute(function () {
2819
+ var shouldDelete = false;
2820
+ var ret = mutex.execute(function () {
2581
2821
  if (emnapiTSFN.getThreadCount(func) === 0) {
2582
2822
  return 1 /* napi_status.napi_invalid_arg */;
2583
2823
  }
2584
2824
  emnapiTSFN.subThreadCount(func);
2585
2825
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
2586
- var isClosing = emnapiTSFN.getIsClosing(func);
2587
- if (!isClosing) {
2588
- var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0;
2589
- emnapiTSFN.setIsClosing(func, isClosingValue);
2590
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
2826
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
2827
+ if (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
2828
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
2829
+ }
2830
+ if (emnapiTSFN.getState(func) === 1 /* State.kClosing */ && emnapiTSFN.getMaxQueueSize(func) > 0) {
2591
2831
  cond.signal();
2592
2832
  }
2593
2833
  emnapiTSFN.send(func);
2594
2834
  }
2595
2835
  }
2836
+ if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
2837
+ return 0 /* napi_status.napi_ok */;
2838
+ }
2839
+ shouldDelete = true;
2596
2840
  return 0 /* napi_status.napi_ok */;
2597
2841
  });
2842
+ if (shouldDelete) {
2843
+ emnapiTSFN.destroy(func);
2844
+ }
2845
+ return ret;
2598
2846
  }
2599
2847
  /** @__sig ipp */
2600
2848
  function napi_unref_threadsafe_function(env, func) {
@@ -2602,11 +2850,16 @@
2602
2850
  abort();
2603
2851
  return 1 /* napi_status.napi_invalid_arg */;
2604
2852
  }
2605
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
2606
- var arr = new Int32Array(wasmMemory.buffer);
2607
- if (Atomics.load(arr, asyncRefOffset)) {
2608
- Atomics.store(arr, asyncRefOffset, 0);
2609
- emnapiCtx.decreaseWaitingRequestCounter();
2853
+ func >>>= 0;
2854
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
2855
+ var asyncRefOffset = asyncRefAddress >>> 2;
2856
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
2857
+ var currentValue = Atomics.load(arr, asyncRefOffset);
2858
+ if (currentValue > 0) {
2859
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
2860
+ if (currentValue === 1) {
2861
+ emnapiCtx.decreaseWaitingRequestCounter();
2862
+ }
2610
2863
  }
2611
2864
  return 0 /* napi_status.napi_ok */;
2612
2865
  }
@@ -2616,34 +2869,73 @@
2616
2869
  abort();
2617
2870
  return 1 /* napi_status.napi_invalid_arg */;
2618
2871
  }
2619
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
2620
- var arr = new Int32Array(wasmMemory.buffer);
2621
- if (!Atomics.load(arr, asyncRefOffset)) {
2622
- Atomics.store(arr, asyncRefOffset, 1);
2872
+ func >>>= 0;
2873
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
2874
+ var asyncRefOffset = asyncRefAddress >>> 2;
2875
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
2876
+ var currentValue = Atomics.load(arr, asyncRefOffset);
2877
+ if (!currentValue) {
2623
2878
  emnapiCtx.increaseWaitingRequestCounter();
2624
2879
  }
2880
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
2625
2881
  return 0 /* napi_status.napi_ok */;
2626
2882
  }
2627
2883
  var emnapiAWMT = {
2628
- unusedWorkers: [],
2629
- runningWorkers: [],
2630
- workQueue: [],
2884
+ pool: [],
2631
2885
  workerReady: null,
2886
+ globalAddress: 0,
2887
+ globalOffset: {
2888
+ idle_threads: 0,
2889
+ q: 1 * 4,
2890
+ next: 1 * 4,
2891
+ prev: 2 * 4,
2892
+ mutex: 3 * 4,
2893
+ cond: 4 * 4,
2894
+ exit_message: 5 * 4,
2895
+ end: 7 * 4
2896
+ },
2632
2897
  offset: {
2633
2898
  /* napi_ref */ resource: 0,
2634
2899
  /* double */ async_id: 8,
2635
2900
  /* double */ trigger_async_id: 16,
2636
2901
  /* napi_env */ env: 24,
2637
- /* void* */ data: 1 * 4 + 24,
2638
- /* napi_async_execute_callback */ execute: 2 * 4 + 24,
2639
- /* napi_async_complete_callback */ complete: 3 * 4 + 24,
2640
- end: 4 * 4 + 24
2902
+ /* int32_t */ status: 1 * 4 + 24, // 0 for pending, 1 for cancelled, 2 for completed
2903
+ queue: 2 * 4 + 24,
2904
+ queue_next: 2 * 4 + 24,
2905
+ queue_prev: 3 * 4 + 24,
2906
+ /* void* */ data: 4 * 4 + 24,
2907
+ /* napi_async_execute_callback */ execute: 5 * 4 + 24,
2908
+ /* napi_async_complete_callback */ complete: 6 * 4 + 24,
2909
+ end: 7 * 4 + 24
2910
+ },
2911
+ /**
2912
+ * When another thread grows the shared WebAssembly.Memory, this agent's
2913
+ * cached `wasmMemory.buffer` may still have the old shorter length
2914
+ * (V8 refreshes it lazily). If a pointer derived from shared memory lies
2915
+ * beyond the cached length, `wasmMemory.grow(0)` forces the agent to
2916
+ * observe the current memory size and refreshes the buffer.
2917
+ */
2918
+ ensureBufferFor: function (end) {
2919
+ var buffer = wasmMemory.buffer;
2920
+ if (end > buffer.byteLength) {
2921
+ wasmMemory.grow(0);
2922
+ buffer = wasmMemory.buffer;
2923
+ }
2924
+ return buffer;
2641
2925
  },
2642
2926
  init: function () {
2643
- emnapiAWMT.unusedWorkers = [];
2644
- emnapiAWMT.runningWorkers = [];
2645
- emnapiAWMT.workQueue = [];
2927
+ emnapiAWMT.pool = [];
2646
2928
  emnapiAWMT.workerReady = null;
2929
+ if (typeof PThread !== 'undefined') {
2930
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
2931
+ Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
2932
+ var __original_getNewWorker_1 = PThread.getNewWorker;
2933
+ PThread.getNewWorker = function () {
2934
+ var r = __original_getNewWorker_1.apply(this, arguments);
2935
+ emnapiAWMT.addListener(r);
2936
+ return r;
2937
+ };
2938
+ }
2647
2939
  },
2648
2940
  addListener: function (worker) {
2649
2941
  if (!worker)
@@ -2657,18 +2949,8 @@
2657
2949
  var type = __emnapi__.type;
2658
2950
  var payload = __emnapi__.payload;
2659
2951
  if (type === 'async-work-complete') {
2660
- emnapiCtx.decreaseWaitingRequestCounter();
2661
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
2662
- emnapiAWMT.unusedWorkers.push(worker);
2663
- emnapiAWMT.checkIdleWorker();
2664
2952
  emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */);
2665
2953
  }
2666
- else if (type === 'async-work-queue') {
2667
- emnapiAWMT.scheduleWork(payload.work);
2668
- }
2669
- else if (type === 'async-work-cancel') {
2670
- emnapiAWMT.cancelWork(payload.work);
2671
- }
2672
2954
  }
2673
2955
  };
2674
2956
  var dispose = function () {
@@ -2689,6 +2971,26 @@
2689
2971
  }
2690
2972
  return true;
2691
2973
  },
2974
+ initGlobal: function () {
2975
+ if (!emnapiAWMT.globalAddress) {
2976
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
2977
+ emnapiAWMT.globalAddress >>>= 0;
2978
+ var size = emnapiAWMT.globalOffset.end;
2979
+ var addr = emnapiAWMT.globalAddress;
2980
+ new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
2981
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
2982
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
2983
+ }
2984
+ },
2985
+ terminateWorkers: function () {
2986
+ emnapiAWMT.pool.forEach(function (w) {
2987
+ var _a, _b;
2988
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
2989
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
2990
+ w.terminate();
2991
+ });
2992
+ emnapiAWMT.pool.length = 0;
2993
+ },
2692
2994
  initWorkers: function (n) {
2693
2995
  if (ENVIRONMENT_IS_PTHREAD) {
2694
2996
  // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
@@ -2696,137 +2998,212 @@
2696
2998
  }
2697
2999
  if (emnapiAWMT.workerReady)
2698
3000
  return emnapiAWMT.workerReady;
2699
- if (typeof onCreateWorker !== 'function') {
2700
- throw new TypeError('`options.onCreateWorker` is not a function');
2701
- }
2702
- var promises = [];
2703
- var args = [];
2704
3001
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2705
3002
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2706
3003
  }
3004
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
3005
+ var args = [];
3006
+ emnapiAWMT.initGlobal();
2707
3007
  for (var i = 0; i < n; ++i) {
2708
- args.push(wasmInstance.exports.emnapi_async_worker_create());
3008
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
2709
3009
  }
2710
- try {
2711
- var _loop_1 = function (i) {
2712
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2713
- var p = PThread.loadWasmModuleToWorker(worker);
2714
- emnapiAWMT.addListener(worker);
2715
- promises.push(p.then(function () {
2716
- if (typeof worker.unref === 'function') {
2717
- worker.unref();
2718
- }
2719
- }));
2720
- emnapiAWMT.unusedWorkers.push(worker);
2721
- var arg = args[i];
2722
- worker.threadBlockBase = arg;
2723
- worker.postMessage({
2724
- __emnapi__: {
2725
- type: 'async-worker-init',
2726
- payload: { arg: arg }
2727
- }
2728
- });
2729
- };
2730
- for (var i = 0; i < n; ++i) {
2731
- _loop_1(i);
3010
+ var promises = args.map(function (index) {
3011
+ if (index === 0) {
3012
+ return Promise.reject(new Error('Failed to create async worker'));
2732
3013
  }
2733
- }
2734
- catch (err) {
2735
- for (var i = 0; i < n; ++i) {
2736
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2737
- var arg = args[i];
2738
- _free(arg);
3014
+ var worker;
3015
+ if (index < 0) {
3016
+ worker = emnapiAWMT.pool[-index - 1];
3017
+ if (worker)
3018
+ return worker.whenLoaded;
2739
3019
  }
2740
- throw err;
2741
- }
3020
+ index >>>= 0;
3021
+ var tidOffset = 20;
3022
+ var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
3023
+ var tid = view.getInt32(index + tidOffset, true);
3024
+ worker = PThread.pthreads[tid];
3025
+ return worker.whenLoaded;
3026
+ });
2742
3027
  emnapiAWMT.workerReady = Promise.all(promises);
2743
3028
  return emnapiAWMT.workerReady;
2744
3029
  },
2745
- checkIdleWorker: function () {
2746
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
2747
- var worker = emnapiAWMT.unusedWorkers.shift();
2748
- var work = emnapiAWMT.workQueue.shift();
2749
- emnapiAWMT.runningWorkers.push(worker);
2750
- worker.postMessage({
2751
- __emnapi__: {
2752
- type: 'async-work-execute',
2753
- payload: { work: work }
2754
- }
2755
- });
2756
- }
2757
- },
2758
3030
  getResource: function (work) {
2759
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
3031
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
3032
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3033
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
2760
3034
  },
2761
3035
  getExecute: function (work) {
2762
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
3036
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
3037
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3038
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
2763
3039
  },
2764
3040
  getComplete: function (work) {
2765
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
3041
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
3042
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3043
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
2766
3044
  },
2767
3045
  getEnv: function (work) {
2768
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
3046
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
3047
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3048
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
2769
3049
  },
2770
3050
  getData: function (work) {
2771
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
3051
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
3052
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3053
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
3054
+ },
3055
+ getMutex: function () {
3056
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
3057
+ var mutex = {
3058
+ lock: function () {
3059
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
3060
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
3061
+ if (isBrowserMain) {
3062
+ while (true) {
3063
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
3064
+ if (oldValue === 0) {
3065
+ return;
3066
+ }
3067
+ }
3068
+ }
3069
+ else {
3070
+ while (true) {
3071
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
3072
+ if (oldValue === 0) {
3073
+ return;
3074
+ }
3075
+ Atomics.wait(i32a, 0, 10);
3076
+ }
3077
+ }
3078
+ },
3079
+ unlock: function () {
3080
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
3081
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
3082
+ if (oldValue !== 10) {
3083
+ throw new Error('Tried to unlock while not holding the mutex');
3084
+ }
3085
+ Atomics.notify(i32a, 0, 1);
3086
+ },
3087
+ execute: function (fn) {
3088
+ mutex.lock();
3089
+ try {
3090
+ return fn();
3091
+ }
3092
+ finally {
3093
+ mutex.unlock();
3094
+ }
3095
+ }
3096
+ };
3097
+ return mutex;
3098
+ },
3099
+ getCond: function () {
3100
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
3101
+ var mutex = emnapiAWMT.getMutex();
3102
+ var cond = {
3103
+ wait: function () {
3104
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
3105
+ var value = Atomics.load(i32a, 0);
3106
+ mutex.unlock();
3107
+ Atomics.wait(i32a, 0, value);
3108
+ mutex.lock();
3109
+ },
3110
+ signal: function () {
3111
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
3112
+ Atomics.add(i32a, 0, 1);
3113
+ Atomics.notify(i32a, 0, 1);
3114
+ }
3115
+ };
3116
+ return cond;
3117
+ },
3118
+ queueInit: function (q) {
3119
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
3120
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3121
+ HEAP_DATA_VIEW.setUint32(q, q, true);
3122
+ HEAP_DATA_VIEW.setUint32(q + 4, q, true);
3123
+ },
3124
+ queueInsertTail: function (h, q) {
3125
+ emnapiAWMT.ensureBufferFor(h + 4 + 4);
3126
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
3127
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3128
+ HEAP_DATA_VIEW.setUint32(q, h, true);
3129
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3130
+ var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
3131
+ HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
3132
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3133
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
3134
+ HEAP_DATA_VIEW.setUint32(qprev, q, true);
3135
+ HEAP_DATA_VIEW.setUint32(h + 4, q, true);
3136
+ },
3137
+ queueRemove: function (q) {
3138
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
3139
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3140
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3141
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
3142
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3143
+ var qnext = HEAP_DATA_VIEW.getUint32(q, true);
3144
+ HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
3145
+ HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
3146
+ },
3147
+ queueEmpty: function (q) {
3148
+ emnapiAWMT.ensureBufferFor(q + 4);
3149
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3150
+ // eslint-disable-next-line eqeqeq
3151
+ return q == HEAP_DATA_VIEW.getUint32(q, true);
2772
3152
  },
2773
3153
  scheduleWork: function (work) {
2774
3154
  var _a;
2775
- if (ENVIRONMENT_IS_PTHREAD) {
2776
- var postMessage_1 = napiModule.postMessage;
2777
- postMessage_1({
2778
- __emnapi__: {
2779
- type: 'async-work-queue',
2780
- payload: { work: work }
2781
- }
3155
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
3156
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
3157
+ emnapiAWMT.workerReady.ready = true;
3158
+ }).catch(function (err) {
3159
+ emnapiAWMT.workerReady = null;
3160
+ throw err;
2782
3161
  });
2783
- return;
2784
3162
  }
2785
3163
  emnapiCtx.increaseWaitingRequestCounter();
2786
- emnapiAWMT.workQueue.push(work);
2787
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
2788
- emnapiAWMT.checkIdleWorker();
3164
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
3165
+ Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */);
3166
+ var mutex = emnapiAWMT.getMutex();
3167
+ var cond = emnapiAWMT.getCond();
3168
+ mutex.lock();
3169
+ try {
3170
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
2789
3171
  }
2790
- else {
2791
- var fail = function (err) {
2792
- emnapiCtx.decreaseWaitingRequestCounter();
2793
- throw err;
2794
- };
2795
- try {
2796
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
2797
- emnapiAWMT.workerReady.ready = true;
2798
- emnapiAWMT.checkIdleWorker();
2799
- }, fail);
2800
- }
2801
- catch (err) {
2802
- fail(err);
2803
- }
3172
+ catch (err) {
3173
+ emnapiCtx.decreaseWaitingRequestCounter();
3174
+ mutex.unlock();
3175
+ throw err;
3176
+ }
3177
+ emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
3178
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3179
+ if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
3180
+ cond.signal();
2804
3181
  }
3182
+ mutex.unlock();
2805
3183
  },
2806
3184
  cancelWork: function (work) {
2807
- if (ENVIRONMENT_IS_PTHREAD) {
2808
- var postMessage_2 = napiModule.postMessage;
2809
- postMessage_2({
2810
- __emnapi__: {
2811
- type: 'async-work-cancel',
2812
- payload: { work: work }
2813
- }
2814
- });
2815
- return 0 /* napi_status.napi_ok */;
3185
+ var cancelled = false;
3186
+ emnapiAWMT.getMutex().execute(function () {
3187
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
3188
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3189
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */;
3190
+ if (cancelled) {
3191
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
3192
+ }
3193
+ });
3194
+ if (!cancelled) {
3195
+ return 9 /* napi_status.napi_generic_failure */;
2816
3196
  }
2817
- var index = emnapiAWMT.workQueue.indexOf(work);
2818
- if (index !== -1) {
2819
- emnapiAWMT.workQueue.splice(index, 1);
2820
- emnapiCtx.feature.setImmediate(function () {
2821
- emnapiCtx.decreaseWaitingRequestCounter();
2822
- emnapiAWMT.checkIdleWorker();
2823
- emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
2824
- });
2825
- return 0 /* napi_status.napi_ok */;
3197
+ if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0 /* AsyncWorkStatus.Pending */, 1 /* AsyncWorkStatus.Cancelled */) !== 0 /* AsyncWorkStatus.Pending */) {
3198
+ return 9 /* napi_status.napi_generic_failure */;
2826
3199
  }
2827
- return 9 /* napi_status.napi_generic_failure */;
3200
+ emnapiCtx.feature.setImmediate(function () {
3201
+ emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
3202
+ });
3203
+ return 0 /* napi_status.napi_ok */;
2828
3204
  },
2829
3205
  callComplete: function (work, status) {
3206
+ emnapiCtx.decreaseWaitingRequestCounter();
2830
3207
  var complete = emnapiAWMT.getComplete(work);
2831
3208
  var env = emnapiAWMT.getEnv(work);
2832
3209
  var data = emnapiAWMT.getData(work);
@@ -2844,7 +3221,7 @@
2844
3221
  var resource = emnapiAWMT.getResource(work);
2845
3222
  var resource_value = emnapiCtx.refStore.get(resource).get();
2846
3223
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
2847
- var view = new DataView(wasmMemory.buffer);
3224
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
2848
3225
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
2849
3226
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
2850
3227
  emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
@@ -2861,6 +3238,7 @@
2861
3238
  }
2862
3239
  }
2863
3240
  };
3241
+ emnapiAWMT.init();
2864
3242
  /** @__sig ippppppp */
2865
3243
  var napi_create_async_work = singleThreadAsyncWork
2866
3244
  ? function (env, resource, resource_name, execute, complete, data, result) {
@@ -2885,8 +3263,9 @@
2885
3263
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
2886
3264
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2887
3265
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
3266
+ result >>>= 0;
2888
3267
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2889
- HEAP_DATA_VIEW.setInt32(result, id, true);
3268
+ HEAP_DATA_VIEW.setUint32(result, id, true);
2890
3269
  return envObject.clearLastError();
2891
3270
  }
2892
3271
  : function (env, resource, resource_name, execute, complete, data, result) {
@@ -2912,19 +3291,22 @@
2912
3291
  var aw = _malloc(sizeofAW);
2913
3292
  if (!aw)
2914
3293
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
2915
- new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
3294
+ aw >>>= 0;
3295
+ new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
2916
3296
  var s = envObject.ensureHandleId(resourceObject);
2917
3297
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */);
2918
3298
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2919
3299
  var resource_ = resourceRef.id;
2920
3300
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2921
- HEAP_DATA_VIEW.setInt32(aw, resource_, true);
3301
+ HEAP_DATA_VIEW.setUint32(aw, resource_, true);
2922
3302
  _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
2923
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.env, env, true);
2924
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.execute, execute, true);
2925
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.complete, complete, true);
2926
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.data, data, true);
2927
- HEAP_DATA_VIEW.setInt32(result, aw, true);
3303
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
3304
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
3305
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
3306
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
3307
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
3308
+ result >>>= 0;
3309
+ HEAP_DATA_VIEW.setUint32(result, aw, true);
2928
3310
  return envObject.clearLastError();
2929
3311
  };
2930
3312
  /** @__sig ipp */
@@ -2937,6 +3319,7 @@
2937
3319
  envObject.checkGCAccess();
2938
3320
  if (!work)
2939
3321
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3322
+ work >>>= 0;
2940
3323
  emnapiAWST.remove(work);
2941
3324
  return envObject.clearLastError();
2942
3325
  }
@@ -2948,10 +3331,11 @@
2948
3331
  envObject.checkGCAccess();
2949
3332
  if (!work)
2950
3333
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3334
+ work >>>= 0;
2951
3335
  var resource = emnapiAWMT.getResource(work);
2952
3336
  emnapiCtx.refStore.get(resource).dispose();
2953
3337
  if (emnapiNodeBinding) {
2954
- var view = new DataView(wasmMemory.buffer);
3338
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
2955
3339
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
2956
3340
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
2957
3341
  _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
@@ -2967,6 +3351,7 @@
2967
3351
  var envObject = emnapiCtx.envStore.get(env);
2968
3352
  if (!work)
2969
3353
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3354
+ work >>>= 0;
2970
3355
  emnapiAWST.queue(work);
2971
3356
  return envObject.clearLastError();
2972
3357
  }
@@ -2976,6 +3361,7 @@
2976
3361
  var envObject = emnapiCtx.envStore.get(env);
2977
3362
  if (!work)
2978
3363
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3364
+ work >>>= 0;
2979
3365
  emnapiAWMT.scheduleWork(work);
2980
3366
  return envObject.clearLastError();
2981
3367
  };
@@ -2987,6 +3373,7 @@
2987
3373
  var envObject = emnapiCtx.envStore.get(env);
2988
3374
  if (!work)
2989
3375
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3376
+ work >>>= 0;
2990
3377
  var status = emnapiAWST.cancel(work);
2991
3378
  if (status === 0 /* napi_status.napi_ok */)
2992
3379
  return envObject.clearLastError();
@@ -2998,42 +3385,129 @@
2998
3385
  var envObject = emnapiCtx.envStore.get(env);
2999
3386
  if (!work)
3000
3387
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3388
+ work >>>= 0;
3001
3389
  var status = emnapiAWMT.cancelWork(work);
3002
3390
  if (status === 0 /* napi_status.napi_ok */)
3003
3391
  return envObject.clearLastError();
3004
3392
  return envObject.setLastError(status);
3005
3393
  };
3006
- function initWorker(startArg) {
3394
+ /** @__sig pp */
3395
+ function _emnapi_async_worker(globalAddress) {
3396
+ globalAddress >>>= 0;
3397
+ emnapiAWMT.globalAddress = globalAddress;
3398
+ var mutex = emnapiAWMT.getMutex();
3399
+ var cond = emnapiAWMT.getCond();
3400
+ mutex.lock();
3401
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
3402
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
3403
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
3404
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3405
+ for (;;) {
3406
+ emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
3407
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
3408
+ Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
3409
+ cond.wait();
3410
+ Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
3411
+ }
3412
+ var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
3413
+ if (q === exitMessageAddr) {
3414
+ cond.signal();
3415
+ mutex.unlock();
3416
+ break;
3417
+ }
3418
+ var work = q - emnapiAWMT.offset.queue;
3419
+ emnapiAWMT.queueRemove(q);
3420
+ emnapiAWMT.queueInit(q);
3421
+ mutex.unlock();
3422
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
3423
+ if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) {
3424
+ abort('unreachable');
3425
+ }
3426
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3427
+ var execute = emnapiAWMT.getExecute(work);
3428
+ var env = emnapiAWMT.getEnv(work);
3429
+ var data = emnapiAWMT.getData(work);
3430
+ (wasmTable.get(execute))(env, data);
3431
+ Atomics.store(statusBuffer, 0, 2 /* AsyncWorkStatus.Completed */);
3432
+ var postMessage_1 = napiModule.postMessage;
3433
+ postMessage_1({
3434
+ __emnapi__: {
3435
+ type: 'async-work-complete',
3436
+ payload: { work: work }
3437
+ }
3438
+ });
3439
+ mutex.lock();
3440
+ }
3441
+ return 0;
3442
+ }
3443
+ /** @__sig ipp */
3444
+ function _emnapi_spawn_worker(f, globalAddress) {
3445
+ if (typeof onCreateWorker !== 'function') {
3446
+ throw new TypeError('`options.onCreateWorker` is not a function');
3447
+ }
3448
+ var promises = [];
3449
+ var args = [];
3450
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
3451
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
3452
+ }
3453
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
3454
+ var handleError = function (e) {
3455
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
3456
+ emnapiAWMT.terminateWorkers();
3457
+ }
3458
+ };
3459
+ var ret;
3460
+ try {
3461
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
3462
+ var p = PThread.loadWasmModuleToWorker(worker_1);
3463
+ if (ENVIRONMENT_IS_NODE) {
3464
+ worker_1.on('error', handleError);
3465
+ }
3466
+ else {
3467
+ worker_1.addEventListener('error', handleError, false);
3468
+ }
3469
+ emnapiAWMT.addListener(worker_1);
3470
+ emnapiTSFN.addListener(worker_1);
3471
+ promises.push(p.then(function () {
3472
+ if (typeof worker_1.unref === 'function') {
3473
+ worker_1.unref();
3474
+ }
3475
+ }));
3476
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
3477
+ var arg = args[0];
3478
+ worker_1.threadBlockBase = arg;
3479
+ worker_1.postMessage({
3480
+ __emnapi__: {
3481
+ type: 'async-worker-init',
3482
+ payload: { arg: arg, func: [f, globalAddress] }
3483
+ }
3484
+ });
3485
+ }
3486
+ catch (err) {
3487
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3488
+ var arg = args[0];
3489
+ _free(arg);
3490
+ throw err;
3491
+ }
3492
+ return ret;
3493
+ }
3494
+ function initWorker(startArg, func) {
3007
3495
  if (napiModule.childThread) {
3008
3496
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
3009
3497
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
3010
3498
  }
3011
3499
  wasmInstance.exports.emnapi_async_worker_init(startArg);
3500
+ (wasmTable.get(func[0]))(func[1]);
3012
3501
  }
3013
3502
  else {
3014
3503
  throw new Error('startThread is only available in child threads');
3015
3504
  }
3016
3505
  }
3017
- function executeAsyncWork(work) {
3018
- if (!ENVIRONMENT_IS_PTHREAD)
3019
- return;
3020
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
3021
- var execute = emnapiAWMT.getExecute(work);
3022
- var env = emnapiAWMT.getEnv(work);
3023
- var data = emnapiAWMT.getData(work);
3024
- (wasmTable.get(execute))(env, data);
3025
- var postMessage = napiModule.postMessage;
3026
- postMessage({
3027
- __emnapi__: {
3028
- type: 'async-work-complete',
3029
- payload: { work: work }
3030
- }
3031
- });
3032
- }
3033
3506
  napiModule.initWorker = initWorker;
3034
- napiModule.executeAsyncWork = executeAsyncWork;
3035
3507
  var asyncWorkMod = /*#__PURE__*/ Object.freeze({
3036
3508
  __proto__: null,
3509
+ _emnapi_async_worker: _emnapi_async_worker,
3510
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
3037
3511
  napi_cancel_async_work: napi_cancel_async_work,
3038
3512
  napi_create_async_work: napi_create_async_work,
3039
3513
  napi_delete_async_work: napi_delete_async_work,
@@ -3056,6 +3530,10 @@
3056
3530
  emnapiExternalMemory.table = new WeakMap();
3057
3531
  emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
3058
3532
  },
3533
+ isSharedArrayBuffer: function (value) {
3534
+ return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
3535
+ (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
3536
+ },
3059
3537
  isDetachedArrayBuffer: function (arrayBuffer) {
3060
3538
  if (arrayBuffer.byteLength === 0) {
3061
3539
  try {
@@ -3099,6 +3577,7 @@
3099
3577
  var pointer = _malloc(arrayBuffer.byteLength);
3100
3578
  if (!pointer)
3101
3579
  throw new Error('Out of memory');
3580
+ pointer >>>= 0;
3102
3581
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
3103
3582
  info.address = pointer;
3104
3583
  info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
@@ -3120,8 +3599,7 @@
3120
3599
  }
3121
3600
  return view;
3122
3601
  }
3123
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
3124
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
3602
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
3125
3603
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
3126
3604
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
3127
3605
  var Ctor = info.Ctor;
@@ -3151,6 +3629,75 @@
3151
3629
  return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
3152
3630
  }
3153
3631
  };
3632
+ /**
3633
+ * Metadata layout in wasm shared memory (allocated with _malloc):
3634
+ * offset 0: refcount (int32, 4 bytes - for Atomics)
3635
+ * offset POINTER_SIZE: external_data (pointer)
3636
+ * offset 2*POINTER_SIZE: byte_length (size_t)
3637
+ * offset 3*POINTER_SIZE: finalize_cb (pointer)
3638
+ * offset 4*POINTER_SIZE: finalize_data (pointer)
3639
+ * offset 5*POINTER_SIZE: finalize_hint (pointer)
3640
+ * Total: 6 * POINTER_SIZE bytes
3641
+ */
3642
+ /**
3643
+ * @__postset
3644
+ * ```
3645
+ * emnapiExternalSAB.init();
3646
+ * ```
3647
+ */
3648
+ var emnapiExternalSAB = {
3649
+ registry: undefined,
3650
+ handleTable: new WeakMap(),
3651
+ init: function () {
3652
+ emnapiExternalSAB.handleTable = new WeakMap();
3653
+ emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
3654
+ ? new FinalizationRegistry(function (metaPtr) {
3655
+ emnapiExternalSAB.release(metaPtr);
3656
+ })
3657
+ : undefined;
3658
+ },
3659
+ allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
3660
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3661
+ var size = 4 * 6;
3662
+ // eslint-disable-next-line prefer-const
3663
+ var metaPtr = _malloc(size);
3664
+ if (!metaPtr)
3665
+ throw new Error('Out of memory');
3666
+ metaPtr >>>= 0;
3667
+ // refcount = 1
3668
+ Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
3669
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3670
+ HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
3671
+ HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
3672
+ HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
3673
+ HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
3674
+ HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
3675
+ return metaPtr;
3676
+ },
3677
+ readMeta: function (metaPtr) {
3678
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3679
+ var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
3680
+ var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
3681
+ var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
3682
+ var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
3683
+ var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
3684
+ return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
3685
+ },
3686
+ release: function (metaPtr) {
3687
+ var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
3688
+ if (oldRefcount === 1) {
3689
+ // refcount reached 0, we are the last holder
3690
+ var info = emnapiExternalSAB.readMeta(metaPtr);
3691
+ var finalize_cb = info.finalize_cb;
3692
+ if (finalize_cb) {
3693
+ var finalize_data = info.finalize_data;
3694
+ var finalize_hint = info.finalize_hint;
3695
+ (wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
3696
+ }
3697
+ _free(metaPtr);
3698
+ }
3699
+ }
3700
+ };
3154
3701
  /* eslint-disable @typescript-eslint/indent */
3155
3702
  /**
3156
3703
  * @__postset
@@ -3261,7 +3808,7 @@
3261
3808
  ptr >>>= 0;
3262
3809
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
3263
3810
  var end = ptr;
3264
- if (length === -1) {
3811
+ if (length === -1 || length === 4294967295) {
3265
3812
  for (; HEAPU8[end];)
3266
3813
  ++end;
3267
3814
  }
@@ -3352,12 +3899,12 @@
3352
3899
  return '';
3353
3900
  ptr >>>= 0;
3354
3901
  var end = ptr;
3355
- if (length === -1) {
3356
- var idx = end >> 1;
3902
+ if (length === -1 || length === 4294967295) {
3903
+ var idx = end >>> 1;
3357
3904
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
3358
3905
  while (HEAPU16[idx])
3359
3906
  ++idx;
3360
- end = idx << 1;
3907
+ end = (idx << 1) >>> 0;
3361
3908
  }
3362
3909
  else {
3363
3910
  end = ptr + (length >>> 0) * 2;
@@ -3390,12 +3937,13 @@
3390
3937
  return outPtr - startPtr;
3391
3938
  },
3392
3939
  newString: function (env, str, length, result, stringMaker) {
3940
+ length >>>= 0;
3393
3941
  if (!env)
3394
3942
  return 1 /* napi_status.napi_invalid_arg */;
3395
3943
  // @ts-expect-error
3396
3944
  var envObject = emnapiCtx.envStore.get(env);
3397
3945
  envObject.checkGCAccess();
3398
- var autoLength = length === -1;
3946
+ var autoLength = length === -1 || length === 4294967295;
3399
3947
  var sizelength = length >>> 0;
3400
3948
  if (length !== 0) {
3401
3949
  if (!str)
@@ -3405,20 +3953,23 @@
3405
3953
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3406
3954
  if (!(autoLength || (sizelength <= 2147483647)))
3407
3955
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3956
+ str >>>= 0;
3408
3957
  var strValue = stringMaker(str, autoLength, sizelength);
3958
+ result >>>= 0;
3409
3959
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3410
3960
  var value = emnapiCtx.addToCurrentScope(strValue).id;
3411
3961
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3412
- HEAP_DATA_VIEW.setInt32(result, value, true);
3962
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3413
3963
  return envObject.clearLastError();
3414
3964
  },
3415
3965
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
3966
+ length >>>= 0;
3416
3967
  if (!env)
3417
3968
  return 1 /* napi_status.napi_invalid_arg */;
3418
3969
  // @ts-expect-error
3419
3970
  var envObject = emnapiCtx.envStore.get(env);
3420
3971
  envObject.checkGCAccess();
3421
- var autoLength = length === -1;
3972
+ var autoLength = length === -1 || length === 4294967295;
3422
3973
  var sizelength = length >>> 0;
3423
3974
  if (length !== 0) {
3424
3975
  if (!str)
@@ -3464,6 +4015,7 @@
3464
4015
  if (!handle.isArray()) {
3465
4016
  return envObject.setLastError(8 /* napi_status.napi_array_expected */);
3466
4017
  }
4018
+ result >>>= 0;
3467
4019
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3468
4020
  var v = handle.value.length >>> 0;
3469
4021
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3487,19 +4039,59 @@
3487
4039
  if (!arraybuffer)
3488
4040
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3489
4041
  var handle = emnapiCtx.handleStore.get(arraybuffer);
3490
- if (!handle.isArrayBuffer()) {
4042
+ if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
3491
4043
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3492
4044
  }
3493
4045
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3494
4046
  if (data) {
4047
+ data >>>= 0;
3495
4048
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3496
4049
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
3497
- HEAP_DATA_VIEW.setInt32(data, p, true);
4050
+ HEAP_DATA_VIEW.setUint32(data, p, true);
4051
+ }
4052
+ if (byte_length) {
4053
+ byte_length >>>= 0;
4054
+ HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
4055
+ }
4056
+ return envObject.clearLastError();
4057
+ }
4058
+ /**
4059
+ * @__sig ippp
4060
+ */
4061
+ function node_api_set_prototype(env, object, value) {
4062
+ if (!env)
4063
+ return 1 /* napi_status.napi_invalid_arg */;
4064
+ // @ts-expect-error
4065
+ var envObject = emnapiCtx.envStore.get(env);
4066
+ envObject.checkGCAccess();
4067
+ if (!envObject.tryCatch.isEmpty())
4068
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4069
+ if (!envObject.canCallIntoJs())
4070
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
4071
+ envObject.clearLastError();
4072
+ try {
4073
+ if (!value)
4074
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4075
+ var obj = emnapiCtx.handleStore.get(object).value;
4076
+ if (obj == null) {
4077
+ throw new TypeError('Cannot convert undefined or null to object');
4078
+ }
4079
+ var type = typeof obj;
4080
+ var v = void 0;
4081
+ try {
4082
+ v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
4083
+ }
4084
+ catch (_) {
4085
+ return envObject.setLastError(2 /* napi_status.napi_object_expected */);
4086
+ }
4087
+ var val = emnapiCtx.handleStore.get(value).value;
4088
+ Object.setPrototypeOf(v, val);
4089
+ return envObject.getReturnStatus();
3498
4090
  }
3499
- if (byte_length) {
3500
- HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
4091
+ catch (err) {
4092
+ envObject.tryCatch.setError(err);
4093
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
3501
4094
  }
3502
- return envObject.clearLastError();
3503
4095
  }
3504
4096
  /**
3505
4097
  * @__sig ippp
@@ -3531,10 +4123,11 @@
3531
4123
  catch (_) {
3532
4124
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
3533
4125
  }
4126
+ result >>>= 0;
3534
4127
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3535
4128
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
3536
4129
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3537
- HEAP_DATA_VIEW.setInt32(result, p, true);
4130
+ HEAP_DATA_VIEW.setUint32(result, p, true);
3538
4131
  return envObject.getReturnStatus();
3539
4132
  }
3540
4133
  catch (err) {
@@ -3560,6 +4153,7 @@
3560
4153
  var v = handle.value;
3561
4154
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3562
4155
  if (type) {
4156
+ type >>>= 0;
3563
4157
  var t = void 0;
3564
4158
  if (v instanceof Int8Array) {
3565
4159
  t = 0 /* napi_typedarray_type.napi_int8_array */;
@@ -3582,6 +4176,9 @@
3582
4176
  else if (v instanceof Uint32Array) {
3583
4177
  t = 6 /* napi_typedarray_type.napi_uint32_array */;
3584
4178
  }
4179
+ else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
4180
+ t = 11 /* napi_typedarray_type.napi_float16_array */;
4181
+ }
3585
4182
  else if (v instanceof Float32Array) {
3586
4183
  t = 7 /* napi_typedarray_type.napi_float32_array */;
3587
4184
  }
@@ -3600,24 +4197,27 @@
3600
4197
  }
3601
4198
  HEAP_DATA_VIEW.setInt32(type, t, true);
3602
4199
  }
4200
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
3603
4201
  if (length) {
4202
+ length >>>= 0;
3604
4203
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
3605
4204
  }
3606
- var buffer;
3607
4205
  if (data || arraybuffer) {
3608
- buffer = v.buffer;
3609
4206
  if (data) {
4207
+ data >>>= 0;
3610
4208
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3611
4209
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
3612
- HEAP_DATA_VIEW.setInt32(data, p, true);
4210
+ HEAP_DATA_VIEW.setUint32(data, p, true);
3613
4211
  }
3614
4212
  if (arraybuffer) {
4213
+ arraybuffer >>>= 0;
3615
4214
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3616
- var ab = envObject.ensureHandleId(buffer);
3617
- HEAP_DATA_VIEW.setInt32(arraybuffer, ab, true);
4215
+ var ab = envObject.ensureHandleId(v.buffer);
4216
+ HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
3618
4217
  }
3619
4218
  }
3620
4219
  if (byte_offset) {
4220
+ byte_offset >>>= 0;
3621
4221
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
3622
4222
  }
3623
4223
  return envObject.clearLastError();
@@ -3656,26 +4256,28 @@
3656
4256
  if (!handle.isDataView()) {
3657
4257
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3658
4258
  }
3659
- var v = handle.value;
4259
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
3660
4260
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3661
4261
  if (byte_length) {
4262
+ byte_length >>>= 0;
3662
4263
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
3663
4264
  }
3664
- var buffer;
3665
4265
  if (data || arraybuffer) {
3666
- buffer = v.buffer;
3667
4266
  if (data) {
4267
+ data >>>= 0;
3668
4268
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3669
4269
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
3670
- HEAP_DATA_VIEW.setInt32(data, p, true);
4270
+ HEAP_DATA_VIEW.setUint32(data, p, true);
3671
4271
  }
3672
4272
  if (arraybuffer) {
4273
+ arraybuffer >>>= 0;
3673
4274
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3674
- var ab = envObject.ensureHandleId(buffer);
3675
- HEAP_DATA_VIEW.setInt32(arraybuffer, ab, true);
4275
+ var ab = envObject.ensureHandleId(v.buffer);
4276
+ HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
3676
4277
  }
3677
4278
  }
3678
4279
  if (byte_offset) {
4280
+ byte_offset >>>= 0;
3679
4281
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
3680
4282
  }
3681
4283
  return envObject.clearLastError();
@@ -3705,6 +4307,7 @@
3705
4307
  if (!handle.isDate()) {
3706
4308
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3707
4309
  }
4310
+ result >>>= 0;
3708
4311
  v = handle.value.valueOf();
3709
4312
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3710
4313
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -3732,6 +4335,7 @@
3732
4335
  if (typeof handle.value !== 'boolean') {
3733
4336
  return envObject.setLastError(7 /* napi_status.napi_boolean_expected */);
3734
4337
  }
4338
+ result >>>= 0;
3735
4339
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3736
4340
  var r = handle.value ? 1 : 0;
3737
4341
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3755,6 +4359,7 @@
3755
4359
  if (typeof handle.value !== 'number') {
3756
4360
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3757
4361
  }
4362
+ result >>>= 0;
3758
4363
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3759
4364
  var r = handle.value;
3760
4365
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3784,6 +4389,8 @@
3784
4389
  if (typeof numberValue !== 'bigint') {
3785
4390
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3786
4391
  }
4392
+ lossless >>>= 0;
4393
+ result >>>= 0;
3787
4394
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3788
4395
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
3789
4396
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -3826,6 +4433,8 @@
3826
4433
  if (typeof numberValue !== 'bigint') {
3827
4434
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3828
4435
  }
4436
+ lossless >>>= 0;
4437
+ result >>>= 0;
3829
4438
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3830
4439
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
3831
4440
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -3863,8 +4472,12 @@
3863
4472
  return envObject.setLastError(17 /* napi_status.napi_bigint_expected */);
3864
4473
  }
3865
4474
  var isMinus = handle.value < BigInt(0);
4475
+ sign_bit >>>= 0;
4476
+ words >>>= 0;
4477
+ word_count >>>= 0;
3866
4478
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3867
4479
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
4480
+ word_count_int >>>= 0;
3868
4481
  var wordCount = 0;
3869
4482
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
3870
4483
  while (bigintValue !== BigInt(0)) {
@@ -3918,10 +4531,11 @@
3918
4531
  if (!handle.isExternal()) {
3919
4532
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3920
4533
  }
4534
+ result >>>= 0;
3921
4535
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3922
4536
  var p = handle.data();
3923
4537
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3924
- HEAP_DATA_VIEW.setInt32(result, p, true);
4538
+ HEAP_DATA_VIEW.setUint32(result, p, true);
3925
4539
  return envObject.clearLastError();
3926
4540
  }
3927
4541
  /**
@@ -3941,6 +4555,7 @@
3941
4555
  if (typeof handle.value !== 'number') {
3942
4556
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3943
4557
  }
4558
+ result >>>= 0;
3944
4559
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3945
4560
  var v = new Int32Array([handle.value])[0];
3946
4561
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3965,6 +4580,7 @@
3965
4580
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3966
4581
  }
3967
4582
  var numberValue = handle.value;
4583
+ result >>>= 0;
3968
4584
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3969
4585
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
3970
4586
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -3994,6 +4610,9 @@
3994
4610
  envObject.checkGCAccess();
3995
4611
  if (!value)
3996
4612
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4613
+ result >>>= 0;
4614
+ buf >>>= 0;
4615
+ buf_size >>>= 0;
3997
4616
  buf_size = buf_size >>> 0;
3998
4617
  var handle = emnapiCtx.handleStore.get(value);
3999
4618
  if (typeof handle.value !== 'string') {
@@ -4036,6 +4655,9 @@
4036
4655
  envObject.checkGCAccess();
4037
4656
  if (!value)
4038
4657
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4658
+ result >>>= 0;
4659
+ buf >>>= 0;
4660
+ buf_size >>>= 0;
4039
4661
  buf_size = buf_size >>> 0;
4040
4662
  var handle = emnapiCtx.handleStore.get(value);
4041
4663
  if (typeof handle.value !== 'string') {
@@ -4072,6 +4694,9 @@
4072
4694
  envObject.checkGCAccess();
4073
4695
  if (!value)
4074
4696
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4697
+ result >>>= 0;
4698
+ buf >>>= 0;
4699
+ buf_size >>>= 0;
4075
4700
  buf_size = buf_size >>> 0;
4076
4701
  var handle = emnapiCtx.handleStore.get(value);
4077
4702
  if (typeof handle.value !== 'string') {
@@ -4112,6 +4737,7 @@
4112
4737
  if (typeof handle.value !== 'number') {
4113
4738
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
4114
4739
  }
4740
+ result >>>= 0;
4115
4741
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4116
4742
  var v = new Uint32Array([handle.value])[0];
4117
4743
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -4138,7 +4764,8 @@
4138
4764
  napi_get_value_string_latin1: napi_get_value_string_latin1,
4139
4765
  napi_get_value_string_utf16: napi_get_value_string_utf16,
4140
4766
  napi_get_value_string_utf8: napi_get_value_string_utf8,
4141
- napi_get_value_uint32: napi_get_value_uint32
4767
+ napi_get_value_uint32: napi_get_value_uint32,
4768
+ node_api_set_prototype: node_api_set_prototype
4142
4769
  });
4143
4770
  /**
4144
4771
  * @__sig ipip
@@ -4151,10 +4778,11 @@
4151
4778
  envObject.checkGCAccess();
4152
4779
  if (!result)
4153
4780
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4781
+ result >>>= 0;
4154
4782
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4155
4783
  var v = emnapiCtx.addToCurrentScope(value).id;
4156
4784
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4157
- HEAP_DATA_VIEW.setInt32(result, v, true);
4785
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4158
4786
  return envObject.clearLastError();
4159
4787
  }
4160
4788
  /**
@@ -4168,10 +4796,11 @@
4168
4796
  envObject.checkGCAccess();
4169
4797
  if (!result)
4170
4798
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4799
+ result >>>= 0;
4171
4800
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4172
4801
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
4173
4802
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4174
- HEAP_DATA_VIEW.setInt32(result, v, true);
4803
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4175
4804
  return envObject.clearLastError();
4176
4805
  }
4177
4806
  /**
@@ -4189,8 +4818,9 @@
4189
4818
  value = Number(low);
4190
4819
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4191
4820
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4821
+ high >>>= 0;
4192
4822
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4193
- HEAP_DATA_VIEW.setInt32(high, v1, true);
4823
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
4194
4824
  return envObject.clearLastError();
4195
4825
  }
4196
4826
  /**
@@ -4204,10 +4834,11 @@
4204
4834
  envObject.checkGCAccess();
4205
4835
  if (!result)
4206
4836
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4837
+ result >>>= 0;
4207
4838
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4208
4839
  var v = emnapiCtx.addToCurrentScope(value).id;
4209
4840
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4210
- HEAP_DATA_VIEW.setInt32(result, v, true);
4841
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4211
4842
  return envObject.clearLastError();
4212
4843
  }
4213
4844
  /**
@@ -4304,8 +4935,9 @@
4304
4935
  value = low;
4305
4936
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4306
4937
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4938
+ high >>>= 0;
4307
4939
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4308
- HEAP_DATA_VIEW.setInt32(high, v1, true);
4940
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
4309
4941
  return envObject.clearLastError();
4310
4942
  }
4311
4943
  /**
@@ -4326,8 +4958,9 @@
4326
4958
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
4327
4959
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4328
4960
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4961
+ high >>>= 0;
4329
4962
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4330
- HEAP_DATA_VIEW.setInt32(high, v1, true);
4963
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
4331
4964
  return envObject.clearLastError();
4332
4965
  }
4333
4966
  /**
@@ -4352,6 +4985,8 @@
4352
4985
  }
4353
4986
  if (!result)
4354
4987
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4988
+ words >>>= 0;
4989
+ word_count >>>= 0;
4355
4990
  word_count = word_count >>> 0;
4356
4991
  if (word_count > 2147483647) {
4357
4992
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -4368,8 +5003,9 @@
4368
5003
  value += wordi << BigInt(64 * i);
4369
5004
  }
4370
5005
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
5006
+ result >>>= 0;
4371
5007
  v = emnapiCtx.addToCurrentScope(value).id;
4372
- HEAP_DATA_VIEW.setInt32(result, v, true);
5008
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4373
5009
  return envObject.getReturnStatus();
4374
5010
  }
4375
5011
  catch (err) {
@@ -4396,6 +5032,7 @@
4396
5032
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
4397
5033
  });
4398
5034
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
5035
+ utf8name >>>= 0;
4399
5036
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
4400
5037
  var f;
4401
5038
  var napiCallback = (wasmTable.get(cb));
@@ -4538,9 +5175,10 @@
4538
5175
  if (!finalize_cb)
4539
5176
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4540
5177
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint);
5178
+ result >>>= 0;
4541
5179
  referenceId = reference.id;
4542
5180
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4543
- HEAP_DATA_VIEW.setInt32(result, referenceId, true);
5181
+ HEAP_DATA_VIEW.setUint32(result, referenceId, true);
4544
5182
  }
4545
5183
  else {
4546
5184
  if (finalize_cb) {
@@ -4588,10 +5226,11 @@
4588
5226
  if (!ref)
4589
5227
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4590
5228
  if (result) {
5229
+ result >>>= 0;
4591
5230
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4592
5231
  data = ref.data();
4593
5232
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4594
- HEAP_DATA_VIEW.setInt32(result, data, true);
5233
+ HEAP_DATA_VIEW.setUint32(result, data, true);
4595
5234
  }
4596
5235
  if (action === 1 /* UnwrapAction.RemoveWrap */) {
4597
5236
  binding.wrapped = 0;
@@ -4631,12 +5270,15 @@
4631
5270
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4632
5271
  if (!constructor)
4633
5272
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5273
+ length >>>= 0;
5274
+ properties >>>= 0;
5275
+ property_count >>>= 0;
4634
5276
  property_count = property_count >>> 0;
4635
5277
  if (property_count > 0) {
4636
5278
  if (!properties)
4637
5279
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4638
5280
  }
4639
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
5281
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
4640
5282
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4641
5283
  }
4642
5284
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -4648,14 +5290,15 @@
4648
5290
  for (var i = 0; i < property_count; i++) {
4649
5291
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4650
5292
  propPtr = properties + (i * (4 * 8));
4651
- var utf8Name = HEAP_DATA_VIEW.getInt32(propPtr, true);
4652
- var name_1 = HEAP_DATA_VIEW.getInt32(propPtr + 4, true);
4653
- var method = HEAP_DATA_VIEW.getInt32(propPtr + 8, true);
4654
- var getter = HEAP_DATA_VIEW.getInt32(propPtr + 12, true);
4655
- var setter = HEAP_DATA_VIEW.getInt32(propPtr + 16, true);
4656
- var value = HEAP_DATA_VIEW.getInt32(propPtr + 20, true);
5293
+ var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
5294
+ var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
5295
+ var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
5296
+ var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
5297
+ var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
5298
+ var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
4657
5299
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
4658
- var data = HEAP_DATA_VIEW.getInt32(propPtr + 28, true);
5300
+ attributes >>>= 0;
5301
+ var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
4659
5302
  if (utf8Name) {
4660
5303
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
4661
5304
  }
@@ -4677,7 +5320,8 @@
4677
5320
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4678
5321
  var valueHandle = emnapiCtx.addToCurrentScope(F);
4679
5322
  valueHandleId = valueHandle.id;
4680
- HEAP_DATA_VIEW.setInt32(result, valueHandleId, true);
5323
+ result >>>= 0;
5324
+ HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
4681
5325
  return envObject.getReturnStatus();
4682
5326
  }
4683
5327
  catch (err) {
@@ -4725,6 +5369,7 @@
4725
5369
  if (!(value.isObject() || value.isFunction())) {
4726
5370
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
4727
5371
  }
5372
+ type_tag >>>= 0;
4728
5373
  if (!type_tag) {
4729
5374
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
4730
5375
  }
@@ -4774,6 +5419,7 @@
4774
5419
  }
4775
5420
  var binding = envObject.getObjectBinding(value.value);
4776
5421
  if (binding.tag !== null) {
5422
+ type_tag >>>= 0;
4777
5423
  var tag = binding.tag;
4778
5424
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
4779
5425
  ret = (tag[0] === typeTag[0] &&
@@ -4784,6 +5430,7 @@
4784
5430
  else {
4785
5431
  ret = false;
4786
5432
  }
5433
+ result >>>= 0;
4787
5434
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4788
5435
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
4789
5436
  return envObject.getReturnStatus();
@@ -4815,12 +5462,16 @@
4815
5462
  }
4816
5463
  var handle = handleResult.handle;
4817
5464
  var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
5465
+ finalize_data >>>= 0;
5466
+ finalize_cb >>>= 0;
5467
+ finalize_hint >>>= 0;
4818
5468
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
4819
5469
  if (result) {
5470
+ result >>>= 0;
4820
5471
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4821
5472
  var referenceId = reference.id;
4822
5473
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4823
- HEAP_DATA_VIEW.setInt32(result, referenceId, true);
5474
+ HEAP_DATA_VIEW.setUint32(result, referenceId, true);
4824
5475
  }
4825
5476
  return envObject.clearLastError();
4826
5477
  }
@@ -4864,6 +5515,9 @@
4864
5515
  try {
4865
5516
  if (!result)
4866
5517
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5518
+ byte_length >>>= 0;
5519
+ external_data >>>= 0;
5520
+ result >>>= 0;
4867
5521
  byte_length = byte_length >>> 0;
4868
5522
  if (!external_data) {
4869
5523
  byte_length = 0;
@@ -4915,6 +5569,12 @@
4915
5569
  case -1 /* emnapi_memory_view_type.emnapi_data_view */:
4916
5570
  viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 };
4917
5571
  break;
5572
+ case 11 /* emnapi_memory_view_type.emnapi_float16_array */:
5573
+ if (typeof Float16Array !== 'function') {
5574
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5575
+ }
5576
+ viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 };
5577
+ break;
4918
5578
  case -2 /* emnapi_memory_view_type.emnapi_buffer */: {
4919
5579
  if (!emnapiCtx.feature.Buffer) {
4920
5580
  throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
@@ -4943,7 +5603,7 @@
4943
5603
  }
4944
5604
  value = handle.id;
4945
5605
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4946
- HEAP_DATA_VIEW.setInt32(result, value, true);
5606
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4947
5607
  return envObject.getReturnStatus();
4948
5608
  }
4949
5609
  catch (err) {
@@ -4973,11 +5633,11 @@
4973
5633
  offset = offset !== null && offset !== void 0 ? offset : 0;
4974
5634
  offset = offset >>> 0;
4975
5635
  var view;
4976
- if (arrayBufferOrView instanceof ArrayBuffer) {
5636
+ if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
4977
5637
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
4978
5638
  if (!pointer)
4979
5639
  throw new Error('Unknown ArrayBuffer address');
4980
- if (typeof len !== 'number' || len === -1) {
5640
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
4981
5641
  len = arrayBufferOrView.byteLength - offset;
4982
5642
  }
4983
5643
  len = len >>> 0;
@@ -4999,7 +5659,7 @@
4999
5659
  var pointer = viewPointerInfo.address;
5000
5660
  if (!pointer)
5001
5661
  throw new Error('Unknown ArrayBuffer address');
5002
- if (typeof len !== 'number' || len === -1) {
5662
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
5003
5663
  len = latestView.byteLength - offset;
5004
5664
  }
5005
5665
  len = len >>> 0;
@@ -5036,16 +5696,20 @@
5036
5696
  try {
5037
5697
  if (!arraybuffer_or_view)
5038
5698
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5699
+ arraybuffer_or_view >>>= 0;
5700
+ offset >>>= 0;
5701
+ len >>>= 0;
5039
5702
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5040
- var handleId = HEAP_DATA_VIEW.getInt32(arraybuffer_or_view, true);
5703
+ var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
5041
5704
  var handle = envObject.ctx.handleStore.get(handleId);
5042
- if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
5705
+ if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
5043
5706
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5044
5707
  }
5045
5708
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
5046
5709
  if (handle.value !== ret) {
5710
+ arraybuffer_or_view >>>= 0;
5047
5711
  v = envObject.ensureHandleId(ret);
5048
- HEAP_DATA_VIEW.setInt32(arraybuffer_or_view, v, true);
5712
+ HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
5049
5713
  }
5050
5714
  return envObject.getReturnStatus();
5051
5715
  }
@@ -5058,7 +5722,7 @@
5058
5722
  var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
5059
5723
  var isDataView = arrayBufferOrView instanceof DataView;
5060
5724
  var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
5061
- if (!isArrayBuffer && !isTypedArray && !isDataView) {
5725
+ if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
5062
5726
  throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
5063
5727
  }
5064
5728
  var info;
@@ -5102,13 +5766,16 @@
5102
5766
  p = info.address;
5103
5767
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5104
5768
  if (address) {
5105
- HEAP_DATA_VIEW.setInt32(address, p, true);
5769
+ address >>>= 0;
5770
+ HEAP_DATA_VIEW.setUint32(address, p, true);
5106
5771
  }
5107
5772
  if (ownership) {
5773
+ ownership >>>= 0;
5108
5774
  ownershipOut = info.ownership;
5109
5775
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
5110
5776
  }
5111
5777
  if (runtime_allocated) {
5778
+ runtime_allocated >>>= 0;
5112
5779
  runtimeAllocated = info.runtimeAllocated;
5113
5780
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
5114
5781
  }
@@ -5138,22 +5805,129 @@
5138
5805
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5139
5806
  var versions = runtimeVersion.split('.')
5140
5807
  .map(function (n) { return Number(n); });
5808
+ version >>>= 0;
5141
5809
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5142
5810
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
5143
5811
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
5144
5812
  HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
5145
5813
  return envObject.clearLastError();
5146
5814
  }
5815
+ /**
5816
+ * Get the handle for an external SharedArrayBuffer.
5817
+ * Must be called on the emnapi main thread.
5818
+ * @__sig ippp
5819
+ */
5820
+ function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
5821
+ if (!env)
5822
+ return 1 /* napi_status.napi_invalid_arg */;
5823
+ // @ts-expect-error
5824
+ var envObject = emnapiCtx.envStore.get(env);
5825
+ envObject.checkGCAccess();
5826
+ if (!envObject.tryCatch.isEmpty())
5827
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5828
+ if (!envObject.canCallIntoJs())
5829
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
5830
+ envObject.clearLastError();
5831
+ try {
5832
+ if (!sharedarraybuffer)
5833
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5834
+ if (!handle)
5835
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5836
+ handle >>>= 0;
5837
+ var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
5838
+ if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
5839
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5840
+ }
5841
+ var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
5842
+ if (metaPtr === undefined) {
5843
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5844
+ }
5845
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5846
+ HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
5847
+ return envObject.getReturnStatus();
5848
+ }
5849
+ catch (err) {
5850
+ envObject.tryCatch.setError(err);
5851
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5852
+ }
5853
+ }
5854
+ /**
5855
+ * Acquire a reference to an external SharedArrayBuffer.
5856
+ * Can be called on any thread.
5857
+ * @__sig vp
5858
+ */
5859
+ function emnapi_acquire_external_sharedarraybuffer(handle) {
5860
+ handle >>>= 0;
5861
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
5862
+ }
5863
+ /**
5864
+ * Release a reference to an external SharedArrayBuffer.
5865
+ * Can be called on any thread.
5866
+ * @__sig vp
5867
+ */
5868
+ function emnapi_release_external_sharedarraybuffer(handle) {
5869
+ handle >>>= 0;
5870
+ emnapiExternalSAB.release(handle);
5871
+ }
5872
+ /**
5873
+ * Acquire a reference to an external SharedArrayBuffer on the current thread.
5874
+ * Can be called on any thread. Increments refcount and registers in
5875
+ * the current thread's FinalizationRegistry.
5876
+ * Exposed as Module.emnapiAcquireExternalSharedArrayBuffer (emscripten) or
5877
+ * napiModule.emnapi.acquireExternalSharedArrayBuffer (core).
5878
+ */
5879
+ function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
5880
+ if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
5881
+ throw new TypeError('Expected a SharedArrayBuffer');
5882
+ }
5883
+ if (!emnapiExternalSAB.registry) {
5884
+ throw new Error('FinalizationRegistry is not supported in this environment');
5885
+ }
5886
+ handle >>>= 0;
5887
+ var meta = emnapiExternalSAB.readMeta(handle);
5888
+ // eslint-disable-next-line prefer-const
5889
+ var external_data = meta.external_data;
5890
+ external_data >>>= 0;
5891
+ if (sab == null) {
5892
+ sab = new SharedArrayBuffer(meta.byte_length);
5893
+ new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
5894
+ }
5895
+ else {
5896
+ if (emnapiExternalSAB.handleTable.has(sab)) {
5897
+ return sab;
5898
+ }
5899
+ }
5900
+ // Increment refcount atomically
5901
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
5902
+ // Register in emnapiExternalMemory.table for emnapi_sync_memory support
5903
+ if (!emnapiExternalMemory.table.has(sab)) {
5904
+ if (external_data) {
5905
+ emnapiExternalMemory.table.set(sab, {
5906
+ address: external_data,
5907
+ ownership: 1 /* ReferenceOwnership.kUserland */,
5908
+ runtimeAllocated: 0
5909
+ });
5910
+ }
5911
+ }
5912
+ // Register in handleTable and FinalizationRegistry for this thread
5913
+ emnapiExternalSAB.handleTable.set(sab, handle);
5914
+ emnapiExternalSAB.registry.register(sab, handle);
5915
+ return sab;
5916
+ }
5147
5917
  var emnapiMod = /*#__PURE__*/ Object.freeze({
5148
5918
  __proto__: null,
5919
+ $emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
5149
5920
  $emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
5150
5921
  $emnapiSyncMemory: $emnapiSyncMemory,
5922
+ emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
5151
5923
  emnapi_create_memory_view: emnapi_create_memory_view,
5924
+ emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
5152
5925
  emnapi_get_memory_address: emnapi_get_memory_address,
5153
5926
  emnapi_get_runtime_version: emnapi_get_runtime_version,
5154
5927
  emnapi_is_node_binding_available: emnapi_is_node_binding_available,
5155
5928
  emnapi_is_support_bigint: emnapi_is_support_bigint,
5156
5929
  emnapi_is_support_weakref: emnapi_is_support_weakref,
5930
+ emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
5157
5931
  emnapi_sync_memory: emnapi_sync_memory
5158
5932
  });
5159
5933
  /**
@@ -5167,10 +5941,11 @@
5167
5941
  envObject.checkGCAccess();
5168
5942
  if (!result)
5169
5943
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5944
+ result >>>= 0;
5170
5945
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5171
5946
  var value = emnapiCtx.addToCurrentScope([]).id;
5172
5947
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5173
- HEAP_DATA_VIEW.setInt32(result, value, true);
5948
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5174
5949
  return envObject.clearLastError();
5175
5950
  }
5176
5951
  /**
@@ -5184,21 +5959,25 @@
5184
5959
  envObject.checkGCAccess();
5185
5960
  if (!result)
5186
5961
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5962
+ length >>>= 0;
5963
+ result >>>= 0;
5187
5964
  length = length >>> 0;
5188
5965
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5189
5966
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
5190
5967
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5191
- HEAP_DATA_VIEW.setInt32(result, value, true);
5968
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5192
5969
  return envObject.clearLastError();
5193
5970
  }
5194
- function emnapiCreateArrayBuffer(byte_length, data) {
5971
+ function emnapiCreateArrayBuffer(byte_length, data, shared) {
5972
+ byte_length >>>= 0;
5195
5973
  byte_length = byte_length >>> 0;
5196
- var arrayBuffer = new ArrayBuffer(byte_length);
5974
+ var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
5197
5975
  if (data) {
5976
+ data >>>= 0;
5198
5977
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5199
5978
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
5200
5979
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5201
- HEAP_DATA_VIEW.setInt32(data, p, true);
5980
+ HEAP_DATA_VIEW.setUint32(data, p, true);
5202
5981
  }
5203
5982
  return arrayBuffer;
5204
5983
  }
@@ -5221,10 +6000,42 @@
5221
6000
  try {
5222
6001
  if (!result)
5223
6002
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5224
- var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data);
6003
+ result >>>= 0;
6004
+ var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
6005
+ value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
6006
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6007
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6008
+ return envObject.getReturnStatus();
6009
+ }
6010
+ catch (err) {
6011
+ envObject.tryCatch.setError(err);
6012
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
6013
+ }
6014
+ }
6015
+ /**
6016
+ * @__sig ipppp
6017
+ */
6018
+ function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
6019
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
6020
+ var value;
6021
+ if (!env)
6022
+ return 1 /* napi_status.napi_invalid_arg */;
6023
+ // @ts-expect-error
6024
+ var envObject = emnapiCtx.envStore.get(env);
6025
+ envObject.checkGCAccess();
6026
+ if (!envObject.tryCatch.isEmpty())
6027
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
6028
+ if (!envObject.canCallIntoJs())
6029
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
6030
+ envObject.clearLastError();
6031
+ try {
6032
+ if (!result)
6033
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6034
+ result >>>= 0;
6035
+ var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
5225
6036
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
5226
6037
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5227
- HEAP_DATA_VIEW.setInt32(result, value, true);
6038
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5228
6039
  return envObject.getReturnStatus();
5229
6040
  }
5230
6041
  catch (err) {
@@ -5251,10 +6062,11 @@
5251
6062
  try {
5252
6063
  if (!result)
5253
6064
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6065
+ result >>>= 0;
5254
6066
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5255
6067
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
5256
6068
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5257
- HEAP_DATA_VIEW.setInt32(result, value, true);
6069
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5258
6070
  return envObject.getReturnStatus();
5259
6071
  }
5260
6072
  catch (err) {
@@ -5288,9 +6100,10 @@
5288
6100
  if (finalize_cb) {
5289
6101
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint);
5290
6102
  }
6103
+ result >>>= 0;
5291
6104
  value = externalHandle.id;
5292
6105
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5293
- HEAP_DATA_VIEW.setInt32(result, value, true);
6106
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5294
6107
  return envObject.clearLastError();
5295
6108
  }
5296
6109
  catch (err) {
@@ -5317,6 +6130,9 @@
5317
6130
  try {
5318
6131
  if (!result)
5319
6132
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6133
+ byte_length >>>= 0;
6134
+ external_data >>>= 0;
6135
+ result >>>= 0;
5320
6136
  byte_length = byte_length >>> 0;
5321
6137
  if (!external_data) {
5322
6138
  byte_length = 0;
@@ -5359,7 +6175,66 @@
5359
6175
  }
5360
6176
  value = handle.id;
5361
6177
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5362
- HEAP_DATA_VIEW.setInt32(result, value, true);
6178
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6179
+ return envObject.getReturnStatus();
6180
+ }
6181
+ catch (err) {
6182
+ envObject.tryCatch.setError(err);
6183
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
6184
+ }
6185
+ }
6186
+ /**
6187
+ * @__sig ipppppp
6188
+ */
6189
+ function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
6190
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
6191
+ var value;
6192
+ if (!env)
6193
+ return 1 /* napi_status.napi_invalid_arg */;
6194
+ // @ts-expect-error
6195
+ var envObject = emnapiCtx.envStore.get(env);
6196
+ envObject.checkGCAccess();
6197
+ if (!envObject.tryCatch.isEmpty())
6198
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
6199
+ if (!envObject.canCallIntoJs())
6200
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
6201
+ envObject.clearLastError();
6202
+ try {
6203
+ if (!result)
6204
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6205
+ byte_length >>>= 0;
6206
+ external_data >>>= 0;
6207
+ result >>>= 0;
6208
+ byte_length = byte_length >>> 0;
6209
+ if (!external_data) {
6210
+ byte_length = 0;
6211
+ }
6212
+ if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
6213
+ throw new RangeError('Memory out of range');
6214
+ }
6215
+ if (!emnapiExternalSAB.registry && finalize_cb) {
6216
+ throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
6217
+ }
6218
+ var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
6219
+ if (byte_length !== 0) {
6220
+ var u8arr = new Uint8Array(sharedArrayBuffer);
6221
+ u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
6222
+ emnapiExternalMemory.table.set(sharedArrayBuffer, {
6223
+ address: external_data,
6224
+ ownership: 1 /* ReferenceOwnership.kUserland */,
6225
+ runtimeAllocated: 0
6226
+ });
6227
+ }
6228
+ value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
6229
+ if (finalize_cb) {
6230
+ finalize_cb >>>= 0;
6231
+ finalize_hint >>>= 0;
6232
+ var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
6233
+ emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
6234
+ emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
6235
+ }
6236
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6237
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5363
6238
  return envObject.getReturnStatus();
5364
6239
  }
5365
6240
  catch (err) {
@@ -5378,10 +6253,61 @@
5378
6253
  envObject.checkGCAccess();
5379
6254
  if (!result)
5380
6255
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6256
+ result >>>= 0;
5381
6257
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5382
6258
  var value = emnapiCtx.addToCurrentScope({}).id;
5383
6259
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5384
- HEAP_DATA_VIEW.setInt32(result, value, true);
6260
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6261
+ return envObject.clearLastError();
6262
+ }
6263
+ /**
6264
+ * @__sig ipppppp
6265
+ */
6266
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
6267
+ if (!env)
6268
+ return 1 /* napi_status.napi_invalid_arg */;
6269
+ // @ts-expect-error
6270
+ var envObject = emnapiCtx.envStore.get(env);
6271
+ envObject.checkGCAccess();
6272
+ if (!result)
6273
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6274
+ property_count >>>= 0;
6275
+ property_count = property_count >>> 0;
6276
+ if (property_count > 0) {
6277
+ if (!property_names)
6278
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6279
+ if (!property_values)
6280
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6281
+ }
6282
+ var v8_prototype_or_null = prototype_or_null
6283
+ ? emnapiCtx.handleStore.get(prototype_or_null).value
6284
+ : null;
6285
+ var properties = {};
6286
+ property_names >>>= 0;
6287
+ property_values >>>= 0;
6288
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6289
+ for (var i = 0; i < property_count; i++) {
6290
+ var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
6291
+ if (!(typeof name_value === "string" || typeof name_value === "symbol"))
6292
+ return envObject.setLastError(4 /* napi_status.napi_name_expected */);
6293
+ properties[name_value] = {
6294
+ value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
6295
+ writable: true,
6296
+ enumerable: true,
6297
+ configurable: true
6298
+ };
6299
+ }
6300
+ var obj;
6301
+ try {
6302
+ obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
6303
+ }
6304
+ catch (_) {
6305
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
6306
+ }
6307
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
6308
+ var value = emnapiCtx.addToCurrentScope(obj).id;
6309
+ result >>>= 0;
6310
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5385
6311
  return envObject.clearLastError();
5386
6312
  }
5387
6313
  /**
@@ -5395,11 +6321,12 @@
5395
6321
  envObject.checkGCAccess();
5396
6322
  if (!result)
5397
6323
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6324
+ result >>>= 0;
5398
6325
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5399
6326
  if (!description) {
5400
6327
  // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars
5401
6328
  var value = emnapiCtx.addToCurrentScope(Symbol()).id;
5402
- HEAP_DATA_VIEW.setInt32(result, value, true);
6329
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5403
6330
  }
5404
6331
  else {
5405
6332
  var handle = emnapiCtx.handleStore.get(description);
@@ -5409,7 +6336,7 @@
5409
6336
  }
5410
6337
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5411
6338
  var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
5412
- HEAP_DATA_VIEW.setInt32(result, v, true);
6339
+ HEAP_DATA_VIEW.setUint32(result, v, true);
5413
6340
  }
5414
6341
  return envObject.clearLastError();
5415
6342
  }
@@ -5435,10 +6362,9 @@
5435
6362
  if (!result)
5436
6363
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5437
6364
  var handle = emnapiCtx.handleStore.get(arraybuffer);
5438
- if (!handle.isArrayBuffer()) {
5439
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5440
- }
5441
6365
  var buffer = handle.value;
6366
+ byte_offset >>>= 0;
6367
+ length >>>= 0;
5442
6368
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
5443
6369
  var _a;
5444
6370
  byte_offset = byte_offset >>> 0;
@@ -5469,37 +6395,48 @@
5469
6395
  });
5470
6396
  }
5471
6397
  }
6398
+ result >>>= 0;
5472
6399
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5473
6400
  value = emnapiCtx.addToCurrentScope(out).id;
5474
6401
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5475
- HEAP_DATA_VIEW.setInt32(result, value, true);
6402
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5476
6403
  return envObject.getReturnStatus();
5477
6404
  };
5478
- switch (type) {
5479
- case 0 /* napi_typedarray_type.napi_int8_array */:
5480
- return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
5481
- case 1 /* napi_typedarray_type.napi_uint8_array */:
5482
- return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
5483
- case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
5484
- return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
5485
- case 3 /* napi_typedarray_type.napi_int16_array */:
5486
- return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
5487
- case 4 /* napi_typedarray_type.napi_uint16_array */:
5488
- return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
5489
- case 5 /* napi_typedarray_type.napi_int32_array */:
5490
- return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
5491
- case 6 /* napi_typedarray_type.napi_uint32_array */:
5492
- return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
5493
- case 7 /* napi_typedarray_type.napi_float32_array */:
5494
- return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
5495
- case 8 /* napi_typedarray_type.napi_float64_array */:
5496
- return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
5497
- case 9 /* napi_typedarray_type.napi_bigint64_array */:
5498
- return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
5499
- case 10 /* napi_typedarray_type.napi_biguint64_array */:
5500
- return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
5501
- default:
5502
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6405
+ if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
6406
+ switch (type) {
6407
+ case 0 /* napi_typedarray_type.napi_int8_array */:
6408
+ return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
6409
+ case 1 /* napi_typedarray_type.napi_uint8_array */:
6410
+ return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
6411
+ case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
6412
+ return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
6413
+ case 3 /* napi_typedarray_type.napi_int16_array */:
6414
+ return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
6415
+ case 4 /* napi_typedarray_type.napi_uint16_array */:
6416
+ return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
6417
+ case 5 /* napi_typedarray_type.napi_int32_array */:
6418
+ return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
6419
+ case 6 /* napi_typedarray_type.napi_uint32_array */:
6420
+ return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
6421
+ case 7 /* napi_typedarray_type.napi_float32_array */:
6422
+ return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
6423
+ case 8 /* napi_typedarray_type.napi_float64_array */:
6424
+ return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
6425
+ case 9 /* napi_typedarray_type.napi_bigint64_array */:
6426
+ return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
6427
+ case 10 /* napi_typedarray_type.napi_biguint64_array */:
6428
+ return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
6429
+ case 11 /* napi_typedarray_type.napi_float16_array */:
6430
+ if (typeof Float16Array !== 'function') {
6431
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6432
+ }
6433
+ return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
6434
+ default:
6435
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6436
+ }
6437
+ }
6438
+ else {
6439
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5503
6440
  }
5504
6441
  }
5505
6442
  catch (err) {
@@ -5532,18 +6469,21 @@
5532
6469
  if (!Buffer) {
5533
6470
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
5534
6471
  }
6472
+ result >>>= 0;
5535
6473
  var buffer = void 0;
6474
+ size >>>= 0;
5536
6475
  size = size >>> 0;
5537
6476
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5538
6477
  if (!data || (size === 0)) {
5539
6478
  buffer = Buffer.alloc(size);
5540
6479
  value = emnapiCtx.addToCurrentScope(buffer).id;
5541
- HEAP_DATA_VIEW.setInt32(result, value, true);
6480
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5542
6481
  }
5543
6482
  else {
5544
6483
  pointer = _malloc(size);
5545
6484
  if (!pointer)
5546
6485
  throw new Error('Out of memory');
6486
+ pointer >>>= 0;
5547
6487
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
5548
6488
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
5549
6489
  var viewDescriptor = {
@@ -5556,8 +6496,9 @@
5556
6496
  emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
5557
6497
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
5558
6498
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
5559
- HEAP_DATA_VIEW.setInt32(result, value, true);
5560
- HEAP_DATA_VIEW.setInt32(data, pointer, true);
6499
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6500
+ data >>>= 0;
6501
+ HEAP_DATA_VIEW.setUint32(data, pointer, true);
5561
6502
  }
5562
6503
  return envObject.getReturnStatus();
5563
6504
  }
@@ -5589,12 +6530,15 @@
5589
6530
  if (!Buffer) {
5590
6531
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
5591
6532
  }
5592
- var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
6533
+ var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
5593
6534
  var buffer = Buffer.from(arrayBuffer);
6535
+ data >>>= 0;
6536
+ length >>>= 0;
5594
6537
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
5595
6538
  value = emnapiCtx.addToCurrentScope(buffer).id;
6539
+ result >>>= 0;
5596
6540
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5597
- HEAP_DATA_VIEW.setInt32(result, value, true);
6541
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5598
6542
  return envObject.getReturnStatus();
5599
6543
  }
5600
6544
  catch (err) {
@@ -5629,6 +6573,8 @@
5629
6573
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5630
6574
  if (!result)
5631
6575
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6576
+ byte_offset >>>= 0;
6577
+ byte_length >>>= 0;
5632
6578
  byte_offset = byte_offset >>> 0;
5633
6579
  byte_length = byte_length >>> 0;
5634
6580
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -5657,10 +6603,11 @@
5657
6603
  });
5658
6604
  }
5659
6605
  }
6606
+ result >>>= 0;
5660
6607
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5661
6608
  value = emnapiCtx.addToCurrentScope(out).id;
5662
6609
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5663
- HEAP_DATA_VIEW.setInt32(result, value, true);
6610
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5664
6611
  return envObject.getReturnStatus();
5665
6612
  }
5666
6613
  catch (err) {
@@ -5672,8 +6619,6 @@
5672
6619
  * @__sig ippppp
5673
6620
  */
5674
6621
  function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
5675
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5676
- var value;
5677
6622
  if (!env)
5678
6623
  return 1 /* napi_status.napi_invalid_arg */;
5679
6624
  // @ts-expect-error
@@ -5689,35 +6634,42 @@
5689
6634
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5690
6635
  if (!result)
5691
6636
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6637
+ byte_length >>>= 0;
6638
+ byte_offset >>>= 0;
5692
6639
  byte_length = byte_length >>> 0;
5693
6640
  byte_offset = byte_offset >>> 0;
5694
- var handle = emnapiCtx.handleStore.get(arraybuffer);
5695
- if (!handle.isArrayBuffer()) {
5696
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5697
- }
5698
- var buffer = handle.value;
5699
- if ((byte_length + byte_offset) > buffer.byteLength) {
5700
- var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
5701
- err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
5702
- throw err;
5703
- }
5704
- var dataview = new DataView(buffer, byte_offset, byte_length);
5705
- if (buffer === wasmMemory.buffer) {
5706
- if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
5707
- emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
5708
- Ctor: DataView,
5709
- address: byte_offset,
5710
- length: byte_length,
5711
- ownership: 1 /* ReferenceOwnership.kUserland */,
5712
- runtimeAllocated: 0
5713
- });
6641
+ var value = emnapiCtx.handleStore.get(arraybuffer).value;
6642
+ var createDataview = function (buffer) {
6643
+ if ((byte_length + byte_offset) > buffer.byteLength) {
6644
+ var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
6645
+ err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
6646
+ throw err;
6647
+ }
6648
+ var dataview = new DataView(buffer, byte_offset, byte_length);
6649
+ if (buffer === wasmMemory.buffer) {
6650
+ if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
6651
+ emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
6652
+ Ctor: DataView,
6653
+ address: byte_offset,
6654
+ length: byte_length,
6655
+ ownership: 1 /* ReferenceOwnership.kUserland */,
6656
+ runtimeAllocated: 0
6657
+ });
6658
+ }
5714
6659
  }
6660
+ result >>>= 0;
6661
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
6662
+ var v = emnapiCtx.addToCurrentScope(dataview).id;
6663
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6664
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6665
+ return envObject.getReturnStatus();
6666
+ };
6667
+ if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
6668
+ return createDataview(value);
6669
+ }
6670
+ else {
6671
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5715
6672
  }
5716
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5717
- value = emnapiCtx.addToCurrentScope(dataview).id;
5718
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5719
- HEAP_DATA_VIEW.setInt32(result, value, true);
5720
- return envObject.getReturnStatus();
5721
6673
  }
5722
6674
  catch (err) {
5723
6675
  envObject.tryCatch.setError(err);
@@ -5735,7 +6687,10 @@
5735
6687
  envObject.checkGCAccess();
5736
6688
  if (!result)
5737
6689
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5738
- var autoLength = length === -1;
6690
+ length >>>= 0;
6691
+ utf8description >>>= 0;
6692
+ result >>>= 0;
6693
+ var autoLength = length === -1 || length === 4294967295;
5739
6694
  var sizelength = length >>> 0;
5740
6695
  if (length !== 0) {
5741
6696
  if (!utf8description)
@@ -5748,7 +6703,7 @@
5748
6703
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5749
6704
  var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
5750
6705
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5751
- HEAP_DATA_VIEW.setInt32(result, value, true);
6706
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5752
6707
  return envObject.clearLastError();
5753
6708
  }
5754
6709
  var createMod = /*#__PURE__*/ Object.freeze({
@@ -5767,6 +6722,9 @@
5767
6722
  napi_create_symbol: napi_create_symbol,
5768
6723
  napi_create_typedarray: napi_create_typedarray,
5769
6724
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
6725
+ node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
6726
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
6727
+ node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
5770
6728
  node_api_symbol_for: node_api_symbol_for
5771
6729
  });
5772
6730
  /** @__sig ipip */
@@ -5778,10 +6736,11 @@
5778
6736
  envObject.checkGCAccess();
5779
6737
  if (!result)
5780
6738
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6739
+ result >>>= 0;
5781
6740
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5782
6741
  var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */;
5783
6742
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5784
- HEAP_DATA_VIEW.setInt32(result, v, true);
6743
+ HEAP_DATA_VIEW.setUint32(result, v, true);
5785
6744
  return envObject.clearLastError();
5786
6745
  }
5787
6746
  /** @__sig ipp */
@@ -5793,10 +6752,11 @@
5793
6752
  envObject.checkGCAccess();
5794
6753
  if (!result)
5795
6754
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6755
+ result >>>= 0;
5796
6756
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5797
6757
  var value = 5 /* GlobalHandle.GLOBAL */;
5798
6758
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5799
- HEAP_DATA_VIEW.setInt32(result, value, true);
6759
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5800
6760
  return envObject.clearLastError();
5801
6761
  }
5802
6762
  /** @__sig ipp */
@@ -5808,10 +6768,11 @@
5808
6768
  envObject.checkGCAccess();
5809
6769
  if (!result)
5810
6770
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6771
+ result >>>= 0;
5811
6772
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5812
6773
  var value = 2 /* GlobalHandle.NULL */;
5813
6774
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5814
- HEAP_DATA_VIEW.setInt32(result, value, true);
6775
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5815
6776
  return envObject.clearLastError();
5816
6777
  }
5817
6778
  /** @__sig ipp */
@@ -5823,10 +6784,11 @@
5823
6784
  envObject.checkGCAccess();
5824
6785
  if (!result)
5825
6786
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6787
+ result >>>= 0;
5826
6788
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5827
6789
  var value = 1 /* GlobalHandle.UNDEFINED */;
5828
6790
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5829
- HEAP_DATA_VIEW.setInt32(result, value, true);
6791
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5830
6792
  return envObject.clearLastError();
5831
6793
  }
5832
6794
  var globalMod = /*#__PURE__*/ Object.freeze({
@@ -5841,6 +6803,9 @@
5841
6803
  if (!env)
5842
6804
  return 1 /* napi_status.napi_invalid_arg */;
5843
6805
  var envObject = emnapiCtx.envStore.get(env);
6806
+ data >>>= 0;
6807
+ finalize_cb >>>= 0;
6808
+ finalize_hint >>>= 0;
5844
6809
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
5845
6810
  return envObject.clearLastError();
5846
6811
  }
@@ -5851,10 +6816,11 @@
5851
6816
  var envObject = emnapiCtx.envStore.get(env);
5852
6817
  if (!data)
5853
6818
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6819
+ data >>>= 0;
5854
6820
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5855
6821
  var value = envObject.getInstanceData();
5856
6822
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5857
- HEAP_DATA_VIEW.setInt32(data, value, true);
6823
+ HEAP_DATA_VIEW.setUint32(data, value, true);
5858
6824
  return envObject.clearLastError();
5859
6825
  }
5860
6826
  var envMod = /*#__PURE__*/ Object.freeze({
@@ -5864,6 +6830,9 @@
5864
6830
  });
5865
6831
  /** @__sig vpppp */
5866
6832
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
6833
+ error_code >>>= 0;
6834
+ engine_error_code >>>= 0;
6835
+ engine_reserved >>>= 0;
5867
6836
  var envObject = emnapiCtx.envStore.get(env);
5868
6837
  var lastError = envObject.lastError;
5869
6838
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -5872,10 +6841,11 @@
5872
6841
  var engineErrorCode = lastError.engineErrorCode >>> 0;
5873
6842
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5874
6843
  var engineReserved = lastError.engineReserved;
6844
+ engineReserved >>>= 0;
5875
6845
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5876
6846
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
5877
6847
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
5878
- HEAP_DATA_VIEW.setInt32(engine_reserved, engineReserved, true);
6848
+ HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
5879
6849
  }
5880
6850
  /** @__sig ipp */
5881
6851
  function napi_throw(env, error) {
@@ -5915,6 +6885,8 @@
5915
6885
  try {
5916
6886
  if (!msg)
5917
6887
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6888
+ code >>>= 0;
6889
+ msg >>>= 0;
5918
6890
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
5919
6891
  if (code)
5920
6892
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5941,6 +6913,8 @@
5941
6913
  try {
5942
6914
  if (!msg)
5943
6915
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6916
+ code >>>= 0;
6917
+ msg >>>= 0;
5944
6918
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
5945
6919
  if (code)
5946
6920
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5967,6 +6941,8 @@
5967
6941
  try {
5968
6942
  if (!msg)
5969
6943
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6944
+ code >>>= 0;
6945
+ msg >>>= 0;
5970
6946
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
5971
6947
  if (code)
5972
6948
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5993,6 +6969,8 @@
5993
6969
  try {
5994
6970
  if (!msg)
5995
6971
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6972
+ code >>>= 0;
6973
+ msg >>>= 0;
5996
6974
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
5997
6975
  if (code)
5998
6976
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -6015,6 +6993,7 @@
6015
6993
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6016
6994
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6017
6995
  var r = envObject.tryCatch.hasCaught();
6996
+ result >>>= 0;
6018
6997
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6019
6998
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6020
6999
  return envObject.clearLastError();
@@ -6042,10 +7021,11 @@
6042
7021
  }
6043
7022
  error.code = codeValue;
6044
7023
  }
7024
+ result >>>= 0;
6045
7025
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6046
7026
  var value = emnapiCtx.addToCurrentScope(error).id;
6047
7027
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6048
- HEAP_DATA_VIEW.setInt32(result, value, true);
7028
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6049
7029
  return envObject.clearLastError();
6050
7030
  }
6051
7031
  /** @__sig ipppp */
@@ -6071,10 +7051,11 @@
6071
7051
  }
6072
7052
  error.code = codeValue;
6073
7053
  }
7054
+ result >>>= 0;
6074
7055
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6075
7056
  var value = emnapiCtx.addToCurrentScope(error).id;
6076
7057
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6077
- HEAP_DATA_VIEW.setInt32(result, value, true);
7058
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6078
7059
  return envObject.clearLastError();
6079
7060
  }
6080
7061
  /** @__sig ipppp */
@@ -6100,10 +7081,11 @@
6100
7081
  }
6101
7082
  error.code = codeValue;
6102
7083
  }
7084
+ result >>>= 0;
6103
7085
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6104
7086
  var value = emnapiCtx.addToCurrentScope(error).id;
6105
7087
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6106
- HEAP_DATA_VIEW.setInt32(result, value, true);
7088
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6107
7089
  return envObject.clearLastError();
6108
7090
  }
6109
7091
  /** @__sig ipppp */
@@ -6129,10 +7111,11 @@
6129
7111
  }
6130
7112
  error.code = codeValue;
6131
7113
  }
7114
+ result >>>= 0;
6132
7115
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6133
7116
  var value = emnapiCtx.addToCurrentScope(error).id;
6134
7117
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6135
- HEAP_DATA_VIEW.setInt32(result, value, true);
7118
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6136
7119
  return envObject.clearLastError();
6137
7120
  }
6138
7121
  /** @__sig ipp */
@@ -6144,22 +7127,27 @@
6144
7127
  envObject.checkGCAccess();
6145
7128
  if (!result)
6146
7129
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7130
+ result >>>= 0;
6147
7131
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6148
7132
  if (!envObject.tryCatch.hasCaught()) {
6149
- HEAP_DATA_VIEW.setInt32(result, 1, true); // ID_UNDEFINED
7133
+ HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED
6150
7134
  return envObject.clearLastError();
6151
7135
  }
6152
7136
  else {
6153
7137
  var err = envObject.tryCatch.exception();
6154
7138
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6155
7139
  var value = envObject.ensureHandleId(err);
6156
- HEAP_DATA_VIEW.setInt32(result, value, true);
7140
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6157
7141
  envObject.tryCatch.reset();
6158
7142
  }
6159
7143
  return envObject.clearLastError();
6160
7144
  }
6161
7145
  /** @__sig vpppp */
6162
7146
  function napi_fatal_error(location, location_len, message, message_len) {
7147
+ location >>>= 0;
7148
+ location_len >>>= 0;
7149
+ message >>>= 0;
7150
+ message_len >>>= 0;
6163
7151
  var locationStr = emnapiString.UTF8ToString(location, location_len);
6164
7152
  var messageStr = emnapiString.UTF8ToString(message, message_len);
6165
7153
  if (emnapiNodeBinding) {
@@ -6216,9 +7204,23 @@
6216
7204
  node_api_throw_syntax_error: node_api_throw_syntax_error
6217
7205
  });
6218
7206
  /** @__sig ipppppp */
6219
- function napi_create_function(env, utf8name, length, cb, data, result) {
7207
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
7208
+ length >>>= 0;
7209
+ var envObject = emnapiCtx.envStore.get(env);
7210
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
7211
+ if (fresult.status !== 0 /* napi_status.napi_ok */)
7212
+ return envObject.setLastError(fresult.status);
7213
+ var f = fresult.f;
7214
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
7215
+ result >>>= 0;
6220
7216
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6221
- var value;
7217
+ var value = valueHandle.id;
7218
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7219
+ HEAP_DATA_VIEW.setUint32(result, value, true);
7220
+ return envObject.getReturnStatus();
7221
+ }
7222
+ /** @__sig ipppppp */
7223
+ function napi_create_function(env, utf8name, length, cb, data, result) {
6222
7224
  if (!env)
6223
7225
  return 1 /* napi_status.napi_invalid_arg */;
6224
7226
  // @ts-expect-error
@@ -6234,15 +7236,7 @@
6234
7236
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6235
7237
  if (!cb)
6236
7238
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6237
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
6238
- if (fresult.status !== 0 /* napi_status.napi_ok */)
6239
- return envObject.setLastError(fresult.status);
6240
- var f = fresult.f;
6241
- var valueHandle = emnapiCtx.addToCurrentScope(f);
6242
- value = valueHandle.id;
6243
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6244
- HEAP_DATA_VIEW.setInt32(result, value, true);
6245
- return envObject.getReturnStatus();
7239
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
6246
7240
  }
6247
7241
  catch (err) {
6248
7242
  envObject.tryCatch.setError(err);
@@ -6257,22 +7251,25 @@
6257
7251
  if (!cbinfo)
6258
7252
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6259
7253
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
7254
+ argc >>>= 0;
7255
+ argv >>>= 0;
6260
7256
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6261
7257
  if (argv) {
6262
7258
  if (!argc)
6263
7259
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6264
7260
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
7261
+ argcValue >>>= 0;
6265
7262
  var len = cbinfoValue.args.length;
6266
7263
  var arrlen = argcValue < len ? argcValue : len;
6267
7264
  var i = 0;
6268
7265
  for (; i < arrlen; i++) {
6269
7266
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6270
7267
  var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
6271
- HEAP_DATA_VIEW.setInt32(argv + i * 4, argVal, true);
7268
+ HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
6272
7269
  }
6273
7270
  if (i < argcValue) {
6274
7271
  for (; i < argcValue; i++) {
6275
- HEAP_DATA_VIEW.setInt32(argv + i * 4, 1, true);
7272
+ HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
6276
7273
  }
6277
7274
  }
6278
7275
  }
@@ -6280,12 +7277,14 @@
6280
7277
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
6281
7278
  }
6282
7279
  if (this_arg) {
7280
+ this_arg >>>= 0;
6283
7281
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6284
7282
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
6285
- HEAP_DATA_VIEW.setInt32(this_arg, v, true);
7283
+ HEAP_DATA_VIEW.setUint32(this_arg, v, true);
6286
7284
  }
6287
7285
  if (data) {
6288
- HEAP_DATA_VIEW.setInt32(data, cbinfoValue.data, true);
7286
+ data >>>= 0;
7287
+ HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
6289
7288
  }
6290
7289
  return envObject.clearLastError();
6291
7290
  }
@@ -6307,6 +7306,9 @@
6307
7306
  try {
6308
7307
  if (!recv)
6309
7308
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7309
+ argc >>>= 0;
7310
+ argv >>>= 0;
7311
+ result >>>= 0;
6310
7312
  argc = argc >>> 0;
6311
7313
  if (argc > 0) {
6312
7314
  if (!argv)
@@ -6321,13 +7323,13 @@
6321
7323
  var args = [];
6322
7324
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6323
7325
  for (; i < argc; i++) {
6324
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
7326
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
6325
7327
  args.push(emnapiCtx.handleStore.get(argVal).value);
6326
7328
  }
6327
7329
  var ret = v8func.apply(v8recv, args);
6328
7330
  if (result) {
6329
7331
  v = envObject.ensureHandleId(ret);
6330
- HEAP_DATA_VIEW.setInt32(result, v, true);
7332
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6331
7333
  }
6332
7334
  return envObject.clearLastError();
6333
7335
  }
@@ -6354,6 +7356,9 @@
6354
7356
  try {
6355
7357
  if (!constructor)
6356
7358
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7359
+ argc >>>= 0;
7360
+ argv >>>= 0;
7361
+ result >>>= 0;
6357
7362
  argc = argc >>> 0;
6358
7363
  if (argc > 0) {
6359
7364
  if (!argv)
@@ -6369,7 +7374,7 @@
6369
7374
  if (emnapiCtx.feature.supportReflect) {
6370
7375
  var argList = Array(argc);
6371
7376
  for (i = 0; i < argc; i++) {
6372
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
7377
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
6373
7378
  argList[i] = emnapiCtx.handleStore.get(argVal).value;
6374
7379
  }
6375
7380
  ret = Reflect.construct(Ctor, argList, Ctor);
@@ -6378,7 +7383,7 @@
6378
7383
  var args = Array(argc + 1);
6379
7384
  args[0] = undefined;
6380
7385
  for (i = 0; i < argc; i++) {
6381
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
7386
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
6382
7387
  args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
6383
7388
  }
6384
7389
  var BoundCtor = Ctor.bind.apply(Ctor, args);
@@ -6386,7 +7391,7 @@
6386
7391
  }
6387
7392
  if (result) {
6388
7393
  v = envObject.ensureHandleId(ret);
6389
- HEAP_DATA_VIEW.setInt32(result, v, true);
7394
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6390
7395
  }
6391
7396
  return envObject.getReturnStatus();
6392
7397
  }
@@ -6406,19 +7411,22 @@
6406
7411
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6407
7412
  if (!result)
6408
7413
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7414
+ result >>>= 0;
6409
7415
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
6410
7416
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
7417
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unused-vars
6411
7418
  var value = thiz == null || thiz.constructor == null
6412
7419
  ? 0
6413
7420
  : thiz instanceof fn
6414
7421
  ? envObject.ensureHandleId(thiz.constructor)
6415
7422
  : 0;
6416
7423
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6417
- HEAP_DATA_VIEW.setInt32(result, value, true);
7424
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6418
7425
  return envObject.clearLastError();
6419
7426
  }
6420
7427
  var functionMod = /*#__PURE__*/ Object.freeze({
6421
7428
  __proto__: null,
7429
+ _emnapi_create_function: _emnapi_create_function,
6422
7430
  napi_call_function: napi_call_function,
6423
7431
  napi_create_function: napi_create_function,
6424
7432
  napi_get_cb_info: napi_get_cb_info,
@@ -6436,8 +7444,9 @@
6436
7444
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6437
7445
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6438
7446
  var scope = emnapiCtx.openScope(envObject);
7447
+ result >>>= 0;
6439
7448
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6440
- HEAP_DATA_VIEW.setInt32(result, scope.id, true);
7449
+ HEAP_DATA_VIEW.setUint32(result, scope.id, true);
6441
7450
  return envObject.clearLastError();
6442
7451
  }
6443
7452
  /** @__sig ipp */
@@ -6466,8 +7475,9 @@
6466
7475
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6467
7476
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6468
7477
  var scope = emnapiCtx.openScope(envObject);
7478
+ result >>>= 0;
6469
7479
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6470
- HEAP_DATA_VIEW.setInt32(result, scope.id, true);
7480
+ HEAP_DATA_VIEW.setUint32(result, scope.id, true);
6471
7481
  return envObject.clearLastError();
6472
7482
  }
6473
7483
  /** @__sig ipp */
@@ -6500,11 +7510,13 @@
6500
7510
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6501
7511
  var scopeObject = emnapiCtx.scopeStore.get(scope);
6502
7512
  if (!scopeObject.escapeCalled()) {
7513
+ escapee >>>= 0;
7514
+ result >>>= 0;
6503
7515
  var newHandle = scopeObject.escape(escapee);
6504
7516
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6505
7517
  var value = newHandle ? newHandle.id : 0;
6506
7518
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6507
- HEAP_DATA_VIEW.setInt32(result, value, true);
7519
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6508
7520
  return envObject.clearLastError();
6509
7521
  }
6510
7522
  return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */);
@@ -6528,8 +7540,9 @@
6528
7540
  }
6529
7541
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6530
7542
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */);
7543
+ result >>>= 0;
6531
7544
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6532
- HEAP_DATA_VIEW.setInt32(result, ref.id, true);
7545
+ HEAP_DATA_VIEW.setUint32(result, ref.id, true);
6533
7546
  return envObject.clearLastError();
6534
7547
  }
6535
7548
  /** @__sig ipp */
@@ -6554,6 +7567,7 @@
6554
7567
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6555
7568
  var count = emnapiCtx.refStore.get(ref).ref();
6556
7569
  if (result) {
7570
+ result >>>= 0;
6557
7571
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6558
7572
  HEAP_DATA_VIEW.setUint32(result, count, true);
6559
7573
  }
@@ -6576,6 +7590,7 @@
6576
7590
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6577
7591
  var count = reference.unref();
6578
7592
  if (result) {
7593
+ result >>>= 0;
6579
7594
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6580
7595
  HEAP_DATA_VIEW.setUint32(result, count, true);
6581
7596
  }
@@ -6595,8 +7610,9 @@
6595
7610
  var reference = emnapiCtx.refStore.get(ref);
6596
7611
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6597
7612
  var handleId = reference.get(envObject);
7613
+ result >>>= 0;
6598
7614
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6599
- HEAP_DATA_VIEW.setInt32(result, handleId, true);
7615
+ HEAP_DATA_VIEW.setUint32(result, handleId, true);
6600
7616
  return envObject.clearLastError();
6601
7617
  }
6602
7618
  /** @__sig ippp */
@@ -6606,6 +7622,8 @@
6606
7622
  var envObject = emnapiCtx.envStore.get(env);
6607
7623
  if (!fun)
6608
7624
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7625
+ fun >>>= 0;
7626
+ arg >>>= 0;
6609
7627
  emnapiCtx.addCleanupHook(envObject, fun, arg);
6610
7628
  return 0 /* napi_status.napi_ok */;
6611
7629
  }
@@ -6616,6 +7634,8 @@
6616
7634
  var envObject = emnapiCtx.envStore.get(env);
6617
7635
  if (!fun)
6618
7636
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7637
+ fun >>>= 0;
7638
+ arg >>>= 0;
6619
7639
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
6620
7640
  return 0 /* napi_status.napi_ok */;
6621
7641
  }
@@ -6682,11 +7702,13 @@
6682
7702
  var p = new Promise(function (resolve, reject) {
6683
7703
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
6684
7704
  deferredObjectId = deferredObject.id;
6685
- HEAP_DATA_VIEW.setInt32(deferred, deferredObjectId, true);
7705
+ deferred >>>= 0;
7706
+ HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
6686
7707
  });
7708
+ promise >>>= 0;
6687
7709
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6688
7710
  value = emnapiCtx.addToCurrentScope(p).id;
6689
- HEAP_DATA_VIEW.setInt32(promise, value, true);
7711
+ HEAP_DATA_VIEW.setUint32(promise, value, true);
6690
7712
  return envObject.getReturnStatus();
6691
7713
  }
6692
7714
  catch (err) {
@@ -6758,6 +7780,7 @@
6758
7780
  if (!is_promise)
6759
7781
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6760
7782
  var h = emnapiCtx.handleStore.get(value);
7783
+ is_promise >>>= 0;
6761
7784
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6762
7785
  var r = h.isPromise() ? 1 : 0;
6763
7786
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6905,10 +7928,11 @@
6905
7928
  }
6906
7929
  }
6907
7930
  }
7931
+ result >>>= 0;
6908
7932
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6909
7933
  value = emnapiCtx.addToCurrentScope(ret).id;
6910
7934
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6911
- HEAP_DATA_VIEW.setInt32(result, value, true);
7935
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6912
7936
  return envObject.getReturnStatus();
6913
7937
  }
6914
7938
  catch (err) {
@@ -6983,6 +8007,7 @@
6983
8007
  catch (_) {
6984
8008
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6985
8009
  }
8010
+ result >>>= 0;
6986
8011
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
6987
8012
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6988
8013
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -7025,10 +8050,11 @@
7025
8050
  catch (_) {
7026
8051
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7027
8052
  }
8053
+ result >>>= 0;
7028
8054
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7029
8055
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
7030
8056
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7031
- HEAP_DATA_VIEW.setInt32(result, value, true);
8057
+ HEAP_DATA_VIEW.setUint32(result, value, true);
7032
8058
  return envObject.getReturnStatus();
7033
8059
  }
7034
8060
  catch (err) {
@@ -7072,6 +8098,7 @@
7072
8098
  }
7073
8099
  }
7074
8100
  if (result) {
8101
+ result >>>= 0;
7075
8102
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7076
8103
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
7077
8104
  }
@@ -7119,6 +8146,7 @@
7119
8146
  return envObject.setLastError(4 /* napi_status.napi_name_expected */);
7120
8147
  }
7121
8148
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
8149
+ result >>>= 0;
7122
8150
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7123
8151
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
7124
8152
  return envObject.getReturnStatus();
@@ -7152,6 +8180,7 @@
7152
8180
  if (!cname) {
7153
8181
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7154
8182
  }
8183
+ cname >>>= 0;
7155
8184
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
7156
8185
  return envObject.getReturnStatus();
7157
8186
  }
@@ -7193,6 +8222,8 @@
7193
8222
  catch (_) {
7194
8223
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7195
8224
  }
8225
+ utf8name >>>= 0;
8226
+ result >>>= 0;
7196
8227
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
7197
8228
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7198
8229
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -7236,10 +8267,12 @@
7236
8267
  catch (_) {
7237
8268
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7238
8269
  }
8270
+ utf8name >>>= 0;
8271
+ result >>>= 0;
7239
8272
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7240
8273
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
7241
8274
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7242
- HEAP_DATA_VIEW.setInt32(result, value, true);
8275
+ HEAP_DATA_VIEW.setUint32(result, value, true);
7243
8276
  return envObject.getReturnStatus();
7244
8277
  }
7245
8278
  catch (err) {
@@ -7306,6 +8339,7 @@
7306
8339
  catch (_) {
7307
8340
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7308
8341
  }
8342
+ result >>>= 0;
7309
8343
  r = ((index >>> 0) in v) ? 1 : 0;
7310
8344
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7311
8345
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -7346,10 +8380,11 @@
7346
8380
  catch (_) {
7347
8381
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
7348
8382
  }
8383
+ result >>>= 0;
7349
8384
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7350
8385
  value = envObject.ensureHandleId(v[index >>> 0]);
7351
8386
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7352
- HEAP_DATA_VIEW.setInt32(result, value, true);
8387
+ HEAP_DATA_VIEW.setUint32(result, value, true);
7353
8388
  return envObject.getReturnStatus();
7354
8389
  }
7355
8390
  catch (err) {
@@ -7390,6 +8425,7 @@
7390
8425
  }
7391
8426
  }
7392
8427
  if (result) {
8428
+ result >>>= 0;
7393
8429
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7394
8430
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
7395
8431
  }
@@ -7415,6 +8451,8 @@
7415
8451
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
7416
8452
  envObject.clearLastError();
7417
8453
  try {
8454
+ properties >>>= 0;
8455
+ property_count >>>= 0;
7418
8456
  property_count = property_count >>> 0;
7419
8457
  if (property_count > 0) {
7420
8458
  if (!properties)
@@ -7432,14 +8470,15 @@
7432
8470
  for (var i = 0; i < property_count; i++) {
7433
8471
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7434
8472
  propPtr = properties + (i * (4 * 8));
7435
- var utf8Name = HEAP_DATA_VIEW.getInt32(propPtr, true);
7436
- var name_2 = HEAP_DATA_VIEW.getInt32(propPtr + 4, true);
7437
- var method = HEAP_DATA_VIEW.getInt32(propPtr + 8, true);
7438
- var getter = HEAP_DATA_VIEW.getInt32(propPtr + 12, true);
7439
- var setter = HEAP_DATA_VIEW.getInt32(propPtr + 16, true);
7440
- var value = HEAP_DATA_VIEW.getInt32(propPtr + 20, true);
8473
+ var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
8474
+ var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
8475
+ var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
8476
+ var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
8477
+ var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
8478
+ var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
7441
8479
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
7442
- var data = HEAP_DATA_VIEW.getInt32(propPtr + 28, true);
8480
+ attributes >>>= 0;
8481
+ var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
7443
8482
  if (utf8Name) {
7444
8483
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
7445
8484
  }
@@ -7563,10 +8602,11 @@
7563
8602
  }
7564
8603
  var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value;
7565
8604
  var ret = g.eval(v8Script.value);
8605
+ result >>>= 0;
7566
8606
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7567
8607
  value = envObject.ensureHandleId(ret);
7568
8608
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7569
- HEAP_DATA_VIEW.setInt32(result, value, true);
8609
+ HEAP_DATA_VIEW.setUint32(result, value, true);
7570
8610
  status = envObject.getReturnStatus();
7571
8611
  }
7572
8612
  catch (err) {
@@ -7591,6 +8631,7 @@
7591
8631
  if (!result)
7592
8632
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7593
8633
  var v = emnapiCtx.handleStore.get(value);
8634
+ result >>>= 0;
7594
8635
  var r;
7595
8636
  if (v.isNumber()) {
7596
8637
  r = 3 /* napi_valuetype.napi_number */;
@@ -7655,9 +8696,10 @@
7655
8696
  if (!result)
7656
8697
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7657
8698
  var handle = emnapiCtx.handleStore.get(value);
8699
+ result >>>= 0;
7658
8700
  v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */;
7659
8701
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7660
- HEAP_DATA_VIEW.setInt32(result, v, true);
8702
+ HEAP_DATA_VIEW.setUint32(result, v, true);
7661
8703
  return envObject.getReturnStatus();
7662
8704
  }
7663
8705
  catch (err) {
@@ -7688,10 +8730,11 @@
7688
8730
  if (handle.isBigInt()) {
7689
8731
  throw new TypeError('Cannot convert a BigInt value to a number');
7690
8732
  }
8733
+ result >>>= 0;
7691
8734
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7692
8735
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
7693
8736
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7694
- HEAP_DATA_VIEW.setInt32(result, v, true);
8737
+ HEAP_DATA_VIEW.setUint32(result, v, true);
7695
8738
  return envObject.getReturnStatus();
7696
8739
  }
7697
8740
  catch (err) {
@@ -7722,10 +8765,11 @@
7722
8765
  if (handle.value == null) {
7723
8766
  throw new TypeError('Cannot convert undefined or null to object');
7724
8767
  }
8768
+ result >>>= 0;
7725
8769
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7726
8770
  v = envObject.ensureHandleId(Object(handle.value));
7727
8771
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7728
- HEAP_DATA_VIEW.setInt32(result, v, true);
8772
+ HEAP_DATA_VIEW.setUint32(result, v, true);
7729
8773
  return envObject.getReturnStatus();
7730
8774
  }
7731
8775
  catch (err) {
@@ -7756,10 +8800,11 @@
7756
8800
  if (handle.isSymbol()) {
7757
8801
  throw new TypeError('Cannot convert a Symbol value to a string');
7758
8802
  }
8803
+ result >>>= 0;
7759
8804
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7760
8805
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
7761
8806
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7762
- HEAP_DATA_VIEW.setInt32(result, v, true);
8807
+ HEAP_DATA_VIEW.setUint32(result, v, true);
7763
8808
  return envObject.getReturnStatus();
7764
8809
  }
7765
8810
  catch (err) {
@@ -7788,6 +8833,7 @@
7788
8833
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7789
8834
  if (!constructor)
7790
8835
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8836
+ result >>>= 0;
7791
8837
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7792
8838
  HEAP_DATA_VIEW.setInt8(result, 0, true);
7793
8839
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -7817,6 +8863,7 @@
7817
8863
  if (!result)
7818
8864
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7819
8865
  var h = emnapiCtx.handleStore.get(value);
8866
+ result >>>= 0;
7820
8867
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7821
8868
  var r = h.isArray() ? 1 : 0;
7822
8869
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7835,6 +8882,7 @@
7835
8882
  if (!result)
7836
8883
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7837
8884
  var h = emnapiCtx.handleStore.get(value);
8885
+ result >>>= 0;
7838
8886
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7839
8887
  var r = h.isArrayBuffer() ? 1 : 0;
7840
8888
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7842,6 +8890,28 @@
7842
8890
  return envObject.clearLastError();
7843
8891
  }
7844
8892
  /** @__sig ippp */
8893
+ function node_api_is_sharedarraybuffer(env, value, result) {
8894
+ if (!env)
8895
+ return 1 /* napi_status.napi_invalid_arg */;
8896
+ // @ts-expect-error
8897
+ var envObject = emnapiCtx.envStore.get(env);
8898
+ envObject.checkGCAccess();
8899
+ if (!value)
8900
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8901
+ if (!result)
8902
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8903
+ var h = emnapiCtx.handleStore.get(value);
8904
+ result >>>= 0;
8905
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8906
+ var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
8907
+ (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
8908
+ ? 1
8909
+ : 0;
8910
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
8911
+ HEAP_DATA_VIEW.setInt8(result, r, true);
8912
+ return envObject.clearLastError();
8913
+ }
8914
+ /** @__sig ippp */
7845
8915
  function napi_is_date(env, value, result) {
7846
8916
  if (!env)
7847
8917
  return 1 /* napi_status.napi_invalid_arg */;
@@ -7853,6 +8923,7 @@
7853
8923
  if (!result)
7854
8924
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7855
8925
  var h = emnapiCtx.handleStore.get(value);
8926
+ result >>>= 0;
7856
8927
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7857
8928
  var r = h.isDate() ? 1 : 0;
7858
8929
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7871,6 +8942,7 @@
7871
8942
  if (!result)
7872
8943
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7873
8944
  var val = emnapiCtx.handleStore.get(value).value;
8945
+ result >>>= 0;
7874
8946
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7875
8947
  var r = (val instanceof Error) ? 1 : 0;
7876
8948
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7889,6 +8961,7 @@
7889
8961
  if (!result)
7890
8962
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7891
8963
  var h = emnapiCtx.handleStore.get(value);
8964
+ result >>>= 0;
7892
8965
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7893
8966
  var r = h.isTypedArray() ? 1 : 0;
7894
8967
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7907,6 +8980,7 @@
7907
8980
  if (!result)
7908
8981
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7909
8982
  var h = emnapiCtx.handleStore.get(value);
8983
+ result >>>= 0;
7910
8984
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7911
8985
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
7912
8986
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7925,6 +8999,7 @@
7925
8999
  if (!result)
7926
9000
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7927
9001
  var h = emnapiCtx.handleStore.get(value);
9002
+ result >>>= 0;
7928
9003
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7929
9004
  var r = h.isDataView() ? 1 : 0;
7930
9005
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7954,6 +9029,7 @@
7954
9029
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7955
9030
  var lv = emnapiCtx.handleStore.get(lhs).value;
7956
9031
  var rv = emnapiCtx.handleStore.get(rhs).value;
9032
+ result >>>= 0;
7957
9033
  r = (lv === rv) ? 1 : 0;
7958
9034
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7959
9035
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -8008,6 +9084,7 @@
8008
9084
  if (!result)
8009
9085
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
8010
9086
  var h = emnapiCtx.handleStore.get(arraybuffer);
9087
+ result >>>= 0;
8011
9088
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
8012
9089
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
8013
9090
  try {
@@ -8044,7 +9121,8 @@
8044
9121
  napi_is_error: napi_is_error,
8045
9122
  napi_is_typedarray: napi_is_typedarray,
8046
9123
  napi_strict_equals: napi_strict_equals,
8047
- napi_typeof: napi_typeof
9124
+ napi_typeof: napi_typeof,
9125
+ node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
8048
9126
  });
8049
9127
  /** @__sig ipp */
8050
9128
  function napi_get_version(env, result) {
@@ -8065,11 +9143,13 @@
8065
9143
  });
8066
9144
  emnapiAWST.init();
8067
9145
  emnapiExternalMemory.init();
9146
+ emnapiExternalSAB.init();
8068
9147
  emnapiString.init();
8069
9148
  emnapiTSFN.init();
8070
9149
  PThread.init();
8071
9150
  napiModule.emnapi.syncMemory = $emnapiSyncMemory;
8072
9151
  napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
9152
+ napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
8073
9153
  function addImports(mod) {
8074
9154
  var keys = Object.keys(mod);
8075
9155
  for (var i = 0; i < keys.length; ++i) {
@@ -8319,6 +9399,17 @@
8319
9399
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
8320
9400
  }
8321
9401
 
9402
+ var __assign = function() {
9403
+ __assign = Object.assign || function __assign(t) {
9404
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9405
+ s = arguments[i];
9406
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
9407
+ }
9408
+ return t;
9409
+ };
9410
+ return __assign.apply(this, arguments);
9411
+ };
9412
+
8322
9413
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
8323
9414
  var e = new Error(message);
8324
9415
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
@@ -8332,7 +9423,22 @@
8332
9423
  if (typeof options.onLoad !== 'function') {
8333
9424
  throw new TypeError('options.onLoad is not a function');
8334
9425
  }
8335
- _this = _super.call(this, options) || this;
9426
+ var userOnError = options.onError;
9427
+ _this = _super.call(this, __assign(__assign({}, options), { onError: function (err, type) {
9428
+ var _a;
9429
+ var emnapi_thread_crashed = (_a = _this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
9430
+ if (typeof emnapi_thread_crashed === 'function') {
9431
+ emnapi_thread_crashed();
9432
+ } /* else {
9433
+ tryWakeUpPthreadJoin(this.instance!)
9434
+ } */
9435
+ if (typeof userOnError === 'function') {
9436
+ userOnError(err, type);
9437
+ }
9438
+ else {
9439
+ throw err;
9440
+ }
9441
+ } })) || this;
8336
9442
  _this.napiModule = undefined;
8337
9443
  return _this;
8338
9444
  }
@@ -8356,22 +9462,36 @@
8356
9462
  if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
8357
9463
  var type = e.data.__emnapi__.type;
8358
9464
  var payload_1 = e.data.__emnapi__.payload;
8359
- if (type === 'async-worker-init') {
8360
- this.handleAfterLoad(e, function () {
8361
- _this.napiModule.initWorker(payload_1.arg);
8362
- });
9465
+ try {
9466
+ if (type === 'async-worker-init') {
9467
+ this.handleAfterLoad(e, function () {
9468
+ _this.napiModule.initWorker(payload_1.arg, payload_1.func);
9469
+ });
9470
+ }
8363
9471
  }
8364
- else if (type === 'async-work-execute') {
8365
- this.handleAfterLoad(e, function () {
8366
- _this.napiModule.executeAsyncWork(payload_1.work);
8367
- });
9472
+ catch (err) {
9473
+ this.onError(err, type);
8368
9474
  }
8369
9475
  }
8370
9476
  };
8371
9477
  return MessageHandler;
8372
9478
  }(ThreadMessageHandler));
9479
+ // function tryWakeUpPthreadJoin (instance: WebAssembly.Instance): void {
9480
+ // // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/thread/pthread_join.c#L18-L21
9481
+ // const pthread_self = instance.exports.pthread_self as () => number
9482
+ // const memory = instance.exports.memory as WebAssembly.Memory
9483
+ // if (typeof pthread_self === 'function') {
9484
+ // const selfThread = pthread_self()
9485
+ // if (selfThread && memory) {
9486
+ // // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/internal/pthread_impl.h#L45
9487
+ // const detatchState = new Int32Array(memory.buffer, selfThread + 7 * 4 /** detach_state */, 1)
9488
+ // Atomics.store(detatchState, 0, 0)
9489
+ // Atomics.notify(detatchState, 0, Infinity)
9490
+ // }
9491
+ // }
9492
+ // }
8373
9493
 
8374
- var version = "1.4.3";
9494
+ var version = "1.11.1";
8375
9495
 
8376
9496
  exports.MessageHandler = MessageHandler;
8377
9497
  exports.ThreadManager = ThreadManager;