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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +1142 -373
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +3 -3
  3. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
  4. package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +3 -3
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +3 -3
  6. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1245 -378
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +1271 -416
  8. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +3 -3
  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 +1142 -373
  12. package/node_modules/@emnapi/core/package.json +2 -2
  13. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +32 -5
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +8 -2
  15. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  16. package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +8 -2
  17. package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +8 -2
  18. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +33 -5
  19. package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +8 -2
  20. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +33 -5
  21. package/node_modules/@emnapi/runtime/dist/emnapi.js +33 -5
  22. package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +8 -2
  23. package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
  24. package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
  25. package/node_modules/@emnapi/runtime/dist/emnapi.mjs +32 -5
  26. package/node_modules/@emnapi/runtime/package.json +1 -1
  27. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +21 -33
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -1
  29. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
  30. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +2 -1
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -1
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +21 -33
  33. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +21 -33
  34. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -1
  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 +21 -33
  38. package/node_modules/@emnapi/wasi-threads/package.json +1 -1
  39. package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +47 -12
  40. package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +14310 -10201
  41. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +47 -12
  42. package/node_modules/@napi-rs/wasm-runtime/package.json +6 -4
  43. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +164 -2
  44. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +164 -2
  45. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
  46. package/node_modules/@tybys/wasm-util/dist/wasm-util.js +164 -2
  47. package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
  48. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
  49. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +22 -2
  50. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
  51. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +22 -2
  52. package/node_modules/@tybys/wasm-util/package.json +1 -1
  53. package/package.json +6 -6
  54. package/tailwindcss-oxide.wasi-browser.js +1 -0
  55. package/tailwindcss-oxide.wasi.cjs +1 -1
  56. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  57. package/wasi-worker-browser.mjs +2 -0
@@ -109,7 +109,6 @@ function createNapiModule(options) {
109
109
  filename: '',
110
110
  childThread: ENVIRONMENT_IS_PTHREAD,
111
111
  initWorker: undefined,
112
- executeAsyncWork: undefined,
113
112
  waitThreadStart: waitThreadStart,
114
113
  PThread: undefined,
115
114
  init: function (options) {
@@ -121,10 +120,10 @@ function createNapiModule(options) {
121
120
  if (!(instance === null || instance === void 0 ? void 0 : instance.exports))
122
121
  throw new TypeError('Invalid wasm instance');
123
122
  wasmInstance = instance;
124
- var exports$1 = instance.exports;
123
+ var exports = instance.exports;
125
124
  var module = options.module;
126
- var memory = options.memory || exports$1.memory;
127
- var table = options.table || exports$1.__indirect_function_table;
125
+ var memory = options.memory || exports.memory;
126
+ var table = options.table || exports.__indirect_function_table;
128
127
  if (!(module instanceof _WebAssembly.Module))
129
128
  throw new TypeError('Invalid wasm module');
130
129
  if (!(memory instanceof _WebAssembly.Memory))
@@ -133,12 +132,12 @@ function createNapiModule(options) {
133
132
  throw new TypeError('Invalid wasm table');
134
133
  wasmMemory = memory;
135
134
  wasmTable = table;
136
- if (typeof exports$1.malloc !== 'function')
135
+ if (typeof exports.malloc !== 'function')
137
136
  throw new TypeError('malloc is not exported');
138
- if (typeof exports$1.free !== 'function')
137
+ if (typeof exports.free !== 'function')
139
138
  throw new TypeError('free is not exported');
140
- _malloc = exports$1.malloc;
141
- _free = exports$1.free;
139
+ _malloc = exports.malloc;
140
+ _free = exports.free;
142
141
  if (!napiModule.childThread) {
143
142
  var moduleApiVersion = 8;
144
143
  var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1;
@@ -149,11 +148,11 @@ function createNapiModule(options) {
149
148
  var scope_1 = emnapiCtx.openScope(envObject);
150
149
  try {
151
150
  envObject.callIntoModule(function (_envObject) {
152
- var exports$1 = napiModule.exports;
153
- var exportsHandle = scope_1.add(exports$1);
151
+ var exports = napiModule.exports;
152
+ var exportsHandle = scope_1.add(exports);
154
153
  var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1;
155
154
  var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id);
156
- napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value;
155
+ napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
157
156
  });
158
157
  }
159
158
  catch (e) {
@@ -297,6 +296,9 @@ function createNapiModule(options) {
297
296
  return envObject.clearLastError();
298
297
  }
299
298
  function _emnapi_get_node_version(major, minor, patch) {
299
+ major >>>= 0;
300
+ minor >>>= 0;
301
+ patch >>>= 0;
300
302
  var versions = (typeof process === 'object' && process !== null &&
301
303
  typeof process.versions === 'object' && process.versions !== null &&
302
304
  typeof process.versions.node === 'string')
@@ -340,6 +342,7 @@ function createNapiModule(options) {
340
342
  }
341
343
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
342
344
  var envObject = emnapiCtx.envStore.get(env);
345
+ callback >>>= 0;
343
346
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
344
347
  }
345
348
  function _emnapi_ctx_increase_waiting_request_counter() {
@@ -404,9 +407,19 @@ function createNapiModule(options) {
404
407
  var worker = PThread.pthreads[tid];
405
408
  return worker;
406
409
  }
410
+ function _emnapi_worker_ref(pthreadPtr) {
411
+ if (ENVIRONMENT_IS_PTHREAD)
412
+ return;
413
+ pthreadPtr >>>= 0;
414
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
415
+ if (worker && typeof worker.ref === 'function') {
416
+ worker.ref();
417
+ }
418
+ }
407
419
  function _emnapi_worker_unref(pthreadPtr) {
408
420
  if (ENVIRONMENT_IS_PTHREAD)
409
421
  return;
422
+ pthreadPtr >>>= 0;
410
423
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
411
424
  if (worker && typeof worker.unref === 'function') {
412
425
  worker.unref();
@@ -507,6 +520,7 @@ function createNapiModule(options) {
507
520
  _emnapi_async_send_js: _emnapi_async_send_js,
508
521
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
509
522
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
523
+ _emnapi_worker_ref: _emnapi_worker_ref,
510
524
  _emnapi_worker_unref: _emnapi_worker_unref
511
525
  });
512
526
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
@@ -515,22 +529,14 @@ function createNapiModule(options) {
515
529
  var envObject = emnapiCtx.envStore.get(env);
516
530
  if (!adjusted_value)
517
531
  return envObject.setLastError(1);
518
- var change_in_bytes_number = Number(change_in_bytes);
519
- if (change_in_bytes_number < 0) {
520
- return envObject.setLastError(1);
521
- }
522
- var old_size = wasmMemory.buffer.byteLength;
523
- var new_size = old_size + change_in_bytes_number;
524
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
525
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
526
- return envObject.setLastError(9);
527
- }
532
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
533
+ adjusted_value >>>= 0;
528
534
  if (emnapiCtx.feature.supportBigInt) {
529
535
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
530
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
536
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
531
537
  }
532
538
  else {
533
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
539
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
534
540
  }
535
541
  return envObject.clearLastError();
536
542
  }
@@ -688,6 +694,7 @@ function createNapiModule(options) {
688
694
  var asyncId = asyncContext.asyncId;
689
695
  var triggerAsyncId = asyncContext.triggerAsyncId;
690
696
  if (result) {
697
+ result >>>= 0;
691
698
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
692
699
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
693
700
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -708,6 +715,8 @@ function createNapiModule(options) {
708
715
  return;
709
716
  var resource = emnapiCtx.handleStore.get(async_resource).value;
710
717
  var callback = emnapiCtx.handleStore.get(cb).value;
718
+ argv >>>= 0;
719
+ size >>>= 0;
711
720
  size = size >>> 0;
712
721
  var arr = Array(size);
713
722
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -720,6 +729,7 @@ function createNapiModule(options) {
720
729
  triggerAsyncId: trigger_async_id
721
730
  });
722
731
  if (result) {
732
+ result >>>= 0;
723
733
  var envObject = emnapiCtx.envStore.get(env);
724
734
  v = envObject.ensureHandleId(ret);
725
735
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -746,6 +756,7 @@ function createNapiModule(options) {
746
756
  }
747
757
  var low = Number(numberValue & BigInt(0xffffffff));
748
758
  var high = Number(numberValue >> BigInt(32));
759
+ result >>>= 0;
749
760
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
750
761
  HEAP_DATA_VIEW.setInt32(result, low, true);
751
762
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -755,6 +766,7 @@ function createNapiModule(options) {
755
766
  if (!emnapiNodeBinding) {
756
767
  return 9;
757
768
  }
769
+ async_context >>>= 0;
758
770
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
759
771
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
760
772
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -797,10 +809,13 @@ function createNapiModule(options) {
797
809
  if (typeof v8func !== 'function') {
798
810
  return envObject.setLastError(1);
799
811
  }
812
+ async_context >>>= 0;
800
813
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
801
814
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
802
815
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
803
816
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
817
+ argv >>>= 0;
818
+ argc >>>= 0;
804
819
  argc = argc >>> 0;
805
820
  var arr = Array(argc);
806
821
  for (; i < argc; i++) {
@@ -814,6 +829,7 @@ function createNapiModule(options) {
814
829
  if (ret.status !== 0)
815
830
  return envObject.setLastError(ret.status);
816
831
  if (result) {
832
+ result >>>= 0;
817
833
  v = envObject.ensureHandleId(ret.value);
818
834
  HEAP_DATA_VIEW.setUint32(result, v, true);
819
835
  }
@@ -841,32 +857,61 @@ function createNapiModule(options) {
841
857
  napi_open_callback_scope: napi_open_callback_scope
842
858
  });
843
859
  var emnapiTSFN = {
860
+ _liveSet: {},
844
861
  offset: {
862
+ __size__: 0,
845
863
  resource: 0,
846
- async_id: 8,
847
- trigger_async_id: 16,
848
- queue_size: 24,
849
- queue: 1 * 4 + 24,
850
- thread_count: 2 * 4 + 24,
851
- is_closing: 3 * 4 + 24,
852
- dispatch_state: 3 * 4 + 28,
853
- context: 3 * 4 + 32,
854
- max_queue_size: 4 * 4 + 32,
855
- ref: 5 * 4 + 32,
856
- env: 6 * 4 + 32,
857
- finalize_data: 7 * 4 + 32,
858
- finalize_cb: 8 * 4 + 32,
859
- call_js_cb: 9 * 4 + 32,
860
- handles_closing: 10 * 4 + 32,
861
- async_ref: 10 * 4 + 36,
862
- mutex: 10 * 4 + 40,
863
- cond: 10 * 4 + 44,
864
- end: 10 * 4 + 48
864
+ async_id: 0,
865
+ trigger_async_id: 0,
866
+ queue_size: 0,
867
+ is_some: 0,
868
+ queue: 0,
869
+ async_pending: 0,
870
+ async_u_fd: 0,
871
+ thread_count: 0,
872
+ state: 0,
873
+ dispatch_state: 0,
874
+ context: 0,
875
+ max_queue_size: 0,
876
+ ref: 0,
877
+ env: 0,
878
+ finalize_data: 0,
879
+ finalize_cb: 0,
880
+ call_js_cb: 0,
881
+ handles_closing: 0,
882
+ async_ref: 0,
883
+ mutex: 0,
884
+ cond: 0
865
885
  },
866
886
  init: function () {
887
+ emnapiTSFN._liveSet = new Set();
888
+ emnapiTSFN.offset.__size__ = 184;
889
+ emnapiTSFN.offset.resource = 0;
890
+ emnapiTSFN.offset.async_id = 8;
891
+ emnapiTSFN.offset.trigger_async_id = 16;
892
+ emnapiTSFN.offset.queue_size = 60;
893
+ emnapiTSFN.offset.is_some = 24;
894
+ emnapiTSFN.offset.queue = 64;
895
+ emnapiTSFN.offset.async_pending = 132;
896
+ emnapiTSFN.offset.async_u_fd = 96;
897
+ emnapiTSFN.offset.thread_count = 136;
898
+ emnapiTSFN.offset.state = 140;
899
+ emnapiTSFN.offset.dispatch_state = 144;
900
+ emnapiTSFN.offset.context = 148;
901
+ emnapiTSFN.offset.max_queue_size = 152;
902
+ emnapiTSFN.offset.ref = 156;
903
+ emnapiTSFN.offset.env = 160;
904
+ emnapiTSFN.offset.finalize_data = 164;
905
+ emnapiTSFN.offset.finalize_cb = 168;
906
+ emnapiTSFN.offset.call_js_cb = 172;
907
+ emnapiTSFN.offset.handles_closing = 176;
908
+ emnapiTSFN.offset.async_ref = 180;
909
+ emnapiTSFN.offset.mutex = 32;
910
+ emnapiTSFN.offset.cond = 56;
911
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
867
912
  if (typeof PThread !== 'undefined') {
868
913
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
869
- PThread.runningWorkers.forEach(emnapiTSFN.addListener);
914
+ Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
870
915
  var __original_getNewWorker_1 = PThread.getNewWorker;
871
916
  PThread.getNewWorker = function () {
872
917
  var r = __original_getNewWorker_1.apply(this, arguments);
@@ -887,7 +932,10 @@ function createNapiModule(options) {
887
932
  var type = __emnapi__.type;
888
933
  var payload = __emnapi__.payload;
889
934
  if (type === 'tsfn-send') {
890
- emnapiTSFN.dispatch(payload.tsfn);
935
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
936
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
937
+ emnapiTSFN.enqueue(payload.tsfn);
938
+ }
891
939
  }
892
940
  }
893
941
  };
@@ -909,18 +957,33 @@ function createNapiModule(options) {
909
957
  }
910
958
  return true;
911
959
  },
960
+ ensureBufferFor: function (end) {
961
+ var buffer = wasmMemory.buffer;
962
+ if (end > buffer.byteLength) {
963
+ wasmMemory.grow(0);
964
+ buffer = wasmMemory.buffer;
965
+ }
966
+ return buffer;
967
+ },
912
968
  initQueue: function (func) {
913
969
  var size = 2 * 4;
914
970
  var queue = _malloc(size);
915
971
  if (!queue)
916
972
  return false;
917
- new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
973
+ queue >>>= 0;
974
+ new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
918
975
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
919
976
  return true;
920
977
  },
921
978
  destroyQueue: function (func) {
922
979
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
923
980
  if (queue) {
981
+ var node = emnapiTSFN.loadSizeTypeValue(queue, false);
982
+ while (node !== 0) {
983
+ var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
984
+ _free(node);
985
+ node = next;
986
+ }
924
987
  _free(queue);
925
988
  }
926
989
  },
@@ -932,6 +995,7 @@ function createNapiModule(options) {
932
995
  var node = _malloc(size);
933
996
  if (!node)
934
997
  throw new Error('OOM');
998
+ node >>>= 0;
935
999
  emnapiTSFN.storeSizeTypeValue(node, data, false);
936
1000
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
937
1001
  if (head === 0 && tail === 0) {
@@ -967,11 +1031,11 @@ function createNapiModule(options) {
967
1031
  var waitCondition = function () {
968
1032
  var queueSize = emnapiTSFN.getQueueSize(func);
969
1033
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
970
- var isClosing = emnapiTSFN.getIsClosing(func);
971
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
1034
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
972
1035
  };
973
1036
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
974
- return mutex.execute(function () {
1037
+ var shouldDelete = false;
1038
+ var ret = mutex.execute(function () {
975
1039
  while (waitCondition()) {
976
1040
  if (mode === 0) {
977
1041
  return 15;
@@ -981,31 +1045,35 @@ function createNapiModule(options) {
981
1045
  }
982
1046
  cond.wait();
983
1047
  }
984
- if (emnapiTSFN.getIsClosing(func)) {
985
- if (emnapiTSFN.getThreadCount(func) === 0) {
986
- return 1;
987
- }
988
- else {
989
- emnapiTSFN.subThreadCount(func);
990
- return 16;
991
- }
992
- }
993
- else {
1048
+ if (emnapiTSFN.getState(func) === 0) {
994
1049
  emnapiTSFN.pushQueue(func, data);
995
1050
  emnapiTSFN.send(func);
996
1051
  return 0;
997
1052
  }
1053
+ if (emnapiTSFN.getThreadCount(func) === 0) {
1054
+ return 1;
1055
+ }
1056
+ emnapiTSFN.subThreadCount(func);
1057
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1058
+ return 16;
1059
+ }
1060
+ shouldDelete = true;
1061
+ return 16;
998
1062
  });
1063
+ if (shouldDelete) {
1064
+ emnapiTSFN.destroy(func);
1065
+ }
1066
+ return ret;
999
1067
  },
1000
1068
  getMutex: function (func) {
1001
1069
  var index = func + emnapiTSFN.offset.mutex;
1002
1070
  var mutex = {
1003
1071
  lock: function () {
1004
1072
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1005
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1073
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1006
1074
  if (isBrowserMain) {
1007
1075
  while (true) {
1008
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1076
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1009
1077
  if (oldValue === 0) {
1010
1078
  return;
1011
1079
  }
@@ -1013,18 +1081,18 @@ function createNapiModule(options) {
1013
1081
  }
1014
1082
  else {
1015
1083
  while (true) {
1016
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1084
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1017
1085
  if (oldValue === 0) {
1018
1086
  return;
1019
1087
  }
1020
- Atomics.wait(i32a, 0, 1);
1088
+ Atomics.wait(i32a, 0, 10);
1021
1089
  }
1022
1090
  }
1023
1091
  },
1024
1092
  unlock: function () {
1025
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1026
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
1027
- if (oldValue !== 1) {
1093
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1094
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1095
+ if (oldValue !== 10) {
1028
1096
  throw new Error('Tried to unlock while not holding the mutex');
1029
1097
  }
1030
1098
  Atomics.notify(i32a, 0, 1);
@@ -1046,14 +1114,14 @@ function createNapiModule(options) {
1046
1114
  var mutex = emnapiTSFN.getMutex(func);
1047
1115
  var cond = {
1048
1116
  wait: function () {
1049
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1117
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1050
1118
  var value = Atomics.load(i32a, 0);
1051
1119
  mutex.unlock();
1052
1120
  Atomics.wait(i32a, 0, value);
1053
1121
  mutex.lock();
1054
1122
  },
1055
1123
  signal: function () {
1056
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1124
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1057
1125
  Atomics.add(i32a, 0, 1);
1058
1126
  Atomics.notify(i32a, 0, 1);
1059
1127
  }
@@ -1066,15 +1134,15 @@ function createNapiModule(options) {
1066
1134
  addQueueSize: function (func) {
1067
1135
  var offset = emnapiTSFN.offset.queue_size;
1068
1136
  var arr, index;
1069
- arr = new Uint32Array(wasmMemory.buffer);
1070
- index = (func + offset) >> 2;
1137
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1138
+ index = (func + offset) >>> 2;
1071
1139
  Atomics.add(arr, index, 1);
1072
1140
  },
1073
1141
  subQueueSize: function (func) {
1074
1142
  var offset = emnapiTSFN.offset.queue_size;
1075
1143
  var arr, index;
1076
- arr = new Uint32Array(wasmMemory.buffer);
1077
- index = (func + offset) >> 2;
1144
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1145
+ index = (func + offset) >>> 2;
1078
1146
  Atomics.sub(arr, index, 1);
1079
1147
  },
1080
1148
  getThreadCount: function (func) {
@@ -1083,31 +1151,31 @@ function createNapiModule(options) {
1083
1151
  addThreadCount: function (func) {
1084
1152
  var offset = emnapiTSFN.offset.thread_count;
1085
1153
  var arr, index;
1086
- arr = new Uint32Array(wasmMemory.buffer);
1087
- index = (func + offset) >> 2;
1154
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1155
+ index = (func + offset) >>> 2;
1088
1156
  Atomics.add(arr, index, 1);
1089
1157
  },
1090
1158
  subThreadCount: function (func) {
1091
1159
  var offset = emnapiTSFN.offset.thread_count;
1092
1160
  var arr, index;
1093
- arr = new Uint32Array(wasmMemory.buffer);
1094
- index = (func + offset) >> 2;
1161
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1162
+ index = (func + offset) >>> 2;
1095
1163
  Atomics.sub(arr, index, 1);
1096
1164
  },
1097
- getIsClosing: function (func) {
1098
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
1165
+ getState: function (func) {
1166
+ return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
1099
1167
  },
1100
- setIsClosing: function (func, value) {
1101
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
1168
+ setState: function (func, value) {
1169
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
1102
1170
  },
1103
1171
  getHandlesClosing: function (func) {
1104
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
1172
+ return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
1105
1173
  },
1106
1174
  setHandlesClosing: function (func, value) {
1107
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
1175
+ Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
1108
1176
  },
1109
1177
  getDispatchState: function (func) {
1110
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
1178
+ return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
1111
1179
  },
1112
1180
  getContext: function (func) {
1113
1181
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -1137,66 +1205,96 @@ function createNapiModule(options) {
1137
1205
  var ret;
1138
1206
  var arr;
1139
1207
  if (unsigned) {
1140
- arr = new Uint32Array(wasmMemory.buffer);
1141
- ret = Atomics.load(arr, offset >> 2);
1208
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1209
+ ret = Atomics.load(arr, offset >>> 2);
1142
1210
  return ret;
1143
1211
  }
1144
1212
  else {
1145
- arr = new Int32Array(wasmMemory.buffer);
1146
- ret = Atomics.load(arr, offset >> 2);
1213
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1214
+ ret = Atomics.load(arr, offset >>> 2);
1147
1215
  return ret;
1148
1216
  }
1149
1217
  },
1150
1218
  storeSizeTypeValue: function (offset, value, unsigned) {
1151
1219
  var arr;
1152
1220
  if (unsigned) {
1153
- arr = new Uint32Array(wasmMemory.buffer);
1154
- Atomics.store(arr, offset >> 2, value);
1221
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1222
+ Atomics.store(arr, offset >>> 2, value);
1155
1223
  return undefined;
1156
1224
  }
1157
1225
  else {
1158
- arr = new Int32Array(wasmMemory.buffer);
1159
- Atomics.store(arr, offset >> 2, value >>> 0);
1226
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1227
+ Atomics.store(arr, offset >>> 2, value >>> 0);
1160
1228
  return undefined;
1161
1229
  }
1162
1230
  },
1231
+ releaseResources: function (func) {
1232
+ if (emnapiTSFN.getState(func) !== 2) {
1233
+ emnapiTSFN.setState(func, 2);
1234
+ var env = emnapiTSFN.getEnv(func);
1235
+ var envObject = emnapiCtx.envStore.get(env);
1236
+ var ref = emnapiTSFN.getRef(func);
1237
+ if (ref) {
1238
+ emnapiCtx.refStore.get(ref).dispose();
1239
+ }
1240
+ var resource = emnapiTSFN.getResource(func);
1241
+ emnapiCtx.refStore.get(resource).dispose();
1242
+ emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
1243
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1244
+ HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
1245
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1246
+ envObject.unref();
1247
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1248
+ var asyncRefOffset = asyncRefAddress >>> 2;
1249
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1250
+ if (Atomics.load(arr, asyncRefOffset) > 0) {
1251
+ Atomics.store(arr, asyncRefOffset, 0);
1252
+ emnapiCtx.decreaseWaitingRequestCounter();
1253
+ }
1254
+ if (emnapiNodeBinding) {
1255
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1256
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1257
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1258
+ _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1259
+ }
1260
+ }
1261
+ },
1163
1262
  destroy: function (func) {
1263
+ emnapiTSFN._liveSet.delete(func);
1164
1264
  emnapiTSFN.destroyQueue(func);
1165
- var env = emnapiTSFN.getEnv(func);
1166
- var envObject = emnapiCtx.envStore.get(env);
1167
- var ref = emnapiTSFN.getRef(func);
1168
- if (ref) {
1169
- emnapiCtx.refStore.get(ref).dispose();
1170
- }
1171
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1172
- envObject.unref();
1173
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1174
- var arr = new Int32Array(wasmMemory.buffer);
1175
- if (Atomics.load(arr, asyncRefOffset)) {
1176
- Atomics.store(arr, asyncRefOffset, 0);
1177
- emnapiCtx.decreaseWaitingRequestCounter();
1178
- }
1179
- var resource = emnapiTSFN.getResource(func);
1180
- emnapiCtx.refStore.get(resource).dispose();
1181
- if (emnapiNodeBinding) {
1182
- var view = new DataView(wasmMemory.buffer);
1183
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1184
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1185
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1186
- }
1265
+ emnapiTSFN.releaseResources(func);
1187
1266
  _free(func);
1188
1267
  },
1189
- emptyQueueAndDelete: function (func) {
1268
+ emptyQueue: function (func) {
1269
+ var drainQueue = [];
1270
+ emnapiTSFN.getMutex(func).execute(function () {
1271
+ while (emnapiTSFN.getQueueSize(func) > 0) {
1272
+ drainQueue.push(emnapiTSFN.shiftQueue(func));
1273
+ }
1274
+ });
1190
1275
  var callJsCb = emnapiTSFN.getCallJSCb(func);
1191
1276
  var context = emnapiTSFN.getContext(func);
1192
1277
  var data;
1193
- while (emnapiTSFN.getQueueSize(func) > 0) {
1194
- data = emnapiTSFN.shiftQueue(func);
1278
+ for (var i = 0; i < drainQueue.length; i++) {
1279
+ data = drainQueue[i];
1195
1280
  if (callJsCb) {
1196
1281
  (wasmTable.get(callJsCb))(0, 0, context, data);
1197
1282
  }
1198
1283
  }
1199
- emnapiTSFN.destroy(func);
1284
+ },
1285
+ maybeDelete: function (func) {
1286
+ var shouldDelete = false;
1287
+ emnapiTSFN.getMutex(func).execute(function () {
1288
+ if (emnapiTSFN.getThreadCount(func) > 0) {
1289
+ emnapiTSFN.releaseResources(func);
1290
+ }
1291
+ else {
1292
+ shouldDelete = true;
1293
+ }
1294
+ });
1295
+ if (shouldDelete) {
1296
+ emnapiTSFN.destroy(func);
1297
+ }
1200
1298
  },
1201
1299
  finalize: function (func) {
1202
1300
  var env = emnapiTSFN.getEnv(func);
@@ -1209,12 +1307,13 @@ function createNapiModule(options) {
1209
1307
  envObject.callFinalizerInternal(0, finalize, data, context);
1210
1308
  };
1211
1309
  try {
1310
+ emnapiTSFN.emptyQueue(func);
1212
1311
  if (finalize) {
1213
1312
  if (emnapiNodeBinding) {
1214
1313
  var resource = emnapiTSFN.getResource(func);
1215
1314
  var resource_value = emnapiCtx.refStore.get(resource).get();
1216
1315
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1217
- var view = new DataView(wasmMemory.buffer);
1316
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1218
1317
  var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1219
1318
  var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1220
1319
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
@@ -1226,7 +1325,7 @@ function createNapiModule(options) {
1226
1325
  f();
1227
1326
  }
1228
1327
  }
1229
- emnapiTSFN.emptyQueueAndDelete(func);
1328
+ emnapiTSFN.maybeDelete(func);
1230
1329
  }
1231
1330
  finally {
1232
1331
  emnapiCtx.closeScope(envObject);
@@ -1242,7 +1341,7 @@ function createNapiModule(options) {
1242
1341
  try {
1243
1342
  if (set_closing) {
1244
1343
  emnapiTSFN.getMutex(func).execute(function () {
1245
- emnapiTSFN.setIsClosing(func, 1);
1344
+ emnapiTSFN.setState(func, 1);
1246
1345
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1247
1346
  emnapiTSFN.getCond(func).signal();
1248
1347
  }
@@ -1252,6 +1351,7 @@ function createNapiModule(options) {
1252
1351
  return;
1253
1352
  }
1254
1353
  emnapiTSFN.setHandlesClosing(func, 1);
1354
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1255
1355
  emnapiCtx.feature.setImmediate(function () {
1256
1356
  emnapiTSFN.finalize(func);
1257
1357
  });
@@ -1267,10 +1367,7 @@ function createNapiModule(options) {
1267
1367
  var mutex = emnapiTSFN.getMutex(func);
1268
1368
  var cond = emnapiTSFN.getCond(func);
1269
1369
  mutex.execute(function () {
1270
- if (emnapiTSFN.getIsClosing(func)) {
1271
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1272
- }
1273
- else {
1370
+ if (emnapiTSFN.getState(func) === 0) {
1274
1371
  var size = emnapiTSFN.getQueueSize(func);
1275
1372
  if (size > 0) {
1276
1373
  data = emnapiTSFN.shiftQueue(func);
@@ -1283,7 +1380,7 @@ function createNapiModule(options) {
1283
1380
  }
1284
1381
  if (size === 0) {
1285
1382
  if (emnapiTSFN.getThreadCount(func) === 0) {
1286
- emnapiTSFN.setIsClosing(func, 1);
1383
+ emnapiTSFN.setState(func, 1);
1287
1384
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1288
1385
  cond.signal();
1289
1386
  }
@@ -1294,6 +1391,9 @@ function createNapiModule(options) {
1294
1391
  has_more = true;
1295
1392
  }
1296
1393
  }
1394
+ else {
1395
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1396
+ }
1297
1397
  });
1298
1398
  if (popped_value) {
1299
1399
  var env = emnapiTSFN.getEnv(func);
@@ -1321,7 +1421,7 @@ function createNapiModule(options) {
1321
1421
  var resource = emnapiTSFN.getResource(func);
1322
1422
  var resource_value = emnapiCtx.refStore.get(resource).get();
1323
1423
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1324
- var view = new DataView(wasmMemory.buffer);
1424
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1325
1425
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
1326
1426
  asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
1327
1427
  triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
@@ -1340,8 +1440,9 @@ function createNapiModule(options) {
1340
1440
  dispatch: function (func) {
1341
1441
  var has_more = true;
1342
1442
  var iterations_left = 1000;
1343
- var ui32a = new Uint32Array(wasmMemory.buffer);
1344
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
1443
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1444
+ var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
1445
+ var index = dispatchStateAddress >>> 2;
1345
1446
  while (has_more && --iterations_left !== 0) {
1346
1447
  Atomics.store(ui32a, index, 1);
1347
1448
  has_more = emnapiTSFN.dispatchOne(func);
@@ -1353,25 +1454,66 @@ function createNapiModule(options) {
1353
1454
  emnapiTSFN.send(func);
1354
1455
  }
1355
1456
  },
1356
- send: function (func) {
1357
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
1358
- if ((current_state & 1) === 1) {
1457
+ enqueue: function (func) {
1458
+ var pending = func + emnapiTSFN.offset.async_pending;
1459
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
1460
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
1461
+ if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
1359
1462
  return;
1360
1463
  }
1361
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1362
- postMessage({
1363
- __emnapi__: {
1364
- type: 'tsfn-send',
1365
- payload: {
1366
- tsfn: func
1464
+ emnapiCtx.feature.setImmediate(function () {
1465
+ if (!emnapiTSFN._liveSet.has(func)) {
1466
+ return;
1467
+ }
1468
+ if (Atomics.load(i32a, pending >>> 2) === 0) {
1469
+ Atomics.store(i32a, scheduled >>> 2, 0);
1470
+ return;
1471
+ }
1472
+ emnapiCtx.feature.setImmediate(function () {
1473
+ try {
1474
+ if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
1475
+ return;
1476
+ }
1477
+ if (!emnapiTSFN._liveSet.has(func)) {
1478
+ return;
1479
+ }
1480
+ emnapiTSFN.dispatch(func);
1481
+ }
1482
+ finally {
1483
+ if (emnapiTSFN._liveSet.has(func)) {
1484
+ Atomics.store(i32a, scheduled >>> 2, 0);
1485
+ if (Atomics.load(i32a, pending >>> 2) !== 0) {
1486
+ emnapiTSFN.enqueue(func);
1487
+ }
1367
1488
  }
1368
1489
  }
1369
1490
  });
1491
+ });
1492
+ },
1493
+ send: function (func) {
1494
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1495
+ var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
1496
+ if ((current_state & 1) === 1) {
1497
+ return;
1370
1498
  }
1371
- else {
1372
- emnapiCtx.feature.setImmediate(function () {
1373
- emnapiTSFN.dispatch(func);
1374
- });
1499
+ var pendng = func + emnapiTSFN.offset.async_pending;
1500
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
1501
+ return;
1502
+ }
1503
+ if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
1504
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1505
+ postMessage({
1506
+ __emnapi__: {
1507
+ type: 'tsfn-send',
1508
+ payload: {
1509
+ tsfn: func
1510
+ }
1511
+ }
1512
+ });
1513
+ }
1514
+ else {
1515
+ emnapiTSFN.enqueue(func);
1516
+ }
1375
1517
  }
1376
1518
  }
1377
1519
  };
@@ -1382,6 +1524,13 @@ function createNapiModule(options) {
1382
1524
  envObject.checkGCAccess();
1383
1525
  if (!async_resource_name)
1384
1526
  return envObject.setLastError(1);
1527
+ max_queue_size >>>= 0;
1528
+ initial_thread_count >>>= 0;
1529
+ env >>>= 0;
1530
+ thread_finalize_data >>>= 0;
1531
+ thread_finalize_cb >>>= 0;
1532
+ context >>>= 0;
1533
+ call_js_cb >>>= 0;
1385
1534
  max_queue_size = max_queue_size >>> 0;
1386
1535
  initial_thread_count = initial_thread_count >>> 0;
1387
1536
  if (initial_thread_count === 0) {
@@ -1390,6 +1539,7 @@ function createNapiModule(options) {
1390
1539
  if (!result)
1391
1540
  return envObject.setLastError(1);
1392
1541
  var ref = 0;
1542
+ func >>>= 0;
1393
1543
  if (!func) {
1394
1544
  if (!call_js_cb)
1395
1545
  return envObject.setLastError(1);
@@ -1419,21 +1569,23 @@ function createNapiModule(options) {
1419
1569
  }
1420
1570
  asyncResourceName = String(asyncResourceName);
1421
1571
  var resource_name = envObject.ensureHandleId(asyncResourceName);
1422
- var sizeofTSFN = emnapiTSFN.offset.end;
1572
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
1423
1573
  var tsfn = _malloc(sizeofTSFN);
1424
1574
  if (!tsfn)
1425
1575
  return envObject.setLastError(9);
1426
- new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1576
+ tsfn >>>= 0;
1577
+ new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1427
1578
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
1428
1579
  var resource_ = resourceRef.id;
1429
1580
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1430
- HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
1581
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
1431
1582
  if (!emnapiTSFN.initQueue(tsfn)) {
1432
1583
  _free(tsfn);
1433
1584
  resourceRef.dispose();
1434
1585
  return envObject.setLastError(9);
1435
1586
  }
1436
1587
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
1588
+ HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
1437
1589
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1438
1590
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1439
1591
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
@@ -1443,9 +1595,11 @@ function createNapiModule(options) {
1443
1595
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1444
1596
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1445
1597
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
1598
+ emnapiTSFN._liveSet.add(tsfn);
1446
1599
  envObject.ref();
1447
1600
  emnapiCtx.increaseWaitingRequestCounter();
1448
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1601
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1602
+ result >>>= 0;
1449
1603
  HEAP_DATA_VIEW.setUint32(result, tsfn, true);
1450
1604
  return envObject.clearLastError();
1451
1605
  }
@@ -1454,6 +1608,8 @@ function createNapiModule(options) {
1454
1608
  abort();
1455
1609
  return 1;
1456
1610
  }
1611
+ func >>>= 0;
1612
+ result >>>= 0;
1457
1613
  var context = emnapiTSFN.getContext(func);
1458
1614
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1459
1615
  HEAP_DATA_VIEW.setUint32(result, context, true);
@@ -1464,6 +1620,8 @@ function createNapiModule(options) {
1464
1620
  abort();
1465
1621
  return 1;
1466
1622
  }
1623
+ func >>>= 0;
1624
+ data >>>= 0;
1467
1625
  return emnapiTSFN.push(func, data, mode);
1468
1626
  }
1469
1627
  function napi_acquire_threadsafe_function(func) {
@@ -1471,13 +1629,14 @@ function createNapiModule(options) {
1471
1629
  abort();
1472
1630
  return 1;
1473
1631
  }
1632
+ func >>>= 0;
1474
1633
  var mutex = emnapiTSFN.getMutex(func);
1475
1634
  return mutex.execute(function () {
1476
- if (emnapiTSFN.getIsClosing(func)) {
1477
- return 16;
1635
+ if (emnapiTSFN.getState(func) === 0) {
1636
+ emnapiTSFN.addThreadCount(func);
1637
+ return 0;
1478
1638
  }
1479
- emnapiTSFN.addThreadCount(func);
1480
- return 0;
1639
+ return 16;
1481
1640
  });
1482
1641
  }
1483
1642
  function napi_release_threadsafe_function(func, mode) {
@@ -1485,37 +1644,52 @@ function createNapiModule(options) {
1485
1644
  abort();
1486
1645
  return 1;
1487
1646
  }
1647
+ func >>>= 0;
1488
1648
  var mutex = emnapiTSFN.getMutex(func);
1489
1649
  var cond = emnapiTSFN.getCond(func);
1490
- return mutex.execute(function () {
1650
+ var shouldDelete = false;
1651
+ var ret = mutex.execute(function () {
1491
1652
  if (emnapiTSFN.getThreadCount(func) === 0) {
1492
1653
  return 1;
1493
1654
  }
1494
1655
  emnapiTSFN.subThreadCount(func);
1495
1656
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
1496
- var isClosing = emnapiTSFN.getIsClosing(func);
1497
- if (!isClosing) {
1498
- var isClosingValue = (mode === 1) ? 1 : 0;
1499
- emnapiTSFN.setIsClosing(func, isClosingValue);
1500
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
1657
+ if (emnapiTSFN.getState(func) === 0) {
1658
+ if (mode === 1) {
1659
+ emnapiTSFN.setState(func, 1);
1660
+ }
1661
+ if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
1501
1662
  cond.signal();
1502
1663
  }
1503
1664
  emnapiTSFN.send(func);
1504
1665
  }
1505
1666
  }
1667
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1668
+ return 0;
1669
+ }
1670
+ shouldDelete = true;
1506
1671
  return 0;
1507
1672
  });
1673
+ if (shouldDelete) {
1674
+ emnapiTSFN.destroy(func);
1675
+ }
1676
+ return ret;
1508
1677
  }
1509
1678
  function napi_unref_threadsafe_function(env, func) {
1510
1679
  if (!func) {
1511
1680
  abort();
1512
1681
  return 1;
1513
1682
  }
1514
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1515
- var arr = new Int32Array(wasmMemory.buffer);
1516
- if (Atomics.load(arr, asyncRefOffset)) {
1517
- Atomics.store(arr, asyncRefOffset, 0);
1518
- emnapiCtx.decreaseWaitingRequestCounter();
1683
+ func >>>= 0;
1684
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1685
+ var asyncRefOffset = asyncRefAddress >>> 2;
1686
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1687
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1688
+ if (currentValue > 0) {
1689
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
1690
+ if (currentValue === 1) {
1691
+ emnapiCtx.decreaseWaitingRequestCounter();
1692
+ }
1519
1693
  }
1520
1694
  return 0;
1521
1695
  }
@@ -1524,34 +1698,66 @@ function createNapiModule(options) {
1524
1698
  abort();
1525
1699
  return 1;
1526
1700
  }
1527
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1528
- var arr = new Int32Array(wasmMemory.buffer);
1529
- if (!Atomics.load(arr, asyncRefOffset)) {
1530
- Atomics.store(arr, asyncRefOffset, 1);
1701
+ func >>>= 0;
1702
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1703
+ var asyncRefOffset = asyncRefAddress >>> 2;
1704
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1705
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1706
+ if (!currentValue) {
1531
1707
  emnapiCtx.increaseWaitingRequestCounter();
1532
1708
  }
1709
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
1533
1710
  return 0;
1534
1711
  }
1535
1712
  var emnapiAWMT = {
1536
- unusedWorkers: [],
1537
- runningWorkers: [],
1538
- workQueue: [],
1713
+ pool: [],
1539
1714
  workerReady: null,
1715
+ globalAddress: 0,
1716
+ globalOffset: {
1717
+ idle_threads: 0,
1718
+ q: 1 * 4,
1719
+ next: 1 * 4,
1720
+ prev: 2 * 4,
1721
+ mutex: 3 * 4,
1722
+ cond: 4 * 4,
1723
+ exit_message: 5 * 4,
1724
+ end: 7 * 4
1725
+ },
1540
1726
  offset: {
1541
1727
  resource: 0,
1542
1728
  async_id: 8,
1543
1729
  trigger_async_id: 16,
1544
1730
  env: 24,
1545
- data: 1 * 4 + 24,
1546
- execute: 2 * 4 + 24,
1547
- complete: 3 * 4 + 24,
1548
- end: 4 * 4 + 24
1731
+ status: 1 * 4 + 24,
1732
+ queue: 2 * 4 + 24,
1733
+ queue_next: 2 * 4 + 24,
1734
+ queue_prev: 3 * 4 + 24,
1735
+ data: 4 * 4 + 24,
1736
+ execute: 5 * 4 + 24,
1737
+ complete: 6 * 4 + 24,
1738
+ end: 7 * 4 + 24
1739
+ },
1740
+ ensureBufferFor: function (end) {
1741
+ var buffer = wasmMemory.buffer;
1742
+ if (end > buffer.byteLength) {
1743
+ wasmMemory.grow(0);
1744
+ buffer = wasmMemory.buffer;
1745
+ }
1746
+ return buffer;
1549
1747
  },
1550
1748
  init: function () {
1551
- emnapiAWMT.unusedWorkers = [];
1552
- emnapiAWMT.runningWorkers = [];
1553
- emnapiAWMT.workQueue = [];
1749
+ emnapiAWMT.pool = [];
1554
1750
  emnapiAWMT.workerReady = null;
1751
+ if (typeof PThread !== 'undefined') {
1752
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
1753
+ Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
1754
+ var __original_getNewWorker_1 = PThread.getNewWorker;
1755
+ PThread.getNewWorker = function () {
1756
+ var r = __original_getNewWorker_1.apply(this, arguments);
1757
+ emnapiAWMT.addListener(r);
1758
+ return r;
1759
+ };
1760
+ }
1555
1761
  },
1556
1762
  addListener: function (worker) {
1557
1763
  if (!worker)
@@ -1565,18 +1771,8 @@ function createNapiModule(options) {
1565
1771
  var type = __emnapi__.type;
1566
1772
  var payload = __emnapi__.payload;
1567
1773
  if (type === 'async-work-complete') {
1568
- emnapiCtx.decreaseWaitingRequestCounter();
1569
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
1570
- emnapiAWMT.unusedWorkers.push(worker);
1571
- emnapiAWMT.checkIdleWorker();
1572
1774
  emnapiAWMT.callComplete(payload.work, 0);
1573
1775
  }
1574
- else if (type === 'async-work-queue') {
1575
- emnapiAWMT.scheduleWork(payload.work);
1576
- }
1577
- else if (type === 'async-work-cancel') {
1578
- emnapiAWMT.cancelWork(payload.work);
1579
- }
1580
1776
  }
1581
1777
  };
1582
1778
  var dispose = function () {
@@ -1597,142 +1793,233 @@ function createNapiModule(options) {
1597
1793
  }
1598
1794
  return true;
1599
1795
  },
1796
+ initGlobal: function () {
1797
+ if (!emnapiAWMT.globalAddress) {
1798
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
1799
+ emnapiAWMT.globalAddress >>>= 0;
1800
+ var size = emnapiAWMT.globalOffset.end;
1801
+ var addr = emnapiAWMT.globalAddress;
1802
+ new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
1803
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
1804
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
1805
+ }
1806
+ },
1807
+ terminateWorkers: function () {
1808
+ emnapiAWMT.pool.forEach(function (w) {
1809
+ var _a, _b;
1810
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
1811
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
1812
+ w.terminate();
1813
+ });
1814
+ emnapiAWMT.pool.length = 0;
1815
+ },
1600
1816
  initWorkers: function (n) {
1601
1817
  if (ENVIRONMENT_IS_PTHREAD) {
1602
1818
  return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
1603
1819
  }
1604
1820
  if (emnapiAWMT.workerReady)
1605
1821
  return emnapiAWMT.workerReady;
1606
- if (typeof onCreateWorker !== 'function') {
1607
- throw new TypeError('`options.onCreateWorker` is not a function');
1608
- }
1609
- var promises = [];
1610
- var args = [];
1611
1822
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
1612
1823
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
1613
1824
  }
1825
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
1826
+ var args = [];
1827
+ emnapiAWMT.initGlobal();
1614
1828
  for (var i = 0; i < n; ++i) {
1615
- args.push(wasmInstance.exports.emnapi_async_worker_create());
1829
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
1616
1830
  }
1617
- try {
1618
- var _loop_1 = function (i) {
1619
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
1620
- var p = PThread.loadWasmModuleToWorker(worker);
1621
- emnapiAWMT.addListener(worker);
1622
- promises.push(p.then(function () {
1623
- if (typeof worker.unref === 'function') {
1624
- worker.unref();
1625
- }
1626
- }));
1627
- emnapiAWMT.unusedWorkers.push(worker);
1628
- var arg = args[i];
1629
- worker.threadBlockBase = arg;
1630
- worker.postMessage({
1631
- __emnapi__: {
1632
- type: 'async-worker-init',
1633
- payload: { arg: arg }
1634
- }
1635
- });
1636
- };
1637
- for (var i = 0; i < n; ++i) {
1638
- _loop_1(i);
1831
+ var promises = args.map(function (index) {
1832
+ if (index === 0) {
1833
+ return Promise.reject(new Error('Failed to create async worker'));
1639
1834
  }
1640
- }
1641
- catch (err) {
1642
- for (var i = 0; i < n; ++i) {
1643
- var arg = args[i];
1644
- _free(arg);
1835
+ var worker;
1836
+ if (index < 0) {
1837
+ worker = emnapiAWMT.pool[-index - 1];
1838
+ if (worker)
1839
+ return worker.whenLoaded;
1645
1840
  }
1646
- throw err;
1647
- }
1841
+ index >>>= 0;
1842
+ var tidOffset = 20;
1843
+ var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
1844
+ var tid = view.getInt32(index + tidOffset, true);
1845
+ worker = PThread.pthreads[tid];
1846
+ return worker.whenLoaded;
1847
+ });
1648
1848
  emnapiAWMT.workerReady = Promise.all(promises);
1649
1849
  return emnapiAWMT.workerReady;
1650
1850
  },
1651
- checkIdleWorker: function () {
1652
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
1653
- var worker = emnapiAWMT.unusedWorkers.shift();
1654
- var work = emnapiAWMT.workQueue.shift();
1655
- emnapiAWMT.runningWorkers.push(worker);
1656
- worker.postMessage({
1657
- __emnapi__: {
1658
- type: 'async-work-execute',
1659
- payload: { work: work }
1660
- }
1661
- });
1662
- }
1663
- },
1664
1851
  getResource: function (work) {
1665
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
1852
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
1853
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1854
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
1666
1855
  },
1667
1856
  getExecute: function (work) {
1668
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
1857
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
1858
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1859
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
1669
1860
  },
1670
1861
  getComplete: function (work) {
1671
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
1862
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
1863
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1864
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
1672
1865
  },
1673
1866
  getEnv: function (work) {
1674
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
1867
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
1868
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1869
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
1675
1870
  },
1676
1871
  getData: function (work) {
1677
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
1872
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
1873
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1874
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
1875
+ },
1876
+ getMutex: function () {
1877
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
1878
+ var mutex = {
1879
+ lock: function () {
1880
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1881
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1882
+ if (isBrowserMain) {
1883
+ while (true) {
1884
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1885
+ if (oldValue === 0) {
1886
+ return;
1887
+ }
1888
+ }
1889
+ }
1890
+ else {
1891
+ while (true) {
1892
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1893
+ if (oldValue === 0) {
1894
+ return;
1895
+ }
1896
+ Atomics.wait(i32a, 0, 10);
1897
+ }
1898
+ }
1899
+ },
1900
+ unlock: function () {
1901
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1902
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1903
+ if (oldValue !== 10) {
1904
+ throw new Error('Tried to unlock while not holding the mutex');
1905
+ }
1906
+ Atomics.notify(i32a, 0, 1);
1907
+ },
1908
+ execute: function (fn) {
1909
+ mutex.lock();
1910
+ try {
1911
+ return fn();
1912
+ }
1913
+ finally {
1914
+ mutex.unlock();
1915
+ }
1916
+ }
1917
+ };
1918
+ return mutex;
1919
+ },
1920
+ getCond: function () {
1921
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
1922
+ var mutex = emnapiAWMT.getMutex();
1923
+ var cond = {
1924
+ wait: function () {
1925
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1926
+ var value = Atomics.load(i32a, 0);
1927
+ mutex.unlock();
1928
+ Atomics.wait(i32a, 0, value);
1929
+ mutex.lock();
1930
+ },
1931
+ signal: function () {
1932
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1933
+ Atomics.add(i32a, 0, 1);
1934
+ Atomics.notify(i32a, 0, 1);
1935
+ }
1936
+ };
1937
+ return cond;
1938
+ },
1939
+ queueInit: function (q) {
1940
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1941
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1942
+ HEAP_DATA_VIEW.setUint32(q, q, true);
1943
+ HEAP_DATA_VIEW.setUint32(q + 4, q, true);
1944
+ },
1945
+ queueInsertTail: function (h, q) {
1946
+ emnapiAWMT.ensureBufferFor(h + 4 + 4);
1947
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1948
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1949
+ HEAP_DATA_VIEW.setUint32(q, h, true);
1950
+ var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
1951
+ HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
1952
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1953
+ HEAP_DATA_VIEW.setUint32(qprev, q, true);
1954
+ HEAP_DATA_VIEW.setUint32(h + 4, q, true);
1955
+ },
1956
+ queueRemove: function (q) {
1957
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1958
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1959
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1960
+ var qnext = HEAP_DATA_VIEW.getUint32(q, true);
1961
+ HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
1962
+ HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
1963
+ },
1964
+ queueEmpty: function (q) {
1965
+ emnapiAWMT.ensureBufferFor(q + 4);
1966
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1967
+ return q == HEAP_DATA_VIEW.getUint32(q, true);
1678
1968
  },
1679
1969
  scheduleWork: function (work) {
1680
1970
  var _a;
1681
- if (ENVIRONMENT_IS_PTHREAD) {
1682
- var postMessage_1 = napiModule.postMessage;
1683
- postMessage_1({
1684
- __emnapi__: {
1685
- type: 'async-work-queue',
1686
- payload: { work: work }
1687
- }
1971
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
1972
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1973
+ emnapiAWMT.workerReady.ready = true;
1974
+ }).catch(function (err) {
1975
+ emnapiAWMT.workerReady = null;
1976
+ throw err;
1688
1977
  });
1689
- return;
1690
1978
  }
1691
1979
  emnapiCtx.increaseWaitingRequestCounter();
1692
- emnapiAWMT.workQueue.push(work);
1693
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
1694
- emnapiAWMT.checkIdleWorker();
1980
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
1981
+ Atomics.store(statusBuffer, 0, 0);
1982
+ var mutex = emnapiAWMT.getMutex();
1983
+ var cond = emnapiAWMT.getCond();
1984
+ mutex.lock();
1985
+ try {
1986
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
1695
1987
  }
1696
- else {
1697
- var fail = function (err) {
1698
- emnapiCtx.decreaseWaitingRequestCounter();
1699
- throw err;
1700
- };
1701
- try {
1702
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1703
- emnapiAWMT.workerReady.ready = true;
1704
- emnapiAWMT.checkIdleWorker();
1705
- }, fail);
1706
- }
1707
- catch (err) {
1708
- fail(err);
1709
- }
1988
+ catch (err) {
1989
+ emnapiCtx.decreaseWaitingRequestCounter();
1990
+ mutex.unlock();
1991
+ throw err;
1992
+ }
1993
+ emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
1994
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1995
+ if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
1996
+ cond.signal();
1710
1997
  }
1998
+ mutex.unlock();
1711
1999
  },
1712
2000
  cancelWork: function (work) {
1713
- if (ENVIRONMENT_IS_PTHREAD) {
1714
- var postMessage_2 = napiModule.postMessage;
1715
- postMessage_2({
1716
- __emnapi__: {
1717
- type: 'async-work-cancel',
1718
- payload: { work: work }
1719
- }
1720
- });
1721
- return 0;
2001
+ var cancelled = false;
2002
+ emnapiAWMT.getMutex().execute(function () {
2003
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
2004
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2005
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
2006
+ if (cancelled) {
2007
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
2008
+ }
2009
+ });
2010
+ if (!cancelled) {
2011
+ return 9;
1722
2012
  }
1723
- var index = emnapiAWMT.workQueue.indexOf(work);
1724
- if (index !== -1) {
1725
- emnapiAWMT.workQueue.splice(index, 1);
1726
- emnapiCtx.feature.setImmediate(function () {
1727
- emnapiCtx.decreaseWaitingRequestCounter();
1728
- emnapiAWMT.checkIdleWorker();
1729
- emnapiAWMT.callComplete(work, 11);
1730
- });
1731
- return 0;
2013
+ if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
2014
+ return 9;
1732
2015
  }
1733
- return 9;
2016
+ emnapiCtx.feature.setImmediate(function () {
2017
+ emnapiAWMT.callComplete(work, 11);
2018
+ });
2019
+ return 0;
1734
2020
  },
1735
2021
  callComplete: function (work, status) {
2022
+ emnapiCtx.decreaseWaitingRequestCounter();
1736
2023
  var complete = emnapiAWMT.getComplete(work);
1737
2024
  var env = emnapiAWMT.getEnv(work);
1738
2025
  var data = emnapiAWMT.getData(work);
@@ -1750,7 +2037,7 @@ function createNapiModule(options) {
1750
2037
  var resource = emnapiAWMT.getResource(work);
1751
2038
  var resource_value = emnapiCtx.refStore.get(resource).get();
1752
2039
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1753
- var view = new DataView(wasmMemory.buffer);
2040
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
1754
2041
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
1755
2042
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
1756
2043
  emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
@@ -1767,6 +2054,7 @@ function createNapiModule(options) {
1767
2054
  }
1768
2055
  }
1769
2056
  };
2057
+ emnapiAWMT.init();
1770
2058
  var napi_create_async_work = singleThreadAsyncWork
1771
2059
  ? function (env, resource, resource_name, execute, complete, data, result) {
1772
2060
  if (!env)
@@ -1788,6 +2076,7 @@ function createNapiModule(options) {
1788
2076
  return envObject.setLastError(1);
1789
2077
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
1790
2078
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
2079
+ result >>>= 0;
1791
2080
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1792
2081
  HEAP_DATA_VIEW.setUint32(result, id, true);
1793
2082
  return envObject.clearLastError();
@@ -1814,7 +2103,8 @@ function createNapiModule(options) {
1814
2103
  var aw = _malloc(sizeofAW);
1815
2104
  if (!aw)
1816
2105
  return envObject.setLastError(9);
1817
- new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
2106
+ aw >>>= 0;
2107
+ new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
1818
2108
  var s = envObject.ensureHandleId(resourceObject);
1819
2109
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
1820
2110
  var resource_ = resourceRef.id;
@@ -1825,6 +2115,8 @@ function createNapiModule(options) {
1825
2115
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
1826
2116
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
1827
2117
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
2118
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
2119
+ result >>>= 0;
1828
2120
  HEAP_DATA_VIEW.setUint32(result, aw, true);
1829
2121
  return envObject.clearLastError();
1830
2122
  };
@@ -1836,6 +2128,7 @@ function createNapiModule(options) {
1836
2128
  envObject.checkGCAccess();
1837
2129
  if (!work)
1838
2130
  return envObject.setLastError(1);
2131
+ work >>>= 0;
1839
2132
  emnapiAWST.remove(work);
1840
2133
  return envObject.clearLastError();
1841
2134
  }
@@ -1846,10 +2139,11 @@ function createNapiModule(options) {
1846
2139
  envObject.checkGCAccess();
1847
2140
  if (!work)
1848
2141
  return envObject.setLastError(1);
2142
+ work >>>= 0;
1849
2143
  var resource = emnapiAWMT.getResource(work);
1850
2144
  emnapiCtx.refStore.get(resource).dispose();
1851
2145
  if (emnapiNodeBinding) {
1852
- var view = new DataView(wasmMemory.buffer);
2146
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
1853
2147
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
1854
2148
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
1855
2149
  _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
@@ -1864,6 +2158,7 @@ function createNapiModule(options) {
1864
2158
  var envObject = emnapiCtx.envStore.get(env);
1865
2159
  if (!work)
1866
2160
  return envObject.setLastError(1);
2161
+ work >>>= 0;
1867
2162
  emnapiAWST.queue(work);
1868
2163
  return envObject.clearLastError();
1869
2164
  }
@@ -1873,6 +2168,7 @@ function createNapiModule(options) {
1873
2168
  var envObject = emnapiCtx.envStore.get(env);
1874
2169
  if (!work)
1875
2170
  return envObject.setLastError(1);
2171
+ work >>>= 0;
1876
2172
  emnapiAWMT.scheduleWork(work);
1877
2173
  return envObject.clearLastError();
1878
2174
  };
@@ -1883,6 +2179,7 @@ function createNapiModule(options) {
1883
2179
  var envObject = emnapiCtx.envStore.get(env);
1884
2180
  if (!work)
1885
2181
  return envObject.setLastError(1);
2182
+ work >>>= 0;
1886
2183
  var status = emnapiAWST.cancel(work);
1887
2184
  if (status === 0)
1888
2185
  return envObject.clearLastError();
@@ -1894,41 +2191,125 @@ function createNapiModule(options) {
1894
2191
  var envObject = emnapiCtx.envStore.get(env);
1895
2192
  if (!work)
1896
2193
  return envObject.setLastError(1);
2194
+ work >>>= 0;
1897
2195
  var status = emnapiAWMT.cancelWork(work);
1898
2196
  if (status === 0)
1899
2197
  return envObject.clearLastError();
1900
2198
  return envObject.setLastError(status);
1901
2199
  };
1902
- function initWorker(startArg) {
2200
+ function _emnapi_async_worker(globalAddress) {
2201
+ globalAddress >>>= 0;
2202
+ emnapiAWMT.globalAddress = globalAddress;
2203
+ var mutex = emnapiAWMT.getMutex();
2204
+ var cond = emnapiAWMT.getCond();
2205
+ mutex.lock();
2206
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
2207
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
2208
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
2209
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2210
+ for (;;) {
2211
+ emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
2212
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
2213
+ Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2214
+ cond.wait();
2215
+ Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2216
+ }
2217
+ var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
2218
+ if (q === exitMessageAddr) {
2219
+ cond.signal();
2220
+ mutex.unlock();
2221
+ break;
2222
+ }
2223
+ var work = q - emnapiAWMT.offset.queue;
2224
+ emnapiAWMT.queueRemove(q);
2225
+ emnapiAWMT.queueInit(q);
2226
+ mutex.unlock();
2227
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
2228
+ if (Atomics.load(statusBuffer, 0) === 1) {
2229
+ abort('unreachable');
2230
+ }
2231
+ var execute = emnapiAWMT.getExecute(work);
2232
+ var env = emnapiAWMT.getEnv(work);
2233
+ var data = emnapiAWMT.getData(work);
2234
+ (wasmTable.get(execute))(env, data);
2235
+ Atomics.store(statusBuffer, 0, 2);
2236
+ var postMessage_1 = napiModule.postMessage;
2237
+ postMessage_1({
2238
+ __emnapi__: {
2239
+ type: 'async-work-complete',
2240
+ payload: { work: work }
2241
+ }
2242
+ });
2243
+ mutex.lock();
2244
+ }
2245
+ return 0;
2246
+ }
2247
+ function _emnapi_spawn_worker(f, globalAddress) {
2248
+ if (typeof onCreateWorker !== 'function') {
2249
+ throw new TypeError('`options.onCreateWorker` is not a function');
2250
+ }
2251
+ var promises = [];
2252
+ var args = [];
2253
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2254
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2255
+ }
2256
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
2257
+ var handleError = function (e) {
2258
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
2259
+ emnapiAWMT.terminateWorkers();
2260
+ }
2261
+ };
2262
+ var ret;
2263
+ try {
2264
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2265
+ var p = PThread.loadWasmModuleToWorker(worker_1);
2266
+ if (ENVIRONMENT_IS_NODE) {
2267
+ worker_1.on('error', handleError);
2268
+ }
2269
+ else {
2270
+ worker_1.addEventListener('error', handleError, false);
2271
+ }
2272
+ emnapiAWMT.addListener(worker_1);
2273
+ emnapiTSFN.addListener(worker_1);
2274
+ promises.push(p.then(function () {
2275
+ if (typeof worker_1.unref === 'function') {
2276
+ worker_1.unref();
2277
+ }
2278
+ }));
2279
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
2280
+ var arg = args[0];
2281
+ worker_1.threadBlockBase = arg;
2282
+ worker_1.postMessage({
2283
+ __emnapi__: {
2284
+ type: 'async-worker-init',
2285
+ payload: { arg: arg, func: [f, globalAddress] }
2286
+ }
2287
+ });
2288
+ }
2289
+ catch (err) {
2290
+ var arg = args[0];
2291
+ _free(arg);
2292
+ throw err;
2293
+ }
2294
+ return ret;
2295
+ }
2296
+ function initWorker(startArg, func) {
1903
2297
  if (napiModule.childThread) {
1904
2298
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
1905
2299
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
1906
2300
  }
1907
2301
  wasmInstance.exports.emnapi_async_worker_init(startArg);
2302
+ (wasmTable.get(func[0]))(func[1]);
1908
2303
  }
1909
2304
  else {
1910
2305
  throw new Error('startThread is only available in child threads');
1911
2306
  }
1912
2307
  }
1913
- function executeAsyncWork(work) {
1914
- if (!ENVIRONMENT_IS_PTHREAD)
1915
- return;
1916
- var execute = emnapiAWMT.getExecute(work);
1917
- var env = emnapiAWMT.getEnv(work);
1918
- var data = emnapiAWMT.getData(work);
1919
- (wasmTable.get(execute))(env, data);
1920
- var postMessage = napiModule.postMessage;
1921
- postMessage({
1922
- __emnapi__: {
1923
- type: 'async-work-complete',
1924
- payload: { work: work }
1925
- }
1926
- });
1927
- }
1928
2308
  napiModule.initWorker = initWorker;
1929
- napiModule.executeAsyncWork = executeAsyncWork;
1930
2309
  var asyncWorkMod = Object.freeze({
1931
2310
  __proto__: null,
2311
+ _emnapi_async_worker: _emnapi_async_worker,
2312
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
1932
2313
  napi_cancel_async_work: napi_cancel_async_work,
1933
2314
  napi_create_async_work: napi_create_async_work,
1934
2315
  napi_delete_async_work: napi_delete_async_work,
@@ -1989,6 +2370,7 @@ function createNapiModule(options) {
1989
2370
  var pointer = _malloc(arrayBuffer.byteLength);
1990
2371
  if (!pointer)
1991
2372
  throw new Error('Out of memory');
2373
+ pointer >>>= 0;
1992
2374
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
1993
2375
  info.address = pointer;
1994
2376
  info.ownership = emnapiExternalMemory.registry ? 0 : 1;
@@ -2010,8 +2392,7 @@ function createNapiModule(options) {
2010
2392
  }
2011
2393
  return view;
2012
2394
  }
2013
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
2014
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
2395
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
2015
2396
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
2016
2397
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
2017
2398
  var Ctor = info.Ctor;
@@ -2041,6 +2422,55 @@ function createNapiModule(options) {
2041
2422
  return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
2042
2423
  }
2043
2424
  };
2425
+ var emnapiExternalSAB = {
2426
+ registry: undefined,
2427
+ handleTable: new WeakMap(),
2428
+ init: function () {
2429
+ emnapiExternalSAB.handleTable = new WeakMap();
2430
+ emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
2431
+ ? new FinalizationRegistry(function (metaPtr) {
2432
+ emnapiExternalSAB.release(metaPtr);
2433
+ })
2434
+ : undefined;
2435
+ },
2436
+ allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
2437
+ var size = 4 * 6;
2438
+ var metaPtr = _malloc(size);
2439
+ if (!metaPtr)
2440
+ throw new Error('Out of memory');
2441
+ metaPtr >>>= 0;
2442
+ Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2443
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2444
+ HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
2445
+ HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
2446
+ HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
2447
+ HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
2448
+ HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
2449
+ return metaPtr;
2450
+ },
2451
+ readMeta: function (metaPtr) {
2452
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2453
+ var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
2454
+ var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
2455
+ var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
2456
+ var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
2457
+ var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
2458
+ return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
2459
+ },
2460
+ release: function (metaPtr) {
2461
+ var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2462
+ if (oldRefcount === 1) {
2463
+ var info = emnapiExternalSAB.readMeta(metaPtr);
2464
+ var finalize_cb = info.finalize_cb;
2465
+ if (finalize_cb) {
2466
+ var finalize_data = info.finalize_data;
2467
+ var finalize_hint = info.finalize_hint;
2468
+ (wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
2469
+ }
2470
+ _free(metaPtr);
2471
+ }
2472
+ }
2473
+ };
2044
2474
  var emnapiString = {
2045
2475
  utf8Decoder: undefined,
2046
2476
  utf16Decoder: undefined,
@@ -2144,7 +2574,7 @@ function createNapiModule(options) {
2144
2574
  ptr >>>= 0;
2145
2575
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
2146
2576
  var end = ptr;
2147
- if (length === -1) {
2577
+ if (length === -1 || length === 4294967295) {
2148
2578
  for (; HEAPU8[end];)
2149
2579
  ++end;
2150
2580
  }
@@ -2235,12 +2665,12 @@ function createNapiModule(options) {
2235
2665
  return '';
2236
2666
  ptr >>>= 0;
2237
2667
  var end = ptr;
2238
- if (length === -1) {
2239
- var idx = end >> 1;
2668
+ if (length === -1 || length === 4294967295) {
2669
+ var idx = end >>> 1;
2240
2670
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
2241
2671
  while (HEAPU16[idx])
2242
2672
  ++idx;
2243
- end = idx << 1;
2673
+ end = (idx << 1) >>> 0;
2244
2674
  }
2245
2675
  else {
2246
2676
  end = ptr + (length >>> 0) * 2;
@@ -2271,11 +2701,12 @@ function createNapiModule(options) {
2271
2701
  return outPtr - startPtr;
2272
2702
  },
2273
2703
  newString: function (env, str, length, result, stringMaker) {
2704
+ length >>>= 0;
2274
2705
  if (!env)
2275
2706
  return 1;
2276
2707
  var envObject = emnapiCtx.envStore.get(env);
2277
2708
  envObject.checkGCAccess();
2278
- var autoLength = length === -1;
2709
+ var autoLength = length === -1 || length === 4294967295;
2279
2710
  var sizelength = length >>> 0;
2280
2711
  if (length !== 0) {
2281
2712
  if (!str)
@@ -2285,18 +2716,21 @@ function createNapiModule(options) {
2285
2716
  return envObject.setLastError(1);
2286
2717
  if (!(autoLength || (sizelength <= 2147483647)))
2287
2718
  return envObject.setLastError(1);
2719
+ str >>>= 0;
2288
2720
  var strValue = stringMaker(str, autoLength, sizelength);
2721
+ result >>>= 0;
2289
2722
  var value = emnapiCtx.addToCurrentScope(strValue).id;
2290
2723
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2291
2724
  HEAP_DATA_VIEW.setUint32(result, value, true);
2292
2725
  return envObject.clearLastError();
2293
2726
  },
2294
2727
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
2728
+ length >>>= 0;
2295
2729
  if (!env)
2296
2730
  return 1;
2297
2731
  var envObject = emnapiCtx.envStore.get(env);
2298
2732
  envObject.checkGCAccess();
2299
- var autoLength = length === -1;
2733
+ var autoLength = length === -1 || length === 4294967295;
2300
2734
  var sizelength = length >>> 0;
2301
2735
  if (length !== 0) {
2302
2736
  if (!str)
@@ -2338,6 +2772,7 @@ function createNapiModule(options) {
2338
2772
  if (!handle.isArray()) {
2339
2773
  return envObject.setLastError(8);
2340
2774
  }
2775
+ result >>>= 0;
2341
2776
  var v = handle.value.length >>> 0;
2342
2777
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2343
2778
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2361,10 +2796,12 @@ function createNapiModule(options) {
2361
2796
  }
2362
2797
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2363
2798
  if (data) {
2799
+ data >>>= 0;
2364
2800
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
2365
2801
  HEAP_DATA_VIEW.setUint32(data, p, true);
2366
2802
  }
2367
2803
  if (byte_length) {
2804
+ byte_length >>>= 0;
2368
2805
  HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
2369
2806
  }
2370
2807
  return envObject.clearLastError();
@@ -2429,6 +2866,7 @@ function createNapiModule(options) {
2429
2866
  catch (_) {
2430
2867
  return envObject.setLastError(2);
2431
2868
  }
2869
+ result >>>= 0;
2432
2870
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
2433
2871
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2434
2872
  HEAP_DATA_VIEW.setUint32(result, p, true);
@@ -2453,6 +2891,7 @@ function createNapiModule(options) {
2453
2891
  var v = handle.value;
2454
2892
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2455
2893
  if (type) {
2894
+ type >>>= 0;
2456
2895
  var t = void 0;
2457
2896
  if (v instanceof Int8Array) {
2458
2897
  t = 0;
@@ -2495,22 +2934,25 @@ function createNapiModule(options) {
2495
2934
  }
2496
2935
  HEAP_DATA_VIEW.setInt32(type, t, true);
2497
2936
  }
2937
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
2498
2938
  if (length) {
2939
+ length >>>= 0;
2499
2940
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
2500
2941
  }
2501
- var buffer;
2502
2942
  if (data || arraybuffer) {
2503
- buffer = v.buffer;
2504
2943
  if (data) {
2944
+ data >>>= 0;
2505
2945
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2506
2946
  HEAP_DATA_VIEW.setUint32(data, p, true);
2507
2947
  }
2508
2948
  if (arraybuffer) {
2509
- var ab = envObject.ensureHandleId(buffer);
2949
+ arraybuffer >>>= 0;
2950
+ var ab = envObject.ensureHandleId(v.buffer);
2510
2951
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2511
2952
  }
2512
2953
  }
2513
2954
  if (byte_offset) {
2955
+ byte_offset >>>= 0;
2514
2956
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2515
2957
  }
2516
2958
  return envObject.clearLastError();
@@ -2541,24 +2983,26 @@ function createNapiModule(options) {
2541
2983
  if (!handle.isDataView()) {
2542
2984
  return envObject.setLastError(1);
2543
2985
  }
2544
- var v = handle.value;
2986
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
2545
2987
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2546
2988
  if (byte_length) {
2989
+ byte_length >>>= 0;
2547
2990
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
2548
2991
  }
2549
- var buffer;
2550
2992
  if (data || arraybuffer) {
2551
- buffer = v.buffer;
2552
2993
  if (data) {
2994
+ data >>>= 0;
2553
2995
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2554
2996
  HEAP_DATA_VIEW.setUint32(data, p, true);
2555
2997
  }
2556
2998
  if (arraybuffer) {
2557
- var ab = envObject.ensureHandleId(buffer);
2999
+ arraybuffer >>>= 0;
3000
+ var ab = envObject.ensureHandleId(v.buffer);
2558
3001
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2559
3002
  }
2560
3003
  }
2561
3004
  if (byte_offset) {
3005
+ byte_offset >>>= 0;
2562
3006
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2563
3007
  }
2564
3008
  return envObject.clearLastError();
@@ -2583,6 +3027,7 @@ function createNapiModule(options) {
2583
3027
  if (!handle.isDate()) {
2584
3028
  return envObject.setLastError(1);
2585
3029
  }
3030
+ result >>>= 0;
2586
3031
  v = handle.value.valueOf();
2587
3032
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2588
3033
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -2606,6 +3051,7 @@ function createNapiModule(options) {
2606
3051
  if (typeof handle.value !== 'boolean') {
2607
3052
  return envObject.setLastError(7);
2608
3053
  }
3054
+ result >>>= 0;
2609
3055
  var r = handle.value ? 1 : 0;
2610
3056
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2611
3057
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -2624,6 +3070,7 @@ function createNapiModule(options) {
2624
3070
  if (typeof handle.value !== 'number') {
2625
3071
  return envObject.setLastError(6);
2626
3072
  }
3073
+ result >>>= 0;
2627
3074
  var r = handle.value;
2628
3075
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2629
3076
  HEAP_DATA_VIEW.setFloat64(result, r, true);
@@ -2648,6 +3095,8 @@ function createNapiModule(options) {
2648
3095
  if (typeof numberValue !== 'bigint') {
2649
3096
  return envObject.setLastError(6);
2650
3097
  }
3098
+ lossless >>>= 0;
3099
+ result >>>= 0;
2651
3100
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2652
3101
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
2653
3102
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2684,6 +3133,8 @@ function createNapiModule(options) {
2684
3133
  if (typeof numberValue !== 'bigint') {
2685
3134
  return envObject.setLastError(6);
2686
3135
  }
3136
+ lossless >>>= 0;
3137
+ result >>>= 0;
2687
3138
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2688
3139
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
2689
3140
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2715,8 +3166,12 @@ function createNapiModule(options) {
2715
3166
  return envObject.setLastError(17);
2716
3167
  }
2717
3168
  var isMinus = handle.value < BigInt(0);
3169
+ sign_bit >>>= 0;
3170
+ words >>>= 0;
3171
+ word_count >>>= 0;
2718
3172
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2719
3173
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
3174
+ word_count_int >>>= 0;
2720
3175
  var wordCount = 0;
2721
3176
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
2722
3177
  while (bigintValue !== BigInt(0)) {
@@ -2764,6 +3219,7 @@ function createNapiModule(options) {
2764
3219
  if (!handle.isExternal()) {
2765
3220
  return envObject.setLastError(1);
2766
3221
  }
3222
+ result >>>= 0;
2767
3223
  var p = handle.data();
2768
3224
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2769
3225
  HEAP_DATA_VIEW.setUint32(result, p, true);
@@ -2782,6 +3238,7 @@ function createNapiModule(options) {
2782
3238
  if (typeof handle.value !== 'number') {
2783
3239
  return envObject.setLastError(6);
2784
3240
  }
3241
+ result >>>= 0;
2785
3242
  var v = new Int32Array([handle.value])[0];
2786
3243
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2787
3244
  HEAP_DATA_VIEW.setInt32(result, v, true);
@@ -2801,6 +3258,7 @@ function createNapiModule(options) {
2801
3258
  return envObject.setLastError(6);
2802
3259
  }
2803
3260
  var numberValue = handle.value;
3261
+ result >>>= 0;
2804
3262
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2805
3263
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
2806
3264
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -2826,6 +3284,9 @@ function createNapiModule(options) {
2826
3284
  envObject.checkGCAccess();
2827
3285
  if (!value)
2828
3286
  return envObject.setLastError(1);
3287
+ result >>>= 0;
3288
+ buf >>>= 0;
3289
+ buf_size >>>= 0;
2829
3290
  buf_size = buf_size >>> 0;
2830
3291
  var handle = emnapiCtx.handleStore.get(value);
2831
3292
  if (typeof handle.value !== 'string') {
@@ -2862,6 +3323,9 @@ function createNapiModule(options) {
2862
3323
  envObject.checkGCAccess();
2863
3324
  if (!value)
2864
3325
  return envObject.setLastError(1);
3326
+ result >>>= 0;
3327
+ buf >>>= 0;
3328
+ buf_size >>>= 0;
2865
3329
  buf_size = buf_size >>> 0;
2866
3330
  var handle = emnapiCtx.handleStore.get(value);
2867
3331
  if (typeof handle.value !== 'string') {
@@ -2892,6 +3356,9 @@ function createNapiModule(options) {
2892
3356
  envObject.checkGCAccess();
2893
3357
  if (!value)
2894
3358
  return envObject.setLastError(1);
3359
+ result >>>= 0;
3360
+ buf >>>= 0;
3361
+ buf_size >>>= 0;
2895
3362
  buf_size = buf_size >>> 0;
2896
3363
  var handle = emnapiCtx.handleStore.get(value);
2897
3364
  if (typeof handle.value !== 'string') {
@@ -2927,6 +3394,7 @@ function createNapiModule(options) {
2927
3394
  if (typeof handle.value !== 'number') {
2928
3395
  return envObject.setLastError(6);
2929
3396
  }
3397
+ result >>>= 0;
2930
3398
  var v = new Uint32Array([handle.value])[0];
2931
3399
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2932
3400
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2962,6 +3430,7 @@ function createNapiModule(options) {
2962
3430
  envObject.checkGCAccess();
2963
3431
  if (!result)
2964
3432
  return envObject.setLastError(1);
3433
+ result >>>= 0;
2965
3434
  var v = emnapiCtx.addToCurrentScope(value).id;
2966
3435
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2967
3436
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2974,6 +3443,7 @@ function createNapiModule(options) {
2974
3443
  envObject.checkGCAccess();
2975
3444
  if (!result)
2976
3445
  return envObject.setLastError(1);
3446
+ result >>>= 0;
2977
3447
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
2978
3448
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2979
3449
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2989,6 +3459,7 @@ function createNapiModule(options) {
2989
3459
  return envObject.setLastError(1);
2990
3460
  value = Number(low);
2991
3461
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3462
+ high >>>= 0;
2992
3463
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2993
3464
  HEAP_DATA_VIEW.setUint32(high, v1, true);
2994
3465
  return envObject.clearLastError();
@@ -3000,6 +3471,7 @@ function createNapiModule(options) {
3000
3471
  envObject.checkGCAccess();
3001
3472
  if (!result)
3002
3473
  return envObject.setLastError(1);
3474
+ result >>>= 0;
3003
3475
  var v = emnapiCtx.addToCurrentScope(value).id;
3004
3476
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3005
3477
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -3070,6 +3542,7 @@ function createNapiModule(options) {
3070
3542
  return envObject.setLastError(1);
3071
3543
  value = low;
3072
3544
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3545
+ high >>>= 0;
3073
3546
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3074
3547
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3075
3548
  return envObject.clearLastError();
@@ -3087,6 +3560,7 @@ function createNapiModule(options) {
3087
3560
  return envObject.setLastError(1);
3088
3561
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
3089
3562
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3563
+ high >>>= 0;
3090
3564
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3091
3565
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3092
3566
  return envObject.clearLastError();
@@ -3108,6 +3582,8 @@ function createNapiModule(options) {
3108
3582
  }
3109
3583
  if (!result)
3110
3584
  return envObject.setLastError(1);
3585
+ words >>>= 0;
3586
+ word_count >>>= 0;
3111
3587
  word_count = word_count >>> 0;
3112
3588
  if (word_count > 2147483647) {
3113
3589
  return envObject.setLastError(1);
@@ -3124,6 +3600,7 @@ function createNapiModule(options) {
3124
3600
  value += wordi << BigInt(64 * i);
3125
3601
  }
3126
3602
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
3603
+ result >>>= 0;
3127
3604
  v = emnapiCtx.addToCurrentScope(value).id;
3128
3605
  HEAP_DATA_VIEW.setUint32(result, v, true);
3129
3606
  return envObject.getReturnStatus();
@@ -3152,6 +3629,7 @@ function createNapiModule(options) {
3152
3629
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
3153
3630
  });
3154
3631
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
3632
+ utf8name >>>= 0;
3155
3633
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
3156
3634
  var f;
3157
3635
  var napiCallback = (wasmTable.get(cb));
@@ -3292,6 +3770,7 @@ function createNapiModule(options) {
3292
3770
  if (!finalize_cb)
3293
3771
  return envObject.setLastError(1);
3294
3772
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
3773
+ result >>>= 0;
3295
3774
  referenceId = reference.id;
3296
3775
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3297
3776
  HEAP_DATA_VIEW.setUint32(result, referenceId, true);
@@ -3340,6 +3819,7 @@ function createNapiModule(options) {
3340
3819
  if (!ref)
3341
3820
  return envObject.setLastError(1);
3342
3821
  if (result) {
3822
+ result >>>= 0;
3343
3823
  data = ref.data();
3344
3824
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3345
3825
  HEAP_DATA_VIEW.setUint32(result, data, true);
@@ -3376,12 +3856,15 @@ function createNapiModule(options) {
3376
3856
  return envObject.setLastError(1);
3377
3857
  if (!constructor)
3378
3858
  return envObject.setLastError(1);
3859
+ length >>>= 0;
3860
+ properties >>>= 0;
3861
+ property_count >>>= 0;
3379
3862
  property_count = property_count >>> 0;
3380
3863
  if (property_count > 0) {
3381
3864
  if (!properties)
3382
3865
  return envObject.setLastError(1);
3383
3866
  }
3384
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
3867
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
3385
3868
  return envObject.setLastError(1);
3386
3869
  }
3387
3870
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -3399,6 +3882,7 @@ function createNapiModule(options) {
3399
3882
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
3400
3883
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
3401
3884
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
3885
+ attributes >>>= 0;
3402
3886
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
3403
3887
  if (utf8Name) {
3404
3888
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -3420,6 +3904,7 @@ function createNapiModule(options) {
3420
3904
  }
3421
3905
  var valueHandle = emnapiCtx.addToCurrentScope(F);
3422
3906
  valueHandleId = valueHandle.id;
3907
+ result >>>= 0;
3423
3908
  HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
3424
3909
  return envObject.getReturnStatus();
3425
3910
  }
@@ -3455,6 +3940,7 @@ function createNapiModule(options) {
3455
3940
  if (!(value.isObject() || value.isFunction())) {
3456
3941
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
3457
3942
  }
3943
+ type_tag >>>= 0;
3458
3944
  if (!type_tag) {
3459
3945
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
3460
3946
  }
@@ -3499,6 +3985,7 @@ function createNapiModule(options) {
3499
3985
  }
3500
3986
  var binding = envObject.getObjectBinding(value.value);
3501
3987
  if (binding.tag !== null) {
3988
+ type_tag >>>= 0;
3502
3989
  var tag = binding.tag;
3503
3990
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
3504
3991
  ret = (tag[0] === typeTag[0] &&
@@ -3509,6 +3996,7 @@ function createNapiModule(options) {
3509
3996
  else {
3510
3997
  ret = false;
3511
3998
  }
3999
+ result >>>= 0;
3512
4000
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3513
4001
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
3514
4002
  return envObject.getReturnStatus();
@@ -3536,8 +4024,12 @@ function createNapiModule(options) {
3536
4024
  }
3537
4025
  var handle = handleResult.handle;
3538
4026
  var ownership = !result ? 0 : 1;
4027
+ finalize_data >>>= 0;
4028
+ finalize_cb >>>= 0;
4029
+ finalize_hint >>>= 0;
3539
4030
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
3540
4031
  if (result) {
4032
+ result >>>= 0;
3541
4033
  var referenceId = reference.id;
3542
4034
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3543
4035
  HEAP_DATA_VIEW.setUint32(result, referenceId, true);
@@ -3576,6 +4068,9 @@ function createNapiModule(options) {
3576
4068
  try {
3577
4069
  if (!result)
3578
4070
  return envObject.setLastError(1);
4071
+ byte_length >>>= 0;
4072
+ external_data >>>= 0;
4073
+ result >>>= 0;
3579
4074
  byte_length = byte_length >>> 0;
3580
4075
  if (!external_data) {
3581
4076
  byte_length = 0;
@@ -3686,7 +4181,7 @@ function createNapiModule(options) {
3686
4181
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
3687
4182
  if (!pointer)
3688
4183
  throw new Error('Unknown ArrayBuffer address');
3689
- if (typeof len !== 'number' || len === -1) {
4184
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3690
4185
  len = arrayBufferOrView.byteLength - offset;
3691
4186
  }
3692
4187
  len = len >>> 0;
@@ -3708,7 +4203,7 @@ function createNapiModule(options) {
3708
4203
  var pointer = viewPointerInfo.address;
3709
4204
  if (!pointer)
3710
4205
  throw new Error('Unknown ArrayBuffer address');
3711
- if (typeof len !== 'number' || len === -1) {
4206
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3712
4207
  len = latestView.byteLength - offset;
3713
4208
  }
3714
4209
  len = len >>> 0;
@@ -3740,6 +4235,9 @@ function createNapiModule(options) {
3740
4235
  try {
3741
4236
  if (!arraybuffer_or_view)
3742
4237
  return envObject.setLastError(1);
4238
+ arraybuffer_or_view >>>= 0;
4239
+ offset >>>= 0;
4240
+ len >>>= 0;
3743
4241
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3744
4242
  var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
3745
4243
  var handle = envObject.ctx.handleStore.get(handleId);
@@ -3748,6 +4246,7 @@ function createNapiModule(options) {
3748
4246
  }
3749
4247
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
3750
4248
  if (handle.value !== ret) {
4249
+ arraybuffer_or_view >>>= 0;
3751
4250
  v = envObject.ensureHandleId(ret);
3752
4251
  HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
3753
4252
  }
@@ -3801,13 +4300,16 @@ function createNapiModule(options) {
3801
4300
  p = info.address;
3802
4301
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3803
4302
  if (address) {
4303
+ address >>>= 0;
3804
4304
  HEAP_DATA_VIEW.setUint32(address, p, true);
3805
4305
  }
3806
4306
  if (ownership) {
4307
+ ownership >>>= 0;
3807
4308
  ownershipOut = info.ownership;
3808
4309
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
3809
4310
  }
3810
4311
  if (runtime_allocated) {
4312
+ runtime_allocated >>>= 0;
3811
4313
  runtimeAllocated = info.runtimeAllocated;
3812
4314
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
3813
4315
  }
@@ -3833,22 +4335,102 @@ function createNapiModule(options) {
3833
4335
  }
3834
4336
  var versions = runtimeVersion.split('.')
3835
4337
  .map(function (n) { return Number(n); });
4338
+ version >>>= 0;
3836
4339
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3837
4340
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
3838
4341
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
3839
4342
  HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
3840
4343
  return envObject.clearLastError();
3841
4344
  }
4345
+ function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
4346
+ if (!env)
4347
+ return 1;
4348
+ var envObject = emnapiCtx.envStore.get(env);
4349
+ envObject.checkGCAccess();
4350
+ if (!envObject.tryCatch.isEmpty())
4351
+ return envObject.setLastError(10);
4352
+ if (!envObject.canCallIntoJs())
4353
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4354
+ envObject.clearLastError();
4355
+ try {
4356
+ if (!sharedarraybuffer)
4357
+ return envObject.setLastError(1);
4358
+ if (!handle)
4359
+ return envObject.setLastError(1);
4360
+ handle >>>= 0;
4361
+ var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
4362
+ if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
4363
+ return envObject.setLastError(1);
4364
+ }
4365
+ var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
4366
+ if (metaPtr === undefined) {
4367
+ return envObject.setLastError(1);
4368
+ }
4369
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4370
+ HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
4371
+ return envObject.getReturnStatus();
4372
+ }
4373
+ catch (err) {
4374
+ envObject.tryCatch.setError(err);
4375
+ return envObject.setLastError(10);
4376
+ }
4377
+ }
4378
+ function emnapi_acquire_external_sharedarraybuffer(handle) {
4379
+ handle >>>= 0;
4380
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4381
+ }
4382
+ function emnapi_release_external_sharedarraybuffer(handle) {
4383
+ handle >>>= 0;
4384
+ emnapiExternalSAB.release(handle);
4385
+ }
4386
+ function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
4387
+ if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
4388
+ throw new TypeError('Expected a SharedArrayBuffer');
4389
+ }
4390
+ if (!emnapiExternalSAB.registry) {
4391
+ throw new Error('FinalizationRegistry is not supported in this environment');
4392
+ }
4393
+ handle >>>= 0;
4394
+ var meta = emnapiExternalSAB.readMeta(handle);
4395
+ var external_data = meta.external_data;
4396
+ external_data >>>= 0;
4397
+ if (sab == null) {
4398
+ sab = new SharedArrayBuffer(meta.byte_length);
4399
+ new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
4400
+ }
4401
+ else {
4402
+ if (emnapiExternalSAB.handleTable.has(sab)) {
4403
+ return sab;
4404
+ }
4405
+ }
4406
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4407
+ if (!emnapiExternalMemory.table.has(sab)) {
4408
+ if (external_data) {
4409
+ emnapiExternalMemory.table.set(sab, {
4410
+ address: external_data,
4411
+ ownership: 1,
4412
+ runtimeAllocated: 0
4413
+ });
4414
+ }
4415
+ }
4416
+ emnapiExternalSAB.handleTable.set(sab, handle);
4417
+ emnapiExternalSAB.registry.register(sab, handle);
4418
+ return sab;
4419
+ }
3842
4420
  var emnapiMod = Object.freeze({
3843
4421
  __proto__: null,
4422
+ $emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
3844
4423
  $emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
3845
4424
  $emnapiSyncMemory: $emnapiSyncMemory,
4425
+ emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
3846
4426
  emnapi_create_memory_view: emnapi_create_memory_view,
4427
+ emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
3847
4428
  emnapi_get_memory_address: emnapi_get_memory_address,
3848
4429
  emnapi_get_runtime_version: emnapi_get_runtime_version,
3849
4430
  emnapi_is_node_binding_available: emnapi_is_node_binding_available,
3850
4431
  emnapi_is_support_bigint: emnapi_is_support_bigint,
3851
4432
  emnapi_is_support_weakref: emnapi_is_support_weakref,
4433
+ emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
3852
4434
  emnapi_sync_memory: emnapi_sync_memory
3853
4435
  });
3854
4436
  function napi_create_array(env, result) {
@@ -3858,6 +4440,7 @@ function createNapiModule(options) {
3858
4440
  envObject.checkGCAccess();
3859
4441
  if (!result)
3860
4442
  return envObject.setLastError(1);
4443
+ result >>>= 0;
3861
4444
  var value = emnapiCtx.addToCurrentScope([]).id;
3862
4445
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3863
4446
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -3870,6 +4453,8 @@ function createNapiModule(options) {
3870
4453
  envObject.checkGCAccess();
3871
4454
  if (!result)
3872
4455
  return envObject.setLastError(1);
4456
+ length >>>= 0;
4457
+ result >>>= 0;
3873
4458
  length = length >>> 0;
3874
4459
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
3875
4460
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3877,9 +4462,11 @@ function createNapiModule(options) {
3877
4462
  return envObject.clearLastError();
3878
4463
  }
3879
4464
  function emnapiCreateArrayBuffer(byte_length, data, shared) {
4465
+ byte_length >>>= 0;
3880
4466
  byte_length = byte_length >>> 0;
3881
4467
  var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
3882
4468
  if (data) {
4469
+ data >>>= 0;
3883
4470
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
3884
4471
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3885
4472
  HEAP_DATA_VIEW.setUint32(data, p, true);
@@ -3900,6 +4487,7 @@ function createNapiModule(options) {
3900
4487
  try {
3901
4488
  if (!result)
3902
4489
  return envObject.setLastError(1);
4490
+ result >>>= 0;
3903
4491
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
3904
4492
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3905
4493
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3925,6 +4513,7 @@ function createNapiModule(options) {
3925
4513
  try {
3926
4514
  if (!result)
3927
4515
  return envObject.setLastError(1);
4516
+ result >>>= 0;
3928
4517
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
3929
4518
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3930
4519
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3950,6 +4539,7 @@ function createNapiModule(options) {
3950
4539
  try {
3951
4540
  if (!result)
3952
4541
  return envObject.setLastError(1);
4542
+ result >>>= 0;
3953
4543
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
3954
4544
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3955
4545
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -3981,6 +4571,7 @@ function createNapiModule(options) {
3981
4571
  if (finalize_cb) {
3982
4572
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
3983
4573
  }
4574
+ result >>>= 0;
3984
4575
  value = externalHandle.id;
3985
4576
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3986
4577
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4005,6 +4596,9 @@ function createNapiModule(options) {
4005
4596
  try {
4006
4597
  if (!result)
4007
4598
  return envObject.setLastError(1);
4599
+ byte_length >>>= 0;
4600
+ external_data >>>= 0;
4601
+ result >>>= 0;
4008
4602
  byte_length = byte_length >>> 0;
4009
4603
  if (!external_data) {
4010
4604
  byte_length = 0;
@@ -4055,6 +4649,60 @@ function createNapiModule(options) {
4055
4649
  return envObject.setLastError(10);
4056
4650
  }
4057
4651
  }
4652
+ function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
4653
+ var value;
4654
+ if (!env)
4655
+ return 1;
4656
+ var envObject = emnapiCtx.envStore.get(env);
4657
+ envObject.checkGCAccess();
4658
+ if (!envObject.tryCatch.isEmpty())
4659
+ return envObject.setLastError(10);
4660
+ if (!envObject.canCallIntoJs())
4661
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4662
+ envObject.clearLastError();
4663
+ try {
4664
+ if (!result)
4665
+ return envObject.setLastError(1);
4666
+ byte_length >>>= 0;
4667
+ external_data >>>= 0;
4668
+ result >>>= 0;
4669
+ byte_length = byte_length >>> 0;
4670
+ if (!external_data) {
4671
+ byte_length = 0;
4672
+ }
4673
+ if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
4674
+ throw new RangeError('Memory out of range');
4675
+ }
4676
+ if (!emnapiExternalSAB.registry && finalize_cb) {
4677
+ throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
4678
+ }
4679
+ var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
4680
+ if (byte_length !== 0) {
4681
+ var u8arr = new Uint8Array(sharedArrayBuffer);
4682
+ u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
4683
+ emnapiExternalMemory.table.set(sharedArrayBuffer, {
4684
+ address: external_data,
4685
+ ownership: 1,
4686
+ runtimeAllocated: 0
4687
+ });
4688
+ }
4689
+ value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
4690
+ if (finalize_cb) {
4691
+ finalize_cb >>>= 0;
4692
+ finalize_hint >>>= 0;
4693
+ var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
4694
+ emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
4695
+ emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
4696
+ }
4697
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4698
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4699
+ return envObject.getReturnStatus();
4700
+ }
4701
+ catch (err) {
4702
+ envObject.tryCatch.setError(err);
4703
+ return envObject.setLastError(10);
4704
+ }
4705
+ }
4058
4706
  function napi_create_object(env, result) {
4059
4707
  if (!env)
4060
4708
  return 1;
@@ -4062,18 +4710,20 @@ function createNapiModule(options) {
4062
4710
  envObject.checkGCAccess();
4063
4711
  if (!result)
4064
4712
  return envObject.setLastError(1);
4713
+ result >>>= 0;
4065
4714
  var value = emnapiCtx.addToCurrentScope({}).id;
4066
4715
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4067
4716
  HEAP_DATA_VIEW.setUint32(result, value, true);
4068
4717
  return envObject.clearLastError();
4069
4718
  }
4070
- function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4719
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4071
4720
  if (!env)
4072
4721
  return 1;
4073
4722
  var envObject = emnapiCtx.envStore.get(env);
4074
4723
  envObject.checkGCAccess();
4075
4724
  if (!result)
4076
4725
  return envObject.setLastError(1);
4726
+ property_count >>>= 0;
4077
4727
  property_count = property_count >>> 0;
4078
4728
  if (property_count > 0) {
4079
4729
  if (!property_names)
@@ -4085,6 +4735,8 @@ function createNapiModule(options) {
4085
4735
  ? emnapiCtx.handleStore.get(prototype_or_null).value
4086
4736
  : null;
4087
4737
  var properties = {};
4738
+ property_names >>>= 0;
4739
+ property_values >>>= 0;
4088
4740
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4089
4741
  for (var i = 0; i < property_count; i++) {
4090
4742
  var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
@@ -4105,6 +4757,7 @@ function createNapiModule(options) {
4105
4757
  return envObject.setLastError(9);
4106
4758
  }
4107
4759
  var value = emnapiCtx.addToCurrentScope(obj).id;
4760
+ result >>>= 0;
4108
4761
  HEAP_DATA_VIEW.setUint32(result, value, true);
4109
4762
  return envObject.clearLastError();
4110
4763
  }
@@ -4115,6 +4768,7 @@ function createNapiModule(options) {
4115
4768
  envObject.checkGCAccess();
4116
4769
  if (!result)
4117
4770
  return envObject.setLastError(1);
4771
+ result >>>= 0;
4118
4772
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4119
4773
  if (!description) {
4120
4774
  var value = emnapiCtx.addToCurrentScope(Symbol()).id;
@@ -4148,10 +4802,9 @@ function createNapiModule(options) {
4148
4802
  if (!result)
4149
4803
  return envObject.setLastError(1);
4150
4804
  var handle = emnapiCtx.handleStore.get(arraybuffer);
4151
- if (!handle.isArrayBuffer()) {
4152
- return envObject.setLastError(1);
4153
- }
4154
4805
  var buffer = handle.value;
4806
+ byte_offset >>>= 0;
4807
+ length >>>= 0;
4155
4808
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
4156
4809
  var _a;
4157
4810
  byte_offset = byte_offset >>> 0;
@@ -4182,41 +4835,47 @@ function createNapiModule(options) {
4182
4835
  });
4183
4836
  }
4184
4837
  }
4838
+ result >>>= 0;
4185
4839
  value = emnapiCtx.addToCurrentScope(out).id;
4186
4840
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4187
4841
  HEAP_DATA_VIEW.setUint32(result, value, true);
4188
4842
  return envObject.getReturnStatus();
4189
4843
  };
4190
- switch (type) {
4191
- case 0:
4192
- return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4193
- case 1:
4194
- return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4195
- case 2:
4196
- return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4197
- case 3:
4198
- return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4199
- case 4:
4200
- return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4201
- case 5:
4202
- return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4203
- case 6:
4204
- return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4205
- case 7:
4206
- return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4207
- case 8:
4208
- return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4209
- case 9:
4210
- return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4211
- case 10:
4212
- return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4213
- case 11:
4214
- if (typeof Float16Array !== 'function') {
4844
+ if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
4845
+ switch (type) {
4846
+ case 0:
4847
+ return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4848
+ case 1:
4849
+ return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4850
+ case 2:
4851
+ return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4852
+ case 3:
4853
+ return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4854
+ case 4:
4855
+ return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4856
+ case 5:
4857
+ return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4858
+ case 6:
4859
+ return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4860
+ case 7:
4861
+ return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4862
+ case 8:
4863
+ return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4864
+ case 9:
4865
+ return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4866
+ case 10:
4867
+ return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4868
+ case 11:
4869
+ if (typeof Float16Array !== 'function') {
4870
+ return envObject.setLastError(1);
4871
+ }
4872
+ return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
4873
+ default:
4215
4874
  return envObject.setLastError(1);
4216
- }
4217
- return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
4218
- default:
4219
- return envObject.setLastError(1);
4875
+ }
4876
+ }
4877
+ else {
4878
+ return envObject.setLastError(1);
4220
4879
  }
4221
4880
  }
4222
4881
  catch (err) {
@@ -4243,7 +4902,9 @@ function createNapiModule(options) {
4243
4902
  if (!Buffer) {
4244
4903
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
4245
4904
  }
4905
+ result >>>= 0;
4246
4906
  var buffer = void 0;
4907
+ size >>>= 0;
4247
4908
  size = size >>> 0;
4248
4909
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4249
4910
  if (!data || (size === 0)) {
@@ -4255,6 +4916,7 @@ function createNapiModule(options) {
4255
4916
  pointer = _malloc(size);
4256
4917
  if (!pointer)
4257
4918
  throw new Error('Out of memory');
4919
+ pointer >>>= 0;
4258
4920
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
4259
4921
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
4260
4922
  var viewDescriptor = {
@@ -4268,6 +4930,7 @@ function createNapiModule(options) {
4268
4930
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
4269
4931
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
4270
4932
  HEAP_DATA_VIEW.setUint32(result, value, true);
4933
+ data >>>= 0;
4271
4934
  HEAP_DATA_VIEW.setUint32(data, pointer, true);
4272
4935
  }
4273
4936
  return envObject.getReturnStatus();
@@ -4297,8 +4960,11 @@ function createNapiModule(options) {
4297
4960
  }
4298
4961
  var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
4299
4962
  var buffer = Buffer.from(arrayBuffer);
4963
+ data >>>= 0;
4964
+ length >>>= 0;
4300
4965
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
4301
4966
  value = emnapiCtx.addToCurrentScope(buffer).id;
4967
+ result >>>= 0;
4302
4968
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4303
4969
  HEAP_DATA_VIEW.setUint32(result, value, true);
4304
4970
  return envObject.getReturnStatus();
@@ -4327,6 +4993,8 @@ function createNapiModule(options) {
4327
4993
  return envObject.setLastError(1);
4328
4994
  if (!result)
4329
4995
  return envObject.setLastError(1);
4996
+ byte_offset >>>= 0;
4997
+ byte_length >>>= 0;
4330
4998
  byte_offset = byte_offset >>> 0;
4331
4999
  byte_length = byte_length >>> 0;
4332
5000
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4355,6 +5023,7 @@ function createNapiModule(options) {
4355
5023
  });
4356
5024
  }
4357
5025
  }
5026
+ result >>>= 0;
4358
5027
  value = emnapiCtx.addToCurrentScope(out).id;
4359
5028
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4360
5029
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4380,6 +5049,8 @@ function createNapiModule(options) {
4380
5049
  return envObject.setLastError(1);
4381
5050
  if (!result)
4382
5051
  return envObject.setLastError(1);
5052
+ byte_length >>>= 0;
5053
+ byte_offset >>>= 0;
4383
5054
  byte_length = byte_length >>> 0;
4384
5055
  byte_offset = byte_offset >>> 0;
4385
5056
  var value = emnapiCtx.handleStore.get(arraybuffer).value;
@@ -4401,6 +5072,7 @@ function createNapiModule(options) {
4401
5072
  });
4402
5073
  }
4403
5074
  }
5075
+ result >>>= 0;
4404
5076
  var v = emnapiCtx.addToCurrentScope(dataview).id;
4405
5077
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4406
5078
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -4425,7 +5097,10 @@ function createNapiModule(options) {
4425
5097
  envObject.checkGCAccess();
4426
5098
  if (!result)
4427
5099
  return envObject.setLastError(1);
4428
- var autoLength = length === -1;
5100
+ length >>>= 0;
5101
+ utf8description >>>= 0;
5102
+ result >>>= 0;
5103
+ var autoLength = length === -1 || length === 4294967295;
4429
5104
  var sizelength = length >>> 0;
4430
5105
  if (length !== 0) {
4431
5106
  if (!utf8description)
@@ -4453,10 +5128,11 @@ function createNapiModule(options) {
4453
5128
  napi_create_external_arraybuffer: napi_create_external_arraybuffer,
4454
5129
  napi_create_external_buffer: napi_create_external_buffer,
4455
5130
  napi_create_object: napi_create_object,
4456
- napi_create_object_with_properties: napi_create_object_with_properties,
4457
5131
  napi_create_symbol: napi_create_symbol,
4458
5132
  napi_create_typedarray: napi_create_typedarray,
4459
5133
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
5134
+ node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
5135
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
4460
5136
  node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
4461
5137
  node_api_symbol_for: node_api_symbol_for
4462
5138
  });
@@ -4467,6 +5143,7 @@ function createNapiModule(options) {
4467
5143
  envObject.checkGCAccess();
4468
5144
  if (!result)
4469
5145
  return envObject.setLastError(1);
5146
+ result >>>= 0;
4470
5147
  var v = value === 0 ? 3 : 4;
4471
5148
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4472
5149
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -4479,6 +5156,7 @@ function createNapiModule(options) {
4479
5156
  envObject.checkGCAccess();
4480
5157
  if (!result)
4481
5158
  return envObject.setLastError(1);
5159
+ result >>>= 0;
4482
5160
  var value = 5;
4483
5161
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4484
5162
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4491,6 +5169,7 @@ function createNapiModule(options) {
4491
5169
  envObject.checkGCAccess();
4492
5170
  if (!result)
4493
5171
  return envObject.setLastError(1);
5172
+ result >>>= 0;
4494
5173
  var value = 2;
4495
5174
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4496
5175
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4503,6 +5182,7 @@ function createNapiModule(options) {
4503
5182
  envObject.checkGCAccess();
4504
5183
  if (!result)
4505
5184
  return envObject.setLastError(1);
5185
+ result >>>= 0;
4506
5186
  var value = 1;
4507
5187
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4508
5188
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4519,6 +5199,9 @@ function createNapiModule(options) {
4519
5199
  if (!env)
4520
5200
  return 1;
4521
5201
  var envObject = emnapiCtx.envStore.get(env);
5202
+ data >>>= 0;
5203
+ finalize_cb >>>= 0;
5204
+ finalize_hint >>>= 0;
4522
5205
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
4523
5206
  return envObject.clearLastError();
4524
5207
  }
@@ -4528,6 +5211,7 @@ function createNapiModule(options) {
4528
5211
  var envObject = emnapiCtx.envStore.get(env);
4529
5212
  if (!data)
4530
5213
  return envObject.setLastError(1);
5214
+ data >>>= 0;
4531
5215
  var value = envObject.getInstanceData();
4532
5216
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4533
5217
  HEAP_DATA_VIEW.setUint32(data, value, true);
@@ -4539,11 +5223,15 @@ function createNapiModule(options) {
4539
5223
  napi_set_instance_data: napi_set_instance_data
4540
5224
  });
4541
5225
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
5226
+ error_code >>>= 0;
5227
+ engine_error_code >>>= 0;
5228
+ engine_reserved >>>= 0;
4542
5229
  var envObject = emnapiCtx.envStore.get(env);
4543
5230
  var lastError = envObject.lastError;
4544
5231
  var errorCode = lastError.errorCode;
4545
5232
  var engineErrorCode = lastError.engineErrorCode >>> 0;
4546
5233
  var engineReserved = lastError.engineReserved;
5234
+ engineReserved >>>= 0;
4547
5235
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4548
5236
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
4549
5237
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
@@ -4583,6 +5271,8 @@ function createNapiModule(options) {
4583
5271
  try {
4584
5272
  if (!msg)
4585
5273
  return envObject.setLastError(1);
5274
+ code >>>= 0;
5275
+ msg >>>= 0;
4586
5276
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
4587
5277
  if (code)
4588
5278
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4607,6 +5297,8 @@ function createNapiModule(options) {
4607
5297
  try {
4608
5298
  if (!msg)
4609
5299
  return envObject.setLastError(1);
5300
+ code >>>= 0;
5301
+ msg >>>= 0;
4610
5302
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
4611
5303
  if (code)
4612
5304
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4631,6 +5323,8 @@ function createNapiModule(options) {
4631
5323
  try {
4632
5324
  if (!msg)
4633
5325
  return envObject.setLastError(1);
5326
+ code >>>= 0;
5327
+ msg >>>= 0;
4634
5328
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
4635
5329
  if (code)
4636
5330
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4655,6 +5349,8 @@ function createNapiModule(options) {
4655
5349
  try {
4656
5350
  if (!msg)
4657
5351
  return envObject.setLastError(1);
5352
+ code >>>= 0;
5353
+ msg >>>= 0;
4658
5354
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
4659
5355
  if (code)
4660
5356
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4674,6 +5370,7 @@ function createNapiModule(options) {
4674
5370
  if (!result)
4675
5371
  return envObject.setLastError(1);
4676
5372
  var r = envObject.tryCatch.hasCaught();
5373
+ result >>>= 0;
4677
5374
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4678
5375
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
4679
5376
  return envObject.clearLastError();
@@ -4699,6 +5396,7 @@ function createNapiModule(options) {
4699
5396
  }
4700
5397
  error.code = codeValue;
4701
5398
  }
5399
+ result >>>= 0;
4702
5400
  var value = emnapiCtx.addToCurrentScope(error).id;
4703
5401
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4704
5402
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4725,6 +5423,7 @@ function createNapiModule(options) {
4725
5423
  }
4726
5424
  error.code = codeValue;
4727
5425
  }
5426
+ result >>>= 0;
4728
5427
  var value = emnapiCtx.addToCurrentScope(error).id;
4729
5428
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4730
5429
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4751,6 +5450,7 @@ function createNapiModule(options) {
4751
5450
  }
4752
5451
  error.code = codeValue;
4753
5452
  }
5453
+ result >>>= 0;
4754
5454
  var value = emnapiCtx.addToCurrentScope(error).id;
4755
5455
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4756
5456
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4777,6 +5477,7 @@ function createNapiModule(options) {
4777
5477
  }
4778
5478
  error.code = codeValue;
4779
5479
  }
5480
+ result >>>= 0;
4780
5481
  var value = emnapiCtx.addToCurrentScope(error).id;
4781
5482
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4782
5483
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4789,6 +5490,7 @@ function createNapiModule(options) {
4789
5490
  envObject.checkGCAccess();
4790
5491
  if (!result)
4791
5492
  return envObject.setLastError(1);
5493
+ result >>>= 0;
4792
5494
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4793
5495
  if (!envObject.tryCatch.hasCaught()) {
4794
5496
  HEAP_DATA_VIEW.setUint32(result, 1, true);
@@ -4803,6 +5505,10 @@ function createNapiModule(options) {
4803
5505
  return envObject.clearLastError();
4804
5506
  }
4805
5507
  function napi_fatal_error(location, location_len, message, message_len) {
5508
+ location >>>= 0;
5509
+ location_len >>>= 0;
5510
+ message >>>= 0;
5511
+ message_len >>>= 0;
4806
5512
  var locationStr = emnapiString.UTF8ToString(location, location_len);
4807
5513
  var messageStr = emnapiString.UTF8ToString(message, message_len);
4808
5514
  if (emnapiNodeBinding) {
@@ -4856,8 +5562,21 @@ function createNapiModule(options) {
4856
5562
  node_api_create_syntax_error: node_api_create_syntax_error,
4857
5563
  node_api_throw_syntax_error: node_api_throw_syntax_error
4858
5564
  });
5565
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
5566
+ length >>>= 0;
5567
+ var envObject = emnapiCtx.envStore.get(env);
5568
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
5569
+ if (fresult.status !== 0)
5570
+ return envObject.setLastError(fresult.status);
5571
+ var f = fresult.f;
5572
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
5573
+ result >>>= 0;
5574
+ var value = valueHandle.id;
5575
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5576
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5577
+ return envObject.getReturnStatus();
5578
+ }
4859
5579
  function napi_create_function(env, utf8name, length, cb, data, result) {
4860
- var value;
4861
5580
  if (!env)
4862
5581
  return 1;
4863
5582
  var envObject = emnapiCtx.envStore.get(env);
@@ -4872,15 +5591,7 @@ function createNapiModule(options) {
4872
5591
  return envObject.setLastError(1);
4873
5592
  if (!cb)
4874
5593
  return envObject.setLastError(1);
4875
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
4876
- if (fresult.status !== 0)
4877
- return envObject.setLastError(fresult.status);
4878
- var f = fresult.f;
4879
- var valueHandle = emnapiCtx.addToCurrentScope(f);
4880
- value = valueHandle.id;
4881
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4882
- HEAP_DATA_VIEW.setUint32(result, value, true);
4883
- return envObject.getReturnStatus();
5594
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
4884
5595
  }
4885
5596
  catch (err) {
4886
5597
  envObject.tryCatch.setError(err);
@@ -4894,11 +5605,14 @@ function createNapiModule(options) {
4894
5605
  if (!cbinfo)
4895
5606
  return envObject.setLastError(1);
4896
5607
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5608
+ argc >>>= 0;
5609
+ argv >>>= 0;
4897
5610
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4898
5611
  if (argv) {
4899
5612
  if (!argc)
4900
5613
  return envObject.setLastError(1);
4901
5614
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
5615
+ argcValue >>>= 0;
4902
5616
  var len = cbinfoValue.args.length;
4903
5617
  var arrlen = argcValue < len ? argcValue : len;
4904
5618
  var i = 0;
@@ -4916,10 +5630,12 @@ function createNapiModule(options) {
4916
5630
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
4917
5631
  }
4918
5632
  if (this_arg) {
5633
+ this_arg >>>= 0;
4919
5634
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
4920
5635
  HEAP_DATA_VIEW.setUint32(this_arg, v, true);
4921
5636
  }
4922
5637
  if (data) {
5638
+ data >>>= 0;
4923
5639
  HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
4924
5640
  }
4925
5641
  return envObject.clearLastError();
@@ -4939,6 +5655,9 @@ function createNapiModule(options) {
4939
5655
  try {
4940
5656
  if (!recv)
4941
5657
  return envObject.setLastError(1);
5658
+ argc >>>= 0;
5659
+ argv >>>= 0;
5660
+ result >>>= 0;
4942
5661
  argc = argc >>> 0;
4943
5662
  if (argc > 0) {
4944
5663
  if (!argv)
@@ -4983,6 +5702,9 @@ function createNapiModule(options) {
4983
5702
  try {
4984
5703
  if (!constructor)
4985
5704
  return envObject.setLastError(1);
5705
+ argc >>>= 0;
5706
+ argv >>>= 0;
5707
+ result >>>= 0;
4986
5708
  argc = argc >>> 0;
4987
5709
  if (argc > 0) {
4988
5710
  if (!argv)
@@ -5033,6 +5755,7 @@ function createNapiModule(options) {
5033
5755
  return envObject.setLastError(1);
5034
5756
  if (!result)
5035
5757
  return envObject.setLastError(1);
5758
+ result >>>= 0;
5036
5759
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5037
5760
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
5038
5761
  var value = thiz == null || thiz.constructor == null
@@ -5046,6 +5769,7 @@ function createNapiModule(options) {
5046
5769
  }
5047
5770
  var functionMod = Object.freeze({
5048
5771
  __proto__: null,
5772
+ _emnapi_create_function: _emnapi_create_function,
5049
5773
  napi_call_function: napi_call_function,
5050
5774
  napi_create_function: napi_create_function,
5051
5775
  napi_get_cb_info: napi_get_cb_info,
@@ -5060,6 +5784,7 @@ function createNapiModule(options) {
5060
5784
  if (!result)
5061
5785
  return envObject.setLastError(1);
5062
5786
  var scope = emnapiCtx.openScope(envObject);
5787
+ result >>>= 0;
5063
5788
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5064
5789
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5065
5790
  return envObject.clearLastError();
@@ -5085,6 +5810,7 @@ function createNapiModule(options) {
5085
5810
  if (!result)
5086
5811
  return envObject.setLastError(1);
5087
5812
  var scope = emnapiCtx.openScope(envObject);
5813
+ result >>>= 0;
5088
5814
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5089
5815
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5090
5816
  return envObject.clearLastError();
@@ -5115,6 +5841,8 @@ function createNapiModule(options) {
5115
5841
  return envObject.setLastError(1);
5116
5842
  var scopeObject = emnapiCtx.scopeStore.get(scope);
5117
5843
  if (!scopeObject.escapeCalled()) {
5844
+ escapee >>>= 0;
5845
+ result >>>= 0;
5118
5846
  var newHandle = scopeObject.escape(escapee);
5119
5847
  var value = newHandle ? newHandle.id : 0;
5120
5848
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5139,6 +5867,7 @@ function createNapiModule(options) {
5139
5867
  }
5140
5868
  }
5141
5869
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
5870
+ result >>>= 0;
5142
5871
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5143
5872
  HEAP_DATA_VIEW.setUint32(result, ref.id, true);
5144
5873
  return envObject.clearLastError();
@@ -5161,6 +5890,7 @@ function createNapiModule(options) {
5161
5890
  return envObject.setLastError(1);
5162
5891
  var count = emnapiCtx.refStore.get(ref).ref();
5163
5892
  if (result) {
5893
+ result >>>= 0;
5164
5894
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5165
5895
  HEAP_DATA_VIEW.setUint32(result, count, true);
5166
5896
  }
@@ -5180,6 +5910,7 @@ function createNapiModule(options) {
5180
5910
  }
5181
5911
  var count = reference.unref();
5182
5912
  if (result) {
5913
+ result >>>= 0;
5183
5914
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5184
5915
  HEAP_DATA_VIEW.setUint32(result, count, true);
5185
5916
  }
@@ -5196,6 +5927,7 @@ function createNapiModule(options) {
5196
5927
  return envObject.setLastError(1);
5197
5928
  var reference = emnapiCtx.refStore.get(ref);
5198
5929
  var handleId = reference.get(envObject);
5930
+ result >>>= 0;
5199
5931
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5200
5932
  HEAP_DATA_VIEW.setUint32(result, handleId, true);
5201
5933
  return envObject.clearLastError();
@@ -5206,6 +5938,8 @@ function createNapiModule(options) {
5206
5938
  var envObject = emnapiCtx.envStore.get(env);
5207
5939
  if (!fun)
5208
5940
  return envObject.setLastError(1);
5941
+ fun >>>= 0;
5942
+ arg >>>= 0;
5209
5943
  emnapiCtx.addCleanupHook(envObject, fun, arg);
5210
5944
  return 0;
5211
5945
  }
@@ -5215,6 +5949,8 @@ function createNapiModule(options) {
5215
5949
  var envObject = emnapiCtx.envStore.get(env);
5216
5950
  if (!fun)
5217
5951
  return envObject.setLastError(1);
5952
+ fun >>>= 0;
5953
+ arg >>>= 0;
5218
5954
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
5219
5955
  return 0;
5220
5956
  }
@@ -5275,8 +6011,10 @@ function createNapiModule(options) {
5275
6011
  var p = new Promise(function (resolve, reject) {
5276
6012
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
5277
6013
  deferredObjectId = deferredObject.id;
6014
+ deferred >>>= 0;
5278
6015
  HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
5279
6016
  });
6017
+ promise >>>= 0;
5280
6018
  value = emnapiCtx.addToCurrentScope(p).id;
5281
6019
  HEAP_DATA_VIEW.setUint32(promise, value, true);
5282
6020
  return envObject.getReturnStatus();
@@ -5344,6 +6082,7 @@ function createNapiModule(options) {
5344
6082
  if (!is_promise)
5345
6083
  return envObject.setLastError(1);
5346
6084
  var h = emnapiCtx.handleStore.get(value);
6085
+ is_promise >>>= 0;
5347
6086
  var r = h.isPromise() ? 1 : 0;
5348
6087
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5349
6088
  HEAP_DATA_VIEW.setInt8(is_promise, r, true);
@@ -5487,6 +6226,7 @@ function createNapiModule(options) {
5487
6226
  }
5488
6227
  }
5489
6228
  }
6229
+ result >>>= 0;
5490
6230
  value = emnapiCtx.addToCurrentScope(ret).id;
5491
6231
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5492
6232
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5558,6 +6298,7 @@ function createNapiModule(options) {
5558
6298
  catch (_) {
5559
6299
  return envObject.setLastError(2);
5560
6300
  }
6301
+ result >>>= 0;
5561
6302
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
5562
6303
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5563
6304
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5597,6 +6338,7 @@ function createNapiModule(options) {
5597
6338
  catch (_) {
5598
6339
  return envObject.setLastError(2);
5599
6340
  }
6341
+ result >>>= 0;
5600
6342
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
5601
6343
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5602
6344
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5640,6 +6382,7 @@ function createNapiModule(options) {
5640
6382
  }
5641
6383
  }
5642
6384
  if (result) {
6385
+ result >>>= 0;
5643
6386
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5644
6387
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5645
6388
  }
@@ -5684,6 +6427,7 @@ function createNapiModule(options) {
5684
6427
  return envObject.setLastError(4);
5685
6428
  }
5686
6429
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
6430
+ result >>>= 0;
5687
6431
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5688
6432
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5689
6433
  return envObject.getReturnStatus();
@@ -5715,6 +6459,7 @@ function createNapiModule(options) {
5715
6459
  if (!cname) {
5716
6460
  return envObject.setLastError(1);
5717
6461
  }
6462
+ cname >>>= 0;
5718
6463
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
5719
6464
  return envObject.getReturnStatus();
5720
6465
  }
@@ -5753,6 +6498,8 @@ function createNapiModule(options) {
5753
6498
  catch (_) {
5754
6499
  return envObject.setLastError(2);
5755
6500
  }
6501
+ utf8name >>>= 0;
6502
+ result >>>= 0;
5756
6503
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
5757
6504
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5758
6505
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -5793,6 +6540,8 @@ function createNapiModule(options) {
5793
6540
  catch (_) {
5794
6541
  return envObject.setLastError(2);
5795
6542
  }
6543
+ utf8name >>>= 0;
6544
+ result >>>= 0;
5796
6545
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
5797
6546
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5798
6547
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5857,6 +6606,7 @@ function createNapiModule(options) {
5857
6606
  catch (_) {
5858
6607
  return envObject.setLastError(2);
5859
6608
  }
6609
+ result >>>= 0;
5860
6610
  r = ((index >>> 0) in v) ? 1 : 0;
5861
6611
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5862
6612
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5894,6 +6644,7 @@ function createNapiModule(options) {
5894
6644
  catch (_) {
5895
6645
  return envObject.setLastError(2);
5896
6646
  }
6647
+ result >>>= 0;
5897
6648
  value = envObject.ensureHandleId(v[index >>> 0]);
5898
6649
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5899
6650
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5934,6 +6685,7 @@ function createNapiModule(options) {
5934
6685
  }
5935
6686
  }
5936
6687
  if (result) {
6688
+ result >>>= 0;
5937
6689
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5938
6690
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5939
6691
  }
@@ -5956,6 +6708,8 @@ function createNapiModule(options) {
5956
6708
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
5957
6709
  envObject.clearLastError();
5958
6710
  try {
6711
+ properties >>>= 0;
6712
+ property_count >>>= 0;
5959
6713
  property_count = property_count >>> 0;
5960
6714
  if (property_count > 0) {
5961
6715
  if (!properties)
@@ -5979,6 +6733,7 @@ function createNapiModule(options) {
5979
6733
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
5980
6734
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
5981
6735
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
6736
+ attributes >>>= 0;
5982
6737
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
5983
6738
  if (utf8Name) {
5984
6739
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -6096,6 +6851,7 @@ function createNapiModule(options) {
6096
6851
  }
6097
6852
  var g = emnapiCtx.handleStore.get(5).value;
6098
6853
  var ret = g.eval(v8Script.value);
6854
+ result >>>= 0;
6099
6855
  value = envObject.ensureHandleId(ret);
6100
6856
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6101
6857
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -6121,6 +6877,7 @@ function createNapiModule(options) {
6121
6877
  if (!result)
6122
6878
  return envObject.setLastError(1);
6123
6879
  var v = emnapiCtx.handleStore.get(value);
6880
+ result >>>= 0;
6124
6881
  var r;
6125
6882
  if (v.isNumber()) {
6126
6883
  r = 3;
@@ -6176,6 +6933,7 @@ function createNapiModule(options) {
6176
6933
  if (!result)
6177
6934
  return envObject.setLastError(1);
6178
6935
  var handle = emnapiCtx.handleStore.get(value);
6936
+ result >>>= 0;
6179
6937
  v = handle.value ? 4 : 3;
6180
6938
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6181
6939
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6206,6 +6964,7 @@ function createNapiModule(options) {
6206
6964
  if (handle.isBigInt()) {
6207
6965
  throw new TypeError('Cannot convert a BigInt value to a number');
6208
6966
  }
6967
+ result >>>= 0;
6209
6968
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
6210
6969
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6211
6970
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6236,6 +6995,7 @@ function createNapiModule(options) {
6236
6995
  if (handle.value == null) {
6237
6996
  throw new TypeError('Cannot convert undefined or null to object');
6238
6997
  }
6998
+ result >>>= 0;
6239
6999
  v = envObject.ensureHandleId(Object(handle.value));
6240
7000
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6241
7001
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6266,6 +7026,7 @@ function createNapiModule(options) {
6266
7026
  if (handle.isSymbol()) {
6267
7027
  throw new TypeError('Cannot convert a Symbol value to a string');
6268
7028
  }
7029
+ result >>>= 0;
6269
7030
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
6270
7031
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6271
7032
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6294,6 +7055,7 @@ function createNapiModule(options) {
6294
7055
  return envObject.setLastError(1);
6295
7056
  if (!constructor)
6296
7057
  return envObject.setLastError(1);
7058
+ result >>>= 0;
6297
7059
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6298
7060
  HEAP_DATA_VIEW.setInt8(result, 0, true);
6299
7061
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -6321,6 +7083,7 @@ function createNapiModule(options) {
6321
7083
  if (!result)
6322
7084
  return envObject.setLastError(1);
6323
7085
  var h = emnapiCtx.handleStore.get(value);
7086
+ result >>>= 0;
6324
7087
  var r = h.isArray() ? 1 : 0;
6325
7088
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6326
7089
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6336,6 +7099,7 @@ function createNapiModule(options) {
6336
7099
  if (!result)
6337
7100
  return envObject.setLastError(1);
6338
7101
  var h = emnapiCtx.handleStore.get(value);
7102
+ result >>>= 0;
6339
7103
  var r = h.isArrayBuffer() ? 1 : 0;
6340
7104
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6341
7105
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6351,6 +7115,7 @@ function createNapiModule(options) {
6351
7115
  if (!result)
6352
7116
  return envObject.setLastError(1);
6353
7117
  var h = emnapiCtx.handleStore.get(value);
7118
+ result >>>= 0;
6354
7119
  var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
6355
7120
  (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
6356
7121
  ? 1
@@ -6369,6 +7134,7 @@ function createNapiModule(options) {
6369
7134
  if (!result)
6370
7135
  return envObject.setLastError(1);
6371
7136
  var h = emnapiCtx.handleStore.get(value);
7137
+ result >>>= 0;
6372
7138
  var r = h.isDate() ? 1 : 0;
6373
7139
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6374
7140
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6384,6 +7150,7 @@ function createNapiModule(options) {
6384
7150
  if (!result)
6385
7151
  return envObject.setLastError(1);
6386
7152
  var val = emnapiCtx.handleStore.get(value).value;
7153
+ result >>>= 0;
6387
7154
  var r = (val instanceof Error) ? 1 : 0;
6388
7155
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6389
7156
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6399,6 +7166,7 @@ function createNapiModule(options) {
6399
7166
  if (!result)
6400
7167
  return envObject.setLastError(1);
6401
7168
  var h = emnapiCtx.handleStore.get(value);
7169
+ result >>>= 0;
6402
7170
  var r = h.isTypedArray() ? 1 : 0;
6403
7171
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6404
7172
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6414,6 +7182,7 @@ function createNapiModule(options) {
6414
7182
  if (!result)
6415
7183
  return envObject.setLastError(1);
6416
7184
  var h = emnapiCtx.handleStore.get(value);
7185
+ result >>>= 0;
6417
7186
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
6418
7187
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6419
7188
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6429,6 +7198,7 @@ function createNapiModule(options) {
6429
7198
  if (!result)
6430
7199
  return envObject.setLastError(1);
6431
7200
  var h = emnapiCtx.handleStore.get(value);
7201
+ result >>>= 0;
6432
7202
  var r = h.isDataView() ? 1 : 0;
6433
7203
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6434
7204
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6454,6 +7224,7 @@ function createNapiModule(options) {
6454
7224
  return envObject.setLastError(1);
6455
7225
  var lv = emnapiCtx.handleStore.get(lhs).value;
6456
7226
  var rv = emnapiCtx.handleStore.get(rhs).value;
7227
+ result >>>= 0;
6457
7228
  r = (lv === rv) ? 1 : 0;
6458
7229
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6459
7230
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6504,6 +7275,7 @@ function createNapiModule(options) {
6504
7275
  if (!result)
6505
7276
  return envObject.setLastError(1);
6506
7277
  var h = emnapiCtx.handleStore.get(arraybuffer);
7278
+ result >>>= 0;
6507
7279
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6508
7280
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
6509
7281
  try {
@@ -6559,11 +7331,13 @@ function createNapiModule(options) {
6559
7331
  });
6560
7332
  emnapiAWST.init();
6561
7333
  emnapiExternalMemory.init();
7334
+ emnapiExternalSAB.init();
6562
7335
  emnapiString.init();
6563
7336
  emnapiTSFN.init();
6564
7337
  PThread.init();
6565
7338
  napiModule.emnapi.syncMemory = $emnapiSyncMemory;
6566
7339
  napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
7340
+ napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
6567
7341
  function addImports(mod) {
6568
7342
  var keys = Object.keys(mod);
6569
7343
  for (var i = 0; i < keys.length; ++i) {
@@ -6691,9 +7465,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
6691
7465
  }
6692
7466
  const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
6693
7467
  if (wasi && !exportMemory) {
6694
- const exports$1 = Object.create(null);
6695
- Object.assign(exports$1, originalExports, { memory });
6696
- instance = { exports: exports$1 };
7468
+ const exports = Object.create(null);
7469
+ Object.assign(exports, originalExports, { memory });
7470
+ instance = { exports };
6697
7471
  }
6698
7472
  const module = source.module;
6699
7473
  if (wasi) {
@@ -6818,12 +7592,7 @@ class MessageHandler extends ThreadMessageHandler {
6818
7592
  try {
6819
7593
  if (type === 'async-worker-init') {
6820
7594
  this.handleAfterLoad(e, () => {
6821
- this.napiModule.initWorker(payload.arg);
6822
- });
6823
- }
6824
- else if (type === 'async-work-execute') {
6825
- this.handleAfterLoad(e, () => {
6826
- this.napiModule.executeAsyncWork(payload.work);
7595
+ this.napiModule.initWorker(payload.arg, payload.func);
6827
7596
  });
6828
7597
  }
6829
7598
  }
@@ -6834,6 +7603,6 @@ class MessageHandler extends ThreadMessageHandler {
6834
7603
  }
6835
7604
  }
6836
7605
 
6837
- const version = "1.8.1";
7606
+ const version = "1.11.1";
6838
7607
 
6839
7608
  export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version };