@tailwindcss/oxide-wasm32-wasi 4.3.1 → 4.3.2

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 (35) hide show
  1. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +320 -98
  2. package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +0 -1
  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 +0 -1
  5. package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +0 -1
  6. package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +385 -97
  7. package/node_modules/@emnapi/core/dist/emnapi-core.js +399 -120
  8. package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +0 -1
  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 +320 -98
  12. package/node_modules/@emnapi/core/package.json +2 -2
  13. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +1 -1
  14. package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
  15. package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +1 -1
  16. package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +1 -1
  17. package/node_modules/@emnapi/runtime/dist/emnapi.js +1 -1
  18. package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
  19. package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
  20. package/node_modules/@emnapi/runtime/dist/emnapi.mjs +1 -1
  21. package/node_modules/@emnapi/runtime/package.json +1 -1
  22. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +14 -23
  23. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +0 -1
  24. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
  25. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +0 -1
  26. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +0 -1
  27. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +14 -23
  28. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +14 -23
  29. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +0 -1
  30. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
  31. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
  32. package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +14 -23
  33. package/node_modules/@emnapi/wasi-threads/package.json +1 -1
  34. package/package.json +4 -4
  35. package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
@@ -119,10 +119,10 @@ function createNapiModule(options) {
119
119
  if (!(instance === null || instance === void 0 ? void 0 : instance.exports))
120
120
  throw new TypeError('Invalid wasm instance');
121
121
  wasmInstance = instance;
122
- var exports$1 = instance.exports;
122
+ var exports = instance.exports;
123
123
  var module = options.module;
124
- var memory = options.memory || exports$1.memory;
125
- var table = options.table || exports$1.__indirect_function_table;
124
+ var memory = options.memory || exports.memory;
125
+ var table = options.table || exports.__indirect_function_table;
126
126
  if (!(module instanceof _WebAssembly.Module))
127
127
  throw new TypeError('Invalid wasm module');
128
128
  if (!(memory instanceof _WebAssembly.Memory))
@@ -131,12 +131,12 @@ function createNapiModule(options) {
131
131
  throw new TypeError('Invalid wasm table');
132
132
  wasmMemory = memory;
133
133
  wasmTable = table;
134
- if (typeof exports$1.malloc !== 'function')
134
+ if (typeof exports.malloc !== 'function')
135
135
  throw new TypeError('malloc is not exported');
136
- if (typeof exports$1.free !== 'function')
136
+ if (typeof exports.free !== 'function')
137
137
  throw new TypeError('free is not exported');
138
- _malloc = exports$1.malloc;
139
- _free = exports$1.free;
138
+ _malloc = exports.malloc;
139
+ _free = exports.free;
140
140
  if (!napiModule.childThread) {
141
141
  var moduleApiVersion = 8;
142
142
  var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1;
@@ -147,11 +147,11 @@ function createNapiModule(options) {
147
147
  var scope_1 = emnapiCtx.openScope(envObject);
148
148
  try {
149
149
  envObject.callIntoModule(function (_envObject) {
150
- var exports$1 = napiModule.exports;
151
- var exportsHandle = scope_1.add(exports$1);
150
+ var exports = napiModule.exports;
151
+ var exportsHandle = scope_1.add(exports);
152
152
  var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1;
153
153
  var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id);
154
- napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value;
154
+ napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
155
155
  });
156
156
  }
157
157
  catch (e) {
@@ -910,7 +910,7 @@ function createNapiModule(options) {
910
910
  emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
911
911
  if (typeof PThread !== 'undefined') {
912
912
  PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
913
- PThread.runningWorkers.forEach(emnapiTSFN.addListener);
913
+ Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
914
914
  var __original_getNewWorker_1 = PThread.getNewWorker;
915
915
  PThread.getNewWorker = function () {
916
916
  var r = __original_getNewWorker_1.apply(this, arguments);
@@ -932,7 +932,7 @@ function createNapiModule(options) {
932
932
  var payload = __emnapi__.payload;
933
933
  if (type === 'tsfn-send') {
934
934
  var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
935
- if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
935
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
936
936
  emnapiTSFN.enqueue(payload.tsfn);
937
937
  }
938
938
  }
@@ -956,13 +956,21 @@ function createNapiModule(options) {
956
956
  }
957
957
  return true;
958
958
  },
959
+ ensureBufferFor: function (end) {
960
+ var buffer = wasmMemory.buffer;
961
+ if (end > buffer.byteLength) {
962
+ wasmMemory.grow(0);
963
+ buffer = wasmMemory.buffer;
964
+ }
965
+ return buffer;
966
+ },
959
967
  initQueue: function (func) {
960
968
  var size = 2 * 4;
961
969
  var queue = _malloc(size);
962
970
  if (!queue)
963
971
  return false;
964
972
  queue >>>= 0;
965
- new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
973
+ new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
966
974
  emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
967
975
  return true;
968
976
  },
@@ -1061,7 +1069,7 @@ function createNapiModule(options) {
1061
1069
  var mutex = {
1062
1070
  lock: function () {
1063
1071
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1064
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1072
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1065
1073
  if (isBrowserMain) {
1066
1074
  while (true) {
1067
1075
  var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
@@ -1081,7 +1089,7 @@ function createNapiModule(options) {
1081
1089
  }
1082
1090
  },
1083
1091
  unlock: function () {
1084
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1092
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1085
1093
  var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1086
1094
  if (oldValue !== 10) {
1087
1095
  throw new Error('Tried to unlock while not holding the mutex');
@@ -1105,14 +1113,14 @@ function createNapiModule(options) {
1105
1113
  var mutex = emnapiTSFN.getMutex(func);
1106
1114
  var cond = {
1107
1115
  wait: function () {
1108
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1116
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1109
1117
  var value = Atomics.load(i32a, 0);
1110
1118
  mutex.unlock();
1111
1119
  Atomics.wait(i32a, 0, value);
1112
1120
  mutex.lock();
1113
1121
  },
1114
1122
  signal: function () {
1115
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1123
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
1116
1124
  Atomics.add(i32a, 0, 1);
1117
1125
  Atomics.notify(i32a, 0, 1);
1118
1126
  }
@@ -1125,14 +1133,14 @@ function createNapiModule(options) {
1125
1133
  addQueueSize: function (func) {
1126
1134
  var offset = emnapiTSFN.offset.queue_size;
1127
1135
  var arr, index;
1128
- arr = new Uint32Array(wasmMemory.buffer);
1136
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1129
1137
  index = (func + offset) >>> 2;
1130
1138
  Atomics.add(arr, index, 1);
1131
1139
  },
1132
1140
  subQueueSize: function (func) {
1133
1141
  var offset = emnapiTSFN.offset.queue_size;
1134
1142
  var arr, index;
1135
- arr = new Uint32Array(wasmMemory.buffer);
1143
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1136
1144
  index = (func + offset) >>> 2;
1137
1145
  Atomics.sub(arr, index, 1);
1138
1146
  },
@@ -1142,31 +1150,31 @@ function createNapiModule(options) {
1142
1150
  addThreadCount: function (func) {
1143
1151
  var offset = emnapiTSFN.offset.thread_count;
1144
1152
  var arr, index;
1145
- arr = new Uint32Array(wasmMemory.buffer);
1153
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1146
1154
  index = (func + offset) >>> 2;
1147
1155
  Atomics.add(arr, index, 1);
1148
1156
  },
1149
1157
  subThreadCount: function (func) {
1150
1158
  var offset = emnapiTSFN.offset.thread_count;
1151
1159
  var arr, index;
1152
- arr = new Uint32Array(wasmMemory.buffer);
1160
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
1153
1161
  index = (func + offset) >>> 2;
1154
1162
  Atomics.sub(arr, index, 1);
1155
1163
  },
1156
1164
  getState: function (func) {
1157
- return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2);
1165
+ return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
1158
1166
  },
1159
1167
  setState: function (func, value) {
1160
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value);
1168
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
1161
1169
  },
1162
1170
  getHandlesClosing: function (func) {
1163
- return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing));
1171
+ return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
1164
1172
  },
1165
1173
  setHandlesClosing: function (func, value) {
1166
- Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value);
1174
+ Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
1167
1175
  },
1168
1176
  getDispatchState: function (func) {
1169
- return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
1177
+ return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
1170
1178
  },
1171
1179
  getContext: function (func) {
1172
1180
  return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
@@ -1196,12 +1204,12 @@ function createNapiModule(options) {
1196
1204
  var ret;
1197
1205
  var arr;
1198
1206
  if (unsigned) {
1199
- arr = new Uint32Array(wasmMemory.buffer);
1207
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1200
1208
  ret = Atomics.load(arr, offset >>> 2);
1201
1209
  return ret;
1202
1210
  }
1203
1211
  else {
1204
- arr = new Int32Array(wasmMemory.buffer);
1212
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1205
1213
  ret = Atomics.load(arr, offset >>> 2);
1206
1214
  return ret;
1207
1215
  }
@@ -1209,12 +1217,12 @@ function createNapiModule(options) {
1209
1217
  storeSizeTypeValue: function (offset, value, unsigned) {
1210
1218
  var arr;
1211
1219
  if (unsigned) {
1212
- arr = new Uint32Array(wasmMemory.buffer);
1220
+ arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1213
1221
  Atomics.store(arr, offset >>> 2, value);
1214
1222
  return undefined;
1215
1223
  }
1216
1224
  else {
1217
- arr = new Int32Array(wasmMemory.buffer);
1225
+ arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
1218
1226
  Atomics.store(arr, offset >>> 2, value >>> 0);
1219
1227
  return undefined;
1220
1228
  }
@@ -1230,18 +1238,20 @@ function createNapiModule(options) {
1230
1238
  }
1231
1239
  var resource = emnapiTSFN.getResource(func);
1232
1240
  emnapiCtx.refStore.get(resource).dispose();
1241
+ emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
1233
1242
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1234
1243
  HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
1235
1244
  emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
1236
1245
  envObject.unref();
1237
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1238
- var arr = new Uint32Array(wasmMemory.buffer);
1246
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1247
+ var asyncRefOffset = asyncRefAddress >>> 2;
1248
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1239
1249
  if (Atomics.load(arr, asyncRefOffset) > 0) {
1240
1250
  Atomics.store(arr, asyncRefOffset, 0);
1241
1251
  emnapiCtx.decreaseWaitingRequestCounter();
1242
1252
  }
1243
1253
  if (emnapiNodeBinding) {
1244
- var view = new DataView(wasmMemory.buffer);
1254
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1245
1255
  var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1246
1256
  var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1247
1257
  _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
@@ -1302,7 +1312,7 @@ function createNapiModule(options) {
1302
1312
  var resource = emnapiTSFN.getResource(func);
1303
1313
  var resource_value = emnapiCtx.refStore.get(resource).get();
1304
1314
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1305
- var view = new DataView(wasmMemory.buffer);
1315
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1306
1316
  var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
1307
1317
  var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
1308
1318
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
@@ -1340,7 +1350,7 @@ function createNapiModule(options) {
1340
1350
  return;
1341
1351
  }
1342
1352
  emnapiTSFN.setHandlesClosing(func, 1);
1343
- Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1353
+ Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
1344
1354
  emnapiCtx.feature.setImmediate(function () {
1345
1355
  emnapiTSFN.finalize(func);
1346
1356
  });
@@ -1410,7 +1420,7 @@ function createNapiModule(options) {
1410
1420
  var resource = emnapiTSFN.getResource(func);
1411
1421
  var resource_value = emnapiCtx.refStore.get(resource).get();
1412
1422
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
1413
- var view = new DataView(wasmMemory.buffer);
1423
+ var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
1414
1424
  emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
1415
1425
  asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
1416
1426
  triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
@@ -1429,8 +1439,9 @@ function createNapiModule(options) {
1429
1439
  dispatch: function (func) {
1430
1440
  var has_more = true;
1431
1441
  var iterations_left = 1000;
1432
- var ui32a = new Uint32Array(wasmMemory.buffer);
1433
- var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2;
1442
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1443
+ var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
1444
+ var index = dispatchStateAddress >>> 2;
1434
1445
  while (has_more && --iterations_left !== 0) {
1435
1446
  Atomics.store(ui32a, index, 1);
1436
1447
  has_more = emnapiTSFN.dispatchOne(func);
@@ -1445,7 +1456,7 @@ function createNapiModule(options) {
1445
1456
  enqueue: function (func) {
1446
1457
  var pending = func + emnapiTSFN.offset.async_pending;
1447
1458
  var scheduled = func + emnapiTSFN.offset.async_u_fd;
1448
- var i32a = new Int32Array(wasmMemory.buffer);
1459
+ var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
1449
1460
  if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
1450
1461
  return;
1451
1462
  }
@@ -1479,15 +1490,16 @@ function createNapiModule(options) {
1479
1490
  });
1480
1491
  },
1481
1492
  send: function (func) {
1482
- var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1);
1493
+ var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
1494
+ var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
1483
1495
  if ((current_state & 1) === 1) {
1484
1496
  return;
1485
1497
  }
1486
1498
  var pendng = func + emnapiTSFN.offset.async_pending;
1487
- if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
1499
+ if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
1488
1500
  return;
1489
1501
  }
1490
- if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) {
1502
+ if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
1491
1503
  if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
1492
1504
  postMessage({
1493
1505
  __emnapi__: {
@@ -1561,7 +1573,7 @@ function createNapiModule(options) {
1561
1573
  if (!tsfn)
1562
1574
  return envObject.setLastError(9);
1563
1575
  tsfn >>>= 0;
1564
- new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1576
+ new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
1565
1577
  var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
1566
1578
  var resource_ = resourceRef.id;
1567
1579
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
@@ -1668,8 +1680,9 @@ function createNapiModule(options) {
1668
1680
  return 1;
1669
1681
  }
1670
1682
  func >>>= 0;
1671
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1672
- var arr = new Uint32Array(wasmMemory.buffer);
1683
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1684
+ var asyncRefOffset = asyncRefAddress >>> 2;
1685
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1673
1686
  var currentValue = Atomics.load(arr, asyncRefOffset);
1674
1687
  if (currentValue > 0) {
1675
1688
  Atomics.store(arr, asyncRefOffset, currentValue - 1);
@@ -1685,8 +1698,9 @@ function createNapiModule(options) {
1685
1698
  return 1;
1686
1699
  }
1687
1700
  func >>>= 0;
1688
- var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
1689
- var arr = new Uint32Array(wasmMemory.buffer);
1701
+ var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
1702
+ var asyncRefOffset = asyncRefAddress >>> 2;
1703
+ var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
1690
1704
  var currentValue = Atomics.load(arr, asyncRefOffset);
1691
1705
  if (!currentValue) {
1692
1706
  emnapiCtx.increaseWaitingRequestCounter();
@@ -1722,12 +1736,20 @@ function createNapiModule(options) {
1722
1736
  complete: 6 * 4 + 24,
1723
1737
  end: 7 * 4 + 24
1724
1738
  },
1739
+ ensureBufferFor: function (end) {
1740
+ var buffer = wasmMemory.buffer;
1741
+ if (end > buffer.byteLength) {
1742
+ wasmMemory.grow(0);
1743
+ buffer = wasmMemory.buffer;
1744
+ }
1745
+ return buffer;
1746
+ },
1725
1747
  init: function () {
1726
1748
  emnapiAWMT.pool = [];
1727
1749
  emnapiAWMT.workerReady = null;
1728
1750
  if (typeof PThread !== 'undefined') {
1729
1751
  PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
1730
- PThread.runningWorkers.forEach(emnapiAWMT.addListener);
1752
+ Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
1731
1753
  var __original_getNewWorker_1 = PThread.getNewWorker;
1732
1754
  PThread.getNewWorker = function () {
1733
1755
  var r = __original_getNewWorker_1.apply(this, arguments);
@@ -1776,7 +1798,7 @@ function createNapiModule(options) {
1776
1798
  emnapiAWMT.globalAddress >>>= 0;
1777
1799
  var size = emnapiAWMT.globalOffset.end;
1778
1800
  var addr = emnapiAWMT.globalAddress;
1779
- new Uint8Array(wasmMemory.buffer, addr, size).fill(0);
1801
+ new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
1780
1802
  emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
1781
1803
  emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
1782
1804
  }
@@ -1816,8 +1838,8 @@ function createNapiModule(options) {
1816
1838
  return worker.whenLoaded;
1817
1839
  }
1818
1840
  index >>>= 0;
1819
- var view = new DataView(wasmMemory.buffer);
1820
1841
  var tidOffset = 20;
1842
+ var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
1821
1843
  var tid = view.getInt32(index + tidOffset, true);
1822
1844
  worker = PThread.pthreads[tid];
1823
1845
  return worker.whenLoaded;
@@ -1826,22 +1848,27 @@ function createNapiModule(options) {
1826
1848
  return emnapiAWMT.workerReady;
1827
1849
  },
1828
1850
  getResource: function (work) {
1851
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
1829
1852
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1830
1853
  return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
1831
1854
  },
1832
1855
  getExecute: function (work) {
1856
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
1833
1857
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1834
1858
  return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
1835
1859
  },
1836
1860
  getComplete: function (work) {
1861
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
1837
1862
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1838
1863
  return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
1839
1864
  },
1840
1865
  getEnv: function (work) {
1866
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
1841
1867
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1842
1868
  return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
1843
1869
  },
1844
1870
  getData: function (work) {
1871
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
1845
1872
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1846
1873
  return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
1847
1874
  },
@@ -1850,7 +1877,7 @@ function createNapiModule(options) {
1850
1877
  var mutex = {
1851
1878
  lock: function () {
1852
1879
  var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
1853
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1880
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1854
1881
  if (isBrowserMain) {
1855
1882
  while (true) {
1856
1883
  var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
@@ -1870,7 +1897,7 @@ function createNapiModule(options) {
1870
1897
  }
1871
1898
  },
1872
1899
  unlock: function () {
1873
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1900
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1874
1901
  var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
1875
1902
  if (oldValue !== 10) {
1876
1903
  throw new Error('Tried to unlock while not holding the mutex');
@@ -1894,14 +1921,14 @@ function createNapiModule(options) {
1894
1921
  var mutex = emnapiAWMT.getMutex();
1895
1922
  var cond = {
1896
1923
  wait: function () {
1897
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1924
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1898
1925
  var value = Atomics.load(i32a, 0);
1899
1926
  mutex.unlock();
1900
1927
  Atomics.wait(i32a, 0, value);
1901
1928
  mutex.lock();
1902
1929
  },
1903
1930
  signal: function () {
1904
- var i32a = new Int32Array(wasmMemory.buffer, index, 1);
1931
+ var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
1905
1932
  Atomics.add(i32a, 0, 1);
1906
1933
  Atomics.notify(i32a, 0, 1);
1907
1934
  }
@@ -1909,11 +1936,14 @@ function createNapiModule(options) {
1909
1936
  return cond;
1910
1937
  },
1911
1938
  queueInit: function (q) {
1939
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1912
1940
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1913
1941
  HEAP_DATA_VIEW.setUint32(q, q, true);
1914
1942
  HEAP_DATA_VIEW.setUint32(q + 4, q, true);
1915
1943
  },
1916
1944
  queueInsertTail: function (h, q) {
1945
+ emnapiAWMT.ensureBufferFor(h + 4 + 4);
1946
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1917
1947
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1918
1948
  HEAP_DATA_VIEW.setUint32(q, h, true);
1919
1949
  var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
@@ -1923,6 +1953,7 @@ function createNapiModule(options) {
1923
1953
  HEAP_DATA_VIEW.setUint32(h + 4, q, true);
1924
1954
  },
1925
1955
  queueRemove: function (q) {
1956
+ emnapiAWMT.ensureBufferFor(q + 4 + 4);
1926
1957
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1927
1958
  var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
1928
1959
  var qnext = HEAP_DATA_VIEW.getUint32(q, true);
@@ -1930,6 +1961,7 @@ function createNapiModule(options) {
1930
1961
  HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
1931
1962
  },
1932
1963
  queueEmpty: function (q) {
1964
+ emnapiAWMT.ensureBufferFor(q + 4);
1933
1965
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1934
1966
  return q == HEAP_DATA_VIEW.getUint32(q, true);
1935
1967
  },
@@ -1944,7 +1976,7 @@ function createNapiModule(options) {
1944
1976
  });
1945
1977
  }
1946
1978
  emnapiCtx.increaseWaitingRequestCounter();
1947
- var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
1979
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
1948
1980
  Atomics.store(statusBuffer, 0, 0);
1949
1981
  var mutex = emnapiAWMT.getMutex();
1950
1982
  var cond = emnapiAWMT.getCond();
@@ -1957,6 +1989,7 @@ function createNapiModule(options) {
1957
1989
  mutex.unlock();
1958
1990
  throw err;
1959
1991
  }
1992
+ emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
1960
1993
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1961
1994
  if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
1962
1995
  cond.signal();
@@ -1966,6 +1999,7 @@ function createNapiModule(options) {
1966
1999
  cancelWork: function (work) {
1967
2000
  var cancelled = false;
1968
2001
  emnapiAWMT.getMutex().execute(function () {
2002
+ emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
1969
2003
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
1970
2004
  cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
1971
2005
  if (cancelled) {
@@ -1975,7 +2009,7 @@ function createNapiModule(options) {
1975
2009
  if (!cancelled) {
1976
2010
  return 9;
1977
2011
  }
1978
- if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
2012
+ if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
1979
2013
  return 9;
1980
2014
  }
1981
2015
  emnapiCtx.feature.setImmediate(function () {
@@ -2002,7 +2036,7 @@ function createNapiModule(options) {
2002
2036
  var resource = emnapiAWMT.getResource(work);
2003
2037
  var resource_value = emnapiCtx.refStore.get(resource).get();
2004
2038
  var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
2005
- var view = new DataView(wasmMemory.buffer);
2039
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
2006
2040
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
2007
2041
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
2008
2042
  emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
@@ -2069,7 +2103,7 @@ function createNapiModule(options) {
2069
2103
  if (!aw)
2070
2104
  return envObject.setLastError(9);
2071
2105
  aw >>>= 0;
2072
- new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
2106
+ new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
2073
2107
  var s = envObject.ensureHandleId(resourceObject);
2074
2108
  var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
2075
2109
  var resource_ = resourceRef.id;
@@ -2108,7 +2142,7 @@ function createNapiModule(options) {
2108
2142
  var resource = emnapiAWMT.getResource(work);
2109
2143
  emnapiCtx.refStore.get(resource).dispose();
2110
2144
  if (emnapiNodeBinding) {
2111
- var view = new DataView(wasmMemory.buffer);
2145
+ var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
2112
2146
  var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
2113
2147
  var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
2114
2148
  _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
@@ -2173,10 +2207,11 @@ function createNapiModule(options) {
2173
2207
  var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
2174
2208
  var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2175
2209
  for (;;) {
2210
+ emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
2176
2211
  while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
2177
- Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
2212
+ Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2178
2213
  cond.wait();
2179
- Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
2214
+ Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
2180
2215
  }
2181
2216
  var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
2182
2217
  if (q === exitMessageAddr) {
@@ -2188,7 +2223,7 @@ function createNapiModule(options) {
2188
2223
  emnapiAWMT.queueRemove(q);
2189
2224
  emnapiAWMT.queueInit(q);
2190
2225
  mutex.unlock();
2191
- var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
2226
+ var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
2192
2227
  if (Atomics.load(statusBuffer, 0) === 1) {
2193
2228
  abort('unreachable');
2194
2229
  }
@@ -2386,6 +2421,55 @@ function createNapiModule(options) {
2386
2421
  return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
2387
2422
  }
2388
2423
  };
2424
+ var emnapiExternalSAB = {
2425
+ registry: undefined,
2426
+ handleTable: new WeakMap(),
2427
+ init: function () {
2428
+ emnapiExternalSAB.handleTable = new WeakMap();
2429
+ emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
2430
+ ? new FinalizationRegistry(function (metaPtr) {
2431
+ emnapiExternalSAB.release(metaPtr);
2432
+ })
2433
+ : undefined;
2434
+ },
2435
+ allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
2436
+ var size = 4 * 6;
2437
+ var metaPtr = _malloc(size);
2438
+ if (!metaPtr)
2439
+ throw new Error('Out of memory');
2440
+ metaPtr >>>= 0;
2441
+ Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2442
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2443
+ HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
2444
+ HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
2445
+ HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
2446
+ HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
2447
+ HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
2448
+ return metaPtr;
2449
+ },
2450
+ readMeta: function (metaPtr) {
2451
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
2452
+ var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
2453
+ var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
2454
+ var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
2455
+ var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
2456
+ var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
2457
+ return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
2458
+ },
2459
+ release: function (metaPtr) {
2460
+ var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
2461
+ if (oldRefcount === 1) {
2462
+ var info = emnapiExternalSAB.readMeta(metaPtr);
2463
+ var finalize_cb = info.finalize_cb;
2464
+ if (finalize_cb) {
2465
+ var finalize_data = info.finalize_data;
2466
+ var finalize_hint = info.finalize_hint;
2467
+ (wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
2468
+ }
2469
+ _free(metaPtr);
2470
+ }
2471
+ }
2472
+ };
2389
2473
  var emnapiString = {
2390
2474
  utf8Decoder: undefined,
2391
2475
  utf16Decoder: undefined,
@@ -4257,16 +4341,95 @@ function createNapiModule(options) {
4257
4341
  HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
4258
4342
  return envObject.clearLastError();
4259
4343
  }
4344
+ function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
4345
+ if (!env)
4346
+ return 1;
4347
+ var envObject = emnapiCtx.envStore.get(env);
4348
+ envObject.checkGCAccess();
4349
+ if (!envObject.tryCatch.isEmpty())
4350
+ return envObject.setLastError(10);
4351
+ if (!envObject.canCallIntoJs())
4352
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4353
+ envObject.clearLastError();
4354
+ try {
4355
+ if (!sharedarraybuffer)
4356
+ return envObject.setLastError(1);
4357
+ if (!handle)
4358
+ return envObject.setLastError(1);
4359
+ handle >>>= 0;
4360
+ var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
4361
+ if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
4362
+ return envObject.setLastError(1);
4363
+ }
4364
+ var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
4365
+ if (metaPtr === undefined) {
4366
+ return envObject.setLastError(1);
4367
+ }
4368
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4369
+ HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
4370
+ return envObject.getReturnStatus();
4371
+ }
4372
+ catch (err) {
4373
+ envObject.tryCatch.setError(err);
4374
+ return envObject.setLastError(10);
4375
+ }
4376
+ }
4377
+ function emnapi_acquire_external_sharedarraybuffer(handle) {
4378
+ handle >>>= 0;
4379
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4380
+ }
4381
+ function emnapi_release_external_sharedarraybuffer(handle) {
4382
+ handle >>>= 0;
4383
+ emnapiExternalSAB.release(handle);
4384
+ }
4385
+ function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
4386
+ if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
4387
+ throw new TypeError('Expected a SharedArrayBuffer');
4388
+ }
4389
+ if (!emnapiExternalSAB.registry) {
4390
+ throw new Error('FinalizationRegistry is not supported in this environment');
4391
+ }
4392
+ handle >>>= 0;
4393
+ var meta = emnapiExternalSAB.readMeta(handle);
4394
+ var external_data = meta.external_data;
4395
+ external_data >>>= 0;
4396
+ if (sab == null) {
4397
+ sab = new SharedArrayBuffer(meta.byte_length);
4398
+ new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
4399
+ }
4400
+ else {
4401
+ if (emnapiExternalSAB.handleTable.has(sab)) {
4402
+ return sab;
4403
+ }
4404
+ }
4405
+ Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
4406
+ if (!emnapiExternalMemory.table.has(sab)) {
4407
+ if (external_data) {
4408
+ emnapiExternalMemory.table.set(sab, {
4409
+ address: external_data,
4410
+ ownership: 1,
4411
+ runtimeAllocated: 0
4412
+ });
4413
+ }
4414
+ }
4415
+ emnapiExternalSAB.handleTable.set(sab, handle);
4416
+ emnapiExternalSAB.registry.register(sab, handle);
4417
+ return sab;
4418
+ }
4260
4419
  var emnapiMod = Object.freeze({
4261
4420
  __proto__: null,
4421
+ $emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
4262
4422
  $emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
4263
4423
  $emnapiSyncMemory: $emnapiSyncMemory,
4424
+ emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
4264
4425
  emnapi_create_memory_view: emnapi_create_memory_view,
4426
+ emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
4265
4427
  emnapi_get_memory_address: emnapi_get_memory_address,
4266
4428
  emnapi_get_runtime_version: emnapi_get_runtime_version,
4267
4429
  emnapi_is_node_binding_available: emnapi_is_node_binding_available,
4268
4430
  emnapi_is_support_bigint: emnapi_is_support_bigint,
4269
4431
  emnapi_is_support_weakref: emnapi_is_support_weakref,
4432
+ emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
4270
4433
  emnapi_sync_memory: emnapi_sync_memory
4271
4434
  });
4272
4435
  function napi_create_array(env, result) {
@@ -4485,6 +4648,60 @@ function createNapiModule(options) {
4485
4648
  return envObject.setLastError(10);
4486
4649
  }
4487
4650
  }
4651
+ function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
4652
+ var value;
4653
+ if (!env)
4654
+ return 1;
4655
+ var envObject = emnapiCtx.envStore.get(env);
4656
+ envObject.checkGCAccess();
4657
+ if (!envObject.tryCatch.isEmpty())
4658
+ return envObject.setLastError(10);
4659
+ if (!envObject.canCallIntoJs())
4660
+ return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
4661
+ envObject.clearLastError();
4662
+ try {
4663
+ if (!result)
4664
+ return envObject.setLastError(1);
4665
+ byte_length >>>= 0;
4666
+ external_data >>>= 0;
4667
+ result >>>= 0;
4668
+ byte_length = byte_length >>> 0;
4669
+ if (!external_data) {
4670
+ byte_length = 0;
4671
+ }
4672
+ if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
4673
+ throw new RangeError('Memory out of range');
4674
+ }
4675
+ if (!emnapiExternalSAB.registry && finalize_cb) {
4676
+ throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
4677
+ }
4678
+ var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
4679
+ if (byte_length !== 0) {
4680
+ var u8arr = new Uint8Array(sharedArrayBuffer);
4681
+ u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
4682
+ emnapiExternalMemory.table.set(sharedArrayBuffer, {
4683
+ address: external_data,
4684
+ ownership: 1,
4685
+ runtimeAllocated: 0
4686
+ });
4687
+ }
4688
+ value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
4689
+ if (finalize_cb) {
4690
+ finalize_cb >>>= 0;
4691
+ finalize_hint >>>= 0;
4692
+ var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
4693
+ emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
4694
+ emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
4695
+ }
4696
+ var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
4697
+ HEAP_DATA_VIEW.setUint32(result, value, true);
4698
+ return envObject.getReturnStatus();
4699
+ }
4700
+ catch (err) {
4701
+ envObject.tryCatch.setError(err);
4702
+ return envObject.setLastError(10);
4703
+ }
4704
+ }
4488
4705
  function napi_create_object(env, result) {
4489
4706
  if (!env)
4490
4707
  return 1;
@@ -4584,9 +4801,6 @@ function createNapiModule(options) {
4584
4801
  if (!result)
4585
4802
  return envObject.setLastError(1);
4586
4803
  var handle = emnapiCtx.handleStore.get(arraybuffer);
4587
- if (!handle.isArrayBuffer()) {
4588
- return envObject.setLastError(1);
4589
- }
4590
4804
  var buffer = handle.value;
4591
4805
  byte_offset >>>= 0;
4592
4806
  length >>>= 0;
@@ -4626,36 +4840,41 @@ function createNapiModule(options) {
4626
4840
  HEAP_DATA_VIEW.setUint32(result, value, true);
4627
4841
  return envObject.getReturnStatus();
4628
4842
  };
4629
- switch (type) {
4630
- case 0:
4631
- return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4632
- case 1:
4633
- return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4634
- case 2:
4635
- return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4636
- case 3:
4637
- return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4638
- case 4:
4639
- return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4640
- case 5:
4641
- return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4642
- case 6:
4643
- return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4644
- case 7:
4645
- return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4646
- case 8:
4647
- return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4648
- case 9:
4649
- return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4650
- case 10:
4651
- return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4652
- case 11:
4653
- if (typeof Float16Array !== 'function') {
4843
+ if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
4844
+ switch (type) {
4845
+ case 0:
4846
+ return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
4847
+ case 1:
4848
+ return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
4849
+ case 2:
4850
+ return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
4851
+ case 3:
4852
+ return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
4853
+ case 4:
4854
+ return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
4855
+ case 5:
4856
+ return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
4857
+ case 6:
4858
+ return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
4859
+ case 7:
4860
+ return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
4861
+ case 8:
4862
+ return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
4863
+ case 9:
4864
+ return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
4865
+ case 10:
4866
+ return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
4867
+ case 11:
4868
+ if (typeof Float16Array !== 'function') {
4869
+ return envObject.setLastError(1);
4870
+ }
4871
+ return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
4872
+ default:
4654
4873
  return envObject.setLastError(1);
4655
- }
4656
- return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
4657
- default:
4658
- return envObject.setLastError(1);
4874
+ }
4875
+ }
4876
+ else {
4877
+ return envObject.setLastError(1);
4659
4878
  }
4660
4879
  }
4661
4880
  catch (err) {
@@ -4911,6 +5130,7 @@ function createNapiModule(options) {
4911
5130
  napi_create_symbol: napi_create_symbol,
4912
5131
  napi_create_typedarray: napi_create_typedarray,
4913
5132
  node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
5133
+ node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
4914
5134
  node_api_create_object_with_properties: node_api_create_object_with_properties,
4915
5135
  node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
4916
5136
  node_api_symbol_for: node_api_symbol_for
@@ -7110,11 +7330,13 @@ function createNapiModule(options) {
7110
7330
  });
7111
7331
  emnapiAWST.init();
7112
7332
  emnapiExternalMemory.init();
7333
+ emnapiExternalSAB.init();
7113
7334
  emnapiString.init();
7114
7335
  emnapiTSFN.init();
7115
7336
  PThread.init();
7116
7337
  napiModule.emnapi.syncMemory = $emnapiSyncMemory;
7117
7338
  napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
7339
+ napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
7118
7340
  function addImports(mod) {
7119
7341
  var keys = Object.keys(mod);
7120
7342
  for (var i = 0; i < keys.length; ++i) {
@@ -7242,9 +7464,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
7242
7464
  }
7243
7465
  const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
7244
7466
  if (wasi && !exportMemory) {
7245
- const exports$1 = Object.create(null);
7246
- Object.assign(exports$1, originalExports, { memory });
7247
- instance = { exports: exports$1 };
7467
+ const exports = Object.create(null);
7468
+ Object.assign(exports, originalExports, { memory });
7469
+ instance = { exports };
7248
7470
  }
7249
7471
  const module = source.module;
7250
7472
  if (wasi) {
@@ -7380,7 +7602,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
7380
7602
  }
7381
7603
  }
7382
7604
 
7383
- const version = "1.10.0";
7605
+ const version = "1.11.1";
7384
7606
 
7385
7607
  exports.MessageHandler = MessageHandler;
7386
7608
  exports.createNapiModule = createNapiModule;