@ricsam/isolate 0.1.10 → 0.1.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.
- package/README.md +257 -18
- package/dist/cjs/bridge/diagnostics.cjs +37 -2
- package/dist/cjs/bridge/diagnostics.cjs.map +3 -3
- package/dist/cjs/bridge/runtime-bindings.cjs +230 -51
- package/dist/cjs/bridge/runtime-bindings.cjs.map +3 -3
- package/dist/cjs/bridge/sandbox-isolate.cjs +464 -0
- package/dist/cjs/bridge/sandbox-isolate.cjs.map +10 -0
- package/dist/cjs/host/create-isolate-host.cjs +130 -25
- package/dist/cjs/host/create-isolate-host.cjs.map +3 -3
- package/dist/cjs/host/nested-host-controller.cjs +369 -0
- package/dist/cjs/host/nested-host-controller.cjs.map +10 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/internal/browser-source.cjs +102 -0
- package/dist/cjs/internal/browser-source.cjs.map +10 -0
- package/dist/cjs/internal/client/connection.cjs +163 -172
- package/dist/cjs/internal/client/connection.cjs.map +3 -3
- package/dist/cjs/internal/daemon/callback-fs-handler.cjs +3 -3
- package/dist/cjs/internal/daemon/callback-fs-handler.cjs.map +3 -3
- package/dist/cjs/internal/daemon/connection.cjs +156 -13
- package/dist/cjs/internal/daemon/connection.cjs.map +3 -3
- package/dist/cjs/internal/playwright/client.cjs +4 -2
- package/dist/cjs/internal/playwright/client.cjs.map +3 -3
- package/dist/cjs/internal/playwright/handler.cjs +298 -25
- package/dist/cjs/internal/playwright/handler.cjs.map +3 -3
- package/dist/cjs/internal/playwright/index.cjs +54 -8
- package/dist/cjs/internal/playwright/index.cjs.map +3 -3
- package/dist/cjs/internal/playwright/types.cjs +3 -1
- package/dist/cjs/internal/playwright/types.cjs.map +3 -3
- package/dist/cjs/internal/protocol/codec.cjs +16 -5
- package/dist/cjs/internal/protocol/codec.cjs.map +3 -3
- package/dist/cjs/internal/protocol/marshalValue.cjs +37 -6
- package/dist/cjs/internal/protocol/marshalValue.cjs.map +3 -3
- package/dist/cjs/internal/protocol/types.cjs +2 -1
- package/dist/cjs/internal/protocol/types.cjs.map +3 -3
- package/dist/cjs/internal/runtime/index.cjs +377 -22
- package/dist/cjs/internal/runtime/index.cjs.map +3 -3
- package/dist/cjs/internal/typecheck/index.cjs +2 -1
- package/dist/cjs/internal/typecheck/index.cjs.map +3 -3
- package/dist/cjs/internal/typecheck/isolate-types.cjs +218 -13
- package/dist/cjs/internal/typecheck/isolate-types.cjs.map +3 -3
- package/dist/cjs/internal/typecheck/typecheck.cjs +2 -3
- package/dist/cjs/internal/typecheck/typecheck.cjs.map +3 -3
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/playwright.cjs +76 -0
- package/dist/cjs/playwright.cjs.map +10 -0
- package/dist/cjs/runtime/namespaced-runtime.cjs +181 -0
- package/dist/cjs/runtime/namespaced-runtime.cjs.map +10 -0
- package/dist/cjs/runtime/script-runtime.cjs +14 -12
- package/dist/cjs/runtime/script-runtime.cjs.map +3 -3
- package/dist/cjs/runtime/test-runtime.cjs +113 -0
- package/dist/cjs/runtime/test-runtime.cjs.map +10 -0
- package/dist/cjs/server/app-server.cjs +16 -9
- package/dist/cjs/server/app-server.cjs.map +3 -3
- package/dist/cjs/typecheck/index.cjs +2 -1
- package/dist/cjs/typecheck/index.cjs.map +3 -3
- package/dist/mjs/bridge/diagnostics.mjs +37 -2
- package/dist/mjs/bridge/diagnostics.mjs.map +3 -3
- package/dist/mjs/bridge/runtime-bindings.mjs +233 -51
- package/dist/mjs/bridge/runtime-bindings.mjs.map +3 -3
- package/dist/mjs/bridge/sandbox-isolate.mjs +424 -0
- package/dist/mjs/bridge/sandbox-isolate.mjs.map +10 -0
- package/dist/mjs/host/create-isolate-host.mjs +132 -25
- package/dist/mjs/host/create-isolate-host.mjs.map +3 -3
- package/dist/mjs/host/nested-host-controller.mjs +333 -0
- package/dist/mjs/host/nested-host-controller.mjs.map +10 -0
- package/dist/mjs/index.mjs.map +1 -1
- package/dist/mjs/internal/browser-source.mjs +62 -0
- package/dist/mjs/internal/browser-source.mjs.map +10 -0
- package/dist/mjs/internal/client/connection.mjs +165 -173
- package/dist/mjs/internal/client/connection.mjs.map +3 -3
- package/dist/mjs/internal/daemon/callback-fs-handler.mjs +3 -3
- package/dist/mjs/internal/daemon/callback-fs-handler.mjs.map +3 -3
- package/dist/mjs/internal/daemon/connection.mjs +156 -13
- package/dist/mjs/internal/daemon/connection.mjs.map +3 -3
- package/dist/mjs/internal/playwright/client.mjs +7 -3
- package/dist/mjs/internal/playwright/client.mjs.map +3 -3
- package/dist/mjs/internal/playwright/handler.mjs +300 -26
- package/dist/mjs/internal/playwright/handler.mjs.map +3 -3
- package/dist/mjs/internal/playwright/index.mjs +59 -9
- package/dist/mjs/internal/playwright/index.mjs.map +3 -3
- package/dist/mjs/internal/playwright/types.mjs +3 -1
- package/dist/mjs/internal/playwright/types.mjs.map +3 -3
- package/dist/mjs/internal/protocol/codec.mjs +16 -5
- package/dist/mjs/internal/protocol/codec.mjs.map +3 -3
- package/dist/mjs/internal/protocol/marshalValue.mjs +38 -6
- package/dist/mjs/internal/protocol/marshalValue.mjs.map +3 -3
- package/dist/mjs/internal/protocol/types.mjs +2 -1
- package/dist/mjs/internal/protocol/types.mjs.map +3 -3
- package/dist/mjs/internal/runtime/index.mjs +377 -22
- package/dist/mjs/internal/runtime/index.mjs.map +3 -3
- package/dist/mjs/internal/typecheck/index.mjs +3 -1
- package/dist/mjs/internal/typecheck/index.mjs.map +3 -3
- package/dist/mjs/internal/typecheck/isolate-types.mjs +218 -13
- package/dist/mjs/internal/typecheck/isolate-types.mjs.map +3 -3
- package/dist/mjs/internal/typecheck/typecheck.mjs +2 -3
- package/dist/mjs/internal/typecheck/typecheck.mjs.map +3 -3
- package/dist/mjs/package.json +1 -1
- package/dist/mjs/playwright.mjs +47 -0
- package/dist/mjs/playwright.mjs.map +10 -0
- package/dist/mjs/runtime/namespaced-runtime.mjs +143 -0
- package/dist/mjs/runtime/namespaced-runtime.mjs.map +10 -0
- package/dist/mjs/runtime/script-runtime.mjs +16 -12
- package/dist/mjs/runtime/script-runtime.mjs.map +3 -3
- package/dist/mjs/runtime/test-runtime.mjs +78 -0
- package/dist/mjs/runtime/test-runtime.mjs.map +10 -0
- package/dist/mjs/server/app-server.mjs +23 -11
- package/dist/mjs/server/app-server.mjs.map +3 -3
- package/dist/mjs/typecheck/index.mjs +2 -1
- package/dist/mjs/typecheck/index.mjs.map +3 -3
- package/dist/types/bridge/diagnostics.d.ts +6 -1
- package/dist/types/bridge/runtime-bindings.d.ts +5 -1
- package/dist/types/bridge/sandbox-isolate.d.ts +21 -0
- package/dist/types/host/nested-host-controller.d.ts +15 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/internal/browser-source.d.ts +10 -0
- package/dist/types/internal/client/types.d.ts +9 -0
- package/dist/types/internal/daemon/types.d.ts +0 -2
- package/dist/types/internal/playwright/client.d.ts +2 -2
- package/dist/types/internal/playwright/handler.d.ts +27 -4
- package/dist/types/internal/playwright/index.d.ts +2 -2
- package/dist/types/internal/playwright/types.d.ts +33 -1
- package/dist/types/internal/protocol/codec.d.ts +12 -2
- package/dist/types/internal/protocol/marshalValue.d.ts +3 -2
- package/dist/types/internal/protocol/types.d.ts +33 -2
- package/dist/types/internal/runtime/index.d.ts +5 -0
- package/dist/types/internal/typecheck/index.d.ts +1 -1
- package/dist/types/internal/typecheck/isolate-types.d.ts +6 -4
- package/dist/types/internal/typecheck/typecheck.d.ts +1 -1
- package/dist/types/playwright.d.ts +26 -0
- package/dist/types/runtime/namespaced-runtime.d.ts +11 -0
- package/dist/types/runtime/script-runtime.d.ts +2 -1
- package/dist/types/runtime/test-runtime.d.ts +4 -0
- package/dist/types/server/app-server.d.ts +2 -1
- package/dist/types/types.d.ts +75 -33
- package/package.json +8 -3
- package/dist/cjs/browser/browser-runtime.cjs +0 -157
- package/dist/cjs/browser/browser-runtime.cjs.map +0 -10
- package/dist/mjs/browser/browser-runtime.mjs +0 -93
- package/dist/mjs/browser/browser-runtime.mjs.map +0 -10
- package/dist/types/browser/browser-runtime.d.ts +0 -3
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/playwright/types.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * Client-safe types for ./index.ts\n * This module can be imported without loading isolated-vm\n */\n\n// Re-export protocol types\nexport type {\n PlaywrightOperation,\n PlaywrightResult,\n PlaywrightEvent,\n PlaywrightFileData,\n} from \"../protocol/index.cjs\";\n\n// ============================================================================\n// Types and Interfaces\n// ============================================================================\n\nexport interface NetworkRequestInfo {\n requestId: string;\n url: string;\n method: string;\n headers: Record<string, string>;\n postData?: string;\n resourceType: string;\n timestamp: number;\n}\n\nexport interface NetworkResponseInfo {\n requestId: string;\n url: string;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n resourceType?: string;\n timestamp: number;\n}\n\n/**\n * Browser console log entry - logs from the page context (not sandbox).\n */\nexport interface BrowserConsoleLogEntry {\n level: string;\n stdout: string;\n location?: {\n url?: string;\n lineNumber?: number;\n columnNumber?: number;\n };\n timestamp: number;\n}\n\nexport interface PageErrorInfo {\n name: string;\n message: string;\n stack?: string;\n timestamp: number;\n}\n\nexport interface RequestFailureInfo {\n requestId: string;\n url: string;\n method: string;\n failureText: string;\n resourceType?: string;\n timestamp: number;\n}\n\n/**\n * Callback type for handling playwright operations.\n * Used for remote execution where the page lives on the client.\n */\nexport type PlaywrightCallback = (\n op: import(\"../protocol/index.cjs\").PlaywrightOperation\n) => Promise<import(\"../protocol/index.cjs\").PlaywrightResult>;\n\n/**\n * Symbol key used to attach metadata to handlers created by\n * defaultPlaywrightHandler(). Enables adapter layers to keep local ergonomics\n * (event capture, collected data) without exposing page-mode in runtime options.\n */\nexport const DEFAULT_PLAYWRIGHT_HANDLER_META = Symbol.for(\n \"./index.ts/default-handler-meta\"\n);\n\n/**\n * Options for defaultPlaywrightHandler(page, options).\n */\nexport interface DefaultPlaywrightHandlerOptions {\n /** Default timeout for operations */\n timeout?: number;\n /** Callback to read files for setInputFiles() with file paths */\n readFile?: (filePath: string) => Promise<import(\"../protocol/index.cjs\").PlaywrightFileData> | import(\"../protocol/index.cjs\").PlaywrightFileData;\n /** Callback to write files for screenshot()/pdf() with path option */\n writeFile?: (filePath: string, data: Buffer) => Promise<void> | void;\n /** Callback to create new pages when context.newPage() is called */\n createPage?: (context: import(\"playwright\").BrowserContext) => Promise<import(\"playwright\").Page> | import(\"playwright\").Page;\n /** Callback to create new contexts when browser.newContext() is called */\n createContext?: (options?: import(\"playwright\").BrowserContextOptions) => Promise<import(\"playwright\").BrowserContext> | import(\"playwright\").BrowserContext;\n /** Callback to evaluate a predicate function inside the isolate (used by waitForURL/Request/Response with function predicates) */\n evaluatePredicate?: (predicateId: number, data: unknown) => boolean;\n}\n\n/**\n * Metadata attached to handlers created by defaultPlaywrightHandler().\n */\nexport interface DefaultPlaywrightHandlerMetadata {\n page: import(\"playwright\").Page;\n options?: DefaultPlaywrightHandlerOptions;\n}\n\n/**\n * Handler created by defaultPlaywrightHandler().\n */\nexport type DefaultPlaywrightHandler = PlaywrightCallback & {\n [DEFAULT_PLAYWRIGHT_HANDLER_META]?: DefaultPlaywrightHandlerMetadata;\n};\n\n/**\n * Options for setting up playwright in an isolate.\n */\nexport interface PlaywrightSetupOptions {\n /** Direct page object (for local use) */\n page?: import(\"playwright\").Page;\n /** Handler callback (for remote use - daemon invokes this) */\n handler?: PlaywrightCallback;\n /** Default timeout for operations */\n timeout?: number;\n /** If true, browser console logs are printed to stdout */\n console?: boolean;\n /** Unified event callback for all playwright events */\n onEvent?: (event: import(\"../protocol/index.cjs\").PlaywrightEvent) => void;\n /**\n * Callback to read files for setInputFiles() operations.\n * This allows the host to control which files the isolate can access.\n * If not provided, setInputFiles() with file paths will throw an error.\n */\n readFile?: (filePath: string) => Promise<import(\"../protocol/index.cjs\").PlaywrightFileData> | import(\"../protocol/index.cjs\").PlaywrightFileData;\n /**\n * Callback to write files for screenshot() and pdf() operations with path option.\n * This allows the host to control where files are written.\n * If not provided, screenshot()/pdf() with path option will throw an error.\n */\n writeFile?: (filePath: string, data: Buffer) => Promise<void> | void;\n /**\n * Callback invoked when context.newPage() is called from within the isolate.\n * Host creates/configures the new page. If not provided, newPage() will throw an error.\n * Receives the BrowserContext so you can call context.newPage().\n * @param context - The BrowserContext that requested the new page\n * @returns The new Page object\n */\n createPage?: (context: import(\"playwright\").BrowserContext) => Promise<import(\"playwright\").Page> | import(\"playwright\").Page;\n /**\n * Callback invoked when browser.newContext() is called from within the isolate.\n * Host creates/configures the new context. If not provided, newContext() will throw an error.\n * @param options - Browser context options passed from the isolate\n * @returns The new BrowserContext object\n */\n createContext?: (options?: import(\"playwright\").BrowserContextOptions) => Promise<import(\"playwright\").BrowserContext> | import(\"playwright\").BrowserContext;\n}\n\nexport interface PlaywrightHandle {\n dispose(): void;\n /** Get browser console logs (from the page, not sandbox) */\n getBrowserConsoleLogs(): BrowserConsoleLogEntry[];\n /** Get uncaught page errors */\n getPageErrors(): PageErrorInfo[];\n getNetworkRequests(): NetworkRequestInfo[];\n getNetworkResponses(): NetworkResponseInfo[];\n /** Get network request failures (DNS, abort, connection reset, etc.) */\n getRequestFailures(): RequestFailureInfo[];\n clearCollected(): void;\n}\n"
|
|
5
|
+
"/**\n * Client-safe types for ./index.ts\n * This module can be imported without loading isolated-vm\n */\n\n// Re-export protocol types\nexport type {\n PlaywrightOperation,\n PlaywrightResult,\n PlaywrightEvent,\n PlaywrightFileData,\n CollectedData,\n ConsoleEntry,\n} from \"../protocol/index.cjs\";\n\n// ============================================================================\n// Types and Interfaces\n// ============================================================================\n\nexport interface NetworkRequestInfo {\n contextId: string;\n pageId: string;\n requestId: string;\n url: string;\n method: string;\n headers: Record<string, string>;\n postData?: string;\n resourceType: string;\n timestamp: number;\n}\n\nexport interface NetworkResponseInfo {\n contextId: string;\n pageId: string;\n requestId: string;\n url: string;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n resourceType?: string;\n timestamp: number;\n}\n\n/**\n * Browser console log entry - logs from the page context (not sandbox).\n */\nexport interface BrowserConsoleLogEntry {\n contextId: string;\n pageId: string;\n level: string;\n stdout: string;\n location?: {\n url?: string;\n lineNumber?: number;\n columnNumber?: number;\n };\n timestamp: number;\n}\n\nexport interface PageErrorInfo {\n contextId: string;\n pageId: string;\n name: string;\n message: string;\n stack?: string;\n timestamp: number;\n}\n\nexport interface RequestFailureInfo {\n contextId: string;\n pageId: string;\n requestId: string;\n url: string;\n method: string;\n failureText: string;\n resourceType?: string;\n timestamp: number;\n}\n\n/**\n * Callback type for handling playwright operations.\n * Used for remote execution where the page lives on the client.\n */\nexport type PlaywrightCallback = (\n op: import(\"../protocol/index.cjs\").PlaywrightOperation\n) => Promise<import(\"../protocol/index.cjs\").PlaywrightResult>;\n\n/**\n * Symbol key used to attach metadata to handlers created by\n * defaultPlaywrightHandler(). Enables adapter layers to keep local ergonomics\n * (event capture, collected data) without exposing page-mode in runtime options.\n */\nexport const DEFAULT_PLAYWRIGHT_HANDLER_META = Symbol.for(\n \"./index.ts/default-handler-meta\"\n);\n\n/**\n * Options for defaultPlaywrightHandler(page, options).\n */\nexport interface DefaultPlaywrightHandlerOptions {\n /** Default timeout for operations */\n timeout?: number;\n /** Callback to read files for setInputFiles() with file paths */\n readFile?: (filePath: string) => Promise<import(\"../protocol/index.cjs\").PlaywrightFileData> | import(\"../protocol/index.cjs\").PlaywrightFileData;\n /** Callback to write files for screenshot()/pdf() with path option */\n writeFile?: (filePath: string, data: Buffer) => Promise<void> | void;\n /** Callback to create new pages when context.newPage() is called */\n createPage?: (context: import(\"playwright\").BrowserContext) => Promise<import(\"playwright\").Page> | import(\"playwright\").Page;\n /** Callback to create new contexts when browser.newContext() is called */\n createContext?: (options?: import(\"playwright\").BrowserContextOptions) => Promise<import(\"playwright\").BrowserContext> | import(\"playwright\").BrowserContext;\n /** Callback to evaluate a predicate function inside the isolate (used by waitForURL/Request/Response with function predicates) */\n evaluatePredicate?: (predicateId: number, data: unknown) => boolean;\n}\n\n/**\n * Metadata attached to handlers created by defaultPlaywrightHandler().\n */\nexport interface DefaultPlaywrightHandlerMetadata {\n page: import(\"playwright\").Page;\n options?: DefaultPlaywrightHandlerOptions;\n}\n\nexport interface PlaywrightCollector {\n getCollectedData(): import(\"../protocol/index.cjs\").CollectedData;\n getTrackedResources(): { contexts: string[]; pages: string[] };\n clearCollectedData(): void;\n onEvent(\n callback: (event: import(\"../protocol/index.cjs\").PlaywrightEvent) => void,\n ): () => void;\n}\n\nexport interface PlaywrightHandlerMetadata {\n collector: PlaywrightCollector;\n}\n\n/**\n * Handler created by defaultPlaywrightHandler().\n */\nexport type DefaultPlaywrightHandler = PlaywrightCallback & {\n [DEFAULT_PLAYWRIGHT_HANDLER_META]?: DefaultPlaywrightHandlerMetadata;\n};\n\nexport const PLAYWRIGHT_HANDLER_META = Symbol.for(\n \"./index.ts/handler-meta\"\n);\n\nexport type InstrumentedPlaywrightHandler = PlaywrightCallback & {\n [PLAYWRIGHT_HANDLER_META]?: PlaywrightHandlerMetadata;\n};\n\n/**\n * Options for setting up playwright in an isolate.\n */\nexport interface PlaywrightSetupOptions {\n /** Direct page object (for local use) */\n page?: import(\"playwright\").Page;\n /** Handler callback (for remote use - daemon invokes this) */\n handler?: PlaywrightCallback;\n /** Whether the isolate should expose default page/context globals. */\n hasDefaultPage?: boolean;\n /** Default timeout for operations */\n timeout?: number;\n /** If true, browser console logs are printed to stdout */\n console?: boolean;\n /** Unified event callback for all playwright events */\n onEvent?: (event: import(\"../protocol/index.cjs\").PlaywrightEvent) => void;\n /**\n * Callback to read files for setInputFiles() operations.\n * This allows the host to control which files the isolate can access.\n * If not provided, setInputFiles() with file paths will throw an error.\n */\n readFile?: (filePath: string) => Promise<import(\"../protocol/index.cjs\").PlaywrightFileData> | import(\"../protocol/index.cjs\").PlaywrightFileData;\n /**\n * Callback to write files for screenshot() and pdf() operations with path option.\n * This allows the host to control where files are written.\n * If not provided, screenshot()/pdf() with path option will throw an error.\n */\n writeFile?: (filePath: string, data: Buffer) => Promise<void> | void;\n /**\n * Callback invoked when context.newPage() is called from within the isolate.\n * Host creates/configures the new page. If not provided, newPage() will throw an error.\n * Receives the BrowserContext so you can call context.newPage().\n * @param context - The BrowserContext that requested the new page\n * @returns The new Page object\n */\n createPage?: (context: import(\"playwright\").BrowserContext) => Promise<import(\"playwright\").Page> | import(\"playwright\").Page;\n /**\n * Callback invoked when browser.newContext() is called from within the isolate.\n * Host creates/configures the new context. If not provided, newContext() will throw an error.\n * @param options - Browser context options passed from the isolate\n * @returns The new BrowserContext object\n */\n createContext?: (options?: import(\"playwright\").BrowserContextOptions) => Promise<import(\"playwright\").BrowserContext> | import(\"playwright\").BrowserContext;\n}\n\nexport interface PlaywrightHandle {\n dispose(): void;\n /** Get browser console logs (from the page, not sandbox) */\n getBrowserConsoleLogs(): BrowserConsoleLogEntry[];\n /** Get uncaught page errors */\n getPageErrors(): PageErrorInfo[];\n getNetworkRequests(): NetworkRequestInfo[];\n getNetworkResponses(): NetworkResponseInfo[];\n /** Get network request failures (DNS, abort, connection reset, etc.) */\n getRequestFailures(): RequestFailureInfo[];\n getTrackedResources(): { contexts: string[]; pages: string[] };\n clearCollected(): void;\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4FO,IAAM,kCAAkC,OAAO,IACpD,iCACF;AAgDO,IAAM,0BAA0B,OAAO,IAC5C,yBACF;",
|
|
8
|
+
"debugId": "4D9EC470354E064464756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -61,6 +61,7 @@ __export(exports_codec, {
|
|
|
61
61
|
createBlobRef: () => createBlobRef,
|
|
62
62
|
createBigIntRef: () => createBigIntRef,
|
|
63
63
|
createAsyncIteratorRef: () => createAsyncIteratorRef,
|
|
64
|
+
createAbortSignalRef: () => createAbortSignalRef,
|
|
64
65
|
ExtType: () => ExtType
|
|
65
66
|
});
|
|
66
67
|
module.exports = __toCommonJS(exports_codec);
|
|
@@ -105,13 +106,20 @@ function createExtensionCodec() {
|
|
|
105
106
|
encode: (value) => {
|
|
106
107
|
if (typeof value === "object" && value !== null && "__type" in value && value.__type === "CallbackRef") {
|
|
107
108
|
const ref = value;
|
|
108
|
-
return import_msgpack.encode({
|
|
109
|
+
return import_msgpack.encode({
|
|
110
|
+
callbackId: ref.callbackId,
|
|
111
|
+
callbackKind: ref.callbackKind
|
|
112
|
+
});
|
|
109
113
|
}
|
|
110
114
|
return null;
|
|
111
115
|
},
|
|
112
116
|
decode: (data) => {
|
|
113
117
|
const decoded = import_msgpack.decode(data);
|
|
114
|
-
return {
|
|
118
|
+
return {
|
|
119
|
+
__type: "CallbackRef",
|
|
120
|
+
callbackId: decoded.callbackId,
|
|
121
|
+
callbackKind: decoded.callbackKind
|
|
122
|
+
};
|
|
115
123
|
}
|
|
116
124
|
});
|
|
117
125
|
extensionCodec.register({
|
|
@@ -448,8 +456,8 @@ function decodeValue(data) {
|
|
|
448
456
|
function createIsolateRef(isolateId) {
|
|
449
457
|
return { __type: "IsolateRef", isolateId };
|
|
450
458
|
}
|
|
451
|
-
function createCallbackRef(callbackId) {
|
|
452
|
-
return { __type: "CallbackRef", callbackId };
|
|
459
|
+
function createCallbackRef(callbackId, callbackKind) {
|
|
460
|
+
return { __type: "CallbackRef", callbackId, callbackKind };
|
|
453
461
|
}
|
|
454
462
|
function createStreamRef(streamId, direction) {
|
|
455
463
|
return { __type: "StreamRef", streamId, direction };
|
|
@@ -500,6 +508,9 @@ function createFormDataRef(entries) {
|
|
|
500
508
|
function createURLRef(href) {
|
|
501
509
|
return { __type: "URLRef", href };
|
|
502
510
|
}
|
|
511
|
+
function createAbortSignalRef(aborted) {
|
|
512
|
+
return { __type: "AbortSignalRef", aborted };
|
|
513
|
+
}
|
|
503
514
|
function createPromiseRef(promiseId) {
|
|
504
515
|
return { __type: "PromiseRef", promiseId };
|
|
505
516
|
}
|
|
@@ -507,4 +518,4 @@ function createAsyncIteratorRef(iteratorId) {
|
|
|
507
518
|
return { __type: "AsyncIteratorRef", iteratorId };
|
|
508
519
|
}
|
|
509
520
|
|
|
510
|
-
//# debugId=
|
|
521
|
+
//# debugId=88BCD8D7BBCDA1B964756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/protocol/codec.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * MessagePack codec with custom extension types for the isolate protocol.\n */\n\nimport { encode, decode, ExtensionCodec } from \"@msgpack/msgpack\";\nimport type { Message } from \"./types.cjs\";\n\n// ============================================================================\n// Custom Extension Types\n// ============================================================================\n\n/**\n * Extension type codes for custom data types.\n */\nexport const ExtType = {\n /** Reference to an isolate instance */\n ISOLATE_REF: 1,\n /** Reference to a registered callback */\n CALLBACK_REF: 2,\n /** Reference to a stream */\n STREAM_REF: 3,\n /** Structured error object */\n ERROR: 4,\n /** Reference to Blob/File data */\n BLOB_REF: 5,\n /** Date value */\n DATE: 6,\n /** RegExp value */\n REGEXP: 7,\n /** Undefined value (null is natively supported) */\n UNDEFINED: 8,\n /** BigInt value */\n BIGINT: 9,\n /** Request object */\n REQUEST: 10,\n /** Response object */\n RESPONSE: 11,\n /** Headers object */\n HEADERS: 12,\n /** File object */\n FILE: 13,\n /** FormData object */\n FORMDATA: 14,\n /** URL object */\n URL_REF: 15,\n /** Promise reference */\n PROMISE: 16,\n /** AsyncIterator reference */\n ASYNC_ITERATOR: 17,\n} as const;\n\nexport type ExtType = (typeof ExtType)[keyof typeof ExtType];\n\n/**\n * Represents a reference to an isolate.\n */\nexport interface IsolateRef {\n __type: \"IsolateRef\";\n isolateId: string;\n}\n\n/**\n * Represents a reference to a callback.\n */\nexport interface CallbackRef {\n __type: \"CallbackRef\";\n callbackId: number;\n}\n\n/**\n * Represents a reference to a stream.\n */\nexport interface StreamRef {\n __type: \"StreamRef\";\n streamId: number;\n direction: \"upload\" | \"download\";\n}\n\n/**\n * Represents a structured error.\n */\nexport interface ErrorRef {\n __type: \"ErrorRef\";\n name: string;\n message: string;\n stack?: string;\n code?: number;\n}\n\n/**\n * Represents a reference to blob data.\n */\nexport interface BlobRef {\n __type: \"BlobRef\";\n blobId: number;\n size: number;\n type: string;\n}\n\n/**\n * Represents a serialized Date value.\n */\nexport interface DateRef {\n __type: \"DateRef\";\n timestamp: number;\n}\n\n/**\n * Represents a serialized RegExp value.\n */\nexport interface RegExpRef {\n __type: \"RegExpRef\";\n source: string;\n flags: string;\n}\n\n/**\n * Represents an undefined value (since msgpack doesn't natively support undefined).\n */\nexport interface UndefinedRef {\n __type: \"UndefinedRef\";\n}\n\n/**\n * Represents a serialized BigInt value.\n */\nexport interface BigIntRef {\n __type: \"BigIntRef\";\n value: string;\n}\n\n/**\n * Represents a serialized Uint8Array value.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface Uint8ArrayRef {\n __type: \"Uint8ArrayRef\";\n data: number[];\n}\n\n/**\n * Represents a serialized Request object.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface RequestRef {\n __type: \"RequestRef\";\n url: string;\n method: string;\n headers: [string, string][];\n body: number[] | null;\n mode?: string;\n credentials?: string;\n cache?: string;\n redirect?: string;\n referrer?: string;\n referrerPolicy?: string;\n integrity?: string;\n}\n\n/**\n * Represents a serialized Response object.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface ResponseRef {\n __type: \"ResponseRef\";\n status: number;\n statusText: string;\n headers: [string, string][];\n body: number[] | null;\n}\n\n/**\n * Represents a serialized Headers object.\n */\nexport interface HeadersRef {\n __type: \"HeadersRef\";\n pairs: [string, string][];\n}\n\n/**\n * Represents a serialized File object (includes the data inline).\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface FileRef {\n __type: \"FileRef\";\n name: string;\n type: string;\n lastModified: number;\n data: number[];\n}\n\n/**\n * Represents a serialized FormData object.\n */\nexport interface FormDataRef {\n __type: \"FormDataRef\";\n entries: [string, string | FileRef][];\n}\n\n/**\n * Represents a serialized URL object.\n */\nexport interface URLRef {\n __type: \"URLRef\";\n href: string;\n}\n\n/**\n * Represents a reference to a pending Promise.\n */\nexport interface PromiseRef {\n __type: \"PromiseRef\";\n promiseId: number;\n}\n\n/**\n * Represents a reference to an async iterator.\n */\nexport interface AsyncIteratorRef {\n __type: \"AsyncIteratorRef\";\n iteratorId: number;\n __nextCallbackId?: number;\n __returnCallbackId?: number;\n __throwCallbackId?: number;\n}\n\nexport type ExtensionType =\n | IsolateRef\n | CallbackRef\n | StreamRef\n | ErrorRef\n | BlobRef\n | DateRef\n | RegExpRef\n | UndefinedRef\n | BigIntRef\n | RequestRef\n | ResponseRef\n | HeadersRef\n | FileRef\n | FormDataRef\n | URLRef\n | PromiseRef\n | AsyncIteratorRef;\n\n// ============================================================================\n// Extension Codec Setup\n// ============================================================================\n\n/**\n * Create the extension codec for custom types.\n */\nfunction createExtensionCodec(): ExtensionCodec {\n const extensionCodec = new ExtensionCodec();\n\n // IsolateRef\n extensionCodec.register({\n type: ExtType.ISOLATE_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as IsolateRef).__type === \"IsolateRef\"\n ) {\n const ref = value as IsolateRef;\n return encode({ isolateId: ref.isolateId });\n }\n return null;\n },\n decode: (data: Uint8Array): IsolateRef => {\n const decoded = decode(data) as { isolateId: string };\n return { __type: \"IsolateRef\", isolateId: decoded.isolateId };\n },\n });\n\n // CallbackRef\n extensionCodec.register({\n type: ExtType.CALLBACK_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as CallbackRef).__type === \"CallbackRef\"\n ) {\n const ref = value as CallbackRef;\n return encode({ callbackId: ref.callbackId });\n }\n return null;\n },\n decode: (data: Uint8Array): CallbackRef => {\n const decoded = decode(data) as { callbackId: number };\n return { __type: \"CallbackRef\", callbackId: decoded.callbackId };\n },\n });\n\n // StreamRef\n extensionCodec.register({\n type: ExtType.STREAM_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as StreamRef).__type === \"StreamRef\"\n ) {\n const ref = value as StreamRef;\n return encode({ streamId: ref.streamId, direction: ref.direction });\n }\n return null;\n },\n decode: (data: Uint8Array): StreamRef => {\n const decoded = decode(data) as {\n streamId: number;\n direction: \"upload\" | \"download\";\n };\n return {\n __type: \"StreamRef\",\n streamId: decoded.streamId,\n direction: decoded.direction,\n };\n },\n });\n\n // ErrorRef\n extensionCodec.register({\n type: ExtType.ERROR,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as ErrorRef).__type === \"ErrorRef\"\n ) {\n const ref = value as ErrorRef;\n return encode({\n name: ref.name,\n message: ref.message,\n stack: ref.stack,\n code: ref.code,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): ErrorRef => {\n const decoded = decode(data) as {\n name: string;\n message: string;\n stack?: string;\n code?: number;\n };\n return {\n __type: \"ErrorRef\",\n name: decoded.name,\n message: decoded.message,\n stack: decoded.stack,\n code: decoded.code,\n };\n },\n });\n\n // BlobRef\n extensionCodec.register({\n type: ExtType.BLOB_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as BlobRef).__type === \"BlobRef\"\n ) {\n const ref = value as BlobRef;\n return encode({\n blobId: ref.blobId,\n size: ref.size,\n type: ref.type,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): BlobRef => {\n const decoded = decode(data) as {\n blobId: number;\n size: number;\n type: string;\n };\n return {\n __type: \"BlobRef\",\n blobId: decoded.blobId,\n size: decoded.size,\n type: decoded.type,\n };\n },\n });\n\n // Date - only handle actual Date instances\n // DateRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.DATE,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual Date instances\n if (value instanceof Date) {\n return encode({ timestamp: value.getTime() });\n }\n return null;\n },\n decode: (data: Uint8Array): Date => {\n const decoded = decode(data) as { timestamp: number };\n return new Date(decoded.timestamp);\n },\n });\n\n // RegExp - only handle actual RegExp instances\n // RegExpRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.REGEXP,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual RegExp instances\n if (value instanceof RegExp) {\n return encode({ source: value.source, flags: value.flags });\n }\n return null;\n },\n decode: (data: Uint8Array): RegExp => {\n const decoded = decode(data) as { source: string; flags: string };\n return new RegExp(decoded.source, decoded.flags);\n },\n });\n\n // undefined - only handle actual undefined values\n // UndefinedRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.UNDEFINED,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual undefined\n if (value === undefined) {\n return encode({});\n }\n return null;\n },\n decode: (): undefined => {\n return undefined;\n },\n });\n\n // BigInt - only handle actual BigInt values\n // BigIntRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.BIGINT,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual BigInt values\n if (typeof value === \"bigint\") {\n return encode({ value: value.toString() });\n }\n return null;\n },\n decode: (data: Uint8Array): bigint => {\n const decoded = decode(data) as { value: string };\n return BigInt(decoded.value);\n },\n });\n\n // RequestRef - decodes to actual Request object\n extensionCodec.register({\n type: ExtType.REQUEST,\n encode: (value: unknown): Uint8Array | null => {\n // Handle RequestRef objects (actual Request instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as RequestRef).__type === \"RequestRef\"\n ) {\n const ref = value as RequestRef;\n return encode({\n url: ref.url,\n method: ref.method,\n headers: ref.headers,\n body: ref.body,\n mode: ref.mode,\n credentials: ref.credentials,\n cache: ref.cache,\n redirect: ref.redirect,\n referrer: ref.referrer,\n referrerPolicy: ref.referrerPolicy,\n integrity: ref.integrity,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): RequestRef => {\n // Return RequestRef instead of reconstructing Request - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the Request\n const decoded = decode(data) as Omit<RequestRef, \"__type\">;\n return {\n __type: \"RequestRef\",\n url: decoded.url,\n method: decoded.method,\n headers: decoded.headers,\n body: decoded.body,\n mode: decoded.mode,\n credentials: decoded.credentials,\n cache: decoded.cache,\n redirect: decoded.redirect,\n referrer: decoded.referrer,\n referrerPolicy: decoded.referrerPolicy,\n integrity: decoded.integrity,\n };\n },\n });\n\n // ResponseRef - decodes to actual Response object\n extensionCodec.register({\n type: ExtType.RESPONSE,\n encode: (value: unknown): Uint8Array | null => {\n // Handle ResponseRef objects (actual Response instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as ResponseRef).__type === \"ResponseRef\"\n ) {\n const ref = value as ResponseRef;\n return encode({\n status: ref.status,\n statusText: ref.statusText,\n headers: ref.headers,\n body: ref.body,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): ResponseRef => {\n // Return ResponseRef instead of reconstructing Response - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the Response\n const decoded = decode(data) as Omit<ResponseRef, \"__type\">;\n return {\n __type: \"ResponseRef\",\n status: decoded.status,\n statusText: decoded.statusText,\n headers: decoded.headers,\n body: decoded.body,\n };\n },\n });\n\n // HeadersRef - handles both Headers instances and HeadersRef objects\n extensionCodec.register({\n type: ExtType.HEADERS,\n encode: (value: unknown): Uint8Array | null => {\n // Handle actual Headers instances\n if (typeof Headers !== \"undefined\" && value instanceof Headers) {\n const pairs: [string, string][] = [];\n (value as Headers).forEach((v, k) => pairs.push([k, v]));\n return encode({ pairs });\n }\n // Handle HeadersRef objects\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as HeadersRef).__type === \"HeadersRef\"\n ) {\n const ref = value as HeadersRef;\n return encode({ pairs: ref.pairs });\n }\n return null;\n },\n decode: (data: Uint8Array): Headers => {\n const decoded = decode(data) as { pairs: [string, string][] };\n return new Headers(decoded.pairs);\n },\n });\n\n // FileRef - decodes to actual File/Blob objects\n extensionCodec.register({\n type: ExtType.FILE,\n encode: (value: unknown): Uint8Array | null => {\n // Handle FileRef objects (actual File instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as FileRef).__type === \"FileRef\"\n ) {\n const ref = value as FileRef;\n return encode({\n name: ref.name,\n type: ref.type,\n lastModified: ref.lastModified,\n data: ref.data,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): FileRef => {\n // Return FileRef instead of reconstructing File - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the File\n const decoded = decode(data) as Omit<FileRef, \"__type\">;\n return {\n __type: \"FileRef\",\n name: decoded.name,\n type: decoded.type,\n lastModified: decoded.lastModified,\n data: decoded.data,\n };\n },\n });\n\n // FormDataRef - decodes to actual FormData object\n extensionCodec.register({\n type: ExtType.FORMDATA,\n encode: (value: unknown): Uint8Array | null => {\n // Handle FormDataRef objects (actual FormData instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as FormDataRef).__type === \"FormDataRef\"\n ) {\n const ref = value as FormDataRef;\n return encode({ entries: ref.entries });\n }\n return null;\n },\n decode: (data: Uint8Array): FormDataRef => {\n // Return FormDataRef instead of reconstructing FormData - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the FormData\n const decoded = decode(data) as { entries: [string, string | FileRef][] };\n return {\n __type: \"FormDataRef\",\n entries: decoded.entries,\n };\n },\n });\n\n // URLRef - handles both URL instances and URLRef objects\n extensionCodec.register({\n type: ExtType.URL_REF,\n encode: (value: unknown): Uint8Array | null => {\n // Handle actual URL instances\n if (typeof URL !== \"undefined\" && value instanceof URL) {\n return encode({ href: (value as URL).href });\n }\n // Handle URLRef objects\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as URLRef).__type === \"URLRef\"\n ) {\n const ref = value as URLRef;\n return encode({ href: ref.href });\n }\n return null;\n },\n decode: (data: Uint8Array): URL => {\n const decoded = decode(data) as { href: string };\n return new URL(decoded.href);\n },\n });\n\n // PromiseRef - preserves all fields including callback IDs\n extensionCodec.register({\n type: ExtType.PROMISE,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as PromiseRef).__type === \"PromiseRef\"\n ) {\n const ref = value as PromiseRef;\n // Encode all fields, not just promiseId\n const encoded: Record<string, unknown> = { promiseId: ref.promiseId };\n // Preserve callback ID fields if present\n if (\"__resolveCallbackId\" in ref) {\n encoded.__resolveCallbackId = (ref as Record<string, unknown>).__resolveCallbackId;\n }\n return encode(encoded);\n }\n return null;\n },\n decode: (data: Uint8Array): PromiseRef => {\n const decoded = decode(data) as Record<string, unknown>;\n const result: PromiseRef = { __type: \"PromiseRef\", promiseId: decoded.promiseId as number };\n // Restore callback ID fields if present\n if (\"__resolveCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__resolveCallbackId = decoded.__resolveCallbackId;\n }\n return result;\n },\n });\n\n // AsyncIteratorRef - preserves all fields including callback IDs\n extensionCodec.register({\n type: ExtType.ASYNC_ITERATOR,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as AsyncIteratorRef).__type === \"AsyncIteratorRef\"\n ) {\n const ref = value as AsyncIteratorRef;\n const refRecord = ref as unknown as Record<string, unknown>;\n // Encode all fields, not just iteratorId\n const encoded: Record<string, unknown> = { iteratorId: ref.iteratorId };\n // Preserve callback ID fields if present\n if (\"__nextCallbackId\" in ref) {\n encoded.__nextCallbackId = refRecord.__nextCallbackId;\n }\n if (\"__returnCallbackId\" in ref) {\n encoded.__returnCallbackId = refRecord.__returnCallbackId;\n }\n if (\"__throwCallbackId\" in ref) {\n encoded.__throwCallbackId = refRecord.__throwCallbackId;\n }\n return encode(encoded);\n }\n return null;\n },\n decode: (data: Uint8Array): AsyncIteratorRef => {\n const decoded = decode(data) as Record<string, unknown>;\n const result: AsyncIteratorRef = { __type: \"AsyncIteratorRef\", iteratorId: decoded.iteratorId as number };\n // Restore callback ID fields if present\n if (\"__nextCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__nextCallbackId = decoded.__nextCallbackId;\n }\n if (\"__returnCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__returnCallbackId = decoded.__returnCallbackId;\n }\n if (\"__throwCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__throwCallbackId = decoded.__throwCallbackId;\n }\n return result;\n },\n });\n\n return extensionCodec;\n}\n\n// Singleton extension codec instance\nconst extensionCodec = createExtensionCodec();\n\n// ============================================================================\n// Encoding/Decoding Functions\n// ============================================================================\n\n/**\n * Encode a message to MessagePack bytes.\n */\nexport function encodeMessage(message: Message): Uint8Array {\n return encode(message, { extensionCodec });\n}\n\n/**\n * Decode MessagePack bytes to a message.\n */\nexport function decodeMessage(data: Uint8Array): Message {\n return decode(data, { extensionCodec }) as Message;\n}\n\n/**\n * Encode any value to MessagePack bytes.\n */\nexport function encodeValue(value: unknown): Uint8Array {\n return encode(value, { extensionCodec });\n}\n\n/**\n * Decode MessagePack bytes to any value.\n */\nexport function decodeValue(data: Uint8Array): unknown {\n return decode(data, { extensionCodec });\n}\n\n// ============================================================================\n// Helper Functions for Creating Extension Types\n// ============================================================================\n\nexport function createIsolateRef(isolateId: string): IsolateRef {\n return { __type: \"IsolateRef\", isolateId };\n}\n\nexport function createCallbackRef(callbackId: number): CallbackRef {\n return { __type: \"CallbackRef\", callbackId };\n}\n\nexport function createStreamRef(\n streamId: number,\n direction: \"upload\" | \"download\"\n): StreamRef {\n return { __type: \"StreamRef\", streamId, direction };\n}\n\nexport function createErrorRef(\n name: string,\n message: string,\n stack?: string,\n code?: number\n): ErrorRef {\n return { __type: \"ErrorRef\", name, message, stack, code };\n}\n\nexport function createBlobRef(\n blobId: number,\n size: number,\n type: string\n): BlobRef {\n return { __type: \"BlobRef\", blobId, size, type };\n}\n\nexport function createDateRef(timestamp: number): DateRef {\n return { __type: \"DateRef\", timestamp };\n}\n\nexport function createRegExpRef(source: string, flags: string): RegExpRef {\n return { __type: \"RegExpRef\", source, flags };\n}\n\nexport function createUndefinedRef(): UndefinedRef {\n return { __type: \"UndefinedRef\" };\n}\n\nexport function createBigIntRef(value: string): BigIntRef {\n return { __type: \"BigIntRef\", value };\n}\n\nexport function createUint8ArrayRef(data: number[]): Uint8ArrayRef {\n return { __type: \"Uint8ArrayRef\", data };\n}\n\nexport function createRequestRef(\n url: string,\n method: string,\n headers: [string, string][],\n body: number[] | null,\n options?: {\n mode?: string;\n credentials?: string;\n cache?: string;\n redirect?: string;\n referrer?: string;\n referrerPolicy?: string;\n integrity?: string;\n }\n): RequestRef {\n return {\n __type: \"RequestRef\",\n url,\n method,\n headers,\n body,\n ...options,\n };\n}\n\nexport function createResponseRef(\n status: number,\n statusText: string,\n headers: [string, string][],\n body: number[] | null\n): ResponseRef {\n return { __type: \"ResponseRef\", status, statusText, headers, body };\n}\n\nexport function createHeadersRef(pairs: [string, string][]): HeadersRef {\n return { __type: \"HeadersRef\", pairs };\n}\n\nexport function createFileRef(\n name: string,\n type: string,\n lastModified: number,\n data: number[]\n): FileRef {\n return { __type: \"FileRef\", name, type, lastModified, data };\n}\n\nexport function createFormDataRef(\n entries: [string, string | FileRef][]\n): FormDataRef {\n return { __type: \"FormDataRef\", entries };\n}\n\nexport function createURLRef(href: string): URLRef {\n return { __type: \"URLRef\", href };\n}\n\nexport function createPromiseRef(promiseId: number): PromiseRef {\n return { __type: \"PromiseRef\", promiseId };\n}\n\nexport function createAsyncIteratorRef(iteratorId: number): AsyncIteratorRef {\n return { __type: \"AsyncIteratorRef\", iteratorId };\n}\n"
|
|
5
|
+
"/**\n * MessagePack codec with custom extension types for the isolate protocol.\n */\n\nimport { encode, decode, ExtensionCodec } from \"@msgpack/msgpack\";\nimport type { Message } from \"./types.cjs\";\n\n// ============================================================================\n// Custom Extension Types\n// ============================================================================\n\n/**\n * Extension type codes for custom data types.\n */\nexport const ExtType = {\n /** Reference to an isolate instance */\n ISOLATE_REF: 1,\n /** Reference to a registered callback */\n CALLBACK_REF: 2,\n /** Reference to a stream */\n STREAM_REF: 3,\n /** Structured error object */\n ERROR: 4,\n /** Reference to Blob/File data */\n BLOB_REF: 5,\n /** Date value */\n DATE: 6,\n /** RegExp value */\n REGEXP: 7,\n /** Undefined value (null is natively supported) */\n UNDEFINED: 8,\n /** BigInt value */\n BIGINT: 9,\n /** Request object */\n REQUEST: 10,\n /** Response object */\n RESPONSE: 11,\n /** Headers object */\n HEADERS: 12,\n /** File object */\n FILE: 13,\n /** FormData object */\n FORMDATA: 14,\n /** URL object */\n URL_REF: 15,\n /** Promise reference */\n PROMISE: 16,\n /** AsyncIterator reference */\n ASYNC_ITERATOR: 17,\n} as const;\n\nexport type ExtType = (typeof ExtType)[keyof typeof ExtType];\n\n/**\n * Represents a reference to an isolate.\n */\nexport interface IsolateRef {\n __type: \"IsolateRef\";\n isolateId: string;\n}\n\n/**\n * Represents a reference to a callback.\n */\nexport interface CallbackRef {\n __type: \"CallbackRef\";\n callbackId: number;\n callbackKind?: \"asyncGenerator\";\n}\n\n/**\n * Represents a reference to a stream.\n */\nexport interface StreamRef {\n __type: \"StreamRef\";\n streamId: number;\n direction: \"upload\" | \"download\";\n}\n\n/**\n * Represents a structured error.\n */\nexport interface ErrorRef {\n __type: \"ErrorRef\";\n name: string;\n message: string;\n stack?: string;\n code?: number;\n}\n\n/**\n * Represents a reference to blob data.\n */\nexport interface BlobRef {\n __type: \"BlobRef\";\n blobId: number;\n size: number;\n type: string;\n}\n\n/**\n * Represents a serialized Date value.\n */\nexport interface DateRef {\n __type: \"DateRef\";\n timestamp: number;\n}\n\n/**\n * Represents a serialized RegExp value.\n */\nexport interface RegExpRef {\n __type: \"RegExpRef\";\n source: string;\n flags: string;\n}\n\n/**\n * Represents an undefined value (since msgpack doesn't natively support undefined).\n */\nexport interface UndefinedRef {\n __type: \"UndefinedRef\";\n}\n\n/**\n * Represents a serialized BigInt value.\n */\nexport interface BigIntRef {\n __type: \"BigIntRef\";\n value: string;\n}\n\n/**\n * Represents a serialized Uint8Array value.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface Uint8ArrayRef {\n __type: \"Uint8ArrayRef\";\n data: number[];\n}\n\n/**\n * Represents a serialized Request object.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface RequestRef {\n __type: \"RequestRef\";\n url: string;\n method: string;\n headers: [string, string][];\n body: number[] | null;\n mode?: string;\n credentials?: string;\n cache?: string;\n redirect?: string;\n referrer?: string;\n referrerPolicy?: string;\n integrity?: string;\n}\n\n/**\n * Represents a serialized Response object.\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface ResponseRef {\n __type: \"ResponseRef\";\n status: number;\n statusText: string;\n headers: [string, string][];\n body: number[] | null;\n}\n\n/**\n * Represents a serialized Headers object.\n */\nexport interface HeadersRef {\n __type: \"HeadersRef\";\n pairs: [string, string][];\n}\n\n/**\n * Represents a serialized File object (includes the data inline).\n * Uses number[] instead of Uint8Array for JSON compatibility.\n */\nexport interface FileRef {\n __type: \"FileRef\";\n name: string;\n type: string;\n lastModified: number;\n data: number[];\n}\n\n/**\n * Represents a serialized FormData object.\n */\nexport interface FormDataRef {\n __type: \"FormDataRef\";\n entries: [string, string | FileRef][];\n}\n\n/**\n * Represents a serialized URL object.\n */\nexport interface URLRef {\n __type: \"URLRef\";\n href: string;\n}\n\n/**\n * Represents a serialized AbortSignal snapshot.\n */\nexport interface AbortSignalRef {\n __type: \"AbortSignalRef\";\n aborted: boolean;\n}\n\n/**\n * Represents a reference to a pending Promise.\n */\nexport interface PromiseRef {\n __type: \"PromiseRef\";\n promiseId: number;\n __resolveCallbackId?: number;\n}\n\n/**\n * Represents a reference to an async iterator.\n */\nexport interface AsyncIteratorRef {\n __type: \"AsyncIteratorRef\";\n iteratorId: number;\n __nextCallbackId?: number;\n __returnCallbackId?: number;\n __throwCallbackId?: number;\n}\n\nexport type ExtensionType =\n | IsolateRef\n | CallbackRef\n | StreamRef\n | ErrorRef\n | BlobRef\n | DateRef\n | RegExpRef\n | UndefinedRef\n | BigIntRef\n | RequestRef\n | ResponseRef\n | HeadersRef\n | FileRef\n | FormDataRef\n | URLRef\n | AbortSignalRef\n | PromiseRef\n | AsyncIteratorRef;\n\n// ============================================================================\n// Extension Codec Setup\n// ============================================================================\n\n/**\n * Create the extension codec for custom types.\n */\nfunction createExtensionCodec(): ExtensionCodec {\n const extensionCodec = new ExtensionCodec();\n\n // IsolateRef\n extensionCodec.register({\n type: ExtType.ISOLATE_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as IsolateRef).__type === \"IsolateRef\"\n ) {\n const ref = value as IsolateRef;\n return encode({ isolateId: ref.isolateId });\n }\n return null;\n },\n decode: (data: Uint8Array): IsolateRef => {\n const decoded = decode(data) as { isolateId: string };\n return { __type: \"IsolateRef\", isolateId: decoded.isolateId };\n },\n });\n\n // CallbackRef\n extensionCodec.register({\n type: ExtType.CALLBACK_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as CallbackRef).__type === \"CallbackRef\"\n ) {\n const ref = value as CallbackRef;\n return encode({\n callbackId: ref.callbackId,\n callbackKind: ref.callbackKind,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): CallbackRef => {\n const decoded = decode(data) as {\n callbackId: number;\n callbackKind?: \"asyncGenerator\";\n };\n return {\n __type: \"CallbackRef\",\n callbackId: decoded.callbackId,\n callbackKind: decoded.callbackKind,\n };\n },\n });\n\n // StreamRef\n extensionCodec.register({\n type: ExtType.STREAM_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as StreamRef).__type === \"StreamRef\"\n ) {\n const ref = value as StreamRef;\n return encode({ streamId: ref.streamId, direction: ref.direction });\n }\n return null;\n },\n decode: (data: Uint8Array): StreamRef => {\n const decoded = decode(data) as {\n streamId: number;\n direction: \"upload\" | \"download\";\n };\n return {\n __type: \"StreamRef\",\n streamId: decoded.streamId,\n direction: decoded.direction,\n };\n },\n });\n\n // ErrorRef\n extensionCodec.register({\n type: ExtType.ERROR,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as ErrorRef).__type === \"ErrorRef\"\n ) {\n const ref = value as ErrorRef;\n return encode({\n name: ref.name,\n message: ref.message,\n stack: ref.stack,\n code: ref.code,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): ErrorRef => {\n const decoded = decode(data) as {\n name: string;\n message: string;\n stack?: string;\n code?: number;\n };\n return {\n __type: \"ErrorRef\",\n name: decoded.name,\n message: decoded.message,\n stack: decoded.stack,\n code: decoded.code,\n };\n },\n });\n\n // BlobRef\n extensionCodec.register({\n type: ExtType.BLOB_REF,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as BlobRef).__type === \"BlobRef\"\n ) {\n const ref = value as BlobRef;\n return encode({\n blobId: ref.blobId,\n size: ref.size,\n type: ref.type,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): BlobRef => {\n const decoded = decode(data) as {\n blobId: number;\n size: number;\n type: string;\n };\n return {\n __type: \"BlobRef\",\n blobId: decoded.blobId,\n size: decoded.size,\n type: decoded.type,\n };\n },\n });\n\n // Date - only handle actual Date instances\n // DateRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.DATE,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual Date instances\n if (value instanceof Date) {\n return encode({ timestamp: value.getTime() });\n }\n return null;\n },\n decode: (data: Uint8Array): Date => {\n const decoded = decode(data) as { timestamp: number };\n return new Date(decoded.timestamp);\n },\n });\n\n // RegExp - only handle actual RegExp instances\n // RegExpRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.REGEXP,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual RegExp instances\n if (value instanceof RegExp) {\n return encode({ source: value.source, flags: value.flags });\n }\n return null;\n },\n decode: (data: Uint8Array): RegExp => {\n const decoded = decode(data) as { source: string; flags: string };\n return new RegExp(decoded.source, decoded.flags);\n },\n });\n\n // undefined - only handle actual undefined values\n // UndefinedRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.UNDEFINED,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual undefined\n if (value === undefined) {\n return encode({});\n }\n return null;\n },\n decode: (): undefined => {\n return undefined;\n },\n });\n\n // BigInt - only handle actual BigInt values\n // BigIntRef objects are passed through as plain objects (preserved for isolate unmarshalling)\n extensionCodec.register({\n type: ExtType.BIGINT,\n encode: (value: unknown): Uint8Array | null => {\n // Only handle actual BigInt values\n if (typeof value === \"bigint\") {\n return encode({ value: value.toString() });\n }\n return null;\n },\n decode: (data: Uint8Array): bigint => {\n const decoded = decode(data) as { value: string };\n return BigInt(decoded.value);\n },\n });\n\n // RequestRef - decodes to actual Request object\n extensionCodec.register({\n type: ExtType.REQUEST,\n encode: (value: unknown): Uint8Array | null => {\n // Handle RequestRef objects (actual Request instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as RequestRef).__type === \"RequestRef\"\n ) {\n const ref = value as RequestRef;\n return encode({\n url: ref.url,\n method: ref.method,\n headers: ref.headers,\n body: ref.body,\n mode: ref.mode,\n credentials: ref.credentials,\n cache: ref.cache,\n redirect: ref.redirect,\n referrer: ref.referrer,\n referrerPolicy: ref.referrerPolicy,\n integrity: ref.integrity,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): RequestRef => {\n // Return RequestRef instead of reconstructing Request - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the Request\n const decoded = decode(data) as Omit<RequestRef, \"__type\">;\n return {\n __type: \"RequestRef\",\n url: decoded.url,\n method: decoded.method,\n headers: decoded.headers,\n body: decoded.body,\n mode: decoded.mode,\n credentials: decoded.credentials,\n cache: decoded.cache,\n redirect: decoded.redirect,\n referrer: decoded.referrer,\n referrerPolicy: decoded.referrerPolicy,\n integrity: decoded.integrity,\n };\n },\n });\n\n // ResponseRef - decodes to actual Response object\n extensionCodec.register({\n type: ExtType.RESPONSE,\n encode: (value: unknown): Uint8Array | null => {\n // Handle ResponseRef objects (actual Response instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as ResponseRef).__type === \"ResponseRef\"\n ) {\n const ref = value as ResponseRef;\n return encode({\n status: ref.status,\n statusText: ref.statusText,\n headers: ref.headers,\n body: ref.body,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): ResponseRef => {\n // Return ResponseRef instead of reconstructing Response - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the Response\n const decoded = decode(data) as Omit<ResponseRef, \"__type\">;\n return {\n __type: \"ResponseRef\",\n status: decoded.status,\n statusText: decoded.statusText,\n headers: decoded.headers,\n body: decoded.body,\n };\n },\n });\n\n // HeadersRef - handles both Headers instances and HeadersRef objects\n extensionCodec.register({\n type: ExtType.HEADERS,\n encode: (value: unknown): Uint8Array | null => {\n // Handle actual Headers instances\n if (typeof Headers !== \"undefined\" && value instanceof Headers) {\n const pairs: [string, string][] = [];\n (value as Headers).forEach((v, k) => pairs.push([k, v]));\n return encode({ pairs });\n }\n // Handle HeadersRef objects\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as HeadersRef).__type === \"HeadersRef\"\n ) {\n const ref = value as HeadersRef;\n return encode({ pairs: ref.pairs });\n }\n return null;\n },\n decode: (data: Uint8Array): Headers => {\n const decoded = decode(data) as { pairs: [string, string][] };\n return new Headers(decoded.pairs);\n },\n });\n\n // FileRef - decodes to actual File/Blob objects\n extensionCodec.register({\n type: ExtType.FILE,\n encode: (value: unknown): Uint8Array | null => {\n // Handle FileRef objects (actual File instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as FileRef).__type === \"FileRef\"\n ) {\n const ref = value as FileRef;\n return encode({\n name: ref.name,\n type: ref.type,\n lastModified: ref.lastModified,\n data: ref.data,\n });\n }\n return null;\n },\n decode: (data: Uint8Array): FileRef => {\n // Return FileRef instead of reconstructing File - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the File\n const decoded = decode(data) as Omit<FileRef, \"__type\">;\n return {\n __type: \"FileRef\",\n name: decoded.name,\n type: decoded.type,\n lastModified: decoded.lastModified,\n data: decoded.data,\n };\n },\n });\n\n // FormDataRef - decodes to actual FormData object\n extensionCodec.register({\n type: ExtType.FORMDATA,\n encode: (value: unknown): Uint8Array | null => {\n // Handle FormDataRef objects (actual FormData instances need async handling via marshalValue)\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as FormDataRef).__type === \"FormDataRef\"\n ) {\n const ref = value as FormDataRef;\n return encode({ entries: ref.entries });\n }\n return null;\n },\n decode: (data: Uint8Array): FormDataRef => {\n // Return FormDataRef instead of reconstructing FormData - the daemon passes this through\n // and the isolate's unmarshalFromHost will reconstruct the FormData\n const decoded = decode(data) as { entries: [string, string | FileRef][] };\n return {\n __type: \"FormDataRef\",\n entries: decoded.entries,\n };\n },\n });\n\n // URLRef - handles both URL instances and URLRef objects\n extensionCodec.register({\n type: ExtType.URL_REF,\n encode: (value: unknown): Uint8Array | null => {\n // Handle actual URL instances\n if (typeof URL !== \"undefined\" && value instanceof URL) {\n return encode({ href: (value as URL).href });\n }\n // Handle URLRef objects\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as URLRef).__type === \"URLRef\"\n ) {\n const ref = value as URLRef;\n return encode({ href: ref.href });\n }\n return null;\n },\n decode: (data: Uint8Array): URL => {\n const decoded = decode(data) as { href: string };\n return new URL(decoded.href);\n },\n });\n\n // PromiseRef - preserves all fields including callback IDs\n extensionCodec.register({\n type: ExtType.PROMISE,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as PromiseRef).__type === \"PromiseRef\"\n ) {\n const ref = value as PromiseRef;\n // Encode all fields, not just promiseId\n const encoded: Record<string, unknown> = { promiseId: ref.promiseId };\n // Preserve callback ID fields if present\n if (\"__resolveCallbackId\" in ref) {\n encoded.__resolveCallbackId = (ref as unknown as Record<string, unknown>).__resolveCallbackId;\n }\n return encode(encoded);\n }\n return null;\n },\n decode: (data: Uint8Array): PromiseRef => {\n const decoded = decode(data) as Record<string, unknown>;\n const result: PromiseRef = { __type: \"PromiseRef\", promiseId: decoded.promiseId as number };\n // Restore callback ID fields if present\n if (\"__resolveCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__resolveCallbackId = decoded.__resolveCallbackId;\n }\n return result;\n },\n });\n\n // AsyncIteratorRef - preserves all fields including callback IDs\n extensionCodec.register({\n type: ExtType.ASYNC_ITERATOR,\n encode: (value: unknown): Uint8Array | null => {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n (value as AsyncIteratorRef).__type === \"AsyncIteratorRef\"\n ) {\n const ref = value as AsyncIteratorRef;\n const refRecord = ref as unknown as Record<string, unknown>;\n // Encode all fields, not just iteratorId\n const encoded: Record<string, unknown> = { iteratorId: ref.iteratorId };\n // Preserve callback ID fields if present\n if (\"__nextCallbackId\" in ref) {\n encoded.__nextCallbackId = refRecord.__nextCallbackId;\n }\n if (\"__returnCallbackId\" in ref) {\n encoded.__returnCallbackId = refRecord.__returnCallbackId;\n }\n if (\"__throwCallbackId\" in ref) {\n encoded.__throwCallbackId = refRecord.__throwCallbackId;\n }\n return encode(encoded);\n }\n return null;\n },\n decode: (data: Uint8Array): AsyncIteratorRef => {\n const decoded = decode(data) as Record<string, unknown>;\n const result: AsyncIteratorRef = { __type: \"AsyncIteratorRef\", iteratorId: decoded.iteratorId as number };\n // Restore callback ID fields if present\n if (\"__nextCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__nextCallbackId = decoded.__nextCallbackId;\n }\n if (\"__returnCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__returnCallbackId = decoded.__returnCallbackId;\n }\n if (\"__throwCallbackId\" in decoded) {\n (result as unknown as Record<string, unknown>).__throwCallbackId = decoded.__throwCallbackId;\n }\n return result;\n },\n });\n\n return extensionCodec;\n}\n\n// Singleton extension codec instance\nconst extensionCodec = createExtensionCodec();\n\n// ============================================================================\n// Encoding/Decoding Functions\n// ============================================================================\n\n/**\n * Encode a message to MessagePack bytes.\n */\nexport function encodeMessage(message: Message): Uint8Array {\n return encode(message, { extensionCodec });\n}\n\n/**\n * Decode MessagePack bytes to a message.\n */\nexport function decodeMessage(data: Uint8Array): Message {\n return decode(data, { extensionCodec }) as Message;\n}\n\n/**\n * Encode any value to MessagePack bytes.\n */\nexport function encodeValue(value: unknown): Uint8Array {\n return encode(value, { extensionCodec });\n}\n\n/**\n * Decode MessagePack bytes to any value.\n */\nexport function decodeValue(data: Uint8Array): unknown {\n return decode(data, { extensionCodec });\n}\n\n// ============================================================================\n// Helper Functions for Creating Extension Types\n// ============================================================================\n\nexport function createIsolateRef(isolateId: string): IsolateRef {\n return { __type: \"IsolateRef\", isolateId };\n}\n\nexport function createCallbackRef(\n callbackId: number,\n callbackKind?: \"asyncGenerator\",\n): CallbackRef {\n return { __type: \"CallbackRef\", callbackId, callbackKind };\n}\n\nexport function createStreamRef(\n streamId: number,\n direction: \"upload\" | \"download\"\n): StreamRef {\n return { __type: \"StreamRef\", streamId, direction };\n}\n\nexport function createErrorRef(\n name: string,\n message: string,\n stack?: string,\n code?: number\n): ErrorRef {\n return { __type: \"ErrorRef\", name, message, stack, code };\n}\n\nexport function createBlobRef(\n blobId: number,\n size: number,\n type: string\n): BlobRef {\n return { __type: \"BlobRef\", blobId, size, type };\n}\n\nexport function createDateRef(timestamp: number): DateRef {\n return { __type: \"DateRef\", timestamp };\n}\n\nexport function createRegExpRef(source: string, flags: string): RegExpRef {\n return { __type: \"RegExpRef\", source, flags };\n}\n\nexport function createUndefinedRef(): UndefinedRef {\n return { __type: \"UndefinedRef\" };\n}\n\nexport function createBigIntRef(value: string): BigIntRef {\n return { __type: \"BigIntRef\", value };\n}\n\nexport function createUint8ArrayRef(data: number[]): Uint8ArrayRef {\n return { __type: \"Uint8ArrayRef\", data };\n}\n\nexport function createRequestRef(\n url: string,\n method: string,\n headers: [string, string][],\n body: number[] | null,\n options?: {\n mode?: string;\n credentials?: string;\n cache?: string;\n redirect?: string;\n referrer?: string;\n referrerPolicy?: string;\n integrity?: string;\n }\n): RequestRef {\n return {\n __type: \"RequestRef\",\n url,\n method,\n headers,\n body,\n ...options,\n };\n}\n\nexport function createResponseRef(\n status: number,\n statusText: string,\n headers: [string, string][],\n body: number[] | null\n): ResponseRef {\n return { __type: \"ResponseRef\", status, statusText, headers, body };\n}\n\nexport function createHeadersRef(pairs: [string, string][]): HeadersRef {\n return { __type: \"HeadersRef\", pairs };\n}\n\nexport function createFileRef(\n name: string,\n type: string,\n lastModified: number,\n data: number[]\n): FileRef {\n return { __type: \"FileRef\", name, type, lastModified, data };\n}\n\nexport function createFormDataRef(\n entries: [string, string | FileRef][]\n): FormDataRef {\n return { __type: \"FormDataRef\", entries };\n}\n\nexport function createURLRef(href: string): URLRef {\n return { __type: \"URLRef\", href };\n}\n\nexport function createAbortSignalRef(aborted: boolean): AbortSignalRef {\n return { __type: \"AbortSignalRef\", aborted };\n}\n\nexport function createPromiseRef(promiseId: number): PromiseRef {\n return { __type: \"PromiseRef\", promiseId };\n}\n\nexport function createAsyncIteratorRef(iteratorId: number): AsyncIteratorRef {\n return { __type: \"AsyncIteratorRef\", iteratorId };\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "88BCD8D7BBCDA1B964756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -84,6 +84,24 @@ var SUPPORTED_CLASSES = new Set([
|
|
|
84
84
|
"ArrayBuffer",
|
|
85
85
|
"DataView"
|
|
86
86
|
]);
|
|
87
|
+
function getCallbackKind(value) {
|
|
88
|
+
if (value.__isolateCallbackKind === "asyncGenerator") {
|
|
89
|
+
return "asyncGenerator";
|
|
90
|
+
}
|
|
91
|
+
return value.constructor.name === "AsyncGeneratorFunction" ? "asyncGenerator" : undefined;
|
|
92
|
+
}
|
|
93
|
+
function markCallbackKind(callback, callbackKind) {
|
|
94
|
+
if (callbackKind !== "asyncGenerator") {
|
|
95
|
+
return callback;
|
|
96
|
+
}
|
|
97
|
+
Object.defineProperty(callback, "__isolateCallbackKind", {
|
|
98
|
+
configurable: true,
|
|
99
|
+
enumerable: false,
|
|
100
|
+
value: callbackKind,
|
|
101
|
+
writable: false
|
|
102
|
+
});
|
|
103
|
+
return callback;
|
|
104
|
+
}
|
|
87
105
|
function isTypedArray(value) {
|
|
88
106
|
return value instanceof Uint8Array || value instanceof Int8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Uint32Array || value instanceof Int32Array || value instanceof Float32Array || value instanceof Float64Array || value instanceof BigInt64Array || value instanceof BigUint64Array || value instanceof DataView;
|
|
89
107
|
}
|
|
@@ -113,7 +131,7 @@ async function marshalValue(value, ctx, depth = 0, seen = new WeakSet) {
|
|
|
113
131
|
throw new MarshalError("Cannot marshal function: no registerCallback provided in context");
|
|
114
132
|
}
|
|
115
133
|
const callbackId = ctx.registerCallback(value);
|
|
116
|
-
return import_codec.createCallbackRef(callbackId);
|
|
134
|
+
return import_codec.createCallbackRef(callbackId, getCallbackKind(value));
|
|
117
135
|
}
|
|
118
136
|
if (type === "object") {
|
|
119
137
|
const obj = value;
|
|
@@ -129,6 +147,9 @@ async function marshalValue(value, ctx, depth = 0, seen = new WeakSet) {
|
|
|
129
147
|
if (obj instanceof URL) {
|
|
130
148
|
return import_codec.createURLRef(obj.href);
|
|
131
149
|
}
|
|
150
|
+
if (typeof AbortSignal !== "undefined" && obj instanceof AbortSignal) {
|
|
151
|
+
return import_codec.createAbortSignalRef(obj.aborted);
|
|
152
|
+
}
|
|
132
153
|
if (typeof Headers !== "undefined" && obj instanceof Headers) {
|
|
133
154
|
const pairs = [];
|
|
134
155
|
obj.forEach((value2, key) => {
|
|
@@ -271,7 +292,7 @@ function marshalValueSync(value, ctx, depth = 0, seen = new WeakSet) {
|
|
|
271
292
|
throw new MarshalError("Cannot marshal function: no registerCallback provided in context");
|
|
272
293
|
}
|
|
273
294
|
const callbackId = ctx.registerCallback(value);
|
|
274
|
-
return import_codec.createCallbackRef(callbackId);
|
|
295
|
+
return import_codec.createCallbackRef(callbackId, getCallbackKind(value));
|
|
275
296
|
}
|
|
276
297
|
if (type === "object") {
|
|
277
298
|
const obj = value;
|
|
@@ -287,6 +308,9 @@ function marshalValueSync(value, ctx, depth = 0, seen = new WeakSet) {
|
|
|
287
308
|
if (obj instanceof URL) {
|
|
288
309
|
return import_codec.createURLRef(obj.href);
|
|
289
310
|
}
|
|
311
|
+
if (typeof AbortSignal !== "undefined" && obj instanceof AbortSignal) {
|
|
312
|
+
return import_codec.createAbortSignalRef(obj.aborted);
|
|
313
|
+
}
|
|
290
314
|
if (typeof Headers !== "undefined" && obj instanceof Headers) {
|
|
291
315
|
const pairs = [];
|
|
292
316
|
obj.forEach((value2, key) => {
|
|
@@ -398,6 +422,13 @@ function unmarshalValue(value, ctx, depth = 0) {
|
|
|
398
422
|
const ref = value;
|
|
399
423
|
return new URL(ref.href);
|
|
400
424
|
}
|
|
425
|
+
case "AbortSignalRef": {
|
|
426
|
+
const ref = value;
|
|
427
|
+
if (ref.aborted) {
|
|
428
|
+
return AbortSignal.abort();
|
|
429
|
+
}
|
|
430
|
+
return new AbortController().signal;
|
|
431
|
+
}
|
|
401
432
|
case "HeadersRef": {
|
|
402
433
|
const ref = value;
|
|
403
434
|
return new Headers(ref.pairs);
|
|
@@ -477,21 +508,21 @@ function unmarshalValue(value, ctx, depth = 0) {
|
|
|
477
508
|
if (!callback) {
|
|
478
509
|
throw new MarshalError(`Cannot unmarshal CallbackRef: callback ${ref.callbackId} not found`);
|
|
479
510
|
}
|
|
480
|
-
return callback;
|
|
511
|
+
return markCallbackKind(callback, ref.callbackKind);
|
|
481
512
|
}
|
|
482
513
|
case "PromiseRef": {
|
|
483
514
|
const ref = value;
|
|
484
515
|
if (!ctx?.createPromiseProxy) {
|
|
485
516
|
throw new MarshalError(`Cannot unmarshal PromiseRef: no createPromiseProxy provided`);
|
|
486
517
|
}
|
|
487
|
-
return ctx.createPromiseProxy(ref.promiseId);
|
|
518
|
+
return ctx.createPromiseProxy(ref.promiseId, ref);
|
|
488
519
|
}
|
|
489
520
|
case "AsyncIteratorRef": {
|
|
490
521
|
const ref = value;
|
|
491
522
|
if (!ctx?.createIteratorProxy) {
|
|
492
523
|
throw new MarshalError(`Cannot unmarshal AsyncIteratorRef: no createIteratorProxy provided`);
|
|
493
524
|
}
|
|
494
|
-
const iterator = ctx.createIteratorProxy(ref.iteratorId);
|
|
525
|
+
const iterator = ctx.createIteratorProxy(ref.iteratorId, ref);
|
|
495
526
|
return {
|
|
496
527
|
[Symbol.asyncIterator]() {
|
|
497
528
|
return iterator;
|
|
@@ -515,4 +546,4 @@ function unmarshalValue(value, ctx, depth = 0) {
|
|
|
515
546
|
return value;
|
|
516
547
|
}
|
|
517
548
|
|
|
518
|
-
//# debugId=
|
|
549
|
+
//# debugId=F2A193C4F706C5C264756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/protocol/marshalValue.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * Value marshalling for custom function arguments and return values.\n *\n * Provides type-preserving serialization for JavaScript types that would\n * otherwise lose fidelity when JSON stringified.\n */\n\nimport {\n type CallbackRef,\n type DateRef,\n type RegExpRef,\n type UndefinedRef,\n type BigIntRef,\n type Uint8ArrayRef,\n type RequestRef,\n type ResponseRef,\n type HeadersRef,\n type FileRef,\n type FormDataRef,\n type URLRef,\n type PromiseRef,\n type AsyncIteratorRef,\n type BlobRef,\n createCallbackRef,\n createDateRef,\n createRegExpRef,\n createUndefinedRef,\n createBigIntRef,\n createUint8ArrayRef,\n createRequestRef,\n createResponseRef,\n createHeadersRef,\n createFileRef,\n createFormDataRef,\n createURLRef,\n createPromiseRef,\n createAsyncIteratorRef,\n createBlobRef,\n} from \"./codec.cjs\";\n\n// ============================================================================\n// Error Types\n// ============================================================================\n\n/**\n * Error thrown when a value cannot be marshalled.\n */\nexport class MarshalError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MarshalError\";\n }\n}\n\n// ============================================================================\n// Context Types\n// ============================================================================\n\n/**\n * Context for marshalling values (host → isolate).\n */\nexport interface MarshalContext {\n /** Register a function callback and return its ID */\n registerCallback?: (fn: Function) => number;\n /** Register a Promise and return its ID */\n registerPromise?: (promise: Promise<unknown>) => number;\n /** Register an AsyncIterator and return its ID */\n registerIterator?: (iterator: AsyncIterator<unknown>) => number;\n /** Register a Blob and return its ID */\n registerBlob?: (blob: Blob) => number;\n}\n\n/**\n * Context for unmarshalling values (isolate → host).\n */\nexport interface UnmarshalContext {\n /** Get a callback function by ID */\n getCallback?: (id: number) => ((...args: unknown[]) => unknown) | undefined;\n /** Create a proxy Promise for a PromiseRef */\n createPromiseProxy?: (promiseId: number) => Promise<unknown>;\n /** Create a proxy AsyncIterator for an AsyncIteratorRef */\n createIteratorProxy?: (iteratorId: number) => AsyncIterator<unknown>;\n /** Get a Blob by ID */\n getBlob?: (blobId: number) => Blob | undefined;\n}\n\n// ============================================================================\n// Type Guards for Ref Types\n// ============================================================================\n\n/**\n * Type guard for PromiseRef values.\n */\nexport function isPromiseRef(value: unknown): value is { __type: \"PromiseRef\"; promiseId: number } {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __type?: string }).__type === 'PromiseRef'\n );\n}\n\n/**\n * Type guard for AsyncIteratorRef values.\n */\nexport function isAsyncIteratorRef(value: unknown): value is { __type: \"AsyncIteratorRef\"; iteratorId: number } {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __type?: string }).__type === 'AsyncIteratorRef'\n );\n}\n\n// ============================================================================\n// Supported Class Detection\n// ============================================================================\n\n/**\n * Set of class names that are supported for marshalling.\n */\nconst SUPPORTED_CLASSES = new Set([\n \"Date\",\n \"RegExp\",\n \"Request\",\n \"Response\",\n \"Headers\",\n \"File\",\n \"Blob\",\n \"FormData\",\n \"URL\",\n // Typed arrays are natively supported by msgpack\n \"Uint8Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Int16Array\",\n \"Uint32Array\",\n \"Int32Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"ArrayBuffer\",\n \"DataView\",\n]);\n\n/**\n * Check if a value is a typed array.\n */\nfunction isTypedArray(value: unknown): value is ArrayBufferView {\n return (\n value instanceof Uint8Array ||\n value instanceof Int8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Uint32Array ||\n value instanceof Int32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof BigInt64Array ||\n value instanceof BigUint64Array ||\n value instanceof DataView\n );\n}\n\n/**\n * Check if a value is an async iterable (has Symbol.asyncIterator).\n */\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n Symbol.asyncIterator in value &&\n typeof (value as AsyncIterable<unknown>)[Symbol.asyncIterator] === \"function\"\n );\n}\n\n// ============================================================================\n// Marshalling (JavaScript → Refs)\n// ============================================================================\n\nconst MAX_DEPTH = 100;\n\n/**\n * Marshal a JavaScript value to a serializable format.\n *\n * Converts JavaScript types that lose fidelity when JSON stringified into\n * Ref objects that can be reconstructed on the other side.\n *\n * @param value - The value to marshal\n * @param ctx - Optional context for registering callbacks, promises, etc.\n * @param depth - Current recursion depth (used for circular reference detection)\n * @param seen - WeakSet of seen objects (for circular reference detection)\n * @returns The marshalled value (may be async for Request/Response/File/Blob/FormData)\n */\nexport async function marshalValue(\n value: unknown,\n ctx?: MarshalContext,\n depth: number = 0,\n seen: WeakSet<object> = new WeakSet()\n): Promise<unknown> {\n // Check depth limit\n if (depth > MAX_DEPTH) {\n throw new MarshalError(\n `Maximum marshalling depth (${MAX_DEPTH}) exceeded. Possible circular reference.`\n );\n }\n\n // Handle null\n if (value === null) {\n return null;\n }\n\n // Handle undefined\n if (value === undefined) {\n return createUndefinedRef();\n }\n\n // Handle primitives (pass through)\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\") {\n return value;\n }\n\n // Handle BigInt\n if (type === \"bigint\") {\n return createBigIntRef((value as bigint).toString());\n }\n\n // Handle functions\n if (type === \"function\") {\n if (!ctx?.registerCallback) {\n throw new MarshalError(\n \"Cannot marshal function: no registerCallback provided in context\"\n );\n }\n const callbackId = ctx.registerCallback(value as Function);\n return createCallbackRef(callbackId);\n }\n\n // Handle objects\n if (type === \"object\") {\n const obj = value as object;\n\n // Check for circular references\n if (seen.has(obj)) {\n throw new MarshalError(\n \"Cannot marshal value: circular reference detected\"\n );\n }\n\n // Handle Date\n if (obj instanceof Date) {\n return createDateRef(obj.getTime());\n }\n\n // Handle RegExp\n if (obj instanceof RegExp) {\n return createRegExpRef(obj.source, obj.flags);\n }\n\n // Handle URL\n if (obj instanceof URL) {\n return createURLRef(obj.href);\n }\n\n // Handle Headers\n if (typeof Headers !== \"undefined\" && obj instanceof Headers) {\n const pairs: [string, string][] = [];\n (obj as Headers).forEach((value, key) => {\n pairs.push([key, value]);\n });\n return createHeadersRef(pairs);\n }\n\n // Handle Uint8Array and ArrayBuffer - wrap in Uint8ArrayRef for JSON compatibility\n if (obj instanceof Uint8Array) {\n return createUint8ArrayRef(Array.from(obj));\n }\n if (obj instanceof ArrayBuffer) {\n return createUint8ArrayRef(Array.from(new Uint8Array(obj)));\n }\n\n // Handle other typed arrays (convert to Uint8ArrayRef)\n if (isTypedArray(obj)) {\n const u8 = new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n return createUint8ArrayRef(Array.from(u8));\n }\n\n // Handle Promise\n if (obj instanceof Promise) {\n if (!ctx?.registerPromise) {\n throw new MarshalError(\n \"Cannot marshal Promise: no registerPromise provided in context\"\n );\n }\n const promiseId = ctx.registerPromise(obj as Promise<unknown>);\n return createPromiseRef(promiseId);\n }\n\n // Handle AsyncIterable (must check before generic object)\n if (isAsyncIterable(obj)) {\n if (!ctx?.registerIterator) {\n throw new MarshalError(\n \"Cannot marshal AsyncIterable: no registerIterator provided in context\"\n );\n }\n const iterator = (obj as AsyncIterable<unknown>)[Symbol.asyncIterator]();\n const iteratorId = ctx.registerIterator(iterator);\n return createAsyncIteratorRef(iteratorId);\n }\n\n // Mark as seen for circular reference detection\n seen.add(obj);\n\n // Handle Request (async - need to read body)\n if (typeof Request !== \"undefined\" && obj instanceof Request) {\n const req = obj as Request;\n const headers: [string, string][] = [];\n req.headers.forEach((value, key) => {\n headers.push([key, value]);\n });\n let body: number[] | null = null;\n if (req.body) {\n // Clone the request to avoid consuming the body\n const cloned = req.clone();\n body = Array.from(new Uint8Array(await cloned.arrayBuffer()));\n }\n return createRequestRef(req.url, req.method, headers, body, {\n mode: req.mode,\n credentials: req.credentials,\n cache: req.cache,\n redirect: req.redirect,\n referrer: req.referrer,\n referrerPolicy: req.referrerPolicy,\n integrity: req.integrity,\n });\n }\n\n // Handle Response (async - need to read body)\n if (typeof Response !== \"undefined\" && obj instanceof Response) {\n const res = obj as Response;\n const headers: [string, string][] = [];\n res.headers.forEach((value, key) => {\n headers.push([key, value]);\n });\n let body: number[] | null = null;\n if (res.body) {\n // Clone the response to avoid consuming the body\n const cloned = res.clone();\n body = Array.from(new Uint8Array(await cloned.arrayBuffer()));\n }\n return createResponseRef(res.status, res.statusText, headers, body);\n }\n\n // Handle File (async - need to read data)\n if (typeof File !== \"undefined\" && obj instanceof File) {\n const file = obj as File;\n const data = Array.from(new Uint8Array(await file.arrayBuffer()));\n return createFileRef(file.name, file.type, file.lastModified, data);\n }\n\n // Handle Blob (async - need to read data, or use BlobRef if registerBlob provided)\n if (typeof Blob !== \"undefined\" && obj instanceof Blob) {\n const blob = obj as Blob;\n if (ctx?.registerBlob) {\n const blobId = ctx.registerBlob(blob);\n return createBlobRef(blobId, blob.size, blob.type);\n }\n // Inline the blob data as a FileRef without name\n const data = Array.from(new Uint8Array(await blob.arrayBuffer()));\n return createFileRef(\"\", blob.type, Date.now(), data);\n }\n\n // Handle FormData (async - entries may contain Files)\n if (typeof FormData !== \"undefined\" && obj instanceof FormData) {\n const fd = obj as FormData;\n const entries: [string, string | FileRef][] = [];\n for (const [key, value] of fd.entries()) {\n if (typeof value === \"string\") {\n entries.push([key, value]);\n } else {\n // File/Blob - cast to File for type safety\n const file = value as File;\n const data = Array.from(new Uint8Array(await file.arrayBuffer()));\n const fileRef = createFileRef(\n file.name ?? \"\",\n file.type,\n file.lastModified ?? Date.now(),\n data\n );\n entries.push([key, fileRef]);\n }\n }\n return createFormDataRef(entries);\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n const result: unknown[] = [];\n for (const item of obj) {\n result.push(await marshalValue(item, ctx, depth + 1, seen));\n }\n return result;\n }\n\n // Handle plain objects\n const constructorName = obj.constructor?.name;\n if (constructorName && constructorName !== \"Object\") {\n if (!SUPPORTED_CLASSES.has(constructorName)) {\n throw new MarshalError(\n `Cannot marshal class instance of type \"${constructorName}\". ` +\n `Only plain objects and supported classes are allowed.`\n );\n }\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = await marshalValue(\n (obj as Record<string, unknown>)[key],\n ctx,\n depth + 1,\n seen\n );\n }\n return result;\n }\n\n // Handle symbols (not serializable)\n if (type === \"symbol\") {\n throw new MarshalError(\"Cannot marshal Symbol values\");\n }\n\n // Unknown type\n throw new MarshalError(`Cannot marshal value of type \"${type}\"`);\n}\n\n/**\n * Synchronous marshal for values that don't require async operations.\n * Throws if the value contains Request, Response, File, Blob, or FormData.\n */\nexport function marshalValueSync(\n value: unknown,\n ctx?: MarshalContext,\n depth: number = 0,\n seen: WeakSet<object> = new WeakSet()\n): unknown {\n // Check depth limit\n if (depth > MAX_DEPTH) {\n throw new MarshalError(\n `Maximum marshalling depth (${MAX_DEPTH}) exceeded. Possible circular reference.`\n );\n }\n\n // Handle null\n if (value === null) {\n return null;\n }\n\n // Handle undefined\n if (value === undefined) {\n return createUndefinedRef();\n }\n\n // Handle primitives (pass through)\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\") {\n return value;\n }\n\n // Handle BigInt\n if (type === \"bigint\") {\n return createBigIntRef((value as bigint).toString());\n }\n\n // Handle functions\n if (type === \"function\") {\n if (!ctx?.registerCallback) {\n throw new MarshalError(\n \"Cannot marshal function: no registerCallback provided in context\"\n );\n }\n const callbackId = ctx.registerCallback(value as Function);\n return createCallbackRef(callbackId);\n }\n\n // Handle objects\n if (type === \"object\") {\n const obj = value as object;\n\n // Check for circular references\n if (seen.has(obj)) {\n throw new MarshalError(\n \"Cannot marshal value: circular reference detected\"\n );\n }\n\n // Handle Date\n if (obj instanceof Date) {\n return createDateRef(obj.getTime());\n }\n\n // Handle RegExp\n if (obj instanceof RegExp) {\n return createRegExpRef(obj.source, obj.flags);\n }\n\n // Handle URL\n if (obj instanceof URL) {\n return createURLRef(obj.href);\n }\n\n // Handle Headers\n if (typeof Headers !== \"undefined\" && obj instanceof Headers) {\n const pairs: [string, string][] = [];\n (obj as Headers).forEach((value, key) => {\n pairs.push([key, value]);\n });\n return createHeadersRef(pairs);\n }\n\n // Handle Uint8Array and ArrayBuffer - wrap in Uint8ArrayRef for JSON compatibility\n if (obj instanceof Uint8Array) {\n return createUint8ArrayRef(Array.from(obj));\n }\n if (obj instanceof ArrayBuffer) {\n return createUint8ArrayRef(Array.from(new Uint8Array(obj)));\n }\n\n // Handle other typed arrays (convert to Uint8ArrayRef)\n if (isTypedArray(obj)) {\n const u8 = new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n return createUint8ArrayRef(Array.from(u8));\n }\n\n // Handle Promise\n if (obj instanceof Promise) {\n if (!ctx?.registerPromise) {\n throw new MarshalError(\n \"Cannot marshal Promise: no registerPromise provided in context\"\n );\n }\n const promiseId = ctx.registerPromise(obj as Promise<unknown>);\n return createPromiseRef(promiseId);\n }\n\n // Handle AsyncIterable (must check before generic object)\n if (isAsyncIterable(obj)) {\n if (!ctx?.registerIterator) {\n throw new MarshalError(\n \"Cannot marshal AsyncIterable: no registerIterator provided in context\"\n );\n }\n const iterator = (obj as AsyncIterable<unknown>)[Symbol.asyncIterator]();\n const iteratorId = ctx.registerIterator(iterator);\n return createAsyncIteratorRef(iteratorId);\n }\n\n // Mark as seen for circular reference detection\n seen.add(obj);\n\n // Async types that can't be marshalled synchronously\n if (typeof Request !== \"undefined\" && obj instanceof Request) {\n throw new MarshalError(\n \"Cannot marshal Request synchronously. Use marshalValue() instead.\"\n );\n }\n if (typeof Response !== \"undefined\" && obj instanceof Response) {\n throw new MarshalError(\n \"Cannot marshal Response synchronously. Use marshalValue() instead.\"\n );\n }\n if (typeof File !== \"undefined\" && obj instanceof File) {\n throw new MarshalError(\n \"Cannot marshal File synchronously. Use marshalValue() instead.\"\n );\n }\n if (typeof Blob !== \"undefined\" && obj instanceof Blob) {\n throw new MarshalError(\n \"Cannot marshal Blob synchronously. Use marshalValue() instead.\"\n );\n }\n if (typeof FormData !== \"undefined\" && obj instanceof FormData) {\n throw new MarshalError(\n \"Cannot marshal FormData synchronously. Use marshalValue() instead.\"\n );\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map((item) => marshalValueSync(item, ctx, depth + 1, seen));\n }\n\n // Handle plain objects\n const constructorName = obj.constructor?.name;\n if (constructorName && constructorName !== \"Object\") {\n if (!SUPPORTED_CLASSES.has(constructorName)) {\n throw new MarshalError(\n `Cannot marshal class instance of type \"${constructorName}\". ` +\n `Only plain objects and supported classes are allowed.`\n );\n }\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = marshalValueSync(\n (obj as Record<string, unknown>)[key],\n ctx,\n depth + 1,\n seen\n );\n }\n return result;\n }\n\n // Handle symbols (not serializable)\n if (type === \"symbol\") {\n throw new MarshalError(\"Cannot marshal Symbol values\");\n }\n\n // Unknown type\n throw new MarshalError(`Cannot marshal value of type \"${type}\"`);\n}\n\n// ============================================================================\n// Unmarshalling (Refs → JavaScript)\n// ============================================================================\n\n/**\n * Type guard for checking if a value is a Ref object.\n */\nfunction isRef(value: unknown): value is { __type: string } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n typeof (value as { __type: unknown }).__type === \"string\"\n );\n}\n\n/**\n * Unmarshal a serialized value back to JavaScript types.\n *\n * @param value - The value to unmarshal\n * @param ctx - Optional context for resolving callbacks, promises, etc.\n * @param depth - Current recursion depth\n * @returns The unmarshalled JavaScript value\n */\nexport function unmarshalValue(\n value: unknown,\n ctx?: UnmarshalContext,\n depth: number = 0\n): unknown {\n // Check depth limit\n if (depth > MAX_DEPTH) {\n throw new MarshalError(\n `Maximum unmarshalling depth (${MAX_DEPTH}) exceeded.`\n );\n }\n\n // Handle null\n if (value === null) {\n return null;\n }\n\n // Handle primitives (pass through)\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\") {\n return value;\n }\n\n // Handle Uint8Array (msgpack native support)\n if (value instanceof Uint8Array) {\n return value;\n }\n\n // Handle objects\n if (type === \"object\") {\n // Check if it's a Ref type\n if (isRef(value)) {\n const refType = value.__type;\n\n switch (refType) {\n case \"UndefinedRef\":\n return undefined;\n\n case \"DateRef\": {\n const ref = value as DateRef;\n return new Date(ref.timestamp);\n }\n\n case \"RegExpRef\": {\n const ref = value as RegExpRef;\n return new RegExp(ref.source, ref.flags);\n }\n\n case \"BigIntRef\": {\n const ref = value as BigIntRef;\n return BigInt(ref.value);\n }\n\n case \"Uint8ArrayRef\": {\n const ref = value as Uint8ArrayRef;\n return new Uint8Array(ref.data);\n }\n\n case \"URLRef\": {\n const ref = value as URLRef;\n return new URL(ref.href);\n }\n\n case \"HeadersRef\": {\n const ref = value as HeadersRef;\n return new Headers(ref.pairs);\n }\n\n case \"RequestRef\": {\n const ref = value as RequestRef;\n const body = ref.body ? new Uint8Array(ref.body) : null;\n const init: RequestInit = {\n method: ref.method,\n headers: ref.headers,\n body: body as BodyInit | null | undefined,\n };\n if (ref.mode) init.mode = ref.mode as RequestMode;\n if (ref.credentials) init.credentials = ref.credentials as RequestCredentials;\n if (ref.cache) init.cache = ref.cache as RequestCache;\n if (ref.redirect) init.redirect = ref.redirect as RequestRedirect;\n if (ref.referrer) init.referrer = ref.referrer;\n if (ref.referrerPolicy) init.referrerPolicy = ref.referrerPolicy as ReferrerPolicy;\n if (ref.integrity) init.integrity = ref.integrity;\n return new Request(ref.url, init);\n }\n\n case \"ResponseRef\": {\n const ref = value as ResponseRef;\n const body = ref.body ? new Uint8Array(ref.body) : null;\n return new Response(body as BodyInit | null | undefined, {\n status: ref.status,\n statusText: ref.statusText,\n headers: ref.headers,\n });\n }\n\n case \"FileRef\": {\n const ref = value as FileRef;\n const data = new Uint8Array(ref.data);\n // If no name, return as Blob\n if (!ref.name) {\n return new Blob([data as BlobPart], { type: ref.type });\n }\n return new File([data as BlobPart], ref.name, {\n type: ref.type,\n lastModified: ref.lastModified,\n });\n }\n\n case \"BlobRef\": {\n const ref = value as BlobRef;\n if (ctx?.getBlob) {\n const blob = ctx.getBlob(ref.blobId);\n if (blob) return blob;\n }\n // Can't reconstruct without the actual data\n throw new MarshalError(\n `Cannot unmarshal BlobRef: no getBlob provided or blob not found`\n );\n }\n\n case \"FormDataRef\": {\n const ref = value as FormDataRef;\n const fd = new FormData();\n for (const [key, entry] of ref.entries) {\n if (typeof entry === \"string\") {\n fd.append(key, entry);\n } else {\n // FileRef\n const file = unmarshalValue(entry, ctx, depth + 1) as File | Blob;\n fd.append(key, file);\n }\n }\n return fd;\n }\n\n case \"CallbackRef\": {\n const ref = value as CallbackRef;\n if (!ctx?.getCallback) {\n throw new MarshalError(\n `Cannot unmarshal CallbackRef: no getCallback provided`\n );\n }\n const callback = ctx.getCallback(ref.callbackId);\n if (!callback) {\n throw new MarshalError(\n `Cannot unmarshal CallbackRef: callback ${ref.callbackId} not found`\n );\n }\n return callback;\n }\n\n case \"PromiseRef\": {\n const ref = value as PromiseRef;\n if (!ctx?.createPromiseProxy) {\n throw new MarshalError(\n `Cannot unmarshal PromiseRef: no createPromiseProxy provided`\n );\n }\n return ctx.createPromiseProxy(ref.promiseId);\n }\n\n case \"AsyncIteratorRef\": {\n const ref = value as AsyncIteratorRef;\n if (!ctx?.createIteratorProxy) {\n throw new MarshalError(\n `Cannot unmarshal AsyncIteratorRef: no createIteratorProxy provided`\n );\n }\n const iterator = ctx.createIteratorProxy(ref.iteratorId);\n // Return as async iterable\n return {\n [Symbol.asyncIterator]() {\n return iterator;\n },\n };\n }\n\n default:\n // Unknown ref type, return as-is (might be handled by higher level)\n return value;\n }\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n return value.map((item) => unmarshalValue(item, ctx, depth + 1));\n }\n\n // Handle plain objects (recursively unmarshal values)\n const obj = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = unmarshalValue(obj[key], ctx, depth + 1);\n }\n return result;\n }\n\n // Pass through unknown types\n return value;\n}\n"
|
|
5
|
+
"/**\n * Value marshalling for custom function arguments and return values.\n *\n * Provides type-preserving serialization for JavaScript types that would\n * otherwise lose fidelity when JSON stringified.\n */\n\nimport {\n type CallbackRef,\n type DateRef,\n type RegExpRef,\n type UndefinedRef,\n type BigIntRef,\n type Uint8ArrayRef,\n type RequestRef,\n type ResponseRef,\n type HeadersRef,\n type FileRef,\n type FormDataRef,\n type URLRef,\n type AbortSignalRef,\n type PromiseRef,\n type AsyncIteratorRef,\n type BlobRef,\n createCallbackRef,\n createDateRef,\n createRegExpRef,\n createUndefinedRef,\n createBigIntRef,\n createUint8ArrayRef,\n createRequestRef,\n createResponseRef,\n createHeadersRef,\n createFileRef,\n createFormDataRef,\n createURLRef,\n createAbortSignalRef,\n createPromiseRef,\n createAsyncIteratorRef,\n createBlobRef,\n} from \"./codec.cjs\";\n\n// ============================================================================\n// Error Types\n// ============================================================================\n\n/**\n * Error thrown when a value cannot be marshalled.\n */\nexport class MarshalError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MarshalError\";\n }\n}\n\n// ============================================================================\n// Context Types\n// ============================================================================\n\n/**\n * Context for marshalling values (host → isolate).\n */\nexport interface MarshalContext {\n /** Register a function callback and return its ID */\n registerCallback?: (fn: Function) => number;\n /** Register a Promise and return its ID */\n registerPromise?: (promise: Promise<unknown>) => number;\n /** Register an AsyncIterator and return its ID */\n registerIterator?: (iterator: AsyncIterator<unknown>) => number;\n /** Register a Blob and return its ID */\n registerBlob?: (blob: Blob) => number;\n}\n\n/**\n * Context for unmarshalling values (isolate → host).\n */\nexport interface UnmarshalContext {\n /** Get a callback function by ID */\n getCallback?: (id: number) => ((...args: unknown[]) => unknown) | undefined;\n /** Create a proxy Promise for a PromiseRef */\n createPromiseProxy?: (\n promiseId: number,\n ref?: PromiseRef,\n ) => Promise<unknown>;\n /** Create a proxy AsyncIterator for an AsyncIteratorRef */\n createIteratorProxy?: (\n iteratorId: number,\n ref?: AsyncIteratorRef,\n ) => AsyncIterator<unknown>;\n /** Get a Blob by ID */\n getBlob?: (blobId: number) => Blob | undefined;\n}\n\n// ============================================================================\n// Type Guards for Ref Types\n// ============================================================================\n\n/**\n * Type guard for PromiseRef values.\n */\nexport function isPromiseRef(value: unknown): value is { __type: \"PromiseRef\"; promiseId: number } {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __type?: string }).__type === 'PromiseRef'\n );\n}\n\n/**\n * Type guard for AsyncIteratorRef values.\n */\nexport function isAsyncIteratorRef(value: unknown): value is { __type: \"AsyncIteratorRef\"; iteratorId: number } {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __type?: string }).__type === 'AsyncIteratorRef'\n );\n}\n\n// ============================================================================\n// Supported Class Detection\n// ============================================================================\n\n/**\n * Set of class names that are supported for marshalling.\n */\nconst SUPPORTED_CLASSES = new Set([\n \"Date\",\n \"RegExp\",\n \"Request\",\n \"Response\",\n \"Headers\",\n \"File\",\n \"Blob\",\n \"FormData\",\n \"URL\",\n // Typed arrays are natively supported by msgpack\n \"Uint8Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Int16Array\",\n \"Uint32Array\",\n \"Int32Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"ArrayBuffer\",\n \"DataView\",\n]);\n\nfunction getCallbackKind(\n value: Function,\n): \"asyncGenerator\" | undefined {\n if (\n (value as { __isolateCallbackKind?: unknown }).__isolateCallbackKind ===\n \"asyncGenerator\"\n ) {\n return \"asyncGenerator\";\n }\n\n return value.constructor.name === \"AsyncGeneratorFunction\"\n ? \"asyncGenerator\"\n : undefined;\n}\n\nfunction markCallbackKind<T extends Function>(\n callback: T,\n callbackKind: CallbackRef[\"callbackKind\"],\n): T {\n if (callbackKind !== \"asyncGenerator\") {\n return callback;\n }\n\n Object.defineProperty(callback, \"__isolateCallbackKind\", {\n configurable: true,\n enumerable: false,\n value: callbackKind,\n writable: false,\n });\n return callback;\n}\n\n/**\n * Check if a value is a typed array.\n */\nfunction isTypedArray(value: unknown): value is ArrayBufferView {\n return (\n value instanceof Uint8Array ||\n value instanceof Int8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Uint32Array ||\n value instanceof Int32Array ||\n value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof BigInt64Array ||\n value instanceof BigUint64Array ||\n value instanceof DataView\n );\n}\n\n/**\n * Check if a value is an async iterable (has Symbol.asyncIterator).\n */\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n Symbol.asyncIterator in value &&\n typeof (value as AsyncIterable<unknown>)[Symbol.asyncIterator] === \"function\"\n );\n}\n\n// ============================================================================\n// Marshalling (JavaScript → Refs)\n// ============================================================================\n\nconst MAX_DEPTH = 100;\n\n/**\n * Marshal a JavaScript value to a serializable format.\n *\n * Converts JavaScript types that lose fidelity when JSON stringified into\n * Ref objects that can be reconstructed on the other side.\n *\n * @param value - The value to marshal\n * @param ctx - Optional context for registering callbacks, promises, etc.\n * @param depth - Current recursion depth (used for circular reference detection)\n * @param seen - WeakSet of seen objects (for circular reference detection)\n * @returns The marshalled value (may be async for Request/Response/File/Blob/FormData)\n */\nexport async function marshalValue(\n value: unknown,\n ctx?: MarshalContext,\n depth: number = 0,\n seen: WeakSet<object> = new WeakSet()\n): Promise<unknown> {\n // Check depth limit\n if (depth > MAX_DEPTH) {\n throw new MarshalError(\n `Maximum marshalling depth (${MAX_DEPTH}) exceeded. Possible circular reference.`\n );\n }\n\n // Handle null\n if (value === null) {\n return null;\n }\n\n // Handle undefined\n if (value === undefined) {\n return createUndefinedRef();\n }\n\n // Handle primitives (pass through)\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\") {\n return value;\n }\n\n // Handle BigInt\n if (type === \"bigint\") {\n return createBigIntRef((value as bigint).toString());\n }\n\n // Handle functions\n if (type === \"function\") {\n if (!ctx?.registerCallback) {\n throw new MarshalError(\n \"Cannot marshal function: no registerCallback provided in context\"\n );\n }\n const callbackId = ctx.registerCallback(value as Function);\n return createCallbackRef(callbackId, getCallbackKind(value as Function));\n }\n\n // Handle objects\n if (type === \"object\") {\n const obj = value as object;\n\n // Check for circular references\n if (seen.has(obj)) {\n throw new MarshalError(\n \"Cannot marshal value: circular reference detected\"\n );\n }\n\n // Handle Date\n if (obj instanceof Date) {\n return createDateRef(obj.getTime());\n }\n\n // Handle RegExp\n if (obj instanceof RegExp) {\n return createRegExpRef(obj.source, obj.flags);\n }\n\n // Handle URL\n if (obj instanceof URL) {\n return createURLRef(obj.href);\n }\n\n // Handle AbortSignal as a snapshot of current state.\n if (typeof AbortSignal !== \"undefined\" && obj instanceof AbortSignal) {\n return createAbortSignalRef(obj.aborted);\n }\n\n // Handle Headers\n if (typeof Headers !== \"undefined\" && obj instanceof Headers) {\n const pairs: [string, string][] = [];\n (obj as Headers).forEach((value, key) => {\n pairs.push([key, value]);\n });\n return createHeadersRef(pairs);\n }\n\n // Handle Uint8Array and ArrayBuffer - wrap in Uint8ArrayRef for JSON compatibility\n if (obj instanceof Uint8Array) {\n return createUint8ArrayRef(Array.from(obj));\n }\n if (obj instanceof ArrayBuffer) {\n return createUint8ArrayRef(Array.from(new Uint8Array(obj)));\n }\n\n // Handle other typed arrays (convert to Uint8ArrayRef)\n if (isTypedArray(obj)) {\n const u8 = new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n return createUint8ArrayRef(Array.from(u8));\n }\n\n // Handle Promise\n if (obj instanceof Promise) {\n if (!ctx?.registerPromise) {\n throw new MarshalError(\n \"Cannot marshal Promise: no registerPromise provided in context\"\n );\n }\n const promiseId = ctx.registerPromise(obj as Promise<unknown>);\n return createPromiseRef(promiseId);\n }\n\n // Handle AsyncIterable (must check before generic object)\n if (isAsyncIterable(obj)) {\n if (!ctx?.registerIterator) {\n throw new MarshalError(\n \"Cannot marshal AsyncIterable: no registerIterator provided in context\"\n );\n }\n const iterator = (obj as AsyncIterable<unknown>)[Symbol.asyncIterator]();\n const iteratorId = ctx.registerIterator(iterator);\n return createAsyncIteratorRef(iteratorId);\n }\n\n // Mark as seen for circular reference detection\n seen.add(obj);\n\n // Handle Request (async - need to read body)\n if (typeof Request !== \"undefined\" && obj instanceof Request) {\n const req = obj as Request;\n const headers: [string, string][] = [];\n req.headers.forEach((value, key) => {\n headers.push([key, value]);\n });\n let body: number[] | null = null;\n if (req.body) {\n // Clone the request to avoid consuming the body\n const cloned = req.clone();\n body = Array.from(new Uint8Array(await cloned.arrayBuffer()));\n }\n return createRequestRef(req.url, req.method, headers, body, {\n mode: req.mode,\n credentials: req.credentials,\n cache: req.cache,\n redirect: req.redirect,\n referrer: req.referrer,\n referrerPolicy: req.referrerPolicy,\n integrity: req.integrity,\n });\n }\n\n // Handle Response (async - need to read body)\n if (typeof Response !== \"undefined\" && obj instanceof Response) {\n const res = obj as Response;\n const headers: [string, string][] = [];\n res.headers.forEach((value, key) => {\n headers.push([key, value]);\n });\n let body: number[] | null = null;\n if (res.body) {\n // Clone the response to avoid consuming the body\n const cloned = res.clone();\n body = Array.from(new Uint8Array(await cloned.arrayBuffer()));\n }\n return createResponseRef(res.status, res.statusText, headers, body);\n }\n\n // Handle File (async - need to read data)\n if (typeof File !== \"undefined\" && obj instanceof File) {\n const file = obj as File;\n const data = Array.from(new Uint8Array(await file.arrayBuffer()));\n return createFileRef(file.name, file.type, file.lastModified, data);\n }\n\n // Handle Blob (async - need to read data, or use BlobRef if registerBlob provided)\n if (typeof Blob !== \"undefined\" && obj instanceof Blob) {\n const blob = obj as Blob;\n if (ctx?.registerBlob) {\n const blobId = ctx.registerBlob(blob);\n return createBlobRef(blobId, blob.size, blob.type);\n }\n // Inline the blob data as a FileRef without name\n const data = Array.from(new Uint8Array(await blob.arrayBuffer()));\n return createFileRef(\"\", blob.type, Date.now(), data);\n }\n\n // Handle FormData (async - entries may contain Files)\n if (typeof FormData !== \"undefined\" && obj instanceof FormData) {\n const fd = obj as FormData;\n const entries: [string, string | FileRef][] = [];\n for (const [key, value] of fd.entries()) {\n if (typeof value === \"string\") {\n entries.push([key, value]);\n } else {\n // File/Blob - cast to File for type safety\n const file = value as File;\n const data = Array.from(new Uint8Array(await file.arrayBuffer()));\n const fileRef = createFileRef(\n file.name ?? \"\",\n file.type,\n file.lastModified ?? Date.now(),\n data\n );\n entries.push([key, fileRef]);\n }\n }\n return createFormDataRef(entries);\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n const result: unknown[] = [];\n for (const item of obj) {\n result.push(await marshalValue(item, ctx, depth + 1, seen));\n }\n return result;\n }\n\n // Handle plain objects\n const constructorName = obj.constructor?.name;\n if (constructorName && constructorName !== \"Object\") {\n if (!SUPPORTED_CLASSES.has(constructorName)) {\n throw new MarshalError(\n `Cannot marshal class instance of type \"${constructorName}\". ` +\n `Only plain objects and supported classes are allowed.`\n );\n }\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = await marshalValue(\n (obj as Record<string, unknown>)[key],\n ctx,\n depth + 1,\n seen\n );\n }\n return result;\n }\n\n // Handle symbols (not serializable)\n if (type === \"symbol\") {\n throw new MarshalError(\"Cannot marshal Symbol values\");\n }\n\n // Unknown type\n throw new MarshalError(`Cannot marshal value of type \"${type}\"`);\n}\n\n/**\n * Synchronous marshal for values that don't require async operations.\n * Throws if the value contains Request, Response, File, Blob, or FormData.\n */\nexport function marshalValueSync(\n value: unknown,\n ctx?: MarshalContext,\n depth: number = 0,\n seen: WeakSet<object> = new WeakSet()\n): unknown {\n // Check depth limit\n if (depth > MAX_DEPTH) {\n throw new MarshalError(\n `Maximum marshalling depth (${MAX_DEPTH}) exceeded. Possible circular reference.`\n );\n }\n\n // Handle null\n if (value === null) {\n return null;\n }\n\n // Handle undefined\n if (value === undefined) {\n return createUndefinedRef();\n }\n\n // Handle primitives (pass through)\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\") {\n return value;\n }\n\n // Handle BigInt\n if (type === \"bigint\") {\n return createBigIntRef((value as bigint).toString());\n }\n\n // Handle functions\n if (type === \"function\") {\n if (!ctx?.registerCallback) {\n throw new MarshalError(\n \"Cannot marshal function: no registerCallback provided in context\"\n );\n }\n const callbackId = ctx.registerCallback(value as Function);\n return createCallbackRef(callbackId, getCallbackKind(value as Function));\n }\n\n // Handle objects\n if (type === \"object\") {\n const obj = value as object;\n\n // Check for circular references\n if (seen.has(obj)) {\n throw new MarshalError(\n \"Cannot marshal value: circular reference detected\"\n );\n }\n\n // Handle Date\n if (obj instanceof Date) {\n return createDateRef(obj.getTime());\n }\n\n // Handle RegExp\n if (obj instanceof RegExp) {\n return createRegExpRef(obj.source, obj.flags);\n }\n\n // Handle URL\n if (obj instanceof URL) {\n return createURLRef(obj.href);\n }\n\n // Handle AbortSignal as a snapshot of current state.\n if (typeof AbortSignal !== \"undefined\" && obj instanceof AbortSignal) {\n return createAbortSignalRef(obj.aborted);\n }\n\n // Handle Headers\n if (typeof Headers !== \"undefined\" && obj instanceof Headers) {\n const pairs: [string, string][] = [];\n (obj as Headers).forEach((value, key) => {\n pairs.push([key, value]);\n });\n return createHeadersRef(pairs);\n }\n\n // Handle Uint8Array and ArrayBuffer - wrap in Uint8ArrayRef for JSON compatibility\n if (obj instanceof Uint8Array) {\n return createUint8ArrayRef(Array.from(obj));\n }\n if (obj instanceof ArrayBuffer) {\n return createUint8ArrayRef(Array.from(new Uint8Array(obj)));\n }\n\n // Handle other typed arrays (convert to Uint8ArrayRef)\n if (isTypedArray(obj)) {\n const u8 = new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n return createUint8ArrayRef(Array.from(u8));\n }\n\n // Handle Promise\n if (obj instanceof Promise) {\n if (!ctx?.registerPromise) {\n throw new MarshalError(\n \"Cannot marshal Promise: no registerPromise provided in context\"\n );\n }\n const promiseId = ctx.registerPromise(obj as Promise<unknown>);\n return createPromiseRef(promiseId);\n }\n\n // Handle AsyncIterable (must check before generic object)\n if (isAsyncIterable(obj)) {\n if (!ctx?.registerIterator) {\n throw new MarshalError(\n \"Cannot marshal AsyncIterable: no registerIterator provided in context\"\n );\n }\n const iterator = (obj as AsyncIterable<unknown>)[Symbol.asyncIterator]();\n const iteratorId = ctx.registerIterator(iterator);\n return createAsyncIteratorRef(iteratorId);\n }\n\n // Mark as seen for circular reference detection\n seen.add(obj);\n\n // Async types that can't be marshalled synchronously\n if (typeof Request !== \"undefined\" && obj instanceof Request) {\n throw new MarshalError(\n \"Cannot marshal Request synchronously. Use marshalValue() instead.\"\n );\n }\n if (typeof Response !== \"undefined\" && obj instanceof Response) {\n throw new MarshalError(\n \"Cannot marshal Response synchronously. Use marshalValue() instead.\"\n );\n }\n if (typeof File !== \"undefined\" && obj instanceof File) {\n throw new MarshalError(\n \"Cannot marshal File synchronously. Use marshalValue() instead.\"\n );\n }\n if (typeof Blob !== \"undefined\" && obj instanceof Blob) {\n throw new MarshalError(\n \"Cannot marshal Blob synchronously. Use marshalValue() instead.\"\n );\n }\n if (typeof FormData !== \"undefined\" && obj instanceof FormData) {\n throw new MarshalError(\n \"Cannot marshal FormData synchronously. Use marshalValue() instead.\"\n );\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map((item) => marshalValueSync(item, ctx, depth + 1, seen));\n }\n\n // Handle plain objects\n const constructorName = obj.constructor?.name;\n if (constructorName && constructorName !== \"Object\") {\n if (!SUPPORTED_CLASSES.has(constructorName)) {\n throw new MarshalError(\n `Cannot marshal class instance of type \"${constructorName}\". ` +\n `Only plain objects and supported classes are allowed.`\n );\n }\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = marshalValueSync(\n (obj as Record<string, unknown>)[key],\n ctx,\n depth + 1,\n seen\n );\n }\n return result;\n }\n\n // Handle symbols (not serializable)\n if (type === \"symbol\") {\n throw new MarshalError(\"Cannot marshal Symbol values\");\n }\n\n // Unknown type\n throw new MarshalError(`Cannot marshal value of type \"${type}\"`);\n}\n\n// ============================================================================\n// Unmarshalling (Refs → JavaScript)\n// ============================================================================\n\n/**\n * Type guard for checking if a value is a Ref object.\n */\nfunction isRef(value: unknown): value is { __type: string } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__type\" in value &&\n typeof (value as { __type: unknown }).__type === \"string\"\n );\n}\n\n/**\n * Unmarshal a serialized value back to JavaScript types.\n *\n * @param value - The value to unmarshal\n * @param ctx - Optional context for resolving callbacks, promises, etc.\n * @param depth - Current recursion depth\n * @returns The unmarshalled JavaScript value\n */\nexport function unmarshalValue(\n value: unknown,\n ctx?: UnmarshalContext,\n depth: number = 0\n): unknown {\n // Check depth limit\n if (depth > MAX_DEPTH) {\n throw new MarshalError(\n `Maximum unmarshalling depth (${MAX_DEPTH}) exceeded.`\n );\n }\n\n // Handle null\n if (value === null) {\n return null;\n }\n\n // Handle primitives (pass through)\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\") {\n return value;\n }\n\n // Handle Uint8Array (msgpack native support)\n if (value instanceof Uint8Array) {\n return value;\n }\n\n // Handle objects\n if (type === \"object\") {\n // Check if it's a Ref type\n if (isRef(value)) {\n const refType = value.__type;\n\n switch (refType) {\n case \"UndefinedRef\":\n return undefined;\n\n case \"DateRef\": {\n const ref = value as DateRef;\n return new Date(ref.timestamp);\n }\n\n case \"RegExpRef\": {\n const ref = value as RegExpRef;\n return new RegExp(ref.source, ref.flags);\n }\n\n case \"BigIntRef\": {\n const ref = value as BigIntRef;\n return BigInt(ref.value);\n }\n\n case \"Uint8ArrayRef\": {\n const ref = value as Uint8ArrayRef;\n return new Uint8Array(ref.data);\n }\n\n case \"URLRef\": {\n const ref = value as URLRef;\n return new URL(ref.href);\n }\n\n case \"AbortSignalRef\": {\n const ref = value as AbortSignalRef;\n if (ref.aborted) {\n return AbortSignal.abort();\n }\n return new AbortController().signal;\n }\n\n case \"HeadersRef\": {\n const ref = value as HeadersRef;\n return new Headers(ref.pairs);\n }\n\n case \"RequestRef\": {\n const ref = value as RequestRef;\n const body = ref.body ? new Uint8Array(ref.body) : null;\n const init: RequestInit = {\n method: ref.method,\n headers: ref.headers,\n body: body as BodyInit | null | undefined,\n };\n if (ref.mode) init.mode = ref.mode as RequestMode;\n if (ref.credentials) init.credentials = ref.credentials as RequestCredentials;\n if (ref.cache) init.cache = ref.cache as RequestCache;\n if (ref.redirect) init.redirect = ref.redirect as RequestRedirect;\n if (ref.referrer) init.referrer = ref.referrer;\n if (ref.referrerPolicy) init.referrerPolicy = ref.referrerPolicy as ReferrerPolicy;\n if (ref.integrity) init.integrity = ref.integrity;\n return new Request(ref.url, init);\n }\n\n case \"ResponseRef\": {\n const ref = value as ResponseRef;\n const body = ref.body ? new Uint8Array(ref.body) : null;\n return new Response(body as BodyInit | null | undefined, {\n status: ref.status,\n statusText: ref.statusText,\n headers: ref.headers,\n });\n }\n\n case \"FileRef\": {\n const ref = value as FileRef;\n const data = new Uint8Array(ref.data);\n // If no name, return as Blob\n if (!ref.name) {\n return new Blob([data as BlobPart], { type: ref.type });\n }\n return new File([data as BlobPart], ref.name, {\n type: ref.type,\n lastModified: ref.lastModified,\n });\n }\n\n case \"BlobRef\": {\n const ref = value as BlobRef;\n if (ctx?.getBlob) {\n const blob = ctx.getBlob(ref.blobId);\n if (blob) return blob;\n }\n // Can't reconstruct without the actual data\n throw new MarshalError(\n `Cannot unmarshal BlobRef: no getBlob provided or blob not found`\n );\n }\n\n case \"FormDataRef\": {\n const ref = value as FormDataRef;\n const fd = new FormData();\n for (const [key, entry] of ref.entries) {\n if (typeof entry === \"string\") {\n fd.append(key, entry);\n } else {\n // FileRef\n const file = unmarshalValue(entry, ctx, depth + 1) as File | Blob;\n fd.append(key, file);\n }\n }\n return fd;\n }\n\n case \"CallbackRef\": {\n const ref = value as CallbackRef;\n if (!ctx?.getCallback) {\n throw new MarshalError(\n `Cannot unmarshal CallbackRef: no getCallback provided`\n );\n }\n const callback = ctx.getCallback(ref.callbackId);\n if (!callback) {\n throw new MarshalError(\n `Cannot unmarshal CallbackRef: callback ${ref.callbackId} not found`\n );\n }\n return markCallbackKind(callback, ref.callbackKind);\n }\n\n case \"PromiseRef\": {\n const ref = value as PromiseRef;\n if (!ctx?.createPromiseProxy) {\n throw new MarshalError(\n `Cannot unmarshal PromiseRef: no createPromiseProxy provided`\n );\n }\n return ctx.createPromiseProxy(ref.promiseId, ref);\n }\n\n case \"AsyncIteratorRef\": {\n const ref = value as AsyncIteratorRef;\n if (!ctx?.createIteratorProxy) {\n throw new MarshalError(\n `Cannot unmarshal AsyncIteratorRef: no createIteratorProxy provided`\n );\n }\n const iterator = ctx.createIteratorProxy(ref.iteratorId, ref);\n // Return as async iterable\n return {\n [Symbol.asyncIterator]() {\n return iterator;\n },\n };\n }\n\n default:\n // Unknown ref type, return as-is (might be handled by higher level)\n return value;\n }\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n return value.map((item) => unmarshalValue(item, ctx, depth + 1));\n }\n\n // Handle plain objects (recursively unmarshal values)\n const obj = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = unmarshalValue(obj[key], ctx, depth + 1);\n }\n return result;\n }\n\n // Pass through unknown types\n return value;\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCO,IA/BP;AAAA;AAwCO,MAAM,qBAAqB,MAAM;AAAA,EACtC,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAyCO,SAAS,YAAY,CAAC,OAAsE;AAAA,EACjG,OACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA8B,WAAW;AAAA;AAOvC,SAAS,kBAAkB,CAAC,OAA6E;AAAA,EAC9G,OACE,OAAO,UAAU,YACjB,UAAU,QACT,MAA8B,WAAW;AAAA;AAW9C,IAAM,oBAAoB,IAAI,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKD,SAAS,YAAY,CAAC,OAA0C;AAAA,EAC9D,OACE,iBAAiB,cACjB,iBAAiB,aACjB,iBAAiB,eACjB,iBAAiB,cACjB,iBAAiB,eACjB,iBAAiB,cACjB,iBAAiB,gBACjB,iBAAiB,gBACjB,iBAAiB,iBACjB,iBAAiB,kBACjB,iBAAiB;AAAA;AAOrB,SAAS,eAAe,CAAC,OAAiD;AAAA,EACxE,OACE,OAAO,UAAU,YACjB,UAAU,QACV,OAAO,iBAAiB,SACxB,OAAQ,MAAiC,OAAO,mBAAmB;AAAA;AAQvE,IAAM,YAAY;AAclB,eAAsB,YAAY,CAChC,OACA,KACA,QAAgB,GAChB,OAAwB,IAAI,SACV;AAAA,EAElB,IAAI,QAAQ,WAAW;AAAA,IACrB,MAAM,IAAI,aACR,8BAA8B,mDAChC;AAAA,EACF;AAAA,EAGA,IAAI,UAAU,MAAM;AAAA,IAClB,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,UAAU,WAAW;AAAA,IACvB,OAAO,gCAAmB;AAAA,EAC5B;AAAA,EAGA,MAAM,OAAO,OAAO;AAAA,EACpB,IAAI,SAAS,YAAY,SAAS,YAAY,SAAS,WAAW;AAAA,IAChE,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,SAAS,UAAU;AAAA,IACrB,OAAO,6BAAiB,MAAiB,SAAS,CAAC;AAAA,EACrD;AAAA,EAGA,IAAI,SAAS,YAAY;AAAA,IACvB,IAAI,CAAC,KAAK,kBAAkB;AAAA,MAC1B,MAAM,IAAI,aACR,kEACF;AAAA,IACF;AAAA,IACA,MAAM,aAAa,IAAI,iBAAiB,KAAiB;AAAA,IACzD,OAAO,+BAAkB,UAAU;AAAA,EACrC;AAAA,EAGA,IAAI,SAAS,UAAU;AAAA,IACrB,MAAM,MAAM;AAAA,IAGZ,IAAI,KAAK,IAAI,GAAG,GAAG;AAAA,MACjB,MAAM,IAAI,aACR,mDACF;AAAA,IACF;AAAA,IAGA,IAAI,eAAe,MAAM;AAAA,MACvB,OAAO,2BAAc,IAAI,QAAQ,CAAC;AAAA,IACpC;AAAA,IAGA,IAAI,eAAe,QAAQ;AAAA,MACzB,OAAO,6BAAgB,IAAI,QAAQ,IAAI,KAAK;AAAA,IAC9C;AAAA,IAGA,IAAI,eAAe,KAAK;AAAA,MACtB,OAAO,0BAAa,IAAI,IAAI;AAAA,IAC9B;AAAA,IAGA,IAAI,OAAO,YAAY,eAAe,eAAe,SAAS;AAAA,MAC5D,MAAM,QAA4B,CAAC;AAAA,MAClC,IAAgB,QAAQ,CAAC,QAAO,QAAQ;AAAA,QACvC,MAAM,KAAK,CAAC,KAAK,MAAK,CAAC;AAAA,OACxB;AAAA,MACD,OAAO,8BAAiB,KAAK;AAAA,IAC/B;AAAA,IAGA,IAAI,eAAe,YAAY;AAAA,MAC7B,OAAO,iCAAoB,MAAM,KAAK,GAAG,CAAC;AAAA,IAC5C;AAAA,IACA,IAAI,eAAe,aAAa;AAAA,MAC9B,OAAO,iCAAoB,MAAM,KAAK,IAAI,WAAW,GAAG,CAAC,CAAC;AAAA,IAC5D;AAAA,IAGA,IAAI,aAAa,GAAG,GAAG;AAAA,MACrB,MAAM,KAAK,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAAA,MACpE,OAAO,iCAAoB,MAAM,KAAK,EAAE,CAAC;AAAA,IAC3C;AAAA,IAGA,IAAI,eAAe,SAAS;AAAA,MAC1B,IAAI,CAAC,KAAK,iBAAiB;AAAA,QACzB,MAAM,IAAI,aACR,gEACF;AAAA,MACF;AAAA,MACA,MAAM,YAAY,IAAI,gBAAgB,GAAuB;AAAA,MAC7D,OAAO,8BAAiB,SAAS;AAAA,IACnC;AAAA,IAGA,IAAI,gBAAgB,GAAG,GAAG;AAAA,MACxB,IAAI,CAAC,KAAK,kBAAkB;AAAA,QAC1B,MAAM,IAAI,aACR,uEACF;AAAA,MACF;AAAA,MACA,MAAM,WAAY,IAA+B,OAAO,eAAe;AAAA,MACvE,MAAM,aAAa,IAAI,iBAAiB,QAAQ;AAAA,MAChD,OAAO,oCAAuB,UAAU;AAAA,IAC1C;AAAA,IAGA,KAAK,IAAI,GAAG;AAAA,IAGZ,IAAI,OAAO,YAAY,eAAe,eAAe,SAAS;AAAA,MAC5D,MAAM,MAAM;AAAA,MACZ,MAAM,UAA8B,CAAC;AAAA,MACrC,IAAI,QAAQ,QAAQ,CAAC,QAAO,QAAQ;AAAA,QAClC,QAAQ,KAAK,CAAC,KAAK,MAAK,CAAC;AAAA,OAC1B;AAAA,MACD,IAAI,OAAwB;AAAA,MAC5B,IAAI,IAAI,MAAM;AAAA,QAEZ,MAAM,SAAS,IAAI,MAAM;AAAA,QACzB,OAAO,MAAM,KAAK,IAAI,WAAW,MAAM,OAAO,YAAY,CAAC,CAAC;AAAA,MAC9D;AAAA,MACA,OAAO,8BAAiB,IAAI,KAAK,IAAI,QAAQ,SAAS,MAAM;AAAA,QAC1D,MAAM,IAAI;AAAA,QACV,aAAa,IAAI;AAAA,QACjB,OAAO,IAAI;AAAA,QACX,UAAU,IAAI;AAAA,QACd,UAAU,IAAI;AAAA,QACd,gBAAgB,IAAI;AAAA,QACpB,WAAW,IAAI;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,OAAO,aAAa,eAAe,eAAe,UAAU;AAAA,MAC9D,MAAM,MAAM;AAAA,MACZ,MAAM,UAA8B,CAAC;AAAA,MACrC,IAAI,QAAQ,QAAQ,CAAC,QAAO,QAAQ;AAAA,QAClC,QAAQ,KAAK,CAAC,KAAK,MAAK,CAAC;AAAA,OAC1B;AAAA,MACD,IAAI,OAAwB;AAAA,MAC5B,IAAI,IAAI,MAAM;AAAA,QAEZ,MAAM,SAAS,IAAI,MAAM;AAAA,QACzB,OAAO,MAAM,KAAK,IAAI,WAAW,MAAM,OAAO,YAAY,CAAC,CAAC;AAAA,MAC9D;AAAA,MACA,OAAO,+BAAkB,IAAI,QAAQ,IAAI,YAAY,SAAS,IAAI;AAAA,IACpE;AAAA,IAGA,IAAI,OAAO,SAAS,eAAe,eAAe,MAAM;AAAA,MACtD,MAAM,OAAO;AAAA,MACb,MAAM,OAAO,MAAM,KAAK,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC,CAAC;AAAA,MAChE,OAAO,2BAAc,KAAK,MAAM,KAAK,MAAM,KAAK,cAAc,IAAI;AAAA,IACpE;AAAA,IAGA,IAAI,OAAO,SAAS,eAAe,eAAe,MAAM;AAAA,MACtD,MAAM,OAAO;AAAA,MACb,IAAI,KAAK,cAAc;AAAA,QACrB,MAAM,SAAS,IAAI,aAAa,IAAI;AAAA,QACpC,OAAO,2BAAc,QAAQ,KAAK,MAAM,KAAK,IAAI;AAAA,MACnD;AAAA,MAEA,MAAM,OAAO,MAAM,KAAK,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC,CAAC;AAAA,MAChE,OAAO,2BAAc,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,IAAI;AAAA,IACtD;AAAA,IAGA,IAAI,OAAO,aAAa,eAAe,eAAe,UAAU;AAAA,MAC9D,MAAM,KAAK;AAAA,MACX,MAAM,UAAwC,CAAC;AAAA,MAC/C,YAAY,KAAK,WAAU,GAAG,QAAQ,GAAG;AAAA,QACvC,IAAI,OAAO,WAAU,UAAU;AAAA,UAC7B,QAAQ,KAAK,CAAC,KAAK,MAAK,CAAC;AAAA,QAC3B,EAAO;AAAA,UAEL,MAAM,OAAO;AAAA,UACb,MAAM,OAAO,MAAM,KAAK,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC,CAAC;AAAA,UAChE,MAAM,UAAU,2BACd,KAAK,QAAQ,IACb,KAAK,MACL,KAAK,gBAAgB,KAAK,IAAI,GAC9B,IACF;AAAA,UACA,QAAQ,KAAK,CAAC,KAAK,OAAO,CAAC;AAAA;AAAA,MAE/B;AAAA,MACA,OAAO,+BAAkB,OAAO;AAAA,IAClC;AAAA,IAGA,IAAI,MAAM,QAAQ,GAAG,GAAG;AAAA,MACtB,MAAM,UAAoB,CAAC;AAAA,MAC3B,WAAW,QAAQ,KAAK;AAAA,QACtB,QAAO,KAAK,MAAM,aAAa,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;AAAA,MAC5D;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,kBAAkB,IAAI,aAAa;AAAA,IACzC,IAAI,mBAAmB,oBAAoB,UAAU;AAAA,MACnD,IAAI,CAAC,kBAAkB,IAAI,eAAe,GAAG;AAAA,QAC3C,MAAM,IAAI,aACR,0CAA0C,uBACxC,uDACJ;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,SAAkC,CAAC;AAAA,IACzC,WAAW,OAAO,OAAO,KAAK,GAAG,GAAG;AAAA,MAClC,OAAO,OAAO,MAAM,aACjB,IAAgC,MACjC,KACA,QAAQ,GACR,IACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,SAAS,UAAU;AAAA,IACrB,MAAM,IAAI,aAAa,8BAA8B;AAAA,EACvD;AAAA,EAGA,MAAM,IAAI,aAAa,iCAAiC,OAAO;AAAA;AAO1D,SAAS,gBAAgB,CAC9B,OACA,KACA,QAAgB,GAChB,OAAwB,IAAI,SACnB;AAAA,EAET,IAAI,QAAQ,WAAW;AAAA,IACrB,MAAM,IAAI,aACR,8BAA8B,mDAChC;AAAA,EACF;AAAA,EAGA,IAAI,UAAU,MAAM;AAAA,IAClB,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,UAAU,WAAW;AAAA,IACvB,OAAO,gCAAmB;AAAA,EAC5B;AAAA,EAGA,MAAM,OAAO,OAAO;AAAA,EACpB,IAAI,SAAS,YAAY,SAAS,YAAY,SAAS,WAAW;AAAA,IAChE,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,SAAS,UAAU;AAAA,IACrB,OAAO,6BAAiB,MAAiB,SAAS,CAAC;AAAA,EACrD;AAAA,EAGA,IAAI,SAAS,YAAY;AAAA,IACvB,IAAI,CAAC,KAAK,kBAAkB;AAAA,MAC1B,MAAM,IAAI,aACR,kEACF;AAAA,IACF;AAAA,IACA,MAAM,aAAa,IAAI,iBAAiB,KAAiB;AAAA,IACzD,OAAO,+BAAkB,UAAU;AAAA,EACrC;AAAA,EAGA,IAAI,SAAS,UAAU;AAAA,IACrB,MAAM,MAAM;AAAA,IAGZ,IAAI,KAAK,IAAI,GAAG,GAAG;AAAA,MACjB,MAAM,IAAI,aACR,mDACF;AAAA,IACF;AAAA,IAGA,IAAI,eAAe,MAAM;AAAA,MACvB,OAAO,2BAAc,IAAI,QAAQ,CAAC;AAAA,IACpC;AAAA,IAGA,IAAI,eAAe,QAAQ;AAAA,MACzB,OAAO,6BAAgB,IAAI,QAAQ,IAAI,KAAK;AAAA,IAC9C;AAAA,IAGA,IAAI,eAAe,KAAK;AAAA,MACtB,OAAO,0BAAa,IAAI,IAAI;AAAA,IAC9B;AAAA,IAGA,IAAI,OAAO,YAAY,eAAe,eAAe,SAAS;AAAA,MAC5D,MAAM,QAA4B,CAAC;AAAA,MAClC,IAAgB,QAAQ,CAAC,QAAO,QAAQ;AAAA,QACvC,MAAM,KAAK,CAAC,KAAK,MAAK,CAAC;AAAA,OACxB;AAAA,MACD,OAAO,8BAAiB,KAAK;AAAA,IAC/B;AAAA,IAGA,IAAI,eAAe,YAAY;AAAA,MAC7B,OAAO,iCAAoB,MAAM,KAAK,GAAG,CAAC;AAAA,IAC5C;AAAA,IACA,IAAI,eAAe,aAAa;AAAA,MAC9B,OAAO,iCAAoB,MAAM,KAAK,IAAI,WAAW,GAAG,CAAC,CAAC;AAAA,IAC5D;AAAA,IAGA,IAAI,aAAa,GAAG,GAAG;AAAA,MACrB,MAAM,KAAK,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAAA,MACpE,OAAO,iCAAoB,MAAM,KAAK,EAAE,CAAC;AAAA,IAC3C;AAAA,IAGA,IAAI,eAAe,SAAS;AAAA,MAC1B,IAAI,CAAC,KAAK,iBAAiB;AAAA,QACzB,MAAM,IAAI,aACR,gEACF;AAAA,MACF;AAAA,MACA,MAAM,YAAY,IAAI,gBAAgB,GAAuB;AAAA,MAC7D,OAAO,8BAAiB,SAAS;AAAA,IACnC;AAAA,IAGA,IAAI,gBAAgB,GAAG,GAAG;AAAA,MACxB,IAAI,CAAC,KAAK,kBAAkB;AAAA,QAC1B,MAAM,IAAI,aACR,uEACF;AAAA,MACF;AAAA,MACA,MAAM,WAAY,IAA+B,OAAO,eAAe;AAAA,MACvE,MAAM,aAAa,IAAI,iBAAiB,QAAQ;AAAA,MAChD,OAAO,oCAAuB,UAAU;AAAA,IAC1C;AAAA,IAGA,KAAK,IAAI,GAAG;AAAA,IAGZ,IAAI,OAAO,YAAY,eAAe,eAAe,SAAS;AAAA,MAC5D,MAAM,IAAI,aACR,mEACF;AAAA,IACF;AAAA,IACA,IAAI,OAAO,aAAa,eAAe,eAAe,UAAU;AAAA,MAC9D,MAAM,IAAI,aACR,oEACF;AAAA,IACF;AAAA,IACA,IAAI,OAAO,SAAS,eAAe,eAAe,MAAM;AAAA,MACtD,MAAM,IAAI,aACR,gEACF;AAAA,IACF;AAAA,IACA,IAAI,OAAO,SAAS,eAAe,eAAe,MAAM;AAAA,MACtD,MAAM,IAAI,aACR,gEACF;AAAA,IACF;AAAA,IACA,IAAI,OAAO,aAAa,eAAe,eAAe,UAAU;AAAA,MAC9D,MAAM,IAAI,aACR,oEACF;AAAA,IACF;AAAA,IAGA,IAAI,MAAM,QAAQ,GAAG,GAAG;AAAA,MACtB,OAAO,IAAI,IAAI,CAAC,SAAS,iBAAiB,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;AAAA,IACvE;AAAA,IAGA,MAAM,kBAAkB,IAAI,aAAa;AAAA,IACzC,IAAI,mBAAmB,oBAAoB,UAAU;AAAA,MACnD,IAAI,CAAC,kBAAkB,IAAI,eAAe,GAAG;AAAA,QAC3C,MAAM,IAAI,aACR,0CAA0C,uBACxC,uDACJ;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,SAAkC,CAAC;AAAA,IACzC,WAAW,OAAO,OAAO,KAAK,GAAG,GAAG;AAAA,MAClC,OAAO,OAAO,iBACX,IAAgC,MACjC,KACA,QAAQ,GACR,IACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,SAAS,UAAU;AAAA,IACrB,MAAM,IAAI,aAAa,8BAA8B;AAAA,EACvD;AAAA,EAGA,MAAM,IAAI,aAAa,iCAAiC,OAAO;AAAA;AAUjE,SAAS,KAAK,CAAC,OAA6C;AAAA,EAC1D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,YAAY,SACZ,OAAQ,MAA8B,WAAW;AAAA;AAY9C,SAAS,cAAc,CAC5B,OACA,KACA,QAAgB,GACP;AAAA,EAET,IAAI,QAAQ,WAAW;AAAA,IACrB,MAAM,IAAI,aACR,gCAAgC,sBAClC;AAAA,EACF;AAAA,EAGA,IAAI,UAAU,MAAM;AAAA,IAClB,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,OAAO,OAAO;AAAA,EACpB,IAAI,SAAS,YAAY,SAAS,YAAY,SAAS,WAAW;AAAA,IAChE,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,iBAAiB,YAAY;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,SAAS,UAAU;AAAA,IAErB,IAAI,MAAM,KAAK,GAAG;AAAA,MAChB,MAAM,UAAU,MAAM;AAAA,MAEtB,QAAQ;AAAA,aACD;AAAA,UACH;AAAA,aAEG,WAAW;AAAA,UACd,MAAM,MAAM;AAAA,UACZ,OAAO,IAAI,KAAK,IAAI,SAAS;AAAA,QAC/B;AAAA,aAEK,aAAa;AAAA,UAChB,MAAM,MAAM;AAAA,UACZ,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK;AAAA,QACzC;AAAA,aAEK,aAAa;AAAA,UAChB,MAAM,MAAM;AAAA,UACZ,OAAO,OAAO,IAAI,KAAK;AAAA,QACzB;AAAA,aAEK,iBAAiB;AAAA,UACpB,MAAM,MAAM;AAAA,UACZ,OAAO,IAAI,WAAW,IAAI,IAAI;AAAA,QAChC;AAAA,aAEK,UAAU;AAAA,UACb,MAAM,MAAM;AAAA,UACZ,OAAO,IAAI,IAAI,IAAI,IAAI;AAAA,QACzB;AAAA,aAEK,cAAc;AAAA,UACjB,MAAM,MAAM;AAAA,UACZ,OAAO,IAAI,QAAQ,IAAI,KAAK;AAAA,QAC9B;AAAA,aAEK,cAAc;AAAA,UACjB,MAAM,MAAM;AAAA,UACZ,MAAM,OAAO,IAAI,OAAO,IAAI,WAAW,IAAI,IAAI,IAAI;AAAA,UACnD,MAAM,OAAoB;AAAA,YACxB,QAAQ,IAAI;AAAA,YACZ,SAAS,IAAI;AAAA,YACb;AAAA,UACF;AAAA,UACA,IAAI,IAAI;AAAA,YAAM,KAAK,OAAO,IAAI;AAAA,UAC9B,IAAI,IAAI;AAAA,YAAa,KAAK,cAAc,IAAI;AAAA,UAC5C,IAAI,IAAI;AAAA,YAAO,KAAK,QAAQ,IAAI;AAAA,UAChC,IAAI,IAAI;AAAA,YAAU,KAAK,WAAW,IAAI;AAAA,UACtC,IAAI,IAAI;AAAA,YAAU,KAAK,WAAW,IAAI;AAAA,UACtC,IAAI,IAAI;AAAA,YAAgB,KAAK,iBAAiB,IAAI;AAAA,UAClD,IAAI,IAAI;AAAA,YAAW,KAAK,YAAY,IAAI;AAAA,UACxC,OAAO,IAAI,QAAQ,IAAI,KAAK,IAAI;AAAA,QAClC;AAAA,aAEK,eAAe;AAAA,UAClB,MAAM,MAAM;AAAA,UACZ,MAAM,OAAO,IAAI,OAAO,IAAI,WAAW,IAAI,IAAI,IAAI;AAAA,UACnD,OAAO,IAAI,SAAS,MAAqC;AAAA,YACvD,QAAQ,IAAI;AAAA,YACZ,YAAY,IAAI;AAAA,YAChB,SAAS,IAAI;AAAA,UACf,CAAC;AAAA,QACH;AAAA,aAEK,WAAW;AAAA,UACd,MAAM,MAAM;AAAA,UACZ,MAAM,OAAO,IAAI,WAAW,IAAI,IAAI;AAAA,UAEpC,IAAI,CAAC,IAAI,MAAM;AAAA,YACb,OAAO,IAAI,KAAK,CAAC,IAAgB,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,UACxD;AAAA,UACA,OAAO,IAAI,KAAK,CAAC,IAAgB,GAAG,IAAI,MAAM;AAAA,YAC5C,MAAM,IAAI;AAAA,YACV,cAAc,IAAI;AAAA,UACpB,CAAC;AAAA,QACH;AAAA,aAEK,WAAW;AAAA,UACd,MAAM,MAAM;AAAA,UACZ,IAAI,KAAK,SAAS;AAAA,YAChB,MAAM,OAAO,IAAI,QAAQ,IAAI,MAAM;AAAA,YACnC,IAAI;AAAA,cAAM,OAAO;AAAA,UACnB;AAAA,UAEA,MAAM,IAAI,aACR,iEACF;AAAA,QACF;AAAA,aAEK,eAAe;AAAA,UAClB,MAAM,MAAM;AAAA,UACZ,MAAM,KAAK,IAAI;AAAA,UACf,YAAY,KAAK,UAAU,IAAI,SAAS;AAAA,YACtC,IAAI,OAAO,UAAU,UAAU;AAAA,cAC7B,GAAG,OAAO,KAAK,KAAK;AAAA,YACtB,EAAO;AAAA,cAEL,MAAM,OAAO,eAAe,OAAO,KAAK,QAAQ,CAAC;AAAA,cACjD,GAAG,OAAO,KAAK,IAAI;AAAA;AAAA,UAEvB;AAAA,UACA,OAAO;AAAA,QACT;AAAA,aAEK,eAAe;AAAA,UAClB,MAAM,MAAM;AAAA,UACZ,IAAI,CAAC,KAAK,aAAa;AAAA,YACrB,MAAM,IAAI,aACR,uDACF;AAAA,UACF;AAAA,UACA,MAAM,WAAW,IAAI,YAAY,IAAI,UAAU;AAAA,UAC/C,IAAI,CAAC,UAAU;AAAA,YACb,MAAM,IAAI,aACR,0CAA0C,IAAI,sBAChD;AAAA,UACF;AAAA,UACA,OAAO;AAAA,QACT;AAAA,aAEK,cAAc;AAAA,UACjB,MAAM,MAAM;AAAA,UACZ,IAAI,CAAC,KAAK,oBAAoB;AAAA,YAC5B,MAAM,IAAI,aACR,6DACF;AAAA,UACF;AAAA,UACA,OAAO,IAAI,mBAAmB,IAAI,SAAS;AAAA,QAC7C;AAAA,aAEK,oBAAoB;AAAA,UACvB,MAAM,MAAM;AAAA,UACZ,IAAI,CAAC,KAAK,qBAAqB;AAAA,YAC7B,MAAM,IAAI,aACR,oEACF;AAAA,UACF;AAAA,UACA,MAAM,WAAW,IAAI,oBAAoB,IAAI,UAAU;AAAA,UAEvD,OAAO;AAAA,aACJ,OAAO,cAAc,GAAG;AAAA,cACvB,OAAO;AAAA;AAAA,UAEX;AAAA,QACF;AAAA;AAAA,UAIE,OAAO;AAAA;AAAA,IAEb;AAAA,IAGA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,OAAO,MAAM,IAAI,CAAC,SAAS,eAAe,MAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,IACjE;AAAA,IAGA,MAAM,MAAM;AAAA,IACZ,MAAM,SAAkC,CAAC;AAAA,IACzC,WAAW,OAAO,OAAO,KAAK,GAAG,GAAG;AAAA,MAClC,OAAO,OAAO,eAAe,IAAI,MAAM,KAAK,QAAQ,CAAC;AAAA,IACvD;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,OAAO;AAAA;",
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "F2A193C4F706C5C264756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|