@isolated-vm/experimental 0.0.10 → 0.0.12

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.
@@ -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 = value_tag>
15
+ export template <class Tag>
16
16
  class local_of : public local_of<typename Tag::tag_type> {
17
- protected:
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;
@@ -1,3 +1,5 @@
1
+ module;
2
+ #include "auto_js/export_tag.h"
1
3
  export module isolated_vm:handle.value_of;
2
4
  import :handle.types;
3
5
  import :support.lock_fwd;
@@ -53,7 +55,7 @@ class value_next : public value_of<typename Tag::tag_type> {
53
55
  };
54
56
 
55
57
  // `value_of<Tag>` specializations.
56
- template <class Type> class value_for_typed_array_of;
58
+ template <class Type> class EXPORT value_for_typed_array_of;
57
59
 
58
60
  template <class Tag>
59
61
  struct value_specialization
@@ -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{[ & ]() -> decltype(auto) {
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 = []() -> std::vector<std::u16string> {
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) {
@@ -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
- constexpr auto unwrap = util::overloaded{
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
- const auto [... indices ] = util::sequence<Size>;
195
- (..., [ & ]() -> void {
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
- const auto [... indices ] = util::sequence<Size>;
235
- (..., [ & ]() -> void {
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);
@@ -7,7 +7,7 @@ import util;
7
7
  namespace isolated_vm {
8
8
  using namespace js;
9
9
 
10
- constexpr auto primitive_typeofs = std::array{
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 = std::array{
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 = std::array{
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
- [ & ]() -> accept_target_t<Accept> {
133
+ [ & ] -> accept_target_t<Accept> {
134
134
  auto type = subject->inspect();
135
- const auto [... primitive_types ] = primitive_typeofs;
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
- const auto [... data_block_types ] = data_block_typeofs;
217
- const auto [... array_buffer_view_types ] = array_buffer_view_typeofs;
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))) {
@@ -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,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAEhG,UAAiB,uBAAuB;QACvC,MAAM,EAAE,MAAM,CAAC;KACf;CACD"}
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":"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"}
@@ -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
- // @ts-expect-error
97
- globalThis.prox = new Proxy({}, {
98
- // @ts-expect-error
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.failed = true;
102
+ globalThis.proxy = proxy;
114
103
  });
115
- assert.equal(await expect(await global.get("failed")).copy(), true);
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 env_5 = { stack: [], error: void 0, hasError: false };
182
+ const env_6 = { stack: [], error: void 0, hasError: false };
152
183
  try {
153
- const agent = __addDisposableResource(env_5, await Agent.create(), true);
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 (e_5) {
161
- env_5.error = e_5;
162
- env_5.hasError = true;
191
+ catch (e_6) {
192
+ env_6.error = e_6;
193
+ env_6.hasError = true;
163
194
  }
164
195
  finally {
165
- const result_5 = __disposeResources(env_5);
166
- if (result_5)
167
- await result_5;
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 env_6 = { stack: [], error: void 0, hasError: false };
202
+ const env_7 = { stack: [], error: void 0, hasError: false };
172
203
  try {
173
- const agent = __addDisposableResource(env_6, await Agent.create(), true);
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 (e_6) {
182
- env_6.error = e_6;
183
- env_6.hasError = true;
212
+ catch (e_7) {
213
+ env_7.error = e_7;
214
+ env_7.hasError = true;
184
215
  }
185
216
  finally {
186
- const result_6 = __disposeResources(env_6);
187
- if (result_6)
188
- await result_6;
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 env_7 = { stack: [], error: void 0, hasError: false };
223
+ const env_8 = { stack: [], error: void 0, hasError: false };
193
224
  try {
194
- const agent = __addDisposableResource(env_7, await Agent.create(), true);
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 (e_7) {
200
- env_7.error = e_7;
201
- env_7.hasError = true;
230
+ catch (e_8) {
231
+ env_8.error = e_8;
232
+ env_8.hasError = true;
202
233
  }
203
234
  finally {
204
- const result_7 = __disposeResources(env_7);
205
- if (result_7)
206
- await result_7;
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":"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"}
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"}