@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
@@ -1,6 +1,6 @@
1
1
  import { ThreadManager, WASIThreads, ThreadMessageHandler } from '@emnapi/wasi-threads';
2
2
  export * from '@emnapi/wasi-threads';
3
- import { __extends } from 'tslib';
3
+ import { __extends, __assign } from 'tslib';
4
4
 
5
5
  /* eslint-disable no-undef */
6
6
  var _WebAssembly = typeof WebAssembly !== 'undefined'
@@ -116,7 +116,6 @@ function createNapiModule(options) {
116
116
  filename: '',
117
117
  childThread: ENVIRONMENT_IS_PTHREAD,
118
118
  initWorker: undefined,
119
- executeAsyncWork: undefined,
120
119
  waitThreadStart: waitThreadStart,
121
120
  PThread: undefined,
122
121
  init: function (options) {
@@ -165,6 +164,11 @@ function createNapiModule(options) {
165
164
  napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
166
165
  });
167
166
  }
167
+ catch (e) {
168
+ if (e !== 'unwind') {
169
+ throw e;
170
+ }
171
+ }
168
172
  finally {
169
173
  emnapiCtx.closeScope(envObject, scope_1);
170
174
  }
@@ -312,6 +316,9 @@ function createNapiModule(options) {
312
316
  * @__sig vppp
313
317
  */
314
318
  function _emnapi_get_node_version(major, minor, patch) {
319
+ major >>>= 0;
320
+ minor >>>= 0;
321
+ patch >>>= 0;
315
322
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
316
323
  var versions = (typeof process === 'object' && process !== null &&
317
324
  typeof process.versions === 'object' && process.versions !== null &&
@@ -377,6 +384,7 @@ function createNapiModule(options) {
377
384
  */
378
385
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
379
386
  var envObject = emnapiCtx.envStore.get(env);
387
+ callback >>>= 0;
380
388
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
381
389
  }
382
390
  /**
@@ -391,6 +399,31 @@ function createNapiModule(options) {
391
399
  function _emnapi_ctx_decrease_waiting_request_counter() {
392
400
  emnapiCtx.decreaseWaitingRequestCounter();
393
401
  }
402
+ /**
403
+ * @__sig i
404
+ */
405
+ function _emnapi_is_main_runtime_thread() {
406
+ return ENVIRONMENT_IS_PTHREAD ? 0 : 1;
407
+ }
408
+ /**
409
+ * @__sig i
410
+ */
411
+ function _emnapi_is_main_browser_thread() {
412
+ return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
413
+ }
414
+ /**
415
+ * @__sig v
416
+ */
417
+ function _emnapi_unwind() {
418
+ // eslint-disable-next-line @typescript-eslint/no-throw-literal
419
+ throw 'unwind';
420
+ }
421
+ /**
422
+ * @__sig d
423
+ */
424
+ function _emnapi_get_now() {
425
+ return performance.timeOrigin + performance.now();
426
+ }
394
427
  function $emnapiSetValueI64(result, numberValue) {
395
428
  var tempDouble;
396
429
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -402,18 +435,38 @@ function createNapiModule(options) {
402
435
  HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
403
436
  HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
404
437
  }
438
+ /**
439
+ * @__deps $emnapiCtx
440
+ * @__sig p
441
+ */
442
+ function _emnapi_open_handle_scope() {
443
+ return emnapiCtx.openScope().id;
444
+ }
445
+ /**
446
+ * @__deps $emnapiCtx
447
+ * @__sig vp
448
+ */
449
+ function _emnapi_close_handle_scope(_scope) {
450
+ return emnapiCtx.closeScope();
451
+ }
405
452
  var utilMod = /*#__PURE__*/ Object.freeze({
406
453
  __proto__: null,
407
454
  $emnapiSetValueI64: $emnapiSetValueI64,
408
455
  _emnapi_call_finalizer: _emnapi_call_finalizer,
409
456
  _emnapi_callback_into_module: _emnapi_callback_into_module,
457
+ _emnapi_close_handle_scope: _emnapi_close_handle_scope,
410
458
  _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter,
411
459
  _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter,
412
460
  _emnapi_get_node_version: _emnapi_get_node_version,
461
+ _emnapi_get_now: _emnapi_get_now,
462
+ _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
463
+ _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread,
413
464
  _emnapi_next_tick: _emnapi_next_tick,
465
+ _emnapi_open_handle_scope: _emnapi_open_handle_scope,
414
466
  _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop,
415
467
  _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push,
416
468
  _emnapi_set_immediate: _emnapi_set_immediate,
469
+ _emnapi_unwind: _emnapi_unwind,
417
470
  napi_clear_last_error: napi_clear_last_error,
418
471
  napi_set_last_error: napi_set_last_error
419
472
  });
@@ -437,9 +490,20 @@ function createNapiModule(options) {
437
490
  return worker;
438
491
  }
439
492
  /** @__sig vp */
493
+ function _emnapi_worker_ref(pthreadPtr) {
494
+ if (ENVIRONMENT_IS_PTHREAD)
495
+ return;
496
+ pthreadPtr >>>= 0;
497
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
498
+ if (worker && typeof worker.ref === 'function') {
499
+ worker.ref();
500
+ }
501
+ }
502
+ /** @__sig vp */
440
503
  function _emnapi_worker_unref(pthreadPtr) {
441
504
  if (ENVIRONMENT_IS_PTHREAD)
442
505
  return;
506
+ pthreadPtr >>>= 0;
443
507
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
444
508
  if (worker && typeof worker.unref === 'function') {
445
509
  worker.unref();
@@ -481,10 +545,6 @@ function createNapiModule(options) {
481
545
  };
482
546
  });
483
547
  uvThreadpoolReady.ready = false;
484
- /** @__sig i */
485
- function _emnapi_is_main_browser_thread() {
486
- return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
487
- }
488
548
  /** @__sig vppi */
489
549
  function _emnapi_after_uvthreadpool_ready(callback, q, type) {
490
550
  if (uvThreadpoolReady.ready) {
@@ -501,7 +561,7 @@ function createNapiModule(options) {
501
561
  var p = [];
502
562
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
503
563
  var _loop_1 = function (i) {
504
- var pthreadPtr = HEAP_DATA_VIEW.getInt32(threads + i * 4, true);
564
+ var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
505
565
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
506
566
  p.push(new Promise(function (resolve) {
507
567
  var handler = function (e) {
@@ -550,11 +610,10 @@ function createNapiModule(options) {
550
610
  _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready,
551
611
  _emnapi_async_send_js: _emnapi_async_send_js,
552
612
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
553
- _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
554
613
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
614
+ _emnapi_worker_ref: _emnapi_worker_ref,
555
615
  _emnapi_worker_unref: _emnapi_worker_unref
556
616
  });
557
- /* eslint-disable @typescript-eslint/indent */
558
617
  /** @__sig ipjp */
559
618
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
560
619
  if (!env)
@@ -562,22 +621,15 @@ function createNapiModule(options) {
562
621
  var envObject = emnapiCtx.envStore.get(env);
563
622
  if (!adjusted_value)
564
623
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
565
- var change_in_bytes_number = Number(change_in_bytes);
566
- if (change_in_bytes_number < 0) {
567
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
568
- }
569
- var old_size = wasmMemory.buffer.byteLength;
570
- var new_size = old_size + change_in_bytes_number;
571
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
572
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
573
- return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
574
- }
624
+ // eslint-disable-next-line prefer-const
625
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
626
+ adjusted_value >>>= 0;
575
627
  if (emnapiCtx.feature.supportBigInt) {
576
628
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
577
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
629
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
578
630
  }
579
631
  else {
580
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
632
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
581
633
  }
582
634
  return envObject.clearLastError();
583
635
  }
@@ -745,6 +797,7 @@ function createNapiModule(options) {
745
797
  var asyncId = asyncContext.asyncId;
746
798
  var triggerAsyncId = asyncContext.triggerAsyncId;
747
799
  if (result) {
800
+ result >>>= 0;
748
801
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
749
802
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
750
803
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -788,11 +841,13 @@ function createNapiModule(options) {
788
841
  return;
789
842
  var resource = emnapiCtx.handleStore.get(async_resource).value;
790
843
  var callback = emnapiCtx.handleStore.get(cb).value;
844
+ argv >>>= 0;
845
+ size >>>= 0;
791
846
  size = size >>> 0;
792
847
  var arr = Array(size);
793
848
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
794
849
  for (; i < size; i++) {
795
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
850
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
796
851
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
797
852
  }
798
853
  var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
@@ -800,10 +855,11 @@ function createNapiModule(options) {
800
855
  triggerAsyncId: trigger_async_id
801
856
  });
802
857
  if (result) {
858
+ result >>>= 0;
803
859
  var envObject = emnapiCtx.envStore.get(env);
804
860
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
805
861
  v = envObject.ensureHandleId(ret);
806
- HEAP_DATA_VIEW.setInt32(result, v, true);
862
+ HEAP_DATA_VIEW.setUint32(result, v, true);
807
863
  }
808
864
  }
809
865
  /** @__sig ippp */
@@ -830,6 +886,7 @@ function createNapiModule(options) {
830
886
  var low = Number(numberValue & BigInt(0xffffffff));
831
887
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
832
888
  var high = Number(numberValue >> BigInt(32));
889
+ result >>>= 0;
833
890
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
834
891
  HEAP_DATA_VIEW.setInt32(result, low, true);
835
892
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -840,6 +897,7 @@ function createNapiModule(options) {
840
897
  if (!emnapiNodeBinding) {
841
898
  return 9 /* napi_status.napi_generic_failure */;
842
899
  }
900
+ async_context >>>= 0;
843
901
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
844
902
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
845
903
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -888,14 +946,17 @@ function createNapiModule(options) {
888
946
  if (typeof v8func !== 'function') {
889
947
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
890
948
  }
949
+ async_context >>>= 0;
891
950
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
892
951
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
893
952
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
894
953
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
954
+ argv >>>= 0;
955
+ argc >>>= 0;
895
956
  argc = argc >>> 0;
896
957
  var arr = Array(argc);
897
958
  for (; i < argc; i++) {
898
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
959
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
899
960
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
900
961
  }
901
962
  var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
@@ -905,9 +966,10 @@ function createNapiModule(options) {
905
966
  if (ret.status !== 0 /* napi_status.napi_ok */)
906
967
  return envObject.setLastError(ret.status);
907
968
  if (result) {
969
+ result >>>= 0;
908
970
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
909
971
  v = envObject.ensureHandleId(ret.value);
910
- HEAP_DATA_VIEW.setInt32(result, v, true);
972
+ HEAP_DATA_VIEW.setUint32(result, v, true);
911
973
  }
912
974
  return envObject.getReturnStatus();
913
975
  }
@@ -942,32 +1004,62 @@ function createNapiModule(options) {
942
1004
  * ```
943
1005
  */
944
1006
  var emnapiTSFN = {
1007
+ _liveSet: {},
945
1008
  offset: {
1009
+ __size__: 0,
946
1010
  /* napi_ref */ resource: 0,
947
- /* double */ async_id: 8,
948
- /* double */ trigger_async_id: 16,
949
- /* size_t */ queue_size: 24,
950
- /* void* */ queue: 1 * 4 + 24,
951
- /* size_t */ thread_count: 2 * 4 + 24,
952
- /* bool */ is_closing: 3 * 4 + 24,
953
- /* atomic_uchar */ dispatch_state: 3 * 4 + 28,
954
- /* void* */ context: 3 * 4 + 32,
955
- /* size_t */ max_queue_size: 4 * 4 + 32,
956
- /* napi_ref */ ref: 5 * 4 + 32,
957
- /* napi_env */ env: 6 * 4 + 32,
958
- /* void* */ finalize_data: 7 * 4 + 32,
959
- /* napi_finalize */ finalize_cb: 8 * 4 + 32,
960
- /* napi_threadsafe_function_call_js */ call_js_cb: 9 * 4 + 32,
961
- /* bool */ handles_closing: 10 * 4 + 32,
962
- /* bool */ async_ref: 10 * 4 + 36,
963
- /* int32_t */ mutex: 10 * 4 + 40,
964
- /* int32_t */ cond: 10 * 4 + 44,
965
- end: 10 * 4 + 48
1011
+ /* double */ async_id: 0,
1012
+ /* double */ trigger_async_id: 0,
1013
+ /* size_t */ queue_size: 0,
1014
+ /* bool */ is_some: 0,
1015
+ /* void* */ queue: 0,
1016
+ // Reuse uv_async_t storage as JS-side wakeup state: pending event + scheduled drain.
1017
+ async_pending: 0,
1018
+ async_u_fd: 0,
1019
+ /* size_t */ thread_count: 0,
1020
+ /* int32_t */ state: 0,
1021
+ /* atomic_uchar */ dispatch_state: 0,
1022
+ /* void* */ context: 0,
1023
+ /* size_t */ max_queue_size: 0,
1024
+ /* napi_ref */ ref: 0,
1025
+ /* napi_env */ env: 0,
1026
+ /* void* */ finalize_data: 0,
1027
+ /* napi_finalize */ finalize_cb: 0,
1028
+ /* napi_threadsafe_function_call_js */ call_js_cb: 0,
1029
+ /* bool */ handles_closing: 0,
1030
+ /* bool */ async_ref: 0,
1031
+ /* int32_t */ mutex: 0,
1032
+ /* int32_t */ cond: 0
966
1033
  },
967
1034
  init: function () {
1035
+ emnapiTSFN._liveSet = new Set();
1036
+ emnapiTSFN.offset.__size__ = 184 /* NapiTSFNOffset32.__size__ */;
1037
+ emnapiTSFN.offset.resource = 0 /* NapiTSFNOffset32.async_resource_resource */;
1038
+ emnapiTSFN.offset.async_id = 8 /* NapiTSFNOffset32.async_resource_async_context_async_id */;
1039
+ emnapiTSFN.offset.trigger_async_id = 16 /* NapiTSFNOffset32.async_resource_async_context_trigger_async_id */;
1040
+ emnapiTSFN.offset.queue_size = 60 /* NapiTSFNOffset32.queue_size */;
1041
+ emnapiTSFN.offset.is_some = 24 /* NapiTSFNOffset32.async_resource_is_some */;
1042
+ emnapiTSFN.offset.queue = 64 /* NapiTSFNOffset32.queue */;
1043
+ emnapiTSFN.offset.async_pending = 132 /* NapiTSFNOffset32.async_pending */;
1044
+ emnapiTSFN.offset.async_u_fd = 96 /* NapiTSFNOffset32.async_u_fd */;
1045
+ emnapiTSFN.offset.thread_count = 136 /* NapiTSFNOffset32.thread_count */;
1046
+ emnapiTSFN.offset.state = 140 /* NapiTSFNOffset32.state */;
1047
+ emnapiTSFN.offset.dispatch_state = 144 /* NapiTSFNOffset32.dispatch_state */;
1048
+ emnapiTSFN.offset.context = 148 /* NapiTSFNOffset32.context */;
1049
+ emnapiTSFN.offset.max_queue_size = 152 /* NapiTSFNOffset32.max_queue_size */;
1050
+ emnapiTSFN.offset.ref = 156 /* NapiTSFNOffset32.ref */;
1051
+ emnapiTSFN.offset.env = 160 /* NapiTSFNOffset32.env */;
1052
+ emnapiTSFN.offset.finalize_data = 164 /* NapiTSFNOffset32.finalize_data */;
1053
+ emnapiTSFN.offset.finalize_cb = 168 /* NapiTSFNOffset32.finalize_cb */;
1054
+ emnapiTSFN.offset.call_js_cb = 172 /* NapiTSFNOffset32.call_js_cb */;
1055
+ emnapiTSFN.offset.handles_closing = 176 /* NapiTSFNOffset32.handles_closing */;
1056
+ emnapiTSFN.offset.async_ref = 180 /* NapiTSFNOffset32.async_ref */;
1057
+ emnapiTSFN.offset.mutex = 32 /* NapiTSFNOffset32.mutex */;
1058
+ emnapiTSFN.offset.cond = 56 /* NapiTSFNOffset32.cond */;
1059
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
968
1060
  if (typeof PThread !== 'undefined') {
969
1061
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
970
- PThread.runningWorkers.forEach(emnapiTSFN.addListener);
1062
+ Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
971
1063
  var __original_getNewWorker_1 = PThread.getNewWorker;
972
1064
  PThread.getNewWorker = function () {
973
1065
  var r = __original_getNewWorker_1.apply(this, arguments);
@@ -988,7 +1080,10 @@ function createNapiModule(options) {
988
1080
  var type = __emnapi__.type;
989
1081
  var payload = __emnapi__.payload;
990
1082
  if (type === 'tsfn-send') {
991
- emnapiTSFN.dispatch(payload.tsfn);
1083
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
1084
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
1085
+ emnapiTSFN.enqueue(payload.tsfn);
1086
+ }
992
1087
  }
993
1088
  }
994
1089
  };
@@ -1010,18 +1105,40 @@ function createNapiModule(options) {
1010
1105
  }
1011
1106
  return true;
1012
1107
  },
1108
+ /**
1109
+ * When another thread grows the shared WebAssembly.Memory, this agent's
1110
+ * cached `wasmMemory.buffer` may still have the old shorter length
1111
+ * (V8 refreshes it lazily). If a pointer derived from shared memory lies
1112
+ * beyond the cached length, `wasmMemory.grow(0)` forces the agent to
1113
+ * observe the current memory size and refreshes the buffer.
1114
+ */
1115
+ ensureBufferFor: function (end) {
1116
+ var buffer = wasmMemory.buffer;
1117
+ if (end > buffer.byteLength) {
1118
+ wasmMemory.grow(0);
1119
+ buffer = wasmMemory.buffer;
1120
+ }
1121
+ return buffer;
1122
+ },
1013
1123
  initQueue: function (func) {
1014
1124
  var size = 2 * 4;
1015
1125
  var queue = _malloc(size);
1016
1126
  if (!queue)
1017
1127
  return false;
1018
- new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
1128
+ queue >>>= 0;
1129
+ new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
1019
1130
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
1020
1131
  return true;
1021
1132
  },
1022
1133
  destroyQueue: function (func) {
1023
1134
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
1024
1135
  if (queue) {
1136
+ var node = emnapiTSFN.loadSizeTypeValue(queue, false);
1137
+ while (node !== 0) {
1138
+ var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
1139
+ _free(node);
1140
+ node = next;
1141
+ }
1025
1142
  _free(queue);
1026
1143
  }
1027
1144
  },
@@ -1034,6 +1151,7 @@ function createNapiModule(options) {
1034
1151
  var node = _malloc(size);
1035
1152
  if (!node)
1036
1153
  throw new Error('OOM');
1154
+ node >>>= 0;
1037
1155
  emnapiTSFN.storeSizeTypeValue(node, data, false);
1038
1156
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
1039
1157
  if (head === 0 && tail === 0) {
@@ -1069,11 +1187,11 @@ function createNapiModule(options) {
1069
1187
  var waitCondition = function () {
1070
1188
  var queueSize = emnapiTSFN.getQueueSize(func);
1071
1189
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
1072
- var isClosing = emnapiTSFN.getIsClosing(func);
1073
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
1190
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0 /* State.kOpen */;
1074
1191
  };
1075
1192
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1076
- return mutex.execute(function () {
1193
+ var shouldDelete = false;
1194
+ var ret = mutex.execute(function () {
1077
1195
  while (waitCondition()) {
1078
1196
  if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) {
1079
1197
  return 15 /* napi_status.napi_queue_full */;
@@ -1090,31 +1208,35 @@ function createNapiModule(options) {
1090
1208
  }
1091
1209
  cond.wait();
1092
1210
  }
1093
- if (emnapiTSFN.getIsClosing(func)) {
1094
- if (emnapiTSFN.getThreadCount(func) === 0) {
1095
- return 1 /* napi_status.napi_invalid_arg */;
1096
- }
1097
- else {
1098
- emnapiTSFN.subThreadCount(func);
1099
- return 16 /* napi_status.napi_closing */;
1100
- }
1101
- }
1102
- else {
1211
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
1103
1212
  emnapiTSFN.pushQueue(func, data);
1104
1213
  emnapiTSFN.send(func);
1105
1214
  return 0 /* napi_status.napi_ok */;
1106
1215
  }
1216
+ if (emnapiTSFN.getThreadCount(func) === 0) {
1217
+ return 1 /* napi_status.napi_invalid_arg */;
1218
+ }
1219
+ emnapiTSFN.subThreadCount(func);
1220
+ if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
1221
+ return 16 /* napi_status.napi_closing */;
1222
+ }
1223
+ shouldDelete = true;
1224
+ return 16 /* napi_status.napi_closing */;
1107
1225
  });
1226
+ if (shouldDelete) {
1227
+ emnapiTSFN.destroy(func);
1228
+ }
1229
+ return ret;
1108
1230
  },
1109
1231
  getMutex: function (func) {
1110
1232
  var index = func + emnapiTSFN.offset.mutex;
1111
1233
  var mutex = {
1112
1234
  lock: function () {
1113
1235
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1114
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1236
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1115
1237
  if (isBrowserMain) {
1116
1238
  while (true) {
1117
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1239
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1118
1240
  if (oldValue === 0) {
1119
1241
  return;
1120
1242
  }
@@ -1122,11 +1244,11 @@ function createNapiModule(options) {
1122
1244
  }
1123
1245
  else {
1124
1246
  while (true) {
1125
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1247
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1126
1248
  if (oldValue === 0) {
1127
1249
  return;
1128
1250
  }
1129
- Atomics.wait(i32a, 0, 1);
1251
+ Atomics.wait(i32a, 0, 10);
1130
1252
  }
1131
1253
  }
1132
1254
  },
@@ -1134,21 +1256,21 @@ function createNapiModule(options) {
1134
1256
  return new Promise<void>(resolve => {
1135
1257
  const again = (): void => { fn() }
1136
1258
  const fn = (): void => {
1137
- const i32a = new Int32Array(wasmMemory.buffer, index, 1)
1138
- const oldValue = Atomics.compareExchange(i32a, 0, 0, 1)
1259
+ const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
1260
+ const oldValue = Atomics.compareExchange(i32a, 0, 0, 10)
1139
1261
  if (oldValue === 0) {
1140
1262
  resolve()
1141
1263
  return
1142
1264
  }
1143
- (Atomics as any).waitAsync(i32a, 0, 1).value.then(again)
1265
+ (Atomics as any).waitAsync(i32a, 0, 10).value.then(again)
1144
1266
  }
1145
1267
  fn()
1146
1268
  })
1147
1269
  }, */
1148
1270
  unlock: function () {
1149
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1150
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
1151
- if (oldValue !== 1) {
1271
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1272
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1273
+ if (oldValue !== 10) {
1152
1274
  throw new Error('Tried to unlock while not holding the mutex');
1153
1275
  }
1154
1276
  Atomics.notify(i32a, 0, 1);
@@ -1180,14 +1302,14 @@ function createNapiModule(options) {
1180
1302
  var mutex = emnapiTSFN.getMutex(func);
1181
1303
  var cond = {
1182
1304
  wait: function () {
1183
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1305
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1184
1306
  var value = Atomics.load(i32a, 0);
1185
1307
  mutex.unlock();
1186
1308
  Atomics.wait(i32a, 0, value);
1187
1309
  mutex.lock();
1188
1310
  },
1189
1311
  /* waitAsync () {
1190
- const i32a = new Int32Array(wasmMemory.buffer, index, 1)
1312
+ const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
1191
1313
  const value = Atomics.load(i32a, 0)
1192
1314
  mutex.unlock()
1193
1315
  const lock = (): Promise<void> => mutex.lockAsync()
@@ -1198,7 +1320,7 @@ function createNapiModule(options) {
1198
1320
  }
1199
1321
  }, */
1200
1322
  signal: function () {
1201
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1323
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1202
1324
  Atomics.add(i32a, 0, 1);
1203
1325
  Atomics.notify(i32a, 0, 1);
1204
1326
  }
@@ -1211,15 +1333,15 @@ function createNapiModule(options) {
1211
1333
  addQueueSize: function (func) {
1212
1334
  var offset = emnapiTSFN.offset.queue_size;
1213
1335
  var arr, index;
1214
- arr = new Uint32Array(wasmMemory.buffer);
1215
- index = (func + offset) >> 2;
1336
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1337
+ index = (func + offset) >>> 2;
1216
1338
  Atomics.add(arr, index, 1);
1217
1339
  },
1218
1340
  subQueueSize: function (func) {
1219
1341
  var offset = emnapiTSFN.offset.queue_size;
1220
1342
  var arr, index;
1221
- arr = new Uint32Array(wasmMemory.buffer);
1222
- index = (func + offset) >> 2;
1343
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1344
+ index = (func + offset) >>> 2;
1223
1345
  Atomics.sub(arr, index, 1);
1224
1346
  },
1225
1347
  getThreadCount: function (func) {
@@ -1228,31 +1350,31 @@ function createNapiModule(options) {
1228
1350
  addThreadCount: function (func) {
1229
1351
  var offset = emnapiTSFN.offset.thread_count;
1230
1352
  var arr, index;
1231
- arr = new Uint32Array(wasmMemory.buffer);
1232
- index = (func + offset) >> 2;
1353
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1354
+ index = (func + offset) >>> 2;
1233
1355
  Atomics.add(arr, index, 1);
1234
1356
  },
1235
1357
  subThreadCount: function (func) {
1236
1358
  var offset = emnapiTSFN.offset.thread_count;
1237
1359
  var arr, index;
1238
- arr = new Uint32Array(wasmMemory.buffer);
1239
- index = (func + offset) >> 2;
1360
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1361
+ index = (func + offset) >>> 2;
1240
1362
  Atomics.sub(arr, index, 1);
1241
1363
  },
1242
- getIsClosing: function (func) {
1243
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
1364
+ getState: function (func) {
1365
+ return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
1244
1366
  },
1245
- setIsClosing: function (func, value) {
1246
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
1367
+ setState: function (func, value) {
1368
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
1247
1369
  },
1248
1370
  getHandlesClosing: function (func) {
1249
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
1371
+ return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
1250
1372
  },
1251
1373
  setHandlesClosing: function (func, value) {
1252
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
1374
+ Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
1253
1375
  },
1254
1376
  getDispatchState: function (func) {
1255
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
1377
+ return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
1256
1378
  },
1257
1379
  getContext: function (func) {
1258
1380
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -1282,68 +1404,98 @@ function createNapiModule(options) {
1282
1404
  var ret;
1283
1405
  var arr;
1284
1406
  if (unsigned) {
1285
- arr = new Uint32Array(wasmMemory.buffer);
1286
- ret = Atomics.load(arr, offset >> 2);
1407
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1408
+ ret = Atomics.load(arr, offset >>> 2);
1287
1409
  return ret;
1288
1410
  }
1289
1411
  else {
1290
- arr = new Int32Array(wasmMemory.buffer);
1291
- ret = Atomics.load(arr, offset >> 2);
1412
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1413
+ ret = Atomics.load(arr, offset >>> 2);
1292
1414
  return ret;
1293
1415
  }
1294
1416
  },
1295
1417
  storeSizeTypeValue: function (offset, value, unsigned) {
1296
1418
  var arr;
1297
1419
  if (unsigned) {
1298
- arr = new Uint32Array(wasmMemory.buffer);
1299
- Atomics.store(arr, offset >> 2, value);
1420
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1421
+ Atomics.store(arr, offset >>> 2, value);
1300
1422
  return undefined;
1301
1423
  }
1302
1424
  else {
1303
- arr = new Int32Array(wasmMemory.buffer);
1304
- Atomics.store(arr, offset >> 2, value >>> 0);
1425
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1426
+ Atomics.store(arr, offset >>> 2, value >>> 0);
1305
1427
  return undefined;
1306
1428
  }
1307
1429
  },
1430
+ releaseResources: function (func) {
1431
+ if (emnapiTSFN.getState(func) !== 2 /* State.kClosed */) {
1432
+ emnapiTSFN.setState(func, 2 /* State.kClosed */);
1433
+ var env = emnapiTSFN.getEnv(func);
1434
+ var envObject = emnapiCtx.envStore.get(env);
1435
+ var ref = emnapiTSFN.getRef(func);
1436
+ if (ref) {
1437
+ emnapiCtx.refStore.get(ref).dispose();
1438
+ }
1439
+ var resource = emnapiTSFN.getResource(func);
1440
+ emnapiCtx.refStore.get(resource).dispose();
1441
+ emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
1442
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1443
+ HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
1444
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1445
+ envObject.unref();
1446
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1447
+ var asyncRefOffset = asyncRefAddress >>> 2;
1448
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1449
+ if (Atomics.load(arr, asyncRefOffset) > 0) {
1450
+ Atomics.store(arr, asyncRefOffset, 0);
1451
+ emnapiCtx.decreaseWaitingRequestCounter();
1452
+ }
1453
+ if (emnapiNodeBinding) {
1454
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1455
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1456
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1457
+ _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1458
+ }
1459
+ }
1460
+ },
1308
1461
  destroy: function (func) {
1462
+ emnapiTSFN._liveSet.delete(func);
1309
1463
  emnapiTSFN.destroyQueue(func);
1310
- var env = emnapiTSFN.getEnv(func);
1311
- var envObject = emnapiCtx.envStore.get(env);
1312
- var ref = emnapiTSFN.getRef(func);
1313
- if (ref) {
1314
- emnapiCtx.refStore.get(ref).dispose();
1315
- }
1316
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1317
- envObject.unref();
1318
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1319
- var arr = new Int32Array(wasmMemory.buffer);
1320
- if (Atomics.load(arr, asyncRefOffset)) {
1321
- Atomics.store(arr, asyncRefOffset, 0);
1322
- emnapiCtx.decreaseWaitingRequestCounter();
1323
- }
1324
- var resource = emnapiTSFN.getResource(func);
1325
- emnapiCtx.refStore.get(resource).dispose();
1326
- if (emnapiNodeBinding) {
1327
- var view = new DataView(wasmMemory.buffer);
1328
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1329
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1330
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1331
- }
1464
+ emnapiTSFN.releaseResources(func);
1332
1465
  _free(func);
1333
1466
  },
1334
- emptyQueueAndDelete: function (func) {
1467
+ emptyQueue: function (func) {
1468
+ var drainQueue = [];
1469
+ emnapiTSFN.getMutex(func).execute(function () {
1470
+ while (emnapiTSFN.getQueueSize(func) > 0) {
1471
+ drainQueue.push(emnapiTSFN.shiftQueue(func));
1472
+ }
1473
+ });
1335
1474
  var callJsCb = emnapiTSFN.getCallJSCb(func);
1336
1475
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1337
1476
  var context = emnapiTSFN.getContext(func);
1338
1477
  var data;
1339
- while (emnapiTSFN.getQueueSize(func) > 0) {
1478
+ for (var i = 0; i < drainQueue.length; i++) {
1340
1479
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1341
- data = emnapiTSFN.shiftQueue(func);
1480
+ data = drainQueue[i];
1342
1481
  if (callJsCb) {
1343
1482
  (wasmTable.get(callJsCb))(0, 0, context, data);
1344
1483
  }
1345
1484
  }
1346
- emnapiTSFN.destroy(func);
1485
+ },
1486
+ maybeDelete: function (func) {
1487
+ var shouldDelete = false;
1488
+ emnapiTSFN.getMutex(func).execute(function () {
1489
+ if (emnapiTSFN.getThreadCount(func) > 0) {
1490
+ emnapiTSFN.releaseResources(func);
1491
+ }
1492
+ else {
1493
+ shouldDelete = true;
1494
+ }
1495
+ });
1496
+ if (shouldDelete) {
1497
+ emnapiTSFN.destroy(func);
1498
+ }
1347
1499
  },
1348
1500
  finalize: function (func) {
1349
1501
  var env = emnapiTSFN.getEnv(func);
@@ -1358,12 +1510,13 @@ function createNapiModule(options) {
1358
1510
  envObject.callFinalizerInternal(0, finalize, data, context);
1359
1511
  };
1360
1512
  try {
1513
+ emnapiTSFN.emptyQueue(func);
1361
1514
  if (finalize) {
1362
1515
  if (emnapiNodeBinding) {
1363
1516
  var resource = emnapiTSFN.getResource(func);
1364
1517
  var resource_value = emnapiCtx.refStore.get(resource).get();
1365
1518
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1366
- var view = new DataView(wasmMemory.buffer);
1519
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1367
1520
  var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1368
1521
  var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1369
1522
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
@@ -1375,7 +1528,7 @@ function createNapiModule(options) {
1375
1528
  f();
1376
1529
  }
1377
1530
  }
1378
- emnapiTSFN.emptyQueueAndDelete(func);
1531
+ emnapiTSFN.maybeDelete(func);
1379
1532
  }
1380
1533
  finally {
1381
1534
  emnapiCtx.closeScope(envObject);
@@ -1391,7 +1544,7 @@ function createNapiModule(options) {
1391
1544
  try {
1392
1545
  if (set_closing) {
1393
1546
  emnapiTSFN.getMutex(func).execute(function () {
1394
- emnapiTSFN.setIsClosing(func, 1);
1547
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
1395
1548
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1396
1549
  emnapiTSFN.getCond(func).signal();
1397
1550
  }
@@ -1401,6 +1554,7 @@ function createNapiModule(options) {
1401
1554
  return;
1402
1555
  }
1403
1556
  emnapiTSFN.setHandlesClosing(func, 1);
1557
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1404
1558
  emnapiCtx.feature.setImmediate(function () {
1405
1559
  emnapiTSFN.finalize(func);
1406
1560
  });
@@ -1417,10 +1571,7 @@ function createNapiModule(options) {
1417
1571
  var mutex = emnapiTSFN.getMutex(func);
1418
1572
  var cond = emnapiTSFN.getCond(func);
1419
1573
  mutex.execute(function () {
1420
- if (emnapiTSFN.getIsClosing(func)) {
1421
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1422
- }
1423
- else {
1574
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
1424
1575
  var size = emnapiTSFN.getQueueSize(func);
1425
1576
  if (size > 0) {
1426
1577
  data = emnapiTSFN.shiftQueue(func);
@@ -1433,7 +1584,7 @@ function createNapiModule(options) {
1433
1584
  }
1434
1585
  if (size === 0) {
1435
1586
  if (emnapiTSFN.getThreadCount(func) === 0) {
1436
- emnapiTSFN.setIsClosing(func, 1);
1587
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
1437
1588
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1438
1589
  cond.signal();
1439
1590
  }
@@ -1444,6 +1595,9 @@ function createNapiModule(options) {
1444
1595
  has_more = true;
1445
1596
  }
1446
1597
  }
1598
+ else {
1599
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1600
+ }
1447
1601
  });
1448
1602
  if (popped_value) {
1449
1603
  var env = emnapiTSFN.getEnv(func);
@@ -1472,7 +1626,7 @@ function createNapiModule(options) {
1472
1626
  var resource = emnapiTSFN.getResource(func);
1473
1627
  var resource_value = emnapiCtx.refStore.get(resource).get();
1474
1628
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1475
- var view = new DataView(wasmMemory.buffer);
1629
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1476
1630
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
1477
1631
  asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
1478
1632
  triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
@@ -1491,8 +1645,9 @@ function createNapiModule(options) {
1491
1645
  dispatch: function (func) {
1492
1646
  var has_more = true;
1493
1647
  var iterations_left = 1000;
1494
- var ui32a = new Uint32Array(wasmMemory.buffer);
1495
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
1648
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1649
+ var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
1650
+ var index = dispatchStateAddress >>> 2;
1496
1651
  while (has_more && --iterations_left !== 0) {
1497
1652
  Atomics.store(ui32a, index, 1);
1498
1653
  has_more = emnapiTSFN.dispatchOne(func);
@@ -1504,25 +1659,86 @@ function createNapiModule(options) {
1504
1659
  emnapiTSFN.send(func);
1505
1660
  }
1506
1661
  },
1507
- send: function (func) {
1508
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
1509
- if ((current_state & 1) === 1) {
1662
+ enqueue: function (func) {
1663
+ // `pending` means a worker thread has requested a wakeup that has not
1664
+ // been drained on the main thread yet.
1665
+ var pending = func + emnapiTSFN.offset.async_pending;
1666
+ // `scheduled` prevents queueing the same main-thread drain chain more than
1667
+ // once while a previous wakeup is still in flight.
1668
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
1669
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
1670
+ if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
1510
1671
  return;
1511
1672
  }
1512
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1513
- postMessage({
1514
- __emnapi__: {
1515
- type: 'tsfn-send',
1516
- payload: {
1517
- tsfn: func
1673
+ // Match uv_async_send-style coalescing in JS: the first turn represents
1674
+ // the wakeup reaching the main thread, and the second turn performs the
1675
+ // actual TSFN drain after nearby Send/Signal calls have had a chance to
1676
+ // collapse into the shared AsyncProgressWorker state.
1677
+ emnapiCtx.feature.setImmediate(function () {
1678
+ if (!emnapiTSFN._liveSet.has(func)) {
1679
+ return;
1680
+ }
1681
+ if (Atomics.load(i32a, pending >>> 2) === 0) {
1682
+ Atomics.store(i32a, scheduled >>> 2, 0);
1683
+ return;
1684
+ }
1685
+ emnapiCtx.feature.setImmediate(function () {
1686
+ try {
1687
+ // Consume the coalesced wakeup once, then let dispatch() observe any
1688
+ // queue mutations through dispatch_state like the C implementation.
1689
+ if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
1690
+ return;
1691
+ }
1692
+ // After destroy(), the func address is freed. Skip dispatch
1693
+ // to avoid use-after-free (JS-side lifecycle check).
1694
+ if (!emnapiTSFN._liveSet.has(func)) {
1695
+ return;
1696
+ }
1697
+ emnapiTSFN.dispatch(func);
1698
+ }
1699
+ finally {
1700
+ // Allow a later wakeup to schedule a new drain chain. If another
1701
+ // worker-thread send raced with this drain, enqueue one more turn.
1702
+ if (emnapiTSFN._liveSet.has(func)) {
1703
+ Atomics.store(i32a, scheduled >>> 2, 0);
1704
+ if (Atomics.load(i32a, pending >>> 2) !== 0) {
1705
+ emnapiTSFN.enqueue(func);
1706
+ }
1518
1707
  }
1519
1708
  }
1520
1709
  });
1710
+ });
1711
+ },
1712
+ send: function (func) {
1713
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1714
+ var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
1715
+ if ((current_state & 1) === 1) {
1716
+ return;
1521
1717
  }
1522
- else {
1523
- emnapiCtx.feature.setImmediate(function () {
1524
- emnapiTSFN.dispatch(func);
1525
- });
1718
+ var pendng = func + emnapiTSFN.offset.async_pending;
1719
+ // A wakeup is already pending, so this send only needs to leave the queued
1720
+ // work in the TSFN queue and let the existing drain pick it up.
1721
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
1722
+ return;
1723
+ }
1724
+ if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
1725
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1726
+ // Worker threads only post a wakeup token. Main-thread draining is
1727
+ // serialized by enqueue() once the message is received.
1728
+ postMessage({
1729
+ __emnapi__: {
1730
+ type: 'tsfn-send',
1731
+ payload: {
1732
+ tsfn: func
1733
+ }
1734
+ }
1735
+ });
1736
+ }
1737
+ else {
1738
+ // On the main thread we can skip the cross-thread hop and schedule the
1739
+ // coalesced drain chain directly.
1740
+ emnapiTSFN.enqueue(func);
1741
+ }
1526
1742
  }
1527
1743
  }
1528
1744
  };
@@ -1535,6 +1751,13 @@ function createNapiModule(options) {
1535
1751
  envObject.checkGCAccess();
1536
1752
  if (!async_resource_name)
1537
1753
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1754
+ max_queue_size >>>= 0;
1755
+ initial_thread_count >>>= 0;
1756
+ env >>>= 0;
1757
+ thread_finalize_data >>>= 0;
1758
+ thread_finalize_cb >>>= 0;
1759
+ context >>>= 0;
1760
+ call_js_cb >>>= 0;
1538
1761
  max_queue_size = max_queue_size >>> 0;
1539
1762
  initial_thread_count = initial_thread_count >>> 0;
1540
1763
  if (initial_thread_count === 0) {
@@ -1543,6 +1766,7 @@ function createNapiModule(options) {
1543
1766
  if (!result)
1544
1767
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
1545
1768
  var ref = 0;
1769
+ func >>>= 0;
1546
1770
  if (!func) {
1547
1771
  if (!call_js_cb)
1548
1772
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -1574,35 +1798,40 @@ function createNapiModule(options) {
1574
1798
  asyncResourceName = String(asyncResourceName);
1575
1799
  var resource_name = envObject.ensureHandleId(asyncResourceName);
1576
1800
  // tsfn create
1577
- var sizeofTSFN = emnapiTSFN.offset.end;
1801
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
1802
+ // eslint-disable-next-line prefer-const
1578
1803
  var tsfn = _malloc(sizeofTSFN);
1579
1804
  if (!tsfn)
1580
1805
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
1581
- new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1806
+ tsfn >>>= 0;
1807
+ new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1582
1808
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */);
1583
1809
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1584
1810
  var resource_ = resourceRef.id;
1585
1811
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1586
- HEAP_DATA_VIEW.setInt32(tsfn, resource_, true);
1812
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
1587
1813
  if (!emnapiTSFN.initQueue(tsfn)) {
1588
1814
  _free(tsfn);
1589
1815
  resourceRef.dispose();
1590
1816
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
1591
1817
  }
1592
1818
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
1819
+ HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
1593
1820
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1594
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.context, context, true);
1821
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1595
1822
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
1596
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.ref, ref, true);
1597
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.env, env, true);
1598
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
1599
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1600
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1823
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
1824
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
1825
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
1826
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1827
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1601
1828
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
1829
+ emnapiTSFN._liveSet.add(tsfn);
1602
1830
  envObject.ref();
1603
1831
  emnapiCtx.increaseWaitingRequestCounter();
1604
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1605
- HEAP_DATA_VIEW.setInt32(result, tsfn, true);
1832
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1833
+ result >>>= 0;
1834
+ HEAP_DATA_VIEW.setUint32(result, tsfn, true);
1606
1835
  return envObject.clearLastError();
1607
1836
  }
1608
1837
  /** @__sig ipp */
@@ -1611,10 +1840,12 @@ function createNapiModule(options) {
1611
1840
  abort();
1612
1841
  return 1 /* napi_status.napi_invalid_arg */;
1613
1842
  }
1843
+ func >>>= 0;
1844
+ result >>>= 0;
1614
1845
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1615
1846
  var context = emnapiTSFN.getContext(func);
1616
1847
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1617
- HEAP_DATA_VIEW.setInt32(result, context, true);
1848
+ HEAP_DATA_VIEW.setUint32(result, context, true);
1618
1849
  return 0 /* napi_status.napi_ok */;
1619
1850
  }
1620
1851
  /** @__sig ippi */
@@ -1623,6 +1854,8 @@ function createNapiModule(options) {
1623
1854
  abort();
1624
1855
  return 1 /* napi_status.napi_invalid_arg */;
1625
1856
  }
1857
+ func >>>= 0;
1858
+ data >>>= 0;
1626
1859
  return emnapiTSFN.push(func, data, mode);
1627
1860
  }
1628
1861
  /** @__sig ip */
@@ -1631,13 +1864,14 @@ function createNapiModule(options) {
1631
1864
  abort();
1632
1865
  return 1 /* napi_status.napi_invalid_arg */;
1633
1866
  }
1867
+ func >>>= 0;
1634
1868
  var mutex = emnapiTSFN.getMutex(func);
1635
1869
  return mutex.execute(function () {
1636
- if (emnapiTSFN.getIsClosing(func)) {
1637
- return 16 /* napi_status.napi_closing */;
1870
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
1871
+ emnapiTSFN.addThreadCount(func);
1872
+ return 0 /* napi_status.napi_ok */;
1638
1873
  }
1639
- emnapiTSFN.addThreadCount(func);
1640
- return 0 /* napi_status.napi_ok */;
1874
+ return 16 /* napi_status.napi_closing */;
1641
1875
  });
1642
1876
  }
1643
1877
  /** @__sig ipi */
@@ -1646,26 +1880,36 @@ function createNapiModule(options) {
1646
1880
  abort();
1647
1881
  return 1 /* napi_status.napi_invalid_arg */;
1648
1882
  }
1883
+ func >>>= 0;
1649
1884
  var mutex = emnapiTSFN.getMutex(func);
1650
1885
  var cond = emnapiTSFN.getCond(func);
1651
- return mutex.execute(function () {
1886
+ var shouldDelete = false;
1887
+ var ret = mutex.execute(function () {
1652
1888
  if (emnapiTSFN.getThreadCount(func) === 0) {
1653
1889
  return 1 /* napi_status.napi_invalid_arg */;
1654
1890
  }
1655
1891
  emnapiTSFN.subThreadCount(func);
1656
1892
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
1657
- var isClosing = emnapiTSFN.getIsClosing(func);
1658
- if (!isClosing) {
1659
- var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0;
1660
- emnapiTSFN.setIsClosing(func, isClosingValue);
1661
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
1893
+ if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
1894
+ if (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
1895
+ emnapiTSFN.setState(func, 1 /* State.kClosing */);
1896
+ }
1897
+ if (emnapiTSFN.getState(func) === 1 /* State.kClosing */ && emnapiTSFN.getMaxQueueSize(func) > 0) {
1662
1898
  cond.signal();
1663
1899
  }
1664
1900
  emnapiTSFN.send(func);
1665
1901
  }
1666
1902
  }
1903
+ if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
1904
+ return 0 /* napi_status.napi_ok */;
1905
+ }
1906
+ shouldDelete = true;
1667
1907
  return 0 /* napi_status.napi_ok */;
1668
1908
  });
1909
+ if (shouldDelete) {
1910
+ emnapiTSFN.destroy(func);
1911
+ }
1912
+ return ret;
1669
1913
  }
1670
1914
  /** @__sig ipp */
1671
1915
  function napi_unref_threadsafe_function(env, func) {
@@ -1673,11 +1917,16 @@ function createNapiModule(options) {
1673
1917
  abort();
1674
1918
  return 1 /* napi_status.napi_invalid_arg */;
1675
1919
  }
1676
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1677
- var arr = new Int32Array(wasmMemory.buffer);
1678
- if (Atomics.load(arr, asyncRefOffset)) {
1679
- Atomics.store(arr, asyncRefOffset, 0);
1680
- emnapiCtx.decreaseWaitingRequestCounter();
1920
+ func >>>= 0;
1921
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1922
+ var asyncRefOffset = asyncRefAddress >>> 2;
1923
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1924
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1925
+ if (currentValue > 0) {
1926
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
1927
+ if (currentValue === 1) {
1928
+ emnapiCtx.decreaseWaitingRequestCounter();
1929
+ }
1681
1930
  }
1682
1931
  return 0 /* napi_status.napi_ok */;
1683
1932
  }
@@ -1687,34 +1936,73 @@ function createNapiModule(options) {
1687
1936
  abort();
1688
1937
  return 1 /* napi_status.napi_invalid_arg */;
1689
1938
  }
1690
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1691
- var arr = new Int32Array(wasmMemory.buffer);
1692
- if (!Atomics.load(arr, asyncRefOffset)) {
1693
- Atomics.store(arr, asyncRefOffset, 1);
1939
+ func >>>= 0;
1940
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1941
+ var asyncRefOffset = asyncRefAddress >>> 2;
1942
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1943
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1944
+ if (!currentValue) {
1694
1945
  emnapiCtx.increaseWaitingRequestCounter();
1695
1946
  }
1947
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
1696
1948
  return 0 /* napi_status.napi_ok */;
1697
1949
  }
1698
1950
  var emnapiAWMT = {
1699
- unusedWorkers: [],
1700
- runningWorkers: [],
1701
- workQueue: [],
1951
+ pool: [],
1702
1952
  workerReady: null,
1953
+ globalAddress: 0,
1954
+ globalOffset: {
1955
+ idle_threads: 0,
1956
+ q: 1 * 4,
1957
+ next: 1 * 4,
1958
+ prev: 2 * 4,
1959
+ mutex: 3 * 4,
1960
+ cond: 4 * 4,
1961
+ exit_message: 5 * 4,
1962
+ end: 7 * 4
1963
+ },
1703
1964
  offset: {
1704
1965
  /* napi_ref */ resource: 0,
1705
1966
  /* double */ async_id: 8,
1706
1967
  /* double */ trigger_async_id: 16,
1707
1968
  /* napi_env */ env: 24,
1708
- /* void* */ data: 1 * 4 + 24,
1709
- /* napi_async_execute_callback */ execute: 2 * 4 + 24,
1710
- /* napi_async_complete_callback */ complete: 3 * 4 + 24,
1711
- end: 4 * 4 + 24
1969
+ /* int32_t */ status: 1 * 4 + 24, // 0 for pending, 1 for cancelled, 2 for completed
1970
+ queue: 2 * 4 + 24,
1971
+ queue_next: 2 * 4 + 24,
1972
+ queue_prev: 3 * 4 + 24,
1973
+ /* void* */ data: 4 * 4 + 24,
1974
+ /* napi_async_execute_callback */ execute: 5 * 4 + 24,
1975
+ /* napi_async_complete_callback */ complete: 6 * 4 + 24,
1976
+ end: 7 * 4 + 24
1977
+ },
1978
+ /**
1979
+ * When another thread grows the shared WebAssembly.Memory, this agent's
1980
+ * cached `wasmMemory.buffer` may still have the old shorter length
1981
+ * (V8 refreshes it lazily). If a pointer derived from shared memory lies
1982
+ * beyond the cached length, `wasmMemory.grow(0)` forces the agent to
1983
+ * observe the current memory size and refreshes the buffer.
1984
+ */
1985
+ ensureBufferFor: function (end) {
1986
+ var buffer = wasmMemory.buffer;
1987
+ if (end > buffer.byteLength) {
1988
+ wasmMemory.grow(0);
1989
+ buffer = wasmMemory.buffer;
1990
+ }
1991
+ return buffer;
1712
1992
  },
1713
1993
  init: function () {
1714
- emnapiAWMT.unusedWorkers = [];
1715
- emnapiAWMT.runningWorkers = [];
1716
- emnapiAWMT.workQueue = [];
1994
+ emnapiAWMT.pool = [];
1717
1995
  emnapiAWMT.workerReady = null;
1996
+ if (typeof PThread !== 'undefined') {
1997
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
1998
+ Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
1999
+ var __original_getNewWorker_1 = PThread.getNewWorker;
2000
+ PThread.getNewWorker = function () {
2001
+ var r = __original_getNewWorker_1.apply(this, arguments);
2002
+ emnapiAWMT.addListener(r);
2003
+ return r;
2004
+ };
2005
+ }
1718
2006
  },
1719
2007
  addListener: function (worker) {
1720
2008
  if (!worker)
@@ -1728,18 +2016,8 @@ function createNapiModule(options) {
1728
2016
  var type = __emnapi__.type;
1729
2017
  var payload = __emnapi__.payload;
1730
2018
  if (type === 'async-work-complete') {
1731
- emnapiCtx.decreaseWaitingRequestCounter();
1732
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
1733
- emnapiAWMT.unusedWorkers.push(worker);
1734
- emnapiAWMT.checkIdleWorker();
1735
2019
  emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */);
1736
2020
  }
1737
- else if (type === 'async-work-queue') {
1738
- emnapiAWMT.scheduleWork(payload.work);
1739
- }
1740
- else if (type === 'async-work-cancel') {
1741
- emnapiAWMT.cancelWork(payload.work);
1742
- }
1743
2021
  }
1744
2022
  };
1745
2023
  var dispose = function () {
@@ -1760,6 +2038,26 @@ function createNapiModule(options) {
1760
2038
  }
1761
2039
  return true;
1762
2040
  },
2041
+ initGlobal: function () {
2042
+ if (!emnapiAWMT.globalAddress) {
2043
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
2044
+ emnapiAWMT.globalAddress >>>= 0;
2045
+ var size = emnapiAWMT.globalOffset.end;
2046
+ var addr = emnapiAWMT.globalAddress;
2047
+ new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
2048
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
2049
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
2050
+ }
2051
+ },
2052
+ terminateWorkers: function () {
2053
+ emnapiAWMT.pool.forEach(function (w) {
2054
+ var _a, _b;
2055
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
2056
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
2057
+ w.terminate();
2058
+ });
2059
+ emnapiAWMT.pool.length = 0;
2060
+ },
1763
2061
  initWorkers: function (n) {
1764
2062
  if (ENVIRONMENT_IS_PTHREAD) {
1765
2063
  // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
@@ -1767,137 +2065,212 @@ function createNapiModule(options) {
1767
2065
  }
1768
2066
  if (emnapiAWMT.workerReady)
1769
2067
  return emnapiAWMT.workerReady;
1770
- if (typeof onCreateWorker !== 'function') {
1771
- throw new TypeError('`options.onCreateWorker` is not a function');
1772
- }
1773
- var promises = [];
1774
- var args = [];
1775
2068
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
1776
2069
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
1777
2070
  }
2071
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
2072
+ var args = [];
2073
+ emnapiAWMT.initGlobal();
1778
2074
  for (var i = 0; i < n; ++i) {
1779
- args.push(wasmInstance.exports.emnapi_async_worker_create());
2075
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
1780
2076
  }
1781
- try {
1782
- var _loop_1 = function (i) {
1783
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
1784
- var p = PThread.loadWasmModuleToWorker(worker);
1785
- emnapiAWMT.addListener(worker);
1786
- promises.push(p.then(function () {
1787
- if (typeof worker.unref === 'function') {
1788
- worker.unref();
1789
- }
1790
- }));
1791
- emnapiAWMT.unusedWorkers.push(worker);
1792
- var arg = args[i];
1793
- worker.threadBlockBase = arg;
1794
- worker.postMessage({
1795
- __emnapi__: {
1796
- type: 'async-worker-init',
1797
- payload: { arg: arg }
1798
- }
1799
- });
1800
- };
1801
- for (var i = 0; i < n; ++i) {
1802
- _loop_1(i);
2077
+ var promises = args.map(function (index) {
2078
+ if (index === 0) {
2079
+ return Promise.reject(new Error('Failed to create async worker'));
1803
2080
  }
1804
- }
1805
- catch (err) {
1806
- for (var i = 0; i < n; ++i) {
1807
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
1808
- var arg = args[i];
1809
- _free(arg);
2081
+ var worker;
2082
+ if (index < 0) {
2083
+ worker = emnapiAWMT.pool[-index - 1];
2084
+ if (worker)
2085
+ return worker.whenLoaded;
1810
2086
  }
1811
- throw err;
1812
- }
2087
+ index >>>= 0;
2088
+ var tidOffset = 20;
2089
+ var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
2090
+ var tid = view.getInt32(index + tidOffset, true);
2091
+ worker = PThread.pthreads[tid];
2092
+ return worker.whenLoaded;
2093
+ });
1813
2094
  emnapiAWMT.workerReady = Promise.all(promises);
1814
2095
  return emnapiAWMT.workerReady;
1815
2096
  },
1816
- checkIdleWorker: function () {
1817
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
1818
- var worker = emnapiAWMT.unusedWorkers.shift();
1819
- var work = emnapiAWMT.workQueue.shift();
1820
- emnapiAWMT.runningWorkers.push(worker);
1821
- worker.postMessage({
1822
- __emnapi__: {
1823
- type: 'async-work-execute',
1824
- payload: { work: work }
1825
- }
1826
- });
1827
- }
1828
- },
1829
2097
  getResource: function (work) {
1830
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
2098
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
2099
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2100
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
1831
2101
  },
1832
2102
  getExecute: function (work) {
1833
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
2103
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
2104
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2105
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
1834
2106
  },
1835
2107
  getComplete: function (work) {
1836
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
2108
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
2109
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2110
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
1837
2111
  },
1838
2112
  getEnv: function (work) {
1839
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
2113
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
2114
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2115
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
1840
2116
  },
1841
2117
  getData: function (work) {
1842
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
2118
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
2119
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2120
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
2121
+ },
2122
+ getMutex: function () {
2123
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
2124
+ var mutex = {
2125
+ lock: function () {
2126
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
2127
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
2128
+ if (isBrowserMain) {
2129
+ while (true) {
2130
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
2131
+ if (oldValue === 0) {
2132
+ return;
2133
+ }
2134
+ }
2135
+ }
2136
+ else {
2137
+ while (true) {
2138
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
2139
+ if (oldValue === 0) {
2140
+ return;
2141
+ }
2142
+ Atomics.wait(i32a, 0, 10);
2143
+ }
2144
+ }
2145
+ },
2146
+ unlock: function () {
2147
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
2148
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
2149
+ if (oldValue !== 10) {
2150
+ throw new Error('Tried to unlock while not holding the mutex');
2151
+ }
2152
+ Atomics.notify(i32a, 0, 1);
2153
+ },
2154
+ execute: function (fn) {
2155
+ mutex.lock();
2156
+ try {
2157
+ return fn();
2158
+ }
2159
+ finally {
2160
+ mutex.unlock();
2161
+ }
2162
+ }
2163
+ };
2164
+ return mutex;
2165
+ },
2166
+ getCond: function () {
2167
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
2168
+ var mutex = emnapiAWMT.getMutex();
2169
+ var cond = {
2170
+ wait: function () {
2171
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
2172
+ var value = Atomics.load(i32a, 0);
2173
+ mutex.unlock();
2174
+ Atomics.wait(i32a, 0, value);
2175
+ mutex.lock();
2176
+ },
2177
+ signal: function () {
2178
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
2179
+ Atomics.add(i32a, 0, 1);
2180
+ Atomics.notify(i32a, 0, 1);
2181
+ }
2182
+ };
2183
+ return cond;
2184
+ },
2185
+ queueInit: function (q) {
2186
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
2187
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2188
+ HEAP_DATA_VIEW.setUint32(q, q, true);
2189
+ HEAP_DATA_VIEW.setUint32(q + 4, q, true);
2190
+ },
2191
+ queueInsertTail: function (h, q) {
2192
+ emnapiAWMT.ensureBufferFor(h + 4 + 4);
2193
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
2194
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2195
+ HEAP_DATA_VIEW.setUint32(q, h, true);
2196
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2197
+ var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
2198
+ HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
2199
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2200
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
2201
+ HEAP_DATA_VIEW.setUint32(qprev, q, true);
2202
+ HEAP_DATA_VIEW.setUint32(h + 4, q, true);
2203
+ },
2204
+ queueRemove: function (q) {
2205
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
2206
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2207
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2208
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
2209
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2210
+ var qnext = HEAP_DATA_VIEW.getUint32(q, true);
2211
+ HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
2212
+ HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
2213
+ },
2214
+ queueEmpty: function (q) {
2215
+ emnapiAWMT.ensureBufferFor(q + 4);
2216
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2217
+ // eslint-disable-next-line eqeqeq
2218
+ return q == HEAP_DATA_VIEW.getUint32(q, true);
1843
2219
  },
1844
2220
  scheduleWork: function (work) {
1845
2221
  var _a;
1846
- if (ENVIRONMENT_IS_PTHREAD) {
1847
- var postMessage_1 = napiModule.postMessage;
1848
- postMessage_1({
1849
- __emnapi__: {
1850
- type: 'async-work-queue',
1851
- payload: { work: work }
1852
- }
2222
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
2223
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
2224
+ emnapiAWMT.workerReady.ready = true;
2225
+ }).catch(function (err) {
2226
+ emnapiAWMT.workerReady = null;
2227
+ throw err;
1853
2228
  });
1854
- return;
1855
2229
  }
1856
2230
  emnapiCtx.increaseWaitingRequestCounter();
1857
- emnapiAWMT.workQueue.push(work);
1858
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
1859
- emnapiAWMT.checkIdleWorker();
2231
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
2232
+ Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */);
2233
+ var mutex = emnapiAWMT.getMutex();
2234
+ var cond = emnapiAWMT.getCond();
2235
+ mutex.lock();
2236
+ try {
2237
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
1860
2238
  }
1861
- else {
1862
- var fail = function (err) {
1863
- emnapiCtx.decreaseWaitingRequestCounter();
1864
- throw err;
1865
- };
1866
- try {
1867
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1868
- emnapiAWMT.workerReady.ready = true;
1869
- emnapiAWMT.checkIdleWorker();
1870
- }, fail);
1871
- }
1872
- catch (err) {
1873
- fail(err);
1874
- }
2239
+ catch (err) {
2240
+ emnapiCtx.decreaseWaitingRequestCounter();
2241
+ mutex.unlock();
2242
+ throw err;
2243
+ }
2244
+ emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
2245
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2246
+ if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
2247
+ cond.signal();
1875
2248
  }
2249
+ mutex.unlock();
1876
2250
  },
1877
2251
  cancelWork: function (work) {
1878
- if (ENVIRONMENT_IS_PTHREAD) {
1879
- var postMessage_2 = napiModule.postMessage;
1880
- postMessage_2({
1881
- __emnapi__: {
1882
- type: 'async-work-cancel',
1883
- payload: { work: work }
1884
- }
1885
- });
1886
- return 0 /* napi_status.napi_ok */;
2252
+ var cancelled = false;
2253
+ emnapiAWMT.getMutex().execute(function () {
2254
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
2255
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2256
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */;
2257
+ if (cancelled) {
2258
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
2259
+ }
2260
+ });
2261
+ if (!cancelled) {
2262
+ return 9 /* napi_status.napi_generic_failure */;
1887
2263
  }
1888
- var index = emnapiAWMT.workQueue.indexOf(work);
1889
- if (index !== -1) {
1890
- emnapiAWMT.workQueue.splice(index, 1);
1891
- emnapiCtx.feature.setImmediate(function () {
1892
- emnapiCtx.decreaseWaitingRequestCounter();
1893
- emnapiAWMT.checkIdleWorker();
1894
- emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
1895
- });
1896
- return 0 /* napi_status.napi_ok */;
2264
+ if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0 /* AsyncWorkStatus.Pending */, 1 /* AsyncWorkStatus.Cancelled */) !== 0 /* AsyncWorkStatus.Pending */) {
2265
+ return 9 /* napi_status.napi_generic_failure */;
1897
2266
  }
1898
- return 9 /* napi_status.napi_generic_failure */;
2267
+ emnapiCtx.feature.setImmediate(function () {
2268
+ emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
2269
+ });
2270
+ return 0 /* napi_status.napi_ok */;
1899
2271
  },
1900
2272
  callComplete: function (work, status) {
2273
+ emnapiCtx.decreaseWaitingRequestCounter();
1901
2274
  var complete = emnapiAWMT.getComplete(work);
1902
2275
  var env = emnapiAWMT.getEnv(work);
1903
2276
  var data = emnapiAWMT.getData(work);
@@ -1915,7 +2288,7 @@ function createNapiModule(options) {
1915
2288
  var resource = emnapiAWMT.getResource(work);
1916
2289
  var resource_value = emnapiCtx.refStore.get(resource).get();
1917
2290
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1918
- var view = new DataView(wasmMemory.buffer);
2291
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
1919
2292
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
1920
2293
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
1921
2294
  emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
@@ -1932,6 +2305,7 @@ function createNapiModule(options) {
1932
2305
  }
1933
2306
  }
1934
2307
  };
2308
+ emnapiAWMT.init();
1935
2309
  /** @__sig ippppppp */
1936
2310
  var napi_create_async_work = singleThreadAsyncWork
1937
2311
  ? function (env, resource, resource_name, execute, complete, data, result) {
@@ -1956,8 +2330,9 @@ function createNapiModule(options) {
1956
2330
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
1957
2331
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1958
2332
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
2333
+ result >>>= 0;
1959
2334
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1960
- HEAP_DATA_VIEW.setInt32(result, id, true);
2335
+ HEAP_DATA_VIEW.setUint32(result, id, true);
1961
2336
  return envObject.clearLastError();
1962
2337
  }
1963
2338
  : function (env, resource, resource_name, execute, complete, data, result) {
@@ -1983,19 +2358,22 @@ function createNapiModule(options) {
1983
2358
  var aw = _malloc(sizeofAW);
1984
2359
  if (!aw)
1985
2360
  return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
1986
- new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
2361
+ aw >>>= 0;
2362
+ new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
1987
2363
  var s = envObject.ensureHandleId(resourceObject);
1988
2364
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */);
1989
2365
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1990
2366
  var resource_ = resourceRef.id;
1991
2367
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1992
- HEAP_DATA_VIEW.setInt32(aw, resource_, true);
2368
+ HEAP_DATA_VIEW.setUint32(aw, resource_, true);
1993
2369
  _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
1994
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.env, env, true);
1995
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.execute, execute, true);
1996
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.complete, complete, true);
1997
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.data, data, true);
1998
- HEAP_DATA_VIEW.setInt32(result, aw, true);
2370
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
2371
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
2372
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
2373
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
2374
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
2375
+ result >>>= 0;
2376
+ HEAP_DATA_VIEW.setUint32(result, aw, true);
1999
2377
  return envObject.clearLastError();
2000
2378
  };
2001
2379
  /** @__sig ipp */
@@ -2008,6 +2386,7 @@ function createNapiModule(options) {
2008
2386
  envObject.checkGCAccess();
2009
2387
  if (!work)
2010
2388
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2389
+ work >>>= 0;
2011
2390
  emnapiAWST.remove(work);
2012
2391
  return envObject.clearLastError();
2013
2392
  }
@@ -2019,10 +2398,11 @@ function createNapiModule(options) {
2019
2398
  envObject.checkGCAccess();
2020
2399
  if (!work)
2021
2400
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2401
+ work >>>= 0;
2022
2402
  var resource = emnapiAWMT.getResource(work);
2023
2403
  emnapiCtx.refStore.get(resource).dispose();
2024
2404
  if (emnapiNodeBinding) {
2025
- var view = new DataView(wasmMemory.buffer);
2405
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
2026
2406
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
2027
2407
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
2028
2408
  _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
@@ -2038,6 +2418,7 @@ function createNapiModule(options) {
2038
2418
  var envObject = emnapiCtx.envStore.get(env);
2039
2419
  if (!work)
2040
2420
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2421
+ work >>>= 0;
2041
2422
  emnapiAWST.queue(work);
2042
2423
  return envObject.clearLastError();
2043
2424
  }
@@ -2047,6 +2428,7 @@ function createNapiModule(options) {
2047
2428
  var envObject = emnapiCtx.envStore.get(env);
2048
2429
  if (!work)
2049
2430
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2431
+ work >>>= 0;
2050
2432
  emnapiAWMT.scheduleWork(work);
2051
2433
  return envObject.clearLastError();
2052
2434
  };
@@ -2058,6 +2440,7 @@ function createNapiModule(options) {
2058
2440
  var envObject = emnapiCtx.envStore.get(env);
2059
2441
  if (!work)
2060
2442
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2443
+ work >>>= 0;
2061
2444
  var status = emnapiAWST.cancel(work);
2062
2445
  if (status === 0 /* napi_status.napi_ok */)
2063
2446
  return envObject.clearLastError();
@@ -2069,42 +2452,129 @@ function createNapiModule(options) {
2069
2452
  var envObject = emnapiCtx.envStore.get(env);
2070
2453
  if (!work)
2071
2454
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2455
+ work >>>= 0;
2072
2456
  var status = emnapiAWMT.cancelWork(work);
2073
2457
  if (status === 0 /* napi_status.napi_ok */)
2074
2458
  return envObject.clearLastError();
2075
2459
  return envObject.setLastError(status);
2076
2460
  };
2077
- function initWorker(startArg) {
2461
+ /** @__sig pp */
2462
+ function _emnapi_async_worker(globalAddress) {
2463
+ globalAddress >>>= 0;
2464
+ emnapiAWMT.globalAddress = globalAddress;
2465
+ var mutex = emnapiAWMT.getMutex();
2466
+ var cond = emnapiAWMT.getCond();
2467
+ mutex.lock();
2468
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
2469
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
2470
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
2471
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2472
+ for (;;) {
2473
+ emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
2474
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
2475
+ Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2476
+ cond.wait();
2477
+ Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2478
+ }
2479
+ var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
2480
+ if (q === exitMessageAddr) {
2481
+ cond.signal();
2482
+ mutex.unlock();
2483
+ break;
2484
+ }
2485
+ var work = q - emnapiAWMT.offset.queue;
2486
+ emnapiAWMT.queueRemove(q);
2487
+ emnapiAWMT.queueInit(q);
2488
+ mutex.unlock();
2489
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
2490
+ if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) {
2491
+ abort('unreachable');
2492
+ }
2493
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2494
+ var execute = emnapiAWMT.getExecute(work);
2495
+ var env = emnapiAWMT.getEnv(work);
2496
+ var data = emnapiAWMT.getData(work);
2497
+ (wasmTable.get(execute))(env, data);
2498
+ Atomics.store(statusBuffer, 0, 2 /* AsyncWorkStatus.Completed */);
2499
+ var postMessage_1 = napiModule.postMessage;
2500
+ postMessage_1({
2501
+ __emnapi__: {
2502
+ type: 'async-work-complete',
2503
+ payload: { work: work }
2504
+ }
2505
+ });
2506
+ mutex.lock();
2507
+ }
2508
+ return 0;
2509
+ }
2510
+ /** @__sig ipp */
2511
+ function _emnapi_spawn_worker(f, globalAddress) {
2512
+ if (typeof onCreateWorker !== 'function') {
2513
+ throw new TypeError('`options.onCreateWorker` is not a function');
2514
+ }
2515
+ var promises = [];
2516
+ var args = [];
2517
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2518
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2519
+ }
2520
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
2521
+ var handleError = function (e) {
2522
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
2523
+ emnapiAWMT.terminateWorkers();
2524
+ }
2525
+ };
2526
+ var ret;
2527
+ try {
2528
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2529
+ var p = PThread.loadWasmModuleToWorker(worker_1);
2530
+ if (ENVIRONMENT_IS_NODE) {
2531
+ worker_1.on('error', handleError);
2532
+ }
2533
+ else {
2534
+ worker_1.addEventListener('error', handleError, false);
2535
+ }
2536
+ emnapiAWMT.addListener(worker_1);
2537
+ emnapiTSFN.addListener(worker_1);
2538
+ promises.push(p.then(function () {
2539
+ if (typeof worker_1.unref === 'function') {
2540
+ worker_1.unref();
2541
+ }
2542
+ }));
2543
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
2544
+ var arg = args[0];
2545
+ worker_1.threadBlockBase = arg;
2546
+ worker_1.postMessage({
2547
+ __emnapi__: {
2548
+ type: 'async-worker-init',
2549
+ payload: { arg: arg, func: [f, globalAddress] }
2550
+ }
2551
+ });
2552
+ }
2553
+ catch (err) {
2554
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2555
+ var arg = args[0];
2556
+ _free(arg);
2557
+ throw err;
2558
+ }
2559
+ return ret;
2560
+ }
2561
+ function initWorker(startArg, func) {
2078
2562
  if (napiModule.childThread) {
2079
2563
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
2080
2564
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
2081
2565
  }
2082
2566
  wasmInstance.exports.emnapi_async_worker_init(startArg);
2567
+ (wasmTable.get(func[0]))(func[1]);
2083
2568
  }
2084
2569
  else {
2085
2570
  throw new Error('startThread is only available in child threads');
2086
2571
  }
2087
2572
  }
2088
- function executeAsyncWork(work) {
2089
- if (!ENVIRONMENT_IS_PTHREAD)
2090
- return;
2091
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2092
- var execute = emnapiAWMT.getExecute(work);
2093
- var env = emnapiAWMT.getEnv(work);
2094
- var data = emnapiAWMT.getData(work);
2095
- (wasmTable.get(execute))(env, data);
2096
- var postMessage = napiModule.postMessage;
2097
- postMessage({
2098
- __emnapi__: {
2099
- type: 'async-work-complete',
2100
- payload: { work: work }
2101
- }
2102
- });
2103
- }
2104
2573
  napiModule.initWorker = initWorker;
2105
- napiModule.executeAsyncWork = executeAsyncWork;
2106
2574
  var asyncWorkMod = /*#__PURE__*/ Object.freeze({
2107
2575
  __proto__: null,
2576
+ _emnapi_async_worker: _emnapi_async_worker,
2577
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
2108
2578
  napi_cancel_async_work: napi_cancel_async_work,
2109
2579
  napi_create_async_work: napi_create_async_work,
2110
2580
  napi_delete_async_work: napi_delete_async_work,
@@ -2127,6 +2597,10 @@ function createNapiModule(options) {
2127
2597
  emnapiExternalMemory.table = new WeakMap();
2128
2598
  emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
2129
2599
  },
2600
+ isSharedArrayBuffer: function (value) {
2601
+ return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
2602
+ (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
2603
+ },
2130
2604
  isDetachedArrayBuffer: function (arrayBuffer) {
2131
2605
  if (arrayBuffer.byteLength === 0) {
2132
2606
  try {
@@ -2170,6 +2644,7 @@ function createNapiModule(options) {
2170
2644
  var pointer = _malloc(arrayBuffer.byteLength);
2171
2645
  if (!pointer)
2172
2646
  throw new Error('Out of memory');
2647
+ pointer >>>= 0;
2173
2648
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
2174
2649
  info.address = pointer;
2175
2650
  info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
@@ -2191,8 +2666,7 @@ function createNapiModule(options) {
2191
2666
  }
2192
2667
  return view;
2193
2668
  }
2194
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
2195
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
2669
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
2196
2670
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
2197
2671
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
2198
2672
  var Ctor = info.Ctor;
@@ -2222,6 +2696,75 @@ function createNapiModule(options) {
2222
2696
  return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
2223
2697
  }
2224
2698
  };
2699
+ /**
2700
+ * Metadata layout in wasm shared memory (allocated with _malloc):
2701
+ * offset 0: refcount (int32, 4 bytes - for Atomics)
2702
+ * offset POINTER_SIZE: external_data (pointer)
2703
+ * offset 2*POINTER_SIZE: byte_length (size_t)
2704
+ * offset 3*POINTER_SIZE: finalize_cb (pointer)
2705
+ * offset 4*POINTER_SIZE: finalize_data (pointer)
2706
+ * offset 5*POINTER_SIZE: finalize_hint (pointer)
2707
+ * Total: 6 * POINTER_SIZE bytes
2708
+ */
2709
+ /**
2710
+ * @__postset
2711
+ * ```
2712
+ * emnapiExternalSAB.init();
2713
+ * ```
2714
+ */
2715
+ var emnapiExternalSAB = {
2716
+ registry: undefined,
2717
+ handleTable: new WeakMap(),
2718
+ init: function () {
2719
+ emnapiExternalSAB.handleTable = new WeakMap();
2720
+ emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
2721
+ ? new FinalizationRegistry(function (metaPtr) {
2722
+ emnapiExternalSAB.release(metaPtr);
2723
+ })
2724
+ : undefined;
2725
+ },
2726
+ allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
2727
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2728
+ var size = 4 * 6;
2729
+ // eslint-disable-next-line prefer-const
2730
+ var metaPtr = _malloc(size);
2731
+ if (!metaPtr)
2732
+ throw new Error('Out of memory');
2733
+ metaPtr >>>= 0;
2734
+ // refcount = 1
2735
+ Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2736
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2737
+ HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
2738
+ HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
2739
+ HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
2740
+ HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
2741
+ HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
2742
+ return metaPtr;
2743
+ },
2744
+ readMeta: function (metaPtr) {
2745
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2746
+ var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
2747
+ var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
2748
+ var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
2749
+ var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
2750
+ var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
2751
+ return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
2752
+ },
2753
+ release: function (metaPtr) {
2754
+ var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2755
+ if (oldRefcount === 1) {
2756
+ // refcount reached 0, we are the last holder
2757
+ var info = emnapiExternalSAB.readMeta(metaPtr);
2758
+ var finalize_cb = info.finalize_cb;
2759
+ if (finalize_cb) {
2760
+ var finalize_data = info.finalize_data;
2761
+ var finalize_hint = info.finalize_hint;
2762
+ (wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
2763
+ }
2764
+ _free(metaPtr);
2765
+ }
2766
+ }
2767
+ };
2225
2768
  /* eslint-disable @typescript-eslint/indent */
2226
2769
  /**
2227
2770
  * @__postset
@@ -2332,7 +2875,7 @@ function createNapiModule(options) {
2332
2875
  ptr >>>= 0;
2333
2876
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
2334
2877
  var end = ptr;
2335
- if (length === -1) {
2878
+ if (length === -1 || length === 4294967295) {
2336
2879
  for (; HEAPU8[end];)
2337
2880
  ++end;
2338
2881
  }
@@ -2423,12 +2966,12 @@ function createNapiModule(options) {
2423
2966
  return '';
2424
2967
  ptr >>>= 0;
2425
2968
  var end = ptr;
2426
- if (length === -1) {
2427
- var idx = end >> 1;
2969
+ if (length === -1 || length === 4294967295) {
2970
+ var idx = end >>> 1;
2428
2971
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
2429
2972
  while (HEAPU16[idx])
2430
2973
  ++idx;
2431
- end = idx << 1;
2974
+ end = (idx << 1) >>> 0;
2432
2975
  }
2433
2976
  else {
2434
2977
  end = ptr + (length >>> 0) * 2;
@@ -2461,12 +3004,13 @@ function createNapiModule(options) {
2461
3004
  return outPtr - startPtr;
2462
3005
  },
2463
3006
  newString: function (env, str, length, result, stringMaker) {
3007
+ length >>>= 0;
2464
3008
  if (!env)
2465
3009
  return 1 /* napi_status.napi_invalid_arg */;
2466
3010
  // @ts-expect-error
2467
3011
  var envObject = emnapiCtx.envStore.get(env);
2468
3012
  envObject.checkGCAccess();
2469
- var autoLength = length === -1;
3013
+ var autoLength = length === -1 || length === 4294967295;
2470
3014
  var sizelength = length >>> 0;
2471
3015
  if (length !== 0) {
2472
3016
  if (!str)
@@ -2476,20 +3020,23 @@ function createNapiModule(options) {
2476
3020
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2477
3021
  if (!(autoLength || (sizelength <= 2147483647)))
2478
3022
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3023
+ str >>>= 0;
2479
3024
  var strValue = stringMaker(str, autoLength, sizelength);
3025
+ result >>>= 0;
2480
3026
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2481
3027
  var value = emnapiCtx.addToCurrentScope(strValue).id;
2482
3028
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2483
- HEAP_DATA_VIEW.setInt32(result, value, true);
3029
+ HEAP_DATA_VIEW.setUint32(result, value, true);
2484
3030
  return envObject.clearLastError();
2485
3031
  },
2486
3032
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
3033
+ length >>>= 0;
2487
3034
  if (!env)
2488
3035
  return 1 /* napi_status.napi_invalid_arg */;
2489
3036
  // @ts-expect-error
2490
3037
  var envObject = emnapiCtx.envStore.get(env);
2491
3038
  envObject.checkGCAccess();
2492
- var autoLength = length === -1;
3039
+ var autoLength = length === -1 || length === 4294967295;
2493
3040
  var sizelength = length >>> 0;
2494
3041
  if (length !== 0) {
2495
3042
  if (!str)
@@ -2535,6 +3082,7 @@ function createNapiModule(options) {
2535
3082
  if (!handle.isArray()) {
2536
3083
  return envObject.setLastError(8 /* napi_status.napi_array_expected */);
2537
3084
  }
3085
+ result >>>= 0;
2538
3086
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2539
3087
  var v = handle.value.length >>> 0;
2540
3088
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2558,19 +3106,59 @@ function createNapiModule(options) {
2558
3106
  if (!arraybuffer)
2559
3107
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2560
3108
  var handle = emnapiCtx.handleStore.get(arraybuffer);
2561
- if (!handle.isArrayBuffer()) {
3109
+ if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
2562
3110
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2563
3111
  }
2564
3112
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2565
3113
  if (data) {
3114
+ data >>>= 0;
2566
3115
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2567
3116
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
2568
- HEAP_DATA_VIEW.setInt32(data, p, true);
3117
+ HEAP_DATA_VIEW.setUint32(data, p, true);
3118
+ }
3119
+ if (byte_length) {
3120
+ byte_length >>>= 0;
3121
+ HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
3122
+ }
3123
+ return envObject.clearLastError();
3124
+ }
3125
+ /**
3126
+ * @__sig ippp
3127
+ */
3128
+ function node_api_set_prototype(env, object, value) {
3129
+ if (!env)
3130
+ return 1 /* napi_status.napi_invalid_arg */;
3131
+ // @ts-expect-error
3132
+ var envObject = emnapiCtx.envStore.get(env);
3133
+ envObject.checkGCAccess();
3134
+ if (!envObject.tryCatch.isEmpty())
3135
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
3136
+ if (!envObject.canCallIntoJs())
3137
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
3138
+ envObject.clearLastError();
3139
+ try {
3140
+ if (!value)
3141
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3142
+ var obj = emnapiCtx.handleStore.get(object).value;
3143
+ if (obj == null) {
3144
+ throw new TypeError('Cannot convert undefined or null to object');
3145
+ }
3146
+ var type = typeof obj;
3147
+ var v = void 0;
3148
+ try {
3149
+ v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
3150
+ }
3151
+ catch (_) {
3152
+ return envObject.setLastError(2 /* napi_status.napi_object_expected */);
3153
+ }
3154
+ var val = emnapiCtx.handleStore.get(value).value;
3155
+ Object.setPrototypeOf(v, val);
3156
+ return envObject.getReturnStatus();
2569
3157
  }
2570
- if (byte_length) {
2571
- HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
3158
+ catch (err) {
3159
+ envObject.tryCatch.setError(err);
3160
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
2572
3161
  }
2573
- return envObject.clearLastError();
2574
3162
  }
2575
3163
  /**
2576
3164
  * @__sig ippp
@@ -2602,10 +3190,11 @@ function createNapiModule(options) {
2602
3190
  catch (_) {
2603
3191
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
2604
3192
  }
3193
+ result >>>= 0;
2605
3194
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2606
3195
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
2607
3196
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2608
- HEAP_DATA_VIEW.setInt32(result, p, true);
3197
+ HEAP_DATA_VIEW.setUint32(result, p, true);
2609
3198
  return envObject.getReturnStatus();
2610
3199
  }
2611
3200
  catch (err) {
@@ -2631,6 +3220,7 @@ function createNapiModule(options) {
2631
3220
  var v = handle.value;
2632
3221
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2633
3222
  if (type) {
3223
+ type >>>= 0;
2634
3224
  var t = void 0;
2635
3225
  if (v instanceof Int8Array) {
2636
3226
  t = 0 /* napi_typedarray_type.napi_int8_array */;
@@ -2653,6 +3243,9 @@ function createNapiModule(options) {
2653
3243
  else if (v instanceof Uint32Array) {
2654
3244
  t = 6 /* napi_typedarray_type.napi_uint32_array */;
2655
3245
  }
3246
+ else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
3247
+ t = 11 /* napi_typedarray_type.napi_float16_array */;
3248
+ }
2656
3249
  else if (v instanceof Float32Array) {
2657
3250
  t = 7 /* napi_typedarray_type.napi_float32_array */;
2658
3251
  }
@@ -2671,24 +3264,27 @@ function createNapiModule(options) {
2671
3264
  }
2672
3265
  HEAP_DATA_VIEW.setInt32(type, t, true);
2673
3266
  }
3267
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
2674
3268
  if (length) {
3269
+ length >>>= 0;
2675
3270
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
2676
3271
  }
2677
- var buffer;
2678
3272
  if (data || arraybuffer) {
2679
- buffer = v.buffer;
2680
3273
  if (data) {
3274
+ data >>>= 0;
2681
3275
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2682
3276
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2683
- HEAP_DATA_VIEW.setInt32(data, p, true);
3277
+ HEAP_DATA_VIEW.setUint32(data, p, true);
2684
3278
  }
2685
3279
  if (arraybuffer) {
3280
+ arraybuffer >>>= 0;
2686
3281
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2687
- var ab = envObject.ensureHandleId(buffer);
2688
- HEAP_DATA_VIEW.setInt32(arraybuffer, ab, true);
3282
+ var ab = envObject.ensureHandleId(v.buffer);
3283
+ HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2689
3284
  }
2690
3285
  }
2691
3286
  if (byte_offset) {
3287
+ byte_offset >>>= 0;
2692
3288
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2693
3289
  }
2694
3290
  return envObject.clearLastError();
@@ -2727,26 +3323,28 @@ function createNapiModule(options) {
2727
3323
  if (!handle.isDataView()) {
2728
3324
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2729
3325
  }
2730
- var v = handle.value;
3326
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
2731
3327
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2732
3328
  if (byte_length) {
3329
+ byte_length >>>= 0;
2733
3330
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
2734
3331
  }
2735
- var buffer;
2736
3332
  if (data || arraybuffer) {
2737
- buffer = v.buffer;
2738
3333
  if (data) {
3334
+ data >>>= 0;
2739
3335
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2740
3336
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2741
- HEAP_DATA_VIEW.setInt32(data, p, true);
3337
+ HEAP_DATA_VIEW.setUint32(data, p, true);
2742
3338
  }
2743
3339
  if (arraybuffer) {
3340
+ arraybuffer >>>= 0;
2744
3341
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2745
- var ab = envObject.ensureHandleId(buffer);
2746
- HEAP_DATA_VIEW.setInt32(arraybuffer, ab, true);
3342
+ var ab = envObject.ensureHandleId(v.buffer);
3343
+ HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2747
3344
  }
2748
3345
  }
2749
3346
  if (byte_offset) {
3347
+ byte_offset >>>= 0;
2750
3348
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2751
3349
  }
2752
3350
  return envObject.clearLastError();
@@ -2776,6 +3374,7 @@ function createNapiModule(options) {
2776
3374
  if (!handle.isDate()) {
2777
3375
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2778
3376
  }
3377
+ result >>>= 0;
2779
3378
  v = handle.value.valueOf();
2780
3379
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2781
3380
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -2803,6 +3402,7 @@ function createNapiModule(options) {
2803
3402
  if (typeof handle.value !== 'boolean') {
2804
3403
  return envObject.setLastError(7 /* napi_status.napi_boolean_expected */);
2805
3404
  }
3405
+ result >>>= 0;
2806
3406
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2807
3407
  var r = handle.value ? 1 : 0;
2808
3408
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2826,6 +3426,7 @@ function createNapiModule(options) {
2826
3426
  if (typeof handle.value !== 'number') {
2827
3427
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
2828
3428
  }
3429
+ result >>>= 0;
2829
3430
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2830
3431
  var r = handle.value;
2831
3432
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -2855,6 +3456,8 @@ function createNapiModule(options) {
2855
3456
  if (typeof numberValue !== 'bigint') {
2856
3457
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
2857
3458
  }
3459
+ lossless >>>= 0;
3460
+ result >>>= 0;
2858
3461
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2859
3462
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
2860
3463
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2897,6 +3500,8 @@ function createNapiModule(options) {
2897
3500
  if (typeof numberValue !== 'bigint') {
2898
3501
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
2899
3502
  }
3503
+ lossless >>>= 0;
3504
+ result >>>= 0;
2900
3505
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2901
3506
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
2902
3507
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2934,8 +3539,12 @@ function createNapiModule(options) {
2934
3539
  return envObject.setLastError(17 /* napi_status.napi_bigint_expected */);
2935
3540
  }
2936
3541
  var isMinus = handle.value < BigInt(0);
3542
+ sign_bit >>>= 0;
3543
+ words >>>= 0;
3544
+ word_count >>>= 0;
2937
3545
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2938
3546
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
3547
+ word_count_int >>>= 0;
2939
3548
  var wordCount = 0;
2940
3549
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
2941
3550
  while (bigintValue !== BigInt(0)) {
@@ -2989,10 +3598,11 @@ function createNapiModule(options) {
2989
3598
  if (!handle.isExternal()) {
2990
3599
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
2991
3600
  }
3601
+ result >>>= 0;
2992
3602
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2993
3603
  var p = handle.data();
2994
3604
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2995
- HEAP_DATA_VIEW.setInt32(result, p, true);
3605
+ HEAP_DATA_VIEW.setUint32(result, p, true);
2996
3606
  return envObject.clearLastError();
2997
3607
  }
2998
3608
  /**
@@ -3012,6 +3622,7 @@ function createNapiModule(options) {
3012
3622
  if (typeof handle.value !== 'number') {
3013
3623
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3014
3624
  }
3625
+ result >>>= 0;
3015
3626
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3016
3627
  var v = new Int32Array([handle.value])[0];
3017
3628
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3036,6 +3647,7 @@ function createNapiModule(options) {
3036
3647
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3037
3648
  }
3038
3649
  var numberValue = handle.value;
3650
+ result >>>= 0;
3039
3651
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3040
3652
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
3041
3653
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -3065,6 +3677,9 @@ function createNapiModule(options) {
3065
3677
  envObject.checkGCAccess();
3066
3678
  if (!value)
3067
3679
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3680
+ result >>>= 0;
3681
+ buf >>>= 0;
3682
+ buf_size >>>= 0;
3068
3683
  buf_size = buf_size >>> 0;
3069
3684
  var handle = emnapiCtx.handleStore.get(value);
3070
3685
  if (typeof handle.value !== 'string') {
@@ -3107,6 +3722,9 @@ function createNapiModule(options) {
3107
3722
  envObject.checkGCAccess();
3108
3723
  if (!value)
3109
3724
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3725
+ result >>>= 0;
3726
+ buf >>>= 0;
3727
+ buf_size >>>= 0;
3110
3728
  buf_size = buf_size >>> 0;
3111
3729
  var handle = emnapiCtx.handleStore.get(value);
3112
3730
  if (typeof handle.value !== 'string') {
@@ -3143,6 +3761,9 @@ function createNapiModule(options) {
3143
3761
  envObject.checkGCAccess();
3144
3762
  if (!value)
3145
3763
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3764
+ result >>>= 0;
3765
+ buf >>>= 0;
3766
+ buf_size >>>= 0;
3146
3767
  buf_size = buf_size >>> 0;
3147
3768
  var handle = emnapiCtx.handleStore.get(value);
3148
3769
  if (typeof handle.value !== 'string') {
@@ -3183,6 +3804,7 @@ function createNapiModule(options) {
3183
3804
  if (typeof handle.value !== 'number') {
3184
3805
  return envObject.setLastError(6 /* napi_status.napi_number_expected */);
3185
3806
  }
3807
+ result >>>= 0;
3186
3808
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3187
3809
  var v = new Uint32Array([handle.value])[0];
3188
3810
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3209,7 +3831,8 @@ function createNapiModule(options) {
3209
3831
  napi_get_value_string_latin1: napi_get_value_string_latin1,
3210
3832
  napi_get_value_string_utf16: napi_get_value_string_utf16,
3211
3833
  napi_get_value_string_utf8: napi_get_value_string_utf8,
3212
- napi_get_value_uint32: napi_get_value_uint32
3834
+ napi_get_value_uint32: napi_get_value_uint32,
3835
+ node_api_set_prototype: node_api_set_prototype
3213
3836
  });
3214
3837
  /**
3215
3838
  * @__sig ipip
@@ -3222,10 +3845,11 @@ function createNapiModule(options) {
3222
3845
  envObject.checkGCAccess();
3223
3846
  if (!result)
3224
3847
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3848
+ result >>>= 0;
3225
3849
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3226
3850
  var v = emnapiCtx.addToCurrentScope(value).id;
3227
3851
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3228
- HEAP_DATA_VIEW.setInt32(result, v, true);
3852
+ HEAP_DATA_VIEW.setUint32(result, v, true);
3229
3853
  return envObject.clearLastError();
3230
3854
  }
3231
3855
  /**
@@ -3239,10 +3863,11 @@ function createNapiModule(options) {
3239
3863
  envObject.checkGCAccess();
3240
3864
  if (!result)
3241
3865
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3866
+ result >>>= 0;
3242
3867
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3243
3868
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
3244
3869
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3245
- HEAP_DATA_VIEW.setInt32(result, v, true);
3870
+ HEAP_DATA_VIEW.setUint32(result, v, true);
3246
3871
  return envObject.clearLastError();
3247
3872
  }
3248
3873
  /**
@@ -3260,8 +3885,9 @@ function createNapiModule(options) {
3260
3885
  value = Number(low);
3261
3886
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3262
3887
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3888
+ high >>>= 0;
3263
3889
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3264
- HEAP_DATA_VIEW.setInt32(high, v1, true);
3890
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
3265
3891
  return envObject.clearLastError();
3266
3892
  }
3267
3893
  /**
@@ -3275,10 +3901,11 @@ function createNapiModule(options) {
3275
3901
  envObject.checkGCAccess();
3276
3902
  if (!result)
3277
3903
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3904
+ result >>>= 0;
3278
3905
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3279
3906
  var v = emnapiCtx.addToCurrentScope(value).id;
3280
3907
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3281
- HEAP_DATA_VIEW.setInt32(result, v, true);
3908
+ HEAP_DATA_VIEW.setUint32(result, v, true);
3282
3909
  return envObject.clearLastError();
3283
3910
  }
3284
3911
  /**
@@ -3375,8 +4002,9 @@ function createNapiModule(options) {
3375
4002
  value = low;
3376
4003
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3377
4004
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4005
+ high >>>= 0;
3378
4006
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3379
- HEAP_DATA_VIEW.setInt32(high, v1, true);
4007
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
3380
4008
  return envObject.clearLastError();
3381
4009
  }
3382
4010
  /**
@@ -3397,8 +4025,9 @@ function createNapiModule(options) {
3397
4025
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
3398
4026
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3399
4027
  var v1 = emnapiCtx.addToCurrentScope(value).id;
4028
+ high >>>= 0;
3400
4029
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3401
- HEAP_DATA_VIEW.setInt32(high, v1, true);
4030
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
3402
4031
  return envObject.clearLastError();
3403
4032
  }
3404
4033
  /**
@@ -3423,6 +4052,8 @@ function createNapiModule(options) {
3423
4052
  }
3424
4053
  if (!result)
3425
4054
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4055
+ words >>>= 0;
4056
+ word_count >>>= 0;
3426
4057
  word_count = word_count >>> 0;
3427
4058
  if (word_count > 2147483647) {
3428
4059
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
@@ -3439,8 +4070,9 @@ function createNapiModule(options) {
3439
4070
  value += wordi << BigInt(64 * i);
3440
4071
  }
3441
4072
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
4073
+ result >>>= 0;
3442
4074
  v = emnapiCtx.addToCurrentScope(value).id;
3443
- HEAP_DATA_VIEW.setInt32(result, v, true);
4075
+ HEAP_DATA_VIEW.setUint32(result, v, true);
3444
4076
  return envObject.getReturnStatus();
3445
4077
  }
3446
4078
  catch (err) {
@@ -3467,6 +4099,7 @@ function createNapiModule(options) {
3467
4099
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
3468
4100
  });
3469
4101
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
4102
+ utf8name >>>= 0;
3470
4103
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
3471
4104
  var f;
3472
4105
  var napiCallback = (wasmTable.get(cb));
@@ -3609,9 +4242,10 @@ function createNapiModule(options) {
3609
4242
  if (!finalize_cb)
3610
4243
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3611
4244
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint);
4245
+ result >>>= 0;
3612
4246
  referenceId = reference.id;
3613
4247
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3614
- HEAP_DATA_VIEW.setInt32(result, referenceId, true);
4248
+ HEAP_DATA_VIEW.setUint32(result, referenceId, true);
3615
4249
  }
3616
4250
  else {
3617
4251
  if (finalize_cb) {
@@ -3659,10 +4293,11 @@ function createNapiModule(options) {
3659
4293
  if (!ref)
3660
4294
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3661
4295
  if (result) {
4296
+ result >>>= 0;
3662
4297
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3663
4298
  data = ref.data();
3664
4299
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3665
- HEAP_DATA_VIEW.setInt32(result, data, true);
4300
+ HEAP_DATA_VIEW.setUint32(result, data, true);
3666
4301
  }
3667
4302
  if (action === 1 /* UnwrapAction.RemoveWrap */) {
3668
4303
  binding.wrapped = 0;
@@ -3702,12 +4337,15 @@ function createNapiModule(options) {
3702
4337
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3703
4338
  if (!constructor)
3704
4339
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4340
+ length >>>= 0;
4341
+ properties >>>= 0;
4342
+ property_count >>>= 0;
3705
4343
  property_count = property_count >>> 0;
3706
4344
  if (property_count > 0) {
3707
4345
  if (!properties)
3708
4346
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3709
4347
  }
3710
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
4348
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
3711
4349
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
3712
4350
  }
3713
4351
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -3719,14 +4357,15 @@ function createNapiModule(options) {
3719
4357
  for (var i = 0; i < property_count; i++) {
3720
4358
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3721
4359
  propPtr = properties + (i * (4 * 8));
3722
- var utf8Name = HEAP_DATA_VIEW.getInt32(propPtr, true);
3723
- var name_1 = HEAP_DATA_VIEW.getInt32(propPtr + 4, true);
3724
- var method = HEAP_DATA_VIEW.getInt32(propPtr + 8, true);
3725
- var getter = HEAP_DATA_VIEW.getInt32(propPtr + 12, true);
3726
- var setter = HEAP_DATA_VIEW.getInt32(propPtr + 16, true);
3727
- var value = HEAP_DATA_VIEW.getInt32(propPtr + 20, true);
4360
+ var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
4361
+ var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
4362
+ var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
4363
+ var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
4364
+ var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
4365
+ var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
3728
4366
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
3729
- var data = HEAP_DATA_VIEW.getInt32(propPtr + 28, true);
4367
+ attributes >>>= 0;
4368
+ var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
3730
4369
  if (utf8Name) {
3731
4370
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
3732
4371
  }
@@ -3748,7 +4387,8 @@ function createNapiModule(options) {
3748
4387
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3749
4388
  var valueHandle = emnapiCtx.addToCurrentScope(F);
3750
4389
  valueHandleId = valueHandle.id;
3751
- HEAP_DATA_VIEW.setInt32(result, valueHandleId, true);
4390
+ result >>>= 0;
4391
+ HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
3752
4392
  return envObject.getReturnStatus();
3753
4393
  }
3754
4394
  catch (err) {
@@ -3796,6 +4436,7 @@ function createNapiModule(options) {
3796
4436
  if (!(value.isObject() || value.isFunction())) {
3797
4437
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
3798
4438
  }
4439
+ type_tag >>>= 0;
3799
4440
  if (!type_tag) {
3800
4441
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
3801
4442
  }
@@ -3845,6 +4486,7 @@ function createNapiModule(options) {
3845
4486
  }
3846
4487
  var binding = envObject.getObjectBinding(value.value);
3847
4488
  if (binding.tag !== null) {
4489
+ type_tag >>>= 0;
3848
4490
  var tag = binding.tag;
3849
4491
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
3850
4492
  ret = (tag[0] === typeTag[0] &&
@@ -3855,6 +4497,7 @@ function createNapiModule(options) {
3855
4497
  else {
3856
4498
  ret = false;
3857
4499
  }
4500
+ result >>>= 0;
3858
4501
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3859
4502
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
3860
4503
  return envObject.getReturnStatus();
@@ -3886,12 +4529,16 @@ function createNapiModule(options) {
3886
4529
  }
3887
4530
  var handle = handleResult.handle;
3888
4531
  var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
4532
+ finalize_data >>>= 0;
4533
+ finalize_cb >>>= 0;
4534
+ finalize_hint >>>= 0;
3889
4535
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
3890
4536
  if (result) {
4537
+ result >>>= 0;
3891
4538
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
3892
4539
  var referenceId = reference.id;
3893
4540
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3894
- HEAP_DATA_VIEW.setInt32(result, referenceId, true);
4541
+ HEAP_DATA_VIEW.setUint32(result, referenceId, true);
3895
4542
  }
3896
4543
  return envObject.clearLastError();
3897
4544
  }
@@ -3935,6 +4582,9 @@ function createNapiModule(options) {
3935
4582
  try {
3936
4583
  if (!result)
3937
4584
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4585
+ byte_length >>>= 0;
4586
+ external_data >>>= 0;
4587
+ result >>>= 0;
3938
4588
  byte_length = byte_length >>> 0;
3939
4589
  if (!external_data) {
3940
4590
  byte_length = 0;
@@ -3986,6 +4636,12 @@ function createNapiModule(options) {
3986
4636
  case -1 /* emnapi_memory_view_type.emnapi_data_view */:
3987
4637
  viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 };
3988
4638
  break;
4639
+ case 11 /* emnapi_memory_view_type.emnapi_float16_array */:
4640
+ if (typeof Float16Array !== 'function') {
4641
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4642
+ }
4643
+ viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 };
4644
+ break;
3989
4645
  case -2 /* emnapi_memory_view_type.emnapi_buffer */: {
3990
4646
  if (!emnapiCtx.feature.Buffer) {
3991
4647
  throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
@@ -4014,7 +4670,7 @@ function createNapiModule(options) {
4014
4670
  }
4015
4671
  value = handle.id;
4016
4672
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4017
- HEAP_DATA_VIEW.setInt32(result, value, true);
4673
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4018
4674
  return envObject.getReturnStatus();
4019
4675
  }
4020
4676
  catch (err) {
@@ -4044,11 +4700,11 @@ function createNapiModule(options) {
4044
4700
  offset = offset !== null && offset !== void 0 ? offset : 0;
4045
4701
  offset = offset >>> 0;
4046
4702
  var view;
4047
- if (arrayBufferOrView instanceof ArrayBuffer) {
4703
+ if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
4048
4704
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
4049
4705
  if (!pointer)
4050
4706
  throw new Error('Unknown ArrayBuffer address');
4051
- if (typeof len !== 'number' || len === -1) {
4707
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
4052
4708
  len = arrayBufferOrView.byteLength - offset;
4053
4709
  }
4054
4710
  len = len >>> 0;
@@ -4070,7 +4726,7 @@ function createNapiModule(options) {
4070
4726
  var pointer = viewPointerInfo.address;
4071
4727
  if (!pointer)
4072
4728
  throw new Error('Unknown ArrayBuffer address');
4073
- if (typeof len !== 'number' || len === -1) {
4729
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
4074
4730
  len = latestView.byteLength - offset;
4075
4731
  }
4076
4732
  len = len >>> 0;
@@ -4107,16 +4763,20 @@ function createNapiModule(options) {
4107
4763
  try {
4108
4764
  if (!arraybuffer_or_view)
4109
4765
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4766
+ arraybuffer_or_view >>>= 0;
4767
+ offset >>>= 0;
4768
+ len >>>= 0;
4110
4769
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4111
- var handleId = HEAP_DATA_VIEW.getInt32(arraybuffer_or_view, true);
4770
+ var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
4112
4771
  var handle = envObject.ctx.handleStore.get(handleId);
4113
- if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
4772
+ if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
4114
4773
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4115
4774
  }
4116
4775
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
4117
4776
  if (handle.value !== ret) {
4777
+ arraybuffer_or_view >>>= 0;
4118
4778
  v = envObject.ensureHandleId(ret);
4119
- HEAP_DATA_VIEW.setInt32(arraybuffer_or_view, v, true);
4779
+ HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
4120
4780
  }
4121
4781
  return envObject.getReturnStatus();
4122
4782
  }
@@ -4129,7 +4789,7 @@ function createNapiModule(options) {
4129
4789
  var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
4130
4790
  var isDataView = arrayBufferOrView instanceof DataView;
4131
4791
  var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
4132
- if (!isArrayBuffer && !isTypedArray && !isDataView) {
4792
+ if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
4133
4793
  throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
4134
4794
  }
4135
4795
  var info;
@@ -4173,13 +4833,16 @@ function createNapiModule(options) {
4173
4833
  p = info.address;
4174
4834
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4175
4835
  if (address) {
4176
- HEAP_DATA_VIEW.setInt32(address, p, true);
4836
+ address >>>= 0;
4837
+ HEAP_DATA_VIEW.setUint32(address, p, true);
4177
4838
  }
4178
4839
  if (ownership) {
4840
+ ownership >>>= 0;
4179
4841
  ownershipOut = info.ownership;
4180
4842
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
4181
4843
  }
4182
4844
  if (runtime_allocated) {
4845
+ runtime_allocated >>>= 0;
4183
4846
  runtimeAllocated = info.runtimeAllocated;
4184
4847
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
4185
4848
  }
@@ -4209,22 +4872,129 @@ function createNapiModule(options) {
4209
4872
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4210
4873
  var versions = runtimeVersion.split('.')
4211
4874
  .map(function (n) { return Number(n); });
4875
+ version >>>= 0;
4212
4876
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4213
4877
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
4214
4878
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
4215
4879
  HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
4216
4880
  return envObject.clearLastError();
4217
4881
  }
4882
+ /**
4883
+ * Get the handle for an external SharedArrayBuffer.
4884
+ * Must be called on the emnapi main thread.
4885
+ * @__sig ippp
4886
+ */
4887
+ function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
4888
+ if (!env)
4889
+ return 1 /* napi_status.napi_invalid_arg */;
4890
+ // @ts-expect-error
4891
+ var envObject = emnapiCtx.envStore.get(env);
4892
+ envObject.checkGCAccess();
4893
+ if (!envObject.tryCatch.isEmpty())
4894
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4895
+ if (!envObject.canCallIntoJs())
4896
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
4897
+ envObject.clearLastError();
4898
+ try {
4899
+ if (!sharedarraybuffer)
4900
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4901
+ if (!handle)
4902
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4903
+ handle >>>= 0;
4904
+ var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
4905
+ if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
4906
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4907
+ }
4908
+ var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
4909
+ if (metaPtr === undefined) {
4910
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4911
+ }
4912
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4913
+ HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
4914
+ return envObject.getReturnStatus();
4915
+ }
4916
+ catch (err) {
4917
+ envObject.tryCatch.setError(err);
4918
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
4919
+ }
4920
+ }
4921
+ /**
4922
+ * Acquire a reference to an external SharedArrayBuffer.
4923
+ * Can be called on any thread.
4924
+ * @__sig vp
4925
+ */
4926
+ function emnapi_acquire_external_sharedarraybuffer(handle) {
4927
+ handle >>>= 0;
4928
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4929
+ }
4930
+ /**
4931
+ * Release a reference to an external SharedArrayBuffer.
4932
+ * Can be called on any thread.
4933
+ * @__sig vp
4934
+ */
4935
+ function emnapi_release_external_sharedarraybuffer(handle) {
4936
+ handle >>>= 0;
4937
+ emnapiExternalSAB.release(handle);
4938
+ }
4939
+ /**
4940
+ * Acquire a reference to an external SharedArrayBuffer on the current thread.
4941
+ * Can be called on any thread. Increments refcount and registers in
4942
+ * the current thread's FinalizationRegistry.
4943
+ * Exposed as Module.emnapiAcquireExternalSharedArrayBuffer (emscripten) or
4944
+ * napiModule.emnapi.acquireExternalSharedArrayBuffer (core).
4945
+ */
4946
+ function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
4947
+ if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
4948
+ throw new TypeError('Expected a SharedArrayBuffer');
4949
+ }
4950
+ if (!emnapiExternalSAB.registry) {
4951
+ throw new Error('FinalizationRegistry is not supported in this environment');
4952
+ }
4953
+ handle >>>= 0;
4954
+ var meta = emnapiExternalSAB.readMeta(handle);
4955
+ // eslint-disable-next-line prefer-const
4956
+ var external_data = meta.external_data;
4957
+ external_data >>>= 0;
4958
+ if (sab == null) {
4959
+ sab = new SharedArrayBuffer(meta.byte_length);
4960
+ new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
4961
+ }
4962
+ else {
4963
+ if (emnapiExternalSAB.handleTable.has(sab)) {
4964
+ return sab;
4965
+ }
4966
+ }
4967
+ // Increment refcount atomically
4968
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4969
+ // Register in emnapiExternalMemory.table for emnapi_sync_memory support
4970
+ if (!emnapiExternalMemory.table.has(sab)) {
4971
+ if (external_data) {
4972
+ emnapiExternalMemory.table.set(sab, {
4973
+ address: external_data,
4974
+ ownership: 1 /* ReferenceOwnership.kUserland */,
4975
+ runtimeAllocated: 0
4976
+ });
4977
+ }
4978
+ }
4979
+ // Register in handleTable and FinalizationRegistry for this thread
4980
+ emnapiExternalSAB.handleTable.set(sab, handle);
4981
+ emnapiExternalSAB.registry.register(sab, handle);
4982
+ return sab;
4983
+ }
4218
4984
  var emnapiMod = /*#__PURE__*/ Object.freeze({
4219
4985
  __proto__: null,
4986
+ $emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
4220
4987
  $emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
4221
4988
  $emnapiSyncMemory: $emnapiSyncMemory,
4989
+ emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
4222
4990
  emnapi_create_memory_view: emnapi_create_memory_view,
4991
+ emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
4223
4992
  emnapi_get_memory_address: emnapi_get_memory_address,
4224
4993
  emnapi_get_runtime_version: emnapi_get_runtime_version,
4225
4994
  emnapi_is_node_binding_available: emnapi_is_node_binding_available,
4226
4995
  emnapi_is_support_bigint: emnapi_is_support_bigint,
4227
4996
  emnapi_is_support_weakref: emnapi_is_support_weakref,
4997
+ emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
4228
4998
  emnapi_sync_memory: emnapi_sync_memory
4229
4999
  });
4230
5000
  /**
@@ -4238,10 +5008,11 @@ function createNapiModule(options) {
4238
5008
  envObject.checkGCAccess();
4239
5009
  if (!result)
4240
5010
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5011
+ result >>>= 0;
4241
5012
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4242
5013
  var value = emnapiCtx.addToCurrentScope([]).id;
4243
5014
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4244
- HEAP_DATA_VIEW.setInt32(result, value, true);
5015
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4245
5016
  return envObject.clearLastError();
4246
5017
  }
4247
5018
  /**
@@ -4255,21 +5026,25 @@ function createNapiModule(options) {
4255
5026
  envObject.checkGCAccess();
4256
5027
  if (!result)
4257
5028
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5029
+ length >>>= 0;
5030
+ result >>>= 0;
4258
5031
  length = length >>> 0;
4259
5032
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4260
5033
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
4261
5034
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4262
- HEAP_DATA_VIEW.setInt32(result, value, true);
5035
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4263
5036
  return envObject.clearLastError();
4264
5037
  }
4265
- function emnapiCreateArrayBuffer(byte_length, data) {
5038
+ function emnapiCreateArrayBuffer(byte_length, data, shared) {
5039
+ byte_length >>>= 0;
4266
5040
  byte_length = byte_length >>> 0;
4267
- var arrayBuffer = new ArrayBuffer(byte_length);
5041
+ var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
4268
5042
  if (data) {
5043
+ data >>>= 0;
4269
5044
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4270
5045
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
4271
5046
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4272
- HEAP_DATA_VIEW.setInt32(data, p, true);
5047
+ HEAP_DATA_VIEW.setUint32(data, p, true);
4273
5048
  }
4274
5049
  return arrayBuffer;
4275
5050
  }
@@ -4292,10 +5067,42 @@ function createNapiModule(options) {
4292
5067
  try {
4293
5068
  if (!result)
4294
5069
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4295
- var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data);
5070
+ result >>>= 0;
5071
+ var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
5072
+ value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
5073
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5074
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5075
+ return envObject.getReturnStatus();
5076
+ }
5077
+ catch (err) {
5078
+ envObject.tryCatch.setError(err);
5079
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5080
+ }
5081
+ }
5082
+ /**
5083
+ * @__sig ipppp
5084
+ */
5085
+ function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
5086
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5087
+ var value;
5088
+ if (!env)
5089
+ return 1 /* napi_status.napi_invalid_arg */;
5090
+ // @ts-expect-error
5091
+ var envObject = emnapiCtx.envStore.get(env);
5092
+ envObject.checkGCAccess();
5093
+ if (!envObject.tryCatch.isEmpty())
5094
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5095
+ if (!envObject.canCallIntoJs())
5096
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
5097
+ envObject.clearLastError();
5098
+ try {
5099
+ if (!result)
5100
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5101
+ result >>>= 0;
5102
+ var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
4296
5103
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
4297
5104
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4298
- HEAP_DATA_VIEW.setInt32(result, value, true);
5105
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4299
5106
  return envObject.getReturnStatus();
4300
5107
  }
4301
5108
  catch (err) {
@@ -4322,10 +5129,11 @@ function createNapiModule(options) {
4322
5129
  try {
4323
5130
  if (!result)
4324
5131
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5132
+ result >>>= 0;
4325
5133
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4326
5134
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
4327
5135
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4328
- HEAP_DATA_VIEW.setInt32(result, value, true);
5136
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4329
5137
  return envObject.getReturnStatus();
4330
5138
  }
4331
5139
  catch (err) {
@@ -4359,9 +5167,10 @@ function createNapiModule(options) {
4359
5167
  if (finalize_cb) {
4360
5168
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint);
4361
5169
  }
5170
+ result >>>= 0;
4362
5171
  value = externalHandle.id;
4363
5172
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4364
- HEAP_DATA_VIEW.setInt32(result, value, true);
5173
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4365
5174
  return envObject.clearLastError();
4366
5175
  }
4367
5176
  catch (err) {
@@ -4388,6 +5197,9 @@ function createNapiModule(options) {
4388
5197
  try {
4389
5198
  if (!result)
4390
5199
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5200
+ byte_length >>>= 0;
5201
+ external_data >>>= 0;
5202
+ result >>>= 0;
4391
5203
  byte_length = byte_length >>> 0;
4392
5204
  if (!external_data) {
4393
5205
  byte_length = 0;
@@ -4430,7 +5242,66 @@ function createNapiModule(options) {
4430
5242
  }
4431
5243
  value = handle.id;
4432
5244
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4433
- HEAP_DATA_VIEW.setInt32(result, value, true);
5245
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5246
+ return envObject.getReturnStatus();
5247
+ }
5248
+ catch (err) {
5249
+ envObject.tryCatch.setError(err);
5250
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5251
+ }
5252
+ }
5253
+ /**
5254
+ * @__sig ipppppp
5255
+ */
5256
+ function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
5257
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5258
+ var value;
5259
+ if (!env)
5260
+ return 1 /* napi_status.napi_invalid_arg */;
5261
+ // @ts-expect-error
5262
+ var envObject = emnapiCtx.envStore.get(env);
5263
+ envObject.checkGCAccess();
5264
+ if (!envObject.tryCatch.isEmpty())
5265
+ return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
5266
+ if (!envObject.canCallIntoJs())
5267
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
5268
+ envObject.clearLastError();
5269
+ try {
5270
+ if (!result)
5271
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5272
+ byte_length >>>= 0;
5273
+ external_data >>>= 0;
5274
+ result >>>= 0;
5275
+ byte_length = byte_length >>> 0;
5276
+ if (!external_data) {
5277
+ byte_length = 0;
5278
+ }
5279
+ if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
5280
+ throw new RangeError('Memory out of range');
5281
+ }
5282
+ if (!emnapiExternalSAB.registry && finalize_cb) {
5283
+ throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
5284
+ }
5285
+ var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
5286
+ if (byte_length !== 0) {
5287
+ var u8arr = new Uint8Array(sharedArrayBuffer);
5288
+ u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
5289
+ emnapiExternalMemory.table.set(sharedArrayBuffer, {
5290
+ address: external_data,
5291
+ ownership: 1 /* ReferenceOwnership.kUserland */,
5292
+ runtimeAllocated: 0
5293
+ });
5294
+ }
5295
+ value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
5296
+ if (finalize_cb) {
5297
+ finalize_cb >>>= 0;
5298
+ finalize_hint >>>= 0;
5299
+ var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
5300
+ emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
5301
+ emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
5302
+ }
5303
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5304
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4434
5305
  return envObject.getReturnStatus();
4435
5306
  }
4436
5307
  catch (err) {
@@ -4449,10 +5320,61 @@ function createNapiModule(options) {
4449
5320
  envObject.checkGCAccess();
4450
5321
  if (!result)
4451
5322
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5323
+ result >>>= 0;
4452
5324
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4453
5325
  var value = emnapiCtx.addToCurrentScope({}).id;
4454
5326
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4455
- HEAP_DATA_VIEW.setInt32(result, value, true);
5327
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5328
+ return envObject.clearLastError();
5329
+ }
5330
+ /**
5331
+ * @__sig ipppppp
5332
+ */
5333
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
5334
+ if (!env)
5335
+ return 1 /* napi_status.napi_invalid_arg */;
5336
+ // @ts-expect-error
5337
+ var envObject = emnapiCtx.envStore.get(env);
5338
+ envObject.checkGCAccess();
5339
+ if (!result)
5340
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5341
+ property_count >>>= 0;
5342
+ property_count = property_count >>> 0;
5343
+ if (property_count > 0) {
5344
+ if (!property_names)
5345
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5346
+ if (!property_values)
5347
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5348
+ }
5349
+ var v8_prototype_or_null = prototype_or_null
5350
+ ? emnapiCtx.handleStore.get(prototype_or_null).value
5351
+ : null;
5352
+ var properties = {};
5353
+ property_names >>>= 0;
5354
+ property_values >>>= 0;
5355
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5356
+ for (var i = 0; i < property_count; i++) {
5357
+ var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
5358
+ if (!(typeof name_value === "string" || typeof name_value === "symbol"))
5359
+ return envObject.setLastError(4 /* napi_status.napi_name_expected */);
5360
+ properties[name_value] = {
5361
+ value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
5362
+ writable: true,
5363
+ enumerable: true,
5364
+ configurable: true
5365
+ };
5366
+ }
5367
+ var obj;
5368
+ try {
5369
+ obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
5370
+ }
5371
+ catch (_) {
5372
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
5373
+ }
5374
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5375
+ var value = emnapiCtx.addToCurrentScope(obj).id;
5376
+ result >>>= 0;
5377
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4456
5378
  return envObject.clearLastError();
4457
5379
  }
4458
5380
  /**
@@ -4466,11 +5388,12 @@ function createNapiModule(options) {
4466
5388
  envObject.checkGCAccess();
4467
5389
  if (!result)
4468
5390
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5391
+ result >>>= 0;
4469
5392
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4470
5393
  if (!description) {
4471
5394
  // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars
4472
5395
  var value = emnapiCtx.addToCurrentScope(Symbol()).id;
4473
- HEAP_DATA_VIEW.setInt32(result, value, true);
5396
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4474
5397
  }
4475
5398
  else {
4476
5399
  var handle = emnapiCtx.handleStore.get(description);
@@ -4480,7 +5403,7 @@ function createNapiModule(options) {
4480
5403
  }
4481
5404
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4482
5405
  var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
4483
- HEAP_DATA_VIEW.setInt32(result, v, true);
5406
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4484
5407
  }
4485
5408
  return envObject.clearLastError();
4486
5409
  }
@@ -4506,10 +5429,9 @@ function createNapiModule(options) {
4506
5429
  if (!result)
4507
5430
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4508
5431
  var handle = emnapiCtx.handleStore.get(arraybuffer);
4509
- if (!handle.isArrayBuffer()) {
4510
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4511
- }
4512
5432
  var buffer = handle.value;
5433
+ byte_offset >>>= 0;
5434
+ length >>>= 0;
4513
5435
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
4514
5436
  var _a;
4515
5437
  byte_offset = byte_offset >>> 0;
@@ -4540,37 +5462,48 @@ function createNapiModule(options) {
4540
5462
  });
4541
5463
  }
4542
5464
  }
5465
+ result >>>= 0;
4543
5466
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4544
5467
  value = emnapiCtx.addToCurrentScope(out).id;
4545
5468
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4546
- HEAP_DATA_VIEW.setInt32(result, value, true);
5469
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4547
5470
  return envObject.getReturnStatus();
4548
5471
  };
4549
- switch (type) {
4550
- case 0 /* napi_typedarray_type.napi_int8_array */:
4551
- return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4552
- case 1 /* napi_typedarray_type.napi_uint8_array */:
4553
- return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4554
- case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
4555
- return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4556
- case 3 /* napi_typedarray_type.napi_int16_array */:
4557
- return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4558
- case 4 /* napi_typedarray_type.napi_uint16_array */:
4559
- return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4560
- case 5 /* napi_typedarray_type.napi_int32_array */:
4561
- return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4562
- case 6 /* napi_typedarray_type.napi_uint32_array */:
4563
- return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4564
- case 7 /* napi_typedarray_type.napi_float32_array */:
4565
- return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4566
- case 8 /* napi_typedarray_type.napi_float64_array */:
4567
- return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4568
- case 9 /* napi_typedarray_type.napi_bigint64_array */:
4569
- return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4570
- case 10 /* napi_typedarray_type.napi_biguint64_array */:
4571
- return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4572
- default:
4573
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5472
+ if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
5473
+ switch (type) {
5474
+ case 0 /* napi_typedarray_type.napi_int8_array */:
5475
+ return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
5476
+ case 1 /* napi_typedarray_type.napi_uint8_array */:
5477
+ return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
5478
+ case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
5479
+ return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
5480
+ case 3 /* napi_typedarray_type.napi_int16_array */:
5481
+ return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
5482
+ case 4 /* napi_typedarray_type.napi_uint16_array */:
5483
+ return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
5484
+ case 5 /* napi_typedarray_type.napi_int32_array */:
5485
+ return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
5486
+ case 6 /* napi_typedarray_type.napi_uint32_array */:
5487
+ return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
5488
+ case 7 /* napi_typedarray_type.napi_float32_array */:
5489
+ return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
5490
+ case 8 /* napi_typedarray_type.napi_float64_array */:
5491
+ return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
5492
+ case 9 /* napi_typedarray_type.napi_bigint64_array */:
5493
+ return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
5494
+ case 10 /* napi_typedarray_type.napi_biguint64_array */:
5495
+ return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
5496
+ case 11 /* napi_typedarray_type.napi_float16_array */:
5497
+ if (typeof Float16Array !== 'function') {
5498
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5499
+ }
5500
+ return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
5501
+ default:
5502
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5503
+ }
5504
+ }
5505
+ else {
5506
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4574
5507
  }
4575
5508
  }
4576
5509
  catch (err) {
@@ -4603,18 +5536,21 @@ function createNapiModule(options) {
4603
5536
  if (!Buffer) {
4604
5537
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
4605
5538
  }
5539
+ result >>>= 0;
4606
5540
  var buffer = void 0;
5541
+ size >>>= 0;
4607
5542
  size = size >>> 0;
4608
5543
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4609
5544
  if (!data || (size === 0)) {
4610
5545
  buffer = Buffer.alloc(size);
4611
5546
  value = emnapiCtx.addToCurrentScope(buffer).id;
4612
- HEAP_DATA_VIEW.setInt32(result, value, true);
5547
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4613
5548
  }
4614
5549
  else {
4615
5550
  pointer = _malloc(size);
4616
5551
  if (!pointer)
4617
5552
  throw new Error('Out of memory');
5553
+ pointer >>>= 0;
4618
5554
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
4619
5555
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
4620
5556
  var viewDescriptor = {
@@ -4627,8 +5563,9 @@ function createNapiModule(options) {
4627
5563
  emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
4628
5564
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
4629
5565
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
4630
- HEAP_DATA_VIEW.setInt32(result, value, true);
4631
- HEAP_DATA_VIEW.setInt32(data, pointer, true);
5566
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5567
+ data >>>= 0;
5568
+ HEAP_DATA_VIEW.setUint32(data, pointer, true);
4632
5569
  }
4633
5570
  return envObject.getReturnStatus();
4634
5571
  }
@@ -4660,12 +5597,15 @@ function createNapiModule(options) {
4660
5597
  if (!Buffer) {
4661
5598
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
4662
5599
  }
4663
- var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
5600
+ var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
4664
5601
  var buffer = Buffer.from(arrayBuffer);
5602
+ data >>>= 0;
5603
+ length >>>= 0;
4665
5604
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
4666
5605
  value = emnapiCtx.addToCurrentScope(buffer).id;
5606
+ result >>>= 0;
4667
5607
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4668
- HEAP_DATA_VIEW.setInt32(result, value, true);
5608
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4669
5609
  return envObject.getReturnStatus();
4670
5610
  }
4671
5611
  catch (err) {
@@ -4700,6 +5640,8 @@ function createNapiModule(options) {
4700
5640
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4701
5641
  if (!result)
4702
5642
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5643
+ byte_offset >>>= 0;
5644
+ byte_length >>>= 0;
4703
5645
  byte_offset = byte_offset >>> 0;
4704
5646
  byte_length = byte_length >>> 0;
4705
5647
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4728,10 +5670,11 @@ function createNapiModule(options) {
4728
5670
  });
4729
5671
  }
4730
5672
  }
5673
+ result >>>= 0;
4731
5674
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4732
5675
  value = emnapiCtx.addToCurrentScope(out).id;
4733
5676
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4734
- HEAP_DATA_VIEW.setInt32(result, value, true);
5677
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4735
5678
  return envObject.getReturnStatus();
4736
5679
  }
4737
5680
  catch (err) {
@@ -4743,8 +5686,6 @@ function createNapiModule(options) {
4743
5686
  * @__sig ippppp
4744
5687
  */
4745
5688
  function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
4746
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4747
- var value;
4748
5689
  if (!env)
4749
5690
  return 1 /* napi_status.napi_invalid_arg */;
4750
5691
  // @ts-expect-error
@@ -4760,35 +5701,42 @@ function createNapiModule(options) {
4760
5701
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4761
5702
  if (!result)
4762
5703
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5704
+ byte_length >>>= 0;
5705
+ byte_offset >>>= 0;
4763
5706
  byte_length = byte_length >>> 0;
4764
5707
  byte_offset = byte_offset >>> 0;
4765
- var handle = emnapiCtx.handleStore.get(arraybuffer);
4766
- if (!handle.isArrayBuffer()) {
4767
- return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4768
- }
4769
- var buffer = handle.value;
4770
- if ((byte_length + byte_offset) > buffer.byteLength) {
4771
- var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
4772
- err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
4773
- throw err;
4774
- }
4775
- var dataview = new DataView(buffer, byte_offset, byte_length);
4776
- if (buffer === wasmMemory.buffer) {
4777
- if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
4778
- emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
4779
- Ctor: DataView,
4780
- address: byte_offset,
4781
- length: byte_length,
4782
- ownership: 1 /* ReferenceOwnership.kUserland */,
4783
- runtimeAllocated: 0
4784
- });
5708
+ var value = emnapiCtx.handleStore.get(arraybuffer).value;
5709
+ var createDataview = function (buffer) {
5710
+ if ((byte_length + byte_offset) > buffer.byteLength) {
5711
+ var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
5712
+ err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
5713
+ throw err;
5714
+ }
5715
+ var dataview = new DataView(buffer, byte_offset, byte_length);
5716
+ if (buffer === wasmMemory.buffer) {
5717
+ if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
5718
+ emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
5719
+ Ctor: DataView,
5720
+ address: byte_offset,
5721
+ length: byte_length,
5722
+ ownership: 1 /* ReferenceOwnership.kUserland */,
5723
+ runtimeAllocated: 0
5724
+ });
5725
+ }
4785
5726
  }
5727
+ result >>>= 0;
5728
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5729
+ var v = emnapiCtx.addToCurrentScope(dataview).id;
5730
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5731
+ HEAP_DATA_VIEW.setUint32(result, v, true);
5732
+ return envObject.getReturnStatus();
5733
+ };
5734
+ if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
5735
+ return createDataview(value);
5736
+ }
5737
+ else {
5738
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4786
5739
  }
4787
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4788
- value = emnapiCtx.addToCurrentScope(dataview).id;
4789
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4790
- HEAP_DATA_VIEW.setInt32(result, value, true);
4791
- return envObject.getReturnStatus();
4792
5740
  }
4793
5741
  catch (err) {
4794
5742
  envObject.tryCatch.setError(err);
@@ -4806,7 +5754,10 @@ function createNapiModule(options) {
4806
5754
  envObject.checkGCAccess();
4807
5755
  if (!result)
4808
5756
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
4809
- var autoLength = length === -1;
5757
+ length >>>= 0;
5758
+ utf8description >>>= 0;
5759
+ result >>>= 0;
5760
+ var autoLength = length === -1 || length === 4294967295;
4810
5761
  var sizelength = length >>> 0;
4811
5762
  if (length !== 0) {
4812
5763
  if (!utf8description)
@@ -4819,7 +5770,7 @@ function createNapiModule(options) {
4819
5770
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4820
5771
  var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
4821
5772
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4822
- HEAP_DATA_VIEW.setInt32(result, value, true);
5773
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4823
5774
  return envObject.clearLastError();
4824
5775
  }
4825
5776
  var createMod = /*#__PURE__*/ Object.freeze({
@@ -4838,6 +5789,9 @@ function createNapiModule(options) {
4838
5789
  napi_create_symbol: napi_create_symbol,
4839
5790
  napi_create_typedarray: napi_create_typedarray,
4840
5791
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
5792
+ node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
5793
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
5794
+ node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
4841
5795
  node_api_symbol_for: node_api_symbol_for
4842
5796
  });
4843
5797
  /** @__sig ipip */
@@ -4849,10 +5803,11 @@ function createNapiModule(options) {
4849
5803
  envObject.checkGCAccess();
4850
5804
  if (!result)
4851
5805
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5806
+ result >>>= 0;
4852
5807
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4853
5808
  var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */;
4854
5809
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4855
- HEAP_DATA_VIEW.setInt32(result, v, true);
5810
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4856
5811
  return envObject.clearLastError();
4857
5812
  }
4858
5813
  /** @__sig ipp */
@@ -4864,10 +5819,11 @@ function createNapiModule(options) {
4864
5819
  envObject.checkGCAccess();
4865
5820
  if (!result)
4866
5821
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5822
+ result >>>= 0;
4867
5823
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4868
5824
  var value = 5 /* GlobalHandle.GLOBAL */;
4869
5825
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4870
- HEAP_DATA_VIEW.setInt32(result, value, true);
5826
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4871
5827
  return envObject.clearLastError();
4872
5828
  }
4873
5829
  /** @__sig ipp */
@@ -4879,10 +5835,11 @@ function createNapiModule(options) {
4879
5835
  envObject.checkGCAccess();
4880
5836
  if (!result)
4881
5837
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5838
+ result >>>= 0;
4882
5839
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4883
5840
  var value = 2 /* GlobalHandle.NULL */;
4884
5841
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4885
- HEAP_DATA_VIEW.setInt32(result, value, true);
5842
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4886
5843
  return envObject.clearLastError();
4887
5844
  }
4888
5845
  /** @__sig ipp */
@@ -4894,10 +5851,11 @@ function createNapiModule(options) {
4894
5851
  envObject.checkGCAccess();
4895
5852
  if (!result)
4896
5853
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5854
+ result >>>= 0;
4897
5855
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4898
5856
  var value = 1 /* GlobalHandle.UNDEFINED */;
4899
5857
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4900
- HEAP_DATA_VIEW.setInt32(result, value, true);
5858
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4901
5859
  return envObject.clearLastError();
4902
5860
  }
4903
5861
  var globalMod = /*#__PURE__*/ Object.freeze({
@@ -4912,6 +5870,9 @@ function createNapiModule(options) {
4912
5870
  if (!env)
4913
5871
  return 1 /* napi_status.napi_invalid_arg */;
4914
5872
  var envObject = emnapiCtx.envStore.get(env);
5873
+ data >>>= 0;
5874
+ finalize_cb >>>= 0;
5875
+ finalize_hint >>>= 0;
4915
5876
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
4916
5877
  return envObject.clearLastError();
4917
5878
  }
@@ -4922,10 +5883,11 @@ function createNapiModule(options) {
4922
5883
  var envObject = emnapiCtx.envStore.get(env);
4923
5884
  if (!data)
4924
5885
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5886
+ data >>>= 0;
4925
5887
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4926
5888
  var value = envObject.getInstanceData();
4927
5889
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4928
- HEAP_DATA_VIEW.setInt32(data, value, true);
5890
+ HEAP_DATA_VIEW.setUint32(data, value, true);
4929
5891
  return envObject.clearLastError();
4930
5892
  }
4931
5893
  var envMod = /*#__PURE__*/ Object.freeze({
@@ -4935,6 +5897,9 @@ function createNapiModule(options) {
4935
5897
  });
4936
5898
  /** @__sig vpppp */
4937
5899
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
5900
+ error_code >>>= 0;
5901
+ engine_error_code >>>= 0;
5902
+ engine_reserved >>>= 0;
4938
5903
  var envObject = emnapiCtx.envStore.get(env);
4939
5904
  var lastError = envObject.lastError;
4940
5905
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -4943,10 +5908,11 @@ function createNapiModule(options) {
4943
5908
  var engineErrorCode = lastError.engineErrorCode >>> 0;
4944
5909
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4945
5910
  var engineReserved = lastError.engineReserved;
5911
+ engineReserved >>>= 0;
4946
5912
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4947
5913
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
4948
5914
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
4949
- HEAP_DATA_VIEW.setInt32(engine_reserved, engineReserved, true);
5915
+ HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
4950
5916
  }
4951
5917
  /** @__sig ipp */
4952
5918
  function napi_throw(env, error) {
@@ -4986,6 +5952,8 @@ function createNapiModule(options) {
4986
5952
  try {
4987
5953
  if (!msg)
4988
5954
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5955
+ code >>>= 0;
5956
+ msg >>>= 0;
4989
5957
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
4990
5958
  if (code)
4991
5959
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5012,6 +5980,8 @@ function createNapiModule(options) {
5012
5980
  try {
5013
5981
  if (!msg)
5014
5982
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5983
+ code >>>= 0;
5984
+ msg >>>= 0;
5015
5985
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
5016
5986
  if (code)
5017
5987
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5038,6 +6008,8 @@ function createNapiModule(options) {
5038
6008
  try {
5039
6009
  if (!msg)
5040
6010
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6011
+ code >>>= 0;
6012
+ msg >>>= 0;
5041
6013
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
5042
6014
  if (code)
5043
6015
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5064,6 +6036,8 @@ function createNapiModule(options) {
5064
6036
  try {
5065
6037
  if (!msg)
5066
6038
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6039
+ code >>>= 0;
6040
+ msg >>>= 0;
5067
6041
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
5068
6042
  if (code)
5069
6043
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -5086,6 +6060,7 @@ function createNapiModule(options) {
5086
6060
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5087
6061
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5088
6062
  var r = envObject.tryCatch.hasCaught();
6063
+ result >>>= 0;
5089
6064
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5090
6065
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5091
6066
  return envObject.clearLastError();
@@ -5113,10 +6088,11 @@ function createNapiModule(options) {
5113
6088
  }
5114
6089
  error.code = codeValue;
5115
6090
  }
6091
+ result >>>= 0;
5116
6092
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5117
6093
  var value = emnapiCtx.addToCurrentScope(error).id;
5118
6094
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5119
- HEAP_DATA_VIEW.setInt32(result, value, true);
6095
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5120
6096
  return envObject.clearLastError();
5121
6097
  }
5122
6098
  /** @__sig ipppp */
@@ -5142,10 +6118,11 @@ function createNapiModule(options) {
5142
6118
  }
5143
6119
  error.code = codeValue;
5144
6120
  }
6121
+ result >>>= 0;
5145
6122
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5146
6123
  var value = emnapiCtx.addToCurrentScope(error).id;
5147
6124
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5148
- HEAP_DATA_VIEW.setInt32(result, value, true);
6125
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5149
6126
  return envObject.clearLastError();
5150
6127
  }
5151
6128
  /** @__sig ipppp */
@@ -5171,10 +6148,11 @@ function createNapiModule(options) {
5171
6148
  }
5172
6149
  error.code = codeValue;
5173
6150
  }
6151
+ result >>>= 0;
5174
6152
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5175
6153
  var value = emnapiCtx.addToCurrentScope(error).id;
5176
6154
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5177
- HEAP_DATA_VIEW.setInt32(result, value, true);
6155
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5178
6156
  return envObject.clearLastError();
5179
6157
  }
5180
6158
  /** @__sig ipppp */
@@ -5200,10 +6178,11 @@ function createNapiModule(options) {
5200
6178
  }
5201
6179
  error.code = codeValue;
5202
6180
  }
6181
+ result >>>= 0;
5203
6182
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5204
6183
  var value = emnapiCtx.addToCurrentScope(error).id;
5205
6184
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5206
- HEAP_DATA_VIEW.setInt32(result, value, true);
6185
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5207
6186
  return envObject.clearLastError();
5208
6187
  }
5209
6188
  /** @__sig ipp */
@@ -5215,22 +6194,27 @@ function createNapiModule(options) {
5215
6194
  envObject.checkGCAccess();
5216
6195
  if (!result)
5217
6196
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6197
+ result >>>= 0;
5218
6198
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5219
6199
  if (!envObject.tryCatch.hasCaught()) {
5220
- HEAP_DATA_VIEW.setInt32(result, 1, true); // ID_UNDEFINED
6200
+ HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED
5221
6201
  return envObject.clearLastError();
5222
6202
  }
5223
6203
  else {
5224
6204
  var err = envObject.tryCatch.exception();
5225
6205
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5226
6206
  var value = envObject.ensureHandleId(err);
5227
- HEAP_DATA_VIEW.setInt32(result, value, true);
6207
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5228
6208
  envObject.tryCatch.reset();
5229
6209
  }
5230
6210
  return envObject.clearLastError();
5231
6211
  }
5232
6212
  /** @__sig vpppp */
5233
6213
  function napi_fatal_error(location, location_len, message, message_len) {
6214
+ location >>>= 0;
6215
+ location_len >>>= 0;
6216
+ message >>>= 0;
6217
+ message_len >>>= 0;
5234
6218
  var locationStr = emnapiString.UTF8ToString(location, location_len);
5235
6219
  var messageStr = emnapiString.UTF8ToString(message, message_len);
5236
6220
  if (emnapiNodeBinding) {
@@ -5287,9 +6271,23 @@ function createNapiModule(options) {
5287
6271
  node_api_throw_syntax_error: node_api_throw_syntax_error
5288
6272
  });
5289
6273
  /** @__sig ipppppp */
5290
- function napi_create_function(env, utf8name, length, cb, data, result) {
6274
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
6275
+ length >>>= 0;
6276
+ var envObject = emnapiCtx.envStore.get(env);
6277
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
6278
+ if (fresult.status !== 0 /* napi_status.napi_ok */)
6279
+ return envObject.setLastError(fresult.status);
6280
+ var f = fresult.f;
6281
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
6282
+ result >>>= 0;
5291
6283
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5292
- var value;
6284
+ var value = valueHandle.id;
6285
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6286
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6287
+ return envObject.getReturnStatus();
6288
+ }
6289
+ /** @__sig ipppppp */
6290
+ function napi_create_function(env, utf8name, length, cb, data, result) {
5293
6291
  if (!env)
5294
6292
  return 1 /* napi_status.napi_invalid_arg */;
5295
6293
  // @ts-expect-error
@@ -5305,15 +6303,7 @@ function createNapiModule(options) {
5305
6303
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5306
6304
  if (!cb)
5307
6305
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5308
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
5309
- if (fresult.status !== 0 /* napi_status.napi_ok */)
5310
- return envObject.setLastError(fresult.status);
5311
- var f = fresult.f;
5312
- var valueHandle = emnapiCtx.addToCurrentScope(f);
5313
- value = valueHandle.id;
5314
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5315
- HEAP_DATA_VIEW.setInt32(result, value, true);
5316
- return envObject.getReturnStatus();
6306
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
5317
6307
  }
5318
6308
  catch (err) {
5319
6309
  envObject.tryCatch.setError(err);
@@ -5328,22 +6318,25 @@ function createNapiModule(options) {
5328
6318
  if (!cbinfo)
5329
6319
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5330
6320
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
6321
+ argc >>>= 0;
6322
+ argv >>>= 0;
5331
6323
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5332
6324
  if (argv) {
5333
6325
  if (!argc)
5334
6326
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5335
6327
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
6328
+ argcValue >>>= 0;
5336
6329
  var len = cbinfoValue.args.length;
5337
6330
  var arrlen = argcValue < len ? argcValue : len;
5338
6331
  var i = 0;
5339
6332
  for (; i < arrlen; i++) {
5340
6333
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5341
6334
  var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
5342
- HEAP_DATA_VIEW.setInt32(argv + i * 4, argVal, true);
6335
+ HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
5343
6336
  }
5344
6337
  if (i < argcValue) {
5345
6338
  for (; i < argcValue; i++) {
5346
- HEAP_DATA_VIEW.setInt32(argv + i * 4, 1, true);
6339
+ HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
5347
6340
  }
5348
6341
  }
5349
6342
  }
@@ -5351,12 +6344,14 @@ function createNapiModule(options) {
5351
6344
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
5352
6345
  }
5353
6346
  if (this_arg) {
6347
+ this_arg >>>= 0;
5354
6348
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5355
6349
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
5356
- HEAP_DATA_VIEW.setInt32(this_arg, v, true);
6350
+ HEAP_DATA_VIEW.setUint32(this_arg, v, true);
5357
6351
  }
5358
6352
  if (data) {
5359
- HEAP_DATA_VIEW.setInt32(data, cbinfoValue.data, true);
6353
+ data >>>= 0;
6354
+ HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
5360
6355
  }
5361
6356
  return envObject.clearLastError();
5362
6357
  }
@@ -5378,6 +6373,9 @@ function createNapiModule(options) {
5378
6373
  try {
5379
6374
  if (!recv)
5380
6375
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6376
+ argc >>>= 0;
6377
+ argv >>>= 0;
6378
+ result >>>= 0;
5381
6379
  argc = argc >>> 0;
5382
6380
  if (argc > 0) {
5383
6381
  if (!argv)
@@ -5392,13 +6390,13 @@ function createNapiModule(options) {
5392
6390
  var args = [];
5393
6391
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5394
6392
  for (; i < argc; i++) {
5395
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
6393
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
5396
6394
  args.push(emnapiCtx.handleStore.get(argVal).value);
5397
6395
  }
5398
6396
  var ret = v8func.apply(v8recv, args);
5399
6397
  if (result) {
5400
6398
  v = envObject.ensureHandleId(ret);
5401
- HEAP_DATA_VIEW.setInt32(result, v, true);
6399
+ HEAP_DATA_VIEW.setUint32(result, v, true);
5402
6400
  }
5403
6401
  return envObject.clearLastError();
5404
6402
  }
@@ -5425,6 +6423,9 @@ function createNapiModule(options) {
5425
6423
  try {
5426
6424
  if (!constructor)
5427
6425
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6426
+ argc >>>= 0;
6427
+ argv >>>= 0;
6428
+ result >>>= 0;
5428
6429
  argc = argc >>> 0;
5429
6430
  if (argc > 0) {
5430
6431
  if (!argv)
@@ -5440,7 +6441,7 @@ function createNapiModule(options) {
5440
6441
  if (emnapiCtx.feature.supportReflect) {
5441
6442
  var argList = Array(argc);
5442
6443
  for (i = 0; i < argc; i++) {
5443
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
6444
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
5444
6445
  argList[i] = emnapiCtx.handleStore.get(argVal).value;
5445
6446
  }
5446
6447
  ret = Reflect.construct(Ctor, argList, Ctor);
@@ -5449,7 +6450,7 @@ function createNapiModule(options) {
5449
6450
  var args = Array(argc + 1);
5450
6451
  args[0] = undefined;
5451
6452
  for (i = 0; i < argc; i++) {
5452
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
6453
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
5453
6454
  args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
5454
6455
  }
5455
6456
  var BoundCtor = Ctor.bind.apply(Ctor, args);
@@ -5457,7 +6458,7 @@ function createNapiModule(options) {
5457
6458
  }
5458
6459
  if (result) {
5459
6460
  v = envObject.ensureHandleId(ret);
5460
- HEAP_DATA_VIEW.setInt32(result, v, true);
6461
+ HEAP_DATA_VIEW.setUint32(result, v, true);
5461
6462
  }
5462
6463
  return envObject.getReturnStatus();
5463
6464
  }
@@ -5477,19 +6478,22 @@ function createNapiModule(options) {
5477
6478
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5478
6479
  if (!result)
5479
6480
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6481
+ result >>>= 0;
5480
6482
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5481
6483
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
6484
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unused-vars
5482
6485
  var value = thiz == null || thiz.constructor == null
5483
6486
  ? 0
5484
6487
  : thiz instanceof fn
5485
6488
  ? envObject.ensureHandleId(thiz.constructor)
5486
6489
  : 0;
5487
6490
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5488
- HEAP_DATA_VIEW.setInt32(result, value, true);
6491
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5489
6492
  return envObject.clearLastError();
5490
6493
  }
5491
6494
  var functionMod = /*#__PURE__*/ Object.freeze({
5492
6495
  __proto__: null,
6496
+ _emnapi_create_function: _emnapi_create_function,
5493
6497
  napi_call_function: napi_call_function,
5494
6498
  napi_create_function: napi_create_function,
5495
6499
  napi_get_cb_info: napi_get_cb_info,
@@ -5507,8 +6511,9 @@ function createNapiModule(options) {
5507
6511
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5508
6512
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5509
6513
  var scope = emnapiCtx.openScope(envObject);
6514
+ result >>>= 0;
5510
6515
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5511
- HEAP_DATA_VIEW.setInt32(result, scope.id, true);
6516
+ HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5512
6517
  return envObject.clearLastError();
5513
6518
  }
5514
6519
  /** @__sig ipp */
@@ -5537,8 +6542,9 @@ function createNapiModule(options) {
5537
6542
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5538
6543
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5539
6544
  var scope = emnapiCtx.openScope(envObject);
6545
+ result >>>= 0;
5540
6546
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5541
- HEAP_DATA_VIEW.setInt32(result, scope.id, true);
6547
+ HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5542
6548
  return envObject.clearLastError();
5543
6549
  }
5544
6550
  /** @__sig ipp */
@@ -5571,11 +6577,13 @@ function createNapiModule(options) {
5571
6577
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5572
6578
  var scopeObject = emnapiCtx.scopeStore.get(scope);
5573
6579
  if (!scopeObject.escapeCalled()) {
6580
+ escapee >>>= 0;
6581
+ result >>>= 0;
5574
6582
  var newHandle = scopeObject.escape(escapee);
5575
6583
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5576
6584
  var value = newHandle ? newHandle.id : 0;
5577
6585
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5578
- HEAP_DATA_VIEW.setInt32(result, value, true);
6586
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5579
6587
  return envObject.clearLastError();
5580
6588
  }
5581
6589
  return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */);
@@ -5599,8 +6607,9 @@ function createNapiModule(options) {
5599
6607
  }
5600
6608
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5601
6609
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */);
6610
+ result >>>= 0;
5602
6611
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5603
- HEAP_DATA_VIEW.setInt32(result, ref.id, true);
6612
+ HEAP_DATA_VIEW.setUint32(result, ref.id, true);
5604
6613
  return envObject.clearLastError();
5605
6614
  }
5606
6615
  /** @__sig ipp */
@@ -5625,6 +6634,7 @@ function createNapiModule(options) {
5625
6634
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5626
6635
  var count = emnapiCtx.refStore.get(ref).ref();
5627
6636
  if (result) {
6637
+ result >>>= 0;
5628
6638
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5629
6639
  HEAP_DATA_VIEW.setUint32(result, count, true);
5630
6640
  }
@@ -5647,6 +6657,7 @@ function createNapiModule(options) {
5647
6657
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5648
6658
  var count = reference.unref();
5649
6659
  if (result) {
6660
+ result >>>= 0;
5650
6661
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5651
6662
  HEAP_DATA_VIEW.setUint32(result, count, true);
5652
6663
  }
@@ -5666,8 +6677,9 @@ function createNapiModule(options) {
5666
6677
  var reference = emnapiCtx.refStore.get(ref);
5667
6678
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5668
6679
  var handleId = reference.get(envObject);
6680
+ result >>>= 0;
5669
6681
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5670
- HEAP_DATA_VIEW.setInt32(result, handleId, true);
6682
+ HEAP_DATA_VIEW.setUint32(result, handleId, true);
5671
6683
  return envObject.clearLastError();
5672
6684
  }
5673
6685
  /** @__sig ippp */
@@ -5677,6 +6689,8 @@ function createNapiModule(options) {
5677
6689
  var envObject = emnapiCtx.envStore.get(env);
5678
6690
  if (!fun)
5679
6691
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6692
+ fun >>>= 0;
6693
+ arg >>>= 0;
5680
6694
  emnapiCtx.addCleanupHook(envObject, fun, arg);
5681
6695
  return 0 /* napi_status.napi_ok */;
5682
6696
  }
@@ -5687,6 +6701,8 @@ function createNapiModule(options) {
5687
6701
  var envObject = emnapiCtx.envStore.get(env);
5688
6702
  if (!fun)
5689
6703
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6704
+ fun >>>= 0;
6705
+ arg >>>= 0;
5690
6706
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
5691
6707
  return 0 /* napi_status.napi_ok */;
5692
6708
  }
@@ -5753,11 +6769,13 @@ function createNapiModule(options) {
5753
6769
  var p = new Promise(function (resolve, reject) {
5754
6770
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
5755
6771
  deferredObjectId = deferredObject.id;
5756
- HEAP_DATA_VIEW.setInt32(deferred, deferredObjectId, true);
6772
+ deferred >>>= 0;
6773
+ HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
5757
6774
  });
6775
+ promise >>>= 0;
5758
6776
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5759
6777
  value = emnapiCtx.addToCurrentScope(p).id;
5760
- HEAP_DATA_VIEW.setInt32(promise, value, true);
6778
+ HEAP_DATA_VIEW.setUint32(promise, value, true);
5761
6779
  return envObject.getReturnStatus();
5762
6780
  }
5763
6781
  catch (err) {
@@ -5829,6 +6847,7 @@ function createNapiModule(options) {
5829
6847
  if (!is_promise)
5830
6848
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
5831
6849
  var h = emnapiCtx.handleStore.get(value);
6850
+ is_promise >>>= 0;
5832
6851
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5833
6852
  var r = h.isPromise() ? 1 : 0;
5834
6853
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5976,10 +6995,11 @@ function createNapiModule(options) {
5976
6995
  }
5977
6996
  }
5978
6997
  }
6998
+ result >>>= 0;
5979
6999
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5980
7000
  value = emnapiCtx.addToCurrentScope(ret).id;
5981
7001
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5982
- HEAP_DATA_VIEW.setInt32(result, value, true);
7002
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5983
7003
  return envObject.getReturnStatus();
5984
7004
  }
5985
7005
  catch (err) {
@@ -6054,6 +7074,7 @@ function createNapiModule(options) {
6054
7074
  catch (_) {
6055
7075
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6056
7076
  }
7077
+ result >>>= 0;
6057
7078
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
6058
7079
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6059
7080
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6096,10 +7117,11 @@ function createNapiModule(options) {
6096
7117
  catch (_) {
6097
7118
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6098
7119
  }
7120
+ result >>>= 0;
6099
7121
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6100
7122
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
6101
7123
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6102
- HEAP_DATA_VIEW.setInt32(result, value, true);
7124
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6103
7125
  return envObject.getReturnStatus();
6104
7126
  }
6105
7127
  catch (err) {
@@ -6143,6 +7165,7 @@ function createNapiModule(options) {
6143
7165
  }
6144
7166
  }
6145
7167
  if (result) {
7168
+ result >>>= 0;
6146
7169
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6147
7170
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6148
7171
  }
@@ -6190,6 +7213,7 @@ function createNapiModule(options) {
6190
7213
  return envObject.setLastError(4 /* napi_status.napi_name_expected */);
6191
7214
  }
6192
7215
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
7216
+ result >>>= 0;
6193
7217
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6194
7218
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6195
7219
  return envObject.getReturnStatus();
@@ -6223,6 +7247,7 @@ function createNapiModule(options) {
6223
7247
  if (!cname) {
6224
7248
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6225
7249
  }
7250
+ cname >>>= 0;
6226
7251
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
6227
7252
  return envObject.getReturnStatus();
6228
7253
  }
@@ -6264,6 +7289,8 @@ function createNapiModule(options) {
6264
7289
  catch (_) {
6265
7290
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6266
7291
  }
7292
+ utf8name >>>= 0;
7293
+ result >>>= 0;
6267
7294
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
6268
7295
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6269
7296
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -6307,10 +7334,12 @@ function createNapiModule(options) {
6307
7334
  catch (_) {
6308
7335
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6309
7336
  }
7337
+ utf8name >>>= 0;
7338
+ result >>>= 0;
6310
7339
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6311
7340
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
6312
7341
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6313
- HEAP_DATA_VIEW.setInt32(result, value, true);
7342
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6314
7343
  return envObject.getReturnStatus();
6315
7344
  }
6316
7345
  catch (err) {
@@ -6377,6 +7406,7 @@ function createNapiModule(options) {
6377
7406
  catch (_) {
6378
7407
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6379
7408
  }
7409
+ result >>>= 0;
6380
7410
  r = ((index >>> 0) in v) ? 1 : 0;
6381
7411
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6382
7412
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6417,10 +7447,11 @@ function createNapiModule(options) {
6417
7447
  catch (_) {
6418
7448
  return envObject.setLastError(2 /* napi_status.napi_object_expected */);
6419
7449
  }
7450
+ result >>>= 0;
6420
7451
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6421
7452
  value = envObject.ensureHandleId(v[index >>> 0]);
6422
7453
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6423
- HEAP_DATA_VIEW.setInt32(result, value, true);
7454
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6424
7455
  return envObject.getReturnStatus();
6425
7456
  }
6426
7457
  catch (err) {
@@ -6461,6 +7492,7 @@ function createNapiModule(options) {
6461
7492
  }
6462
7493
  }
6463
7494
  if (result) {
7495
+ result >>>= 0;
6464
7496
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6465
7497
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6466
7498
  }
@@ -6486,6 +7518,8 @@ function createNapiModule(options) {
6486
7518
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
6487
7519
  envObject.clearLastError();
6488
7520
  try {
7521
+ properties >>>= 0;
7522
+ property_count >>>= 0;
6489
7523
  property_count = property_count >>> 0;
6490
7524
  if (property_count > 0) {
6491
7525
  if (!properties)
@@ -6503,14 +7537,15 @@ function createNapiModule(options) {
6503
7537
  for (var i = 0; i < property_count; i++) {
6504
7538
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6505
7539
  propPtr = properties + (i * (4 * 8));
6506
- var utf8Name = HEAP_DATA_VIEW.getInt32(propPtr, true);
6507
- var name_2 = HEAP_DATA_VIEW.getInt32(propPtr + 4, true);
6508
- var method = HEAP_DATA_VIEW.getInt32(propPtr + 8, true);
6509
- var getter = HEAP_DATA_VIEW.getInt32(propPtr + 12, true);
6510
- var setter = HEAP_DATA_VIEW.getInt32(propPtr + 16, true);
6511
- var value = HEAP_DATA_VIEW.getInt32(propPtr + 20, true);
7540
+ var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
7541
+ var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
7542
+ var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
7543
+ var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
7544
+ var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
7545
+ var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
6512
7546
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
6513
- var data = HEAP_DATA_VIEW.getInt32(propPtr + 28, true);
7547
+ attributes >>>= 0;
7548
+ var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
6514
7549
  if (utf8Name) {
6515
7550
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
6516
7551
  }
@@ -6634,10 +7669,11 @@ function createNapiModule(options) {
6634
7669
  }
6635
7670
  var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value;
6636
7671
  var ret = g.eval(v8Script.value);
7672
+ result >>>= 0;
6637
7673
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6638
7674
  value = envObject.ensureHandleId(ret);
6639
7675
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6640
- HEAP_DATA_VIEW.setInt32(result, value, true);
7676
+ HEAP_DATA_VIEW.setUint32(result, value, true);
6641
7677
  status = envObject.getReturnStatus();
6642
7678
  }
6643
7679
  catch (err) {
@@ -6662,6 +7698,7 @@ function createNapiModule(options) {
6662
7698
  if (!result)
6663
7699
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6664
7700
  var v = emnapiCtx.handleStore.get(value);
7701
+ result >>>= 0;
6665
7702
  var r;
6666
7703
  if (v.isNumber()) {
6667
7704
  r = 3 /* napi_valuetype.napi_number */;
@@ -6726,9 +7763,10 @@ function createNapiModule(options) {
6726
7763
  if (!result)
6727
7764
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6728
7765
  var handle = emnapiCtx.handleStore.get(value);
7766
+ result >>>= 0;
6729
7767
  v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */;
6730
7768
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6731
- HEAP_DATA_VIEW.setInt32(result, v, true);
7769
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6732
7770
  return envObject.getReturnStatus();
6733
7771
  }
6734
7772
  catch (err) {
@@ -6759,10 +7797,11 @@ function createNapiModule(options) {
6759
7797
  if (handle.isBigInt()) {
6760
7798
  throw new TypeError('Cannot convert a BigInt value to a number');
6761
7799
  }
7800
+ result >>>= 0;
6762
7801
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6763
7802
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
6764
7803
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6765
- HEAP_DATA_VIEW.setInt32(result, v, true);
7804
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6766
7805
  return envObject.getReturnStatus();
6767
7806
  }
6768
7807
  catch (err) {
@@ -6793,10 +7832,11 @@ function createNapiModule(options) {
6793
7832
  if (handle.value == null) {
6794
7833
  throw new TypeError('Cannot convert undefined or null to object');
6795
7834
  }
7835
+ result >>>= 0;
6796
7836
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6797
7837
  v = envObject.ensureHandleId(Object(handle.value));
6798
7838
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6799
- HEAP_DATA_VIEW.setInt32(result, v, true);
7839
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6800
7840
  return envObject.getReturnStatus();
6801
7841
  }
6802
7842
  catch (err) {
@@ -6827,10 +7867,11 @@ function createNapiModule(options) {
6827
7867
  if (handle.isSymbol()) {
6828
7868
  throw new TypeError('Cannot convert a Symbol value to a string');
6829
7869
  }
7870
+ result >>>= 0;
6830
7871
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6831
7872
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
6832
7873
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6833
- HEAP_DATA_VIEW.setInt32(result, v, true);
7874
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6834
7875
  return envObject.getReturnStatus();
6835
7876
  }
6836
7877
  catch (err) {
@@ -6859,6 +7900,7 @@ function createNapiModule(options) {
6859
7900
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6860
7901
  if (!constructor)
6861
7902
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7903
+ result >>>= 0;
6862
7904
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6863
7905
  HEAP_DATA_VIEW.setInt8(result, 0, true);
6864
7906
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -6888,6 +7930,7 @@ function createNapiModule(options) {
6888
7930
  if (!result)
6889
7931
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6890
7932
  var h = emnapiCtx.handleStore.get(value);
7933
+ result >>>= 0;
6891
7934
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6892
7935
  var r = h.isArray() ? 1 : 0;
6893
7936
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6906,6 +7949,7 @@ function createNapiModule(options) {
6906
7949
  if (!result)
6907
7950
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6908
7951
  var h = emnapiCtx.handleStore.get(value);
7952
+ result >>>= 0;
6909
7953
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6910
7954
  var r = h.isArrayBuffer() ? 1 : 0;
6911
7955
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6913,6 +7957,28 @@ function createNapiModule(options) {
6913
7957
  return envObject.clearLastError();
6914
7958
  }
6915
7959
  /** @__sig ippp */
7960
+ function node_api_is_sharedarraybuffer(env, value, result) {
7961
+ if (!env)
7962
+ return 1 /* napi_status.napi_invalid_arg */;
7963
+ // @ts-expect-error
7964
+ var envObject = emnapiCtx.envStore.get(env);
7965
+ envObject.checkGCAccess();
7966
+ if (!value)
7967
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7968
+ if (!result)
7969
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7970
+ var h = emnapiCtx.handleStore.get(value);
7971
+ result >>>= 0;
7972
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
7973
+ var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
7974
+ (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
7975
+ ? 1
7976
+ : 0;
7977
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7978
+ HEAP_DATA_VIEW.setInt8(result, r, true);
7979
+ return envObject.clearLastError();
7980
+ }
7981
+ /** @__sig ippp */
6916
7982
  function napi_is_date(env, value, result) {
6917
7983
  if (!env)
6918
7984
  return 1 /* napi_status.napi_invalid_arg */;
@@ -6924,6 +7990,7 @@ function createNapiModule(options) {
6924
7990
  if (!result)
6925
7991
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6926
7992
  var h = emnapiCtx.handleStore.get(value);
7993
+ result >>>= 0;
6927
7994
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6928
7995
  var r = h.isDate() ? 1 : 0;
6929
7996
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6942,6 +8009,7 @@ function createNapiModule(options) {
6942
8009
  if (!result)
6943
8010
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6944
8011
  var val = emnapiCtx.handleStore.get(value).value;
8012
+ result >>>= 0;
6945
8013
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6946
8014
  var r = (val instanceof Error) ? 1 : 0;
6947
8015
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6960,6 +8028,7 @@ function createNapiModule(options) {
6960
8028
  if (!result)
6961
8029
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6962
8030
  var h = emnapiCtx.handleStore.get(value);
8031
+ result >>>= 0;
6963
8032
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6964
8033
  var r = h.isTypedArray() ? 1 : 0;
6965
8034
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6978,6 +8047,7 @@ function createNapiModule(options) {
6978
8047
  if (!result)
6979
8048
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6980
8049
  var h = emnapiCtx.handleStore.get(value);
8050
+ result >>>= 0;
6981
8051
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6982
8052
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
6983
8053
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -6996,6 +8066,7 @@ function createNapiModule(options) {
6996
8066
  if (!result)
6997
8067
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6998
8068
  var h = emnapiCtx.handleStore.get(value);
8069
+ result >>>= 0;
6999
8070
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7000
8071
  var r = h.isDataView() ? 1 : 0;
7001
8072
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -7025,6 +8096,7 @@ function createNapiModule(options) {
7025
8096
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7026
8097
  var lv = emnapiCtx.handleStore.get(lhs).value;
7027
8098
  var rv = emnapiCtx.handleStore.get(rhs).value;
8099
+ result >>>= 0;
7028
8100
  r = (lv === rv) ? 1 : 0;
7029
8101
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7030
8102
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -7079,6 +8151,7 @@ function createNapiModule(options) {
7079
8151
  if (!result)
7080
8152
  return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
7081
8153
  var h = emnapiCtx.handleStore.get(arraybuffer);
8154
+ result >>>= 0;
7082
8155
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7083
8156
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
7084
8157
  try {
@@ -7115,7 +8188,8 @@ function createNapiModule(options) {
7115
8188
  napi_is_error: napi_is_error,
7116
8189
  napi_is_typedarray: napi_is_typedarray,
7117
8190
  napi_strict_equals: napi_strict_equals,
7118
- napi_typeof: napi_typeof
8191
+ napi_typeof: napi_typeof,
8192
+ node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
7119
8193
  });
7120
8194
  /** @__sig ipp */
7121
8195
  function napi_get_version(env, result) {
@@ -7136,11 +8210,13 @@ function createNapiModule(options) {
7136
8210
  });
7137
8211
  emnapiAWST.init();
7138
8212
  emnapiExternalMemory.init();
8213
+ emnapiExternalSAB.init();
7139
8214
  emnapiString.init();
7140
8215
  emnapiTSFN.init();
7141
8216
  PThread.init();
7142
8217
  napiModule.emnapi.syncMemory = $emnapiSyncMemory;
7143
8218
  napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
8219
+ napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
7144
8220
  function addImports(mod) {
7145
8221
  var keys = Object.keys(mod);
7146
8222
  for (var i = 0; i < keys.length; ++i) {
@@ -7367,7 +8443,22 @@ var MessageHandler = /*#__PURE__*/ (function (_super) {
7367
8443
  if (typeof options.onLoad !== 'function') {
7368
8444
  throw new TypeError('options.onLoad is not a function');
7369
8445
  }
7370
- _this = _super.call(this, options) || this;
8446
+ var userOnError = options.onError;
8447
+ _this = _super.call(this, __assign(__assign({}, options), { onError: function (err, type) {
8448
+ var _a;
8449
+ var emnapi_thread_crashed = (_a = _this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
8450
+ if (typeof emnapi_thread_crashed === 'function') {
8451
+ emnapi_thread_crashed();
8452
+ } /* else {
8453
+ tryWakeUpPthreadJoin(this.instance!)
8454
+ } */
8455
+ if (typeof userOnError === 'function') {
8456
+ userOnError(err, type);
8457
+ }
8458
+ else {
8459
+ throw err;
8460
+ }
8461
+ } })) || this;
7371
8462
  _this.napiModule = undefined;
7372
8463
  return _this;
7373
8464
  }
@@ -7391,21 +8482,35 @@ var MessageHandler = /*#__PURE__*/ (function (_super) {
7391
8482
  if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
7392
8483
  var type = e.data.__emnapi__.type;
7393
8484
  var payload_1 = e.data.__emnapi__.payload;
7394
- if (type === 'async-worker-init') {
7395
- this.handleAfterLoad(e, function () {
7396
- _this.napiModule.initWorker(payload_1.arg);
7397
- });
8485
+ try {
8486
+ if (type === 'async-worker-init') {
8487
+ this.handleAfterLoad(e, function () {
8488
+ _this.napiModule.initWorker(payload_1.arg, payload_1.func);
8489
+ });
8490
+ }
7398
8491
  }
7399
- else if (type === 'async-work-execute') {
7400
- this.handleAfterLoad(e, function () {
7401
- _this.napiModule.executeAsyncWork(payload_1.work);
7402
- });
8492
+ catch (err) {
8493
+ this.onError(err, type);
7403
8494
  }
7404
8495
  }
7405
8496
  };
7406
8497
  return MessageHandler;
7407
8498
  }(ThreadMessageHandler));
8499
+ // function tryWakeUpPthreadJoin (instance: WebAssembly.Instance): void {
8500
+ // // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/thread/pthread_join.c#L18-L21
8501
+ // const pthread_self = instance.exports.pthread_self as () => number
8502
+ // const memory = instance.exports.memory as WebAssembly.Memory
8503
+ // if (typeof pthread_self === 'function') {
8504
+ // const selfThread = pthread_self()
8505
+ // if (selfThread && memory) {
8506
+ // // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/internal/pthread_impl.h#L45
8507
+ // const detatchState = new Int32Array(memory.buffer, selfThread + 7 * 4 /** detach_state */, 1)
8508
+ // Atomics.store(detatchState, 0, 0)
8509
+ // Atomics.notify(detatchState, 0, Infinity)
8510
+ // }
8511
+ // }
8512
+ // }
7408
8513
 
7409
- var version = "1.4.3";
8514
+ var version = "1.11.1";
7410
8515
 
7411
8516
  export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version };