@isolated-vm/experimental 0.0.8 → 0.0.10
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.
- package/addon/CMakeLists.txt +1 -1
- package/addon/handle/local_of.cc +150 -0
- package/addon/handle/types.cc +8 -137
- package/addon/handle/value_of.cc +82 -27
- package/addon/resolve.js +2 -2
- package/addon/support/callback_info.cc +5 -5
- package/addon/support/callback_storage.cc +2 -2
- package/addon/support/free_function.cc +2 -2
- package/addon/support/initialize.cc +2 -2
- package/addon/transfer/accept.cc +84 -64
- package/addon/transfer/visit.cc +90 -47
- package/addon/value/array.cc +6 -6
- package/addon/value/array_buffer.cc +27 -18
- package/addon/value/function.cc +5 -5
- package/addon/value/function.h.cc +5 -5
- package/addon/value/object.cc +3 -3
- package/addon/value/primitive.cc +36 -36
- package/addon/value/prototype.cc +7 -7
- package/addon/value/record.cc +20 -20
- package/addon/value/value.cc +1 -1
- package/addon/value/vector.cc +9 -9
- package/backend/backend.cts +7 -0
- package/backend/backend.d.cts +87 -0
- package/backend/host.cts +41 -0
- package/backend/require.cts +17 -0
- package/dist/backend/backend.cjs +9 -0
- package/dist/backend/backend.cjs.map +1 -0
- package/dist/backend/backend.d.cts +2 -0
- package/dist/backend/backend.d.cts.map +1 -0
- package/dist/backend/host.cjs +41 -0
- package/dist/backend/host.cjs.map +1 -0
- package/dist/backend/host.d.cts +2 -0
- package/dist/backend/host.d.cts.map +1 -0
- package/dist/backend/require.cjs +19 -0
- package/dist/backend/require.cjs.map +1 -0
- package/dist/backend/require.d.cts +2 -0
- package/dist/backend/require.d.cts.map +1 -0
- package/dist/frontend/agent.d.ts +2 -1
- package/dist/frontend/agent.d.ts.map +1 -1
- package/dist/frontend/agent.js +1 -1
- package/dist/frontend/agent.js.map +1 -1
- package/dist/frontend/module.d.ts +2 -2
- package/dist/frontend/module.d.ts.map +1 -1
- package/dist/frontend/module.js +1 -1
- package/dist/frontend/module.js.map +1 -1
- package/dist/frontend/realm.d.ts +2 -2
- package/dist/frontend/realm.d.ts.map +1 -1
- package/dist/frontend/realm.js +2 -2
- package/dist/frontend/realm.js.map +1 -1
- package/dist/frontend/reference.d.ts +4 -4
- package/dist/frontend/reference.d.ts.map +1 -1
- package/dist/frontend/script.d.ts +1 -1
- package/dist/frontend/script.d.ts.map +1 -1
- package/dist/frontend/script.js +1 -1
- package/dist/frontend/script.js.map +1 -1
- package/dist/isolated-vm.d.ts +1 -1
- package/dist/isolated-vm.d.ts.map +1 -1
- package/dist/isolated-vm.js +1 -1
- package/dist/isolated-vm.js.map +1 -1
- package/dist/test/00.agent/00.prerequisites.d.ts +2 -0
- package/dist/test/00.agent/00.prerequisites.d.ts.map +1 -0
- package/dist/test/00.agent/00.prerequisites.js +25 -0
- package/dist/test/00.agent/00.prerequisites.js.map +1 -0
- package/dist/test/00.agent/10.clock.d.ts +2 -0
- package/dist/test/00.agent/10.clock.d.ts.map +1 -0
- package/dist/test/{00.datetime.js → 00.agent/10.clock.js} +8 -8
- package/dist/test/00.agent/10.clock.js.map +1 -0
- package/dist/test/00.agent/10.random.d.ts +2 -0
- package/dist/test/00.agent/10.random.d.ts.map +1 -0
- package/dist/test/{00.random.js → 00.agent/10.random.js} +4 -4
- package/dist/test/00.agent/10.random.js.map +1 -0
- package/dist/test/10.transfer/00.primitives.d.ts +2 -0
- package/dist/test/10.transfer/00.primitives.d.ts.map +1 -0
- package/dist/test/10.transfer/00.primitives.js +54 -0
- package/dist/test/10.transfer/00.primitives.js.map +1 -0
- package/dist/test/10.transfer/10.array_buffer.d.ts +2 -0
- package/dist/test/10.transfer/10.array_buffer.d.ts.map +1 -0
- package/dist/test/{20.array_buffer.js → 10.transfer/10.array_buffer.js} +90 -84
- package/dist/test/10.transfer/10.array_buffer.js.map +1 -0
- package/dist/test/10.transfer/50.interceptors.d.ts +2 -0
- package/dist/test/10.transfer/50.interceptors.d.ts.map +1 -0
- package/dist/test/10.transfer/50.interceptors.js +108 -0
- package/dist/test/10.transfer/50.interceptors.js.map +1 -0
- package/dist/test/10.transfer/90.regressions.d.ts +2 -0
- package/dist/test/10.transfer/90.regressions.d.ts.map +1 -0
- package/dist/test/10.transfer/90.regressions.js +72 -0
- package/dist/test/10.transfer/90.regressions.js.map +1 -0
- package/dist/test/20.intrinsics/00.script.d.ts +2 -0
- package/dist/test/20.intrinsics/00.script.d.ts.map +1 -0
- package/dist/test/{10.script.js → 20.intrinsics/00.script.js} +7 -7
- package/dist/test/20.intrinsics/00.script.js.map +1 -0
- package/dist/test/20.intrinsics/05.global.d.ts.map +1 -0
- package/dist/test/{05.global.js → 20.intrinsics/05.global.js} +5 -5
- package/dist/test/20.intrinsics/05.global.js.map +1 -0
- package/dist/test/20.intrinsics/10.reference.d.ts.map +1 -0
- package/dist/test/{10.reference.js → 20.intrinsics/10.reference.js} +15 -15
- package/dist/test/20.intrinsics/10.reference.js.map +1 -0
- package/dist/test/20.intrinsics/20.module.d.ts +2 -0
- package/dist/test/20.intrinsics/20.module.d.ts.map +1 -0
- package/dist/test/{10.module.js → 20.intrinsics/20.module.js} +18 -18
- package/dist/test/20.intrinsics/20.module.js.map +1 -0
- package/dist/test/50.features/50.timers.d.ts.map +1 -0
- package/dist/test/{50.timers.js → 50.features/50.timers.js} +8 -8
- package/dist/test/50.features/50.timers.js.map +1 -0
- package/dist/test/50.features/90.i18n.d.ts +2 -0
- package/dist/test/50.features/90.i18n.d.ts.map +1 -0
- package/dist/test/{99.i18n.js → 50.features/90.i18n.js} +6 -6
- package/dist/test/50.features/90.i18n.js.map +1 -0
- package/dist/test/90.isolation/00.dispose.d.ts +1 -1
- package/dist/test/90.isolation/00.dispose.d.ts.map +1 -1
- package/dist/test/90.isolation/00.dispose.js +23 -5
- package/dist/test/90.isolation/00.dispose.js.map +1 -1
- package/dist/test/90.isolation/10.memory.d.ts +2 -0
- package/dist/test/90.isolation/10.memory.d.ts.map +1 -0
- package/dist/test/90.isolation/10.memory.js +31 -0
- package/dist/test/90.isolation/10.memory.js.map +1 -0
- package/dist/test/fixtures.js +2 -3
- package/dist/test/fixtures.js.map +1 -1
- package/dist/test/glob.d.ts +2 -0
- package/dist/test/glob.d.ts.map +1 -0
- package/dist/test/glob.js +11 -0
- package/dist/test/glob.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility/completion.d.ts +2 -1
- package/dist/utility/completion.d.ts.map +1 -1
- package/dist/utility/completion.js +4 -0
- package/dist/utility/completion.js.map +1 -1
- package/frontend/agent.ts +3 -2
- package/frontend/module.ts +2 -2
- package/frontend/realm.ts +2 -2
- package/frontend/reference.ts +4 -4
- package/frontend/script.ts +1 -1
- package/isolated-vm.ts +1 -1
- package/package.json +29 -17
- package/test/00.agent/00.prerequisites.ts +12 -0
- package/test/{00.datetime.ts → 00.agent/10.clock.ts} +7 -7
- package/test/{00.random.ts → 00.agent/10.random.ts} +4 -4
- package/test/10.transfer/00.primitives.ts +47 -0
- package/test/{20.array_buffer.ts → 10.transfer/10.array_buffer.ts} +49 -43
- package/test/10.transfer/50.interceptors.ts +63 -0
- package/test/10.transfer/90.regressions.ts +38 -0
- package/test/{10.script.ts → 20.intrinsics/00.script.ts} +6 -6
- package/test/{05.global.ts → 20.intrinsics/05.global.ts} +5 -5
- package/test/{10.reference.ts → 20.intrinsics/10.reference.ts} +18 -17
- package/test/{10.module.ts → 20.intrinsics/20.module.ts} +17 -17
- package/test/{50.timers.ts → 50.features/50.timers.ts} +8 -8
- package/test/{99.i18n.ts → 50.features/90.i18n.ts} +5 -5
- package/test/90.isolation/00.dispose.ts +12 -5
- package/test/90.isolation/10.memory.ts +19 -0
- package/test/fixtures.ts +5 -5
- package/test/glob.ts +11 -0
- package/utility/completion.ts +6 -1
- package/addon/handle/bound_value.cc +0 -45
- package/backend/backend_v8.d.ts +0 -89
- package/backend/backend_v8.js +0 -18
- package/backend/specifier.ts +0 -20
- package/dist/backend/specifier.d.ts +0 -3
- package/dist/backend/specifier.d.ts.map +0 -1
- package/dist/backend/specifier.js +0 -21
- package/dist/backend/specifier.js.map +0 -1
- package/dist/test/00.datetime.d.ts +0 -2
- package/dist/test/00.datetime.d.ts.map +0 -1
- package/dist/test/00.datetime.js.map +0 -1
- package/dist/test/00.random.d.ts +0 -2
- package/dist/test/00.random.d.ts.map +0 -1
- package/dist/test/00.random.js.map +0 -1
- package/dist/test/00.transfer.d.ts +0 -2
- package/dist/test/00.transfer.d.ts.map +0 -1
- package/dist/test/00.transfer.js +0 -166
- package/dist/test/00.transfer.js.map +0 -1
- package/dist/test/05.global.d.ts.map +0 -1
- package/dist/test/05.global.js.map +0 -1
- package/dist/test/10.module.d.ts +0 -2
- package/dist/test/10.module.d.ts.map +0 -1
- package/dist/test/10.module.js.map +0 -1
- package/dist/test/10.reference.d.ts.map +0 -1
- package/dist/test/10.reference.js.map +0 -1
- package/dist/test/10.script.d.ts +0 -2
- package/dist/test/10.script.d.ts.map +0 -1
- package/dist/test/10.script.js.map +0 -1
- package/dist/test/20.array_buffer.d.ts +0 -2
- package/dist/test/20.array_buffer.d.ts.map +0 -1
- package/dist/test/20.array_buffer.js.map +0 -1
- package/dist/test/50.timers.d.ts.map +0 -1
- package/dist/test/50.timers.js.map +0 -1
- package/dist/test/99.i18n.d.ts +0 -2
- package/dist/test/99.i18n.d.ts.map +0 -1
- package/dist/test/99.i18n.js.map +0 -1
- package/test/00.transfer.ts +0 -132
- /package/dist/test/{05.global.d.ts → 20.intrinsics/05.global.d.ts} +0 -0
- /package/dist/test/{10.reference.d.ts → 20.intrinsics/10.reference.d.ts} +0 -0
- /package/dist/test/{50.timers.d.ts → 50.features/50.timers.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"50.timers.js","sourceRoot":"","sources":["../../test/50.timers.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACrL,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;;;QAC9C,MAAY,KAAK,kCAAG,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,gBAAgB,CAAC;YACrC,+BAA+B,EAAE,MAAM,KAAK,CAAC,gBAAgB,CAC5D,GAAG,EAAE,CAAC,CAAC;gBACN,OAAO,EAAE,EAAC,WAAW,EAAE,EAAE;oBACxB,KAAK,KAAK;wBACT,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC,EAAE,CAAC;gBACL,CAAC;aACD,CAAC,EACF,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;YAC7C,aAAa,EAAE,MAAM,KAAK,CAAC,gBAAgB,CAC1C,GAAG,EAAE,CAAC,CAAC;gBACN,OAAO,EAAE,CAAC,OAAgB,EAAE,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC9D,CAAC,EACF,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;SAC3B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,mBAAmB,CACjC,UAAU,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,EAC9C,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC;;;;EAIvD,CAAC,CAAC,CAAC;QACJ,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;CAC/C,CAAC,CAAC"}
|
package/dist/test/99.i18n.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"99.i18n.d.ts","sourceRoot":"","sources":["../../test/99.i18n.ts"],"names":[],"mappings":""}
|
package/dist/test/99.i18n.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"99.i18n.js","sourceRoot":"","sources":["../../test/99.i18n.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;;;QACrC,MAAY,KAAK,kCAAG,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;CACzB,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;;;QACrC,MAAY,KAAK,kCAAG,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,CACtD,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC,CAAC,CAAC;QACnG,aAAa;QACb,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC,CAAC;;;;;;;;;;;CAC/E,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;;;QACpC,MAAY,KAAK,kCAAG,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACxG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;;;;;;;;;;;CACrC,CAAC,CAAC"}
|
package/test/00.transfer.ts
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import * as assert from "node:assert/strict";
|
|
2
|
-
import { describe, test } from "node:test";
|
|
3
|
-
import * as ivm from "@isolated-vm/experimental";
|
|
4
|
-
import { unsafeEvalAsStringInRealm } from "./fixtures.js";
|
|
5
|
-
|
|
6
|
-
// @ts-expect-error
|
|
7
|
-
const hostSupportsSharedArraySupport = process.isBun === undefined;
|
|
8
|
-
|
|
9
|
-
async function check(agent: ivm.Agent, realm: ivm.Realm, fn: () => unknown) {
|
|
10
|
-
const result = await unsafeEvalAsStringInRealm(agent, realm, fn);
|
|
11
|
-
assert.deepStrictEqual(result, fn());
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
await test("transfer types", async () => {
|
|
15
|
-
await using agent = await ivm.Agent.create();
|
|
16
|
-
const realm = await agent.createRealm();
|
|
17
|
-
|
|
18
|
-
// null, undefined, bool
|
|
19
|
-
await check(agent, realm, () => null);
|
|
20
|
-
await check(agent, realm, () => undefined);
|
|
21
|
-
await check(agent, realm, () => true);
|
|
22
|
-
await check(agent, realm, () => false);
|
|
23
|
-
|
|
24
|
-
// boolean
|
|
25
|
-
await check(agent, realm, () => true);
|
|
26
|
-
await check(agent, realm, () => false);
|
|
27
|
-
|
|
28
|
-
// string
|
|
29
|
-
await check(agent, realm, () => "hello world");
|
|
30
|
-
await check(agent, realm, () => "\u{10ffff}");
|
|
31
|
-
|
|
32
|
-
// number
|
|
33
|
-
await check(agent, realm, () => 0);
|
|
34
|
-
await check(agent, realm, () => Number.MAX_SAFE_INTEGER);
|
|
35
|
-
await check(agent, realm, () => Number.MAX_SAFE_INTEGER + 1);
|
|
36
|
-
await check(agent, realm, () => Number.MIN_SAFE_INTEGER);
|
|
37
|
-
await check(agent, realm, () => Number.MIN_SAFE_INTEGER - 1);
|
|
38
|
-
await check(agent, realm, () => Math.PI);
|
|
39
|
-
|
|
40
|
-
// bigint
|
|
41
|
-
await check(agent, realm, () => 0n);
|
|
42
|
-
await check(agent, realm, () => 9_223_372_036_854_775_807n); // int64 max
|
|
43
|
-
await check(agent, realm, () => 9_223_372_036_854_775_808n); // int64 max + 1
|
|
44
|
-
await check(agent, realm, () => -9_223_372_036_854_775_808n); // int64 min
|
|
45
|
-
await check(agent, realm, () => -9_223_372_036_854_775_809n); // int64 min - 1
|
|
46
|
-
await check(agent, realm, () => 18_446_744_073_709_551_615n); // uint64 max
|
|
47
|
-
await check(agent, realm, () => 18_446_744_073_709_551_616n); // uint64 max + 1
|
|
48
|
-
await check(agent, realm, () => 502_360_950_888_298_027_355_518_043_327_124_471_675_959_709_617_316_205_938_938_264_006_428_765_255_489n); // 256 bit number
|
|
49
|
-
await check(agent, realm, () => -502_360_950_888_298_027_355_518_043_327_124_471_675_959_709_617_316_205_938_938_264_006_428_765_255_490n); // 256 bit negative
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// None of these work!
|
|
53
|
-
// await describe("interceptors", async () => {
|
|
54
|
-
// await using agent = await ivm.Agent.create();
|
|
55
|
-
// const realm = await agent.createRealm();
|
|
56
|
-
|
|
57
|
-
// await test("named proxy", async () => {
|
|
58
|
-
// const result = await unsafeEvalAsStringInRealm(agent, realm, () => {
|
|
59
|
-
// const proxy = new Proxy({ name: "value" }, {
|
|
60
|
-
// get() { throw new Error("interceptor invoked"); },
|
|
61
|
-
// });
|
|
62
|
-
// return proxy;
|
|
63
|
-
// });
|
|
64
|
-
// assert.deepStrictEqual(result, { name: undefined });
|
|
65
|
-
// });
|
|
66
|
-
|
|
67
|
-
// await test("indexed proxy", async () => {
|
|
68
|
-
// const result = await unsafeEvalAsStringInRealm(agent, realm, () => {
|
|
69
|
-
// const proxy = new Proxy([ 0, 1 ], {
|
|
70
|
-
// get() { throw new Error("interceptor invoked"); },
|
|
71
|
-
// });
|
|
72
|
-
// return proxy;
|
|
73
|
-
// });
|
|
74
|
-
// assert.deepStrictEqual(result, [ undefined, undefined ]);
|
|
75
|
-
// });
|
|
76
|
-
|
|
77
|
-
// await describe("named getter", async () => {
|
|
78
|
-
// const result = await unsafeEvalAsStringInRealm(agent, realm, () => {
|
|
79
|
-
// const object = { name: "value" };
|
|
80
|
-
// Object.defineProperty(object, "name", {
|
|
81
|
-
// enumerable: true,
|
|
82
|
-
// get() { throw new Error("interceptor invoked"); },
|
|
83
|
-
// });
|
|
84
|
-
// return object;
|
|
85
|
-
// });
|
|
86
|
-
// assert.deepStrictEqual(result, { name: undefined });
|
|
87
|
-
// });
|
|
88
|
-
|
|
89
|
-
// await describe("indexed getter", async () => {
|
|
90
|
-
// const result = await unsafeEvalAsStringInRealm(agent, realm, () => {
|
|
91
|
-
// const array = [ 0, 1 ];
|
|
92
|
-
// Object.defineProperty(array, 0, {
|
|
93
|
-
// enumerable: true,
|
|
94
|
-
// get() { throw new Error("interceptor invoked"); },
|
|
95
|
-
// });
|
|
96
|
-
// return array;
|
|
97
|
-
// });
|
|
98
|
-
// assert.deepStrictEqual(result, [ undefined, 1 ]);
|
|
99
|
-
// });
|
|
100
|
-
// });
|
|
101
|
-
|
|
102
|
-
await describe("regressions", async () => {
|
|
103
|
-
await test("numeric references", async () => {
|
|
104
|
-
await using agent = await ivm.Agent.create();
|
|
105
|
-
const realm = await agent.createRealm();
|
|
106
|
-
const global = await realm.acquireGlobalObject();
|
|
107
|
-
// doubles are stored as references in `value_t`, because they are bigger than 32-bit. there was
|
|
108
|
-
// a failure with more than one of them in the same transfer operation.
|
|
109
|
-
await global.set("xx", { zero: 0.1, one: 0.2 });
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
await test("numeric indices", async () => {
|
|
113
|
-
await using agent = await ivm.Agent.create();
|
|
114
|
-
const realm = await agent.createRealm();
|
|
115
|
-
const global = await realm.acquireGlobalObject();
|
|
116
|
-
// numeric array indices broke as part of a double to int32_t change.
|
|
117
|
-
await global.set("xx", [ false, true ]);
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
if (hostSupportsSharedArraySupport) {
|
|
121
|
-
await test("seen index type", async () => {
|
|
122
|
-
await using agent = await ivm.Agent.create();
|
|
123
|
-
const realm = await agent.createRealm();
|
|
124
|
-
const global = await realm.acquireGlobalObject();
|
|
125
|
-
const payload = {
|
|
126
|
-
number: 0,
|
|
127
|
-
buffer: [ new Uint8Array(new SharedArrayBuffer(0)) ],
|
|
128
|
-
};
|
|
129
|
-
await global.set("xx", [ payload ]);
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|