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