@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.ebb2d43 → 0.0.0-insiders.ece4824

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 (66) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +1208 -472
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +61 -4
  3. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
  4. package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +61 -4
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +61 -4
  6. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1296 -479
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +1358 -522
  8. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +61 -4
  9. package/node_modules/@emnapi/core/dist/emnapi-core.min.js +1 -1
  10. package/node_modules/@emnapi/core/dist/emnapi-core.min.mjs +1 -1
  11. package/node_modules/@emnapi/core/dist/emnapi-core.mjs +1208 -472
  12. package/node_modules/@emnapi/core/package.json +2 -2
  13. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +44 -14
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +15 -7
  15. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  16. package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +15 -7
  17. package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +15 -7
  18. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +45 -14
  19. package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +12 -6
  20. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +45 -14
  21. package/node_modules/@emnapi/runtime/dist/emnapi.js +45 -14
  22. package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +15 -7
  23. package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
  24. package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
  25. package/node_modules/@emnapi/runtime/dist/emnapi.mjs +44 -14
  26. package/node_modules/@emnapi/runtime/package.json +1 -1
  27. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +40 -27
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +59 -1
  29. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
  30. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +59 -1
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +59 -1
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +40 -27
  33. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +40 -27
  34. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +59 -1
  35. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
  36. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
  37. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +40 -27
  38. package/node_modules/@emnapi/wasi-threads/package.json +1 -1
  39. package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +299 -0
  40. package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +22204 -20809
  41. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +294 -0
  42. package/node_modules/@napi-rs/wasm-runtime/package.json +25 -16
  43. package/node_modules/@napi-rs/wasm-runtime/runtime.cjs +1 -1
  44. package/node_modules/@napi-rs/wasm-runtime/runtime.js +8 -0
  45. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +196 -17
  46. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +196 -17
  47. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
  48. package/node_modules/@tybys/wasm-util/dist/wasm-util.js +196 -17
  49. package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
  50. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
  51. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +54 -17
  52. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
  53. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +54 -17
  54. package/node_modules/@tybys/wasm-util/package.json +1 -1
  55. package/node_modules/tslib/package.json +1 -1
  56. package/node_modules/tslib/tslib.es6.js +10 -1
  57. package/node_modules/tslib/tslib.es6.mjs +10 -1
  58. package/node_modules/tslib/tslib.js +42 -33
  59. package/package.json +7 -7
  60. package/tailwindcss-oxide.wasi-browser.js +7 -3
  61. package/tailwindcss-oxide.wasi.cjs +27 -4
  62. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  63. package/wasi-worker-browser.mjs +4 -0
  64. package/node_modules/@napi-rs/wasm-runtime/LICENSE +0 -43
  65. package/node_modules/@napi-rs/wasm-runtime/dist/runtime.js +0 -12288
  66. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.cjs +0 -209
@@ -108,7 +108,6 @@ function createNapiModule(options) {
108
108
  filename: '',
109
109
  childThread: ENVIRONMENT_IS_PTHREAD,
110
110
  initWorker: undefined,
111
- executeAsyncWork: undefined,
112
111
  waitThreadStart: waitThreadStart,
113
112
  PThread: undefined,
114
113
  init: function (options) {
@@ -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 = instance.exports;
122
+ var exports$1 = instance.exports;
124
123
  var module = options.module;
125
- var memory = options.memory || exports.memory;
126
- var table = options.table || exports.__indirect_function_table;
124
+ var memory = options.memory || exports$1.memory;
125
+ var table = options.table || exports$1.__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.malloc !== 'function')
134
+ if (typeof exports$1.malloc !== 'function')
136
135
  throw new TypeError('malloc is not exported');
137
- if (typeof exports.free !== 'function')
136
+ if (typeof exports$1.free !== 'function')
138
137
  throw new TypeError('free is not exported');
139
- _malloc = exports.malloc;
140
- _free = exports.free;
138
+ _malloc = exports$1.malloc;
139
+ _free = exports$1.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,13 +147,18 @@ function createNapiModule(options) {
148
147
  var scope_1 = emnapiCtx.openScope(envObject);
149
148
  try {
150
149
  envObject.callIntoModule(function (_envObject) {
151
- var exports = napiModule.exports;
152
- var exportsHandle = scope_1.add(exports);
150
+ var exports$1 = napiModule.exports;
151
+ var exportsHandle = scope_1.add(exports$1);
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 : emnapiCtx.handleStore.get(napiValue).value;
154
+ napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value;
156
155
  });
157
156
  }
157
+ catch (e) {
158
+ if (e !== 'unwind') {
159
+ throw e;
160
+ }
161
+ }
158
162
  finally {
159
163
  emnapiCtx.closeScope(envObject, scope_1);
160
164
  }
@@ -291,6 +295,9 @@ function createNapiModule(options) {
291
295
  return envObject.clearLastError();
292
296
  }
293
297
  function _emnapi_get_node_version(major, minor, patch) {
298
+ major >>>= 0;
299
+ minor >>>= 0;
300
+ patch >>>= 0;
294
301
  var versions = (typeof process === 'object' && process !== null &&
295
302
  typeof process.versions === 'object' && process.versions !== null &&
296
303
  typeof process.versions.node === 'string')
@@ -334,6 +341,7 @@ function createNapiModule(options) {
334
341
  }
335
342
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
336
343
  var envObject = emnapiCtx.envStore.get(env);
344
+ callback >>>= 0;
337
345
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
338
346
  }
339
347
  function _emnapi_ctx_increase_waiting_request_counter() {
@@ -342,6 +350,18 @@ function createNapiModule(options) {
342
350
  function _emnapi_ctx_decrease_waiting_request_counter() {
343
351
  emnapiCtx.decreaseWaitingRequestCounter();
344
352
  }
353
+ function _emnapi_is_main_runtime_thread() {
354
+ return ENVIRONMENT_IS_PTHREAD ? 0 : 1;
355
+ }
356
+ function _emnapi_is_main_browser_thread() {
357
+ return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
358
+ }
359
+ function _emnapi_unwind() {
360
+ throw 'unwind';
361
+ }
362
+ function _emnapi_get_now() {
363
+ return performance.timeOrigin + performance.now();
364
+ }
345
365
  function $emnapiSetValueI64(result, numberValue) {
346
366
  var tempDouble;
347
367
  var tempI64 = [
@@ -352,18 +372,30 @@ function createNapiModule(options) {
352
372
  HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
353
373
  HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
354
374
  }
375
+ function _emnapi_open_handle_scope() {
376
+ return emnapiCtx.openScope().id;
377
+ }
378
+ function _emnapi_close_handle_scope(_scope) {
379
+ return emnapiCtx.closeScope();
380
+ }
355
381
  var utilMod = Object.freeze({
356
382
  __proto__: null,
357
383
  $emnapiSetValueI64: $emnapiSetValueI64,
358
384
  _emnapi_call_finalizer: _emnapi_call_finalizer,
359
385
  _emnapi_callback_into_module: _emnapi_callback_into_module,
386
+ _emnapi_close_handle_scope: _emnapi_close_handle_scope,
360
387
  _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter,
361
388
  _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter,
362
389
  _emnapi_get_node_version: _emnapi_get_node_version,
390
+ _emnapi_get_now: _emnapi_get_now,
391
+ _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
392
+ _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread,
363
393
  _emnapi_next_tick: _emnapi_next_tick,
394
+ _emnapi_open_handle_scope: _emnapi_open_handle_scope,
364
395
  _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop,
365
396
  _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push,
366
397
  _emnapi_set_immediate: _emnapi_set_immediate,
398
+ _emnapi_unwind: _emnapi_unwind,
367
399
  napi_clear_last_error: napi_clear_last_error,
368
400
  napi_set_last_error: napi_set_last_error
369
401
  });
@@ -374,9 +406,19 @@ function createNapiModule(options) {
374
406
  var worker = PThread.pthreads[tid];
375
407
  return worker;
376
408
  }
409
+ function _emnapi_worker_ref(pthreadPtr) {
410
+ if (ENVIRONMENT_IS_PTHREAD)
411
+ return;
412
+ pthreadPtr >>>= 0;
413
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
414
+ if (worker && typeof worker.ref === 'function') {
415
+ worker.ref();
416
+ }
417
+ }
377
418
  function _emnapi_worker_unref(pthreadPtr) {
378
419
  if (ENVIRONMENT_IS_PTHREAD)
379
420
  return;
421
+ pthreadPtr >>>= 0;
380
422
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
381
423
  if (worker && typeof worker.unref === 'function') {
382
424
  worker.unref();
@@ -414,9 +456,6 @@ function createNapiModule(options) {
414
456
  };
415
457
  });
416
458
  uvThreadpoolReady.ready = false;
417
- function _emnapi_is_main_browser_thread() {
418
- return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
419
- }
420
459
  function _emnapi_after_uvthreadpool_ready(callback, q, type) {
421
460
  if (uvThreadpoolReady.ready) {
422
461
  (wasmTable.get(callback))(q, type);
@@ -431,7 +470,7 @@ function createNapiModule(options) {
431
470
  var p = [];
432
471
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
433
472
  var _loop_1 = function (i) {
434
- var pthreadPtr = HEAP_DATA_VIEW.getInt32(threads + i * 4, true);
473
+ var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
435
474
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
436
475
  p.push(new Promise(function (resolve) {
437
476
  var handler = function (e) {
@@ -479,8 +518,8 @@ function createNapiModule(options) {
479
518
  _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready,
480
519
  _emnapi_async_send_js: _emnapi_async_send_js,
481
520
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
482
- _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
483
521
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
522
+ _emnapi_worker_ref: _emnapi_worker_ref,
484
523
  _emnapi_worker_unref: _emnapi_worker_unref
485
524
  });
486
525
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
@@ -489,22 +528,14 @@ function createNapiModule(options) {
489
528
  var envObject = emnapiCtx.envStore.get(env);
490
529
  if (!adjusted_value)
491
530
  return envObject.setLastError(1);
492
- var change_in_bytes_number = Number(change_in_bytes);
493
- if (change_in_bytes_number < 0) {
494
- return envObject.setLastError(1);
495
- }
496
- var old_size = wasmMemory.buffer.byteLength;
497
- var new_size = old_size + change_in_bytes_number;
498
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
499
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
500
- return envObject.setLastError(9);
501
- }
531
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
532
+ adjusted_value >>>= 0;
502
533
  if (emnapiCtx.feature.supportBigInt) {
503
534
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
504
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
535
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
505
536
  }
506
537
  else {
507
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
538
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
508
539
  }
509
540
  return envObject.clearLastError();
510
541
  }
@@ -662,6 +693,7 @@ function createNapiModule(options) {
662
693
  var asyncId = asyncContext.asyncId;
663
694
  var triggerAsyncId = asyncContext.triggerAsyncId;
664
695
  if (result) {
696
+ result >>>= 0;
665
697
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
666
698
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
667
699
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -682,11 +714,13 @@ function createNapiModule(options) {
682
714
  return;
683
715
  var resource = emnapiCtx.handleStore.get(async_resource).value;
684
716
  var callback = emnapiCtx.handleStore.get(cb).value;
717
+ argv >>>= 0;
718
+ size >>>= 0;
685
719
  size = size >>> 0;
686
720
  var arr = Array(size);
687
721
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
688
722
  for (; i < size; i++) {
689
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
723
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
690
724
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
691
725
  }
692
726
  var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
@@ -694,9 +728,10 @@ function createNapiModule(options) {
694
728
  triggerAsyncId: trigger_async_id
695
729
  });
696
730
  if (result) {
731
+ result >>>= 0;
697
732
  var envObject = emnapiCtx.envStore.get(env);
698
733
  v = envObject.ensureHandleId(ret);
699
- HEAP_DATA_VIEW.setInt32(result, v, true);
734
+ HEAP_DATA_VIEW.setUint32(result, v, true);
700
735
  }
701
736
  }
702
737
  function _emnapi_async_init_js(async_resource, async_resource_name, result) {
@@ -720,6 +755,7 @@ function createNapiModule(options) {
720
755
  }
721
756
  var low = Number(numberValue & BigInt(0xffffffff));
722
757
  var high = Number(numberValue >> BigInt(32));
758
+ result >>>= 0;
723
759
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
724
760
  HEAP_DATA_VIEW.setInt32(result, low, true);
725
761
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -729,6 +765,7 @@ function createNapiModule(options) {
729
765
  if (!emnapiNodeBinding) {
730
766
  return 9;
731
767
  }
768
+ async_context >>>= 0;
732
769
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
733
770
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
734
771
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -771,14 +808,17 @@ function createNapiModule(options) {
771
808
  if (typeof v8func !== 'function') {
772
809
  return envObject.setLastError(1);
773
810
  }
811
+ async_context >>>= 0;
774
812
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
775
813
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
776
814
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
777
815
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
816
+ argv >>>= 0;
817
+ argc >>>= 0;
778
818
  argc = argc >>> 0;
779
819
  var arr = Array(argc);
780
820
  for (; i < argc; i++) {
781
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
821
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
782
822
  arr[i] = emnapiCtx.handleStore.get(argVal).value;
783
823
  }
784
824
  var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
@@ -788,8 +828,9 @@ function createNapiModule(options) {
788
828
  if (ret.status !== 0)
789
829
  return envObject.setLastError(ret.status);
790
830
  if (result) {
831
+ result >>>= 0;
791
832
  v = envObject.ensureHandleId(ret.value);
792
- HEAP_DATA_VIEW.setInt32(result, v, true);
833
+ HEAP_DATA_VIEW.setUint32(result, v, true);
793
834
  }
794
835
  return envObject.getReturnStatus();
795
836
  }
@@ -815,29 +856,58 @@ function createNapiModule(options) {
815
856
  napi_open_callback_scope: napi_open_callback_scope
816
857
  });
817
858
  var emnapiTSFN = {
859
+ _liveSet: {},
818
860
  offset: {
861
+ __size__: 0,
819
862
  resource: 0,
820
- async_id: 8,
821
- trigger_async_id: 16,
822
- queue_size: 24,
823
- queue: 1 * 4 + 24,
824
- thread_count: 2 * 4 + 24,
825
- is_closing: 3 * 4 + 24,
826
- dispatch_state: 3 * 4 + 28,
827
- context: 3 * 4 + 32,
828
- max_queue_size: 4 * 4 + 32,
829
- ref: 5 * 4 + 32,
830
- env: 6 * 4 + 32,
831
- finalize_data: 7 * 4 + 32,
832
- finalize_cb: 8 * 4 + 32,
833
- call_js_cb: 9 * 4 + 32,
834
- handles_closing: 10 * 4 + 32,
835
- async_ref: 10 * 4 + 36,
836
- mutex: 10 * 4 + 40,
837
- cond: 10 * 4 + 44,
838
- end: 10 * 4 + 48
863
+ async_id: 0,
864
+ trigger_async_id: 0,
865
+ queue_size: 0,
866
+ is_some: 0,
867
+ queue: 0,
868
+ async_pending: 0,
869
+ async_u_fd: 0,
870
+ thread_count: 0,
871
+ state: 0,
872
+ dispatch_state: 0,
873
+ context: 0,
874
+ max_queue_size: 0,
875
+ ref: 0,
876
+ env: 0,
877
+ finalize_data: 0,
878
+ finalize_cb: 0,
879
+ call_js_cb: 0,
880
+ handles_closing: 0,
881
+ async_ref: 0,
882
+ mutex: 0,
883
+ cond: 0
839
884
  },
840
885
  init: function () {
886
+ emnapiTSFN._liveSet = new Set();
887
+ emnapiTSFN.offset.__size__ = 184;
888
+ emnapiTSFN.offset.resource = 0;
889
+ emnapiTSFN.offset.async_id = 8;
890
+ emnapiTSFN.offset.trigger_async_id = 16;
891
+ emnapiTSFN.offset.queue_size = 60;
892
+ emnapiTSFN.offset.is_some = 24;
893
+ emnapiTSFN.offset.queue = 64;
894
+ emnapiTSFN.offset.async_pending = 132;
895
+ emnapiTSFN.offset.async_u_fd = 96;
896
+ emnapiTSFN.offset.thread_count = 136;
897
+ emnapiTSFN.offset.state = 140;
898
+ emnapiTSFN.offset.dispatch_state = 144;
899
+ emnapiTSFN.offset.context = 148;
900
+ emnapiTSFN.offset.max_queue_size = 152;
901
+ emnapiTSFN.offset.ref = 156;
902
+ emnapiTSFN.offset.env = 160;
903
+ emnapiTSFN.offset.finalize_data = 164;
904
+ emnapiTSFN.offset.finalize_cb = 168;
905
+ emnapiTSFN.offset.call_js_cb = 172;
906
+ emnapiTSFN.offset.handles_closing = 176;
907
+ emnapiTSFN.offset.async_ref = 180;
908
+ emnapiTSFN.offset.mutex = 32;
909
+ emnapiTSFN.offset.cond = 56;
910
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
841
911
  if (typeof PThread !== 'undefined') {
842
912
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
843
913
  PThread.runningWorkers.forEach(emnapiTSFN.addListener);
@@ -861,7 +931,10 @@ function createNapiModule(options) {
861
931
  var type = __emnapi__.type;
862
932
  var payload = __emnapi__.payload;
863
933
  if (type === 'tsfn-send') {
864
- emnapiTSFN.dispatch(payload.tsfn);
934
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
935
+ if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
936
+ emnapiTSFN.enqueue(payload.tsfn);
937
+ }
865
938
  }
866
939
  }
867
940
  };
@@ -888,6 +961,7 @@ function createNapiModule(options) {
888
961
  var queue = _malloc(size);
889
962
  if (!queue)
890
963
  return false;
964
+ queue >>>= 0;
891
965
  new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
892
966
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
893
967
  return true;
@@ -895,6 +969,12 @@ function createNapiModule(options) {
895
969
  destroyQueue: function (func) {
896
970
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
897
971
  if (queue) {
972
+ var node = emnapiTSFN.loadSizeTypeValue(queue, false);
973
+ while (node !== 0) {
974
+ var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
975
+ _free(node);
976
+ node = next;
977
+ }
898
978
  _free(queue);
899
979
  }
900
980
  },
@@ -906,6 +986,7 @@ function createNapiModule(options) {
906
986
  var node = _malloc(size);
907
987
  if (!node)
908
988
  throw new Error('OOM');
989
+ node >>>= 0;
909
990
  emnapiTSFN.storeSizeTypeValue(node, data, false);
910
991
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
911
992
  if (head === 0 && tail === 0) {
@@ -941,11 +1022,11 @@ function createNapiModule(options) {
941
1022
  var waitCondition = function () {
942
1023
  var queueSize = emnapiTSFN.getQueueSize(func);
943
1024
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
944
- var isClosing = emnapiTSFN.getIsClosing(func);
945
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
1025
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
946
1026
  };
947
1027
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
948
- return mutex.execute(function () {
1028
+ var shouldDelete = false;
1029
+ var ret = mutex.execute(function () {
949
1030
  while (waitCondition()) {
950
1031
  if (mode === 0) {
951
1032
  return 15;
@@ -955,21 +1036,25 @@ function createNapiModule(options) {
955
1036
  }
956
1037
  cond.wait();
957
1038
  }
958
- if (emnapiTSFN.getIsClosing(func)) {
959
- if (emnapiTSFN.getThreadCount(func) === 0) {
960
- return 1;
961
- }
962
- else {
963
- emnapiTSFN.subThreadCount(func);
964
- return 16;
965
- }
966
- }
967
- else {
1039
+ if (emnapiTSFN.getState(func) === 0) {
968
1040
  emnapiTSFN.pushQueue(func, data);
969
1041
  emnapiTSFN.send(func);
970
1042
  return 0;
971
1043
  }
1044
+ if (emnapiTSFN.getThreadCount(func) === 0) {
1045
+ return 1;
1046
+ }
1047
+ emnapiTSFN.subThreadCount(func);
1048
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1049
+ return 16;
1050
+ }
1051
+ shouldDelete = true;
1052
+ return 16;
972
1053
  });
1054
+ if (shouldDelete) {
1055
+ emnapiTSFN.destroy(func);
1056
+ }
1057
+ return ret;
973
1058
  },
974
1059
  getMutex: function (func) {
975
1060
  var index = func + emnapiTSFN.offset.mutex;
@@ -979,7 +1064,7 @@ function createNapiModule(options) {
979
1064
  var i32a = new Int32Array(wasmMemory.buffer, index, 1);
980
1065
  if (isBrowserMain) {
981
1066
  while (true) {
982
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1067
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
983
1068
  if (oldValue === 0) {
984
1069
  return;
985
1070
  }
@@ -987,18 +1072,18 @@ function createNapiModule(options) {
987
1072
  }
988
1073
  else {
989
1074
  while (true) {
990
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1075
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
991
1076
  if (oldValue === 0) {
992
1077
  return;
993
1078
  }
994
- Atomics.wait(i32a, 0, 1);
1079
+ Atomics.wait(i32a, 0, 10);
995
1080
  }
996
1081
  }
997
1082
  },
998
1083
  unlock: function () {
999
1084
  var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1000
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
1001
- if (oldValue !== 1) {
1085
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1086
+ if (oldValue !== 10) {
1002
1087
  throw new Error('Tried to unlock while not holding the mutex');
1003
1088
  }
1004
1089
  Atomics.notify(i32a, 0, 1);
@@ -1041,14 +1126,14 @@ function createNapiModule(options) {
1041
1126
  var offset = emnapiTSFN.offset.queue_size;
1042
1127
  var arr, index;
1043
1128
  arr = new Uint32Array(wasmMemory.buffer);
1044
- index = (func + offset) >> 2;
1129
+ index = (func + offset) >>> 2;
1045
1130
  Atomics.add(arr, index, 1);
1046
1131
  },
1047
1132
  subQueueSize: function (func) {
1048
1133
  var offset = emnapiTSFN.offset.queue_size;
1049
1134
  var arr, index;
1050
1135
  arr = new Uint32Array(wasmMemory.buffer);
1051
- index = (func + offset) >> 2;
1136
+ index = (func + offset) >>> 2;
1052
1137
  Atomics.sub(arr, index, 1);
1053
1138
  },
1054
1139
  getThreadCount: function (func) {
@@ -1058,30 +1143,30 @@ function createNapiModule(options) {
1058
1143
  var offset = emnapiTSFN.offset.thread_count;
1059
1144
  var arr, index;
1060
1145
  arr = new Uint32Array(wasmMemory.buffer);
1061
- index = (func + offset) >> 2;
1146
+ index = (func + offset) >>> 2;
1062
1147
  Atomics.add(arr, index, 1);
1063
1148
  },
1064
1149
  subThreadCount: function (func) {
1065
1150
  var offset = emnapiTSFN.offset.thread_count;
1066
1151
  var arr, index;
1067
1152
  arr = new Uint32Array(wasmMemory.buffer);
1068
- index = (func + offset) >> 2;
1153
+ index = (func + offset) >>> 2;
1069
1154
  Atomics.sub(arr, index, 1);
1070
1155
  },
1071
- getIsClosing: function (func) {
1072
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
1156
+ getState: function (func) {
1157
+ return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2);
1073
1158
  },
1074
- setIsClosing: function (func, value) {
1075
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
1159
+ setState: function (func, value) {
1160
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value);
1076
1161
  },
1077
1162
  getHandlesClosing: function (func) {
1078
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
1163
+ return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing));
1079
1164
  },
1080
1165
  setHandlesClosing: function (func, value) {
1081
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
1166
+ Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value);
1082
1167
  },
1083
1168
  getDispatchState: function (func) {
1084
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
1169
+ return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
1085
1170
  },
1086
1171
  getContext: function (func) {
1087
1172
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -1112,12 +1197,12 @@ function createNapiModule(options) {
1112
1197
  var arr;
1113
1198
  if (unsigned) {
1114
1199
  arr = new Uint32Array(wasmMemory.buffer);
1115
- ret = Atomics.load(arr, offset >> 2);
1200
+ ret = Atomics.load(arr, offset >>> 2);
1116
1201
  return ret;
1117
1202
  }
1118
1203
  else {
1119
1204
  arr = new Int32Array(wasmMemory.buffer);
1120
- ret = Atomics.load(arr, offset >> 2);
1205
+ ret = Atomics.load(arr, offset >>> 2);
1121
1206
  return ret;
1122
1207
  }
1123
1208
  },
@@ -1125,52 +1210,80 @@ function createNapiModule(options) {
1125
1210
  var arr;
1126
1211
  if (unsigned) {
1127
1212
  arr = new Uint32Array(wasmMemory.buffer);
1128
- Atomics.store(arr, offset >> 2, value);
1213
+ Atomics.store(arr, offset >>> 2, value);
1129
1214
  return undefined;
1130
1215
  }
1131
1216
  else {
1132
1217
  arr = new Int32Array(wasmMemory.buffer);
1133
- Atomics.store(arr, offset >> 2, value >>> 0);
1218
+ Atomics.store(arr, offset >>> 2, value >>> 0);
1134
1219
  return undefined;
1135
1220
  }
1136
1221
  },
1222
+ releaseResources: function (func) {
1223
+ if (emnapiTSFN.getState(func) !== 2) {
1224
+ emnapiTSFN.setState(func, 2);
1225
+ var env = emnapiTSFN.getEnv(func);
1226
+ var envObject = emnapiCtx.envStore.get(env);
1227
+ var ref = emnapiTSFN.getRef(func);
1228
+ if (ref) {
1229
+ emnapiCtx.refStore.get(ref).dispose();
1230
+ }
1231
+ var resource = emnapiTSFN.getResource(func);
1232
+ emnapiCtx.refStore.get(resource).dispose();
1233
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1234
+ HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
1235
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1236
+ envObject.unref();
1237
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1238
+ var arr = new Uint32Array(wasmMemory.buffer);
1239
+ if (Atomics.load(arr, asyncRefOffset) > 0) {
1240
+ Atomics.store(arr, asyncRefOffset, 0);
1241
+ emnapiCtx.decreaseWaitingRequestCounter();
1242
+ }
1243
+ if (emnapiNodeBinding) {
1244
+ var view = new DataView(wasmMemory.buffer);
1245
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1246
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1247
+ _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1248
+ }
1249
+ }
1250
+ },
1137
1251
  destroy: function (func) {
1252
+ emnapiTSFN._liveSet.delete(func);
1138
1253
  emnapiTSFN.destroyQueue(func);
1139
- var env = emnapiTSFN.getEnv(func);
1140
- var envObject = emnapiCtx.envStore.get(env);
1141
- var ref = emnapiTSFN.getRef(func);
1142
- if (ref) {
1143
- emnapiCtx.refStore.get(ref).dispose();
1144
- }
1145
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1146
- envObject.unref();
1147
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1148
- var arr = new Int32Array(wasmMemory.buffer);
1149
- if (Atomics.load(arr, asyncRefOffset)) {
1150
- Atomics.store(arr, asyncRefOffset, 0);
1151
- emnapiCtx.decreaseWaitingRequestCounter();
1152
- }
1153
- var resource = emnapiTSFN.getResource(func);
1154
- emnapiCtx.refStore.get(resource).dispose();
1155
- if (emnapiNodeBinding) {
1156
- var view = new DataView(wasmMemory.buffer);
1157
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1158
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1159
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1160
- }
1254
+ emnapiTSFN.releaseResources(func);
1161
1255
  _free(func);
1162
1256
  },
1163
- emptyQueueAndDelete: function (func) {
1257
+ emptyQueue: function (func) {
1258
+ var drainQueue = [];
1259
+ emnapiTSFN.getMutex(func).execute(function () {
1260
+ while (emnapiTSFN.getQueueSize(func) > 0) {
1261
+ drainQueue.push(emnapiTSFN.shiftQueue(func));
1262
+ }
1263
+ });
1164
1264
  var callJsCb = emnapiTSFN.getCallJSCb(func);
1165
1265
  var context = emnapiTSFN.getContext(func);
1166
1266
  var data;
1167
- while (emnapiTSFN.getQueueSize(func) > 0) {
1168
- data = emnapiTSFN.shiftQueue(func);
1267
+ for (var i = 0; i < drainQueue.length; i++) {
1268
+ data = drainQueue[i];
1169
1269
  if (callJsCb) {
1170
1270
  (wasmTable.get(callJsCb))(0, 0, context, data);
1171
1271
  }
1172
1272
  }
1173
- emnapiTSFN.destroy(func);
1273
+ },
1274
+ maybeDelete: function (func) {
1275
+ var shouldDelete = false;
1276
+ emnapiTSFN.getMutex(func).execute(function () {
1277
+ if (emnapiTSFN.getThreadCount(func) > 0) {
1278
+ emnapiTSFN.releaseResources(func);
1279
+ }
1280
+ else {
1281
+ shouldDelete = true;
1282
+ }
1283
+ });
1284
+ if (shouldDelete) {
1285
+ emnapiTSFN.destroy(func);
1286
+ }
1174
1287
  },
1175
1288
  finalize: function (func) {
1176
1289
  var env = emnapiTSFN.getEnv(func);
@@ -1183,6 +1296,7 @@ function createNapiModule(options) {
1183
1296
  envObject.callFinalizerInternal(0, finalize, data, context);
1184
1297
  };
1185
1298
  try {
1299
+ emnapiTSFN.emptyQueue(func);
1186
1300
  if (finalize) {
1187
1301
  if (emnapiNodeBinding) {
1188
1302
  var resource = emnapiTSFN.getResource(func);
@@ -1200,7 +1314,7 @@ function createNapiModule(options) {
1200
1314
  f();
1201
1315
  }
1202
1316
  }
1203
- emnapiTSFN.emptyQueueAndDelete(func);
1317
+ emnapiTSFN.maybeDelete(func);
1204
1318
  }
1205
1319
  finally {
1206
1320
  emnapiCtx.closeScope(envObject);
@@ -1216,7 +1330,7 @@ function createNapiModule(options) {
1216
1330
  try {
1217
1331
  if (set_closing) {
1218
1332
  emnapiTSFN.getMutex(func).execute(function () {
1219
- emnapiTSFN.setIsClosing(func, 1);
1333
+ emnapiTSFN.setState(func, 1);
1220
1334
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1221
1335
  emnapiTSFN.getCond(func).signal();
1222
1336
  }
@@ -1226,6 +1340,7 @@ function createNapiModule(options) {
1226
1340
  return;
1227
1341
  }
1228
1342
  emnapiTSFN.setHandlesClosing(func, 1);
1343
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1229
1344
  emnapiCtx.feature.setImmediate(function () {
1230
1345
  emnapiTSFN.finalize(func);
1231
1346
  });
@@ -1241,10 +1356,7 @@ function createNapiModule(options) {
1241
1356
  var mutex = emnapiTSFN.getMutex(func);
1242
1357
  var cond = emnapiTSFN.getCond(func);
1243
1358
  mutex.execute(function () {
1244
- if (emnapiTSFN.getIsClosing(func)) {
1245
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1246
- }
1247
- else {
1359
+ if (emnapiTSFN.getState(func) === 0) {
1248
1360
  var size = emnapiTSFN.getQueueSize(func);
1249
1361
  if (size > 0) {
1250
1362
  data = emnapiTSFN.shiftQueue(func);
@@ -1257,7 +1369,7 @@ function createNapiModule(options) {
1257
1369
  }
1258
1370
  if (size === 0) {
1259
1371
  if (emnapiTSFN.getThreadCount(func) === 0) {
1260
- emnapiTSFN.setIsClosing(func, 1);
1372
+ emnapiTSFN.setState(func, 1);
1261
1373
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1262
1374
  cond.signal();
1263
1375
  }
@@ -1268,6 +1380,9 @@ function createNapiModule(options) {
1268
1380
  has_more = true;
1269
1381
  }
1270
1382
  }
1383
+ else {
1384
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1385
+ }
1271
1386
  });
1272
1387
  if (popped_value) {
1273
1388
  var env = emnapiTSFN.getEnv(func);
@@ -1315,7 +1430,7 @@ function createNapiModule(options) {
1315
1430
  var has_more = true;
1316
1431
  var iterations_left = 1000;
1317
1432
  var ui32a = new Uint32Array(wasmMemory.buffer);
1318
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
1433
+ var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2;
1319
1434
  while (has_more && --iterations_left !== 0) {
1320
1435
  Atomics.store(ui32a, index, 1);
1321
1436
  has_more = emnapiTSFN.dispatchOne(func);
@@ -1327,25 +1442,65 @@ function createNapiModule(options) {
1327
1442
  emnapiTSFN.send(func);
1328
1443
  }
1329
1444
  },
1330
- send: function (func) {
1331
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
1332
- if ((current_state & 1) === 1) {
1445
+ enqueue: function (func) {
1446
+ var pending = func + emnapiTSFN.offset.async_pending;
1447
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
1448
+ var i32a = new Int32Array(wasmMemory.buffer);
1449
+ if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
1333
1450
  return;
1334
1451
  }
1335
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1336
- postMessage({
1337
- __emnapi__: {
1338
- type: 'tsfn-send',
1339
- payload: {
1340
- tsfn: func
1452
+ emnapiCtx.feature.setImmediate(function () {
1453
+ if (!emnapiTSFN._liveSet.has(func)) {
1454
+ return;
1455
+ }
1456
+ if (Atomics.load(i32a, pending >>> 2) === 0) {
1457
+ Atomics.store(i32a, scheduled >>> 2, 0);
1458
+ return;
1459
+ }
1460
+ emnapiCtx.feature.setImmediate(function () {
1461
+ try {
1462
+ if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
1463
+ return;
1464
+ }
1465
+ if (!emnapiTSFN._liveSet.has(func)) {
1466
+ return;
1467
+ }
1468
+ emnapiTSFN.dispatch(func);
1469
+ }
1470
+ finally {
1471
+ if (emnapiTSFN._liveSet.has(func)) {
1472
+ Atomics.store(i32a, scheduled >>> 2, 0);
1473
+ if (Atomics.load(i32a, pending >>> 2) !== 0) {
1474
+ emnapiTSFN.enqueue(func);
1475
+ }
1341
1476
  }
1342
1477
  }
1343
1478
  });
1479
+ });
1480
+ },
1481
+ send: function (func) {
1482
+ var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1);
1483
+ if ((current_state & 1) === 1) {
1484
+ return;
1344
1485
  }
1345
- else {
1346
- emnapiCtx.feature.setImmediate(function () {
1347
- emnapiTSFN.dispatch(func);
1348
- });
1486
+ var pendng = func + emnapiTSFN.offset.async_pending;
1487
+ if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
1488
+ return;
1489
+ }
1490
+ if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) {
1491
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1492
+ postMessage({
1493
+ __emnapi__: {
1494
+ type: 'tsfn-send',
1495
+ payload: {
1496
+ tsfn: func
1497
+ }
1498
+ }
1499
+ });
1500
+ }
1501
+ else {
1502
+ emnapiTSFN.enqueue(func);
1503
+ }
1349
1504
  }
1350
1505
  }
1351
1506
  };
@@ -1356,6 +1511,13 @@ function createNapiModule(options) {
1356
1511
  envObject.checkGCAccess();
1357
1512
  if (!async_resource_name)
1358
1513
  return envObject.setLastError(1);
1514
+ max_queue_size >>>= 0;
1515
+ initial_thread_count >>>= 0;
1516
+ env >>>= 0;
1517
+ thread_finalize_data >>>= 0;
1518
+ thread_finalize_cb >>>= 0;
1519
+ context >>>= 0;
1520
+ call_js_cb >>>= 0;
1359
1521
  max_queue_size = max_queue_size >>> 0;
1360
1522
  initial_thread_count = initial_thread_count >>> 0;
1361
1523
  if (initial_thread_count === 0) {
@@ -1364,6 +1526,7 @@ function createNapiModule(options) {
1364
1526
  if (!result)
1365
1527
  return envObject.setLastError(1);
1366
1528
  var ref = 0;
1529
+ func >>>= 0;
1367
1530
  if (!func) {
1368
1531
  if (!call_js_cb)
1369
1532
  return envObject.setLastError(1);
@@ -1393,34 +1556,38 @@ function createNapiModule(options) {
1393
1556
  }
1394
1557
  asyncResourceName = String(asyncResourceName);
1395
1558
  var resource_name = envObject.ensureHandleId(asyncResourceName);
1396
- var sizeofTSFN = emnapiTSFN.offset.end;
1559
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
1397
1560
  var tsfn = _malloc(sizeofTSFN);
1398
1561
  if (!tsfn)
1399
1562
  return envObject.setLastError(9);
1563
+ tsfn >>>= 0;
1400
1564
  new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1401
1565
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
1402
1566
  var resource_ = resourceRef.id;
1403
1567
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1404
- HEAP_DATA_VIEW.setInt32(tsfn, resource_, true);
1568
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
1405
1569
  if (!emnapiTSFN.initQueue(tsfn)) {
1406
1570
  _free(tsfn);
1407
1571
  resourceRef.dispose();
1408
1572
  return envObject.setLastError(9);
1409
1573
  }
1410
1574
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
1575
+ HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
1411
1576
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1412
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.context, context, true);
1577
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1413
1578
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
1414
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.ref, ref, true);
1415
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.env, env, true);
1416
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
1417
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1418
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1579
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
1580
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
1581
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
1582
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1583
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1419
1584
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
1585
+ emnapiTSFN._liveSet.add(tsfn);
1420
1586
  envObject.ref();
1421
1587
  emnapiCtx.increaseWaitingRequestCounter();
1422
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1423
- HEAP_DATA_VIEW.setInt32(result, tsfn, true);
1588
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1589
+ result >>>= 0;
1590
+ HEAP_DATA_VIEW.setUint32(result, tsfn, true);
1424
1591
  return envObject.clearLastError();
1425
1592
  }
1426
1593
  function napi_get_threadsafe_function_context(func, result) {
@@ -1428,9 +1595,11 @@ function createNapiModule(options) {
1428
1595
  abort();
1429
1596
  return 1;
1430
1597
  }
1598
+ func >>>= 0;
1599
+ result >>>= 0;
1431
1600
  var context = emnapiTSFN.getContext(func);
1432
1601
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1433
- HEAP_DATA_VIEW.setInt32(result, context, true);
1602
+ HEAP_DATA_VIEW.setUint32(result, context, true);
1434
1603
  return 0;
1435
1604
  }
1436
1605
  function napi_call_threadsafe_function(func, data, mode) {
@@ -1438,6 +1607,8 @@ function createNapiModule(options) {
1438
1607
  abort();
1439
1608
  return 1;
1440
1609
  }
1610
+ func >>>= 0;
1611
+ data >>>= 0;
1441
1612
  return emnapiTSFN.push(func, data, mode);
1442
1613
  }
1443
1614
  function napi_acquire_threadsafe_function(func) {
@@ -1445,13 +1616,14 @@ function createNapiModule(options) {
1445
1616
  abort();
1446
1617
  return 1;
1447
1618
  }
1619
+ func >>>= 0;
1448
1620
  var mutex = emnapiTSFN.getMutex(func);
1449
1621
  return mutex.execute(function () {
1450
- if (emnapiTSFN.getIsClosing(func)) {
1451
- return 16;
1622
+ if (emnapiTSFN.getState(func) === 0) {
1623
+ emnapiTSFN.addThreadCount(func);
1624
+ return 0;
1452
1625
  }
1453
- emnapiTSFN.addThreadCount(func);
1454
- return 0;
1626
+ return 16;
1455
1627
  });
1456
1628
  }
1457
1629
  function napi_release_threadsafe_function(func, mode) {
@@ -1459,37 +1631,51 @@ function createNapiModule(options) {
1459
1631
  abort();
1460
1632
  return 1;
1461
1633
  }
1634
+ func >>>= 0;
1462
1635
  var mutex = emnapiTSFN.getMutex(func);
1463
1636
  var cond = emnapiTSFN.getCond(func);
1464
- return mutex.execute(function () {
1637
+ var shouldDelete = false;
1638
+ var ret = mutex.execute(function () {
1465
1639
  if (emnapiTSFN.getThreadCount(func) === 0) {
1466
1640
  return 1;
1467
1641
  }
1468
1642
  emnapiTSFN.subThreadCount(func);
1469
1643
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
1470
- var isClosing = emnapiTSFN.getIsClosing(func);
1471
- if (!isClosing) {
1472
- var isClosingValue = (mode === 1) ? 1 : 0;
1473
- emnapiTSFN.setIsClosing(func, isClosingValue);
1474
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
1644
+ if (emnapiTSFN.getState(func) === 0) {
1645
+ if (mode === 1) {
1646
+ emnapiTSFN.setState(func, 1);
1647
+ }
1648
+ if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
1475
1649
  cond.signal();
1476
1650
  }
1477
1651
  emnapiTSFN.send(func);
1478
1652
  }
1479
1653
  }
1654
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1655
+ return 0;
1656
+ }
1657
+ shouldDelete = true;
1480
1658
  return 0;
1481
1659
  });
1660
+ if (shouldDelete) {
1661
+ emnapiTSFN.destroy(func);
1662
+ }
1663
+ return ret;
1482
1664
  }
1483
1665
  function napi_unref_threadsafe_function(env, func) {
1484
1666
  if (!func) {
1485
1667
  abort();
1486
1668
  return 1;
1487
1669
  }
1488
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1489
- var arr = new Int32Array(wasmMemory.buffer);
1490
- if (Atomics.load(arr, asyncRefOffset)) {
1491
- Atomics.store(arr, asyncRefOffset, 0);
1492
- emnapiCtx.decreaseWaitingRequestCounter();
1670
+ func >>>= 0;
1671
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1672
+ var arr = new Uint32Array(wasmMemory.buffer);
1673
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1674
+ if (currentValue > 0) {
1675
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
1676
+ if (currentValue === 1) {
1677
+ emnapiCtx.decreaseWaitingRequestCounter();
1678
+ }
1493
1679
  }
1494
1680
  return 0;
1495
1681
  }
@@ -1498,34 +1684,57 @@ function createNapiModule(options) {
1498
1684
  abort();
1499
1685
  return 1;
1500
1686
  }
1501
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1502
- var arr = new Int32Array(wasmMemory.buffer);
1503
- if (!Atomics.load(arr, asyncRefOffset)) {
1504
- Atomics.store(arr, asyncRefOffset, 1);
1687
+ func >>>= 0;
1688
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1689
+ var arr = new Uint32Array(wasmMemory.buffer);
1690
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1691
+ if (!currentValue) {
1505
1692
  emnapiCtx.increaseWaitingRequestCounter();
1506
1693
  }
1694
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
1507
1695
  return 0;
1508
1696
  }
1509
1697
  var emnapiAWMT = {
1510
- unusedWorkers: [],
1511
- runningWorkers: [],
1512
- workQueue: [],
1698
+ pool: [],
1513
1699
  workerReady: null,
1700
+ globalAddress: 0,
1701
+ globalOffset: {
1702
+ idle_threads: 0,
1703
+ q: 1 * 4,
1704
+ next: 1 * 4,
1705
+ prev: 2 * 4,
1706
+ mutex: 3 * 4,
1707
+ cond: 4 * 4,
1708
+ exit_message: 5 * 4,
1709
+ end: 7 * 4
1710
+ },
1514
1711
  offset: {
1515
1712
  resource: 0,
1516
1713
  async_id: 8,
1517
1714
  trigger_async_id: 16,
1518
1715
  env: 24,
1519
- data: 1 * 4 + 24,
1520
- execute: 2 * 4 + 24,
1521
- complete: 3 * 4 + 24,
1522
- end: 4 * 4 + 24
1716
+ status: 1 * 4 + 24,
1717
+ queue: 2 * 4 + 24,
1718
+ queue_next: 2 * 4 + 24,
1719
+ queue_prev: 3 * 4 + 24,
1720
+ data: 4 * 4 + 24,
1721
+ execute: 5 * 4 + 24,
1722
+ complete: 6 * 4 + 24,
1723
+ end: 7 * 4 + 24
1523
1724
  },
1524
1725
  init: function () {
1525
- emnapiAWMT.unusedWorkers = [];
1526
- emnapiAWMT.runningWorkers = [];
1527
- emnapiAWMT.workQueue = [];
1726
+ emnapiAWMT.pool = [];
1528
1727
  emnapiAWMT.workerReady = null;
1728
+ if (typeof PThread !== 'undefined') {
1729
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
1730
+ PThread.runningWorkers.forEach(emnapiAWMT.addListener);
1731
+ var __original_getNewWorker_1 = PThread.getNewWorker;
1732
+ PThread.getNewWorker = function () {
1733
+ var r = __original_getNewWorker_1.apply(this, arguments);
1734
+ emnapiAWMT.addListener(r);
1735
+ return r;
1736
+ };
1737
+ }
1529
1738
  },
1530
1739
  addListener: function (worker) {
1531
1740
  if (!worker)
@@ -1539,18 +1748,8 @@ function createNapiModule(options) {
1539
1748
  var type = __emnapi__.type;
1540
1749
  var payload = __emnapi__.payload;
1541
1750
  if (type === 'async-work-complete') {
1542
- emnapiCtx.decreaseWaitingRequestCounter();
1543
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
1544
- emnapiAWMT.unusedWorkers.push(worker);
1545
- emnapiAWMT.checkIdleWorker();
1546
1751
  emnapiAWMT.callComplete(payload.work, 0);
1547
1752
  }
1548
- else if (type === 'async-work-queue') {
1549
- emnapiAWMT.scheduleWork(payload.work);
1550
- }
1551
- else if (type === 'async-work-cancel') {
1552
- emnapiAWMT.cancelWork(payload.work);
1553
- }
1554
1753
  }
1555
1754
  };
1556
1755
  var dispose = function () {
@@ -1571,142 +1770,221 @@ function createNapiModule(options) {
1571
1770
  }
1572
1771
  return true;
1573
1772
  },
1773
+ initGlobal: function () {
1774
+ if (!emnapiAWMT.globalAddress) {
1775
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
1776
+ emnapiAWMT.globalAddress >>>= 0;
1777
+ var size = emnapiAWMT.globalOffset.end;
1778
+ var addr = emnapiAWMT.globalAddress;
1779
+ new Uint8Array(wasmMemory.buffer, addr, size).fill(0);
1780
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
1781
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
1782
+ }
1783
+ },
1784
+ terminateWorkers: function () {
1785
+ emnapiAWMT.pool.forEach(function (w) {
1786
+ var _a, _b;
1787
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
1788
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
1789
+ w.terminate();
1790
+ });
1791
+ emnapiAWMT.pool.length = 0;
1792
+ },
1574
1793
  initWorkers: function (n) {
1575
1794
  if (ENVIRONMENT_IS_PTHREAD) {
1576
1795
  return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
1577
1796
  }
1578
1797
  if (emnapiAWMT.workerReady)
1579
1798
  return emnapiAWMT.workerReady;
1580
- if (typeof onCreateWorker !== 'function') {
1581
- throw new TypeError('`options.onCreateWorker` is not a function');
1582
- }
1583
- var promises = [];
1584
- var args = [];
1585
1799
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
1586
1800
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
1587
1801
  }
1802
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
1803
+ var args = [];
1804
+ emnapiAWMT.initGlobal();
1588
1805
  for (var i = 0; i < n; ++i) {
1589
- args.push(wasmInstance.exports.emnapi_async_worker_create());
1806
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
1590
1807
  }
1591
- try {
1592
- var _loop_1 = function (i) {
1593
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
1594
- var p = PThread.loadWasmModuleToWorker(worker);
1595
- emnapiAWMT.addListener(worker);
1596
- promises.push(p.then(function () {
1597
- if (typeof worker.unref === 'function') {
1598
- worker.unref();
1599
- }
1600
- }));
1601
- emnapiAWMT.unusedWorkers.push(worker);
1602
- var arg = args[i];
1603
- worker.threadBlockBase = arg;
1604
- worker.postMessage({
1605
- __emnapi__: {
1606
- type: 'async-worker-init',
1607
- payload: { arg: arg }
1608
- }
1609
- });
1610
- };
1611
- for (var i = 0; i < n; ++i) {
1612
- _loop_1(i);
1808
+ var promises = args.map(function (index) {
1809
+ if (index === 0) {
1810
+ return Promise.reject(new Error('Failed to create async worker'));
1613
1811
  }
1614
- }
1615
- catch (err) {
1616
- for (var i = 0; i < n; ++i) {
1617
- var arg = args[i];
1618
- _free(arg);
1812
+ var worker;
1813
+ if (index < 0) {
1814
+ worker = emnapiAWMT.pool[-index - 1];
1815
+ if (worker)
1816
+ return worker.whenLoaded;
1619
1817
  }
1620
- throw err;
1621
- }
1818
+ index >>>= 0;
1819
+ var view = new DataView(wasmMemory.buffer);
1820
+ var tidOffset = 20;
1821
+ var tid = view.getInt32(index + tidOffset, true);
1822
+ worker = PThread.pthreads[tid];
1823
+ return worker.whenLoaded;
1824
+ });
1622
1825
  emnapiAWMT.workerReady = Promise.all(promises);
1623
1826
  return emnapiAWMT.workerReady;
1624
1827
  },
1625
- checkIdleWorker: function () {
1626
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
1627
- var worker = emnapiAWMT.unusedWorkers.shift();
1628
- var work = emnapiAWMT.workQueue.shift();
1629
- emnapiAWMT.runningWorkers.push(worker);
1630
- worker.postMessage({
1631
- __emnapi__: {
1632
- type: 'async-work-execute',
1633
- payload: { work: work }
1634
- }
1635
- });
1636
- }
1637
- },
1638
1828
  getResource: function (work) {
1639
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
1829
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1830
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
1640
1831
  },
1641
1832
  getExecute: function (work) {
1642
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
1833
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1834
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
1643
1835
  },
1644
1836
  getComplete: function (work) {
1645
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
1837
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1838
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
1646
1839
  },
1647
1840
  getEnv: function (work) {
1648
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
1841
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1842
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
1649
1843
  },
1650
1844
  getData: function (work) {
1651
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
1845
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1846
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
1847
+ },
1848
+ getMutex: function () {
1849
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
1850
+ var mutex = {
1851
+ lock: function () {
1852
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1853
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1854
+ if (isBrowserMain) {
1855
+ while (true) {
1856
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1857
+ if (oldValue === 0) {
1858
+ return;
1859
+ }
1860
+ }
1861
+ }
1862
+ else {
1863
+ while (true) {
1864
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1865
+ if (oldValue === 0) {
1866
+ return;
1867
+ }
1868
+ Atomics.wait(i32a, 0, 10);
1869
+ }
1870
+ }
1871
+ },
1872
+ unlock: function () {
1873
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1874
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1875
+ if (oldValue !== 10) {
1876
+ throw new Error('Tried to unlock while not holding the mutex');
1877
+ }
1878
+ Atomics.notify(i32a, 0, 1);
1879
+ },
1880
+ execute: function (fn) {
1881
+ mutex.lock();
1882
+ try {
1883
+ return fn();
1884
+ }
1885
+ finally {
1886
+ mutex.unlock();
1887
+ }
1888
+ }
1889
+ };
1890
+ return mutex;
1891
+ },
1892
+ getCond: function () {
1893
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
1894
+ var mutex = emnapiAWMT.getMutex();
1895
+ var cond = {
1896
+ wait: function () {
1897
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1898
+ var value = Atomics.load(i32a, 0);
1899
+ mutex.unlock();
1900
+ Atomics.wait(i32a, 0, value);
1901
+ mutex.lock();
1902
+ },
1903
+ signal: function () {
1904
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1905
+ Atomics.add(i32a, 0, 1);
1906
+ Atomics.notify(i32a, 0, 1);
1907
+ }
1908
+ };
1909
+ return cond;
1910
+ },
1911
+ queueInit: function (q) {
1912
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1913
+ HEAP_DATA_VIEW.setUint32(q, q, true);
1914
+ HEAP_DATA_VIEW.setUint32(q + 4, q, true);
1915
+ },
1916
+ queueInsertTail: function (h, q) {
1917
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1918
+ HEAP_DATA_VIEW.setUint32(q, h, true);
1919
+ var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
1920
+ HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
1921
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1922
+ HEAP_DATA_VIEW.setUint32(qprev, q, true);
1923
+ HEAP_DATA_VIEW.setUint32(h + 4, q, true);
1924
+ },
1925
+ queueRemove: function (q) {
1926
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1927
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1928
+ var qnext = HEAP_DATA_VIEW.getUint32(q, true);
1929
+ HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
1930
+ HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
1931
+ },
1932
+ queueEmpty: function (q) {
1933
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1934
+ return q == HEAP_DATA_VIEW.getUint32(q, true);
1652
1935
  },
1653
1936
  scheduleWork: function (work) {
1654
1937
  var _a;
1655
- if (ENVIRONMENT_IS_PTHREAD) {
1656
- var postMessage_1 = napiModule.postMessage;
1657
- postMessage_1({
1658
- __emnapi__: {
1659
- type: 'async-work-queue',
1660
- payload: { work: work }
1661
- }
1938
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
1939
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1940
+ emnapiAWMT.workerReady.ready = true;
1941
+ }).catch(function (err) {
1942
+ emnapiAWMT.workerReady = null;
1943
+ throw err;
1662
1944
  });
1663
- return;
1664
1945
  }
1665
1946
  emnapiCtx.increaseWaitingRequestCounter();
1666
- emnapiAWMT.workQueue.push(work);
1667
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
1668
- emnapiAWMT.checkIdleWorker();
1947
+ var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
1948
+ Atomics.store(statusBuffer, 0, 0);
1949
+ var mutex = emnapiAWMT.getMutex();
1950
+ var cond = emnapiAWMT.getCond();
1951
+ mutex.lock();
1952
+ try {
1953
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
1669
1954
  }
1670
- else {
1671
- var fail = function (err) {
1672
- emnapiCtx.decreaseWaitingRequestCounter();
1673
- throw err;
1674
- };
1675
- try {
1676
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1677
- emnapiAWMT.workerReady.ready = true;
1678
- emnapiAWMT.checkIdleWorker();
1679
- }, fail);
1680
- }
1681
- catch (err) {
1682
- fail(err);
1683
- }
1955
+ catch (err) {
1956
+ emnapiCtx.decreaseWaitingRequestCounter();
1957
+ mutex.unlock();
1958
+ throw err;
1684
1959
  }
1960
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1961
+ if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
1962
+ cond.signal();
1963
+ }
1964
+ mutex.unlock();
1685
1965
  },
1686
1966
  cancelWork: function (work) {
1687
- if (ENVIRONMENT_IS_PTHREAD) {
1688
- var postMessage_2 = napiModule.postMessage;
1689
- postMessage_2({
1690
- __emnapi__: {
1691
- type: 'async-work-cancel',
1692
- payload: { work: work }
1693
- }
1694
- });
1695
- return 0;
1967
+ var cancelled = false;
1968
+ emnapiAWMT.getMutex().execute(function () {
1969
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1970
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
1971
+ if (cancelled) {
1972
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
1973
+ }
1974
+ });
1975
+ if (!cancelled) {
1976
+ return 9;
1696
1977
  }
1697
- var index = emnapiAWMT.workQueue.indexOf(work);
1698
- if (index !== -1) {
1699
- emnapiAWMT.workQueue.splice(index, 1);
1700
- emnapiCtx.feature.setImmediate(function () {
1701
- emnapiCtx.decreaseWaitingRequestCounter();
1702
- emnapiAWMT.checkIdleWorker();
1703
- emnapiAWMT.callComplete(work, 11);
1704
- });
1705
- return 0;
1978
+ if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
1979
+ return 9;
1706
1980
  }
1707
- return 9;
1981
+ emnapiCtx.feature.setImmediate(function () {
1982
+ emnapiAWMT.callComplete(work, 11);
1983
+ });
1984
+ return 0;
1708
1985
  },
1709
1986
  callComplete: function (work, status) {
1987
+ emnapiCtx.decreaseWaitingRequestCounter();
1710
1988
  var complete = emnapiAWMT.getComplete(work);
1711
1989
  var env = emnapiAWMT.getEnv(work);
1712
1990
  var data = emnapiAWMT.getData(work);
@@ -1741,6 +2019,7 @@ function createNapiModule(options) {
1741
2019
  }
1742
2020
  }
1743
2021
  };
2022
+ emnapiAWMT.init();
1744
2023
  var napi_create_async_work = singleThreadAsyncWork
1745
2024
  ? function (env, resource, resource_name, execute, complete, data, result) {
1746
2025
  if (!env)
@@ -1762,8 +2041,9 @@ function createNapiModule(options) {
1762
2041
  return envObject.setLastError(1);
1763
2042
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
1764
2043
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
2044
+ result >>>= 0;
1765
2045
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1766
- HEAP_DATA_VIEW.setInt32(result, id, true);
2046
+ HEAP_DATA_VIEW.setUint32(result, id, true);
1767
2047
  return envObject.clearLastError();
1768
2048
  }
1769
2049
  : function (env, resource, resource_name, execute, complete, data, result) {
@@ -1788,18 +2068,21 @@ function createNapiModule(options) {
1788
2068
  var aw = _malloc(sizeofAW);
1789
2069
  if (!aw)
1790
2070
  return envObject.setLastError(9);
2071
+ aw >>>= 0;
1791
2072
  new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
1792
2073
  var s = envObject.ensureHandleId(resourceObject);
1793
2074
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
1794
2075
  var resource_ = resourceRef.id;
1795
2076
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1796
- HEAP_DATA_VIEW.setInt32(aw, resource_, true);
2077
+ HEAP_DATA_VIEW.setUint32(aw, resource_, true);
1797
2078
  _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
1798
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.env, env, true);
1799
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.execute, execute, true);
1800
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.complete, complete, true);
1801
- HEAP_DATA_VIEW.setInt32(aw + emnapiAWMT.offset.data, data, true);
1802
- HEAP_DATA_VIEW.setInt32(result, aw, true);
2079
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
2080
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
2081
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
2082
+ HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
2083
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
2084
+ result >>>= 0;
2085
+ HEAP_DATA_VIEW.setUint32(result, aw, true);
1803
2086
  return envObject.clearLastError();
1804
2087
  };
1805
2088
  var napi_delete_async_work = singleThreadAsyncWork
@@ -1810,6 +2093,7 @@ function createNapiModule(options) {
1810
2093
  envObject.checkGCAccess();
1811
2094
  if (!work)
1812
2095
  return envObject.setLastError(1);
2096
+ work >>>= 0;
1813
2097
  emnapiAWST.remove(work);
1814
2098
  return envObject.clearLastError();
1815
2099
  }
@@ -1820,6 +2104,7 @@ function createNapiModule(options) {
1820
2104
  envObject.checkGCAccess();
1821
2105
  if (!work)
1822
2106
  return envObject.setLastError(1);
2107
+ work >>>= 0;
1823
2108
  var resource = emnapiAWMT.getResource(work);
1824
2109
  emnapiCtx.refStore.get(resource).dispose();
1825
2110
  if (emnapiNodeBinding) {
@@ -1838,6 +2123,7 @@ function createNapiModule(options) {
1838
2123
  var envObject = emnapiCtx.envStore.get(env);
1839
2124
  if (!work)
1840
2125
  return envObject.setLastError(1);
2126
+ work >>>= 0;
1841
2127
  emnapiAWST.queue(work);
1842
2128
  return envObject.clearLastError();
1843
2129
  }
@@ -1847,6 +2133,7 @@ function createNapiModule(options) {
1847
2133
  var envObject = emnapiCtx.envStore.get(env);
1848
2134
  if (!work)
1849
2135
  return envObject.setLastError(1);
2136
+ work >>>= 0;
1850
2137
  emnapiAWMT.scheduleWork(work);
1851
2138
  return envObject.clearLastError();
1852
2139
  };
@@ -1857,6 +2144,7 @@ function createNapiModule(options) {
1857
2144
  var envObject = emnapiCtx.envStore.get(env);
1858
2145
  if (!work)
1859
2146
  return envObject.setLastError(1);
2147
+ work >>>= 0;
1860
2148
  var status = emnapiAWST.cancel(work);
1861
2149
  if (status === 0)
1862
2150
  return envObject.clearLastError();
@@ -1868,41 +2156,124 @@ function createNapiModule(options) {
1868
2156
  var envObject = emnapiCtx.envStore.get(env);
1869
2157
  if (!work)
1870
2158
  return envObject.setLastError(1);
2159
+ work >>>= 0;
1871
2160
  var status = emnapiAWMT.cancelWork(work);
1872
2161
  if (status === 0)
1873
2162
  return envObject.clearLastError();
1874
2163
  return envObject.setLastError(status);
1875
2164
  };
1876
- function initWorker(startArg) {
2165
+ function _emnapi_async_worker(globalAddress) {
2166
+ globalAddress >>>= 0;
2167
+ emnapiAWMT.globalAddress = globalAddress;
2168
+ var mutex = emnapiAWMT.getMutex();
2169
+ var cond = emnapiAWMT.getCond();
2170
+ mutex.lock();
2171
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
2172
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
2173
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
2174
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2175
+ for (;;) {
2176
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
2177
+ Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
2178
+ cond.wait();
2179
+ Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
2180
+ }
2181
+ var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
2182
+ if (q === exitMessageAddr) {
2183
+ cond.signal();
2184
+ mutex.unlock();
2185
+ break;
2186
+ }
2187
+ var work = q - emnapiAWMT.offset.queue;
2188
+ emnapiAWMT.queueRemove(q);
2189
+ emnapiAWMT.queueInit(q);
2190
+ mutex.unlock();
2191
+ var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
2192
+ if (Atomics.load(statusBuffer, 0) === 1) {
2193
+ abort('unreachable');
2194
+ }
2195
+ var execute = emnapiAWMT.getExecute(work);
2196
+ var env = emnapiAWMT.getEnv(work);
2197
+ var data = emnapiAWMT.getData(work);
2198
+ (wasmTable.get(execute))(env, data);
2199
+ Atomics.store(statusBuffer, 0, 2);
2200
+ var postMessage_1 = napiModule.postMessage;
2201
+ postMessage_1({
2202
+ __emnapi__: {
2203
+ type: 'async-work-complete',
2204
+ payload: { work: work }
2205
+ }
2206
+ });
2207
+ mutex.lock();
2208
+ }
2209
+ return 0;
2210
+ }
2211
+ function _emnapi_spawn_worker(f, globalAddress) {
2212
+ if (typeof onCreateWorker !== 'function') {
2213
+ throw new TypeError('`options.onCreateWorker` is not a function');
2214
+ }
2215
+ var promises = [];
2216
+ var args = [];
2217
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2218
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2219
+ }
2220
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
2221
+ var handleError = function (e) {
2222
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
2223
+ emnapiAWMT.terminateWorkers();
2224
+ }
2225
+ };
2226
+ var ret;
2227
+ try {
2228
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2229
+ var p = PThread.loadWasmModuleToWorker(worker_1);
2230
+ if (ENVIRONMENT_IS_NODE) {
2231
+ worker_1.on('error', handleError);
2232
+ }
2233
+ else {
2234
+ worker_1.addEventListener('error', handleError, false);
2235
+ }
2236
+ emnapiAWMT.addListener(worker_1);
2237
+ emnapiTSFN.addListener(worker_1);
2238
+ promises.push(p.then(function () {
2239
+ if (typeof worker_1.unref === 'function') {
2240
+ worker_1.unref();
2241
+ }
2242
+ }));
2243
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
2244
+ var arg = args[0];
2245
+ worker_1.threadBlockBase = arg;
2246
+ worker_1.postMessage({
2247
+ __emnapi__: {
2248
+ type: 'async-worker-init',
2249
+ payload: { arg: arg, func: [f, globalAddress] }
2250
+ }
2251
+ });
2252
+ }
2253
+ catch (err) {
2254
+ var arg = args[0];
2255
+ _free(arg);
2256
+ throw err;
2257
+ }
2258
+ return ret;
2259
+ }
2260
+ function initWorker(startArg, func) {
1877
2261
  if (napiModule.childThread) {
1878
2262
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
1879
2263
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
1880
2264
  }
1881
2265
  wasmInstance.exports.emnapi_async_worker_init(startArg);
2266
+ (wasmTable.get(func[0]))(func[1]);
1882
2267
  }
1883
2268
  else {
1884
2269
  throw new Error('startThread is only available in child threads');
1885
2270
  }
1886
2271
  }
1887
- function executeAsyncWork(work) {
1888
- if (!ENVIRONMENT_IS_PTHREAD)
1889
- return;
1890
- var execute = emnapiAWMT.getExecute(work);
1891
- var env = emnapiAWMT.getEnv(work);
1892
- var data = emnapiAWMT.getData(work);
1893
- (wasmTable.get(execute))(env, data);
1894
- var postMessage = napiModule.postMessage;
1895
- postMessage({
1896
- __emnapi__: {
1897
- type: 'async-work-complete',
1898
- payload: { work: work }
1899
- }
1900
- });
1901
- }
1902
2272
  napiModule.initWorker = initWorker;
1903
- napiModule.executeAsyncWork = executeAsyncWork;
1904
2273
  var asyncWorkMod = Object.freeze({
1905
2274
  __proto__: null,
2275
+ _emnapi_async_worker: _emnapi_async_worker,
2276
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
1906
2277
  napi_cancel_async_work: napi_cancel_async_work,
1907
2278
  napi_create_async_work: napi_create_async_work,
1908
2279
  napi_delete_async_work: napi_delete_async_work,
@@ -1917,6 +2288,10 @@ function createNapiModule(options) {
1917
2288
  emnapiExternalMemory.table = new WeakMap();
1918
2289
  emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
1919
2290
  },
2291
+ isSharedArrayBuffer: function (value) {
2292
+ return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
2293
+ (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
2294
+ },
1920
2295
  isDetachedArrayBuffer: function (arrayBuffer) {
1921
2296
  if (arrayBuffer.byteLength === 0) {
1922
2297
  try {
@@ -1959,6 +2334,7 @@ function createNapiModule(options) {
1959
2334
  var pointer = _malloc(arrayBuffer.byteLength);
1960
2335
  if (!pointer)
1961
2336
  throw new Error('Out of memory');
2337
+ pointer >>>= 0;
1962
2338
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
1963
2339
  info.address = pointer;
1964
2340
  info.ownership = emnapiExternalMemory.registry ? 0 : 1;
@@ -1980,8 +2356,7 @@ function createNapiModule(options) {
1980
2356
  }
1981
2357
  return view;
1982
2358
  }
1983
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
1984
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
2359
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
1985
2360
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
1986
2361
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
1987
2362
  var Ctor = info.Ctor;
@@ -2114,7 +2489,7 @@ function createNapiModule(options) {
2114
2489
  ptr >>>= 0;
2115
2490
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
2116
2491
  var end = ptr;
2117
- if (length === -1) {
2492
+ if (length === -1 || length === 4294967295) {
2118
2493
  for (; HEAPU8[end];)
2119
2494
  ++end;
2120
2495
  }
@@ -2205,12 +2580,12 @@ function createNapiModule(options) {
2205
2580
  return '';
2206
2581
  ptr >>>= 0;
2207
2582
  var end = ptr;
2208
- if (length === -1) {
2209
- var idx = end >> 1;
2583
+ if (length === -1 || length === 4294967295) {
2584
+ var idx = end >>> 1;
2210
2585
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
2211
2586
  while (HEAPU16[idx])
2212
2587
  ++idx;
2213
- end = idx << 1;
2588
+ end = (idx << 1) >>> 0;
2214
2589
  }
2215
2590
  else {
2216
2591
  end = ptr + (length >>> 0) * 2;
@@ -2241,11 +2616,12 @@ function createNapiModule(options) {
2241
2616
  return outPtr - startPtr;
2242
2617
  },
2243
2618
  newString: function (env, str, length, result, stringMaker) {
2619
+ length >>>= 0;
2244
2620
  if (!env)
2245
2621
  return 1;
2246
2622
  var envObject = emnapiCtx.envStore.get(env);
2247
2623
  envObject.checkGCAccess();
2248
- var autoLength = length === -1;
2624
+ var autoLength = length === -1 || length === 4294967295;
2249
2625
  var sizelength = length >>> 0;
2250
2626
  if (length !== 0) {
2251
2627
  if (!str)
@@ -2255,18 +2631,21 @@ function createNapiModule(options) {
2255
2631
  return envObject.setLastError(1);
2256
2632
  if (!(autoLength || (sizelength <= 2147483647)))
2257
2633
  return envObject.setLastError(1);
2634
+ str >>>= 0;
2258
2635
  var strValue = stringMaker(str, autoLength, sizelength);
2636
+ result >>>= 0;
2259
2637
  var value = emnapiCtx.addToCurrentScope(strValue).id;
2260
2638
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2261
- HEAP_DATA_VIEW.setInt32(result, value, true);
2639
+ HEAP_DATA_VIEW.setUint32(result, value, true);
2262
2640
  return envObject.clearLastError();
2263
2641
  },
2264
2642
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
2643
+ length >>>= 0;
2265
2644
  if (!env)
2266
2645
  return 1;
2267
2646
  var envObject = emnapiCtx.envStore.get(env);
2268
2647
  envObject.checkGCAccess();
2269
- var autoLength = length === -1;
2648
+ var autoLength = length === -1 || length === 4294967295;
2270
2649
  var sizelength = length >>> 0;
2271
2650
  if (length !== 0) {
2272
2651
  if (!str)
@@ -2308,6 +2687,7 @@ function createNapiModule(options) {
2308
2687
  if (!handle.isArray()) {
2309
2688
  return envObject.setLastError(8);
2310
2689
  }
2690
+ result >>>= 0;
2311
2691
  var v = handle.value.length >>> 0;
2312
2692
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2313
2693
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2326,19 +2706,55 @@ function createNapiModule(options) {
2326
2706
  if (!arraybuffer)
2327
2707
  return envObject.setLastError(1);
2328
2708
  var handle = emnapiCtx.handleStore.get(arraybuffer);
2329
- if (!handle.isArrayBuffer()) {
2709
+ if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
2330
2710
  return envObject.setLastError(1);
2331
2711
  }
2332
2712
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2333
2713
  if (data) {
2714
+ data >>>= 0;
2334
2715
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
2335
- HEAP_DATA_VIEW.setInt32(data, p, true);
2716
+ HEAP_DATA_VIEW.setUint32(data, p, true);
2336
2717
  }
2337
2718
  if (byte_length) {
2719
+ byte_length >>>= 0;
2338
2720
  HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
2339
2721
  }
2340
2722
  return envObject.clearLastError();
2341
2723
  }
2724
+ function node_api_set_prototype(env, object, value) {
2725
+ if (!env)
2726
+ return 1;
2727
+ var envObject = emnapiCtx.envStore.get(env);
2728
+ envObject.checkGCAccess();
2729
+ if (!envObject.tryCatch.isEmpty())
2730
+ return envObject.setLastError(10);
2731
+ if (!envObject.canCallIntoJs())
2732
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
2733
+ envObject.clearLastError();
2734
+ try {
2735
+ if (!value)
2736
+ return envObject.setLastError(1);
2737
+ var obj = emnapiCtx.handleStore.get(object).value;
2738
+ if (obj == null) {
2739
+ throw new TypeError('Cannot convert undefined or null to object');
2740
+ }
2741
+ var type = typeof obj;
2742
+ var v = void 0;
2743
+ try {
2744
+ v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
2745
+ }
2746
+ catch (_) {
2747
+ return envObject.setLastError(2);
2748
+ }
2749
+ var val = emnapiCtx.handleStore.get(value).value;
2750
+ Object.setPrototypeOf(v, val);
2751
+ return envObject.getReturnStatus();
2752
+ }
2753
+ catch (err) {
2754
+ envObject.tryCatch.setError(err);
2755
+ return envObject.setLastError(10);
2756
+ }
2757
+ }
2342
2758
  function napi_get_prototype(env, value, result) {
2343
2759
  if (!env)
2344
2760
  return 1;
@@ -2365,9 +2781,10 @@ function createNapiModule(options) {
2365
2781
  catch (_) {
2366
2782
  return envObject.setLastError(2);
2367
2783
  }
2784
+ result >>>= 0;
2368
2785
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
2369
2786
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2370
- HEAP_DATA_VIEW.setInt32(result, p, true);
2787
+ HEAP_DATA_VIEW.setUint32(result, p, true);
2371
2788
  return envObject.getReturnStatus();
2372
2789
  }
2373
2790
  catch (err) {
@@ -2389,6 +2806,7 @@ function createNapiModule(options) {
2389
2806
  var v = handle.value;
2390
2807
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2391
2808
  if (type) {
2809
+ type >>>= 0;
2392
2810
  var t = void 0;
2393
2811
  if (v instanceof Int8Array) {
2394
2812
  t = 0;
@@ -2411,6 +2829,9 @@ function createNapiModule(options) {
2411
2829
  else if (v instanceof Uint32Array) {
2412
2830
  t = 6;
2413
2831
  }
2832
+ else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
2833
+ t = 11;
2834
+ }
2414
2835
  else if (v instanceof Float32Array) {
2415
2836
  t = 7;
2416
2837
  }
@@ -2428,22 +2849,25 @@ function createNapiModule(options) {
2428
2849
  }
2429
2850
  HEAP_DATA_VIEW.setInt32(type, t, true);
2430
2851
  }
2852
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
2431
2853
  if (length) {
2854
+ length >>>= 0;
2432
2855
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
2433
2856
  }
2434
- var buffer;
2435
2857
  if (data || arraybuffer) {
2436
- buffer = v.buffer;
2437
2858
  if (data) {
2859
+ data >>>= 0;
2438
2860
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2439
- HEAP_DATA_VIEW.setInt32(data, p, true);
2861
+ HEAP_DATA_VIEW.setUint32(data, p, true);
2440
2862
  }
2441
2863
  if (arraybuffer) {
2442
- var ab = envObject.ensureHandleId(buffer);
2443
- HEAP_DATA_VIEW.setInt32(arraybuffer, ab, true);
2864
+ arraybuffer >>>= 0;
2865
+ var ab = envObject.ensureHandleId(v.buffer);
2866
+ HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2444
2867
  }
2445
2868
  }
2446
2869
  if (byte_offset) {
2870
+ byte_offset >>>= 0;
2447
2871
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2448
2872
  }
2449
2873
  return envObject.clearLastError();
@@ -2474,24 +2898,26 @@ function createNapiModule(options) {
2474
2898
  if (!handle.isDataView()) {
2475
2899
  return envObject.setLastError(1);
2476
2900
  }
2477
- var v = handle.value;
2901
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
2478
2902
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2479
2903
  if (byte_length) {
2904
+ byte_length >>>= 0;
2480
2905
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
2481
2906
  }
2482
- var buffer;
2483
2907
  if (data || arraybuffer) {
2484
- buffer = v.buffer;
2485
2908
  if (data) {
2909
+ data >>>= 0;
2486
2910
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2487
- HEAP_DATA_VIEW.setInt32(data, p, true);
2911
+ HEAP_DATA_VIEW.setUint32(data, p, true);
2488
2912
  }
2489
2913
  if (arraybuffer) {
2490
- var ab = envObject.ensureHandleId(buffer);
2491
- HEAP_DATA_VIEW.setInt32(arraybuffer, ab, true);
2914
+ arraybuffer >>>= 0;
2915
+ var ab = envObject.ensureHandleId(v.buffer);
2916
+ HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2492
2917
  }
2493
2918
  }
2494
2919
  if (byte_offset) {
2920
+ byte_offset >>>= 0;
2495
2921
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2496
2922
  }
2497
2923
  return envObject.clearLastError();
@@ -2516,6 +2942,7 @@ function createNapiModule(options) {
2516
2942
  if (!handle.isDate()) {
2517
2943
  return envObject.setLastError(1);
2518
2944
  }
2945
+ result >>>= 0;
2519
2946
  v = handle.value.valueOf();
2520
2947
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2521
2948
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -2539,6 +2966,7 @@ function createNapiModule(options) {
2539
2966
  if (typeof handle.value !== 'boolean') {
2540
2967
  return envObject.setLastError(7);
2541
2968
  }
2969
+ result >>>= 0;
2542
2970
  var r = handle.value ? 1 : 0;
2543
2971
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2544
2972
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -2557,6 +2985,7 @@ function createNapiModule(options) {
2557
2985
  if (typeof handle.value !== 'number') {
2558
2986
  return envObject.setLastError(6);
2559
2987
  }
2988
+ result >>>= 0;
2560
2989
  var r = handle.value;
2561
2990
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2562
2991
  HEAP_DATA_VIEW.setFloat64(result, r, true);
@@ -2581,6 +3010,8 @@ function createNapiModule(options) {
2581
3010
  if (typeof numberValue !== 'bigint') {
2582
3011
  return envObject.setLastError(6);
2583
3012
  }
3013
+ lossless >>>= 0;
3014
+ result >>>= 0;
2584
3015
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2585
3016
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
2586
3017
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2617,6 +3048,8 @@ function createNapiModule(options) {
2617
3048
  if (typeof numberValue !== 'bigint') {
2618
3049
  return envObject.setLastError(6);
2619
3050
  }
3051
+ lossless >>>= 0;
3052
+ result >>>= 0;
2620
3053
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2621
3054
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
2622
3055
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2648,8 +3081,12 @@ function createNapiModule(options) {
2648
3081
  return envObject.setLastError(17);
2649
3082
  }
2650
3083
  var isMinus = handle.value < BigInt(0);
3084
+ sign_bit >>>= 0;
3085
+ words >>>= 0;
3086
+ word_count >>>= 0;
2651
3087
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2652
3088
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
3089
+ word_count_int >>>= 0;
2653
3090
  var wordCount = 0;
2654
3091
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
2655
3092
  while (bigintValue !== BigInt(0)) {
@@ -2697,9 +3134,10 @@ function createNapiModule(options) {
2697
3134
  if (!handle.isExternal()) {
2698
3135
  return envObject.setLastError(1);
2699
3136
  }
3137
+ result >>>= 0;
2700
3138
  var p = handle.data();
2701
3139
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2702
- HEAP_DATA_VIEW.setInt32(result, p, true);
3140
+ HEAP_DATA_VIEW.setUint32(result, p, true);
2703
3141
  return envObject.clearLastError();
2704
3142
  }
2705
3143
  function napi_get_value_int32(env, value, result) {
@@ -2715,6 +3153,7 @@ function createNapiModule(options) {
2715
3153
  if (typeof handle.value !== 'number') {
2716
3154
  return envObject.setLastError(6);
2717
3155
  }
3156
+ result >>>= 0;
2718
3157
  var v = new Int32Array([handle.value])[0];
2719
3158
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2720
3159
  HEAP_DATA_VIEW.setInt32(result, v, true);
@@ -2734,6 +3173,7 @@ function createNapiModule(options) {
2734
3173
  return envObject.setLastError(6);
2735
3174
  }
2736
3175
  var numberValue = handle.value;
3176
+ result >>>= 0;
2737
3177
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2738
3178
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
2739
3179
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -2759,6 +3199,9 @@ function createNapiModule(options) {
2759
3199
  envObject.checkGCAccess();
2760
3200
  if (!value)
2761
3201
  return envObject.setLastError(1);
3202
+ result >>>= 0;
3203
+ buf >>>= 0;
3204
+ buf_size >>>= 0;
2762
3205
  buf_size = buf_size >>> 0;
2763
3206
  var handle = emnapiCtx.handleStore.get(value);
2764
3207
  if (typeof handle.value !== 'string') {
@@ -2795,6 +3238,9 @@ function createNapiModule(options) {
2795
3238
  envObject.checkGCAccess();
2796
3239
  if (!value)
2797
3240
  return envObject.setLastError(1);
3241
+ result >>>= 0;
3242
+ buf >>>= 0;
3243
+ buf_size >>>= 0;
2798
3244
  buf_size = buf_size >>> 0;
2799
3245
  var handle = emnapiCtx.handleStore.get(value);
2800
3246
  if (typeof handle.value !== 'string') {
@@ -2825,6 +3271,9 @@ function createNapiModule(options) {
2825
3271
  envObject.checkGCAccess();
2826
3272
  if (!value)
2827
3273
  return envObject.setLastError(1);
3274
+ result >>>= 0;
3275
+ buf >>>= 0;
3276
+ buf_size >>>= 0;
2828
3277
  buf_size = buf_size >>> 0;
2829
3278
  var handle = emnapiCtx.handleStore.get(value);
2830
3279
  if (typeof handle.value !== 'string') {
@@ -2860,6 +3309,7 @@ function createNapiModule(options) {
2860
3309
  if (typeof handle.value !== 'number') {
2861
3310
  return envObject.setLastError(6);
2862
3311
  }
3312
+ result >>>= 0;
2863
3313
  var v = new Uint32Array([handle.value])[0];
2864
3314
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2865
3315
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2885,7 +3335,8 @@ function createNapiModule(options) {
2885
3335
  napi_get_value_string_latin1: napi_get_value_string_latin1,
2886
3336
  napi_get_value_string_utf16: napi_get_value_string_utf16,
2887
3337
  napi_get_value_string_utf8: napi_get_value_string_utf8,
2888
- napi_get_value_uint32: napi_get_value_uint32
3338
+ napi_get_value_uint32: napi_get_value_uint32,
3339
+ node_api_set_prototype: node_api_set_prototype
2889
3340
  });
2890
3341
  function napi_create_int32(env, value, result) {
2891
3342
  if (!env)
@@ -2894,9 +3345,10 @@ function createNapiModule(options) {
2894
3345
  envObject.checkGCAccess();
2895
3346
  if (!result)
2896
3347
  return envObject.setLastError(1);
3348
+ result >>>= 0;
2897
3349
  var v = emnapiCtx.addToCurrentScope(value).id;
2898
3350
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2899
- HEAP_DATA_VIEW.setInt32(result, v, true);
3351
+ HEAP_DATA_VIEW.setUint32(result, v, true);
2900
3352
  return envObject.clearLastError();
2901
3353
  }
2902
3354
  function napi_create_uint32(env, value, result) {
@@ -2906,9 +3358,10 @@ function createNapiModule(options) {
2906
3358
  envObject.checkGCAccess();
2907
3359
  if (!result)
2908
3360
  return envObject.setLastError(1);
3361
+ result >>>= 0;
2909
3362
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
2910
3363
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2911
- HEAP_DATA_VIEW.setInt32(result, v, true);
3364
+ HEAP_DATA_VIEW.setUint32(result, v, true);
2912
3365
  return envObject.clearLastError();
2913
3366
  }
2914
3367
  function napi_create_int64(env, low, high, result) {
@@ -2921,8 +3374,9 @@ function createNapiModule(options) {
2921
3374
  return envObject.setLastError(1);
2922
3375
  value = Number(low);
2923
3376
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3377
+ high >>>= 0;
2924
3378
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2925
- HEAP_DATA_VIEW.setInt32(high, v1, true);
3379
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
2926
3380
  return envObject.clearLastError();
2927
3381
  }
2928
3382
  function napi_create_double(env, value, result) {
@@ -2932,9 +3386,10 @@ function createNapiModule(options) {
2932
3386
  envObject.checkGCAccess();
2933
3387
  if (!result)
2934
3388
  return envObject.setLastError(1);
3389
+ result >>>= 0;
2935
3390
  var v = emnapiCtx.addToCurrentScope(value).id;
2936
3391
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2937
- HEAP_DATA_VIEW.setInt32(result, v, true);
3392
+ HEAP_DATA_VIEW.setUint32(result, v, true);
2938
3393
  return envObject.clearLastError();
2939
3394
  }
2940
3395
  function napi_create_string_latin1(env, str, length, result) {
@@ -3002,8 +3457,9 @@ function createNapiModule(options) {
3002
3457
  return envObject.setLastError(1);
3003
3458
  value = low;
3004
3459
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3460
+ high >>>= 0;
3005
3461
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3006
- HEAP_DATA_VIEW.setInt32(high, v1, true);
3462
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
3007
3463
  return envObject.clearLastError();
3008
3464
  }
3009
3465
  function napi_create_bigint_uint64(env, low, high, result) {
@@ -3019,8 +3475,9 @@ function createNapiModule(options) {
3019
3475
  return envObject.setLastError(1);
3020
3476
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
3021
3477
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3478
+ high >>>= 0;
3022
3479
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3023
- HEAP_DATA_VIEW.setInt32(high, v1, true);
3480
+ HEAP_DATA_VIEW.setUint32(high, v1, true);
3024
3481
  return envObject.clearLastError();
3025
3482
  }
3026
3483
  function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
@@ -3040,6 +3497,8 @@ function createNapiModule(options) {
3040
3497
  }
3041
3498
  if (!result)
3042
3499
  return envObject.setLastError(1);
3500
+ words >>>= 0;
3501
+ word_count >>>= 0;
3043
3502
  word_count = word_count >>> 0;
3044
3503
  if (word_count > 2147483647) {
3045
3504
  return envObject.setLastError(1);
@@ -3056,8 +3515,9 @@ function createNapiModule(options) {
3056
3515
  value += wordi << BigInt(64 * i);
3057
3516
  }
3058
3517
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
3518
+ result >>>= 0;
3059
3519
  v = emnapiCtx.addToCurrentScope(value).id;
3060
- HEAP_DATA_VIEW.setInt32(result, v, true);
3520
+ HEAP_DATA_VIEW.setUint32(result, v, true);
3061
3521
  return envObject.getReturnStatus();
3062
3522
  }
3063
3523
  catch (err) {
@@ -3084,6 +3544,7 @@ function createNapiModule(options) {
3084
3544
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
3085
3545
  });
3086
3546
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
3547
+ utf8name >>>= 0;
3087
3548
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
3088
3549
  var f;
3089
3550
  var napiCallback = (wasmTable.get(cb));
@@ -3224,9 +3685,10 @@ function createNapiModule(options) {
3224
3685
  if (!finalize_cb)
3225
3686
  return envObject.setLastError(1);
3226
3687
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
3688
+ result >>>= 0;
3227
3689
  referenceId = reference.id;
3228
3690
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3229
- HEAP_DATA_VIEW.setInt32(result, referenceId, true);
3691
+ HEAP_DATA_VIEW.setUint32(result, referenceId, true);
3230
3692
  }
3231
3693
  else {
3232
3694
  if (finalize_cb) {
@@ -3272,9 +3734,10 @@ function createNapiModule(options) {
3272
3734
  if (!ref)
3273
3735
  return envObject.setLastError(1);
3274
3736
  if (result) {
3737
+ result >>>= 0;
3275
3738
  data = ref.data();
3276
3739
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3277
- HEAP_DATA_VIEW.setInt32(result, data, true);
3740
+ HEAP_DATA_VIEW.setUint32(result, data, true);
3278
3741
  }
3279
3742
  if (action === 1) {
3280
3743
  binding.wrapped = 0;
@@ -3308,12 +3771,15 @@ function createNapiModule(options) {
3308
3771
  return envObject.setLastError(1);
3309
3772
  if (!constructor)
3310
3773
  return envObject.setLastError(1);
3774
+ length >>>= 0;
3775
+ properties >>>= 0;
3776
+ property_count >>>= 0;
3311
3777
  property_count = property_count >>> 0;
3312
3778
  if (property_count > 0) {
3313
3779
  if (!properties)
3314
3780
  return envObject.setLastError(1);
3315
3781
  }
3316
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
3782
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
3317
3783
  return envObject.setLastError(1);
3318
3784
  }
3319
3785
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -3324,14 +3790,15 @@ function createNapiModule(options) {
3324
3790
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3325
3791
  for (var i = 0; i < property_count; i++) {
3326
3792
  propPtr = properties + (i * (4 * 8));
3327
- var utf8Name = HEAP_DATA_VIEW.getInt32(propPtr, true);
3328
- var name_1 = HEAP_DATA_VIEW.getInt32(propPtr + 4, true);
3329
- var method = HEAP_DATA_VIEW.getInt32(propPtr + 8, true);
3330
- var getter = HEAP_DATA_VIEW.getInt32(propPtr + 12, true);
3331
- var setter = HEAP_DATA_VIEW.getInt32(propPtr + 16, true);
3332
- var value = HEAP_DATA_VIEW.getInt32(propPtr + 20, true);
3793
+ var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
3794
+ var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
3795
+ var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
3796
+ var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
3797
+ var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
3798
+ var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
3333
3799
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
3334
- var data = HEAP_DATA_VIEW.getInt32(propPtr + 28, true);
3800
+ attributes >>>= 0;
3801
+ var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
3335
3802
  if (utf8Name) {
3336
3803
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
3337
3804
  }
@@ -3352,7 +3819,8 @@ function createNapiModule(options) {
3352
3819
  }
3353
3820
  var valueHandle = emnapiCtx.addToCurrentScope(F);
3354
3821
  valueHandleId = valueHandle.id;
3355
- HEAP_DATA_VIEW.setInt32(result, valueHandleId, true);
3822
+ result >>>= 0;
3823
+ HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
3356
3824
  return envObject.getReturnStatus();
3357
3825
  }
3358
3826
  catch (err) {
@@ -3387,6 +3855,7 @@ function createNapiModule(options) {
3387
3855
  if (!(value.isObject() || value.isFunction())) {
3388
3856
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
3389
3857
  }
3858
+ type_tag >>>= 0;
3390
3859
  if (!type_tag) {
3391
3860
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
3392
3861
  }
@@ -3431,6 +3900,7 @@ function createNapiModule(options) {
3431
3900
  }
3432
3901
  var binding = envObject.getObjectBinding(value.value);
3433
3902
  if (binding.tag !== null) {
3903
+ type_tag >>>= 0;
3434
3904
  var tag = binding.tag;
3435
3905
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
3436
3906
  ret = (tag[0] === typeTag[0] &&
@@ -3441,6 +3911,7 @@ function createNapiModule(options) {
3441
3911
  else {
3442
3912
  ret = false;
3443
3913
  }
3914
+ result >>>= 0;
3444
3915
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3445
3916
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
3446
3917
  return envObject.getReturnStatus();
@@ -3468,11 +3939,15 @@ function createNapiModule(options) {
3468
3939
  }
3469
3940
  var handle = handleResult.handle;
3470
3941
  var ownership = !result ? 0 : 1;
3942
+ finalize_data >>>= 0;
3943
+ finalize_cb >>>= 0;
3944
+ finalize_hint >>>= 0;
3471
3945
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
3472
3946
  if (result) {
3947
+ result >>>= 0;
3473
3948
  var referenceId = reference.id;
3474
3949
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3475
- HEAP_DATA_VIEW.setInt32(result, referenceId, true);
3950
+ HEAP_DATA_VIEW.setUint32(result, referenceId, true);
3476
3951
  }
3477
3952
  return envObject.clearLastError();
3478
3953
  }
@@ -3508,6 +3983,9 @@ function createNapiModule(options) {
3508
3983
  try {
3509
3984
  if (!result)
3510
3985
  return envObject.setLastError(1);
3986
+ byte_length >>>= 0;
3987
+ external_data >>>= 0;
3988
+ result >>>= 0;
3511
3989
  byte_length = byte_length >>> 0;
3512
3990
  if (!external_data) {
3513
3991
  byte_length = 0;
@@ -3559,6 +4037,12 @@ function createNapiModule(options) {
3559
4037
  case -1:
3560
4038
  viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
3561
4039
  break;
4040
+ case 11:
4041
+ if (typeof Float16Array !== 'function') {
4042
+ return envObject.setLastError(1);
4043
+ }
4044
+ viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 };
4045
+ break;
3562
4046
  case -2: {
3563
4047
  if (!emnapiCtx.feature.Buffer) {
3564
4048
  throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
@@ -3587,7 +4071,7 @@ function createNapiModule(options) {
3587
4071
  }
3588
4072
  value = handle.id;
3589
4073
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3590
- HEAP_DATA_VIEW.setInt32(result, value, true);
4074
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3591
4075
  return envObject.getReturnStatus();
3592
4076
  }
3593
4077
  catch (err) {
@@ -3608,11 +4092,11 @@ function createNapiModule(options) {
3608
4092
  offset = offset !== null && offset !== void 0 ? offset : 0;
3609
4093
  offset = offset >>> 0;
3610
4094
  var view;
3611
- if (arrayBufferOrView instanceof ArrayBuffer) {
4095
+ if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
3612
4096
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
3613
4097
  if (!pointer)
3614
4098
  throw new Error('Unknown ArrayBuffer address');
3615
- if (typeof len !== 'number' || len === -1) {
4099
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3616
4100
  len = arrayBufferOrView.byteLength - offset;
3617
4101
  }
3618
4102
  len = len >>> 0;
@@ -3634,7 +4118,7 @@ function createNapiModule(options) {
3634
4118
  var pointer = viewPointerInfo.address;
3635
4119
  if (!pointer)
3636
4120
  throw new Error('Unknown ArrayBuffer address');
3637
- if (typeof len !== 'number' || len === -1) {
4121
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3638
4122
  len = latestView.byteLength - offset;
3639
4123
  }
3640
4124
  len = len >>> 0;
@@ -3666,16 +4150,20 @@ function createNapiModule(options) {
3666
4150
  try {
3667
4151
  if (!arraybuffer_or_view)
3668
4152
  return envObject.setLastError(1);
4153
+ arraybuffer_or_view >>>= 0;
4154
+ offset >>>= 0;
4155
+ len >>>= 0;
3669
4156
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3670
- var handleId = HEAP_DATA_VIEW.getInt32(arraybuffer_or_view, true);
4157
+ var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
3671
4158
  var handle = envObject.ctx.handleStore.get(handleId);
3672
- if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
4159
+ if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
3673
4160
  return envObject.setLastError(1);
3674
4161
  }
3675
4162
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
3676
4163
  if (handle.value !== ret) {
4164
+ arraybuffer_or_view >>>= 0;
3677
4165
  v = envObject.ensureHandleId(ret);
3678
- HEAP_DATA_VIEW.setInt32(arraybuffer_or_view, v, true);
4166
+ HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
3679
4167
  }
3680
4168
  return envObject.getReturnStatus();
3681
4169
  }
@@ -3688,7 +4176,7 @@ function createNapiModule(options) {
3688
4176
  var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
3689
4177
  var isDataView = arrayBufferOrView instanceof DataView;
3690
4178
  var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
3691
- if (!isArrayBuffer && !isTypedArray && !isDataView) {
4179
+ if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
3692
4180
  throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
3693
4181
  }
3694
4182
  var info;
@@ -3727,13 +4215,16 @@ function createNapiModule(options) {
3727
4215
  p = info.address;
3728
4216
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3729
4217
  if (address) {
3730
- HEAP_DATA_VIEW.setInt32(address, p, true);
4218
+ address >>>= 0;
4219
+ HEAP_DATA_VIEW.setUint32(address, p, true);
3731
4220
  }
3732
4221
  if (ownership) {
4222
+ ownership >>>= 0;
3733
4223
  ownershipOut = info.ownership;
3734
4224
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
3735
4225
  }
3736
4226
  if (runtime_allocated) {
4227
+ runtime_allocated >>>= 0;
3737
4228
  runtimeAllocated = info.runtimeAllocated;
3738
4229
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
3739
4230
  }
@@ -3759,6 +4250,7 @@ function createNapiModule(options) {
3759
4250
  }
3760
4251
  var versions = runtimeVersion.split('.')
3761
4252
  .map(function (n) { return Number(n); });
4253
+ version >>>= 0;
3762
4254
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3763
4255
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
3764
4256
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
@@ -3784,9 +4276,10 @@ function createNapiModule(options) {
3784
4276
  envObject.checkGCAccess();
3785
4277
  if (!result)
3786
4278
  return envObject.setLastError(1);
4279
+ result >>>= 0;
3787
4280
  var value = emnapiCtx.addToCurrentScope([]).id;
3788
4281
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3789
- HEAP_DATA_VIEW.setInt32(result, value, true);
4282
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3790
4283
  return envObject.clearLastError();
3791
4284
  }
3792
4285
  function napi_create_array_with_length(env, length, result) {
@@ -3796,19 +4289,23 @@ function createNapiModule(options) {
3796
4289
  envObject.checkGCAccess();
3797
4290
  if (!result)
3798
4291
  return envObject.setLastError(1);
4292
+ length >>>= 0;
4293
+ result >>>= 0;
3799
4294
  length = length >>> 0;
3800
4295
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
3801
4296
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3802
- HEAP_DATA_VIEW.setInt32(result, value, true);
4297
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3803
4298
  return envObject.clearLastError();
3804
4299
  }
3805
- function emnapiCreateArrayBuffer(byte_length, data) {
4300
+ function emnapiCreateArrayBuffer(byte_length, data, shared) {
4301
+ byte_length >>>= 0;
3806
4302
  byte_length = byte_length >>> 0;
3807
- var arrayBuffer = new ArrayBuffer(byte_length);
4303
+ var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
3808
4304
  if (data) {
4305
+ data >>>= 0;
3809
4306
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
3810
4307
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3811
- HEAP_DATA_VIEW.setInt32(data, p, true);
4308
+ HEAP_DATA_VIEW.setUint32(data, p, true);
3812
4309
  }
3813
4310
  return arrayBuffer;
3814
4311
  }
@@ -3826,10 +4323,37 @@ function createNapiModule(options) {
3826
4323
  try {
3827
4324
  if (!result)
3828
4325
  return envObject.setLastError(1);
3829
- var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data);
4326
+ result >>>= 0;
4327
+ var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
3830
4328
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3831
4329
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3832
- HEAP_DATA_VIEW.setInt32(result, value, true);
4330
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4331
+ return envObject.getReturnStatus();
4332
+ }
4333
+ catch (err) {
4334
+ envObject.tryCatch.setError(err);
4335
+ return envObject.setLastError(10);
4336
+ }
4337
+ }
4338
+ function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
4339
+ var value;
4340
+ if (!env)
4341
+ return 1;
4342
+ var envObject = emnapiCtx.envStore.get(env);
4343
+ envObject.checkGCAccess();
4344
+ if (!envObject.tryCatch.isEmpty())
4345
+ return envObject.setLastError(10);
4346
+ if (!envObject.canCallIntoJs())
4347
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4348
+ envObject.clearLastError();
4349
+ try {
4350
+ if (!result)
4351
+ return envObject.setLastError(1);
4352
+ result >>>= 0;
4353
+ var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
4354
+ value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
4355
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4356
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3833
4357
  return envObject.getReturnStatus();
3834
4358
  }
3835
4359
  catch (err) {
@@ -3851,9 +4375,10 @@ function createNapiModule(options) {
3851
4375
  try {
3852
4376
  if (!result)
3853
4377
  return envObject.setLastError(1);
4378
+ result >>>= 0;
3854
4379
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
3855
4380
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3856
- HEAP_DATA_VIEW.setInt32(result, value, true);
4381
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3857
4382
  return envObject.getReturnStatus();
3858
4383
  }
3859
4384
  catch (err) {
@@ -3882,9 +4407,10 @@ function createNapiModule(options) {
3882
4407
  if (finalize_cb) {
3883
4408
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
3884
4409
  }
4410
+ result >>>= 0;
3885
4411
  value = externalHandle.id;
3886
4412
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3887
- HEAP_DATA_VIEW.setInt32(result, value, true);
4413
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3888
4414
  return envObject.clearLastError();
3889
4415
  }
3890
4416
  catch (err) {
@@ -3906,6 +4432,9 @@ function createNapiModule(options) {
3906
4432
  try {
3907
4433
  if (!result)
3908
4434
  return envObject.setLastError(1);
4435
+ byte_length >>>= 0;
4436
+ external_data >>>= 0;
4437
+ result >>>= 0;
3909
4438
  byte_length = byte_length >>> 0;
3910
4439
  if (!external_data) {
3911
4440
  byte_length = 0;
@@ -3948,7 +4477,7 @@ function createNapiModule(options) {
3948
4477
  }
3949
4478
  value = handle.id;
3950
4479
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3951
- HEAP_DATA_VIEW.setInt32(result, value, true);
4480
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3952
4481
  return envObject.getReturnStatus();
3953
4482
  }
3954
4483
  catch (err) {
@@ -3963,9 +4492,55 @@ function createNapiModule(options) {
3963
4492
  envObject.checkGCAccess();
3964
4493
  if (!result)
3965
4494
  return envObject.setLastError(1);
4495
+ result >>>= 0;
3966
4496
  var value = emnapiCtx.addToCurrentScope({}).id;
3967
4497
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3968
- HEAP_DATA_VIEW.setInt32(result, value, true);
4498
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4499
+ return envObject.clearLastError();
4500
+ }
4501
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4502
+ if (!env)
4503
+ return 1;
4504
+ var envObject = emnapiCtx.envStore.get(env);
4505
+ envObject.checkGCAccess();
4506
+ if (!result)
4507
+ return envObject.setLastError(1);
4508
+ property_count >>>= 0;
4509
+ property_count = property_count >>> 0;
4510
+ if (property_count > 0) {
4511
+ if (!property_names)
4512
+ return envObject.setLastError(1);
4513
+ if (!property_values)
4514
+ return envObject.setLastError(1);
4515
+ }
4516
+ var v8_prototype_or_null = prototype_or_null
4517
+ ? emnapiCtx.handleStore.get(prototype_or_null).value
4518
+ : null;
4519
+ var properties = {};
4520
+ property_names >>>= 0;
4521
+ property_values >>>= 0;
4522
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4523
+ for (var i = 0; i < property_count; i++) {
4524
+ var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
4525
+ if (!(typeof name_value === "string" || typeof name_value === "symbol"))
4526
+ return envObject.setLastError(4);
4527
+ properties[name_value] = {
4528
+ value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
4529
+ writable: true,
4530
+ enumerable: true,
4531
+ configurable: true
4532
+ };
4533
+ }
4534
+ var obj;
4535
+ try {
4536
+ obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
4537
+ }
4538
+ catch (_) {
4539
+ return envObject.setLastError(9);
4540
+ }
4541
+ var value = emnapiCtx.addToCurrentScope(obj).id;
4542
+ result >>>= 0;
4543
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3969
4544
  return envObject.clearLastError();
3970
4545
  }
3971
4546
  function napi_create_symbol(env, description, result) {
@@ -3975,10 +4550,11 @@ function createNapiModule(options) {
3975
4550
  envObject.checkGCAccess();
3976
4551
  if (!result)
3977
4552
  return envObject.setLastError(1);
4553
+ result >>>= 0;
3978
4554
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3979
4555
  if (!description) {
3980
4556
  var value = emnapiCtx.addToCurrentScope(Symbol()).id;
3981
- HEAP_DATA_VIEW.setInt32(result, value, true);
4557
+ HEAP_DATA_VIEW.setUint32(result, value, true);
3982
4558
  }
3983
4559
  else {
3984
4560
  var handle = emnapiCtx.handleStore.get(description);
@@ -3987,7 +4563,7 @@ function createNapiModule(options) {
3987
4563
  return envObject.setLastError(3);
3988
4564
  }
3989
4565
  var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
3990
- HEAP_DATA_VIEW.setInt32(result, v, true);
4566
+ HEAP_DATA_VIEW.setUint32(result, v, true);
3991
4567
  }
3992
4568
  return envObject.clearLastError();
3993
4569
  }
@@ -4012,6 +4588,8 @@ function createNapiModule(options) {
4012
4588
  return envObject.setLastError(1);
4013
4589
  }
4014
4590
  var buffer = handle.value;
4591
+ byte_offset >>>= 0;
4592
+ length >>>= 0;
4015
4593
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
4016
4594
  var _a;
4017
4595
  byte_offset = byte_offset >>> 0;
@@ -4042,9 +4620,10 @@ function createNapiModule(options) {
4042
4620
  });
4043
4621
  }
4044
4622
  }
4623
+ result >>>= 0;
4045
4624
  value = emnapiCtx.addToCurrentScope(out).id;
4046
4625
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4047
- HEAP_DATA_VIEW.setInt32(result, value, true);
4626
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4048
4627
  return envObject.getReturnStatus();
4049
4628
  };
4050
4629
  switch (type) {
@@ -4070,6 +4649,11 @@ function createNapiModule(options) {
4070
4649
  return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4071
4650
  case 10:
4072
4651
  return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4652
+ case 11:
4653
+ if (typeof Float16Array !== 'function') {
4654
+ return envObject.setLastError(1);
4655
+ }
4656
+ return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
4073
4657
  default:
4074
4658
  return envObject.setLastError(1);
4075
4659
  }
@@ -4098,18 +4682,21 @@ function createNapiModule(options) {
4098
4682
  if (!Buffer) {
4099
4683
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
4100
4684
  }
4685
+ result >>>= 0;
4101
4686
  var buffer = void 0;
4687
+ size >>>= 0;
4102
4688
  size = size >>> 0;
4103
4689
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4104
4690
  if (!data || (size === 0)) {
4105
4691
  buffer = Buffer.alloc(size);
4106
4692
  value = emnapiCtx.addToCurrentScope(buffer).id;
4107
- HEAP_DATA_VIEW.setInt32(result, value, true);
4693
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4108
4694
  }
4109
4695
  else {
4110
4696
  pointer = _malloc(size);
4111
4697
  if (!pointer)
4112
4698
  throw new Error('Out of memory');
4699
+ pointer >>>= 0;
4113
4700
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
4114
4701
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
4115
4702
  var viewDescriptor = {
@@ -4122,8 +4709,9 @@ function createNapiModule(options) {
4122
4709
  emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
4123
4710
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
4124
4711
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
4125
- HEAP_DATA_VIEW.setInt32(result, value, true);
4126
- HEAP_DATA_VIEW.setInt32(data, pointer, true);
4712
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4713
+ data >>>= 0;
4714
+ HEAP_DATA_VIEW.setUint32(data, pointer, true);
4127
4715
  }
4128
4716
  return envObject.getReturnStatus();
4129
4717
  }
@@ -4150,12 +4738,15 @@ function createNapiModule(options) {
4150
4738
  if (!Buffer) {
4151
4739
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
4152
4740
  }
4153
- var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
4741
+ var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
4154
4742
  var buffer = Buffer.from(arrayBuffer);
4743
+ data >>>= 0;
4744
+ length >>>= 0;
4155
4745
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
4156
4746
  value = emnapiCtx.addToCurrentScope(buffer).id;
4747
+ result >>>= 0;
4157
4748
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4158
- HEAP_DATA_VIEW.setInt32(result, value, true);
4749
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4159
4750
  return envObject.getReturnStatus();
4160
4751
  }
4161
4752
  catch (err) {
@@ -4182,6 +4773,8 @@ function createNapiModule(options) {
4182
4773
  return envObject.setLastError(1);
4183
4774
  if (!result)
4184
4775
  return envObject.setLastError(1);
4776
+ byte_offset >>>= 0;
4777
+ byte_length >>>= 0;
4185
4778
  byte_offset = byte_offset >>> 0;
4186
4779
  byte_length = byte_length >>> 0;
4187
4780
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4210,9 +4803,10 @@ function createNapiModule(options) {
4210
4803
  });
4211
4804
  }
4212
4805
  }
4806
+ result >>>= 0;
4213
4807
  value = emnapiCtx.addToCurrentScope(out).id;
4214
4808
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4215
- HEAP_DATA_VIEW.setInt32(result, value, true);
4809
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4216
4810
  return envObject.getReturnStatus();
4217
4811
  }
4218
4812
  catch (err) {
@@ -4221,7 +4815,6 @@ function createNapiModule(options) {
4221
4815
  }
4222
4816
  }
4223
4817
  function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
4224
- var value;
4225
4818
  if (!env)
4226
4819
  return 1;
4227
4820
  var envObject = emnapiCtx.envStore.get(env);
@@ -4236,34 +4829,41 @@ function createNapiModule(options) {
4236
4829
  return envObject.setLastError(1);
4237
4830
  if (!result)
4238
4831
  return envObject.setLastError(1);
4832
+ byte_length >>>= 0;
4833
+ byte_offset >>>= 0;
4239
4834
  byte_length = byte_length >>> 0;
4240
4835
  byte_offset = byte_offset >>> 0;
4241
- var handle = emnapiCtx.handleStore.get(arraybuffer);
4242
- if (!handle.isArrayBuffer()) {
4243
- return envObject.setLastError(1);
4244
- }
4245
- var buffer = handle.value;
4246
- if ((byte_length + byte_offset) > buffer.byteLength) {
4247
- var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
4248
- err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
4249
- throw err;
4250
- }
4251
- var dataview = new DataView(buffer, byte_offset, byte_length);
4252
- if (buffer === wasmMemory.buffer) {
4253
- if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
4254
- emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
4255
- Ctor: DataView,
4256
- address: byte_offset,
4257
- length: byte_length,
4258
- ownership: 1,
4259
- runtimeAllocated: 0
4260
- });
4836
+ var value = emnapiCtx.handleStore.get(arraybuffer).value;
4837
+ var createDataview = function (buffer) {
4838
+ if ((byte_length + byte_offset) > buffer.byteLength) {
4839
+ var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
4840
+ err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
4841
+ throw err;
4261
4842
  }
4843
+ var dataview = new DataView(buffer, byte_offset, byte_length);
4844
+ if (buffer === wasmMemory.buffer) {
4845
+ if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
4846
+ emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
4847
+ Ctor: DataView,
4848
+ address: byte_offset,
4849
+ length: byte_length,
4850
+ ownership: 1,
4851
+ runtimeAllocated: 0
4852
+ });
4853
+ }
4854
+ }
4855
+ result >>>= 0;
4856
+ var v = emnapiCtx.addToCurrentScope(dataview).id;
4857
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4858
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4859
+ return envObject.getReturnStatus();
4860
+ };
4861
+ if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
4862
+ return createDataview(value);
4863
+ }
4864
+ else {
4865
+ return envObject.setLastError(1);
4262
4866
  }
4263
- value = emnapiCtx.addToCurrentScope(dataview).id;
4264
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4265
- HEAP_DATA_VIEW.setInt32(result, value, true);
4266
- return envObject.getReturnStatus();
4267
4867
  }
4268
4868
  catch (err) {
4269
4869
  envObject.tryCatch.setError(err);
@@ -4277,7 +4877,10 @@ function createNapiModule(options) {
4277
4877
  envObject.checkGCAccess();
4278
4878
  if (!result)
4279
4879
  return envObject.setLastError(1);
4280
- var autoLength = length === -1;
4880
+ length >>>= 0;
4881
+ utf8description >>>= 0;
4882
+ result >>>= 0;
4883
+ var autoLength = length === -1 || length === 4294967295;
4281
4884
  var sizelength = length >>> 0;
4282
4885
  if (length !== 0) {
4283
4886
  if (!utf8description)
@@ -4289,7 +4892,7 @@ function createNapiModule(options) {
4289
4892
  var descriptionString = emnapiString.UTF8ToString(utf8description, length);
4290
4893
  var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
4291
4894
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4292
- HEAP_DATA_VIEW.setInt32(result, value, true);
4895
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4293
4896
  return envObject.clearLastError();
4294
4897
  }
4295
4898
  var createMod = Object.freeze({
@@ -4308,6 +4911,8 @@ function createNapiModule(options) {
4308
4911
  napi_create_symbol: napi_create_symbol,
4309
4912
  napi_create_typedarray: napi_create_typedarray,
4310
4913
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
4914
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
4915
+ node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
4311
4916
  node_api_symbol_for: node_api_symbol_for
4312
4917
  });
4313
4918
  function napi_get_boolean(env, value, result) {
@@ -4317,9 +4922,10 @@ function createNapiModule(options) {
4317
4922
  envObject.checkGCAccess();
4318
4923
  if (!result)
4319
4924
  return envObject.setLastError(1);
4925
+ result >>>= 0;
4320
4926
  var v = value === 0 ? 3 : 4;
4321
4927
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4322
- HEAP_DATA_VIEW.setInt32(result, v, true);
4928
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4323
4929
  return envObject.clearLastError();
4324
4930
  }
4325
4931
  function napi_get_global(env, result) {
@@ -4329,9 +4935,10 @@ function createNapiModule(options) {
4329
4935
  envObject.checkGCAccess();
4330
4936
  if (!result)
4331
4937
  return envObject.setLastError(1);
4938
+ result >>>= 0;
4332
4939
  var value = 5;
4333
4940
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4334
- HEAP_DATA_VIEW.setInt32(result, value, true);
4941
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4335
4942
  return envObject.clearLastError();
4336
4943
  }
4337
4944
  function napi_get_null(env, result) {
@@ -4341,9 +4948,10 @@ function createNapiModule(options) {
4341
4948
  envObject.checkGCAccess();
4342
4949
  if (!result)
4343
4950
  return envObject.setLastError(1);
4951
+ result >>>= 0;
4344
4952
  var value = 2;
4345
4953
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4346
- HEAP_DATA_VIEW.setInt32(result, value, true);
4954
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4347
4955
  return envObject.clearLastError();
4348
4956
  }
4349
4957
  function napi_get_undefined(env, result) {
@@ -4353,9 +4961,10 @@ function createNapiModule(options) {
4353
4961
  envObject.checkGCAccess();
4354
4962
  if (!result)
4355
4963
  return envObject.setLastError(1);
4964
+ result >>>= 0;
4356
4965
  var value = 1;
4357
4966
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4358
- HEAP_DATA_VIEW.setInt32(result, value, true);
4967
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4359
4968
  return envObject.clearLastError();
4360
4969
  }
4361
4970
  var globalMod = Object.freeze({
@@ -4369,6 +4978,9 @@ function createNapiModule(options) {
4369
4978
  if (!env)
4370
4979
  return 1;
4371
4980
  var envObject = emnapiCtx.envStore.get(env);
4981
+ data >>>= 0;
4982
+ finalize_cb >>>= 0;
4983
+ finalize_hint >>>= 0;
4372
4984
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
4373
4985
  return envObject.clearLastError();
4374
4986
  }
@@ -4378,9 +4990,10 @@ function createNapiModule(options) {
4378
4990
  var envObject = emnapiCtx.envStore.get(env);
4379
4991
  if (!data)
4380
4992
  return envObject.setLastError(1);
4993
+ data >>>= 0;
4381
4994
  var value = envObject.getInstanceData();
4382
4995
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4383
- HEAP_DATA_VIEW.setInt32(data, value, true);
4996
+ HEAP_DATA_VIEW.setUint32(data, value, true);
4384
4997
  return envObject.clearLastError();
4385
4998
  }
4386
4999
  var envMod = Object.freeze({
@@ -4389,15 +5002,19 @@ function createNapiModule(options) {
4389
5002
  napi_set_instance_data: napi_set_instance_data
4390
5003
  });
4391
5004
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
5005
+ error_code >>>= 0;
5006
+ engine_error_code >>>= 0;
5007
+ engine_reserved >>>= 0;
4392
5008
  var envObject = emnapiCtx.envStore.get(env);
4393
5009
  var lastError = envObject.lastError;
4394
5010
  var errorCode = lastError.errorCode;
4395
5011
  var engineErrorCode = lastError.engineErrorCode >>> 0;
4396
5012
  var engineReserved = lastError.engineReserved;
5013
+ engineReserved >>>= 0;
4397
5014
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4398
5015
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
4399
5016
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
4400
- HEAP_DATA_VIEW.setInt32(engine_reserved, engineReserved, true);
5017
+ HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
4401
5018
  }
4402
5019
  function napi_throw(env, error) {
4403
5020
  if (!env)
@@ -4433,6 +5050,8 @@ function createNapiModule(options) {
4433
5050
  try {
4434
5051
  if (!msg)
4435
5052
  return envObject.setLastError(1);
5053
+ code >>>= 0;
5054
+ msg >>>= 0;
4436
5055
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
4437
5056
  if (code)
4438
5057
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4457,6 +5076,8 @@ function createNapiModule(options) {
4457
5076
  try {
4458
5077
  if (!msg)
4459
5078
  return envObject.setLastError(1);
5079
+ code >>>= 0;
5080
+ msg >>>= 0;
4460
5081
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
4461
5082
  if (code)
4462
5083
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4481,6 +5102,8 @@ function createNapiModule(options) {
4481
5102
  try {
4482
5103
  if (!msg)
4483
5104
  return envObject.setLastError(1);
5105
+ code >>>= 0;
5106
+ msg >>>= 0;
4484
5107
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
4485
5108
  if (code)
4486
5109
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4505,6 +5128,8 @@ function createNapiModule(options) {
4505
5128
  try {
4506
5129
  if (!msg)
4507
5130
  return envObject.setLastError(1);
5131
+ code >>>= 0;
5132
+ msg >>>= 0;
4508
5133
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
4509
5134
  if (code)
4510
5135
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4524,6 +5149,7 @@ function createNapiModule(options) {
4524
5149
  if (!result)
4525
5150
  return envObject.setLastError(1);
4526
5151
  var r = envObject.tryCatch.hasCaught();
5152
+ result >>>= 0;
4527
5153
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4528
5154
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
4529
5155
  return envObject.clearLastError();
@@ -4549,9 +5175,10 @@ function createNapiModule(options) {
4549
5175
  }
4550
5176
  error.code = codeValue;
4551
5177
  }
5178
+ result >>>= 0;
4552
5179
  var value = emnapiCtx.addToCurrentScope(error).id;
4553
5180
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4554
- HEAP_DATA_VIEW.setInt32(result, value, true);
5181
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4555
5182
  return envObject.clearLastError();
4556
5183
  }
4557
5184
  function napi_create_type_error(env, code, msg, result) {
@@ -4575,9 +5202,10 @@ function createNapiModule(options) {
4575
5202
  }
4576
5203
  error.code = codeValue;
4577
5204
  }
5205
+ result >>>= 0;
4578
5206
  var value = emnapiCtx.addToCurrentScope(error).id;
4579
5207
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4580
- HEAP_DATA_VIEW.setInt32(result, value, true);
5208
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4581
5209
  return envObject.clearLastError();
4582
5210
  }
4583
5211
  function napi_create_range_error(env, code, msg, result) {
@@ -4601,9 +5229,10 @@ function createNapiModule(options) {
4601
5229
  }
4602
5230
  error.code = codeValue;
4603
5231
  }
5232
+ result >>>= 0;
4604
5233
  var value = emnapiCtx.addToCurrentScope(error).id;
4605
5234
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4606
- HEAP_DATA_VIEW.setInt32(result, value, true);
5235
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4607
5236
  return envObject.clearLastError();
4608
5237
  }
4609
5238
  function node_api_create_syntax_error(env, code, msg, result) {
@@ -4627,9 +5256,10 @@ function createNapiModule(options) {
4627
5256
  }
4628
5257
  error.code = codeValue;
4629
5258
  }
5259
+ result >>>= 0;
4630
5260
  var value = emnapiCtx.addToCurrentScope(error).id;
4631
5261
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4632
- HEAP_DATA_VIEW.setInt32(result, value, true);
5262
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4633
5263
  return envObject.clearLastError();
4634
5264
  }
4635
5265
  function napi_get_and_clear_last_exception(env, result) {
@@ -4639,20 +5269,25 @@ function createNapiModule(options) {
4639
5269
  envObject.checkGCAccess();
4640
5270
  if (!result)
4641
5271
  return envObject.setLastError(1);
5272
+ result >>>= 0;
4642
5273
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4643
5274
  if (!envObject.tryCatch.hasCaught()) {
4644
- HEAP_DATA_VIEW.setInt32(result, 1, true);
5275
+ HEAP_DATA_VIEW.setUint32(result, 1, true);
4645
5276
  return envObject.clearLastError();
4646
5277
  }
4647
5278
  else {
4648
5279
  var err = envObject.tryCatch.exception();
4649
5280
  var value = envObject.ensureHandleId(err);
4650
- HEAP_DATA_VIEW.setInt32(result, value, true);
5281
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4651
5282
  envObject.tryCatch.reset();
4652
5283
  }
4653
5284
  return envObject.clearLastError();
4654
5285
  }
4655
5286
  function napi_fatal_error(location, location_len, message, message_len) {
5287
+ location >>>= 0;
5288
+ location_len >>>= 0;
5289
+ message >>>= 0;
5290
+ message_len >>>= 0;
4656
5291
  var locationStr = emnapiString.UTF8ToString(location, location_len);
4657
5292
  var messageStr = emnapiString.UTF8ToString(message, message_len);
4658
5293
  if (emnapiNodeBinding) {
@@ -4706,8 +5341,21 @@ function createNapiModule(options) {
4706
5341
  node_api_create_syntax_error: node_api_create_syntax_error,
4707
5342
  node_api_throw_syntax_error: node_api_throw_syntax_error
4708
5343
  });
5344
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
5345
+ length >>>= 0;
5346
+ var envObject = emnapiCtx.envStore.get(env);
5347
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
5348
+ if (fresult.status !== 0)
5349
+ return envObject.setLastError(fresult.status);
5350
+ var f = fresult.f;
5351
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
5352
+ result >>>= 0;
5353
+ var value = valueHandle.id;
5354
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5355
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5356
+ return envObject.getReturnStatus();
5357
+ }
4709
5358
  function napi_create_function(env, utf8name, length, cb, data, result) {
4710
- var value;
4711
5359
  if (!env)
4712
5360
  return 1;
4713
5361
  var envObject = emnapiCtx.envStore.get(env);
@@ -4722,15 +5370,7 @@ function createNapiModule(options) {
4722
5370
  return envObject.setLastError(1);
4723
5371
  if (!cb)
4724
5372
  return envObject.setLastError(1);
4725
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
4726
- if (fresult.status !== 0)
4727
- return envObject.setLastError(fresult.status);
4728
- var f = fresult.f;
4729
- var valueHandle = emnapiCtx.addToCurrentScope(f);
4730
- value = valueHandle.id;
4731
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4732
- HEAP_DATA_VIEW.setInt32(result, value, true);
4733
- return envObject.getReturnStatus();
5373
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
4734
5374
  }
4735
5375
  catch (err) {
4736
5376
  envObject.tryCatch.setError(err);
@@ -4744,21 +5384,24 @@ function createNapiModule(options) {
4744
5384
  if (!cbinfo)
4745
5385
  return envObject.setLastError(1);
4746
5386
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5387
+ argc >>>= 0;
5388
+ argv >>>= 0;
4747
5389
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4748
5390
  if (argv) {
4749
5391
  if (!argc)
4750
5392
  return envObject.setLastError(1);
4751
5393
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
5394
+ argcValue >>>= 0;
4752
5395
  var len = cbinfoValue.args.length;
4753
5396
  var arrlen = argcValue < len ? argcValue : len;
4754
5397
  var i = 0;
4755
5398
  for (; i < arrlen; i++) {
4756
5399
  var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
4757
- HEAP_DATA_VIEW.setInt32(argv + i * 4, argVal, true);
5400
+ HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
4758
5401
  }
4759
5402
  if (i < argcValue) {
4760
5403
  for (; i < argcValue; i++) {
4761
- HEAP_DATA_VIEW.setInt32(argv + i * 4, 1, true);
5404
+ HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
4762
5405
  }
4763
5406
  }
4764
5407
  }
@@ -4766,11 +5409,13 @@ function createNapiModule(options) {
4766
5409
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
4767
5410
  }
4768
5411
  if (this_arg) {
5412
+ this_arg >>>= 0;
4769
5413
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
4770
- HEAP_DATA_VIEW.setInt32(this_arg, v, true);
5414
+ HEAP_DATA_VIEW.setUint32(this_arg, v, true);
4771
5415
  }
4772
5416
  if (data) {
4773
- HEAP_DATA_VIEW.setInt32(data, cbinfoValue.data, true);
5417
+ data >>>= 0;
5418
+ HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
4774
5419
  }
4775
5420
  return envObject.clearLastError();
4776
5421
  }
@@ -4789,6 +5434,9 @@ function createNapiModule(options) {
4789
5434
  try {
4790
5435
  if (!recv)
4791
5436
  return envObject.setLastError(1);
5437
+ argc >>>= 0;
5438
+ argv >>>= 0;
5439
+ result >>>= 0;
4792
5440
  argc = argc >>> 0;
4793
5441
  if (argc > 0) {
4794
5442
  if (!argv)
@@ -4803,13 +5451,13 @@ function createNapiModule(options) {
4803
5451
  var args = [];
4804
5452
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4805
5453
  for (; i < argc; i++) {
4806
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
5454
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
4807
5455
  args.push(emnapiCtx.handleStore.get(argVal).value);
4808
5456
  }
4809
5457
  var ret = v8func.apply(v8recv, args);
4810
5458
  if (result) {
4811
5459
  v = envObject.ensureHandleId(ret);
4812
- HEAP_DATA_VIEW.setInt32(result, v, true);
5460
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4813
5461
  }
4814
5462
  return envObject.clearLastError();
4815
5463
  }
@@ -4833,6 +5481,9 @@ function createNapiModule(options) {
4833
5481
  try {
4834
5482
  if (!constructor)
4835
5483
  return envObject.setLastError(1);
5484
+ argc >>>= 0;
5485
+ argv >>>= 0;
5486
+ result >>>= 0;
4836
5487
  argc = argc >>> 0;
4837
5488
  if (argc > 0) {
4838
5489
  if (!argv)
@@ -4848,7 +5499,7 @@ function createNapiModule(options) {
4848
5499
  if (emnapiCtx.feature.supportReflect) {
4849
5500
  var argList = Array(argc);
4850
5501
  for (i = 0; i < argc; i++) {
4851
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
5502
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
4852
5503
  argList[i] = emnapiCtx.handleStore.get(argVal).value;
4853
5504
  }
4854
5505
  ret = Reflect.construct(Ctor, argList, Ctor);
@@ -4857,7 +5508,7 @@ function createNapiModule(options) {
4857
5508
  var args = Array(argc + 1);
4858
5509
  args[0] = undefined;
4859
5510
  for (i = 0; i < argc; i++) {
4860
- var argVal = HEAP_DATA_VIEW.getInt32(argv + i * 4, true);
5511
+ var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
4861
5512
  args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
4862
5513
  }
4863
5514
  var BoundCtor = Ctor.bind.apply(Ctor, args);
@@ -4865,7 +5516,7 @@ function createNapiModule(options) {
4865
5516
  }
4866
5517
  if (result) {
4867
5518
  v = envObject.ensureHandleId(ret);
4868
- HEAP_DATA_VIEW.setInt32(result, v, true);
5519
+ HEAP_DATA_VIEW.setUint32(result, v, true);
4869
5520
  }
4870
5521
  return envObject.getReturnStatus();
4871
5522
  }
@@ -4883,6 +5534,7 @@ function createNapiModule(options) {
4883
5534
  return envObject.setLastError(1);
4884
5535
  if (!result)
4885
5536
  return envObject.setLastError(1);
5537
+ result >>>= 0;
4886
5538
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
4887
5539
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
4888
5540
  var value = thiz == null || thiz.constructor == null
@@ -4891,11 +5543,12 @@ function createNapiModule(options) {
4891
5543
  ? envObject.ensureHandleId(thiz.constructor)
4892
5544
  : 0;
4893
5545
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4894
- HEAP_DATA_VIEW.setInt32(result, value, true);
5546
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4895
5547
  return envObject.clearLastError();
4896
5548
  }
4897
5549
  var functionMod = Object.freeze({
4898
5550
  __proto__: null,
5551
+ _emnapi_create_function: _emnapi_create_function,
4899
5552
  napi_call_function: napi_call_function,
4900
5553
  napi_create_function: napi_create_function,
4901
5554
  napi_get_cb_info: napi_get_cb_info,
@@ -4910,8 +5563,9 @@ function createNapiModule(options) {
4910
5563
  if (!result)
4911
5564
  return envObject.setLastError(1);
4912
5565
  var scope = emnapiCtx.openScope(envObject);
5566
+ result >>>= 0;
4913
5567
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4914
- HEAP_DATA_VIEW.setInt32(result, scope.id, true);
5568
+ HEAP_DATA_VIEW.setUint32(result, scope.id, true);
4915
5569
  return envObject.clearLastError();
4916
5570
  }
4917
5571
  function napi_close_handle_scope(env, scope) {
@@ -4935,8 +5589,9 @@ function createNapiModule(options) {
4935
5589
  if (!result)
4936
5590
  return envObject.setLastError(1);
4937
5591
  var scope = emnapiCtx.openScope(envObject);
5592
+ result >>>= 0;
4938
5593
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4939
- HEAP_DATA_VIEW.setInt32(result, scope.id, true);
5594
+ HEAP_DATA_VIEW.setUint32(result, scope.id, true);
4940
5595
  return envObject.clearLastError();
4941
5596
  }
4942
5597
  function napi_close_escapable_handle_scope(env, scope) {
@@ -4965,10 +5620,12 @@ function createNapiModule(options) {
4965
5620
  return envObject.setLastError(1);
4966
5621
  var scopeObject = emnapiCtx.scopeStore.get(scope);
4967
5622
  if (!scopeObject.escapeCalled()) {
5623
+ escapee >>>= 0;
5624
+ result >>>= 0;
4968
5625
  var newHandle = scopeObject.escape(escapee);
4969
5626
  var value = newHandle ? newHandle.id : 0;
4970
5627
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4971
- HEAP_DATA_VIEW.setInt32(result, value, true);
5628
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4972
5629
  return envObject.clearLastError();
4973
5630
  }
4974
5631
  return envObject.setLastError(12);
@@ -4989,8 +5646,9 @@ function createNapiModule(options) {
4989
5646
  }
4990
5647
  }
4991
5648
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
5649
+ result >>>= 0;
4992
5650
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4993
- HEAP_DATA_VIEW.setInt32(result, ref.id, true);
5651
+ HEAP_DATA_VIEW.setUint32(result, ref.id, true);
4994
5652
  return envObject.clearLastError();
4995
5653
  }
4996
5654
  function napi_delete_reference(env, ref) {
@@ -5011,6 +5669,7 @@ function createNapiModule(options) {
5011
5669
  return envObject.setLastError(1);
5012
5670
  var count = emnapiCtx.refStore.get(ref).ref();
5013
5671
  if (result) {
5672
+ result >>>= 0;
5014
5673
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5015
5674
  HEAP_DATA_VIEW.setUint32(result, count, true);
5016
5675
  }
@@ -5030,6 +5689,7 @@ function createNapiModule(options) {
5030
5689
  }
5031
5690
  var count = reference.unref();
5032
5691
  if (result) {
5692
+ result >>>= 0;
5033
5693
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5034
5694
  HEAP_DATA_VIEW.setUint32(result, count, true);
5035
5695
  }
@@ -5046,8 +5706,9 @@ function createNapiModule(options) {
5046
5706
  return envObject.setLastError(1);
5047
5707
  var reference = emnapiCtx.refStore.get(ref);
5048
5708
  var handleId = reference.get(envObject);
5709
+ result >>>= 0;
5049
5710
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5050
- HEAP_DATA_VIEW.setInt32(result, handleId, true);
5711
+ HEAP_DATA_VIEW.setUint32(result, handleId, true);
5051
5712
  return envObject.clearLastError();
5052
5713
  }
5053
5714
  function napi_add_env_cleanup_hook(env, fun, arg) {
@@ -5056,6 +5717,8 @@ function createNapiModule(options) {
5056
5717
  var envObject = emnapiCtx.envStore.get(env);
5057
5718
  if (!fun)
5058
5719
  return envObject.setLastError(1);
5720
+ fun >>>= 0;
5721
+ arg >>>= 0;
5059
5722
  emnapiCtx.addCleanupHook(envObject, fun, arg);
5060
5723
  return 0;
5061
5724
  }
@@ -5065,6 +5728,8 @@ function createNapiModule(options) {
5065
5728
  var envObject = emnapiCtx.envStore.get(env);
5066
5729
  if (!fun)
5067
5730
  return envObject.setLastError(1);
5731
+ fun >>>= 0;
5732
+ arg >>>= 0;
5068
5733
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
5069
5734
  return 0;
5070
5735
  }
@@ -5125,10 +5790,12 @@ function createNapiModule(options) {
5125
5790
  var p = new Promise(function (resolve, reject) {
5126
5791
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
5127
5792
  deferredObjectId = deferredObject.id;
5128
- HEAP_DATA_VIEW.setInt32(deferred, deferredObjectId, true);
5793
+ deferred >>>= 0;
5794
+ HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
5129
5795
  });
5796
+ promise >>>= 0;
5130
5797
  value = emnapiCtx.addToCurrentScope(p).id;
5131
- HEAP_DATA_VIEW.setInt32(promise, value, true);
5798
+ HEAP_DATA_VIEW.setUint32(promise, value, true);
5132
5799
  return envObject.getReturnStatus();
5133
5800
  }
5134
5801
  catch (err) {
@@ -5194,6 +5861,7 @@ function createNapiModule(options) {
5194
5861
  if (!is_promise)
5195
5862
  return envObject.setLastError(1);
5196
5863
  var h = emnapiCtx.handleStore.get(value);
5864
+ is_promise >>>= 0;
5197
5865
  var r = h.isPromise() ? 1 : 0;
5198
5866
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5199
5867
  HEAP_DATA_VIEW.setInt8(is_promise, r, true);
@@ -5337,9 +6005,10 @@ function createNapiModule(options) {
5337
6005
  }
5338
6006
  }
5339
6007
  }
6008
+ result >>>= 0;
5340
6009
  value = emnapiCtx.addToCurrentScope(ret).id;
5341
6010
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5342
- HEAP_DATA_VIEW.setInt32(result, value, true);
6011
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5343
6012
  return envObject.getReturnStatus();
5344
6013
  }
5345
6014
  catch (err) {
@@ -5408,6 +6077,7 @@ function createNapiModule(options) {
5408
6077
  catch (_) {
5409
6078
  return envObject.setLastError(2);
5410
6079
  }
6080
+ result >>>= 0;
5411
6081
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
5412
6082
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5413
6083
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5447,9 +6117,10 @@ function createNapiModule(options) {
5447
6117
  catch (_) {
5448
6118
  return envObject.setLastError(2);
5449
6119
  }
6120
+ result >>>= 0;
5450
6121
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
5451
6122
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5452
- HEAP_DATA_VIEW.setInt32(result, value, true);
6123
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5453
6124
  return envObject.getReturnStatus();
5454
6125
  }
5455
6126
  catch (err) {
@@ -5490,6 +6161,7 @@ function createNapiModule(options) {
5490
6161
  }
5491
6162
  }
5492
6163
  if (result) {
6164
+ result >>>= 0;
5493
6165
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5494
6166
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5495
6167
  }
@@ -5534,6 +6206,7 @@ function createNapiModule(options) {
5534
6206
  return envObject.setLastError(4);
5535
6207
  }
5536
6208
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
6209
+ result >>>= 0;
5537
6210
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5538
6211
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5539
6212
  return envObject.getReturnStatus();
@@ -5565,6 +6238,7 @@ function createNapiModule(options) {
5565
6238
  if (!cname) {
5566
6239
  return envObject.setLastError(1);
5567
6240
  }
6241
+ cname >>>= 0;
5568
6242
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
5569
6243
  return envObject.getReturnStatus();
5570
6244
  }
@@ -5603,6 +6277,8 @@ function createNapiModule(options) {
5603
6277
  catch (_) {
5604
6278
  return envObject.setLastError(2);
5605
6279
  }
6280
+ utf8name >>>= 0;
6281
+ result >>>= 0;
5606
6282
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
5607
6283
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5608
6284
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -5643,9 +6319,11 @@ function createNapiModule(options) {
5643
6319
  catch (_) {
5644
6320
  return envObject.setLastError(2);
5645
6321
  }
6322
+ utf8name >>>= 0;
6323
+ result >>>= 0;
5646
6324
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
5647
6325
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5648
- HEAP_DATA_VIEW.setInt32(result, value, true);
6326
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5649
6327
  return envObject.getReturnStatus();
5650
6328
  }
5651
6329
  catch (err) {
@@ -5707,6 +6385,7 @@ function createNapiModule(options) {
5707
6385
  catch (_) {
5708
6386
  return envObject.setLastError(2);
5709
6387
  }
6388
+ result >>>= 0;
5710
6389
  r = ((index >>> 0) in v) ? 1 : 0;
5711
6390
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5712
6391
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5744,9 +6423,10 @@ function createNapiModule(options) {
5744
6423
  catch (_) {
5745
6424
  return envObject.setLastError(2);
5746
6425
  }
6426
+ result >>>= 0;
5747
6427
  value = envObject.ensureHandleId(v[index >>> 0]);
5748
6428
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5749
- HEAP_DATA_VIEW.setInt32(result, value, true);
6429
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5750
6430
  return envObject.getReturnStatus();
5751
6431
  }
5752
6432
  catch (err) {
@@ -5784,6 +6464,7 @@ function createNapiModule(options) {
5784
6464
  }
5785
6465
  }
5786
6466
  if (result) {
6467
+ result >>>= 0;
5787
6468
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5788
6469
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5789
6470
  }
@@ -5806,6 +6487,8 @@ function createNapiModule(options) {
5806
6487
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
5807
6488
  envObject.clearLastError();
5808
6489
  try {
6490
+ properties >>>= 0;
6491
+ property_count >>>= 0;
5809
6492
  property_count = property_count >>> 0;
5810
6493
  if (property_count > 0) {
5811
6494
  if (!properties)
@@ -5822,14 +6505,15 @@ function createNapiModule(options) {
5822
6505
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5823
6506
  for (var i = 0; i < property_count; i++) {
5824
6507
  propPtr = properties + (i * (4 * 8));
5825
- var utf8Name = HEAP_DATA_VIEW.getInt32(propPtr, true);
5826
- var name_2 = HEAP_DATA_VIEW.getInt32(propPtr + 4, true);
5827
- var method = HEAP_DATA_VIEW.getInt32(propPtr + 8, true);
5828
- var getter = HEAP_DATA_VIEW.getInt32(propPtr + 12, true);
5829
- var setter = HEAP_DATA_VIEW.getInt32(propPtr + 16, true);
5830
- var value = HEAP_DATA_VIEW.getInt32(propPtr + 20, true);
6508
+ var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
6509
+ var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
6510
+ var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
6511
+ var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
6512
+ var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
6513
+ var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
5831
6514
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
5832
- var data = HEAP_DATA_VIEW.getInt32(propPtr + 28, true);
6515
+ attributes >>>= 0;
6516
+ var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
5833
6517
  if (utf8Name) {
5834
6518
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
5835
6519
  }
@@ -5946,9 +6630,10 @@ function createNapiModule(options) {
5946
6630
  }
5947
6631
  var g = emnapiCtx.handleStore.get(5).value;
5948
6632
  var ret = g.eval(v8Script.value);
6633
+ result >>>= 0;
5949
6634
  value = envObject.ensureHandleId(ret);
5950
6635
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5951
- HEAP_DATA_VIEW.setInt32(result, value, true);
6636
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5952
6637
  status = envObject.getReturnStatus();
5953
6638
  }
5954
6639
  catch (err) {
@@ -5971,6 +6656,7 @@ function createNapiModule(options) {
5971
6656
  if (!result)
5972
6657
  return envObject.setLastError(1);
5973
6658
  var v = emnapiCtx.handleStore.get(value);
6659
+ result >>>= 0;
5974
6660
  var r;
5975
6661
  if (v.isNumber()) {
5976
6662
  r = 3;
@@ -6026,9 +6712,10 @@ function createNapiModule(options) {
6026
6712
  if (!result)
6027
6713
  return envObject.setLastError(1);
6028
6714
  var handle = emnapiCtx.handleStore.get(value);
6715
+ result >>>= 0;
6029
6716
  v = handle.value ? 4 : 3;
6030
6717
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6031
- HEAP_DATA_VIEW.setInt32(result, v, true);
6718
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6032
6719
  return envObject.getReturnStatus();
6033
6720
  }
6034
6721
  catch (err) {
@@ -6056,9 +6743,10 @@ function createNapiModule(options) {
6056
6743
  if (handle.isBigInt()) {
6057
6744
  throw new TypeError('Cannot convert a BigInt value to a number');
6058
6745
  }
6746
+ result >>>= 0;
6059
6747
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
6060
6748
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6061
- HEAP_DATA_VIEW.setInt32(result, v, true);
6749
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6062
6750
  return envObject.getReturnStatus();
6063
6751
  }
6064
6752
  catch (err) {
@@ -6086,9 +6774,10 @@ function createNapiModule(options) {
6086
6774
  if (handle.value == null) {
6087
6775
  throw new TypeError('Cannot convert undefined or null to object');
6088
6776
  }
6777
+ result >>>= 0;
6089
6778
  v = envObject.ensureHandleId(Object(handle.value));
6090
6779
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6091
- HEAP_DATA_VIEW.setInt32(result, v, true);
6780
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6092
6781
  return envObject.getReturnStatus();
6093
6782
  }
6094
6783
  catch (err) {
@@ -6116,9 +6805,10 @@ function createNapiModule(options) {
6116
6805
  if (handle.isSymbol()) {
6117
6806
  throw new TypeError('Cannot convert a Symbol value to a string');
6118
6807
  }
6808
+ result >>>= 0;
6119
6809
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
6120
6810
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6121
- HEAP_DATA_VIEW.setInt32(result, v, true);
6811
+ HEAP_DATA_VIEW.setUint32(result, v, true);
6122
6812
  return envObject.getReturnStatus();
6123
6813
  }
6124
6814
  catch (err) {
@@ -6144,6 +6834,7 @@ function createNapiModule(options) {
6144
6834
  return envObject.setLastError(1);
6145
6835
  if (!constructor)
6146
6836
  return envObject.setLastError(1);
6837
+ result >>>= 0;
6147
6838
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6148
6839
  HEAP_DATA_VIEW.setInt8(result, 0, true);
6149
6840
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -6171,6 +6862,7 @@ function createNapiModule(options) {
6171
6862
  if (!result)
6172
6863
  return envObject.setLastError(1);
6173
6864
  var h = emnapiCtx.handleStore.get(value);
6865
+ result >>>= 0;
6174
6866
  var r = h.isArray() ? 1 : 0;
6175
6867
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6176
6868
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6186,11 +6878,31 @@ function createNapiModule(options) {
6186
6878
  if (!result)
6187
6879
  return envObject.setLastError(1);
6188
6880
  var h = emnapiCtx.handleStore.get(value);
6881
+ result >>>= 0;
6189
6882
  var r = h.isArrayBuffer() ? 1 : 0;
6190
6883
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6191
6884
  HEAP_DATA_VIEW.setInt8(result, r, true);
6192
6885
  return envObject.clearLastError();
6193
6886
  }
6887
+ function node_api_is_sharedarraybuffer(env, value, result) {
6888
+ if (!env)
6889
+ return 1;
6890
+ var envObject = emnapiCtx.envStore.get(env);
6891
+ envObject.checkGCAccess();
6892
+ if (!value)
6893
+ return envObject.setLastError(1);
6894
+ if (!result)
6895
+ return envObject.setLastError(1);
6896
+ var h = emnapiCtx.handleStore.get(value);
6897
+ result >>>= 0;
6898
+ var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
6899
+ (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
6900
+ ? 1
6901
+ : 0;
6902
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6903
+ HEAP_DATA_VIEW.setInt8(result, r, true);
6904
+ return envObject.clearLastError();
6905
+ }
6194
6906
  function napi_is_date(env, value, result) {
6195
6907
  if (!env)
6196
6908
  return 1;
@@ -6201,6 +6913,7 @@ function createNapiModule(options) {
6201
6913
  if (!result)
6202
6914
  return envObject.setLastError(1);
6203
6915
  var h = emnapiCtx.handleStore.get(value);
6916
+ result >>>= 0;
6204
6917
  var r = h.isDate() ? 1 : 0;
6205
6918
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6206
6919
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6216,6 +6929,7 @@ function createNapiModule(options) {
6216
6929
  if (!result)
6217
6930
  return envObject.setLastError(1);
6218
6931
  var val = emnapiCtx.handleStore.get(value).value;
6932
+ result >>>= 0;
6219
6933
  var r = (val instanceof Error) ? 1 : 0;
6220
6934
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6221
6935
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6231,6 +6945,7 @@ function createNapiModule(options) {
6231
6945
  if (!result)
6232
6946
  return envObject.setLastError(1);
6233
6947
  var h = emnapiCtx.handleStore.get(value);
6948
+ result >>>= 0;
6234
6949
  var r = h.isTypedArray() ? 1 : 0;
6235
6950
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6236
6951
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6246,6 +6961,7 @@ function createNapiModule(options) {
6246
6961
  if (!result)
6247
6962
  return envObject.setLastError(1);
6248
6963
  var h = emnapiCtx.handleStore.get(value);
6964
+ result >>>= 0;
6249
6965
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
6250
6966
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6251
6967
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6261,6 +6977,7 @@ function createNapiModule(options) {
6261
6977
  if (!result)
6262
6978
  return envObject.setLastError(1);
6263
6979
  var h = emnapiCtx.handleStore.get(value);
6980
+ result >>>= 0;
6264
6981
  var r = h.isDataView() ? 1 : 0;
6265
6982
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6266
6983
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6286,6 +7003,7 @@ function createNapiModule(options) {
6286
7003
  return envObject.setLastError(1);
6287
7004
  var lv = emnapiCtx.handleStore.get(lhs).value;
6288
7005
  var rv = emnapiCtx.handleStore.get(rhs).value;
7006
+ result >>>= 0;
6289
7007
  r = (lv === rv) ? 1 : 0;
6290
7008
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6291
7009
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6336,6 +7054,7 @@ function createNapiModule(options) {
6336
7054
  if (!result)
6337
7055
  return envObject.setLastError(1);
6338
7056
  var h = emnapiCtx.handleStore.get(arraybuffer);
7057
+ result >>>= 0;
6339
7058
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6340
7059
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
6341
7060
  try {
@@ -6371,7 +7090,8 @@ function createNapiModule(options) {
6371
7090
  napi_is_error: napi_is_error,
6372
7091
  napi_is_typedarray: napi_is_typedarray,
6373
7092
  napi_strict_equals: napi_strict_equals,
6374
- napi_typeof: napi_typeof
7093
+ napi_typeof: napi_typeof,
7094
+ node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
6375
7095
  });
6376
7096
  function napi_get_version(env, result) {
6377
7097
  if (!env)
@@ -6522,9 +7242,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
6522
7242
  }
6523
7243
  const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
6524
7244
  if (wasi && !exportMemory) {
6525
- const exports = Object.create(null);
6526
- Object.assign(exports, originalExports, { memory });
6527
- instance = { exports };
7245
+ const exports$1 = Object.create(null);
7246
+ Object.assign(exports$1, originalExports, { memory });
7247
+ instance = { exports: exports$1 };
6528
7248
  }
6529
7249
  const module = source.module;
6530
7250
  if (wasi) {
@@ -6609,7 +7329,23 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
6609
7329
  if (typeof options.onLoad !== 'function') {
6610
7330
  throw new TypeError('options.onLoad is not a function');
6611
7331
  }
6612
- super(options);
7332
+ const userOnError = options.onError;
7333
+ super({
7334
+ ...options,
7335
+ onError: (err, type) => {
7336
+ var _a;
7337
+ const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
7338
+ if (typeof emnapi_thread_crashed === 'function') {
7339
+ emnapi_thread_crashed();
7340
+ }
7341
+ if (typeof userOnError === 'function') {
7342
+ userOnError(err, type);
7343
+ }
7344
+ else {
7345
+ throw err;
7346
+ }
7347
+ }
7348
+ });
6613
7349
  this.napiModule = undefined;
6614
7350
  }
6615
7351
  instantiate(data) {
@@ -6630,21 +7366,21 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
6630
7366
  if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
6631
7367
  const type = e.data.__emnapi__.type;
6632
7368
  const payload = e.data.__emnapi__.payload;
6633
- if (type === 'async-worker-init') {
6634
- this.handleAfterLoad(e, () => {
6635
- this.napiModule.initWorker(payload.arg);
6636
- });
7369
+ try {
7370
+ if (type === 'async-worker-init') {
7371
+ this.handleAfterLoad(e, () => {
7372
+ this.napiModule.initWorker(payload.arg, payload.func);
7373
+ });
7374
+ }
6637
7375
  }
6638
- else if (type === 'async-work-execute') {
6639
- this.handleAfterLoad(e, () => {
6640
- this.napiModule.executeAsyncWork(payload.work);
6641
- });
7376
+ catch (err) {
7377
+ this.onError(err, type);
6642
7378
  }
6643
7379
  }
6644
7380
  }
6645
7381
  }
6646
7382
 
6647
- const version = "1.4.4";
7383
+ const version = "1.10.0";
6648
7384
 
6649
7385
  exports.MessageHandler = MessageHandler;
6650
7386
  exports.createNapiModule = createNapiModule;