@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.df96ea5 → 0.0.0-insiders.dfddfcd

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 (63) hide show
  1. package/README.md +1 -1
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +1717 -772
  3. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +13 -4
  4. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +13 -4
  6. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +13 -4
  7. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1922 -777
  8. package/node_modules/@emnapi/core/dist/emnapi-core.js +2003 -828
  9. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +13 -4
  10. package/node_modules/@emnapi/core/dist/emnapi-core.min.js +1 -1
  11. package/node_modules/@emnapi/core/dist/emnapi-core.min.mjs +1 -1
  12. package/node_modules/@emnapi/core/dist/emnapi-core.mjs +1717 -772
  13. package/node_modules/@emnapi/core/package.json +2 -2
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +53 -9
  15. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +11 -3
  16. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  17. package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +11 -3
  18. package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +11 -3
  19. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +56 -9
  20. package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +8 -2
  21. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +56 -9
  22. package/node_modules/@emnapi/runtime/dist/emnapi.js +56 -9
  23. package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +11 -3
  24. package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
  25. package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
  26. package/node_modules/@emnapi/runtime/dist/emnapi.mjs +53 -9
  27. package/node_modules/@emnapi/runtime/package.json +1 -1
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +53 -35
  29. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -1
  30. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +2 -1
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -1
  33. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +65 -35
  34. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +65 -35
  35. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -1
  36. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
  37. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
  38. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +53 -35
  39. package/node_modules/@emnapi/wasi-threads/package.json +1 -1
  40. package/node_modules/@napi-rs/wasm-runtime/dist/emnapi-plugins.cjs +1826 -0
  41. package/node_modules/@napi-rs/wasm-runtime/dist/emnapi-plugins.js +1823 -0
  42. package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +70 -13
  43. package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +15937 -11396
  44. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +70 -13
  45. package/node_modules/@napi-rs/wasm-runtime/package.json +16 -10
  46. package/node_modules/@napi-rs/wasm-runtime/runtime.cjs +26 -2
  47. package/node_modules/@napi-rs/wasm-runtime/runtime.js +32 -4
  48. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +224 -50
  49. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +224 -50
  50. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
  51. package/node_modules/@tybys/wasm-util/dist/wasm-util.js +224 -50
  52. package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
  53. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
  54. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +84 -51
  55. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
  56. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +82 -50
  57. package/node_modules/@tybys/wasm-util/package.json +1 -1
  58. package/package.json +8 -11
  59. package/tailwindcss-oxide.wasi-browser.js +1 -0
  60. package/tailwindcss-oxide.wasi.cjs +19 -7
  61. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  62. package/wasi-worker-browser.mjs +2 -0
  63. package/wasi-worker.mjs +16 -7
@@ -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,15 +295,18 @@ 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')
302
304
  ? process.versions.node.split('.').map(function (n) { return Number(n); })
303
305
  : [0, 0, 0];
304
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
305
- HEAP_DATA_VIEW.setUint32(major, versions[0], true);
306
- HEAP_DATA_VIEW.setUint32(minor, versions[1], true);
307
- HEAP_DATA_VIEW.setUint32(patch, versions[2], true);
306
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
307
+ GET_HEAP_DATA_VIEW().setUint32(major, versions[0], true);
308
+ GET_HEAP_DATA_VIEW().setUint32(minor, versions[1], true);
309
+ GET_HEAP_DATA_VIEW().setUint32(patch, versions[2], true);
308
310
  }
309
311
  function _emnapi_runtime_keepalive_push() {
310
312
  }
@@ -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() {
@@ -365,9 +368,9 @@ function createNapiModule(options) {
365
368
  numberValue >>> 0,
366
369
  (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)
367
370
  ];
368
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
369
- HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
370
- HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
371
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
372
+ GET_HEAP_DATA_VIEW().setInt32(result, tempI64[0], true);
373
+ GET_HEAP_DATA_VIEW().setInt32(result + 4, tempI64[1], true);
371
374
  }
372
375
  function _emnapi_open_handle_scope() {
373
376
  return emnapiCtx.openScope().id;
@@ -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();
@@ -455,9 +468,9 @@ function createNapiModule(options) {
455
468
  }
456
469
  function _emnapi_tell_js_uvthreadpool(threads, size) {
457
470
  var p = [];
458
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
471
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
459
472
  var _loop_1 = function (i) {
460
- var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
473
+ var pthreadPtr = GET_HEAP_DATA_VIEW().getUint32(threads + i * 4, true);
461
474
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
462
475
  p.push(new Promise(function (resolve) {
463
476
  var handler = function (e) {
@@ -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
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
529
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
534
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
535
+ GET_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,9 +693,10 @@ function createNapiModule(options) {
687
693
  var asyncId = asyncContext.asyncId;
688
694
  var triggerAsyncId = asyncContext.triggerAsyncId;
689
695
  if (result) {
690
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
691
- HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
692
- HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
696
+ result >>>= 0;
697
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
698
+ GET_HEAP_DATA_VIEW().setFloat64(result, asyncId, true);
699
+ GET_HEAP_DATA_VIEW().setFloat64(result + 8, triggerAsyncId, true);
693
700
  }
694
701
  }
695
702
  function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) {
@@ -707,11 +714,13 @@ 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
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
721
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
713
722
  for (; i < size; i++) {
714
- var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
723
+ var argVal = GET_HEAP_DATA_VIEW().getUint32(argv + i * 4, true);
715
724
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
716
725
  }
717
726
  var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
@@ -719,9 +728,10 @@ 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
- HEAP_DATA_VIEW.setUint32(result, v, true);
734
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
725
735
  }
726
736
  }
727
737
  function _emnapi_async_init_js(async_resource, async_resource_name, result) {
@@ -745,18 +755,20 @@ function createNapiModule(options) {
745
755
  }
746
756
  var low = Number(numberValue & BigInt(0xffffffff));
747
757
  var high = Number(numberValue >> BigInt(32));
748
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
749
- HEAP_DATA_VIEW.setInt32(result, low, true);
750
- HEAP_DATA_VIEW.setInt32(result + 4, high, true);
758
+ result >>>= 0;
759
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
760
+ GET_HEAP_DATA_VIEW().setInt32(result, low, true);
761
+ GET_HEAP_DATA_VIEW().setInt32(result + 4, high, true);
751
762
  return 0;
752
763
  }
753
764
  function _emnapi_async_destroy_js(async_context) {
754
765
  if (!emnapiNodeBinding) {
755
766
  return 9;
756
767
  }
757
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
758
- var low = HEAP_DATA_VIEW.getInt32(async_context, true);
759
- var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
768
+ async_context >>>= 0;
769
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
770
+ var low = GET_HEAP_DATA_VIEW().getInt32(async_context, true);
771
+ var high = GET_HEAP_DATA_VIEW().getInt32(async_context + 4, true);
760
772
  var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
761
773
  var ret = emnapiNodeBinding.napi.asyncDestroy(pointer);
762
774
  if (ret.status !== 0)
@@ -796,14 +808,17 @@ function createNapiModule(options) {
796
808
  if (typeof v8func !== 'function') {
797
809
  return envObject.setLastError(1);
798
810
  }
799
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
800
- var low = HEAP_DATA_VIEW.getInt32(async_context, true);
801
- var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
811
+ async_context >>>= 0;
812
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
813
+ var low = GET_HEAP_DATA_VIEW().getInt32(async_context, true);
814
+ var high = GET_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++) {
806
- var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
821
+ var argVal = GET_HEAP_DATA_VIEW().getUint32(argv + i * 4, true);
807
822
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
808
823
  }
809
824
  var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
@@ -813,8 +828,9 @@ 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
- HEAP_DATA_VIEW.setUint32(result, v, true);
833
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
818
834
  }
819
835
  return envObject.getReturnStatus();
820
836
  }
@@ -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), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1243
+ GET_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,12 +1439,21 @@ 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 index = dispatchStateAddress >>> 2;
1344
1444
  while (has_more && --iterations_left !== 0) {
1345
- Atomics.store(ui32a, index, 1);
1346
- has_more = emnapiTSFN.dispatchOne(func);
1347
- if (Atomics.exchange(ui32a, index, 0) !== 1) {
1445
+ Atomics.store(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), index, 1);
1446
+ try {
1447
+ has_more = emnapiTSFN.dispatchOne(func);
1448
+ }
1449
+ catch (err) {
1450
+ if (emnapiTSFN._liveSet.has(func)) {
1451
+ Atomics.exchange(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), index, 0);
1452
+ emnapiTSFN.send(func);
1453
+ }
1454
+ throw err;
1455
+ }
1456
+ if (Atomics.exchange(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), index, 0) !== 1) {
1348
1457
  has_more = true;
1349
1458
  }
1350
1459
  }
@@ -1352,25 +1461,67 @@ function createNapiModule(options) {
1352
1461
  emnapiTSFN.send(func);
1353
1462
  }
1354
1463
  },
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) {
1464
+ enqueue: function (func) {
1465
+ var pending = func + emnapiTSFN.offset.async_pending;
1466
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
1467
+ var end = Math.max(pending, scheduled) + 4;
1468
+ var state = function () { return new Int32Array(emnapiTSFN.ensureBufferFor(end)); };
1469
+ if (Atomics.exchange(state(), scheduled >>> 2, 1) !== 0) {
1358
1470
  return;
1359
1471
  }
1360
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1361
- postMessage({
1362
- __emnapi__: {
1363
- type: 'tsfn-send',
1364
- payload: {
1365
- tsfn: func
1472
+ emnapiCtx.feature.setImmediate(function () {
1473
+ if (!emnapiTSFN._liveSet.has(func)) {
1474
+ return;
1475
+ }
1476
+ if (Atomics.load(state(), pending >>> 2) === 0) {
1477
+ Atomics.store(state(), scheduled >>> 2, 0);
1478
+ return;
1479
+ }
1480
+ emnapiCtx.feature.setImmediate(function () {
1481
+ if (!emnapiTSFN._liveSet.has(func)) {
1482
+ return;
1483
+ }
1484
+ try {
1485
+ if (Atomics.exchange(state(), pending >>> 2, 0) === 0) {
1486
+ return;
1487
+ }
1488
+ emnapiTSFN.dispatch(func);
1489
+ }
1490
+ finally {
1491
+ if (emnapiTSFN._liveSet.has(func)) {
1492
+ Atomics.store(state(), scheduled >>> 2, 0);
1493
+ if (Atomics.load(state(), pending >>> 2) !== 0) {
1494
+ emnapiTSFN.enqueue(func);
1495
+ }
1366
1496
  }
1367
1497
  }
1368
1498
  });
1499
+ });
1500
+ },
1501
+ send: function (func) {
1502
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1503
+ var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
1504
+ if ((current_state & 1) === 1) {
1505
+ return;
1369
1506
  }
1370
- else {
1371
- emnapiCtx.feature.setImmediate(function () {
1372
- emnapiTSFN.dispatch(func);
1373
- });
1507
+ var pendng = func + emnapiTSFN.offset.async_pending;
1508
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
1509
+ return;
1510
+ }
1511
+ if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
1512
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1513
+ postMessage({
1514
+ __emnapi__: {
1515
+ type: 'tsfn-send',
1516
+ payload: {
1517
+ tsfn: func
1518
+ }
1519
+ }
1520
+ });
1521
+ }
1522
+ else {
1523
+ emnapiTSFN.enqueue(func);
1524
+ }
1374
1525
  }
1375
1526
  }
1376
1527
  };
@@ -1381,6 +1532,13 @@ function createNapiModule(options) {
1381
1532
  envObject.checkGCAccess();
1382
1533
  if (!async_resource_name)
1383
1534
  return envObject.setLastError(1);
1535
+ max_queue_size >>>= 0;
1536
+ initial_thread_count >>>= 0;
1537
+ env >>>= 0;
1538
+ thread_finalize_data >>>= 0;
1539
+ thread_finalize_cb >>>= 0;
1540
+ context >>>= 0;
1541
+ call_js_cb >>>= 0;
1384
1542
  max_queue_size = max_queue_size >>> 0;
1385
1543
  initial_thread_count = initial_thread_count >>> 0;
1386
1544
  if (initial_thread_count === 0) {
@@ -1389,6 +1547,7 @@ function createNapiModule(options) {
1389
1547
  if (!result)
1390
1548
  return envObject.setLastError(1);
1391
1549
  var ref = 0;
1550
+ func >>>= 0;
1392
1551
  if (!func) {
1393
1552
  if (!call_js_cb)
1394
1553
  return envObject.setLastError(1);
@@ -1418,34 +1577,38 @@ function createNapiModule(options) {
1418
1577
  }
1419
1578
  asyncResourceName = String(asyncResourceName);
1420
1579
  var resource_name = envObject.ensureHandleId(asyncResourceName);
1421
- var sizeofTSFN = emnapiTSFN.offset.end;
1580
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
1422
1581
  var tsfn = _malloc(sizeofTSFN);
1423
1582
  if (!tsfn)
1424
1583
  return envObject.setLastError(9);
1425
- new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1584
+ tsfn >>>= 0;
1585
+ new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1426
1586
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
1427
1587
  var resource_ = resourceRef.id;
1428
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1429
- HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
1588
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1589
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
1430
1590
  if (!emnapiTSFN.initQueue(tsfn)) {
1431
1591
  _free(tsfn);
1432
1592
  resourceRef.dispose();
1433
1593
  return envObject.setLastError(9);
1434
1594
  }
1435
1595
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
1436
- HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1437
- HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1438
- HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
1439
- HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
1440
- HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
1441
- HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
1442
- HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1443
- HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1596
+ GET_HEAP_DATA_VIEW().setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
1597
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1598
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1599
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
1600
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
1601
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.env, env, true);
1602
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
1603
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1604
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1444
1605
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
1606
+ emnapiTSFN._liveSet.add(tsfn);
1445
1607
  envObject.ref();
1446
1608
  emnapiCtx.increaseWaitingRequestCounter();
1447
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1448
- HEAP_DATA_VIEW.setUint32(result, tsfn, true);
1609
+ GET_HEAP_DATA_VIEW().setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1610
+ result >>>= 0;
1611
+ GET_HEAP_DATA_VIEW().setUint32(result, tsfn, true);
1449
1612
  return envObject.clearLastError();
1450
1613
  }
1451
1614
  function napi_get_threadsafe_function_context(func, result) {
@@ -1453,9 +1616,11 @@ function createNapiModule(options) {
1453
1616
  abort();
1454
1617
  return 1;
1455
1618
  }
1619
+ func >>>= 0;
1620
+ result >>>= 0;
1456
1621
  var context = emnapiTSFN.getContext(func);
1457
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1458
- HEAP_DATA_VIEW.setUint32(result, context, true);
1622
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1623
+ GET_HEAP_DATA_VIEW().setUint32(result, context, true);
1459
1624
  return 0;
1460
1625
  }
1461
1626
  function napi_call_threadsafe_function(func, data, mode) {
@@ -1463,6 +1628,8 @@ function createNapiModule(options) {
1463
1628
  abort();
1464
1629
  return 1;
1465
1630
  }
1631
+ func >>>= 0;
1632
+ data >>>= 0;
1466
1633
  return emnapiTSFN.push(func, data, mode);
1467
1634
  }
1468
1635
  function napi_acquire_threadsafe_function(func) {
@@ -1470,13 +1637,14 @@ function createNapiModule(options) {
1470
1637
  abort();
1471
1638
  return 1;
1472
1639
  }
1640
+ func >>>= 0;
1473
1641
  var mutex = emnapiTSFN.getMutex(func);
1474
1642
  return mutex.execute(function () {
1475
- if (emnapiTSFN.getIsClosing(func)) {
1476
- return 16;
1643
+ if (emnapiTSFN.getState(func) === 0) {
1644
+ emnapiTSFN.addThreadCount(func);
1645
+ return 0;
1477
1646
  }
1478
- emnapiTSFN.addThreadCount(func);
1479
- return 0;
1647
+ return 16;
1480
1648
  });
1481
1649
  }
1482
1650
  function napi_release_threadsafe_function(func, mode) {
@@ -1484,37 +1652,52 @@ function createNapiModule(options) {
1484
1652
  abort();
1485
1653
  return 1;
1486
1654
  }
1655
+ func >>>= 0;
1487
1656
  var mutex = emnapiTSFN.getMutex(func);
1488
1657
  var cond = emnapiTSFN.getCond(func);
1489
- return mutex.execute(function () {
1658
+ var shouldDelete = false;
1659
+ var ret = mutex.execute(function () {
1490
1660
  if (emnapiTSFN.getThreadCount(func) === 0) {
1491
1661
  return 1;
1492
1662
  }
1493
1663
  emnapiTSFN.subThreadCount(func);
1494
1664
  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) {
1665
+ if (emnapiTSFN.getState(func) === 0) {
1666
+ if (mode === 1) {
1667
+ emnapiTSFN.setState(func, 1);
1668
+ }
1669
+ if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
1500
1670
  cond.signal();
1501
1671
  }
1502
1672
  emnapiTSFN.send(func);
1503
1673
  }
1504
1674
  }
1675
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1676
+ return 0;
1677
+ }
1678
+ shouldDelete = true;
1505
1679
  return 0;
1506
1680
  });
1681
+ if (shouldDelete) {
1682
+ emnapiTSFN.destroy(func);
1683
+ }
1684
+ return ret;
1507
1685
  }
1508
1686
  function napi_unref_threadsafe_function(env, func) {
1509
1687
  if (!func) {
1510
1688
  abort();
1511
1689
  return 1;
1512
1690
  }
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();
1691
+ func >>>= 0;
1692
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1693
+ var asyncRefOffset = asyncRefAddress >>> 2;
1694
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1695
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1696
+ if (currentValue > 0) {
1697
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
1698
+ if (currentValue === 1) {
1699
+ emnapiCtx.decreaseWaitingRequestCounter();
1700
+ }
1518
1701
  }
1519
1702
  return 0;
1520
1703
  }
@@ -1523,34 +1706,66 @@ function createNapiModule(options) {
1523
1706
  abort();
1524
1707
  return 1;
1525
1708
  }
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);
1709
+ func >>>= 0;
1710
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1711
+ var asyncRefOffset = asyncRefAddress >>> 2;
1712
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1713
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1714
+ if (!currentValue) {
1530
1715
  emnapiCtx.increaseWaitingRequestCounter();
1531
1716
  }
1717
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
1532
1718
  return 0;
1533
1719
  }
1534
1720
  var emnapiAWMT = {
1535
- unusedWorkers: [],
1536
- runningWorkers: [],
1537
- workQueue: [],
1721
+ pool: [],
1538
1722
  workerReady: null,
1723
+ globalAddress: 0,
1724
+ globalOffset: {
1725
+ idle_threads: 0,
1726
+ q: 1 * 4,
1727
+ next: 1 * 4,
1728
+ prev: 2 * 4,
1729
+ mutex: 3 * 4,
1730
+ cond: 4 * 4,
1731
+ exit_message: 5 * 4,
1732
+ end: 7 * 4
1733
+ },
1539
1734
  offset: {
1540
1735
  resource: 0,
1541
1736
  async_id: 8,
1542
1737
  trigger_async_id: 16,
1543
1738
  env: 24,
1544
- data: 1 * 4 + 24,
1545
- execute: 2 * 4 + 24,
1546
- complete: 3 * 4 + 24,
1547
- end: 4 * 4 + 24
1739
+ status: 1 * 4 + 24,
1740
+ queue: 2 * 4 + 24,
1741
+ queue_next: 2 * 4 + 24,
1742
+ queue_prev: 3 * 4 + 24,
1743
+ data: 4 * 4 + 24,
1744
+ execute: 5 * 4 + 24,
1745
+ complete: 6 * 4 + 24,
1746
+ end: 7 * 4 + 24
1747
+ },
1748
+ ensureBufferFor: function (end) {
1749
+ var buffer = wasmMemory.buffer;
1750
+ if (end > buffer.byteLength) {
1751
+ wasmMemory.grow(0);
1752
+ buffer = wasmMemory.buffer;
1753
+ }
1754
+ return buffer;
1548
1755
  },
1549
1756
  init: function () {
1550
- emnapiAWMT.unusedWorkers = [];
1551
- emnapiAWMT.runningWorkers = [];
1552
- emnapiAWMT.workQueue = [];
1757
+ emnapiAWMT.pool = [];
1553
1758
  emnapiAWMT.workerReady = null;
1759
+ if (typeof PThread !== 'undefined') {
1760
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
1761
+ Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
1762
+ var __original_getNewWorker_1 = PThread.getNewWorker;
1763
+ PThread.getNewWorker = function () {
1764
+ var r = __original_getNewWorker_1.apply(this, arguments);
1765
+ emnapiAWMT.addListener(r);
1766
+ return r;
1767
+ };
1768
+ }
1554
1769
  },
1555
1770
  addListener: function (worker) {
1556
1771
  if (!worker)
@@ -1564,18 +1779,8 @@ function createNapiModule(options) {
1564
1779
  var type = __emnapi__.type;
1565
1780
  var payload = __emnapi__.payload;
1566
1781
  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
1782
  emnapiAWMT.callComplete(payload.work, 0);
1572
1783
  }
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
1784
  }
1580
1785
  };
1581
1786
  var dispose = function () {
@@ -1596,142 +1801,233 @@ function createNapiModule(options) {
1596
1801
  }
1597
1802
  return true;
1598
1803
  },
1804
+ initGlobal: function () {
1805
+ if (!emnapiAWMT.globalAddress) {
1806
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
1807
+ emnapiAWMT.globalAddress >>>= 0;
1808
+ var size = emnapiAWMT.globalOffset.end;
1809
+ var addr = emnapiAWMT.globalAddress;
1810
+ new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
1811
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
1812
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
1813
+ }
1814
+ },
1815
+ terminateWorkers: function () {
1816
+ emnapiAWMT.pool.forEach(function (w) {
1817
+ var _a, _b;
1818
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
1819
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
1820
+ w.terminate();
1821
+ });
1822
+ emnapiAWMT.pool.length = 0;
1823
+ },
1599
1824
  initWorkers: function (n) {
1600
1825
  if (ENVIRONMENT_IS_PTHREAD) {
1601
1826
  return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
1602
1827
  }
1603
1828
  if (emnapiAWMT.workerReady)
1604
1829
  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
1830
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
1611
1831
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
1612
1832
  }
1833
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
1834
+ var args = [];
1835
+ emnapiAWMT.initGlobal();
1613
1836
  for (var i = 0; i < n; ++i) {
1614
- args.push(wasmInstance.exports.emnapi_async_worker_create());
1837
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
1615
1838
  }
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);
1839
+ var promises = args.map(function (index) {
1840
+ if (index === 0) {
1841
+ return Promise.reject(new Error('Failed to create async worker'));
1638
1842
  }
1639
- }
1640
- catch (err) {
1641
- for (var i = 0; i < n; ++i) {
1642
- var arg = args[i];
1643
- _free(arg);
1843
+ var worker;
1844
+ if (index < 0) {
1845
+ worker = emnapiAWMT.pool[-index - 1];
1846
+ if (worker)
1847
+ return worker.whenLoaded;
1644
1848
  }
1645
- throw err;
1646
- }
1849
+ index >>>= 0;
1850
+ var tidOffset = 20;
1851
+ var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
1852
+ var tid = view.getInt32(index + tidOffset, true);
1853
+ worker = PThread.pthreads[tid];
1854
+ return worker.whenLoaded;
1855
+ });
1647
1856
  emnapiAWMT.workerReady = Promise.all(promises);
1648
1857
  return emnapiAWMT.workerReady;
1649
1858
  },
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
1859
  getResource: function (work) {
1664
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
1860
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
1861
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1862
+ return GET_HEAP_DATA_VIEW().getUint32(work + emnapiAWMT.offset.resource, true);
1665
1863
  },
1666
1864
  getExecute: function (work) {
1667
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
1865
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
1866
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1867
+ return GET_HEAP_DATA_VIEW().getUint32(work + emnapiAWMT.offset.execute, true);
1668
1868
  },
1669
1869
  getComplete: function (work) {
1670
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
1870
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
1871
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1872
+ return GET_HEAP_DATA_VIEW().getUint32(work + emnapiAWMT.offset.complete, true);
1671
1873
  },
1672
1874
  getEnv: function (work) {
1673
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
1875
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
1876
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1877
+ return GET_HEAP_DATA_VIEW().getUint32(work + emnapiAWMT.offset.env, true);
1674
1878
  },
1675
1879
  getData: function (work) {
1676
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
1880
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
1881
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1882
+ return GET_HEAP_DATA_VIEW().getUint32(work + emnapiAWMT.offset.data, true);
1883
+ },
1884
+ getMutex: function () {
1885
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
1886
+ var mutex = {
1887
+ lock: function () {
1888
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1889
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1890
+ if (isBrowserMain) {
1891
+ while (true) {
1892
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1893
+ if (oldValue === 0) {
1894
+ return;
1895
+ }
1896
+ }
1897
+ }
1898
+ else {
1899
+ while (true) {
1900
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1901
+ if (oldValue === 0) {
1902
+ return;
1903
+ }
1904
+ Atomics.wait(i32a, 0, 10);
1905
+ }
1906
+ }
1907
+ },
1908
+ unlock: function () {
1909
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1910
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1911
+ if (oldValue !== 10) {
1912
+ throw new Error('Tried to unlock while not holding the mutex');
1913
+ }
1914
+ Atomics.notify(i32a, 0, 1);
1915
+ },
1916
+ execute: function (fn) {
1917
+ mutex.lock();
1918
+ try {
1919
+ return fn();
1920
+ }
1921
+ finally {
1922
+ mutex.unlock();
1923
+ }
1924
+ }
1925
+ };
1926
+ return mutex;
1927
+ },
1928
+ getCond: function () {
1929
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
1930
+ var mutex = emnapiAWMT.getMutex();
1931
+ var cond = {
1932
+ wait: function () {
1933
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1934
+ var value = Atomics.load(i32a, 0);
1935
+ mutex.unlock();
1936
+ Atomics.wait(i32a, 0, value);
1937
+ mutex.lock();
1938
+ },
1939
+ signal: function () {
1940
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1941
+ Atomics.add(i32a, 0, 1);
1942
+ Atomics.notify(i32a, 0, 1);
1943
+ }
1944
+ };
1945
+ return cond;
1946
+ },
1947
+ queueInit: function (q) {
1948
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1949
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1950
+ GET_HEAP_DATA_VIEW().setUint32(q, q, true);
1951
+ GET_HEAP_DATA_VIEW().setUint32(q + 4, q, true);
1952
+ },
1953
+ queueInsertTail: function (h, q) {
1954
+ emnapiAWMT.ensureBufferFor(h + 4 + 4);
1955
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1956
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1957
+ GET_HEAP_DATA_VIEW().setUint32(q, h, true);
1958
+ var tempValue = GET_HEAP_DATA_VIEW().getUint32(h + 4, true);
1959
+ GET_HEAP_DATA_VIEW().setUint32(q + 4, tempValue, true);
1960
+ var qprev = GET_HEAP_DATA_VIEW().getUint32(q + 4, true);
1961
+ GET_HEAP_DATA_VIEW().setUint32(qprev, q, true);
1962
+ GET_HEAP_DATA_VIEW().setUint32(h + 4, q, true);
1963
+ },
1964
+ queueRemove: function (q) {
1965
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1966
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1967
+ var qprev = GET_HEAP_DATA_VIEW().getUint32(q + 4, true);
1968
+ var qnext = GET_HEAP_DATA_VIEW().getUint32(q, true);
1969
+ GET_HEAP_DATA_VIEW().setUint32(qprev, qnext, true);
1970
+ GET_HEAP_DATA_VIEW().setUint32(qnext + 4, qprev, true);
1971
+ },
1972
+ queueEmpty: function (q) {
1973
+ emnapiAWMT.ensureBufferFor(q + 4);
1974
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
1975
+ return q == GET_HEAP_DATA_VIEW().getUint32(q, true);
1677
1976
  },
1678
1977
  scheduleWork: function (work) {
1679
1978
  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
- }
1979
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
1980
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1981
+ emnapiAWMT.workerReady.ready = true;
1982
+ }).catch(function (err) {
1983
+ emnapiAWMT.workerReady = null;
1984
+ throw err;
1687
1985
  });
1688
- return;
1689
1986
  }
1690
1987
  emnapiCtx.increaseWaitingRequestCounter();
1691
- emnapiAWMT.workQueue.push(work);
1692
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
1693
- emnapiAWMT.checkIdleWorker();
1988
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
1989
+ Atomics.store(statusBuffer, 0, 0);
1990
+ var mutex = emnapiAWMT.getMutex();
1991
+ var cond = emnapiAWMT.getCond();
1992
+ mutex.lock();
1993
+ try {
1994
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
1694
1995
  }
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
- }
1996
+ catch (err) {
1997
+ emnapiCtx.decreaseWaitingRequestCounter();
1998
+ mutex.unlock();
1999
+ throw err;
1709
2000
  }
2001
+ emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
2002
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2003
+ if (GET_HEAP_DATA_VIEW().getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
2004
+ cond.signal();
2005
+ }
2006
+ mutex.unlock();
1710
2007
  },
1711
2008
  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;
2009
+ var cancelled = false;
2010
+ emnapiAWMT.getMutex().execute(function () {
2011
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
2012
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2013
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && GET_HEAP_DATA_VIEW().getInt32(work + emnapiAWMT.offset.status, true) !== 2;
2014
+ if (cancelled) {
2015
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
2016
+ }
2017
+ });
2018
+ if (!cancelled) {
2019
+ return 9;
1721
2020
  }
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;
2021
+ if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
2022
+ return 9;
1731
2023
  }
1732
- return 9;
2024
+ emnapiCtx.feature.setImmediate(function () {
2025
+ emnapiAWMT.callComplete(work, 11);
2026
+ });
2027
+ return 0;
1733
2028
  },
1734
2029
  callComplete: function (work, status) {
2030
+ emnapiCtx.decreaseWaitingRequestCounter();
1735
2031
  var complete = emnapiAWMT.getComplete(work);
1736
2032
  var env = emnapiAWMT.getEnv(work);
1737
2033
  var data = emnapiAWMT.getData(work);
@@ -1749,7 +2045,7 @@ function createNapiModule(options) {
1749
2045
  var resource = emnapiAWMT.getResource(work);
1750
2046
  var resource_value = emnapiCtx.refStore.get(resource).get();
1751
2047
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1752
- var view = new DataView(wasmMemory.buffer);
2048
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
1753
2049
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
1754
2050
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
1755
2051
  emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
@@ -1766,6 +2062,7 @@ function createNapiModule(options) {
1766
2062
  }
1767
2063
  }
1768
2064
  };
2065
+ emnapiAWMT.init();
1769
2066
  var napi_create_async_work = singleThreadAsyncWork
1770
2067
  ? function (env, resource, resource_name, execute, complete, data, result) {
1771
2068
  if (!env)
@@ -1787,8 +2084,9 @@ function createNapiModule(options) {
1787
2084
  return envObject.setLastError(1);
1788
2085
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
1789
2086
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
1790
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1791
- HEAP_DATA_VIEW.setUint32(result, id, true);
2087
+ result >>>= 0;
2088
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2089
+ GET_HEAP_DATA_VIEW().setUint32(result, id, true);
1792
2090
  return envObject.clearLastError();
1793
2091
  }
1794
2092
  : function (env, resource, resource_name, execute, complete, data, result) {
@@ -1813,18 +2111,21 @@ function createNapiModule(options) {
1813
2111
  var aw = _malloc(sizeofAW);
1814
2112
  if (!aw)
1815
2113
  return envObject.setLastError(9);
1816
- new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
2114
+ aw >>>= 0;
2115
+ new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
1817
2116
  var s = envObject.ensureHandleId(resourceObject);
1818
2117
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
1819
2118
  var resource_ = resourceRef.id;
1820
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1821
- HEAP_DATA_VIEW.setUint32(aw, resource_, true);
2119
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2120
+ GET_HEAP_DATA_VIEW().setUint32(aw, resource_, true);
1822
2121
  _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
1823
- HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
1824
- HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
1825
- HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
1826
- HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
1827
- HEAP_DATA_VIEW.setUint32(result, aw, true);
2122
+ GET_HEAP_DATA_VIEW().setUint32(aw + emnapiAWMT.offset.env, env, true);
2123
+ GET_HEAP_DATA_VIEW().setUint32(aw + emnapiAWMT.offset.execute, execute, true);
2124
+ GET_HEAP_DATA_VIEW().setUint32(aw + emnapiAWMT.offset.complete, complete, true);
2125
+ GET_HEAP_DATA_VIEW().setUint32(aw + emnapiAWMT.offset.data, data, true);
2126
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
2127
+ result >>>= 0;
2128
+ GET_HEAP_DATA_VIEW().setUint32(result, aw, true);
1828
2129
  return envObject.clearLastError();
1829
2130
  };
1830
2131
  var napi_delete_async_work = singleThreadAsyncWork
@@ -1835,6 +2136,7 @@ function createNapiModule(options) {
1835
2136
  envObject.checkGCAccess();
1836
2137
  if (!work)
1837
2138
  return envObject.setLastError(1);
2139
+ work >>>= 0;
1838
2140
  emnapiAWST.remove(work);
1839
2141
  return envObject.clearLastError();
1840
2142
  }
@@ -1845,10 +2147,11 @@ function createNapiModule(options) {
1845
2147
  envObject.checkGCAccess();
1846
2148
  if (!work)
1847
2149
  return envObject.setLastError(1);
2150
+ work >>>= 0;
1848
2151
  var resource = emnapiAWMT.getResource(work);
1849
2152
  emnapiCtx.refStore.get(resource).dispose();
1850
2153
  if (emnapiNodeBinding) {
1851
- var view = new DataView(wasmMemory.buffer);
2154
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
1852
2155
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
1853
2156
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
1854
2157
  _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
@@ -1863,6 +2166,7 @@ function createNapiModule(options) {
1863
2166
  var envObject = emnapiCtx.envStore.get(env);
1864
2167
  if (!work)
1865
2168
  return envObject.setLastError(1);
2169
+ work >>>= 0;
1866
2170
  emnapiAWST.queue(work);
1867
2171
  return envObject.clearLastError();
1868
2172
  }
@@ -1872,6 +2176,7 @@ function createNapiModule(options) {
1872
2176
  var envObject = emnapiCtx.envStore.get(env);
1873
2177
  if (!work)
1874
2178
  return envObject.setLastError(1);
2179
+ work >>>= 0;
1875
2180
  emnapiAWMT.scheduleWork(work);
1876
2181
  return envObject.clearLastError();
1877
2182
  };
@@ -1882,6 +2187,7 @@ function createNapiModule(options) {
1882
2187
  var envObject = emnapiCtx.envStore.get(env);
1883
2188
  if (!work)
1884
2189
  return envObject.setLastError(1);
2190
+ work >>>= 0;
1885
2191
  var status = emnapiAWST.cancel(work);
1886
2192
  if (status === 0)
1887
2193
  return envObject.clearLastError();
@@ -1893,41 +2199,125 @@ function createNapiModule(options) {
1893
2199
  var envObject = emnapiCtx.envStore.get(env);
1894
2200
  if (!work)
1895
2201
  return envObject.setLastError(1);
2202
+ work >>>= 0;
1896
2203
  var status = emnapiAWMT.cancelWork(work);
1897
2204
  if (status === 0)
1898
2205
  return envObject.clearLastError();
1899
2206
  return envObject.setLastError(status);
1900
2207
  };
1901
- function initWorker(startArg) {
2208
+ function _emnapi_async_worker(globalAddress) {
2209
+ globalAddress >>>= 0;
2210
+ emnapiAWMT.globalAddress = globalAddress;
2211
+ var mutex = emnapiAWMT.getMutex();
2212
+ var cond = emnapiAWMT.getCond();
2213
+ mutex.lock();
2214
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
2215
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
2216
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
2217
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2218
+ for (;;) {
2219
+ emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
2220
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
2221
+ Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2222
+ cond.wait();
2223
+ Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2224
+ }
2225
+ var q = GET_HEAP_DATA_VIEW().getUint32(workerQueueAddr, true);
2226
+ if (q === exitMessageAddr) {
2227
+ cond.signal();
2228
+ mutex.unlock();
2229
+ break;
2230
+ }
2231
+ var work = q - emnapiAWMT.offset.queue;
2232
+ emnapiAWMT.queueRemove(q);
2233
+ emnapiAWMT.queueInit(q);
2234
+ mutex.unlock();
2235
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
2236
+ if (Atomics.load(statusBuffer, 0) === 1) {
2237
+ abort('unreachable');
2238
+ }
2239
+ var execute = emnapiAWMT.getExecute(work);
2240
+ var env = emnapiAWMT.getEnv(work);
2241
+ var data = emnapiAWMT.getData(work);
2242
+ (wasmTable.get(execute))(env, data);
2243
+ Atomics.store(statusBuffer, 0, 2);
2244
+ var postMessage_1 = napiModule.postMessage;
2245
+ postMessage_1({
2246
+ __emnapi__: {
2247
+ type: 'async-work-complete',
2248
+ payload: { work: work }
2249
+ }
2250
+ });
2251
+ mutex.lock();
2252
+ }
2253
+ return 0;
2254
+ }
2255
+ function _emnapi_spawn_worker(f, globalAddress) {
2256
+ if (typeof onCreateWorker !== 'function') {
2257
+ throw new TypeError('`options.onCreateWorker` is not a function');
2258
+ }
2259
+ var promises = [];
2260
+ var args = [];
2261
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2262
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2263
+ }
2264
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
2265
+ var handleError = function (e) {
2266
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
2267
+ emnapiAWMT.terminateWorkers();
2268
+ }
2269
+ };
2270
+ var ret;
2271
+ try {
2272
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2273
+ var p = PThread.loadWasmModuleToWorker(worker_1);
2274
+ if (ENVIRONMENT_IS_NODE) {
2275
+ worker_1.on('error', handleError);
2276
+ }
2277
+ else {
2278
+ worker_1.addEventListener('error', handleError, false);
2279
+ }
2280
+ emnapiAWMT.addListener(worker_1);
2281
+ emnapiTSFN.addListener(worker_1);
2282
+ promises.push(p.then(function () {
2283
+ if (typeof worker_1.unref === 'function') {
2284
+ worker_1.unref();
2285
+ }
2286
+ }));
2287
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
2288
+ var arg = args[0];
2289
+ worker_1.threadBlockBase = arg;
2290
+ worker_1.postMessage({
2291
+ __emnapi__: {
2292
+ type: 'async-worker-init',
2293
+ payload: { arg: arg, func: [f, globalAddress] }
2294
+ }
2295
+ });
2296
+ }
2297
+ catch (err) {
2298
+ var arg = args[0];
2299
+ _free(arg);
2300
+ throw err;
2301
+ }
2302
+ return ret;
2303
+ }
2304
+ function initWorker(startArg, func) {
1902
2305
  if (napiModule.childThread) {
1903
2306
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
1904
2307
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
1905
2308
  }
1906
2309
  wasmInstance.exports.emnapi_async_worker_init(startArg);
2310
+ (wasmTable.get(func[0]))(func[1]);
1907
2311
  }
1908
2312
  else {
1909
2313
  throw new Error('startThread is only available in child threads');
1910
2314
  }
1911
2315
  }
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
2316
  napiModule.initWorker = initWorker;
1928
- napiModule.executeAsyncWork = executeAsyncWork;
1929
2317
  var asyncWorkMod = Object.freeze({
1930
2318
  __proto__: null,
2319
+ _emnapi_async_worker: _emnapi_async_worker,
2320
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
1931
2321
  napi_cancel_async_work: napi_cancel_async_work,
1932
2322
  napi_create_async_work: napi_create_async_work,
1933
2323
  napi_delete_async_work: napi_delete_async_work,
@@ -1937,17 +2327,75 @@ function createNapiModule(options) {
1937
2327
  registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined,
1938
2328
  table: new WeakMap(),
1939
2329
  wasmMemoryViewTable: new WeakMap(),
2330
+ intrinsics: undefined,
1940
2331
  init: function () {
2332
+ var _a;
1941
2333
  emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined;
1942
2334
  emnapiExternalMemory.table = new WeakMap();
1943
2335
  emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
2336
+ var sharedArrayBufferByteLength = typeof SharedArrayBuffer === 'function'
2337
+ ? (_a = Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, 'byteLength')) === null || _a === void 0 ? void 0 : _a.get
2338
+ : undefined;
2339
+ emnapiExternalMemory.intrinsics = {
2340
+ isView: ArrayBuffer.isView,
2341
+ typedArray: {
2342
+ buffer: Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'buffer').get,
2343
+ byteOffset: Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'byteOffset').get,
2344
+ length: Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'length').get,
2345
+ tag: Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), Symbol.toStringTag).get
2346
+ },
2347
+ dataView: {
2348
+ buffer: Object.getOwnPropertyDescriptor(DataView.prototype, 'buffer').get,
2349
+ byteOffset: Object.getOwnPropertyDescriptor(DataView.prototype, 'byteOffset').get,
2350
+ byteLength: Object.getOwnPropertyDescriptor(DataView.prototype, 'byteLength').get
2351
+ },
2352
+ arrayBuffer: {
2353
+ byteLength: Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get
2354
+ },
2355
+ sharedArrayBuffer: sharedArrayBufferByteLength !== undefined
2356
+ ? {
2357
+ byteLength: sharedArrayBufferByteLength
2358
+ }
2359
+ : undefined,
2360
+ ctors: {
2361
+ Int8Array: Int8Array,
2362
+ Uint8Array: Uint8Array,
2363
+ Uint8ClampedArray: Uint8ClampedArray,
2364
+ Int16Array: Int16Array,
2365
+ Uint16Array: Uint16Array,
2366
+ Int32Array: Int32Array,
2367
+ Uint32Array: Uint32Array,
2368
+ Float16Array: typeof Float16Array === 'function' ? Float16Array : undefined,
2369
+ Float32Array: Float32Array,
2370
+ Float64Array: Float64Array,
2371
+ BigInt64Array: BigInt64Array,
2372
+ BigUint64Array: BigUint64Array
2373
+ },
2374
+ bufferFrom: undefined
2375
+ };
1944
2376
  },
1945
2377
  isSharedArrayBuffer: function (value) {
1946
- return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
1947
- (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
2378
+ var sharedArrayBuffer = emnapiExternalMemory.intrinsics.sharedArrayBuffer;
2379
+ if (sharedArrayBuffer !== undefined) {
2380
+ if (typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer)
2381
+ return true;
2382
+ try {
2383
+ sharedArrayBuffer.byteLength.call(value);
2384
+ return true;
2385
+ }
2386
+ catch (_) {
2387
+ return false;
2388
+ }
2389
+ }
2390
+ try {
2391
+ emnapiExternalMemory.intrinsics.arrayBuffer.byteLength.call(value);
2392
+ return false;
2393
+ }
2394
+ catch (_) { }
2395
+ return Object.prototype.toString.call(value) === '[object SharedArrayBuffer]';
1948
2396
  },
1949
2397
  isDetachedArrayBuffer: function (arrayBuffer) {
1950
- if (arrayBuffer.byteLength === 0) {
2398
+ if (emnapiExternalMemory.bufferByteLength(arrayBuffer) === 0) {
1951
2399
  try {
1952
2400
  new Uint8Array(arrayBuffer);
1953
2401
  }
@@ -1957,6 +2405,48 @@ function createNapiModule(options) {
1957
2405
  }
1958
2406
  return false;
1959
2407
  },
2408
+ bufferByteLength: function (buffer) {
2409
+ var _a;
2410
+ var intrinsics = emnapiExternalMemory.intrinsics;
2411
+ try {
2412
+ return intrinsics.arrayBuffer.byteLength.call(buffer);
2413
+ }
2414
+ catch (err) {
2415
+ var sharedArrayBuffer = intrinsics.sharedArrayBuffer;
2416
+ if (sharedArrayBuffer !== undefined) {
2417
+ return sharedArrayBuffer.byteLength.call(buffer);
2418
+ }
2419
+ var proto = Object.getPrototypeOf(buffer);
2420
+ var get = proto !== null && proto !== undefined
2421
+ ? (_a = Object.getOwnPropertyDescriptor(proto, 'byteLength')) === null || _a === void 0 ? void 0 : _a.get
2422
+ : undefined;
2423
+ if (get === undefined)
2424
+ throw err;
2425
+ return get.call(buffer);
2426
+ }
2427
+ },
2428
+ viewBuffer: function (view) {
2429
+ var intrinsics = emnapiExternalMemory.intrinsics;
2430
+ return intrinsics.typedArray.tag.call(view) === undefined
2431
+ ? intrinsics.dataView.buffer.call(view)
2432
+ : intrinsics.typedArray.buffer.call(view);
2433
+ },
2434
+ viewByteOffset: function (view) {
2435
+ var intrinsics = emnapiExternalMemory.intrinsics;
2436
+ return intrinsics.typedArray.tag.call(view) === undefined
2437
+ ? intrinsics.dataView.byteOffset.call(view)
2438
+ : intrinsics.typedArray.byteOffset.call(view);
2439
+ },
2440
+ viewLength: function (view) {
2441
+ var intrinsics = emnapiExternalMemory.intrinsics;
2442
+ return intrinsics.typedArray.tag.call(view) === undefined
2443
+ ? intrinsics.dataView.byteLength.call(view)
2444
+ : intrinsics.typedArray.length.call(view);
2445
+ },
2446
+ getBufferFrom: function () {
2447
+ var _a;
2448
+ return (_a = emnapiExternalMemory.intrinsics.bufferFrom) !== null && _a !== void 0 ? _a : (emnapiExternalMemory.intrinsics.bufferFrom = emnapiCtx.feature.Buffer.from);
2449
+ },
1960
2450
  getArrayBufferPointer: function (arrayBuffer, shouldCopy) {
1961
2451
  var _a;
1962
2452
  var info = {
@@ -1979,15 +2469,17 @@ function createNapiModule(options) {
1979
2469
  }
1980
2470
  return cachedInfo;
1981
2471
  }
1982
- if (isDetached || (arrayBuffer.byteLength === 0)) {
2472
+ var byteLength = emnapiExternalMemory.bufferByteLength(arrayBuffer);
2473
+ if (isDetached || (byteLength === 0)) {
1983
2474
  return info;
1984
2475
  }
1985
2476
  if (!shouldCopy) {
1986
2477
  return info;
1987
2478
  }
1988
- var pointer = _malloc(arrayBuffer.byteLength);
2479
+ var pointer = _malloc(byteLength);
1989
2480
  if (!pointer)
1990
2481
  throw new Error('Out of memory');
2482
+ pointer >>>= 0;
1991
2483
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
1992
2484
  info.address = pointer;
1993
2485
  info.ownership = emnapiExternalMemory.registry ? 0 : 1;
@@ -1997,27 +2489,30 @@ function createNapiModule(options) {
1997
2489
  return info;
1998
2490
  },
1999
2491
  getOrUpdateMemoryView: function (view) {
2000
- if (view.buffer === wasmMemory.buffer) {
2492
+ var intrinsics = emnapiExternalMemory.intrinsics;
2493
+ var tag = intrinsics.typedArray.tag.call(view);
2494
+ var isDataView = tag === undefined;
2495
+ var buffer = isDataView ? intrinsics.dataView.buffer.call(view) : intrinsics.typedArray.buffer.call(view);
2496
+ if (buffer === wasmMemory.buffer) {
2001
2497
  if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
2002
2498
  emnapiExternalMemory.wasmMemoryViewTable.set(view, {
2003
- Ctor: view.constructor,
2004
- address: view.byteOffset,
2005
- length: view instanceof DataView ? view.byteLength : view.length,
2499
+ Ctor: isDataView ? DataView : intrinsics.ctors[tag],
2500
+ address: isDataView ? intrinsics.dataView.byteOffset.call(view) : intrinsics.typedArray.byteOffset.call(view),
2501
+ length: isDataView ? intrinsics.dataView.byteLength.call(view) : intrinsics.typedArray.length.call(view),
2006
2502
  ownership: 1,
2007
2503
  runtimeAllocated: 0
2008
2504
  });
2009
2505
  }
2010
2506
  return view;
2011
2507
  }
2012
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
2013
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
2508
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(buffer) || emnapiExternalMemory.isSharedArrayBuffer(buffer);
2014
2509
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
2015
2510
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
2016
2511
  var Ctor = info.Ctor;
2017
2512
  var newView = void 0;
2018
2513
  var Buffer_1 = emnapiCtx.feature.Buffer;
2019
2514
  if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) {
2020
- newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length);
2515
+ newView = emnapiExternalMemory.getBufferFrom()(wasmMemory.buffer, info.address, info.length);
2021
2516
  }
2022
2517
  else {
2023
2518
  newView = new Ctor(wasmMemory.buffer, info.address, info.length);
@@ -2029,15 +2524,65 @@ function createNapiModule(options) {
2029
2524
  },
2030
2525
  getViewPointer: function (view, shouldCopy) {
2031
2526
  view = emnapiExternalMemory.getOrUpdateMemoryView(view);
2032
- if (view.buffer === wasmMemory.buffer) {
2527
+ var buffer = emnapiExternalMemory.viewBuffer(view);
2528
+ if (buffer === wasmMemory.buffer) {
2033
2529
  if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
2034
2530
  var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated;
2035
2531
  return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view };
2036
2532
  }
2037
- return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view };
2533
+ return { address: emnapiExternalMemory.viewByteOffset(view), ownership: 1, runtimeAllocated: 0, view: view };
2534
+ }
2535
+ var _b = emnapiExternalMemory.getArrayBufferPointer(buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated;
2536
+ return { address: address === 0 ? 0 : (address + emnapiExternalMemory.viewByteOffset(view)), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
2537
+ }
2538
+ };
2539
+ var emnapiExternalSAB = {
2540
+ registry: undefined,
2541
+ handleTable: new WeakMap(),
2542
+ init: function () {
2543
+ emnapiExternalSAB.handleTable = new WeakMap();
2544
+ emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
2545
+ ? new FinalizationRegistry(function (metaPtr) {
2546
+ emnapiExternalSAB.release(metaPtr);
2547
+ })
2548
+ : undefined;
2549
+ },
2550
+ allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
2551
+ var size = 4 * 6;
2552
+ var metaPtr = _malloc(size);
2553
+ if (!metaPtr)
2554
+ throw new Error('Out of memory');
2555
+ metaPtr >>>= 0;
2556
+ Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2557
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2558
+ GET_HEAP_DATA_VIEW().setUint32(metaPtr + 4, external_data, true);
2559
+ GET_HEAP_DATA_VIEW().setUint32(metaPtr + 8, byte_length, true);
2560
+ GET_HEAP_DATA_VIEW().setUint32(metaPtr + 12, finalize_cb, true);
2561
+ GET_HEAP_DATA_VIEW().setUint32(metaPtr + 16, finalize_data, true);
2562
+ GET_HEAP_DATA_VIEW().setUint32(metaPtr + 20, finalize_hint, true);
2563
+ return metaPtr;
2564
+ },
2565
+ readMeta: function (metaPtr) {
2566
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2567
+ var external_data = GET_HEAP_DATA_VIEW().getUint32(metaPtr + 4, true);
2568
+ var byte_length = GET_HEAP_DATA_VIEW().getUint32(metaPtr + 8, true);
2569
+ var finalize_cb = GET_HEAP_DATA_VIEW().getUint32(metaPtr + 12, true);
2570
+ var finalize_data = GET_HEAP_DATA_VIEW().getUint32(metaPtr + 16, true);
2571
+ var finalize_hint = GET_HEAP_DATA_VIEW().getUint32(metaPtr + 20, true);
2572
+ return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
2573
+ },
2574
+ release: function (metaPtr) {
2575
+ var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2576
+ if (oldRefcount === 1) {
2577
+ var info = emnapiExternalSAB.readMeta(metaPtr);
2578
+ var finalize_cb = info.finalize_cb;
2579
+ if (finalize_cb) {
2580
+ var finalize_data = info.finalize_data;
2581
+ var finalize_hint = info.finalize_hint;
2582
+ (wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
2583
+ }
2584
+ _free(metaPtr);
2038
2585
  }
2039
- var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated;
2040
- return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
2041
2586
  }
2042
2587
  };
2043
2588
  var emnapiString = {
@@ -2143,7 +2688,7 @@ function createNapiModule(options) {
2143
2688
  ptr >>>= 0;
2144
2689
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
2145
2690
  var end = ptr;
2146
- if (length === -1) {
2691
+ if (length === -1 || length === 4294967295) {
2147
2692
  for (; HEAPU8[end];)
2148
2693
  ++end;
2149
2694
  }
@@ -2234,12 +2779,12 @@ function createNapiModule(options) {
2234
2779
  return '';
2235
2780
  ptr >>>= 0;
2236
2781
  var end = ptr;
2237
- if (length === -1) {
2238
- var idx = end >> 1;
2782
+ if (length === -1 || length === 4294967295) {
2783
+ var idx = end >>> 1;
2239
2784
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
2240
2785
  while (HEAPU16[idx])
2241
2786
  ++idx;
2242
- end = idx << 1;
2787
+ end = (idx << 1) >>> 0;
2243
2788
  }
2244
2789
  else {
2245
2790
  end = ptr + (length >>> 0) * 2;
@@ -2260,21 +2805,22 @@ function createNapiModule(options) {
2260
2805
  maxBytesToWrite -= 2;
2261
2806
  var startPtr = outPtr;
2262
2807
  var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length;
2263
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2808
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2264
2809
  for (var i = 0; i < numCharsToWrite; ++i) {
2265
2810
  var codeUnit = str.charCodeAt(i);
2266
- HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true);
2811
+ GET_HEAP_DATA_VIEW().setInt16(outPtr, codeUnit, true);
2267
2812
  outPtr += 2;
2268
2813
  }
2269
- HEAP_DATA_VIEW.setInt16(outPtr, 0, true);
2814
+ GET_HEAP_DATA_VIEW().setInt16(outPtr, 0, true);
2270
2815
  return outPtr - startPtr;
2271
2816
  },
2272
2817
  newString: function (env, str, length, result, stringMaker) {
2818
+ length >>>= 0;
2273
2819
  if (!env)
2274
2820
  return 1;
2275
2821
  var envObject = emnapiCtx.envStore.get(env);
2276
2822
  envObject.checkGCAccess();
2277
- var autoLength = length === -1;
2823
+ var autoLength = length === -1 || length === 4294967295;
2278
2824
  var sizelength = length >>> 0;
2279
2825
  if (length !== 0) {
2280
2826
  if (!str)
@@ -2284,18 +2830,21 @@ function createNapiModule(options) {
2284
2830
  return envObject.setLastError(1);
2285
2831
  if (!(autoLength || (sizelength <= 2147483647)))
2286
2832
  return envObject.setLastError(1);
2833
+ str >>>= 0;
2287
2834
  var strValue = stringMaker(str, autoLength, sizelength);
2835
+ result >>>= 0;
2288
2836
  var value = emnapiCtx.addToCurrentScope(strValue).id;
2289
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2290
- HEAP_DATA_VIEW.setUint32(result, value, true);
2837
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2838
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
2291
2839
  return envObject.clearLastError();
2292
2840
  },
2293
2841
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
2842
+ length >>>= 0;
2294
2843
  if (!env)
2295
2844
  return 1;
2296
2845
  var envObject = emnapiCtx.envStore.get(env);
2297
2846
  envObject.checkGCAccess();
2298
- var autoLength = length === -1;
2847
+ var autoLength = length === -1 || length === 4294967295;
2299
2848
  var sizelength = length >>> 0;
2300
2849
  if (length !== 0) {
2301
2850
  if (!str)
@@ -2308,8 +2857,8 @@ function createNapiModule(options) {
2308
2857
  var status = createApi(env, str, length, result);
2309
2858
  if (status === 0) {
2310
2859
  if (copied) {
2311
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2312
- HEAP_DATA_VIEW.setInt8(copied, 1, true);
2860
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2861
+ GET_HEAP_DATA_VIEW().setInt8(copied, 1, true);
2313
2862
  }
2314
2863
  if (finalize_callback) {
2315
2864
  envObject.callFinalizer(finalize_callback, str, finalize_hint);
@@ -2337,9 +2886,10 @@ function createNapiModule(options) {
2337
2886
  if (!handle.isArray()) {
2338
2887
  return envObject.setLastError(8);
2339
2888
  }
2889
+ result >>>= 0;
2340
2890
  var v = handle.value.length >>> 0;
2341
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2342
- HEAP_DATA_VIEW.setUint32(result, v, true);
2891
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2892
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
2343
2893
  return envObject.getReturnStatus();
2344
2894
  }
2345
2895
  catch (err) {
@@ -2358,16 +2908,53 @@ function createNapiModule(options) {
2358
2908
  if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
2359
2909
  return envObject.setLastError(1);
2360
2910
  }
2361
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2911
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2362
2912
  if (data) {
2913
+ data >>>= 0;
2363
2914
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
2364
- HEAP_DATA_VIEW.setUint32(data, p, true);
2915
+ GET_HEAP_DATA_VIEW().setUint32(data, p, true);
2365
2916
  }
2366
2917
  if (byte_length) {
2367
- HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
2918
+ byte_length >>>= 0;
2919
+ var len = emnapiExternalMemory.bufferByteLength(handle.value);
2920
+ GET_HEAP_DATA_VIEW().setUint32(byte_length, len, true);
2368
2921
  }
2369
2922
  return envObject.clearLastError();
2370
2923
  }
2924
+ function node_api_set_prototype(env, object, value) {
2925
+ if (!env)
2926
+ return 1;
2927
+ var envObject = emnapiCtx.envStore.get(env);
2928
+ envObject.checkGCAccess();
2929
+ if (!envObject.tryCatch.isEmpty())
2930
+ return envObject.setLastError(10);
2931
+ if (!envObject.canCallIntoJs())
2932
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
2933
+ envObject.clearLastError();
2934
+ try {
2935
+ if (!value)
2936
+ return envObject.setLastError(1);
2937
+ var obj = emnapiCtx.handleStore.get(object).value;
2938
+ if (obj == null) {
2939
+ throw new TypeError('Cannot convert undefined or null to object');
2940
+ }
2941
+ var type = typeof obj;
2942
+ var v = void 0;
2943
+ try {
2944
+ v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
2945
+ }
2946
+ catch (_) {
2947
+ return envObject.setLastError(2);
2948
+ }
2949
+ var val = emnapiCtx.handleStore.get(value).value;
2950
+ Object.setPrototypeOf(v, val);
2951
+ return envObject.getReturnStatus();
2952
+ }
2953
+ catch (err) {
2954
+ envObject.tryCatch.setError(err);
2955
+ return envObject.setLastError(10);
2956
+ }
2957
+ }
2371
2958
  function napi_get_prototype(env, value, result) {
2372
2959
  if (!env)
2373
2960
  return 1;
@@ -2394,9 +2981,10 @@ function createNapiModule(options) {
2394
2981
  catch (_) {
2395
2982
  return envObject.setLastError(2);
2396
2983
  }
2984
+ result >>>= 0;
2397
2985
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
2398
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2399
- HEAP_DATA_VIEW.setUint32(result, p, true);
2986
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2987
+ GET_HEAP_DATA_VIEW().setUint32(result, p, true);
2400
2988
  return envObject.getReturnStatus();
2401
2989
  }
2402
2990
  catch (err) {
@@ -2412,68 +3000,80 @@ function createNapiModule(options) {
2412
3000
  if (!typedarray)
2413
3001
  return envObject.setLastError(1);
2414
3002
  var handle = emnapiCtx.handleStore.get(typedarray);
2415
- if (!handle.isTypedArray()) {
3003
+ if (!(emnapiExternalMemory.intrinsics.isView(handle.value))) {
2416
3004
  return envObject.setLastError(1);
2417
3005
  }
2418
3006
  var v = handle.value;
2419
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3007
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2420
3008
  if (type) {
3009
+ type >>>= 0;
2421
3010
  var t = void 0;
2422
- if (v instanceof Int8Array) {
2423
- t = 0;
2424
- }
2425
- else if (v instanceof Uint8Array) {
2426
- t = 1;
2427
- }
2428
- else if (v instanceof Uint8ClampedArray) {
2429
- t = 2;
2430
- }
2431
- else if (v instanceof Int16Array) {
2432
- t = 3;
2433
- }
2434
- else if (v instanceof Uint16Array) {
2435
- t = 4;
2436
- }
2437
- else if (v instanceof Int32Array) {
2438
- t = 5;
2439
- }
2440
- else if (v instanceof Uint32Array) {
2441
- t = 6;
2442
- }
2443
- else if (v instanceof Float32Array) {
2444
- t = 7;
2445
- }
2446
- else if (v instanceof Float64Array) {
2447
- t = 8;
2448
- }
2449
- else if (v instanceof BigInt64Array) {
2450
- t = 9;
2451
- }
2452
- else if (v instanceof BigUint64Array) {
2453
- t = 10;
2454
- }
2455
- else {
2456
- return envObject.setLastError(9);
3011
+ switch (emnapiExternalMemory.intrinsics.typedArray.tag.call(v)) {
3012
+ case 'Int8Array':
3013
+ t = 0;
3014
+ break;
3015
+ case 'Uint8Array':
3016
+ t = 1;
3017
+ break;
3018
+ case 'Uint8ClampedArray':
3019
+ t = 2;
3020
+ break;
3021
+ case 'Int16Array':
3022
+ t = 3;
3023
+ break;
3024
+ case 'Uint16Array':
3025
+ t = 4;
3026
+ break;
3027
+ case 'Int32Array':
3028
+ t = 5;
3029
+ break;
3030
+ case 'Uint32Array':
3031
+ t = 6;
3032
+ break;
3033
+ case 'Float16Array':
3034
+ t = 11;
3035
+ break;
3036
+ case 'Float32Array':
3037
+ t = 7;
3038
+ break;
3039
+ case 'Float64Array':
3040
+ t = 8;
3041
+ break;
3042
+ case 'BigInt64Array':
3043
+ t = 9;
3044
+ break;
3045
+ case 'BigUint64Array':
3046
+ t = 10;
3047
+ break;
3048
+ default:
3049
+ return envObject.setLastError(9);
2457
3050
  }
2458
- HEAP_DATA_VIEW.setInt32(type, t, true);
3051
+ GET_HEAP_DATA_VIEW().setInt32(type, t, true);
2459
3052
  }
3053
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
2460
3054
  if (length) {
2461
- HEAP_DATA_VIEW.setUint32(length, v.length, true);
3055
+ length >>>= 0;
3056
+ var len = emnapiExternalMemory.viewLength(v);
3057
+ GET_HEAP_DATA_VIEW().setUint32(length, len, true);
2462
3058
  }
2463
- var buffer;
2464
3059
  if (data || arraybuffer) {
2465
- buffer = v.buffer;
2466
3060
  if (data) {
2467
- var p = emnapiExternalMemory.getViewPointer(v, true).address;
2468
- HEAP_DATA_VIEW.setUint32(data, p, true);
3061
+ data >>>= 0;
3062
+ var vp = emnapiExternalMemory.getViewPointer(v, true);
3063
+ v = vp.view;
3064
+ var p = vp.address;
3065
+ GET_HEAP_DATA_VIEW().setUint32(data, p, true);
2469
3066
  }
2470
3067
  if (arraybuffer) {
2471
- var ab = envObject.ensureHandleId(buffer);
2472
- HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
3068
+ arraybuffer >>>= 0;
3069
+ var ab = envObject.ensureHandleId(emnapiExternalMemory.viewBuffer(v));
3070
+ GET_HEAP_DATA_VIEW().setUint32(arraybuffer, ab, true);
2473
3071
  }
2474
3072
  }
2475
3073
  if (byte_offset) {
2476
- HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
3074
+ byte_offset >>>= 0;
3075
+ var offset = emnapiExternalMemory.viewByteOffset(v);
3076
+ GET_HEAP_DATA_VIEW().setUint32(byte_offset, offset, true);
2477
3077
  }
2478
3078
  return envObject.clearLastError();
2479
3079
  }
@@ -2485,9 +3085,11 @@ function createNapiModule(options) {
2485
3085
  if (!buffer)
2486
3086
  return envObject.setLastError(1);
2487
3087
  var handle = emnapiCtx.handleStore.get(buffer);
2488
- if (!handle.isBuffer(emnapiCtx.feature.Buffer))
3088
+ var Buffer = emnapiCtx.feature.Buffer;
3089
+ var bool = (emnapiExternalMemory.intrinsics.isView(handle.value) || (typeof Buffer === 'function' && Buffer.isBuffer(handle.value)));
3090
+ if (!bool)
2489
3091
  return envObject.setLastError(1);
2490
- if (handle.isDataView()) {
3092
+ if (emnapiExternalMemory.intrinsics.typedArray.tag.call(handle.value) === undefined) {
2491
3093
  return napi_get_dataview_info(env, buffer, length, data, 0, 0);
2492
3094
  }
2493
3095
  return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0);
@@ -2500,28 +3102,34 @@ function createNapiModule(options) {
2500
3102
  if (!dataview)
2501
3103
  return envObject.setLastError(1);
2502
3104
  var handle = emnapiCtx.handleStore.get(dataview);
2503
- if (!handle.isDataView()) {
3105
+ if (!(emnapiExternalMemory.intrinsics.isView(handle.value)) || emnapiExternalMemory.intrinsics.typedArray.tag.call(handle.value) !== undefined) {
2504
3106
  return envObject.setLastError(1);
2505
3107
  }
2506
- var v = handle.value;
2507
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3108
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
3109
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2508
3110
  if (byte_length) {
2509
- HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
3111
+ byte_length >>>= 0;
3112
+ var len = emnapiExternalMemory.viewLength(v);
3113
+ GET_HEAP_DATA_VIEW().setUint32(byte_length, len, true);
2510
3114
  }
2511
- var buffer;
2512
3115
  if (data || arraybuffer) {
2513
- buffer = v.buffer;
2514
3116
  if (data) {
2515
- var p = emnapiExternalMemory.getViewPointer(v, true).address;
2516
- HEAP_DATA_VIEW.setUint32(data, p, true);
3117
+ data >>>= 0;
3118
+ var vp = emnapiExternalMemory.getViewPointer(v, true);
3119
+ v = vp.view;
3120
+ var p = vp.address;
3121
+ GET_HEAP_DATA_VIEW().setUint32(data, p, true);
2517
3122
  }
2518
3123
  if (arraybuffer) {
2519
- var ab = envObject.ensureHandleId(buffer);
2520
- HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
3124
+ arraybuffer >>>= 0;
3125
+ var ab = envObject.ensureHandleId(emnapiExternalMemory.viewBuffer(v));
3126
+ GET_HEAP_DATA_VIEW().setUint32(arraybuffer, ab, true);
2521
3127
  }
2522
3128
  }
2523
3129
  if (byte_offset) {
2524
- HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
3130
+ byte_offset >>>= 0;
3131
+ var offset = emnapiExternalMemory.viewByteOffset(v);
3132
+ GET_HEAP_DATA_VIEW().setUint32(byte_offset, offset, true);
2525
3133
  }
2526
3134
  return envObject.clearLastError();
2527
3135
  }
@@ -2545,9 +3153,10 @@ function createNapiModule(options) {
2545
3153
  if (!handle.isDate()) {
2546
3154
  return envObject.setLastError(1);
2547
3155
  }
3156
+ result >>>= 0;
2548
3157
  v = handle.value.valueOf();
2549
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2550
- HEAP_DATA_VIEW.setFloat64(result, v, true);
3158
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3159
+ GET_HEAP_DATA_VIEW().setFloat64(result, v, true);
2551
3160
  return envObject.getReturnStatus();
2552
3161
  }
2553
3162
  catch (err) {
@@ -2568,9 +3177,10 @@ function createNapiModule(options) {
2568
3177
  if (typeof handle.value !== 'boolean') {
2569
3178
  return envObject.setLastError(7);
2570
3179
  }
3180
+ result >>>= 0;
2571
3181
  var r = handle.value ? 1 : 0;
2572
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2573
- HEAP_DATA_VIEW.setInt8(result, r, true);
3182
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3183
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
2574
3184
  return envObject.clearLastError();
2575
3185
  }
2576
3186
  function napi_get_value_double(env, value, result) {
@@ -2586,9 +3196,10 @@ function createNapiModule(options) {
2586
3196
  if (typeof handle.value !== 'number') {
2587
3197
  return envObject.setLastError(6);
2588
3198
  }
3199
+ result >>>= 0;
2589
3200
  var r = handle.value;
2590
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2591
- HEAP_DATA_VIEW.setFloat64(result, r, true);
3201
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3202
+ GET_HEAP_DATA_VIEW().setFloat64(result, r, true);
2592
3203
  return envObject.clearLastError();
2593
3204
  }
2594
3205
  function napi_get_value_bigint_int64(env, value, result, lossless) {
@@ -2610,12 +3221,14 @@ function createNapiModule(options) {
2610
3221
  if (typeof numberValue !== 'bigint') {
2611
3222
  return envObject.setLastError(6);
2612
3223
  }
2613
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3224
+ lossless >>>= 0;
3225
+ result >>>= 0;
3226
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2614
3227
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
2615
- HEAP_DATA_VIEW.setInt8(lossless, 1, true);
3228
+ GET_HEAP_DATA_VIEW().setInt8(lossless, 1, true);
2616
3229
  }
2617
3230
  else {
2618
- HEAP_DATA_VIEW.setInt8(lossless, 0, true);
3231
+ GET_HEAP_DATA_VIEW().setInt8(lossless, 0, true);
2619
3232
  numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1));
2620
3233
  if (numberValue >= (BigInt(1) << BigInt(63))) {
2621
3234
  numberValue = numberValue - (BigInt(1) << BigInt(64));
@@ -2623,8 +3236,8 @@ function createNapiModule(options) {
2623
3236
  }
2624
3237
  var low = Number(numberValue & BigInt(0xffffffff));
2625
3238
  var high = Number(numberValue >> BigInt(32));
2626
- HEAP_DATA_VIEW.setInt32(result, low, true);
2627
- HEAP_DATA_VIEW.setInt32(result + 4, high, true);
3239
+ GET_HEAP_DATA_VIEW().setInt32(result, low, true);
3240
+ GET_HEAP_DATA_VIEW().setInt32(result + 4, high, true);
2628
3241
  return envObject.clearLastError();
2629
3242
  }
2630
3243
  function napi_get_value_bigint_uint64(env, value, result, lossless) {
@@ -2646,18 +3259,20 @@ function createNapiModule(options) {
2646
3259
  if (typeof numberValue !== 'bigint') {
2647
3260
  return envObject.setLastError(6);
2648
3261
  }
2649
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3262
+ lossless >>>= 0;
3263
+ result >>>= 0;
3264
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2650
3265
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
2651
- HEAP_DATA_VIEW.setInt8(lossless, 1, true);
3266
+ GET_HEAP_DATA_VIEW().setInt8(lossless, 1, true);
2652
3267
  }
2653
3268
  else {
2654
- HEAP_DATA_VIEW.setInt8(lossless, 0, true);
3269
+ GET_HEAP_DATA_VIEW().setInt8(lossless, 0, true);
2655
3270
  numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1));
2656
3271
  }
2657
3272
  var low = Number(numberValue & BigInt(0xffffffff));
2658
3273
  var high = Number(numberValue >> BigInt(32));
2659
- HEAP_DATA_VIEW.setUint32(result, low, true);
2660
- HEAP_DATA_VIEW.setUint32(result + 4, high, true);
3274
+ GET_HEAP_DATA_VIEW().setUint32(result, low, true);
3275
+ GET_HEAP_DATA_VIEW().setUint32(result + 4, high, true);
2661
3276
  return envObject.clearLastError();
2662
3277
  }
2663
3278
  function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) {
@@ -2677,8 +3292,12 @@ function createNapiModule(options) {
2677
3292
  return envObject.setLastError(17);
2678
3293
  }
2679
3294
  var isMinus = handle.value < BigInt(0);
2680
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2681
- var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
3295
+ sign_bit >>>= 0;
3296
+ words >>>= 0;
3297
+ word_count >>>= 0;
3298
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3299
+ var word_count_int = GET_HEAP_DATA_VIEW().getUint32(word_count, true);
3300
+ word_count_int >>>= 0;
2682
3301
  var wordCount = 0;
2683
3302
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
2684
3303
  while (bigintValue !== BigInt(0)) {
@@ -2688,7 +3307,7 @@ function createNapiModule(options) {
2688
3307
  bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
2689
3308
  if (!sign_bit && !words) {
2690
3309
  word_count_int = wordCount;
2691
- HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true);
3310
+ GET_HEAP_DATA_VIEW().setUint32(word_count, word_count_int, true);
2692
3311
  }
2693
3312
  else {
2694
3313
  if (!sign_bit)
@@ -2705,11 +3324,11 @@ function createNapiModule(options) {
2705
3324
  for (var i = 0; i < len; i++) {
2706
3325
  var low = Number(wordsArr[i] & BigInt(0xffffffff));
2707
3326
  var high = Number(wordsArr[i] >> BigInt(32));
2708
- HEAP_DATA_VIEW.setUint32(words + i * 8, low, true);
2709
- HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true);
3327
+ GET_HEAP_DATA_VIEW().setUint32(words + i * 8, low, true);
3328
+ GET_HEAP_DATA_VIEW().setUint32(words + (i * 8 + 4), high, true);
2710
3329
  }
2711
- HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true);
2712
- HEAP_DATA_VIEW.setUint32(word_count, len, true);
3330
+ GET_HEAP_DATA_VIEW().setInt32(sign_bit, isMinus ? 1 : 0, true);
3331
+ GET_HEAP_DATA_VIEW().setUint32(word_count, len, true);
2713
3332
  }
2714
3333
  return envObject.clearLastError();
2715
3334
  }
@@ -2726,9 +3345,10 @@ function createNapiModule(options) {
2726
3345
  if (!handle.isExternal()) {
2727
3346
  return envObject.setLastError(1);
2728
3347
  }
3348
+ result >>>= 0;
2729
3349
  var p = handle.data();
2730
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2731
- HEAP_DATA_VIEW.setUint32(result, p, true);
3350
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3351
+ GET_HEAP_DATA_VIEW().setUint32(result, p, true);
2732
3352
  return envObject.clearLastError();
2733
3353
  }
2734
3354
  function napi_get_value_int32(env, value, result) {
@@ -2744,9 +3364,10 @@ function createNapiModule(options) {
2744
3364
  if (typeof handle.value !== 'number') {
2745
3365
  return envObject.setLastError(6);
2746
3366
  }
3367
+ result >>>= 0;
2747
3368
  var v = new Int32Array([handle.value])[0];
2748
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2749
- HEAP_DATA_VIEW.setInt32(result, v, true);
3369
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3370
+ GET_HEAP_DATA_VIEW().setInt32(result, v, true);
2750
3371
  return envObject.clearLastError();
2751
3372
  }
2752
3373
  function napi_get_value_int64(env, value, result) {
@@ -2763,18 +3384,19 @@ function createNapiModule(options) {
2763
3384
  return envObject.setLastError(6);
2764
3385
  }
2765
3386
  var numberValue = handle.value;
2766
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3387
+ result >>>= 0;
3388
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2767
3389
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
2768
- HEAP_DATA_VIEW.setInt32(result, 0, true);
2769
- HEAP_DATA_VIEW.setInt32(result + 4, 0, true);
3390
+ GET_HEAP_DATA_VIEW().setInt32(result, 0, true);
3391
+ GET_HEAP_DATA_VIEW().setInt32(result + 4, 0, true);
2770
3392
  }
2771
3393
  else if (numberValue < -9223372036854776e3) {
2772
- HEAP_DATA_VIEW.setInt32(result, 0, true);
2773
- HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true);
3394
+ GET_HEAP_DATA_VIEW().setInt32(result, 0, true);
3395
+ GET_HEAP_DATA_VIEW().setInt32(result + 4, 2147483648, true);
2774
3396
  }
2775
3397
  else if (numberValue >= 9223372036854776000) {
2776
- HEAP_DATA_VIEW.setUint32(result, 4294967295, true);
2777
- HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true);
3398
+ GET_HEAP_DATA_VIEW().setUint32(result, 4294967295, true);
3399
+ GET_HEAP_DATA_VIEW().setUint32(result + 4, 2147483647, true);
2778
3400
  }
2779
3401
  else {
2780
3402
  $emnapiSetValueI64(result, Math.trunc(numberValue));
@@ -2788,32 +3410,35 @@ function createNapiModule(options) {
2788
3410
  envObject.checkGCAccess();
2789
3411
  if (!value)
2790
3412
  return envObject.setLastError(1);
3413
+ result >>>= 0;
3414
+ buf >>>= 0;
3415
+ buf_size >>>= 0;
2791
3416
  buf_size = buf_size >>> 0;
2792
3417
  var handle = emnapiCtx.handleStore.get(value);
2793
3418
  if (typeof handle.value !== 'string') {
2794
3419
  return envObject.setLastError(3);
2795
3420
  }
2796
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3421
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2797
3422
  if (!buf) {
2798
3423
  if (!result)
2799
3424
  return envObject.setLastError(1);
2800
- HEAP_DATA_VIEW.setUint32(result, handle.value.length, true);
3425
+ GET_HEAP_DATA_VIEW().setUint32(result, handle.value.length, true);
2801
3426
  }
2802
3427
  else if (buf_size !== 0) {
2803
3428
  var copied = 0;
2804
3429
  var v = void 0;
2805
3430
  for (var i = 0; i < buf_size - 1; ++i) {
2806
3431
  v = handle.value.charCodeAt(i) & 0xff;
2807
- HEAP_DATA_VIEW.setUint8(buf + i, v, true);
3432
+ GET_HEAP_DATA_VIEW().setUint8(buf + i, v, true);
2808
3433
  copied++;
2809
3434
  }
2810
- HEAP_DATA_VIEW.setUint8(buf + copied, 0, true);
3435
+ GET_HEAP_DATA_VIEW().setUint8(buf + copied, 0, true);
2811
3436
  if (result) {
2812
- HEAP_DATA_VIEW.setUint32(result, copied, true);
3437
+ GET_HEAP_DATA_VIEW().setUint32(result, copied, true);
2813
3438
  }
2814
3439
  }
2815
3440
  else if (result) {
2816
- HEAP_DATA_VIEW.setUint32(result, 0, true);
3441
+ GET_HEAP_DATA_VIEW().setUint32(result, 0, true);
2817
3442
  }
2818
3443
  return envObject.clearLastError();
2819
3444
  }
@@ -2824,26 +3449,29 @@ function createNapiModule(options) {
2824
3449
  envObject.checkGCAccess();
2825
3450
  if (!value)
2826
3451
  return envObject.setLastError(1);
3452
+ result >>>= 0;
3453
+ buf >>>= 0;
3454
+ buf_size >>>= 0;
2827
3455
  buf_size = buf_size >>> 0;
2828
3456
  var handle = emnapiCtx.handleStore.get(value);
2829
3457
  if (typeof handle.value !== 'string') {
2830
3458
  return envObject.setLastError(3);
2831
3459
  }
2832
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3460
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2833
3461
  if (!buf) {
2834
3462
  if (!result)
2835
3463
  return envObject.setLastError(1);
2836
3464
  var strLength = emnapiString.lengthBytesUTF8(handle.value);
2837
- HEAP_DATA_VIEW.setUint32(result, strLength, true);
3465
+ GET_HEAP_DATA_VIEW().setUint32(result, strLength, true);
2838
3466
  }
2839
3467
  else if (buf_size !== 0) {
2840
3468
  var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size);
2841
3469
  if (result) {
2842
- HEAP_DATA_VIEW.setUint32(result, copied, true);
3470
+ GET_HEAP_DATA_VIEW().setUint32(result, copied, true);
2843
3471
  }
2844
3472
  }
2845
3473
  else if (result) {
2846
- HEAP_DATA_VIEW.setUint32(result, 0, true);
3474
+ GET_HEAP_DATA_VIEW().setUint32(result, 0, true);
2847
3475
  }
2848
3476
  return envObject.clearLastError();
2849
3477
  }
@@ -2854,25 +3482,28 @@ function createNapiModule(options) {
2854
3482
  envObject.checkGCAccess();
2855
3483
  if (!value)
2856
3484
  return envObject.setLastError(1);
3485
+ result >>>= 0;
3486
+ buf >>>= 0;
3487
+ buf_size >>>= 0;
2857
3488
  buf_size = buf_size >>> 0;
2858
3489
  var handle = emnapiCtx.handleStore.get(value);
2859
3490
  if (typeof handle.value !== 'string') {
2860
3491
  return envObject.setLastError(3);
2861
3492
  }
2862
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3493
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2863
3494
  if (!buf) {
2864
3495
  if (!result)
2865
3496
  return envObject.setLastError(1);
2866
- HEAP_DATA_VIEW.setUint32(result, handle.value.length, true);
3497
+ GET_HEAP_DATA_VIEW().setUint32(result, handle.value.length, true);
2867
3498
  }
2868
3499
  else if (buf_size !== 0) {
2869
3500
  var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2);
2870
3501
  if (result) {
2871
- HEAP_DATA_VIEW.setUint32(result, copied / 2, true);
3502
+ GET_HEAP_DATA_VIEW().setUint32(result, copied / 2, true);
2872
3503
  }
2873
3504
  }
2874
3505
  else if (result) {
2875
- HEAP_DATA_VIEW.setUint32(result, 0, true);
3506
+ GET_HEAP_DATA_VIEW().setUint32(result, 0, true);
2876
3507
  }
2877
3508
  return envObject.clearLastError();
2878
3509
  }
@@ -2889,9 +3520,10 @@ function createNapiModule(options) {
2889
3520
  if (typeof handle.value !== 'number') {
2890
3521
  return envObject.setLastError(6);
2891
3522
  }
3523
+ result >>>= 0;
2892
3524
  var v = new Uint32Array([handle.value])[0];
2893
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2894
- HEAP_DATA_VIEW.setUint32(result, v, true);
3525
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3526
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
2895
3527
  return envObject.clearLastError();
2896
3528
  }
2897
3529
  var convert2cMod = Object.freeze({
@@ -2914,7 +3546,8 @@ function createNapiModule(options) {
2914
3546
  napi_get_value_string_latin1: napi_get_value_string_latin1,
2915
3547
  napi_get_value_string_utf16: napi_get_value_string_utf16,
2916
3548
  napi_get_value_string_utf8: napi_get_value_string_utf8,
2917
- napi_get_value_uint32: napi_get_value_uint32
3549
+ napi_get_value_uint32: napi_get_value_uint32,
3550
+ node_api_set_prototype: node_api_set_prototype
2918
3551
  });
2919
3552
  function napi_create_int32(env, value, result) {
2920
3553
  if (!env)
@@ -2923,9 +3556,10 @@ function createNapiModule(options) {
2923
3556
  envObject.checkGCAccess();
2924
3557
  if (!result)
2925
3558
  return envObject.setLastError(1);
3559
+ result >>>= 0;
2926
3560
  var v = emnapiCtx.addToCurrentScope(value).id;
2927
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2928
- HEAP_DATA_VIEW.setUint32(result, v, true);
3561
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3562
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
2929
3563
  return envObject.clearLastError();
2930
3564
  }
2931
3565
  function napi_create_uint32(env, value, result) {
@@ -2935,9 +3569,10 @@ function createNapiModule(options) {
2935
3569
  envObject.checkGCAccess();
2936
3570
  if (!result)
2937
3571
  return envObject.setLastError(1);
3572
+ result >>>= 0;
2938
3573
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
2939
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2940
- HEAP_DATA_VIEW.setUint32(result, v, true);
3574
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3575
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
2941
3576
  return envObject.clearLastError();
2942
3577
  }
2943
3578
  function napi_create_int64(env, low, high, result) {
@@ -2950,8 +3585,9 @@ function createNapiModule(options) {
2950
3585
  return envObject.setLastError(1);
2951
3586
  value = Number(low);
2952
3587
  var v1 = emnapiCtx.addToCurrentScope(value).id;
2953
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2954
- HEAP_DATA_VIEW.setUint32(high, v1, true);
3588
+ high >>>= 0;
3589
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3590
+ GET_HEAP_DATA_VIEW().setUint32(high, v1, true);
2955
3591
  return envObject.clearLastError();
2956
3592
  }
2957
3593
  function napi_create_double(env, value, result) {
@@ -2961,19 +3597,20 @@ function createNapiModule(options) {
2961
3597
  envObject.checkGCAccess();
2962
3598
  if (!result)
2963
3599
  return envObject.setLastError(1);
3600
+ result >>>= 0;
2964
3601
  var v = emnapiCtx.addToCurrentScope(value).id;
2965
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2966
- HEAP_DATA_VIEW.setUint32(result, v, true);
3602
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3603
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
2967
3604
  return envObject.clearLastError();
2968
3605
  }
2969
3606
  function napi_create_string_latin1(env, str, length, result) {
2970
3607
  return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) {
2971
3608
  var latin1String = '';
2972
3609
  var len = 0;
2973
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3610
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
2974
3611
  if (autoLength) {
2975
3612
  while (true) {
2976
- var ch = HEAP_DATA_VIEW.getUint8(str, true);
3613
+ var ch = GET_HEAP_DATA_VIEW().getUint8(str, true);
2977
3614
  if (!ch)
2978
3615
  break;
2979
3616
  latin1String += String.fromCharCode(ch);
@@ -2982,7 +3619,7 @@ function createNapiModule(options) {
2982
3619
  }
2983
3620
  else {
2984
3621
  while (len < sizeLength) {
2985
- var ch = HEAP_DATA_VIEW.getUint8(str, true);
3622
+ var ch = GET_HEAP_DATA_VIEW().getUint8(str, true);
2986
3623
  if (!ch)
2987
3624
  break;
2988
3625
  latin1String += String.fromCharCode(ch);
@@ -3031,8 +3668,9 @@ function createNapiModule(options) {
3031
3668
  return envObject.setLastError(1);
3032
3669
  value = low;
3033
3670
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3034
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3035
- HEAP_DATA_VIEW.setUint32(high, v1, true);
3671
+ high >>>= 0;
3672
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3673
+ GET_HEAP_DATA_VIEW().setUint32(high, v1, true);
3036
3674
  return envObject.clearLastError();
3037
3675
  }
3038
3676
  function napi_create_bigint_uint64(env, low, high, result) {
@@ -3048,8 +3686,9 @@ function createNapiModule(options) {
3048
3686
  return envObject.setLastError(1);
3049
3687
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
3050
3688
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3051
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3052
- HEAP_DATA_VIEW.setUint32(high, v1, true);
3689
+ high >>>= 0;
3690
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3691
+ GET_HEAP_DATA_VIEW().setUint32(high, v1, true);
3053
3692
  return envObject.clearLastError();
3054
3693
  }
3055
3694
  function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
@@ -3069,6 +3708,8 @@ function createNapiModule(options) {
3069
3708
  }
3070
3709
  if (!result)
3071
3710
  return envObject.setLastError(1);
3711
+ words >>>= 0;
3712
+ word_count >>>= 0;
3072
3713
  word_count = word_count >>> 0;
3073
3714
  if (word_count > 2147483647) {
3074
3715
  return envObject.setLastError(1);
@@ -3077,16 +3718,17 @@ function createNapiModule(options) {
3077
3718
  throw new RangeError('Maximum BigInt size exceeded');
3078
3719
  }
3079
3720
  var value = BigInt(0);
3080
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3721
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3081
3722
  for (i = 0; i < word_count; i++) {
3082
- var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true);
3083
- var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true);
3723
+ var low = GET_HEAP_DATA_VIEW().getUint32(words + i * 8, true);
3724
+ var high = GET_HEAP_DATA_VIEW().getUint32(words + (i * 8 + 4), true);
3084
3725
  var wordi = BigInt(low) | (BigInt(high) << BigInt(32));
3085
3726
  value += wordi << BigInt(64 * i);
3086
3727
  }
3087
3728
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
3729
+ result >>>= 0;
3088
3730
  v = emnapiCtx.addToCurrentScope(value).id;
3089
- HEAP_DATA_VIEW.setUint32(result, v, true);
3731
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
3090
3732
  return envObject.getReturnStatus();
3091
3733
  }
3092
3734
  catch (err) {
@@ -3113,6 +3755,7 @@ function createNapiModule(options) {
3113
3755
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
3114
3756
  });
3115
3757
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
3758
+ utf8name >>>= 0;
3116
3759
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
3117
3760
  var f;
3118
3761
  var napiCallback = (wasmTable.get(cb));
@@ -3253,9 +3896,10 @@ function createNapiModule(options) {
3253
3896
  if (!finalize_cb)
3254
3897
  return envObject.setLastError(1);
3255
3898
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
3899
+ result >>>= 0;
3256
3900
  referenceId = reference.id;
3257
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3258
- HEAP_DATA_VIEW.setUint32(result, referenceId, true);
3901
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3902
+ GET_HEAP_DATA_VIEW().setUint32(result, referenceId, true);
3259
3903
  }
3260
3904
  else {
3261
3905
  if (finalize_cb) {
@@ -3301,9 +3945,10 @@ function createNapiModule(options) {
3301
3945
  if (!ref)
3302
3946
  return envObject.setLastError(1);
3303
3947
  if (result) {
3948
+ result >>>= 0;
3304
3949
  data = ref.data();
3305
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3306
- HEAP_DATA_VIEW.setUint32(result, data, true);
3950
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3951
+ GET_HEAP_DATA_VIEW().setUint32(result, data, true);
3307
3952
  }
3308
3953
  if (action === 1) {
3309
3954
  binding.wrapped = 0;
@@ -3337,12 +3982,15 @@ function createNapiModule(options) {
3337
3982
  return envObject.setLastError(1);
3338
3983
  if (!constructor)
3339
3984
  return envObject.setLastError(1);
3985
+ length >>>= 0;
3986
+ properties >>>= 0;
3987
+ property_count >>>= 0;
3340
3988
  property_count = property_count >>> 0;
3341
3989
  if (property_count > 0) {
3342
3990
  if (!properties)
3343
3991
  return envObject.setLastError(1);
3344
3992
  }
3345
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
3993
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
3346
3994
  return envObject.setLastError(1);
3347
3995
  }
3348
3996
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -3350,17 +3998,18 @@ function createNapiModule(options) {
3350
3998
  return envObject.setLastError(fresult.status);
3351
3999
  var F = fresult.f;
3352
4000
  var propertyName = void 0;
3353
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4001
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3354
4002
  for (var i = 0; i < property_count; i++) {
3355
4003
  propPtr = properties + (i * (4 * 8));
3356
- var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
3357
- var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
3358
- var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
3359
- var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
3360
- var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
3361
- var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
3362
- attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
3363
- var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
4004
+ var utf8Name = GET_HEAP_DATA_VIEW().getUint32(propPtr, true);
4005
+ var name_1 = GET_HEAP_DATA_VIEW().getUint32(propPtr + 4, true);
4006
+ var method = GET_HEAP_DATA_VIEW().getUint32(propPtr + 8, true);
4007
+ var getter = GET_HEAP_DATA_VIEW().getUint32(propPtr + 12, true);
4008
+ var setter = GET_HEAP_DATA_VIEW().getUint32(propPtr + 16, true);
4009
+ var value = GET_HEAP_DATA_VIEW().getUint32(propPtr + 20, true);
4010
+ attributes = GET_HEAP_DATA_VIEW().getInt32(propPtr + 24, true);
4011
+ attributes >>>= 0;
4012
+ var data = GET_HEAP_DATA_VIEW().getUint32(propPtr + 28, true);
3364
4013
  if (utf8Name) {
3365
4014
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
3366
4015
  }
@@ -3381,7 +4030,8 @@ function createNapiModule(options) {
3381
4030
  }
3382
4031
  var valueHandle = emnapiCtx.addToCurrentScope(F);
3383
4032
  valueHandleId = valueHandle.id;
3384
- HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
4033
+ result >>>= 0;
4034
+ GET_HEAP_DATA_VIEW().setUint32(result, valueHandleId, true);
3385
4035
  return envObject.getReturnStatus();
3386
4036
  }
3387
4037
  catch (err) {
@@ -3416,6 +4066,7 @@ function createNapiModule(options) {
3416
4066
  if (!(value.isObject() || value.isFunction())) {
3417
4067
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
3418
4068
  }
4069
+ type_tag >>>= 0;
3419
4070
  if (!type_tag) {
3420
4071
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
3421
4072
  }
@@ -3460,6 +4111,7 @@ function createNapiModule(options) {
3460
4111
  }
3461
4112
  var binding = envObject.getObjectBinding(value.value);
3462
4113
  if (binding.tag !== null) {
4114
+ type_tag >>>= 0;
3463
4115
  var tag = binding.tag;
3464
4116
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
3465
4117
  ret = (tag[0] === typeTag[0] &&
@@ -3470,8 +4122,9 @@ function createNapiModule(options) {
3470
4122
  else {
3471
4123
  ret = false;
3472
4124
  }
3473
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3474
- HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
4125
+ result >>>= 0;
4126
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4127
+ GET_HEAP_DATA_VIEW().setInt8(result, ret ? 1 : 0, true);
3475
4128
  return envObject.getReturnStatus();
3476
4129
  }
3477
4130
  catch (err) {
@@ -3497,11 +4150,15 @@ function createNapiModule(options) {
3497
4150
  }
3498
4151
  var handle = handleResult.handle;
3499
4152
  var ownership = !result ? 0 : 1;
4153
+ finalize_data >>>= 0;
4154
+ finalize_cb >>>= 0;
4155
+ finalize_hint >>>= 0;
3500
4156
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
3501
4157
  if (result) {
4158
+ result >>>= 0;
3502
4159
  var referenceId = reference.id;
3503
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3504
- HEAP_DATA_VIEW.setUint32(result, referenceId, true);
4160
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4161
+ GET_HEAP_DATA_VIEW().setUint32(result, referenceId, true);
3505
4162
  }
3506
4163
  return envObject.clearLastError();
3507
4164
  }
@@ -3537,6 +4194,9 @@ function createNapiModule(options) {
3537
4194
  try {
3538
4195
  if (!result)
3539
4196
  return envObject.setLastError(1);
4197
+ byte_length >>>= 0;
4198
+ external_data >>>= 0;
4199
+ result >>>= 0;
3540
4200
  byte_length = byte_length >>> 0;
3541
4201
  if (!external_data) {
3542
4202
  byte_length = 0;
@@ -3588,6 +4248,12 @@ function createNapiModule(options) {
3588
4248
  case -1:
3589
4249
  viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
3590
4250
  break;
4251
+ case 11:
4252
+ if (typeof Float16Array !== 'function') {
4253
+ return envObject.setLastError(1);
4254
+ }
4255
+ viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 };
4256
+ break;
3591
4257
  case -2: {
3592
4258
  if (!emnapiCtx.feature.Buffer) {
3593
4259
  throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
@@ -3599,7 +4265,7 @@ function createNapiModule(options) {
3599
4265
  }
3600
4266
  var Ctor = viewDescriptor.Ctor;
3601
4267
  var typedArray = typedarray_type === -2
3602
- ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length)
4268
+ ? emnapiExternalMemory.getBufferFrom()(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length)
3603
4269
  : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length);
3604
4270
  var handle = emnapiCtx.addToCurrentScope(typedArray);
3605
4271
  emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor);
@@ -3615,8 +4281,8 @@ function createNapiModule(options) {
3615
4281
  }
3616
4282
  }
3617
4283
  value = handle.id;
3618
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3619
- HEAP_DATA_VIEW.setUint32(result, value, true);
4284
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4285
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
3620
4286
  return envObject.getReturnStatus();
3621
4287
  }
3622
4288
  catch (err) {
@@ -3641,7 +4307,7 @@ function createNapiModule(options) {
3641
4307
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
3642
4308
  if (!pointer)
3643
4309
  throw new Error('Unknown ArrayBuffer address');
3644
- if (typeof len !== 'number' || len === -1) {
4310
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3645
4311
  len = arrayBufferOrView.byteLength - offset;
3646
4312
  }
3647
4313
  len = len >>> 0;
@@ -3663,7 +4329,7 @@ function createNapiModule(options) {
3663
4329
  var pointer = viewPointerInfo.address;
3664
4330
  if (!pointer)
3665
4331
  throw new Error('Unknown ArrayBuffer address');
3666
- if (typeof len !== 'number' || len === -1) {
4332
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3667
4333
  len = latestView.byteLength - offset;
3668
4334
  }
3669
4335
  len = len >>> 0;
@@ -3695,16 +4361,20 @@ function createNapiModule(options) {
3695
4361
  try {
3696
4362
  if (!arraybuffer_or_view)
3697
4363
  return envObject.setLastError(1);
3698
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3699
- var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
4364
+ arraybuffer_or_view >>>= 0;
4365
+ offset >>>= 0;
4366
+ len >>>= 0;
4367
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4368
+ var handleId = GET_HEAP_DATA_VIEW().getUint32(arraybuffer_or_view, true);
3700
4369
  var handle = envObject.ctx.handleStore.get(handleId);
3701
4370
  if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
3702
4371
  return envObject.setLastError(1);
3703
4372
  }
3704
4373
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
3705
4374
  if (handle.value !== ret) {
4375
+ arraybuffer_or_view >>>= 0;
3706
4376
  v = envObject.ensureHandleId(ret);
3707
- HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
4377
+ GET_HEAP_DATA_VIEW().setUint32(arraybuffer_or_view, v, true);
3708
4378
  }
3709
4379
  return envObject.getReturnStatus();
3710
4380
  }
@@ -3754,17 +4424,20 @@ function createNapiModule(options) {
3754
4424
  var handle = envObject.ctx.handleStore.get(arraybuffer_or_view);
3755
4425
  info = $emnapiGetMemoryAddress(handle.value);
3756
4426
  p = info.address;
3757
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4427
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
3758
4428
  if (address) {
3759
- HEAP_DATA_VIEW.setUint32(address, p, true);
4429
+ address >>>= 0;
4430
+ GET_HEAP_DATA_VIEW().setUint32(address, p, true);
3760
4431
  }
3761
4432
  if (ownership) {
4433
+ ownership >>>= 0;
3762
4434
  ownershipOut = info.ownership;
3763
- HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
4435
+ GET_HEAP_DATA_VIEW().setInt32(ownership, ownershipOut, true);
3764
4436
  }
3765
4437
  if (runtime_allocated) {
4438
+ runtime_allocated >>>= 0;
3766
4439
  runtimeAllocated = info.runtimeAllocated;
3767
- HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
4440
+ GET_HEAP_DATA_VIEW().setInt8(runtime_allocated, runtimeAllocated, true);
3768
4441
  }
3769
4442
  return envObject.getReturnStatus();
3770
4443
  }
@@ -3788,22 +4461,102 @@ function createNapiModule(options) {
3788
4461
  }
3789
4462
  var versions = runtimeVersion.split('.')
3790
4463
  .map(function (n) { return Number(n); });
3791
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3792
- HEAP_DATA_VIEW.setUint32(version, versions[0], true);
3793
- HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
3794
- HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
4464
+ version >>>= 0;
4465
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4466
+ GET_HEAP_DATA_VIEW().setUint32(version, versions[0], true);
4467
+ GET_HEAP_DATA_VIEW().setUint32(version + 4, versions[1], true);
4468
+ GET_HEAP_DATA_VIEW().setUint32(version + 8, versions[2], true);
3795
4469
  return envObject.clearLastError();
3796
4470
  }
4471
+ function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
4472
+ if (!env)
4473
+ return 1;
4474
+ var envObject = emnapiCtx.envStore.get(env);
4475
+ envObject.checkGCAccess();
4476
+ if (!envObject.tryCatch.isEmpty())
4477
+ return envObject.setLastError(10);
4478
+ if (!envObject.canCallIntoJs())
4479
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4480
+ envObject.clearLastError();
4481
+ try {
4482
+ if (!sharedarraybuffer)
4483
+ return envObject.setLastError(1);
4484
+ if (!handle)
4485
+ return envObject.setLastError(1);
4486
+ handle >>>= 0;
4487
+ var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
4488
+ if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
4489
+ return envObject.setLastError(1);
4490
+ }
4491
+ var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
4492
+ if (metaPtr === undefined) {
4493
+ return envObject.setLastError(1);
4494
+ }
4495
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4496
+ GET_HEAP_DATA_VIEW().setUint32(handle, metaPtr, true);
4497
+ return envObject.getReturnStatus();
4498
+ }
4499
+ catch (err) {
4500
+ envObject.tryCatch.setError(err);
4501
+ return envObject.setLastError(10);
4502
+ }
4503
+ }
4504
+ function emnapi_acquire_external_sharedarraybuffer(handle) {
4505
+ handle >>>= 0;
4506
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4507
+ }
4508
+ function emnapi_release_external_sharedarraybuffer(handle) {
4509
+ handle >>>= 0;
4510
+ emnapiExternalSAB.release(handle);
4511
+ }
4512
+ function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
4513
+ if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
4514
+ throw new TypeError('Expected a SharedArrayBuffer');
4515
+ }
4516
+ if (!emnapiExternalSAB.registry) {
4517
+ throw new Error('FinalizationRegistry is not supported in this environment');
4518
+ }
4519
+ handle >>>= 0;
4520
+ var meta = emnapiExternalSAB.readMeta(handle);
4521
+ var external_data = meta.external_data;
4522
+ external_data >>>= 0;
4523
+ if (sab == null) {
4524
+ sab = new SharedArrayBuffer(meta.byte_length);
4525
+ new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
4526
+ }
4527
+ else {
4528
+ if (emnapiExternalSAB.handleTable.has(sab)) {
4529
+ return sab;
4530
+ }
4531
+ }
4532
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4533
+ if (!emnapiExternalMemory.table.has(sab)) {
4534
+ if (external_data) {
4535
+ emnapiExternalMemory.table.set(sab, {
4536
+ address: external_data,
4537
+ ownership: 1,
4538
+ runtimeAllocated: 0
4539
+ });
4540
+ }
4541
+ }
4542
+ emnapiExternalSAB.handleTable.set(sab, handle);
4543
+ emnapiExternalSAB.registry.register(sab, handle);
4544
+ return sab;
4545
+ }
3797
4546
  var emnapiMod = Object.freeze({
3798
4547
  __proto__: null,
4548
+ $emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
3799
4549
  $emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
3800
4550
  $emnapiSyncMemory: $emnapiSyncMemory,
4551
+ emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
3801
4552
  emnapi_create_memory_view: emnapi_create_memory_view,
4553
+ emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
3802
4554
  emnapi_get_memory_address: emnapi_get_memory_address,
3803
4555
  emnapi_get_runtime_version: emnapi_get_runtime_version,
3804
4556
  emnapi_is_node_binding_available: emnapi_is_node_binding_available,
3805
4557
  emnapi_is_support_bigint: emnapi_is_support_bigint,
3806
4558
  emnapi_is_support_weakref: emnapi_is_support_weakref,
4559
+ emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
3807
4560
  emnapi_sync_memory: emnapi_sync_memory
3808
4561
  });
3809
4562
  function napi_create_array(env, result) {
@@ -3813,9 +4566,10 @@ function createNapiModule(options) {
3813
4566
  envObject.checkGCAccess();
3814
4567
  if (!result)
3815
4568
  return envObject.setLastError(1);
4569
+ result >>>= 0;
3816
4570
  var value = emnapiCtx.addToCurrentScope([]).id;
3817
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3818
- HEAP_DATA_VIEW.setUint32(result, value, true);
4571
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4572
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
3819
4573
  return envObject.clearLastError();
3820
4574
  }
3821
4575
  function napi_create_array_with_length(env, length, result) {
@@ -3825,19 +4579,23 @@ function createNapiModule(options) {
3825
4579
  envObject.checkGCAccess();
3826
4580
  if (!result)
3827
4581
  return envObject.setLastError(1);
4582
+ length >>>= 0;
4583
+ result >>>= 0;
3828
4584
  length = length >>> 0;
3829
4585
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
3830
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3831
- HEAP_DATA_VIEW.setUint32(result, value, true);
4586
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4587
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
3832
4588
  return envObject.clearLastError();
3833
4589
  }
3834
4590
  function emnapiCreateArrayBuffer(byte_length, data, shared) {
4591
+ byte_length >>>= 0;
3835
4592
  byte_length = byte_length >>> 0;
3836
4593
  var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
3837
4594
  if (data) {
4595
+ data >>>= 0;
3838
4596
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
3839
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3840
- HEAP_DATA_VIEW.setUint32(data, p, true);
4597
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4598
+ GET_HEAP_DATA_VIEW().setUint32(data, p, true);
3841
4599
  }
3842
4600
  return arrayBuffer;
3843
4601
  }
@@ -3855,10 +4613,11 @@ function createNapiModule(options) {
3855
4613
  try {
3856
4614
  if (!result)
3857
4615
  return envObject.setLastError(1);
4616
+ result >>>= 0;
3858
4617
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
3859
4618
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3860
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3861
- HEAP_DATA_VIEW.setUint32(result, value, true);
4619
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4620
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
3862
4621
  return envObject.getReturnStatus();
3863
4622
  }
3864
4623
  catch (err) {
@@ -3880,10 +4639,11 @@ function createNapiModule(options) {
3880
4639
  try {
3881
4640
  if (!result)
3882
4641
  return envObject.setLastError(1);
4642
+ result >>>= 0;
3883
4643
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
3884
4644
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3885
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3886
- HEAP_DATA_VIEW.setUint32(result, value, true);
4645
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4646
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
3887
4647
  return envObject.getReturnStatus();
3888
4648
  }
3889
4649
  catch (err) {
@@ -3905,9 +4665,10 @@ function createNapiModule(options) {
3905
4665
  try {
3906
4666
  if (!result)
3907
4667
  return envObject.setLastError(1);
4668
+ result >>>= 0;
3908
4669
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
3909
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3910
- HEAP_DATA_VIEW.setUint32(result, value, true);
4670
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4671
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
3911
4672
  return envObject.getReturnStatus();
3912
4673
  }
3913
4674
  catch (err) {
@@ -3936,9 +4697,10 @@ function createNapiModule(options) {
3936
4697
  if (finalize_cb) {
3937
4698
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
3938
4699
  }
4700
+ result >>>= 0;
3939
4701
  value = externalHandle.id;
3940
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3941
- HEAP_DATA_VIEW.setUint32(result, value, true);
4702
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4703
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
3942
4704
  return envObject.clearLastError();
3943
4705
  }
3944
4706
  catch (err) {
@@ -3960,6 +4722,9 @@ function createNapiModule(options) {
3960
4722
  try {
3961
4723
  if (!result)
3962
4724
  return envObject.setLastError(1);
4725
+ byte_length >>>= 0;
4726
+ external_data >>>= 0;
4727
+ result >>>= 0;
3963
4728
  byte_length = byte_length >>> 0;
3964
4729
  if (!external_data) {
3965
4730
  byte_length = 0;
@@ -4001,8 +4766,62 @@ function createNapiModule(options) {
4001
4766
  }
4002
4767
  }
4003
4768
  value = handle.id;
4004
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4005
- HEAP_DATA_VIEW.setUint32(result, value, true);
4769
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4770
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4771
+ return envObject.getReturnStatus();
4772
+ }
4773
+ catch (err) {
4774
+ envObject.tryCatch.setError(err);
4775
+ return envObject.setLastError(10);
4776
+ }
4777
+ }
4778
+ function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
4779
+ var value;
4780
+ if (!env)
4781
+ return 1;
4782
+ var envObject = emnapiCtx.envStore.get(env);
4783
+ envObject.checkGCAccess();
4784
+ if (!envObject.tryCatch.isEmpty())
4785
+ return envObject.setLastError(10);
4786
+ if (!envObject.canCallIntoJs())
4787
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4788
+ envObject.clearLastError();
4789
+ try {
4790
+ if (!result)
4791
+ return envObject.setLastError(1);
4792
+ byte_length >>>= 0;
4793
+ external_data >>>= 0;
4794
+ result >>>= 0;
4795
+ byte_length = byte_length >>> 0;
4796
+ if (!external_data) {
4797
+ byte_length = 0;
4798
+ }
4799
+ if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
4800
+ throw new RangeError('Memory out of range');
4801
+ }
4802
+ if (!emnapiExternalSAB.registry && finalize_cb) {
4803
+ throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
4804
+ }
4805
+ var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
4806
+ if (byte_length !== 0) {
4807
+ var u8arr = new Uint8Array(sharedArrayBuffer);
4808
+ u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
4809
+ emnapiExternalMemory.table.set(sharedArrayBuffer, {
4810
+ address: external_data,
4811
+ ownership: 1,
4812
+ runtimeAllocated: 0
4813
+ });
4814
+ }
4815
+ value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
4816
+ if (finalize_cb) {
4817
+ finalize_cb >>>= 0;
4818
+ finalize_hint >>>= 0;
4819
+ var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
4820
+ emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
4821
+ emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
4822
+ }
4823
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4824
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4006
4825
  return envObject.getReturnStatus();
4007
4826
  }
4008
4827
  catch (err) {
@@ -4017,18 +4836,20 @@ function createNapiModule(options) {
4017
4836
  envObject.checkGCAccess();
4018
4837
  if (!result)
4019
4838
  return envObject.setLastError(1);
4839
+ result >>>= 0;
4020
4840
  var value = emnapiCtx.addToCurrentScope({}).id;
4021
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4022
- HEAP_DATA_VIEW.setUint32(result, value, true);
4841
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4842
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4023
4843
  return envObject.clearLastError();
4024
4844
  }
4025
- function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4845
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4026
4846
  if (!env)
4027
4847
  return 1;
4028
4848
  var envObject = emnapiCtx.envStore.get(env);
4029
4849
  envObject.checkGCAccess();
4030
4850
  if (!result)
4031
4851
  return envObject.setLastError(1);
4852
+ property_count >>>= 0;
4032
4853
  property_count = property_count >>> 0;
4033
4854
  if (property_count > 0) {
4034
4855
  if (!property_names)
@@ -4040,13 +4861,15 @@ function createNapiModule(options) {
4040
4861
  ? emnapiCtx.handleStore.get(prototype_or_null).value
4041
4862
  : null;
4042
4863
  var properties = {};
4043
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4864
+ property_names >>>= 0;
4865
+ property_values >>>= 0;
4866
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4044
4867
  for (var i = 0; i < property_count; i++) {
4045
- var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
4868
+ var name_value = emnapiCtx.handleStore.get(GET_HEAP_DATA_VIEW().getUint32(property_names + i * 4, true)).value;
4046
4869
  if (!(typeof name_value === "string" || typeof name_value === "symbol"))
4047
4870
  return envObject.setLastError(4);
4048
4871
  properties[name_value] = {
4049
- value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
4872
+ value: emnapiCtx.handleStore.get(GET_HEAP_DATA_VIEW().getUint32(property_values + i * 4, true)).value,
4050
4873
  writable: true,
4051
4874
  enumerable: true,
4052
4875
  configurable: true
@@ -4060,7 +4883,8 @@ function createNapiModule(options) {
4060
4883
  return envObject.setLastError(9);
4061
4884
  }
4062
4885
  var value = emnapiCtx.addToCurrentScope(obj).id;
4063
- HEAP_DATA_VIEW.setUint32(result, value, true);
4886
+ result >>>= 0;
4887
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4064
4888
  return envObject.clearLastError();
4065
4889
  }
4066
4890
  function napi_create_symbol(env, description, result) {
@@ -4070,10 +4894,11 @@ function createNapiModule(options) {
4070
4894
  envObject.checkGCAccess();
4071
4895
  if (!result)
4072
4896
  return envObject.setLastError(1);
4073
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4897
+ result >>>= 0;
4898
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4074
4899
  if (!description) {
4075
4900
  var value = emnapiCtx.addToCurrentScope(Symbol()).id;
4076
- HEAP_DATA_VIEW.setUint32(result, value, true);
4901
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4077
4902
  }
4078
4903
  else {
4079
4904
  var handle = emnapiCtx.handleStore.get(description);
@@ -4082,7 +4907,7 @@ function createNapiModule(options) {
4082
4907
  return envObject.setLastError(3);
4083
4908
  }
4084
4909
  var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
4085
- HEAP_DATA_VIEW.setUint32(result, v, true);
4910
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
4086
4911
  }
4087
4912
  return envObject.clearLastError();
4088
4913
  }
@@ -4103,10 +4928,9 @@ function createNapiModule(options) {
4103
4928
  if (!result)
4104
4929
  return envObject.setLastError(1);
4105
4930
  var handle = emnapiCtx.handleStore.get(arraybuffer);
4106
- if (!handle.isArrayBuffer()) {
4107
- return envObject.setLastError(1);
4108
- }
4109
4931
  var buffer = handle.value;
4932
+ byte_offset >>>= 0;
4933
+ length >>>= 0;
4110
4934
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
4111
4935
  var _a;
4112
4936
  byte_offset = byte_offset >>> 0;
@@ -4137,36 +4961,47 @@ function createNapiModule(options) {
4137
4961
  });
4138
4962
  }
4139
4963
  }
4964
+ result >>>= 0;
4140
4965
  value = emnapiCtx.addToCurrentScope(out).id;
4141
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4142
- HEAP_DATA_VIEW.setUint32(result, value, true);
4966
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4967
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4143
4968
  return envObject.getReturnStatus();
4144
4969
  };
4145
- switch (type) {
4146
- case 0:
4147
- return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4148
- case 1:
4149
- return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4150
- case 2:
4151
- return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4152
- case 3:
4153
- return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4154
- case 4:
4155
- return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4156
- case 5:
4157
- return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4158
- case 6:
4159
- return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4160
- case 7:
4161
- return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4162
- case 8:
4163
- return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4164
- case 9:
4165
- return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4166
- case 10:
4167
- return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4168
- default:
4169
- return envObject.setLastError(1);
4970
+ if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
4971
+ switch (type) {
4972
+ case 0:
4973
+ return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4974
+ case 1:
4975
+ return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4976
+ case 2:
4977
+ return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4978
+ case 3:
4979
+ return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4980
+ case 4:
4981
+ return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4982
+ case 5:
4983
+ return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4984
+ case 6:
4985
+ return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4986
+ case 7:
4987
+ return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4988
+ case 8:
4989
+ return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4990
+ case 9:
4991
+ return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4992
+ case 10:
4993
+ return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4994
+ case 11:
4995
+ if (typeof Float16Array !== 'function') {
4996
+ return envObject.setLastError(1);
4997
+ }
4998
+ return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
4999
+ default:
5000
+ return envObject.setLastError(1);
5001
+ }
5002
+ }
5003
+ else {
5004
+ return envObject.setLastError(1);
4170
5005
  }
4171
5006
  }
4172
5007
  catch (err) {
@@ -4193,20 +5028,23 @@ function createNapiModule(options) {
4193
5028
  if (!Buffer) {
4194
5029
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
4195
5030
  }
5031
+ result >>>= 0;
4196
5032
  var buffer = void 0;
5033
+ size >>>= 0;
4197
5034
  size = size >>> 0;
4198
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5035
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4199
5036
  if (!data || (size === 0)) {
4200
5037
  buffer = Buffer.alloc(size);
4201
5038
  value = emnapiCtx.addToCurrentScope(buffer).id;
4202
- HEAP_DATA_VIEW.setUint32(result, value, true);
5039
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4203
5040
  }
4204
5041
  else {
4205
5042
  pointer = _malloc(size);
4206
5043
  if (!pointer)
4207
5044
  throw new Error('Out of memory');
5045
+ pointer >>>= 0;
4208
5046
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
4209
- var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
5047
+ var buffer_1 = emnapiExternalMemory.getBufferFrom()(wasmMemory.buffer, pointer, size);
4210
5048
  var viewDescriptor = {
4211
5049
  Ctor: Buffer,
4212
5050
  address: pointer,
@@ -4217,8 +5055,9 @@ function createNapiModule(options) {
4217
5055
  emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
4218
5056
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
4219
5057
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
4220
- HEAP_DATA_VIEW.setUint32(result, value, true);
4221
- HEAP_DATA_VIEW.setUint32(data, pointer, true);
5058
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
5059
+ data >>>= 0;
5060
+ GET_HEAP_DATA_VIEW().setUint32(data, pointer, true);
4222
5061
  }
4223
5062
  return envObject.getReturnStatus();
4224
5063
  }
@@ -4247,10 +5086,13 @@ function createNapiModule(options) {
4247
5086
  }
4248
5087
  var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
4249
5088
  var buffer = Buffer.from(arrayBuffer);
5089
+ data >>>= 0;
5090
+ length >>>= 0;
4250
5091
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
4251
5092
  value = emnapiCtx.addToCurrentScope(buffer).id;
4252
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4253
- HEAP_DATA_VIEW.setUint32(result, value, true);
5093
+ result >>>= 0;
5094
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5095
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4254
5096
  return envObject.getReturnStatus();
4255
5097
  }
4256
5098
  catch (err) {
@@ -4277,6 +5119,8 @@ function createNapiModule(options) {
4277
5119
  return envObject.setLastError(1);
4278
5120
  if (!result)
4279
5121
  return envObject.setLastError(1);
5122
+ byte_offset >>>= 0;
5123
+ byte_length >>>= 0;
4280
5124
  byte_offset = byte_offset >>> 0;
4281
5125
  byte_length = byte_length >>> 0;
4282
5126
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4293,7 +5137,7 @@ function createNapiModule(options) {
4293
5137
  if (!Buffer) {
4294
5138
  throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', '');
4295
5139
  }
4296
- var out = Buffer.from(buffer, byte_offset, byte_length);
5140
+ var out = emnapiExternalMemory.getBufferFrom()(buffer, byte_offset, byte_length);
4297
5141
  if (buffer === wasmMemory.buffer) {
4298
5142
  if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) {
4299
5143
  emnapiExternalMemory.wasmMemoryViewTable.set(out, {
@@ -4305,9 +5149,10 @@ function createNapiModule(options) {
4305
5149
  });
4306
5150
  }
4307
5151
  }
5152
+ result >>>= 0;
4308
5153
  value = emnapiCtx.addToCurrentScope(out).id;
4309
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4310
- HEAP_DATA_VIEW.setUint32(result, value, true);
5154
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5155
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4311
5156
  return envObject.getReturnStatus();
4312
5157
  }
4313
5158
  catch (err) {
@@ -4330,6 +5175,8 @@ function createNapiModule(options) {
4330
5175
  return envObject.setLastError(1);
4331
5176
  if (!result)
4332
5177
  return envObject.setLastError(1);
5178
+ byte_length >>>= 0;
5179
+ byte_offset >>>= 0;
4333
5180
  byte_length = byte_length >>> 0;
4334
5181
  byte_offset = byte_offset >>> 0;
4335
5182
  var value = emnapiCtx.handleStore.get(arraybuffer).value;
@@ -4351,9 +5198,10 @@ function createNapiModule(options) {
4351
5198
  });
4352
5199
  }
4353
5200
  }
5201
+ result >>>= 0;
4354
5202
  var v = emnapiCtx.addToCurrentScope(dataview).id;
4355
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4356
- HEAP_DATA_VIEW.setUint32(result, v, true);
5203
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5204
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
4357
5205
  return envObject.getReturnStatus();
4358
5206
  };
4359
5207
  if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
@@ -4375,7 +5223,10 @@ function createNapiModule(options) {
4375
5223
  envObject.checkGCAccess();
4376
5224
  if (!result)
4377
5225
  return envObject.setLastError(1);
4378
- var autoLength = length === -1;
5226
+ length >>>= 0;
5227
+ utf8description >>>= 0;
5228
+ result >>>= 0;
5229
+ var autoLength = length === -1 || length === 4294967295;
4379
5230
  var sizelength = length >>> 0;
4380
5231
  if (length !== 0) {
4381
5232
  if (!utf8description)
@@ -4386,8 +5237,8 @@ function createNapiModule(options) {
4386
5237
  }
4387
5238
  var descriptionString = emnapiString.UTF8ToString(utf8description, length);
4388
5239
  var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
4389
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4390
- HEAP_DATA_VIEW.setUint32(result, value, true);
5240
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5241
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4391
5242
  return envObject.clearLastError();
4392
5243
  }
4393
5244
  var createMod = Object.freeze({
@@ -4403,10 +5254,11 @@ function createNapiModule(options) {
4403
5254
  napi_create_external_arraybuffer: napi_create_external_arraybuffer,
4404
5255
  napi_create_external_buffer: napi_create_external_buffer,
4405
5256
  napi_create_object: napi_create_object,
4406
- napi_create_object_with_properties: napi_create_object_with_properties,
4407
5257
  napi_create_symbol: napi_create_symbol,
4408
5258
  napi_create_typedarray: napi_create_typedarray,
4409
5259
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
5260
+ node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
5261
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
4410
5262
  node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
4411
5263
  node_api_symbol_for: node_api_symbol_for
4412
5264
  });
@@ -4417,9 +5269,10 @@ function createNapiModule(options) {
4417
5269
  envObject.checkGCAccess();
4418
5270
  if (!result)
4419
5271
  return envObject.setLastError(1);
5272
+ result >>>= 0;
4420
5273
  var v = value === 0 ? 3 : 4;
4421
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4422
- HEAP_DATA_VIEW.setUint32(result, v, true);
5274
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5275
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
4423
5276
  return envObject.clearLastError();
4424
5277
  }
4425
5278
  function napi_get_global(env, result) {
@@ -4429,9 +5282,10 @@ function createNapiModule(options) {
4429
5282
  envObject.checkGCAccess();
4430
5283
  if (!result)
4431
5284
  return envObject.setLastError(1);
5285
+ result >>>= 0;
4432
5286
  var value = 5;
4433
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4434
- HEAP_DATA_VIEW.setUint32(result, value, true);
5287
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5288
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4435
5289
  return envObject.clearLastError();
4436
5290
  }
4437
5291
  function napi_get_null(env, result) {
@@ -4441,9 +5295,10 @@ function createNapiModule(options) {
4441
5295
  envObject.checkGCAccess();
4442
5296
  if (!result)
4443
5297
  return envObject.setLastError(1);
5298
+ result >>>= 0;
4444
5299
  var value = 2;
4445
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4446
- HEAP_DATA_VIEW.setUint32(result, value, true);
5300
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5301
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4447
5302
  return envObject.clearLastError();
4448
5303
  }
4449
5304
  function napi_get_undefined(env, result) {
@@ -4453,9 +5308,10 @@ function createNapiModule(options) {
4453
5308
  envObject.checkGCAccess();
4454
5309
  if (!result)
4455
5310
  return envObject.setLastError(1);
5311
+ result >>>= 0;
4456
5312
  var value = 1;
4457
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4458
- HEAP_DATA_VIEW.setUint32(result, value, true);
5313
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5314
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4459
5315
  return envObject.clearLastError();
4460
5316
  }
4461
5317
  var globalMod = Object.freeze({
@@ -4469,6 +5325,9 @@ function createNapiModule(options) {
4469
5325
  if (!env)
4470
5326
  return 1;
4471
5327
  var envObject = emnapiCtx.envStore.get(env);
5328
+ data >>>= 0;
5329
+ finalize_cb >>>= 0;
5330
+ finalize_hint >>>= 0;
4472
5331
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
4473
5332
  return envObject.clearLastError();
4474
5333
  }
@@ -4478,9 +5337,10 @@ function createNapiModule(options) {
4478
5337
  var envObject = emnapiCtx.envStore.get(env);
4479
5338
  if (!data)
4480
5339
  return envObject.setLastError(1);
5340
+ data >>>= 0;
4481
5341
  var value = envObject.getInstanceData();
4482
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4483
- HEAP_DATA_VIEW.setUint32(data, value, true);
5342
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5343
+ GET_HEAP_DATA_VIEW().setUint32(data, value, true);
4484
5344
  return envObject.clearLastError();
4485
5345
  }
4486
5346
  var envMod = Object.freeze({
@@ -4489,15 +5349,19 @@ function createNapiModule(options) {
4489
5349
  napi_set_instance_data: napi_set_instance_data
4490
5350
  });
4491
5351
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
5352
+ error_code >>>= 0;
5353
+ engine_error_code >>>= 0;
5354
+ engine_reserved >>>= 0;
4492
5355
  var envObject = emnapiCtx.envStore.get(env);
4493
5356
  var lastError = envObject.lastError;
4494
5357
  var errorCode = lastError.errorCode;
4495
5358
  var engineErrorCode = lastError.engineErrorCode >>> 0;
4496
5359
  var engineReserved = lastError.engineReserved;
4497
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4498
- HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
4499
- HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
4500
- HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
5360
+ engineReserved >>>= 0;
5361
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5362
+ GET_HEAP_DATA_VIEW().setInt32(error_code, errorCode, true);
5363
+ GET_HEAP_DATA_VIEW().setUint32(engine_error_code, engineErrorCode, true);
5364
+ GET_HEAP_DATA_VIEW().setUint32(engine_reserved, engineReserved, true);
4501
5365
  }
4502
5366
  function napi_throw(env, error) {
4503
5367
  if (!env)
@@ -4533,6 +5397,8 @@ function createNapiModule(options) {
4533
5397
  try {
4534
5398
  if (!msg)
4535
5399
  return envObject.setLastError(1);
5400
+ code >>>= 0;
5401
+ msg >>>= 0;
4536
5402
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
4537
5403
  if (code)
4538
5404
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4557,6 +5423,8 @@ function createNapiModule(options) {
4557
5423
  try {
4558
5424
  if (!msg)
4559
5425
  return envObject.setLastError(1);
5426
+ code >>>= 0;
5427
+ msg >>>= 0;
4560
5428
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
4561
5429
  if (code)
4562
5430
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4581,6 +5449,8 @@ function createNapiModule(options) {
4581
5449
  try {
4582
5450
  if (!msg)
4583
5451
  return envObject.setLastError(1);
5452
+ code >>>= 0;
5453
+ msg >>>= 0;
4584
5454
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
4585
5455
  if (code)
4586
5456
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4605,6 +5475,8 @@ function createNapiModule(options) {
4605
5475
  try {
4606
5476
  if (!msg)
4607
5477
  return envObject.setLastError(1);
5478
+ code >>>= 0;
5479
+ msg >>>= 0;
4608
5480
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
4609
5481
  if (code)
4610
5482
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4624,8 +5496,9 @@ function createNapiModule(options) {
4624
5496
  if (!result)
4625
5497
  return envObject.setLastError(1);
4626
5498
  var r = envObject.tryCatch.hasCaught();
4627
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4628
- HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5499
+ result >>>= 0;
5500
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5501
+ GET_HEAP_DATA_VIEW().setInt8(result, r ? 1 : 0, true);
4629
5502
  return envObject.clearLastError();
4630
5503
  }
4631
5504
  function napi_create_error(env, code, msg, result) {
@@ -4649,9 +5522,10 @@ function createNapiModule(options) {
4649
5522
  }
4650
5523
  error.code = codeValue;
4651
5524
  }
5525
+ result >>>= 0;
4652
5526
  var value = emnapiCtx.addToCurrentScope(error).id;
4653
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4654
- HEAP_DATA_VIEW.setUint32(result, value, true);
5527
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5528
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4655
5529
  return envObject.clearLastError();
4656
5530
  }
4657
5531
  function napi_create_type_error(env, code, msg, result) {
@@ -4675,9 +5549,10 @@ function createNapiModule(options) {
4675
5549
  }
4676
5550
  error.code = codeValue;
4677
5551
  }
5552
+ result >>>= 0;
4678
5553
  var value = emnapiCtx.addToCurrentScope(error).id;
4679
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4680
- HEAP_DATA_VIEW.setUint32(result, value, true);
5554
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5555
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4681
5556
  return envObject.clearLastError();
4682
5557
  }
4683
5558
  function napi_create_range_error(env, code, msg, result) {
@@ -4701,9 +5576,10 @@ function createNapiModule(options) {
4701
5576
  }
4702
5577
  error.code = codeValue;
4703
5578
  }
5579
+ result >>>= 0;
4704
5580
  var value = emnapiCtx.addToCurrentScope(error).id;
4705
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4706
- HEAP_DATA_VIEW.setUint32(result, value, true);
5581
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5582
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4707
5583
  return envObject.clearLastError();
4708
5584
  }
4709
5585
  function node_api_create_syntax_error(env, code, msg, result) {
@@ -4727,9 +5603,10 @@ function createNapiModule(options) {
4727
5603
  }
4728
5604
  error.code = codeValue;
4729
5605
  }
5606
+ result >>>= 0;
4730
5607
  var value = emnapiCtx.addToCurrentScope(error).id;
4731
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4732
- HEAP_DATA_VIEW.setUint32(result, value, true);
5608
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5609
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4733
5610
  return envObject.clearLastError();
4734
5611
  }
4735
5612
  function napi_get_and_clear_last_exception(env, result) {
@@ -4739,20 +5616,25 @@ function createNapiModule(options) {
4739
5616
  envObject.checkGCAccess();
4740
5617
  if (!result)
4741
5618
  return envObject.setLastError(1);
4742
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5619
+ result >>>= 0;
5620
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4743
5621
  if (!envObject.tryCatch.hasCaught()) {
4744
- HEAP_DATA_VIEW.setUint32(result, 1, true);
5622
+ GET_HEAP_DATA_VIEW().setUint32(result, 1, true);
4745
5623
  return envObject.clearLastError();
4746
5624
  }
4747
5625
  else {
4748
5626
  var err = envObject.tryCatch.exception();
4749
5627
  var value = envObject.ensureHandleId(err);
4750
- HEAP_DATA_VIEW.setUint32(result, value, true);
5628
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4751
5629
  envObject.tryCatch.reset();
4752
5630
  }
4753
5631
  return envObject.clearLastError();
4754
5632
  }
4755
5633
  function napi_fatal_error(location, location_len, message, message_len) {
5634
+ location >>>= 0;
5635
+ location_len >>>= 0;
5636
+ message >>>= 0;
5637
+ message_len >>>= 0;
4756
5638
  var locationStr = emnapiString.UTF8ToString(location, location_len);
4757
5639
  var messageStr = emnapiString.UTF8ToString(message, message_len);
4758
5640
  if (emnapiNodeBinding) {
@@ -4806,8 +5688,21 @@ function createNapiModule(options) {
4806
5688
  node_api_create_syntax_error: node_api_create_syntax_error,
4807
5689
  node_api_throw_syntax_error: node_api_throw_syntax_error
4808
5690
  });
5691
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
5692
+ length >>>= 0;
5693
+ var envObject = emnapiCtx.envStore.get(env);
5694
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
5695
+ if (fresult.status !== 0)
5696
+ return envObject.setLastError(fresult.status);
5697
+ var f = fresult.f;
5698
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
5699
+ result >>>= 0;
5700
+ var value = valueHandle.id;
5701
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5702
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
5703
+ return envObject.getReturnStatus();
5704
+ }
4809
5705
  function napi_create_function(env, utf8name, length, cb, data, result) {
4810
- var value;
4811
5706
  if (!env)
4812
5707
  return 1;
4813
5708
  var envObject = emnapiCtx.envStore.get(env);
@@ -4822,15 +5717,7 @@ function createNapiModule(options) {
4822
5717
  return envObject.setLastError(1);
4823
5718
  if (!cb)
4824
5719
  return envObject.setLastError(1);
4825
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
4826
- if (fresult.status !== 0)
4827
- return envObject.setLastError(fresult.status);
4828
- var f = fresult.f;
4829
- var valueHandle = emnapiCtx.addToCurrentScope(f);
4830
- value = valueHandle.id;
4831
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4832
- HEAP_DATA_VIEW.setUint32(result, value, true);
4833
- return envObject.getReturnStatus();
5720
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
4834
5721
  }
4835
5722
  catch (err) {
4836
5723
  envObject.tryCatch.setError(err);
@@ -4844,33 +5731,38 @@ function createNapiModule(options) {
4844
5731
  if (!cbinfo)
4845
5732
  return envObject.setLastError(1);
4846
5733
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
4847
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5734
+ argc >>>= 0;
5735
+ argv >>>= 0;
5736
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4848
5737
  if (argv) {
4849
5738
  if (!argc)
4850
5739
  return envObject.setLastError(1);
4851
- var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
5740
+ var argcValue = GET_HEAP_DATA_VIEW().getUint32(argc, true);
5741
+ argcValue >>>= 0;
4852
5742
  var len = cbinfoValue.args.length;
4853
5743
  var arrlen = argcValue < len ? argcValue : len;
4854
5744
  var i = 0;
4855
5745
  for (; i < arrlen; i++) {
4856
5746
  var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
4857
- HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
5747
+ GET_HEAP_DATA_VIEW().setUint32(argv + i * 4, argVal, true);
4858
5748
  }
4859
5749
  if (i < argcValue) {
4860
5750
  for (; i < argcValue; i++) {
4861
- HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
5751
+ GET_HEAP_DATA_VIEW().setUint32(argv + i * 4, 1, true);
4862
5752
  }
4863
5753
  }
4864
5754
  }
4865
5755
  if (argc) {
4866
- HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
5756
+ GET_HEAP_DATA_VIEW().setUint32(argc, cbinfoValue.args.length, true);
4867
5757
  }
4868
5758
  if (this_arg) {
5759
+ this_arg >>>= 0;
4869
5760
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
4870
- HEAP_DATA_VIEW.setUint32(this_arg, v, true);
5761
+ GET_HEAP_DATA_VIEW().setUint32(this_arg, v, true);
4871
5762
  }
4872
5763
  if (data) {
4873
- HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
5764
+ data >>>= 0;
5765
+ GET_HEAP_DATA_VIEW().setUint32(data, cbinfoValue.data, true);
4874
5766
  }
4875
5767
  return envObject.clearLastError();
4876
5768
  }
@@ -4889,6 +5781,9 @@ function createNapiModule(options) {
4889
5781
  try {
4890
5782
  if (!recv)
4891
5783
  return envObject.setLastError(1);
5784
+ argc >>>= 0;
5785
+ argv >>>= 0;
5786
+ result >>>= 0;
4892
5787
  argc = argc >>> 0;
4893
5788
  if (argc > 0) {
4894
5789
  if (!argv)
@@ -4901,15 +5796,15 @@ function createNapiModule(options) {
4901
5796
  if (typeof v8func !== 'function')
4902
5797
  return envObject.setLastError(1);
4903
5798
  var args = [];
4904
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5799
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4905
5800
  for (; i < argc; i++) {
4906
- var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
5801
+ var argVal = GET_HEAP_DATA_VIEW().getUint32(argv + i * 4, true);
4907
5802
  args.push(emnapiCtx.handleStore.get(argVal).value);
4908
5803
  }
4909
5804
  var ret = v8func.apply(v8recv, args);
4910
5805
  if (result) {
4911
5806
  v = envObject.ensureHandleId(ret);
4912
- HEAP_DATA_VIEW.setUint32(result, v, true);
5807
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
4913
5808
  }
4914
5809
  return envObject.clearLastError();
4915
5810
  }
@@ -4933,6 +5828,9 @@ function createNapiModule(options) {
4933
5828
  try {
4934
5829
  if (!constructor)
4935
5830
  return envObject.setLastError(1);
5831
+ argc >>>= 0;
5832
+ argv >>>= 0;
5833
+ result >>>= 0;
4936
5834
  argc = argc >>> 0;
4937
5835
  if (argc > 0) {
4938
5836
  if (!argv)
@@ -4944,11 +5842,11 @@ function createNapiModule(options) {
4944
5842
  if (typeof Ctor !== 'function')
4945
5843
  return envObject.setLastError(1);
4946
5844
  var ret = void 0;
4947
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5845
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
4948
5846
  if (emnapiCtx.feature.supportReflect) {
4949
5847
  var argList = Array(argc);
4950
5848
  for (i = 0; i < argc; i++) {
4951
- var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
5849
+ var argVal = GET_HEAP_DATA_VIEW().getUint32(argv + i * 4, true);
4952
5850
  argList[i] = emnapiCtx.handleStore.get(argVal).value;
4953
5851
  }
4954
5852
  ret = Reflect.construct(Ctor, argList, Ctor);
@@ -4957,7 +5855,7 @@ function createNapiModule(options) {
4957
5855
  var args = Array(argc + 1);
4958
5856
  args[0] = undefined;
4959
5857
  for (i = 0; i < argc; i++) {
4960
- var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
5858
+ var argVal = GET_HEAP_DATA_VIEW().getUint32(argv + i * 4, true);
4961
5859
  args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
4962
5860
  }
4963
5861
  var BoundCtor = Ctor.bind.apply(Ctor, args);
@@ -4965,7 +5863,7 @@ function createNapiModule(options) {
4965
5863
  }
4966
5864
  if (result) {
4967
5865
  v = envObject.ensureHandleId(ret);
4968
- HEAP_DATA_VIEW.setUint32(result, v, true);
5866
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
4969
5867
  }
4970
5868
  return envObject.getReturnStatus();
4971
5869
  }
@@ -4983,6 +5881,7 @@ function createNapiModule(options) {
4983
5881
  return envObject.setLastError(1);
4984
5882
  if (!result)
4985
5883
  return envObject.setLastError(1);
5884
+ result >>>= 0;
4986
5885
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
4987
5886
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
4988
5887
  var value = thiz == null || thiz.constructor == null
@@ -4990,12 +5889,13 @@ function createNapiModule(options) {
4990
5889
  : thiz instanceof fn
4991
5890
  ? envObject.ensureHandleId(thiz.constructor)
4992
5891
  : 0;
4993
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4994
- HEAP_DATA_VIEW.setUint32(result, value, true);
5892
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5893
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
4995
5894
  return envObject.clearLastError();
4996
5895
  }
4997
5896
  var functionMod = Object.freeze({
4998
5897
  __proto__: null,
5898
+ _emnapi_create_function: _emnapi_create_function,
4999
5899
  napi_call_function: napi_call_function,
5000
5900
  napi_create_function: napi_create_function,
5001
5901
  napi_get_cb_info: napi_get_cb_info,
@@ -5010,8 +5910,9 @@ function createNapiModule(options) {
5010
5910
  if (!result)
5011
5911
  return envObject.setLastError(1);
5012
5912
  var scope = emnapiCtx.openScope(envObject);
5013
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5014
- HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5913
+ result >>>= 0;
5914
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5915
+ GET_HEAP_DATA_VIEW().setUint32(result, scope.id, true);
5015
5916
  return envObject.clearLastError();
5016
5917
  }
5017
5918
  function napi_close_handle_scope(env, scope) {
@@ -5035,8 +5936,9 @@ function createNapiModule(options) {
5035
5936
  if (!result)
5036
5937
  return envObject.setLastError(1);
5037
5938
  var scope = emnapiCtx.openScope(envObject);
5038
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5039
- HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5939
+ result >>>= 0;
5940
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5941
+ GET_HEAP_DATA_VIEW().setUint32(result, scope.id, true);
5040
5942
  return envObject.clearLastError();
5041
5943
  }
5042
5944
  function napi_close_escapable_handle_scope(env, scope) {
@@ -5065,10 +5967,12 @@ function createNapiModule(options) {
5065
5967
  return envObject.setLastError(1);
5066
5968
  var scopeObject = emnapiCtx.scopeStore.get(scope);
5067
5969
  if (!scopeObject.escapeCalled()) {
5970
+ escapee >>>= 0;
5971
+ result >>>= 0;
5068
5972
  var newHandle = scopeObject.escape(escapee);
5069
5973
  var value = newHandle ? newHandle.id : 0;
5070
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5071
- HEAP_DATA_VIEW.setUint32(result, value, true);
5974
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5975
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
5072
5976
  return envObject.clearLastError();
5073
5977
  }
5074
5978
  return envObject.setLastError(12);
@@ -5089,8 +5993,9 @@ function createNapiModule(options) {
5089
5993
  }
5090
5994
  }
5091
5995
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
5092
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5093
- HEAP_DATA_VIEW.setUint32(result, ref.id, true);
5996
+ result >>>= 0;
5997
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5998
+ GET_HEAP_DATA_VIEW().setUint32(result, ref.id, true);
5094
5999
  return envObject.clearLastError();
5095
6000
  }
5096
6001
  function napi_delete_reference(env, ref) {
@@ -5111,8 +6016,9 @@ function createNapiModule(options) {
5111
6016
  return envObject.setLastError(1);
5112
6017
  var count = emnapiCtx.refStore.get(ref).ref();
5113
6018
  if (result) {
5114
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5115
- HEAP_DATA_VIEW.setUint32(result, count, true);
6019
+ result >>>= 0;
6020
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6021
+ GET_HEAP_DATA_VIEW().setUint32(result, count, true);
5116
6022
  }
5117
6023
  return envObject.clearLastError();
5118
6024
  }
@@ -5130,8 +6036,9 @@ function createNapiModule(options) {
5130
6036
  }
5131
6037
  var count = reference.unref();
5132
6038
  if (result) {
5133
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5134
- HEAP_DATA_VIEW.setUint32(result, count, true);
6039
+ result >>>= 0;
6040
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6041
+ GET_HEAP_DATA_VIEW().setUint32(result, count, true);
5135
6042
  }
5136
6043
  return envObject.clearLastError();
5137
6044
  }
@@ -5146,8 +6053,9 @@ function createNapiModule(options) {
5146
6053
  return envObject.setLastError(1);
5147
6054
  var reference = emnapiCtx.refStore.get(ref);
5148
6055
  var handleId = reference.get(envObject);
5149
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5150
- HEAP_DATA_VIEW.setUint32(result, handleId, true);
6056
+ result >>>= 0;
6057
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6058
+ GET_HEAP_DATA_VIEW().setUint32(result, handleId, true);
5151
6059
  return envObject.clearLastError();
5152
6060
  }
5153
6061
  function napi_add_env_cleanup_hook(env, fun, arg) {
@@ -5156,6 +6064,8 @@ function createNapiModule(options) {
5156
6064
  var envObject = emnapiCtx.envStore.get(env);
5157
6065
  if (!fun)
5158
6066
  return envObject.setLastError(1);
6067
+ fun >>>= 0;
6068
+ arg >>>= 0;
5159
6069
  emnapiCtx.addCleanupHook(envObject, fun, arg);
5160
6070
  return 0;
5161
6071
  }
@@ -5165,6 +6075,8 @@ function createNapiModule(options) {
5165
6075
  var envObject = emnapiCtx.envStore.get(env);
5166
6076
  if (!fun)
5167
6077
  return envObject.setLastError(1);
6078
+ fun >>>= 0;
6079
+ arg >>>= 0;
5168
6080
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
5169
6081
  return 0;
5170
6082
  }
@@ -5221,14 +6133,16 @@ function createNapiModule(options) {
5221
6133
  return envObject.setLastError(1);
5222
6134
  if (!promise)
5223
6135
  return envObject.setLastError(1);
5224
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6136
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5225
6137
  var p = new Promise(function (resolve, reject) {
5226
6138
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
5227
6139
  deferredObjectId = deferredObject.id;
5228
- HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
6140
+ deferred >>>= 0;
6141
+ GET_HEAP_DATA_VIEW().setUint32(deferred, deferredObjectId, true);
5229
6142
  });
6143
+ promise >>>= 0;
5230
6144
  value = emnapiCtx.addToCurrentScope(p).id;
5231
- HEAP_DATA_VIEW.setUint32(promise, value, true);
6145
+ GET_HEAP_DATA_VIEW().setUint32(promise, value, true);
5232
6146
  return envObject.getReturnStatus();
5233
6147
  }
5234
6148
  catch (err) {
@@ -5294,9 +6208,10 @@ function createNapiModule(options) {
5294
6208
  if (!is_promise)
5295
6209
  return envObject.setLastError(1);
5296
6210
  var h = emnapiCtx.handleStore.get(value);
6211
+ is_promise >>>= 0;
5297
6212
  var r = h.isPromise() ? 1 : 0;
5298
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5299
- HEAP_DATA_VIEW.setInt8(is_promise, r, true);
6213
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6214
+ GET_HEAP_DATA_VIEW().setInt8(is_promise, r, true);
5300
6215
  return envObject.clearLastError();
5301
6216
  }
5302
6217
  var promiseMod = Object.freeze({
@@ -5437,9 +6352,10 @@ function createNapiModule(options) {
5437
6352
  }
5438
6353
  }
5439
6354
  }
6355
+ result >>>= 0;
5440
6356
  value = emnapiCtx.addToCurrentScope(ret).id;
5441
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5442
- HEAP_DATA_VIEW.setUint32(result, value, true);
6357
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6358
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
5443
6359
  return envObject.getReturnStatus();
5444
6360
  }
5445
6361
  catch (err) {
@@ -5508,9 +6424,10 @@ function createNapiModule(options) {
5508
6424
  catch (_) {
5509
6425
  return envObject.setLastError(2);
5510
6426
  }
6427
+ result >>>= 0;
5511
6428
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
5512
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5513
- HEAP_DATA_VIEW.setInt8(result, r, true);
6429
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6430
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
5514
6431
  return envObject.getReturnStatus();
5515
6432
  }
5516
6433
  catch (err) {
@@ -5547,9 +6464,10 @@ function createNapiModule(options) {
5547
6464
  catch (_) {
5548
6465
  return envObject.setLastError(2);
5549
6466
  }
6467
+ result >>>= 0;
5550
6468
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
5551
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5552
- HEAP_DATA_VIEW.setUint32(result, value, true);
6469
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6470
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
5553
6471
  return envObject.getReturnStatus();
5554
6472
  }
5555
6473
  catch (err) {
@@ -5590,8 +6508,9 @@ function createNapiModule(options) {
5590
6508
  }
5591
6509
  }
5592
6510
  if (result) {
5593
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5594
- HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6511
+ result >>>= 0;
6512
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6513
+ GET_HEAP_DATA_VIEW().setInt8(result, r ? 1 : 0, true);
5595
6514
  }
5596
6515
  return envObject.getReturnStatus();
5597
6516
  }
@@ -5634,8 +6553,9 @@ function createNapiModule(options) {
5634
6553
  return envObject.setLastError(4);
5635
6554
  }
5636
6555
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
5637
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5638
- HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6556
+ result >>>= 0;
6557
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6558
+ GET_HEAP_DATA_VIEW().setInt8(result, r ? 1 : 0, true);
5639
6559
  return envObject.getReturnStatus();
5640
6560
  }
5641
6561
  catch (err) {
@@ -5665,6 +6585,7 @@ function createNapiModule(options) {
5665
6585
  if (!cname) {
5666
6586
  return envObject.setLastError(1);
5667
6587
  }
6588
+ cname >>>= 0;
5668
6589
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
5669
6590
  return envObject.getReturnStatus();
5670
6591
  }
@@ -5703,9 +6624,11 @@ function createNapiModule(options) {
5703
6624
  catch (_) {
5704
6625
  return envObject.setLastError(2);
5705
6626
  }
6627
+ utf8name >>>= 0;
6628
+ result >>>= 0;
5706
6629
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
5707
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5708
- HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6630
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6631
+ GET_HEAP_DATA_VIEW().setInt8(result, r ? 1 : 0, true);
5709
6632
  return envObject.getReturnStatus();
5710
6633
  }
5711
6634
  catch (err) {
@@ -5743,9 +6666,11 @@ function createNapiModule(options) {
5743
6666
  catch (_) {
5744
6667
  return envObject.setLastError(2);
5745
6668
  }
6669
+ utf8name >>>= 0;
6670
+ result >>>= 0;
5746
6671
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
5747
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5748
- HEAP_DATA_VIEW.setUint32(result, value, true);
6672
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6673
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
5749
6674
  return envObject.getReturnStatus();
5750
6675
  }
5751
6676
  catch (err) {
@@ -5807,9 +6732,10 @@ function createNapiModule(options) {
5807
6732
  catch (_) {
5808
6733
  return envObject.setLastError(2);
5809
6734
  }
6735
+ result >>>= 0;
5810
6736
  r = ((index >>> 0) in v) ? 1 : 0;
5811
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5812
- HEAP_DATA_VIEW.setInt8(result, r, true);
6737
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6738
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
5813
6739
  return envObject.getReturnStatus();
5814
6740
  }
5815
6741
  catch (err) {
@@ -5844,9 +6770,10 @@ function createNapiModule(options) {
5844
6770
  catch (_) {
5845
6771
  return envObject.setLastError(2);
5846
6772
  }
6773
+ result >>>= 0;
5847
6774
  value = envObject.ensureHandleId(v[index >>> 0]);
5848
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5849
- HEAP_DATA_VIEW.setUint32(result, value, true);
6775
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6776
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
5850
6777
  return envObject.getReturnStatus();
5851
6778
  }
5852
6779
  catch (err) {
@@ -5884,8 +6811,9 @@ function createNapiModule(options) {
5884
6811
  }
5885
6812
  }
5886
6813
  if (result) {
5887
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5888
- HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
6814
+ result >>>= 0;
6815
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6816
+ GET_HEAP_DATA_VIEW().setInt8(result, r ? 1 : 0, true);
5889
6817
  }
5890
6818
  return envObject.getReturnStatus();
5891
6819
  }
@@ -5906,6 +6834,8 @@ function createNapiModule(options) {
5906
6834
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
5907
6835
  envObject.clearLastError();
5908
6836
  try {
6837
+ properties >>>= 0;
6838
+ property_count >>>= 0;
5909
6839
  property_count = property_count >>> 0;
5910
6840
  if (property_count > 0) {
5911
6841
  if (!properties)
@@ -5919,17 +6849,18 @@ function createNapiModule(options) {
5919
6849
  return envObject.setLastError(2);
5920
6850
  }
5921
6851
  var propertyName = void 0;
5922
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6852
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
5923
6853
  for (var i = 0; i < property_count; i++) {
5924
6854
  propPtr = properties + (i * (4 * 8));
5925
- var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
5926
- var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
5927
- var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
5928
- var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
5929
- var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
5930
- var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
5931
- attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
5932
- var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
6855
+ var utf8Name = GET_HEAP_DATA_VIEW().getUint32(propPtr, true);
6856
+ var name_2 = GET_HEAP_DATA_VIEW().getUint32(propPtr + 4, true);
6857
+ var method = GET_HEAP_DATA_VIEW().getUint32(propPtr + 8, true);
6858
+ var getter = GET_HEAP_DATA_VIEW().getUint32(propPtr + 12, true);
6859
+ var setter = GET_HEAP_DATA_VIEW().getUint32(propPtr + 16, true);
6860
+ var value = GET_HEAP_DATA_VIEW().getUint32(propPtr + 20, true);
6861
+ attributes = GET_HEAP_DATA_VIEW().getInt32(propPtr + 24, true);
6862
+ attributes >>>= 0;
6863
+ var data = GET_HEAP_DATA_VIEW().getUint32(propPtr + 28, true);
5933
6864
  if (utf8Name) {
5934
6865
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
5935
6866
  }
@@ -6046,9 +6977,10 @@ function createNapiModule(options) {
6046
6977
  }
6047
6978
  var g = emnapiCtx.handleStore.get(5).value;
6048
6979
  var ret = g.eval(v8Script.value);
6980
+ result >>>= 0;
6049
6981
  value = envObject.ensureHandleId(ret);
6050
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6051
- HEAP_DATA_VIEW.setUint32(result, value, true);
6982
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6983
+ GET_HEAP_DATA_VIEW().setUint32(result, value, true);
6052
6984
  status = envObject.getReturnStatus();
6053
6985
  }
6054
6986
  catch (err) {
@@ -6071,6 +7003,7 @@ function createNapiModule(options) {
6071
7003
  if (!result)
6072
7004
  return envObject.setLastError(1);
6073
7005
  var v = emnapiCtx.handleStore.get(value);
7006
+ result >>>= 0;
6074
7007
  var r;
6075
7008
  if (v.isNumber()) {
6076
7009
  r = 3;
@@ -6105,8 +7038,8 @@ function createNapiModule(options) {
6105
7038
  else {
6106
7039
  return envObject.setLastError(1);
6107
7040
  }
6108
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6109
- HEAP_DATA_VIEW.setInt32(result, r, true);
7041
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7042
+ GET_HEAP_DATA_VIEW().setInt32(result, r, true);
6110
7043
  return envObject.clearLastError();
6111
7044
  }
6112
7045
  function napi_coerce_to_bool(env, value, result) {
@@ -6126,9 +7059,10 @@ function createNapiModule(options) {
6126
7059
  if (!result)
6127
7060
  return envObject.setLastError(1);
6128
7061
  var handle = emnapiCtx.handleStore.get(value);
7062
+ result >>>= 0;
6129
7063
  v = handle.value ? 4 : 3;
6130
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6131
- HEAP_DATA_VIEW.setUint32(result, v, true);
7064
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7065
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
6132
7066
  return envObject.getReturnStatus();
6133
7067
  }
6134
7068
  catch (err) {
@@ -6156,9 +7090,10 @@ function createNapiModule(options) {
6156
7090
  if (handle.isBigInt()) {
6157
7091
  throw new TypeError('Cannot convert a BigInt value to a number');
6158
7092
  }
7093
+ result >>>= 0;
6159
7094
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
6160
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6161
- HEAP_DATA_VIEW.setUint32(result, v, true);
7095
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7096
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
6162
7097
  return envObject.getReturnStatus();
6163
7098
  }
6164
7099
  catch (err) {
@@ -6186,9 +7121,10 @@ function createNapiModule(options) {
6186
7121
  if (handle.value == null) {
6187
7122
  throw new TypeError('Cannot convert undefined or null to object');
6188
7123
  }
7124
+ result >>>= 0;
6189
7125
  v = envObject.ensureHandleId(Object(handle.value));
6190
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6191
- HEAP_DATA_VIEW.setUint32(result, v, true);
7126
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7127
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
6192
7128
  return envObject.getReturnStatus();
6193
7129
  }
6194
7130
  catch (err) {
@@ -6216,9 +7152,10 @@ function createNapiModule(options) {
6216
7152
  if (handle.isSymbol()) {
6217
7153
  throw new TypeError('Cannot convert a Symbol value to a string');
6218
7154
  }
7155
+ result >>>= 0;
6219
7156
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
6220
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6221
- HEAP_DATA_VIEW.setUint32(result, v, true);
7157
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7158
+ GET_HEAP_DATA_VIEW().setUint32(result, v, true);
6222
7159
  return envObject.getReturnStatus();
6223
7160
  }
6224
7161
  catch (err) {
@@ -6244,8 +7181,9 @@ function createNapiModule(options) {
6244
7181
  return envObject.setLastError(1);
6245
7182
  if (!constructor)
6246
7183
  return envObject.setLastError(1);
6247
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6248
- HEAP_DATA_VIEW.setInt8(result, 0, true);
7184
+ result >>>= 0;
7185
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7186
+ GET_HEAP_DATA_VIEW().setInt8(result, 0, true);
6249
7187
  var ctor = emnapiCtx.handleStore.get(constructor);
6250
7188
  if (!ctor.isFunction()) {
6251
7189
  return envObject.setLastError(5);
@@ -6253,7 +7191,7 @@ function createNapiModule(options) {
6253
7191
  var val = emnapiCtx.handleStore.get(object).value;
6254
7192
  var ret = val instanceof ctor.value;
6255
7193
  r = ret ? 1 : 0;
6256
- HEAP_DATA_VIEW.setInt8(result, r, true);
7194
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6257
7195
  return envObject.getReturnStatus();
6258
7196
  }
6259
7197
  catch (err) {
@@ -6271,9 +7209,10 @@ function createNapiModule(options) {
6271
7209
  if (!result)
6272
7210
  return envObject.setLastError(1);
6273
7211
  var h = emnapiCtx.handleStore.get(value);
7212
+ result >>>= 0;
6274
7213
  var r = h.isArray() ? 1 : 0;
6275
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6276
- HEAP_DATA_VIEW.setInt8(result, r, true);
7214
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7215
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6277
7216
  return envObject.clearLastError();
6278
7217
  }
6279
7218
  function napi_is_arraybuffer(env, value, result) {
@@ -6286,9 +7225,10 @@ function createNapiModule(options) {
6286
7225
  if (!result)
6287
7226
  return envObject.setLastError(1);
6288
7227
  var h = emnapiCtx.handleStore.get(value);
7228
+ result >>>= 0;
6289
7229
  var r = h.isArrayBuffer() ? 1 : 0;
6290
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6291
- HEAP_DATA_VIEW.setInt8(result, r, true);
7230
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7231
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6292
7232
  return envObject.clearLastError();
6293
7233
  }
6294
7234
  function node_api_is_sharedarraybuffer(env, value, result) {
@@ -6301,12 +7241,13 @@ function createNapiModule(options) {
6301
7241
  if (!result)
6302
7242
  return envObject.setLastError(1);
6303
7243
  var h = emnapiCtx.handleStore.get(value);
7244
+ result >>>= 0;
6304
7245
  var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
6305
7246
  (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
6306
7247
  ? 1
6307
7248
  : 0;
6308
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6309
- HEAP_DATA_VIEW.setInt8(result, r, true);
7249
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7250
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6310
7251
  return envObject.clearLastError();
6311
7252
  }
6312
7253
  function napi_is_date(env, value, result) {
@@ -6319,9 +7260,10 @@ function createNapiModule(options) {
6319
7260
  if (!result)
6320
7261
  return envObject.setLastError(1);
6321
7262
  var h = emnapiCtx.handleStore.get(value);
7263
+ result >>>= 0;
6322
7264
  var r = h.isDate() ? 1 : 0;
6323
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6324
- HEAP_DATA_VIEW.setInt8(result, r, true);
7265
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7266
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6325
7267
  return envObject.clearLastError();
6326
7268
  }
6327
7269
  function napi_is_error(env, value, result) {
@@ -6334,9 +7276,10 @@ function createNapiModule(options) {
6334
7276
  if (!result)
6335
7277
  return envObject.setLastError(1);
6336
7278
  var val = emnapiCtx.handleStore.get(value).value;
7279
+ result >>>= 0;
6337
7280
  var r = (val instanceof Error) ? 1 : 0;
6338
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6339
- HEAP_DATA_VIEW.setInt8(result, r, true);
7281
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7282
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6340
7283
  return envObject.clearLastError();
6341
7284
  }
6342
7285
  function napi_is_typedarray(env, value, result) {
@@ -6349,9 +7292,10 @@ function createNapiModule(options) {
6349
7292
  if (!result)
6350
7293
  return envObject.setLastError(1);
6351
7294
  var h = emnapiCtx.handleStore.get(value);
7295
+ result >>>= 0;
6352
7296
  var r = h.isTypedArray() ? 1 : 0;
6353
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6354
- HEAP_DATA_VIEW.setInt8(result, r, true);
7297
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7298
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6355
7299
  return envObject.clearLastError();
6356
7300
  }
6357
7301
  function napi_is_buffer(env, value, result) {
@@ -6364,9 +7308,10 @@ function createNapiModule(options) {
6364
7308
  if (!result)
6365
7309
  return envObject.setLastError(1);
6366
7310
  var h = emnapiCtx.handleStore.get(value);
7311
+ result >>>= 0;
6367
7312
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
6368
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6369
- HEAP_DATA_VIEW.setInt8(result, r, true);
7313
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7314
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6370
7315
  return envObject.clearLastError();
6371
7316
  }
6372
7317
  function napi_is_dataview(env, value, result) {
@@ -6379,9 +7324,10 @@ function createNapiModule(options) {
6379
7324
  if (!result)
6380
7325
  return envObject.setLastError(1);
6381
7326
  var h = emnapiCtx.handleStore.get(value);
7327
+ result >>>= 0;
6382
7328
  var r = h.isDataView() ? 1 : 0;
6383
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6384
- HEAP_DATA_VIEW.setInt8(result, r, true);
7329
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7330
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6385
7331
  return envObject.clearLastError();
6386
7332
  }
6387
7333
  function napi_strict_equals(env, lhs, rhs, result) {
@@ -6404,9 +7350,10 @@ function createNapiModule(options) {
6404
7350
  return envObject.setLastError(1);
6405
7351
  var lv = emnapiCtx.handleStore.get(lhs).value;
6406
7352
  var rv = emnapiCtx.handleStore.get(rhs).value;
7353
+ result >>>= 0;
6407
7354
  r = (lv === rv) ? 1 : 0;
6408
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6409
- HEAP_DATA_VIEW.setInt8(result, r, true);
7355
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7356
+ GET_HEAP_DATA_VIEW().setInt8(result, r, true);
6410
7357
  return envObject.getReturnStatus();
6411
7358
  }
6412
7359
  catch (err) {
@@ -6454,17 +7401,18 @@ function createNapiModule(options) {
6454
7401
  if (!result)
6455
7402
  return envObject.setLastError(1);
6456
7403
  var h = emnapiCtx.handleStore.get(arraybuffer);
6457
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
7404
+ result >>>= 0;
7405
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
6458
7406
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
6459
7407
  try {
6460
7408
  new Uint8Array(h.value);
6461
7409
  }
6462
7410
  catch (_) {
6463
- HEAP_DATA_VIEW.setInt8(result, 1, true);
7411
+ GET_HEAP_DATA_VIEW().setInt8(result, 1, true);
6464
7412
  return envObject.getReturnStatus();
6465
7413
  }
6466
7414
  }
6467
- HEAP_DATA_VIEW.setInt8(result, 0, true);
7415
+ GET_HEAP_DATA_VIEW().setInt8(result, 0, true);
6468
7416
  return envObject.getReturnStatus();
6469
7417
  }
6470
7418
  catch (err) {
@@ -6499,8 +7447,8 @@ function createNapiModule(options) {
6499
7447
  if (!result)
6500
7448
  return envObject.setLastError(1);
6501
7449
  var NODE_API_SUPPORTED_VERSION_MAX = 10;
6502
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6503
- HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true);
7450
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer), GET_HEAP_DATA_VIEW = function () { return HEAP_DATA_VIEW.buffer === wasmMemory.buffer ? HEAP_DATA_VIEW : (HEAP_DATA_VIEW = new DataView(wasmMemory.buffer)); };
7451
+ GET_HEAP_DATA_VIEW().setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true);
6504
7452
  return envObject.clearLastError();
6505
7453
  }
6506
7454
  var versionMod = Object.freeze({
@@ -6509,11 +7457,13 @@ function createNapiModule(options) {
6509
7457
  });
6510
7458
  emnapiAWST.init();
6511
7459
  emnapiExternalMemory.init();
7460
+ emnapiExternalSAB.init();
6512
7461
  emnapiString.init();
6513
7462
  emnapiTSFN.init();
6514
7463
  PThread.init();
6515
7464
  napiModule.emnapi.syncMemory = $emnapiSyncMemory;
6516
7465
  napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
7466
+ napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
6517
7467
  function addImports(mod) {
6518
7468
  var keys = Object.keys(mod);
6519
7469
  for (var i = 0; i < keys.length; ++i) {
@@ -6641,9 +7591,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
6641
7591
  }
6642
7592
  const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
6643
7593
  if (wasi && !exportMemory) {
6644
- const exports$1 = Object.create(null);
6645
- Object.assign(exports$1, originalExports, { memory });
6646
- instance = { exports: exports$1 };
7594
+ const exports = Object.create(null);
7595
+ Object.assign(exports, originalExports, { memory });
7596
+ instance = { exports };
6647
7597
  }
6648
7598
  const module = source.module;
6649
7599
  if (wasi) {
@@ -6768,12 +7718,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
6768
7718
  try {
6769
7719
  if (type === 'async-worker-init') {
6770
7720
  this.handleAfterLoad(e, () => {
6771
- this.napiModule.initWorker(payload.arg);
6772
- });
6773
- }
6774
- else if (type === 'async-work-execute') {
6775
- this.handleAfterLoad(e, () => {
6776
- this.napiModule.executeAsyncWork(payload.work);
7721
+ this.napiModule.initWorker(payload.arg, payload.func);
6777
7722
  });
6778
7723
  }
6779
7724
  }
@@ -6784,7 +7729,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
6784
7729
  }
6785
7730
  }
6786
7731
 
6787
- const version = "1.7.1";
7732
+ const version = "1.11.3";
6788
7733
 
6789
7734
  exports.MessageHandler = MessageHandler;
6790
7735
  exports.createNapiModule = createNapiModule;