@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
@@ -109,7 +109,6 @@ function createNapiModule(options) {
109
109
  filename: '',
110
110
  childThread: ENVIRONMENT_IS_PTHREAD,
111
111
  initWorker: undefined,
112
- executeAsyncWork: undefined,
113
112
  waitThreadStart: waitThreadStart,
114
113
  PThread: undefined,
115
114
  init: function (options) {
@@ -156,6 +155,11 @@ function createNapiModule(options) {
156
155
  napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
157
156
  });
158
157
  }
158
+ catch (e) {
159
+ if (e !== 'unwind') {
160
+ throw e;
161
+ }
162
+ }
159
163
  finally {
160
164
  emnapiCtx.closeScope(envObject, scope_1);
161
165
  }
@@ -292,6 +296,9 @@ function createNapiModule(options) {
292
296
  return envObject.clearLastError();
293
297
  }
294
298
  function _emnapi_get_node_version(major, minor, patch) {
299
+ major >>>= 0;
300
+ minor >>>= 0;
301
+ patch >>>= 0;
295
302
  var versions = (typeof process === 'object' && process !== null &&
296
303
  typeof process.versions === 'object' && process.versions !== null &&
297
304
  typeof process.versions.node === 'string')
@@ -335,6 +342,7 @@ function createNapiModule(options) {
335
342
  }
336
343
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
337
344
  var envObject = emnapiCtx.envStore.get(env);
345
+ callback >>>= 0;
338
346
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
339
347
  }
340
348
  function _emnapi_ctx_increase_waiting_request_counter() {
@@ -343,6 +351,18 @@ function createNapiModule(options) {
343
351
  function _emnapi_ctx_decrease_waiting_request_counter() {
344
352
  emnapiCtx.decreaseWaitingRequestCounter();
345
353
  }
354
+ function _emnapi_is_main_runtime_thread() {
355
+ return ENVIRONMENT_IS_PTHREAD ? 0 : 1;
356
+ }
357
+ function _emnapi_is_main_browser_thread() {
358
+ return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
359
+ }
360
+ function _emnapi_unwind() {
361
+ throw 'unwind';
362
+ }
363
+ function _emnapi_get_now() {
364
+ return performance.timeOrigin + performance.now();
365
+ }
346
366
  function $emnapiSetValueI64(result, numberValue) {
347
367
  var tempDouble;
348
368
  var tempI64 = [
@@ -353,18 +373,30 @@ function createNapiModule(options) {
353
373
  HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
354
374
  HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
355
375
  }
376
+ function _emnapi_open_handle_scope() {
377
+ return emnapiCtx.openScope().id;
378
+ }
379
+ function _emnapi_close_handle_scope(_scope) {
380
+ return emnapiCtx.closeScope();
381
+ }
356
382
  var utilMod = Object.freeze({
357
383
  __proto__: null,
358
384
  $emnapiSetValueI64: $emnapiSetValueI64,
359
385
  _emnapi_call_finalizer: _emnapi_call_finalizer,
360
386
  _emnapi_callback_into_module: _emnapi_callback_into_module,
387
+ _emnapi_close_handle_scope: _emnapi_close_handle_scope,
361
388
  _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter,
362
389
  _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter,
363
390
  _emnapi_get_node_version: _emnapi_get_node_version,
391
+ _emnapi_get_now: _emnapi_get_now,
392
+ _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
393
+ _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread,
364
394
  _emnapi_next_tick: _emnapi_next_tick,
395
+ _emnapi_open_handle_scope: _emnapi_open_handle_scope,
365
396
  _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop,
366
397
  _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push,
367
398
  _emnapi_set_immediate: _emnapi_set_immediate,
399
+ _emnapi_unwind: _emnapi_unwind,
368
400
  napi_clear_last_error: napi_clear_last_error,
369
401
  napi_set_last_error: napi_set_last_error
370
402
  });
@@ -375,9 +407,19 @@ function createNapiModule(options) {
375
407
  var worker = PThread.pthreads[tid];
376
408
  return worker;
377
409
  }
410
+ function _emnapi_worker_ref(pthreadPtr) {
411
+ if (ENVIRONMENT_IS_PTHREAD)
412
+ return;
413
+ pthreadPtr >>>= 0;
414
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
415
+ if (worker && typeof worker.ref === 'function') {
416
+ worker.ref();
417
+ }
418
+ }
378
419
  function _emnapi_worker_unref(pthreadPtr) {
379
420
  if (ENVIRONMENT_IS_PTHREAD)
380
421
  return;
422
+ pthreadPtr >>>= 0;
381
423
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
382
424
  if (worker && typeof worker.unref === 'function') {
383
425
  worker.unref();
@@ -415,9 +457,6 @@ function createNapiModule(options) {
415
457
  };
416
458
  });
417
459
  uvThreadpoolReady.ready = false;
418
- function _emnapi_is_main_browser_thread() {
419
- return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
420
- }
421
460
  function _emnapi_after_uvthreadpool_ready(callback, q, type) {
422
461
  if (uvThreadpoolReady.ready) {
423
462
  (wasmTable.get(callback))(q, type);
@@ -432,7 +471,7 @@ function createNapiModule(options) {
432
471
  var p = [];
433
472
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
434
473
  var _loop_1 = function (i) {
435
- var pthreadPtr = HEAP_DATA_VIEW.getInt32(threads + i * 4, true);
474
+ var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
436
475
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
437
476
  p.push(new Promise(function (resolve) {
438
477
  var handler = function (e) {
@@ -480,8 +519,8 @@ function createNapiModule(options) {
480
519
  _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready,
481
520
  _emnapi_async_send_js: _emnapi_async_send_js,
482
521
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
483
- _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
484
522
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
523
+ _emnapi_worker_ref: _emnapi_worker_ref,
485
524
  _emnapi_worker_unref: _emnapi_worker_unref
486
525
  });
487
526
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
@@ -490,22 +529,14 @@ function createNapiModule(options) {
490
529
  var envObject = emnapiCtx.envStore.get(env);
491
530
  if (!adjusted_value)
492
531
  return envObject.setLastError(1);
493
- var change_in_bytes_number = Number(change_in_bytes);
494
- if (change_in_bytes_number < 0) {
495
- return envObject.setLastError(1);
496
- }
497
- var old_size = wasmMemory.buffer.byteLength;
498
- var new_size = old_size + change_in_bytes_number;
499
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
500
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
501
- return envObject.setLastError(9);
502
- }
532
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
533
+ adjusted_value >>>= 0;
503
534
  if (emnapiCtx.feature.supportBigInt) {
504
535
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
505
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
536
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
506
537
  }
507
538
  else {
508
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
539
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
509
540
  }
510
541
  return envObject.clearLastError();
511
542
  }
@@ -663,6 +694,7 @@ function createNapiModule(options) {
663
694
  var asyncId = asyncContext.asyncId;
664
695
  var triggerAsyncId = asyncContext.triggerAsyncId;
665
696
  if (result) {
697
+ result >>>= 0;
666
698
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
667
699
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
668
700
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -683,11 +715,13 @@ function createNapiModule(options) {
683
715
  return;
684
716
  var resource = emnapiCtx.handleStore.get(async_resource).value;
685
717
  var callback = emnapiCtx.handleStore.get(cb).value;
718
+ argv >>>= 0;
719
+ size >>>= 0;
686
720
  size = size >>> 0;
687
721
  var arr = Array(size);
688
722
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
689
723
  for (; i < size; i++) {
690
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
724
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
691
725
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
692
726
  }
693
727
  var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
@@ -695,9 +729,10 @@ function createNapiModule(options) {
695
729
  triggerAsyncId: trigger_async_id
696
730
  });
697
731
  if (result) {
732
+ result >>>= 0;
698
733
  var envObject = emnapiCtx.envStore.get(env);
699
734
  v = envObject.ensureHandleId(ret);
700
- HEAP_DATA_VIEW.setInt32(result, v, true);
735
+ HEAP_DATA_VIEW.setUint32(result, v, true);
701
736
  }
702
737
  }
703
738
  function _emnapi_async_init_js(async_resource, async_resource_name, result) {
@@ -721,6 +756,7 @@ function createNapiModule(options) {
721
756
  }
722
757
  var low = Number(numberValue & BigInt(0xffffffff));
723
758
  var high = Number(numberValue >> BigInt(32));
759
+ result >>>= 0;
724
760
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
725
761
  HEAP_DATA_VIEW.setInt32(result, low, true);
726
762
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -730,6 +766,7 @@ function createNapiModule(options) {
730
766
  if (!emnapiNodeBinding) {
731
767
  return 9;
732
768
  }
769
+ async_context >>>= 0;
733
770
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
734
771
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
735
772
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -772,14 +809,17 @@ function createNapiModule(options) {
772
809
  if (typeof v8func !== 'function') {
773
810
  return envObject.setLastError(1);
774
811
  }
812
+ async_context >>>= 0;
775
813
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
776
814
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
777
815
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
778
816
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
817
+ argv >>>= 0;
818
+ argc >>>= 0;
779
819
  argc = argc >>> 0;
780
820
  var arr = Array(argc);
781
821
  for (; i < argc; i++) {
782
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
822
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
783
823
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
784
824
  }
785
825
  var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
@@ -789,8 +829,9 @@ function createNapiModule(options) {
789
829
  if (ret.status !== 0)
790
830
  return envObject.setLastError(ret.status);
791
831
  if (result) {
832
+ result >>>= 0;
792
833
  v = envObject.ensureHandleId(ret.value);
793
- HEAP_DATA_VIEW.setInt32(result, v, true);
834
+ HEAP_DATA_VIEW.setUint32(result, v, true);
794
835
  }
795
836
  return envObject.getReturnStatus();
796
837
  }
@@ -816,32 +857,61 @@ function createNapiModule(options) {
816
857
  napi_open_callback_scope: napi_open_callback_scope
817
858
  });
818
859
  var emnapiTSFN = {
860
+ _liveSet: {},
819
861
  offset: {
862
+ __size__: 0,
820
863
  resource: 0,
821
- async_id: 8,
822
- trigger_async_id: 16,
823
- queue_size: 24,
824
- queue: 1 * 4 + 24,
825
- thread_count: 2 * 4 + 24,
826
- is_closing: 3 * 4 + 24,
827
- dispatch_state: 3 * 4 + 28,
828
- context: 3 * 4 + 32,
829
- max_queue_size: 4 * 4 + 32,
830
- ref: 5 * 4 + 32,
831
- env: 6 * 4 + 32,
832
- finalize_data: 7 * 4 + 32,
833
- finalize_cb: 8 * 4 + 32,
834
- call_js_cb: 9 * 4 + 32,
835
- handles_closing: 10 * 4 + 32,
836
- async_ref: 10 * 4 + 36,
837
- mutex: 10 * 4 + 40,
838
- cond: 10 * 4 + 44,
839
- end: 10 * 4 + 48
864
+ async_id: 0,
865
+ trigger_async_id: 0,
866
+ queue_size: 0,
867
+ is_some: 0,
868
+ queue: 0,
869
+ async_pending: 0,
870
+ async_u_fd: 0,
871
+ thread_count: 0,
872
+ state: 0,
873
+ dispatch_state: 0,
874
+ context: 0,
875
+ max_queue_size: 0,
876
+ ref: 0,
877
+ env: 0,
878
+ finalize_data: 0,
879
+ finalize_cb: 0,
880
+ call_js_cb: 0,
881
+ handles_closing: 0,
882
+ async_ref: 0,
883
+ mutex: 0,
884
+ cond: 0
840
885
  },
841
886
  init: function () {
887
+ emnapiTSFN._liveSet = new Set();
888
+ emnapiTSFN.offset.__size__ = 184;
889
+ emnapiTSFN.offset.resource = 0;
890
+ emnapiTSFN.offset.async_id = 8;
891
+ emnapiTSFN.offset.trigger_async_id = 16;
892
+ emnapiTSFN.offset.queue_size = 60;
893
+ emnapiTSFN.offset.is_some = 24;
894
+ emnapiTSFN.offset.queue = 64;
895
+ emnapiTSFN.offset.async_pending = 132;
896
+ emnapiTSFN.offset.async_u_fd = 96;
897
+ emnapiTSFN.offset.thread_count = 136;
898
+ emnapiTSFN.offset.state = 140;
899
+ emnapiTSFN.offset.dispatch_state = 144;
900
+ emnapiTSFN.offset.context = 148;
901
+ emnapiTSFN.offset.max_queue_size = 152;
902
+ emnapiTSFN.offset.ref = 156;
903
+ emnapiTSFN.offset.env = 160;
904
+ emnapiTSFN.offset.finalize_data = 164;
905
+ emnapiTSFN.offset.finalize_cb = 168;
906
+ emnapiTSFN.offset.call_js_cb = 172;
907
+ emnapiTSFN.offset.handles_closing = 176;
908
+ emnapiTSFN.offset.async_ref = 180;
909
+ emnapiTSFN.offset.mutex = 32;
910
+ emnapiTSFN.offset.cond = 56;
911
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
842
912
  if (typeof PThread !== 'undefined') {
843
913
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
844
- PThread.runningWorkers.forEach(emnapiTSFN.addListener);
914
+ Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
845
915
  var __original_getNewWorker_1 = PThread.getNewWorker;
846
916
  PThread.getNewWorker = function () {
847
917
  var r = __original_getNewWorker_1.apply(this, arguments);
@@ -862,7 +932,10 @@ function createNapiModule(options) {
862
932
  var type = __emnapi__.type;
863
933
  var payload = __emnapi__.payload;
864
934
  if (type === 'tsfn-send') {
865
- emnapiTSFN.dispatch(payload.tsfn);
935
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
936
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
937
+ emnapiTSFN.enqueue(payload.tsfn);
938
+ }
866
939
  }
867
940
  }
868
941
  };
@@ -884,18 +957,33 @@ function createNapiModule(options) {
884
957
  }
885
958
  return true;
886
959
  },
960
+ ensureBufferFor: function (end) {
961
+ var buffer = wasmMemory.buffer;
962
+ if (end > buffer.byteLength) {
963
+ wasmMemory.grow(0);
964
+ buffer = wasmMemory.buffer;
965
+ }
966
+ return buffer;
967
+ },
887
968
  initQueue: function (func) {
888
969
  var size = 2 * 4;
889
970
  var queue = _malloc(size);
890
971
  if (!queue)
891
972
  return false;
892
- new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
973
+ queue >>>= 0;
974
+ new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
893
975
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
894
976
  return true;
895
977
  },
896
978
  destroyQueue: function (func) {
897
979
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
898
980
  if (queue) {
981
+ var node = emnapiTSFN.loadSizeTypeValue(queue, false);
982
+ while (node !== 0) {
983
+ var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
984
+ _free(node);
985
+ node = next;
986
+ }
899
987
  _free(queue);
900
988
  }
901
989
  },
@@ -907,6 +995,7 @@ function createNapiModule(options) {
907
995
  var node = _malloc(size);
908
996
  if (!node)
909
997
  throw new Error('OOM');
998
+ node >>>= 0;
910
999
  emnapiTSFN.storeSizeTypeValue(node, data, false);
911
1000
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
912
1001
  if (head === 0 && tail === 0) {
@@ -942,11 +1031,11 @@ function createNapiModule(options) {
942
1031
  var waitCondition = function () {
943
1032
  var queueSize = emnapiTSFN.getQueueSize(func);
944
1033
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
945
- var isClosing = emnapiTSFN.getIsClosing(func);
946
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
1034
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
947
1035
  };
948
1036
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
949
- return mutex.execute(function () {
1037
+ var shouldDelete = false;
1038
+ var ret = mutex.execute(function () {
950
1039
  while (waitCondition()) {
951
1040
  if (mode === 0) {
952
1041
  return 15;
@@ -956,31 +1045,35 @@ function createNapiModule(options) {
956
1045
  }
957
1046
  cond.wait();
958
1047
  }
959
- if (emnapiTSFN.getIsClosing(func)) {
960
- if (emnapiTSFN.getThreadCount(func) === 0) {
961
- return 1;
962
- }
963
- else {
964
- emnapiTSFN.subThreadCount(func);
965
- return 16;
966
- }
967
- }
968
- else {
1048
+ if (emnapiTSFN.getState(func) === 0) {
969
1049
  emnapiTSFN.pushQueue(func, data);
970
1050
  emnapiTSFN.send(func);
971
1051
  return 0;
972
1052
  }
1053
+ if (emnapiTSFN.getThreadCount(func) === 0) {
1054
+ return 1;
1055
+ }
1056
+ emnapiTSFN.subThreadCount(func);
1057
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1058
+ return 16;
1059
+ }
1060
+ shouldDelete = true;
1061
+ return 16;
973
1062
  });
1063
+ if (shouldDelete) {
1064
+ emnapiTSFN.destroy(func);
1065
+ }
1066
+ return ret;
974
1067
  },
975
1068
  getMutex: function (func) {
976
1069
  var index = func + emnapiTSFN.offset.mutex;
977
1070
  var mutex = {
978
1071
  lock: function () {
979
1072
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
980
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1073
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
981
1074
  if (isBrowserMain) {
982
1075
  while (true) {
983
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1076
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
984
1077
  if (oldValue === 0) {
985
1078
  return;
986
1079
  }
@@ -988,18 +1081,18 @@ function createNapiModule(options) {
988
1081
  }
989
1082
  else {
990
1083
  while (true) {
991
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1084
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
992
1085
  if (oldValue === 0) {
993
1086
  return;
994
1087
  }
995
- Atomics.wait(i32a, 0, 1);
1088
+ Atomics.wait(i32a, 0, 10);
996
1089
  }
997
1090
  }
998
1091
  },
999
1092
  unlock: function () {
1000
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1001
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
1002
- if (oldValue !== 1) {
1093
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1094
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1095
+ if (oldValue !== 10) {
1003
1096
  throw new Error('Tried to unlock while not holding the mutex');
1004
1097
  }
1005
1098
  Atomics.notify(i32a, 0, 1);
@@ -1021,14 +1114,14 @@ function createNapiModule(options) {
1021
1114
  var mutex = emnapiTSFN.getMutex(func);
1022
1115
  var cond = {
1023
1116
  wait: function () {
1024
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1117
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1025
1118
  var value = Atomics.load(i32a, 0);
1026
1119
  mutex.unlock();
1027
1120
  Atomics.wait(i32a, 0, value);
1028
1121
  mutex.lock();
1029
1122
  },
1030
1123
  signal: function () {
1031
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1124
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1032
1125
  Atomics.add(i32a, 0, 1);
1033
1126
  Atomics.notify(i32a, 0, 1);
1034
1127
  }
@@ -1041,15 +1134,15 @@ function createNapiModule(options) {
1041
1134
  addQueueSize: function (func) {
1042
1135
  var offset = emnapiTSFN.offset.queue_size;
1043
1136
  var arr, index;
1044
- arr = new Uint32Array(wasmMemory.buffer);
1045
- index = (func + offset) >> 2;
1137
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1138
+ index = (func + offset) >>> 2;
1046
1139
  Atomics.add(arr, index, 1);
1047
1140
  },
1048
1141
  subQueueSize: function (func) {
1049
1142
  var offset = emnapiTSFN.offset.queue_size;
1050
1143
  var arr, index;
1051
- arr = new Uint32Array(wasmMemory.buffer);
1052
- index = (func + offset) >> 2;
1144
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1145
+ index = (func + offset) >>> 2;
1053
1146
  Atomics.sub(arr, index, 1);
1054
1147
  },
1055
1148
  getThreadCount: function (func) {
@@ -1058,31 +1151,31 @@ function createNapiModule(options) {
1058
1151
  addThreadCount: function (func) {
1059
1152
  var offset = emnapiTSFN.offset.thread_count;
1060
1153
  var arr, index;
1061
- arr = new Uint32Array(wasmMemory.buffer);
1062
- index = (func + offset) >> 2;
1154
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1155
+ index = (func + offset) >>> 2;
1063
1156
  Atomics.add(arr, index, 1);
1064
1157
  },
1065
1158
  subThreadCount: function (func) {
1066
1159
  var offset = emnapiTSFN.offset.thread_count;
1067
1160
  var arr, index;
1068
- arr = new Uint32Array(wasmMemory.buffer);
1069
- index = (func + offset) >> 2;
1161
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1162
+ index = (func + offset) >>> 2;
1070
1163
  Atomics.sub(arr, index, 1);
1071
1164
  },
1072
- getIsClosing: function (func) {
1073
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
1165
+ getState: function (func) {
1166
+ return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
1074
1167
  },
1075
- setIsClosing: function (func, value) {
1076
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
1168
+ setState: function (func, value) {
1169
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
1077
1170
  },
1078
1171
  getHandlesClosing: function (func) {
1079
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
1172
+ return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
1080
1173
  },
1081
1174
  setHandlesClosing: function (func, value) {
1082
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
1175
+ Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
1083
1176
  },
1084
1177
  getDispatchState: function (func) {
1085
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
1178
+ return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
1086
1179
  },
1087
1180
  getContext: function (func) {
1088
1181
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -1112,66 +1205,96 @@ function createNapiModule(options) {
1112
1205
  var ret;
1113
1206
  var arr;
1114
1207
  if (unsigned) {
1115
- arr = new Uint32Array(wasmMemory.buffer);
1116
- ret = Atomics.load(arr, offset >> 2);
1208
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1209
+ ret = Atomics.load(arr, offset >>> 2);
1117
1210
  return ret;
1118
1211
  }
1119
1212
  else {
1120
- arr = new Int32Array(wasmMemory.buffer);
1121
- ret = Atomics.load(arr, offset >> 2);
1213
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1214
+ ret = Atomics.load(arr, offset >>> 2);
1122
1215
  return ret;
1123
1216
  }
1124
1217
  },
1125
1218
  storeSizeTypeValue: function (offset, value, unsigned) {
1126
1219
  var arr;
1127
1220
  if (unsigned) {
1128
- arr = new Uint32Array(wasmMemory.buffer);
1129
- Atomics.store(arr, offset >> 2, value);
1221
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1222
+ Atomics.store(arr, offset >>> 2, value);
1130
1223
  return undefined;
1131
1224
  }
1132
1225
  else {
1133
- arr = new Int32Array(wasmMemory.buffer);
1134
- Atomics.store(arr, offset >> 2, value >>> 0);
1226
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1227
+ Atomics.store(arr, offset >>> 2, value >>> 0);
1135
1228
  return undefined;
1136
1229
  }
1137
1230
  },
1231
+ releaseResources: function (func) {
1232
+ if (emnapiTSFN.getState(func) !== 2) {
1233
+ emnapiTSFN.setState(func, 2);
1234
+ var env = emnapiTSFN.getEnv(func);
1235
+ var envObject = emnapiCtx.envStore.get(env);
1236
+ var ref = emnapiTSFN.getRef(func);
1237
+ if (ref) {
1238
+ emnapiCtx.refStore.get(ref).dispose();
1239
+ }
1240
+ var resource = emnapiTSFN.getResource(func);
1241
+ emnapiCtx.refStore.get(resource).dispose();
1242
+ emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
1243
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1244
+ HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
1245
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1246
+ envObject.unref();
1247
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1248
+ var asyncRefOffset = asyncRefAddress >>> 2;
1249
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1250
+ if (Atomics.load(arr, asyncRefOffset) > 0) {
1251
+ Atomics.store(arr, asyncRefOffset, 0);
1252
+ emnapiCtx.decreaseWaitingRequestCounter();
1253
+ }
1254
+ if (emnapiNodeBinding) {
1255
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1256
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1257
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1258
+ _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1259
+ }
1260
+ }
1261
+ },
1138
1262
  destroy: function (func) {
1263
+ emnapiTSFN._liveSet.delete(func);
1139
1264
  emnapiTSFN.destroyQueue(func);
1140
- var env = emnapiTSFN.getEnv(func);
1141
- var envObject = emnapiCtx.envStore.get(env);
1142
- var ref = emnapiTSFN.getRef(func);
1143
- if (ref) {
1144
- emnapiCtx.refStore.get(ref).dispose();
1145
- }
1146
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1147
- envObject.unref();
1148
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1149
- var arr = new Int32Array(wasmMemory.buffer);
1150
- if (Atomics.load(arr, asyncRefOffset)) {
1151
- Atomics.store(arr, asyncRefOffset, 0);
1152
- emnapiCtx.decreaseWaitingRequestCounter();
1153
- }
1154
- var resource = emnapiTSFN.getResource(func);
1155
- emnapiCtx.refStore.get(resource).dispose();
1156
- if (emnapiNodeBinding) {
1157
- var view = new DataView(wasmMemory.buffer);
1158
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1159
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1160
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1161
- }
1265
+ emnapiTSFN.releaseResources(func);
1162
1266
  _free(func);
1163
1267
  },
1164
- emptyQueueAndDelete: function (func) {
1268
+ emptyQueue: function (func) {
1269
+ var drainQueue = [];
1270
+ emnapiTSFN.getMutex(func).execute(function () {
1271
+ while (emnapiTSFN.getQueueSize(func) > 0) {
1272
+ drainQueue.push(emnapiTSFN.shiftQueue(func));
1273
+ }
1274
+ });
1165
1275
  var callJsCb = emnapiTSFN.getCallJSCb(func);
1166
1276
  var context = emnapiTSFN.getContext(func);
1167
1277
  var data;
1168
- while (emnapiTSFN.getQueueSize(func) > 0) {
1169
- data = emnapiTSFN.shiftQueue(func);
1278
+ for (var i = 0; i < drainQueue.length; i++) {
1279
+ data = drainQueue[i];
1170
1280
  if (callJsCb) {
1171
1281
  (wasmTable.get(callJsCb))(0, 0, context, data);
1172
1282
  }
1173
1283
  }
1174
- emnapiTSFN.destroy(func);
1284
+ },
1285
+ maybeDelete: function (func) {
1286
+ var shouldDelete = false;
1287
+ emnapiTSFN.getMutex(func).execute(function () {
1288
+ if (emnapiTSFN.getThreadCount(func) > 0) {
1289
+ emnapiTSFN.releaseResources(func);
1290
+ }
1291
+ else {
1292
+ shouldDelete = true;
1293
+ }
1294
+ });
1295
+ if (shouldDelete) {
1296
+ emnapiTSFN.destroy(func);
1297
+ }
1175
1298
  },
1176
1299
  finalize: function (func) {
1177
1300
  var env = emnapiTSFN.getEnv(func);
@@ -1184,12 +1307,13 @@ function createNapiModule(options) {
1184
1307
  envObject.callFinalizerInternal(0, finalize, data, context);
1185
1308
  };
1186
1309
  try {
1310
+ emnapiTSFN.emptyQueue(func);
1187
1311
  if (finalize) {
1188
1312
  if (emnapiNodeBinding) {
1189
1313
  var resource = emnapiTSFN.getResource(func);
1190
1314
  var resource_value = emnapiCtx.refStore.get(resource).get();
1191
1315
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1192
- var view = new DataView(wasmMemory.buffer);
1316
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1193
1317
  var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1194
1318
  var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1195
1319
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
@@ -1201,7 +1325,7 @@ function createNapiModule(options) {
1201
1325
  f();
1202
1326
  }
1203
1327
  }
1204
- emnapiTSFN.emptyQueueAndDelete(func);
1328
+ emnapiTSFN.maybeDelete(func);
1205
1329
  }
1206
1330
  finally {
1207
1331
  emnapiCtx.closeScope(envObject);
@@ -1217,7 +1341,7 @@ function createNapiModule(options) {
1217
1341
  try {
1218
1342
  if (set_closing) {
1219
1343
  emnapiTSFN.getMutex(func).execute(function () {
1220
- emnapiTSFN.setIsClosing(func, 1);
1344
+ emnapiTSFN.setState(func, 1);
1221
1345
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1222
1346
  emnapiTSFN.getCond(func).signal();
1223
1347
  }
@@ -1227,6 +1351,7 @@ function createNapiModule(options) {
1227
1351
  return;
1228
1352
  }
1229
1353
  emnapiTSFN.setHandlesClosing(func, 1);
1354
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1230
1355
  emnapiCtx.feature.setImmediate(function () {
1231
1356
  emnapiTSFN.finalize(func);
1232
1357
  });
@@ -1242,10 +1367,7 @@ function createNapiModule(options) {
1242
1367
  var mutex = emnapiTSFN.getMutex(func);
1243
1368
  var cond = emnapiTSFN.getCond(func);
1244
1369
  mutex.execute(function () {
1245
- if (emnapiTSFN.getIsClosing(func)) {
1246
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1247
- }
1248
- else {
1370
+ if (emnapiTSFN.getState(func) === 0) {
1249
1371
  var size = emnapiTSFN.getQueueSize(func);
1250
1372
  if (size > 0) {
1251
1373
  data = emnapiTSFN.shiftQueue(func);
@@ -1258,7 +1380,7 @@ function createNapiModule(options) {
1258
1380
  }
1259
1381
  if (size === 0) {
1260
1382
  if (emnapiTSFN.getThreadCount(func) === 0) {
1261
- emnapiTSFN.setIsClosing(func, 1);
1383
+ emnapiTSFN.setState(func, 1);
1262
1384
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1263
1385
  cond.signal();
1264
1386
  }
@@ -1269,6 +1391,9 @@ function createNapiModule(options) {
1269
1391
  has_more = true;
1270
1392
  }
1271
1393
  }
1394
+ else {
1395
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1396
+ }
1272
1397
  });
1273
1398
  if (popped_value) {
1274
1399
  var env = emnapiTSFN.getEnv(func);
@@ -1296,7 +1421,7 @@ function createNapiModule(options) {
1296
1421
  var resource = emnapiTSFN.getResource(func);
1297
1422
  var resource_value = emnapiCtx.refStore.get(resource).get();
1298
1423
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1299
- var view = new DataView(wasmMemory.buffer);
1424
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1300
1425
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
1301
1426
  asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
1302
1427
  triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
@@ -1315,8 +1440,9 @@ function createNapiModule(options) {
1315
1440
  dispatch: function (func) {
1316
1441
  var has_more = true;
1317
1442
  var iterations_left = 1000;
1318
- var ui32a = new Uint32Array(wasmMemory.buffer);
1319
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
1443
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1444
+ var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
1445
+ var index = dispatchStateAddress >>> 2;
1320
1446
  while (has_more && --iterations_left !== 0) {
1321
1447
  Atomics.store(ui32a, index, 1);
1322
1448
  has_more = emnapiTSFN.dispatchOne(func);
@@ -1328,25 +1454,66 @@ function createNapiModule(options) {
1328
1454
  emnapiTSFN.send(func);
1329
1455
  }
1330
1456
  },
1331
- send: function (func) {
1332
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
1333
- if ((current_state & 1) === 1) {
1457
+ enqueue: function (func) {
1458
+ var pending = func + emnapiTSFN.offset.async_pending;
1459
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
1460
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
1461
+ if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
1334
1462
  return;
1335
1463
  }
1336
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1337
- postMessage({
1338
- __emnapi__: {
1339
- type: 'tsfn-send',
1340
- payload: {
1341
- tsfn: func
1464
+ emnapiCtx.feature.setImmediate(function () {
1465
+ if (!emnapiTSFN._liveSet.has(func)) {
1466
+ return;
1467
+ }
1468
+ if (Atomics.load(i32a, pending >>> 2) === 0) {
1469
+ Atomics.store(i32a, scheduled >>> 2, 0);
1470
+ return;
1471
+ }
1472
+ emnapiCtx.feature.setImmediate(function () {
1473
+ try {
1474
+ if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
1475
+ return;
1476
+ }
1477
+ if (!emnapiTSFN._liveSet.has(func)) {
1478
+ return;
1479
+ }
1480
+ emnapiTSFN.dispatch(func);
1481
+ }
1482
+ finally {
1483
+ if (emnapiTSFN._liveSet.has(func)) {
1484
+ Atomics.store(i32a, scheduled >>> 2, 0);
1485
+ if (Atomics.load(i32a, pending >>> 2) !== 0) {
1486
+ emnapiTSFN.enqueue(func);
1487
+ }
1342
1488
  }
1343
1489
  }
1344
1490
  });
1491
+ });
1492
+ },
1493
+ send: function (func) {
1494
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1495
+ var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
1496
+ if ((current_state & 1) === 1) {
1497
+ return;
1345
1498
  }
1346
- else {
1347
- emnapiCtx.feature.setImmediate(function () {
1348
- emnapiTSFN.dispatch(func);
1349
- });
1499
+ var pendng = func + emnapiTSFN.offset.async_pending;
1500
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
1501
+ return;
1502
+ }
1503
+ if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
1504
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1505
+ postMessage({
1506
+ __emnapi__: {
1507
+ type: 'tsfn-send',
1508
+ payload: {
1509
+ tsfn: func
1510
+ }
1511
+ }
1512
+ });
1513
+ }
1514
+ else {
1515
+ emnapiTSFN.enqueue(func);
1516
+ }
1350
1517
  }
1351
1518
  }
1352
1519
  };
@@ -1357,6 +1524,13 @@ function createNapiModule(options) {
1357
1524
  envObject.checkGCAccess();
1358
1525
  if (!async_resource_name)
1359
1526
  return envObject.setLastError(1);
1527
+ max_queue_size >>>= 0;
1528
+ initial_thread_count >>>= 0;
1529
+ env >>>= 0;
1530
+ thread_finalize_data >>>= 0;
1531
+ thread_finalize_cb >>>= 0;
1532
+ context >>>= 0;
1533
+ call_js_cb >>>= 0;
1360
1534
  max_queue_size = max_queue_size >>> 0;
1361
1535
  initial_thread_count = initial_thread_count >>> 0;
1362
1536
  if (initial_thread_count === 0) {
@@ -1365,6 +1539,7 @@ function createNapiModule(options) {
1365
1539
  if (!result)
1366
1540
  return envObject.setLastError(1);
1367
1541
  var ref = 0;
1542
+ func >>>= 0;
1368
1543
  if (!func) {
1369
1544
  if (!call_js_cb)
1370
1545
  return envObject.setLastError(1);
@@ -1394,34 +1569,38 @@ function createNapiModule(options) {
1394
1569
  }
1395
1570
  asyncResourceName = String(asyncResourceName);
1396
1571
  var resource_name = envObject.ensureHandleId(asyncResourceName);
1397
- var sizeofTSFN = emnapiTSFN.offset.end;
1572
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
1398
1573
  var tsfn = _malloc(sizeofTSFN);
1399
1574
  if (!tsfn)
1400
1575
  return envObject.setLastError(9);
1401
- new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1576
+ tsfn >>>= 0;
1577
+ new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1402
1578
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
1403
1579
  var resource_ = resourceRef.id;
1404
1580
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1405
- HEAP_DATA_VIEW.setInt32(tsfn, resource_, true);
1581
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
1406
1582
  if (!emnapiTSFN.initQueue(tsfn)) {
1407
1583
  _free(tsfn);
1408
1584
  resourceRef.dispose();
1409
1585
  return envObject.setLastError(9);
1410
1586
  }
1411
1587
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
1588
+ HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
1412
1589
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1413
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.context, context, true);
1590
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1414
1591
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
1415
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.ref, ref, true);
1416
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.env, env, true);
1417
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
1418
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1419
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1592
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
1593
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
1594
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
1595
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1596
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1420
1597
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
1598
+ emnapiTSFN._liveSet.add(tsfn);
1421
1599
  envObject.ref();
1422
1600
  emnapiCtx.increaseWaitingRequestCounter();
1423
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1424
- HEAP_DATA_VIEW.setInt32(result, tsfn, true);
1601
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1602
+ result >>>= 0;
1603
+ HEAP_DATA_VIEW.setUint32(result, tsfn, true);
1425
1604
  return envObject.clearLastError();
1426
1605
  }
1427
1606
  function napi_get_threadsafe_function_context(func, result) {
@@ -1429,9 +1608,11 @@ function createNapiModule(options) {
1429
1608
  abort();
1430
1609
  return 1;
1431
1610
  }
1611
+ func >>>= 0;
1612
+ result >>>= 0;
1432
1613
  var context = emnapiTSFN.getContext(func);
1433
1614
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1434
- HEAP_DATA_VIEW.setInt32(result, context, true);
1615
+ HEAP_DATA_VIEW.setUint32(result, context, true);
1435
1616
  return 0;
1436
1617
  }
1437
1618
  function napi_call_threadsafe_function(func, data, mode) {
@@ -1439,6 +1620,8 @@ function createNapiModule(options) {
1439
1620
  abort();
1440
1621
  return 1;
1441
1622
  }
1623
+ func >>>= 0;
1624
+ data >>>= 0;
1442
1625
  return emnapiTSFN.push(func, data, mode);
1443
1626
  }
1444
1627
  function napi_acquire_threadsafe_function(func) {
@@ -1446,13 +1629,14 @@ function createNapiModule(options) {
1446
1629
  abort();
1447
1630
  return 1;
1448
1631
  }
1632
+ func >>>= 0;
1449
1633
  var mutex = emnapiTSFN.getMutex(func);
1450
1634
  return mutex.execute(function () {
1451
- if (emnapiTSFN.getIsClosing(func)) {
1452
- return 16;
1635
+ if (emnapiTSFN.getState(func) === 0) {
1636
+ emnapiTSFN.addThreadCount(func);
1637
+ return 0;
1453
1638
  }
1454
- emnapiTSFN.addThreadCount(func);
1455
- return 0;
1639
+ return 16;
1456
1640
  });
1457
1641
  }
1458
1642
  function napi_release_threadsafe_function(func, mode) {
@@ -1460,37 +1644,52 @@ function createNapiModule(options) {
1460
1644
  abort();
1461
1645
  return 1;
1462
1646
  }
1647
+ func >>>= 0;
1463
1648
  var mutex = emnapiTSFN.getMutex(func);
1464
1649
  var cond = emnapiTSFN.getCond(func);
1465
- return mutex.execute(function () {
1650
+ var shouldDelete = false;
1651
+ var ret = mutex.execute(function () {
1466
1652
  if (emnapiTSFN.getThreadCount(func) === 0) {
1467
1653
  return 1;
1468
1654
  }
1469
1655
  emnapiTSFN.subThreadCount(func);
1470
1656
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
1471
- var isClosing = emnapiTSFN.getIsClosing(func);
1472
- if (!isClosing) {
1473
- var isClosingValue = (mode === 1) ? 1 : 0;
1474
- emnapiTSFN.setIsClosing(func, isClosingValue);
1475
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
1657
+ if (emnapiTSFN.getState(func) === 0) {
1658
+ if (mode === 1) {
1659
+ emnapiTSFN.setState(func, 1);
1660
+ }
1661
+ if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
1476
1662
  cond.signal();
1477
1663
  }
1478
1664
  emnapiTSFN.send(func);
1479
1665
  }
1480
1666
  }
1667
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1668
+ return 0;
1669
+ }
1670
+ shouldDelete = true;
1481
1671
  return 0;
1482
1672
  });
1673
+ if (shouldDelete) {
1674
+ emnapiTSFN.destroy(func);
1675
+ }
1676
+ return ret;
1483
1677
  }
1484
1678
  function napi_unref_threadsafe_function(env, func) {
1485
1679
  if (!func) {
1486
1680
  abort();
1487
1681
  return 1;
1488
1682
  }
1489
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1490
- var arr = new Int32Array(wasmMemory.buffer);
1491
- if (Atomics.load(arr, asyncRefOffset)) {
1492
- Atomics.store(arr, asyncRefOffset, 0);
1493
- emnapiCtx.decreaseWaitingRequestCounter();
1683
+ func >>>= 0;
1684
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1685
+ var asyncRefOffset = asyncRefAddress >>> 2;
1686
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1687
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1688
+ if (currentValue > 0) {
1689
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
1690
+ if (currentValue === 1) {
1691
+ emnapiCtx.decreaseWaitingRequestCounter();
1692
+ }
1494
1693
  }
1495
1694
  return 0;
1496
1695
  }
@@ -1499,34 +1698,66 @@ function createNapiModule(options) {
1499
1698
  abort();
1500
1699
  return 1;
1501
1700
  }
1502
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1503
- var arr = new Int32Array(wasmMemory.buffer);
1504
- if (!Atomics.load(arr, asyncRefOffset)) {
1505
- Atomics.store(arr, asyncRefOffset, 1);
1701
+ func >>>= 0;
1702
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1703
+ var asyncRefOffset = asyncRefAddress >>> 2;
1704
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1705
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1706
+ if (!currentValue) {
1506
1707
  emnapiCtx.increaseWaitingRequestCounter();
1507
1708
  }
1709
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
1508
1710
  return 0;
1509
1711
  }
1510
1712
  var emnapiAWMT = {
1511
- unusedWorkers: [],
1512
- runningWorkers: [],
1513
- workQueue: [],
1713
+ pool: [],
1514
1714
  workerReady: null,
1715
+ globalAddress: 0,
1716
+ globalOffset: {
1717
+ idle_threads: 0,
1718
+ q: 1 * 4,
1719
+ next: 1 * 4,
1720
+ prev: 2 * 4,
1721
+ mutex: 3 * 4,
1722
+ cond: 4 * 4,
1723
+ exit_message: 5 * 4,
1724
+ end: 7 * 4
1725
+ },
1515
1726
  offset: {
1516
1727
  resource: 0,
1517
1728
  async_id: 8,
1518
1729
  trigger_async_id: 16,
1519
1730
  env: 24,
1520
- data: 1 * 4 + 24,
1521
- execute: 2 * 4 + 24,
1522
- complete: 3 * 4 + 24,
1523
- end: 4 * 4 + 24
1731
+ status: 1 * 4 + 24,
1732
+ queue: 2 * 4 + 24,
1733
+ queue_next: 2 * 4 + 24,
1734
+ queue_prev: 3 * 4 + 24,
1735
+ data: 4 * 4 + 24,
1736
+ execute: 5 * 4 + 24,
1737
+ complete: 6 * 4 + 24,
1738
+ end: 7 * 4 + 24
1739
+ },
1740
+ ensureBufferFor: function (end) {
1741
+ var buffer = wasmMemory.buffer;
1742
+ if (end > buffer.byteLength) {
1743
+ wasmMemory.grow(0);
1744
+ buffer = wasmMemory.buffer;
1745
+ }
1746
+ return buffer;
1524
1747
  },
1525
1748
  init: function () {
1526
- emnapiAWMT.unusedWorkers = [];
1527
- emnapiAWMT.runningWorkers = [];
1528
- emnapiAWMT.workQueue = [];
1749
+ emnapiAWMT.pool = [];
1529
1750
  emnapiAWMT.workerReady = null;
1751
+ if (typeof PThread !== 'undefined') {
1752
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
1753
+ Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
1754
+ var __original_getNewWorker_1 = PThread.getNewWorker;
1755
+ PThread.getNewWorker = function () {
1756
+ var r = __original_getNewWorker_1.apply(this, arguments);
1757
+ emnapiAWMT.addListener(r);
1758
+ return r;
1759
+ };
1760
+ }
1530
1761
  },
1531
1762
  addListener: function (worker) {
1532
1763
  if (!worker)
@@ -1540,18 +1771,8 @@ function createNapiModule(options) {
1540
1771
  var type = __emnapi__.type;
1541
1772
  var payload = __emnapi__.payload;
1542
1773
  if (type === 'async-work-complete') {
1543
- emnapiCtx.decreaseWaitingRequestCounter();
1544
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
1545
- emnapiAWMT.unusedWorkers.push(worker);
1546
- emnapiAWMT.checkIdleWorker();
1547
1774
  emnapiAWMT.callComplete(payload.work, 0);
1548
1775
  }
1549
- else if (type === 'async-work-queue') {
1550
- emnapiAWMT.scheduleWork(payload.work);
1551
- }
1552
- else if (type === 'async-work-cancel') {
1553
- emnapiAWMT.cancelWork(payload.work);
1554
- }
1555
1776
  }
1556
1777
  };
1557
1778
  var dispose = function () {
@@ -1572,142 +1793,233 @@ function createNapiModule(options) {
1572
1793
  }
1573
1794
  return true;
1574
1795
  },
1796
+ initGlobal: function () {
1797
+ if (!emnapiAWMT.globalAddress) {
1798
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
1799
+ emnapiAWMT.globalAddress >>>= 0;
1800
+ var size = emnapiAWMT.globalOffset.end;
1801
+ var addr = emnapiAWMT.globalAddress;
1802
+ new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
1803
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
1804
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
1805
+ }
1806
+ },
1807
+ terminateWorkers: function () {
1808
+ emnapiAWMT.pool.forEach(function (w) {
1809
+ var _a, _b;
1810
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
1811
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
1812
+ w.terminate();
1813
+ });
1814
+ emnapiAWMT.pool.length = 0;
1815
+ },
1575
1816
  initWorkers: function (n) {
1576
1817
  if (ENVIRONMENT_IS_PTHREAD) {
1577
1818
  return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
1578
1819
  }
1579
1820
  if (emnapiAWMT.workerReady)
1580
1821
  return emnapiAWMT.workerReady;
1581
- if (typeof onCreateWorker !== 'function') {
1582
- throw new TypeError('`options.onCreateWorker` is not a function');
1583
- }
1584
- var promises = [];
1585
- var args = [];
1586
1822
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
1587
1823
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
1588
1824
  }
1825
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
1826
+ var args = [];
1827
+ emnapiAWMT.initGlobal();
1589
1828
  for (var i = 0; i < n; ++i) {
1590
- args.push(wasmInstance.exports.emnapi_async_worker_create());
1829
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
1591
1830
  }
1592
- try {
1593
- var _loop_1 = function (i) {
1594
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
1595
- var p = PThread.loadWasmModuleToWorker(worker);
1596
- emnapiAWMT.addListener(worker);
1597
- promises.push(p.then(function () {
1598
- if (typeof worker.unref === 'function') {
1599
- worker.unref();
1600
- }
1601
- }));
1602
- emnapiAWMT.unusedWorkers.push(worker);
1603
- var arg = args[i];
1604
- worker.threadBlockBase = arg;
1605
- worker.postMessage({
1606
- __emnapi__: {
1607
- type: 'async-worker-init',
1608
- payload: { arg: arg }
1609
- }
1610
- });
1611
- };
1612
- for (var i = 0; i < n; ++i) {
1613
- _loop_1(i);
1831
+ var promises = args.map(function (index) {
1832
+ if (index === 0) {
1833
+ return Promise.reject(new Error('Failed to create async worker'));
1614
1834
  }
1615
- }
1616
- catch (err) {
1617
- for (var i = 0; i < n; ++i) {
1618
- var arg = args[i];
1619
- _free(arg);
1835
+ var worker;
1836
+ if (index < 0) {
1837
+ worker = emnapiAWMT.pool[-index - 1];
1838
+ if (worker)
1839
+ return worker.whenLoaded;
1620
1840
  }
1621
- throw err;
1622
- }
1841
+ index >>>= 0;
1842
+ var tidOffset = 20;
1843
+ var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
1844
+ var tid = view.getInt32(index + tidOffset, true);
1845
+ worker = PThread.pthreads[tid];
1846
+ return worker.whenLoaded;
1847
+ });
1623
1848
  emnapiAWMT.workerReady = Promise.all(promises);
1624
1849
  return emnapiAWMT.workerReady;
1625
1850
  },
1626
- checkIdleWorker: function () {
1627
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
1628
- var worker = emnapiAWMT.unusedWorkers.shift();
1629
- var work = emnapiAWMT.workQueue.shift();
1630
- emnapiAWMT.runningWorkers.push(worker);
1631
- worker.postMessage({
1632
- __emnapi__: {
1633
- type: 'async-work-execute',
1634
- payload: { work: work }
1635
- }
1636
- });
1637
- }
1638
- },
1639
1851
  getResource: function (work) {
1640
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
1852
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
1853
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1854
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
1641
1855
  },
1642
1856
  getExecute: function (work) {
1643
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
1857
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
1858
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1859
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
1644
1860
  },
1645
1861
  getComplete: function (work) {
1646
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
1862
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
1863
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1864
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
1647
1865
  },
1648
1866
  getEnv: function (work) {
1649
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
1867
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
1868
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1869
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
1650
1870
  },
1651
1871
  getData: function (work) {
1652
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
1872
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
1873
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1874
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
1875
+ },
1876
+ getMutex: function () {
1877
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
1878
+ var mutex = {
1879
+ lock: function () {
1880
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1881
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1882
+ if (isBrowserMain) {
1883
+ while (true) {
1884
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1885
+ if (oldValue === 0) {
1886
+ return;
1887
+ }
1888
+ }
1889
+ }
1890
+ else {
1891
+ while (true) {
1892
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1893
+ if (oldValue === 0) {
1894
+ return;
1895
+ }
1896
+ Atomics.wait(i32a, 0, 10);
1897
+ }
1898
+ }
1899
+ },
1900
+ unlock: function () {
1901
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1902
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1903
+ if (oldValue !== 10) {
1904
+ throw new Error('Tried to unlock while not holding the mutex');
1905
+ }
1906
+ Atomics.notify(i32a, 0, 1);
1907
+ },
1908
+ execute: function (fn) {
1909
+ mutex.lock();
1910
+ try {
1911
+ return fn();
1912
+ }
1913
+ finally {
1914
+ mutex.unlock();
1915
+ }
1916
+ }
1917
+ };
1918
+ return mutex;
1919
+ },
1920
+ getCond: function () {
1921
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
1922
+ var mutex = emnapiAWMT.getMutex();
1923
+ var cond = {
1924
+ wait: function () {
1925
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1926
+ var value = Atomics.load(i32a, 0);
1927
+ mutex.unlock();
1928
+ Atomics.wait(i32a, 0, value);
1929
+ mutex.lock();
1930
+ },
1931
+ signal: function () {
1932
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1933
+ Atomics.add(i32a, 0, 1);
1934
+ Atomics.notify(i32a, 0, 1);
1935
+ }
1936
+ };
1937
+ return cond;
1938
+ },
1939
+ queueInit: function (q) {
1940
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1941
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1942
+ HEAP_DATA_VIEW.setUint32(q, q, true);
1943
+ HEAP_DATA_VIEW.setUint32(q + 4, q, true);
1944
+ },
1945
+ queueInsertTail: function (h, q) {
1946
+ emnapiAWMT.ensureBufferFor(h + 4 + 4);
1947
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1948
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1949
+ HEAP_DATA_VIEW.setUint32(q, h, true);
1950
+ var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
1951
+ HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
1952
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1953
+ HEAP_DATA_VIEW.setUint32(qprev, q, true);
1954
+ HEAP_DATA_VIEW.setUint32(h + 4, q, true);
1955
+ },
1956
+ queueRemove: function (q) {
1957
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1958
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1959
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1960
+ var qnext = HEAP_DATA_VIEW.getUint32(q, true);
1961
+ HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
1962
+ HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
1963
+ },
1964
+ queueEmpty: function (q) {
1965
+ emnapiAWMT.ensureBufferFor(q + 4);
1966
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1967
+ return q == HEAP_DATA_VIEW.getUint32(q, true);
1653
1968
  },
1654
1969
  scheduleWork: function (work) {
1655
1970
  var _a;
1656
- if (ENVIRONMENT_IS_PTHREAD) {
1657
- var postMessage_1 = napiModule.postMessage;
1658
- postMessage_1({
1659
- __emnapi__: {
1660
- type: 'async-work-queue',
1661
- payload: { work: work }
1662
- }
1971
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
1972
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1973
+ emnapiAWMT.workerReady.ready = true;
1974
+ }).catch(function (err) {
1975
+ emnapiAWMT.workerReady = null;
1976
+ throw err;
1663
1977
  });
1664
- return;
1665
1978
  }
1666
1979
  emnapiCtx.increaseWaitingRequestCounter();
1667
- emnapiAWMT.workQueue.push(work);
1668
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
1669
- emnapiAWMT.checkIdleWorker();
1980
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
1981
+ Atomics.store(statusBuffer, 0, 0);
1982
+ var mutex = emnapiAWMT.getMutex();
1983
+ var cond = emnapiAWMT.getCond();
1984
+ mutex.lock();
1985
+ try {
1986
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
1670
1987
  }
1671
- else {
1672
- var fail = function (err) {
1673
- emnapiCtx.decreaseWaitingRequestCounter();
1674
- throw err;
1675
- };
1676
- try {
1677
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1678
- emnapiAWMT.workerReady.ready = true;
1679
- emnapiAWMT.checkIdleWorker();
1680
- }, fail);
1681
- }
1682
- catch (err) {
1683
- fail(err);
1684
- }
1988
+ catch (err) {
1989
+ emnapiCtx.decreaseWaitingRequestCounter();
1990
+ mutex.unlock();
1991
+ throw err;
1992
+ }
1993
+ emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
1994
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1995
+ if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
1996
+ cond.signal();
1685
1997
  }
1998
+ mutex.unlock();
1686
1999
  },
1687
2000
  cancelWork: function (work) {
1688
- if (ENVIRONMENT_IS_PTHREAD) {
1689
- var postMessage_2 = napiModule.postMessage;
1690
- postMessage_2({
1691
- __emnapi__: {
1692
- type: 'async-work-cancel',
1693
- payload: { work: work }
1694
- }
1695
- });
1696
- return 0;
2001
+ var cancelled = false;
2002
+ emnapiAWMT.getMutex().execute(function () {
2003
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
2004
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2005
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
2006
+ if (cancelled) {
2007
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
2008
+ }
2009
+ });
2010
+ if (!cancelled) {
2011
+ return 9;
1697
2012
  }
1698
- var index = emnapiAWMT.workQueue.indexOf(work);
1699
- if (index !== -1) {
1700
- emnapiAWMT.workQueue.splice(index, 1);
1701
- emnapiCtx.feature.setImmediate(function () {
1702
- emnapiCtx.decreaseWaitingRequestCounter();
1703
- emnapiAWMT.checkIdleWorker();
1704
- emnapiAWMT.callComplete(work, 11);
1705
- });
1706
- return 0;
2013
+ if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
2014
+ return 9;
1707
2015
  }
1708
- return 9;
2016
+ emnapiCtx.feature.setImmediate(function () {
2017
+ emnapiAWMT.callComplete(work, 11);
2018
+ });
2019
+ return 0;
1709
2020
  },
1710
2021
  callComplete: function (work, status) {
2022
+ emnapiCtx.decreaseWaitingRequestCounter();
1711
2023
  var complete = emnapiAWMT.getComplete(work);
1712
2024
  var env = emnapiAWMT.getEnv(work);
1713
2025
  var data = emnapiAWMT.getData(work);
@@ -1725,7 +2037,7 @@ function createNapiModule(options) {
1725
2037
  var resource = emnapiAWMT.getResource(work);
1726
2038
  var resource_value = emnapiCtx.refStore.get(resource).get();
1727
2039
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1728
- var view = new DataView(wasmMemory.buffer);
2040
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
1729
2041
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
1730
2042
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
1731
2043
  emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
@@ -1742,6 +2054,7 @@ function createNapiModule(options) {
1742
2054
  }
1743
2055
  }
1744
2056
  };
2057
+ emnapiAWMT.init();
1745
2058
  var napi_create_async_work = singleThreadAsyncWork
1746
2059
  ? function (env, resource, resource_name, execute, complete, data, result) {
1747
2060
  if (!env)
@@ -1763,8 +2076,9 @@ function createNapiModule(options) {
1763
2076
  return envObject.setLastError(1);
1764
2077
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
1765
2078
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
2079
+ result >>>= 0;
1766
2080
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1767
- HEAP_DATA_VIEW.setInt32(result, id, true);
2081
+ HEAP_DATA_VIEW.setUint32(result, id, true);
1768
2082
  return envObject.clearLastError();
1769
2083
  }
1770
2084
  : function (env, resource, resource_name, execute, complete, data, result) {
@@ -1789,18 +2103,21 @@ function createNapiModule(options) {
1789
2103
  var aw = _malloc(sizeofAW);
1790
2104
  if (!aw)
1791
2105
  return envObject.setLastError(9);
1792
- new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
2106
+ aw >>>= 0;
2107
+ new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
1793
2108
  var s = envObject.ensureHandleId(resourceObject);
1794
2109
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
1795
2110
  var resource_ = resourceRef.id;
1796
2111
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1797
- HEAP_DATA_VIEW.setInt32(aw, resource_, true);
2112
+ HEAP_DATA_VIEW.setUint32(aw, resource_, true);
1798
2113
  _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
1799
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.env, env, true);
1800
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.execute, execute, true);
1801
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.complete, complete, true);
1802
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.data, data, true);
1803
- HEAP_DATA_VIEW.setInt32(result, aw, true);
2114
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
2115
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
2116
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
2117
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
2118
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
2119
+ result >>>= 0;
2120
+ HEAP_DATA_VIEW.setUint32(result, aw, true);
1804
2121
  return envObject.clearLastError();
1805
2122
  };
1806
2123
  var napi_delete_async_work = singleThreadAsyncWork
@@ -1811,6 +2128,7 @@ function createNapiModule(options) {
1811
2128
  envObject.checkGCAccess();
1812
2129
  if (!work)
1813
2130
  return envObject.setLastError(1);
2131
+ work >>>= 0;
1814
2132
  emnapiAWST.remove(work);
1815
2133
  return envObject.clearLastError();
1816
2134
  }
@@ -1821,10 +2139,11 @@ function createNapiModule(options) {
1821
2139
  envObject.checkGCAccess();
1822
2140
  if (!work)
1823
2141
  return envObject.setLastError(1);
2142
+ work >>>= 0;
1824
2143
  var resource = emnapiAWMT.getResource(work);
1825
2144
  emnapiCtx.refStore.get(resource).dispose();
1826
2145
  if (emnapiNodeBinding) {
1827
- var view = new DataView(wasmMemory.buffer);
2146
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
1828
2147
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
1829
2148
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
1830
2149
  _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
@@ -1839,6 +2158,7 @@ function createNapiModule(options) {
1839
2158
  var envObject = emnapiCtx.envStore.get(env);
1840
2159
  if (!work)
1841
2160
  return envObject.setLastError(1);
2161
+ work >>>= 0;
1842
2162
  emnapiAWST.queue(work);
1843
2163
  return envObject.clearLastError();
1844
2164
  }
@@ -1848,6 +2168,7 @@ function createNapiModule(options) {
1848
2168
  var envObject = emnapiCtx.envStore.get(env);
1849
2169
  if (!work)
1850
2170
  return envObject.setLastError(1);
2171
+ work >>>= 0;
1851
2172
  emnapiAWMT.scheduleWork(work);
1852
2173
  return envObject.clearLastError();
1853
2174
  };
@@ -1858,6 +2179,7 @@ function createNapiModule(options) {
1858
2179
  var envObject = emnapiCtx.envStore.get(env);
1859
2180
  if (!work)
1860
2181
  return envObject.setLastError(1);
2182
+ work >>>= 0;
1861
2183
  var status = emnapiAWST.cancel(work);
1862
2184
  if (status === 0)
1863
2185
  return envObject.clearLastError();
@@ -1869,41 +2191,125 @@ function createNapiModule(options) {
1869
2191
  var envObject = emnapiCtx.envStore.get(env);
1870
2192
  if (!work)
1871
2193
  return envObject.setLastError(1);
2194
+ work >>>= 0;
1872
2195
  var status = emnapiAWMT.cancelWork(work);
1873
2196
  if (status === 0)
1874
2197
  return envObject.clearLastError();
1875
2198
  return envObject.setLastError(status);
1876
2199
  };
1877
- function initWorker(startArg) {
2200
+ function _emnapi_async_worker(globalAddress) {
2201
+ globalAddress >>>= 0;
2202
+ emnapiAWMT.globalAddress = globalAddress;
2203
+ var mutex = emnapiAWMT.getMutex();
2204
+ var cond = emnapiAWMT.getCond();
2205
+ mutex.lock();
2206
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
2207
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
2208
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
2209
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2210
+ for (;;) {
2211
+ emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
2212
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
2213
+ Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2214
+ cond.wait();
2215
+ Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2216
+ }
2217
+ var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
2218
+ if (q === exitMessageAddr) {
2219
+ cond.signal();
2220
+ mutex.unlock();
2221
+ break;
2222
+ }
2223
+ var work = q - emnapiAWMT.offset.queue;
2224
+ emnapiAWMT.queueRemove(q);
2225
+ emnapiAWMT.queueInit(q);
2226
+ mutex.unlock();
2227
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
2228
+ if (Atomics.load(statusBuffer, 0) === 1) {
2229
+ abort('unreachable');
2230
+ }
2231
+ var execute = emnapiAWMT.getExecute(work);
2232
+ var env = emnapiAWMT.getEnv(work);
2233
+ var data = emnapiAWMT.getData(work);
2234
+ (wasmTable.get(execute))(env, data);
2235
+ Atomics.store(statusBuffer, 0, 2);
2236
+ var postMessage_1 = napiModule.postMessage;
2237
+ postMessage_1({
2238
+ __emnapi__: {
2239
+ type: 'async-work-complete',
2240
+ payload: { work: work }
2241
+ }
2242
+ });
2243
+ mutex.lock();
2244
+ }
2245
+ return 0;
2246
+ }
2247
+ function _emnapi_spawn_worker(f, globalAddress) {
2248
+ if (typeof onCreateWorker !== 'function') {
2249
+ throw new TypeError('`options.onCreateWorker` is not a function');
2250
+ }
2251
+ var promises = [];
2252
+ var args = [];
2253
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2254
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2255
+ }
2256
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
2257
+ var handleError = function (e) {
2258
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
2259
+ emnapiAWMT.terminateWorkers();
2260
+ }
2261
+ };
2262
+ var ret;
2263
+ try {
2264
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2265
+ var p = PThread.loadWasmModuleToWorker(worker_1);
2266
+ if (ENVIRONMENT_IS_NODE) {
2267
+ worker_1.on('error', handleError);
2268
+ }
2269
+ else {
2270
+ worker_1.addEventListener('error', handleError, false);
2271
+ }
2272
+ emnapiAWMT.addListener(worker_1);
2273
+ emnapiTSFN.addListener(worker_1);
2274
+ promises.push(p.then(function () {
2275
+ if (typeof worker_1.unref === 'function') {
2276
+ worker_1.unref();
2277
+ }
2278
+ }));
2279
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
2280
+ var arg = args[0];
2281
+ worker_1.threadBlockBase = arg;
2282
+ worker_1.postMessage({
2283
+ __emnapi__: {
2284
+ type: 'async-worker-init',
2285
+ payload: { arg: arg, func: [f, globalAddress] }
2286
+ }
2287
+ });
2288
+ }
2289
+ catch (err) {
2290
+ var arg = args[0];
2291
+ _free(arg);
2292
+ throw err;
2293
+ }
2294
+ return ret;
2295
+ }
2296
+ function initWorker(startArg, func) {
1878
2297
  if (napiModule.childThread) {
1879
2298
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
1880
2299
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
1881
2300
  }
1882
2301
  wasmInstance.exports.emnapi_async_worker_init(startArg);
2302
+ (wasmTable.get(func[0]))(func[1]);
1883
2303
  }
1884
2304
  else {
1885
2305
  throw new Error('startThread is only available in child threads');
1886
2306
  }
1887
2307
  }
1888
- function executeAsyncWork(work) {
1889
- if (!ENVIRONMENT_IS_PTHREAD)
1890
- return;
1891
- var execute = emnapiAWMT.getExecute(work);
1892
- var env = emnapiAWMT.getEnv(work);
1893
- var data = emnapiAWMT.getData(work);
1894
- (wasmTable.get(execute))(env, data);
1895
- var postMessage = napiModule.postMessage;
1896
- postMessage({
1897
- __emnapi__: {
1898
- type: 'async-work-complete',
1899
- payload: { work: work }
1900
- }
1901
- });
1902
- }
1903
2308
  napiModule.initWorker = initWorker;
1904
- napiModule.executeAsyncWork = executeAsyncWork;
1905
2309
  var asyncWorkMod = Object.freeze({
1906
2310
  __proto__: null,
2311
+ _emnapi_async_worker: _emnapi_async_worker,
2312
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
1907
2313
  napi_cancel_async_work: napi_cancel_async_work,
1908
2314
  napi_create_async_work: napi_create_async_work,
1909
2315
  napi_delete_async_work: napi_delete_async_work,
@@ -1918,6 +2324,10 @@ function createNapiModule(options) {
1918
2324
  emnapiExternalMemory.table = new WeakMap();
1919
2325
  emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
1920
2326
  },
2327
+ isSharedArrayBuffer: function (value) {
2328
+ return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
2329
+ (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
2330
+ },
1921
2331
  isDetachedArrayBuffer: function (arrayBuffer) {
1922
2332
  if (arrayBuffer.byteLength === 0) {
1923
2333
  try {
@@ -1960,6 +2370,7 @@ function createNapiModule(options) {
1960
2370
  var pointer = _malloc(arrayBuffer.byteLength);
1961
2371
  if (!pointer)
1962
2372
  throw new Error('Out of memory');
2373
+ pointer >>>= 0;
1963
2374
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
1964
2375
  info.address = pointer;
1965
2376
  info.ownership = emnapiExternalMemory.registry ? 0 : 1;
@@ -1981,8 +2392,7 @@ function createNapiModule(options) {
1981
2392
  }
1982
2393
  return view;
1983
2394
  }
1984
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
1985
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
2395
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
1986
2396
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
1987
2397
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
1988
2398
  var Ctor = info.Ctor;
@@ -2006,10 +2416,59 @@ function createNapiModule(options) {
2006
2416
  var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated;
2007
2417
  return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view };
2008
2418
  }
2009
- return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view };
2419
+ return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view };
2420
+ }
2421
+ var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated;
2422
+ return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
2423
+ }
2424
+ };
2425
+ var emnapiExternalSAB = {
2426
+ registry: undefined,
2427
+ handleTable: new WeakMap(),
2428
+ init: function () {
2429
+ emnapiExternalSAB.handleTable = new WeakMap();
2430
+ emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
2431
+ ? new FinalizationRegistry(function (metaPtr) {
2432
+ emnapiExternalSAB.release(metaPtr);
2433
+ })
2434
+ : undefined;
2435
+ },
2436
+ allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
2437
+ var size = 4 * 6;
2438
+ var metaPtr = _malloc(size);
2439
+ if (!metaPtr)
2440
+ throw new Error('Out of memory');
2441
+ metaPtr >>>= 0;
2442
+ Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2443
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2444
+ HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
2445
+ HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
2446
+ HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
2447
+ HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
2448
+ HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
2449
+ return metaPtr;
2450
+ },
2451
+ readMeta: function (metaPtr) {
2452
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2453
+ var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
2454
+ var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
2455
+ var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
2456
+ var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
2457
+ var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
2458
+ return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
2459
+ },
2460
+ release: function (metaPtr) {
2461
+ var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2462
+ if (oldRefcount === 1) {
2463
+ var info = emnapiExternalSAB.readMeta(metaPtr);
2464
+ var finalize_cb = info.finalize_cb;
2465
+ if (finalize_cb) {
2466
+ var finalize_data = info.finalize_data;
2467
+ var finalize_hint = info.finalize_hint;
2468
+ (wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
2469
+ }
2470
+ _free(metaPtr);
2010
2471
  }
2011
- var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated;
2012
- return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
2013
2472
  }
2014
2473
  };
2015
2474
  var emnapiString = {
@@ -2115,7 +2574,7 @@ function createNapiModule(options) {
2115
2574
  ptr >>>= 0;
2116
2575
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
2117
2576
  var end = ptr;
2118
- if (length === -1) {
2577
+ if (length === -1 || length === 4294967295) {
2119
2578
  for (; HEAPU8[end];)
2120
2579
  ++end;
2121
2580
  }
@@ -2206,12 +2665,12 @@ function createNapiModule(options) {
2206
2665
  return '';
2207
2666
  ptr >>>= 0;
2208
2667
  var end = ptr;
2209
- if (length === -1) {
2210
- var idx = end >> 1;
2668
+ if (length === -1 || length === 4294967295) {
2669
+ var idx = end >>> 1;
2211
2670
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
2212
2671
  while (HEAPU16[idx])
2213
2672
  ++idx;
2214
- end = idx << 1;
2673
+ end = (idx << 1) >>> 0;
2215
2674
  }
2216
2675
  else {
2217
2676
  end = ptr + (length >>> 0) * 2;
@@ -2242,11 +2701,12 @@ function createNapiModule(options) {
2242
2701
  return outPtr - startPtr;
2243
2702
  },
2244
2703
  newString: function (env, str, length, result, stringMaker) {
2704
+ length >>>= 0;
2245
2705
  if (!env)
2246
2706
  return 1;
2247
2707
  var envObject = emnapiCtx.envStore.get(env);
2248
2708
  envObject.checkGCAccess();
2249
- var autoLength = length === -1;
2709
+ var autoLength = length === -1 || length === 4294967295;
2250
2710
  var sizelength = length >>> 0;
2251
2711
  if (length !== 0) {
2252
2712
  if (!str)
@@ -2256,18 +2716,21 @@ function createNapiModule(options) {
2256
2716
  return envObject.setLastError(1);
2257
2717
  if (!(autoLength || (sizelength <= 2147483647)))
2258
2718
  return envObject.setLastError(1);
2719
+ str >>>= 0;
2259
2720
  var strValue = stringMaker(str, autoLength, sizelength);
2721
+ result >>>= 0;
2260
2722
  var value = emnapiCtx.addToCurrentScope(strValue).id;
2261
2723
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2262
- HEAP_DATA_VIEW.setInt32(result, value, true);
2724
+ HEAP_DATA_VIEW.setUint32(result, value, true);
2263
2725
  return envObject.clearLastError();
2264
2726
  },
2265
2727
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
2728
+ length >>>= 0;
2266
2729
  if (!env)
2267
2730
  return 1;
2268
2731
  var envObject = emnapiCtx.envStore.get(env);
2269
2732
  envObject.checkGCAccess();
2270
- var autoLength = length === -1;
2733
+ var autoLength = length === -1 || length === 4294967295;
2271
2734
  var sizelength = length >>> 0;
2272
2735
  if (length !== 0) {
2273
2736
  if (!str)
@@ -2309,6 +2772,7 @@ function createNapiModule(options) {
2309
2772
  if (!handle.isArray()) {
2310
2773
  return envObject.setLastError(8);
2311
2774
  }
2775
+ result >>>= 0;
2312
2776
  var v = handle.value.length >>> 0;
2313
2777
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2314
2778
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2327,19 +2791,55 @@ function createNapiModule(options) {
2327
2791
  if (!arraybuffer)
2328
2792
  return envObject.setLastError(1);
2329
2793
  var handle = emnapiCtx.handleStore.get(arraybuffer);
2330
- if (!handle.isArrayBuffer()) {
2794
+ if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
2331
2795
  return envObject.setLastError(1);
2332
2796
  }
2333
2797
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2334
2798
  if (data) {
2799
+ data >>>= 0;
2335
2800
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
2336
- HEAP_DATA_VIEW.setInt32(data, p, true);
2801
+ HEAP_DATA_VIEW.setUint32(data, p, true);
2337
2802
  }
2338
2803
  if (byte_length) {
2804
+ byte_length >>>= 0;
2339
2805
  HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
2340
2806
  }
2341
2807
  return envObject.clearLastError();
2342
2808
  }
2809
+ function node_api_set_prototype(env, object, value) {
2810
+ if (!env)
2811
+ return 1;
2812
+ var envObject = emnapiCtx.envStore.get(env);
2813
+ envObject.checkGCAccess();
2814
+ if (!envObject.tryCatch.isEmpty())
2815
+ return envObject.setLastError(10);
2816
+ if (!envObject.canCallIntoJs())
2817
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
2818
+ envObject.clearLastError();
2819
+ try {
2820
+ if (!value)
2821
+ return envObject.setLastError(1);
2822
+ var obj = emnapiCtx.handleStore.get(object).value;
2823
+ if (obj == null) {
2824
+ throw new TypeError('Cannot convert undefined or null to object');
2825
+ }
2826
+ var type = typeof obj;
2827
+ var v = void 0;
2828
+ try {
2829
+ v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
2830
+ }
2831
+ catch (_) {
2832
+ return envObject.setLastError(2);
2833
+ }
2834
+ var val = emnapiCtx.handleStore.get(value).value;
2835
+ Object.setPrototypeOf(v, val);
2836
+ return envObject.getReturnStatus();
2837
+ }
2838
+ catch (err) {
2839
+ envObject.tryCatch.setError(err);
2840
+ return envObject.setLastError(10);
2841
+ }
2842
+ }
2343
2843
  function napi_get_prototype(env, value, result) {
2344
2844
  if (!env)
2345
2845
  return 1;
@@ -2366,9 +2866,10 @@ function createNapiModule(options) {
2366
2866
  catch (_) {
2367
2867
  return envObject.setLastError(2);
2368
2868
  }
2869
+ result >>>= 0;
2369
2870
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
2370
2871
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2371
- HEAP_DATA_VIEW.setInt32(result, p, true);
2872
+ HEAP_DATA_VIEW.setUint32(result, p, true);
2372
2873
  return envObject.getReturnStatus();
2373
2874
  }
2374
2875
  catch (err) {
@@ -2390,6 +2891,7 @@ function createNapiModule(options) {
2390
2891
  var v = handle.value;
2391
2892
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2392
2893
  if (type) {
2894
+ type >>>= 0;
2393
2895
  var t = void 0;
2394
2896
  if (v instanceof Int8Array) {
2395
2897
  t = 0;
@@ -2412,6 +2914,9 @@ function createNapiModule(options) {
2412
2914
  else if (v instanceof Uint32Array) {
2413
2915
  t = 6;
2414
2916
  }
2917
+ else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
2918
+ t = 11;
2919
+ }
2415
2920
  else if (v instanceof Float32Array) {
2416
2921
  t = 7;
2417
2922
  }
@@ -2429,22 +2934,25 @@ function createNapiModule(options) {
2429
2934
  }
2430
2935
  HEAP_DATA_VIEW.setInt32(type, t, true);
2431
2936
  }
2937
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
2432
2938
  if (length) {
2939
+ length >>>= 0;
2433
2940
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
2434
2941
  }
2435
- var buffer;
2436
2942
  if (data || arraybuffer) {
2437
- buffer = v.buffer;
2438
2943
  if (data) {
2944
+ data >>>= 0;
2439
2945
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2440
- HEAP_DATA_VIEW.setInt32(data, p, true);
2946
+ HEAP_DATA_VIEW.setUint32(data, p, true);
2441
2947
  }
2442
2948
  if (arraybuffer) {
2443
- var ab = envObject.ensureHandleId(buffer);
2444
- HEAP_DATA_VIEW.setInt32(arraybuffer, ab, true);
2949
+ arraybuffer >>>= 0;
2950
+ var ab = envObject.ensureHandleId(v.buffer);
2951
+ HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2445
2952
  }
2446
2953
  }
2447
2954
  if (byte_offset) {
2955
+ byte_offset >>>= 0;
2448
2956
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2449
2957
  }
2450
2958
  return envObject.clearLastError();
@@ -2475,24 +2983,26 @@ function createNapiModule(options) {
2475
2983
  if (!handle.isDataView()) {
2476
2984
  return envObject.setLastError(1);
2477
2985
  }
2478
- var v = handle.value;
2986
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
2479
2987
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2480
2988
  if (byte_length) {
2989
+ byte_length >>>= 0;
2481
2990
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
2482
2991
  }
2483
- var buffer;
2484
2992
  if (data || arraybuffer) {
2485
- buffer = v.buffer;
2486
2993
  if (data) {
2994
+ data >>>= 0;
2487
2995
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2488
- HEAP_DATA_VIEW.setInt32(data, p, true);
2996
+ HEAP_DATA_VIEW.setUint32(data, p, true);
2489
2997
  }
2490
2998
  if (arraybuffer) {
2491
- var ab = envObject.ensureHandleId(buffer);
2492
- HEAP_DATA_VIEW.setInt32(arraybuffer, ab, true);
2999
+ arraybuffer >>>= 0;
3000
+ var ab = envObject.ensureHandleId(v.buffer);
3001
+ HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2493
3002
  }
2494
3003
  }
2495
3004
  if (byte_offset) {
3005
+ byte_offset >>>= 0;
2496
3006
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2497
3007
  }
2498
3008
  return envObject.clearLastError();
@@ -2517,6 +3027,7 @@ function createNapiModule(options) {
2517
3027
  if (!handle.isDate()) {
2518
3028
  return envObject.setLastError(1);
2519
3029
  }
3030
+ result >>>= 0;
2520
3031
  v = handle.value.valueOf();
2521
3032
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2522
3033
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -2540,6 +3051,7 @@ function createNapiModule(options) {
2540
3051
  if (typeof handle.value !== 'boolean') {
2541
3052
  return envObject.setLastError(7);
2542
3053
  }
3054
+ result >>>= 0;
2543
3055
  var r = handle.value ? 1 : 0;
2544
3056
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2545
3057
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -2558,6 +3070,7 @@ function createNapiModule(options) {
2558
3070
  if (typeof handle.value !== 'number') {
2559
3071
  return envObject.setLastError(6);
2560
3072
  }
3073
+ result >>>= 0;
2561
3074
  var r = handle.value;
2562
3075
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2563
3076
  HEAP_DATA_VIEW.setFloat64(result, r, true);
@@ -2582,6 +3095,8 @@ function createNapiModule(options) {
2582
3095
  if (typeof numberValue !== 'bigint') {
2583
3096
  return envObject.setLastError(6);
2584
3097
  }
3098
+ lossless >>>= 0;
3099
+ result >>>= 0;
2585
3100
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2586
3101
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
2587
3102
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2618,6 +3133,8 @@ function createNapiModule(options) {
2618
3133
  if (typeof numberValue !== 'bigint') {
2619
3134
  return envObject.setLastError(6);
2620
3135
  }
3136
+ lossless >>>= 0;
3137
+ result >>>= 0;
2621
3138
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2622
3139
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
2623
3140
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2649,8 +3166,12 @@ function createNapiModule(options) {
2649
3166
  return envObject.setLastError(17);
2650
3167
  }
2651
3168
  var isMinus = handle.value < BigInt(0);
3169
+ sign_bit >>>= 0;
3170
+ words >>>= 0;
3171
+ word_count >>>= 0;
2652
3172
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2653
3173
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
3174
+ word_count_int >>>= 0;
2654
3175
  var wordCount = 0;
2655
3176
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
2656
3177
  while (bigintValue !== BigInt(0)) {
@@ -2698,9 +3219,10 @@ function createNapiModule(options) {
2698
3219
  if (!handle.isExternal()) {
2699
3220
  return envObject.setLastError(1);
2700
3221
  }
3222
+ result >>>= 0;
2701
3223
  var p = handle.data();
2702
3224
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2703
- HEAP_DATA_VIEW.setInt32(result, p, true);
3225
+ HEAP_DATA_VIEW.setUint32(result, p, true);
2704
3226
  return envObject.clearLastError();
2705
3227
  }
2706
3228
  function napi_get_value_int32(env, value, result) {
@@ -2716,6 +3238,7 @@ function createNapiModule(options) {
2716
3238
  if (typeof handle.value !== 'number') {
2717
3239
  return envObject.setLastError(6);
2718
3240
  }
3241
+ result >>>= 0;
2719
3242
  var v = new Int32Array([handle.value])[0];
2720
3243
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2721
3244
  HEAP_DATA_VIEW.setInt32(result, v, true);
@@ -2735,6 +3258,7 @@ function createNapiModule(options) {
2735
3258
  return envObject.setLastError(6);
2736
3259
  }
2737
3260
  var numberValue = handle.value;
3261
+ result >>>= 0;
2738
3262
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2739
3263
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
2740
3264
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -2760,6 +3284,9 @@ function createNapiModule(options) {
2760
3284
  envObject.checkGCAccess();
2761
3285
  if (!value)
2762
3286
  return envObject.setLastError(1);
3287
+ result >>>= 0;
3288
+ buf >>>= 0;
3289
+ buf_size >>>= 0;
2763
3290
  buf_size = buf_size >>> 0;
2764
3291
  var handle = emnapiCtx.handleStore.get(value);
2765
3292
  if (typeof handle.value !== 'string') {
@@ -2796,6 +3323,9 @@ function createNapiModule(options) {
2796
3323
  envObject.checkGCAccess();
2797
3324
  if (!value)
2798
3325
  return envObject.setLastError(1);
3326
+ result >>>= 0;
3327
+ buf >>>= 0;
3328
+ buf_size >>>= 0;
2799
3329
  buf_size = buf_size >>> 0;
2800
3330
  var handle = emnapiCtx.handleStore.get(value);
2801
3331
  if (typeof handle.value !== 'string') {
@@ -2826,6 +3356,9 @@ function createNapiModule(options) {
2826
3356
  envObject.checkGCAccess();
2827
3357
  if (!value)
2828
3358
  return envObject.setLastError(1);
3359
+ result >>>= 0;
3360
+ buf >>>= 0;
3361
+ buf_size >>>= 0;
2829
3362
  buf_size = buf_size >>> 0;
2830
3363
  var handle = emnapiCtx.handleStore.get(value);
2831
3364
  if (typeof handle.value !== 'string') {
@@ -2861,6 +3394,7 @@ function createNapiModule(options) {
2861
3394
  if (typeof handle.value !== 'number') {
2862
3395
  return envObject.setLastError(6);
2863
3396
  }
3397
+ result >>>= 0;
2864
3398
  var v = new Uint32Array([handle.value])[0];
2865
3399
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2866
3400
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2886,7 +3420,8 @@ function createNapiModule(options) {
2886
3420
  napi_get_value_string_latin1: napi_get_value_string_latin1,
2887
3421
  napi_get_value_string_utf16: napi_get_value_string_utf16,
2888
3422
  napi_get_value_string_utf8: napi_get_value_string_utf8,
2889
- napi_get_value_uint32: napi_get_value_uint32
3423
+ napi_get_value_uint32: napi_get_value_uint32,
3424
+ node_api_set_prototype: node_api_set_prototype
2890
3425
  });
2891
3426
  function napi_create_int32(env, value, result) {
2892
3427
  if (!env)
@@ -2895,9 +3430,10 @@ function createNapiModule(options) {
2895
3430
  envObject.checkGCAccess();
2896
3431
  if (!result)
2897
3432
  return envObject.setLastError(1);
3433
+ result >>>= 0;
2898
3434
  var v = emnapiCtx.addToCurrentScope(value).id;
2899
3435
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2900
- HEAP_DATA_VIEW.setInt32(result, v, true);
3436
+ HEAP_DATA_VIEW.setUint32(result, v, true);
2901
3437
  return envObject.clearLastError();
2902
3438
  }
2903
3439
  function napi_create_uint32(env, value, result) {
@@ -2907,9 +3443,10 @@ function createNapiModule(options) {
2907
3443
  envObject.checkGCAccess();
2908
3444
  if (!result)
2909
3445
  return envObject.setLastError(1);
3446
+ result >>>= 0;
2910
3447
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
2911
3448
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2912
- HEAP_DATA_VIEW.setInt32(result, v, true);
3449
+ HEAP_DATA_VIEW.setUint32(result, v, true);
2913
3450
  return envObject.clearLastError();
2914
3451
  }
2915
3452
  function napi_create_int64(env, low, high, result) {
@@ -2922,8 +3459,9 @@ function createNapiModule(options) {
2922
3459
  return envObject.setLastError(1);
2923
3460
  value = Number(low);
2924
3461
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3462
+ high >>>= 0;
2925
3463
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2926
- HEAP_DATA_VIEW.setInt32(high, v1, true);
3464
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
2927
3465
  return envObject.clearLastError();
2928
3466
  }
2929
3467
  function napi_create_double(env, value, result) {
@@ -2933,9 +3471,10 @@ function createNapiModule(options) {
2933
3471
  envObject.checkGCAccess();
2934
3472
  if (!result)
2935
3473
  return envObject.setLastError(1);
3474
+ result >>>= 0;
2936
3475
  var v = emnapiCtx.addToCurrentScope(value).id;
2937
3476
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2938
- HEAP_DATA_VIEW.setInt32(result, v, true);
3477
+ HEAP_DATA_VIEW.setUint32(result, v, true);
2939
3478
  return envObject.clearLastError();
2940
3479
  }
2941
3480
  function napi_create_string_latin1(env, str, length, result) {
@@ -3003,8 +3542,9 @@ function createNapiModule(options) {
3003
3542
  return envObject.setLastError(1);
3004
3543
  value = low;
3005
3544
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3545
+ high >>>= 0;
3006
3546
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3007
- HEAP_DATA_VIEW.setInt32(high, v1, true);
3547
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
3008
3548
  return envObject.clearLastError();
3009
3549
  }
3010
3550
  function napi_create_bigint_uint64(env, low, high, result) {
@@ -3020,8 +3560,9 @@ function createNapiModule(options) {
3020
3560
  return envObject.setLastError(1);
3021
3561
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
3022
3562
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3563
+ high >>>= 0;
3023
3564
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3024
- HEAP_DATA_VIEW.setInt32(high, v1, true);
3565
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
3025
3566
  return envObject.clearLastError();
3026
3567
  }
3027
3568
  function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
@@ -3041,6 +3582,8 @@ function createNapiModule(options) {
3041
3582
  }
3042
3583
  if (!result)
3043
3584
  return envObject.setLastError(1);
3585
+ words >>>= 0;
3586
+ word_count >>>= 0;
3044
3587
  word_count = word_count >>> 0;
3045
3588
  if (word_count > 2147483647) {
3046
3589
  return envObject.setLastError(1);
@@ -3057,8 +3600,9 @@ function createNapiModule(options) {
3057
3600
  value += wordi << BigInt(64 * i);
3058
3601
  }
3059
3602
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
3603
+ result >>>= 0;
3060
3604
  v = emnapiCtx.addToCurrentScope(value).id;
3061
- HEAP_DATA_VIEW.setInt32(result, v, true);
3605
+ HEAP_DATA_VIEW.setUint32(result, v, true);
3062
3606
  return envObject.getReturnStatus();
3063
3607
  }
3064
3608
  catch (err) {
@@ -3085,6 +3629,7 @@ function createNapiModule(options) {
3085
3629
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
3086
3630
  });
3087
3631
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
3632
+ utf8name >>>= 0;
3088
3633
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
3089
3634
  var f;
3090
3635
  var napiCallback = (wasmTable.get(cb));
@@ -3225,9 +3770,10 @@ function createNapiModule(options) {
3225
3770
  if (!finalize_cb)
3226
3771
  return envObject.setLastError(1);
3227
3772
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
3773
+ result >>>= 0;
3228
3774
  referenceId = reference.id;
3229
3775
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3230
- HEAP_DATA_VIEW.setInt32(result, referenceId, true);
3776
+ HEAP_DATA_VIEW.setUint32(result, referenceId, true);
3231
3777
  }
3232
3778
  else {
3233
3779
  if (finalize_cb) {
@@ -3273,9 +3819,10 @@ function createNapiModule(options) {
3273
3819
  if (!ref)
3274
3820
  return envObject.setLastError(1);
3275
3821
  if (result) {
3822
+ result >>>= 0;
3276
3823
  data = ref.data();
3277
3824
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3278
- HEAP_DATA_VIEW.setInt32(result, data, true);
3825
+ HEAP_DATA_VIEW.setUint32(result, data, true);
3279
3826
  }
3280
3827
  if (action === 1) {
3281
3828
  binding.wrapped = 0;
@@ -3309,12 +3856,15 @@ function createNapiModule(options) {
3309
3856
  return envObject.setLastError(1);
3310
3857
  if (!constructor)
3311
3858
  return envObject.setLastError(1);
3859
+ length >>>= 0;
3860
+ properties >>>= 0;
3861
+ property_count >>>= 0;
3312
3862
  property_count = property_count >>> 0;
3313
3863
  if (property_count > 0) {
3314
3864
  if (!properties)
3315
3865
  return envObject.setLastError(1);
3316
3866
  }
3317
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
3867
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
3318
3868
  return envObject.setLastError(1);
3319
3869
  }
3320
3870
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -3325,14 +3875,15 @@ function createNapiModule(options) {
3325
3875
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3326
3876
  for (var i = 0; i < property_count; i++) {
3327
3877
  propPtr = properties + (i * (4 * 8));
3328
- var utf8Name = HEAP_DATA_VIEW.getInt32(propPtr, true);
3329
- var name_1 = HEAP_DATA_VIEW.getInt32(propPtr + 4, true);
3330
- var method = HEAP_DATA_VIEW.getInt32(propPtr + 8, true);
3331
- var getter = HEAP_DATA_VIEW.getInt32(propPtr + 12, true);
3332
- var setter = HEAP_DATA_VIEW.getInt32(propPtr + 16, true);
3333
- var value = HEAP_DATA_VIEW.getInt32(propPtr + 20, true);
3878
+ var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
3879
+ var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
3880
+ var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
3881
+ var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
3882
+ var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
3883
+ var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
3334
3884
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
3335
- var data = HEAP_DATA_VIEW.getInt32(propPtr + 28, true);
3885
+ attributes >>>= 0;
3886
+ var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
3336
3887
  if (utf8Name) {
3337
3888
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
3338
3889
  }
@@ -3353,7 +3904,8 @@ function createNapiModule(options) {
3353
3904
  }
3354
3905
  var valueHandle = emnapiCtx.addToCurrentScope(F);
3355
3906
  valueHandleId = valueHandle.id;
3356
- HEAP_DATA_VIEW.setInt32(result, valueHandleId, true);
3907
+ result >>>= 0;
3908
+ HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
3357
3909
  return envObject.getReturnStatus();
3358
3910
  }
3359
3911
  catch (err) {
@@ -3388,6 +3940,7 @@ function createNapiModule(options) {
3388
3940
  if (!(value.isObject() || value.isFunction())) {
3389
3941
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
3390
3942
  }
3943
+ type_tag >>>= 0;
3391
3944
  if (!type_tag) {
3392
3945
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
3393
3946
  }
@@ -3432,6 +3985,7 @@ function createNapiModule(options) {
3432
3985
  }
3433
3986
  var binding = envObject.getObjectBinding(value.value);
3434
3987
  if (binding.tag !== null) {
3988
+ type_tag >>>= 0;
3435
3989
  var tag = binding.tag;
3436
3990
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
3437
3991
  ret = (tag[0] === typeTag[0] &&
@@ -3442,6 +3996,7 @@ function createNapiModule(options) {
3442
3996
  else {
3443
3997
  ret = false;
3444
3998
  }
3999
+ result >>>= 0;
3445
4000
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3446
4001
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
3447
4002
  return envObject.getReturnStatus();
@@ -3469,11 +4024,15 @@ function createNapiModule(options) {
3469
4024
  }
3470
4025
  var handle = handleResult.handle;
3471
4026
  var ownership = !result ? 0 : 1;
4027
+ finalize_data >>>= 0;
4028
+ finalize_cb >>>= 0;
4029
+ finalize_hint >>>= 0;
3472
4030
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
3473
4031
  if (result) {
4032
+ result >>>= 0;
3474
4033
  var referenceId = reference.id;
3475
4034
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3476
- HEAP_DATA_VIEW.setInt32(result, referenceId, true);
4035
+ HEAP_DATA_VIEW.setUint32(result, referenceId, true);
3477
4036
  }
3478
4037
  return envObject.clearLastError();
3479
4038
  }
@@ -3509,6 +4068,9 @@ function createNapiModule(options) {
3509
4068
  try {
3510
4069
  if (!result)
3511
4070
  return envObject.setLastError(1);
4071
+ byte_length >>>= 0;
4072
+ external_data >>>= 0;
4073
+ result >>>= 0;
3512
4074
  byte_length = byte_length >>> 0;
3513
4075
  if (!external_data) {
3514
4076
  byte_length = 0;
@@ -3560,6 +4122,12 @@ function createNapiModule(options) {
3560
4122
  case -1:
3561
4123
  viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
3562
4124
  break;
4125
+ case 11:
4126
+ if (typeof Float16Array !== 'function') {
4127
+ return envObject.setLastError(1);
4128
+ }
4129
+ viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 };
4130
+ break;
3563
4131
  case -2: {
3564
4132
  if (!emnapiCtx.feature.Buffer) {
3565
4133
  throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
@@ -3588,7 +4156,7 @@ function createNapiModule(options) {
3588
4156
  }
3589
4157
  value = handle.id;
3590
4158
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3591
- HEAP_DATA_VIEW.setInt32(result, value, true);
4159
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3592
4160
  return envObject.getReturnStatus();
3593
4161
  }
3594
4162
  catch (err) {
@@ -3609,11 +4177,11 @@ function createNapiModule(options) {
3609
4177
  offset = offset !== null && offset !== void 0 ? offset : 0;
3610
4178
  offset = offset >>> 0;
3611
4179
  var view;
3612
- if (arrayBufferOrView instanceof ArrayBuffer) {
4180
+ if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
3613
4181
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
3614
4182
  if (!pointer)
3615
4183
  throw new Error('Unknown ArrayBuffer address');
3616
- if (typeof len !== 'number' || len === -1) {
4184
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3617
4185
  len = arrayBufferOrView.byteLength - offset;
3618
4186
  }
3619
4187
  len = len >>> 0;
@@ -3635,7 +4203,7 @@ function createNapiModule(options) {
3635
4203
  var pointer = viewPointerInfo.address;
3636
4204
  if (!pointer)
3637
4205
  throw new Error('Unknown ArrayBuffer address');
3638
- if (typeof len !== 'number' || len === -1) {
4206
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3639
4207
  len = latestView.byteLength - offset;
3640
4208
  }
3641
4209
  len = len >>> 0;
@@ -3667,16 +4235,20 @@ function createNapiModule(options) {
3667
4235
  try {
3668
4236
  if (!arraybuffer_or_view)
3669
4237
  return envObject.setLastError(1);
4238
+ arraybuffer_or_view >>>= 0;
4239
+ offset >>>= 0;
4240
+ len >>>= 0;
3670
4241
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3671
- var handleId = HEAP_DATA_VIEW.getInt32(arraybuffer_or_view, true);
4242
+ var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
3672
4243
  var handle = envObject.ctx.handleStore.get(handleId);
3673
- if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
4244
+ if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
3674
4245
  return envObject.setLastError(1);
3675
4246
  }
3676
4247
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
3677
4248
  if (handle.value !== ret) {
4249
+ arraybuffer_or_view >>>= 0;
3678
4250
  v = envObject.ensureHandleId(ret);
3679
- HEAP_DATA_VIEW.setInt32(arraybuffer_or_view, v, true);
4251
+ HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
3680
4252
  }
3681
4253
  return envObject.getReturnStatus();
3682
4254
  }
@@ -3689,7 +4261,7 @@ function createNapiModule(options) {
3689
4261
  var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
3690
4262
  var isDataView = arrayBufferOrView instanceof DataView;
3691
4263
  var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
3692
- if (!isArrayBuffer && !isTypedArray && !isDataView) {
4264
+ if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
3693
4265
  throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
3694
4266
  }
3695
4267
  var info;
@@ -3728,13 +4300,16 @@ function createNapiModule(options) {
3728
4300
  p = info.address;
3729
4301
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3730
4302
  if (address) {
3731
- HEAP_DATA_VIEW.setInt32(address, p, true);
4303
+ address >>>= 0;
4304
+ HEAP_DATA_VIEW.setUint32(address, p, true);
3732
4305
  }
3733
4306
  if (ownership) {
4307
+ ownership >>>= 0;
3734
4308
  ownershipOut = info.ownership;
3735
4309
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
3736
4310
  }
3737
4311
  if (runtime_allocated) {
4312
+ runtime_allocated >>>= 0;
3738
4313
  runtimeAllocated = info.runtimeAllocated;
3739
4314
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
3740
4315
  }
@@ -3760,22 +4335,102 @@ function createNapiModule(options) {
3760
4335
  }
3761
4336
  var versions = runtimeVersion.split('.')
3762
4337
  .map(function (n) { return Number(n); });
4338
+ version >>>= 0;
3763
4339
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3764
4340
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
3765
4341
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
3766
4342
  HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
3767
4343
  return envObject.clearLastError();
3768
4344
  }
4345
+ function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
4346
+ if (!env)
4347
+ return 1;
4348
+ var envObject = emnapiCtx.envStore.get(env);
4349
+ envObject.checkGCAccess();
4350
+ if (!envObject.tryCatch.isEmpty())
4351
+ return envObject.setLastError(10);
4352
+ if (!envObject.canCallIntoJs())
4353
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4354
+ envObject.clearLastError();
4355
+ try {
4356
+ if (!sharedarraybuffer)
4357
+ return envObject.setLastError(1);
4358
+ if (!handle)
4359
+ return envObject.setLastError(1);
4360
+ handle >>>= 0;
4361
+ var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
4362
+ if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
4363
+ return envObject.setLastError(1);
4364
+ }
4365
+ var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
4366
+ if (metaPtr === undefined) {
4367
+ return envObject.setLastError(1);
4368
+ }
4369
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4370
+ HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
4371
+ return envObject.getReturnStatus();
4372
+ }
4373
+ catch (err) {
4374
+ envObject.tryCatch.setError(err);
4375
+ return envObject.setLastError(10);
4376
+ }
4377
+ }
4378
+ function emnapi_acquire_external_sharedarraybuffer(handle) {
4379
+ handle >>>= 0;
4380
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4381
+ }
4382
+ function emnapi_release_external_sharedarraybuffer(handle) {
4383
+ handle >>>= 0;
4384
+ emnapiExternalSAB.release(handle);
4385
+ }
4386
+ function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
4387
+ if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
4388
+ throw new TypeError('Expected a SharedArrayBuffer');
4389
+ }
4390
+ if (!emnapiExternalSAB.registry) {
4391
+ throw new Error('FinalizationRegistry is not supported in this environment');
4392
+ }
4393
+ handle >>>= 0;
4394
+ var meta = emnapiExternalSAB.readMeta(handle);
4395
+ var external_data = meta.external_data;
4396
+ external_data >>>= 0;
4397
+ if (sab == null) {
4398
+ sab = new SharedArrayBuffer(meta.byte_length);
4399
+ new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
4400
+ }
4401
+ else {
4402
+ if (emnapiExternalSAB.handleTable.has(sab)) {
4403
+ return sab;
4404
+ }
4405
+ }
4406
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4407
+ if (!emnapiExternalMemory.table.has(sab)) {
4408
+ if (external_data) {
4409
+ emnapiExternalMemory.table.set(sab, {
4410
+ address: external_data,
4411
+ ownership: 1,
4412
+ runtimeAllocated: 0
4413
+ });
4414
+ }
4415
+ }
4416
+ emnapiExternalSAB.handleTable.set(sab, handle);
4417
+ emnapiExternalSAB.registry.register(sab, handle);
4418
+ return sab;
4419
+ }
3769
4420
  var emnapiMod = Object.freeze({
3770
4421
  __proto__: null,
4422
+ $emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
3771
4423
  $emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
3772
4424
  $emnapiSyncMemory: $emnapiSyncMemory,
4425
+ emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
3773
4426
  emnapi_create_memory_view: emnapi_create_memory_view,
4427
+ emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
3774
4428
  emnapi_get_memory_address: emnapi_get_memory_address,
3775
4429
  emnapi_get_runtime_version: emnapi_get_runtime_version,
3776
4430
  emnapi_is_node_binding_available: emnapi_is_node_binding_available,
3777
4431
  emnapi_is_support_bigint: emnapi_is_support_bigint,
3778
4432
  emnapi_is_support_weakref: emnapi_is_support_weakref,
4433
+ emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
3779
4434
  emnapi_sync_memory: emnapi_sync_memory
3780
4435
  });
3781
4436
  function napi_create_array(env, result) {
@@ -3785,9 +4440,10 @@ function createNapiModule(options) {
3785
4440
  envObject.checkGCAccess();
3786
4441
  if (!result)
3787
4442
  return envObject.setLastError(1);
4443
+ result >>>= 0;
3788
4444
  var value = emnapiCtx.addToCurrentScope([]).id;
3789
4445
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3790
- HEAP_DATA_VIEW.setInt32(result, value, true);
4446
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3791
4447
  return envObject.clearLastError();
3792
4448
  }
3793
4449
  function napi_create_array_with_length(env, length, result) {
@@ -3797,19 +4453,23 @@ function createNapiModule(options) {
3797
4453
  envObject.checkGCAccess();
3798
4454
  if (!result)
3799
4455
  return envObject.setLastError(1);
4456
+ length >>>= 0;
4457
+ result >>>= 0;
3800
4458
  length = length >>> 0;
3801
4459
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
3802
4460
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3803
- HEAP_DATA_VIEW.setInt32(result, value, true);
4461
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3804
4462
  return envObject.clearLastError();
3805
4463
  }
3806
- function emnapiCreateArrayBuffer(byte_length, data) {
4464
+ function emnapiCreateArrayBuffer(byte_length, data, shared) {
4465
+ byte_length >>>= 0;
3807
4466
  byte_length = byte_length >>> 0;
3808
- var arrayBuffer = new ArrayBuffer(byte_length);
4467
+ var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
3809
4468
  if (data) {
4469
+ data >>>= 0;
3810
4470
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
3811
4471
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3812
- HEAP_DATA_VIEW.setInt32(data, p, true);
4472
+ HEAP_DATA_VIEW.setUint32(data, p, true);
3813
4473
  }
3814
4474
  return arrayBuffer;
3815
4475
  }
@@ -3827,10 +4487,37 @@ function createNapiModule(options) {
3827
4487
  try {
3828
4488
  if (!result)
3829
4489
  return envObject.setLastError(1);
3830
- var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data);
4490
+ result >>>= 0;
4491
+ var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
4492
+ value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
4493
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4494
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4495
+ return envObject.getReturnStatus();
4496
+ }
4497
+ catch (err) {
4498
+ envObject.tryCatch.setError(err);
4499
+ return envObject.setLastError(10);
4500
+ }
4501
+ }
4502
+ function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
4503
+ var value;
4504
+ if (!env)
4505
+ return 1;
4506
+ var envObject = emnapiCtx.envStore.get(env);
4507
+ envObject.checkGCAccess();
4508
+ if (!envObject.tryCatch.isEmpty())
4509
+ return envObject.setLastError(10);
4510
+ if (!envObject.canCallIntoJs())
4511
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4512
+ envObject.clearLastError();
4513
+ try {
4514
+ if (!result)
4515
+ return envObject.setLastError(1);
4516
+ result >>>= 0;
4517
+ var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
3831
4518
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3832
4519
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3833
- HEAP_DATA_VIEW.setInt32(result, value, true);
4520
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3834
4521
  return envObject.getReturnStatus();
3835
4522
  }
3836
4523
  catch (err) {
@@ -3852,9 +4539,10 @@ function createNapiModule(options) {
3852
4539
  try {
3853
4540
  if (!result)
3854
4541
  return envObject.setLastError(1);
4542
+ result >>>= 0;
3855
4543
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
3856
4544
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3857
- HEAP_DATA_VIEW.setInt32(result, value, true);
4545
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3858
4546
  return envObject.getReturnStatus();
3859
4547
  }
3860
4548
  catch (err) {
@@ -3883,9 +4571,10 @@ function createNapiModule(options) {
3883
4571
  if (finalize_cb) {
3884
4572
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
3885
4573
  }
4574
+ result >>>= 0;
3886
4575
  value = externalHandle.id;
3887
4576
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3888
- HEAP_DATA_VIEW.setInt32(result, value, true);
4577
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3889
4578
  return envObject.clearLastError();
3890
4579
  }
3891
4580
  catch (err) {
@@ -3907,6 +4596,9 @@ function createNapiModule(options) {
3907
4596
  try {
3908
4597
  if (!result)
3909
4598
  return envObject.setLastError(1);
4599
+ byte_length >>>= 0;
4600
+ external_data >>>= 0;
4601
+ result >>>= 0;
3910
4602
  byte_length = byte_length >>> 0;
3911
4603
  if (!external_data) {
3912
4604
  byte_length = 0;
@@ -3949,7 +4641,61 @@ function createNapiModule(options) {
3949
4641
  }
3950
4642
  value = handle.id;
3951
4643
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3952
- HEAP_DATA_VIEW.setInt32(result, value, true);
4644
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4645
+ return envObject.getReturnStatus();
4646
+ }
4647
+ catch (err) {
4648
+ envObject.tryCatch.setError(err);
4649
+ return envObject.setLastError(10);
4650
+ }
4651
+ }
4652
+ function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
4653
+ var value;
4654
+ if (!env)
4655
+ return 1;
4656
+ var envObject = emnapiCtx.envStore.get(env);
4657
+ envObject.checkGCAccess();
4658
+ if (!envObject.tryCatch.isEmpty())
4659
+ return envObject.setLastError(10);
4660
+ if (!envObject.canCallIntoJs())
4661
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4662
+ envObject.clearLastError();
4663
+ try {
4664
+ if (!result)
4665
+ return envObject.setLastError(1);
4666
+ byte_length >>>= 0;
4667
+ external_data >>>= 0;
4668
+ result >>>= 0;
4669
+ byte_length = byte_length >>> 0;
4670
+ if (!external_data) {
4671
+ byte_length = 0;
4672
+ }
4673
+ if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
4674
+ throw new RangeError('Memory out of range');
4675
+ }
4676
+ if (!emnapiExternalSAB.registry && finalize_cb) {
4677
+ throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
4678
+ }
4679
+ var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
4680
+ if (byte_length !== 0) {
4681
+ var u8arr = new Uint8Array(sharedArrayBuffer);
4682
+ u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
4683
+ emnapiExternalMemory.table.set(sharedArrayBuffer, {
4684
+ address: external_data,
4685
+ ownership: 1,
4686
+ runtimeAllocated: 0
4687
+ });
4688
+ }
4689
+ value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
4690
+ if (finalize_cb) {
4691
+ finalize_cb >>>= 0;
4692
+ finalize_hint >>>= 0;
4693
+ var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
4694
+ emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
4695
+ emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
4696
+ }
4697
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4698
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3953
4699
  return envObject.getReturnStatus();
3954
4700
  }
3955
4701
  catch (err) {
@@ -3964,9 +4710,55 @@ function createNapiModule(options) {
3964
4710
  envObject.checkGCAccess();
3965
4711
  if (!result)
3966
4712
  return envObject.setLastError(1);
4713
+ result >>>= 0;
3967
4714
  var value = emnapiCtx.addToCurrentScope({}).id;
3968
4715
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3969
- HEAP_DATA_VIEW.setInt32(result, value, true);
4716
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4717
+ return envObject.clearLastError();
4718
+ }
4719
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4720
+ if (!env)
4721
+ return 1;
4722
+ var envObject = emnapiCtx.envStore.get(env);
4723
+ envObject.checkGCAccess();
4724
+ if (!result)
4725
+ return envObject.setLastError(1);
4726
+ property_count >>>= 0;
4727
+ property_count = property_count >>> 0;
4728
+ if (property_count > 0) {
4729
+ if (!property_names)
4730
+ return envObject.setLastError(1);
4731
+ if (!property_values)
4732
+ return envObject.setLastError(1);
4733
+ }
4734
+ var v8_prototype_or_null = prototype_or_null
4735
+ ? emnapiCtx.handleStore.get(prototype_or_null).value
4736
+ : null;
4737
+ var properties = {};
4738
+ property_names >>>= 0;
4739
+ property_values >>>= 0;
4740
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4741
+ for (var i = 0; i < property_count; i++) {
4742
+ var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
4743
+ if (!(typeof name_value === "string" || typeof name_value === "symbol"))
4744
+ return envObject.setLastError(4);
4745
+ properties[name_value] = {
4746
+ value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
4747
+ writable: true,
4748
+ enumerable: true,
4749
+ configurable: true
4750
+ };
4751
+ }
4752
+ var obj;
4753
+ try {
4754
+ obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
4755
+ }
4756
+ catch (_) {
4757
+ return envObject.setLastError(9);
4758
+ }
4759
+ var value = emnapiCtx.addToCurrentScope(obj).id;
4760
+ result >>>= 0;
4761
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3970
4762
  return envObject.clearLastError();
3971
4763
  }
3972
4764
  function napi_create_symbol(env, description, result) {
@@ -3976,10 +4768,11 @@ function createNapiModule(options) {
3976
4768
  envObject.checkGCAccess();
3977
4769
  if (!result)
3978
4770
  return envObject.setLastError(1);
4771
+ result >>>= 0;
3979
4772
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3980
4773
  if (!description) {
3981
4774
  var value = emnapiCtx.addToCurrentScope(Symbol()).id;
3982
- HEAP_DATA_VIEW.setInt32(result, value, true);
4775
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3983
4776
  }
3984
4777
  else {
3985
4778
  var handle = emnapiCtx.handleStore.get(description);
@@ -3988,7 +4781,7 @@ function createNapiModule(options) {
3988
4781
  return envObject.setLastError(3);
3989
4782
  }
3990
4783
  var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
3991
- HEAP_DATA_VIEW.setInt32(result, v, true);
4784
+ HEAP_DATA_VIEW.setUint32(result, v, true);
3992
4785
  }
3993
4786
  return envObject.clearLastError();
3994
4787
  }
@@ -4009,10 +4802,9 @@ function createNapiModule(options) {
4009
4802
  if (!result)
4010
4803
  return envObject.setLastError(1);
4011
4804
  var handle = emnapiCtx.handleStore.get(arraybuffer);
4012
- if (!handle.isArrayBuffer()) {
4013
- return envObject.setLastError(1);
4014
- }
4015
4805
  var buffer = handle.value;
4806
+ byte_offset >>>= 0;
4807
+ length >>>= 0;
4016
4808
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
4017
4809
  var _a;
4018
4810
  byte_offset = byte_offset >>> 0;
@@ -4043,36 +4835,47 @@ function createNapiModule(options) {
4043
4835
  });
4044
4836
  }
4045
4837
  }
4838
+ result >>>= 0;
4046
4839
  value = emnapiCtx.addToCurrentScope(out).id;
4047
4840
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4048
- HEAP_DATA_VIEW.setInt32(result, value, true);
4841
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4049
4842
  return envObject.getReturnStatus();
4050
4843
  };
4051
- switch (type) {
4052
- case 0:
4053
- return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4054
- case 1:
4055
- return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4056
- case 2:
4057
- return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4058
- case 3:
4059
- return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4060
- case 4:
4061
- return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4062
- case 5:
4063
- return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4064
- case 6:
4065
- return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4066
- case 7:
4067
- return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4068
- case 8:
4069
- return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4070
- case 9:
4071
- return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4072
- case 10:
4073
- return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4074
- default:
4075
- return envObject.setLastError(1);
4844
+ if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
4845
+ switch (type) {
4846
+ case 0:
4847
+ return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4848
+ case 1:
4849
+ return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4850
+ case 2:
4851
+ return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4852
+ case 3:
4853
+ return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4854
+ case 4:
4855
+ return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4856
+ case 5:
4857
+ return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4858
+ case 6:
4859
+ return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4860
+ case 7:
4861
+ return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4862
+ case 8:
4863
+ return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4864
+ case 9:
4865
+ return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4866
+ case 10:
4867
+ return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4868
+ case 11:
4869
+ if (typeof Float16Array !== 'function') {
4870
+ return envObject.setLastError(1);
4871
+ }
4872
+ return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
4873
+ default:
4874
+ return envObject.setLastError(1);
4875
+ }
4876
+ }
4877
+ else {
4878
+ return envObject.setLastError(1);
4076
4879
  }
4077
4880
  }
4078
4881
  catch (err) {
@@ -4099,18 +4902,21 @@ function createNapiModule(options) {
4099
4902
  if (!Buffer) {
4100
4903
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
4101
4904
  }
4905
+ result >>>= 0;
4102
4906
  var buffer = void 0;
4907
+ size >>>= 0;
4103
4908
  size = size >>> 0;
4104
4909
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4105
4910
  if (!data || (size === 0)) {
4106
4911
  buffer = Buffer.alloc(size);
4107
4912
  value = emnapiCtx.addToCurrentScope(buffer).id;
4108
- HEAP_DATA_VIEW.setInt32(result, value, true);
4913
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4109
4914
  }
4110
4915
  else {
4111
4916
  pointer = _malloc(size);
4112
4917
  if (!pointer)
4113
4918
  throw new Error('Out of memory');
4919
+ pointer >>>= 0;
4114
4920
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
4115
4921
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
4116
4922
  var viewDescriptor = {
@@ -4123,8 +4929,9 @@ function createNapiModule(options) {
4123
4929
  emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
4124
4930
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
4125
4931
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
4126
- HEAP_DATA_VIEW.setInt32(result, value, true);
4127
- HEAP_DATA_VIEW.setInt32(data, pointer, true);
4932
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4933
+ data >>>= 0;
4934
+ HEAP_DATA_VIEW.setUint32(data, pointer, true);
4128
4935
  }
4129
4936
  return envObject.getReturnStatus();
4130
4937
  }
@@ -4151,12 +4958,15 @@ function createNapiModule(options) {
4151
4958
  if (!Buffer) {
4152
4959
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
4153
4960
  }
4154
- var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
4961
+ var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
4155
4962
  var buffer = Buffer.from(arrayBuffer);
4963
+ data >>>= 0;
4964
+ length >>>= 0;
4156
4965
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
4157
4966
  value = emnapiCtx.addToCurrentScope(buffer).id;
4967
+ result >>>= 0;
4158
4968
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4159
- HEAP_DATA_VIEW.setInt32(result, value, true);
4969
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4160
4970
  return envObject.getReturnStatus();
4161
4971
  }
4162
4972
  catch (err) {
@@ -4183,6 +4993,8 @@ function createNapiModule(options) {
4183
4993
  return envObject.setLastError(1);
4184
4994
  if (!result)
4185
4995
  return envObject.setLastError(1);
4996
+ byte_offset >>>= 0;
4997
+ byte_length >>>= 0;
4186
4998
  byte_offset = byte_offset >>> 0;
4187
4999
  byte_length = byte_length >>> 0;
4188
5000
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4211,9 +5023,10 @@ function createNapiModule(options) {
4211
5023
  });
4212
5024
  }
4213
5025
  }
5026
+ result >>>= 0;
4214
5027
  value = emnapiCtx.addToCurrentScope(out).id;
4215
5028
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4216
- HEAP_DATA_VIEW.setInt32(result, value, true);
5029
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4217
5030
  return envObject.getReturnStatus();
4218
5031
  }
4219
5032
  catch (err) {
@@ -4222,7 +5035,6 @@ function createNapiModule(options) {
4222
5035
  }
4223
5036
  }
4224
5037
  function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
4225
- var value;
4226
5038
  if (!env)
4227
5039
  return 1;
4228
5040
  var envObject = emnapiCtx.envStore.get(env);
@@ -4237,34 +5049,41 @@ function createNapiModule(options) {
4237
5049
  return envObject.setLastError(1);
4238
5050
  if (!result)
4239
5051
  return envObject.setLastError(1);
5052
+ byte_length >>>= 0;
5053
+ byte_offset >>>= 0;
4240
5054
  byte_length = byte_length >>> 0;
4241
5055
  byte_offset = byte_offset >>> 0;
4242
- var handle = emnapiCtx.handleStore.get(arraybuffer);
4243
- if (!handle.isArrayBuffer()) {
4244
- return envObject.setLastError(1);
4245
- }
4246
- var buffer = handle.value;
4247
- if ((byte_length + byte_offset) > buffer.byteLength) {
4248
- var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
4249
- err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
4250
- throw err;
4251
- }
4252
- var dataview = new DataView(buffer, byte_offset, byte_length);
4253
- if (buffer === wasmMemory.buffer) {
4254
- if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
4255
- emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
4256
- Ctor: DataView,
4257
- address: byte_offset,
4258
- length: byte_length,
4259
- ownership: 1,
4260
- runtimeAllocated: 0
4261
- });
5056
+ var value = emnapiCtx.handleStore.get(arraybuffer).value;
5057
+ var createDataview = function (buffer) {
5058
+ if ((byte_length + byte_offset) > buffer.byteLength) {
5059
+ var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
5060
+ err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
5061
+ throw err;
5062
+ }
5063
+ var dataview = new DataView(buffer, byte_offset, byte_length);
5064
+ if (buffer === wasmMemory.buffer) {
5065
+ if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
5066
+ emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
5067
+ Ctor: DataView,
5068
+ address: byte_offset,
5069
+ length: byte_length,
5070
+ ownership: 1,
5071
+ runtimeAllocated: 0
5072
+ });
5073
+ }
4262
5074
  }
5075
+ result >>>= 0;
5076
+ var v = emnapiCtx.addToCurrentScope(dataview).id;
5077
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5078
+ HEAP_DATA_VIEW.setUint32(result, v, true);
5079
+ return envObject.getReturnStatus();
5080
+ };
5081
+ if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
5082
+ return createDataview(value);
5083
+ }
5084
+ else {
5085
+ return envObject.setLastError(1);
4263
5086
  }
4264
- value = emnapiCtx.addToCurrentScope(dataview).id;
4265
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4266
- HEAP_DATA_VIEW.setInt32(result, value, true);
4267
- return envObject.getReturnStatus();
4268
5087
  }
4269
5088
  catch (err) {
4270
5089
  envObject.tryCatch.setError(err);
@@ -4278,7 +5097,10 @@ function createNapiModule(options) {
4278
5097
  envObject.checkGCAccess();
4279
5098
  if (!result)
4280
5099
  return envObject.setLastError(1);
4281
- var autoLength = length === -1;
5100
+ length >>>= 0;
5101
+ utf8description >>>= 0;
5102
+ result >>>= 0;
5103
+ var autoLength = length === -1 || length === 4294967295;
4282
5104
  var sizelength = length >>> 0;
4283
5105
  if (length !== 0) {
4284
5106
  if (!utf8description)
@@ -4290,7 +5112,7 @@ function createNapiModule(options) {
4290
5112
  var descriptionString = emnapiString.UTF8ToString(utf8description, length);
4291
5113
  var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
4292
5114
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4293
- HEAP_DATA_VIEW.setInt32(result, value, true);
5115
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4294
5116
  return envObject.clearLastError();
4295
5117
  }
4296
5118
  var createMod = Object.freeze({
@@ -4309,6 +5131,9 @@ function createNapiModule(options) {
4309
5131
  napi_create_symbol: napi_create_symbol,
4310
5132
  napi_create_typedarray: napi_create_typedarray,
4311
5133
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
5134
+ node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
5135
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
5136
+ node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
4312
5137
  node_api_symbol_for: node_api_symbol_for
4313
5138
  });
4314
5139
  function napi_get_boolean(env, value, result) {
@@ -4318,9 +5143,10 @@ function createNapiModule(options) {
4318
5143
  envObject.checkGCAccess();
4319
5144
  if (!result)
4320
5145
  return envObject.setLastError(1);
5146
+ result >>>= 0;
4321
5147
  var v = value === 0 ? 3 : 4;
4322
5148
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4323
- HEAP_DATA_VIEW.setInt32(result, v, true);
5149
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4324
5150
  return envObject.clearLastError();
4325
5151
  }
4326
5152
  function napi_get_global(env, result) {
@@ -4330,9 +5156,10 @@ function createNapiModule(options) {
4330
5156
  envObject.checkGCAccess();
4331
5157
  if (!result)
4332
5158
  return envObject.setLastError(1);
5159
+ result >>>= 0;
4333
5160
  var value = 5;
4334
5161
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4335
- HEAP_DATA_VIEW.setInt32(result, value, true);
5162
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4336
5163
  return envObject.clearLastError();
4337
5164
  }
4338
5165
  function napi_get_null(env, result) {
@@ -4342,9 +5169,10 @@ function createNapiModule(options) {
4342
5169
  envObject.checkGCAccess();
4343
5170
  if (!result)
4344
5171
  return envObject.setLastError(1);
5172
+ result >>>= 0;
4345
5173
  var value = 2;
4346
5174
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4347
- HEAP_DATA_VIEW.setInt32(result, value, true);
5175
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4348
5176
  return envObject.clearLastError();
4349
5177
  }
4350
5178
  function napi_get_undefined(env, result) {
@@ -4354,9 +5182,10 @@ function createNapiModule(options) {
4354
5182
  envObject.checkGCAccess();
4355
5183
  if (!result)
4356
5184
  return envObject.setLastError(1);
5185
+ result >>>= 0;
4357
5186
  var value = 1;
4358
5187
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4359
- HEAP_DATA_VIEW.setInt32(result, value, true);
5188
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4360
5189
  return envObject.clearLastError();
4361
5190
  }
4362
5191
  var globalMod = Object.freeze({
@@ -4370,6 +5199,9 @@ function createNapiModule(options) {
4370
5199
  if (!env)
4371
5200
  return 1;
4372
5201
  var envObject = emnapiCtx.envStore.get(env);
5202
+ data >>>= 0;
5203
+ finalize_cb >>>= 0;
5204
+ finalize_hint >>>= 0;
4373
5205
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
4374
5206
  return envObject.clearLastError();
4375
5207
  }
@@ -4379,9 +5211,10 @@ function createNapiModule(options) {
4379
5211
  var envObject = emnapiCtx.envStore.get(env);
4380
5212
  if (!data)
4381
5213
  return envObject.setLastError(1);
5214
+ data >>>= 0;
4382
5215
  var value = envObject.getInstanceData();
4383
5216
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4384
- HEAP_DATA_VIEW.setInt32(data, value, true);
5217
+ HEAP_DATA_VIEW.setUint32(data, value, true);
4385
5218
  return envObject.clearLastError();
4386
5219
  }
4387
5220
  var envMod = Object.freeze({
@@ -4390,15 +5223,19 @@ function createNapiModule(options) {
4390
5223
  napi_set_instance_data: napi_set_instance_data
4391
5224
  });
4392
5225
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
5226
+ error_code >>>= 0;
5227
+ engine_error_code >>>= 0;
5228
+ engine_reserved >>>= 0;
4393
5229
  var envObject = emnapiCtx.envStore.get(env);
4394
5230
  var lastError = envObject.lastError;
4395
5231
  var errorCode = lastError.errorCode;
4396
5232
  var engineErrorCode = lastError.engineErrorCode >>> 0;
4397
5233
  var engineReserved = lastError.engineReserved;
5234
+ engineReserved >>>= 0;
4398
5235
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4399
5236
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
4400
5237
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
4401
- HEAP_DATA_VIEW.setInt32(engine_reserved, engineReserved, true);
5238
+ HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
4402
5239
  }
4403
5240
  function napi_throw(env, error) {
4404
5241
  if (!env)
@@ -4434,6 +5271,8 @@ function createNapiModule(options) {
4434
5271
  try {
4435
5272
  if (!msg)
4436
5273
  return envObject.setLastError(1);
5274
+ code >>>= 0;
5275
+ msg >>>= 0;
4437
5276
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
4438
5277
  if (code)
4439
5278
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4458,6 +5297,8 @@ function createNapiModule(options) {
4458
5297
  try {
4459
5298
  if (!msg)
4460
5299
  return envObject.setLastError(1);
5300
+ code >>>= 0;
5301
+ msg >>>= 0;
4461
5302
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
4462
5303
  if (code)
4463
5304
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4482,6 +5323,8 @@ function createNapiModule(options) {
4482
5323
  try {
4483
5324
  if (!msg)
4484
5325
  return envObject.setLastError(1);
5326
+ code >>>= 0;
5327
+ msg >>>= 0;
4485
5328
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
4486
5329
  if (code)
4487
5330
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4506,6 +5349,8 @@ function createNapiModule(options) {
4506
5349
  try {
4507
5350
  if (!msg)
4508
5351
  return envObject.setLastError(1);
5352
+ code >>>= 0;
5353
+ msg >>>= 0;
4509
5354
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
4510
5355
  if (code)
4511
5356
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4525,6 +5370,7 @@ function createNapiModule(options) {
4525
5370
  if (!result)
4526
5371
  return envObject.setLastError(1);
4527
5372
  var r = envObject.tryCatch.hasCaught();
5373
+ result >>>= 0;
4528
5374
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4529
5375
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
4530
5376
  return envObject.clearLastError();
@@ -4550,9 +5396,10 @@ function createNapiModule(options) {
4550
5396
  }
4551
5397
  error.code = codeValue;
4552
5398
  }
5399
+ result >>>= 0;
4553
5400
  var value = emnapiCtx.addToCurrentScope(error).id;
4554
5401
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4555
- HEAP_DATA_VIEW.setInt32(result, value, true);
5402
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4556
5403
  return envObject.clearLastError();
4557
5404
  }
4558
5405
  function napi_create_type_error(env, code, msg, result) {
@@ -4576,9 +5423,10 @@ function createNapiModule(options) {
4576
5423
  }
4577
5424
  error.code = codeValue;
4578
5425
  }
5426
+ result >>>= 0;
4579
5427
  var value = emnapiCtx.addToCurrentScope(error).id;
4580
5428
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4581
- HEAP_DATA_VIEW.setInt32(result, value, true);
5429
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4582
5430
  return envObject.clearLastError();
4583
5431
  }
4584
5432
  function napi_create_range_error(env, code, msg, result) {
@@ -4602,9 +5450,10 @@ function createNapiModule(options) {
4602
5450
  }
4603
5451
  error.code = codeValue;
4604
5452
  }
5453
+ result >>>= 0;
4605
5454
  var value = emnapiCtx.addToCurrentScope(error).id;
4606
5455
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4607
- HEAP_DATA_VIEW.setInt32(result, value, true);
5456
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4608
5457
  return envObject.clearLastError();
4609
5458
  }
4610
5459
  function node_api_create_syntax_error(env, code, msg, result) {
@@ -4628,9 +5477,10 @@ function createNapiModule(options) {
4628
5477
  }
4629
5478
  error.code = codeValue;
4630
5479
  }
5480
+ result >>>= 0;
4631
5481
  var value = emnapiCtx.addToCurrentScope(error).id;
4632
5482
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4633
- HEAP_DATA_VIEW.setInt32(result, value, true);
5483
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4634
5484
  return envObject.clearLastError();
4635
5485
  }
4636
5486
  function napi_get_and_clear_last_exception(env, result) {
@@ -4640,20 +5490,25 @@ function createNapiModule(options) {
4640
5490
  envObject.checkGCAccess();
4641
5491
  if (!result)
4642
5492
  return envObject.setLastError(1);
5493
+ result >>>= 0;
4643
5494
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4644
5495
  if (!envObject.tryCatch.hasCaught()) {
4645
- HEAP_DATA_VIEW.setInt32(result, 1, true);
5496
+ HEAP_DATA_VIEW.setUint32(result, 1, true);
4646
5497
  return envObject.clearLastError();
4647
5498
  }
4648
5499
  else {
4649
5500
  var err = envObject.tryCatch.exception();
4650
5501
  var value = envObject.ensureHandleId(err);
4651
- HEAP_DATA_VIEW.setInt32(result, value, true);
5502
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4652
5503
  envObject.tryCatch.reset();
4653
5504
  }
4654
5505
  return envObject.clearLastError();
4655
5506
  }
4656
5507
  function napi_fatal_error(location, location_len, message, message_len) {
5508
+ location >>>= 0;
5509
+ location_len >>>= 0;
5510
+ message >>>= 0;
5511
+ message_len >>>= 0;
4657
5512
  var locationStr = emnapiString.UTF8ToString(location, location_len);
4658
5513
  var messageStr = emnapiString.UTF8ToString(message, message_len);
4659
5514
  if (emnapiNodeBinding) {
@@ -4707,8 +5562,21 @@ function createNapiModule(options) {
4707
5562
  node_api_create_syntax_error: node_api_create_syntax_error,
4708
5563
  node_api_throw_syntax_error: node_api_throw_syntax_error
4709
5564
  });
5565
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
5566
+ length >>>= 0;
5567
+ var envObject = emnapiCtx.envStore.get(env);
5568
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
5569
+ if (fresult.status !== 0)
5570
+ return envObject.setLastError(fresult.status);
5571
+ var f = fresult.f;
5572
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
5573
+ result >>>= 0;
5574
+ var value = valueHandle.id;
5575
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5576
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5577
+ return envObject.getReturnStatus();
5578
+ }
4710
5579
  function napi_create_function(env, utf8name, length, cb, data, result) {
4711
- var value;
4712
5580
  if (!env)
4713
5581
  return 1;
4714
5582
  var envObject = emnapiCtx.envStore.get(env);
@@ -4723,15 +5591,7 @@ function createNapiModule(options) {
4723
5591
  return envObject.setLastError(1);
4724
5592
  if (!cb)
4725
5593
  return envObject.setLastError(1);
4726
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
4727
- if (fresult.status !== 0)
4728
- return envObject.setLastError(fresult.status);
4729
- var f = fresult.f;
4730
- var valueHandle = emnapiCtx.addToCurrentScope(f);
4731
- value = valueHandle.id;
4732
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4733
- HEAP_DATA_VIEW.setInt32(result, value, true);
4734
- return envObject.getReturnStatus();
5594
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
4735
5595
  }
4736
5596
  catch (err) {
4737
5597
  envObject.tryCatch.setError(err);
@@ -4745,21 +5605,24 @@ function createNapiModule(options) {
4745
5605
  if (!cbinfo)
4746
5606
  return envObject.setLastError(1);
4747
5607
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5608
+ argc >>>= 0;
5609
+ argv >>>= 0;
4748
5610
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4749
5611
  if (argv) {
4750
5612
  if (!argc)
4751
5613
  return envObject.setLastError(1);
4752
5614
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
5615
+ argcValue >>>= 0;
4753
5616
  var len = cbinfoValue.args.length;
4754
5617
  var arrlen = argcValue < len ? argcValue : len;
4755
5618
  var i = 0;
4756
5619
  for (; i < arrlen; i++) {
4757
5620
  var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
4758
- HEAP_DATA_VIEW.setInt32(argv + i * 4, argVal, true);
5621
+ HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
4759
5622
  }
4760
5623
  if (i < argcValue) {
4761
5624
  for (; i < argcValue; i++) {
4762
- HEAP_DATA_VIEW.setInt32(argv + i * 4, 1, true);
5625
+ HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
4763
5626
  }
4764
5627
  }
4765
5628
  }
@@ -4767,11 +5630,13 @@ function createNapiModule(options) {
4767
5630
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
4768
5631
  }
4769
5632
  if (this_arg) {
5633
+ this_arg >>>= 0;
4770
5634
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
4771
- HEAP_DATA_VIEW.setInt32(this_arg, v, true);
5635
+ HEAP_DATA_VIEW.setUint32(this_arg, v, true);
4772
5636
  }
4773
5637
  if (data) {
4774
- HEAP_DATA_VIEW.setInt32(data, cbinfoValue.data, true);
5638
+ data >>>= 0;
5639
+ HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
4775
5640
  }
4776
5641
  return envObject.clearLastError();
4777
5642
  }
@@ -4790,6 +5655,9 @@ function createNapiModule(options) {
4790
5655
  try {
4791
5656
  if (!recv)
4792
5657
  return envObject.setLastError(1);
5658
+ argc >>>= 0;
5659
+ argv >>>= 0;
5660
+ result >>>= 0;
4793
5661
  argc = argc >>> 0;
4794
5662
  if (argc > 0) {
4795
5663
  if (!argv)
@@ -4804,13 +5672,13 @@ function createNapiModule(options) {
4804
5672
  var args = [];
4805
5673
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4806
5674
  for (; i < argc; i++) {
4807
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
5675
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
4808
5676
  args.push(emnapiCtx.handleStore.get(argVal).value);
4809
5677
  }
4810
5678
  var ret = v8func.apply(v8recv, args);
4811
5679
  if (result) {
4812
5680
  v = envObject.ensureHandleId(ret);
4813
- HEAP_DATA_VIEW.setInt32(result, v, true);
5681
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4814
5682
  }
4815
5683
  return envObject.clearLastError();
4816
5684
  }
@@ -4834,6 +5702,9 @@ function createNapiModule(options) {
4834
5702
  try {
4835
5703
  if (!constructor)
4836
5704
  return envObject.setLastError(1);
5705
+ argc >>>= 0;
5706
+ argv >>>= 0;
5707
+ result >>>= 0;
4837
5708
  argc = argc >>> 0;
4838
5709
  if (argc > 0) {
4839
5710
  if (!argv)
@@ -4849,7 +5720,7 @@ function createNapiModule(options) {
4849
5720
  if (emnapiCtx.feature.supportReflect) {
4850
5721
  var argList = Array(argc);
4851
5722
  for (i = 0; i < argc; i++) {
4852
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
5723
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
4853
5724
  argList[i] = emnapiCtx.handleStore.get(argVal).value;
4854
5725
  }
4855
5726
  ret = Reflect.construct(Ctor, argList, Ctor);
@@ -4858,7 +5729,7 @@ function createNapiModule(options) {
4858
5729
  var args = Array(argc + 1);
4859
5730
  args[0] = undefined;
4860
5731
  for (i = 0; i < argc; i++) {
4861
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
5732
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
4862
5733
  args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
4863
5734
  }
4864
5735
  var BoundCtor = Ctor.bind.apply(Ctor, args);
@@ -4866,7 +5737,7 @@ function createNapiModule(options) {
4866
5737
  }
4867
5738
  if (result) {
4868
5739
  v = envObject.ensureHandleId(ret);
4869
- HEAP_DATA_VIEW.setInt32(result, v, true);
5740
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4870
5741
  }
4871
5742
  return envObject.getReturnStatus();
4872
5743
  }
@@ -4884,6 +5755,7 @@ function createNapiModule(options) {
4884
5755
  return envObject.setLastError(1);
4885
5756
  if (!result)
4886
5757
  return envObject.setLastError(1);
5758
+ result >>>= 0;
4887
5759
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
4888
5760
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
4889
5761
  var value = thiz == null || thiz.constructor == null
@@ -4892,11 +5764,12 @@ function createNapiModule(options) {
4892
5764
  ? envObject.ensureHandleId(thiz.constructor)
4893
5765
  : 0;
4894
5766
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4895
- HEAP_DATA_VIEW.setInt32(result, value, true);
5767
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4896
5768
  return envObject.clearLastError();
4897
5769
  }
4898
5770
  var functionMod = Object.freeze({
4899
5771
  __proto__: null,
5772
+ _emnapi_create_function: _emnapi_create_function,
4900
5773
  napi_call_function: napi_call_function,
4901
5774
  napi_create_function: napi_create_function,
4902
5775
  napi_get_cb_info: napi_get_cb_info,
@@ -4911,8 +5784,9 @@ function createNapiModule(options) {
4911
5784
  if (!result)
4912
5785
  return envObject.setLastError(1);
4913
5786
  var scope = emnapiCtx.openScope(envObject);
5787
+ result >>>= 0;
4914
5788
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4915
- HEAP_DATA_VIEW.setInt32(result, scope.id, true);
5789
+ HEAP_DATA_VIEW.setUint32(result, scope.id, true);
4916
5790
  return envObject.clearLastError();
4917
5791
  }
4918
5792
  function napi_close_handle_scope(env, scope) {
@@ -4936,8 +5810,9 @@ function createNapiModule(options) {
4936
5810
  if (!result)
4937
5811
  return envObject.setLastError(1);
4938
5812
  var scope = emnapiCtx.openScope(envObject);
5813
+ result >>>= 0;
4939
5814
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4940
- HEAP_DATA_VIEW.setInt32(result, scope.id, true);
5815
+ HEAP_DATA_VIEW.setUint32(result, scope.id, true);
4941
5816
  return envObject.clearLastError();
4942
5817
  }
4943
5818
  function napi_close_escapable_handle_scope(env, scope) {
@@ -4966,10 +5841,12 @@ function createNapiModule(options) {
4966
5841
  return envObject.setLastError(1);
4967
5842
  var scopeObject = emnapiCtx.scopeStore.get(scope);
4968
5843
  if (!scopeObject.escapeCalled()) {
5844
+ escapee >>>= 0;
5845
+ result >>>= 0;
4969
5846
  var newHandle = scopeObject.escape(escapee);
4970
5847
  var value = newHandle ? newHandle.id : 0;
4971
5848
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4972
- HEAP_DATA_VIEW.setInt32(result, value, true);
5849
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4973
5850
  return envObject.clearLastError();
4974
5851
  }
4975
5852
  return envObject.setLastError(12);
@@ -4990,8 +5867,9 @@ function createNapiModule(options) {
4990
5867
  }
4991
5868
  }
4992
5869
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
5870
+ result >>>= 0;
4993
5871
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4994
- HEAP_DATA_VIEW.setInt32(result, ref.id, true);
5872
+ HEAP_DATA_VIEW.setUint32(result, ref.id, true);
4995
5873
  return envObject.clearLastError();
4996
5874
  }
4997
5875
  function napi_delete_reference(env, ref) {
@@ -5012,6 +5890,7 @@ function createNapiModule(options) {
5012
5890
  return envObject.setLastError(1);
5013
5891
  var count = emnapiCtx.refStore.get(ref).ref();
5014
5892
  if (result) {
5893
+ result >>>= 0;
5015
5894
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5016
5895
  HEAP_DATA_VIEW.setUint32(result, count, true);
5017
5896
  }
@@ -5031,6 +5910,7 @@ function createNapiModule(options) {
5031
5910
  }
5032
5911
  var count = reference.unref();
5033
5912
  if (result) {
5913
+ result >>>= 0;
5034
5914
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5035
5915
  HEAP_DATA_VIEW.setUint32(result, count, true);
5036
5916
  }
@@ -5047,8 +5927,9 @@ function createNapiModule(options) {
5047
5927
  return envObject.setLastError(1);
5048
5928
  var reference = emnapiCtx.refStore.get(ref);
5049
5929
  var handleId = reference.get(envObject);
5930
+ result >>>= 0;
5050
5931
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5051
- HEAP_DATA_VIEW.setInt32(result, handleId, true);
5932
+ HEAP_DATA_VIEW.setUint32(result, handleId, true);
5052
5933
  return envObject.clearLastError();
5053
5934
  }
5054
5935
  function napi_add_env_cleanup_hook(env, fun, arg) {
@@ -5057,6 +5938,8 @@ function createNapiModule(options) {
5057
5938
  var envObject = emnapiCtx.envStore.get(env);
5058
5939
  if (!fun)
5059
5940
  return envObject.setLastError(1);
5941
+ fun >>>= 0;
5942
+ arg >>>= 0;
5060
5943
  emnapiCtx.addCleanupHook(envObject, fun, arg);
5061
5944
  return 0;
5062
5945
  }
@@ -5066,6 +5949,8 @@ function createNapiModule(options) {
5066
5949
  var envObject = emnapiCtx.envStore.get(env);
5067
5950
  if (!fun)
5068
5951
  return envObject.setLastError(1);
5952
+ fun >>>= 0;
5953
+ arg >>>= 0;
5069
5954
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
5070
5955
  return 0;
5071
5956
  }
@@ -5126,10 +6011,12 @@ function createNapiModule(options) {
5126
6011
  var p = new Promise(function (resolve, reject) {
5127
6012
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
5128
6013
  deferredObjectId = deferredObject.id;
5129
- HEAP_DATA_VIEW.setInt32(deferred, deferredObjectId, true);
6014
+ deferred >>>= 0;
6015
+ HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
5130
6016
  });
6017
+ promise >>>= 0;
5131
6018
  value = emnapiCtx.addToCurrentScope(p).id;
5132
- HEAP_DATA_VIEW.setInt32(promise, value, true);
6019
+ HEAP_DATA_VIEW.setUint32(promise, value, true);
5133
6020
  return envObject.getReturnStatus();
5134
6021
  }
5135
6022
  catch (err) {
@@ -5195,6 +6082,7 @@ function createNapiModule(options) {
5195
6082
  if (!is_promise)
5196
6083
  return envObject.setLastError(1);
5197
6084
  var h = emnapiCtx.handleStore.get(value);
6085
+ is_promise >>>= 0;
5198
6086
  var r = h.isPromise() ? 1 : 0;
5199
6087
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5200
6088
  HEAP_DATA_VIEW.setInt8(is_promise, r, true);
@@ -5338,9 +6226,10 @@ function createNapiModule(options) {
5338
6226
  }
5339
6227
  }
5340
6228
  }
6229
+ result >>>= 0;
5341
6230
  value = emnapiCtx.addToCurrentScope(ret).id;
5342
6231
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5343
- HEAP_DATA_VIEW.setInt32(result, value, true);
6232
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5344
6233
  return envObject.getReturnStatus();
5345
6234
  }
5346
6235
  catch (err) {
@@ -5409,6 +6298,7 @@ function createNapiModule(options) {
5409
6298
  catch (_) {
5410
6299
  return envObject.setLastError(2);
5411
6300
  }
6301
+ result >>>= 0;
5412
6302
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
5413
6303
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5414
6304
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5448,9 +6338,10 @@ function createNapiModule(options) {
5448
6338
  catch (_) {
5449
6339
  return envObject.setLastError(2);
5450
6340
  }
6341
+ result >>>= 0;
5451
6342
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
5452
6343
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5453
- HEAP_DATA_VIEW.setInt32(result, value, true);
6344
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5454
6345
  return envObject.getReturnStatus();
5455
6346
  }
5456
6347
  catch (err) {
@@ -5491,6 +6382,7 @@ function createNapiModule(options) {
5491
6382
  }
5492
6383
  }
5493
6384
  if (result) {
6385
+ result >>>= 0;
5494
6386
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5495
6387
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5496
6388
  }
@@ -5535,6 +6427,7 @@ function createNapiModule(options) {
5535
6427
  return envObject.setLastError(4);
5536
6428
  }
5537
6429
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
6430
+ result >>>= 0;
5538
6431
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5539
6432
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5540
6433
  return envObject.getReturnStatus();
@@ -5566,6 +6459,7 @@ function createNapiModule(options) {
5566
6459
  if (!cname) {
5567
6460
  return envObject.setLastError(1);
5568
6461
  }
6462
+ cname >>>= 0;
5569
6463
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
5570
6464
  return envObject.getReturnStatus();
5571
6465
  }
@@ -5604,6 +6498,8 @@ function createNapiModule(options) {
5604
6498
  catch (_) {
5605
6499
  return envObject.setLastError(2);
5606
6500
  }
6501
+ utf8name >>>= 0;
6502
+ result >>>= 0;
5607
6503
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
5608
6504
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5609
6505
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -5644,9 +6540,11 @@ function createNapiModule(options) {
5644
6540
  catch (_) {
5645
6541
  return envObject.setLastError(2);
5646
6542
  }
6543
+ utf8name >>>= 0;
6544
+ result >>>= 0;
5647
6545
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
5648
6546
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5649
- HEAP_DATA_VIEW.setInt32(result, value, true);
6547
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5650
6548
  return envObject.getReturnStatus();
5651
6549
  }
5652
6550
  catch (err) {
@@ -5708,6 +6606,7 @@ function createNapiModule(options) {
5708
6606
  catch (_) {
5709
6607
  return envObject.setLastError(2);
5710
6608
  }
6609
+ result >>>= 0;
5711
6610
  r = ((index >>> 0) in v) ? 1 : 0;
5712
6611
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5713
6612
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5745,9 +6644,10 @@ function createNapiModule(options) {
5745
6644
  catch (_) {
5746
6645
  return envObject.setLastError(2);
5747
6646
  }
6647
+ result >>>= 0;
5748
6648
  value = envObject.ensureHandleId(v[index >>> 0]);
5749
6649
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5750
- HEAP_DATA_VIEW.setInt32(result, value, true);
6650
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5751
6651
  return envObject.getReturnStatus();
5752
6652
  }
5753
6653
  catch (err) {
@@ -5785,6 +6685,7 @@ function createNapiModule(options) {
5785
6685
  }
5786
6686
  }
5787
6687
  if (result) {
6688
+ result >>>= 0;
5788
6689
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5789
6690
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5790
6691
  }
@@ -5807,6 +6708,8 @@ function createNapiModule(options) {
5807
6708
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
5808
6709
  envObject.clearLastError();
5809
6710
  try {
6711
+ properties >>>= 0;
6712
+ property_count >>>= 0;
5810
6713
  property_count = property_count >>> 0;
5811
6714
  if (property_count > 0) {
5812
6715
  if (!properties)
@@ -5823,14 +6726,15 @@ function createNapiModule(options) {
5823
6726
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5824
6727
  for (var i = 0; i < property_count; i++) {
5825
6728
  propPtr = properties + (i * (4 * 8));
5826
- var utf8Name = HEAP_DATA_VIEW.getInt32(propPtr, true);
5827
- var name_2 = HEAP_DATA_VIEW.getInt32(propPtr + 4, true);
5828
- var method = HEAP_DATA_VIEW.getInt32(propPtr + 8, true);
5829
- var getter = HEAP_DATA_VIEW.getInt32(propPtr + 12, true);
5830
- var setter = HEAP_DATA_VIEW.getInt32(propPtr + 16, true);
5831
- var value = HEAP_DATA_VIEW.getInt32(propPtr + 20, true);
6729
+ var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
6730
+ var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
6731
+ var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
6732
+ var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
6733
+ var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
6734
+ var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
5832
6735
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
5833
- var data = HEAP_DATA_VIEW.getInt32(propPtr + 28, true);
6736
+ attributes >>>= 0;
6737
+ var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
5834
6738
  if (utf8Name) {
5835
6739
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
5836
6740
  }
@@ -5947,9 +6851,10 @@ function createNapiModule(options) {
5947
6851
  }
5948
6852
  var g = emnapiCtx.handleStore.get(5).value;
5949
6853
  var ret = g.eval(v8Script.value);
6854
+ result >>>= 0;
5950
6855
  value = envObject.ensureHandleId(ret);
5951
6856
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5952
- HEAP_DATA_VIEW.setInt32(result, value, true);
6857
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5953
6858
  status = envObject.getReturnStatus();
5954
6859
  }
5955
6860
  catch (err) {
@@ -5972,6 +6877,7 @@ function createNapiModule(options) {
5972
6877
  if (!result)
5973
6878
  return envObject.setLastError(1);
5974
6879
  var v = emnapiCtx.handleStore.get(value);
6880
+ result >>>= 0;
5975
6881
  var r;
5976
6882
  if (v.isNumber()) {
5977
6883
  r = 3;
@@ -6027,9 +6933,10 @@ function createNapiModule(options) {
6027
6933
  if (!result)
6028
6934
  return envObject.setLastError(1);
6029
6935
  var handle = emnapiCtx.handleStore.get(value);
6936
+ result >>>= 0;
6030
6937
  v = handle.value ? 4 : 3;
6031
6938
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6032
- HEAP_DATA_VIEW.setInt32(result, v, true);
6939
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6033
6940
  return envObject.getReturnStatus();
6034
6941
  }
6035
6942
  catch (err) {
@@ -6057,9 +6964,10 @@ function createNapiModule(options) {
6057
6964
  if (handle.isBigInt()) {
6058
6965
  throw new TypeError('Cannot convert a BigInt value to a number');
6059
6966
  }
6967
+ result >>>= 0;
6060
6968
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
6061
6969
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6062
- HEAP_DATA_VIEW.setInt32(result, v, true);
6970
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6063
6971
  return envObject.getReturnStatus();
6064
6972
  }
6065
6973
  catch (err) {
@@ -6087,9 +6995,10 @@ function createNapiModule(options) {
6087
6995
  if (handle.value == null) {
6088
6996
  throw new TypeError('Cannot convert undefined or null to object');
6089
6997
  }
6998
+ result >>>= 0;
6090
6999
  v = envObject.ensureHandleId(Object(handle.value));
6091
7000
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6092
- HEAP_DATA_VIEW.setInt32(result, v, true);
7001
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6093
7002
  return envObject.getReturnStatus();
6094
7003
  }
6095
7004
  catch (err) {
@@ -6117,9 +7026,10 @@ function createNapiModule(options) {
6117
7026
  if (handle.isSymbol()) {
6118
7027
  throw new TypeError('Cannot convert a Symbol value to a string');
6119
7028
  }
7029
+ result >>>= 0;
6120
7030
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
6121
7031
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6122
- HEAP_DATA_VIEW.setInt32(result, v, true);
7032
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6123
7033
  return envObject.getReturnStatus();
6124
7034
  }
6125
7035
  catch (err) {
@@ -6145,6 +7055,7 @@ function createNapiModule(options) {
6145
7055
  return envObject.setLastError(1);
6146
7056
  if (!constructor)
6147
7057
  return envObject.setLastError(1);
7058
+ result >>>= 0;
6148
7059
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6149
7060
  HEAP_DATA_VIEW.setInt8(result, 0, true);
6150
7061
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -6172,6 +7083,7 @@ function createNapiModule(options) {
6172
7083
  if (!result)
6173
7084
  return envObject.setLastError(1);
6174
7085
  var h = emnapiCtx.handleStore.get(value);
7086
+ result >>>= 0;
6175
7087
  var r = h.isArray() ? 1 : 0;
6176
7088
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6177
7089
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6187,11 +7099,31 @@ function createNapiModule(options) {
6187
7099
  if (!result)
6188
7100
  return envObject.setLastError(1);
6189
7101
  var h = emnapiCtx.handleStore.get(value);
7102
+ result >>>= 0;
6190
7103
  var r = h.isArrayBuffer() ? 1 : 0;
6191
7104
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6192
7105
  HEAP_DATA_VIEW.setInt8(result, r, true);
6193
7106
  return envObject.clearLastError();
6194
7107
  }
7108
+ function node_api_is_sharedarraybuffer(env, value, result) {
7109
+ if (!env)
7110
+ return 1;
7111
+ var envObject = emnapiCtx.envStore.get(env);
7112
+ envObject.checkGCAccess();
7113
+ if (!value)
7114
+ return envObject.setLastError(1);
7115
+ if (!result)
7116
+ return envObject.setLastError(1);
7117
+ var h = emnapiCtx.handleStore.get(value);
7118
+ result >>>= 0;
7119
+ var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
7120
+ (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
7121
+ ? 1
7122
+ : 0;
7123
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7124
+ HEAP_DATA_VIEW.setInt8(result, r, true);
7125
+ return envObject.clearLastError();
7126
+ }
6195
7127
  function napi_is_date(env, value, result) {
6196
7128
  if (!env)
6197
7129
  return 1;
@@ -6202,6 +7134,7 @@ function createNapiModule(options) {
6202
7134
  if (!result)
6203
7135
  return envObject.setLastError(1);
6204
7136
  var h = emnapiCtx.handleStore.get(value);
7137
+ result >>>= 0;
6205
7138
  var r = h.isDate() ? 1 : 0;
6206
7139
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6207
7140
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6217,6 +7150,7 @@ function createNapiModule(options) {
6217
7150
  if (!result)
6218
7151
  return envObject.setLastError(1);
6219
7152
  var val = emnapiCtx.handleStore.get(value).value;
7153
+ result >>>= 0;
6220
7154
  var r = (val instanceof Error) ? 1 : 0;
6221
7155
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6222
7156
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6232,6 +7166,7 @@ function createNapiModule(options) {
6232
7166
  if (!result)
6233
7167
  return envObject.setLastError(1);
6234
7168
  var h = emnapiCtx.handleStore.get(value);
7169
+ result >>>= 0;
6235
7170
  var r = h.isTypedArray() ? 1 : 0;
6236
7171
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6237
7172
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6247,6 +7182,7 @@ function createNapiModule(options) {
6247
7182
  if (!result)
6248
7183
  return envObject.setLastError(1);
6249
7184
  var h = emnapiCtx.handleStore.get(value);
7185
+ result >>>= 0;
6250
7186
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
6251
7187
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6252
7188
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6262,6 +7198,7 @@ function createNapiModule(options) {
6262
7198
  if (!result)
6263
7199
  return envObject.setLastError(1);
6264
7200
  var h = emnapiCtx.handleStore.get(value);
7201
+ result >>>= 0;
6265
7202
  var r = h.isDataView() ? 1 : 0;
6266
7203
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6267
7204
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6287,6 +7224,7 @@ function createNapiModule(options) {
6287
7224
  return envObject.setLastError(1);
6288
7225
  var lv = emnapiCtx.handleStore.get(lhs).value;
6289
7226
  var rv = emnapiCtx.handleStore.get(rhs).value;
7227
+ result >>>= 0;
6290
7228
  r = (lv === rv) ? 1 : 0;
6291
7229
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6292
7230
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6337,6 +7275,7 @@ function createNapiModule(options) {
6337
7275
  if (!result)
6338
7276
  return envObject.setLastError(1);
6339
7277
  var h = emnapiCtx.handleStore.get(arraybuffer);
7278
+ result >>>= 0;
6340
7279
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6341
7280
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
6342
7281
  try {
@@ -6372,7 +7311,8 @@ function createNapiModule(options) {
6372
7311
  napi_is_error: napi_is_error,
6373
7312
  napi_is_typedarray: napi_is_typedarray,
6374
7313
  napi_strict_equals: napi_strict_equals,
6375
- napi_typeof: napi_typeof
7314
+ napi_typeof: napi_typeof,
7315
+ node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
6376
7316
  });
6377
7317
  function napi_get_version(env, result) {
6378
7318
  if (!env)
@@ -6391,11 +7331,13 @@ function createNapiModule(options) {
6391
7331
  });
6392
7332
  emnapiAWST.init();
6393
7333
  emnapiExternalMemory.init();
7334
+ emnapiExternalSAB.init();
6394
7335
  emnapiString.init();
6395
7336
  emnapiTSFN.init();
6396
7337
  PThread.init();
6397
7338
  napiModule.emnapi.syncMemory = $emnapiSyncMemory;
6398
7339
  napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
7340
+ napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
6399
7341
  function addImports(mod) {
6400
7342
  var keys = Object.keys(mod);
6401
7343
  for (var i = 0; i < keys.length; ++i) {
@@ -6610,7 +7552,23 @@ class MessageHandler extends ThreadMessageHandler {
6610
7552
  if (typeof options.onLoad !== 'function') {
6611
7553
  throw new TypeError('options.onLoad is not a function');
6612
7554
  }
6613
- super(options);
7555
+ const userOnError = options.onError;
7556
+ super({
7557
+ ...options,
7558
+ onError: (err, type) => {
7559
+ var _a;
7560
+ const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
7561
+ if (typeof emnapi_thread_crashed === 'function') {
7562
+ emnapi_thread_crashed();
7563
+ }
7564
+ if (typeof userOnError === 'function') {
7565
+ userOnError(err, type);
7566
+ }
7567
+ else {
7568
+ throw err;
7569
+ }
7570
+ }
7571
+ });
6614
7572
  this.napiModule = undefined;
6615
7573
  }
6616
7574
  instantiate(data) {
@@ -6631,20 +7589,20 @@ class MessageHandler extends ThreadMessageHandler {
6631
7589
  if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
6632
7590
  const type = e.data.__emnapi__.type;
6633
7591
  const payload = e.data.__emnapi__.payload;
6634
- if (type === 'async-worker-init') {
6635
- this.handleAfterLoad(e, () => {
6636
- this.napiModule.initWorker(payload.arg);
6637
- });
7592
+ try {
7593
+ if (type === 'async-worker-init') {
7594
+ this.handleAfterLoad(e, () => {
7595
+ this.napiModule.initWorker(payload.arg, payload.func);
7596
+ });
7597
+ }
6638
7598
  }
6639
- else if (type === 'async-work-execute') {
6640
- this.handleAfterLoad(e, () => {
6641
- this.napiModule.executeAsyncWork(payload.work);
6642
- });
7599
+ catch (err) {
7600
+ this.onError(err, type);
6643
7601
  }
6644
7602
  }
6645
7603
  }
6646
7604
  }
6647
7605
 
6648
- const version = "1.4.3";
7606
+ const version = "1.11.1";
6649
7607
 
6650
7608
  export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version };