vite-plugin-react-server 0.3.18 → 0.3.19
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 +119 -118
- package/bin/patch.mjs +8 -2
- package/dist/package.json +3 -3
- package/dist/plugin/checkFilesExist.d.ts.map +1 -1
- package/dist/plugin/checkFilesExist.js +6 -2
- package/dist/plugin/checkFilesExist.js.map +1 -1
- package/dist/plugin/collect-manifest-client-files.d.ts +23 -0
- package/dist/plugin/collect-manifest-client-files.d.ts.map +1 -0
- package/dist/plugin/collect-manifest-client-files.js +117 -0
- package/dist/plugin/collect-manifest-client-files.js.map +1 -0
- package/dist/plugin/components.d.ts +9 -9
- package/dist/plugin/components.d.ts.map +1 -1
- package/dist/plugin/components.js +50 -9
- package/dist/plugin/components.js.map +1 -0
- package/dist/plugin/config/defaults.d.ts +7 -6
- package/dist/plugin/config/defaults.d.ts.map +1 -1
- package/dist/plugin/config/defaults.js +8 -5
- package/dist/plugin/config/defaults.js.map +1 -1
- package/dist/plugin/config/getPaths.d.ts +0 -1
- package/dist/plugin/config/getPaths.d.ts.map +1 -1
- package/dist/plugin/config/getPaths.js +2 -7
- package/dist/plugin/config/getPaths.js.map +1 -1
- package/dist/plugin/config/mimeTypes.d.ts +2 -0
- package/dist/plugin/config/mimeTypes.d.ts.map +1 -0
- package/dist/plugin/config/mimeTypes.js +24 -0
- package/dist/plugin/config/mimeTypes.js.map +1 -0
- package/dist/plugin/config/resolveOptions.d.ts +1 -1
- package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
- package/dist/plugin/config/resolveOptions.js +41 -28
- package/dist/plugin/config/resolveOptions.js.map +1 -1
- package/dist/plugin/config/resolvePages.d.ts +1 -0
- package/dist/plugin/config/resolvePages.d.ts.map +1 -1
- package/dist/plugin/config/resolvePages.js +9 -5
- package/dist/plugin/config/resolvePages.js.map +1 -1
- package/dist/plugin/config/resolveUserConfig.d.ts +2 -1
- package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
- package/dist/plugin/config/resolveUserConfig.js +10 -5
- package/dist/plugin/config/resolveUserConfig.js.map +1 -1
- package/dist/plugin/copy-dir.js +23 -18
- package/dist/plugin/copy-dir.js.map +1 -0
- package/dist/plugin/helpers/createHandler.d.ts +22 -0
- package/dist/plugin/helpers/createHandler.d.ts.map +1 -0
- package/dist/plugin/{react-server → helpers}/createHandler.js +36 -48
- package/dist/plugin/helpers/createHandler.js.map +1 -0
- package/dist/plugin/{react-server → helpers}/createRscStream.d.ts +2 -1
- package/dist/plugin/helpers/createRscStream.d.ts.map +1 -0
- package/dist/plugin/helpers/createRscStream.js +71 -0
- package/dist/plugin/helpers/createRscStream.js.map +1 -0
- package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
- package/dist/plugin/helpers/getBundleManifest.js +12 -4
- package/dist/plugin/helpers/getBundleManifest.js.map +1 -1
- package/dist/plugin/loader/createBuildLoader.d.ts +1 -1
- package/dist/plugin/loader/createBuildLoader.d.ts.map +1 -1
- package/dist/plugin/loader/createBuildLoader.js +8 -5
- package/dist/plugin/loader/createBuildLoader.js.map +1 -1
- package/dist/plugin/loader/css-loader.d.ts.map +1 -1
- package/dist/plugin/loader/css-loader.js.map +1 -1
- package/dist/plugin/loader/react-loader.js +2 -2
- package/dist/plugin/loader/react-loader.js.map +1 -1
- package/dist/plugin/preserver/plugin.d.ts.map +1 -1
- package/dist/plugin/preserver/plugin.js +49 -14
- package/dist/plugin/preserver/plugin.js.map +1 -1
- package/dist/plugin/react-client/plugin.d.ts.map +1 -1
- package/dist/plugin/react-client/plugin.js +18 -76
- package/dist/plugin/react-client/plugin.js.map +1 -1
- package/dist/plugin/react-server/index.d.ts.map +1 -1
- package/dist/plugin/react-server/index.js +2 -0
- package/dist/plugin/react-server/index.js.map +1 -1
- package/dist/plugin/react-server/plugin.d.ts +2 -1
- package/dist/plugin/react-server/plugin.d.ts.map +1 -1
- package/dist/plugin/react-server/plugin.js +53 -217
- package/dist/plugin/react-server/plugin.js.map +1 -1
- package/dist/plugin/react-static/index.d.ts +2 -0
- package/dist/plugin/react-static/index.d.ts.map +1 -0
- package/dist/plugin/react-static/index.js +1 -0
- package/dist/plugin/react-static/plugin.d.ts +7 -0
- package/dist/plugin/react-static/plugin.d.ts.map +1 -0
- package/dist/plugin/react-static/plugin.js +199 -0
- package/dist/plugin/react-static/plugin.js.map +1 -0
- package/dist/plugin/resolvePage.d.ts.map +1 -1
- package/dist/plugin/resolvePage.js +9 -0
- package/dist/plugin/resolvePage.js.map +1 -1
- package/dist/plugin/root.d.ts +2 -0
- package/dist/plugin/root.d.ts.map +1 -0
- package/dist/plugin/root.js +12 -0
- package/dist/plugin/root.js.map +1 -0
- package/dist/plugin/transformer/plugin.d.ts.map +1 -1
- package/dist/plugin/transformer/plugin.js +32 -23
- package/dist/plugin/transformer/plugin.js.map +1 -1
- package/dist/plugin/transformer/types.d.ts +1 -18
- package/dist/plugin/transformer/types.d.ts.map +1 -1
- package/dist/plugin/types.d.ts +24 -6
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/plugin/worker/createWorker.js +0 -1
- package/dist/plugin/worker/createWorker.js.map +1 -1
- package/dist/plugin/worker/html/html-worker.development.d.ts +30 -0
- package/dist/plugin/worker/html/html-worker.development.d.ts.map +1 -1
- package/dist/plugin/worker/html/html-worker.development.js +30 -2
- package/dist/plugin/worker/html/html-worker.development.js.map +1 -1
- package/dist/plugin/worker/html/html-worker.production.js +3 -5
- package/dist/plugin/worker/html/html-worker.production.js.map +1 -1
- package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
- package/dist/plugin/worker/html/messageHandler.js +8 -2
- package/dist/plugin/worker/html/messageHandler.js.map +1 -1
- package/dist/plugin/worker/html/plugin.d.ts.map +1 -1
- package/dist/plugin/worker/html/plugin.js +2 -3
- package/dist/plugin/worker/html/renderPages.d.ts +8 -4
- package/dist/plugin/worker/html/renderPages.d.ts.map +1 -1
- package/dist/plugin/worker/html/renderPages.js +118 -83
- package/dist/plugin/worker/html/renderPages.js.map +1 -1
- package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/messageHandler.js +89 -84
- package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
- package/dist/plugin/worker/rsc/plugin.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/plugin.js +1 -2
- package/dist/plugin/worker/rsc/rsc-worker.development.js +13 -18
- package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
- package/dist/plugin/worker/rsc/rsc-worker.production.js +4 -1
- package/dist/plugin/worker/rsc/rsc-worker.production.js.map +1 -1
- package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
- package/dist/plugin/worker/rsc/state.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/plugin/checkFilesExist.ts +7 -3
- package/plugin/collect-manifest-client-files.ts +152 -0
- package/plugin/components.tsx +55 -10
- package/plugin/config/defaults.tsx +69 -0
- package/plugin/config/getPaths.ts +1 -7
- package/plugin/config/mimeTypes.ts +17 -0
- package/plugin/config/resolveOptions.ts +48 -40
- package/plugin/config/resolvePages.ts +8 -4
- package/plugin/config/resolveUserConfig.ts +12 -9
- package/plugin/{react-server → helpers}/createHandler.ts +46 -63
- package/plugin/helpers/createRscStream.ts +81 -0
- package/plugin/helpers/getBundleManifest.ts +14 -5
- package/plugin/loader/createBuildLoader.ts +9 -6
- package/plugin/loader/css-loader.ts +0 -2
- package/plugin/loader/react-loader.ts +2 -2
- package/plugin/preserver/plugin.ts +64 -17
- package/plugin/react-client/plugin.ts +20 -91
- package/plugin/react-server/index.ts +2 -0
- package/plugin/react-server/plugin.ts +66 -293
- package/plugin/react-static/index.ts +1 -0
- package/plugin/react-static/plugin.ts +247 -0
- package/plugin/resolvePage.ts +9 -0
- package/plugin/root.ts +4 -0
- package/plugin/transformer/plugin.ts +40 -31
- package/plugin/transformer/types.ts +0 -19
- package/plugin/types.ts +25 -6
- package/plugin/worker/createWorker.ts +1 -1
- package/plugin/worker/html/README.md +63 -0
- package/plugin/worker/html/html-worker.development.tsx +89 -2
- package/plugin/worker/html/html-worker.production.tsx +8 -10
- package/plugin/worker/html/messageHandler.ts +8 -2
- package/plugin/worker/html/plugin.ts +2 -3
- package/plugin/worker/html/renderPages.ts +150 -114
- package/plugin/worker/rsc/README.md +58 -0
- package/plugin/worker/rsc/messageHandler.tsx +95 -111
- package/plugin/worker/rsc/plugin.ts +1 -2
- package/plugin/worker/rsc/rsc-worker.development.ts +12 -22
- package/plugin/worker/rsc/rsc-worker.production.ts +5 -1
- package/plugin/worker/rsc/state.ts +0 -3
- package/scripts/react+0.0.0-experimental-eda36a1c-20250228.patch +114 -12
- package/scripts/react-dom+0.0.0-experimental-eda36a1c-20250228.patch +10571 -121
- package/tsconfig.json +2 -2
- package/dist/plugin/collect-css-manifest.d.ts +0 -4
- package/dist/plugin/collect-css-manifest.d.ts.map +0 -1
- package/dist/plugin/collect-css-manifest.js +0 -65
- package/dist/plugin/collect-css-manifest.js.map +0 -1
- package/dist/plugin/config/createModuleIdGenerator.d.ts +0 -11
- package/dist/plugin/config/createModuleIdGenerator.d.ts.map +0 -1
- package/dist/plugin/config/createModuleIdGenerator.js +0 -44
- package/dist/plugin/config/createModuleIdGenerator.js.map +0 -1
- package/dist/plugin/loader/createCssLoader.d.ts +0 -30
- package/dist/plugin/loader/createCssLoader.d.ts.map +0 -1
- package/dist/plugin/loader/createCssLoader.js +0 -35
- package/dist/plugin/loader/createPageLoader.d.ts +0 -24
- package/dist/plugin/loader/createPageLoader.d.ts.map +0 -1
- package/dist/plugin/loader/createPageLoader.js +0 -50
- package/dist/plugin/loader/rsc/messageHandler.d.ts +0 -2
- package/dist/plugin/loader/rsc/messageHandler.d.ts.map +0 -1
- package/dist/plugin/loader/rsc/messageHandler.js +0 -1
- package/dist/plugin/loader/rsc/rsc-worker.development.d.ts +0 -2
- package/dist/plugin/loader/rsc/rsc-worker.development.d.ts.map +0 -1
- package/dist/plugin/loader/rsc/rsc-worker.development.js +0 -1
- package/dist/plugin/react-server/createHandler.d.ts +0 -17
- package/dist/plugin/react-server/createHandler.d.ts.map +0 -1
- package/dist/plugin/react-server/createHandler.js.map +0 -1
- package/dist/plugin/react-server/createRscStream.d.ts.map +0 -1
- package/dist/plugin/react-server/createRscStream.js +0 -70
- package/dist/plugin/react-server/createRscStream.js.map +0 -1
- package/dist/plugin/react-server/createSsrHandler.d.ts +0 -4
- package/dist/plugin/react-server/createSsrHandler.d.ts.map +0 -1
- package/dist/plugin/react-server/createSsrHandler.js +0 -95
- package/dist/plugin/utils/logger.d.ts +0 -9
- package/dist/plugin/utils/logger.d.ts.map +0 -1
- package/dist/plugin/utils/logger.js +0 -68
- package/dist/plugin/utils/logger.js.map +0 -1
- package/plugin/collect-css-manifest.ts +0 -82
- package/plugin/config/createModuleIdGenerator.ts +0 -52
- package/plugin/config/defaults.ts +0 -51
- package/plugin/loader/createCssLoader.ts +0 -73
- package/plugin/loader/createPageLoader.ts +0 -103
- package/plugin/loader/rsc/messageHandler.tsx +0 -1
- package/plugin/loader/rsc/rsc-worker.development.ts +0 -1
- package/plugin/react-server/createRscStream.ts +0 -86
- package/plugin/react-server/createSsrHandler.ts +0 -125
- package/plugin/utils/logger.ts +0 -52
|
@@ -1,2 +1,32 @@
|
|
|
1
|
+
declare module "node:module" {
|
|
2
|
+
interface ImportAttributes {
|
|
3
|
+
[key: string]: string | undefined;
|
|
4
|
+
}
|
|
5
|
+
interface ResolveHookContext {
|
|
6
|
+
conditions: string[];
|
|
7
|
+
parentURL: string | undefined;
|
|
8
|
+
importAttributes: ImportAttributes;
|
|
9
|
+
}
|
|
10
|
+
interface LoadHookContext {
|
|
11
|
+
conditions: string[];
|
|
12
|
+
format: ModuleFormat | null | undefined;
|
|
13
|
+
importAttributes: ImportAttributes;
|
|
14
|
+
shortCircuit?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface ResolveResult {
|
|
17
|
+
url: string;
|
|
18
|
+
shortCircuit: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface LoadResult {
|
|
21
|
+
format: string;
|
|
22
|
+
source: string | SharedArrayBuffer | Uint8Array;
|
|
23
|
+
shortCircuit: boolean;
|
|
24
|
+
}
|
|
25
|
+
interface HooksAPI {
|
|
26
|
+
resolve?: (specifier: string, context: ResolveHookContext, nextResolve: (specifier: string, context: ResolveHookContext) => ResolveResult) => ResolveResult;
|
|
27
|
+
load?: (url: string, context: LoadHookContext, nextLoad: (url: string, context: LoadHookContext) => LoadResult) => LoadResult;
|
|
28
|
+
}
|
|
29
|
+
function registerHooks(hooks: HooksAPI): void;
|
|
30
|
+
}
|
|
1
31
|
export {};
|
|
2
32
|
//# sourceMappingURL=html-worker.development.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-worker.development.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/html-worker.development.tsx"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"html-worker.development.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/html-worker.development.tsx"],"names":[],"mappings":"AACA,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAiB,gBAAgB;QAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC;IAED,UAAiB,kBAAkB;QACjC,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,gBAAgB,EAAE,gBAAgB,CAAC;KACpC;IAED,UAAiB,eAAe;QAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;QACxC,gBAAgB,EAAE,gBAAgB,CAAC;QACnC,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB;IAED,UAAiB,aAAa;QAC5B,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,OAAO,CAAC;KACvB;IAED,UAAiB,UAAU;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,UAAU,CAAC;QAChD,YAAY,EAAE,OAAO,CAAC;KACvB;IAED,UAAiB,QAAQ;QACvB,OAAO,CAAC,EAAE,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,KACxB,aAAa,KACf,aAAa,CAAC;QAEnB,IAAI,CAAC,EAAE,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,UAAU,KAC5D,UAAU,CAAC;KACjB;IAED,SAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtD"}
|
|
@@ -3,10 +3,38 @@
|
|
|
3
3
|
* Copyright (c) Nico Brinkkemper
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { pluginRoot } from '../../root.js';
|
|
6
8
|
import { messageHandler } from './messageHandler.js';
|
|
7
|
-
import { parentPort } from 'node:worker_threads';
|
|
9
|
+
import { parentPort, MessageChannel } from 'node:worker_threads';
|
|
10
|
+
import { register } from 'node:module';
|
|
11
|
+
import { register as register$1 } from 'tsx/esm/api';
|
|
8
12
|
|
|
9
13
|
if (!parentPort) throw new Error("This module must be run as a worker");
|
|
14
|
+
const reactLoaderChannel = new MessageChannel();
|
|
15
|
+
const cssLoaderChannel = new MessageChannel();
|
|
16
|
+
reactLoaderChannel.port2.on("message", messageHandler);
|
|
17
|
+
cssLoaderChannel.port2.on("message", messageHandler);
|
|
18
|
+
const loaderPath = "file://" + join(pluginRoot, "loader/react-loader.js");
|
|
19
|
+
const cssLoaderPath = "file://" + join(pluginRoot, "loader/css-loader.js");
|
|
20
|
+
register(loaderPath, {
|
|
21
|
+
parentURL: pluginRoot,
|
|
22
|
+
data: { port: reactLoaderChannel.port1 },
|
|
23
|
+
transferList: [reactLoaderChannel.port1]
|
|
24
|
+
});
|
|
25
|
+
register(cssLoaderPath, {
|
|
26
|
+
parentURL: pluginRoot,
|
|
27
|
+
data: { port: cssLoaderChannel.port1 },
|
|
28
|
+
transferList: [cssLoaderChannel.port1]
|
|
29
|
+
});
|
|
30
|
+
register$1();
|
|
10
31
|
parentPort?.on("message", messageHandler);
|
|
11
|
-
parentPort?.postMessage({
|
|
32
|
+
parentPort?.postMessage({
|
|
33
|
+
type: "READY",
|
|
34
|
+
env: process.env["NODE_ENV"],
|
|
35
|
+
pid: process.pid
|
|
36
|
+
});
|
|
37
|
+
if (process.env["NODE_ENV"] !== "development") {
|
|
38
|
+
throw new Error("This module must be run in development mode");
|
|
39
|
+
}
|
|
12
40
|
//# sourceMappingURL=html-worker.development.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-worker.development.js","sources":["../../../../plugin/worker/html/html-worker.development.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"html-worker.development.js","sources":["../../../../plugin/worker/html/html-worker.development.tsx"],"sourcesContent":["// no offical types for node:module available yet (23.7.0)\ndeclare module \"node:module\" {\n export interface ImportAttributes {\n [key: string]: string | undefined;\n }\n\n export interface ResolveHookContext {\n conditions: string[];\n parentURL: string | undefined;\n importAttributes: ImportAttributes;\n }\n\n export interface LoadHookContext {\n conditions: string[];\n format: ModuleFormat | null | undefined;\n importAttributes: ImportAttributes;\n shortCircuit?: boolean;\n }\n\n export interface ResolveResult {\n url: string;\n shortCircuit: boolean;\n }\n\n export interface LoadResult {\n format: string;\n source: string | SharedArrayBuffer | Uint8Array;\n shortCircuit: boolean;\n }\n\n export interface HooksAPI {\n resolve?: (\n specifier: string,\n context: ResolveHookContext,\n nextResolve: (\n specifier: string,\n context: ResolveHookContext\n ) => ResolveResult\n ) => ResolveResult;\n\n load?: (\n url: string,\n context: LoadHookContext,\n nextLoad: (url: string, context: LoadHookContext) => LoadResult\n ) => LoadResult;\n }\n\n export function registerHooks(hooks: HooksAPI): void;\n}\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../../root.js\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { parentPort } from \"node:worker_threads\";\nimport { register } from \"node:module\";\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { MessageChannel } from \"node:worker_threads\";\n\nif (!parentPort) throw new Error(\"This module must be run as a worker\");\n\n// Create channels for each loader\nconst reactLoaderChannel = new MessageChannel();\nconst cssLoaderChannel = new MessageChannel();\n\n// Listen for messages from loaders\nreactLoaderChannel.port2.on(\"message\", messageHandler);\ncssLoaderChannel.port2.on(\"message\", messageHandler);\n\nconst loaderPath = \"file://\" + join(pluginRoot, \"loader/react-loader.js\");\nconst cssLoaderPath = \"file://\" + join(pluginRoot, \"loader/css-loader.js\");\n\n// Register react-loader\nregister(loaderPath, {\n parentURL: pluginRoot,\n data: { port: reactLoaderChannel.port1 },\n transferList: [reactLoaderChannel.port1],\n});\nregister(cssLoaderPath, {\n parentURL: pluginRoot,\n data: { port: cssLoaderChannel.port1 },\n transferList: [cssLoaderChannel.port1],\n});\n\n// Register loaders\nregisterTsx();\n// Signal ready with environment\nparentPort?.on(\"message\", messageHandler);\nparentPort?.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n});\n\nif (process.env[\"NODE_ENV\"] !== \"development\") {\n throw new Error(\"This module must be run in development mode\");\n}\n"],"names":["registerTsx"],"mappings":";;;;;;;;;;;;AAyDA,IAAI,CAAC,UAAA,EAAkB,MAAA,IAAI,MAAM,qCAAqC,CAAA;AAGtE,MAAM,kBAAA,GAAqB,IAAI,cAAe,EAAA;AAC9C,MAAM,gBAAA,GAAmB,IAAI,cAAe,EAAA;AAG5C,kBAAmB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AACrD,gBAAiB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AAEnD,MAAM,UAAa,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,wBAAwB,CAAA;AACxE,MAAM,aAAgB,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,sBAAsB,CAAA;AAGzE,QAAA,CAAS,UAAY,EAAA;AAAA,EACnB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,kBAAA,CAAmB,KAAM,EAAA;AAAA,EACvC,YAAA,EAAc,CAAC,kBAAA,CAAmB,KAAK;AACzC,CAAC,CAAA;AACD,QAAA,CAAS,aAAe,EAAA;AAAA,EACtB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,gBAAA,CAAiB,KAAM,EAAA;AAAA,EACrC,YAAA,EAAc,CAAC,gBAAA,CAAiB,KAAK;AACvC,CAAC,CAAA;AAGDA,UAAY,EAAA;AAEZ,UAAY,EAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AACxC,UAAA,EAAY,WAAY,CAAA;AAAA,EACtB,IAAM,EAAA,OAAA;AAAA,EACN,GAAA,EAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAAA,EAC3B,KAAK,OAAQ,CAAA;AACf,CAAC,CAAA;AAED,IAAI,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,KAAM,aAAe,EAAA;AAC7C,EAAM,MAAA,IAAI,MAAM,6CAA6C,CAAA;AAC/D"}
|
|
@@ -5,12 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { messageHandler } from './messageHandler.js';
|
|
7
7
|
import { parentPort } from 'node:worker_threads';
|
|
8
|
-
import { Window } from 'happy-dom';
|
|
9
8
|
|
|
10
|
-
const window = new Window({ url: "https://localhost:8080" });
|
|
11
|
-
const document = window.document;
|
|
12
|
-
globalThis.window = window;
|
|
13
|
-
globalThis.document = document;
|
|
14
9
|
if (!parentPort) throw new Error("This module must be run as a worker");
|
|
15
10
|
parentPort?.on("message", messageHandler);
|
|
16
11
|
parentPort?.postMessage({
|
|
@@ -18,4 +13,7 @@ parentPort?.postMessage({
|
|
|
18
13
|
env: process.env["NODE_ENV"],
|
|
19
14
|
pid: process.pid
|
|
20
15
|
});
|
|
16
|
+
if (process.env["NODE_ENV"] !== "production") {
|
|
17
|
+
throw new Error("This module must be run in development mode");
|
|
18
|
+
}
|
|
21
19
|
//# sourceMappingURL=html-worker.production.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-worker.production.js","sources":["../../../../plugin/worker/html/html-worker.production.tsx"],"sourcesContent":["import { messageHandler } from \"./messageHandler.js\";\nimport { parentPort } from \"node:worker_threads\";\
|
|
1
|
+
{"version":3,"file":"html-worker.production.js","sources":["../../../../plugin/worker/html/html-worker.production.tsx"],"sourcesContent":["import { messageHandler } from \"./messageHandler.js\";\nimport { parentPort } from \"node:worker_threads\";\n\nif (!parentPort) throw new Error(\"This module must be run as a worker\");\n\n// Signal ready with environment\nparentPort?.on(\"message\", messageHandler);\nparentPort?.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n});\n\nif (process.env[\"NODE_ENV\"] !== \"production\") {\n throw new Error(\"This module must be run in development mode\");\n}"],"names":[],"mappings":";;;;;;;;AAGA,IAAI,CAAC,UAAA,EAAkB,MAAA,IAAI,MAAM,qCAAqC,CAAA;AAGtE,UAAY,EAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AACxC,UAAA,EAAY,WAAY,CAAA;AAAA,EACtB,IAAM,EAAA,OAAA;AAAA,EACN,GAAA,EAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA;AAAA,EAC3B,KAAK,OAAQ,CAAA;AACf,CAAC,CAAA;AAED,IAAI,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,KAAM,YAAc,EAAA;AAC5C,EAAM,MAAA,IAAI,MAAM,6CAA6C,CAAA;AAC/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/messageHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/messageHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAYtE,eAAO,MAAM,cAAc,YAAmB,iBAAiB,kBAgH9D,CAAC"}
|
|
@@ -8,7 +8,6 @@ import { parentPort } from 'node:worker_threads';
|
|
|
8
8
|
import * as ReactDOMServer from 'react-dom/server';
|
|
9
9
|
import 'react';
|
|
10
10
|
import { createFromNodeStream } from 'react-server-dom-esm/client.node';
|
|
11
|
-
import { join } from 'path';
|
|
12
11
|
|
|
13
12
|
const activeRenders = /* @__PURE__ */ new Map();
|
|
14
13
|
const htmlContent = /* @__PURE__ */ new Map();
|
|
@@ -28,7 +27,7 @@ const messageHandler = async (message) => {
|
|
|
28
27
|
moduleRootPath,
|
|
29
28
|
moduleBaseURL,
|
|
30
29
|
outDir: "",
|
|
31
|
-
htmlOutputPath
|
|
30
|
+
htmlOutputPath,
|
|
32
31
|
pipableStreamOptions
|
|
33
32
|
});
|
|
34
33
|
} else {
|
|
@@ -73,6 +72,13 @@ const messageHandler = async (message) => {
|
|
|
73
72
|
reactElements,
|
|
74
73
|
{
|
|
75
74
|
...render.pipableStreamOptions,
|
|
75
|
+
// Calculate relative paths based on route depth
|
|
76
|
+
bootstrapModules: render.pipableStreamOptions?.bootstrapModules?.map((path) => {
|
|
77
|
+
if (!path) return path;
|
|
78
|
+
const depth = id.split("/").filter(Boolean).length;
|
|
79
|
+
const prefix = depth > 0 ? "../".repeat(depth) : "/";
|
|
80
|
+
return path.startsWith("/") ? prefix + path.slice(1) : prefix + path;
|
|
81
|
+
}),
|
|
76
82
|
onShellReady() {
|
|
77
83
|
parentPort?.postMessage({ type: "SHELL_READY", id });
|
|
78
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/html/messageHandler.ts"],"sourcesContent":["import { PassThrough } from \"node:stream\";\nimport { parentPort } from \"node:worker_threads\";\nimport type { HtmlRenderState, HtmlWorkerMessage } from \"../types.js\";\nimport * as ReactDOMServer from \"react-dom/server\";\nimport React from \"react\";\nimport {\n createFromNodeStream,\n // @ts-ignore\n} from \"react-server-dom-esm/client.node\";\
|
|
1
|
+
{"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/html/messageHandler.ts"],"sourcesContent":["import { PassThrough } from \"node:stream\";\nimport { parentPort } from \"node:worker_threads\";\nimport type { HtmlRenderState, HtmlWorkerMessage } from \"../types.js\";\nimport * as ReactDOMServer from \"react-dom/server\";\nimport React from \"react\";\nimport {\n createFromNodeStream,\n // @ts-ignore\n} from \"react-server-dom-esm/client.node\";\n\n// Track active renders and streams\nconst activeRenders = new Map<string, HtmlRenderState>();\nconst htmlContent = new Map<string, string>();\nconst htmlPromises = new Map<string, Promise<string>>();\nexport const messageHandler = async (message: HtmlWorkerMessage) => {\n try {\n switch (message.type) {\n case \"RSC_CHUNK\": {\n const { id, chunk, moduleRootPath, moduleBaseURL, htmlOutputPath, pipableStreamOptions } = message;\n \n const render = activeRenders.get(id);\n if (!render) {\n activeRenders.set(id, {\n chunks: [chunk],\n id,\n complete: false,\n rendered: false,\n moduleRootPath,\n moduleBaseURL,\n outDir: '',\n htmlOutputPath: htmlOutputPath,\n pipableStreamOptions: pipableStreamOptions,\n });\n } else {\n render.chunks = [...render.chunks, chunk];\n }\n break;\n }\n\n case \"RSC_END\": {\n const { id } = message;\n const render = activeRenders.get(id);\n if (!render) {\n throw new Error(`No render state found for ${id}`);\n }\n\n // Mark this render as complete\n render.complete = true;\n\n // Create a PassThrough stream to handle the chunks\n const rscStream = new PassThrough();\n\n // Write all chunks to the stream\n for (const chunk of render.chunks) {\n rscStream.write(chunk);\n }\n rscStream.end();\n \n // Create React elements from stream\n const reactElements = await createFromNodeStream(\n rscStream,\n render.moduleRootPath,\n 'localhost'\n );\n\n // Create a promise that resolves when HTML is complete\n const htmlPromise = new Promise<string>((resolve) => {\n const collectStream = new PassThrough();\n let html = '';\n\n collectStream.on(\"data\", (chunk) => {\n html += chunk.toString();\n });\n\n collectStream.on(\"end\", () => {\n resolve(html);\n render.rendered = true;\n parentPort?.postMessage({\n type: \"ALL_READY\",\n id,\n html,\n outputPath: render.htmlOutputPath,\n });\n });\n // Render to pipeable stream\n const stream = ReactDOMServer.renderToPipeableStream(\n reactElements as React.ReactNode,\n {\n ...render.pipableStreamOptions,\n // Calculate relative paths based on route depth\n bootstrapModules: render.pipableStreamOptions?.bootstrapModules?.map(path => {\n if (!path) return path;\n const depth = id.split('/').filter(Boolean).length ;\n const prefix = depth > 0 ? '../'.repeat(depth) : '/';\n return path.startsWith('/') ? prefix + path.slice(1) : prefix + path;\n }),\n onShellReady() {\n parentPort?.postMessage({ type: \"SHELL_READY\", id });\n }\n }\n );\n\n // Pipe to collection stream\n stream.pipe(collectStream);\n });\n\n htmlPromises.set(id, htmlPromise);\n\n // Clean up resources\n rscStream.destroy();\n activeRenders.delete(id);\n htmlContent.delete(id);\n htmlPromises.delete(id);\n break;\n }\n\n case \"SHUTDOWN\": {\n console.log('Received shutdown signal');\n parentPort?.close();\n break;\n }\n }\n } catch (error) {\n console.error('Error in messageHandler:', error);\n throw error;\n }\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AAG/C,OAAO,KAAK,EAAuB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAM/E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAC;AAG/C,OAAO,KAAK,EAAuB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAM/E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA0F1E"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { join, resolve } from "path";
|
|
2
2
|
import { DEFAULT_CONFIG } from "../../config/defaults.js";
|
|
3
|
-
import {
|
|
3
|
+
import { pluginRoot } from "../../root.js";
|
|
4
4
|
import { resolveOptions } from "../../config/resolveOptions.js";
|
|
5
5
|
let userOptions;
|
|
6
6
|
export function reactHtmlWorkerPlugin(options) {
|
|
7
|
-
const resolvedUserOptions = resolveOptions(options);
|
|
7
|
+
const resolvedUserOptions = resolveOptions(options, false);
|
|
8
8
|
if (resolvedUserOptions.type === 'error') {
|
|
9
9
|
throw resolvedUserOptions.error;
|
|
10
10
|
}
|
|
@@ -13,7 +13,6 @@ export function reactHtmlWorkerPlugin(options) {
|
|
|
13
13
|
name: "vite:react-html-worker",
|
|
14
14
|
config(config) {
|
|
15
15
|
const root = config.root ?? process.cwd();
|
|
16
|
-
const pluginRoot = getPluginRoot();
|
|
17
16
|
const htmlWorkerPath = typeof options.htmlWorkerPath === 'string'
|
|
18
17
|
? resolve(root, options.htmlWorkerPath)
|
|
19
18
|
: resolve(pluginRoot, DEFAULT_CONFIG.HTML_WORKER_PATH);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Worker } from "node:worker_threads";
|
|
2
|
-
import type { CheckFilesExistReturn, ResolvedUserConfig, ResolvedUserOptions } from "../../types.js";
|
|
3
|
-
import type { Manifest } from "vite";
|
|
4
|
-
import type { PluginContext } from "rollup";
|
|
2
|
+
import type { CheckFilesExistReturn, PageData, ResolvedUserConfig, ResolvedUserOptions } from "../../types.js";
|
|
3
|
+
import type { Manifest, IndexHtmlTransformHook } from "vite";
|
|
5
4
|
interface PipeableStreamOptions {
|
|
6
5
|
bootstrapModules?: string[];
|
|
7
6
|
bootstrapScripts?: string[];
|
|
@@ -27,11 +26,16 @@ type RenderPagesOptions = {
|
|
|
27
26
|
pipableStreamOptions?: PipeableStreamOptions;
|
|
28
27
|
loader: (id: string) => Promise<Record<string, any>>;
|
|
29
28
|
onCssFile?: (url: string, parentUrl: string) => void;
|
|
29
|
+
onClientJSFile?: (url: string, parentUrl: string) => void;
|
|
30
|
+
onPage?: (pageData: PageData) => Promise<void>;
|
|
30
31
|
clientCss?: string[];
|
|
31
32
|
moduleBasePath: string;
|
|
32
33
|
moduleBaseURL: string;
|
|
34
|
+
transformIndexHtml: IndexHtmlTransformHook;
|
|
35
|
+
outDir: string;
|
|
36
|
+
htmlOutputPath: string;
|
|
33
37
|
};
|
|
34
|
-
export declare function renderPages(
|
|
38
|
+
export declare function renderPages(routes: string[], files: CheckFilesExistReturn, options: RenderPagesOptions): Promise<{
|
|
35
39
|
failedRoutes: Map<string, Error>;
|
|
36
40
|
completedRoutes: Set<string>;
|
|
37
41
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderPages.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/renderPages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderPages.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/html/renderPages.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EACV,qBAAqB,EACrB,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,MAAM,CAAC;AAG7D,UAAU,qBAAqB;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;CACH;AAED,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,cAAc,EAAE,QAAQ,CAAC;IACzB,cAAc,EAAE,QAAQ,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,kBAAkB;;;GA0O5B"}
|
|
@@ -3,37 +3,62 @@
|
|
|
3
3
|
* Copyright (c) Nico Brinkkemper
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { dirname, join } from 'node:path';
|
|
6
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
7
|
+
import { join, dirname } from 'node:path';
|
|
9
8
|
import { Transform } from 'node:stream';
|
|
10
|
-
import { createHandler } from '../../
|
|
9
|
+
import { createHandler } from '../../helpers/createHandler.js';
|
|
11
10
|
import React__default from 'react';
|
|
12
|
-
import { collectManifestCss } from '../../collect-css-manifest.js';
|
|
13
11
|
|
|
14
|
-
async function renderPages(
|
|
15
|
-
const root = pluginContext.environment.config.root;
|
|
16
|
-
pluginContext.environment.config.build.outDir;
|
|
12
|
+
async function renderPages(routes, files, options) {
|
|
17
13
|
const failedRoutes = /* @__PURE__ */ new Map();
|
|
18
14
|
const completedRoutes = /* @__PURE__ */ new Set();
|
|
19
15
|
const clientCss = options.clientCss ?? [];
|
|
16
|
+
const partialPageData = /* @__PURE__ */ new Map();
|
|
17
|
+
const mergeAndSendPageData = async (route, resolve) => {
|
|
18
|
+
const partial = partialPageData.get(route);
|
|
19
|
+
if (!partial?.html || !partial.rsc) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const pageData = {
|
|
23
|
+
route,
|
|
24
|
+
html: partial.html,
|
|
25
|
+
rsc: partial.rsc
|
|
26
|
+
};
|
|
27
|
+
console.log("route", route);
|
|
28
|
+
let routeHtmlPath = route === "/" ? options.htmlOutputPath : options.htmlOutputPath.replace("index.html", join(route, "index.html"));
|
|
29
|
+
if (routeHtmlPath.startsWith("/")) {
|
|
30
|
+
routeHtmlPath = routeHtmlPath.slice(1);
|
|
31
|
+
}
|
|
32
|
+
const routeRscPath = routeHtmlPath.slice(0, -5) + ".rsc";
|
|
33
|
+
await mkdir(dirname(routeHtmlPath), { recursive: true });
|
|
34
|
+
await writeFile(routeRscPath, partial.rsc.content);
|
|
35
|
+
await writeFile(routeHtmlPath, partial.html.raw);
|
|
36
|
+
await options.onPage?.(pageData);
|
|
37
|
+
completedRoutes.add(route);
|
|
38
|
+
if (completedRoutes.size === routes.length) {
|
|
39
|
+
resolve();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
20
42
|
try {
|
|
21
43
|
const allRoutesComplete = new Promise((resolve, reject) => {
|
|
22
|
-
options.worker.on("message", (msg) => {
|
|
44
|
+
options.worker.on("message", async (msg) => {
|
|
23
45
|
switch (msg.type) {
|
|
24
46
|
case "ALL_READY": {
|
|
25
|
-
const { id, html
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
47
|
+
const { id, html } = msg;
|
|
48
|
+
try {
|
|
49
|
+
const partial = partialPageData.get(id) || { route: id };
|
|
50
|
+
partial.html = {
|
|
51
|
+
raw: html,
|
|
52
|
+
transformed: "",
|
|
53
|
+
// Will be set by main thread transform
|
|
54
|
+
assets: []
|
|
55
|
+
};
|
|
56
|
+
partialPageData.set(id, partial);
|
|
57
|
+
await mergeAndSendPageData(id, resolve);
|
|
58
|
+
} catch (error) {
|
|
34
59
|
failedRoutes.set(id, error);
|
|
35
60
|
reject(error);
|
|
36
|
-
}
|
|
61
|
+
}
|
|
37
62
|
break;
|
|
38
63
|
}
|
|
39
64
|
case "ERROR": {
|
|
@@ -45,18 +70,6 @@ async function renderPages(pluginContext, routes, files, options) {
|
|
|
45
70
|
}
|
|
46
71
|
});
|
|
47
72
|
});
|
|
48
|
-
const newCssFiles = collectManifestCss(
|
|
49
|
-
options.clientManifest,
|
|
50
|
-
options.moduleBasePath,
|
|
51
|
-
"index.html",
|
|
52
|
-
(url, parentUrl) => {
|
|
53
|
-
options?.onCssFile?.(url, parentUrl);
|
|
54
|
-
if (!clientCss.includes(url)) {
|
|
55
|
-
clientCss.push(url);
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
join(root, options.pluginOptions.build.outDir, options.pluginOptions.build.client)
|
|
59
|
-
);
|
|
60
73
|
for (const route of routes) {
|
|
61
74
|
const routeFiles = files.urlMap.get(route);
|
|
62
75
|
if (!routeFiles) {
|
|
@@ -64,79 +77,101 @@ async function renderPages(pluginContext, routes, files, options) {
|
|
|
64
77
|
failedRoutes.set(route, new Error(`No files found for ${route}`));
|
|
65
78
|
continue;
|
|
66
79
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
options.onCssFile?.(url, parentUrl);
|
|
73
|
-
if (!clientCss.includes(url)) {
|
|
74
|
-
clientCss.push(url);
|
|
75
|
-
}
|
|
80
|
+
if (options.pipableStreamOptions?.importMap?.imports) {
|
|
81
|
+
for (let [, value] of Object.entries(
|
|
82
|
+
options.pipableStreamOptions?.importMap?.imports
|
|
83
|
+
)) {
|
|
84
|
+
options.onClientJSFile?.(value, route);
|
|
76
85
|
}
|
|
77
|
-
|
|
78
|
-
const rscResult = await createHandler(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
}
|
|
87
|
+
const rscResult = await createHandler({
|
|
88
|
+
url: route,
|
|
89
|
+
urlMap: files.urlMap,
|
|
90
|
+
pluginOptions: {
|
|
91
|
+
...options.pluginOptions,
|
|
92
|
+
Html: React__default.Fragment
|
|
93
|
+
// Use Fragment for pure RSC output
|
|
94
|
+
},
|
|
95
|
+
streamOptions: {
|
|
96
|
+
loader: options.loader,
|
|
97
|
+
clientManifest: options.clientManifest,
|
|
98
|
+
serverManifest: options.serverManifest,
|
|
99
|
+
cssFiles: clientCss,
|
|
100
|
+
moduleBasePath: "",
|
|
101
|
+
moduleBaseURL: "",
|
|
102
|
+
pipableStreamOptions: {
|
|
103
|
+
...options.pipableStreamOptions,
|
|
104
|
+
importMap: {
|
|
105
|
+
imports: {
|
|
106
|
+
...options.pipableStreamOptions?.importMap?.imports
|
|
107
|
+
}
|
|
92
108
|
}
|
|
93
109
|
}
|
|
94
110
|
}
|
|
95
111
|
});
|
|
96
|
-
const htmlResult = await createHandler(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
112
|
+
const htmlResult = await createHandler({
|
|
113
|
+
url: route,
|
|
114
|
+
urlMap: files.urlMap,
|
|
115
|
+
pluginOptions: options.pluginOptions,
|
|
116
|
+
streamOptions: {
|
|
117
|
+
loader: options.loader,
|
|
118
|
+
clientManifest: options.clientManifest,
|
|
119
|
+
serverManifest: options.serverManifest,
|
|
120
|
+
cssFiles: clientCss,
|
|
121
|
+
moduleBasePath: "",
|
|
122
|
+
moduleBaseURL: "",
|
|
123
|
+
pipableStreamOptions: {
|
|
124
|
+
...options.pipableStreamOptions,
|
|
125
|
+
importMap: {
|
|
126
|
+
imports: {
|
|
127
|
+
...options.pipableStreamOptions?.importMap?.imports
|
|
128
|
+
}
|
|
106
129
|
}
|
|
107
130
|
}
|
|
108
131
|
}
|
|
109
132
|
});
|
|
110
133
|
if (rscResult.type !== "success" || htmlResult.type !== "success") {
|
|
111
|
-
|
|
134
|
+
if (rscResult.type !== "success") {
|
|
135
|
+
if (rscResult.type !== "skip") {
|
|
136
|
+
console.error("Handler failed for route:", route, rscResult.error);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (htmlResult.type !== "success") {
|
|
140
|
+
if (htmlResult.type !== "skip") {
|
|
141
|
+
console.error("Handler failed for route:", route, htmlResult.error);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
112
144
|
failedRoutes.set(route, new Error(`Handler failed for ${route}`));
|
|
113
145
|
continue;
|
|
114
146
|
}
|
|
115
147
|
await Promise.all([
|
|
116
|
-
//
|
|
148
|
+
// Handle RSC stream
|
|
117
149
|
new Promise((resolve, reject) => {
|
|
118
150
|
const chunks = [];
|
|
119
151
|
const rscTransform = new Transform({
|
|
120
152
|
transform(chunk, _encoding, callback) {
|
|
121
153
|
try {
|
|
122
|
-
|
|
123
|
-
|
|
154
|
+
if (chunk) {
|
|
155
|
+
chunks.push(Buffer.from(chunk));
|
|
156
|
+
callback(null, chunk);
|
|
157
|
+
}
|
|
124
158
|
} catch (error) {
|
|
125
159
|
callback(error);
|
|
126
160
|
}
|
|
127
161
|
},
|
|
128
|
-
flush(callback) {
|
|
162
|
+
async flush(callback) {
|
|
129
163
|
try {
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
164
|
+
const rscContent = Buffer.concat(chunks).toString("utf-8");
|
|
165
|
+
const partial = partialPageData.get(route) || { route };
|
|
166
|
+
partial.rsc = {
|
|
167
|
+
modules: [],
|
|
168
|
+
// Will be parsed by the client
|
|
169
|
+
content: rscContent
|
|
170
|
+
};
|
|
171
|
+
partialPageData.set(route, partial);
|
|
172
|
+
await mergeAndSendPageData(route, resolve);
|
|
173
|
+
callback();
|
|
174
|
+
resolve();
|
|
140
175
|
} catch (error) {
|
|
141
176
|
callback(error);
|
|
142
177
|
reject(error);
|
|
@@ -146,7 +181,7 @@ async function renderPages(pluginContext, routes, files, options) {
|
|
|
146
181
|
rscResult.stream.pipe(rscTransform);
|
|
147
182
|
}),
|
|
148
183
|
// Send HTML stream to worker
|
|
149
|
-
new Promise((resolve
|
|
184
|
+
new Promise((resolve) => {
|
|
150
185
|
const htmlTransform = new Transform({
|
|
151
186
|
transform(chunk, _encoding, callback) {
|
|
152
187
|
try {
|
|
@@ -154,9 +189,9 @@ async function renderPages(pluginContext, routes, files, options) {
|
|
|
154
189
|
type: "RSC_CHUNK",
|
|
155
190
|
id: route,
|
|
156
191
|
chunk: chunk.toString(),
|
|
157
|
-
moduleRootPath:
|
|
192
|
+
moduleRootPath: options.moduleBasePath,
|
|
158
193
|
moduleBaseURL: options.moduleBaseURL,
|
|
159
|
-
htmlOutputPath:
|
|
194
|
+
htmlOutputPath: options.htmlOutputPath,
|
|
160
195
|
pipableStreamOptions: options.pipableStreamOptions
|
|
161
196
|
});
|
|
162
197
|
callback(null, chunk);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderPages.js","sources":["../../../../plugin/worker/html/renderPages.ts"],"sourcesContent":["import { mkdirSync } from \"node:fs\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join, resolve as resolvePath } from \"node:path\";\nimport { Transform } from \"node:stream\";\nimport type { Worker } from \"node:worker_threads\";\nimport { createHandler } from \"../../react-server/createHandler.js\";\nimport type { CheckFilesExistReturn, ResolvedUserConfig, ResolvedUserOptions } from \"../../types.js\";\nimport type {\n HtmlWorkerResponse,\n WorkerRscChunkMessage,\n} from \"../types.js\";\nimport type { Manifest } from \"vite\";\nimport type {\n PluginContext,\n} from \"rollup\";\nimport React from \"react\";\nimport { collectManifestCss } from \"../../collect-css-manifest.js\";\n\ninterface PipeableStreamOptions {\n bootstrapModules?: string[];\n bootstrapScripts?: string[];\n bootstrapScriptContent?: string;\n signal?: AbortSignal;\n identifierPrefix?: string;\n namespaceURI?: string;\n nonce?: string;\n progressiveChunkSize?: number;\n onShellReady?: () => void;\n onAllReady?: () => void;\n onError?: (error: unknown) => void;\n importMap?: {\n imports?: Record<string, string>;\n };\n}\n\ntype RenderPagesOptions = {\n pluginOptions: ResolvedUserOptions;\n userConfig: ResolvedUserConfig;\n clientManifest: Manifest;\n serverManifest: Manifest;\n worker: Worker;\n pipableStreamOptions?: PipeableStreamOptions;\n loader: (id: string) => Promise<Record<string, any>>;\n onCssFile?: (url: string, parentUrl: string) => void;\n clientCss?: string[];\n moduleBasePath: string;\n moduleBaseURL: string;\n};\n\nexport async function renderPages(\n pluginContext: PluginContext,\n routes: string[],\n files: CheckFilesExistReturn,\n options: RenderPagesOptions,\n) {\n const root = pluginContext.environment.config.root;\n const outDir = pluginContext.environment.config.build.outDir;\n const failedRoutes = new Map<string, Error>();\n const completedRoutes = new Set<string>();\n const writePromises = new Map<string, Promise<void>>();\n const clientCss = options.clientCss ?? [];\n try {\n // Set up worker message handling\n const allRoutesComplete = new Promise<void>((resolve, reject) => {\n options.worker.on(\"message\", (msg: HtmlWorkerResponse) => {\n switch (msg.type) {\n case \"ALL_READY\": {\n const { id, html, outputPath } = msg;\n mkdirSync(dirname(outputPath), { recursive: true });\n \n writeFile(outputPath, html)\n .then(() => {\n completedRoutes.add(id);\n if (completedRoutes.size === routes.length) {\n resolve();\n }\n })\n .catch((error) => {\n console.error('Write error for route:', id, error);\n failedRoutes.set(id, error as Error);\n reject(error);\n });\n break;\n }\n case \"ERROR\": {\n console.error('Worker error for route:', msg.id, msg.error);\n failedRoutes.set(msg.id, new Error(msg.error));\n reject(new Error(msg.error));\n break;\n }\n }\n });\n });\n\n const newCssFiles = collectManifestCss(\n options.clientManifest,\n options.moduleBasePath,\n 'index.html',\n (url, parentUrl)=>{\n options?.onCssFile?.(url, parentUrl);\n if(!clientCss.includes(url)){\n clientCss.push(url);\n }\n },\n join(root, options.pluginOptions.build.outDir, options.pluginOptions.build.client)\n );\n\n // Process routes sequentially\n for (const route of routes) {\n const routeFiles = files.urlMap.get(route);\n if (!routeFiles) {\n console.error('No files found for route:', route);\n failedRoutes.set(route, new Error(`No files found for ${route}`));\n continue;\n }\n\n collectManifestCss(\n options.serverManifest,\n options.moduleBasePath,\n routeFiles.page,\n (url, parentUrl)=>{\n options.onCssFile?.(url, parentUrl);\n if(!clientCss.includes(url)){\n clientCss.push(url);\n }\n }\n );\n // Create handler for pure RSC output\n const rscResult = await createHandler(route, {\n ...options.pluginOptions,\n Html: React.Fragment // Use Fragment for pure RSC output\n }, {\n loader: options.loader,\n clientManifest: options.clientManifest,\n serverManifest: options.serverManifest,\n cssFiles: Array.from(newCssFiles.values()).concat(clientCss),\n pipableStreamOptions: {\n ...options.pipableStreamOptions,\n importMap: {\n imports: {\n ...options.pipableStreamOptions?.importMap?.imports,\n }\n }\n },\n });\n\n // Create handler for HTML output\n const htmlResult = await createHandler(route, options.pluginOptions, {\n loader: options.loader,\n clientManifest: options.clientManifest,\n serverManifest: options.serverManifest,\n cssFiles: clientCss,\n pipableStreamOptions: {\n ...options.pipableStreamOptions,\n importMap: {\n imports: {\n ...options.pipableStreamOptions?.importMap?.imports\n }\n }\n },\n });\n\n if (rscResult.type !== \"success\" || htmlResult.type !== \"success\") {\n console.error('Handler failed for route:', route);\n failedRoutes.set(route, new Error(`Handler failed for ${route}`));\n continue;\n }\n\n // Process both streams\n await Promise.all([\n // Save RSC stream to .rsc file in client directory\n new Promise<void>((resolve, reject) => {\n const chunks: Buffer[] = [];\n const rscTransform = new Transform({\n transform(chunk, _encoding, callback) {\n try {\n chunks.push(Buffer.from(chunk));\n callback(null, chunk);\n } catch (error) {\n callback(error as Error);\n }\n },\n flush(callback) {\n try {\n const rscPath = join(options.pluginOptions.build.outDir, options.pluginOptions.build.client, route, 'index.rsc');\n \n // Ensure directory exists\n mkdirSync(dirname(rscPath), { recursive: true });\n \n // Write complete file\n writeFile(rscPath, Buffer.concat(chunks))\n .then(() => {\n callback();\n resolve();\n })\n .catch(error => {\n console.error('RSC write error:', error);\n callback(error as Error);\n reject(error);\n });\n } catch (error) {\n callback(error as Error);\n reject(error);\n }\n }\n });\n\n rscResult.stream.pipe(rscTransform);\n }),\n\n // Send HTML stream to worker\n new Promise<void>((resolve, reject) => {\n const htmlTransform = new Transform({\n transform(chunk, _encoding, callback) {\n try {\n options.worker.postMessage({\n type: \"RSC_CHUNK\",\n id: route,\n chunk: chunk.toString(),\n moduleRootPath: join(root, options.pluginOptions.build.outDir, options.pluginOptions.build.client),\n moduleBaseURL: options.moduleBaseURL,\n htmlOutputPath: join(options.pluginOptions.build.outDir, options.pluginOptions.build.client, route, 'index.html'),\n pipableStreamOptions: options.pipableStreamOptions,\n });\n callback(null, chunk);\n } catch (error) {\n callback(error as Error);\n }\n },\n flush(callback) {\n options.worker.postMessage({\n type: \"RSC_END\",\n id: route,\n });\n callback();\n resolve();\n }\n });\n\n htmlResult.stream.pipe(htmlTransform);\n })\n ]);\n }\n\n await allRoutesComplete;\n\n } catch (error) {\n console.error('Render error:', error);\n throw error;\n }\n\n return { failedRoutes, completedRoutes };\n}\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderPages.js","sources":["../../../../plugin/worker/html/renderPages.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { Transform } from \"node:stream\";\nimport type { Worker } from \"node:worker_threads\";\nimport { createHandler } from \"../../helpers/createHandler.js\";\nimport type {\n CheckFilesExistReturn,\n PageData,\n ResolvedUserConfig,\n ResolvedUserOptions,\n} from \"../../types.js\";\nimport type { HtmlWorkerResponse } from \"../types.js\";\nimport type { Manifest, IndexHtmlTransformHook } from \"vite\";\nimport React from \"react\";\n\ninterface PipeableStreamOptions {\n bootstrapModules?: string[];\n bootstrapScripts?: string[];\n bootstrapScriptContent?: string;\n signal?: AbortSignal;\n identifierPrefix?: string;\n namespaceURI?: string;\n nonce?: string;\n progressiveChunkSize?: number;\n onShellReady?: () => void;\n onAllReady?: () => void;\n onError?: (error: unknown) => void;\n importMap?: {\n imports?: Record<string, string>;\n };\n}\n\ntype RenderPagesOptions = {\n pluginOptions: ResolvedUserOptions;\n userConfig: ResolvedUserConfig;\n clientManifest: Manifest;\n serverManifest: Manifest;\n worker: Worker;\n pipableStreamOptions?: PipeableStreamOptions;\n loader: (id: string) => Promise<Record<string, any>>;\n onCssFile?: (url: string, parentUrl: string) => void;\n onClientJSFile?: (url: string, parentUrl: string) => void;\n onPage?: (pageData: PageData) => Promise<void>;\n clientCss?: string[];\n moduleBasePath: string;\n moduleBaseURL: string;\n transformIndexHtml: IndexHtmlTransformHook;\n outDir: string;\n htmlOutputPath: string;\n};\n\nexport async function renderPages(\n routes: string[],\n files: CheckFilesExistReturn,\n options: RenderPagesOptions\n) {\n const failedRoutes = new Map<string, Error>();\n const completedRoutes = new Set<string>();\n const clientCss = options.clientCss ?? [];\n const partialPageData = new Map<string, Partial<PageData>>();\n \n const mergeAndSendPageData = async (route: string, resolve: () => void) => {\n const partial = partialPageData.get(route);\n if (!partial?.html || !partial.rsc) {\n return; // Wait for both parts\n }\n\n const pageData: PageData = {\n route,\n html: partial.html,\n rsc: partial.rsc,\n };\n\n // Write RSC file\n console.log('route', route)\n // Write HTML file\n let routeHtmlPath = route === '/' ? options.htmlOutputPath : options.htmlOutputPath.replace('index.html', join(route, 'index.html'));\n if(routeHtmlPath.startsWith('/')) {\n routeHtmlPath = routeHtmlPath.slice(1);\n }\n const routeRscPath = routeHtmlPath.slice(0, -5) + '.rsc';\n await mkdir(dirname(routeHtmlPath), { recursive: true });\n await writeFile(routeRscPath, partial.rsc.content); \n await writeFile(routeHtmlPath, partial.html.raw);\n\n await options.onPage?.(pageData);\n completedRoutes.add(route);\n if (completedRoutes.size === routes.length) {\n resolve();\n }\n };\n\n try {\n // Set up worker message handling\n const allRoutesComplete = new Promise<void>((resolve, reject) => {\n options.worker.on(\"message\", async (msg: HtmlWorkerResponse) => {\n switch (msg.type) {\n case \"ALL_READY\": {\n const { id, html } = msg;\n try {\n const partial = partialPageData.get(id) || { route: id };\n\n partial.html = {\n raw: html,\n transformed: \"\", // Will be set by main thread transform\n assets: [],\n };\n partialPageData.set(id, partial);\n await mergeAndSendPageData(id, resolve);\n } catch (error) {\n failedRoutes.set(id, error as Error);\n reject(error);\n }\n break;\n }\n case \"ERROR\": {\n console.error(\"Worker error for route:\", msg.id, msg.error);\n failedRoutes.set(msg.id, new Error(msg.error));\n reject(new Error(msg.error));\n break;\n }\n }\n });\n });\n\n // Process routes sequentially\n for (const route of routes) {\n const routeFiles = files.urlMap.get(route);\n if (!routeFiles) {\n console.error(\"No files found for route:\", route);\n failedRoutes.set(route, new Error(`No files found for ${route}`));\n continue;\n }\n\n if (options.pipableStreamOptions?.importMap?.imports) {\n for (let [, value] of Object.entries(\n options.pipableStreamOptions?.importMap?.imports\n )) {\n options.onClientJSFile?.(value, route);\n }\n }\n\n // Create handler for pure RSC output\n const rscResult = await createHandler({\n url: route,\n urlMap: files.urlMap,\n pluginOptions: {\n ...options.pluginOptions,\n Html: React.Fragment, // Use Fragment for pure RSC output\n },\n streamOptions: {\n loader: options.loader,\n clientManifest: options.clientManifest,\n serverManifest: options.serverManifest,\n cssFiles: clientCss,\n moduleBasePath: '',\n moduleBaseURL: '',\n pipableStreamOptions: {\n ...options.pipableStreamOptions,\n importMap: {\n imports: {\n ...options.pipableStreamOptions?.importMap?.imports,\n },\n },\n },\n },\n });\n\n // Create handler for HTML output\n const htmlResult = await createHandler({\n url: route,\n urlMap: files.urlMap,\n pluginOptions: options.pluginOptions,\n streamOptions: {\n loader: options.loader,\n clientManifest: options.clientManifest,\n serverManifest: options.serverManifest,\n cssFiles: clientCss,\n moduleBasePath: '',\n moduleBaseURL: '',\n pipableStreamOptions: {\n ...options.pipableStreamOptions,\n importMap: {\n imports: {\n ...options.pipableStreamOptions?.importMap?.imports,\n },\n },\n },\n },\n });\n\n if (rscResult.type !== \"success\" || htmlResult.type !== \"success\") {\n if (rscResult.type !== \"success\") {\n if (rscResult.type !== \"skip\") {\n console.error(\"Handler failed for route:\", route, rscResult.error);\n }\n }\n if (htmlResult.type !== \"success\") {\n if (htmlResult.type !== \"skip\") {\n console.error(\"Handler failed for route:\", route, htmlResult.error);\n }\n }\n failedRoutes.set(route, new Error(`Handler failed for ${route}`));\n continue;\n }\n\n // Process both streams\n await Promise.all([\n // Handle RSC stream\n new Promise<void>((resolve, reject) => {\n const chunks: Buffer[] = [];\n const rscTransform = new Transform({\n transform(chunk, _encoding, callback) {\n try {\n if (chunk) {\n chunks.push(Buffer.from(chunk));\n callback(null, chunk);\n }\n } catch (error) {\n callback(error as Error);\n }\n },\n async flush(callback) {\n try {\n const rscContent = Buffer.concat(chunks).toString(\"utf-8\");\n\n // Update partial page data with raw RSC content\n const partial = partialPageData.get(route) || { route };\n partial.rsc = {\n modules: [], // Will be parsed by the client\n content: rscContent,\n };\n partialPageData.set(route, partial);\n await mergeAndSendPageData(route, resolve);\n\n callback();\n resolve();\n } catch (error) {\n callback(error as Error);\n reject(error);\n }\n },\n });\n\n rscResult.stream.pipe(rscTransform);\n }),\n\n // Send HTML stream to worker\n new Promise<void>((resolve) => {\n const htmlTransform = new Transform({\n transform(chunk, _encoding, callback) {\n try {\n options.worker.postMessage({\n type: \"RSC_CHUNK\",\n id: route,\n chunk: chunk.toString(),\n moduleRootPath: options.moduleBasePath,\n moduleBaseURL: options.moduleBaseURL,\n htmlOutputPath: options.htmlOutputPath,\n pipableStreamOptions: options.pipableStreamOptions,\n });\n callback(null, chunk);\n } catch (error) {\n callback(error as Error);\n }\n },\n flush(callback) {\n options.worker.postMessage({\n type: \"RSC_END\",\n id: route,\n });\n callback();\n resolve();\n },\n });\n\n htmlResult.stream.pipe(htmlTransform);\n }),\n ]);\n }\n\n await allRoutesComplete;\n } catch (error) {\n console.error(\"Render error:\", error);\n throw error;\n }\n\n return { failedRoutes, completedRoutes };\n}\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAIrB,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,iBAyG7D"}
|