@isolated-vm/experimental 0.0.9 → 0.0.11
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 +149 -0
- package/addon/handle/types.cc +8 -137
- package/addon/handle/value_of.cc +82 -27
- package/addon/support/callback_info.cc +5 -5
- package/addon/support/callback_storage.cc +2 -2
- package/addon/support/free_function.cc +3 -3
- package/addon/support/initialize.cc +5 -5
- package/addon/transfer/accept.cc +104 -72
- package/addon/transfer/visit.cc +97 -54
- 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.d.cts +9 -9
- package/dist/frontend/agent.d.ts +1 -0
- package/dist/frontend/agent.d.ts.map +1 -1
- package/dist/frontend/agent.js.map +1 -1
- package/dist/frontend/module.d.ts +1 -1
- package/dist/frontend/module.d.ts.map +1 -1
- package/dist/frontend/module.js.map +1 -1
- package/dist/frontend/realm.d.ts +1 -1
- package/dist/frontend/realm.d.ts.map +1 -1
- package/dist/frontend/reference.d.ts +3 -3
- package/dist/frontend/reference.d.ts.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} +69 -64
- package/dist/test/10.transfer/10.array_buffer.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} +32 -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} +73 -27
- 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} +70 -39
- 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 +51 -0
- package/dist/test/90.isolation/10.memory.js.map +1 -0
- package/dist/test/fixtures.js +2 -2
- 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 +1 -0
- package/frontend/module.ts +1 -1
- package/frontend/realm.ts +4 -1
- package/frontend/reference.ts +3 -3
- package/package.json +13 -13
- 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} +3 -3
- package/test/10.transfer/00.primitives.ts +47 -0
- package/test/{20.array_buffer.ts → 10.transfer/10.array_buffer.ts} +40 -35
- package/test/10.transfer/90.regressions.ts +38 -0
- package/test/{10.script.ts → 20.intrinsics/00.script.ts} +21 -6
- package/test/{05.global.ts → 20.intrinsics/05.global.ts} +5 -5
- package/test/20.intrinsics/10.reference.ts +111 -0
- package/test/{10.module.ts → 20.intrinsics/20.module.ts} +39 -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 +28 -0
- package/test/fixtures.ts +4 -4
- package/test/glob.ts +11 -0
- package/utility/completion.ts +6 -1
- package/addon/handle/bound_value.cc +0 -45
- 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 -168
- 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 -134
- package/test/10.reference.ts +0 -82
- /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,13 +1,13 @@
|
|
|
1
1
|
import { __addDisposableResource, __disposeResources } from "tslib";
|
|
2
2
|
import * as assert from "node:assert/strict";
|
|
3
3
|
import { test } from "node:test";
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { Agent, expect } from "@isolated-vm/experimental";
|
|
5
|
+
import { expectComplete, expectThrow } from "@isolated-vm/experimental/test/fixtures";
|
|
6
|
+
import { makeNullLinker } from "@isolated-vm/experimental/utility/linker";
|
|
7
7
|
await test("module linker", async () => {
|
|
8
8
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
9
9
|
try {
|
|
10
|
-
const agent = __addDisposableResource(env_1, await
|
|
10
|
+
const agent = __addDisposableResource(env_1, await Agent.create(), true);
|
|
11
11
|
const realm = await agent.createRealm();
|
|
12
12
|
const left = expectComplete(await agent.compileModule('import { right } from "right"; globalThis.right = right;'));
|
|
13
13
|
const right = expectComplete(await agent.compileModule('export function right() { return "hello"; }'));
|
|
@@ -33,7 +33,7 @@ await test("module linker", async () => {
|
|
|
33
33
|
await test("nested compilation in module linker", async () => {
|
|
34
34
|
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
35
35
|
try {
|
|
36
|
-
const agent = __addDisposableResource(env_2, await
|
|
36
|
+
const agent = __addDisposableResource(env_2, await Agent.create(), true);
|
|
37
37
|
const realm = await agent.createRealm();
|
|
38
38
|
const left = expectComplete(await agent.compileModule('import "right";'));
|
|
39
39
|
await left.link(realm, async () => expectComplete(await agent.compileModule("export {};")));
|
|
@@ -51,17 +51,17 @@ await test("nested compilation in module linker", async () => {
|
|
|
51
51
|
await test("synthetic module capability", async () => {
|
|
52
52
|
const env_3 = { stack: [], error: void 0, hasError: false };
|
|
53
53
|
try {
|
|
54
|
-
const agent = __addDisposableResource(env_3, await
|
|
54
|
+
const agent = __addDisposableResource(env_3, await Agent.create(), true);
|
|
55
55
|
const capabilityName = "isolated-vm:///capability";
|
|
56
56
|
let didInvoke = false;
|
|
57
|
-
const realm = await agent.createRealm();
|
|
58
|
-
const capability = await realm.createCapability(() => ({
|
|
57
|
+
const realm = expect(await agent.createRealm());
|
|
58
|
+
const capability = expect(await realm.createCapability(() => ({
|
|
59
59
|
default: (value1, value2) => {
|
|
60
60
|
didInvoke = true;
|
|
61
61
|
assert.equal(value1, "hello");
|
|
62
62
|
assert.equal(value2, "world");
|
|
63
63
|
},
|
|
64
|
-
}), { origin: capabilityName });
|
|
64
|
+
}), { origin: capabilityName }));
|
|
65
65
|
const left = expectComplete(await agent.compileModule(`
|
|
66
66
|
import capability from ${JSON.stringify(capabilityName)};
|
|
67
67
|
capability("hello", "world");
|
|
@@ -86,17 +86,17 @@ await test("synthetic module capability", async () => {
|
|
|
86
86
|
await test("synthetic module with circular reference", async () => {
|
|
87
87
|
const env_4 = { stack: [], error: void 0, hasError: false };
|
|
88
88
|
try {
|
|
89
|
-
const agent = __addDisposableResource(env_4, await
|
|
89
|
+
const agent = __addDisposableResource(env_4, await Agent.create(), true);
|
|
90
90
|
const capabilityName = "isolated-vm:///capability";
|
|
91
|
-
const realm = await agent.createRealm();
|
|
92
|
-
const capability = await realm.createCapability(() => ({
|
|
91
|
+
const realm = expect(await agent.createRealm());
|
|
92
|
+
const capability = expect(await realm.createCapability(() => ({
|
|
93
93
|
default: (value1) => {
|
|
94
94
|
// @ts-expect-error
|
|
95
95
|
assert.strictEqual(value1.date1, value1.date2);
|
|
96
96
|
// @ts-expect-error
|
|
97
97
|
assert.strictEqual(value1.object, value1);
|
|
98
98
|
},
|
|
99
|
-
}), { origin: capabilityName });
|
|
99
|
+
}), { origin: capabilityName }));
|
|
100
100
|
const left = expectComplete(await agent.compileModule(`
|
|
101
101
|
import capability from ${JSON.stringify(capabilityName)};
|
|
102
102
|
const date = new Date();
|
|
@@ -124,10 +124,41 @@ await test("synthetic module with circular reference", async () => {
|
|
|
124
124
|
await result_4;
|
|
125
125
|
}
|
|
126
126
|
});
|
|
127
|
+
await test("synthetic module with data templates", async () => {
|
|
128
|
+
const env_5 = { stack: [], error: void 0, hasError: false };
|
|
129
|
+
try {
|
|
130
|
+
const agent = __addDisposableResource(env_5, await Agent.create(), true);
|
|
131
|
+
const capabilityName = "isolated-vm:///capability";
|
|
132
|
+
const realm = expect(await agent.createRealm());
|
|
133
|
+
const capability = expect(await realm.createCapability(() => ({
|
|
134
|
+
string: "string",
|
|
135
|
+
}), { origin: capabilityName }));
|
|
136
|
+
const entry = expectComplete(await agent.compileModule(`
|
|
137
|
+
import { string } from ${JSON.stringify(capabilityName)};
|
|
138
|
+
globalThis.result = JSON.stringify({ string });
|
|
139
|
+
`));
|
|
140
|
+
await entry.link(realm, () => capability);
|
|
141
|
+
await entry.evaluate(realm);
|
|
142
|
+
const global = expect(await realm.acquireGlobalObject());
|
|
143
|
+
const result = expect(await global.get("result"));
|
|
144
|
+
assert.equal(await result.copy(), JSON.stringify({
|
|
145
|
+
string: "string",
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
catch (e_5) {
|
|
149
|
+
env_5.error = e_5;
|
|
150
|
+
env_5.hasError = true;
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
const result_5 = __disposeResources(env_5);
|
|
154
|
+
if (result_5)
|
|
155
|
+
await result_5;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
127
158
|
// TODO: This terminates the process. It should probably raise an async error, because there is no
|
|
128
159
|
// promise.
|
|
129
160
|
// await test("throw from synthetic module", async () => {
|
|
130
|
-
// await using agent = await
|
|
161
|
+
// await using agent = await Agent.create();
|
|
131
162
|
// const capabilityName = "isolated-vm:///capability";
|
|
132
163
|
// const realm = await agent.createRealm();
|
|
133
164
|
// const capability = await realm.createCapability(
|
|
@@ -148,29 +179,29 @@ await test("synthetic module with circular reference", async () => {
|
|
|
148
179
|
// await left.evaluate(realm);
|
|
149
180
|
// });
|
|
150
181
|
await test("throw from linker", async () => {
|
|
151
|
-
const
|
|
182
|
+
const env_6 = { stack: [], error: void 0, hasError: false };
|
|
152
183
|
try {
|
|
153
|
-
const agent = __addDisposableResource(
|
|
184
|
+
const agent = __addDisposableResource(env_6, await Agent.create(), true);
|
|
154
185
|
const realm = await agent.createRealm();
|
|
155
186
|
const left = expectComplete(await agent.compileModule('import "right";'));
|
|
156
187
|
await assert.rejects(left.link(realm, () => {
|
|
157
188
|
throw new Error("linker error");
|
|
158
189
|
}));
|
|
159
190
|
}
|
|
160
|
-
catch (
|
|
161
|
-
|
|
162
|
-
|
|
191
|
+
catch (e_6) {
|
|
192
|
+
env_6.error = e_6;
|
|
193
|
+
env_6.hasError = true;
|
|
163
194
|
}
|
|
164
195
|
finally {
|
|
165
|
-
const
|
|
166
|
-
if (
|
|
167
|
-
await
|
|
196
|
+
const result_6 = __disposeResources(env_6);
|
|
197
|
+
if (result_6)
|
|
198
|
+
await result_6;
|
|
168
199
|
}
|
|
169
200
|
});
|
|
170
201
|
await test("throw from evaluation", async () => {
|
|
171
|
-
const
|
|
202
|
+
const env_7 = { stack: [], error: void 0, hasError: false };
|
|
172
203
|
try {
|
|
173
|
-
const agent = __addDisposableResource(
|
|
204
|
+
const agent = __addDisposableResource(env_7, await Agent.create(), true);
|
|
174
205
|
const realm = await agent.createRealm();
|
|
175
206
|
const module = expectComplete(await agent.compileModule('throw new Error("wow");', { origin: { name: "test:module" } }));
|
|
176
207
|
await module.link(realm, makeNullLinker());
|
|
@@ -178,32 +209,32 @@ await test("throw from evaluation", async () => {
|
|
|
178
209
|
assert.equal(error.message, "wow");
|
|
179
210
|
assert.ok(error.stack?.includes("test:module"));
|
|
180
211
|
}
|
|
181
|
-
catch (
|
|
182
|
-
|
|
183
|
-
|
|
212
|
+
catch (e_7) {
|
|
213
|
+
env_7.error = e_7;
|
|
214
|
+
env_7.hasError = true;
|
|
184
215
|
}
|
|
185
216
|
finally {
|
|
186
|
-
const
|
|
187
|
-
if (
|
|
188
|
-
await
|
|
217
|
+
const result_7 = __disposeResources(env_7);
|
|
218
|
+
if (result_7)
|
|
219
|
+
await result_7;
|
|
189
220
|
}
|
|
190
221
|
});
|
|
191
222
|
await test("missing imports", async () => {
|
|
192
|
-
const
|
|
223
|
+
const env_8 = { stack: [], error: void 0, hasError: false };
|
|
193
224
|
try {
|
|
194
|
-
const agent = __addDisposableResource(
|
|
225
|
+
const agent = __addDisposableResource(env_8, await Agent.create(), true);
|
|
195
226
|
const realm = await agent.createRealm();
|
|
196
227
|
const left = expectComplete(await agent.compileModule('import { nothing } from "right";'));
|
|
197
228
|
await assert.rejects(left.link(realm, async () => expectComplete(await agent.compileModule("export {};"))));
|
|
198
229
|
}
|
|
199
|
-
catch (
|
|
200
|
-
|
|
201
|
-
|
|
230
|
+
catch (e_8) {
|
|
231
|
+
env_8.error = e_8;
|
|
232
|
+
env_8.hasError = true;
|
|
202
233
|
}
|
|
203
234
|
finally {
|
|
204
|
-
const
|
|
205
|
-
if (
|
|
206
|
-
await
|
|
235
|
+
const result_8 = __disposeResources(env_8);
|
|
236
|
+
if (result_8)
|
|
237
|
+
await result_8;
|
|
207
238
|
}
|
|
208
239
|
});
|
|
209
|
-
//# sourceMappingURL=
|
|
240
|
+
//# sourceMappingURL=20.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20.module.js","sourceRoot":"","sources":["../../../test/20.intrinsics/20.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"50.timers.d.ts","sourceRoot":"","sources":["../../../test/50.features/50.timers.ts"],"names":[],"mappings":""}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { __addDisposableResource, __disposeResources } from "tslib";
|
|
2
2
|
import * as assert from "node:assert/strict";
|
|
3
3
|
import { test } from "node:test";
|
|
4
|
-
import
|
|
4
|
+
import { Agent, expect } from "@isolated-vm/experimental";
|
|
5
|
+
import { expectComplete } from "@isolated-vm/experimental/test/fixtures";
|
|
5
6
|
import { makeCompositeLinker, makeDirectResolver, makeFileSystemCompilationLoader, makeLinker, makeLocalResolver, makeStaticLoader } from "@isolated-vm/experimental/utility/linker";
|
|
6
|
-
import { expectComplete } from "./fixtures.js";
|
|
7
7
|
await test("setTimeout capability", async () => {
|
|
8
8
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
9
9
|
try {
|
|
10
|
-
const agent = __addDisposableResource(env_1, await
|
|
11
|
-
const realm = await agent.createRealm();
|
|
10
|
+
const agent = __addDisposableResource(env_1, await Agent.create(), true);
|
|
11
|
+
const realm = expect(await agent.createRealm());
|
|
12
12
|
const runTimers = expectComplete(await agent.compileScript("runTimers()"));
|
|
13
13
|
const resolvers = Promise.withResolvers();
|
|
14
14
|
const capabilities = makeStaticLoader({
|
|
15
|
-
"isolated-vm:capability/timers": await realm.createCapability(() => ({
|
|
15
|
+
"isolated-vm:capability/timers": expect(await realm.createCapability(() => ({
|
|
16
16
|
default: ( /*timeout*/) => {
|
|
17
17
|
void async function () {
|
|
18
18
|
await runTimers.run(realm);
|
|
19
19
|
}();
|
|
20
20
|
},
|
|
21
|
-
}), { origin: "isolated-vm:capability/timers" }),
|
|
22
|
-
"notify-test": await realm.createCapability(() => ({
|
|
21
|
+
}), { origin: "isolated-vm:capability/timers" })),
|
|
22
|
+
"notify-test": expect(await realm.createCapability(() => ({
|
|
23
23
|
default: (message) => { resolvers.resolve(message); },
|
|
24
|
-
}), { origin: "notify-test" }),
|
|
24
|
+
}), { origin: "notify-test" })),
|
|
25
25
|
});
|
|
26
26
|
const runtime = makeFileSystemCompilationLoader(agent);
|
|
27
27
|
const linker = makeCompositeLinker(makeLinker(makeDirectResolver(), capabilities), makeLinker(makeLocalResolver(import.meta), runtime));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"50.timers.js","sourceRoot":"","sources":["../../../test/50.features/50.timers.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAErL,MAAM,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;;;QAC9C,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,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,CAAC,MAAM,KAAK,CAAC,gBAAgB,CACnE,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,CAAC;YAC9C,aAAa,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,gBAAgB,CACjD,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,CAAC;SAC5B,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"90.i18n.d.ts","sourceRoot":"","sources":["../../../test/50.features/90.i18n.ts"],"names":[],"mappings":""}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { __addDisposableResource, __disposeResources } from "tslib";
|
|
2
2
|
import * as assert from "node:assert/strict";
|
|
3
3
|
import { test } from "node:test";
|
|
4
|
-
import
|
|
5
|
-
import { unsafeEvalAsString } from "
|
|
4
|
+
import { Agent } from "@isolated-vm/experimental";
|
|
5
|
+
import { unsafeEvalAsString } from "@isolated-vm/experimental/test/fixtures";
|
|
6
6
|
await test("localCompare", async () => {
|
|
7
7
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
8
8
|
try {
|
|
9
|
-
const agent = __addDisposableResource(env_1, await
|
|
9
|
+
const agent = __addDisposableResource(env_1, await Agent.create(), true);
|
|
10
10
|
const result = await unsafeEvalAsString(agent, () => "a".localeCompare("b"));
|
|
11
11
|
assert.equal(result, -1);
|
|
12
12
|
}
|
|
@@ -23,7 +23,7 @@ await test("localCompare", async () => {
|
|
|
23
23
|
await test("i18n locales", async () => {
|
|
24
24
|
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
25
25
|
try {
|
|
26
|
-
const agent = __addDisposableResource(env_2, await
|
|
26
|
+
const agent = __addDisposableResource(env_2, await Agent.create(), true);
|
|
27
27
|
const supported = await unsafeEvalAsString(agent, () => Intl.NumberFormat.supportedLocalesOf(["ar-EG", "fa-IR", "zh-Hans", "hi-IN", "th-TH", "km-KH"]));
|
|
28
28
|
// no "km-KH"
|
|
29
29
|
assert.deepEqual(supported, ["ar-EG", "fa-IR", "zh-Hans", "hi-IN", "th-TH"]);
|
|
@@ -41,7 +41,7 @@ await test("i18n locales", async () => {
|
|
|
41
41
|
await test("i18n format", async () => {
|
|
42
42
|
const env_3 = { stack: [], error: void 0, hasError: false };
|
|
43
43
|
try {
|
|
44
|
-
const agent = __addDisposableResource(env_3, await
|
|
44
|
+
const agent = __addDisposableResource(env_3, await Agent.create(), true);
|
|
45
45
|
const german = await unsafeEvalAsString(agent, () => new Intl.NumberFormat("de-DE").format(1234567.89));
|
|
46
46
|
assert.equal(german, "1.234.567,89");
|
|
47
47
|
}
|
|
@@ -55,4 +55,4 @@ await test("i18n format", async () => {
|
|
|
55
55
|
await result_3;
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
|
-
//# sourceMappingURL=
|
|
58
|
+
//# sourceMappingURL=90.i18n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"90.i18n.js","sourceRoot":"","sources":["../../../test/50.features/90.i18n.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;;;QACrC,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,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,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,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,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import "@isolated-vm/experimental/test/fixtures";
|
|
2
2
|
//# sourceMappingURL=00.dispose.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"00.dispose.d.ts","sourceRoot":"","sources":["../../../test/90.isolation/00.dispose.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"00.dispose.d.ts","sourceRoot":"","sources":["../../../test/90.isolation/00.dispose.ts"],"names":[],"mappings":"AAGA,OAAO,yCAAyC,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { __addDisposableResource, __disposeResources } from "tslib";
|
|
2
2
|
import * as assert from "node:assert/strict";
|
|
3
3
|
import { test } from "node:test";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import { Agent, expectComplete } from "@isolated-vm/experimental";
|
|
5
|
+
import "@isolated-vm/experimental/test/fixtures";
|
|
6
6
|
await test("dispose while running", async () => {
|
|
7
7
|
const result = async function () {
|
|
8
8
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
9
9
|
try {
|
|
10
|
-
const agent = __addDisposableResource(env_1, await
|
|
10
|
+
const agent = __addDisposableResource(env_1, await Agent.create(), true);
|
|
11
11
|
const realm = await agent.createRealm();
|
|
12
|
-
const script =
|
|
12
|
+
const script = expectComplete(await agent.compileScript("for(;;);"));
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/return-await
|
|
14
14
|
return script.run(realm);
|
|
15
15
|
}
|
|
@@ -23,6 +23,24 @@ await test("dispose while running", async () => {
|
|
|
23
23
|
await result_1;
|
|
24
24
|
}
|
|
25
25
|
}();
|
|
26
|
-
assert.strictEqual(await result,
|
|
26
|
+
assert.strictEqual(await result, null);
|
|
27
|
+
});
|
|
28
|
+
await test("busy dispose", async () => {
|
|
29
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
30
|
+
try {
|
|
31
|
+
const agent = __addDisposableResource(env_2, await Agent.create(), true);
|
|
32
|
+
const [dispose, realm] = await Promise.all([agent.disposeAsync(), agent.createRealm()]);
|
|
33
|
+
assert.strictEqual(dispose, undefined);
|
|
34
|
+
assert.strictEqual(realm, null);
|
|
35
|
+
}
|
|
36
|
+
catch (e_2) {
|
|
37
|
+
env_2.error = e_2;
|
|
38
|
+
env_2.hasError = true;
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
const result_2 = __disposeResources(env_2);
|
|
42
|
+
if (result_2)
|
|
43
|
+
await result_2;
|
|
44
|
+
}
|
|
27
45
|
});
|
|
28
46
|
//# sourceMappingURL=00.dispose.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"00.dispose.js","sourceRoot":"","sources":["../../../test/90.isolation/00.dispose.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"00.dispose.js","sourceRoot":"","sources":["../../../test/90.isolation/00.dispose.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,yCAAyC,CAAC;AAEjD,MAAM,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;IAC9C,MAAM,MAAM,GAAG,KAAK;;;YACnB,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;YACrE,2DAA2D;YAC3D,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;;;;;;;;;;KACzB,EAAE,CAAC;IACJ,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;;;QACrC,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,CAAE,OAAO,EAAE,KAAK,CAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAE,KAAK,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,CAAE,CAAC,CAAC;QAC5F,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;;;;;;;;;;CAChC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"10.memory.d.ts","sourceRoot":"","sources":["../../../test/90.isolation/10.memory.ts"],"names":[],"mappings":"AAGA,OAAO,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { __addDisposableResource, __disposeResources } from "tslib";
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import { test } from "node:test";
|
|
4
|
+
import { Agent, expectComplete } from "@isolated-vm/experimental";
|
|
5
|
+
import "@isolated-vm/experimental/test/fixtures";
|
|
6
|
+
await test("memory limit", async () => {
|
|
7
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
8
|
+
try {
|
|
9
|
+
const agent = __addDisposableResource(env_1, await Agent.create({ memoryLimitBytes: 128 << 20 }), true);
|
|
10
|
+
const realm = await agent.createRealm();
|
|
11
|
+
const sourceText = `const x = [];
|
|
12
|
+
for (;;) {
|
|
13
|
+
let a = 'a';
|
|
14
|
+
for(; a.length < 2**28;) a += a;
|
|
15
|
+
x.push(a);
|
|
16
|
+
}`;
|
|
17
|
+
const script = expectComplete(await agent.compileScript(sourceText));
|
|
18
|
+
const result = await script.run(realm);
|
|
19
|
+
assert.strictEqual(result, null);
|
|
20
|
+
}
|
|
21
|
+
catch (e_1) {
|
|
22
|
+
env_1.error = e_1;
|
|
23
|
+
env_1.hasError = true;
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
const result_1 = __disposeResources(env_1);
|
|
27
|
+
if (result_1)
|
|
28
|
+
await result_1;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
await test("array spread", async () => {
|
|
32
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
33
|
+
try {
|
|
34
|
+
const agent = __addDisposableResource(env_2, await Agent.create({ memoryLimitBytes: 128 << 20 }), true);
|
|
35
|
+
const realm = await agent.createRealm();
|
|
36
|
+
const sourceText = "[...'.'.repeat(5e7)]; undefined";
|
|
37
|
+
const script = expectComplete(await agent.compileScript(sourceText));
|
|
38
|
+
const result = await script.run(realm);
|
|
39
|
+
assert.strictEqual(result, null);
|
|
40
|
+
}
|
|
41
|
+
catch (e_2) {
|
|
42
|
+
env_2.error = e_2;
|
|
43
|
+
env_2.hasError = true;
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
const result_2 = __disposeResources(env_2);
|
|
47
|
+
if (result_2)
|
|
48
|
+
await result_2;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=10.memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"10.memory.js","sourceRoot":"","sources":["../../../test/90.isolation/10.memory.ts"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,yCAAyC,CAAC;AAEjD,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;;;QACrC,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAA,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,UAAU,GACjB;;;;;EAKE,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;;;;;;;;;;CACjC,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;;;QACrC,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAA,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,iCAAiC,CAAC;QACrD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;;;;;;;;;;CACjC,CAAC,CAAC"}
|
package/dist/test/fixtures.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { afterEach } from "node:test";
|
|
2
|
-
import { expectComplete } from "@isolated-vm/experimental/utility/completion";
|
|
2
|
+
import { expect, expectComplete } from "@isolated-vm/experimental/utility/completion";
|
|
3
3
|
export { expectComplete, expectThrow } from "@isolated-vm/experimental/utility/completion";
|
|
4
4
|
/** @internal */
|
|
5
5
|
export function injectAssert(agent, realm) {
|
|
@@ -32,7 +32,7 @@ export function unsafeIIFEAsString(code) {
|
|
|
32
32
|
}
|
|
33
33
|
/** @internal */
|
|
34
34
|
export async function unsafeEvalAsString(agent, code, ...args) {
|
|
35
|
-
const realm = await agent.createRealm();
|
|
35
|
+
const realm = expect(await agent.createRealm());
|
|
36
36
|
return unsafeEvalAsStringInRealm(agent, realm, code, ...args);
|
|
37
37
|
}
|
|
38
38
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../test/fixtures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../test/fixtures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAEtF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAE3F,gBAAgB;AAChB,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,KAAmB;IAC7D,OAAO,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG;YACd,EAAE,CAAC,KAAc,EAAE,OAAgB;gBAClC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YACD,eAAe,CAAC,MAAe,EAAE,QAAiB,EAAE,OAAgB;gBACnE,KAAK;gBACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzD,4EAA4E;oBAC5E,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,YAAY,MAAM,oBAAoB,QAAQ,EAAE,CAAC,CAAC;gBAC9E,CAAC;YACF,CAAC;YACD,WAAW,CAAC,MAAe,EAAE,QAAiB,EAAE,OAAgB;gBAC/D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAClC,4EAA4E;oBAC5E,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,YAAY,MAAM,sBAAsB,QAAQ,EAAE,CAAC,CAAC;gBAChF,CAAC;YACF,CAAC;SACD,CAAC;QACF,mBAAmB;QACnB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,kBAAkB,CACjC,IAAmB;IAEnB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,KAAY,EACZ,IAA6B,EAC7B,GAAG,IAAU;IAEb,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,OAAO,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,KAAY,EACZ,KAAmB,EACnB,IAA6B,EAC7B,GAAG,IAAU;IAEb,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjI,OAAO,cAAc,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAS,CAAC;AACxD,CAAC;AAED,kFAAkF;AAClF,SAAS,CAAC,GAAG,EAAE;IACd,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;AACf,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../test/glob.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { glob } from "node:fs/promises";
|
|
2
|
+
// Bun's `node:test` implementation is broken
|
|
3
|
+
// https://github.com/oven-sh/bun/issues/23077
|
|
4
|
+
// https://github.com/oven-sh/bun/issues/5090 (red herring)
|
|
5
|
+
const cwd = new URL(".", import.meta.url);
|
|
6
|
+
for await (const file of glob("**/*.ts", { cwd })) {
|
|
7
|
+
if (/^[0-9]{2}/.test(file)) {
|
|
8
|
+
await import(new URL(file, cwd).href);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=glob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../test/glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,6CAA6C;AAC7C,8CAA8C;AAC9C,2DAA2D;AAC3D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1C,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACnD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;AACF,CAAC"}
|