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