@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.d596b0c → 0.0.0-insiders.d5ca0ae

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