@isolated-vm/experimental 0.0.10 → 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/handle/local_of.cc +2 -3
- package/addon/support/free_function.cc +1 -1
- package/addon/support/initialize.cc +3 -3
- package/addon/transfer/accept.cc +21 -9
- package/addon/transfer/visit.cc +7 -7
- package/dist/frontend/realm.d.ts +1 -1
- package/dist/frontend/realm.d.ts.map +1 -1
- package/dist/test/20.intrinsics/00.script.js +25 -0
- package/dist/test/20.intrinsics/00.script.js.map +1 -1
- package/dist/test/20.intrinsics/10.reference.js +63 -17
- package/dist/test/20.intrinsics/10.reference.js.map +1 -1
- package/dist/test/20.intrinsics/20.module.js +55 -24
- package/dist/test/20.intrinsics/20.module.js.map +1 -1
- package/dist/test/90.isolation/10.memory.js +20 -0
- package/dist/test/90.isolation/10.memory.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility/completion.d.ts +1 -1
- package/dist/utility/completion.d.ts.map +1 -1
- package/frontend/realm.ts +4 -1
- package/package.json +9 -9
- package/test/20.intrinsics/00.script.ts +15 -0
- package/test/20.intrinsics/10.reference.ts +42 -14
- package/test/20.intrinsics/20.module.ts +22 -0
- package/test/90.isolation/10.memory.ts +9 -0
- package/utility/completion.ts +1 -1
- package/dist/test/10.transfer/50.interceptors.d.ts +0 -2
- package/dist/test/10.transfer/50.interceptors.d.ts.map +0 -1
- package/dist/test/10.transfer/50.interceptors.js +0 -108
- package/dist/test/10.transfer/50.interceptors.js.map +0 -1
- package/test/10.transfer/50.interceptors.ts +0 -63
package/addon/handle/local_of.cc
CHANGED
|
@@ -12,11 +12,10 @@ template <class Tag>
|
|
|
12
12
|
struct local_specialization;
|
|
13
13
|
|
|
14
14
|
// Tagged isolated_vm value. Each `local_of<T>` inherits from the tag before it.
|
|
15
|
-
export template <class Tag
|
|
15
|
+
export template <class Tag>
|
|
16
16
|
class local_of : public local_of<typename Tag::tag_type> {
|
|
17
|
-
|
|
17
|
+
private:
|
|
18
18
|
using local_type = local_specialization<Tag>::type;
|
|
19
|
-
explicit local_of(runtime_handle value) : local_of<typename Tag::tag_type>{value} {}
|
|
20
19
|
|
|
21
20
|
public:
|
|
22
21
|
local_of() = default;
|
|
@@ -16,7 +16,7 @@ constexpr auto make_free_function(auto function) {
|
|
|
16
16
|
using callback_type = decltype(callback);
|
|
17
17
|
auto bound_function = util::bind{
|
|
18
18
|
[](const callback_type& callback, Lock lock, callback_info info) noexcept(Nx) -> local_of<> {
|
|
19
|
-
auto run = util::regular_return{[ & ]
|
|
19
|
+
auto run = util::regular_return{[ & ] -> decltype(auto) {
|
|
20
20
|
return std::apply(
|
|
21
21
|
callback,
|
|
22
22
|
std::tuple_cat(
|
|
@@ -30,7 +30,7 @@ template <std::size_t Index>
|
|
|
30
30
|
consteval auto get_descriptors(std::integral_constant<std::size_t, Index> /*index*/, auto ns) {
|
|
31
31
|
return util::overloaded{
|
|
32
32
|
[]<class... Types>(std::tuple<std::in_place_t, Types...> ns) {
|
|
33
|
-
auto [... ii ] = util::sequence<sizeof...(Types)>;
|
|
33
|
+
constexpr auto [... ii ] = util::sequence<sizeof...(Types)>;
|
|
34
34
|
auto [... entries ] = std::make_tuple(std::get<ii + 1>(ns)...);
|
|
35
35
|
return std::make_tuple(std::get<Index>(entries)...);
|
|
36
36
|
},
|
|
@@ -46,10 +46,10 @@ addon::addon(std::type_identity<Type> /*environment*/, auto callback) {
|
|
|
46
46
|
using callback_type = decltype(callback);
|
|
47
47
|
static_assert(std::is_empty_v<callback_type>);
|
|
48
48
|
|
|
49
|
-
constexpr auto make_names = []
|
|
49
|
+
constexpr auto make_names = [] -> std::vector<std::u16string> {
|
|
50
50
|
constexpr auto names = get_descriptors(std::integral_constant<std::size_t, 0>{}, callback_type{}());
|
|
51
51
|
// Check for duplicates (only at compile time)
|
|
52
|
-
static_assert([ names ]
|
|
52
|
+
static_assert([ names ] {
|
|
53
53
|
auto [... names_cw ] = names;
|
|
54
54
|
auto names_vector = std::vector{js::transfer_strict<std::u16string>(names_cw)...};
|
|
55
55
|
for (auto ii = names_vector.begin(); ii != names_vector.end(); ++ii) {
|
package/addon/transfer/accept.cc
CHANGED
|
@@ -44,10 +44,26 @@ struct accept_vm_primitive {
|
|
|
44
44
|
return local_of<number_tag_of<std::int32_t>>::make(lock(), subject);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
auto operator()(number_tag_of<std::uint32_t> /*tag*/, visit_holder /*visit*/, std::uint32_t subject) const -> local_of<number_tag_of<std::uint32_t>> {
|
|
48
|
+
if (subject <= std::numeric_limits<std::int32_t>::max()) {
|
|
49
|
+
auto value = local_of<number_tag_of<std::int32_t>>::make(lock(), static_cast<std::int32_t>(subject));
|
|
50
|
+
return local_of<number_tag_of<std::uint32_t>>::from(value);
|
|
51
|
+
} else {
|
|
52
|
+
auto value = local_of<number_tag_of<double>>::make(lock(), static_cast<double>(subject));
|
|
53
|
+
return local_of<number_tag_of<std::uint32_t>>::from(value);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
47
57
|
auto operator()(number_tag /*tag*/, visit_holder visit, auto&& subject) const -> local_of<number_tag> {
|
|
48
58
|
return (*this)(number_tag_of<double>{}, visit, double{std::forward<decltype(subject)>(subject)});
|
|
49
59
|
}
|
|
50
60
|
|
|
61
|
+
template <class Type>
|
|
62
|
+
auto operator()(number_tag_of<Type> tag, visit_holder visit, Type subject) const -> local_of<number_tag_of<Type>> {
|
|
63
|
+
auto value = (*this)(tag, visit, std::int32_t{std::forward<decltype(subject)>(subject)});
|
|
64
|
+
return local_of<number_tag_of<Type>>::from(value);
|
|
65
|
+
}
|
|
66
|
+
|
|
51
67
|
template <class Type>
|
|
52
68
|
auto operator()(number_tag_of<Type> tag, visit_holder visit, auto&& subject) const -> local_of<number_tag_of<Type>> {
|
|
53
69
|
return (*this)(tag, visit, Type{std::forward<decltype(subject)>(subject)});
|
|
@@ -105,11 +121,7 @@ struct accept_vm_prototype : accept_vm_primitive {
|
|
|
105
121
|
auto operator()(Tag tag, auto& visit, auto&& subject) const -> local_of<prototype_tag> {
|
|
106
122
|
const accept_vm_primitive& accept = *this;
|
|
107
123
|
auto result = accept(tag, visit, std::forward<decltype(subject)>(subject));
|
|
108
|
-
|
|
109
|
-
[](auto value) { return value; },
|
|
110
|
-
[]<class Type>(js::referenceable_value<Type> value) { return *std::move(value); },
|
|
111
|
-
};
|
|
112
|
-
return local_of<prototype_tag>::from(unwrap(result));
|
|
124
|
+
return local_of<prototype_tag>::from(js::dispatch_referenceable(result));
|
|
113
125
|
}
|
|
114
126
|
|
|
115
127
|
// function
|
|
@@ -191,8 +203,8 @@ struct accept_vm_value : accept_vm_primitive {
|
|
|
191
203
|
local_of<list_tag>::make(self.lock(), Size),
|
|
192
204
|
std::forward_as_tuple(self, visit, std::forward<decltype(subject)>(subject)),
|
|
193
205
|
[](local_of<list_tag> receiver, auto& self, auto& visit, auto /*&&*/ tuple) -> void {
|
|
194
|
-
|
|
195
|
-
(..., [ & ]
|
|
206
|
+
constexpr auto [... indices ] = util::sequence<Size>;
|
|
207
|
+
(..., [ & ] -> void {
|
|
196
208
|
auto element = visit(indices, std::forward<decltype(tuple)>(tuple), self);
|
|
197
209
|
unmaybe(receiver->set(self.lock(), indices, element));
|
|
198
210
|
}());
|
|
@@ -231,8 +243,8 @@ struct accept_vm_value : accept_vm_primitive {
|
|
|
231
243
|
|
|
232
244
|
template <std::size_t Size>
|
|
233
245
|
auto accept_entry_pair_struct(this const auto& self, auto& visit, local_of<record_tag> receiver, auto&& subject) -> void {
|
|
234
|
-
|
|
235
|
-
(..., [ & ]
|
|
246
|
+
constexpr auto [... indices ] = util::sequence<Size>;
|
|
247
|
+
(..., [ & ] -> void {
|
|
236
248
|
auto accept_entry = accept_entry_pair<decltype(self), decltype(self)>{self};
|
|
237
249
|
auto entry = visit(std::integral_constant<std::size_t, indices>{}, std::forward<decltype(subject)>(subject), accept_entry);
|
|
238
250
|
receiver->set(self.lock(), entry.first, entry.second);
|
package/addon/transfer/visit.cc
CHANGED
|
@@ -7,7 +7,7 @@ import util;
|
|
|
7
7
|
namespace isolated_vm {
|
|
8
8
|
using namespace js;
|
|
9
9
|
|
|
10
|
-
constexpr auto primitive_typeofs =
|
|
10
|
+
constexpr auto primitive_typeofs = util::constexpr_array{
|
|
11
11
|
value_typeof::undefined,
|
|
12
12
|
value_typeof::null,
|
|
13
13
|
value_typeof::boolean,
|
|
@@ -20,12 +20,12 @@ constexpr auto primitive_typeofs = std::array{
|
|
|
20
20
|
value_typeof::bigint_i64,
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
constexpr auto data_block_typeofs =
|
|
23
|
+
constexpr auto data_block_typeofs = util::constexpr_array{
|
|
24
24
|
value_typeof::array_buffer,
|
|
25
25
|
value_typeof::shared_array_buffer,
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
constexpr auto array_buffer_view_typeofs =
|
|
28
|
+
constexpr auto array_buffer_view_typeofs = util::constexpr_array{
|
|
29
29
|
value_typeof::bigint64_array,
|
|
30
30
|
value_typeof::biguint64_array,
|
|
31
31
|
value_typeof::data_view,
|
|
@@ -130,9 +130,9 @@ struct visit_vm_value {
|
|
|
130
130
|
[](auto /*tag*/, auto next) -> accept_target_t<Accept> { return next(); },
|
|
131
131
|
|
|
132
132
|
// Slow path
|
|
133
|
-
[ & ]
|
|
133
|
+
[ & ] -> accept_target_t<Accept> {
|
|
134
134
|
auto type = subject->inspect();
|
|
135
|
-
|
|
135
|
+
constexpr auto [... primitive_types ] = primitive_typeofs;
|
|
136
136
|
if ((... || (type == primitive_types))) {
|
|
137
137
|
return inspected(type, local_of<primitive_tag>::from(subject), accept);
|
|
138
138
|
} else {
|
|
@@ -213,8 +213,8 @@ struct visit_vm_value {
|
|
|
213
213
|
|
|
214
214
|
template <class Accept>
|
|
215
215
|
constexpr auto inspected(value_typeof type_of, local_of<object_tag> subject, const Accept& accept) -> accept_target_t<Accept> {
|
|
216
|
-
|
|
217
|
-
|
|
216
|
+
constexpr auto [... data_block_types ] = data_block_typeofs;
|
|
217
|
+
constexpr auto [... array_buffer_view_types ] = array_buffer_view_typeofs;
|
|
218
218
|
if ((... || (type_of == data_block_types))) {
|
|
219
219
|
return inspected(type_of, local_of<data_block_tag>::from(subject), accept);
|
|
220
220
|
} else if ((... || (type_of == array_buffer_view_types))) {
|
package/dist/frontend/realm.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { Realm } from "#backend";
|
|
|
3
3
|
export declare namespace Realm {
|
|
4
4
|
type CapabilityInterface = Record<string, CapabilitySignature>;
|
|
5
5
|
type CapabilityMake = (subscriber: backend.SubscriberCapability) => CapabilityInterface;
|
|
6
|
-
type CapabilitySignature = ((...args: unknown[]) => void) | backend.SubscriberCapability;
|
|
6
|
+
type CapabilitySignature = ((...args: unknown[]) => void) | backend.SubscriberCapability | string;
|
|
7
7
|
interface CreateCapabilityOptions {
|
|
8
8
|
origin: string;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realm.d.ts","sourceRoot":"","sources":["../../frontend/realm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,yBAAiB,KAAK,CAAC;IACtB,KAAY,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACtE,KAAY,cAAc,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,oBAAoB,KAAK,mBAAmB,CAAC;IAC/F,KAAY,mBAAmB,
|
|
1
|
+
{"version":3,"file":"realm.d.ts","sourceRoot":"","sources":["../../frontend/realm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,yBAAiB,KAAK,CAAC;IACtB,KAAY,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACtE,KAAY,cAAc,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,oBAAoB,KAAK,mBAAmB,CAAC;IAC/F,KAAY,mBAAmB,GAC9B,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAC9B,OAAO,CAAC,oBAAoB,GAC5B,MAAM,CAAC;IAER,UAAiB,uBAAuB;QACvC,MAAM,EAAE,MAAM,CAAC;KACf;CACD"}
|
|
@@ -3,6 +3,7 @@ import * as assert from "node:assert/strict";
|
|
|
3
3
|
import { test } from "node:test";
|
|
4
4
|
import { Agent } from "@isolated-vm/experimental";
|
|
5
5
|
import { expectComplete, expectThrow, unsafeEvalAsStringInRealm, unsafeIIFEAsString } from "@isolated-vm/experimental/test/fixtures";
|
|
6
|
+
const illegalAccess = new Error("illegal access");
|
|
6
7
|
await test("script source origin", async () => {
|
|
7
8
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
8
9
|
try {
|
|
@@ -104,4 +105,28 @@ await test("script which returns a circular object", async () => {
|
|
|
104
105
|
await result_4;
|
|
105
106
|
}
|
|
106
107
|
});
|
|
108
|
+
await test("script result should not invoke interceptors", async () => {
|
|
109
|
+
const env_5 = { stack: [], error: void 0, hasError: false };
|
|
110
|
+
try {
|
|
111
|
+
const agent = __addDisposableResource(env_5, await Agent.create(), true);
|
|
112
|
+
const realm = await agent.createRealm();
|
|
113
|
+
const script = expectComplete(await agent.compileScript(unsafeIIFEAsString(() => {
|
|
114
|
+
const object = Object.defineProperty({ name: "value" }, "name", {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
get() { throw new Error("interceptor invoked"); },
|
|
117
|
+
});
|
|
118
|
+
return object;
|
|
119
|
+
})));
|
|
120
|
+
await assert.rejects(async () => expectComplete(await script.run(realm)), illegalAccess);
|
|
121
|
+
}
|
|
122
|
+
catch (e_5) {
|
|
123
|
+
env_5.error = e_5;
|
|
124
|
+
env_5.hasError = true;
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
const result_5 = __disposeResources(env_5);
|
|
128
|
+
if (result_5)
|
|
129
|
+
await result_5;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
107
132
|
//# sourceMappingURL=00.script.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"00.script.js","sourceRoot":"","sources":["../../../test/20.intrinsics/00.script.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"00.script.js","sourceRoot":"","sources":["../../../test/20.intrinsics/00.script.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,cAAc,EAAE,WAAW,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAErI,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAElD,MAAM,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;;;QAC7C,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CACtD,kBAAkB,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC;gBACJ,MAAM,IAAI,KAAK,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACrB,sEAAsE;gBACtE,OAAO,KAAK,CAAC,KAAK,CAAC;YACpB,CAAC;QACF,CAAC,CAAC,EACF;YACC,MAAM,EAAE;gBACP,IAAI,EAAE,qBAAqB;gBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;aACpC;SACD,CACD,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;;;;;;;;;;;CACtD,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;;;QAC5C,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;QACzH,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAU,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;CAChD,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;;;QACjD,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,mBAAmB;QACnB,MAAM,OAAO,GAAY,KAAK,CAAC,OAAO,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;;;;;;;;;;;CACpD,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;;;QAC/D,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;YACjE,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,MAAM,GAAwB;gBACnC,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;aACX,CAAC;YACF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,OAAO,MAAM,CAAC;QACf,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;CAC1C,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;;;QACrE,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE;gBAC/D,UAAU,EAAE,IAAI;gBAChB,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;aACjD,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,cAAc,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;;;;;;;;;;;CACzF,CAAC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import * as assert from "node:assert/strict";
|
|
|
3
3
|
import { test } from "node:test";
|
|
4
4
|
import { Agent, expect } from "@isolated-vm/experimental";
|
|
5
5
|
import { expectComplete, unsafeEvalAsStringInRealm } from "@isolated-vm/experimental/test/fixtures";
|
|
6
|
+
const illegalAccess = new Error("illegal access");
|
|
6
7
|
await test("function reference invoke", async () => {
|
|
7
8
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
8
9
|
try {
|
|
@@ -93,26 +94,17 @@ await test("get & set should not invoke proxies", async () => {
|
|
|
93
94
|
const agent = __addDisposableResource(env_4, await Agent.create(), true);
|
|
94
95
|
const realm = expect(await agent.createRealm());
|
|
95
96
|
await unsafeEvalAsStringInRealm(agent, realm, () => {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
get() { globalThis.failed = true; },
|
|
100
|
-
// @ts-expect-error
|
|
101
|
-
set() { globalThis.failed = true; },
|
|
97
|
+
const proxy = new Proxy({}, {
|
|
98
|
+
get() { throw new Error("interceptor invoked"); },
|
|
99
|
+
set() { throw new Error("interceptor invoked"); },
|
|
102
100
|
});
|
|
103
|
-
});
|
|
104
|
-
const global = await realm.acquireGlobalObject();
|
|
105
|
-
const prox = expect(await global.get("prox"));
|
|
106
|
-
await prox.get("name");
|
|
107
|
-
assert.equal(await expect(await global.get("failed")).copy(), undefined);
|
|
108
|
-
expect(await prox.set("name", undefined));
|
|
109
|
-
assert.equal(await expect(await global.get("failed")).copy(), undefined);
|
|
110
|
-
// sanity check
|
|
111
|
-
await unsafeEvalAsStringInRealm(agent, realm, () => {
|
|
112
101
|
// @ts-expect-error
|
|
113
|
-
globalThis.
|
|
102
|
+
globalThis.proxy = proxy;
|
|
114
103
|
});
|
|
115
|
-
|
|
104
|
+
const global = await realm.acquireGlobalObject();
|
|
105
|
+
const proxy = expect(await global.get("proxy"));
|
|
106
|
+
expect(await proxy.get("name"));
|
|
107
|
+
expect(await proxy.set("name", undefined));
|
|
116
108
|
}
|
|
117
109
|
catch (e_4) {
|
|
118
110
|
env_4.error = e_4;
|
|
@@ -124,4 +116,58 @@ await test("get & set should not invoke proxies", async () => {
|
|
|
124
116
|
await result_4;
|
|
125
117
|
}
|
|
126
118
|
});
|
|
119
|
+
await test("copy should not invoke interceptors", async () => {
|
|
120
|
+
const env_5 = { stack: [], error: void 0, hasError: false };
|
|
121
|
+
try {
|
|
122
|
+
const agent = __addDisposableResource(env_5, await Agent.create(), true);
|
|
123
|
+
const realm = await agent.createRealm();
|
|
124
|
+
await unsafeEvalAsStringInRealm(agent, realm, () => {
|
|
125
|
+
const object = Object.defineProperty({}, "name", {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get() { throw new Error("interceptor invoked"); },
|
|
128
|
+
});
|
|
129
|
+
// @ts-expect-error
|
|
130
|
+
globalThis.object = object;
|
|
131
|
+
});
|
|
132
|
+
const global = await realm?.acquireGlobalObject();
|
|
133
|
+
const object = await global?.get("object");
|
|
134
|
+
await assert.rejects(async () => object?.copy(), illegalAccess);
|
|
135
|
+
}
|
|
136
|
+
catch (e_5) {
|
|
137
|
+
env_5.error = e_5;
|
|
138
|
+
env_5.hasError = true;
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
const result_5 = __disposeResources(env_5);
|
|
142
|
+
if (result_5)
|
|
143
|
+
await result_5;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
await test("invoke should not invoke interceptors", async () => {
|
|
147
|
+
const env_6 = { stack: [], error: void 0, hasError: false };
|
|
148
|
+
try {
|
|
149
|
+
const agent = __addDisposableResource(env_6, await Agent.create(), true);
|
|
150
|
+
const realm = await agent.createRealm();
|
|
151
|
+
await unsafeEvalAsStringInRealm(agent, realm, () => {
|
|
152
|
+
// @ts-expect-error
|
|
153
|
+
globalThis.fn = () => { };
|
|
154
|
+
// eslint-disable-next-line no-extend-native
|
|
155
|
+
Object.defineProperty(Object.prototype, "name", {
|
|
156
|
+
set() { throw new Error("interceptor invoked"); },
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
const global = await realm?.acquireGlobalObject();
|
|
160
|
+
const fn = await global?.get("fn");
|
|
161
|
+
await assert.rejects(async () => expectComplete(await fn?.invoke([{ name: "value" }])), illegalAccess);
|
|
162
|
+
}
|
|
163
|
+
catch (e_6) {
|
|
164
|
+
env_6.error = e_6;
|
|
165
|
+
env_6.hasError = true;
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
const result_6 = __disposeResources(env_6);
|
|
169
|
+
if (result_6)
|
|
170
|
+
await result_6;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
127
173
|
//# sourceMappingURL=10.reference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"10.reference.js","sourceRoot":"","sources":["../../../test/20.intrinsics/10.reference.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"10.reference.js","sourceRoot":"","sources":["../../../test/20.intrinsics/10.reference.ts"],"names":[],"mappings":"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"}
|
|
@@ -124,6 +124,37 @@ 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 () => {
|
|
@@ -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
240
|
//# sourceMappingURL=20.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"20.module.js","sourceRoot":"","sources":["../../../test/20.intrinsics/20.module.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,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,MAAM,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;;;QACtC,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACnH,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACvG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;CAC9B,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;;;QAC5D,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;CAC5F,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;;;QACpD,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,cAAc,GAAG,2BAA2B,CAAC;QACnD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,gBAAgB,CACrD,GAAG,EAAE,CAAC,CAAC;YACN,OAAO,EAAE,CAAC,MAAe,EAAE,MAAe,EAAE,EAAE;gBAC7C,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;SACD,CAAC,EACF,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC;2BAC5B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;;EAEvD,CAAC,CAAC,CAAC;QACJ,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;YACrB,CAAE,cAAc,EAAE,UAAU,CAAE;SAC9B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;;;;;;;;;;;CACrB,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;;QACjE,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,cAAc,GAAG,2BAA2B,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,gBAAgB,CACrD,GAAG,EAAE,CAAC,CAAC;YACN,OAAO,EAAE,CAAC,MAAe,EAAE,EAAE;gBAC5B,mBAAmB;gBACnB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/C,mBAAmB;gBACnB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,CAAC;SACD,CAAC,EACF,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC;2BAC5B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;;;;;;;;;EASvD,CAAC,CAAC,CAAC;QACJ,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;YACrB,CAAE,cAAc,EAAE,UAAU,CAAE;SAC9B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;;;;;;;;;;CAC3B,CAAC,CAAC;AAEH,kGAAkG;AAClG,WAAW;AACX,0DAA0D;AAC1D,6CAA6C;AAC7C,uDAAuD;AACvD,4CAA4C;AAC5C,oDAAoD;AACpD,aAAa;AACb,sBAAsB;AACtB,2CAA2C;AAC3C,QAAQ;AACR,QAAQ;AACR,iCAAiC;AACjC,2DAA2D;AAC3D,8DAA8D;AAC9D,kBAAkB;AAClB,QAAQ;AACR,2BAA2B;AAC3B,oCAAoC;AACpC,OAAO;AACP,+DAA+D;AAC/D,+BAA+B;AAC/B,MAAM;AAEN,MAAM,IAAI,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;;;QAC1C,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;CACJ,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;;;QAC9C,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;QACzH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAU,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;CAChD,CAAC,CAAC;AAEH,MAAM,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;;;QACxC,MAAY,KAAK,kCAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAA,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC3F,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAChD,cAAc,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;CAC3D,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"20.module.js","sourceRoot":"","sources":["../../../test/20.intrinsics/20.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,4 +28,24 @@ for (;;) {
|
|
|
28
28
|
await result_1;
|
|
29
29
|
}
|
|
30
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
|
+
});
|
|
31
51
|
//# sourceMappingURL=10.memory.js.map
|
|
@@ -1 +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"}
|
|
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"}
|