vite-plugin-react-server 0.3.18 → 1.0.0
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 +220 -141
- package/bin/patch.mjs +8 -2
- package/dist/package.json +15 -8
- 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 +131 -0
- package/dist/plugin/collect-manifest-client-files.js.map +1 -0
- package/dist/plugin/components.d.ts +3 -13
- package/dist/plugin/components.d.ts.map +1 -1
- package/dist/plugin/components.js +3 -13
- package/dist/plugin/config/defaults.d.ts +14 -6
- package/dist/plugin/config/defaults.d.ts.map +1 -1
- package/dist/plugin/config/defaults.js +9 -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 +2 -2
- package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
- package/dist/plugin/config/resolveOptions.js +47 -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 +181 -147
- 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/css-collector-inline.d.ts +10 -0
- package/dist/plugin/css-collector-inline.d.ts.map +1 -0
- package/dist/plugin/css-collector-inline.js +55 -0
- package/dist/plugin/css-collector-inline.js.map +1 -0
- package/dist/plugin/css-collector.d.ts +14 -0
- package/dist/plugin/css-collector.d.ts.map +1 -0
- package/dist/plugin/css-collector.js +49 -0
- package/dist/plugin/css-collector.js.map +1 -0
- package/dist/plugin/helpers/createHandler.d.ts +17 -0
- package/dist/plugin/helpers/createHandler.d.ts.map +1 -0
- package/dist/plugin/helpers/createHandler.js +111 -0
- package/dist/plugin/helpers/createHandler.js.map +1 -0
- package/dist/plugin/helpers/createRscStream.d.ts +27 -0
- package/dist/plugin/helpers/createRscStream.d.ts.map +1 -0
- package/dist/plugin/helpers/createRscStream.js +80 -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/html.d.ts +5 -0
- package/dist/plugin/html.d.ts.map +1 -0
- package/dist/plugin/html.js +11 -0
- package/dist/plugin/html.js.map +1 -0
- 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 +21 -78
- 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 +92 -225
- 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 +207 -0
- package/dist/plugin/react-static/plugin.js.map +1 -0
- package/dist/plugin/react-static/types.d.ts +2 -0
- package/dist/plugin/react-static/types.d.ts.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 +70 -15
- 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 +12 -3
- package/dist/plugin/worker/html/messageHandler.js.map +1 -1
- package/dist/plugin/worker/html/renderPages.d.ts +13 -26
- package/dist/plugin/worker/html/renderPages.d.ts.map +1 -1
- package/dist/plugin/worker/html/renderPages.js +138 -86
- 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 +104 -84
- package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
- 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/plugin/worker/types.d.ts +3 -0
- package/dist/plugin/worker/types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -6
- package/plugin/checkFilesExist.ts +7 -3
- package/plugin/collect-manifest-client-files.ts +167 -0
- package/plugin/components.ts +3 -0
- package/plugin/config/defaults.tsx +70 -0
- package/plugin/config/getPaths.ts +1 -7
- package/plugin/config/mimeTypes.ts +17 -0
- package/plugin/config/resolveOptions.ts +58 -45
- package/plugin/config/resolvePages.ts +8 -4
- package/plugin/config/resolveUserConfig.ts +220 -176
- package/plugin/css-collector-inline.tsx +60 -0
- package/plugin/css-collector.tsx +62 -0
- package/plugin/helpers/createHandler.ts +135 -0
- package/plugin/helpers/createRscStream.ts +109 -0
- package/plugin/helpers/getBundleManifest.ts +14 -5
- package/plugin/html.tsx +9 -0
- 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 +23 -93
- package/plugin/react-server/index.ts +2 -0
- package/plugin/react-server/plugin.ts +111 -302
- package/plugin/react-static/index.ts +1 -0
- package/plugin/react-static/plugin.ts +256 -0
- package/plugin/react-static/types.ts +3 -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 +77 -16
- 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 +12 -3
- package/plugin/worker/html/renderPages.ts +178 -138
- package/plugin/worker/rsc/README.md +58 -0
- package/plugin/worker/rsc/messageHandler.tsx +112 -113
- 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/plugin/worker/types.ts +3 -0
- 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/getEnv.d.ts +0 -19
- package/dist/plugin/getEnv.d.ts.map +0 -1
- package/dist/plugin/getEnv.js +0 -107
- 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/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/module-graph.d.ts +0 -10
- package/dist/plugin/module-graph.d.ts.map +0 -1
- package/dist/plugin/module-graph.js +0 -35
- 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 +0 -126
- package/dist/plugin/react-server/createHandler.js.map +0 -1
- package/dist/plugin/react-server/createRscStream.d.ts +0 -16
- 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/dist/plugin/worker/html/plugin.d.ts +0 -4
- package/dist/plugin/worker/html/plugin.d.ts.map +0 -1
- package/dist/plugin/worker/html/plugin.js +0 -94
- package/dist/plugin/worker/plugin.d.ts +0 -19
- package/dist/plugin/worker/plugin.d.ts.map +0 -1
- package/dist/plugin/worker/plugin.js +0 -23
- package/dist/plugin/worker/rsc/plugin.d.ts +0 -4
- package/dist/plugin/worker/rsc/plugin.d.ts.map +0 -1
- package/dist/plugin/worker/rsc/plugin.js +0 -76
- package/plugin/collect-css-manifest.ts +0 -82
- package/plugin/components.tsx +0 -14
- package/plugin/config/createModuleIdGenerator.ts +0 -52
- package/plugin/config/defaults.ts +0 -51
- package/plugin/getEnv.ts +0 -135
- 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/module-graph.ts +0 -48
- package/plugin/react-server/createHandler.ts +0 -162
- package/plugin/react-server/createRscStream.ts +0 -86
- package/plugin/react-server/createSsrHandler.ts +0 -125
- package/plugin/utils/logger.ts +0 -52
- package/plugin/worker/html/plugin.ts +0 -101
- package/plugin/worker/plugin.ts +0 -26
- package/plugin/worker/rsc/plugin.ts +0 -84
- /package/dist/plugin/{loader/rsc/messageHandler.js → react-static/types.js} +0 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vite-plugin-react-server
|
|
3
|
+
* Copyright (c) Nico Brinkkemper
|
|
4
|
+
* MIT License
|
|
5
|
+
*/
|
|
6
|
+
import { join, dirname } from 'node:path';
|
|
7
|
+
import 'node:worker_threads';
|
|
8
|
+
import { createLogger } from 'vite';
|
|
9
|
+
import { checkFilesExist } from '../checkFilesExist.js';
|
|
10
|
+
import { resolveOptions } from '../config/resolveOptions.js';
|
|
11
|
+
import { resolvePages } from '../config/resolvePages.js';
|
|
12
|
+
import { resolveUserConfig } from '../config/resolveUserConfig.js';
|
|
13
|
+
import { tryManifest } from '../helpers/tryManifest.js';
|
|
14
|
+
import { createBuildLoader } from '../loader/createBuildLoader.js';
|
|
15
|
+
import { createWorker } from '../worker/createWorker.js';
|
|
16
|
+
import { renderPages } from '../worker/html/renderPages.js';
|
|
17
|
+
import { mkdir } from 'node:fs/promises';
|
|
18
|
+
import { collectManifestClientFiles } from '../collect-manifest-client-files.js';
|
|
19
|
+
import { mkdirSync, copyFileSync } from 'node:fs';
|
|
20
|
+
import { copyDir } from '../copy-dir.js';
|
|
21
|
+
|
|
22
|
+
let loader = null;
|
|
23
|
+
let worker;
|
|
24
|
+
let htmlTransform = null;
|
|
25
|
+
let clientAssets = /* @__PURE__ */ new Set();
|
|
26
|
+
function reactStaticPlugin(options) {
|
|
27
|
+
const timing = {
|
|
28
|
+
start: Date.now()
|
|
29
|
+
};
|
|
30
|
+
let files;
|
|
31
|
+
let root = process.cwd();
|
|
32
|
+
let userConfig;
|
|
33
|
+
let userOptions;
|
|
34
|
+
let pages;
|
|
35
|
+
let serverManifest = {};
|
|
36
|
+
let clientManifest = {};
|
|
37
|
+
const resolvedOptions = resolveOptions(options, false);
|
|
38
|
+
if (resolvedOptions.type === "error") {
|
|
39
|
+
throw resolvedOptions.error;
|
|
40
|
+
}
|
|
41
|
+
userOptions = resolvedOptions.userOptions;
|
|
42
|
+
if (userOptions.projectRoot != root && typeof userOptions.projectRoot === "string" && userOptions.projectRoot !== process.cwd() && userOptions.projectRoot !== "") {
|
|
43
|
+
root = userOptions.projectRoot;
|
|
44
|
+
console.log(
|
|
45
|
+
"[vite:plugin-react-server] Root dir changed in plugin",
|
|
46
|
+
userOptions.projectRoot,
|
|
47
|
+
root
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
name: "vite:plugin-react-server/static",
|
|
52
|
+
enforce: "post",
|
|
53
|
+
api: {
|
|
54
|
+
meta: { timing }
|
|
55
|
+
},
|
|
56
|
+
async config(config, configEnv) {
|
|
57
|
+
if (typeof config.root === "string" && config.root !== root && config.root !== process.cwd() && config.root !== "") {
|
|
58
|
+
root = config.root;
|
|
59
|
+
}
|
|
60
|
+
const resolvePagesResult = await resolvePages(userOptions.build.pages);
|
|
61
|
+
if (resolvePagesResult.type === "error") {
|
|
62
|
+
throw resolvePagesResult.error;
|
|
63
|
+
}
|
|
64
|
+
pages = resolvePagesResult.pages;
|
|
65
|
+
files = await checkFilesExist(pages, userOptions, root);
|
|
66
|
+
const resolvedConfig2 = resolveUserConfig({
|
|
67
|
+
isStatic: true,
|
|
68
|
+
config,
|
|
69
|
+
configEnv,
|
|
70
|
+
userOptions,
|
|
71
|
+
files
|
|
72
|
+
});
|
|
73
|
+
if (resolvedConfig2.type === "error") {
|
|
74
|
+
throw resolvedConfig2.error;
|
|
75
|
+
}
|
|
76
|
+
userConfig = resolvedConfig2.userConfig;
|
|
77
|
+
timing.configResolved = Date.now();
|
|
78
|
+
return {};
|
|
79
|
+
},
|
|
80
|
+
async buildStart() {
|
|
81
|
+
timing.buildStart = Date.now();
|
|
82
|
+
},
|
|
83
|
+
async closeBundle() {
|
|
84
|
+
timing.renderStart = Date.now();
|
|
85
|
+
const serverManifestResult = tryManifest({
|
|
86
|
+
root,
|
|
87
|
+
outDir: join(userOptions.build.outDir, userOptions.build.server),
|
|
88
|
+
ssrManifest: false
|
|
89
|
+
});
|
|
90
|
+
if (serverManifestResult.type === "error") {
|
|
91
|
+
throw serverManifestResult.error;
|
|
92
|
+
}
|
|
93
|
+
serverManifest = serverManifestResult.manifest;
|
|
94
|
+
const clientManifestResult = tryManifest({
|
|
95
|
+
root,
|
|
96
|
+
outDir: join(userOptions.build.outDir, userOptions.build.client),
|
|
97
|
+
ssrManifest: false
|
|
98
|
+
});
|
|
99
|
+
if (clientManifestResult.type === "error") {
|
|
100
|
+
throw clientManifestResult.error;
|
|
101
|
+
}
|
|
102
|
+
clientManifest = clientManifestResult.manifest;
|
|
103
|
+
const staticDir = join(root, userOptions.build.outDir, userOptions.build.static);
|
|
104
|
+
await mkdir(staticDir, { recursive: true });
|
|
105
|
+
worker = await createWorker({
|
|
106
|
+
projectRoot: root,
|
|
107
|
+
workerPath: userOptions.htmlWorkerPath,
|
|
108
|
+
condition: "react-server",
|
|
109
|
+
reverseCondition: true,
|
|
110
|
+
mode: "production"
|
|
111
|
+
});
|
|
112
|
+
if (typeof loader !== "function") {
|
|
113
|
+
loader = createBuildLoader({
|
|
114
|
+
root,
|
|
115
|
+
userConfig,
|
|
116
|
+
userOptions,
|
|
117
|
+
pluginContext: this,
|
|
118
|
+
serverManifest,
|
|
119
|
+
clientManifest
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const routeCssMap = /* @__PURE__ */ new Map();
|
|
123
|
+
const globalCss = /* @__PURE__ */ new Set();
|
|
124
|
+
await mkdir(staticDir, { recursive: true });
|
|
125
|
+
await copyDir(join(root, userOptions.build.outDir, userOptions.build.client), join(root, userOptions.build.outDir, userOptions.build.static));
|
|
126
|
+
const { cssFiles: indexCss } = collectManifestClientFiles({
|
|
127
|
+
manifest: clientManifest,
|
|
128
|
+
root,
|
|
129
|
+
pagePath: "index.html",
|
|
130
|
+
moduleBase: userOptions.moduleBase,
|
|
131
|
+
preserveModulesRoot: userOptions.build.preserveModulesRoot,
|
|
132
|
+
testClient: () => true
|
|
133
|
+
});
|
|
134
|
+
indexCss.forEach((css) => globalCss.add(css));
|
|
135
|
+
for (const route of pages) {
|
|
136
|
+
const routeFiles = files.urlMap.get(route);
|
|
137
|
+
if (routeFiles) {
|
|
138
|
+
const pageCss = collectManifestClientFiles({
|
|
139
|
+
manifest: serverManifest,
|
|
140
|
+
root,
|
|
141
|
+
pagePath: routeFiles.page,
|
|
142
|
+
moduleBase: userOptions.moduleBase,
|
|
143
|
+
preserveModulesRoot: userOptions.build.preserveModulesRoot,
|
|
144
|
+
onClientModule(path) {
|
|
145
|
+
const targetPath = join(root, userOptions.build.outDir, userOptions.build.server, path);
|
|
146
|
+
const destinationPath = join(root, userOptions.build.outDir, userOptions.build.static, path);
|
|
147
|
+
mkdirSync(dirname(destinationPath), { recursive: true });
|
|
148
|
+
copyFileSync(targetPath, destinationPath);
|
|
149
|
+
},
|
|
150
|
+
testClient: userOptions.autoDiscover.cssPattern,
|
|
151
|
+
testJson: userOptions.autoDiscover.jsonPattern
|
|
152
|
+
});
|
|
153
|
+
routeCssMap.set(route, /* @__PURE__ */ new Set([...globalCss, ...pageCss.cssFiles.keys()]));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const bootstrapModules = clientManifest["index.html"]?.file ? [clientManifest["index.html"].file.startsWith("/") ? clientManifest["index.html"].file.slice(1) : clientManifest["index.html"].file] : [];
|
|
157
|
+
const { failedRoutes, completedRoutes } = await renderPages(
|
|
158
|
+
pages,
|
|
159
|
+
files,
|
|
160
|
+
{
|
|
161
|
+
root,
|
|
162
|
+
outDir: userOptions.build.outDir,
|
|
163
|
+
htmlOutputPath: join(userOptions.build.outDir, userOptions.build.static, "index.html"),
|
|
164
|
+
pipableStreamOptions: {
|
|
165
|
+
bootstrapModules
|
|
166
|
+
},
|
|
167
|
+
moduleRootPath: join(root, userOptions.build.outDir, userOptions.build.static, userOptions.moduleBasePath),
|
|
168
|
+
moduleBasePath: userOptions.moduleBasePath,
|
|
169
|
+
moduleBaseURL: userOptions.moduleBaseURL,
|
|
170
|
+
inlineCss: userOptions.inlineCss,
|
|
171
|
+
pageExportName: userOptions.pageExportName,
|
|
172
|
+
propsExportName: userOptions.propsExportName,
|
|
173
|
+
Html: userOptions.Html,
|
|
174
|
+
CssCollector: userOptions.CssCollector,
|
|
175
|
+
cssFiles: [],
|
|
176
|
+
logger: createLogger(),
|
|
177
|
+
moduleBase: userOptions.moduleBase,
|
|
178
|
+
worker,
|
|
179
|
+
clientManifest,
|
|
180
|
+
serverManifest,
|
|
181
|
+
loader,
|
|
182
|
+
transformIndexHtml: htmlTransform,
|
|
183
|
+
onClientJSFile: (url) => {
|
|
184
|
+
if (!clientAssets.has(url)) {
|
|
185
|
+
const clientPath = join(root, userOptions.build.outDir, userOptions.build.client, url);
|
|
186
|
+
const targetPath = join(root, userOptions.build.outDir, userOptions.build.static, url);
|
|
187
|
+
mkdirSync(dirname(targetPath), { recursive: true });
|
|
188
|
+
copyFileSync(clientPath, targetPath);
|
|
189
|
+
clientAssets.add(url);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
);
|
|
194
|
+
if (failedRoutes.size > 0) {
|
|
195
|
+
console.error(
|
|
196
|
+
"[vite-plugin-react-server] Failed to render routes:",
|
|
197
|
+
failedRoutes
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
console.log(`Rendered ${completedRoutes.size} unique routes to ${join(userOptions.build.outDir, userOptions.build.static)}`);
|
|
201
|
+
await worker.terminate();
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export { reactStaticPlugin };
|
|
207
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../plugin/react-static/plugin.ts"],"sourcesContent":["import { join, dirname } from \"node:path\";\nimport { Worker } from \"node:worker_threads\";\nimport {\n type ResolvedConfig,\n type UserConfig,\n type Manifest,\n type IndexHtmlTransformHook,\n type Plugin as VitePlugin,\n createLogger,\n} from \"vite\";\nimport { checkFilesExist } from \"../checkFilesExist.js\";\nimport { resolveOptions } from \"../config/resolveOptions.js\";\nimport { resolvePages } from \"../config/resolvePages.js\";\nimport { resolveUserConfig } from \"../config/resolveUserConfig.js\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { createBuildLoader } from \"../loader/createBuildLoader.js\";\nimport type {\n BuildTiming,\n CheckFilesExistReturn,\n ReactStreamPluginMeta,\n ResolvedUserConfig,\n ResolvedUserOptions,\n} from \"../types.js\";\nimport { type StreamPluginOptions } from \"../types.js\";\nimport { createWorker } from \"../worker/createWorker.js\";\nimport { renderPages } from \"../worker/html/renderPages.js\";\nimport { mkdir } from \"node:fs/promises\";\nimport { collectManifestClientFiles } from \"../collect-manifest-client-files.js\";\nimport { mkdirSync, copyFileSync } from \"node:fs\";\nimport { copyDir } from \"../copy-dir.js\";\n\nlet resolvedConfig: ResolvedConfig | null = null;\nlet loader: ((id: string) => Promise<Record<string, any>>) | null = null;\nlet worker: Worker;\nlet htmlTransform: IndexHtmlTransformHook | null = null;\nlet clientAssets = new Set<string>();\n\nexport function reactStaticPlugin(options: StreamPluginOptions): VitePlugin<{\n meta: ReactStreamPluginMeta;\n}> {\n const timing: BuildTiming = {\n start: Date.now(),\n };\n\n let files: CheckFilesExistReturn;\n let root: string = process.cwd();\n let userConfig: ResolvedUserConfig;\n let userOptions: ResolvedUserOptions;\n let pages: string[];\n let serverManifest: Manifest = {};\n let clientManifest: Manifest = {};\n\n const resolvedOptions = resolveOptions(options, false);\n if (resolvedOptions.type === \"error\") {\n throw resolvedOptions.error;\n }\n userOptions = resolvedOptions.userOptions;\n if (\n userOptions.projectRoot != root &&\n typeof userOptions.projectRoot === \"string\" &&\n userOptions.projectRoot !== process.cwd() &&\n userOptions.projectRoot !== \"\"\n ) {\n root = userOptions.projectRoot;\n console.log(\n \"[vite:plugin-react-server] Root dir changed in plugin\",\n userOptions.projectRoot,\n root\n );\n }\n\n return {\n name: \"vite:plugin-react-server/static\",\n enforce: \"post\",\n api: {\n meta: { timing },\n },\n async config(config, configEnv): Promise<UserConfig> {\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 }\n const resolvePagesResult = await resolvePages(userOptions.build.pages);\n if (resolvePagesResult.type === \"error\") {\n throw resolvePagesResult.error;\n }\n pages = resolvePagesResult.pages;\n files = await checkFilesExist(pages, userOptions, root);\n\n const resolvedConfig = resolveUserConfig({\n isStatic: 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 timing.configResolved = Date.now();\n return {};\n },\n async buildStart() {\n timing.buildStart = Date.now();\n },\n async closeBundle() {\n timing.renderStart = Date.now();\n\n // Create the loader\n const serverManifestResult = tryManifest({\n root: root,\n outDir: join(userOptions.build.outDir, userOptions.build.server),\n ssrManifest: false,\n });\n if (serverManifestResult.type === \"error\") {\n throw serverManifestResult.error;\n }\n serverManifest = serverManifestResult.manifest;\n\n // Get the client manifest\n const clientManifestResult = tryManifest({\n root: root,\n outDir: join(userOptions.build.outDir, userOptions.build.client),\n ssrManifest: false,\n });\n\n if (clientManifestResult.type === \"error\") {\n throw clientManifestResult.error;\n }\n clientManifest = clientManifestResult.manifest;\n\n // Ensure static directory exists\n const staticDir = join(root, userOptions.build.outDir, userOptions.build.static);\n await mkdir(staticDir, { recursive: true });\n\n worker = await createWorker({\n projectRoot: root,\n workerPath: userOptions.htmlWorkerPath,\n condition: \"react-server\",\n reverseCondition: true,\n mode: (resolvedConfig?.mode ?? \"production\") as \"production\" | \"development\",\n });\n\n if (typeof loader !== \"function\") {\n loader = createBuildLoader({\n root: root,\n userConfig,\n userOptions,\n pluginContext: this,\n serverManifest,\n clientManifest,\n });\n }\n\n // Collect CSS files per route\n const routeCssMap = new Map<string, Set<string>>();\n const globalCss = new Set<string>();\n // copy whole client directory to static directory\n await mkdir(staticDir, { recursive: true });\n await copyDir(join(root, userOptions.build.outDir, userOptions.build.client), join(root, userOptions.build.outDir, userOptions.build.static));\n // Add global CSS from index.html - use client manifest\n const {cssFiles: indexCss} = collectManifestClientFiles({\n manifest: clientManifest,\n root: root,\n pagePath: 'index.html',\n moduleBase: userOptions.moduleBase,\n preserveModulesRoot: userOptions.build.preserveModulesRoot,\n testClient: ()=>true,\n });\n indexCss.forEach((css) => globalCss.add(css));\n\n // Add CSS for each route's page component - use server manifest\n for (const route of pages) {\n const routeFiles = files.urlMap.get(route);\n if (routeFiles) {\n const pageCss = collectManifestClientFiles({\n manifest: serverManifest,\n root: root,\n pagePath: routeFiles.page,\n moduleBase: userOptions.moduleBase,\n preserveModulesRoot: userOptions.build.preserveModulesRoot,\n onClientModule(path) {\n // copy the css file to the static directory\n const targetPath = join(root, userOptions.build.outDir, userOptions.build.server, path);\n const destinationPath = join(root, userOptions.build.outDir, userOptions.build.static, path);\n mkdirSync(dirname(destinationPath), { recursive: true });\n copyFileSync(targetPath, destinationPath);\n },\n testClient: userOptions.autoDiscover.cssPattern,\n testJson: userOptions.autoDiscover.jsonPattern,\n });\n routeCssMap.set(route, new Set([...globalCss, ...pageCss.cssFiles.keys()]));\n }\n }\n const bootstrapModules = clientManifest[\"index.html\"]?.file\n ? [clientManifest[\"index.html\"].file.startsWith(\"/\")\n ? clientManifest[\"index.html\"].file.slice(1)\n : clientManifest[\"index.html\"].file]\n : [];\n \n const { failedRoutes, completedRoutes} = await renderPages(\n pages,\n files,\n {\n root: root,\n outDir: userOptions.build.outDir,\n htmlOutputPath: join( userOptions.build.outDir, userOptions.build.static, \"index.html\"),\n pipableStreamOptions: {\n bootstrapModules: bootstrapModules,\n },\n moduleRootPath: join(root, userOptions.build.outDir, userOptions.build.static, userOptions.moduleBasePath),\n moduleBasePath: userOptions.moduleBasePath,\n moduleBaseURL: userOptions.moduleBaseURL,\n inlineCss: userOptions.inlineCss,\n pageExportName: userOptions.pageExportName,\n propsExportName: userOptions.propsExportName,\n Html: userOptions.Html,\n CssCollector: userOptions.CssCollector,\n cssFiles: [],\n logger: createLogger(),\n moduleBase: userOptions.moduleBase,\n worker,\n clientManifest,\n serverManifest,\n loader,\n transformIndexHtml: htmlTransform!,\n onClientJSFile: (url) => {\n if (!clientAssets.has(url)) {\n const clientPath = join(root, userOptions.build.outDir, userOptions.build.client, url);\n const targetPath = join(root, userOptions.build.outDir, userOptions.build.static, url);\n mkdirSync(dirname(targetPath), { recursive: true });\n copyFileSync(clientPath, targetPath);\n clientAssets.add(url);\n }\n }\n }\n );\n\n if (failedRoutes.size > 0) {\n console.error(\n \"[vite-plugin-react-server] Failed to render routes:\",\n failedRoutes\n );\n }\n console.log(`Rendered ${completedRoutes.size} unique routes to ${join(userOptions.build.outDir, userOptions.build.static)}`);\n await worker.terminate();\n },\n };\n}\n"],"names":["resolvedConfig"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../plugin/react-static/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG,EAEtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvePage.d.ts","sourceRoot":"","sources":["../../plugin/resolvePage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolvePage.d.ts","sourceRoot":"","sources":["../../plugin/resolvePage.ts"],"names":[],"mappings":"AAEA,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,iBAAiB,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,wBAAsB,WAAW,CAAC,EAChC,UAAU,EACV,IAAI,EACJ,GAAG,EACH,UAAU,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsDjD"}
|
|
@@ -3,12 +3,21 @@
|
|
|
3
3
|
* Copyright (c) Nico Brinkkemper
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
|
+
import { stashedPages } from './config/resolvePages.js';
|
|
7
|
+
|
|
6
8
|
async function resolvePage({
|
|
7
9
|
pageModule,
|
|
8
10
|
path,
|
|
9
11
|
url,
|
|
10
12
|
exportName
|
|
11
13
|
}) {
|
|
14
|
+
if (stashedPages.length > 0 && stashedPages.includes(path)) {
|
|
15
|
+
return {
|
|
16
|
+
type: "success",
|
|
17
|
+
key: path,
|
|
18
|
+
Page: pageModule
|
|
19
|
+
};
|
|
20
|
+
}
|
|
12
21
|
if (!pageModule) {
|
|
13
22
|
return {
|
|
14
23
|
type: "error",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvePage.js","sources":["../../plugin/resolvePage.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"resolvePage.js","sources":["../../plugin/resolvePage.ts"],"sourcesContent":["import { stashedPages } from \"./config/resolvePages.js\";\n\ntype ResolvePageOptions = {\n pageModule: Record<string, any>;\n path: string;\n url: string;\n exportName: string;\n};\n\ntype ResolvePageResult =\n | { type: \"success\"; key: string; Page: any }\n | { type: \"error\"; error: Error }\n | { type: \"skip\" };\n\nexport async function resolvePage({\n pageModule,\n path,\n url,\n exportName,\n}: ResolvePageOptions): Promise<ResolvePageResult> {\n if(stashedPages.length > 0 && stashedPages.includes(path)){\n return {\n type: \"success\",\n key: path,\n Page: pageModule,\n }\n }\n if (!pageModule) {\n return {\n type: \"error\",\n error: new Error(`pageModule is ${typeof pageModule}`),\n };\n }\n const keys =\n typeof pageModule === \"object\" && pageModule != null\n ? Object.keys(pageModule)\n : [];\n const found = keys.find((v) => v === exportName || v === url || v === path);\n if (found) {\n if (typeof pageModule[found] === \"function\") {\n return {\n type: \"success\",\n key: found,\n Page: pageModule[found],\n };\n } else {\n if (\n typeof pageModule === \"object\" &&\n pageModule != null &&\n Object.keys(pageModule).includes(\"type\")\n )\n return pageModule as ResolvePageResult;\n return {\n type: \"error\",\n [exportName]: () => found,\n error: pageModule[found][\"error\"],\n };\n }\n }\n if (keys.includes(\"type\")) return pageModule as ResolvePageResult;\n return {\n type: \"error\",\n error: new Error(\n `Could not find Page export \"${exportName}\" in \"${path}\". ${\n typeof pageModule === \"object\" && pageModule != null\n ? keys.length\n ? \"Available exports: \" + keys.join(\", \")\n : \"The object was defined but has no properties. \\\"\" + JSON.stringify(pageModule) + \"\\\"\"\n : \"typeof pageModule =\" + typeof pageModule\n }`,\n { cause: pageModule }\n ),\n };\n}\n"],"names":[],"mappings":";;;;;;;AAcA,eAAsB,WAAY,CAAA;AAAA,EAChC,UAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAmD,EAAA;AACjD,EAAA,IAAG,aAAa,MAAS,GAAA,CAAA,IAAK,YAAa,CAAA,QAAA,CAAS,IAAI,CAAE,EAAA;AACxD,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,SAAA;AAAA,MACN,GAAK,EAAA,IAAA;AAAA,MACL,IAAM,EAAA;AAAA,KACR;AAAA;AAEF,EAAA,IAAI,CAAC,UAAY,EAAA;AACf,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,OAAO,IAAI,KAAA,CAAM,CAAiB,cAAA,EAAA,OAAO,UAAU,CAAE,CAAA;AAAA,KACvD;AAAA;AAEF,EAAM,MAAA,IAAA,GACJ,OAAO,UAAA,KAAe,QAAY,IAAA,UAAA,IAAc,OAC5C,MAAO,CAAA,IAAA,CAAK,UAAU,CAAA,GACtB,EAAC;AACP,EAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,MAAM,UAAc,IAAA,CAAA,KAAM,GAAO,IAAA,CAAA,KAAM,IAAI,CAAA;AAC1E,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,IAAI,OAAO,UAAA,CAAW,KAAK,CAAA,KAAM,UAAY,EAAA;AAC3C,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,GAAK,EAAA,KAAA;AAAA,QACL,IAAA,EAAM,WAAW,KAAK;AAAA,OACxB;AAAA,KACK,MAAA;AACL,MACE,IAAA,OAAO,UAAe,KAAA,QAAA,IACtB,UAAc,IAAA,IAAA,IACd,OAAO,IAAK,CAAA,UAAU,CAAE,CAAA,QAAA,CAAS,MAAM,CAAA;AAEvC,QAAO,OAAA,UAAA;AACT,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,CAAC,UAAU,GAAG,MAAM,KAAA;AAAA,QACpB,KAAO,EAAA,UAAA,CAAW,KAAK,CAAA,CAAE,OAAO;AAAA,OAClC;AAAA;AACF;AAEF,EAAA,IAAI,IAAK,CAAA,QAAA,CAAS,MAAM,CAAA,EAAU,OAAA,UAAA;AAClC,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,OAAA;AAAA,IACN,OAAO,IAAI,KAAA;AAAA,MACT,CAAA,4BAAA,EAA+B,UAAU,CAAA,MAAA,EAAS,IAAI,CAAA,GAAA,EACpD,OAAO,UAAe,KAAA,QAAA,IAAY,UAAc,IAAA,IAAA,GAC5C,IAAK,CAAA,MAAA,GACH,wBAAwB,IAAK,CAAA,IAAA,CAAK,IAAI,CAAA,GACtC,iDAAqD,GAAA,IAAA,CAAK,SAAU,CAAA,UAAU,CAAI,GAAA,GAAA,GACpF,qBAAwB,GAAA,OAAO,UACrC,CAAA,CAAA;AAAA,MACA,EAAE,OAAO,UAAW;AAAA;AACtB,GACF;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../plugin/root.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,QAA0C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vite-plugin-react-server
|
|
3
|
+
* Copyright (c) Nico Brinkkemper
|
|
4
|
+
* MIT License
|
|
5
|
+
*/
|
|
6
|
+
import { dirname } from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
|
|
9
|
+
const pluginRoot = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
|
|
11
|
+
export { pluginRoot };
|
|
12
|
+
//# sourceMappingURL=root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.js","sources":["../../plugin/root.ts"],"sourcesContent":["import { dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nexport const pluginRoot = dirname(fileURLToPath(import.meta.url));\n\n"],"names":[],"mappings":";;;;;;;;AAEO,MAAM,UAAa,GAAA,OAAA,CAAQ,aAAc,CAAA,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/transformer/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/transformer/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwC,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAMlD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAkFzE"}
|
|
@@ -12,35 +12,45 @@ import { tryManifest } from '../helpers/tryManifest.js';
|
|
|
12
12
|
import { join } from 'node:path';
|
|
13
13
|
|
|
14
14
|
function reactTransformPlugin(options) {
|
|
15
|
-
|
|
16
|
-
let
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
root: resolvedOptions.userOptions.projectRoot,
|
|
20
|
-
preserveModulesRoot: undefined,
|
|
21
|
-
removeExtension: false
|
|
22
|
-
});
|
|
23
|
-
const clientManifestResult = tryManifest({
|
|
24
|
-
root: resolvedOptions.userOptions.projectRoot,
|
|
25
|
-
outDir: join(
|
|
26
|
-
resolvedOptions.userOptions.build.outDir,
|
|
27
|
-
resolvedOptions.userOptions.build.client
|
|
28
|
-
),
|
|
29
|
-
ssrManifest: false
|
|
30
|
-
});
|
|
15
|
+
let normalizer;
|
|
16
|
+
let clientManifest;
|
|
17
|
+
let isDev;
|
|
18
|
+
let userOptions;
|
|
31
19
|
return {
|
|
32
20
|
name: "vite:react-transform",
|
|
33
21
|
enforce: "pre",
|
|
34
22
|
// Run before Vite's transforms
|
|
35
23
|
config(config, configEnv) {
|
|
24
|
+
const resolvedOptionsResult = resolveOptions(
|
|
25
|
+
options,
|
|
26
|
+
config.build?.outDir?.startsWith(
|
|
27
|
+
join(options.build?.outDir ?? DEFAULT_CONFIG.BUILD.outDir, options.build?.client ?? DEFAULT_CONFIG.BUILD.client)
|
|
28
|
+
) ?? false
|
|
29
|
+
);
|
|
36
30
|
isDev = configEnv.mode === "development" && configEnv.command === "serve";
|
|
31
|
+
if (resolvedOptionsResult.type === "error") throw resolvedOptionsResult.error;
|
|
32
|
+
userOptions = resolvedOptionsResult.userOptions;
|
|
33
|
+
normalizer = createInputNormalizer({
|
|
34
|
+
root: resolvedOptionsResult.userOptions.projectRoot,
|
|
35
|
+
preserveModulesRoot: undefined,
|
|
36
|
+
removeExtension: false
|
|
37
|
+
});
|
|
37
38
|
},
|
|
38
39
|
async transform(code, id, options2) {
|
|
39
40
|
const ssr = options2?.ssr ?? false;
|
|
40
41
|
if (!ssr) return null;
|
|
41
42
|
if (!id.match(DEFAULT_CONFIG.FILE_REGEX)) return null;
|
|
42
|
-
if (!code.match('"use client"'))
|
|
43
|
-
|
|
43
|
+
if (!code.match('"use client"')) return null;
|
|
44
|
+
const clientManifestResult = tryManifest({
|
|
45
|
+
root: userOptions.projectRoot,
|
|
46
|
+
outDir: join(
|
|
47
|
+
userOptions.build.outDir,
|
|
48
|
+
userOptions.build.client
|
|
49
|
+
),
|
|
50
|
+
ssrManifest: false
|
|
51
|
+
});
|
|
52
|
+
if (clientManifestResult.type === "error") throw clientManifestResult.error;
|
|
53
|
+
clientManifest = clientManifestResult.manifest;
|
|
44
54
|
const [key, value] = normalizer(id);
|
|
45
55
|
const transformed = await transformModuleIfNeeded(
|
|
46
56
|
code,
|
|
@@ -67,12 +77,11 @@ function reactTransformPlugin(options) {
|
|
|
67
77
|
);
|
|
68
78
|
return null;
|
|
69
79
|
}
|
|
70
|
-
|
|
71
|
-
throw clientManifestResult.error;
|
|
72
|
-
}
|
|
73
|
-
const clientPath = clientManifestResult.manifest[key]?.file;
|
|
80
|
+
const clientPath = clientManifest[key]?.file;
|
|
74
81
|
if (!clientPath) {
|
|
75
|
-
console.warn(
|
|
82
|
+
console.warn(
|
|
83
|
+
`[vite-plugin-react-server] Could not find client path for ${value}. Ignoring.`
|
|
84
|
+
);
|
|
76
85
|
return null;
|
|
77
86
|
}
|
|
78
87
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../plugin/transformer/plugin.ts"],"sourcesContent":["import { resolveOptions } from \"../config/resolveOptions.js\";\nimport type { StreamPluginOptions } from \"../types.js\";\nimport { type Plugin } from \"vite\";\nimport { transformModuleIfNeeded } from \"../loader/react-loader.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { createInputNormalizer } from \"../helpers/inputNormalizer.js\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { join } from \"node:path\";\n/**\n * Plugin for transforming React Client Components.\n *\n * Core responsibilities:\n * 1. Detects \"use client\" directives\n * 2. Transforms client components for RSC boundaries\n * 3. Adds client reference metadata for RSC\n *\n * When a component is marked with \"use client\", it:\n * - Gets transformed into a client reference\n * - Maintains module ID for RSC boundaries\n * - Preserves class/function behavior\n *\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [\n * viteReactClientTransformPlugin({\n * projectRoot: process.cwd(),\n * })\n * ]\n * });\n * ```\n */\n\nexport function reactTransformPlugin(options: StreamPluginOptions): Plugin {\n
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../plugin/transformer/plugin.ts"],"sourcesContent":["import { resolveOptions } from \"../config/resolveOptions.js\";\nimport type { InputNormalizer, ResolvedUserOptions, StreamPluginOptions } from \"../types.js\";\nimport { type Manifest, type Plugin } from \"vite\";\nimport { transformModuleIfNeeded } from \"../loader/react-loader.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { createInputNormalizer } from \"../helpers/inputNormalizer.js\";\nimport { tryManifest } from \"../helpers/tryManifest.js\";\nimport { join } from \"node:path\";\n/**\n * Plugin for transforming React Client Components.\n *\n * Core responsibilities:\n * 1. Detects \"use client\" directives\n * 2. Transforms client components for RSC boundaries\n * 3. Adds client reference metadata for RSC\n *\n * When a component is marked with \"use client\", it:\n * - Gets transformed into a client reference\n * - Maintains module ID for RSC boundaries\n * - Preserves class/function behavior\n *\n * @example\n * ```ts\n * export default defineConfig({\n * plugins: [\n * viteReactClientTransformPlugin({\n * projectRoot: process.cwd(),\n * })\n * ]\n * });\n * ```\n */\n\nexport function reactTransformPlugin(options: StreamPluginOptions): Plugin {\n let normalizer: InputNormalizer;\n let clientManifest: Manifest;\n let isDev:boolean;\n let userOptions: ResolvedUserOptions\n return {\n name: \"vite:react-transform\",\n enforce: \"pre\", // Run before Vite's transforms\n config(config, configEnv) {\n const resolvedOptionsResult = resolveOptions(\n options,\n config.build?.outDir?.startsWith(\n join(options.build?.outDir ?? DEFAULT_CONFIG.BUILD.outDir, options.build?.client ?? DEFAULT_CONFIG.BUILD.client)\n ) ?? false\n );\n isDev = configEnv.mode === \"development\" && configEnv.command === \"serve\"\n if (resolvedOptionsResult.type === \"error\") throw resolvedOptionsResult.error;\n userOptions = resolvedOptionsResult.userOptions;\n normalizer = createInputNormalizer({\n root: resolvedOptionsResult.userOptions.projectRoot,\n preserveModulesRoot: undefined,\n removeExtension: false,\n });\n\n },\n async transform(code, id, options) {\n const ssr = options?.ssr ?? false;\n if (!ssr) return null;\n if (!id.match(DEFAULT_CONFIG.FILE_REGEX)) return null;\n if (!code.match('\"use client\"')) return null;\n \n // Get the client manifest\n const clientManifestResult = tryManifest({\n root: userOptions.projectRoot,\n outDir: join(\n userOptions.build.outDir,\n userOptions.build.client\n ),\n ssrManifest: false,\n });\n if (clientManifestResult.type === \"error\") throw clientManifestResult.error;\n clientManifest = clientManifestResult.manifest;\n const [key, value] = normalizer(id);\n const transformed = await transformModuleIfNeeded(\n code,\n id,\n // Pass null for nextLoad since we don't need module loading in the plugin\n null\n );\n if (!transformed) return null;\n if (isDev) {\n return {\n code: transformed,\n map: null,\n };\n }\n const moduleIdIndex = transformed.indexOf(value);\n if (moduleIdIndex === -1) {\n console.warn(\n `[vite-plugin-react-server] Could not find module id in transformed code. Ignoring.`,\n {\n code,\n id,\n transformed,\n }\n );\n return null;\n }\n const clientPath = clientManifest[key]?.file;\n\n if (!clientPath) {\n console.warn(\n `[vite-plugin-react-server] Could not find client path for ${value}. Ignoring.`\n );\n return null;\n }\n return {\n code: transformed.replace(key, clientPath),\n map: null,\n };\n },\n };\n}\n"],"names":["options"],"mappings":"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"}
|
|
@@ -1,19 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
projectRoot?: string;
|
|
3
|
-
moduleId?: (path: string, ssr: boolean) => string;
|
|
4
|
-
validateModuleId?: (moduleId: string) => boolean;
|
|
5
|
-
include?: string | RegExp | (string | RegExp)[];
|
|
6
|
-
exclude?: string | RegExp | (string | RegExp)[];
|
|
7
|
-
}
|
|
8
|
-
export interface TransformerOptions {
|
|
9
|
-
moduleId: (path: string, ssr: boolean) => string;
|
|
10
|
-
/**
|
|
11
|
-
* Optional validation function for module IDs
|
|
12
|
-
*/
|
|
13
|
-
validateModuleId?: (moduleId: string) => boolean;
|
|
14
|
-
/**
|
|
15
|
-
* The directory to use for the module IDs
|
|
16
|
-
*/
|
|
17
|
-
moduleBase: string;
|
|
18
|
-
}
|
|
1
|
+
export {};
|
|
19
2
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../plugin/transformer/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../plugin/transformer/types.ts"],"names":[],"mappings":""}
|
package/dist/plugin/types.d.ts
CHANGED
|
@@ -6,9 +6,7 @@ export type NormalizerInput = unknown;
|
|
|
6
6
|
export type InputNormalizer = (input: NormalizerInput) => [string, string];
|
|
7
7
|
export type InputNormalizerWorker = (input: NormalizerInput) => Promise<[string, string]>;
|
|
8
8
|
export type ResolvedUserConfig = Required<Pick<UserConfig, "root" | "mode" | "build" | "resolve">> & Omit<UserConfig, "root" | "mode" | "build" | "resolve"> & {
|
|
9
|
-
resolve:
|
|
10
|
-
alias: AliasOptions;
|
|
11
|
-
} & ResolveOptions;
|
|
9
|
+
resolve: ResolveOptions;
|
|
12
10
|
} & {
|
|
13
11
|
build: NonNullable<Required<Pick<BuildOptions, "target" | "outDir" | "assetsDir" | "ssr" | "ssrEmitAssets" | "ssrManifest" | "manifest" | "rollupOptions">>> & Omit<BuildOptions, "target" | "outDir" | "assetsDir" | "ssr" | "ssrEmitAssets" | "ssrManifest" | "manifest">;
|
|
14
12
|
};
|
|
@@ -23,8 +21,8 @@ export interface StreamPluginOptionsClient {
|
|
|
23
21
|
clientComponents?: AliasOptions;
|
|
24
22
|
cssFiles?: AliasOptions;
|
|
25
23
|
}
|
|
26
|
-
export type ResolvedUserOptions = Required<Pick<StreamPluginOptions, "moduleBase" | "moduleBasePath" | "moduleBaseURL" | "projectRoot" | "build" | "Page" | "props" | "Html" | "pageExportName" | "propsExportName" | "collectCss" | "collectAssets" | "htmlWorkerPath" | "rscWorkerPath" | "loaderPath" | "clientEntry" | "serverEntry" | "moduleBaseExceptions" | "pipableStreamOptions"
|
|
27
|
-
build: NonNullable<Required<StreamPluginOptions["build"]>>;
|
|
24
|
+
export type ResolvedUserOptions<InlineCSS extends boolean = boolean> = Required<Pick<StreamPluginOptions, "moduleBase" | "moduleBasePath" | "moduleBaseURL" | "projectRoot" | "build" | "Page" | "props" | "Html" | "CssCollector" | "pageExportName" | "propsExportName" | "collectCss" | "collectAssets" | "inlineCss" | "htmlWorkerPath" | "rscWorkerPath" | "loaderPath" | "clientEntry" | "serverEntry" | "moduleBaseExceptions" | "pipableStreamOptions">> & {
|
|
25
|
+
build: NonNullable<Required<StreamPluginOptions<InlineCSS>["build"]>>;
|
|
28
26
|
autoDiscover: {
|
|
29
27
|
modulePattern: (path: string) => boolean;
|
|
30
28
|
cssPattern: (path: string) => boolean;
|
|
@@ -44,7 +42,7 @@ export type createBuildConfigFn<C extends "react-client" | "react-server"> = (in
|
|
|
44
42
|
mode: "production" | "development" | "test";
|
|
45
43
|
inputNormalizer: C extends "react-server" ? InputNormalizerWorker : InputNormalizerWorker;
|
|
46
44
|
}) => C extends "react-server" ? Promise<InlineConfig> : Promise<InlineConfig>;
|
|
47
|
-
export interface StreamPluginOptions {
|
|
45
|
+
export interface StreamPluginOptions<InlineCSS extends boolean = boolean> {
|
|
48
46
|
projectRoot?: string;
|
|
49
47
|
moduleBase: string;
|
|
50
48
|
moduleBasePath?: string;
|
|
@@ -77,22 +75,37 @@ export interface StreamPluginOptions {
|
|
|
77
75
|
url: string;
|
|
78
76
|
children: React.ReactNode;
|
|
79
77
|
}>;
|
|
78
|
+
CssCollector?: InlineCSS extends true ? React.FC<React.PropsWithChildren<InlineCssCollectorProps>> : React.FC<React.PropsWithChildren<CssCollectorProps>>;
|
|
80
79
|
collectCss?: boolean;
|
|
81
80
|
collectAssets?: boolean;
|
|
81
|
+
inlineCss?: InlineCSS;
|
|
82
82
|
build?: BuildConfig;
|
|
83
83
|
moduleBaseExceptions?: string[];
|
|
84
84
|
pipableStreamOptions?: PipeableStreamOptions;
|
|
85
|
-
moduleId?: (id: string, ssr: boolean) => string;
|
|
86
85
|
}
|
|
87
|
-
export interface CreateHandlerOptions<T = any> {
|
|
86
|
+
export interface CreateHandlerOptions<T = any, InlineCSS extends boolean = boolean> {
|
|
87
|
+
root: string;
|
|
88
|
+
url: string;
|
|
89
|
+
route: string;
|
|
90
|
+
getCss: (id: string) => Promise<Map<string, string | CssContent>> | Map<string, string | CssContent>;
|
|
88
91
|
loader: (id: string) => Promise<T>;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
Html: NonNullable<StreamPluginOptions['Html']>;
|
|
93
|
+
CssCollector: InlineCSS extends true ? React.FC<React.PropsWithChildren<InlineCssCollectorProps>> : React.FC<React.PropsWithChildren<CssCollectorProps>>;
|
|
94
|
+
inlineCss: InlineCSS;
|
|
95
|
+
propsPath?: string;
|
|
96
|
+
pagePath?: string;
|
|
97
|
+
pageExportName: string;
|
|
98
|
+
propsExportName: string;
|
|
99
|
+
moduleBase: string;
|
|
100
|
+
preserveModulesRoot?: boolean | undefined;
|
|
101
|
+
moduleBasePath: string;
|
|
102
|
+
moduleRootPath: string;
|
|
103
|
+
moduleBaseURL: string;
|
|
104
|
+
cssFiles: (string | CssContent)[];
|
|
105
|
+
cssModules?: Map<string, string | CssContent> | undefined;
|
|
93
106
|
onCssFile?: (path: string, parentUrl: string) => void;
|
|
94
|
-
logger
|
|
95
|
-
pipableStreamOptions
|
|
107
|
+
logger: import("vite").Logger;
|
|
108
|
+
pipableStreamOptions: PipeableStreamOptions;
|
|
96
109
|
}
|
|
97
110
|
export type ModuleLoader = (url: string, context?: any, defaultLoad?: any) => Promise<Record<string, any>>;
|
|
98
111
|
export interface BaseProps {
|
|
@@ -143,7 +156,7 @@ export interface BuildOutput {
|
|
|
143
156
|
ext?: string;
|
|
144
157
|
}
|
|
145
158
|
export interface BuildConfig {
|
|
146
|
-
pages: string[] | (() => Promise<string[]> | string[])
|
|
159
|
+
pages: string[] | (() => Promise<string[]> | string[]) | Promise<string[]>;
|
|
147
160
|
assetsDir?: string;
|
|
148
161
|
client?: string;
|
|
149
162
|
server?: string;
|
|
@@ -258,4 +271,46 @@ export type HtmlProps = {
|
|
|
258
271
|
url: string;
|
|
259
272
|
cssFiles: string[];
|
|
260
273
|
};
|
|
274
|
+
export interface PageAsset {
|
|
275
|
+
type: 'css' | 'js';
|
|
276
|
+
path: string;
|
|
277
|
+
parentUrl: string;
|
|
278
|
+
}
|
|
279
|
+
export interface PageData {
|
|
280
|
+
route: string;
|
|
281
|
+
clientComponents?: string[];
|
|
282
|
+
html?: {
|
|
283
|
+
raw: string;
|
|
284
|
+
transformed?: string;
|
|
285
|
+
assets: PageAsset[];
|
|
286
|
+
};
|
|
287
|
+
rsc?: {
|
|
288
|
+
content: string;
|
|
289
|
+
modules: Array<[string, string]>;
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
export interface CssContent {
|
|
293
|
+
type?: string;
|
|
294
|
+
content: string;
|
|
295
|
+
key?: string;
|
|
296
|
+
path: string;
|
|
297
|
+
}
|
|
298
|
+
export interface InlineCssCollectorProps {
|
|
299
|
+
cssFiles: CssContent[];
|
|
300
|
+
root: string;
|
|
301
|
+
moduleBaseURL: string;
|
|
302
|
+
moduleBasePath: string;
|
|
303
|
+
moduleRootPath: string;
|
|
304
|
+
route: string;
|
|
305
|
+
children?: React.ReactNode;
|
|
306
|
+
}
|
|
307
|
+
export interface CssCollectorProps {
|
|
308
|
+
cssFiles: CssContent[];
|
|
309
|
+
root: string;
|
|
310
|
+
moduleBaseURL: string;
|
|
311
|
+
moduleBasePath: string;
|
|
312
|
+
moduleRootPath: string;
|
|
313
|
+
route: string;
|
|
314
|
+
children?: React.ReactNode;
|
|
315
|
+
}
|
|
261
316
|
//# sourceMappingURL=types.d.ts.map
|