@isolated-vm/experimental 0.0.11 → 0.0.13

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.
Files changed (49) hide show
  1. package/addon/handle/value_of.cc +3 -1
  2. package/backend/backend.cts +2 -2
  3. package/backend/backend.d.cts +10 -17
  4. package/backend/require.cts +1 -1
  5. package/dist/backend/backend.cjs +2 -2
  6. package/dist/backend/backend.cjs.map +1 -1
  7. package/dist/backend/require.cjs +1 -1
  8. package/dist/backend/require.cjs.map +1 -1
  9. package/dist/frontend/agent.d.ts +3 -3
  10. package/dist/frontend/agent.d.ts.map +1 -1
  11. package/dist/frontend/agent.js +5 -12
  12. package/dist/frontend/agent.js.map +1 -1
  13. package/dist/frontend/module.d.ts +2 -5
  14. package/dist/frontend/module.d.ts.map +1 -1
  15. package/dist/frontend/module.js +20 -33
  16. package/dist/frontend/module.js.map +1 -1
  17. package/dist/frontend/realm.d.ts +1 -3
  18. package/dist/frontend/realm.d.ts.map +1 -1
  19. package/dist/frontend/realm.js +0 -1
  20. package/dist/frontend/realm.js.map +1 -1
  21. package/dist/frontend/reference.d.ts +1 -1
  22. package/dist/frontend/reference.d.ts.map +1 -1
  23. package/dist/test/10.transfer/20.transfer_list.d.ts +2 -0
  24. package/dist/test/10.transfer/20.transfer_list.d.ts.map +1 -0
  25. package/dist/test/10.transfer/20.transfer_list.js +199 -0
  26. package/dist/test/10.transfer/20.transfer_list.js.map +1 -0
  27. package/dist/test/20.intrinsics/15.transfer_return.d.ts +2 -0
  28. package/dist/test/20.intrinsics/15.transfer_return.d.ts.map +1 -0
  29. package/dist/test/20.intrinsics/15.transfer_return.js +189 -0
  30. package/dist/test/20.intrinsics/15.transfer_return.js.map +1 -0
  31. package/dist/test/20.intrinsics/20.module.js +8 -8
  32. package/dist/test/20.intrinsics/20.module.js.map +1 -1
  33. package/dist/test/50.features/50.timers.js +4 -4
  34. package/dist/test/50.features/50.timers.js.map +1 -1
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/dist/utility/object.d.ts +2 -0
  37. package/dist/utility/object.d.ts.map +1 -0
  38. package/dist/utility/object.js +14 -0
  39. package/dist/utility/object.js.map +1 -0
  40. package/frontend/agent.ts +10 -13
  41. package/frontend/module.ts +25 -31
  42. package/frontend/realm.ts +0 -4
  43. package/frontend/reference.ts +1 -1
  44. package/package.json +9 -10
  45. package/test/10.transfer/20.transfer_list.ts +102 -0
  46. package/test/20.intrinsics/15.transfer_return.ts +109 -0
  47. package/test/20.intrinsics/20.module.ts +8 -8
  48. package/test/50.features/50.timers.ts +4 -4
  49. package/utility/object.ts +22 -0
@@ -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
@@ -3,5 +3,5 @@ import backend = require("#backend_cjs");
3
3
 
4
4
  // Exports must be enumerated because this imports from the native module which cannot declare ESM
5
5
  // exports.
6
- const { initialize, Agent, Module, NativeModule, Realm, Script } = backend;
7
- module.exports = { initialize, Agent, Module, NativeModule, Realm, Script };
6
+ const { Agent, Module, NativeModule, Realm, Script } = backend;
7
+ module.exports = { Agent, Module, NativeModule, Realm, Script };
@@ -1,4 +1,4 @@
1
- type CapabilityMake = import("@isolated-vm/experimental/frontend/realm", { with: { "resolution-mode": "import" }}).Realm.CapabilityMake;
1
+ type CapabilityInterface = import("@isolated-vm/experimental/frontend/realm", { with: { "resolution-mode": "import" }}).Realm.CapabilityInterface;
2
2
  type _Agent = import("@isolated-vm/experimental/frontend/agent", { with: { "resolution-mode": "import" }}).Agent;
3
3
  type _Module = import("@isolated-vm/experimental/frontend/module", { with: { "resolution-mode": "import" }}).Module;
4
4
  type _Reference<T> = import("@isolated-vm/experimental/frontend/reference", { with: { "resolution-mode": "import" }}).Reference<T>;
@@ -9,15 +9,9 @@ type CreateCapabilityOptions = import("@isolated-vm/experimental/frontend/realm"
9
9
  type CreateNativeModuleOptions = import("@isolated-vm/experimental/frontend/native_module", { with: { "resolution-mode": "import" }}).NativeModule.CreateOptions;
10
10
  type MaybeCompletionOf<T> = import("@isolated-vm/experimental/utility/completion", { with: { "resolution-mode": "import" }}).MaybeCompletionOf<T>;
11
11
  type ModuleLinkRecord = import("@isolated-vm/experimental/frontend/module", { with: { "resolution-mode": "import" }}).Module.LinkRecord;
12
+ type ModuleRequest = import("@isolated-vm/experimental/frontend/module", { with: { "resolution-mode": "import" }}).Module.Request;
12
13
  type RunScriptOptions = import("@isolated-vm/experimental/frontend/script", { with: { "resolution-mode": "import" }}).Script.RunScriptOptions;
13
14
 
14
- interface InheritedClasses {
15
- Agent: object;
16
- Module: object;
17
- }
18
-
19
- export const initialize: (inherited: InheritedClasses) => void;
20
-
21
15
  declare const Secret: unique symbol;
22
16
  /** @internal */
23
17
  export type Secret = typeof Secret;
@@ -33,6 +27,8 @@ export class Agent {
33
27
  }
34
28
 
35
29
  export class Module {
30
+ readonly requests: readonly ModuleRequest[];
31
+ readonly specifier: string | undefined;
36
32
  readonly #private;
37
33
  protected constructor(secret: Secret, ...args: unknown[]);
38
34
  /** @internal */ _link(realm: Realm | null, linker: ModuleLinkRecord): Promise<void>;
@@ -50,17 +46,21 @@ export class Realm {
50
46
  readonly #private;
51
47
  protected constructor(secret: Secret, ...args: unknown[]);
52
48
  acquireGlobalObject(): Promise<_Reference<Record<string, unknown>>>;
53
- createCapability(make: CapabilityMake, options: CreateCapabilityOptions): Promise<Module | null>;
49
+ createCapability(capability: CapabilityInterface, options: CreateCapabilityOptions): Promise<Module | null>;
54
50
  instantiateRuntime(): Promise<Module | null>;
55
51
  }
56
52
 
53
+ export interface TransferOptions {
54
+ transfer?: readonly unknown[];
55
+ }
56
+
57
57
  export class Reference {
58
58
  readonly #private;
59
59
  protected constructor(secret: Secret, ...args: unknown[]);
60
60
  copy(): Promise<unknown>;
61
61
  get(property: string): Promise<Reference | null>;
62
62
  set(property: string, value: unknown): Promise<true | null>;
63
- invoke(args: unknown[]): Promise<MaybeCompletionOf<unknown>>;
63
+ invoke(args: unknown[], options?: TransferOptions): Promise<MaybeCompletionOf<unknown>>;
64
64
  }
65
65
 
66
66
  export class Script {
@@ -69,15 +69,8 @@ export class Script {
69
69
  run(realm: Realm | null, options?: RunScriptOptions): Promise<MaybeCompletionOf<unknown>>;
70
70
  }
71
71
 
72
- export class SubscriberCapability {
73
- readonly #private;
74
- protected constructor(secret: Secret, ...args: unknown[]);
75
- send(message: unknown): Promise<boolean>;
76
- }
77
-
78
72
  /** @internal */
79
73
  declare const exports: {
80
- initialize: typeof initialize;
81
74
  Agent: typeof Agent;
82
75
  Module: typeof Module;
83
76
  NativeModule: typeof NativeModule;
@@ -3,9 +3,9 @@ import host = require("#host_cjs");
3
3
 
4
4
  // All hosts enumerated to assist with bundlers. This file can be replaced with a condition.
5
5
  module.exports = function(): unknown {
6
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
6
7
  switch (host) {
7
8
  case "darwin-arm64": return require("@isolated-vm/experimental-darwin-arm64");
8
- case "darwin-x64": return require("@isolated-vm/experimental-darwin-x64");
9
9
  case "linux-arm64-gnu": return require("@isolated-vm/experimental-linux-arm64-gnu");
10
10
  case "linux-arm64-musl": return require("@isolated-vm/experimental-linux-arm64-musl");
11
11
  case "linux-x64-musl": return require("@isolated-vm/experimental-linux-x64-musl");
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const backend = require("#backend_cjs");
5
5
  // Exports must be enumerated because this imports from the native module which cannot declare ESM
6
6
  // exports.
7
- const { initialize, Agent, Module, NativeModule, Realm, Script } = backend;
8
- module.exports = { initialize, Agent, Module, NativeModule, Realm, Script };
7
+ const { Agent, Module, NativeModule, Realm, Script } = backend;
8
+ module.exports = { Agent, Module, NativeModule, Realm, Script };
9
9
  //# sourceMappingURL=backend.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend.cjs","sourceRoot":"","sources":["../../backend/backend.cts"],"names":[],"mappings":";;AAAA,0DAA0D;AAC1D,wCAAyC;AAEzC,kGAAkG;AAClG,WAAW;AACX,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAC3E,MAAM,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"backend.cjs","sourceRoot":"","sources":["../../backend/backend.cts"],"names":[],"mappings":";;AAAA,0DAA0D;AAC1D,wCAAyC;AAEzC,kGAAkG;AAClG,WAAW;AACX,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAC/D,MAAM,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC"}
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const host = require("#host_cjs");
5
5
  // All hosts enumerated to assist with bundlers. This file can be replaced with a condition.
6
6
  module.exports = function () {
7
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
7
8
  switch (host) {
8
9
  case "darwin-arm64": return require("@isolated-vm/experimental-darwin-arm64");
9
- case "darwin-x64": return require("@isolated-vm/experimental-darwin-x64");
10
10
  case "linux-arm64-gnu": return require("@isolated-vm/experimental-linux-arm64-gnu");
11
11
  case "linux-arm64-musl": return require("@isolated-vm/experimental-linux-arm64-musl");
12
12
  case "linux-x64-musl": return require("@isolated-vm/experimental-linux-x64-musl");
@@ -1 +1 @@
1
- {"version":3,"file":"require.cjs","sourceRoot":"","sources":["../../backend/require.cts"],"names":[],"mappings":";;AAAA,0DAA0D;AAC1D,kCAAmC;AAEnC,4FAA4F;AAC5F,MAAM,CAAC,OAAO,GAAG;IAChB,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,cAAc,CAAC,CAAC,OAAO,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAC9E,KAAK,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC,sCAAsC,CAAC,CAAC;QAC1E,KAAK,iBAAiB,CAAC,CAAC,OAAO,OAAO,CAAC,2CAA2C,CAAC,CAAC;QACpF,KAAK,kBAAkB,CAAC,CAAC,OAAO,OAAO,CAAC,4CAA4C,CAAC,CAAC;QACtF,KAAK,gBAAgB,CAAC,CAAC,OAAO,OAAO,CAAC,0CAA0C,CAAC,CAAC;QAClF,KAAK,eAAe,CAAC,CAAC,OAAO,OAAO,CAAC,yCAAyC,CAAC,CAAC;QAChF,KAAK,WAAW,CAAC,CAAC,OAAO,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACxE,KAAK,aAAa,CAAC;QACnB,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;AACF,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"require.cjs","sourceRoot":"","sources":["../../backend/require.cts"],"names":[],"mappings":";;AAAA,0DAA0D;AAC1D,kCAAmC;AAEnC,4FAA4F;AAC5F,MAAM,CAAC,OAAO,GAAG;IAChB,0EAA0E;IAC1E,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,cAAc,CAAC,CAAC,OAAO,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAC9E,KAAK,iBAAiB,CAAC,CAAC,OAAO,OAAO,CAAC,2CAA2C,CAAC,CAAC;QACpF,KAAK,kBAAkB,CAAC,CAAC,OAAO,OAAO,CAAC,4CAA4C,CAAC,CAAC;QACtF,KAAK,gBAAgB,CAAC,CAAC,OAAO,OAAO,CAAC,0CAA0C,CAAC,CAAC;QAClF,KAAK,eAAe,CAAC,CAAC,OAAO,OAAO,CAAC,yCAAyC,CAAC,CAAC;QAChF,KAAK,WAAW,CAAC,CAAC,OAAO,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACxE,KAAK,aAAa,CAAC;QACnB,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;AACF,CAAC,EAAE,CAAC"}
@@ -34,8 +34,8 @@ export declare namespace Agent {
34
34
  origin?: SourceOrigin;
35
35
  }
36
36
  }
37
- export declare class Agent extends backend.Agent {
38
- static create(options?: Agent.CreateOptions): Promise<Agent>;
39
- [Symbol.asyncDispose](): Promise<void>;
37
+ export interface Agent extends backend.Agent {
38
+ [Symbol.asyncDispose]: () => Promise<void>;
40
39
  }
40
+ export declare const Agent: typeof backend.Agent;
41
41
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../frontend/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAGpC,yBAAiB,KAAK,CAAC;IACtB,UAAiB,KAAK,CAAC;QACtB,UAAiB,aAAa;YAC7B,IAAI,EAAE,eAAe,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;SACjB;QAED,UAAiB,SAAS;YACzB,IAAI,EAAE,WAAW,CAAC;YAClB,KAAK,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;SACzB;QAED,UAAiB,QAAQ;YACxB,IAAI,EAAE,UAAU,CAAC;YACjB,KAAK,EAAE,IAAI,CAAC;SACZ;QAED,UAAiB,MAAM;YACtB,IAAI,EAAE,QAAQ,CAAC;SACf;KACD;IAED,UAAiB,aAAa,CAAC;QAC9B,KAAY,KAAK,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;KAE1F;IAED,UAAiB,aAAa;QAC7B,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC;QACxC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC;IAED,UAAiB,oBAAoB;QACpC,MAAM,CAAC,EAAE,YAAY,CAAC;KACtB;IAED,UAAiB,oBAAoB;QACpC,MAAM,CAAC,EAAE,YAAY,CAAC;KACtB;CACD;AAID,qBAAa,KAAM,SAAQ,OAAO,CAAC,KAAK;WACvB,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAQ/D,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5C"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../frontend/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,yBAAiB,KAAK,CAAC;IACtB,UAAiB,KAAK,CAAC;QACtB,UAAiB,aAAa;YAC7B,IAAI,EAAE,eAAe,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;SACjB;QAED,UAAiB,SAAS;YACzB,IAAI,EAAE,WAAW,CAAC;YAClB,KAAK,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;SACzB;QAED,UAAiB,QAAQ;YACxB,IAAI,EAAE,UAAU,CAAC;YACjB,KAAK,EAAE,IAAI,CAAC;SACZ;QAED,UAAiB,MAAM;YACtB,IAAI,EAAE,QAAQ,CAAC;SACf;KACD;IAED,UAAiB,aAAa,CAAC;QAC9B,KAAY,KAAK,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;KAE1F;IAED,UAAiB,aAAa;QAC7B,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC;QACxC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC;IAED,UAAiB,oBAAoB;QACpC,MAAM,CAAC,EAAE,YAAY,CAAC;KACtB;IAED,UAAiB,oBAAoB;QACpC,MAAM,CAAC,EAAE,YAAY,CAAC;KACtB;CACD;AAED,MAAM,WAAW,KAAM,SAAQ,OAAO,CAAC,KAAK;IAC3C,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,KAAK,EAAE,OAAO,OAAO,CAAC,KAAqB,CAAC"}
@@ -1,16 +1,9 @@
1
+ import { extend } from "@isolated-vm/experimental/utility/object";
1
2
  import * as backend from "#backend";
2
- import { Module } from "./module.js";
3
- let didInitialize = false;
4
- export class Agent extends backend.Agent {
5
- static create(options) {
6
- if (!didInitialize) {
7
- backend.initialize({ Agent, Module });
8
- didInitialize = true;
9
- }
10
- return backend.Agent.create(options);
11
- }
3
+ export const Agent = backend.Agent;
4
+ extend(Agent, {
12
5
  async [Symbol.asyncDispose]() {
13
6
  await this.disposeAsync();
14
- }
15
- }
7
+ },
8
+ });
16
9
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../frontend/agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA6CrC,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,MAAM,OAAO,KAAM,SAAQ,OAAO,CAAC,KAAK;IACvC,MAAM,CAAU,MAAM,CAAC,OAA6B;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACtC,aAAa,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC1B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC3B,CAAC;CACD"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../frontend/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAClE,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAiDpC,MAAM,CAAC,MAAM,KAAK,GAAyB,OAAO,CAAC,KAAK,CAAC;AAEzD,MAAM,CAAC,KAAsC,EAAE;IAC9C,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC1B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC3B,CAAC;CACD,CAAC,CAAC"}
@@ -42,10 +42,7 @@ export declare class Capability extends AbstractModule {
42
42
  /**
43
43
  * Compiled `SourceTextModule`. Created with `agent.compileModule`.
44
44
  */
45
- export declare class Module extends backend.Module {
46
- readonly requests: readonly Module.Request[];
47
- readonly specifier: string | undefined;
48
- constructor(secret: backend.Secret, specifier: string | undefined, requests: readonly Module.Request[]);
49
- link(realm: backend.Realm | null, linker: Module.Linker): Promise<void>;
45
+ export interface Module extends AbstractModule {
46
+ link: (realm: backend.Realm | null, linker: Module.Linker) => Promise<void>;
50
47
  }
51
48
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../frontend/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,eAAO,MAAM,cAAc,EAAE,OAAO,OAAO,CAAC,MAAuB,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;AAE5C,yBAAiB,MAAM,CAAC;IACvB,KAAY,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtD,KAAY,MAAM,GAAG;IACpB;;OAEG;IACH,SAAS,EAAE,MAAM;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS;IAE5B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,KACzB,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAEtE,mBAAmB;IACnB,UAAiB,UAAU;QAC1B,6CAA6C;QAC7C,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1B,iCAAiC;QACjC,OAAO,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,UAAiB,OAAO;QACvB;;WAEG;QACH,SAAS,EAAE,MAAM,CAAC;QAElB;;WAEG;QACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;KAC9B;CACD;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,cAAc;CAAG;AAEjD;;GAEG;AACH,qBAAa,MAAO,SAAQ,OAAO,CAAC,MAAM;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE3B,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE;IAMhG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAqC7E"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../frontend/module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,eAAO,MAAM,cAAc,EAAE,OAAO,OAAO,CAAC,MAAuB,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;AAE5C,yBAAiB,MAAM,CAAC;IACvB,KAAY,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtD,KAAY,MAAM,GAAG;IACpB;;OAEG;IACH,SAAS,EAAE,MAAM;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS;IAE5B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,KACzB,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAEtE,mBAAmB;IACnB,UAAiB,UAAU;QAC1B,6CAA6C;QAC7C,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1B,iCAAiC;QACjC,OAAO,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,UAAiB,OAAO;QACvB;;WAEG;QACH,SAAS,EAAE,MAAM,CAAC;QAElB;;WAEG;QACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;KAC9B;CACD;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,cAAc;CAAG;AAEjD;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,cAAc;IAC7C,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E"}
@@ -1,3 +1,4 @@
1
+ import { extend } from "@isolated-vm/experimental/utility/object";
1
2
  import * as backend from "#backend";
2
3
  export const AbstractModule = backend.Module;
3
4
  /**
@@ -5,17 +6,7 @@ export const AbstractModule = backend.Module;
5
6
  */
6
7
  export class Capability extends AbstractModule {
7
8
  }
8
- /**
9
- * Compiled `SourceTextModule`. Created with `agent.compileModule`.
10
- */
11
- export class Module extends backend.Module {
12
- requests;
13
- specifier;
14
- constructor(secret, specifier, requests) {
15
- super(secret);
16
- this.specifier = specifier;
17
- this.requests = requests;
18
- }
9
+ extend(backend.Module, {
19
10
  async link(realm, linker) {
20
11
  const modules = [];
21
12
  const payload = [];
@@ -28,31 +19,27 @@ export class Module extends backend.Module {
28
19
  const moduleId = modules.length;
29
20
  seen.set(module, moduleId);
30
21
  modules.push(module);
31
- if (module instanceof Module) {
32
- const payloadIndex = payload.length + 1;
33
- payload.push(module.requests.length, ...module.requests.map(() => -1));
34
- await Promise.all(module.requests.map(async ({ specifier, attributes }, ii) => {
35
- const result = await linker(specifier, module.specifier, attributes);
36
- if (result === undefined) {
37
- let message = `Cannot find module '${specifier}'`;
38
- if (module.specifier !== undefined) {
39
- message += ` imported from ${module.specifier}`;
40
- }
41
- if (attributes !== undefined) {
42
- message += ` with attributes ${JSON.stringify(attributes)}`;
43
- }
44
- throw new Error(message);
22
+ const { requests, specifier: referrer } = module;
23
+ const payloadIndex = payload.length + 1;
24
+ payload.push(requests.length, ...requests.map(() => -1));
25
+ await Promise.all(requests.map(async ({ specifier, attributes }, ii) => {
26
+ const result = await linker(specifier, referrer, attributes);
27
+ if (result === undefined) {
28
+ let message = `Cannot find module '${specifier}'`;
29
+ if (referrer !== undefined) {
30
+ message += ` imported from ${referrer}`;
45
31
  }
46
- payload[payloadIndex + ii] = await link(result);
47
- }));
48
- }
49
- else {
50
- payload.push(0);
51
- }
32
+ if (attributes !== undefined) {
33
+ message += ` with attributes ${JSON.stringify(attributes)}`;
34
+ }
35
+ throw new Error(message);
36
+ }
37
+ payload[payloadIndex + ii] = await link(result);
38
+ }));
52
39
  return moduleId;
53
40
  };
54
41
  await link(this);
55
42
  return this._link(realm, { modules, payload });
56
- }
57
- }
43
+ },
44
+ });
58
45
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../frontend/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,MAAM,CAAC,MAAM,cAAc,GAA0B,OAAO,CAAC,MAAM,CAAC;AA4CpE;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,cAAc;CAAG;AAEjD;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,MAAM;IAChC,QAAQ,CAA4B;IACpC,SAAS,CAAqB;IAEvC,YAAY,MAAsB,EAAE,SAA6B,EAAE,QAAmC;QACrG,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAA2B,EAAE,MAAqB;QAC5D,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,EAAE,MAAsB,EAAmB,EAAE;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,QAAQ,CAAC;YACjB,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,MAAM,YAAY,MAAM,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE;oBAC7E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBACrE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC1B,IAAI,OAAO,GAAG,uBAAuB,SAAS,GAAG,CAAC;wBAClD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;4BACpC,OAAO,IAAI,kBAAkB,MAAM,CAAC,SAAS,EAAE,CAAC;wBACjD,CAAC;wBACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;4BAC9B,OAAO,IAAI,oBAAoB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC7D,CAAC;wBACD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC1B,CAAC;oBACD,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,OAAO,QAAQ,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;CACD"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../frontend/module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAClE,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,MAAM,CAAC,MAAM,cAAc,GAA0B,OAAO,CAAC,MAAM,CAAC;AA4CpE;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,cAAc;CAAG;AASjD,MAAM,CAAC,OAAO,CAAC,MAAwC,EAAE;IACxD,KAAK,CAAC,IAAI,CAAe,KAAK,EAAE,MAAM;QACrC,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,EAAE,MAAsB,EAAmB,EAAE;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,QAAQ,CAAC;YACjB,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE;gBACtE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC7D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC1B,IAAI,OAAO,GAAG,uBAAuB,SAAS,GAAG,CAAC;oBAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC5B,OAAO,IAAI,kBAAkB,QAAQ,EAAE,CAAC;oBACzC,CAAC;oBACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC9B,OAAO,IAAI,oBAAoB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC7D,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;gBACD,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC,CAAC;YACJ,OAAO,QAAQ,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;CACD,CAAC,CAAC"}
@@ -1,9 +1,7 @@
1
- import * as backend from "#backend";
2
1
  export { Realm } from "#backend";
3
2
  export declare namespace Realm {
4
3
  type CapabilityInterface = Record<string, CapabilitySignature>;
5
- type CapabilityMake = (subscriber: backend.SubscriberCapability) => CapabilityInterface;
6
- type CapabilitySignature = ((...args: unknown[]) => void) | backend.SubscriberCapability | string;
4
+ type CapabilitySignature = ((...args: unknown[]) => void) | string;
7
5
  interface CreateCapabilityOptions {
8
6
  origin: string;
9
7
  }
@@ -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,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"}
1
+ {"version":3,"file":"realm.d.ts","sourceRoot":"","sources":["../../frontend/realm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,yBAAiB,KAAK,CAAC;IACtB,KAAY,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACtE,KAAY,mBAAmB,GAC9B,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAC9B,MAAM,CAAC;IAER,UAAiB,uBAAuB;QACvC,MAAM,EAAE,MAAM,CAAC;KACf;CACD"}
@@ -1,3 +1,2 @@
1
- import * as backend from "#backend";
2
1
  export { Realm } from "#backend";
3
2
  //# sourceMappingURL=realm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"realm.js","sourceRoot":"","sources":["../../frontend/realm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"realm.js","sourceRoot":"","sources":["../../frontend/realm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC"}
@@ -4,7 +4,7 @@ type InvokeArguments<Value> = Value extends (...args: infer Args) => unknown ? A
4
4
  type InvokeResult<Value> = Value extends (...args: unknown[]) => infer Result ? Result : never;
5
5
  export declare interface Reference<Type = unknown> extends backend.Reference {
6
6
  copy: () => Promise<Type>;
7
- invoke: (args: InvokeArguments<Type>) => Promise<MaybeCompletionOf<InvokeResult<Type>>>;
7
+ invoke: (args: InvokeArguments<Type>, options?: backend.TransferOptions) => Promise<MaybeCompletionOf<InvokeResult<Type>>>;
8
8
  set: (property: string, value: unknown) => Promise<true | null>;
9
9
  get<Key extends keyof Type>(property: Key): Promise<Reference<Type[Key]> | null>;
10
10
  get(property: string): Promise<Reference | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../frontend/reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,KAAK,eAAe,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5F,KAAK,YAAY,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE/F,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC,IAAI,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,SAAS;IAC3E,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxF,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAGhE,GAAG,CAAC,GAAG,SAAS,MAAM,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjF,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../frontend/reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,KAAK,eAAe,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5F,KAAK,YAAY,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE/F,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC,IAAI,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,SAAS;IAC3E,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,KAAK,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3H,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAGhE,GAAG,CAAC,GAAG,SAAS,MAAM,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjF,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;CACjD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=20.transfer_list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20.transfer_list.d.ts","sourceRoot":"","sources":["../../../test/10.transfer/20.transfer_list.ts"],"names":[],"mappings":""}
@@ -0,0 +1,199 @@
1
+ import { __addDisposableResource, __disposeResources } from "tslib";
2
+ import * as assert from "node:assert/strict";
3
+ import { test } from "node:test";
4
+ import { Agent, expect } from "@isolated-vm/experimental";
5
+ import { expectComplete, unsafeEvalAsStringInRealm } from "@isolated-vm/experimental/test/fixtures";
6
+ /** Returns a reference to a function which describes the buffers in its parameter */
7
+ async function makeDescribe(agent) {
8
+ const realm = expect(await agent.createRealm());
9
+ await unsafeEvalAsStringInRealm(agent, realm, () => {
10
+ // @ts-expect-error
11
+ globalThis.fn = (message) => message.buffer
12
+ ? [message.view ? message.view.buffer === message.buffer : null, ...new Uint8Array(message.buffer)]
13
+ : null;
14
+ });
15
+ const global = await realm.acquireGlobalObject();
16
+ return expect(await global.get("fn"));
17
+ }
18
+ await test("transferred buffer is moved", async () => {
19
+ const env_1 = { stack: [], error: void 0, hasError: false };
20
+ try {
21
+ const agent = __addDisposableResource(env_1, await Agent.create(), true);
22
+ const fn = await makeDescribe(agent);
23
+ const buffer = Uint8Array.from([1, 2, 3]).buffer;
24
+ const result = expectComplete(await fn.invoke([{ buffer }], { transfer: [buffer] }));
25
+ assert.equal(buffer.byteLength, 0);
26
+ assert.deepStrictEqual(result, [null, 1, 2, 3]);
27
+ }
28
+ catch (e_1) {
29
+ env_1.error = e_1;
30
+ env_1.hasError = true;
31
+ }
32
+ finally {
33
+ const result_1 = __disposeResources(env_1);
34
+ if (result_1)
35
+ await result_1;
36
+ }
37
+ });
38
+ await test("transferred buffer reached through a view", async () => {
39
+ const env_2 = { stack: [], error: void 0, hasError: false };
40
+ try {
41
+ const agent = __addDisposableResource(env_2, await Agent.create(), true);
42
+ const fn = await makeDescribe(agent);
43
+ const view = Uint8Array.from([1, 2, 3]);
44
+ const result = expectComplete(await fn.invoke([{ buffer: view.buffer, view }], { transfer: [view.buffer] }));
45
+ assert.equal(view.buffer.byteLength, 0);
46
+ assert.deepStrictEqual(result, [true, 1, 2, 3]);
47
+ }
48
+ catch (e_2) {
49
+ env_2.error = e_2;
50
+ env_2.hasError = true;
51
+ }
52
+ finally {
53
+ const result_2 = __disposeResources(env_2);
54
+ if (result_2)
55
+ await result_2;
56
+ }
57
+ });
58
+ await test("transferred buffer keeps its identity", async () => {
59
+ const env_3 = { stack: [], error: void 0, hasError: false };
60
+ try {
61
+ const agent = __addDisposableResource(env_3, await Agent.create(), true);
62
+ const fn = await makeDescribe(agent);
63
+ const buffer = Uint8Array.from([1, 2, 3]).buffer;
64
+ const view = new Uint8Array(buffer);
65
+ const result = expectComplete(await fn.invoke([{ buffer, view }], { transfer: [buffer] }));
66
+ assert.equal(buffer.byteLength, 0);
67
+ assert.deepStrictEqual(result, [true, 1, 2, 3]);
68
+ }
69
+ catch (e_3) {
70
+ env_3.error = e_3;
71
+ env_3.hasError = true;
72
+ }
73
+ finally {
74
+ const result_3 = __disposeResources(env_3);
75
+ if (result_3)
76
+ await result_3;
77
+ }
78
+ });
79
+ await test("unlisted buffer is copied", async () => {
80
+ const env_4 = { stack: [], error: void 0, hasError: false };
81
+ try {
82
+ const agent = __addDisposableResource(env_4, await Agent.create(), true);
83
+ const fn = await makeDescribe(agent);
84
+ const buffer = Uint8Array.from([1, 2, 3]).buffer;
85
+ const result = expectComplete(await fn.invoke([{ buffer }]));
86
+ assert.equal(buffer.byteLength, 3);
87
+ assert.deepStrictEqual(result, [null, 1, 2, 3]);
88
+ }
89
+ catch (e_4) {
90
+ env_4.error = e_4;
91
+ env_4.hasError = true;
92
+ }
93
+ finally {
94
+ const result_4 = __disposeResources(env_4);
95
+ if (result_4)
96
+ await result_4;
97
+ }
98
+ });
99
+ await test("unvisited buffer is detached", async () => {
100
+ const env_5 = { stack: [], error: void 0, hasError: false };
101
+ try {
102
+ const agent = __addDisposableResource(env_5, await Agent.create(), true);
103
+ const fn = await makeDescribe(agent);
104
+ const buffer = new ArrayBuffer(3);
105
+ expectComplete(await fn.invoke(["hello"], { transfer: [buffer] }));
106
+ assert.equal(buffer.byteLength, 0);
107
+ }
108
+ catch (e_5) {
109
+ env_5.error = e_5;
110
+ env_5.hasError = true;
111
+ }
112
+ finally {
113
+ const result_5 = __disposeResources(env_5);
114
+ if (result_5)
115
+ await result_5;
116
+ }
117
+ });
118
+ await test("duplicate buffer throws", async () => {
119
+ const env_6 = { stack: [], error: void 0, hasError: false };
120
+ try {
121
+ const agent = __addDisposableResource(env_6, await Agent.create(), true);
122
+ const fn = await makeDescribe(agent);
123
+ const buffer = new ArrayBuffer(3);
124
+ assert.throws(() => void fn.invoke([], { transfer: [buffer, buffer] }));
125
+ assert.equal(buffer.byteLength, 3);
126
+ }
127
+ catch (e_6) {
128
+ env_6.error = e_6;
129
+ env_6.hasError = true;
130
+ }
131
+ finally {
132
+ const result_6 = __disposeResources(env_6);
133
+ if (result_6)
134
+ await result_6;
135
+ }
136
+ });
137
+ await test("unknown transfer value throws", async () => {
138
+ const env_7 = { stack: [], error: void 0, hasError: false };
139
+ try {
140
+ const agent = __addDisposableResource(env_7, await Agent.create(), true);
141
+ const fn = await makeDescribe(agent);
142
+ assert.throws(() => void fn.invoke([], { transfer: [{}] }));
143
+ }
144
+ catch (e_7) {
145
+ env_7.error = e_7;
146
+ env_7.hasError = true;
147
+ }
148
+ finally {
149
+ const result_7 = __disposeResources(env_7);
150
+ if (result_7)
151
+ await result_7;
152
+ }
153
+ });
154
+ await test("sparse transfer list throws", async () => {
155
+ const env_8 = { stack: [], error: void 0, hasError: false };
156
+ try {
157
+ const agent = __addDisposableResource(env_8, await Agent.create(), true);
158
+ const fn = await makeDescribe(agent);
159
+ const buffer = new ArrayBuffer(3);
160
+ const list = new Array(2);
161
+ list[1] = buffer;
162
+ assert.throws(() => void fn.invoke([], { transfer: list }), /sparse/i);
163
+ assert.equal(buffer.byteLength, 3);
164
+ }
165
+ catch (e_8) {
166
+ env_8.error = e_8;
167
+ env_8.hasError = true;
168
+ }
169
+ finally {
170
+ const result_8 = __disposeResources(env_8);
171
+ if (result_8)
172
+ await result_8;
173
+ }
174
+ });
175
+ await test("throwing transfer list getter propagates", async () => {
176
+ const env_9 = { stack: [], error: void 0, hasError: false };
177
+ try {
178
+ const agent = __addDisposableResource(env_9, await Agent.create(), true);
179
+ const fn = await makeDescribe(agent);
180
+ const list = [];
181
+ Object.defineProperty(list, 0, {
182
+ enumerable: true,
183
+ get: () => {
184
+ throw new Error("boom");
185
+ },
186
+ });
187
+ assert.throws(() => void fn.invoke([], { transfer: list }), /boom/);
188
+ }
189
+ catch (e_9) {
190
+ env_9.error = e_9;
191
+ env_9.hasError = true;
192
+ }
193
+ finally {
194
+ const result_9 = __disposeResources(env_9);
195
+ if (result_9)
196
+ await result_9;
197
+ }
198
+ });
199
+ //# sourceMappingURL=20.transfer_list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20.transfer_list.js","sourceRoot":"","sources":["../../../test/10.transfer/20.transfer_list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=15.transfer_return.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"15.transfer_return.d.ts","sourceRoot":"","sources":["../../../test/20.intrinsics/15.transfer_return.ts"],"names":[],"mappings":""}