@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.ef2e6c7 → 0.0.0-insiders.ef79119

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