vite-plugin-react-server 0.3.15 → 0.3.18
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/bin/patch.mjs +12 -19
- package/dist/package.json +8 -8
- package/dist/plugin/collect-css-manifest.d.ts.map +1 -1
- package/dist/plugin/collect-css-manifest.js +4 -4
- package/dist/plugin/collect-css-manifest.js.map +1 -1
- package/dist/plugin/config/defaults.d.ts +3 -3
- package/dist/plugin/config/defaults.js +3 -3
- package/dist/plugin/config/defaults.js.map +1 -1
- package/dist/plugin/config/resolveUserConfig.js +2 -2
- package/dist/plugin/config/resolveUserConfig.js.map +1 -1
- package/dist/plugin/react-client/plugin.d.ts.map +1 -1
- package/dist/plugin/react-client/plugin.js +16 -0
- package/dist/plugin/react-client/plugin.js.map +1 -1
- package/dist/plugin/react-server/createRscStream.d.ts.map +1 -1
- package/dist/plugin/react-server/createRscStream.js +5 -1
- package/dist/plugin/react-server/createRscStream.js.map +1 -1
- package/dist/plugin/react-server/plugin.d.ts.map +1 -1
- package/dist/plugin/react-server/plugin.js +11 -19
- package/dist/plugin/react-server/plugin.js.map +1 -1
- package/dist/plugin/resolveProps.d.ts.map +1 -1
- package/dist/plugin/resolveProps.js +1 -0
- package/dist/plugin/resolveProps.js.map +1 -1
- package/dist/plugin/worker/createWorker.js +2 -2
- package/dist/plugin/worker/createWorker.js.map +1 -1
- package/dist/plugin/worker/html/html-worker.production.js +5 -0
- 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.map +1 -1
- package/dist/plugin/worker/html/renderPages.d.ts.map +1 -1
- package/dist/plugin/worker/html/renderPages.js +2 -2
- 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 +3 -4
- package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/plugin/collect-css-manifest.ts +5 -6
- package/plugin/config/defaults.ts +3 -3
- package/plugin/config/resolveUserConfig.ts +2 -2
- package/plugin/react-client/plugin.ts +17 -0
- package/plugin/react-server/createRscStream.ts +5 -1
- package/plugin/react-server/plugin.ts +11 -21
- package/plugin/resolveProps.ts +1 -0
- package/plugin/worker/createWorker.ts +1 -1
- package/plugin/worker/html/html-worker.production.tsx +5 -0
- package/plugin/worker/html/messageHandler.ts +0 -2
- package/plugin/worker/html/renderPages.ts +2 -3
- package/plugin/worker/rsc/messageHandler.tsx +6 -11
- package/scripts/check-react-version.mjs +8 -26
- package/scripts/react+0.0.0-experimental-eda36a1c-20250228.patch +57 -0
- package/scripts/react-dom+0.0.0-experimental-eda36a1c-20250228.patch +552 -0
- package/scripts/{react-server-dom-esm+0.0.0-experimental-b3a95caf-20250113.patch → react-server-dom-esm+0.0.0-experimental-eda36a1c-20250228.patch} +103 -82
- package/tsconfig.json +1 -1
- package/dist/plugin/server.d.ts +0 -2
- package/dist/plugin/server.d.ts.map +0 -1
- package/dist/plugin/server.js +0 -1
- package/plugin/server.tsx +0 -0
- package/scripts/react+0.0.0-experimental-b3a95caf-20250113.patch +0 -264
- package/scripts/react-dom+0.0.0-experimental-b3a95caf-20250113.patch +0 -39796
package/bin/patch.mjs
CHANGED
|
@@ -2,36 +2,29 @@
|
|
|
2
2
|
import fs from 'node:fs/promises'
|
|
3
3
|
import path, { dirname } from 'node:path'
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
-
|
|
6
|
-
const
|
|
5
|
+
import React from 'react';
|
|
6
|
+
const reactVersion = React.version;
|
|
7
|
+
const PATCH_RECONCILER_VERSION = reactVersion.replace('19.1.0', '0.0.0')
|
|
7
8
|
const STUB_VERSION = '0.0.1'
|
|
8
9
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const TEMPLATE_VERSION = '0.0.0-experimental-eda36a1c-20250228'
|
|
9
11
|
|
|
10
12
|
async function patchReactExperimental() {
|
|
11
13
|
try {
|
|
12
14
|
// Read installed React version from user's project
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const installedVersion = reactPkg.version
|
|
15
|
+
|
|
16
|
+
const installedVersion = React.version
|
|
17
|
+
const PATCH_RECONCILER_VERSION = installedVersion.replace('19.1.0', '0.0.0')
|
|
18
|
+
if(TEMPLATE_VERSION === PATCH_RECONCILER_VERSION) {
|
|
19
|
+
console.log('React version is patched')
|
|
20
|
+
}
|
|
20
21
|
|
|
21
22
|
// Define patches to process
|
|
22
23
|
const patches = [
|
|
23
24
|
{
|
|
24
|
-
template: `../scripts/react-server-dom-esm+${
|
|
25
|
+
template: `../scripts/react-server-dom-esm+${TEMPLATE_VERSION}.patch`,
|
|
25
26
|
output: `react-server-dom-esm+${STUB_VERSION}.patch`
|
|
26
27
|
},
|
|
27
|
-
{
|
|
28
|
-
template: `../scripts/react+${PATCH_RECONCILER_VERSION}`,
|
|
29
|
-
output: `react+${installedVersion}.patch`
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
template: `../scripts/react-dom+${PATCH_RECONCILER_VERSION}`,
|
|
33
|
-
output: `react-dom+${installedVersion}.patch`
|
|
34
|
-
}
|
|
35
28
|
]
|
|
36
29
|
|
|
37
30
|
// Create patches dir in user's project
|
|
@@ -56,7 +49,7 @@ async function patchReactExperimental() {
|
|
|
56
49
|
}
|
|
57
50
|
|
|
58
51
|
console.log(`
|
|
59
|
-
✅ Created patch files for React packages
|
|
52
|
+
✅ Created patch files for React packages for version ${installedVersion}
|
|
60
53
|
Location: patches/
|
|
61
54
|
|
|
62
55
|
Next steps:
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-plugin-react-server",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.18",
|
|
4
4
|
"description": "Vite plugin for React Server Components (RSC)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/plugin/index.js",
|
|
@@ -62,12 +62,13 @@
|
|
|
62
62
|
"test": "npm run build && npm run test:client && NODE_ENV=development npm run test:server",
|
|
63
63
|
"test:coverage": "vitest run --coverage",
|
|
64
64
|
"test:ui": "vitest --ui",
|
|
65
|
-
"experimental:clean-install": "npm install react-server-dom-esm react@experimental react-dom@experimental",
|
|
65
|
+
"experimental:clean-install": "npm install react-server-dom-esm react@experimental react-dom@experimental && npm install react-server-dom-esm",
|
|
66
66
|
"experimental:copy": "cp -r ./oss-experimental/* ./node_modules/",
|
|
67
67
|
"experimental:patch": "npx patch-package react-server-dom-esm react react-dom --exclude 'nothing'",
|
|
68
68
|
"experimental:move-patches": "mv patches/* ./scripts/",
|
|
69
|
-
"experimental:setup": "rm -rf patches/* && npm run experimental:clean-install && npm run experimental:copy && npm run experimental:patch && npm run experimental:move-patches
|
|
70
|
-
"
|
|
69
|
+
"experimental:setup": "rm -rf patches/* && npm run experimental:clean-install && npm run experimental:copy && npm run experimental:patch && npm run experimental:move-patches",
|
|
70
|
+
"experimental:patch-react": "npm run experimental:clean-install && node scripts/check-react-version.mjs && node bin/patch.mjs",
|
|
71
|
+
"postinstall": "patch-package"
|
|
71
72
|
},
|
|
72
73
|
"keywords": [
|
|
73
74
|
"vite",
|
|
@@ -90,8 +91,8 @@
|
|
|
90
91
|
},
|
|
91
92
|
"homepage": "https://github.com/nicobrinkkemper/vite-plugin-react-server#readme",
|
|
92
93
|
"peerDependencies": {
|
|
93
|
-
"react": "
|
|
94
|
-
"react-dom": "
|
|
94
|
+
"react": "^0.0.0-experimental-d55cc79b-20250228",
|
|
95
|
+
"react-dom": "^0.0.0-experimental-d55cc79b-20250228",
|
|
95
96
|
"vite": "*"
|
|
96
97
|
},
|
|
97
98
|
"peerDependenciesMeta": {
|
|
@@ -109,9 +110,8 @@
|
|
|
109
110
|
"@types/react": "^19.0.8",
|
|
110
111
|
"@types/react-dom": "^19.0.3",
|
|
111
112
|
"acorn-loose": "^8.3.0",
|
|
113
|
+
"happy-dom": "^17.1.8",
|
|
112
114
|
"patch-package": "^8.0.0",
|
|
113
|
-
"react": "^0.0.0-experimental-d55cc79b-20250228",
|
|
114
|
-
"react-dom": "^0.0.0-experimental-d55cc79b-20250228",
|
|
115
115
|
"react-server-dom-esm": "^0.0.1",
|
|
116
116
|
"rollup": "^4.34.0",
|
|
117
117
|
"source-map": "^0.7.4",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-css-manifest.d.ts","sourceRoot":"","sources":["../../plugin/collect-css-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAElD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,gCAqB/B;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,EACjD,SAAS,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"collect-css-manifest.d.ts","sourceRoot":"","sources":["../../plugin/collect-css-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAElD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,gCAqB/B;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,EACjD,SAAS,CAAC,EAAE,MAAM,uBAgDnB"}
|
|
@@ -23,10 +23,10 @@ async function collectModuleGraphCss(moduleGraph, pagePath, onCss) {
|
|
|
23
23
|
return cssFiles;
|
|
24
24
|
}
|
|
25
25
|
function collectManifestCss(manifest, root, pagePath, onCss, parentUrl) {
|
|
26
|
-
const relativePagePath = pagePath.startsWith(root + "/") ? pagePath.slice(root.length + 1) : pagePath;
|
|
27
|
-
if (!relativePagePath) return /* @__PURE__ */ new Map();
|
|
26
|
+
const relativePagePath = root !== "" && pagePath.startsWith(root.endsWith("/") ? root : root + "/") ? pagePath.slice(root.length + (root.endsWith("/") ? 0 : 1)) : pagePath;
|
|
28
27
|
const cssFiles = /* @__PURE__ */ new Map();
|
|
29
28
|
const seen = /* @__PURE__ */ new Set();
|
|
29
|
+
const manifestValues = Object.values(manifest);
|
|
30
30
|
const walkManifestEntry = (id) => {
|
|
31
31
|
if (seen.has(id)) return;
|
|
32
32
|
seen.add(id);
|
|
@@ -40,11 +40,11 @@ function collectManifestCss(manifest, root, pagePath, onCss, parentUrl) {
|
|
|
40
40
|
onCss?.(id.slice(0, -3), parentUrl ?? pagePath);
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
|
-
const entry = manifest[id];
|
|
43
|
+
const entry = manifest[id] ?? manifestValues.find((e) => e.file === id);
|
|
44
44
|
if (!entry) return;
|
|
45
45
|
if (entry.css) {
|
|
46
46
|
entry.css.forEach((css) => {
|
|
47
|
-
cssFiles.set(entry.file, css);
|
|
47
|
+
cssFiles.set(entry.src ?? entry.file ?? "", css);
|
|
48
48
|
onCss?.(css, parentUrl ?? pagePath);
|
|
49
49
|
});
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-css-manifest.js","sources":["../../plugin/collect-css-manifest.ts"],"sourcesContent":["import type { Manifest, ModuleGraph } from 'vite';\n\nexport async function collectModuleGraphCss(\n moduleGraph: ModuleGraph,\n pagePath: string,\n onCss?: (path: string) => void\n) {\n if (!pagePath) return new Map<string, string>();\n\n const cssFiles = new Map<string, string>();\n const pageModule = await moduleGraph.getModuleByUrl(pagePath, true);\n if (!pageModule) {\n return new Map<string, string>();\n }\n const seen = new Set<string>();\n const walkModule = (mod: any) => {\n if (!mod?.id || seen.has(mod.id)) return;\n seen.add(mod.id);\n if (mod?.id?.endsWith(\".css\")) {\n cssFiles.set(mod?.url, mod?.id);\n onCss?.(mod?.url);\n }\n mod?.importedModules?.forEach((imp: any) => walkModule(imp));\n };\n walkModule(pageModule);\n return cssFiles;\n}\n\nexport function collectManifestCss(\n manifest: Manifest,\n root: string,\n pagePath: string,\n onCss?: (path: string, parentUrl: string) => void,\n parentUrl?: string\n) {\n const relativePagePath = pagePath.startsWith(root +
|
|
1
|
+
{"version":3,"file":"collect-css-manifest.js","sources":["../../plugin/collect-css-manifest.ts"],"sourcesContent":["import type { Manifest, ModuleGraph } from 'vite';\n\nexport async function collectModuleGraphCss(\n moduleGraph: ModuleGraph,\n pagePath: string,\n onCss?: (path: string) => void\n) {\n if (!pagePath) return new Map<string, string>();\n\n const cssFiles = new Map<string, string>();\n const pageModule = await moduleGraph.getModuleByUrl(pagePath, true);\n if (!pageModule) {\n return new Map<string, string>();\n }\n const seen = new Set<string>();\n const walkModule = (mod: any) => {\n if (!mod?.id || seen.has(mod.id)) return;\n seen.add(mod.id);\n if (mod?.id?.endsWith(\".css\")) {\n cssFiles.set(mod?.url, mod?.id);\n onCss?.(mod?.url);\n }\n mod?.importedModules?.forEach((imp: any) => walkModule(imp));\n };\n walkModule(pageModule);\n return cssFiles;\n}\n\nexport function collectManifestCss(\n manifest: Manifest,\n root: string,\n pagePath: string,\n onCss?: (path: string, parentUrl: string) => void,\n parentUrl?: string\n) {\n const relativePagePath = root !== \"\" && pagePath.startsWith(root.endsWith('/') ? root : root + '/')\n ? pagePath.slice(root.length + (root.endsWith('/') ? 0 : 1))\n : pagePath;\n const cssFiles = new Map<string, string>();\n const seen = new Set<string>();\n const manifestValues = Object.values(manifest);\n const walkManifestEntry = (id: string) => {\n if (seen.has(id)) return;\n seen.add(id);\n if (id.endsWith(\".css\")) {\n cssFiles.set(id, id);\n onCss?.(id, parentUrl ?? pagePath);\n return;\n }\n if (id.endsWith(\".css.js\")) {\n cssFiles.set(id.slice(0, -3), id.slice(0, -3));\n onCss?.(id.slice(0, -3), parentUrl ?? pagePath);\n return;\n }\n // Get the manifest entry\n const entry = manifest[id] ?? manifestValues.find(e => e.file === id);\n if (!entry) return;\n\n // Add direct CSS\n if (entry.css) {\n entry.css.forEach((css: string) => {\n cssFiles.set(entry.src ?? entry.file ?? '', css);\n onCss?.(css, parentUrl ?? pagePath);\n });\n }\n\n // Walk imports recursively\n if (entry.imports) {\n entry.imports.forEach((imp: string) => walkManifestEntry(imp));\n }\n\n // Also check dynamicImports\n if (entry.dynamicImports) {\n entry.dynamicImports.forEach((imp: string) => walkManifestEntry(imp));\n }\n };\n\n if (manifest[relativePagePath]) {\n walkManifestEntry(relativePagePath);\n }\n return cssFiles;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,9 @@ export declare const DEFAULT_CONFIG: {
|
|
|
11
11
|
readonly SERVER_ENTRY: "src/server.tsx";
|
|
12
12
|
readonly PAGE_EXPORT_NAME: "Page";
|
|
13
13
|
readonly PROPS_EXPORT_NAME: "props";
|
|
14
|
-
readonly HTML_WORKER_PATH: "worker/html/html-worker.production.js" | "worker/html/html-worker.development.js";
|
|
15
|
-
readonly RSC_WORKER_PATH: "worker/rsc/rsc-worker.production.js" | "worker/rsc/rsc-worker.development.js";
|
|
16
|
-
readonly LOADER_PATH: "worker/loader.js";
|
|
14
|
+
readonly HTML_WORKER_PATH: "node_modules/vite-plugin-react-server/dist/plugin/worker/html/html-worker.production.js" | "node_modules/vite-plugin-react-server/dist/plugin/worker/html/html-worker.development.js";
|
|
15
|
+
readonly RSC_WORKER_PATH: "node_modules/vite-plugin-react-server/dist/plugin/worker/rsc/rsc-worker.production.js" | "node_modules/vite-plugin-react-server/dist/plugin/worker/rsc/rsc-worker.development.js";
|
|
16
|
+
readonly LOADER_PATH: "node_modules/vite-plugin-react-server/dist/plugin/worker/loader.js";
|
|
17
17
|
readonly RSC_EXTENSION: ".rsc";
|
|
18
18
|
readonly HTML: ({ children }: {
|
|
19
19
|
children: any;
|
|
@@ -14,9 +14,9 @@ const DEFAULT_CONFIG = {
|
|
|
14
14
|
SERVER_ENTRY: "src/server.tsx",
|
|
15
15
|
PAGE_EXPORT_NAME: "Page",
|
|
16
16
|
PROPS_EXPORT_NAME: "props",
|
|
17
|
-
HTML_WORKER_PATH: `worker/html/html-worker.${process.env["NODE_ENV"] === "development" ? "development" : "production"}.js`,
|
|
18
|
-
RSC_WORKER_PATH: `worker/rsc/rsc-worker.${process.env["NODE_ENV"] === "development" ? "development" : "production"}.js`,
|
|
19
|
-
LOADER_PATH: "worker/loader.js",
|
|
17
|
+
HTML_WORKER_PATH: `node_modules/vite-plugin-react-server/dist/plugin/worker/html/html-worker.${process.env["NODE_ENV"] === "development" ? "development" : "production"}.js`,
|
|
18
|
+
RSC_WORKER_PATH: `node_modules/vite-plugin-react-server/dist/plugin/worker/rsc/rsc-worker.${process.env["NODE_ENV"] === "development" ? "development" : "production"}.js`,
|
|
19
|
+
LOADER_PATH: "node_modules/vite-plugin-react-server/dist/plugin/worker/loader.js",
|
|
20
20
|
HTML: ({ children }) => children,
|
|
21
21
|
COLLECT_CSS: true,
|
|
22
22
|
COLLECT_ASSETS: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sources":["../../../plugin/config/defaults.ts"],"sourcesContent":["export const DEFAULT_CONFIG = {\n FILE_REGEX: /\\.(m|c)?(j|t)sx?$/,\n CLIENT_ASSETS_DIR: \"assets\",\n RSC_DIR: \"rsc\",\n MODULE_BASE: \"src\",\n MODULE_BASE_PATH: \"/src\",\n MODULE_BASE_URL: \"/src\",\n PAGE: \"src/page/page.tsx\",\n PROPS: \"src/page/props.ts\",\n CLIENT_ENTRY: \"src/client.tsx\",\n SERVER_ENTRY: \"src/server.tsx\",\n PAGE_EXPORT_NAME: \"Page\",\n PROPS_EXPORT_NAME: \"props\",\n HTML_WORKER_PATH: `worker/html/html-worker.${process.env['NODE_ENV'] === 'development' ? 'development' : 'production'}.js`,\n RSC_WORKER_PATH: `worker/rsc/rsc-worker.${process.env['NODE_ENV'] === 'development' ? 'development' : 'production'}.js`,\n LOADER_PATH: 'worker/loader.js',\n RSC_EXTENSION: \".rsc\",\n HTML: ({ children }: { children: any }) => children,\n COLLECT_CSS: true,\n COLLECT_ASSETS: true,\n DEV_PORT: 5173,\n PREVIEW_PORT: 4173,\n DEV_HOST: \"localhost\",\n PREVIEW_HOST: \"localhost\",\n ENV_PREFIX: \"VITE_\",\n BUILD: {\n pages: () => [\"/\"],\n client: \"client\",\n server: \"server\",\n static: \"static\",\n api: \"api\",\n outDir: \"dist\",\n assetsDir: \"assets\",\n hash: \"hash\",\n preserveModulesRoot: true,\n },\n MODULE_BASE_EXCEPTIONS: [] as string[],\n AUTO_DISCOVER: {\n modulePattern: (n: string) => DEFAULT_CONFIG.FILE_REGEX.test(n),\n pagePattern: (n: string) => n.toLowerCase().endsWith('/page') || n.toLowerCase() === 'page',\n propsPattern: (n: string) => n.toLowerCase().endsWith('/props') || n.toLowerCase() === 'props',\n clientComponents: (n: string) => n.toLowerCase().endsWith('.client') || n.toLowerCase() === 'client',\n serverFunctions: (n: string) => n.toLowerCase().endsWith('.server') || n.toLowerCase() === 'server',\n cssPattern: (n: string) => n.toLowerCase().endsWith('.css'),\n cssModulePattern: (n: string) => n.toLowerCase().endsWith('.css.js'),\n vendorPattern: (n: string) => n.toLowerCase().startsWith('node_modules') || n.toLowerCase().startsWith('_virtual'),\n htmlPattern: (n: string) => n.toLowerCase().endsWith('.html'),\n jsonPattern: (n: string) => n.toLowerCase().endsWith('.json'),\n },\n MODULE_ID: (id: string) => id,\n} as const; "],"names":[],"mappings":";;;;;AAAO,MAAM,cAAiB,GAAA;AAAA,EAC5B,UAAY,EAAA,mBAAA;AAAA,EACZ,iBAAmB,EAAA,QAAA;AAAA,EAEnB,WAAa,EAAA,KAAA;AAAA,EAEb,eAAiB,EAAA,MAAA;AAAA,EACjB,IAAM,EAAA,mBAAA;AAAA,EACN,KAAO,EAAA,mBAAA;AAAA,EACP,YAAc,EAAA,gBAAA;AAAA,EACd,YAAc,EAAA,gBAAA;AAAA,EACd,gBAAkB,EAAA,MAAA;AAAA,EAClB,iBAAmB,EAAA,OAAA;AAAA,EACnB,gBAAA,EAAkB,
|
|
1
|
+
{"version":3,"file":"defaults.js","sources":["../../../plugin/config/defaults.ts"],"sourcesContent":["export const DEFAULT_CONFIG = {\n FILE_REGEX: /\\.(m|c)?(j|t)sx?$/,\n CLIENT_ASSETS_DIR: \"assets\",\n RSC_DIR: \"rsc\",\n MODULE_BASE: \"src\",\n MODULE_BASE_PATH: \"/src\",\n MODULE_BASE_URL: \"/src\",\n PAGE: \"src/page/page.tsx\",\n PROPS: \"src/page/props.ts\",\n CLIENT_ENTRY: \"src/client.tsx\",\n SERVER_ENTRY: \"src/server.tsx\",\n PAGE_EXPORT_NAME: \"Page\",\n PROPS_EXPORT_NAME: \"props\",\n HTML_WORKER_PATH: `node_modules/vite-plugin-react-server/dist/plugin/worker/html/html-worker.${process.env['NODE_ENV'] === 'development' ? 'development' : 'production'}.js`,\n RSC_WORKER_PATH: `node_modules/vite-plugin-react-server/dist/plugin/worker/rsc/rsc-worker.${process.env['NODE_ENV'] === 'development' ? 'development' : 'production'}.js`,\n LOADER_PATH: 'node_modules/vite-plugin-react-server/dist/plugin/worker/loader.js',\n RSC_EXTENSION: \".rsc\",\n HTML: ({ children }: { children: any }) => children,\n COLLECT_CSS: true,\n COLLECT_ASSETS: true,\n DEV_PORT: 5173,\n PREVIEW_PORT: 4173,\n DEV_HOST: \"localhost\",\n PREVIEW_HOST: \"localhost\",\n ENV_PREFIX: \"VITE_\",\n BUILD: {\n pages: () => [\"/\"],\n client: \"client\",\n server: \"server\",\n static: \"static\",\n api: \"api\",\n outDir: \"dist\",\n assetsDir: \"assets\",\n hash: \"hash\",\n preserveModulesRoot: true,\n },\n MODULE_BASE_EXCEPTIONS: [] as string[],\n AUTO_DISCOVER: {\n modulePattern: (n: string) => DEFAULT_CONFIG.FILE_REGEX.test(n),\n pagePattern: (n: string) => n.toLowerCase().endsWith('/page') || n.toLowerCase() === 'page',\n propsPattern: (n: string) => n.toLowerCase().endsWith('/props') || n.toLowerCase() === 'props',\n clientComponents: (n: string) => n.toLowerCase().endsWith('.client') || n.toLowerCase() === 'client',\n serverFunctions: (n: string) => n.toLowerCase().endsWith('.server') || n.toLowerCase() === 'server',\n cssPattern: (n: string) => n.toLowerCase().endsWith('.css'),\n cssModulePattern: (n: string) => n.toLowerCase().endsWith('.css.js'),\n vendorPattern: (n: string) => n.toLowerCase().startsWith('node_modules') || n.toLowerCase().startsWith('_virtual'),\n htmlPattern: (n: string) => n.toLowerCase().endsWith('.html'),\n jsonPattern: (n: string) => n.toLowerCase().endsWith('.json'),\n },\n MODULE_ID: (id: string) => id,\n} as const; "],"names":[],"mappings":";;;;;AAAO,MAAM,cAAiB,GAAA;AAAA,EAC5B,UAAY,EAAA,mBAAA;AAAA,EACZ,iBAAmB,EAAA,QAAA;AAAA,EAEnB,WAAa,EAAA,KAAA;AAAA,EAEb,eAAiB,EAAA,MAAA;AAAA,EACjB,IAAM,EAAA,mBAAA;AAAA,EACN,KAAO,EAAA,mBAAA;AAAA,EACP,YAAc,EAAA,gBAAA;AAAA,EACd,YAAc,EAAA,gBAAA;AAAA,EACd,gBAAkB,EAAA,MAAA;AAAA,EAClB,iBAAmB,EAAA,OAAA;AAAA,EACnB,gBAAA,EAAkB,6EAA6E,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAM,KAAA,aAAA,GAAgB,gBAAgB,YAAY,CAAA,GAAA,CAAA;AAAA,EACvK,eAAA,EAAiB,2EAA2E,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAM,KAAA,aAAA,GAAgB,gBAAgB,YAAY,CAAA,GAAA,CAAA;AAAA,EACpK,WAAa,EAAA,oEAAA;AAAA,EAEb,IAAM,EAAA,CAAC,EAAE,QAAA,EAAkC,KAAA,QAAA;AAAA,EAC3C,WAAa,EAAA,IAAA;AAAA,EACb,cAAgB,EAAA,IAAA;AAAA,EAMhB,KAAO,EAAA;AAAA,IACL,KAAA,EAAO,MAAM,CAAC,GAAG,CAAA;AAAA,IACjB,MAAQ,EAAA,QAAA;AAAA,IACR,MAAQ,EAAA,QAAA;AAAA,IACR,MAAQ,EAAA,QAAA;AAAA,IACR,GAAK,EAAA,KAAA;AAAA,IACL,MAAQ,EAAA,MAAA;AAAA,IAER,IAAM,EAAA,MAAA;AAAA,IACN,mBAAqB,EAAA;AAAA,GACvB;AAAA,EAEA,aAAe,EAAA;AAAA,IACb,eAAe,CAAC,CAAA,KAAc,cAAe,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,IAC9D,WAAA,EAAa,CAAC,CAAA,KAAc,CAAE,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,OAAO,CAAA,IAAK,CAAE,CAAA,WAAA,EAAkB,KAAA,MAAA;AAAA,IACrF,YAAA,EAAc,CAAC,CAAA,KAAc,CAAE,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,QAAQ,CAAA,IAAK,CAAE,CAAA,WAAA,EAAkB,KAAA,OAAA;AAAA,IACvF,gBAAA,EAAkB,CAAC,CAAA,KAAc,CAAE,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,SAAS,CAAA,IAAK,CAAE,CAAA,WAAA,EAAkB,KAAA,QAAA;AAAA,IAC5F,eAAA,EAAiB,CAAC,CAAA,KAAc,CAAE,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,SAAS,CAAA,IAAK,CAAE,CAAA,WAAA,EAAkB,KAAA,QAAA;AAAA,IAC3F,YAAY,CAAC,CAAA,KAAc,EAAE,WAAY,EAAA,CAAE,SAAS,MAAM,CAAA;AAAA,IAC1D,kBAAkB,CAAC,CAAA,KAAc,EAAE,WAAY,EAAA,CAAE,SAAS,SAAS,CAAA;AAAA,IACnE,aAAe,EAAA,CAAC,CAAc,KAAA,CAAA,CAAE,WAAY,EAAA,CAAE,UAAW,CAAA,cAAc,CAAK,IAAA,CAAA,CAAE,WAAY,EAAA,CAAE,WAAW,UAAU,CAAA;AAAA,IACjH,aAAa,CAAC,CAAA,KAAc,EAAE,WAAY,EAAA,CAAE,SAAS,OAAO,CAAA;AAAA,IAC5D,aAAa,CAAC,CAAA,KAAc,EAAE,WAAY,EAAA,CAAE,SAAS,OAAO;AAAA,GAGhE;;;;"}
|
|
@@ -100,7 +100,7 @@ function resolveUserConfig({
|
|
|
100
100
|
userConfig: {
|
|
101
101
|
...config,
|
|
102
102
|
root,
|
|
103
|
-
mode: configEnv.command === "build" ? "production" : "development",
|
|
103
|
+
mode: configEnv.mode ?? configEnv.command === "build" ? "production" : "development",
|
|
104
104
|
resolve: {
|
|
105
105
|
external: ["react", "react-dom"],
|
|
106
106
|
alias: {}
|
|
@@ -144,7 +144,7 @@ function resolveUserConfig({
|
|
|
144
144
|
userConfig: {
|
|
145
145
|
...config,
|
|
146
146
|
root,
|
|
147
|
-
mode: configEnv.command === "build" ? "production" : "development",
|
|
147
|
+
mode: configEnv.mode ?? configEnv.command === "build" ? "production" : "development",
|
|
148
148
|
resolve: {
|
|
149
149
|
alias: {},
|
|
150
150
|
externalConditions: ["react-server"]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveUserConfig.js","sources":["../../../plugin/config/resolveUserConfig.ts"],"sourcesContent":["import type { ConfigEnv, UserConfig } from \"vite\";\nimport type {\n CheckFilesExistReturn,\n ResolvedUserConfig,\n ResolvedUserOptions,\n} from \"../types.js\";\nimport { createInputNormalizer } from \"../helpers/inputNormalizer.js\";\nimport { join } from \"path\";\n// @ts-ignore\nimport { globSync } from \"fs\";\nimport type { OutputOptions } from \"rollup\";\nexport type ResolveUserConfigProps = {\n isClient?: boolean;\n config: UserConfig;\n configEnv: ConfigEnv;\n userOptions: ResolvedUserOptions;\n files?: CheckFilesExistReturn;\n};\n\nexport type ResolveUserConfigReturn =\n | { type: \"success\"; userConfig: ResolvedUserConfig }\n | { type: \"error\"; error: Error };\n\nexport function resolveUserConfig({\n isClient = false,\n config,\n configEnv,\n userOptions,\n files,\n}: ResolveUserConfigProps): ResolveUserConfigReturn {\n try {\n // Get existing inputs\n const root = config.root ?? userOptions.projectRoot ?? process.cwd();\n\n const normalizer = createInputNormalizer({\n root,\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n removeExtension: true,\n });\n\n const serverEntry = userOptions.serverEntry\n ? Object.fromEntries([\n normalizer([userOptions.serverEntry, userOptions.serverEntry]),\n ])\n : null;\n const clientEntry = userOptions.clientEntry\n ? Object.fromEntries(\n [\n [userOptions.clientEntry, userOptions.clientEntry],\n [\"index.html\", \"index.html\"],\n ].map(normalizer)\n )\n : { \"index.html\": \"index.html\" };\n\n const autoDiscoveredClientFiles = (inputs: Record<string, string>) => {\n const allFiles = globSync(`**/*.client.*`, {\n cwd: join(root, userOptions.moduleBase),\n });\n\n for (const file of allFiles) {\n const [key, value] = normalizer(join(userOptions.moduleBase, file));\n if (!inputs[key]) {\n inputs[key] = value;\n } else {\n console.warn(`[RSC] Client file already exists: ${key}`);\n }\n }\n return inputs;\n };\n const autoDiscoveredServerFiles = (inputs: Record<string, string>) => {\n const allFiles = globSync(`${userOptions.moduleBase}/**/*.server.*`, {\n cwd: join(root, userOptions.moduleBase),\n });\n for (const file of allFiles) {\n const [key, value] = normalizer(join(userOptions.moduleBase, file));\n if (!inputs[key]) {\n inputs[key] = value;\n } else {\n console.warn(`[RSC] Server file already exists: ${key}`);\n }\n }\n return inputs;\n };\n const autoDiscoveredFiles = (inputs: Record<string, string>) => {\n if (!files) return inputs;\n\n // Add page files without extra prefix\n for (const [key, value] of files.pageMap) {\n if (!inputs[key]) {\n inputs[key] = value;\n } else {\n console.warn(`[RSC] Page file already exists: ${key}`);\n }\n }\n // Add props files without extra prefix\n for (const [key, value] of files.propsMap) {\n if (!inputs[key]) {\n inputs[key] = value;\n } else {\n console.warn(`[RSC] Props file already exists: ${key}`);\n }\n }\n return inputs;\n };\n\n // Add inputs based on condition\n let inputs = isClient\n ? autoDiscoveredClientFiles(clientEntry)\n : autoDiscoveredServerFiles(autoDiscoveredFiles(serverEntry ?? {}));\n\n const envDir = isClient\n ? userOptions.build.client\n : userOptions.build.server;\n\n const pluginOutput = {\n preserveModules: !isClient,\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n entryFileNames: userOptions.build.entryFile,\n assetFileNames: userOptions.build.assetFile,\n chunkFileNames: userOptions.build.chunkFile,\n format: \"esm\",\n exports: \"named\",\n hoistTransitiveImports: false,\n generatedCode: {\n constBindings: true,\n objectShorthand: true,\n },\n interop: \"auto\",\n } satisfies OutputOptions;\n \n const newOutput = Array.isArray(config.build?.rollupOptions?.output)\n ? [...config.build?.rollupOptions?.output, pluginOutput]\n : typeof config.build?.rollupOptions?.output === \"object\" &&\n config.build?.rollupOptions?.output !== null\n ? [config.build?.rollupOptions?.output, pluginOutput]\n : pluginOutput;\n\n if (isClient) {\n // client build options\n return {\n type: \"success\",\n userConfig: {\n ...config,\n root: root,\n mode: configEnv.command === \"build\" ? \"production\" : \"development\",\n resolve: {\n external: [\"react\", \"react-dom\"],\n alias: {},\n },\n ssr: {\n target: \"node\",\n external: [\n \"react\",\n \"react-dom\",\n \"react-server-dom-esm/client.browser\",\n ],\n resolve: {\n externalConditions: [\"react-server\"],\n },\n },\n // client build options\n build: {\n ...config.build,\n emptyOutDir: config.build?.emptyOutDir ?? true,\n outDir: join(userOptions.build.outDir, envDir),\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n // modern browsers\n target: [\"esnext\"],\n minify: true,\n ssr:\n typeof configEnv.isSsrBuild === \"boolean\"\n ? configEnv.isSsrBuild\n : true,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets: config.build?.ssrEmitAssets ?? true,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: inputs,\n output: newOutput,\n preserveEntrySignatures: \"exports-only\",\n },\n },\n },\n };\n }\n // server build options\n return {\n type: \"success\",\n userConfig: {\n ...config,\n root: root,\n mode: configEnv.command === \"build\" ? \"production\" : \"development\",\n resolve: {\n alias: {},\n externalConditions: [\"react-server\"],\n },\n // server build options\n build: {\n ...config.build,\n emptyOutDir: config.build?.emptyOutDir ?? true,\n outDir: join(userOptions.build.outDir, envDir),\n target: config.build?.target ?? \"node18\",\n minify: config.build?.minify ?? true,\n ssr: config.build?.ssr ?? configEnv.isSsrBuild ?? true,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets: config.build?.ssrEmitAssets ?? true,\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: inputs,\n preserveEntrySignatures: config.build?.rollupOptions?.preserveEntrySignatures ?? \"strict\",\n output: newOutput,\n },\n },\n },\n };\n } catch (error) {\n return {\n type: \"error\",\n error:\n error instanceof Error ? error : new Error(\"Failed to resolve config\"),\n };\n }\n}\n"],"names":["inputs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolveUserConfig.js","sources":["../../../plugin/config/resolveUserConfig.ts"],"sourcesContent":["import type { ConfigEnv, UserConfig } from \"vite\";\nimport type {\n CheckFilesExistReturn,\n ResolvedUserConfig,\n ResolvedUserOptions,\n} from \"../types.js\";\nimport { createInputNormalizer } from \"../helpers/inputNormalizer.js\";\nimport { join } from \"path\";\n// @ts-ignore\nimport { globSync } from \"fs\";\nimport type { OutputOptions } from \"rollup\";\nexport type ResolveUserConfigProps = {\n isClient?: boolean;\n config: UserConfig;\n configEnv: ConfigEnv;\n userOptions: ResolvedUserOptions;\n files?: CheckFilesExistReturn;\n};\n\nexport type ResolveUserConfigReturn =\n | { type: \"success\"; userConfig: ResolvedUserConfig }\n | { type: \"error\"; error: Error };\n\nexport function resolveUserConfig({\n isClient = false,\n config,\n configEnv,\n userOptions,\n files,\n}: ResolveUserConfigProps): ResolveUserConfigReturn {\n try {\n // Get existing inputs\n const root = config.root ?? userOptions.projectRoot ?? process.cwd();\n\n const normalizer = createInputNormalizer({\n root,\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n removeExtension: true,\n });\n\n const serverEntry = userOptions.serverEntry\n ? Object.fromEntries([\n normalizer([userOptions.serverEntry, userOptions.serverEntry]),\n ])\n : null;\n const clientEntry = userOptions.clientEntry\n ? Object.fromEntries(\n [\n [userOptions.clientEntry, userOptions.clientEntry],\n [\"index.html\", \"index.html\"],\n ].map(normalizer)\n )\n : { \"index.html\": \"index.html\" };\n\n const autoDiscoveredClientFiles = (inputs: Record<string, string>) => {\n const allFiles = globSync(`**/*.client.*`, {\n cwd: join(root, userOptions.moduleBase),\n });\n\n for (const file of allFiles) {\n const [key, value] = normalizer(join(userOptions.moduleBase, file));\n if (!inputs[key]) {\n inputs[key] = value;\n } else {\n console.warn(`[RSC] Client file already exists: ${key}`);\n }\n }\n return inputs;\n };\n const autoDiscoveredServerFiles = (inputs: Record<string, string>) => {\n const allFiles = globSync(`${userOptions.moduleBase}/**/*.server.*`, {\n cwd: join(root, userOptions.moduleBase),\n });\n for (const file of allFiles) {\n const [key, value] = normalizer(join(userOptions.moduleBase, file));\n if (!inputs[key]) {\n inputs[key] = value;\n } else {\n console.warn(`[RSC] Server file already exists: ${key}`);\n }\n }\n return inputs;\n };\n const autoDiscoveredFiles = (inputs: Record<string, string>) => {\n if (!files) return inputs;\n\n // Add page files without extra prefix\n for (const [key, value] of files.pageMap) {\n if (!inputs[key]) {\n inputs[key] = value;\n } else {\n console.warn(`[RSC] Page file already exists: ${key}`);\n }\n }\n // Add props files without extra prefix\n for (const [key, value] of files.propsMap) {\n if (!inputs[key]) {\n inputs[key] = value;\n } else {\n console.warn(`[RSC] Props file already exists: ${key}`);\n }\n }\n return inputs;\n };\n\n // Add inputs based on condition\n let inputs = isClient\n ? autoDiscoveredClientFiles(clientEntry)\n : autoDiscoveredServerFiles(autoDiscoveredFiles(serverEntry ?? {}));\n\n const envDir = isClient\n ? userOptions.build.client\n : userOptions.build.server;\n\n const pluginOutput = {\n preserveModules: !isClient,\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n entryFileNames: userOptions.build.entryFile,\n assetFileNames: userOptions.build.assetFile,\n chunkFileNames: userOptions.build.chunkFile,\n format: \"esm\",\n exports: \"named\",\n hoistTransitiveImports: false,\n generatedCode: {\n constBindings: true,\n objectShorthand: true,\n },\n interop: \"auto\",\n } satisfies OutputOptions;\n \n const newOutput = Array.isArray(config.build?.rollupOptions?.output)\n ? [...config.build?.rollupOptions?.output, pluginOutput]\n : typeof config.build?.rollupOptions?.output === \"object\" &&\n config.build?.rollupOptions?.output !== null\n ? [config.build?.rollupOptions?.output, pluginOutput]\n : pluginOutput;\n\n if (isClient) {\n // client build options\n return {\n type: \"success\",\n userConfig: {\n ...config,\n root: root,\n mode: configEnv.mode ?? configEnv.command === \"build\" ? \"production\" : \"development\",\n resolve: {\n external: [\"react\", \"react-dom\"],\n alias: {},\n },\n ssr: {\n target: \"node\",\n external: [\n \"react\",\n \"react-dom\",\n \"react-server-dom-esm/client.browser\",\n ],\n resolve: {\n externalConditions: [\"react-server\"],\n },\n },\n // client build options\n build: {\n ...config.build,\n emptyOutDir: config.build?.emptyOutDir ?? true,\n outDir: join(userOptions.build.outDir, envDir),\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n // modern browsers\n target: [\"esnext\"],\n minify: true,\n ssr:\n typeof configEnv.isSsrBuild === \"boolean\"\n ? configEnv.isSsrBuild\n : true,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets: config.build?.ssrEmitAssets ?? true,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: inputs,\n output: newOutput,\n preserveEntrySignatures: \"exports-only\",\n },\n },\n },\n };\n }\n // server build options\n return {\n type: \"success\",\n userConfig: {\n ...config,\n root: root,\n mode: configEnv.mode ?? configEnv.command === \"build\" ? \"production\" : \"development\",\n resolve: {\n alias: {},\n externalConditions: [\"react-server\"],\n },\n // server build options\n build: {\n ...config.build,\n emptyOutDir: config.build?.emptyOutDir ?? true,\n outDir: join(userOptions.build.outDir, envDir),\n target: config.build?.target ?? \"node18\",\n minify: config.build?.minify ?? true,\n ssr: config.build?.ssr ?? configEnv.isSsrBuild ?? true,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets: config.build?.ssrEmitAssets ?? true,\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: inputs,\n preserveEntrySignatures: config.build?.rollupOptions?.preserveEntrySignatures ?? \"strict\",\n output: newOutput,\n },\n },\n },\n };\n } catch (error) {\n return {\n type: \"error\",\n error:\n error instanceof Error ? error : new Error(\"Failed to resolve config\"),\n };\n }\n}\n"],"names":["inputs"],"mappings":";;;;;;;;;AAuBO,SAAS,iBAAkB,CAAA;AAAA,EAChC,QAAW,GAAA,KAAA;AAAA,EACX,MAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAoD,EAAA;AAClD,EAAI,IAAA;AAEF,IAAA,MAAM,OAAO,MAAO,CAAA,IAAA,IAAQ,WAAY,CAAA,WAAA,IAAe,QAAQ,GAAI,EAAA;AAEnE,IAAA,MAAM,aAAa,qBAAsB,CAAA;AAAA,MACvC,IAAA;AAAA,MACA,mBAAqB,EAAA,WAAA,CAAY,KAAM,CAAA,mBAAA,GACnC,YAAY,UACZ,GAAA,KAAA,CAAA;AAAA,MACJ,eAAiB,EAAA;AAAA,KAClB,CAAA;AAED,IAAA,MAAM,WAAc,GAAA,WAAA,CAAY,WAC5B,GAAA,MAAA,CAAO,WAAY,CAAA;AAAA,MACjB,WAAW,CAAC,WAAA,CAAY,WAAa,EAAA,WAAA,CAAY,WAAW,CAAC;AAAA,KAC9D,CACD,GAAA,IAAA;AACJ,IAAM,MAAA,WAAA,GAAc,WAAY,CAAA,WAAA,GAC5B,MAAO,CAAA,WAAA;AAAA,MACL;AAAA,QACE,CAAC,WAAA,CAAY,WAAa,EAAA,WAAA,CAAY,WAAW,CAAA;AAAA,QACjD,CAAC,cAAc,YAAY;AAAA,OAC7B,CAAE,IAAI,UAAU;AAAA,KAClB,GACA,EAAE,YAAA,EAAc,YAAa,EAAA;AAEjC,IAAM,MAAA,yBAAA,GAA4B,CAACA,OAAmC,KAAA;AACpE,MAAM,MAAA,QAAA,GAAW,SAAS,CAAiB,aAAA,CAAA,EAAA;AAAA,QACzC,GAAK,EAAA,IAAA,CAAK,IAAM,EAAA,WAAA,CAAY,UAAU;AAAA,OACvC,CAAA;AAED,MAAA,KAAA,MAAW,QAAQ,QAAU,EAAA;AAC3B,QAAM,MAAA,CAAC,KAAK,KAAK,CAAA,GAAI,WAAW,IAAK,CAAA,WAAA,CAAY,UAAY,EAAA,IAAI,CAAC,CAAA;AAClE,QAAI,IAAA,CAACA,OAAO,CAAA,GAAG,CAAG,EAAA;AAChB,UAAAA,OAAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AAAA,SACT,MAAA;AACL,UAAQ,OAAA,CAAA,IAAA,CAAK,CAAqC,kCAAA,EAAA,GAAG,CAAE,CAAA,CAAA;AAAA;AACzD;AAEF,MAAOA,OAAAA,OAAAA;AAAA,KACT;AACA,IAAM,MAAA,yBAAA,GAA4B,CAACA,OAAmC,KAAA;AACpE,MAAA,MAAM,QAAW,GAAA,QAAA,CAAS,CAAG,EAAA,WAAA,CAAY,UAAU,CAAkB,cAAA,CAAA,EAAA;AAAA,QACnE,GAAK,EAAA,IAAA,CAAK,IAAM,EAAA,WAAA,CAAY,UAAU;AAAA,OACvC,CAAA;AACD,MAAA,KAAA,MAAW,QAAQ,QAAU,EAAA;AAC3B,QAAM,MAAA,CAAC,KAAK,KAAK,CAAA,GAAI,WAAW,IAAK,CAAA,WAAA,CAAY,UAAY,EAAA,IAAI,CAAC,CAAA;AAClE,QAAI,IAAA,CAACA,OAAO,CAAA,GAAG,CAAG,EAAA;AAChB,UAAAA,OAAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AAAA,SACT,MAAA;AACL,UAAQ,OAAA,CAAA,IAAA,CAAK,CAAqC,kCAAA,EAAA,GAAG,CAAE,CAAA,CAAA;AAAA;AACzD;AAEF,MAAOA,OAAAA,OAAAA;AAAA,KACT;AACA,IAAM,MAAA,mBAAA,GAAsB,CAACA,OAAmC,KAAA;AAC9D,MAAI,IAAA,CAAC,OAAcA,OAAAA,OAAAA;AAGnB,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,MAAM,OAAS,EAAA;AACxC,QAAI,IAAA,CAACA,OAAO,CAAA,GAAG,CAAG,EAAA;AAChB,UAAAA,OAAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AAAA,SACT,MAAA;AACL,UAAQ,OAAA,CAAA,IAAA,CAAK,CAAmC,gCAAA,EAAA,GAAG,CAAE,CAAA,CAAA;AAAA;AACvD;AAGF,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,MAAM,QAAU,EAAA;AACzC,QAAI,IAAA,CAACA,OAAO,CAAA,GAAG,CAAG,EAAA;AAChB,UAAAA,OAAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AAAA,SACT,MAAA;AACL,UAAQ,OAAA,CAAA,IAAA,CAAK,CAAoC,iCAAA,EAAA,GAAG,CAAE,CAAA,CAAA;AAAA;AACxD;AAEF,MAAOA,OAAAA,OAAAA;AAAA,KACT;AAGA,IAAI,IAAA,MAAA,GAAS,QACT,GAAA,yBAAA,CAA0B,WAAW,CAAA,GACrC,0BAA0B,mBAAoB,CAAA,WAAA,IAAe,EAAE,CAAC,CAAA;AAEpE,IAAA,MAAM,SAAS,QACX,GAAA,WAAA,CAAY,KAAM,CAAA,MAAA,GAClB,YAAY,KAAM,CAAA,MAAA;AAEtB,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,iBAAiB,CAAC,QAAA;AAAA,MAClB,mBAAqB,EAAA,WAAA,CAAY,KAAM,CAAA,mBAAA,GACnC,YAAY,UACZ,GAAA,KAAA,CAAA;AAAA,MACJ,cAAA,EAAgB,YAAY,KAAM,CAAA,SAAA;AAAA,MAClC,cAAA,EAAgB,YAAY,KAAM,CAAA,SAAA;AAAA,MAClC,cAAA,EAAgB,YAAY,KAAM,CAAA,SAAA;AAAA,MAClC,MAAQ,EAAA,KAAA;AAAA,MACR,OAAS,EAAA,OAAA;AAAA,MACT,sBAAwB,EAAA,KAAA;AAAA,MACxB,aAAe,EAAA;AAAA,QACb,aAAe,EAAA,IAAA;AAAA,QACf,eAAiB,EAAA;AAAA,OACnB;AAAA,MACA,OAAS,EAAA;AAAA,KACX;AAEA,IAAA,MAAM,SAAY,GAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,CAAO,OAAO,aAAe,EAAA,MAAM,CAC/D,GAAA,CAAC,GAAG,MAAA,CAAO,KAAO,EAAA,aAAA,EAAe,QAAQ,YAAY,CAAA,GACrD,OAAO,MAAA,CAAO,KAAO,EAAA,aAAA,EAAe,MAAW,KAAA,QAAA,IAC/C,OAAO,KAAO,EAAA,aAAA,EAAe,MAAW,KAAA,IAAA,GACxC,CAAC,MAAO,CAAA,KAAA,EAAO,aAAe,EAAA,MAAA,EAAQ,YAAY,CAClD,GAAA,YAAA;AAEJ,IAAA,IAAI,QAAU,EAAA;AAEZ,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,UAAY,EAAA;AAAA,UACV,GAAG,MAAA;AAAA,UACH,IAAA;AAAA,UACA,MAAM,SAAU,CAAA,IAAA,IAAQ,SAAU,CAAA,OAAA,KAAY,UAAU,YAAe,GAAA,aAAA;AAAA,UACvE,OAAS,EAAA;AAAA,YACP,QAAA,EAAU,CAAC,OAAA,EAAS,WAAW,CAAA;AAAA,YAC/B,OAAO;AAAC,WACV;AAAA,UACA,GAAK,EAAA;AAAA,YACH,MAAQ,EAAA,MAAA;AAAA,YACR,QAAU,EAAA;AAAA,cACR,OAAA;AAAA,cACA,WAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,OAAS,EAAA;AAAA,cACP,kBAAA,EAAoB,CAAC,cAAc;AAAA;AACrC,WACF;AAAA;AAAA,UAEA,KAAO,EAAA;AAAA,YACL,GAAG,MAAO,CAAA,KAAA;AAAA,YACV,WAAA,EAAa,MAAO,CAAA,KAAA,EAAO,WAAe,IAAA,IAAA;AAAA,YAC1C,MAAQ,EAAA,IAAA,CAAK,WAAY,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA,YAC7C,SAAW,EAAA,MAAA,CAAO,KAAO,EAAA,SAAA,IAAa,YAAY,KAAM,CAAA,SAAA;AAAA;AAAA,YAExD,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,YACjB,MAAQ,EAAA,IAAA;AAAA,YACR,KACE,OAAO,SAAA,CAAU,UAAe,KAAA,SAAA,GAC5B,UAAU,UACV,GAAA,IAAA;AAAA,YACN,QAAA,EAAU,MAAO,CAAA,KAAA,EAAO,QAAY,IAAA,CAAA,mBAAA,CAAA;AAAA,YACpC,WAAA,EAAa,MAAO,CAAA,KAAA,EAAO,WAAe,IAAA,CAAA,uBAAA,CAAA;AAAA,YAC1C,aAAA,EAAe,MAAO,CAAA,KAAA,EAAO,aAAiB,IAAA,IAAA;AAAA,YAC9C,aAAe,EAAA;AAAA,cACb,GAAG,OAAO,KAAO,EAAA,aAAA;AAAA,cACjB,KAAO,EAAA,MAAA;AAAA,cACP,MAAQ,EAAA,SAAA;AAAA,cACR,uBAAyB,EAAA;AAAA;AAC3B;AACF;AACF,OACF;AAAA;AAGF,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,SAAA;AAAA,MACN,UAAY,EAAA;AAAA,QACV,GAAG,MAAA;AAAA,QACH,IAAA;AAAA,QACA,MAAM,SAAU,CAAA,IAAA,IAAQ,SAAU,CAAA,OAAA,KAAY,UAAU,YAAe,GAAA,aAAA;AAAA,QACvE,OAAS,EAAA;AAAA,UACP,OAAO,EAAC;AAAA,UACR,kBAAA,EAAoB,CAAC,cAAc;AAAA,SACrC;AAAA;AAAA,QAEA,KAAO,EAAA;AAAA,UACL,GAAG,MAAO,CAAA,KAAA;AAAA,UACV,WAAA,EAAa,MAAO,CAAA,KAAA,EAAO,WAAe,IAAA,IAAA;AAAA,UAC1C,MAAQ,EAAA,IAAA,CAAK,WAAY,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA,UAC7C,MAAA,EAAQ,MAAO,CAAA,KAAA,EAAO,MAAU,IAAA,QAAA;AAAA,UAChC,MAAA,EAAQ,MAAO,CAAA,KAAA,EAAO,MAAU,IAAA,IAAA;AAAA,UAChC,GAAK,EAAA,MAAA,CAAO,KAAO,EAAA,GAAA,IAAO,UAAU,UAAc,IAAA,IAAA;AAAA,UAClD,QAAA,EAAU,MAAO,CAAA,KAAA,EAAO,QAAY,IAAA,CAAA,mBAAA,CAAA;AAAA,UACpC,WAAA,EAAa,MAAO,CAAA,KAAA,EAAO,WAAe,IAAA,CAAA,uBAAA,CAAA;AAAA,UAC1C,aAAA,EAAe,MAAO,CAAA,KAAA,EAAO,aAAiB,IAAA,IAAA;AAAA,UAC9C,SAAW,EAAA,MAAA,CAAO,KAAO,EAAA,SAAA,IAAa,YAAY,KAAM,CAAA,SAAA;AAAA,UACxD,aAAe,EAAA;AAAA,YACb,GAAG,OAAO,KAAO,EAAA,aAAA;AAAA,YACjB,KAAO,EAAA,MAAA;AAAA,YACP,uBAAyB,EAAA,MAAA,CAAO,KAAO,EAAA,aAAA,EAAe,uBAA2B,IAAA,QAAA;AAAA,YACjF,MAAQ,EAAA;AAAA;AACV;AACF;AACF,KACF;AAAA,WACO,KAAO,EAAA;AACd,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,OACE,KAAiB,YAAA,KAAA,GAAQ,KAAQ,GAAA,IAAI,MAAM,0BAA0B;AAAA,KACzE;AAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAuB,MAAM,MAAM,CAAC;AACvE,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAuB,MAAM,MAAM,CAAC;AACvE,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAiCrB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA8VtE"}
|
|
@@ -17,6 +17,7 @@ import { createWorker } from '../worker/createWorker.js';
|
|
|
17
17
|
import { getPluginRoot } from '../config/getPaths.js';
|
|
18
18
|
import { DEFAULT_CONFIG } from '../config/defaults.js';
|
|
19
19
|
import { createLogger } from '../utils/logger.js';
|
|
20
|
+
import { readFileSync } from 'node:fs';
|
|
20
21
|
|
|
21
22
|
const log = createLogger("react-client");
|
|
22
23
|
let userOptions;
|
|
@@ -150,6 +151,7 @@ function reactClientPlugin(options) {
|
|
|
150
151
|
if (foundClient) {
|
|
151
152
|
res.setHeader("Content-Type", "application/javascript");
|
|
152
153
|
res.end(foundClient);
|
|
154
|
+
return;
|
|
153
155
|
}
|
|
154
156
|
const foundServer = serverManifest && Object.entries(serverManifest).find(
|
|
155
157
|
([key2, value2]) => value2 === key2 || value2 === value2.file || value2 === value2.src || value2 === value2.name
|
|
@@ -162,6 +164,20 @@ function reactClientPlugin(options) {
|
|
|
162
164
|
next();
|
|
163
165
|
}
|
|
164
166
|
} else {
|
|
167
|
+
let html = "";
|
|
168
|
+
try {
|
|
169
|
+
const last = value.split("/").pop();
|
|
170
|
+
if (!last?.includes(".")) {
|
|
171
|
+
const isDir = await stat(join(fileRoot, value));
|
|
172
|
+
if (isDir.isDirectory()) {
|
|
173
|
+
html = readFileSync(join(fileRoot, value, "index.html"), "utf-8");
|
|
174
|
+
res.setHeader("Content-Type", "text/html");
|
|
175
|
+
res.end(html);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
} catch (error) {
|
|
180
|
+
}
|
|
165
181
|
next();
|
|
166
182
|
}
|
|
167
183
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../plugin/react-client/plugin.ts"],"sourcesContent":["import { type Manifest, type Plugin, type ResolvedConfig } from \"vite\";\nimport type {\n CheckFilesExistReturn,\n ResolvedUserConfig,\n ResolvedUserOptions,\n StreamPluginOptions,\n} from \"../types.js\";\nimport { resolveOptions } from \"../config/resolveOptions.js\";\nimport { resolveUserConfig } from \"../config/resolveUserConfig.js\";\nimport { mkdir, readFile, stat, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { getBundleManifest } from \"../helpers/getBundleManifest.js\";\nimport { checkFilesExist } from \"../checkFilesExist.js\";\nimport { resolvePages } from \"../config/resolvePages.js\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { createInputNormalizer } from \"../helpers/inputNormalizer.js\";\nimport { createWorker } from \"../worker/createWorker.js\";\nimport type { Worker } from \"node:worker_threads\";\nimport { getPluginRoot } from \"../config/getPaths.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport type {\n RscRenderMessage,\n RscWorkerMessage,\n RscWorkerResponse,\n} from \"../worker/types.js\";\nimport { createLogger } from \"../utils/logger.js\";\n\nconst log = createLogger(\"react-client\");\nlet userOptions: ResolvedUserOptions;\nlet userConfig: ResolvedUserConfig;\nlet clientManifest: Manifest = {};\nlet resolvedConfig: ResolvedConfig;\nlet root: string;\nlet loader: (id: string) => Promise<Record<string, any>> = (id: string) =>\n import(id);\nlet worker: Worker;\nlet files: CheckFilesExistReturn;\n\nexport function reactClientPlugin(options: StreamPluginOptions): Plugin {\n const resolvedOptions = resolveOptions(options, true);\n if (resolvedOptions.type === \"error\") {\n throw resolvedOptions.error;\n }\n userOptions = resolvedOptions.userOptions;\n root = userOptions.projectRoot;\n const rscWorkerPath = join(getPluginRoot(), DEFAULT_CONFIG.RSC_WORKER_PATH);\n\n log.info(\"RSC worker path:\" + rscWorkerPath);\n\n return {\n name: \"vite:react-client\",\n\n async config(config, configEnv) {\n if (\n typeof config.root === \"string\" &&\n config.root !== root &&\n config.root !== process.cwd() &&\n config.root !== \"\"\n ) {\n root = config.root;\n console.log(\"[vite:react-client] Root updated:\", root);\n }\n if (configEnv.command === \"serve\" && !configEnv.isPreview && !worker) {\n worker = await createWorker({\n projectRoot: root,\n workerPath: rscWorkerPath,\n reverseCondition: true,\n });\n }\n const pages = await resolvePages(userOptions.build.pages);\n if (pages.type === \"error\") {\n throw pages.error;\n }\n\n if (pages.pages.length > 0) {\n files = await checkFilesExist(pages.pages, userOptions, root);\n } else {\n files = {\n pageMap: new Map(),\n propsMap: new Map(),\n propsSet: new Set(),\n pageSet: new Set(),\n urlMap: new Map(),\n errors: [],\n };\n }\n\n const resolvedConfig = resolveUserConfig({\n isClient: true,\n config,\n configEnv,\n userOptions,\n files,\n });\n\n if (resolvedConfig.type === \"error\") {\n throw resolvedConfig.error;\n }\n\n userConfig = resolvedConfig.userConfig;\n return userConfig;\n },\n\n configResolved(config) {\n resolvedConfig = config;\n },\n\n async generateBundle(options, bundle) {\n // Create manifest entries for each chunk\n clientManifest = getBundleManifest({\n pluginContext: this,\n bundle,\n moduleBase: userOptions.moduleBase,\n preserveModulesRoot: userOptions.build.preserveModulesRoot,\n });\n\n // Write manifest immediately after generation\n const manifestPath = join(\n root,\n resolvedConfig.environments[\"client\"].build.outDir as string,\n resolvedConfig.environments[\"client\"].build.manifest as string\n );\n await mkdir(dirname(manifestPath), { recursive: true });\n\n return await writeFile(\n manifestPath,\n JSON.stringify(clientManifest, null, 2)\n );\n },\n\n async configurePreviewServer(server) {\n if (root !== server.config.root) {\n root = server.config.root;\n }\n if (typeof loader !== \"function\") {\n loader = (id: string) => import(id);\n }\n const normalize = createInputNormalizer({\n root,\n removeExtension: false,\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n });\n server.middlewares.use(async (req, res, next) => {\n const [key, value] = normalize(req.url);\n const fileRoot = key.startsWith(\"node_modules\")\n ? root\n : join(root, userOptions.build.outDir, userOptions.build.client);\n if (value.endsWith(\".js\")) {\n try {\n const stats = await stat(join(fileRoot, value));\n if (stats.isFile()) {\n const content = await readFile(join(fileRoot, value), \"utf-8\");\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(content);\n return;\n } else {\n next();\n }\n } catch (error) {\n const { manifest: clientManifest } = tryManifest({\n root,\n outDir: join(userOptions.build.outDir, userOptions.build.client),\n });\n const { manifest: serverManifest } = tryManifest({\n root,\n outDir: join(userOptions.build.outDir, userOptions.build.server),\n });\n if (clientManifest && value in clientManifest) {\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(clientManifest[value]);\n return;\n } else if (serverManifest && value in serverManifest) {\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(serverManifest[value]);\n return;\n }\n const foundClient =\n clientManifest &&\n Object.entries(clientManifest).find(\n ([key, value]) =>\n value === key ||\n value === value.file ||\n value === value.src ||\n value === value.name\n );\n if (foundClient) {\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(foundClient);\n }\n const foundServer =\n serverManifest &&\n Object.entries(serverManifest).find(\n ([key, value]) =>\n value === key ||\n value === value.file ||\n value === value.src ||\n value === value.name\n );\n\n if (foundServer) {\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(foundServer);\n return;\n }\n next();\n }\n } else {\n next();\n }\n });\n },\n // setup dev server\n async configureServer(server) {\n if (typeof loader !== \"function\") {\n loader = server.ssrLoadModule;\n }\n if (!worker) {\n log.info(\"Creating RSC worker...\");\n worker = await createWorker({\n projectRoot: root,\n workerPath: rscWorkerPath,\n condition: \"react-client\",\n });\n log.info(\"RSC worker created\");\n }\n const normalize = createInputNormalizer({\n root,\n removeExtension: false,\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n });\n server.middlewares.use(async (req, res, next) => {\n if (!req.url) {\n next();\n return;\n }\n if (\n req.url.endsWith(\".rsc\") ||\n req.headers.accept?.includes(\"text/x-component\")\n ) {\n try {\n const path = req.url?.includes(\"index.rsc\")\n ? req.url.replace(\"index.rsc\", \"\")\n : req.url?.replace(\".rsc\", \"\");\n let [key, value] = normalize(path);\n\n let pageImport = DEFAULT_CONFIG.PAGE as string;\n let propsImport = DEFAULT_CONFIG.PROPS as string;\n // PAGE\n // no trailing slash\n const pathNoTrailing = path?.replace(/\\/$/, '');\n if (files.urlMap.has(req.url)) {\n pageImport = files.urlMap.get(req.url)!.page;\n propsImport = files.urlMap.get(req.url)!.props;\n } else if (files.urlMap.has(pathNoTrailing)) {\n pageImport = files.urlMap.get(pathNoTrailing)!.page;\n propsImport = files.urlMap.get(pathNoTrailing)!.props;\n } else if (files.urlMap.has(path)) {\n pageImport = files.urlMap.get(path)!.page;\n propsImport = files.urlMap.get(path)!.props;\n } else if (files.urlMap.has(value)) {\n pageImport = files.urlMap.get(value)!.page;\n propsImport = files.urlMap.get(value)!.props;\n } else if (files.urlMap.has(key)) {\n pageImport = files.urlMap.get(key)!.page;\n propsImport = files.urlMap.get(key)!.props;\n } else {\n console.warn(`Page/props import not found for any of the following (in order of priority): ${[req.url, pathNoTrailing, path, value, key].filter(Boolean).join(', ')} available pages:${Array.from(files.urlMap.keys()).join(', ')}`);\n }\n // Set headers early\n res.setHeader(\"Content-Type\", \"text/x-component\");\n res.setHeader(\"Transfer-Encoding\", \"chunked\");\n res.setHeader(\"Connection\", \"keep-alive\");\n\n let hasError = false;\n const timeout = setTimeout(() => {\n if (!hasError) {\n hasError = true;\n res.statusCode = 500;\n res.end(\"RSC render timeout\");\n }\n }, 5000);\n\n const messageHandler = (\n message: RscWorkerMessage | RscWorkerResponse\n ) => {\n try {\n switch (message.type) {\n case \"RSC_CHUNK\":\n // Write chunk directly to response\n if (!hasError) {\n res.write(message.chunk);\n }\n break;\n\n case \"RSC_END\":\n clearTimeout(timeout);\n if (!hasError) {\n res.end();\n }\n worker.off(\"message\", messageHandler);\n break;\n\n case \"ERROR\":\n clearTimeout(timeout);\n log.error(\"Render error\", message);\n if (!hasError) {\n hasError = true;\n res.statusCode = 500;\n res.end(message.error);\n }\n worker.off(\"message\", messageHandler);\n break;\n }\n } catch (error) {\n clearTimeout(timeout);\n if (!hasError) {\n hasError = true;\n res.statusCode = 500;\n res.end(\n error instanceof Error ? error.message : String(error)\n );\n }\n worker.off(\"message\", messageHandler);\n }\n };\n\n worker.on(\"message\", messageHandler);\n worker.once(\"error\", (error) => {\n clearTimeout(timeout);\n if (!hasError) {\n hasError = true;\n res.statusCode = 500;\n res.end(error instanceof Error ? error.message : String(error));\n }\n worker.off(\"message\", messageHandler);\n });\n worker.postMessage({\n type: \"RSC_RENDER\",\n id: value,\n pageImport,\n propsImport,\n url: req.url ?? \"/\",\n pageExportName:\n userOptions.pageExportName ?? DEFAULT_CONFIG.PAGE_EXPORT_NAME,\n propsExportName:\n userOptions.propsExportName ?? DEFAULT_CONFIG.PROPS_EXPORT_NAME,\n outDir: userOptions.build.outDir,\n projectRoot: root,\n moduleRootPath:\n userOptions.build.preserveModulesRoot === true\n ? userOptions.moduleBase\n : \"\",\n moduleBaseURL: ``,\n moduleBasePath: '/',\n pipableStreamOptions: userOptions.pipableStreamOptions,\n cssFiles: []\n } satisfies RscRenderMessage);\n } catch (error) {\n log.error(\"Middleware error:\", error);\n res.statusCode = 500;\n res.end(error instanceof Error ? error.message : String(error));\n }\n } else {\n next();\n }\n });\n },\n };\n}\n"],"names":["resolvedConfig","options","clientManifest","key","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../plugin/react-client/plugin.ts"],"sourcesContent":["import { type Manifest, type Plugin, type ResolvedConfig } from \"vite\";\nimport type {\n CheckFilesExistReturn,\n ResolvedUserConfig,\n ResolvedUserOptions,\n StreamPluginOptions,\n} from \"../types.js\";\nimport { resolveOptions } from \"../config/resolveOptions.js\";\nimport { resolveUserConfig } from \"../config/resolveUserConfig.js\";\nimport { mkdir, readFile, stat, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { getBundleManifest } from \"../helpers/getBundleManifest.js\";\nimport { checkFilesExist } from \"../checkFilesExist.js\";\nimport { resolvePages } from \"../config/resolvePages.js\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { createInputNormalizer } from \"../helpers/inputNormalizer.js\";\nimport { createWorker } from \"../worker/createWorker.js\";\nimport type { Worker } from \"node:worker_threads\";\nimport { getPluginRoot } from \"../config/getPaths.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport type {\n RscRenderMessage,\n RscWorkerMessage,\n RscWorkerResponse,\n} from \"../worker/types.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { readFileSync } from \"node:fs\";\n\nconst log = createLogger(\"react-client\");\nlet userOptions: ResolvedUserOptions;\nlet userConfig: ResolvedUserConfig;\nlet clientManifest: Manifest = {};\nlet resolvedConfig: ResolvedConfig;\nlet root: string;\nlet loader: (id: string) => Promise<Record<string, any>> = (id: string) =>\n import(id);\nlet worker: Worker;\nlet files: CheckFilesExistReturn;\n\nexport function reactClientPlugin(options: StreamPluginOptions): Plugin {\n const resolvedOptions = resolveOptions(options, true);\n if (resolvedOptions.type === \"error\") {\n throw resolvedOptions.error;\n }\n userOptions = resolvedOptions.userOptions;\n root = userOptions.projectRoot;\n const rscWorkerPath = join(getPluginRoot(), DEFAULT_CONFIG.RSC_WORKER_PATH);\n\n log.info(\"RSC worker path:\" + rscWorkerPath);\n\n return {\n name: \"vite:react-client\",\n\n async config(config, configEnv) {\n if (\n typeof config.root === \"string\" &&\n config.root !== root &&\n config.root !== process.cwd() &&\n config.root !== \"\"\n ) {\n root = config.root;\n console.log(\"[vite:react-client] Root updated:\", root);\n }\n if (configEnv.command === \"serve\" && !configEnv.isPreview && !worker) {\n worker = await createWorker({\n projectRoot: root,\n workerPath: rscWorkerPath,\n reverseCondition: true,\n });\n }\n const pages = await resolvePages(userOptions.build.pages);\n if (pages.type === \"error\") {\n throw pages.error;\n }\n\n if (pages.pages.length > 0) {\n files = await checkFilesExist(pages.pages, userOptions, root);\n } else {\n files = {\n pageMap: new Map(),\n propsMap: new Map(),\n propsSet: new Set(),\n pageSet: new Set(),\n urlMap: new Map(),\n errors: [],\n };\n }\n\n const resolvedConfig = resolveUserConfig({\n isClient: true,\n config,\n configEnv,\n userOptions,\n files,\n });\n\n if (resolvedConfig.type === \"error\") {\n throw resolvedConfig.error;\n }\n\n userConfig = resolvedConfig.userConfig;\n return userConfig;\n },\n\n configResolved(config) {\n resolvedConfig = config;\n },\n\n async generateBundle(options, bundle) {\n // Create manifest entries for each chunk\n clientManifest = getBundleManifest({\n pluginContext: this,\n bundle,\n moduleBase: userOptions.moduleBase,\n preserveModulesRoot: userOptions.build.preserveModulesRoot,\n });\n\n // Write manifest immediately after generation\n const manifestPath = join(\n root,\n resolvedConfig.environments[\"client\"].build.outDir as string,\n resolvedConfig.environments[\"client\"].build.manifest as string\n );\n await mkdir(dirname(manifestPath), { recursive: true });\n\n return await writeFile(\n manifestPath,\n JSON.stringify(clientManifest, null, 2)\n );\n },\n\n async configurePreviewServer(server) {\n if (root !== server.config.root) {\n root = server.config.root;\n }\n if (typeof loader !== \"function\") {\n loader = (id: string) => import(id);\n }\n const normalize = createInputNormalizer({\n root,\n removeExtension: false,\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n });\n server.middlewares.use(async (req, res, next) => {\n const [key, value] = normalize(req.url);\n const fileRoot = key.startsWith(\"node_modules\")\n ? root\n : join(root, userOptions.build.outDir, userOptions.build.client);\n if (value.endsWith(\".js\")) {\n try {\n const stats = await stat(join(fileRoot, value));\n if (stats.isFile()) {\n const content = await readFile(join(fileRoot, value), \"utf-8\");\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(content);\n return;\n } else {\n next();\n }\n } catch (error) {\n const { manifest: clientManifest } = tryManifest({\n root,\n outDir: join(userOptions.build.outDir, userOptions.build.client),\n });\n const { manifest: serverManifest } = tryManifest({\n root,\n outDir: join(userOptions.build.outDir, userOptions.build.server),\n });\n if (clientManifest && value in clientManifest) {\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(clientManifest[value]);\n return;\n } else if (serverManifest && value in serverManifest) {\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(serverManifest[value]);\n return;\n }\n const foundClient =\n clientManifest &&\n Object.entries(clientManifest).find(\n ([key, value]) =>\n value === key ||\n value === value.file ||\n value === value.src ||\n value === value.name\n );\n if (foundClient) {\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(foundClient);\n return;\n }\n const foundServer =\n serverManifest &&\n Object.entries(serverManifest).find(\n ([key, value]) =>\n value === key ||\n value === value.file ||\n value === value.src ||\n value === value.name\n );\n\n if (foundServer) {\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(foundServer);\n return;\n }\n next();\n }\n } else {\n let html = '';\n try {\n const last = value.split('/').pop();\n if(!last?.includes('.')) {\n const isDir = await stat(join(fileRoot, value));\n if (isDir.isDirectory()) {\n html = readFileSync(join(fileRoot, value, 'index.html'), 'utf-8');\n res.setHeader(\"Content-Type\", \"text/html\");\n res.end(html);\n return;\n }\n }\n } catch (error) {\n \n }\n next();\n }\n });\n },\n // setup dev server\n async configureServer(server) {\n if (typeof loader !== \"function\") {\n loader = server.ssrLoadModule;\n }\n if (!worker) {\n log.info(\"Creating RSC worker...\");\n worker = await createWorker({\n projectRoot: root,\n workerPath: rscWorkerPath,\n condition: \"react-client\",\n });\n log.info(\"RSC worker created\");\n }\n const normalize = createInputNormalizer({\n root,\n removeExtension: false,\n preserveModulesRoot: userOptions.build.preserveModulesRoot\n ? userOptions.moduleBase\n : undefined,\n });\n server.middlewares.use(async (req, res, next) => {\n if (!req.url) {\n next();\n return;\n }\n if (\n req.url.endsWith(\".rsc\") ||\n req.headers.accept?.includes(\"text/x-component\")\n ) {\n try {\n const path = req.url?.includes(\"index.rsc\")\n ? req.url.replace(\"index.rsc\", \"\")\n : req.url?.replace(\".rsc\", \"\");\n let [key, value] = normalize(path);\n\n let pageImport = DEFAULT_CONFIG.PAGE as string;\n let propsImport = DEFAULT_CONFIG.PROPS as string;\n // PAGE\n // no trailing slash\n const pathNoTrailing = path?.replace(/\\/$/, '');\n if (files.urlMap.has(req.url)) {\n pageImport = files.urlMap.get(req.url)!.page;\n propsImport = files.urlMap.get(req.url)!.props;\n } else if (files.urlMap.has(pathNoTrailing)) {\n pageImport = files.urlMap.get(pathNoTrailing)!.page;\n propsImport = files.urlMap.get(pathNoTrailing)!.props;\n } else if (files.urlMap.has(path)) {\n pageImport = files.urlMap.get(path)!.page;\n propsImport = files.urlMap.get(path)!.props;\n } else if (files.urlMap.has(value)) {\n pageImport = files.urlMap.get(value)!.page;\n propsImport = files.urlMap.get(value)!.props;\n } else if (files.urlMap.has(key)) {\n pageImport = files.urlMap.get(key)!.page;\n propsImport = files.urlMap.get(key)!.props;\n } else {\n console.warn(`Page/props import not found for any of the following (in order of priority): ${[req.url, pathNoTrailing, path, value, key].filter(Boolean).join(', ')} available pages:${Array.from(files.urlMap.keys()).join(', ')}`);\n }\n // Set headers early\n res.setHeader(\"Content-Type\", \"text/x-component\");\n res.setHeader(\"Transfer-Encoding\", \"chunked\");\n res.setHeader(\"Connection\", \"keep-alive\");\n\n let hasError = false;\n const timeout = setTimeout(() => {\n if (!hasError) {\n hasError = true;\n res.statusCode = 500;\n res.end(\"RSC render timeout\");\n }\n }, 5000);\n\n const messageHandler = (\n message: RscWorkerMessage | RscWorkerResponse\n ) => {\n try {\n switch (message.type) {\n case \"RSC_CHUNK\":\n // Write chunk directly to response\n if (!hasError) {\n res.write(message.chunk);\n }\n break;\n\n case \"RSC_END\":\n clearTimeout(timeout);\n if (!hasError) {\n res.end();\n }\n worker.off(\"message\", messageHandler);\n break;\n\n case \"ERROR\":\n clearTimeout(timeout);\n log.error(\"Render error\", message);\n if (!hasError) {\n hasError = true;\n res.statusCode = 500;\n res.end(message.error);\n }\n worker.off(\"message\", messageHandler);\n break;\n }\n } catch (error) {\n clearTimeout(timeout);\n if (!hasError) {\n hasError = true;\n res.statusCode = 500;\n res.end(\n error instanceof Error ? error.message : String(error)\n );\n }\n worker.off(\"message\", messageHandler);\n }\n };\n\n worker.on(\"message\", messageHandler);\n worker.once(\"error\", (error) => {\n clearTimeout(timeout);\n if (!hasError) {\n hasError = true;\n res.statusCode = 500;\n res.end(error instanceof Error ? error.message : String(error));\n }\n worker.off(\"message\", messageHandler);\n });\n worker.postMessage({\n type: \"RSC_RENDER\",\n id: value,\n pageImport,\n propsImport,\n url: req.url ?? \"/\",\n pageExportName:\n userOptions.pageExportName ?? DEFAULT_CONFIG.PAGE_EXPORT_NAME,\n propsExportName:\n userOptions.propsExportName ?? DEFAULT_CONFIG.PROPS_EXPORT_NAME,\n outDir: userOptions.build.outDir,\n projectRoot: root,\n moduleRootPath:\n userOptions.build.preserveModulesRoot === true\n ? userOptions.moduleBase\n : \"\",\n moduleBaseURL: ``,\n moduleBasePath: '/',\n pipableStreamOptions: userOptions.pipableStreamOptions,\n cssFiles: []\n } satisfies RscRenderMessage);\n } catch (error) {\n log.error(\"Middleware error:\", error);\n res.statusCode = 500;\n res.end(error instanceof Error ? error.message : String(error));\n }\n } else {\n next();\n }\n });\n },\n };\n}\n"],"names":["resolvedConfig","options","clientManifest","key","value"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-server/createRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"createRscStream.d.ts","sourceRoot":"","sources":["../../../plugin/react-server/createRscStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA2BnC,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,cAAc,EACd,MAAM,EACN,QAAa,EACb,KAAK,EACL,GAAG,EACH,oBAAoB,EACpB,SAAS,GACV,EAAE;IACD,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,EAAE,GAAG,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB,OAgCA"}
|
|
@@ -18,7 +18,8 @@ function CssCollector({
|
|
|
18
18
|
return React.createElement("link", {
|
|
19
19
|
key: css,
|
|
20
20
|
rel: "stylesheet",
|
|
21
|
-
href: url
|
|
21
|
+
href: url,
|
|
22
|
+
precedence: "high"
|
|
22
23
|
});
|
|
23
24
|
}),
|
|
24
25
|
children
|
|
@@ -49,6 +50,9 @@ function createRscStream({
|
|
|
49
50
|
moduleBasePath,
|
|
50
51
|
{
|
|
51
52
|
onError: (error) => {
|
|
53
|
+
if (process.env["NODE_ENV"] === "development") {
|
|
54
|
+
console.trace(error);
|
|
55
|
+
}
|
|
52
56
|
logger.error(`Stream error at ${route}.`, { error });
|
|
53
57
|
},
|
|
54
58
|
onPostpone: logger.info ?? console.info,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRscStream.js","sources":["../../../plugin/react-server/createRscStream.ts"],"sourcesContent":["import * as React from \"react\";\n// @ts-ignore\nimport { renderToPipeableStream } from \"react-server-dom-esm/server.node\";\nimport type { PipeableStreamOptions } from \"../worker/types.js\";\nimport type { Logger } from \"vite\";\n\n\n// CSS collector component\nfunction CssCollector({\n children,\n cssFiles,\n}: {\n children?: React.ReactNode;\n cssFiles: string[];\n}) {\n return React.createElement(\n React.Fragment,\n null,\n ...cssFiles.map((css) => {\n const url = css.startsWith('/') || css.startsWith('http') || css.startsWith('./') ? css : '/'+css\n return React.createElement('link', {\n key: css,\n rel: 'stylesheet',\n href: url\n })\n }),\n children\n );\n}\n\nexport function createRscStream({\n Html,\n Page,\n props,\n moduleBasePath,\n logger,\n cssFiles = [],\n route,\n url,\n pipableStreamOptions,\n htmlProps,\n}: {\n Html: React.ComponentType<any>;\n Page: React.ComponentType<any>;\n props: any;\n moduleBasePath: string;\n logger: Logger;\n cssFiles?: string[];\n route: string;\n url: string;\n pipableStreamOptions?: PipeableStreamOptions;\n htmlProps?: any;\n}) {\n \n const htmlIsFragment = Html == React.Fragment;\n const withCss = React.createElement(\n CssCollector,\n { cssFiles },\n React.createElement(Page, props)\n )\n // Otherwise wrap with Html component\n const content = htmlIsFragment \n ? withCss\n : React.createElement(Html, htmlProps, withCss);\n try {\n return renderToPipeableStream(\n content,\n moduleBasePath,\n {\n onError: (error: Error) => {\n logger.error(`Stream error at ${route}.`, {error});\n },\n onPostpone: logger.info ?? console.info, \n environmentName: \"Server\",\n ...pipableStreamOptions,\n }\n );\n } catch (error) {\n logger.error(`Failed to create stream for ${route}.`, {error: error as Error});\n return null;\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAQA,SAAS,YAAa,CAAA;AAAA,EACpB,QAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAA,OAAO,KAAM,CAAA,aAAA;AAAA,IACX,KAAM,CAAA,QAAA;AAAA,IACN,IAAA;AAAA,IACA,GAAG,QAAA,CAAS,GAAI,CAAA,CAAC,GAAQ,KAAA;AACvB,MAAA,MAAM,GAAM,GAAA,GAAA,CAAI,UAAW,CAAA,GAAG,KAAK,GAAI,CAAA,UAAA,CAAW,MAAM,CAAA,IAAK,GAAI,CAAA,UAAA,CAAW,IAAI,CAAA,GAAI,MAAM,GAAI,GAAA,GAAA;AAC9F,MAAO,OAAA,KAAA,CAAM,cAAc,MAAQ,EAAA;AAAA,QACjC,GAAK,EAAA,GAAA;AAAA,QACL,GAAK,EAAA,YAAA;AAAA,QACL,IAAM,EAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"createRscStream.js","sources":["../../../plugin/react-server/createRscStream.ts"],"sourcesContent":["import * as React from \"react\";\n// @ts-ignore\nimport { renderToPipeableStream } from \"react-server-dom-esm/server.node\";\nimport type { PipeableStreamOptions } from \"../worker/types.js\";\nimport type { Logger } from \"vite\";\n\n\n// CSS collector component\nfunction CssCollector({\n children,\n cssFiles,\n}: {\n children?: React.ReactNode;\n cssFiles: string[];\n}) {\n return React.createElement(\n React.Fragment,\n null,\n ...cssFiles.map((css) => {\n const url = css.startsWith('/') || css.startsWith('http') || css.startsWith('./') ? css : '/'+css\n return React.createElement('link', {\n key: css,\n rel: 'stylesheet',\n href: url,\n precedence: 'high'\n })\n }),\n children\n );\n}\n\nexport function createRscStream({\n Html,\n Page,\n props,\n moduleBasePath,\n logger,\n cssFiles = [],\n route,\n url,\n pipableStreamOptions,\n htmlProps,\n}: {\n Html: React.ComponentType<any>;\n Page: React.ComponentType<any>;\n props: any;\n moduleBasePath: string;\n logger: Logger;\n cssFiles?: string[];\n route: string;\n url: string;\n pipableStreamOptions?: PipeableStreamOptions;\n htmlProps?: any;\n}) {\n \n const htmlIsFragment = Html == React.Fragment;\n const withCss = React.createElement(\n CssCollector,\n { cssFiles },\n React.createElement(Page, props)\n )\n // Otherwise wrap with Html component\n const content = htmlIsFragment \n ? withCss\n : React.createElement(Html, htmlProps, withCss);\n try {\n return renderToPipeableStream(\n content,\n moduleBasePath,\n {\n onError: (error: Error) => {\n if(process.env['NODE_ENV'] === 'development') {\n console.trace(error);\n }\n logger.error(`Stream error at ${route}.`, {error});\n },\n onPostpone: logger.info ?? console.info, \n environmentName: \"Server\",\n ...pipableStreamOptions,\n }\n );\n } catch (error) {\n logger.error(`Failed to create stream for ${route}.`, {error: error as Error});\n return null;\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAQA,SAAS,YAAa,CAAA;AAAA,EACpB,QAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAA,OAAO,KAAM,CAAA,aAAA;AAAA,IACX,KAAM,CAAA,QAAA;AAAA,IACN,IAAA;AAAA,IACA,GAAG,QAAA,CAAS,GAAI,CAAA,CAAC,GAAQ,KAAA;AACvB,MAAA,MAAM,GAAM,GAAA,GAAA,CAAI,UAAW,CAAA,GAAG,KAAK,GAAI,CAAA,UAAA,CAAW,MAAM,CAAA,IAAK,GAAI,CAAA,UAAA,CAAW,IAAI,CAAA,GAAI,MAAM,GAAI,GAAA,GAAA;AAC9F,MAAO,OAAA,KAAA,CAAM,cAAc,MAAQ,EAAA;AAAA,QACjC,GAAK,EAAA,GAAA;AAAA,QACL,GAAK,EAAA,YAAA;AAAA,QACL,IAAM,EAAA,GAAA;AAAA,QACN,UAAY,EAAA;AAAA,OACb,CAAA;AAAA,KACF,CAAA;AAAA,IACD;AAAA,GACF;AACF;AAEO,SAAS,eAAgB,CAAA;AAAA,EAC9B,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAW,EAAC;AAAA,EACZ,KAAA;AAAA,EACA,GAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAWG,EAAA;AAED,EAAM,MAAA,cAAA,GAAiB,QAAQ,KAAM,CAAA,QAAA;AACrC,EAAA,MAAM,UAAU,KAAM,CAAA,aAAA;AAAA,IACpB,YAAA;AAAA,IACA,EAAE,QAAS,EAAA;AAAA,IACX,KAAA,CAAM,aAAc,CAAA,IAAA,EAAM,KAAK;AAAA,GACjC;AAEA,EAAA,MAAM,UAAU,cACZ,GAAA,OAAA,GACA,MAAM,aAAc,CAAA,IAAA,EAAM,WAAW,OAAO,CAAA;AAChD,EAAI,IAAA;AACF,IAAO,OAAA,sBAAA;AAAA,MACL,OAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACE,OAAA,EAAS,CAAC,KAAiB,KAAA;AACzB,UAAA,IAAG,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,KAAM,aAAe,EAAA;AAC5C,YAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA;AAErB,UAAA,MAAA,CAAO,MAAM,CAAmB,gBAAA,EAAA,KAAK,CAAK,CAAA,CAAA,EAAA,EAAC,OAAM,CAAA;AAAA,SACnD;AAAA,QACA,UAAA,EAAY,MAAO,CAAA,IAAA,IAAQ,OAAQ,CAAA,IAAA;AAAA,QACnC,eAAiB,EAAA,QAAA;AAAA,QACjB,GAAG;AAAA;AACL,KACF;AAAA,WACO,KAAO,EAAA;AACd,IAAA,MAAA,CAAO,MAAM,CAA+B,4BAAA,EAAA,KAAK,CAAK,CAAA,CAAA,EAAA,EAAC,OAAsB,CAAA;AAC7E,IAAO,OAAA,IAAA;AAAA;AAEX;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-server/plugin.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAGV,qBAAqB,EAGtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-server/plugin.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAGV,qBAAqB,EAGtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAiBvD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,MAAM,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC,CAkdD"}
|
|
@@ -9,8 +9,6 @@ import 'node:worker_threads';
|
|
|
9
9
|
import React__default from 'react';
|
|
10
10
|
import { createLogger } from 'vite';
|
|
11
11
|
import { checkFilesExist } from '../checkFilesExist.js';
|
|
12
|
-
import { DEFAULT_CONFIG } from '../config/defaults.js';
|
|
13
|
-
import { getPluginRoot } from '../config/getPaths.js';
|
|
14
12
|
import { resolveOptions } from '../config/resolveOptions.js';
|
|
15
13
|
import { resolvePages } from '../config/resolvePages.js';
|
|
16
14
|
import { resolveUserConfig } from '../config/resolveUserConfig.js';
|
|
@@ -21,6 +19,7 @@ import { renderPages } from '../worker/html/renderPages.js';
|
|
|
21
19
|
import { createHandler } from './createHandler.js';
|
|
22
20
|
import { mkdir, writeFile, readFile } from 'node:fs/promises';
|
|
23
21
|
import { getBundleManifest } from '../helpers/getBundleManifest.js';
|
|
22
|
+
import { cssFiles } from '../worker/rsc/state.js';
|
|
24
23
|
|
|
25
24
|
let resolvedConfig = null;
|
|
26
25
|
let serverManifestPath = null;
|
|
@@ -33,6 +32,7 @@ function reactServerPlugin(options) {
|
|
|
33
32
|
};
|
|
34
33
|
let files;
|
|
35
34
|
let cssModules = /* @__PURE__ */ new Set();
|
|
35
|
+
let clientComponents = /* @__PURE__ */ new Map();
|
|
36
36
|
let buildCssFiles = /* @__PURE__ */ new Set();
|
|
37
37
|
let root = process.cwd();
|
|
38
38
|
let userConfig;
|
|
@@ -197,13 +197,9 @@ function reactServerPlugin(options) {
|
|
|
197
197
|
throw clientManifestResult.error;
|
|
198
198
|
}
|
|
199
199
|
const clientManifest = clientManifestResult.manifest;
|
|
200
|
-
const htmlWorkerPath = join(
|
|
201
|
-
getPluginRoot(),
|
|
202
|
-
DEFAULT_CONFIG.HTML_WORKER_PATH
|
|
203
|
-
);
|
|
204
200
|
worker = await createWorker({
|
|
205
201
|
projectRoot: root,
|
|
206
|
-
workerPath: htmlWorkerPath,
|
|
202
|
+
workerPath: userOptions.htmlWorkerPath,
|
|
207
203
|
condition: "react-server",
|
|
208
204
|
reverseCondition: true,
|
|
209
205
|
mode: resolvedConfig?.mode ?? "production",
|
|
@@ -301,11 +297,11 @@ function reactServerPlugin(options) {
|
|
|
301
297
|
files,
|
|
302
298
|
{
|
|
303
299
|
pipableStreamOptions: {
|
|
304
|
-
bootstrapModules: clientManifest["index.html"]?.file ? [clientManifest["index.html"].file] : []
|
|
300
|
+
bootstrapModules: clientManifest["index.html"]?.file ? [clientManifest["index.html"].file.startsWith("/") ? clientManifest["index.html"].file : "/" + clientManifest["index.html"].file] : []
|
|
305
301
|
},
|
|
306
302
|
moduleBasePath: "",
|
|
307
303
|
moduleBaseURL: "",
|
|
308
|
-
clientCss: clientManifest["index.html"]?.css ? clientManifest["index.html"].css : [],
|
|
304
|
+
clientCss: clientManifest["index.html"]?.css ? clientManifest["index.html"].css.map((css) => css.startsWith("/") ? css : "/" + css) : [],
|
|
309
305
|
userConfig,
|
|
310
306
|
pluginOptions: userOptions,
|
|
311
307
|
worker,
|
|
@@ -325,12 +321,10 @@ function reactServerPlugin(options) {
|
|
|
325
321
|
timing.renderEnd = performance.now();
|
|
326
322
|
timing.total = (timing.renderEnd - timing.start) / 1e3;
|
|
327
323
|
const stats = {
|
|
328
|
-
htmlFiles:
|
|
329
|
-
clientComponents:
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
cssFiles: Object.keys(clientManifest).flatMap(userOptions.autoDiscover.cssPattern).filter(Boolean).length,
|
|
333
|
-
totalRoutes: userOptions.build.pages.length,
|
|
324
|
+
htmlFiles: files.urlMap.size,
|
|
325
|
+
clientComponents: clientComponents.size,
|
|
326
|
+
cssFiles: cssFiles.size,
|
|
327
|
+
totalRoutes: files.urlMap.size,
|
|
334
328
|
timing: {
|
|
335
329
|
config: ((timing.configResolved ?? 0) - timing.start) / 1e3,
|
|
336
330
|
build: ((timing.buildStart ?? 0) - (timing.configResolved ?? 0)) / 1e3,
|
|
@@ -349,10 +343,8 @@ function reactServerPlugin(options) {
|
|
|
349
343
|
};
|
|
350
344
|
console.log("\n[vite-plugin-react-server] Build Summary:");
|
|
351
345
|
console.log("─".repeat(50));
|
|
352
|
-
console.log(
|
|
353
|
-
console.log(
|
|
354
|
-
console.log(`🎨 Included ${stats.cssFiles} CSS files`);
|
|
355
|
-
console.log(`🛣️ Total routes: ${stats.totalRoutes}`);
|
|
346
|
+
console.log(`🎨 Included ${buildCssFiles.size} CSS files`);
|
|
347
|
+
console.log(`🛣️ Total routes: ${files.urlMap.size}`);
|
|
356
348
|
console.log("─".repeat(50));
|
|
357
349
|
console.log("⏱️ Timing:");
|
|
358
350
|
console.log(` Config: ${formatDuration(stats.timing.config)}`);
|