@poe-platform/safe-js 0.1.319 → 0.1.321

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.
@@ -6886,14 +6886,14 @@ var createValuesIterator = Object.getOwnPropertyDescriptor(typedArrayPrototype,
6886
6886
  var bufferLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
6887
6887
  var bufferResizable = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "resizable")?.get;
6888
6888
  var float32ViewLayouts = /* @__PURE__ */ new WeakMap();
6889
- var resizeBuffer = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "resize").value;
6889
+ var resizeBuffer = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "resize")?.value;
6890
6890
  function restoreFloat32View(buffer, byteOffset, length, budget) {
6891
6891
  const originalLength = arrayBufferLength(buffer);
6892
6892
  const required = byteOffset + (length ?? 0) * 4;
6893
6893
  const options = arrayBufferOptions(buffer);
6894
6894
  const grow = required > originalLength;
6895
6895
  if (grow) {
6896
- if (options === void 0 || required > options.maxByteLength)
6896
+ if (resizeBuffer === void 0 || options === void 0 || required > options.maxByteLength)
6897
6897
  throw new RangeError("Float32Array layout exceeds backing capacity.");
6898
6898
  budget?.allocateArrayLength(Math.ceil(required / 4));
6899
6899
  budget?.provisionDataUsage(required - originalLength)();
@@ -25122,7 +25122,7 @@ function createBigIntGlobal(budget) {
25122
25122
  }
25123
25123
 
25124
25124
  // packages/safe-js/src/interp/globals/array-buffer.ts
25125
- var resizeBuffer2 = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "resize").value;
25125
+ var resizeBuffer2 = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "resize")?.value;
25126
25126
  function createArrayBufferGlobal(budget) {
25127
25127
  const prototype = /* @__PURE__ */ Object.create(null);
25128
25128
  const constructor = createSandboxClosure({
@@ -25163,6 +25163,8 @@ function createArrayBufferGlobal(budget) {
25163
25163
  }
25164
25164
  const target = context?.newTarget ?? constructor;
25165
25165
  selected = await bridge.getProperty(target, "prototype");
25166
+ if (maxByteLength !== void 0 && resizeBuffer2 === void 0)
25167
+ throw new TypeError("Resizable ArrayBuffer requires host runtime support.");
25166
25168
  budget.allocateArrayLength(maxByteLength ?? length);
25167
25169
  budget.provisionDataUsage(length + 1)();
25168
25170
  const result = Reflect.construct(ArrayBuffer, [length, maxByteLength === void 0 ? void 0 : { maxByteLength }]);
@@ -25190,6 +25192,79 @@ function createArrayBufferGlobal(budget) {
25190
25192
  [Symbol.toStringTag]: { value: "ArrayBuffer", configurable: true }
25191
25193
  });
25192
25194
  const getters = [];
25195
+ const species = createSandboxClosure({
25196
+ guest: true,
25197
+ sandbox: true,
25198
+ name: "get [Symbol.species]",
25199
+ length: 0,
25200
+ call: (_args, context) => context?.thisValue
25201
+ });
25202
+ getters.push(species);
25203
+ Object.defineProperty(materializeFunctionProperties(constructor), Symbol.species, {
25204
+ get: accessorAdapter(species, "get"),
25205
+ configurable: true
25206
+ });
25207
+ Object.defineProperty(prototype, "slice", {
25208
+ writable: true,
25209
+ configurable: true,
25210
+ value: createSandboxClosure({
25211
+ guest: true,
25212
+ sandbox: true,
25213
+ name: "slice",
25214
+ length: 2,
25215
+ call: async (args, context) => {
25216
+ const receiver = context?.thisValue;
25217
+ if (!isSandboxArrayBuffer(receiver)) throw new TypeError("ArrayBuffer slice requires a buffer receiver.");
25218
+ new Uint8Array(receiver, 0, 0);
25219
+ const length = arrayBufferLength(receiver);
25220
+ let candidate;
25221
+ let result;
25222
+ const bridge = {
25223
+ ...context,
25224
+ stack: context?.stack ?? [],
25225
+ thisValue: receiver,
25226
+ getProperty: context?.getProperty ?? ((value, key) => {
25227
+ const descriptor = getSandboxPropertyDescriptor(value, key, budget);
25228
+ return descriptor === void 0 ? getSandboxDataProperty(value, key, budget) : readPropertyDescriptor(descriptor, value, bridge);
25229
+ }),
25230
+ invokeClosure: context?.invokeClosure ?? ((callee, values, thisValue, construct) => invokeBuiltinClosure(callee, values, budget, context, thisValue, construct))
25231
+ };
25232
+ const release = retainValues(budget, () => [receiver, candidate, result, ...args]);
25233
+ const clamp = (number) => {
25234
+ const integer2 = Number.isNaN(number) ? 0 : Math.trunc(number);
25235
+ return integer2 < 0 ? Math.max(length + integer2, 0) : Math.min(integer2, length);
25236
+ };
25237
+ try {
25238
+ const start = clamp(await sandboxNumber(args[0], budget, bridge));
25239
+ const end = args[1] === void 0 ? length : clamp(await sandboxNumber(args[1], budget, bridge));
25240
+ const size = Math.max(end - start, 0);
25241
+ candidate = await bridge.getProperty(receiver, "constructor");
25242
+ if (candidate !== void 0) {
25243
+ if (candidate === null || typeof candidate !== "object")
25244
+ throw new TypeError("ArrayBuffer constructor must be an object.");
25245
+ candidate = await bridge.getProperty(candidate, Symbol.species);
25246
+ if (candidate !== void 0 && candidate !== null && (!isSandboxClosure(candidate) || candidate.construct === void 0))
25247
+ throw new TypeError("ArrayBuffer species must be a constructor.");
25248
+ }
25249
+ if (candidate === void 0 || candidate === null || candidate === constructor) {
25250
+ budget.allocateArrayLength(size);
25251
+ budget.provisionDataUsage(size + 1)();
25252
+ result = new ArrayBuffer(size);
25253
+ setSandboxPrototype(result, prototype, budget);
25254
+ } else result = await invokeBuiltinClosure(candidate, [size], budget, bridge, void 0, true);
25255
+ if (!isSandboxArrayBuffer(result) || result === receiver || arrayBufferLength(result) < size)
25256
+ throw new TypeError("ArrayBuffer species must return distinct sufficient buffer storage.");
25257
+ new Uint8Array(result, 0, 0);
25258
+ new Uint8Array(receiver, 0, 0);
25259
+ const count = Math.min(size, Math.max(arrayBufferLength(receiver) - start, 0));
25260
+ if (count > 0) new Uint8Array(result, 0, count).set(new Uint8Array(receiver, start, count));
25261
+ return result;
25262
+ } finally {
25263
+ release();
25264
+ }
25265
+ }
25266
+ })
25267
+ });
25193
25268
  Object.defineProperty(prototype, "resize", {
25194
25269
  writable: true,
25195
25270
  configurable: true,
@@ -25200,7 +25275,7 @@ function createArrayBufferGlobal(budget) {
25200
25275
  length: 1,
25201
25276
  call: async (args, context) => {
25202
25277
  const receiver = context?.thisValue;
25203
- if (!isSandboxArrayBuffer(receiver) || arrayBufferOptions(receiver) === void 0)
25278
+ if (resizeBuffer2 === void 0 || !isSandboxArrayBuffer(receiver) || arrayBufferOptions(receiver) === void 0)
25204
25279
  throw new TypeError("ArrayBuffer resize requires a resizable buffer receiver.");
25205
25280
  const release = retainValues(budget, () => [receiver, ...args]);
25206
25281
  try {
@@ -42265,4 +42340,4 @@ export {
42265
42340
  FileSnapshotBackend,
42266
42341
  run
42267
42342
  };
42268
- //# sourceMappingURL=chunk-CYVI4ZUK.js.map
42343
+ //# sourceMappingURL=chunk-6SSHJVLI.js.map