@ricsam/isolate 0.1.11 → 0.1.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 (73) hide show
  1. package/README.md +101 -1
  2. package/dist/cjs/bridge/runtime-bindings.cjs +36 -8
  3. package/dist/cjs/bridge/runtime-bindings.cjs.map +3 -3
  4. package/dist/cjs/bridge/sandbox-isolate.cjs +157 -2
  5. package/dist/cjs/bridge/sandbox-isolate.cjs.map +3 -3
  6. package/dist/cjs/host/create-isolate-host.cjs +85 -1
  7. package/dist/cjs/host/create-isolate-host.cjs.map +3 -3
  8. package/dist/cjs/host/nested-host-controller.cjs +95 -5
  9. package/dist/cjs/host/nested-host-controller.cjs.map +3 -3
  10. package/dist/cjs/index.cjs.map +1 -1
  11. package/dist/cjs/internal/browser-source.cjs +16 -5
  12. package/dist/cjs/internal/browser-source.cjs.map +3 -3
  13. package/dist/cjs/internal/client/connection.cjs +20 -9
  14. package/dist/cjs/internal/client/connection.cjs.map +3 -3
  15. package/dist/cjs/internal/daemon/connection.cjs +28 -10
  16. package/dist/cjs/internal/daemon/connection.cjs.map +3 -3
  17. package/dist/cjs/internal/protocol/types.cjs +2 -1
  18. package/dist/cjs/internal/protocol/types.cjs.map +3 -3
  19. package/dist/cjs/internal/runtime/index.cjs +5 -2
  20. package/dist/cjs/internal/runtime/index.cjs.map +3 -3
  21. package/dist/cjs/internal/typecheck/isolate-types.cjs +82 -1
  22. package/dist/cjs/internal/typecheck/isolate-types.cjs.map +3 -3
  23. package/dist/cjs/package.json +1 -1
  24. package/dist/cjs/playwright.cjs +76 -0
  25. package/dist/cjs/playwright.cjs.map +10 -0
  26. package/dist/cjs/runtime/namespaced-runtime.cjs +184 -0
  27. package/dist/cjs/runtime/namespaced-runtime.cjs.map +10 -0
  28. package/dist/cjs/runtime/test-event-subscriptions.cjs +76 -0
  29. package/dist/cjs/runtime/test-event-subscriptions.cjs.map +10 -0
  30. package/dist/cjs/runtime/test-runtime.cjs +26 -3
  31. package/dist/cjs/runtime/test-runtime.cjs.map +3 -3
  32. package/dist/mjs/bridge/runtime-bindings.mjs +36 -8
  33. package/dist/mjs/bridge/runtime-bindings.mjs.map +3 -3
  34. package/dist/mjs/bridge/sandbox-isolate.mjs +157 -2
  35. package/dist/mjs/bridge/sandbox-isolate.mjs.map +3 -3
  36. package/dist/mjs/host/create-isolate-host.mjs +85 -1
  37. package/dist/mjs/host/create-isolate-host.mjs.map +3 -3
  38. package/dist/mjs/host/nested-host-controller.mjs +95 -5
  39. package/dist/mjs/host/nested-host-controller.mjs.map +3 -3
  40. package/dist/mjs/index.mjs.map +1 -1
  41. package/dist/mjs/internal/browser-source.mjs +16 -5
  42. package/dist/mjs/internal/browser-source.mjs.map +3 -3
  43. package/dist/mjs/internal/client/connection.mjs +20 -9
  44. package/dist/mjs/internal/client/connection.mjs.map +3 -3
  45. package/dist/mjs/internal/daemon/connection.mjs +28 -10
  46. package/dist/mjs/internal/daemon/connection.mjs.map +3 -3
  47. package/dist/mjs/internal/protocol/types.mjs +2 -1
  48. package/dist/mjs/internal/protocol/types.mjs.map +3 -3
  49. package/dist/mjs/internal/runtime/index.mjs +5 -2
  50. package/dist/mjs/internal/runtime/index.mjs.map +3 -3
  51. package/dist/mjs/internal/typecheck/isolate-types.mjs +82 -1
  52. package/dist/mjs/internal/typecheck/isolate-types.mjs.map +3 -3
  53. package/dist/mjs/package.json +1 -1
  54. package/dist/mjs/playwright.mjs +47 -0
  55. package/dist/mjs/playwright.mjs.map +10 -0
  56. package/dist/mjs/runtime/namespaced-runtime.mjs +146 -0
  57. package/dist/mjs/runtime/namespaced-runtime.mjs.map +10 -0
  58. package/dist/mjs/runtime/test-event-subscriptions.mjs +36 -0
  59. package/dist/mjs/runtime/test-event-subscriptions.mjs.map +10 -0
  60. package/dist/mjs/runtime/test-runtime.mjs +26 -3
  61. package/dist/mjs/runtime/test-runtime.mjs.map +3 -3
  62. package/dist/types/bridge/sandbox-isolate.d.ts +9 -3
  63. package/dist/types/host/nested-host-controller.d.ts +5 -1
  64. package/dist/types/index.d.ts +1 -1
  65. package/dist/types/internal/browser-source.d.ts +1 -2
  66. package/dist/types/internal/client/types.d.ts +4 -0
  67. package/dist/types/internal/protocol/types.d.ts +8 -1
  68. package/dist/types/internal/typecheck/isolate-types.d.ts +2 -2
  69. package/dist/types/playwright.d.ts +26 -0
  70. package/dist/types/runtime/namespaced-runtime.d.ts +13 -0
  71. package/dist/types/runtime/test-event-subscriptions.d.ts +12 -0
  72. package/dist/types/types.d.ts +51 -3
  73. package/package.json +6 -1
@@ -0,0 +1,26 @@
1
+ import { type PlaywrightCallback } from "./internal/playwright/client.ts";
2
+ import type { CollectedData, PlaywrightEvent, PlaywrightFileData, PlaywrightOperation, PlaywrightResult } from "./internal/protocol/index.ts";
3
+ export type PlaywrightSessionHandlerCallback = PlaywrightCallback;
4
+ export interface CreatePlaywrightSessionHandlerOptions<TContext = unknown, TPage = unknown, TContextOptions = unknown> {
5
+ timeout?: number;
6
+ createContext?: (options?: TContextOptions) => Promise<TContext> | TContext;
7
+ createPage?: (context: TContext) => Promise<TPage> | TPage;
8
+ readFile?: (filePath: string) => Promise<PlaywrightFileData> | PlaywrightFileData;
9
+ writeFile?: (filePath: string, data: Buffer) => Promise<void> | void;
10
+ evaluatePredicate?: (predicateId: number, data: unknown) => boolean;
11
+ }
12
+ export interface PlaywrightSessionHandler {
13
+ handler: PlaywrightSessionHandlerCallback;
14
+ getCollectedData(): CollectedData;
15
+ getTrackedResources(): {
16
+ contexts: string[];
17
+ pages: string[];
18
+ };
19
+ clearCollectedData(): void;
20
+ onEvent(callback: (event: PlaywrightEvent) => void): () => void;
21
+ }
22
+ export { DEFAULT_PLAYWRIGHT_HANDLER_META, PLAYWRIGHT_HANDLER_META, } from "./internal/playwright/types.ts";
23
+ export type { BrowserConsoleLogEntry, DefaultPlaywrightHandler, DefaultPlaywrightHandlerMetadata, DefaultPlaywrightHandlerOptions, NetworkRequestInfo, NetworkResponseInfo, PageErrorInfo, PlaywrightCollector, PlaywrightHandlerMetadata, PlaywrightHandle, RequestFailureInfo, } from "./internal/playwright/client.ts";
24
+ export type { CollectedData, PlaywrightEvent, PlaywrightFileData, PlaywrightOperation, PlaywrightResult, };
25
+ export { createPlaywrightHandler, defaultPlaywrightHandler, getDefaultPlaywrightHandlerMetadata, getPlaywrightHandlerMetadata, } from "./internal/playwright/client.ts";
26
+ export declare function createPlaywrightSessionHandler<TContext = unknown, TPage = unknown, TContextOptions = unknown>(options?: CreatePlaywrightSessionHandlerOptions<TContext, TPage, TContextOptions>): PlaywrightSessionHandler;
@@ -0,0 +1,13 @@
1
+ import { type MutableRuntimeDiagnostics } from "../bridge/diagnostics.ts";
2
+ import { type RemoteRuntime } from "../internal/client/index.ts";
3
+ import type { TestEventSubscriptions } from "./test-event-subscriptions.ts";
4
+ import type { NamespacedRuntime } from "../types.ts";
5
+ export interface NamespacedRuntimeAdapter extends NamespacedRuntime {
6
+ invalidate(reason?: string): void;
7
+ }
8
+ export declare function createNamespacedRuntimeAdapter(runtime: RemoteRuntime, diagnostics: MutableRuntimeDiagnostics, options: {
9
+ hasBrowser?: boolean;
10
+ abortBindings?: (reason?: string) => void;
11
+ onRelease?: () => void;
12
+ testEvents: TestEventSubscriptions;
13
+ }): NamespacedRuntimeAdapter;
@@ -0,0 +1,12 @@
1
+ import type { TestEvent } from "../types.ts";
2
+ interface TestEventApi {
3
+ onEvent(handler: (event: TestEvent) => void): () => void;
4
+ }
5
+ export interface TestEventSubscriptions {
6
+ readonly api: TestEventApi;
7
+ emit(event: TestEvent): void;
8
+ clear(): void;
9
+ setEnsureUsable(ensureUsable?: () => void): void;
10
+ }
11
+ export declare function createTestEventSubscriptions(ensureUsable?: () => void): TestEventSubscriptions;
12
+ export {};
@@ -1,4 +1,5 @@
1
1
  import type { ConsoleEntry as LegacyConsoleEntry, PlaywrightEvent as LegacyPlaywrightEvent, RunResults as LegacyRunResults, TestEvent as LegacyTestEvent } from "./internal/client/index.ts";
2
+ import type { PlaywrightSessionHandlerCallback } from "./playwright.ts";
2
3
  export type ConsoleEntry = LegacyConsoleEntry;
3
4
  export type RunResults = LegacyRunResults;
4
5
  export type TestEvent = LegacyTestEvent;
@@ -47,14 +48,25 @@ export interface FileBindings {
47
48
  }>;
48
49
  rename?: (from: string, to: string, context: HostCallContext) => Promise<void>;
49
50
  }
50
- export interface HostBrowserBindings {
51
- createContext?: (options: unknown, context: HostCallContext) => Promise<any> | any;
52
- createPage?: (contextHandle: any, context: HostCallContext) => Promise<any> | any;
51
+ interface HostBrowserBindingBase {
53
52
  captureConsole?: boolean;
54
53
  onEvent?: (event: PlaywrightEvent, context: HostCallContext) => void;
54
+ }
55
+ export interface HostBrowserFactoryBindings extends HostBrowserBindingBase {
56
+ createContext?: (options: unknown, context: HostCallContext) => Promise<any> | any;
57
+ createPage?: (contextHandle: any, context: HostCallContext) => Promise<any> | any;
55
58
  readFile?: (path: string, context: HostCallContext) => Promise<Buffer> | Buffer;
56
59
  writeFile?: (path: string, data: Buffer, context: HostCallContext) => Promise<void> | void;
60
+ handler?: never;
61
+ }
62
+ export interface HostBrowserHandlerBindings extends HostBrowserBindingBase {
63
+ handler: PlaywrightSessionHandlerCallback;
64
+ createContext?: never;
65
+ createPage?: never;
66
+ readFile?: never;
67
+ writeFile?: never;
57
68
  }
69
+ export type HostBrowserBindings = HostBrowserFactoryBindings | HostBrowserHandlerBindings;
58
70
  export type ToolHandler = (...args: [...unknown[], HostCallContext]) => unknown | Promise<unknown> | AsyncGenerator<unknown, unknown, unknown>;
59
71
  export type ToolBindings = Record<string, ToolHandler>;
60
72
  export interface HostBindings {
@@ -163,6 +175,31 @@ export interface TestRuntime {
163
175
  hard?: boolean;
164
176
  reason?: string;
165
177
  }): Promise<void>;
178
+ test: {
179
+ onEvent(handler: (event: TestEvent) => void): () => void;
180
+ };
181
+ }
182
+ export interface NamespacedRuntime {
183
+ eval(code: string, options?: {
184
+ filename?: string;
185
+ executionTimeout?: number;
186
+ }): Promise<void>;
187
+ runTests(code: string, options?: {
188
+ filename?: string;
189
+ timeoutMs?: number;
190
+ }): Promise<RunResults>;
191
+ diagnostics(): Promise<TestRuntimeDiagnostics>;
192
+ dispose(options?: {
193
+ hard?: boolean;
194
+ reason?: string;
195
+ }): Promise<void>;
196
+ test: {
197
+ onEvent(handler: (event: TestEvent) => void): () => void;
198
+ };
199
+ events: {
200
+ on(event: string, handler: (payload: unknown) => void): () => void;
201
+ emit(event: string, payload: unknown): Promise<void>;
202
+ };
166
203
  }
167
204
  export interface CreateRuntimeOptions {
168
205
  key?: string;
@@ -171,6 +208,12 @@ export interface CreateRuntimeOptions {
171
208
  executionTimeout?: number;
172
209
  memoryLimitMB?: number;
173
210
  }
211
+ export interface CreateNamespacedRuntimeOptions {
212
+ bindings: HostBindings;
213
+ cwd?: string;
214
+ executionTimeout?: number;
215
+ memoryLimitMB?: number;
216
+ }
174
217
  export interface CreateTestRuntimeOptions extends CreateRuntimeOptions {
175
218
  }
176
219
  export interface CreateAppServerOptions extends CreateRuntimeOptions {
@@ -191,6 +234,10 @@ export interface IsolateHost {
191
234
  createAppServer(options: CreateAppServerOptions): Promise<AppServer>;
192
235
  createRuntime(options: CreateRuntimeOptions): Promise<ScriptRuntime>;
193
236
  createTestRuntime(options: CreateTestRuntimeOptions): Promise<TestRuntime>;
237
+ getNamespacedRuntime(key: string, options: CreateNamespacedRuntimeOptions): Promise<NamespacedRuntime>;
238
+ disposeNamespace(key: string, options?: {
239
+ reason?: string;
240
+ }): Promise<void>;
194
241
  diagnostics(): Promise<{
195
242
  runtimes: number;
196
243
  servers: number;
@@ -231,3 +278,4 @@ export interface TypecheckRequest {
231
278
  }>;
232
279
  compilerOptions?: Record<string, unknown>;
233
280
  }
281
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ricsam/isolate",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "type": "module",
5
5
  "description": "Unified runtime host for app servers, script runtimes, browser runtimes, module resolution, file bindings, and typechecking",
6
6
  "author": "ricsam <oss@ricsam.dev>",
@@ -37,6 +37,11 @@
37
37
  "types": "./dist/types/daemon.d.ts",
38
38
  "require": "./dist/cjs/daemon.cjs",
39
39
  "import": "./dist/mjs/daemon.mjs"
40
+ },
41
+ "./playwright": {
42
+ "types": "./dist/types/playwright.d.ts",
43
+ "require": "./dist/cjs/playwright.cjs",
44
+ "import": "./dist/mjs/playwright.mjs"
40
45
  }
41
46
  },
42
47
  "bin": {