@tailwindcss/oxide-wasm32-wasi 4.2.4 → 4.3.0

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 (47) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +854 -307
  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 +892 -313
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +904 -328
  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 +854 -307
  12. package/node_modules/@emnapi/core/package.json +2 -2
  13. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +32 -5
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +8 -2
  15. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  16. package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +8 -2
  17. package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +8 -2
  18. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +33 -5
  19. package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +8 -2
  20. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +33 -5
  21. package/node_modules/@emnapi/runtime/dist/emnapi.js +33 -5
  22. package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +8 -2
  23. package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
  24. package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
  25. package/node_modules/@emnapi/runtime/dist/emnapi.mjs +32 -5
  26. package/node_modules/@emnapi/runtime/package.json +1 -1
  27. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +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 +6 -4
  43. package/package.json +5 -5
  44. package/tailwindcss-oxide.wasi-browser.js +1 -0
  45. package/tailwindcss-oxide.wasi.cjs +1 -1
  46. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
  47. package/wasi-worker-browser.mjs +4 -0
@@ -109,7 +109,6 @@ function createNapiModule(options) {
109
109
  filename: '',
110
110
  childThread: ENVIRONMENT_IS_PTHREAD,
111
111
  initWorker: undefined,
112
- executeAsyncWork: undefined,
113
112
  waitThreadStart: waitThreadStart,
114
113
  PThread: undefined,
115
114
  init: function (options) {
@@ -297,6 +296,9 @@ function createNapiModule(options) {
297
296
  return envObject.clearLastError();
298
297
  }
299
298
  function _emnapi_get_node_version(major, minor, patch) {
299
+ major >>>= 0;
300
+ minor >>>= 0;
301
+ patch >>>= 0;
300
302
  var versions = (typeof process === 'object' && process !== null &&
301
303
  typeof process.versions === 'object' && process.versions !== null &&
302
304
  typeof process.versions.node === 'string')
@@ -340,6 +342,7 @@ function createNapiModule(options) {
340
342
  }
341
343
  function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
342
344
  var envObject = emnapiCtx.envStore.get(env);
345
+ callback >>>= 0;
343
346
  envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
344
347
  }
345
348
  function _emnapi_ctx_increase_waiting_request_counter() {
@@ -404,9 +407,19 @@ function createNapiModule(options) {
404
407
  var worker = PThread.pthreads[tid];
405
408
  return worker;
406
409
  }
410
+ function _emnapi_worker_ref(pthreadPtr) {
411
+ if (ENVIRONMENT_IS_PTHREAD)
412
+ return;
413
+ pthreadPtr >>>= 0;
414
+ var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
415
+ if (worker && typeof worker.ref === 'function') {
416
+ worker.ref();
417
+ }
418
+ }
407
419
  function _emnapi_worker_unref(pthreadPtr) {
408
420
  if (ENVIRONMENT_IS_PTHREAD)
409
421
  return;
422
+ pthreadPtr >>>= 0;
410
423
  var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
411
424
  if (worker && typeof worker.unref === 'function') {
412
425
  worker.unref();
@@ -507,6 +520,7 @@ function createNapiModule(options) {
507
520
  _emnapi_async_send_js: _emnapi_async_send_js,
508
521
  _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
509
522
  _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
523
+ _emnapi_worker_ref: _emnapi_worker_ref,
510
524
  _emnapi_worker_unref: _emnapi_worker_unref
511
525
  });
512
526
  function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
@@ -515,22 +529,14 @@ function createNapiModule(options) {
515
529
  var envObject = emnapiCtx.envStore.get(env);
516
530
  if (!adjusted_value)
517
531
  return envObject.setLastError(1);
518
- var change_in_bytes_number = Number(change_in_bytes);
519
- if (change_in_bytes_number < 0) {
520
- return envObject.setLastError(1);
521
- }
522
- var old_size = wasmMemory.buffer.byteLength;
523
- var new_size = old_size + change_in_bytes_number;
524
- new_size = new_size + ((65536 - new_size % 65536) % 65536);
525
- if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
526
- return envObject.setLastError(9);
527
- }
532
+ var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
533
+ adjusted_value >>>= 0;
528
534
  if (emnapiCtx.feature.supportBigInt) {
529
535
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
530
- HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(wasmMemory.buffer.byteLength), true);
536
+ HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
531
537
  }
532
538
  else {
533
- $emnapiSetValueI64(adjusted_value, wasmMemory.buffer.byteLength);
539
+ $emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
534
540
  }
535
541
  return envObject.clearLastError();
536
542
  }
@@ -688,6 +694,7 @@ function createNapiModule(options) {
688
694
  var asyncId = asyncContext.asyncId;
689
695
  var triggerAsyncId = asyncContext.triggerAsyncId;
690
696
  if (result) {
697
+ result >>>= 0;
691
698
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
692
699
  HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
693
700
  HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
@@ -708,6 +715,8 @@ function createNapiModule(options) {
708
715
  return;
709
716
  var resource = emnapiCtx.handleStore.get(async_resource).value;
710
717
  var callback = emnapiCtx.handleStore.get(cb).value;
718
+ argv >>>= 0;
719
+ size >>>= 0;
711
720
  size = size >>> 0;
712
721
  var arr = Array(size);
713
722
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -720,6 +729,7 @@ function createNapiModule(options) {
720
729
  triggerAsyncId: trigger_async_id
721
730
  });
722
731
  if (result) {
732
+ result >>>= 0;
723
733
  var envObject = emnapiCtx.envStore.get(env);
724
734
  v = envObject.ensureHandleId(ret);
725
735
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -746,6 +756,7 @@ function createNapiModule(options) {
746
756
  }
747
757
  var low = Number(numberValue & BigInt(0xffffffff));
748
758
  var high = Number(numberValue >> BigInt(32));
759
+ result >>>= 0;
749
760
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
750
761
  HEAP_DATA_VIEW.setInt32(result, low, true);
751
762
  HEAP_DATA_VIEW.setInt32(result + 4, high, true);
@@ -755,6 +766,7 @@ function createNapiModule(options) {
755
766
  if (!emnapiNodeBinding) {
756
767
  return 9;
757
768
  }
769
+ async_context >>>= 0;
758
770
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
759
771
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
760
772
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
@@ -797,10 +809,13 @@ function createNapiModule(options) {
797
809
  if (typeof v8func !== 'function') {
798
810
  return envObject.setLastError(1);
799
811
  }
812
+ async_context >>>= 0;
800
813
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
801
814
  var low = HEAP_DATA_VIEW.getInt32(async_context, true);
802
815
  var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
803
816
  var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
817
+ argv >>>= 0;
818
+ argc >>>= 0;
804
819
  argc = argc >>> 0;
805
820
  var arr = Array(argc);
806
821
  for (; i < argc; i++) {
@@ -814,6 +829,7 @@ function createNapiModule(options) {
814
829
  if (ret.status !== 0)
815
830
  return envObject.setLastError(ret.status);
816
831
  if (result) {
832
+ result >>>= 0;
817
833
  v = envObject.ensureHandleId(ret.value);
818
834
  HEAP_DATA_VIEW.setUint32(result, v, true);
819
835
  }
@@ -841,29 +857,58 @@ function createNapiModule(options) {
841
857
  napi_open_callback_scope: napi_open_callback_scope
842
858
  });
843
859
  var emnapiTSFN = {
860
+ _liveSet: {},
844
861
  offset: {
862
+ __size__: 0,
845
863
  resource: 0,
846
- async_id: 8,
847
- trigger_async_id: 16,
848
- queue_size: 24,
849
- queue: 1 * 4 + 24,
850
- thread_count: 2 * 4 + 24,
851
- is_closing: 3 * 4 + 24,
852
- dispatch_state: 3 * 4 + 28,
853
- context: 3 * 4 + 32,
854
- max_queue_size: 4 * 4 + 32,
855
- ref: 5 * 4 + 32,
856
- env: 6 * 4 + 32,
857
- finalize_data: 7 * 4 + 32,
858
- finalize_cb: 8 * 4 + 32,
859
- call_js_cb: 9 * 4 + 32,
860
- handles_closing: 10 * 4 + 32,
861
- async_ref: 10 * 4 + 36,
862
- mutex: 10 * 4 + 40,
863
- cond: 10 * 4 + 44,
864
- end: 10 * 4 + 48
864
+ async_id: 0,
865
+ trigger_async_id: 0,
866
+ queue_size: 0,
867
+ is_some: 0,
868
+ queue: 0,
869
+ async_pending: 0,
870
+ async_u_fd: 0,
871
+ thread_count: 0,
872
+ state: 0,
873
+ dispatch_state: 0,
874
+ context: 0,
875
+ max_queue_size: 0,
876
+ ref: 0,
877
+ env: 0,
878
+ finalize_data: 0,
879
+ finalize_cb: 0,
880
+ call_js_cb: 0,
881
+ handles_closing: 0,
882
+ async_ref: 0,
883
+ mutex: 0,
884
+ cond: 0
865
885
  },
866
886
  init: function () {
887
+ emnapiTSFN._liveSet = new Set();
888
+ emnapiTSFN.offset.__size__ = 184;
889
+ emnapiTSFN.offset.resource = 0;
890
+ emnapiTSFN.offset.async_id = 8;
891
+ emnapiTSFN.offset.trigger_async_id = 16;
892
+ emnapiTSFN.offset.queue_size = 60;
893
+ emnapiTSFN.offset.is_some = 24;
894
+ emnapiTSFN.offset.queue = 64;
895
+ emnapiTSFN.offset.async_pending = 132;
896
+ emnapiTSFN.offset.async_u_fd = 96;
897
+ emnapiTSFN.offset.thread_count = 136;
898
+ emnapiTSFN.offset.state = 140;
899
+ emnapiTSFN.offset.dispatch_state = 144;
900
+ emnapiTSFN.offset.context = 148;
901
+ emnapiTSFN.offset.max_queue_size = 152;
902
+ emnapiTSFN.offset.ref = 156;
903
+ emnapiTSFN.offset.env = 160;
904
+ emnapiTSFN.offset.finalize_data = 164;
905
+ emnapiTSFN.offset.finalize_cb = 168;
906
+ emnapiTSFN.offset.call_js_cb = 172;
907
+ emnapiTSFN.offset.handles_closing = 176;
908
+ emnapiTSFN.offset.async_ref = 180;
909
+ emnapiTSFN.offset.mutex = 32;
910
+ emnapiTSFN.offset.cond = 56;
911
+ emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
867
912
  if (typeof PThread !== 'undefined') {
868
913
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
869
914
  PThread.runningWorkers.forEach(emnapiTSFN.addListener);
@@ -887,7 +932,10 @@ function createNapiModule(options) {
887
932
  var type = __emnapi__.type;
888
933
  var payload = __emnapi__.payload;
889
934
  if (type === 'tsfn-send') {
890
- emnapiTSFN.dispatch(payload.tsfn);
935
+ var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
936
+ if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
937
+ emnapiTSFN.enqueue(payload.tsfn);
938
+ }
891
939
  }
892
940
  }
893
941
  };
@@ -914,6 +962,7 @@ function createNapiModule(options) {
914
962
  var queue = _malloc(size);
915
963
  if (!queue)
916
964
  return false;
965
+ queue >>>= 0;
917
966
  new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
918
967
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
919
968
  return true;
@@ -921,6 +970,12 @@ function createNapiModule(options) {
921
970
  destroyQueue: function (func) {
922
971
  var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
923
972
  if (queue) {
973
+ var node = emnapiTSFN.loadSizeTypeValue(queue, false);
974
+ while (node !== 0) {
975
+ var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
976
+ _free(node);
977
+ node = next;
978
+ }
924
979
  _free(queue);
925
980
  }
926
981
  },
@@ -932,6 +987,7 @@ function createNapiModule(options) {
932
987
  var node = _malloc(size);
933
988
  if (!node)
934
989
  throw new Error('OOM');
990
+ node >>>= 0;
935
991
  emnapiTSFN.storeSizeTypeValue(node, data, false);
936
992
  emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
937
993
  if (head === 0 && tail === 0) {
@@ -967,11 +1023,11 @@ function createNapiModule(options) {
967
1023
  var waitCondition = function () {
968
1024
  var queueSize = emnapiTSFN.getQueueSize(func);
969
1025
  var maxSize = emnapiTSFN.getMaxQueueSize(func);
970
- var isClosing = emnapiTSFN.getIsClosing(func);
971
- return queueSize >= maxSize && maxSize > 0 && !isClosing;
1026
+ return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
972
1027
  };
973
1028
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
974
- return mutex.execute(function () {
1029
+ var shouldDelete = false;
1030
+ var ret = mutex.execute(function () {
975
1031
  while (waitCondition()) {
976
1032
  if (mode === 0) {
977
1033
  return 15;
@@ -981,21 +1037,25 @@ function createNapiModule(options) {
981
1037
  }
982
1038
  cond.wait();
983
1039
  }
984
- if (emnapiTSFN.getIsClosing(func)) {
985
- if (emnapiTSFN.getThreadCount(func) === 0) {
986
- return 1;
987
- }
988
- else {
989
- emnapiTSFN.subThreadCount(func);
990
- return 16;
991
- }
992
- }
993
- else {
1040
+ if (emnapiTSFN.getState(func) === 0) {
994
1041
  emnapiTSFN.pushQueue(func, data);
995
1042
  emnapiTSFN.send(func);
996
1043
  return 0;
997
1044
  }
1045
+ if (emnapiTSFN.getThreadCount(func) === 0) {
1046
+ return 1;
1047
+ }
1048
+ emnapiTSFN.subThreadCount(func);
1049
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1050
+ return 16;
1051
+ }
1052
+ shouldDelete = true;
1053
+ return 16;
998
1054
  });
1055
+ if (shouldDelete) {
1056
+ emnapiTSFN.destroy(func);
1057
+ }
1058
+ return ret;
999
1059
  },
1000
1060
  getMutex: function (func) {
1001
1061
  var index = func + emnapiTSFN.offset.mutex;
@@ -1005,7 +1065,7 @@ function createNapiModule(options) {
1005
1065
  var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1006
1066
  if (isBrowserMain) {
1007
1067
  while (true) {
1008
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1068
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1009
1069
  if (oldValue === 0) {
1010
1070
  return;
1011
1071
  }
@@ -1013,18 +1073,18 @@ function createNapiModule(options) {
1013
1073
  }
1014
1074
  else {
1015
1075
  while (true) {
1016
- var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
1076
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1017
1077
  if (oldValue === 0) {
1018
1078
  return;
1019
1079
  }
1020
- Atomics.wait(i32a, 0, 1);
1080
+ Atomics.wait(i32a, 0, 10);
1021
1081
  }
1022
1082
  }
1023
1083
  },
1024
1084
  unlock: function () {
1025
1085
  var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1026
- var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
1027
- if (oldValue !== 1) {
1086
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1087
+ if (oldValue !== 10) {
1028
1088
  throw new Error('Tried to unlock while not holding the mutex');
1029
1089
  }
1030
1090
  Atomics.notify(i32a, 0, 1);
@@ -1067,14 +1127,14 @@ function createNapiModule(options) {
1067
1127
  var offset = emnapiTSFN.offset.queue_size;
1068
1128
  var arr, index;
1069
1129
  arr = new Uint32Array(wasmMemory.buffer);
1070
- index = (func + offset) >> 2;
1130
+ index = (func + offset) >>> 2;
1071
1131
  Atomics.add(arr, index, 1);
1072
1132
  },
1073
1133
  subQueueSize: function (func) {
1074
1134
  var offset = emnapiTSFN.offset.queue_size;
1075
1135
  var arr, index;
1076
1136
  arr = new Uint32Array(wasmMemory.buffer);
1077
- index = (func + offset) >> 2;
1137
+ index = (func + offset) >>> 2;
1078
1138
  Atomics.sub(arr, index, 1);
1079
1139
  },
1080
1140
  getThreadCount: function (func) {
@@ -1084,30 +1144,30 @@ function createNapiModule(options) {
1084
1144
  var offset = emnapiTSFN.offset.thread_count;
1085
1145
  var arr, index;
1086
1146
  arr = new Uint32Array(wasmMemory.buffer);
1087
- index = (func + offset) >> 2;
1147
+ index = (func + offset) >>> 2;
1088
1148
  Atomics.add(arr, index, 1);
1089
1149
  },
1090
1150
  subThreadCount: function (func) {
1091
1151
  var offset = emnapiTSFN.offset.thread_count;
1092
1152
  var arr, index;
1093
1153
  arr = new Uint32Array(wasmMemory.buffer);
1094
- index = (func + offset) >> 2;
1154
+ index = (func + offset) >>> 2;
1095
1155
  Atomics.sub(arr, index, 1);
1096
1156
  },
1097
- getIsClosing: function (func) {
1098
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
1157
+ getState: function (func) {
1158
+ return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2);
1099
1159
  },
1100
- setIsClosing: function (func, value) {
1101
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
1160
+ setState: function (func, value) {
1161
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value);
1102
1162
  },
1103
1163
  getHandlesClosing: function (func) {
1104
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
1164
+ return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing));
1105
1165
  },
1106
1166
  setHandlesClosing: function (func, value) {
1107
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
1167
+ Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value);
1108
1168
  },
1109
1169
  getDispatchState: function (func) {
1110
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
1170
+ return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
1111
1171
  },
1112
1172
  getContext: function (func) {
1113
1173
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -1138,12 +1198,12 @@ function createNapiModule(options) {
1138
1198
  var arr;
1139
1199
  if (unsigned) {
1140
1200
  arr = new Uint32Array(wasmMemory.buffer);
1141
- ret = Atomics.load(arr, offset >> 2);
1201
+ ret = Atomics.load(arr, offset >>> 2);
1142
1202
  return ret;
1143
1203
  }
1144
1204
  else {
1145
1205
  arr = new Int32Array(wasmMemory.buffer);
1146
- ret = Atomics.load(arr, offset >> 2);
1206
+ ret = Atomics.load(arr, offset >>> 2);
1147
1207
  return ret;
1148
1208
  }
1149
1209
  },
@@ -1151,52 +1211,80 @@ function createNapiModule(options) {
1151
1211
  var arr;
1152
1212
  if (unsigned) {
1153
1213
  arr = new Uint32Array(wasmMemory.buffer);
1154
- Atomics.store(arr, offset >> 2, value);
1214
+ Atomics.store(arr, offset >>> 2, value);
1155
1215
  return undefined;
1156
1216
  }
1157
1217
  else {
1158
1218
  arr = new Int32Array(wasmMemory.buffer);
1159
- Atomics.store(arr, offset >> 2, value >>> 0);
1219
+ Atomics.store(arr, offset >>> 2, value >>> 0);
1160
1220
  return undefined;
1161
1221
  }
1162
1222
  },
1223
+ releaseResources: function (func) {
1224
+ if (emnapiTSFN.getState(func) !== 2) {
1225
+ emnapiTSFN.setState(func, 2);
1226
+ var env = emnapiTSFN.getEnv(func);
1227
+ var envObject = emnapiCtx.envStore.get(env);
1228
+ var ref = emnapiTSFN.getRef(func);
1229
+ if (ref) {
1230
+ emnapiCtx.refStore.get(ref).dispose();
1231
+ }
1232
+ var resource = emnapiTSFN.getResource(func);
1233
+ emnapiCtx.refStore.get(resource).dispose();
1234
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1235
+ HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
1236
+ emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1237
+ envObject.unref();
1238
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1239
+ var arr = new Uint32Array(wasmMemory.buffer);
1240
+ if (Atomics.load(arr, asyncRefOffset) > 0) {
1241
+ Atomics.store(arr, asyncRefOffset, 0);
1242
+ emnapiCtx.decreaseWaitingRequestCounter();
1243
+ }
1244
+ if (emnapiNodeBinding) {
1245
+ var view = new DataView(wasmMemory.buffer);
1246
+ var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1247
+ var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1248
+ _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1249
+ }
1250
+ }
1251
+ },
1163
1252
  destroy: function (func) {
1253
+ emnapiTSFN._liveSet.delete(func);
1164
1254
  emnapiTSFN.destroyQueue(func);
1165
- var env = emnapiTSFN.getEnv(func);
1166
- var envObject = emnapiCtx.envStore.get(env);
1167
- var ref = emnapiTSFN.getRef(func);
1168
- if (ref) {
1169
- emnapiCtx.refStore.get(ref).dispose();
1170
- }
1171
- emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1172
- envObject.unref();
1173
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1174
- var arr = new Int32Array(wasmMemory.buffer);
1175
- if (Atomics.load(arr, asyncRefOffset)) {
1176
- Atomics.store(arr, asyncRefOffset, 0);
1177
- emnapiCtx.decreaseWaitingRequestCounter();
1178
- }
1179
- var resource = emnapiTSFN.getResource(func);
1180
- emnapiCtx.refStore.get(resource).dispose();
1181
- if (emnapiNodeBinding) {
1182
- var view = new DataView(wasmMemory.buffer);
1183
- var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1184
- var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1185
- _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
1186
- }
1255
+ emnapiTSFN.releaseResources(func);
1187
1256
  _free(func);
1188
1257
  },
1189
- emptyQueueAndDelete: function (func) {
1258
+ emptyQueue: function (func) {
1259
+ var drainQueue = [];
1260
+ emnapiTSFN.getMutex(func).execute(function () {
1261
+ while (emnapiTSFN.getQueueSize(func) > 0) {
1262
+ drainQueue.push(emnapiTSFN.shiftQueue(func));
1263
+ }
1264
+ });
1190
1265
  var callJsCb = emnapiTSFN.getCallJSCb(func);
1191
1266
  var context = emnapiTSFN.getContext(func);
1192
1267
  var data;
1193
- while (emnapiTSFN.getQueueSize(func) > 0) {
1194
- data = emnapiTSFN.shiftQueue(func);
1268
+ for (var i = 0; i < drainQueue.length; i++) {
1269
+ data = drainQueue[i];
1195
1270
  if (callJsCb) {
1196
1271
  (wasmTable.get(callJsCb))(0, 0, context, data);
1197
1272
  }
1198
1273
  }
1199
- emnapiTSFN.destroy(func);
1274
+ },
1275
+ maybeDelete: function (func) {
1276
+ var shouldDelete = false;
1277
+ emnapiTSFN.getMutex(func).execute(function () {
1278
+ if (emnapiTSFN.getThreadCount(func) > 0) {
1279
+ emnapiTSFN.releaseResources(func);
1280
+ }
1281
+ else {
1282
+ shouldDelete = true;
1283
+ }
1284
+ });
1285
+ if (shouldDelete) {
1286
+ emnapiTSFN.destroy(func);
1287
+ }
1200
1288
  },
1201
1289
  finalize: function (func) {
1202
1290
  var env = emnapiTSFN.getEnv(func);
@@ -1209,6 +1297,7 @@ function createNapiModule(options) {
1209
1297
  envObject.callFinalizerInternal(0, finalize, data, context);
1210
1298
  };
1211
1299
  try {
1300
+ emnapiTSFN.emptyQueue(func);
1212
1301
  if (finalize) {
1213
1302
  if (emnapiNodeBinding) {
1214
1303
  var resource = emnapiTSFN.getResource(func);
@@ -1226,7 +1315,7 @@ function createNapiModule(options) {
1226
1315
  f();
1227
1316
  }
1228
1317
  }
1229
- emnapiTSFN.emptyQueueAndDelete(func);
1318
+ emnapiTSFN.maybeDelete(func);
1230
1319
  }
1231
1320
  finally {
1232
1321
  emnapiCtx.closeScope(envObject);
@@ -1242,7 +1331,7 @@ function createNapiModule(options) {
1242
1331
  try {
1243
1332
  if (set_closing) {
1244
1333
  emnapiTSFN.getMutex(func).execute(function () {
1245
- emnapiTSFN.setIsClosing(func, 1);
1334
+ emnapiTSFN.setState(func, 1);
1246
1335
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1247
1336
  emnapiTSFN.getCond(func).signal();
1248
1337
  }
@@ -1252,6 +1341,7 @@ function createNapiModule(options) {
1252
1341
  return;
1253
1342
  }
1254
1343
  emnapiTSFN.setHandlesClosing(func, 1);
1344
+ Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1255
1345
  emnapiCtx.feature.setImmediate(function () {
1256
1346
  emnapiTSFN.finalize(func);
1257
1347
  });
@@ -1267,10 +1357,7 @@ function createNapiModule(options) {
1267
1357
  var mutex = emnapiTSFN.getMutex(func);
1268
1358
  var cond = emnapiTSFN.getCond(func);
1269
1359
  mutex.execute(function () {
1270
- if (emnapiTSFN.getIsClosing(func)) {
1271
- emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1272
- }
1273
- else {
1360
+ if (emnapiTSFN.getState(func) === 0) {
1274
1361
  var size = emnapiTSFN.getQueueSize(func);
1275
1362
  if (size > 0) {
1276
1363
  data = emnapiTSFN.shiftQueue(func);
@@ -1283,7 +1370,7 @@ function createNapiModule(options) {
1283
1370
  }
1284
1371
  if (size === 0) {
1285
1372
  if (emnapiTSFN.getThreadCount(func) === 0) {
1286
- emnapiTSFN.setIsClosing(func, 1);
1373
+ emnapiTSFN.setState(func, 1);
1287
1374
  if (emnapiTSFN.getMaxQueueSize(func) > 0) {
1288
1375
  cond.signal();
1289
1376
  }
@@ -1294,6 +1381,9 @@ function createNapiModule(options) {
1294
1381
  has_more = true;
1295
1382
  }
1296
1383
  }
1384
+ else {
1385
+ emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
1386
+ }
1297
1387
  });
1298
1388
  if (popped_value) {
1299
1389
  var env = emnapiTSFN.getEnv(func);
@@ -1341,7 +1431,7 @@ function createNapiModule(options) {
1341
1431
  var has_more = true;
1342
1432
  var iterations_left = 1000;
1343
1433
  var ui32a = new Uint32Array(wasmMemory.buffer);
1344
- var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
1434
+ var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2;
1345
1435
  while (has_more && --iterations_left !== 0) {
1346
1436
  Atomics.store(ui32a, index, 1);
1347
1437
  has_more = emnapiTSFN.dispatchOne(func);
@@ -1353,25 +1443,65 @@ function createNapiModule(options) {
1353
1443
  emnapiTSFN.send(func);
1354
1444
  }
1355
1445
  },
1356
- send: function (func) {
1357
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
1358
- if ((current_state & 1) === 1) {
1446
+ enqueue: function (func) {
1447
+ var pending = func + emnapiTSFN.offset.async_pending;
1448
+ var scheduled = func + emnapiTSFN.offset.async_u_fd;
1449
+ var i32a = new Int32Array(wasmMemory.buffer);
1450
+ if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
1359
1451
  return;
1360
1452
  }
1361
- if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1362
- postMessage({
1363
- __emnapi__: {
1364
- type: 'tsfn-send',
1365
- payload: {
1366
- tsfn: func
1453
+ emnapiCtx.feature.setImmediate(function () {
1454
+ if (!emnapiTSFN._liveSet.has(func)) {
1455
+ return;
1456
+ }
1457
+ if (Atomics.load(i32a, pending >>> 2) === 0) {
1458
+ Atomics.store(i32a, scheduled >>> 2, 0);
1459
+ return;
1460
+ }
1461
+ emnapiCtx.feature.setImmediate(function () {
1462
+ try {
1463
+ if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
1464
+ return;
1465
+ }
1466
+ if (!emnapiTSFN._liveSet.has(func)) {
1467
+ return;
1468
+ }
1469
+ emnapiTSFN.dispatch(func);
1470
+ }
1471
+ finally {
1472
+ if (emnapiTSFN._liveSet.has(func)) {
1473
+ Atomics.store(i32a, scheduled >>> 2, 0);
1474
+ if (Atomics.load(i32a, pending >>> 2) !== 0) {
1475
+ emnapiTSFN.enqueue(func);
1476
+ }
1367
1477
  }
1368
1478
  }
1369
1479
  });
1480
+ });
1481
+ },
1482
+ send: function (func) {
1483
+ var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1);
1484
+ if ((current_state & 1) === 1) {
1485
+ return;
1370
1486
  }
1371
- else {
1372
- emnapiCtx.feature.setImmediate(function () {
1373
- emnapiTSFN.dispatch(func);
1374
- });
1487
+ var pendng = func + emnapiTSFN.offset.async_pending;
1488
+ if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
1489
+ return;
1490
+ }
1491
+ if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) {
1492
+ if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1493
+ postMessage({
1494
+ __emnapi__: {
1495
+ type: 'tsfn-send',
1496
+ payload: {
1497
+ tsfn: func
1498
+ }
1499
+ }
1500
+ });
1501
+ }
1502
+ else {
1503
+ emnapiTSFN.enqueue(func);
1504
+ }
1375
1505
  }
1376
1506
  }
1377
1507
  };
@@ -1382,6 +1512,13 @@ function createNapiModule(options) {
1382
1512
  envObject.checkGCAccess();
1383
1513
  if (!async_resource_name)
1384
1514
  return envObject.setLastError(1);
1515
+ max_queue_size >>>= 0;
1516
+ initial_thread_count >>>= 0;
1517
+ env >>>= 0;
1518
+ thread_finalize_data >>>= 0;
1519
+ thread_finalize_cb >>>= 0;
1520
+ context >>>= 0;
1521
+ call_js_cb >>>= 0;
1385
1522
  max_queue_size = max_queue_size >>> 0;
1386
1523
  initial_thread_count = initial_thread_count >>> 0;
1387
1524
  if (initial_thread_count === 0) {
@@ -1390,6 +1527,7 @@ function createNapiModule(options) {
1390
1527
  if (!result)
1391
1528
  return envObject.setLastError(1);
1392
1529
  var ref = 0;
1530
+ func >>>= 0;
1393
1531
  if (!func) {
1394
1532
  if (!call_js_cb)
1395
1533
  return envObject.setLastError(1);
@@ -1419,21 +1557,23 @@ function createNapiModule(options) {
1419
1557
  }
1420
1558
  asyncResourceName = String(asyncResourceName);
1421
1559
  var resource_name = envObject.ensureHandleId(asyncResourceName);
1422
- var sizeofTSFN = emnapiTSFN.offset.end;
1560
+ var sizeofTSFN = emnapiTSFN.offset.__size__;
1423
1561
  var tsfn = _malloc(sizeofTSFN);
1424
1562
  if (!tsfn)
1425
1563
  return envObject.setLastError(9);
1564
+ tsfn >>>= 0;
1426
1565
  new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1427
1566
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
1428
1567
  var resource_ = resourceRef.id;
1429
1568
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1430
- HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
1569
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
1431
1570
  if (!emnapiTSFN.initQueue(tsfn)) {
1432
1571
  _free(tsfn);
1433
1572
  resourceRef.dispose();
1434
1573
  return envObject.setLastError(9);
1435
1574
  }
1436
1575
  _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
1576
+ HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
1437
1577
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
1438
1578
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
1439
1579
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
@@ -1443,9 +1583,11 @@ function createNapiModule(options) {
1443
1583
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
1444
1584
  HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
1445
1585
  emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
1586
+ emnapiTSFN._liveSet.add(tsfn);
1446
1587
  envObject.ref();
1447
1588
  emnapiCtx.increaseWaitingRequestCounter();
1448
- HEAP_DATA_VIEW.setInt32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1589
+ HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
1590
+ result >>>= 0;
1449
1591
  HEAP_DATA_VIEW.setUint32(result, tsfn, true);
1450
1592
  return envObject.clearLastError();
1451
1593
  }
@@ -1454,6 +1596,8 @@ function createNapiModule(options) {
1454
1596
  abort();
1455
1597
  return 1;
1456
1598
  }
1599
+ func >>>= 0;
1600
+ result >>>= 0;
1457
1601
  var context = emnapiTSFN.getContext(func);
1458
1602
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1459
1603
  HEAP_DATA_VIEW.setUint32(result, context, true);
@@ -1464,6 +1608,8 @@ function createNapiModule(options) {
1464
1608
  abort();
1465
1609
  return 1;
1466
1610
  }
1611
+ func >>>= 0;
1612
+ data >>>= 0;
1467
1613
  return emnapiTSFN.push(func, data, mode);
1468
1614
  }
1469
1615
  function napi_acquire_threadsafe_function(func) {
@@ -1471,13 +1617,14 @@ function createNapiModule(options) {
1471
1617
  abort();
1472
1618
  return 1;
1473
1619
  }
1620
+ func >>>= 0;
1474
1621
  var mutex = emnapiTSFN.getMutex(func);
1475
1622
  return mutex.execute(function () {
1476
- if (emnapiTSFN.getIsClosing(func)) {
1477
- return 16;
1623
+ if (emnapiTSFN.getState(func) === 0) {
1624
+ emnapiTSFN.addThreadCount(func);
1625
+ return 0;
1478
1626
  }
1479
- emnapiTSFN.addThreadCount(func);
1480
- return 0;
1627
+ return 16;
1481
1628
  });
1482
1629
  }
1483
1630
  function napi_release_threadsafe_function(func, mode) {
@@ -1485,37 +1632,51 @@ function createNapiModule(options) {
1485
1632
  abort();
1486
1633
  return 1;
1487
1634
  }
1635
+ func >>>= 0;
1488
1636
  var mutex = emnapiTSFN.getMutex(func);
1489
1637
  var cond = emnapiTSFN.getCond(func);
1490
- return mutex.execute(function () {
1638
+ var shouldDelete = false;
1639
+ var ret = mutex.execute(function () {
1491
1640
  if (emnapiTSFN.getThreadCount(func) === 0) {
1492
1641
  return 1;
1493
1642
  }
1494
1643
  emnapiTSFN.subThreadCount(func);
1495
1644
  if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
1496
- var isClosing = emnapiTSFN.getIsClosing(func);
1497
- if (!isClosing) {
1498
- var isClosingValue = (mode === 1) ? 1 : 0;
1499
- emnapiTSFN.setIsClosing(func, isClosingValue);
1500
- if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
1645
+ if (emnapiTSFN.getState(func) === 0) {
1646
+ if (mode === 1) {
1647
+ emnapiTSFN.setState(func, 1);
1648
+ }
1649
+ if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
1501
1650
  cond.signal();
1502
1651
  }
1503
1652
  emnapiTSFN.send(func);
1504
1653
  }
1505
1654
  }
1655
+ if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
1656
+ return 0;
1657
+ }
1658
+ shouldDelete = true;
1506
1659
  return 0;
1507
1660
  });
1661
+ if (shouldDelete) {
1662
+ emnapiTSFN.destroy(func);
1663
+ }
1664
+ return ret;
1508
1665
  }
1509
1666
  function napi_unref_threadsafe_function(env, func) {
1510
1667
  if (!func) {
1511
1668
  abort();
1512
1669
  return 1;
1513
1670
  }
1514
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1515
- var arr = new Int32Array(wasmMemory.buffer);
1516
- if (Atomics.load(arr, asyncRefOffset)) {
1517
- Atomics.store(arr, asyncRefOffset, 0);
1518
- emnapiCtx.decreaseWaitingRequestCounter();
1671
+ func >>>= 0;
1672
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1673
+ var arr = new Uint32Array(wasmMemory.buffer);
1674
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1675
+ if (currentValue > 0) {
1676
+ Atomics.store(arr, asyncRefOffset, currentValue - 1);
1677
+ if (currentValue === 1) {
1678
+ emnapiCtx.decreaseWaitingRequestCounter();
1679
+ }
1519
1680
  }
1520
1681
  return 0;
1521
1682
  }
@@ -1524,34 +1685,57 @@ function createNapiModule(options) {
1524
1685
  abort();
1525
1686
  return 1;
1526
1687
  }
1527
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
1528
- var arr = new Int32Array(wasmMemory.buffer);
1529
- if (!Atomics.load(arr, asyncRefOffset)) {
1530
- Atomics.store(arr, asyncRefOffset, 1);
1688
+ func >>>= 0;
1689
+ var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1690
+ var arr = new Uint32Array(wasmMemory.buffer);
1691
+ var currentValue = Atomics.load(arr, asyncRefOffset);
1692
+ if (!currentValue) {
1531
1693
  emnapiCtx.increaseWaitingRequestCounter();
1532
1694
  }
1695
+ Atomics.store(arr, asyncRefOffset, currentValue + 1);
1533
1696
  return 0;
1534
1697
  }
1535
1698
  var emnapiAWMT = {
1536
- unusedWorkers: [],
1537
- runningWorkers: [],
1538
- workQueue: [],
1699
+ pool: [],
1539
1700
  workerReady: null,
1701
+ globalAddress: 0,
1702
+ globalOffset: {
1703
+ idle_threads: 0,
1704
+ q: 1 * 4,
1705
+ next: 1 * 4,
1706
+ prev: 2 * 4,
1707
+ mutex: 3 * 4,
1708
+ cond: 4 * 4,
1709
+ exit_message: 5 * 4,
1710
+ end: 7 * 4
1711
+ },
1540
1712
  offset: {
1541
1713
  resource: 0,
1542
1714
  async_id: 8,
1543
1715
  trigger_async_id: 16,
1544
1716
  env: 24,
1545
- data: 1 * 4 + 24,
1546
- execute: 2 * 4 + 24,
1547
- complete: 3 * 4 + 24,
1548
- end: 4 * 4 + 24
1717
+ status: 1 * 4 + 24,
1718
+ queue: 2 * 4 + 24,
1719
+ queue_next: 2 * 4 + 24,
1720
+ queue_prev: 3 * 4 + 24,
1721
+ data: 4 * 4 + 24,
1722
+ execute: 5 * 4 + 24,
1723
+ complete: 6 * 4 + 24,
1724
+ end: 7 * 4 + 24
1549
1725
  },
1550
1726
  init: function () {
1551
- emnapiAWMT.unusedWorkers = [];
1552
- emnapiAWMT.runningWorkers = [];
1553
- emnapiAWMT.workQueue = [];
1727
+ emnapiAWMT.pool = [];
1554
1728
  emnapiAWMT.workerReady = null;
1729
+ if (typeof PThread !== 'undefined') {
1730
+ PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
1731
+ PThread.runningWorkers.forEach(emnapiAWMT.addListener);
1732
+ var __original_getNewWorker_1 = PThread.getNewWorker;
1733
+ PThread.getNewWorker = function () {
1734
+ var r = __original_getNewWorker_1.apply(this, arguments);
1735
+ emnapiAWMT.addListener(r);
1736
+ return r;
1737
+ };
1738
+ }
1555
1739
  },
1556
1740
  addListener: function (worker) {
1557
1741
  if (!worker)
@@ -1565,18 +1749,8 @@ function createNapiModule(options) {
1565
1749
  var type = __emnapi__.type;
1566
1750
  var payload = __emnapi__.payload;
1567
1751
  if (type === 'async-work-complete') {
1568
- emnapiCtx.decreaseWaitingRequestCounter();
1569
- emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
1570
- emnapiAWMT.unusedWorkers.push(worker);
1571
- emnapiAWMT.checkIdleWorker();
1572
1752
  emnapiAWMT.callComplete(payload.work, 0);
1573
1753
  }
1574
- else if (type === 'async-work-queue') {
1575
- emnapiAWMT.scheduleWork(payload.work);
1576
- }
1577
- else if (type === 'async-work-cancel') {
1578
- emnapiAWMT.cancelWork(payload.work);
1579
- }
1580
1754
  }
1581
1755
  };
1582
1756
  var dispose = function () {
@@ -1597,142 +1771,221 @@ function createNapiModule(options) {
1597
1771
  }
1598
1772
  return true;
1599
1773
  },
1774
+ initGlobal: function () {
1775
+ if (!emnapiAWMT.globalAddress) {
1776
+ emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
1777
+ emnapiAWMT.globalAddress >>>= 0;
1778
+ var size = emnapiAWMT.globalOffset.end;
1779
+ var addr = emnapiAWMT.globalAddress;
1780
+ new Uint8Array(wasmMemory.buffer, addr, size).fill(0);
1781
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
1782
+ emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
1783
+ }
1784
+ },
1785
+ terminateWorkers: function () {
1786
+ emnapiAWMT.pool.forEach(function (w) {
1787
+ var _a, _b;
1788
+ (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
1789
+ (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
1790
+ w.terminate();
1791
+ });
1792
+ emnapiAWMT.pool.length = 0;
1793
+ },
1600
1794
  initWorkers: function (n) {
1601
1795
  if (ENVIRONMENT_IS_PTHREAD) {
1602
1796
  return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
1603
1797
  }
1604
1798
  if (emnapiAWMT.workerReady)
1605
1799
  return emnapiAWMT.workerReady;
1606
- if (typeof onCreateWorker !== 'function') {
1607
- throw new TypeError('`options.onCreateWorker` is not a function');
1608
- }
1609
- var promises = [];
1610
- var args = [];
1611
1800
  if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
1612
1801
  throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
1613
1802
  }
1803
+ var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
1804
+ var args = [];
1805
+ emnapiAWMT.initGlobal();
1614
1806
  for (var i = 0; i < n; ++i) {
1615
- args.push(wasmInstance.exports.emnapi_async_worker_create());
1807
+ args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
1616
1808
  }
1617
- try {
1618
- var _loop_1 = function (i) {
1619
- var worker = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
1620
- var p = PThread.loadWasmModuleToWorker(worker);
1621
- emnapiAWMT.addListener(worker);
1622
- promises.push(p.then(function () {
1623
- if (typeof worker.unref === 'function') {
1624
- worker.unref();
1625
- }
1626
- }));
1627
- emnapiAWMT.unusedWorkers.push(worker);
1628
- var arg = args[i];
1629
- worker.threadBlockBase = arg;
1630
- worker.postMessage({
1631
- __emnapi__: {
1632
- type: 'async-worker-init',
1633
- payload: { arg: arg }
1634
- }
1635
- });
1636
- };
1637
- for (var i = 0; i < n; ++i) {
1638
- _loop_1(i);
1809
+ var promises = args.map(function (index) {
1810
+ if (index === 0) {
1811
+ return Promise.reject(new Error('Failed to create async worker'));
1639
1812
  }
1640
- }
1641
- catch (err) {
1642
- for (var i = 0; i < n; ++i) {
1643
- var arg = args[i];
1644
- _free(arg);
1813
+ var worker;
1814
+ if (index < 0) {
1815
+ worker = emnapiAWMT.pool[-index - 1];
1816
+ if (worker)
1817
+ return worker.whenLoaded;
1645
1818
  }
1646
- throw err;
1647
- }
1819
+ index >>>= 0;
1820
+ var view = new DataView(wasmMemory.buffer);
1821
+ var tidOffset = 20;
1822
+ var tid = view.getInt32(index + tidOffset, true);
1823
+ worker = PThread.pthreads[tid];
1824
+ return worker.whenLoaded;
1825
+ });
1648
1826
  emnapiAWMT.workerReady = Promise.all(promises);
1649
1827
  return emnapiAWMT.workerReady;
1650
1828
  },
1651
- checkIdleWorker: function () {
1652
- if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
1653
- var worker = emnapiAWMT.unusedWorkers.shift();
1654
- var work = emnapiAWMT.workQueue.shift();
1655
- emnapiAWMT.runningWorkers.push(worker);
1656
- worker.postMessage({
1657
- __emnapi__: {
1658
- type: 'async-work-execute',
1659
- payload: { work: work }
1660
- }
1661
- });
1662
- }
1663
- },
1664
1829
  getResource: function (work) {
1665
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.resource, false);
1830
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1831
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
1666
1832
  },
1667
1833
  getExecute: function (work) {
1668
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.execute, false);
1834
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1835
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
1669
1836
  },
1670
1837
  getComplete: function (work) {
1671
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.complete, false);
1838
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1839
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
1672
1840
  },
1673
1841
  getEnv: function (work) {
1674
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.env, false);
1842
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1843
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
1675
1844
  },
1676
1845
  getData: function (work) {
1677
- return emnapiTSFN.loadSizeTypeValue(work + emnapiAWMT.offset.data, false);
1846
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1847
+ return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
1848
+ },
1849
+ getMutex: function () {
1850
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
1851
+ var mutex = {
1852
+ lock: function () {
1853
+ var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1854
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1855
+ if (isBrowserMain) {
1856
+ while (true) {
1857
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1858
+ if (oldValue === 0) {
1859
+ return;
1860
+ }
1861
+ }
1862
+ }
1863
+ else {
1864
+ while (true) {
1865
+ var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
1866
+ if (oldValue === 0) {
1867
+ return;
1868
+ }
1869
+ Atomics.wait(i32a, 0, 10);
1870
+ }
1871
+ }
1872
+ },
1873
+ unlock: function () {
1874
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1875
+ var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1876
+ if (oldValue !== 10) {
1877
+ throw new Error('Tried to unlock while not holding the mutex');
1878
+ }
1879
+ Atomics.notify(i32a, 0, 1);
1880
+ },
1881
+ execute: function (fn) {
1882
+ mutex.lock();
1883
+ try {
1884
+ return fn();
1885
+ }
1886
+ finally {
1887
+ mutex.unlock();
1888
+ }
1889
+ }
1890
+ };
1891
+ return mutex;
1892
+ },
1893
+ getCond: function () {
1894
+ var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
1895
+ var mutex = emnapiAWMT.getMutex();
1896
+ var cond = {
1897
+ wait: function () {
1898
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1899
+ var value = Atomics.load(i32a, 0);
1900
+ mutex.unlock();
1901
+ Atomics.wait(i32a, 0, value);
1902
+ mutex.lock();
1903
+ },
1904
+ signal: function () {
1905
+ var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1906
+ Atomics.add(i32a, 0, 1);
1907
+ Atomics.notify(i32a, 0, 1);
1908
+ }
1909
+ };
1910
+ return cond;
1911
+ },
1912
+ queueInit: function (q) {
1913
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1914
+ HEAP_DATA_VIEW.setUint32(q, q, true);
1915
+ HEAP_DATA_VIEW.setUint32(q + 4, q, true);
1916
+ },
1917
+ queueInsertTail: function (h, q) {
1918
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1919
+ HEAP_DATA_VIEW.setUint32(q, h, true);
1920
+ var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
1921
+ HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
1922
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1923
+ HEAP_DATA_VIEW.setUint32(qprev, q, true);
1924
+ HEAP_DATA_VIEW.setUint32(h + 4, q, true);
1925
+ },
1926
+ queueRemove: function (q) {
1927
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1928
+ var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1929
+ var qnext = HEAP_DATA_VIEW.getUint32(q, true);
1930
+ HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
1931
+ HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
1932
+ },
1933
+ queueEmpty: function (q) {
1934
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1935
+ return q == HEAP_DATA_VIEW.getUint32(q, true);
1678
1936
  },
1679
1937
  scheduleWork: function (work) {
1680
1938
  var _a;
1681
- if (ENVIRONMENT_IS_PTHREAD) {
1682
- var postMessage_1 = napiModule.postMessage;
1683
- postMessage_1({
1684
- __emnapi__: {
1685
- type: 'async-work-queue',
1686
- payload: { work: work }
1687
- }
1939
+ if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
1940
+ emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1941
+ emnapiAWMT.workerReady.ready = true;
1942
+ }).catch(function (err) {
1943
+ emnapiAWMT.workerReady = null;
1944
+ throw err;
1688
1945
  });
1689
- return;
1690
1946
  }
1691
1947
  emnapiCtx.increaseWaitingRequestCounter();
1692
- emnapiAWMT.workQueue.push(work);
1693
- if ((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready) {
1694
- emnapiAWMT.checkIdleWorker();
1948
+ var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
1949
+ Atomics.store(statusBuffer, 0, 0);
1950
+ var mutex = emnapiAWMT.getMutex();
1951
+ var cond = emnapiAWMT.getCond();
1952
+ mutex.lock();
1953
+ try {
1954
+ emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
1695
1955
  }
1696
- else {
1697
- var fail = function (err) {
1698
- emnapiCtx.decreaseWaitingRequestCounter();
1699
- throw err;
1700
- };
1701
- try {
1702
- emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
1703
- emnapiAWMT.workerReady.ready = true;
1704
- emnapiAWMT.checkIdleWorker();
1705
- }, fail);
1706
- }
1707
- catch (err) {
1708
- fail(err);
1709
- }
1956
+ catch (err) {
1957
+ emnapiCtx.decreaseWaitingRequestCounter();
1958
+ mutex.unlock();
1959
+ throw err;
1960
+ }
1961
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1962
+ if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
1963
+ cond.signal();
1710
1964
  }
1965
+ mutex.unlock();
1711
1966
  },
1712
1967
  cancelWork: function (work) {
1713
- if (ENVIRONMENT_IS_PTHREAD) {
1714
- var postMessage_2 = napiModule.postMessage;
1715
- postMessage_2({
1716
- __emnapi__: {
1717
- type: 'async-work-cancel',
1718
- payload: { work: work }
1719
- }
1720
- });
1721
- return 0;
1968
+ var cancelled = false;
1969
+ emnapiAWMT.getMutex().execute(function () {
1970
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1971
+ cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
1972
+ if (cancelled) {
1973
+ emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
1974
+ }
1975
+ });
1976
+ if (!cancelled) {
1977
+ return 9;
1722
1978
  }
1723
- var index = emnapiAWMT.workQueue.indexOf(work);
1724
- if (index !== -1) {
1725
- emnapiAWMT.workQueue.splice(index, 1);
1726
- emnapiCtx.feature.setImmediate(function () {
1727
- emnapiCtx.decreaseWaitingRequestCounter();
1728
- emnapiAWMT.checkIdleWorker();
1729
- emnapiAWMT.callComplete(work, 11);
1730
- });
1731
- return 0;
1979
+ if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
1980
+ return 9;
1732
1981
  }
1733
- return 9;
1982
+ emnapiCtx.feature.setImmediate(function () {
1983
+ emnapiAWMT.callComplete(work, 11);
1984
+ });
1985
+ return 0;
1734
1986
  },
1735
1987
  callComplete: function (work, status) {
1988
+ emnapiCtx.decreaseWaitingRequestCounter();
1736
1989
  var complete = emnapiAWMT.getComplete(work);
1737
1990
  var env = emnapiAWMT.getEnv(work);
1738
1991
  var data = emnapiAWMT.getData(work);
@@ -1767,6 +2020,7 @@ function createNapiModule(options) {
1767
2020
  }
1768
2021
  }
1769
2022
  };
2023
+ emnapiAWMT.init();
1770
2024
  var napi_create_async_work = singleThreadAsyncWork
1771
2025
  ? function (env, resource, resource_name, execute, complete, data, result) {
1772
2026
  if (!env)
@@ -1788,6 +2042,7 @@ function createNapiModule(options) {
1788
2042
  return envObject.setLastError(1);
1789
2043
  var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
1790
2044
  var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
2045
+ result >>>= 0;
1791
2046
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1792
2047
  HEAP_DATA_VIEW.setUint32(result, id, true);
1793
2048
  return envObject.clearLastError();
@@ -1814,6 +2069,7 @@ function createNapiModule(options) {
1814
2069
  var aw = _malloc(sizeofAW);
1815
2070
  if (!aw)
1816
2071
  return envObject.setLastError(9);
2072
+ aw >>>= 0;
1817
2073
  new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
1818
2074
  var s = envObject.ensureHandleId(resourceObject);
1819
2075
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
@@ -1825,6 +2081,8 @@ function createNapiModule(options) {
1825
2081
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
1826
2082
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
1827
2083
  HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
2084
+ emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
2085
+ result >>>= 0;
1828
2086
  HEAP_DATA_VIEW.setUint32(result, aw, true);
1829
2087
  return envObject.clearLastError();
1830
2088
  };
@@ -1836,6 +2094,7 @@ function createNapiModule(options) {
1836
2094
  envObject.checkGCAccess();
1837
2095
  if (!work)
1838
2096
  return envObject.setLastError(1);
2097
+ work >>>= 0;
1839
2098
  emnapiAWST.remove(work);
1840
2099
  return envObject.clearLastError();
1841
2100
  }
@@ -1846,6 +2105,7 @@ function createNapiModule(options) {
1846
2105
  envObject.checkGCAccess();
1847
2106
  if (!work)
1848
2107
  return envObject.setLastError(1);
2108
+ work >>>= 0;
1849
2109
  var resource = emnapiAWMT.getResource(work);
1850
2110
  emnapiCtx.refStore.get(resource).dispose();
1851
2111
  if (emnapiNodeBinding) {
@@ -1864,6 +2124,7 @@ function createNapiModule(options) {
1864
2124
  var envObject = emnapiCtx.envStore.get(env);
1865
2125
  if (!work)
1866
2126
  return envObject.setLastError(1);
2127
+ work >>>= 0;
1867
2128
  emnapiAWST.queue(work);
1868
2129
  return envObject.clearLastError();
1869
2130
  }
@@ -1873,6 +2134,7 @@ function createNapiModule(options) {
1873
2134
  var envObject = emnapiCtx.envStore.get(env);
1874
2135
  if (!work)
1875
2136
  return envObject.setLastError(1);
2137
+ work >>>= 0;
1876
2138
  emnapiAWMT.scheduleWork(work);
1877
2139
  return envObject.clearLastError();
1878
2140
  };
@@ -1883,6 +2145,7 @@ function createNapiModule(options) {
1883
2145
  var envObject = emnapiCtx.envStore.get(env);
1884
2146
  if (!work)
1885
2147
  return envObject.setLastError(1);
2148
+ work >>>= 0;
1886
2149
  var status = emnapiAWST.cancel(work);
1887
2150
  if (status === 0)
1888
2151
  return envObject.clearLastError();
@@ -1894,41 +2157,124 @@ function createNapiModule(options) {
1894
2157
  var envObject = emnapiCtx.envStore.get(env);
1895
2158
  if (!work)
1896
2159
  return envObject.setLastError(1);
2160
+ work >>>= 0;
1897
2161
  var status = emnapiAWMT.cancelWork(work);
1898
2162
  if (status === 0)
1899
2163
  return envObject.clearLastError();
1900
2164
  return envObject.setLastError(status);
1901
2165
  };
1902
- function initWorker(startArg) {
2166
+ function _emnapi_async_worker(globalAddress) {
2167
+ globalAddress >>>= 0;
2168
+ emnapiAWMT.globalAddress = globalAddress;
2169
+ var mutex = emnapiAWMT.getMutex();
2170
+ var cond = emnapiAWMT.getCond();
2171
+ mutex.lock();
2172
+ var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
2173
+ var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
2174
+ var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
2175
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2176
+ for (;;) {
2177
+ while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
2178
+ Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
2179
+ cond.wait();
2180
+ Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
2181
+ }
2182
+ var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
2183
+ if (q === exitMessageAddr) {
2184
+ cond.signal();
2185
+ mutex.unlock();
2186
+ break;
2187
+ }
2188
+ var work = q - emnapiAWMT.offset.queue;
2189
+ emnapiAWMT.queueRemove(q);
2190
+ emnapiAWMT.queueInit(q);
2191
+ mutex.unlock();
2192
+ var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
2193
+ if (Atomics.load(statusBuffer, 0) === 1) {
2194
+ abort('unreachable');
2195
+ }
2196
+ var execute = emnapiAWMT.getExecute(work);
2197
+ var env = emnapiAWMT.getEnv(work);
2198
+ var data = emnapiAWMT.getData(work);
2199
+ (wasmTable.get(execute))(env, data);
2200
+ Atomics.store(statusBuffer, 0, 2);
2201
+ var postMessage_1 = napiModule.postMessage;
2202
+ postMessage_1({
2203
+ __emnapi__: {
2204
+ type: 'async-work-complete',
2205
+ payload: { work: work }
2206
+ }
2207
+ });
2208
+ mutex.lock();
2209
+ }
2210
+ return 0;
2211
+ }
2212
+ function _emnapi_spawn_worker(f, globalAddress) {
2213
+ if (typeof onCreateWorker !== 'function') {
2214
+ throw new TypeError('`options.onCreateWorker` is not a function');
2215
+ }
2216
+ var promises = [];
2217
+ var args = [];
2218
+ if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
2219
+ throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
2220
+ }
2221
+ args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
2222
+ var handleError = function (e) {
2223
+ if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
2224
+ emnapiAWMT.terminateWorkers();
2225
+ }
2226
+ };
2227
+ var ret;
2228
+ try {
2229
+ var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
2230
+ var p = PThread.loadWasmModuleToWorker(worker_1);
2231
+ if (ENVIRONMENT_IS_NODE) {
2232
+ worker_1.on('error', handleError);
2233
+ }
2234
+ else {
2235
+ worker_1.addEventListener('error', handleError, false);
2236
+ }
2237
+ emnapiAWMT.addListener(worker_1);
2238
+ emnapiTSFN.addListener(worker_1);
2239
+ promises.push(p.then(function () {
2240
+ if (typeof worker_1.unref === 'function') {
2241
+ worker_1.unref();
2242
+ }
2243
+ }));
2244
+ ret = emnapiAWMT.pool.push(worker_1) - 1;
2245
+ var arg = args[0];
2246
+ worker_1.threadBlockBase = arg;
2247
+ worker_1.postMessage({
2248
+ __emnapi__: {
2249
+ type: 'async-worker-init',
2250
+ payload: { arg: arg, func: [f, globalAddress] }
2251
+ }
2252
+ });
2253
+ }
2254
+ catch (err) {
2255
+ var arg = args[0];
2256
+ _free(arg);
2257
+ throw err;
2258
+ }
2259
+ return ret;
2260
+ }
2261
+ function initWorker(startArg, func) {
1903
2262
  if (napiModule.childThread) {
1904
2263
  if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
1905
2264
  throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
1906
2265
  }
1907
2266
  wasmInstance.exports.emnapi_async_worker_init(startArg);
2267
+ (wasmTable.get(func[0]))(func[1]);
1908
2268
  }
1909
2269
  else {
1910
2270
  throw new Error('startThread is only available in child threads');
1911
2271
  }
1912
2272
  }
1913
- function executeAsyncWork(work) {
1914
- if (!ENVIRONMENT_IS_PTHREAD)
1915
- return;
1916
- var execute = emnapiAWMT.getExecute(work);
1917
- var env = emnapiAWMT.getEnv(work);
1918
- var data = emnapiAWMT.getData(work);
1919
- (wasmTable.get(execute))(env, data);
1920
- var postMessage = napiModule.postMessage;
1921
- postMessage({
1922
- __emnapi__: {
1923
- type: 'async-work-complete',
1924
- payload: { work: work }
1925
- }
1926
- });
1927
- }
1928
2273
  napiModule.initWorker = initWorker;
1929
- napiModule.executeAsyncWork = executeAsyncWork;
1930
2274
  var asyncWorkMod = Object.freeze({
1931
2275
  __proto__: null,
2276
+ _emnapi_async_worker: _emnapi_async_worker,
2277
+ _emnapi_spawn_worker: _emnapi_spawn_worker,
1932
2278
  napi_cancel_async_work: napi_cancel_async_work,
1933
2279
  napi_create_async_work: napi_create_async_work,
1934
2280
  napi_delete_async_work: napi_delete_async_work,
@@ -1989,6 +2335,7 @@ function createNapiModule(options) {
1989
2335
  var pointer = _malloc(arrayBuffer.byteLength);
1990
2336
  if (!pointer)
1991
2337
  throw new Error('Out of memory');
2338
+ pointer >>>= 0;
1992
2339
  new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
1993
2340
  info.address = pointer;
1994
2341
  info.ownership = emnapiExternalMemory.registry ? 0 : 1;
@@ -2010,8 +2357,7 @@ function createNapiModule(options) {
2010
2357
  }
2011
2358
  return view;
2012
2359
  }
2013
- var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
2014
- ((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
2360
+ var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
2015
2361
  if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
2016
2362
  var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
2017
2363
  var Ctor = info.Ctor;
@@ -2144,7 +2490,7 @@ function createNapiModule(options) {
2144
2490
  ptr >>>= 0;
2145
2491
  var HEAPU8 = new Uint8Array(wasmMemory.buffer);
2146
2492
  var end = ptr;
2147
- if (length === -1) {
2493
+ if (length === -1 || length === 4294967295) {
2148
2494
  for (; HEAPU8[end];)
2149
2495
  ++end;
2150
2496
  }
@@ -2235,12 +2581,12 @@ function createNapiModule(options) {
2235
2581
  return '';
2236
2582
  ptr >>>= 0;
2237
2583
  var end = ptr;
2238
- if (length === -1) {
2239
- var idx = end >> 1;
2584
+ if (length === -1 || length === 4294967295) {
2585
+ var idx = end >>> 1;
2240
2586
  var HEAPU16 = new Uint16Array(wasmMemory.buffer);
2241
2587
  while (HEAPU16[idx])
2242
2588
  ++idx;
2243
- end = idx << 1;
2589
+ end = (idx << 1) >>> 0;
2244
2590
  }
2245
2591
  else {
2246
2592
  end = ptr + (length >>> 0) * 2;
@@ -2271,11 +2617,12 @@ function createNapiModule(options) {
2271
2617
  return outPtr - startPtr;
2272
2618
  },
2273
2619
  newString: function (env, str, length, result, stringMaker) {
2620
+ length >>>= 0;
2274
2621
  if (!env)
2275
2622
  return 1;
2276
2623
  var envObject = emnapiCtx.envStore.get(env);
2277
2624
  envObject.checkGCAccess();
2278
- var autoLength = length === -1;
2625
+ var autoLength = length === -1 || length === 4294967295;
2279
2626
  var sizelength = length >>> 0;
2280
2627
  if (length !== 0) {
2281
2628
  if (!str)
@@ -2285,18 +2632,21 @@ function createNapiModule(options) {
2285
2632
  return envObject.setLastError(1);
2286
2633
  if (!(autoLength || (sizelength <= 2147483647)))
2287
2634
  return envObject.setLastError(1);
2635
+ str >>>= 0;
2288
2636
  var strValue = stringMaker(str, autoLength, sizelength);
2637
+ result >>>= 0;
2289
2638
  var value = emnapiCtx.addToCurrentScope(strValue).id;
2290
2639
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2291
2640
  HEAP_DATA_VIEW.setUint32(result, value, true);
2292
2641
  return envObject.clearLastError();
2293
2642
  },
2294
2643
  newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
2644
+ length >>>= 0;
2295
2645
  if (!env)
2296
2646
  return 1;
2297
2647
  var envObject = emnapiCtx.envStore.get(env);
2298
2648
  envObject.checkGCAccess();
2299
- var autoLength = length === -1;
2649
+ var autoLength = length === -1 || length === 4294967295;
2300
2650
  var sizelength = length >>> 0;
2301
2651
  if (length !== 0) {
2302
2652
  if (!str)
@@ -2338,6 +2688,7 @@ function createNapiModule(options) {
2338
2688
  if (!handle.isArray()) {
2339
2689
  return envObject.setLastError(8);
2340
2690
  }
2691
+ result >>>= 0;
2341
2692
  var v = handle.value.length >>> 0;
2342
2693
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2343
2694
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2361,10 +2712,12 @@ function createNapiModule(options) {
2361
2712
  }
2362
2713
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2363
2714
  if (data) {
2715
+ data >>>= 0;
2364
2716
  var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
2365
2717
  HEAP_DATA_VIEW.setUint32(data, p, true);
2366
2718
  }
2367
2719
  if (byte_length) {
2720
+ byte_length >>>= 0;
2368
2721
  HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
2369
2722
  }
2370
2723
  return envObject.clearLastError();
@@ -2429,6 +2782,7 @@ function createNapiModule(options) {
2429
2782
  catch (_) {
2430
2783
  return envObject.setLastError(2);
2431
2784
  }
2785
+ result >>>= 0;
2432
2786
  var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
2433
2787
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2434
2788
  HEAP_DATA_VIEW.setUint32(result, p, true);
@@ -2453,6 +2807,7 @@ function createNapiModule(options) {
2453
2807
  var v = handle.value;
2454
2808
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2455
2809
  if (type) {
2810
+ type >>>= 0;
2456
2811
  var t = void 0;
2457
2812
  if (v instanceof Int8Array) {
2458
2813
  t = 0;
@@ -2495,22 +2850,25 @@ function createNapiModule(options) {
2495
2850
  }
2496
2851
  HEAP_DATA_VIEW.setInt32(type, t, true);
2497
2852
  }
2853
+ v = emnapiExternalMemory.getOrUpdateMemoryView(v);
2498
2854
  if (length) {
2855
+ length >>>= 0;
2499
2856
  HEAP_DATA_VIEW.setUint32(length, v.length, true);
2500
2857
  }
2501
- var buffer;
2502
2858
  if (data || arraybuffer) {
2503
- buffer = v.buffer;
2504
2859
  if (data) {
2860
+ data >>>= 0;
2505
2861
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2506
2862
  HEAP_DATA_VIEW.setUint32(data, p, true);
2507
2863
  }
2508
2864
  if (arraybuffer) {
2509
- var ab = envObject.ensureHandleId(buffer);
2865
+ arraybuffer >>>= 0;
2866
+ var ab = envObject.ensureHandleId(v.buffer);
2510
2867
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2511
2868
  }
2512
2869
  }
2513
2870
  if (byte_offset) {
2871
+ byte_offset >>>= 0;
2514
2872
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2515
2873
  }
2516
2874
  return envObject.clearLastError();
@@ -2541,24 +2899,26 @@ function createNapiModule(options) {
2541
2899
  if (!handle.isDataView()) {
2542
2900
  return envObject.setLastError(1);
2543
2901
  }
2544
- var v = handle.value;
2902
+ var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
2545
2903
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2546
2904
  if (byte_length) {
2905
+ byte_length >>>= 0;
2547
2906
  HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
2548
2907
  }
2549
- var buffer;
2550
2908
  if (data || arraybuffer) {
2551
- buffer = v.buffer;
2552
2909
  if (data) {
2910
+ data >>>= 0;
2553
2911
  var p = emnapiExternalMemory.getViewPointer(v, true).address;
2554
2912
  HEAP_DATA_VIEW.setUint32(data, p, true);
2555
2913
  }
2556
2914
  if (arraybuffer) {
2557
- var ab = envObject.ensureHandleId(buffer);
2915
+ arraybuffer >>>= 0;
2916
+ var ab = envObject.ensureHandleId(v.buffer);
2558
2917
  HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
2559
2918
  }
2560
2919
  }
2561
2920
  if (byte_offset) {
2921
+ byte_offset >>>= 0;
2562
2922
  HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
2563
2923
  }
2564
2924
  return envObject.clearLastError();
@@ -2583,6 +2943,7 @@ function createNapiModule(options) {
2583
2943
  if (!handle.isDate()) {
2584
2944
  return envObject.setLastError(1);
2585
2945
  }
2946
+ result >>>= 0;
2586
2947
  v = handle.value.valueOf();
2587
2948
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2588
2949
  HEAP_DATA_VIEW.setFloat64(result, v, true);
@@ -2606,6 +2967,7 @@ function createNapiModule(options) {
2606
2967
  if (typeof handle.value !== 'boolean') {
2607
2968
  return envObject.setLastError(7);
2608
2969
  }
2970
+ result >>>= 0;
2609
2971
  var r = handle.value ? 1 : 0;
2610
2972
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2611
2973
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -2624,6 +2986,7 @@ function createNapiModule(options) {
2624
2986
  if (typeof handle.value !== 'number') {
2625
2987
  return envObject.setLastError(6);
2626
2988
  }
2989
+ result >>>= 0;
2627
2990
  var r = handle.value;
2628
2991
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2629
2992
  HEAP_DATA_VIEW.setFloat64(result, r, true);
@@ -2648,6 +3011,8 @@ function createNapiModule(options) {
2648
3011
  if (typeof numberValue !== 'bigint') {
2649
3012
  return envObject.setLastError(6);
2650
3013
  }
3014
+ lossless >>>= 0;
3015
+ result >>>= 0;
2651
3016
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2652
3017
  if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
2653
3018
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2684,6 +3049,8 @@ function createNapiModule(options) {
2684
3049
  if (typeof numberValue !== 'bigint') {
2685
3050
  return envObject.setLastError(6);
2686
3051
  }
3052
+ lossless >>>= 0;
3053
+ result >>>= 0;
2687
3054
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2688
3055
  if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
2689
3056
  HEAP_DATA_VIEW.setInt8(lossless, 1, true);
@@ -2715,8 +3082,12 @@ function createNapiModule(options) {
2715
3082
  return envObject.setLastError(17);
2716
3083
  }
2717
3084
  var isMinus = handle.value < BigInt(0);
3085
+ sign_bit >>>= 0;
3086
+ words >>>= 0;
3087
+ word_count >>>= 0;
2718
3088
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2719
3089
  var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
3090
+ word_count_int >>>= 0;
2720
3091
  var wordCount = 0;
2721
3092
  var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
2722
3093
  while (bigintValue !== BigInt(0)) {
@@ -2764,6 +3135,7 @@ function createNapiModule(options) {
2764
3135
  if (!handle.isExternal()) {
2765
3136
  return envObject.setLastError(1);
2766
3137
  }
3138
+ result >>>= 0;
2767
3139
  var p = handle.data();
2768
3140
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2769
3141
  HEAP_DATA_VIEW.setUint32(result, p, true);
@@ -2782,6 +3154,7 @@ function createNapiModule(options) {
2782
3154
  if (typeof handle.value !== 'number') {
2783
3155
  return envObject.setLastError(6);
2784
3156
  }
3157
+ result >>>= 0;
2785
3158
  var v = new Int32Array([handle.value])[0];
2786
3159
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2787
3160
  HEAP_DATA_VIEW.setInt32(result, v, true);
@@ -2801,6 +3174,7 @@ function createNapiModule(options) {
2801
3174
  return envObject.setLastError(6);
2802
3175
  }
2803
3176
  var numberValue = handle.value;
3177
+ result >>>= 0;
2804
3178
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2805
3179
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
2806
3180
  HEAP_DATA_VIEW.setInt32(result, 0, true);
@@ -2826,6 +3200,9 @@ function createNapiModule(options) {
2826
3200
  envObject.checkGCAccess();
2827
3201
  if (!value)
2828
3202
  return envObject.setLastError(1);
3203
+ result >>>= 0;
3204
+ buf >>>= 0;
3205
+ buf_size >>>= 0;
2829
3206
  buf_size = buf_size >>> 0;
2830
3207
  var handle = emnapiCtx.handleStore.get(value);
2831
3208
  if (typeof handle.value !== 'string') {
@@ -2862,6 +3239,9 @@ function createNapiModule(options) {
2862
3239
  envObject.checkGCAccess();
2863
3240
  if (!value)
2864
3241
  return envObject.setLastError(1);
3242
+ result >>>= 0;
3243
+ buf >>>= 0;
3244
+ buf_size >>>= 0;
2865
3245
  buf_size = buf_size >>> 0;
2866
3246
  var handle = emnapiCtx.handleStore.get(value);
2867
3247
  if (typeof handle.value !== 'string') {
@@ -2892,6 +3272,9 @@ function createNapiModule(options) {
2892
3272
  envObject.checkGCAccess();
2893
3273
  if (!value)
2894
3274
  return envObject.setLastError(1);
3275
+ result >>>= 0;
3276
+ buf >>>= 0;
3277
+ buf_size >>>= 0;
2895
3278
  buf_size = buf_size >>> 0;
2896
3279
  var handle = emnapiCtx.handleStore.get(value);
2897
3280
  if (typeof handle.value !== 'string') {
@@ -2927,6 +3310,7 @@ function createNapiModule(options) {
2927
3310
  if (typeof handle.value !== 'number') {
2928
3311
  return envObject.setLastError(6);
2929
3312
  }
3313
+ result >>>= 0;
2930
3314
  var v = new Uint32Array([handle.value])[0];
2931
3315
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2932
3316
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2962,6 +3346,7 @@ function createNapiModule(options) {
2962
3346
  envObject.checkGCAccess();
2963
3347
  if (!result)
2964
3348
  return envObject.setLastError(1);
3349
+ result >>>= 0;
2965
3350
  var v = emnapiCtx.addToCurrentScope(value).id;
2966
3351
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2967
3352
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2974,6 +3359,7 @@ function createNapiModule(options) {
2974
3359
  envObject.checkGCAccess();
2975
3360
  if (!result)
2976
3361
  return envObject.setLastError(1);
3362
+ result >>>= 0;
2977
3363
  var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
2978
3364
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2979
3365
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -2989,6 +3375,7 @@ function createNapiModule(options) {
2989
3375
  return envObject.setLastError(1);
2990
3376
  value = Number(low);
2991
3377
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3378
+ high >>>= 0;
2992
3379
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2993
3380
  HEAP_DATA_VIEW.setUint32(high, v1, true);
2994
3381
  return envObject.clearLastError();
@@ -3000,6 +3387,7 @@ function createNapiModule(options) {
3000
3387
  envObject.checkGCAccess();
3001
3388
  if (!result)
3002
3389
  return envObject.setLastError(1);
3390
+ result >>>= 0;
3003
3391
  var v = emnapiCtx.addToCurrentScope(value).id;
3004
3392
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3005
3393
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -3070,6 +3458,7 @@ function createNapiModule(options) {
3070
3458
  return envObject.setLastError(1);
3071
3459
  value = low;
3072
3460
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3461
+ high >>>= 0;
3073
3462
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3074
3463
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3075
3464
  return envObject.clearLastError();
@@ -3087,6 +3476,7 @@ function createNapiModule(options) {
3087
3476
  return envObject.setLastError(1);
3088
3477
  value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
3089
3478
  var v1 = emnapiCtx.addToCurrentScope(value).id;
3479
+ high >>>= 0;
3090
3480
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3091
3481
  HEAP_DATA_VIEW.setUint32(high, v1, true);
3092
3482
  return envObject.clearLastError();
@@ -3108,6 +3498,8 @@ function createNapiModule(options) {
3108
3498
  }
3109
3499
  if (!result)
3110
3500
  return envObject.setLastError(1);
3501
+ words >>>= 0;
3502
+ word_count >>>= 0;
3111
3503
  word_count = word_count >>> 0;
3112
3504
  if (word_count > 2147483647) {
3113
3505
  return envObject.setLastError(1);
@@ -3124,6 +3516,7 @@ function createNapiModule(options) {
3124
3516
  value += wordi << BigInt(64 * i);
3125
3517
  }
3126
3518
  value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
3519
+ result >>>= 0;
3127
3520
  v = emnapiCtx.addToCurrentScope(value).id;
3128
3521
  HEAP_DATA_VIEW.setUint32(result, v, true);
3129
3522
  return envObject.getReturnStatus();
@@ -3152,6 +3545,7 @@ function createNapiModule(options) {
3152
3545
  node_api_create_property_key_utf8: node_api_create_property_key_utf8
3153
3546
  });
3154
3547
  function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
3548
+ utf8name >>>= 0;
3155
3549
  var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
3156
3550
  var f;
3157
3551
  var napiCallback = (wasmTable.get(cb));
@@ -3292,6 +3686,7 @@ function createNapiModule(options) {
3292
3686
  if (!finalize_cb)
3293
3687
  return envObject.setLastError(1);
3294
3688
  reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
3689
+ result >>>= 0;
3295
3690
  referenceId = reference.id;
3296
3691
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3297
3692
  HEAP_DATA_VIEW.setUint32(result, referenceId, true);
@@ -3340,6 +3735,7 @@ function createNapiModule(options) {
3340
3735
  if (!ref)
3341
3736
  return envObject.setLastError(1);
3342
3737
  if (result) {
3738
+ result >>>= 0;
3343
3739
  data = ref.data();
3344
3740
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3345
3741
  HEAP_DATA_VIEW.setUint32(result, data, true);
@@ -3376,12 +3772,15 @@ function createNapiModule(options) {
3376
3772
  return envObject.setLastError(1);
3377
3773
  if (!constructor)
3378
3774
  return envObject.setLastError(1);
3775
+ length >>>= 0;
3776
+ properties >>>= 0;
3777
+ property_count >>>= 0;
3379
3778
  property_count = property_count >>> 0;
3380
3779
  if (property_count > 0) {
3381
3780
  if (!properties)
3382
3781
  return envObject.setLastError(1);
3383
3782
  }
3384
- if ((length < -1) || (length > 2147483647) || (!utf8name)) {
3783
+ if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
3385
3784
  return envObject.setLastError(1);
3386
3785
  }
3387
3786
  var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
@@ -3399,6 +3798,7 @@ function createNapiModule(options) {
3399
3798
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
3400
3799
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
3401
3800
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
3801
+ attributes >>>= 0;
3402
3802
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
3403
3803
  if (utf8Name) {
3404
3804
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -3420,6 +3820,7 @@ function createNapiModule(options) {
3420
3820
  }
3421
3821
  var valueHandle = emnapiCtx.addToCurrentScope(F);
3422
3822
  valueHandleId = valueHandle.id;
3823
+ result >>>= 0;
3423
3824
  HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
3424
3825
  return envObject.getReturnStatus();
3425
3826
  }
@@ -3455,6 +3856,7 @@ function createNapiModule(options) {
3455
3856
  if (!(value.isObject() || value.isFunction())) {
3456
3857
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
3457
3858
  }
3859
+ type_tag >>>= 0;
3458
3860
  if (!type_tag) {
3459
3861
  return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
3460
3862
  }
@@ -3499,6 +3901,7 @@ function createNapiModule(options) {
3499
3901
  }
3500
3902
  var binding = envObject.getObjectBinding(value.value);
3501
3903
  if (binding.tag !== null) {
3904
+ type_tag >>>= 0;
3502
3905
  var tag = binding.tag;
3503
3906
  var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
3504
3907
  ret = (tag[0] === typeTag[0] &&
@@ -3509,6 +3912,7 @@ function createNapiModule(options) {
3509
3912
  else {
3510
3913
  ret = false;
3511
3914
  }
3915
+ result >>>= 0;
3512
3916
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3513
3917
  HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
3514
3918
  return envObject.getReturnStatus();
@@ -3536,8 +3940,12 @@ function createNapiModule(options) {
3536
3940
  }
3537
3941
  var handle = handleResult.handle;
3538
3942
  var ownership = !result ? 0 : 1;
3943
+ finalize_data >>>= 0;
3944
+ finalize_cb >>>= 0;
3945
+ finalize_hint >>>= 0;
3539
3946
  var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
3540
3947
  if (result) {
3948
+ result >>>= 0;
3541
3949
  var referenceId = reference.id;
3542
3950
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3543
3951
  HEAP_DATA_VIEW.setUint32(result, referenceId, true);
@@ -3576,6 +3984,9 @@ function createNapiModule(options) {
3576
3984
  try {
3577
3985
  if (!result)
3578
3986
  return envObject.setLastError(1);
3987
+ byte_length >>>= 0;
3988
+ external_data >>>= 0;
3989
+ result >>>= 0;
3579
3990
  byte_length = byte_length >>> 0;
3580
3991
  if (!external_data) {
3581
3992
  byte_length = 0;
@@ -3686,7 +4097,7 @@ function createNapiModule(options) {
3686
4097
  var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
3687
4098
  if (!pointer)
3688
4099
  throw new Error('Unknown ArrayBuffer address');
3689
- if (typeof len !== 'number' || len === -1) {
4100
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3690
4101
  len = arrayBufferOrView.byteLength - offset;
3691
4102
  }
3692
4103
  len = len >>> 0;
@@ -3708,7 +4119,7 @@ function createNapiModule(options) {
3708
4119
  var pointer = viewPointerInfo.address;
3709
4120
  if (!pointer)
3710
4121
  throw new Error('Unknown ArrayBuffer address');
3711
- if (typeof len !== 'number' || len === -1) {
4122
+ if (typeof len !== 'number' || len === -1 || len === 4294967295) {
3712
4123
  len = latestView.byteLength - offset;
3713
4124
  }
3714
4125
  len = len >>> 0;
@@ -3740,6 +4151,9 @@ function createNapiModule(options) {
3740
4151
  try {
3741
4152
  if (!arraybuffer_or_view)
3742
4153
  return envObject.setLastError(1);
4154
+ arraybuffer_or_view >>>= 0;
4155
+ offset >>>= 0;
4156
+ len >>>= 0;
3743
4157
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3744
4158
  var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
3745
4159
  var handle = envObject.ctx.handleStore.get(handleId);
@@ -3748,6 +4162,7 @@ function createNapiModule(options) {
3748
4162
  }
3749
4163
  var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
3750
4164
  if (handle.value !== ret) {
4165
+ arraybuffer_or_view >>>= 0;
3751
4166
  v = envObject.ensureHandleId(ret);
3752
4167
  HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
3753
4168
  }
@@ -3801,13 +4216,16 @@ function createNapiModule(options) {
3801
4216
  p = info.address;
3802
4217
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3803
4218
  if (address) {
4219
+ address >>>= 0;
3804
4220
  HEAP_DATA_VIEW.setUint32(address, p, true);
3805
4221
  }
3806
4222
  if (ownership) {
4223
+ ownership >>>= 0;
3807
4224
  ownershipOut = info.ownership;
3808
4225
  HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
3809
4226
  }
3810
4227
  if (runtime_allocated) {
4228
+ runtime_allocated >>>= 0;
3811
4229
  runtimeAllocated = info.runtimeAllocated;
3812
4230
  HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
3813
4231
  }
@@ -3833,6 +4251,7 @@ function createNapiModule(options) {
3833
4251
  }
3834
4252
  var versions = runtimeVersion.split('.')
3835
4253
  .map(function (n) { return Number(n); });
4254
+ version >>>= 0;
3836
4255
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3837
4256
  HEAP_DATA_VIEW.setUint32(version, versions[0], true);
3838
4257
  HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
@@ -3858,6 +4277,7 @@ function createNapiModule(options) {
3858
4277
  envObject.checkGCAccess();
3859
4278
  if (!result)
3860
4279
  return envObject.setLastError(1);
4280
+ result >>>= 0;
3861
4281
  var value = emnapiCtx.addToCurrentScope([]).id;
3862
4282
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3863
4283
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -3870,6 +4290,8 @@ function createNapiModule(options) {
3870
4290
  envObject.checkGCAccess();
3871
4291
  if (!result)
3872
4292
  return envObject.setLastError(1);
4293
+ length >>>= 0;
4294
+ result >>>= 0;
3873
4295
  length = length >>> 0;
3874
4296
  var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
3875
4297
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3877,9 +4299,11 @@ function createNapiModule(options) {
3877
4299
  return envObject.clearLastError();
3878
4300
  }
3879
4301
  function emnapiCreateArrayBuffer(byte_length, data, shared) {
4302
+ byte_length >>>= 0;
3880
4303
  byte_length = byte_length >>> 0;
3881
4304
  var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
3882
4305
  if (data) {
4306
+ data >>>= 0;
3883
4307
  var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
3884
4308
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3885
4309
  HEAP_DATA_VIEW.setUint32(data, p, true);
@@ -3900,6 +4324,7 @@ function createNapiModule(options) {
3900
4324
  try {
3901
4325
  if (!result)
3902
4326
  return envObject.setLastError(1);
4327
+ result >>>= 0;
3903
4328
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
3904
4329
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3905
4330
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3925,6 +4350,7 @@ function createNapiModule(options) {
3925
4350
  try {
3926
4351
  if (!result)
3927
4352
  return envObject.setLastError(1);
4353
+ result >>>= 0;
3928
4354
  var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
3929
4355
  value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
3930
4356
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -3950,6 +4376,7 @@ function createNapiModule(options) {
3950
4376
  try {
3951
4377
  if (!result)
3952
4378
  return envObject.setLastError(1);
4379
+ result >>>= 0;
3953
4380
  value = emnapiCtx.addToCurrentScope(new Date(time)).id;
3954
4381
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3955
4382
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -3981,6 +4408,7 @@ function createNapiModule(options) {
3981
4408
  if (finalize_cb) {
3982
4409
  emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
3983
4410
  }
4411
+ result >>>= 0;
3984
4412
  value = externalHandle.id;
3985
4413
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
3986
4414
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4005,6 +4433,9 @@ function createNapiModule(options) {
4005
4433
  try {
4006
4434
  if (!result)
4007
4435
  return envObject.setLastError(1);
4436
+ byte_length >>>= 0;
4437
+ external_data >>>= 0;
4438
+ result >>>= 0;
4008
4439
  byte_length = byte_length >>> 0;
4009
4440
  if (!external_data) {
4010
4441
  byte_length = 0;
@@ -4062,18 +4493,20 @@ function createNapiModule(options) {
4062
4493
  envObject.checkGCAccess();
4063
4494
  if (!result)
4064
4495
  return envObject.setLastError(1);
4496
+ result >>>= 0;
4065
4497
  var value = emnapiCtx.addToCurrentScope({}).id;
4066
4498
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4067
4499
  HEAP_DATA_VIEW.setUint32(result, value, true);
4068
4500
  return envObject.clearLastError();
4069
4501
  }
4070
- function napi_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4502
+ function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
4071
4503
  if (!env)
4072
4504
  return 1;
4073
4505
  var envObject = emnapiCtx.envStore.get(env);
4074
4506
  envObject.checkGCAccess();
4075
4507
  if (!result)
4076
4508
  return envObject.setLastError(1);
4509
+ property_count >>>= 0;
4077
4510
  property_count = property_count >>> 0;
4078
4511
  if (property_count > 0) {
4079
4512
  if (!property_names)
@@ -4085,6 +4518,8 @@ function createNapiModule(options) {
4085
4518
  ? emnapiCtx.handleStore.get(prototype_or_null).value
4086
4519
  : null;
4087
4520
  var properties = {};
4521
+ property_names >>>= 0;
4522
+ property_values >>>= 0;
4088
4523
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4089
4524
  for (var i = 0; i < property_count; i++) {
4090
4525
  var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
@@ -4105,6 +4540,7 @@ function createNapiModule(options) {
4105
4540
  return envObject.setLastError(9);
4106
4541
  }
4107
4542
  var value = emnapiCtx.addToCurrentScope(obj).id;
4543
+ result >>>= 0;
4108
4544
  HEAP_DATA_VIEW.setUint32(result, value, true);
4109
4545
  return envObject.clearLastError();
4110
4546
  }
@@ -4115,6 +4551,7 @@ function createNapiModule(options) {
4115
4551
  envObject.checkGCAccess();
4116
4552
  if (!result)
4117
4553
  return envObject.setLastError(1);
4554
+ result >>>= 0;
4118
4555
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4119
4556
  if (!description) {
4120
4557
  var value = emnapiCtx.addToCurrentScope(Symbol()).id;
@@ -4152,6 +4589,8 @@ function createNapiModule(options) {
4152
4589
  return envObject.setLastError(1);
4153
4590
  }
4154
4591
  var buffer = handle.value;
4592
+ byte_offset >>>= 0;
4593
+ length >>>= 0;
4155
4594
  var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
4156
4595
  var _a;
4157
4596
  byte_offset = byte_offset >>> 0;
@@ -4182,6 +4621,7 @@ function createNapiModule(options) {
4182
4621
  });
4183
4622
  }
4184
4623
  }
4624
+ result >>>= 0;
4185
4625
  value = emnapiCtx.addToCurrentScope(out).id;
4186
4626
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4187
4627
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4243,7 +4683,9 @@ function createNapiModule(options) {
4243
4683
  if (!Buffer) {
4244
4684
  throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
4245
4685
  }
4686
+ result >>>= 0;
4246
4687
  var buffer = void 0;
4688
+ size >>>= 0;
4247
4689
  size = size >>> 0;
4248
4690
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4249
4691
  if (!data || (size === 0)) {
@@ -4255,6 +4697,7 @@ function createNapiModule(options) {
4255
4697
  pointer = _malloc(size);
4256
4698
  if (!pointer)
4257
4699
  throw new Error('Out of memory');
4700
+ pointer >>>= 0;
4258
4701
  new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
4259
4702
  var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
4260
4703
  var viewDescriptor = {
@@ -4268,6 +4711,7 @@ function createNapiModule(options) {
4268
4711
  (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
4269
4712
  value = emnapiCtx.addToCurrentScope(buffer_1).id;
4270
4713
  HEAP_DATA_VIEW.setUint32(result, value, true);
4714
+ data >>>= 0;
4271
4715
  HEAP_DATA_VIEW.setUint32(data, pointer, true);
4272
4716
  }
4273
4717
  return envObject.getReturnStatus();
@@ -4297,8 +4741,11 @@ function createNapiModule(options) {
4297
4741
  }
4298
4742
  var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
4299
4743
  var buffer = Buffer.from(arrayBuffer);
4744
+ data >>>= 0;
4745
+ length >>>= 0;
4300
4746
  buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
4301
4747
  value = emnapiCtx.addToCurrentScope(buffer).id;
4748
+ result >>>= 0;
4302
4749
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4303
4750
  HEAP_DATA_VIEW.setUint32(result, value, true);
4304
4751
  return envObject.getReturnStatus();
@@ -4327,6 +4774,8 @@ function createNapiModule(options) {
4327
4774
  return envObject.setLastError(1);
4328
4775
  if (!result)
4329
4776
  return envObject.setLastError(1);
4777
+ byte_offset >>>= 0;
4778
+ byte_length >>>= 0;
4330
4779
  byte_offset = byte_offset >>> 0;
4331
4780
  byte_length = byte_length >>> 0;
4332
4781
  var handle = emnapiCtx.handleStore.get(arraybuffer);
@@ -4355,6 +4804,7 @@ function createNapiModule(options) {
4355
4804
  });
4356
4805
  }
4357
4806
  }
4807
+ result >>>= 0;
4358
4808
  value = emnapiCtx.addToCurrentScope(out).id;
4359
4809
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4360
4810
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4380,6 +4830,8 @@ function createNapiModule(options) {
4380
4830
  return envObject.setLastError(1);
4381
4831
  if (!result)
4382
4832
  return envObject.setLastError(1);
4833
+ byte_length >>>= 0;
4834
+ byte_offset >>>= 0;
4383
4835
  byte_length = byte_length >>> 0;
4384
4836
  byte_offset = byte_offset >>> 0;
4385
4837
  var value = emnapiCtx.handleStore.get(arraybuffer).value;
@@ -4401,6 +4853,7 @@ function createNapiModule(options) {
4401
4853
  });
4402
4854
  }
4403
4855
  }
4856
+ result >>>= 0;
4404
4857
  var v = emnapiCtx.addToCurrentScope(dataview).id;
4405
4858
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4406
4859
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -4425,7 +4878,10 @@ function createNapiModule(options) {
4425
4878
  envObject.checkGCAccess();
4426
4879
  if (!result)
4427
4880
  return envObject.setLastError(1);
4428
- var autoLength = length === -1;
4881
+ length >>>= 0;
4882
+ utf8description >>>= 0;
4883
+ result >>>= 0;
4884
+ var autoLength = length === -1 || length === 4294967295;
4429
4885
  var sizelength = length >>> 0;
4430
4886
  if (length !== 0) {
4431
4887
  if (!utf8description)
@@ -4453,10 +4909,10 @@ function createNapiModule(options) {
4453
4909
  napi_create_external_arraybuffer: napi_create_external_arraybuffer,
4454
4910
  napi_create_external_buffer: napi_create_external_buffer,
4455
4911
  napi_create_object: napi_create_object,
4456
- napi_create_object_with_properties: napi_create_object_with_properties,
4457
4912
  napi_create_symbol: napi_create_symbol,
4458
4913
  napi_create_typedarray: napi_create_typedarray,
4459
4914
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
4915
+ node_api_create_object_with_properties: node_api_create_object_with_properties,
4460
4916
  node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
4461
4917
  node_api_symbol_for: node_api_symbol_for
4462
4918
  });
@@ -4467,6 +4923,7 @@ function createNapiModule(options) {
4467
4923
  envObject.checkGCAccess();
4468
4924
  if (!result)
4469
4925
  return envObject.setLastError(1);
4926
+ result >>>= 0;
4470
4927
  var v = value === 0 ? 3 : 4;
4471
4928
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4472
4929
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -4479,6 +4936,7 @@ function createNapiModule(options) {
4479
4936
  envObject.checkGCAccess();
4480
4937
  if (!result)
4481
4938
  return envObject.setLastError(1);
4939
+ result >>>= 0;
4482
4940
  var value = 5;
4483
4941
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4484
4942
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4491,6 +4949,7 @@ function createNapiModule(options) {
4491
4949
  envObject.checkGCAccess();
4492
4950
  if (!result)
4493
4951
  return envObject.setLastError(1);
4952
+ result >>>= 0;
4494
4953
  var value = 2;
4495
4954
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4496
4955
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4503,6 +4962,7 @@ function createNapiModule(options) {
4503
4962
  envObject.checkGCAccess();
4504
4963
  if (!result)
4505
4964
  return envObject.setLastError(1);
4965
+ result >>>= 0;
4506
4966
  var value = 1;
4507
4967
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4508
4968
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4519,6 +4979,9 @@ function createNapiModule(options) {
4519
4979
  if (!env)
4520
4980
  return 1;
4521
4981
  var envObject = emnapiCtx.envStore.get(env);
4982
+ data >>>= 0;
4983
+ finalize_cb >>>= 0;
4984
+ finalize_hint >>>= 0;
4522
4985
  envObject.setInstanceData(data, finalize_cb, finalize_hint);
4523
4986
  return envObject.clearLastError();
4524
4987
  }
@@ -4528,6 +4991,7 @@ function createNapiModule(options) {
4528
4991
  var envObject = emnapiCtx.envStore.get(env);
4529
4992
  if (!data)
4530
4993
  return envObject.setLastError(1);
4994
+ data >>>= 0;
4531
4995
  var value = envObject.getInstanceData();
4532
4996
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4533
4997
  HEAP_DATA_VIEW.setUint32(data, value, true);
@@ -4539,11 +5003,15 @@ function createNapiModule(options) {
4539
5003
  napi_set_instance_data: napi_set_instance_data
4540
5004
  });
4541
5005
  function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
5006
+ error_code >>>= 0;
5007
+ engine_error_code >>>= 0;
5008
+ engine_reserved >>>= 0;
4542
5009
  var envObject = emnapiCtx.envStore.get(env);
4543
5010
  var lastError = envObject.lastError;
4544
5011
  var errorCode = lastError.errorCode;
4545
5012
  var engineErrorCode = lastError.engineErrorCode >>> 0;
4546
5013
  var engineReserved = lastError.engineReserved;
5014
+ engineReserved >>>= 0;
4547
5015
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4548
5016
  HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
4549
5017
  HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
@@ -4583,6 +5051,8 @@ function createNapiModule(options) {
4583
5051
  try {
4584
5052
  if (!msg)
4585
5053
  return envObject.setLastError(1);
5054
+ code >>>= 0;
5055
+ msg >>>= 0;
4586
5056
  var error = new Error(emnapiString.UTF8ToString(msg, -1));
4587
5057
  if (code)
4588
5058
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4607,6 +5077,8 @@ function createNapiModule(options) {
4607
5077
  try {
4608
5078
  if (!msg)
4609
5079
  return envObject.setLastError(1);
5080
+ code >>>= 0;
5081
+ msg >>>= 0;
4610
5082
  var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
4611
5083
  if (code)
4612
5084
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4631,6 +5103,8 @@ function createNapiModule(options) {
4631
5103
  try {
4632
5104
  if (!msg)
4633
5105
  return envObject.setLastError(1);
5106
+ code >>>= 0;
5107
+ msg >>>= 0;
4634
5108
  var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
4635
5109
  if (code)
4636
5110
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4655,6 +5129,8 @@ function createNapiModule(options) {
4655
5129
  try {
4656
5130
  if (!msg)
4657
5131
  return envObject.setLastError(1);
5132
+ code >>>= 0;
5133
+ msg >>>= 0;
4658
5134
  var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
4659
5135
  if (code)
4660
5136
  error.code = emnapiString.UTF8ToString(code, -1);
@@ -4674,6 +5150,7 @@ function createNapiModule(options) {
4674
5150
  if (!result)
4675
5151
  return envObject.setLastError(1);
4676
5152
  var r = envObject.tryCatch.hasCaught();
5153
+ result >>>= 0;
4677
5154
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4678
5155
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
4679
5156
  return envObject.clearLastError();
@@ -4699,6 +5176,7 @@ function createNapiModule(options) {
4699
5176
  }
4700
5177
  error.code = codeValue;
4701
5178
  }
5179
+ result >>>= 0;
4702
5180
  var value = emnapiCtx.addToCurrentScope(error).id;
4703
5181
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4704
5182
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4725,6 +5203,7 @@ function createNapiModule(options) {
4725
5203
  }
4726
5204
  error.code = codeValue;
4727
5205
  }
5206
+ result >>>= 0;
4728
5207
  var value = emnapiCtx.addToCurrentScope(error).id;
4729
5208
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4730
5209
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4751,6 +5230,7 @@ function createNapiModule(options) {
4751
5230
  }
4752
5231
  error.code = codeValue;
4753
5232
  }
5233
+ result >>>= 0;
4754
5234
  var value = emnapiCtx.addToCurrentScope(error).id;
4755
5235
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4756
5236
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4777,6 +5257,7 @@ function createNapiModule(options) {
4777
5257
  }
4778
5258
  error.code = codeValue;
4779
5259
  }
5260
+ result >>>= 0;
4780
5261
  var value = emnapiCtx.addToCurrentScope(error).id;
4781
5262
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4782
5263
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -4789,6 +5270,7 @@ function createNapiModule(options) {
4789
5270
  envObject.checkGCAccess();
4790
5271
  if (!result)
4791
5272
  return envObject.setLastError(1);
5273
+ result >>>= 0;
4792
5274
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4793
5275
  if (!envObject.tryCatch.hasCaught()) {
4794
5276
  HEAP_DATA_VIEW.setUint32(result, 1, true);
@@ -4803,6 +5285,10 @@ function createNapiModule(options) {
4803
5285
  return envObject.clearLastError();
4804
5286
  }
4805
5287
  function napi_fatal_error(location, location_len, message, message_len) {
5288
+ location >>>= 0;
5289
+ location_len >>>= 0;
5290
+ message >>>= 0;
5291
+ message_len >>>= 0;
4806
5292
  var locationStr = emnapiString.UTF8ToString(location, location_len);
4807
5293
  var messageStr = emnapiString.UTF8ToString(message, message_len);
4808
5294
  if (emnapiNodeBinding) {
@@ -4856,8 +5342,21 @@ function createNapiModule(options) {
4856
5342
  node_api_create_syntax_error: node_api_create_syntax_error,
4857
5343
  node_api_throw_syntax_error: node_api_throw_syntax_error
4858
5344
  });
5345
+ function _emnapi_create_function(env, utf8name, length, cb, data, result) {
5346
+ length >>>= 0;
5347
+ var envObject = emnapiCtx.envStore.get(env);
5348
+ var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
5349
+ if (fresult.status !== 0)
5350
+ return envObject.setLastError(fresult.status);
5351
+ var f = fresult.f;
5352
+ var valueHandle = emnapiCtx.addToCurrentScope(f);
5353
+ result >>>= 0;
5354
+ var value = valueHandle.id;
5355
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5356
+ HEAP_DATA_VIEW.setUint32(result, value, true);
5357
+ return envObject.getReturnStatus();
5358
+ }
4859
5359
  function napi_create_function(env, utf8name, length, cb, data, result) {
4860
- var value;
4861
5360
  if (!env)
4862
5361
  return 1;
4863
5362
  var envObject = emnapiCtx.envStore.get(env);
@@ -4872,15 +5371,7 @@ function createNapiModule(options) {
4872
5371
  return envObject.setLastError(1);
4873
5372
  if (!cb)
4874
5373
  return envObject.setLastError(1);
4875
- var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
4876
- if (fresult.status !== 0)
4877
- return envObject.setLastError(fresult.status);
4878
- var f = fresult.f;
4879
- var valueHandle = emnapiCtx.addToCurrentScope(f);
4880
- value = valueHandle.id;
4881
- var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4882
- HEAP_DATA_VIEW.setUint32(result, value, true);
4883
- return envObject.getReturnStatus();
5374
+ return _emnapi_create_function(env, utf8name, length, cb, data, result);
4884
5375
  }
4885
5376
  catch (err) {
4886
5377
  envObject.tryCatch.setError(err);
@@ -4894,11 +5385,14 @@ function createNapiModule(options) {
4894
5385
  if (!cbinfo)
4895
5386
  return envObject.setLastError(1);
4896
5387
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5388
+ argc >>>= 0;
5389
+ argv >>>= 0;
4897
5390
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4898
5391
  if (argv) {
4899
5392
  if (!argc)
4900
5393
  return envObject.setLastError(1);
4901
5394
  var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
5395
+ argcValue >>>= 0;
4902
5396
  var len = cbinfoValue.args.length;
4903
5397
  var arrlen = argcValue < len ? argcValue : len;
4904
5398
  var i = 0;
@@ -4916,10 +5410,12 @@ function createNapiModule(options) {
4916
5410
  HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
4917
5411
  }
4918
5412
  if (this_arg) {
5413
+ this_arg >>>= 0;
4919
5414
  var v = envObject.ensureHandleId(cbinfoValue.thiz);
4920
5415
  HEAP_DATA_VIEW.setUint32(this_arg, v, true);
4921
5416
  }
4922
5417
  if (data) {
5418
+ data >>>= 0;
4923
5419
  HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
4924
5420
  }
4925
5421
  return envObject.clearLastError();
@@ -4939,6 +5435,9 @@ function createNapiModule(options) {
4939
5435
  try {
4940
5436
  if (!recv)
4941
5437
  return envObject.setLastError(1);
5438
+ argc >>>= 0;
5439
+ argv >>>= 0;
5440
+ result >>>= 0;
4942
5441
  argc = argc >>> 0;
4943
5442
  if (argc > 0) {
4944
5443
  if (!argv)
@@ -4983,6 +5482,9 @@ function createNapiModule(options) {
4983
5482
  try {
4984
5483
  if (!constructor)
4985
5484
  return envObject.setLastError(1);
5485
+ argc >>>= 0;
5486
+ argv >>>= 0;
5487
+ result >>>= 0;
4986
5488
  argc = argc >>> 0;
4987
5489
  if (argc > 0) {
4988
5490
  if (!argv)
@@ -5033,6 +5535,7 @@ function createNapiModule(options) {
5033
5535
  return envObject.setLastError(1);
5034
5536
  if (!result)
5035
5537
  return envObject.setLastError(1);
5538
+ result >>>= 0;
5036
5539
  var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
5037
5540
  var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
5038
5541
  var value = thiz == null || thiz.constructor == null
@@ -5046,6 +5549,7 @@ function createNapiModule(options) {
5046
5549
  }
5047
5550
  var functionMod = Object.freeze({
5048
5551
  __proto__: null,
5552
+ _emnapi_create_function: _emnapi_create_function,
5049
5553
  napi_call_function: napi_call_function,
5050
5554
  napi_create_function: napi_create_function,
5051
5555
  napi_get_cb_info: napi_get_cb_info,
@@ -5060,6 +5564,7 @@ function createNapiModule(options) {
5060
5564
  if (!result)
5061
5565
  return envObject.setLastError(1);
5062
5566
  var scope = emnapiCtx.openScope(envObject);
5567
+ result >>>= 0;
5063
5568
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5064
5569
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5065
5570
  return envObject.clearLastError();
@@ -5085,6 +5590,7 @@ function createNapiModule(options) {
5085
5590
  if (!result)
5086
5591
  return envObject.setLastError(1);
5087
5592
  var scope = emnapiCtx.openScope(envObject);
5593
+ result >>>= 0;
5088
5594
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5089
5595
  HEAP_DATA_VIEW.setUint32(result, scope.id, true);
5090
5596
  return envObject.clearLastError();
@@ -5115,6 +5621,8 @@ function createNapiModule(options) {
5115
5621
  return envObject.setLastError(1);
5116
5622
  var scopeObject = emnapiCtx.scopeStore.get(scope);
5117
5623
  if (!scopeObject.escapeCalled()) {
5624
+ escapee >>>= 0;
5625
+ result >>>= 0;
5118
5626
  var newHandle = scopeObject.escape(escapee);
5119
5627
  var value = newHandle ? newHandle.id : 0;
5120
5628
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -5139,6 +5647,7 @@ function createNapiModule(options) {
5139
5647
  }
5140
5648
  }
5141
5649
  var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
5650
+ result >>>= 0;
5142
5651
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5143
5652
  HEAP_DATA_VIEW.setUint32(result, ref.id, true);
5144
5653
  return envObject.clearLastError();
@@ -5161,6 +5670,7 @@ function createNapiModule(options) {
5161
5670
  return envObject.setLastError(1);
5162
5671
  var count = emnapiCtx.refStore.get(ref).ref();
5163
5672
  if (result) {
5673
+ result >>>= 0;
5164
5674
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5165
5675
  HEAP_DATA_VIEW.setUint32(result, count, true);
5166
5676
  }
@@ -5180,6 +5690,7 @@ function createNapiModule(options) {
5180
5690
  }
5181
5691
  var count = reference.unref();
5182
5692
  if (result) {
5693
+ result >>>= 0;
5183
5694
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5184
5695
  HEAP_DATA_VIEW.setUint32(result, count, true);
5185
5696
  }
@@ -5196,6 +5707,7 @@ function createNapiModule(options) {
5196
5707
  return envObject.setLastError(1);
5197
5708
  var reference = emnapiCtx.refStore.get(ref);
5198
5709
  var handleId = reference.get(envObject);
5710
+ result >>>= 0;
5199
5711
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5200
5712
  HEAP_DATA_VIEW.setUint32(result, handleId, true);
5201
5713
  return envObject.clearLastError();
@@ -5206,6 +5718,8 @@ function createNapiModule(options) {
5206
5718
  var envObject = emnapiCtx.envStore.get(env);
5207
5719
  if (!fun)
5208
5720
  return envObject.setLastError(1);
5721
+ fun >>>= 0;
5722
+ arg >>>= 0;
5209
5723
  emnapiCtx.addCleanupHook(envObject, fun, arg);
5210
5724
  return 0;
5211
5725
  }
@@ -5215,6 +5729,8 @@ function createNapiModule(options) {
5215
5729
  var envObject = emnapiCtx.envStore.get(env);
5216
5730
  if (!fun)
5217
5731
  return envObject.setLastError(1);
5732
+ fun >>>= 0;
5733
+ arg >>>= 0;
5218
5734
  emnapiCtx.removeCleanupHook(envObject, fun, arg);
5219
5735
  return 0;
5220
5736
  }
@@ -5275,8 +5791,10 @@ function createNapiModule(options) {
5275
5791
  var p = new Promise(function (resolve, reject) {
5276
5792
  var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
5277
5793
  deferredObjectId = deferredObject.id;
5794
+ deferred >>>= 0;
5278
5795
  HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
5279
5796
  });
5797
+ promise >>>= 0;
5280
5798
  value = emnapiCtx.addToCurrentScope(p).id;
5281
5799
  HEAP_DATA_VIEW.setUint32(promise, value, true);
5282
5800
  return envObject.getReturnStatus();
@@ -5344,6 +5862,7 @@ function createNapiModule(options) {
5344
5862
  if (!is_promise)
5345
5863
  return envObject.setLastError(1);
5346
5864
  var h = emnapiCtx.handleStore.get(value);
5865
+ is_promise >>>= 0;
5347
5866
  var r = h.isPromise() ? 1 : 0;
5348
5867
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5349
5868
  HEAP_DATA_VIEW.setInt8(is_promise, r, true);
@@ -5487,6 +6006,7 @@ function createNapiModule(options) {
5487
6006
  }
5488
6007
  }
5489
6008
  }
6009
+ result >>>= 0;
5490
6010
  value = emnapiCtx.addToCurrentScope(ret).id;
5491
6011
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5492
6012
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5558,6 +6078,7 @@ function createNapiModule(options) {
5558
6078
  catch (_) {
5559
6079
  return envObject.setLastError(2);
5560
6080
  }
6081
+ result >>>= 0;
5561
6082
  r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
5562
6083
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5563
6084
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5597,6 +6118,7 @@ function createNapiModule(options) {
5597
6118
  catch (_) {
5598
6119
  return envObject.setLastError(2);
5599
6120
  }
6121
+ result >>>= 0;
5600
6122
  value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
5601
6123
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5602
6124
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5640,6 +6162,7 @@ function createNapiModule(options) {
5640
6162
  }
5641
6163
  }
5642
6164
  if (result) {
6165
+ result >>>= 0;
5643
6166
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5644
6167
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5645
6168
  }
@@ -5684,6 +6207,7 @@ function createNapiModule(options) {
5684
6207
  return envObject.setLastError(4);
5685
6208
  }
5686
6209
  r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
6210
+ result >>>= 0;
5687
6211
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5688
6212
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5689
6213
  return envObject.getReturnStatus();
@@ -5715,6 +6239,7 @@ function createNapiModule(options) {
5715
6239
  if (!cname) {
5716
6240
  return envObject.setLastError(1);
5717
6241
  }
6242
+ cname >>>= 0;
5718
6243
  emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
5719
6244
  return envObject.getReturnStatus();
5720
6245
  }
@@ -5753,6 +6278,8 @@ function createNapiModule(options) {
5753
6278
  catch (_) {
5754
6279
  return envObject.setLastError(2);
5755
6280
  }
6281
+ utf8name >>>= 0;
6282
+ result >>>= 0;
5756
6283
  r = emnapiString.UTF8ToString(utf8name, -1) in v;
5757
6284
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5758
6285
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
@@ -5793,6 +6320,8 @@ function createNapiModule(options) {
5793
6320
  catch (_) {
5794
6321
  return envObject.setLastError(2);
5795
6322
  }
6323
+ utf8name >>>= 0;
6324
+ result >>>= 0;
5796
6325
  value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
5797
6326
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5798
6327
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5857,6 +6386,7 @@ function createNapiModule(options) {
5857
6386
  catch (_) {
5858
6387
  return envObject.setLastError(2);
5859
6388
  }
6389
+ result >>>= 0;
5860
6390
  r = ((index >>> 0) in v) ? 1 : 0;
5861
6391
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5862
6392
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -5894,6 +6424,7 @@ function createNapiModule(options) {
5894
6424
  catch (_) {
5895
6425
  return envObject.setLastError(2);
5896
6426
  }
6427
+ result >>>= 0;
5897
6428
  value = envObject.ensureHandleId(v[index >>> 0]);
5898
6429
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5899
6430
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -5934,6 +6465,7 @@ function createNapiModule(options) {
5934
6465
  }
5935
6466
  }
5936
6467
  if (result) {
6468
+ result >>>= 0;
5937
6469
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
5938
6470
  HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
5939
6471
  }
@@ -5956,6 +6488,8 @@ function createNapiModule(options) {
5956
6488
  return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
5957
6489
  envObject.clearLastError();
5958
6490
  try {
6491
+ properties >>>= 0;
6492
+ property_count >>>= 0;
5959
6493
  property_count = property_count >>> 0;
5960
6494
  if (property_count > 0) {
5961
6495
  if (!properties)
@@ -5979,6 +6513,7 @@ function createNapiModule(options) {
5979
6513
  var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
5980
6514
  var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
5981
6515
  attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
6516
+ attributes >>>= 0;
5982
6517
  var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
5983
6518
  if (utf8Name) {
5984
6519
  propertyName = emnapiString.UTF8ToString(utf8Name, -1);
@@ -6096,6 +6631,7 @@ function createNapiModule(options) {
6096
6631
  }
6097
6632
  var g = emnapiCtx.handleStore.get(5).value;
6098
6633
  var ret = g.eval(v8Script.value);
6634
+ result >>>= 0;
6099
6635
  value = envObject.ensureHandleId(ret);
6100
6636
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6101
6637
  HEAP_DATA_VIEW.setUint32(result, value, true);
@@ -6121,6 +6657,7 @@ function createNapiModule(options) {
6121
6657
  if (!result)
6122
6658
  return envObject.setLastError(1);
6123
6659
  var v = emnapiCtx.handleStore.get(value);
6660
+ result >>>= 0;
6124
6661
  var r;
6125
6662
  if (v.isNumber()) {
6126
6663
  r = 3;
@@ -6176,6 +6713,7 @@ function createNapiModule(options) {
6176
6713
  if (!result)
6177
6714
  return envObject.setLastError(1);
6178
6715
  var handle = emnapiCtx.handleStore.get(value);
6716
+ result >>>= 0;
6179
6717
  v = handle.value ? 4 : 3;
6180
6718
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6181
6719
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6206,6 +6744,7 @@ function createNapiModule(options) {
6206
6744
  if (handle.isBigInt()) {
6207
6745
  throw new TypeError('Cannot convert a BigInt value to a number');
6208
6746
  }
6747
+ result >>>= 0;
6209
6748
  v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
6210
6749
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6211
6750
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6236,6 +6775,7 @@ function createNapiModule(options) {
6236
6775
  if (handle.value == null) {
6237
6776
  throw new TypeError('Cannot convert undefined or null to object');
6238
6777
  }
6778
+ result >>>= 0;
6239
6779
  v = envObject.ensureHandleId(Object(handle.value));
6240
6780
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6241
6781
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6266,6 +6806,7 @@ function createNapiModule(options) {
6266
6806
  if (handle.isSymbol()) {
6267
6807
  throw new TypeError('Cannot convert a Symbol value to a string');
6268
6808
  }
6809
+ result >>>= 0;
6269
6810
  v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
6270
6811
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6271
6812
  HEAP_DATA_VIEW.setUint32(result, v, true);
@@ -6294,6 +6835,7 @@ function createNapiModule(options) {
6294
6835
  return envObject.setLastError(1);
6295
6836
  if (!constructor)
6296
6837
  return envObject.setLastError(1);
6838
+ result >>>= 0;
6297
6839
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6298
6840
  HEAP_DATA_VIEW.setInt8(result, 0, true);
6299
6841
  var ctor = emnapiCtx.handleStore.get(constructor);
@@ -6321,6 +6863,7 @@ function createNapiModule(options) {
6321
6863
  if (!result)
6322
6864
  return envObject.setLastError(1);
6323
6865
  var h = emnapiCtx.handleStore.get(value);
6866
+ result >>>= 0;
6324
6867
  var r = h.isArray() ? 1 : 0;
6325
6868
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6326
6869
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6336,6 +6879,7 @@ function createNapiModule(options) {
6336
6879
  if (!result)
6337
6880
  return envObject.setLastError(1);
6338
6881
  var h = emnapiCtx.handleStore.get(value);
6882
+ result >>>= 0;
6339
6883
  var r = h.isArrayBuffer() ? 1 : 0;
6340
6884
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6341
6885
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6351,6 +6895,7 @@ function createNapiModule(options) {
6351
6895
  if (!result)
6352
6896
  return envObject.setLastError(1);
6353
6897
  var h = emnapiCtx.handleStore.get(value);
6898
+ result >>>= 0;
6354
6899
  var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
6355
6900
  (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
6356
6901
  ? 1
@@ -6369,6 +6914,7 @@ function createNapiModule(options) {
6369
6914
  if (!result)
6370
6915
  return envObject.setLastError(1);
6371
6916
  var h = emnapiCtx.handleStore.get(value);
6917
+ result >>>= 0;
6372
6918
  var r = h.isDate() ? 1 : 0;
6373
6919
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6374
6920
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6384,6 +6930,7 @@ function createNapiModule(options) {
6384
6930
  if (!result)
6385
6931
  return envObject.setLastError(1);
6386
6932
  var val = emnapiCtx.handleStore.get(value).value;
6933
+ result >>>= 0;
6387
6934
  var r = (val instanceof Error) ? 1 : 0;
6388
6935
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6389
6936
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6399,6 +6946,7 @@ function createNapiModule(options) {
6399
6946
  if (!result)
6400
6947
  return envObject.setLastError(1);
6401
6948
  var h = emnapiCtx.handleStore.get(value);
6949
+ result >>>= 0;
6402
6950
  var r = h.isTypedArray() ? 1 : 0;
6403
6951
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6404
6952
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6414,6 +6962,7 @@ function createNapiModule(options) {
6414
6962
  if (!result)
6415
6963
  return envObject.setLastError(1);
6416
6964
  var h = emnapiCtx.handleStore.get(value);
6965
+ result >>>= 0;
6417
6966
  var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
6418
6967
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6419
6968
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6429,6 +6978,7 @@ function createNapiModule(options) {
6429
6978
  if (!result)
6430
6979
  return envObject.setLastError(1);
6431
6980
  var h = emnapiCtx.handleStore.get(value);
6981
+ result >>>= 0;
6432
6982
  var r = h.isDataView() ? 1 : 0;
6433
6983
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6434
6984
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6454,6 +7004,7 @@ function createNapiModule(options) {
6454
7004
  return envObject.setLastError(1);
6455
7005
  var lv = emnapiCtx.handleStore.get(lhs).value;
6456
7006
  var rv = emnapiCtx.handleStore.get(rhs).value;
7007
+ result >>>= 0;
6457
7008
  r = (lv === rv) ? 1 : 0;
6458
7009
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6459
7010
  HEAP_DATA_VIEW.setInt8(result, r, true);
@@ -6504,6 +7055,7 @@ function createNapiModule(options) {
6504
7055
  if (!result)
6505
7056
  return envObject.setLastError(1);
6506
7057
  var h = emnapiCtx.handleStore.get(arraybuffer);
7058
+ result >>>= 0;
6507
7059
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
6508
7060
  if (h.isArrayBuffer() && h.value.byteLength === 0) {
6509
7061
  try {
@@ -6818,12 +7370,7 @@ class MessageHandler extends ThreadMessageHandler {
6818
7370
  try {
6819
7371
  if (type === 'async-worker-init') {
6820
7372
  this.handleAfterLoad(e, () => {
6821
- this.napiModule.initWorker(payload.arg);
6822
- });
6823
- }
6824
- else if (type === 'async-work-execute') {
6825
- this.handleAfterLoad(e, () => {
6826
- this.napiModule.executeAsyncWork(payload.work);
7373
+ this.napiModule.initWorker(payload.arg, payload.func);
6827
7374
  });
6828
7375
  }
6829
7376
  }
@@ -6834,6 +7381,6 @@ class MessageHandler extends ThreadMessageHandler {
6834
7381
  }
6835
7382
  }
6836
7383
 
6837
- const version = "1.8.1";
7384
+ const version = "1.10.0";
6838
7385
 
6839
7386
  export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version };