@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.fbc358c → 0.0.0-insiders.fc17df0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +904 -308
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +3 -2
  3. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
  4. package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +3 -2
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +3 -2
  6. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +946 -314
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +958 -329
  8. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +3 -2
  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 +904 -308
  12. package/node_modules/@emnapi/core/package.json +2 -2
  13. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +32 -5
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +11 -3
  15. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  16. package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +11 -3
  17. package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +11 -3
  18. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +33 -5
  19. package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +8 -2
  20. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +33 -5
  21. package/node_modules/@emnapi/runtime/dist/emnapi.js +33 -5
  22. package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +11 -3
  23. package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
  24. package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
  25. package/node_modules/@emnapi/runtime/dist/emnapi.mjs +32 -5
  26. package/node_modules/@emnapi/runtime/package.json +1 -1
  27. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +17 -20
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -0
  29. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
  30. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +2 -0
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -0
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +17 -20
  33. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +17 -20
  34. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -0
  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 +17 -20
  38. package/node_modules/@emnapi/wasi-threads/package.json +1 -1
  39. package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +47 -12
  40. package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +14310 -10201
  41. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +47 -12
  42. package/node_modules/@napi-rs/wasm-runtime/package.json +11 -4
  43. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +164 -2
  44. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +164 -2
  45. package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
  46. package/node_modules/@tybys/wasm-util/dist/wasm-util.js +164 -2
  47. package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
  48. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
  49. package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +22 -2
  50. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
  51. package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +22 -2
  52. package/node_modules/@tybys/wasm-util/package.json +1 -1
  53. package/package.json +7 -7
  54. package/tailwindcss-oxide.wasi-browser.js +1 -0
  55. package/tailwindcss-oxide.wasi.cjs +1 -1
  56. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  57. package/wasi-worker-browser.mjs +4 -0
@@ -108,7 +108,6 @@ function createNapiModule(options) {
108
108
  filename: '',
109
109
  childThread: ENVIRONMENT_IS_PTHREAD,
110
110
  initWorker: undefined,
111
- executeAsyncWork: undefined,
112
111
  waitThreadStart: waitThreadStart,
113
112
  PThread: undefined,
114
113
  init: function (options) {
@@ -296,6 +295,9 @@ function createNapiModule(options) {
296
295
  return envObject.clearLastError();
297
296
  }
298
297
  function _emnapi_get_node_version(major, minor, patch) {
298
+ major >>>= 0;
299
+ minor >>>= 0;
300
+ patch >>>= 0;
299
301
  var versions = (typeof process === 'object' && process !== null &&
300
302
  typeof process.versions === 'object' && process.versions !== null &&
301
303
  typeof process.versions.node === 'string')
@@ -339,6 +341,7 @@ function createNapiModule(options) {
339
341
  }
340
342
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
341
343
  var envObject = emnapiCtx.envStore.get(env);
344
+ callback >>>= 0;
342
345
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
343
346
  }
344
347
  function _emnapi_ctx_increase_waiting_request_counter() {
@@ -403,9 +406,19 @@ function createNapiModule(options) {
403
406
  var worker = PThread.pthreads[tid];
404
407
  return worker;
405
408
  }
409
+ function _emnapi_worker_ref(pthreadPtr) {
410
+ if (ENVIRONMENT_IS_PTHREAD)
411
+ return;
412
+ pthreadPtr >>>= 0;
413
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
414
+ if (worker && typeof worker.ref === 'function') {
415
+ worker.ref();
416
+ }
417
+ }
406
418
  function _emnapi_worker_unref(pthreadPtr) {
407
419
  if (ENVIRONMENT_IS_PTHREAD)
408
420
  return;
421
+ pthreadPtr >>>= 0;
409
422
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
410
423
  if (worker && typeof worker.unref === 'function') {
411
424
  worker.unref();
@@ -506,6 +519,7 @@ function createNapiModule(options) {
506
519
  _emnapi_async_send_js: _emnapi_async_send_js,
507
520
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
508
521
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
522
+ _emnapi_worker_ref: _emnapi_worker_ref,
509
523
  _emnapi_worker_unref: _emnapi_worker_unref
510
524
  });
511
525
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
@@ -514,22 +528,14 @@ function createNapiModule(options) {
514
528
  var envObject = emnapiCtx.envStore.get(env);
515
529
  if (!adjusted_value)
516
530
  return envObject.setLastError(1);
517
- var change_in_bytes_number = Number(change_in_bytes);
518
- if (change_in_bytes_number < 0) {
519
- return envObject.setLastError(1);
520
- }
521
- var old_size = wasmMemory.buffer.byteLength;
522
- var new_size = old_size + change_in_bytes_number;
523
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
524
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
525
- return envObject.setLastError(9);
526
- }
531
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
532
+ adjusted_value >>>= 0;
527
533
  if (emnapiCtx.feature.supportBigInt) {
528
534
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
529
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
535
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
530
536
  }
531
537
  else {
532
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
538
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
533
539
  }
534
540
  return envObject.clearLastError();
535
541
  }
@@ -687,6 +693,7 @@ function createNapiModule(options) {
687
693
  var asyncId = asyncContext.asyncId;
688
694
  var triggerAsyncId = asyncContext.triggerAsyncId;
689
695
  if (result) {
696
+ result >>>= 0;
690
697
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
691
698
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
692
699
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -707,6 +714,8 @@ function createNapiModule(options) {
707
714
  return;
708
715
  var resource = emnapiCtx.handleStore.get(async_resource).value;
709
716
  var callback = emnapiCtx.handleStore.get(cb).value;
717
+ argv >>>= 0;
718
+ size >>>= 0;
710
719
  size = size >>> 0;
711
720
  var arr = Array(size);
712
721
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -719,6 +728,7 @@ function createNapiModule(options) {
719
728
  triggerAsyncId: trigger_async_id
720
729
  });
721
730
  if (result) {
731
+ result >>>= 0;
722
732
  var envObject = emnapiCtx.envStore.get(env);
723
733
  v = envObject.ensureHandleId(ret);
724
734
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -745,6 +755,7 @@ function createNapiModule(options) {
745
755
  }
746
756
  var low = Number(numberValue & BigInt(0xffffffff));
747
757
  var high = Number(numberValue >> BigInt(32));
758
+ result >>>= 0;
748
759
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
749
760
  HEAP_DATA_VIEW.setInt32(result, low, true);
750
761
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -754,6 +765,7 @@ function createNapiModule(options) {
754
765
  if (!emnapiNodeBinding) {
755
766
  return 9;
756
767
  }
768
+ async_context >>>= 0;
757
769
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
758
770
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
759
771
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -796,10 +808,13 @@ function createNapiModule(options) {
796
808
  if (typeof v8func !== 'function') {
797
809
  return envObject.setLastError(1);
798
810
  }
811
+ async_context >>>= 0;
799
812
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
800
813
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
801
814
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
802
815
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
816
+ argv >>>= 0;
817
+ argc >>>= 0;
803
818
  argc = argc >>> 0;
804
819
  var arr = Array(argc);
805
820
  for (; i < argc; i++) {
@@ -813,6 +828,7 @@ function createNapiModule(options) {
813
828
  if (ret.status !== 0)
814
829
  return envObject.setLastError(ret.status);
815
830
  if (result) {
831
+ result >>>= 0;
816
832
  v = envObject.ensureHandleId(ret.value);
817
833
  HEAP_DATA_VIEW.setUint32(result, v, true);
818
834
  }
@@ -840,29 +856,58 @@ function createNapiModule(options) {
840
856
  napi_open_callback_scope: napi_open_callback_scope
841
857
  });
842
858
  var emnapiTSFN = {
859
+ _liveSet: {},
843
860
  offset: {
861
+ __size__: 0,
844
862
  resource: 0,
845
- async_id: 8,
846
- trigger_async_id: 16,
847
- queue_size: 24,
848
- queue: 1 * 4 + 24,
849
- thread_count: 2 * 4 + 24,
850
- is_closing: 3 * 4 + 24,
851
- dispatch_state: 3 * 4 + 28,
852
- context: 3 * 4 + 32,
853
- max_queue_size: 4 * 4 + 32,
854
- ref: 5 * 4 + 32,
855
- env: 6 * 4 + 32,
856
- finalize_data: 7 * 4 + 32,
857
- finalize_cb: 8 * 4 + 32,
858
- call_js_cb: 9 * 4 + 32,
859
- handles_closing: 10 * 4 + 32,
860
- async_ref: 10 * 4 + 36,
861
- mutex: 10 * 4 + 40,
862
- cond: 10 * 4 + 44,
863
- end: 10 * 4 + 48
863
+ async_id: 0,
864
+ trigger_async_id: 0,
865
+ queue_size: 0,
866
+ is_some: 0,
867
+ queue: 0,
868
+ async_pending: 0,
869
+ async_u_fd: 0,
870
+ thread_count: 0,
871
+ state: 0,
872
+ dispatch_state: 0,
873
+ context: 0,
874
+ max_queue_size: 0,
875
+ ref: 0,
876
+ env: 0,
877
+ finalize_data: 0,
878
+ finalize_cb: 0,
879
+ call_js_cb: 0,
880
+ handles_closing: 0,
881
+ async_ref: 0,
882
+ mutex: 0,
883
+ cond: 0
864
884
  },
865
885
  init: function () {
886
+ emnapiTSFN._liveSet = new Set();
887
+ emnapiTSFN.offset.__size__ = 184;
888
+ emnapiTSFN.offset.resource = 0;
889
+ emnapiTSFN.offset.async_id = 8;
890
+ emnapiTSFN.offset.trigger_async_id = 16;
891
+ emnapiTSFN.offset.queue_size = 60;
892
+ emnapiTSFN.offset.is_some = 24;
893
+ emnapiTSFN.offset.queue = 64;
894
+ emnapiTSFN.offset.async_pending = 132;
895
+ emnapiTSFN.offset.async_u_fd = 96;
896
+ emnapiTSFN.offset.thread_count = 136;
897
+ emnapiTSFN.offset.state = 140;
898
+ emnapiTSFN.offset.dispatch_state = 144;
899
+ emnapiTSFN.offset.context = 148;
900
+ emnapiTSFN.offset.max_queue_size = 152;
901
+ emnapiTSFN.offset.ref = 156;
902
+ emnapiTSFN.offset.env = 160;
903
+ emnapiTSFN.offset.finalize_data = 164;
904
+ emnapiTSFN.offset.finalize_cb = 168;
905
+ emnapiTSFN.offset.call_js_cb = 172;
906
+ emnapiTSFN.offset.handles_closing = 176;
907
+ emnapiTSFN.offset.async_ref = 180;
908
+ emnapiTSFN.offset.mutex = 32;
909
+ emnapiTSFN.offset.cond = 56;
910
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
866
911
  if (typeof PThread !== 'undefined') {
867
912
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
868
913
  PThread.runningWorkers.forEach(emnapiTSFN.addListener);
@@ -886,7 +931,10 @@ function createNapiModule(options) {
886
931
  var type = __emnapi__.type;
887
932
  var payload = __emnapi__.payload;
888
933
  if (type === 'tsfn-send') {
889
- emnapiTSFN.dispatch(payload.tsfn);
934
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
935
+ if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
936
+ emnapiTSFN.enqueue(payload.tsfn);
937
+ }
890
938
  }
891
939
  }
892
940
  };
@@ -913,6 +961,7 @@ function createNapiModule(options) {
913
961
  var queue = _malloc(size);
914
962
  if (!queue)
915
963
  return false;
964
+ queue >>>= 0;
916
965
  new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
917
966
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
918
967
  return true;
@@ -920,6 +969,12 @@ function createNapiModule(options) {
920
969
  destroyQueue: function (func) {
921
970
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
922
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
+ }
923
978
  _free(queue);
924
979
  }
925
980
  },
@@ -931,6 +986,7 @@ function createNapiModule(options) {
931
986
  var node = _malloc(size);
932
987
  if (!node)
933
988
  throw new Error('OOM');
989
+ node >>>= 0;
934
990
  emnapiTSFN.storeSizeTypeValue(node, data, false);
935
991
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
936
992
  if (head === 0 && tail === 0) {
@@ -966,11 +1022,11 @@ function createNapiModule(options) {
966
1022
  var waitCondition = function () {
967
1023
  var queueSize = emnapiTSFN.getQueueSize(func);
968
1024
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
969
- var isClosing = emnapiTSFN.getIsClosing(func);
970
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
1025
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
971
1026
  };
972
1027
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
973
- return mutex.execute(function () {
1028
+ var shouldDelete = false;
1029
+ var ret = mutex.execute(function () {
974
1030
  while (waitCondition()) {
975
1031
  if (mode === 0) {
976
1032
  return 15;
@@ -980,21 +1036,25 @@ function createNapiModule(options) {
980
1036
  }
981
1037
  cond.wait();
982
1038
  }
983
- if (emnapiTSFN.getIsClosing(func)) {
984
- if (emnapiTSFN.getThreadCount(func) === 0) {
985
- return 1;
986
- }
987
- else {
988
- emnapiTSFN.subThreadCount(func);
989
- return 16;
990
- }
991
- }
992
- else {
1039
+ if (emnapiTSFN.getState(func) === 0) {
993
1040
  emnapiTSFN.pushQueue(func, data);
994
1041
  emnapiTSFN.send(func);
995
1042
  return 0;
996
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;
997
1053
  });
1054
+ if (shouldDelete) {
1055
+ emnapiTSFN.destroy(func);
1056
+ }
1057
+ return ret;
998
1058
  },
999
1059
  getMutex: function (func) {
1000
1060
  var index = func + emnapiTSFN.offset.mutex;
@@ -1004,7 +1064,7 @@ function createNapiModule(options) {
1004
1064
  var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1005
1065
  if (isBrowserMain) {
1006
1066
  while (true) {
1007
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1067
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1008
1068
  if (oldValue === 0) {
1009
1069
  return;
1010
1070
  }
@@ -1012,18 +1072,18 @@ function createNapiModule(options) {
1012
1072
  }
1013
1073
  else {
1014
1074
  while (true) {
1015
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1075
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1016
1076
  if (oldValue === 0) {
1017
1077
  return;
1018
1078
  }
1019
- Atomics.wait(i32a, 0, 1);
1079
+ Atomics.wait(i32a, 0, 10);
1020
1080
  }
1021
1081
  }
1022
1082
  },
1023
1083
  unlock: function () {
1024
1084
  var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1025
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
1026
- if (oldValue !== 1) {
1085
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1086
+ if (oldValue !== 10) {
1027
1087
  throw new Error('Tried to unlock while not holding the mutex');
1028
1088
  }
1029
1089
  Atomics.notify(i32a, 0, 1);
@@ -1066,14 +1126,14 @@ function createNapiModule(options) {
1066
1126
  var offset = emnapiTSFN.offset.queue_size;
1067
1127
  var arr, index;
1068
1128
  arr = new Uint32Array(wasmMemory.buffer);
1069
- index = (func + offset) >> 2;
1129
+ index = (func + offset) >>> 2;
1070
1130
  Atomics.add(arr, index, 1);
1071
1131
  },
1072
1132
  subQueueSize: function (func) {
1073
1133
  var offset = emnapiTSFN.offset.queue_size;
1074
1134
  var arr, index;
1075
1135
  arr = new Uint32Array(wasmMemory.buffer);
1076
- index = (func + offset) >> 2;
1136
+ index = (func + offset) >>> 2;
1077
1137
  Atomics.sub(arr, index, 1);
1078
1138
  },
1079
1139
  getThreadCount: function (func) {
@@ -1083,30 +1143,30 @@ function createNapiModule(options) {
1083
1143
  var offset = emnapiTSFN.offset.thread_count;
1084
1144
  var arr, index;
1085
1145
  arr = new Uint32Array(wasmMemory.buffer);
1086
- index = (func + offset) >> 2;
1146
+ index = (func + offset) >>> 2;
1087
1147
  Atomics.add(arr, index, 1);
1088
1148
  },
1089
1149
  subThreadCount: function (func) {
1090
1150
  var offset = emnapiTSFN.offset.thread_count;
1091
1151
  var arr, index;
1092
1152
  arr = new Uint32Array(wasmMemory.buffer);
1093
- index = (func + offset) >> 2;
1153
+ index = (func + offset) >>> 2;
1094
1154
  Atomics.sub(arr, index, 1);
1095
1155
  },
1096
- getIsClosing: function (func) {
1097
- 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);
1098
1158
  },
1099
- setIsClosing: function (func, value) {
1100
- 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);
1101
1161
  },
1102
1162
  getHandlesClosing: function (func) {
1103
- 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));
1104
1164
  },
1105
1165
  setHandlesClosing: function (func, value) {
1106
- 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);
1107
1167
  },
1108
1168
  getDispatchState: function (func) {
1109
- 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);
1110
1170
  },
1111
1171
  getContext: function (func) {
1112
1172
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -1137,12 +1197,12 @@ function createNapiModule(options) {
1137
1197
  var arr;
1138
1198
  if (unsigned) {
1139
1199
  arr = new Uint32Array(wasmMemory.buffer);
1140
- ret = Atomics.load(arr, offset >> 2);
1200
+ ret = Atomics.load(arr, offset >>> 2);
1141
1201
  return ret;
1142
1202
  }
1143
1203
  else {
1144
1204
  arr = new Int32Array(wasmMemory.buffer);
1145
- ret = Atomics.load(arr, offset >> 2);
1205
+ ret = Atomics.load(arr, offset >>> 2);
1146
1206
  return ret;
1147
1207
  }
1148
1208
  },
@@ -1150,52 +1210,80 @@ function createNapiModule(options) {
1150
1210
  var arr;
1151
1211
  if (unsigned) {
1152
1212
  arr = new Uint32Array(wasmMemory.buffer);
1153
- Atomics.store(arr, offset >> 2, value);
1213
+ Atomics.store(arr, offset >>> 2, value);
1154
1214
  return undefined;
1155
1215
  }
1156
1216
  else {
1157
1217
  arr = new Int32Array(wasmMemory.buffer);
1158
- Atomics.store(arr, offset >> 2, value >>> 0);
1218
+ Atomics.store(arr, offset >>> 2, value >>> 0);
1159
1219
  return undefined;
1160
1220
  }
1161
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
+ },
1162
1251
  destroy: function (func) {
1252
+ emnapiTSFN._liveSet.delete(func);
1163
1253
  emnapiTSFN.destroyQueue(func);
1164
- var env = emnapiTSFN.getEnv(func);
1165
- var envObject = emnapiCtx.envStore.get(env);
1166
- var ref = emnapiTSFN.getRef(func);
1167
- if (ref) {
1168
- emnapiCtx.refStore.get(ref).dispose();
1169
- }
1170
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1171
- envObject.unref();
1172
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1173
- var arr = new Int32Array(wasmMemory.buffer);
1174
- if (Atomics.load(arr, asyncRefOffset)) {
1175
- Atomics.store(arr, asyncRefOffset, 0);
1176
- emnapiCtx.decreaseWaitingRequestCounter();
1177
- }
1178
- var resource = emnapiTSFN.getResource(func);
1179
- emnapiCtx.refStore.get(resource).dispose();
1180
- if (emnapiNodeBinding) {
1181
- var view = new DataView(wasmMemory.buffer);
1182
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1183
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1184
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1185
- }
1254
+ emnapiTSFN.releaseResources(func);
1186
1255
  _free(func);
1187
1256
  },
1188
- 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
+ });
1189
1264
  var callJsCb = emnapiTSFN.getCallJSCb(func);
1190
1265
  var context = emnapiTSFN.getContext(func);
1191
1266
  var data;
1192
- while (emnapiTSFN.getQueueSize(func) > 0) {
1193
- data = emnapiTSFN.shiftQueue(func);
1267
+ for (var i = 0; i < drainQueue.length; i++) {
1268
+ data = drainQueue[i];
1194
1269
  if (callJsCb) {
1195
1270
  (wasmTable.get(callJsCb))(0, 0, context, data);
1196
1271
  }
1197
1272
  }
1198
- 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
+ }
1199
1287
  },
1200
1288
  finalize: function (func) {
1201
1289
  var env = emnapiTSFN.getEnv(func);
@@ -1208,6 +1296,7 @@ function createNapiModule(options) {
1208
1296
  envObject.callFinalizerInternal(0, finalize, data, context);
1209
1297
  };
1210
1298
  try {
1299
+ emnapiTSFN.emptyQueue(func);
1211
1300
  if (finalize) {
1212
1301
  if (emnapiNodeBinding) {
1213
1302
  var resource = emnapiTSFN.getResource(func);
@@ -1225,7 +1314,7 @@ function createNapiModule(options) {
1225
1314
  f();
1226
1315
  }
1227
1316
  }
1228
- emnapiTSFN.emptyQueueAndDelete(func);
1317
+ emnapiTSFN.maybeDelete(func);
1229
1318
  }
1230
1319
  finally {
1231
1320
  emnapiCtx.closeScope(envObject);
@@ -1241,7 +1330,7 @@ function createNapiModule(options) {
1241
1330
  try {
1242
1331
  if (set_closing) {
1243
1332
  emnapiTSFN.getMutex(func).execute(function () {
1244
- emnapiTSFN.setIsClosing(func, 1);
1333
+ emnapiTSFN.setState(func, 1);
1245
1334
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1246
1335
  emnapiTSFN.getCond(func).signal();
1247
1336
  }
@@ -1251,6 +1340,7 @@ function createNapiModule(options) {
1251
1340
  return;
1252
1341
  }
1253
1342
  emnapiTSFN.setHandlesClosing(func, 1);
1343
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1254
1344
  emnapiCtx.feature.setImmediate(function () {
1255
1345
  emnapiTSFN.finalize(func);
1256
1346
  });
@@ -1266,10 +1356,7 @@ function createNapiModule(options) {
1266
1356
  var mutex = emnapiTSFN.getMutex(func);
1267
1357
  var cond = emnapiTSFN.getCond(func);
1268
1358
  mutex.execute(function () {
1269
- if (emnapiTSFN.getIsClosing(func)) {
1270
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1271
- }
1272
- else {
1359
+ if (emnapiTSFN.getState(func) === 0) {
1273
1360
  var size = emnapiTSFN.getQueueSize(func);
1274
1361
  if (size > 0) {
1275
1362
  data = emnapiTSFN.shiftQueue(func);
@@ -1282,7 +1369,7 @@ function createNapiModule(options) {
1282
1369
  }
1283
1370
  if (size === 0) {
1284
1371
  if (emnapiTSFN.getThreadCount(func) === 0) {
1285
- emnapiTSFN.setIsClosing(func, 1);
1372
+ emnapiTSFN.setState(func, 1);
1286
1373
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1287
1374
  cond.signal();
1288
1375
  }
@@ -1293,6 +1380,9 @@ function createNapiModule(options) {
1293
1380
  has_more = true;
1294
1381
  }
1295
1382
  }
1383
+ else {
1384
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1385
+ }
1296
1386
  });
1297
1387
  if (popped_value) {
1298
1388
  var env = emnapiTSFN.getEnv(func);
@@ -1340,7 +1430,7 @@ function createNapiModule(options) {
1340
1430
  var has_more = true;
1341
1431
  var iterations_left = 1000;
1342
1432
  var ui32a = new Uint32Array(wasmMemory.buffer);
1343
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
1433
+ var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2;
1344
1434
  while (has_more && --iterations_left !== 0) {
1345
1435
  Atomics.store(ui32a, index, 1);
1346
1436
  has_more = emnapiTSFN.dispatchOne(func);
@@ -1352,25 +1442,65 @@ function createNapiModule(options) {
1352
1442
  emnapiTSFN.send(func);
1353
1443
  }
1354
1444
  },
1355
- send: function (func) {
1356
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
1357
- if ((current_state & 1) === 1) {
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) {
1358
1450
  return;
1359
1451
  }
1360
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1361
- postMessage({
1362
- __emnapi__: {
1363
- type: 'tsfn-send',
1364
- payload: {
1365
- 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
+ }
1366
1476
  }
1367
1477
  }
1368
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;
1369
1485
  }
1370
- else {
1371
- emnapiCtx.feature.setImmediate(function () {
1372
- emnapiTSFN.dispatch(func);
1373
- });
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
+ }
1374
1504
  }
1375
1505
  }
1376
1506
  };
@@ -1381,6 +1511,13 @@ function createNapiModule(options) {
1381
1511
  envObject.checkGCAccess();
1382
1512
  if (!async_resource_name)
1383
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;
1384
1521
  max_queue_size = max_queue_size >>> 0;
1385
1522
  initial_thread_count = initial_thread_count >>> 0;
1386
1523
  if (initial_thread_count === 0) {
@@ -1389,6 +1526,7 @@ function createNapiModule(options) {
1389
1526
  if (!result)
1390
1527
  return envObject.setLastError(1);
1391
1528
  var ref = 0;
1529
+ func >>>= 0;
1392
1530
  if (!func) {
1393
1531
  if (!call_js_cb)
1394
1532
  return envObject.setLastError(1);
@@ -1418,21 +1556,23 @@ function createNapiModule(options) {
1418
1556
  }
1419
1557
  asyncResourceName = String(asyncResourceName);
1420
1558
  var resource_name = envObject.ensureHandleId(asyncResourceName);
1421
- var sizeofTSFN = emnapiTSFN.offset.end;
1559
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
1422
1560
  var tsfn = _malloc(sizeofTSFN);
1423
1561
  if (!tsfn)
1424
1562
  return envObject.setLastError(9);
1563
+ tsfn >>>= 0;
1425
1564
  new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1426
1565
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
1427
1566
  var resource_ = resourceRef.id;
1428
1567
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1429
- HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
1568
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
1430
1569
  if (!emnapiTSFN.initQueue(tsfn)) {
1431
1570
  _free(tsfn);
1432
1571
  resourceRef.dispose();
1433
1572
  return envObject.setLastError(9);
1434
1573
  }
1435
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);
1436
1576
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1437
1577
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1438
1578
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
@@ -1442,9 +1582,11 @@ function createNapiModule(options) {
1442
1582
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1443
1583
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1444
1584
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
1585
+ emnapiTSFN._liveSet.add(tsfn);
1445
1586
  envObject.ref();
1446
1587
  emnapiCtx.increaseWaitingRequestCounter();
1447
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1588
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1589
+ result >>>= 0;
1448
1590
  HEAP_DATA_VIEW.setUint32(result, tsfn, true);
1449
1591
  return envObject.clearLastError();
1450
1592
  }
@@ -1453,6 +1595,8 @@ function createNapiModule(options) {
1453
1595
  abort();
1454
1596
  return 1;
1455
1597
  }
1598
+ func >>>= 0;
1599
+ result >>>= 0;
1456
1600
  var context = emnapiTSFN.getContext(func);
1457
1601
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1458
1602
  HEAP_DATA_VIEW.setUint32(result, context, true);
@@ -1463,6 +1607,8 @@ function createNapiModule(options) {
1463
1607
  abort();
1464
1608
  return 1;
1465
1609
  }
1610
+ func >>>= 0;
1611
+ data >>>= 0;
1466
1612
  return emnapiTSFN.push(func, data, mode);
1467
1613
  }
1468
1614
  function napi_acquire_threadsafe_function(func) {
@@ -1470,13 +1616,14 @@ function createNapiModule(options) {
1470
1616
  abort();
1471
1617
  return 1;
1472
1618
  }
1619
+ func >>>= 0;
1473
1620
  var mutex = emnapiTSFN.getMutex(func);
1474
1621
  return mutex.execute(function () {
1475
- if (emnapiTSFN.getIsClosing(func)) {
1476
- return 16;
1622
+ if (emnapiTSFN.getState(func) === 0) {
1623
+ emnapiTSFN.addThreadCount(func);
1624
+ return 0;
1477
1625
  }
1478
- emnapiTSFN.addThreadCount(func);
1479
- return 0;
1626
+ return 16;
1480
1627
  });
1481
1628
  }
1482
1629
  function napi_release_threadsafe_function(func, mode) {
@@ -1484,37 +1631,51 @@ function createNapiModule(options) {
1484
1631
  abort();
1485
1632
  return 1;
1486
1633
  }
1634
+ func >>>= 0;
1487
1635
  var mutex = emnapiTSFN.getMutex(func);
1488
1636
  var cond = emnapiTSFN.getCond(func);
1489
- return mutex.execute(function () {
1637
+ var shouldDelete = false;
1638
+ var ret = mutex.execute(function () {
1490
1639
  if (emnapiTSFN.getThreadCount(func) === 0) {
1491
1640
  return 1;
1492
1641
  }
1493
1642
  emnapiTSFN.subThreadCount(func);
1494
1643
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
1495
- var isClosing = emnapiTSFN.getIsClosing(func);
1496
- if (!isClosing) {
1497
- var isClosingValue = (mode === 1) ? 1 : 0;
1498
- emnapiTSFN.setIsClosing(func, isClosingValue);
1499
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
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) {
1500
1649
  cond.signal();
1501
1650
  }
1502
1651
  emnapiTSFN.send(func);
1503
1652
  }
1504
1653
  }
1654
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1655
+ return 0;
1656
+ }
1657
+ shouldDelete = true;
1505
1658
  return 0;
1506
1659
  });
1660
+ if (shouldDelete) {
1661
+ emnapiTSFN.destroy(func);
1662
+ }
1663
+ return ret;
1507
1664
  }
1508
1665
  function napi_unref_threadsafe_function(env, func) {
1509
1666
  if (!func) {
1510
1667
  abort();
1511
1668
  return 1;
1512
1669
  }
1513
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1514
- var arr = new Int32Array(wasmMemory.buffer);
1515
- if (Atomics.load(arr, asyncRefOffset)) {
1516
- Atomics.store(arr, asyncRefOffset, 0);
1517
- emnapiCtx.decreaseWaitingRequestCounter();
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
+ }
1518
1679
  }
1519
1680
  return 0;
1520
1681
  }
@@ -1523,34 +1684,57 @@ function createNapiModule(options) {
1523
1684
  abort();
1524
1685
  return 1;
1525
1686
  }
1526
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1527
- var arr = new Int32Array(wasmMemory.buffer);
1528
- if (!Atomics.load(arr, asyncRefOffset)) {
1529
- Atomics.store(arr, asyncRefOffset, 1);
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) {
1530
1692
  emnapiCtx.increaseWaitingRequestCounter();
1531
1693
  }
1694
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
1532
1695
  return 0;
1533
1696
  }
1534
1697
  var emnapiAWMT = {
1535
- unusedWorkers: [],
1536
- runningWorkers: [],
1537
- workQueue: [],
1698
+ pool: [],
1538
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
+ },
1539
1711
  offset: {
1540
1712
  resource: 0,
1541
1713
  async_id: 8,
1542
1714
  trigger_async_id: 16,
1543
1715
  env: 24,
1544
- data: 1 * 4 + 24,
1545
- execute: 2 * 4 + 24,
1546
- complete: 3 * 4 + 24,
1547
- 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
1548
1724
  },
1549
1725
  init: function () {
1550
- emnapiAWMT.unusedWorkers = [];
1551
- emnapiAWMT.runningWorkers = [];
1552
- emnapiAWMT.workQueue = [];
1726
+ emnapiAWMT.pool = [];
1553
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
+ }
1554
1738
  },
1555
1739
  addListener: function (worker) {
1556
1740
  if (!worker)
@@ -1564,18 +1748,8 @@ function createNapiModule(options) {
1564
1748
  var type = __emnapi__.type;
1565
1749
  var payload = __emnapi__.payload;
1566
1750
  if (type === 'async-work-complete') {
1567
- emnapiCtx.decreaseWaitingRequestCounter();
1568
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
1569
- emnapiAWMT.unusedWorkers.push(worker);
1570
- emnapiAWMT.checkIdleWorker();
1571
1751
  emnapiAWMT.callComplete(payload.work, 0);
1572
1752
  }
1573
- else if (type === 'async-work-queue') {
1574
- emnapiAWMT.scheduleWork(payload.work);
1575
- }
1576
- else if (type === 'async-work-cancel') {
1577
- emnapiAWMT.cancelWork(payload.work);
1578
- }
1579
1753
  }
1580
1754
  };
1581
1755
  var dispose = function () {
@@ -1596,142 +1770,221 @@ function createNapiModule(options) {
1596
1770
  }
1597
1771
  return true;
1598
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
+ },
1599
1793
  initWorkers: function (n) {
1600
1794
  if (ENVIRONMENT_IS_PTHREAD) {
1601
1795
  return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
1602
1796
  }
1603
1797
  if (emnapiAWMT.workerReady)
1604
1798
  return emnapiAWMT.workerReady;
1605
- if (typeof onCreateWorker !== 'function') {
1606
- throw new TypeError('`options.onCreateWorker` is not a function');
1607
- }
1608
- var promises = [];
1609
- var args = [];
1610
1799
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
1611
1800
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
1612
1801
  }
1802
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
1803
+ var args = [];
1804
+ emnapiAWMT.initGlobal();
1613
1805
  for (var i = 0; i < n; ++i) {
1614
- args.push(wasmInstance.exports.emnapi_async_worker_create());
1806
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
1615
1807
  }
1616
- try {
1617
- var _loop_1 = function (i) {
1618
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
1619
- var p = PThread.loadWasmModuleToWorker(worker);
1620
- emnapiAWMT.addListener(worker);
1621
- promises.push(p.then(function () {
1622
- if (typeof worker.unref === 'function') {
1623
- worker.unref();
1624
- }
1625
- }));
1626
- emnapiAWMT.unusedWorkers.push(worker);
1627
- var arg = args[i];
1628
- worker.threadBlockBase = arg;
1629
- worker.postMessage({
1630
- __emnapi__: {
1631
- type: 'async-worker-init',
1632
- payload: { arg: arg }
1633
- }
1634
- });
1635
- };
1636
- for (var i = 0; i < n; ++i) {
1637
- _loop_1(i);
1808
+ var promises = args.map(function (index) {
1809
+ if (index === 0) {
1810
+ return Promise.reject(new Error('Failed to create async worker'));
1638
1811
  }
1639
- }
1640
- catch (err) {
1641
- for (var i = 0; i < n; ++i) {
1642
- var arg = args[i];
1643
- _free(arg);
1812
+ var worker;
1813
+ if (index < 0) {
1814
+ worker = emnapiAWMT.pool[-index - 1];
1815
+ if (worker)
1816
+ return worker.whenLoaded;
1644
1817
  }
1645
- throw err;
1646
- }
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
+ });
1647
1825
  emnapiAWMT.workerReady = Promise.all(promises);
1648
1826
  return emnapiAWMT.workerReady;
1649
1827
  },
1650
- checkIdleWorker: function () {
1651
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
1652
- var worker = emnapiAWMT.unusedWorkers.shift();
1653
- var work = emnapiAWMT.workQueue.shift();
1654
- emnapiAWMT.runningWorkers.push(worker);
1655
- worker.postMessage({
1656
- __emnapi__: {
1657
- type: 'async-work-execute',
1658
- payload: { work: work }
1659
- }
1660
- });
1661
- }
1662
- },
1663
1828
  getResource: function (work) {
1664
- 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);
1665
1831
  },
1666
1832
  getExecute: function (work) {
1667
- 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);
1668
1835
  },
1669
1836
  getComplete: function (work) {
1670
- 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);
1671
1839
  },
1672
1840
  getEnv: function (work) {
1673
- 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);
1674
1843
  },
1675
1844
  getData: function (work) {
1676
- 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);
1677
1935
  },
1678
1936
  scheduleWork: function (work) {
1679
1937
  var _a;
1680
- if (ENVIRONMENT_IS_PTHREAD) {
1681
- var postMessage_1 = napiModule.postMessage;
1682
- postMessage_1({
1683
- __emnapi__: {
1684
- type: 'async-work-queue',
1685
- payload: { work: work }
1686
- }
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;
1687
1944
  });
1688
- return;
1689
1945
  }
1690
1946
  emnapiCtx.increaseWaitingRequestCounter();
1691
- emnapiAWMT.workQueue.push(work);
1692
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
1693
- 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);
1694
1954
  }
1695
- else {
1696
- var fail = function (err) {
1697
- emnapiCtx.decreaseWaitingRequestCounter();
1698
- throw err;
1699
- };
1700
- try {
1701
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1702
- emnapiAWMT.workerReady.ready = true;
1703
- emnapiAWMT.checkIdleWorker();
1704
- }, fail);
1705
- }
1706
- catch (err) {
1707
- fail(err);
1708
- }
1955
+ catch (err) {
1956
+ emnapiCtx.decreaseWaitingRequestCounter();
1957
+ mutex.unlock();
1958
+ throw err;
1709
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();
1710
1965
  },
1711
1966
  cancelWork: function (work) {
1712
- if (ENVIRONMENT_IS_PTHREAD) {
1713
- var postMessage_2 = napiModule.postMessage;
1714
- postMessage_2({
1715
- __emnapi__: {
1716
- type: 'async-work-cancel',
1717
- payload: { work: work }
1718
- }
1719
- });
1720
- return 0;
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;
1721
1977
  }
1722
- var index = emnapiAWMT.workQueue.indexOf(work);
1723
- if (index !== -1) {
1724
- emnapiAWMT.workQueue.splice(index, 1);
1725
- emnapiCtx.feature.setImmediate(function () {
1726
- emnapiCtx.decreaseWaitingRequestCounter();
1727
- emnapiAWMT.checkIdleWorker();
1728
- emnapiAWMT.callComplete(work, 11);
1729
- });
1730
- return 0;
1978
+ if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
1979
+ return 9;
1731
1980
  }
1732
- return 9;
1981
+ emnapiCtx.feature.setImmediate(function () {
1982
+ emnapiAWMT.callComplete(work, 11);
1983
+ });
1984
+ return 0;
1733
1985
  },
1734
1986
  callComplete: function (work, status) {
1987
+ emnapiCtx.decreaseWaitingRequestCounter();
1735
1988
  var complete = emnapiAWMT.getComplete(work);
1736
1989
  var env = emnapiAWMT.getEnv(work);
1737
1990
  var data = emnapiAWMT.getData(work);
@@ -1766,6 +2019,7 @@ function createNapiModule(options) {
1766
2019
  }
1767
2020
  }
1768
2021
  };
2022
+ emnapiAWMT.init();
1769
2023
  var napi_create_async_work = singleThreadAsyncWork
1770
2024
  ? function (env, resource, resource_name, execute, complete, data, result) {
1771
2025
  if (!env)
@@ -1787,6 +2041,7 @@ function createNapiModule(options) {
1787
2041
  return envObject.setLastError(1);
1788
2042
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
1789
2043
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
2044
+ result >>>= 0;
1790
2045
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1791
2046
  HEAP_DATA_VIEW.setUint32(result, id, true);
1792
2047
  return envObject.clearLastError();
@@ -1813,6 +2068,7 @@ function createNapiModule(options) {
1813
2068
  var aw = _malloc(sizeofAW);
1814
2069
  if (!aw)
1815
2070
  return envObject.setLastError(9);
2071
+ aw >>>= 0;
1816
2072
  new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
1817
2073
  var s = envObject.ensureHandleId(resourceObject);
1818
2074
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
@@ -1824,6 +2080,8 @@ function createNapiModule(options) {
1824
2080
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
1825
2081
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
1826
2082
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
2083
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
2084
+ result >>>= 0;
1827
2085
  HEAP_DATA_VIEW.setUint32(result, aw, true);
1828
2086
  return envObject.clearLastError();
1829
2087
  };
@@ -1835,6 +2093,7 @@ function createNapiModule(options) {
1835
2093
  envObject.checkGCAccess();
1836
2094
  if (!work)
1837
2095
  return envObject.setLastError(1);
2096
+ work >>>= 0;
1838
2097
  emnapiAWST.remove(work);
1839
2098
  return envObject.clearLastError();
1840
2099
  }
@@ -1845,6 +2104,7 @@ function createNapiModule(options) {
1845
2104
  envObject.checkGCAccess();
1846
2105
  if (!work)
1847
2106
  return envObject.setLastError(1);
2107
+ work >>>= 0;
1848
2108
  var resource = emnapiAWMT.getResource(work);
1849
2109
  emnapiCtx.refStore.get(resource).dispose();
1850
2110
  if (emnapiNodeBinding) {
@@ -1863,6 +2123,7 @@ function createNapiModule(options) {
1863
2123
  var envObject = emnapiCtx.envStore.get(env);
1864
2124
  if (!work)
1865
2125
  return envObject.setLastError(1);
2126
+ work >>>= 0;
1866
2127
  emnapiAWST.queue(work);
1867
2128
  return envObject.clearLastError();
1868
2129
  }
@@ -1872,6 +2133,7 @@ function createNapiModule(options) {
1872
2133
  var envObject = emnapiCtx.envStore.get(env);
1873
2134
  if (!work)
1874
2135
  return envObject.setLastError(1);
2136
+ work >>>= 0;
1875
2137
  emnapiAWMT.scheduleWork(work);
1876
2138
  return envObject.clearLastError();
1877
2139
  };
@@ -1882,6 +2144,7 @@ function createNapiModule(options) {
1882
2144
  var envObject = emnapiCtx.envStore.get(env);
1883
2145
  if (!work)
1884
2146
  return envObject.setLastError(1);
2147
+ work >>>= 0;
1885
2148
  var status = emnapiAWST.cancel(work);
1886
2149
  if (status === 0)
1887
2150
  return envObject.clearLastError();
@@ -1893,41 +2156,124 @@ function createNapiModule(options) {
1893
2156
  var envObject = emnapiCtx.envStore.get(env);
1894
2157
  if (!work)
1895
2158
  return envObject.setLastError(1);
2159
+ work >>>= 0;
1896
2160
  var status = emnapiAWMT.cancelWork(work);
1897
2161
  if (status === 0)
1898
2162
  return envObject.clearLastError();
1899
2163
  return envObject.setLastError(status);
1900
2164
  };
1901
- 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) {
1902
2261
  if (napiModule.childThread) {
1903
2262
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
1904
2263
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
1905
2264
  }
1906
2265
  wasmInstance.exports.emnapi_async_worker_init(startArg);
2266
+ (wasmTable.get(func[0]))(func[1]);
1907
2267
  }
1908
2268
  else {
1909
2269
  throw new Error('startThread is only available in child threads');
1910
2270
  }
1911
2271
  }
1912
- function executeAsyncWork(work) {
1913
- if (!ENVIRONMENT_IS_PTHREAD)
1914
- return;
1915
- var execute = emnapiAWMT.getExecute(work);
1916
- var env = emnapiAWMT.getEnv(work);
1917
- var data = emnapiAWMT.getData(work);
1918
- (wasmTable.get(execute))(env, data);
1919
- var postMessage = napiModule.postMessage;
1920
- postMessage({
1921
- __emnapi__: {
1922
- type: 'async-work-complete',
1923
- payload: { work: work }
1924
- }
1925
- });
1926
- }
1927
2272
  napiModule.initWorker = initWorker;
1928
- napiModule.executeAsyncWork = executeAsyncWork;
1929
2273
  var asyncWorkMod = Object.freeze({
1930
2274
  __proto__: null,
2275
+ _emnapi_async_worker: _emnapi_async_worker,
2276
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
1931
2277
  napi_cancel_async_work: napi_cancel_async_work,
1932
2278
  napi_create_async_work: napi_create_async_work,
1933
2279
  napi_delete_async_work: napi_delete_async_work,
@@ -1988,6 +2334,7 @@ function createNapiModule(options) {
1988
2334
  var pointer = _malloc(arrayBuffer.byteLength);
1989
2335
  if (!pointer)
1990
2336
  throw new Error('Out of memory');
2337
+ pointer >>>= 0;
1991
2338
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
1992
2339
  info.address = pointer;
1993
2340
  info.ownership = emnapiExternalMemory.registry ? 0 : 1;
@@ -2009,8 +2356,7 @@ function createNapiModule(options) {
2009
2356
  }
2010
2357
  return view;
2011
2358
  }
2012
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
2013
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
2359
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
2014
2360
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
2015
2361
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
2016
2362
  var Ctor = info.Ctor;
@@ -2143,7 +2489,7 @@ function createNapiModule(options) {
2143
2489
  ptr >>>= 0;
2144
2490
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
2145
2491
  var end = ptr;
2146
- if (length === -1) {
2492
+ if (length === -1 || length === 4294967295) {
2147
2493
  for (; HEAPU8[end];)
2148
2494
  ++end;
2149
2495
  }
@@ -2234,12 +2580,12 @@ function createNapiModule(options) {
2234
2580
  return '';
2235
2581
  ptr >>>= 0;
2236
2582
  var end = ptr;
2237
- if (length === -1) {
2238
- var idx = end >> 1;
2583
+ if (length === -1 || length === 4294967295) {
2584
+ var idx = end >>> 1;
2239
2585
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
2240
2586
  while (HEAPU16[idx])
2241
2587
  ++idx;
2242
- end = idx << 1;
2588
+ end = (idx << 1) >>> 0;
2243
2589
  }
2244
2590
  else {
2245
2591
  end = ptr + (length >>> 0) * 2;
@@ -2270,11 +2616,12 @@ function createNapiModule(options) {
2270
2616
  return outPtr - startPtr;
2271
2617
  },
2272
2618
  newString: function (env, str, length, result, stringMaker) {
2619
+ length >>>= 0;
2273
2620
  if (!env)
2274
2621
  return 1;
2275
2622
  var envObject = emnapiCtx.envStore.get(env);
2276
2623
  envObject.checkGCAccess();
2277
- var autoLength = length === -1;
2624
+ var autoLength = length === -1 || length === 4294967295;
2278
2625
  var sizelength = length >>> 0;
2279
2626
  if (length !== 0) {
2280
2627
  if (!str)
@@ -2284,18 +2631,21 @@ function createNapiModule(options) {
2284
2631
  return envObject.setLastError(1);
2285
2632
  if (!(autoLength || (sizelength <= 2147483647)))
2286
2633
  return envObject.setLastError(1);
2634
+ str >>>= 0;
2287
2635
  var strValue = stringMaker(str, autoLength, sizelength);
2636
+ result >>>= 0;
2288
2637
  var value = emnapiCtx.addToCurrentScope(strValue).id;
2289
2638
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2290
2639
  HEAP_DATA_VIEW.setUint32(result, value, true);
2291
2640
  return envObject.clearLastError();
2292
2641
  },
2293
2642
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
2643
+ length >>>= 0;
2294
2644
  if (!env)
2295
2645
  return 1;
2296
2646
  var envObject = emnapiCtx.envStore.get(env);
2297
2647
  envObject.checkGCAccess();
2298
- var autoLength = length === -1;
2648
+ var autoLength = length === -1 || length === 4294967295;
2299
2649
  var sizelength = length >>> 0;
2300
2650
  if (length !== 0) {
2301
2651
  if (!str)
@@ -2337,6 +2687,7 @@ function createNapiModule(options) {
2337
2687
  if (!handle.isArray()) {
2338
2688
  return envObject.setLastError(8);
2339
2689
  }
2690
+ result >>>= 0;
2340
2691
  var v = handle.value.length >>> 0;
2341
2692
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2342
2693
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2360,14 +2711,50 @@ function createNapiModule(options) {
2360
2711
  }
2361
2712
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2362
2713
  if (data) {
2714
+ data >>>= 0;
2363
2715
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
2364
2716
  HEAP_DATA_VIEW.setUint32(data, p, true);
2365
2717
  }
2366
2718
  if (byte_length) {
2719
+ byte_length >>>= 0;
2367
2720
  HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
2368
2721
  }
2369
2722
  return envObject.clearLastError();
2370
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
+ }
2371
2758
  function napi_get_prototype(env, value, result) {
2372
2759
  if (!env)
2373
2760
  return 1;
@@ -2394,6 +2781,7 @@ function createNapiModule(options) {
2394
2781
  catch (_) {
2395
2782
  return envObject.setLastError(2);
2396
2783
  }
2784
+ result >>>= 0;
2397
2785
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
2398
2786
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2399
2787
  HEAP_DATA_VIEW.setUint32(result, p, true);
@@ -2418,6 +2806,7 @@ function createNapiModule(options) {
2418
2806
  var v = handle.value;
2419
2807
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2420
2808
  if (type) {
2809
+ type >>>= 0;
2421
2810
  var t = void 0;
2422
2811
  if (v instanceof Int8Array) {
2423
2812
  t = 0;
@@ -2440,6 +2829,9 @@ function createNapiModule(options) {
2440
2829
  else if (v instanceof Uint32Array) {
2441
2830
  t = 6;
2442
2831
  }
2832
+ else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
2833
+ t = 11;
2834
+ }
2443
2835
  else if (v instanceof Float32Array) {
2444
2836
  t = 7;
2445
2837
  }
@@ -2457,22 +2849,25 @@ function createNapiModule(options) {
2457
2849
  }
2458
2850
  HEAP_DATA_VIEW.setInt32(type, t, true);
2459
2851
  }
2852
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
2460
2853
  if (length) {
2854
+ length >>>= 0;
2461
2855
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
2462
2856
  }
2463
- var buffer;
2464
2857
  if (data || arraybuffer) {
2465
- buffer = v.buffer;
2466
2858
  if (data) {
2859
+ data >>>= 0;
2467
2860
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2468
2861
  HEAP_DATA_VIEW.setUint32(data, p, true);
2469
2862
  }
2470
2863
  if (arraybuffer) {
2471
- var ab = envObject.ensureHandleId(buffer);
2864
+ arraybuffer >>>= 0;
2865
+ var ab = envObject.ensureHandleId(v.buffer);
2472
2866
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2473
2867
  }
2474
2868
  }
2475
2869
  if (byte_offset) {
2870
+ byte_offset >>>= 0;
2476
2871
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2477
2872
  }
2478
2873
  return envObject.clearLastError();
@@ -2503,24 +2898,26 @@ function createNapiModule(options) {
2503
2898
  if (!handle.isDataView()) {
2504
2899
  return envObject.setLastError(1);
2505
2900
  }
2506
- var v = handle.value;
2901
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
2507
2902
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2508
2903
  if (byte_length) {
2904
+ byte_length >>>= 0;
2509
2905
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
2510
2906
  }
2511
- var buffer;
2512
2907
  if (data || arraybuffer) {
2513
- buffer = v.buffer;
2514
2908
  if (data) {
2909
+ data >>>= 0;
2515
2910
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2516
2911
  HEAP_DATA_VIEW.setUint32(data, p, true);
2517
2912
  }
2518
2913
  if (arraybuffer) {
2519
- var ab = envObject.ensureHandleId(buffer);
2914
+ arraybuffer >>>= 0;
2915
+ var ab = envObject.ensureHandleId(v.buffer);
2520
2916
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2521
2917
  }
2522
2918
  }
2523
2919
  if (byte_offset) {
2920
+ byte_offset >>>= 0;
2524
2921
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2525
2922
  }
2526
2923
  return envObject.clearLastError();
@@ -2545,6 +2942,7 @@ function createNapiModule(options) {
2545
2942
  if (!handle.isDate()) {
2546
2943
  return envObject.setLastError(1);
2547
2944
  }
2945
+ result >>>= 0;
2548
2946
  v = handle.value.valueOf();
2549
2947
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2550
2948
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -2568,6 +2966,7 @@ function createNapiModule(options) {
2568
2966
  if (typeof handle.value !== 'boolean') {
2569
2967
  return envObject.setLastError(7);
2570
2968
  }
2969
+ result >>>= 0;
2571
2970
  var r = handle.value ? 1 : 0;
2572
2971
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2573
2972
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -2586,6 +2985,7 @@ function createNapiModule(options) {
2586
2985
  if (typeof handle.value !== 'number') {
2587
2986
  return envObject.setLastError(6);
2588
2987
  }
2988
+ result >>>= 0;
2589
2989
  var r = handle.value;
2590
2990
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2591
2991
  HEAP_DATA_VIEW.setFloat64(result, r, true);
@@ -2610,6 +3010,8 @@ function createNapiModule(options) {
2610
3010
  if (typeof numberValue !== 'bigint') {
2611
3011
  return envObject.setLastError(6);
2612
3012
  }
3013
+ lossless >>>= 0;
3014
+ result >>>= 0;
2613
3015
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2614
3016
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
2615
3017
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2646,6 +3048,8 @@ function createNapiModule(options) {
2646
3048
  if (typeof numberValue !== 'bigint') {
2647
3049
  return envObject.setLastError(6);
2648
3050
  }
3051
+ lossless >>>= 0;
3052
+ result >>>= 0;
2649
3053
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2650
3054
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
2651
3055
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2677,8 +3081,12 @@ function createNapiModule(options) {
2677
3081
  return envObject.setLastError(17);
2678
3082
  }
2679
3083
  var isMinus = handle.value < BigInt(0);
3084
+ sign_bit >>>= 0;
3085
+ words >>>= 0;
3086
+ word_count >>>= 0;
2680
3087
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2681
3088
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
3089
+ word_count_int >>>= 0;
2682
3090
  var wordCount = 0;
2683
3091
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
2684
3092
  while (bigintValue !== BigInt(0)) {
@@ -2726,6 +3134,7 @@ function createNapiModule(options) {
2726
3134
  if (!handle.isExternal()) {
2727
3135
  return envObject.setLastError(1);
2728
3136
  }
3137
+ result >>>= 0;
2729
3138
  var p = handle.data();
2730
3139
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2731
3140
  HEAP_DATA_VIEW.setUint32(result, p, true);
@@ -2744,6 +3153,7 @@ function createNapiModule(options) {
2744
3153
  if (typeof handle.value !== 'number') {
2745
3154
  return envObject.setLastError(6);
2746
3155
  }
3156
+ result >>>= 0;
2747
3157
  var v = new Int32Array([handle.value])[0];
2748
3158
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2749
3159
  HEAP_DATA_VIEW.setInt32(result, v, true);
@@ -2763,6 +3173,7 @@ function createNapiModule(options) {
2763
3173
  return envObject.setLastError(6);
2764
3174
  }
2765
3175
  var numberValue = handle.value;
3176
+ result >>>= 0;
2766
3177
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2767
3178
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
2768
3179
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -2788,6 +3199,9 @@ function createNapiModule(options) {
2788
3199
  envObject.checkGCAccess();
2789
3200
  if (!value)
2790
3201
  return envObject.setLastError(1);
3202
+ result >>>= 0;
3203
+ buf >>>= 0;
3204
+ buf_size >>>= 0;
2791
3205
  buf_size = buf_size >>> 0;
2792
3206
  var handle = emnapiCtx.handleStore.get(value);
2793
3207
  if (typeof handle.value !== 'string') {
@@ -2824,6 +3238,9 @@ function createNapiModule(options) {
2824
3238
  envObject.checkGCAccess();
2825
3239
  if (!value)
2826
3240
  return envObject.setLastError(1);
3241
+ result >>>= 0;
3242
+ buf >>>= 0;
3243
+ buf_size >>>= 0;
2827
3244
  buf_size = buf_size >>> 0;
2828
3245
  var handle = emnapiCtx.handleStore.get(value);
2829
3246
  if (typeof handle.value !== 'string') {
@@ -2854,6 +3271,9 @@ function createNapiModule(options) {
2854
3271
  envObject.checkGCAccess();
2855
3272
  if (!value)
2856
3273
  return envObject.setLastError(1);
3274
+ result >>>= 0;
3275
+ buf >>>= 0;
3276
+ buf_size >>>= 0;
2857
3277
  buf_size = buf_size >>> 0;
2858
3278
  var handle = emnapiCtx.handleStore.get(value);
2859
3279
  if (typeof handle.value !== 'string') {
@@ -2889,6 +3309,7 @@ function createNapiModule(options) {
2889
3309
  if (typeof handle.value !== 'number') {
2890
3310
  return envObject.setLastError(6);
2891
3311
  }
3312
+ result >>>= 0;
2892
3313
  var v = new Uint32Array([handle.value])[0];
2893
3314
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2894
3315
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2914,7 +3335,8 @@ function createNapiModule(options) {
2914
3335
  napi_get_value_string_latin1: napi_get_value_string_latin1,
2915
3336
  napi_get_value_string_utf16: napi_get_value_string_utf16,
2916
3337
  napi_get_value_string_utf8: napi_get_value_string_utf8,
2917
- 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
2918
3340
  });
2919
3341
  function napi_create_int32(env, value, result) {
2920
3342
  if (!env)
@@ -2923,6 +3345,7 @@ function createNapiModule(options) {
2923
3345
  envObject.checkGCAccess();
2924
3346
  if (!result)
2925
3347
  return envObject.setLastError(1);
3348
+ result >>>= 0;
2926
3349
  var v = emnapiCtx.addToCurrentScope(value).id;
2927
3350
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2928
3351
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2935,6 +3358,7 @@ function createNapiModule(options) {
2935
3358
  envObject.checkGCAccess();
2936
3359
  if (!result)
2937
3360
  return envObject.setLastError(1);
3361
+ result >>>= 0;
2938
3362
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
2939
3363
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2940
3364
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2950,6 +3374,7 @@ function createNapiModule(options) {
2950
3374
  return envObject.setLastError(1);
2951
3375
  value = Number(low);
2952
3376
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3377
+ high >>>= 0;
2953
3378
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2954
3379
  HEAP_DATA_VIEW.setUint32(high, v1, true);
2955
3380
  return envObject.clearLastError();
@@ -2961,6 +3386,7 @@ function createNapiModule(options) {
2961
3386
  envObject.checkGCAccess();
2962
3387
  if (!result)
2963
3388
  return envObject.setLastError(1);
3389
+ result >>>= 0;
2964
3390
  var v = emnapiCtx.addToCurrentScope(value).id;
2965
3391
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2966
3392
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -3031,6 +3457,7 @@ function createNapiModule(options) {
3031
3457
  return envObject.setLastError(1);
3032
3458
  value = low;
3033
3459
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3460
+ high >>>= 0;
3034
3461
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3035
3462
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3036
3463
  return envObject.clearLastError();
@@ -3048,6 +3475,7 @@ function createNapiModule(options) {
3048
3475
  return envObject.setLastError(1);
3049
3476
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
3050
3477
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3478
+ high >>>= 0;
3051
3479
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3052
3480
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3053
3481
  return envObject.clearLastError();
@@ -3069,6 +3497,8 @@ function createNapiModule(options) {
3069
3497
  }
3070
3498
  if (!result)
3071
3499
  return envObject.setLastError(1);
3500
+ words >>>= 0;
3501
+ word_count >>>= 0;
3072
3502
  word_count = word_count >>> 0;
3073
3503
  if (word_count > 2147483647) {
3074
3504
  return envObject.setLastError(1);
@@ -3085,6 +3515,7 @@ function createNapiModule(options) {
3085
3515
  value += wordi << BigInt(64 * i);
3086
3516
  }
3087
3517
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
3518
+ result >>>= 0;
3088
3519
  v = emnapiCtx.addToCurrentScope(value).id;
3089
3520
  HEAP_DATA_VIEW.setUint32(result, v, true);
3090
3521
  return envObject.getReturnStatus();
@@ -3113,6 +3544,7 @@ function createNapiModule(options) {
3113
3544
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
3114
3545
  });
3115
3546
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
3547
+ utf8name >>>= 0;
3116
3548
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
3117
3549
  var f;
3118
3550
  var napiCallback = (wasmTable.get(cb));
@@ -3253,6 +3685,7 @@ function createNapiModule(options) {
3253
3685
  if (!finalize_cb)
3254
3686
  return envObject.setLastError(1);
3255
3687
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
3688
+ result >>>= 0;
3256
3689
  referenceId = reference.id;
3257
3690
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3258
3691
  HEAP_DATA_VIEW.setUint32(result, referenceId, true);
@@ -3301,6 +3734,7 @@ function createNapiModule(options) {
3301
3734
  if (!ref)
3302
3735
  return envObject.setLastError(1);
3303
3736
  if (result) {
3737
+ result >>>= 0;
3304
3738
  data = ref.data();
3305
3739
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3306
3740
  HEAP_DATA_VIEW.setUint32(result, data, true);
@@ -3337,12 +3771,15 @@ function createNapiModule(options) {
3337
3771
  return envObject.setLastError(1);
3338
3772
  if (!constructor)
3339
3773
  return envObject.setLastError(1);
3774
+ length >>>= 0;
3775
+ properties >>>= 0;
3776
+ property_count >>>= 0;
3340
3777
  property_count = property_count >>> 0;
3341
3778
  if (property_count > 0) {
3342
3779
  if (!properties)
3343
3780
  return envObject.setLastError(1);
3344
3781
  }
3345
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
3782
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
3346
3783
  return envObject.setLastError(1);
3347
3784
  }
3348
3785
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -3360,6 +3797,7 @@ function createNapiModule(options) {
3360
3797
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
3361
3798
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
3362
3799
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
3800
+ attributes >>>= 0;
3363
3801
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
3364
3802
  if (utf8Name) {
3365
3803
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -3381,6 +3819,7 @@ function createNapiModule(options) {
3381
3819
  }
3382
3820
  var valueHandle = emnapiCtx.addToCurrentScope(F);
3383
3821
  valueHandleId = valueHandle.id;
3822
+ result >>>= 0;
3384
3823
  HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
3385
3824
  return envObject.getReturnStatus();
3386
3825
  }
@@ -3416,6 +3855,7 @@ function createNapiModule(options) {
3416
3855
  if (!(value.isObject() || value.isFunction())) {
3417
3856
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
3418
3857
  }
3858
+ type_tag >>>= 0;
3419
3859
  if (!type_tag) {
3420
3860
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
3421
3861
  }
@@ -3460,6 +3900,7 @@ function createNapiModule(options) {
3460
3900
  }
3461
3901
  var binding = envObject.getObjectBinding(value.value);
3462
3902
  if (binding.tag !== null) {
3903
+ type_tag >>>= 0;
3463
3904
  var tag = binding.tag;
3464
3905
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
3465
3906
  ret = (tag[0] === typeTag[0] &&
@@ -3470,6 +3911,7 @@ function createNapiModule(options) {
3470
3911
  else {
3471
3912
  ret = false;
3472
3913
  }
3914
+ result >>>= 0;
3473
3915
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3474
3916
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
3475
3917
  return envObject.getReturnStatus();
@@ -3497,8 +3939,12 @@ function createNapiModule(options) {
3497
3939
  }
3498
3940
  var handle = handleResult.handle;
3499
3941
  var ownership = !result ? 0 : 1;
3942
+ finalize_data >>>= 0;
3943
+ finalize_cb >>>= 0;
3944
+ finalize_hint >>>= 0;
3500
3945
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
3501
3946
  if (result) {
3947
+ result >>>= 0;
3502
3948
  var referenceId = reference.id;
3503
3949
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3504
3950
  HEAP_DATA_VIEW.setUint32(result, referenceId, true);
@@ -3537,6 +3983,9 @@ function createNapiModule(options) {
3537
3983
  try {
3538
3984
  if (!result)
3539
3985
  return envObject.setLastError(1);
3986
+ byte_length >>>= 0;
3987
+ external_data >>>= 0;
3988
+ result >>>= 0;
3540
3989
  byte_length = byte_length >>> 0;
3541
3990
  if (!external_data) {
3542
3991
  byte_length = 0;
@@ -3588,6 +4037,12 @@ function createNapiModule(options) {
3588
4037
  case -1:
3589
4038
  viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
3590
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;
3591
4046
  case -2: {
3592
4047
  if (!emnapiCtx.feature.Buffer) {
3593
4048
  throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
@@ -3641,7 +4096,7 @@ function createNapiModule(options) {
3641
4096
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
3642
4097
  if (!pointer)
3643
4098
  throw new Error('Unknown ArrayBuffer address');
3644
- if (typeof len !== 'number' || len === -1) {
4099
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3645
4100
  len = arrayBufferOrView.byteLength - offset;
3646
4101
  }
3647
4102
  len = len >>> 0;
@@ -3663,7 +4118,7 @@ function createNapiModule(options) {
3663
4118
  var pointer = viewPointerInfo.address;
3664
4119
  if (!pointer)
3665
4120
  throw new Error('Unknown ArrayBuffer address');
3666
- if (typeof len !== 'number' || len === -1) {
4121
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3667
4122
  len = latestView.byteLength - offset;
3668
4123
  }
3669
4124
  len = len >>> 0;
@@ -3695,6 +4150,9 @@ function createNapiModule(options) {
3695
4150
  try {
3696
4151
  if (!arraybuffer_or_view)
3697
4152
  return envObject.setLastError(1);
4153
+ arraybuffer_or_view >>>= 0;
4154
+ offset >>>= 0;
4155
+ len >>>= 0;
3698
4156
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3699
4157
  var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
3700
4158
  var handle = envObject.ctx.handleStore.get(handleId);
@@ -3703,6 +4161,7 @@ function createNapiModule(options) {
3703
4161
  }
3704
4162
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
3705
4163
  if (handle.value !== ret) {
4164
+ arraybuffer_or_view >>>= 0;
3706
4165
  v = envObject.ensureHandleId(ret);
3707
4166
  HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
3708
4167
  }
@@ -3756,13 +4215,16 @@ function createNapiModule(options) {
3756
4215
  p = info.address;
3757
4216
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3758
4217
  if (address) {
4218
+ address >>>= 0;
3759
4219
  HEAP_DATA_VIEW.setUint32(address, p, true);
3760
4220
  }
3761
4221
  if (ownership) {
4222
+ ownership >>>= 0;
3762
4223
  ownershipOut = info.ownership;
3763
4224
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
3764
4225
  }
3765
4226
  if (runtime_allocated) {
4227
+ runtime_allocated >>>= 0;
3766
4228
  runtimeAllocated = info.runtimeAllocated;
3767
4229
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
3768
4230
  }
@@ -3788,6 +4250,7 @@ function createNapiModule(options) {
3788
4250
  }
3789
4251
  var versions = runtimeVersion.split('.')
3790
4252
  .map(function (n) { return Number(n); });
4253
+ version >>>= 0;
3791
4254
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3792
4255
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
3793
4256
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
@@ -3813,6 +4276,7 @@ function createNapiModule(options) {
3813
4276
  envObject.checkGCAccess();
3814
4277
  if (!result)
3815
4278
  return envObject.setLastError(1);
4279
+ result >>>= 0;
3816
4280
  var value = emnapiCtx.addToCurrentScope([]).id;
3817
4281
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3818
4282
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -3825,6 +4289,8 @@ function createNapiModule(options) {
3825
4289
  envObject.checkGCAccess();
3826
4290
  if (!result)
3827
4291
  return envObject.setLastError(1);
4292
+ length >>>= 0;
4293
+ result >>>= 0;
3828
4294
  length = length >>> 0;
3829
4295
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
3830
4296
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3832,9 +4298,11 @@ function createNapiModule(options) {
3832
4298
  return envObject.clearLastError();
3833
4299
  }
3834
4300
  function emnapiCreateArrayBuffer(byte_length, data, shared) {
4301
+ byte_length >>>= 0;
3835
4302
  byte_length = byte_length >>> 0;
3836
4303
  var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
3837
4304
  if (data) {
4305
+ data >>>= 0;
3838
4306
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
3839
4307
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3840
4308
  HEAP_DATA_VIEW.setUint32(data, p, true);
@@ -3855,6 +4323,7 @@ function createNapiModule(options) {
3855
4323
  try {
3856
4324
  if (!result)
3857
4325
  return envObject.setLastError(1);
4326
+ result >>>= 0;
3858
4327
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
3859
4328
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3860
4329
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3880,6 +4349,7 @@ function createNapiModule(options) {
3880
4349
  try {
3881
4350
  if (!result)
3882
4351
  return envObject.setLastError(1);
4352
+ result >>>= 0;
3883
4353
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
3884
4354
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3885
4355
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3905,6 +4375,7 @@ function createNapiModule(options) {
3905
4375
  try {
3906
4376
  if (!result)
3907
4377
  return envObject.setLastError(1);
4378
+ result >>>= 0;
3908
4379
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
3909
4380
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3910
4381
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -3936,6 +4407,7 @@ function createNapiModule(options) {
3936
4407
  if (finalize_cb) {
3937
4408
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
3938
4409
  }
4410
+ result >>>= 0;
3939
4411
  value = externalHandle.id;
3940
4412
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3941
4413
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -3960,6 +4432,9 @@ function createNapiModule(options) {
3960
4432
  try {
3961
4433
  if (!result)
3962
4434
  return envObject.setLastError(1);
4435
+ byte_length >>>= 0;
4436
+ external_data >>>= 0;
4437
+ result >>>= 0;
3963
4438
  byte_length = byte_length >>> 0;
3964
4439
  if (!external_data) {
3965
4440
  byte_length = 0;
@@ -4017,18 +4492,20 @@ function createNapiModule(options) {
4017
4492
  envObject.checkGCAccess();
4018
4493
  if (!result)
4019
4494
  return envObject.setLastError(1);
4495
+ result >>>= 0;
4020
4496
  var value = emnapiCtx.addToCurrentScope({}).id;
4021
4497
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4022
4498
  HEAP_DATA_VIEW.setUint32(result, value, true);
4023
4499
  return envObject.clearLastError();
4024
4500
  }
4025
- function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4501
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4026
4502
  if (!env)
4027
4503
  return 1;
4028
4504
  var envObject = emnapiCtx.envStore.get(env);
4029
4505
  envObject.checkGCAccess();
4030
4506
  if (!result)
4031
4507
  return envObject.setLastError(1);
4508
+ property_count >>>= 0;
4032
4509
  property_count = property_count >>> 0;
4033
4510
  if (property_count > 0) {
4034
4511
  if (!property_names)
@@ -4040,6 +4517,8 @@ function createNapiModule(options) {
4040
4517
  ? emnapiCtx.handleStore.get(prototype_or_null).value
4041
4518
  : null;
4042
4519
  var properties = {};
4520
+ property_names >>>= 0;
4521
+ property_values >>>= 0;
4043
4522
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4044
4523
  for (var i = 0; i < property_count; i++) {
4045
4524
  var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
@@ -4060,6 +4539,7 @@ function createNapiModule(options) {
4060
4539
  return envObject.setLastError(9);
4061
4540
  }
4062
4541
  var value = emnapiCtx.addToCurrentScope(obj).id;
4542
+ result >>>= 0;
4063
4543
  HEAP_DATA_VIEW.setUint32(result, value, true);
4064
4544
  return envObject.clearLastError();
4065
4545
  }
@@ -4070,6 +4550,7 @@ function createNapiModule(options) {
4070
4550
  envObject.checkGCAccess();
4071
4551
  if (!result)
4072
4552
  return envObject.setLastError(1);
4553
+ result >>>= 0;
4073
4554
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4074
4555
  if (!description) {
4075
4556
  var value = emnapiCtx.addToCurrentScope(Symbol()).id;
@@ -4107,6 +4588,8 @@ function createNapiModule(options) {
4107
4588
  return envObject.setLastError(1);
4108
4589
  }
4109
4590
  var buffer = handle.value;
4591
+ byte_offset >>>= 0;
4592
+ length >>>= 0;
4110
4593
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
4111
4594
  var _a;
4112
4595
  byte_offset = byte_offset >>> 0;
@@ -4137,6 +4620,7 @@ function createNapiModule(options) {
4137
4620
  });
4138
4621
  }
4139
4622
  }
4623
+ result >>>= 0;
4140
4624
  value = emnapiCtx.addToCurrentScope(out).id;
4141
4625
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4142
4626
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4165,6 +4649,11 @@ function createNapiModule(options) {
4165
4649
  return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4166
4650
  case 10:
4167
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);
4168
4657
  default:
4169
4658
  return envObject.setLastError(1);
4170
4659
  }
@@ -4193,7 +4682,9 @@ function createNapiModule(options) {
4193
4682
  if (!Buffer) {
4194
4683
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
4195
4684
  }
4685
+ result >>>= 0;
4196
4686
  var buffer = void 0;
4687
+ size >>>= 0;
4197
4688
  size = size >>> 0;
4198
4689
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4199
4690
  if (!data || (size === 0)) {
@@ -4205,6 +4696,7 @@ function createNapiModule(options) {
4205
4696
  pointer = _malloc(size);
4206
4697
  if (!pointer)
4207
4698
  throw new Error('Out of memory');
4699
+ pointer >>>= 0;
4208
4700
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
4209
4701
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
4210
4702
  var viewDescriptor = {
@@ -4218,6 +4710,7 @@ function createNapiModule(options) {
4218
4710
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
4219
4711
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
4220
4712
  HEAP_DATA_VIEW.setUint32(result, value, true);
4713
+ data >>>= 0;
4221
4714
  HEAP_DATA_VIEW.setUint32(data, pointer, true);
4222
4715
  }
4223
4716
  return envObject.getReturnStatus();
@@ -4247,8 +4740,11 @@ function createNapiModule(options) {
4247
4740
  }
4248
4741
  var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
4249
4742
  var buffer = Buffer.from(arrayBuffer);
4743
+ data >>>= 0;
4744
+ length >>>= 0;
4250
4745
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
4251
4746
  value = emnapiCtx.addToCurrentScope(buffer).id;
4747
+ result >>>= 0;
4252
4748
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4253
4749
  HEAP_DATA_VIEW.setUint32(result, value, true);
4254
4750
  return envObject.getReturnStatus();
@@ -4277,6 +4773,8 @@ function createNapiModule(options) {
4277
4773
  return envObject.setLastError(1);
4278
4774
  if (!result)
4279
4775
  return envObject.setLastError(1);
4776
+ byte_offset >>>= 0;
4777
+ byte_length >>>= 0;
4280
4778
  byte_offset = byte_offset >>> 0;
4281
4779
  byte_length = byte_length >>> 0;
4282
4780
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4305,6 +4803,7 @@ function createNapiModule(options) {
4305
4803
  });
4306
4804
  }
4307
4805
  }
4806
+ result >>>= 0;
4308
4807
  value = emnapiCtx.addToCurrentScope(out).id;
4309
4808
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4310
4809
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4330,6 +4829,8 @@ function createNapiModule(options) {
4330
4829
  return envObject.setLastError(1);
4331
4830
  if (!result)
4332
4831
  return envObject.setLastError(1);
4832
+ byte_length >>>= 0;
4833
+ byte_offset >>>= 0;
4333
4834
  byte_length = byte_length >>> 0;
4334
4835
  byte_offset = byte_offset >>> 0;
4335
4836
  var value = emnapiCtx.handleStore.get(arraybuffer).value;
@@ -4351,6 +4852,7 @@ function createNapiModule(options) {
4351
4852
  });
4352
4853
  }
4353
4854
  }
4855
+ result >>>= 0;
4354
4856
  var v = emnapiCtx.addToCurrentScope(dataview).id;
4355
4857
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4356
4858
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -4375,7 +4877,10 @@ function createNapiModule(options) {
4375
4877
  envObject.checkGCAccess();
4376
4878
  if (!result)
4377
4879
  return envObject.setLastError(1);
4378
- var autoLength = length === -1;
4880
+ length >>>= 0;
4881
+ utf8description >>>= 0;
4882
+ result >>>= 0;
4883
+ var autoLength = length === -1 || length === 4294967295;
4379
4884
  var sizelength = length >>> 0;
4380
4885
  if (length !== 0) {
4381
4886
  if (!utf8description)
@@ -4403,10 +4908,10 @@ function createNapiModule(options) {
4403
4908
  napi_create_external_arraybuffer: napi_create_external_arraybuffer,
4404
4909
  napi_create_external_buffer: napi_create_external_buffer,
4405
4910
  napi_create_object: napi_create_object,
4406
- napi_create_object_with_properties: napi_create_object_with_properties,
4407
4911
  napi_create_symbol: napi_create_symbol,
4408
4912
  napi_create_typedarray: napi_create_typedarray,
4409
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,
4410
4915
  node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
4411
4916
  node_api_symbol_for: node_api_symbol_for
4412
4917
  });
@@ -4417,6 +4922,7 @@ function createNapiModule(options) {
4417
4922
  envObject.checkGCAccess();
4418
4923
  if (!result)
4419
4924
  return envObject.setLastError(1);
4925
+ result >>>= 0;
4420
4926
  var v = value === 0 ? 3 : 4;
4421
4927
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4422
4928
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -4429,6 +4935,7 @@ function createNapiModule(options) {
4429
4935
  envObject.checkGCAccess();
4430
4936
  if (!result)
4431
4937
  return envObject.setLastError(1);
4938
+ result >>>= 0;
4432
4939
  var value = 5;
4433
4940
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4434
4941
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4441,6 +4948,7 @@ function createNapiModule(options) {
4441
4948
  envObject.checkGCAccess();
4442
4949
  if (!result)
4443
4950
  return envObject.setLastError(1);
4951
+ result >>>= 0;
4444
4952
  var value = 2;
4445
4953
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4446
4954
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4453,6 +4961,7 @@ function createNapiModule(options) {
4453
4961
  envObject.checkGCAccess();
4454
4962
  if (!result)
4455
4963
  return envObject.setLastError(1);
4964
+ result >>>= 0;
4456
4965
  var value = 1;
4457
4966
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4458
4967
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4469,6 +4978,9 @@ function createNapiModule(options) {
4469
4978
  if (!env)
4470
4979
  return 1;
4471
4980
  var envObject = emnapiCtx.envStore.get(env);
4981
+ data >>>= 0;
4982
+ finalize_cb >>>= 0;
4983
+ finalize_hint >>>= 0;
4472
4984
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
4473
4985
  return envObject.clearLastError();
4474
4986
  }
@@ -4478,6 +4990,7 @@ function createNapiModule(options) {
4478
4990
  var envObject = emnapiCtx.envStore.get(env);
4479
4991
  if (!data)
4480
4992
  return envObject.setLastError(1);
4993
+ data >>>= 0;
4481
4994
  var value = envObject.getInstanceData();
4482
4995
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4483
4996
  HEAP_DATA_VIEW.setUint32(data, value, true);
@@ -4489,11 +5002,15 @@ function createNapiModule(options) {
4489
5002
  napi_set_instance_data: napi_set_instance_data
4490
5003
  });
4491
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;
4492
5008
  var envObject = emnapiCtx.envStore.get(env);
4493
5009
  var lastError = envObject.lastError;
4494
5010
  var errorCode = lastError.errorCode;
4495
5011
  var engineErrorCode = lastError.engineErrorCode >>> 0;
4496
5012
  var engineReserved = lastError.engineReserved;
5013
+ engineReserved >>>= 0;
4497
5014
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4498
5015
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
4499
5016
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
@@ -4533,6 +5050,8 @@ function createNapiModule(options) {
4533
5050
  try {
4534
5051
  if (!msg)
4535
5052
  return envObject.setLastError(1);
5053
+ code >>>= 0;
5054
+ msg >>>= 0;
4536
5055
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
4537
5056
  if (code)
4538
5057
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4557,6 +5076,8 @@ function createNapiModule(options) {
4557
5076
  try {
4558
5077
  if (!msg)
4559
5078
  return envObject.setLastError(1);
5079
+ code >>>= 0;
5080
+ msg >>>= 0;
4560
5081
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
4561
5082
  if (code)
4562
5083
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4581,6 +5102,8 @@ function createNapiModule(options) {
4581
5102
  try {
4582
5103
  if (!msg)
4583
5104
  return envObject.setLastError(1);
5105
+ code >>>= 0;
5106
+ msg >>>= 0;
4584
5107
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
4585
5108
  if (code)
4586
5109
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4605,6 +5128,8 @@ function createNapiModule(options) {
4605
5128
  try {
4606
5129
  if (!msg)
4607
5130
  return envObject.setLastError(1);
5131
+ code >>>= 0;
5132
+ msg >>>= 0;
4608
5133
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
4609
5134
  if (code)
4610
5135
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4624,6 +5149,7 @@ function createNapiModule(options) {
4624
5149
  if (!result)
4625
5150
  return envObject.setLastError(1);
4626
5151
  var r = envObject.tryCatch.hasCaught();
5152
+ result >>>= 0;
4627
5153
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4628
5154
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
4629
5155
  return envObject.clearLastError();
@@ -4649,6 +5175,7 @@ function createNapiModule(options) {
4649
5175
  }
4650
5176
  error.code = codeValue;
4651
5177
  }
5178
+ result >>>= 0;
4652
5179
  var value = emnapiCtx.addToCurrentScope(error).id;
4653
5180
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4654
5181
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4675,6 +5202,7 @@ function createNapiModule(options) {
4675
5202
  }
4676
5203
  error.code = codeValue;
4677
5204
  }
5205
+ result >>>= 0;
4678
5206
  var value = emnapiCtx.addToCurrentScope(error).id;
4679
5207
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4680
5208
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4701,6 +5229,7 @@ function createNapiModule(options) {
4701
5229
  }
4702
5230
  error.code = codeValue;
4703
5231
  }
5232
+ result >>>= 0;
4704
5233
  var value = emnapiCtx.addToCurrentScope(error).id;
4705
5234
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4706
5235
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4727,6 +5256,7 @@ function createNapiModule(options) {
4727
5256
  }
4728
5257
  error.code = codeValue;
4729
5258
  }
5259
+ result >>>= 0;
4730
5260
  var value = emnapiCtx.addToCurrentScope(error).id;
4731
5261
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4732
5262
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4739,6 +5269,7 @@ function createNapiModule(options) {
4739
5269
  envObject.checkGCAccess();
4740
5270
  if (!result)
4741
5271
  return envObject.setLastError(1);
5272
+ result >>>= 0;
4742
5273
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4743
5274
  if (!envObject.tryCatch.hasCaught()) {
4744
5275
  HEAP_DATA_VIEW.setUint32(result, 1, true);
@@ -4753,6 +5284,10 @@ function createNapiModule(options) {
4753
5284
  return envObject.clearLastError();
4754
5285
  }
4755
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;
4756
5291
  var locationStr = emnapiString.UTF8ToString(location, location_len);
4757
5292
  var messageStr = emnapiString.UTF8ToString(message, message_len);
4758
5293
  if (emnapiNodeBinding) {
@@ -4806,8 +5341,21 @@ function createNapiModule(options) {
4806
5341
  node_api_create_syntax_error: node_api_create_syntax_error,
4807
5342
  node_api_throw_syntax_error: node_api_throw_syntax_error
4808
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
+ }
4809
5358
  function napi_create_function(env, utf8name, length, cb, data, result) {
4810
- var value;
4811
5359
  if (!env)
4812
5360
  return 1;
4813
5361
  var envObject = emnapiCtx.envStore.get(env);
@@ -4822,15 +5370,7 @@ function createNapiModule(options) {
4822
5370
  return envObject.setLastError(1);
4823
5371
  if (!cb)
4824
5372
  return envObject.setLastError(1);
4825
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
4826
- if (fresult.status !== 0)
4827
- return envObject.setLastError(fresult.status);
4828
- var f = fresult.f;
4829
- var valueHandle = emnapiCtx.addToCurrentScope(f);
4830
- value = valueHandle.id;
4831
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4832
- HEAP_DATA_VIEW.setUint32(result, value, true);
4833
- return envObject.getReturnStatus();
5373
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
4834
5374
  }
4835
5375
  catch (err) {
4836
5376
  envObject.tryCatch.setError(err);
@@ -4844,11 +5384,14 @@ function createNapiModule(options) {
4844
5384
  if (!cbinfo)
4845
5385
  return envObject.setLastError(1);
4846
5386
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5387
+ argc >>>= 0;
5388
+ argv >>>= 0;
4847
5389
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4848
5390
  if (argv) {
4849
5391
  if (!argc)
4850
5392
  return envObject.setLastError(1);
4851
5393
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
5394
+ argcValue >>>= 0;
4852
5395
  var len = cbinfoValue.args.length;
4853
5396
  var arrlen = argcValue < len ? argcValue : len;
4854
5397
  var i = 0;
@@ -4866,10 +5409,12 @@ function createNapiModule(options) {
4866
5409
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
4867
5410
  }
4868
5411
  if (this_arg) {
5412
+ this_arg >>>= 0;
4869
5413
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
4870
5414
  HEAP_DATA_VIEW.setUint32(this_arg, v, true);
4871
5415
  }
4872
5416
  if (data) {
5417
+ data >>>= 0;
4873
5418
  HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
4874
5419
  }
4875
5420
  return envObject.clearLastError();
@@ -4889,6 +5434,9 @@ function createNapiModule(options) {
4889
5434
  try {
4890
5435
  if (!recv)
4891
5436
  return envObject.setLastError(1);
5437
+ argc >>>= 0;
5438
+ argv >>>= 0;
5439
+ result >>>= 0;
4892
5440
  argc = argc >>> 0;
4893
5441
  if (argc > 0) {
4894
5442
  if (!argv)
@@ -4933,6 +5481,9 @@ function createNapiModule(options) {
4933
5481
  try {
4934
5482
  if (!constructor)
4935
5483
  return envObject.setLastError(1);
5484
+ argc >>>= 0;
5485
+ argv >>>= 0;
5486
+ result >>>= 0;
4936
5487
  argc = argc >>> 0;
4937
5488
  if (argc > 0) {
4938
5489
  if (!argv)
@@ -4983,6 +5534,7 @@ function createNapiModule(options) {
4983
5534
  return envObject.setLastError(1);
4984
5535
  if (!result)
4985
5536
  return envObject.setLastError(1);
5537
+ result >>>= 0;
4986
5538
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
4987
5539
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
4988
5540
  var value = thiz == null || thiz.constructor == null
@@ -4996,6 +5548,7 @@ function createNapiModule(options) {
4996
5548
  }
4997
5549
  var functionMod = Object.freeze({
4998
5550
  __proto__: null,
5551
+ _emnapi_create_function: _emnapi_create_function,
4999
5552
  napi_call_function: napi_call_function,
5000
5553
  napi_create_function: napi_create_function,
5001
5554
  napi_get_cb_info: napi_get_cb_info,
@@ -5010,6 +5563,7 @@ function createNapiModule(options) {
5010
5563
  if (!result)
5011
5564
  return envObject.setLastError(1);
5012
5565
  var scope = emnapiCtx.openScope(envObject);
5566
+ result >>>= 0;
5013
5567
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5014
5568
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5015
5569
  return envObject.clearLastError();
@@ -5035,6 +5589,7 @@ function createNapiModule(options) {
5035
5589
  if (!result)
5036
5590
  return envObject.setLastError(1);
5037
5591
  var scope = emnapiCtx.openScope(envObject);
5592
+ result >>>= 0;
5038
5593
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5039
5594
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5040
5595
  return envObject.clearLastError();
@@ -5065,6 +5620,8 @@ function createNapiModule(options) {
5065
5620
  return envObject.setLastError(1);
5066
5621
  var scopeObject = emnapiCtx.scopeStore.get(scope);
5067
5622
  if (!scopeObject.escapeCalled()) {
5623
+ escapee >>>= 0;
5624
+ result >>>= 0;
5068
5625
  var newHandle = scopeObject.escape(escapee);
5069
5626
  var value = newHandle ? newHandle.id : 0;
5070
5627
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5089,6 +5646,7 @@ function createNapiModule(options) {
5089
5646
  }
5090
5647
  }
5091
5648
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
5649
+ result >>>= 0;
5092
5650
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5093
5651
  HEAP_DATA_VIEW.setUint32(result, ref.id, true);
5094
5652
  return envObject.clearLastError();
@@ -5111,6 +5669,7 @@ function createNapiModule(options) {
5111
5669
  return envObject.setLastError(1);
5112
5670
  var count = emnapiCtx.refStore.get(ref).ref();
5113
5671
  if (result) {
5672
+ result >>>= 0;
5114
5673
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5115
5674
  HEAP_DATA_VIEW.setUint32(result, count, true);
5116
5675
  }
@@ -5130,6 +5689,7 @@ function createNapiModule(options) {
5130
5689
  }
5131
5690
  var count = reference.unref();
5132
5691
  if (result) {
5692
+ result >>>= 0;
5133
5693
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5134
5694
  HEAP_DATA_VIEW.setUint32(result, count, true);
5135
5695
  }
@@ -5146,6 +5706,7 @@ function createNapiModule(options) {
5146
5706
  return envObject.setLastError(1);
5147
5707
  var reference = emnapiCtx.refStore.get(ref);
5148
5708
  var handleId = reference.get(envObject);
5709
+ result >>>= 0;
5149
5710
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5150
5711
  HEAP_DATA_VIEW.setUint32(result, handleId, true);
5151
5712
  return envObject.clearLastError();
@@ -5156,6 +5717,8 @@ function createNapiModule(options) {
5156
5717
  var envObject = emnapiCtx.envStore.get(env);
5157
5718
  if (!fun)
5158
5719
  return envObject.setLastError(1);
5720
+ fun >>>= 0;
5721
+ arg >>>= 0;
5159
5722
  emnapiCtx.addCleanupHook(envObject, fun, arg);
5160
5723
  return 0;
5161
5724
  }
@@ -5165,6 +5728,8 @@ function createNapiModule(options) {
5165
5728
  var envObject = emnapiCtx.envStore.get(env);
5166
5729
  if (!fun)
5167
5730
  return envObject.setLastError(1);
5731
+ fun >>>= 0;
5732
+ arg >>>= 0;
5168
5733
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
5169
5734
  return 0;
5170
5735
  }
@@ -5225,8 +5790,10 @@ function createNapiModule(options) {
5225
5790
  var p = new Promise(function (resolve, reject) {
5226
5791
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
5227
5792
  deferredObjectId = deferredObject.id;
5793
+ deferred >>>= 0;
5228
5794
  HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
5229
5795
  });
5796
+ promise >>>= 0;
5230
5797
  value = emnapiCtx.addToCurrentScope(p).id;
5231
5798
  HEAP_DATA_VIEW.setUint32(promise, value, true);
5232
5799
  return envObject.getReturnStatus();
@@ -5294,6 +5861,7 @@ function createNapiModule(options) {
5294
5861
  if (!is_promise)
5295
5862
  return envObject.setLastError(1);
5296
5863
  var h = emnapiCtx.handleStore.get(value);
5864
+ is_promise >>>= 0;
5297
5865
  var r = h.isPromise() ? 1 : 0;
5298
5866
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5299
5867
  HEAP_DATA_VIEW.setInt8(is_promise, r, true);
@@ -5437,6 +6005,7 @@ function createNapiModule(options) {
5437
6005
  }
5438
6006
  }
5439
6007
  }
6008
+ result >>>= 0;
5440
6009
  value = emnapiCtx.addToCurrentScope(ret).id;
5441
6010
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5442
6011
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5508,6 +6077,7 @@ function createNapiModule(options) {
5508
6077
  catch (_) {
5509
6078
  return envObject.setLastError(2);
5510
6079
  }
6080
+ result >>>= 0;
5511
6081
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
5512
6082
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5513
6083
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5547,6 +6117,7 @@ function createNapiModule(options) {
5547
6117
  catch (_) {
5548
6118
  return envObject.setLastError(2);
5549
6119
  }
6120
+ result >>>= 0;
5550
6121
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
5551
6122
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5552
6123
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5590,6 +6161,7 @@ function createNapiModule(options) {
5590
6161
  }
5591
6162
  }
5592
6163
  if (result) {
6164
+ result >>>= 0;
5593
6165
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5594
6166
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5595
6167
  }
@@ -5634,6 +6206,7 @@ function createNapiModule(options) {
5634
6206
  return envObject.setLastError(4);
5635
6207
  }
5636
6208
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
6209
+ result >>>= 0;
5637
6210
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5638
6211
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5639
6212
  return envObject.getReturnStatus();
@@ -5665,6 +6238,7 @@ function createNapiModule(options) {
5665
6238
  if (!cname) {
5666
6239
  return envObject.setLastError(1);
5667
6240
  }
6241
+ cname >>>= 0;
5668
6242
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
5669
6243
  return envObject.getReturnStatus();
5670
6244
  }
@@ -5703,6 +6277,8 @@ function createNapiModule(options) {
5703
6277
  catch (_) {
5704
6278
  return envObject.setLastError(2);
5705
6279
  }
6280
+ utf8name >>>= 0;
6281
+ result >>>= 0;
5706
6282
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
5707
6283
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5708
6284
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -5743,6 +6319,8 @@ function createNapiModule(options) {
5743
6319
  catch (_) {
5744
6320
  return envObject.setLastError(2);
5745
6321
  }
6322
+ utf8name >>>= 0;
6323
+ result >>>= 0;
5746
6324
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
5747
6325
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5748
6326
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5807,6 +6385,7 @@ function createNapiModule(options) {
5807
6385
  catch (_) {
5808
6386
  return envObject.setLastError(2);
5809
6387
  }
6388
+ result >>>= 0;
5810
6389
  r = ((index >>> 0) in v) ? 1 : 0;
5811
6390
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5812
6391
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5844,6 +6423,7 @@ function createNapiModule(options) {
5844
6423
  catch (_) {
5845
6424
  return envObject.setLastError(2);
5846
6425
  }
6426
+ result >>>= 0;
5847
6427
  value = envObject.ensureHandleId(v[index >>> 0]);
5848
6428
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5849
6429
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5884,6 +6464,7 @@ function createNapiModule(options) {
5884
6464
  }
5885
6465
  }
5886
6466
  if (result) {
6467
+ result >>>= 0;
5887
6468
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5888
6469
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5889
6470
  }
@@ -5906,6 +6487,8 @@ function createNapiModule(options) {
5906
6487
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
5907
6488
  envObject.clearLastError();
5908
6489
  try {
6490
+ properties >>>= 0;
6491
+ property_count >>>= 0;
5909
6492
  property_count = property_count >>> 0;
5910
6493
  if (property_count > 0) {
5911
6494
  if (!properties)
@@ -5929,6 +6512,7 @@ function createNapiModule(options) {
5929
6512
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
5930
6513
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
5931
6514
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
6515
+ attributes >>>= 0;
5932
6516
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
5933
6517
  if (utf8Name) {
5934
6518
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -6046,6 +6630,7 @@ function createNapiModule(options) {
6046
6630
  }
6047
6631
  var g = emnapiCtx.handleStore.get(5).value;
6048
6632
  var ret = g.eval(v8Script.value);
6633
+ result >>>= 0;
6049
6634
  value = envObject.ensureHandleId(ret);
6050
6635
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6051
6636
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -6071,6 +6656,7 @@ function createNapiModule(options) {
6071
6656
  if (!result)
6072
6657
  return envObject.setLastError(1);
6073
6658
  var v = emnapiCtx.handleStore.get(value);
6659
+ result >>>= 0;
6074
6660
  var r;
6075
6661
  if (v.isNumber()) {
6076
6662
  r = 3;
@@ -6126,6 +6712,7 @@ function createNapiModule(options) {
6126
6712
  if (!result)
6127
6713
  return envObject.setLastError(1);
6128
6714
  var handle = emnapiCtx.handleStore.get(value);
6715
+ result >>>= 0;
6129
6716
  v = handle.value ? 4 : 3;
6130
6717
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6131
6718
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6156,6 +6743,7 @@ function createNapiModule(options) {
6156
6743
  if (handle.isBigInt()) {
6157
6744
  throw new TypeError('Cannot convert a BigInt value to a number');
6158
6745
  }
6746
+ result >>>= 0;
6159
6747
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
6160
6748
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6161
6749
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6186,6 +6774,7 @@ function createNapiModule(options) {
6186
6774
  if (handle.value == null) {
6187
6775
  throw new TypeError('Cannot convert undefined or null to object');
6188
6776
  }
6777
+ result >>>= 0;
6189
6778
  v = envObject.ensureHandleId(Object(handle.value));
6190
6779
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6191
6780
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6216,6 +6805,7 @@ function createNapiModule(options) {
6216
6805
  if (handle.isSymbol()) {
6217
6806
  throw new TypeError('Cannot convert a Symbol value to a string');
6218
6807
  }
6808
+ result >>>= 0;
6219
6809
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
6220
6810
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6221
6811
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6244,6 +6834,7 @@ function createNapiModule(options) {
6244
6834
  return envObject.setLastError(1);
6245
6835
  if (!constructor)
6246
6836
  return envObject.setLastError(1);
6837
+ result >>>= 0;
6247
6838
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6248
6839
  HEAP_DATA_VIEW.setInt8(result, 0, true);
6249
6840
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -6271,6 +6862,7 @@ function createNapiModule(options) {
6271
6862
  if (!result)
6272
6863
  return envObject.setLastError(1);
6273
6864
  var h = emnapiCtx.handleStore.get(value);
6865
+ result >>>= 0;
6274
6866
  var r = h.isArray() ? 1 : 0;
6275
6867
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6276
6868
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6286,6 +6878,7 @@ function createNapiModule(options) {
6286
6878
  if (!result)
6287
6879
  return envObject.setLastError(1);
6288
6880
  var h = emnapiCtx.handleStore.get(value);
6881
+ result >>>= 0;
6289
6882
  var r = h.isArrayBuffer() ? 1 : 0;
6290
6883
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6291
6884
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6301,6 +6894,7 @@ function createNapiModule(options) {
6301
6894
  if (!result)
6302
6895
  return envObject.setLastError(1);
6303
6896
  var h = emnapiCtx.handleStore.get(value);
6897
+ result >>>= 0;
6304
6898
  var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
6305
6899
  (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
6306
6900
  ? 1
@@ -6319,6 +6913,7 @@ function createNapiModule(options) {
6319
6913
  if (!result)
6320
6914
  return envObject.setLastError(1);
6321
6915
  var h = emnapiCtx.handleStore.get(value);
6916
+ result >>>= 0;
6322
6917
  var r = h.isDate() ? 1 : 0;
6323
6918
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6324
6919
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6334,6 +6929,7 @@ function createNapiModule(options) {
6334
6929
  if (!result)
6335
6930
  return envObject.setLastError(1);
6336
6931
  var val = emnapiCtx.handleStore.get(value).value;
6932
+ result >>>= 0;
6337
6933
  var r = (val instanceof Error) ? 1 : 0;
6338
6934
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6339
6935
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6349,6 +6945,7 @@ function createNapiModule(options) {
6349
6945
  if (!result)
6350
6946
  return envObject.setLastError(1);
6351
6947
  var h = emnapiCtx.handleStore.get(value);
6948
+ result >>>= 0;
6352
6949
  var r = h.isTypedArray() ? 1 : 0;
6353
6950
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6354
6951
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6364,6 +6961,7 @@ function createNapiModule(options) {
6364
6961
  if (!result)
6365
6962
  return envObject.setLastError(1);
6366
6963
  var h = emnapiCtx.handleStore.get(value);
6964
+ result >>>= 0;
6367
6965
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
6368
6966
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6369
6967
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6379,6 +6977,7 @@ function createNapiModule(options) {
6379
6977
  if (!result)
6380
6978
  return envObject.setLastError(1);
6381
6979
  var h = emnapiCtx.handleStore.get(value);
6980
+ result >>>= 0;
6382
6981
  var r = h.isDataView() ? 1 : 0;
6383
6982
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6384
6983
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6404,6 +7003,7 @@ function createNapiModule(options) {
6404
7003
  return envObject.setLastError(1);
6405
7004
  var lv = emnapiCtx.handleStore.get(lhs).value;
6406
7005
  var rv = emnapiCtx.handleStore.get(rhs).value;
7006
+ result >>>= 0;
6407
7007
  r = (lv === rv) ? 1 : 0;
6408
7008
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6409
7009
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6454,6 +7054,7 @@ function createNapiModule(options) {
6454
7054
  if (!result)
6455
7055
  return envObject.setLastError(1);
6456
7056
  var h = emnapiCtx.handleStore.get(arraybuffer);
7057
+ result >>>= 0;
6457
7058
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6458
7059
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
6459
7060
  try {
@@ -6768,12 +7369,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
6768
7369
  try {
6769
7370
  if (type === 'async-worker-init') {
6770
7371
  this.handleAfterLoad(e, () => {
6771
- this.napiModule.initWorker(payload.arg);
6772
- });
6773
- }
6774
- else if (type === 'async-work-execute') {
6775
- this.handleAfterLoad(e, () => {
6776
- this.napiModule.executeAsyncWork(payload.work);
7372
+ this.napiModule.initWorker(payload.arg, payload.func);
6777
7373
  });
6778
7374
  }
6779
7375
  }
@@ -6784,7 +7380,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
6784
7380
  }
6785
7381
  }
6786
7382
 
6787
- const version = "1.7.1";
7383
+ const version = "1.10.0";
6788
7384
 
6789
7385
  exports.MessageHandler = MessageHandler;
6790
7386
  exports.createNapiModule = createNapiModule;