vite-plugin-react-server 0.3.19 → 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 +219 -141
- package/dist/package.json +13 -6
- package/dist/plugin/collect-manifest-client-files.d.ts.map +1 -1
- package/dist/plugin/collect-manifest-client-files.js +25 -11
- package/dist/plugin/collect-manifest-client-files.js.map +1 -1
- package/dist/plugin/components.d.ts +3 -13
- package/dist/plugin/components.d.ts.map +1 -1
- package/dist/plugin/components.js +3 -54
- package/dist/plugin/config/defaults.d.ts +9 -2
- package/dist/plugin/config/defaults.d.ts.map +1 -1
- package/dist/plugin/config/defaults.js +3 -2
- package/dist/plugin/config/defaults.js.map +1 -1
- 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 +6 -0
- package/dist/plugin/config/resolveOptions.js.map +1 -1
- package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
- package/dist/plugin/config/resolveUserConfig.js +178 -149
- package/dist/plugin/config/resolveUserConfig.js.map +1 -1
- 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 +3 -8
- package/dist/plugin/helpers/createHandler.d.ts.map +1 -1
- package/dist/plugin/helpers/createHandler.js +52 -55
- package/dist/plugin/helpers/createHandler.js.map +1 -1
- package/dist/plugin/helpers/createRscStream.d.ts +14 -4
- package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
- package/dist/plugin/helpers/createRscStream.js +25 -16
- package/dist/plugin/helpers/createRscStream.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/react-client/plugin.d.ts.map +1 -1
- package/dist/plugin/react-client/plugin.js +3 -2
- package/dist/plugin/react-client/plugin.js.map +1 -1
- package/dist/plugin/react-server/plugin.d.ts.map +1 -1
- package/dist/plugin/react-server/plugin.js +47 -16
- package/dist/plugin/react-server/plugin.js.map +1 -1
- package/dist/plugin/react-static/plugin.d.ts.map +1 -1
- package/dist/plugin/react-static/plugin.js +20 -12
- package/dist/plugin/react-static/plugin.js.map +1 -1
- package/dist/plugin/react-static/types.d.ts +2 -0
- package/dist/plugin/react-static/types.d.ts.map +1 -0
- package/dist/plugin/react-static/types.js +1 -0
- package/dist/plugin/types.d.ts +48 -11
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
- package/dist/plugin/worker/html/messageHandler.js +4 -1
- package/dist/plugin/worker/html/messageHandler.js.map +1 -1
- package/dist/plugin/worker/html/renderPages.d.ts +8 -25
- package/dist/plugin/worker/html/renderPages.d.ts.map +1 -1
- package/dist/plugin/worker/html/renderPages.js +61 -44
- 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 +37 -22
- package/dist/plugin/worker/rsc/messageHandler.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 +12 -4
- package/plugin/collect-manifest-client-files.ts +25 -10
- package/plugin/components.ts +3 -0
- package/plugin/config/defaults.tsx +10 -9
- package/plugin/config/resolveOptions.ts +10 -5
- package/plugin/config/resolveUserConfig.ts +218 -177
- package/plugin/css-collector-inline.tsx +60 -0
- package/plugin/css-collector.tsx +62 -0
- package/plugin/helpers/createHandler.ts +73 -83
- package/plugin/helpers/createRscStream.ts +49 -21
- package/plugin/html.tsx +9 -0
- package/plugin/react-client/plugin.ts +3 -2
- package/plugin/react-server/plugin.ts +58 -22
- package/plugin/react-static/plugin.ts +20 -11
- package/plugin/react-static/types.ts +3 -0
- package/plugin/types.ts +53 -11
- package/plugin/worker/html/messageHandler.ts +5 -2
- package/plugin/worker/html/renderPages.ts +82 -78
- package/plugin/worker/rsc/messageHandler.tsx +41 -26
- package/plugin/worker/types.ts +3 -0
- package/dist/plugin/components.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/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/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 -93
- 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 -75
- package/plugin/components.tsx +0 -59
- package/plugin/getEnv.ts +0 -135
- package/plugin/module-graph.ts +0 -48
- package/plugin/worker/html/plugin.ts +0 -100
- package/plugin/worker/plugin.ts +0 -26
- package/plugin/worker/rsc/plugin.ts +0 -83
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
import { createInputNormalizer } from '../helpers/inputNormalizer.js';
|
|
7
7
|
import { join } from 'path';
|
|
8
8
|
import { globSync } from 'fs';
|
|
9
|
+
import { pluginRoot } from '../root.js';
|
|
9
10
|
|
|
11
|
+
let stashedUserConfig = {};
|
|
10
12
|
function resolveUserConfig({
|
|
11
13
|
isClient = false,
|
|
12
14
|
isStatic = false,
|
|
@@ -15,172 +17,199 @@ function resolveUserConfig({
|
|
|
15
17
|
userOptions,
|
|
16
18
|
files
|
|
17
19
|
}) {
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
if (isStatic) {
|
|
21
|
+
const serverConfig = stashedUserConfig[`${userOptions.build.server}-ssr`];
|
|
22
|
+
if (!serverConfig) {
|
|
23
|
+
return {
|
|
24
|
+
type: "error",
|
|
25
|
+
error: new Error("Static plugin should run after the server plugin")
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
type: "success",
|
|
30
|
+
userConfig: serverConfig
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const envDir = isStatic ? userOptions.build.static : isClient ? userOptions.build.client : userOptions.build.server;
|
|
34
|
+
const ssr = typeof config.build?.ssr === "boolean" ? config.build?.ssr : configEnv.isSsrBuild || !isClient && !isStatic;
|
|
35
|
+
const envId = `${envDir}${ssr ? "-ssr" : ""}`;
|
|
36
|
+
if (stashedUserConfig[envId]) {
|
|
37
|
+
console.log(`[RSC] Using cached config for ${envId}`);
|
|
38
|
+
return {
|
|
39
|
+
type: "success",
|
|
40
|
+
userConfig: stashedUserConfig[envId]
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const root = config.root ?? userOptions.projectRoot ?? process.cwd();
|
|
44
|
+
const normalizer = createInputNormalizer({
|
|
45
|
+
root,
|
|
46
|
+
preserveModulesRoot: userOptions.build.preserveModulesRoot ? userOptions.moduleBase : undefined,
|
|
47
|
+
removeExtension: true
|
|
48
|
+
});
|
|
49
|
+
const serverEntry = userOptions.serverEntry ? Object.fromEntries([
|
|
50
|
+
normalizer([userOptions.serverEntry, userOptions.serverEntry])
|
|
51
|
+
]) : null;
|
|
52
|
+
const clientEntry = userOptions.clientEntry ? Object.fromEntries(
|
|
53
|
+
[
|
|
54
|
+
[userOptions.clientEntry, userOptions.clientEntry],
|
|
55
|
+
["index.html", "index.html"]
|
|
56
|
+
].map(normalizer)
|
|
57
|
+
) : { "index.html": "index.html" };
|
|
58
|
+
const autoDiscoveredClientFiles = (inputs2) => {
|
|
59
|
+
const allFiles = globSync(`**/*.client.*`, {
|
|
60
|
+
cwd: join(root, userOptions.moduleBase)
|
|
24
61
|
});
|
|
25
|
-
const
|
|
26
|
-
normalizer(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
[
|
|
31
|
-
["index.html", "index.html"]
|
|
32
|
-
].map(normalizer)
|
|
33
|
-
) : { "index.html": "index.html" };
|
|
34
|
-
const autoDiscoveredClientFiles = (inputs2) => {
|
|
35
|
-
const allFiles = globSync(`**/*.client.*`, {
|
|
36
|
-
cwd: join(root, userOptions.moduleBase)
|
|
37
|
-
});
|
|
38
|
-
for (const file of allFiles) {
|
|
39
|
-
const [key, value] = normalizer(join(userOptions.moduleBase, file));
|
|
40
|
-
if (!inputs2[key]) {
|
|
41
|
-
inputs2[key] = value;
|
|
42
|
-
} else {
|
|
43
|
-
console.warn(`[RSC] Client file already exists: ${key}`);
|
|
44
|
-
}
|
|
62
|
+
for (const file of allFiles) {
|
|
63
|
+
const [key, value] = normalizer(join(userOptions.moduleBase, file));
|
|
64
|
+
if (!inputs2[key]) {
|
|
65
|
+
inputs2[key] = value;
|
|
66
|
+
} else {
|
|
67
|
+
console.warn(`[RSC] Client file already exists: ${key}`);
|
|
45
68
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
69
|
+
}
|
|
70
|
+
return inputs2;
|
|
71
|
+
};
|
|
72
|
+
const autoDiscoveredServerFiles = (inputs2) => {
|
|
73
|
+
const allFiles = globSync(`${userOptions.moduleBase}/**/*.server.*`, {
|
|
74
|
+
cwd: join(root, userOptions.moduleBase)
|
|
75
|
+
});
|
|
76
|
+
for (const file of allFiles) {
|
|
77
|
+
const [key, value] = normalizer(join(userOptions.moduleBase, file));
|
|
78
|
+
if (!inputs2[key]) {
|
|
79
|
+
inputs2[key] = value;
|
|
80
|
+
} else {
|
|
81
|
+
console.warn(`[RSC] Server file already exists: ${key}`);
|
|
59
82
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
83
|
+
}
|
|
84
|
+
return inputs2;
|
|
85
|
+
};
|
|
86
|
+
const customWorkerFiles = (inputs2) => {
|
|
87
|
+
const customRscWorker = !userOptions.rscWorkerPath.startsWith(pluginRoot);
|
|
88
|
+
const customHtmlWorker = !userOptions.htmlWorkerPath.startsWith(pluginRoot);
|
|
89
|
+
if (customRscWorker && !inputs2["rsc-worker"]) {
|
|
90
|
+
inputs2["rsc-worker"] = userOptions.rscWorkerPath;
|
|
91
|
+
}
|
|
92
|
+
if (customHtmlWorker && !inputs2["html-worker"]) {
|
|
93
|
+
inputs2["html-worker"] = userOptions.htmlWorkerPath;
|
|
94
|
+
}
|
|
95
|
+
return inputs2;
|
|
96
|
+
};
|
|
97
|
+
const autoDiscoveredFiles = (inputs2) => {
|
|
98
|
+
if (!files) return inputs2;
|
|
99
|
+
for (const [key, value] of files.pageMap) {
|
|
100
|
+
if (!inputs2[key]) {
|
|
101
|
+
inputs2[key] = value;
|
|
102
|
+
} else {
|
|
103
|
+
console.warn(`[RSC] Page file already exists: ${key}`);
|
|
70
104
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
105
|
+
}
|
|
106
|
+
for (const [key, value] of files.propsMap) {
|
|
107
|
+
if (!inputs2[key]) {
|
|
108
|
+
inputs2[key] = value;
|
|
109
|
+
} else {
|
|
110
|
+
console.warn(`[RSC] Props file already exists: ${key}`);
|
|
77
111
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
112
|
+
}
|
|
113
|
+
return inputs2;
|
|
114
|
+
};
|
|
115
|
+
let inputs = isClient ? autoDiscoveredClientFiles(clientEntry) : customWorkerFiles(autoDiscoveredServerFiles(autoDiscoveredFiles(serverEntry ?? {})));
|
|
116
|
+
const pluginOutput = {
|
|
117
|
+
preserveModules: !isClient,
|
|
118
|
+
preserveModulesRoot: userOptions.build.preserveModulesRoot ? userOptions.moduleBase : undefined,
|
|
119
|
+
entryFileNames: userOptions.build.entryFile,
|
|
120
|
+
assetFileNames: userOptions.build.assetFile,
|
|
121
|
+
chunkFileNames: userOptions.build.chunkFile,
|
|
122
|
+
format: "esm",
|
|
123
|
+
exports: "named",
|
|
124
|
+
hoistTransitiveImports: false,
|
|
125
|
+
generatedCode: {
|
|
126
|
+
constBindings: true,
|
|
127
|
+
objectShorthand: true
|
|
128
|
+
},
|
|
129
|
+
interop: "auto"
|
|
130
|
+
};
|
|
131
|
+
let newOutput = Array.isArray(config.build?.rollupOptions?.output) ? [...config.build?.rollupOptions?.output, pluginOutput] : typeof config.build?.rollupOptions?.output === "object" && config.build?.rollupOptions?.output !== null ? [config.build?.rollupOptions?.output, pluginOutput] : pluginOutput;
|
|
132
|
+
if (isClient) {
|
|
133
|
+
stashedUserConfig[envId] = {
|
|
134
|
+
...config,
|
|
135
|
+
root,
|
|
136
|
+
mode: configEnv.mode ?? configEnv.command === "build" ? "production" : "development",
|
|
137
|
+
resolve: {
|
|
138
|
+
external: ["react", "react-dom"],
|
|
139
|
+
alias: {}
|
|
94
140
|
},
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
type: "success",
|
|
101
|
-
userConfig: {
|
|
102
|
-
...config,
|
|
103
|
-
root,
|
|
104
|
-
mode: configEnv.mode ?? configEnv.command === "build" ? "production" : "development",
|
|
105
|
-
resolve: {
|
|
106
|
-
external: ["react", "react-dom"],
|
|
107
|
-
alias: {}
|
|
108
|
-
},
|
|
109
|
-
ssr: {
|
|
110
|
-
target: "node",
|
|
111
|
-
external: [
|
|
112
|
-
"react",
|
|
113
|
-
"react-dom",
|
|
114
|
-
"react-server-dom-esm/client.browser"
|
|
115
|
-
],
|
|
116
|
-
resolve: {
|
|
117
|
-
externalConditions: ["react-server"]
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
// client build options
|
|
121
|
-
build: {
|
|
122
|
-
...config.build,
|
|
123
|
-
emptyOutDir: config.build?.emptyOutDir ?? true,
|
|
124
|
-
outDir: join(userOptions.build.outDir, envDir),
|
|
125
|
-
assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,
|
|
126
|
-
copyPublicDir: config.build?.copyPublicDir ?? true,
|
|
127
|
-
// modern browsers
|
|
128
|
-
target: ["esnext"],
|
|
129
|
-
minify: true,
|
|
130
|
-
ssr: typeof config.build?.ssr === "boolean" ? config.build?.ssr : configEnv.isSsrBuild ?? false,
|
|
131
|
-
manifest: config.build?.manifest ?? `.vite/manifest.json`,
|
|
132
|
-
ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,
|
|
133
|
-
ssrEmitAssets: config.build?.ssrEmitAssets ?? true,
|
|
134
|
-
rollupOptions: {
|
|
135
|
-
...config.build?.rollupOptions,
|
|
136
|
-
input: inputs,
|
|
137
|
-
output: newOutput,
|
|
138
|
-
preserveEntrySignatures: "exports-only"
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
+
ssr: {
|
|
142
|
+
target: "node",
|
|
143
|
+
external: ["react", "react-dom", "react-server-dom-esm/client.browser"],
|
|
144
|
+
resolve: {
|
|
145
|
+
externalConditions: ["react-server"]
|
|
141
146
|
}
|
|
142
|
-
}
|
|
143
|
-
|
|
147
|
+
},
|
|
148
|
+
// client build options
|
|
149
|
+
build: {
|
|
150
|
+
...config.build,
|
|
151
|
+
emptyOutDir: config.build?.emptyOutDir ?? true,
|
|
152
|
+
outDir: join(userOptions.build.outDir, envDir),
|
|
153
|
+
assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,
|
|
154
|
+
copyPublicDir: config.build?.copyPublicDir ?? true,
|
|
155
|
+
// modern browsers
|
|
156
|
+
target: ["esnext"],
|
|
157
|
+
minify: true,
|
|
158
|
+
ssr,
|
|
159
|
+
manifest: config.build?.manifest ?? `.vite/manifest.json`,
|
|
160
|
+
ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,
|
|
161
|
+
ssrEmitAssets: config.build?.ssrEmitAssets ?? true,
|
|
162
|
+
rollupOptions: {
|
|
163
|
+
...config.build?.rollupOptions,
|
|
164
|
+
input: inputs,
|
|
165
|
+
output: newOutput,
|
|
166
|
+
preserveEntrySignatures: "exports-only"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
} else {
|
|
144
171
|
if (configEnv.isSsrBuild === false) {
|
|
145
172
|
configEnv.isSsrBuild = true;
|
|
146
173
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
preserveEntrySignatures: config.build?.rollupOptions?.preserveEntrySignatures ?? "strict",
|
|
173
|
-
output: newOutput
|
|
174
|
-
}
|
|
174
|
+
stashedUserConfig[envId] = {
|
|
175
|
+
...config,
|
|
176
|
+
root,
|
|
177
|
+
mode: configEnv.mode ?? configEnv.command === "build" ? "production" : "development",
|
|
178
|
+
resolve: {
|
|
179
|
+
externalConditions: ["react-server"]
|
|
180
|
+
},
|
|
181
|
+
// server build options
|
|
182
|
+
build: {
|
|
183
|
+
...config.build,
|
|
184
|
+
emptyOutDir: config.build?.emptyOutDir ?? true,
|
|
185
|
+
outDir: join(userOptions.build.outDir, envDir),
|
|
186
|
+
target: config.build?.target ?? "node18",
|
|
187
|
+
minify: config.build?.minify ?? true,
|
|
188
|
+
ssr,
|
|
189
|
+
manifest: config.build?.manifest ?? `.vite/manifest.json`,
|
|
190
|
+
ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,
|
|
191
|
+
ssrEmitAssets: config.build?.ssrEmitAssets ?? true,
|
|
192
|
+
copyPublicDir: config.build?.copyPublicDir ?? isStatic,
|
|
193
|
+
assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,
|
|
194
|
+
rollupOptions: {
|
|
195
|
+
...config.build?.rollupOptions,
|
|
196
|
+
input: inputs,
|
|
197
|
+
preserveEntrySignatures: config.build?.rollupOptions?.preserveEntrySignatures ?? "strict",
|
|
198
|
+
output: newOutput
|
|
175
199
|
}
|
|
176
200
|
}
|
|
177
201
|
};
|
|
178
|
-
}
|
|
202
|
+
}
|
|
203
|
+
if (!stashedUserConfig[envId]) {
|
|
179
204
|
return {
|
|
180
205
|
type: "error",
|
|
181
|
-
error:
|
|
206
|
+
error: new Error("Failed to resolve config")
|
|
182
207
|
};
|
|
183
208
|
}
|
|
209
|
+
return {
|
|
210
|
+
type: "success",
|
|
211
|
+
userConfig: stashedUserConfig[envId]
|
|
212
|
+
};
|
|
184
213
|
}
|
|
185
214
|
|
|
186
215
|
export { resolveUserConfig };
|
|
@@ -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 isStatic?: 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 isStatic = 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 = isStatic ? userOptions.build.static : 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 let 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 plugin build options (client plugin still outputs server files)\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 copyPublicDir: config.build?.copyPublicDir ?? true,\n // modern browsers\n target: [\"esnext\"],\n minify: true,\n ssr: typeof config.build?.ssr === \"boolean\" ? config.build?.ssr : configEnv.isSsrBuild ?? false,\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 if(configEnv.isSsrBuild === false) {\n configEnv.isSsrBuild = true\n }\n return {\n type: \"success\",\n userConfig: {\n ...config,\n root: root,\n mode: configEnv.mode ?? configEnv.command === \"build\" ? \"production\" : \"development\",\n resolve: {\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: typeof config.build?.ssr === \"boolean\" ? 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 copyPublicDir: config.build?.copyPublicDir ?? isStatic,\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\";\nimport { pluginRoot } from \"../root.js\";\n\nlet stashedUserConfig: Record<string, ResolvedUserConfig | null> = {};\n\nexport type ResolveUserConfigProps = {\n isClient?: boolean;\n isStatic?: 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 isStatic = false,\n config,\n configEnv,\n userOptions,\n files,\n}: ResolveUserConfigProps): ResolveUserConfigReturn {\n if(isStatic) {\n const serverConfig = stashedUserConfig[`${userOptions.build.server}-ssr`]\n if(!serverConfig) {\n return {\n type: \"error\",\n error: new Error(\"Static plugin should run after the server plugin\"),\n }\n }\n return {\n type: \"success\",\n userConfig: serverConfig,\n }\n }\n const envDir = isStatic\n ? userOptions.build.static\n : isClient\n ? userOptions.build.client\n : userOptions.build.server;\n const ssr =\n typeof config.build?.ssr === \"boolean\"\n ? config.build?.ssr\n : configEnv.isSsrBuild || (!isClient && !isStatic);\n const envId = `${envDir}${ssr ? \"-ssr\" : \"\"}`;\n if (stashedUserConfig[envId]) {\n console.log(`[RSC] Using cached config for ${envId}`);\n return {\n type: \"success\",\n userConfig: stashedUserConfig[envId],\n };\n }\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 customWorkerFiles = (inputs: Record<string, string>) => {\n const customRscWorker = !userOptions.rscWorkerPath.startsWith(pluginRoot)\n const customHtmlWorker = !userOptions.htmlWorkerPath.startsWith(pluginRoot)\n if(customRscWorker && !inputs['rsc-worker']) {\n inputs['rsc-worker'] = userOptions.rscWorkerPath\n }\n if(customHtmlWorker && !inputs['html-worker']) {\n inputs['html-worker'] = userOptions.htmlWorkerPath\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 : customWorkerFiles(autoDiscoveredServerFiles(autoDiscoveredFiles(serverEntry ?? {})));\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 let 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 plugin build options (client plugin still outputs server files)\n stashedUserConfig[envId] = {\n ...config,\n root: root,\n mode:\n configEnv.mode ?? configEnv.command === \"build\"\n ? \"production\"\n : \"development\",\n resolve: {\n external: [\"react\", \"react-dom\"],\n alias: {},\n },\n ssr: {\n target: \"node\",\n external: [\"react\", \"react-dom\", \"react-server-dom-esm/client.browser\"],\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 copyPublicDir: config.build?.copyPublicDir ?? true,\n // modern browsers\n target: [\"esnext\"],\n minify: true,\n ssr: ssr,\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 } else {\n // server build options\n if (configEnv.isSsrBuild === false) {\n configEnv.isSsrBuild = true;\n }\n stashedUserConfig[envId] = {\n ...config,\n root: root,\n mode:\n configEnv.mode ?? configEnv.command === \"build\"\n ? \"production\"\n : \"development\",\n resolve: {\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: ssr,\n manifest: config.build?.manifest ?? `.vite/manifest.json`,\n ssrManifest: config.build?.ssrManifest ?? `.vite/ssr-manifest.json`,\n ssrEmitAssets: config.build?.ssrEmitAssets ?? true,\n copyPublicDir: config.build?.copyPublicDir ?? isStatic,\n assetsDir: config.build?.assetsDir ?? userOptions.build.assetsDir,\n rollupOptions: {\n ...config.build?.rollupOptions,\n input: inputs,\n preserveEntrySignatures:\n config.build?.rollupOptions?.preserveEntrySignatures ?? \"strict\",\n output: newOutput,\n },\n },\n };\n }\n if (!stashedUserConfig[envId]) {\n return {\n type: \"error\",\n error: new Error(\"Failed to resolve config\"),\n };\n }\n return {\n type: \"success\",\n userConfig: stashedUserConfig[envId],\n };\n}\n"],"names":["inputs"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { InlineCssCollectorProps } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* A component that inlines pre-transformed CSS content.
|
|
5
|
+
* Expects cssFiles to be an array of CssContent objects with the content already loaded.
|
|
6
|
+
*/
|
|
7
|
+
export declare function InlineCssCollector({ children, cssFiles, moduleRootPath, }: InlineCssCollectorProps): React.FunctionComponentElement<{
|
|
8
|
+
children?: React.ReactNode | undefined;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=css-collector-inline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-collector-inline.d.ts","sourceRoot":"","sources":["../../plugin/css-collector-inline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAG,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAU3D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,cAAc,GACf,EAAE,uBAAuB;;GAuCzB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vite-plugin-react-server
|
|
3
|
+
* Copyright (c) Nico Brinkkemper
|
|
4
|
+
* MIT License
|
|
5
|
+
*/
|
|
6
|
+
import React__default from 'react';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { readFileSync } from 'node:fs';
|
|
9
|
+
|
|
10
|
+
function InlineCssCollector({
|
|
11
|
+
children,
|
|
12
|
+
cssFiles,
|
|
13
|
+
moduleRootPath
|
|
14
|
+
}) {
|
|
15
|
+
return React__default.createElement(
|
|
16
|
+
React__default.Fragment,
|
|
17
|
+
null,
|
|
18
|
+
cssFiles.map((file, index) => {
|
|
19
|
+
if (typeof file === "string") {
|
|
20
|
+
let filePath = file;
|
|
21
|
+
if (process.env["NODE_ENV"] === "development") {
|
|
22
|
+
return React__default.createElement("link", {
|
|
23
|
+
key: file,
|
|
24
|
+
rel: "stylesheet",
|
|
25
|
+
href: filePath
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return React__default.createElement(
|
|
29
|
+
"style",
|
|
30
|
+
{
|
|
31
|
+
key: file,
|
|
32
|
+
type: "text/css"
|
|
33
|
+
},
|
|
34
|
+
readFileSync(join(moduleRootPath, filePath), "utf-8")
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
const { type, content, key, path } = file;
|
|
38
|
+
return React__default.createElement(
|
|
39
|
+
"style",
|
|
40
|
+
{
|
|
41
|
+
key: key ?? path ?? index,
|
|
42
|
+
type: type ?? "text/css",
|
|
43
|
+
...process.env["NODE_ENV"] === "development" && {
|
|
44
|
+
"data-vite-dev-id": join(moduleRootPath, path)
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
content
|
|
48
|
+
);
|
|
49
|
+
}),
|
|
50
|
+
children
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { InlineCssCollector };
|
|
55
|
+
//# sourceMappingURL=css-collector-inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-collector-inline.js","sources":["../../plugin/css-collector-inline.tsx"],"sourcesContent":["import React from \"react\";\nimport { join } from \"node:path\";\nimport type { InlineCssCollectorProps } from \"./types.js\";\nimport { readFileSync } from \"node:fs\";\n\ninterface CssContent {\n type?: string;\n content: string;\n key?: string;\n path: string;\n}\n\n/**\n * A component that inlines pre-transformed CSS content.\n * Expects cssFiles to be an array of CssContent objects with the content already loaded.\n */\nexport function InlineCssCollector({\n children,\n cssFiles,\n moduleRootPath,\n}: InlineCssCollectorProps) {\n return React.createElement(\n React.Fragment,\n null,\n cssFiles.map((file, index) => {\n if (typeof file === \"string\") {\n let filePath = file as string;\n if(process.env[\"NODE_ENV\"] === \"development\") {\n return React.createElement(\"link\", {\n key: file,\n rel: \"stylesheet\",\n href: filePath,\n });\n }\n return React.createElement(\n \"style\",\n {\n key: file,\n type: \"text/css\",\n },\n readFileSync(join(moduleRootPath, filePath), \"utf-8\")\n );\n }\n\n const { type, content, key, path } = file as CssContent;\n return React.createElement(\n \"style\",\n {\n key: key ?? path ?? index,\n type: type ?? \"text/css\",\n ...(process.env[\"NODE_ENV\"] === \"development\" && {\n \"data-vite-dev-id\": join(moduleRootPath, path),\n }),\n },\n content\n );\n }),\n children\n );\n}\n"],"names":["React"],"mappings":";;;;;;;;;AAgBO,SAAS,kBAAmB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAA4B,EAAA;AAC1B,EAAA,OAAOA,cAAM,CAAA,aAAA;AAAA,IACXA,cAAM,CAAA,QAAA;AAAA,IACN,IAAA;AAAA,IACA,QAAS,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AAC5B,MAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,QAAA,IAAI,QAAW,GAAA,IAAA;AACf,QAAA,IAAG,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,KAAM,aAAe,EAAA;AAC5C,UAAO,OAAAA,cAAA,CAAM,cAAc,MAAQ,EAAA;AAAA,YACjC,GAAK,EAAA,IAAA;AAAA,YACL,GAAK,EAAA,YAAA;AAAA,YACL,IAAM,EAAA;AAAA,WACP,CAAA;AAAA;AAEH,QAAA,OAAOA,cAAM,CAAA,aAAA;AAAA,UACX,OAAA;AAAA,UACA;AAAA,YACE,GAAK,EAAA,IAAA;AAAA,YACL,IAAM,EAAA;AAAA,WACR;AAAA,UACA,YAAa,CAAA,IAAA,CAAK,cAAgB,EAAA,QAAQ,GAAG,OAAO;AAAA,SACtD;AAAA;AAGF,MAAA,MAAM,EAAE,IAAA,EAAM,OAAS,EAAA,GAAA,EAAK,MAAS,GAAA,IAAA;AACrC,MAAA,OAAOA,cAAM,CAAA,aAAA;AAAA,QACX,OAAA;AAAA,QACA;AAAA,UACE,GAAA,EAAK,OAAO,IAAQ,IAAA,KAAA;AAAA,UACpB,MAAM,IAAQ,IAAA,UAAA;AAAA,UACd,GAAI,OAAA,CAAQ,GAAI,CAAA,UAAU,MAAM,aAAiB,IAAA;AAAA,YAC/C,kBAAA,EAAoB,IAAK,CAAA,cAAA,EAAgB,IAAI;AAAA;AAC/C,SACF;AAAA,QACA;AAAA,OACF;AAAA,KACD,CAAA;AAAA,IACD;AAAA,GACF;AACF;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* A component that emits <link> tags for CSS files during streaming.
|
|
4
|
+
* The high precedence ensures they bubble up to the document head.
|
|
5
|
+
*/
|
|
6
|
+
export declare function CssCollector({ children, cssFiles, moduleBaseURL, route, }: {
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
cssFiles: string[];
|
|
9
|
+
moduleBaseURL?: string;
|
|
10
|
+
route?: string;
|
|
11
|
+
}): React.FunctionComponentElement<{
|
|
12
|
+
children?: React.ReactNode | undefined;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=css-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-collector.d.ts","sourceRoot":"","sources":["../../plugin/css-collector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,KAAW,GACZ,EAAE;IACD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;GA2CA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vite-plugin-react-server
|
|
3
|
+
* Copyright (c) Nico Brinkkemper
|
|
4
|
+
* MIT License
|
|
5
|
+
*/
|
|
6
|
+
import React__default from 'react';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
|
|
9
|
+
function CssCollector({
|
|
10
|
+
children,
|
|
11
|
+
cssFiles,
|
|
12
|
+
moduleBaseURL,
|
|
13
|
+
route = "/"
|
|
14
|
+
}) {
|
|
15
|
+
const depth = route.split("/").filter(Boolean).length;
|
|
16
|
+
const prefix = depth > 0 ? "../".repeat(depth) : "./";
|
|
17
|
+
const base = typeof moduleBaseURL === "string" && moduleBaseURL !== "" ? moduleBaseURL : prefix;
|
|
18
|
+
const elements = cssFiles.map((file) => {
|
|
19
|
+
if (typeof file === "object" && !React__default.isValidElement(file)) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
if (typeof file === "string" && file.endsWith(".css")) {
|
|
23
|
+
let url = file;
|
|
24
|
+
if (file.startsWith("http") || file.startsWith("data:")) {
|
|
25
|
+
url = file;
|
|
26
|
+
} else if (file.startsWith("/")) {
|
|
27
|
+
url = base + file.slice(1);
|
|
28
|
+
} else if (!file.startsWith("./") && !file.startsWith("../")) {
|
|
29
|
+
url = join(base, file);
|
|
30
|
+
}
|
|
31
|
+
return React__default.createElement("link", {
|
|
32
|
+
key: file,
|
|
33
|
+
rel: "stylesheet",
|
|
34
|
+
href: url,
|
|
35
|
+
precedence: "high"
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}).filter(Boolean);
|
|
40
|
+
return React__default.createElement(
|
|
41
|
+
React__default.Fragment,
|
|
42
|
+
null,
|
|
43
|
+
...elements,
|
|
44
|
+
children
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { CssCollector };
|
|
49
|
+
//# sourceMappingURL=css-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-collector.js","sources":["../../plugin/css-collector.tsx"],"sourcesContent":["import React from \"react\";\nimport { join } from \"node:path\";\n\n/**\n * A component that emits <link> tags for CSS files during streaming.\n * The high precedence ensures they bubble up to the document head.\n */\nexport function CssCollector({\n children,\n cssFiles,\n moduleBaseURL,\n route = \"/\",\n}: {\n children?: React.ReactNode;\n cssFiles: string[];\n moduleBaseURL?: string;\n route?: string;\n}) {\n // Calculate depth and prefix based on route\n const depth = route.split('/').filter(Boolean).length;\n const prefix = depth > 0 ? '../'.repeat(depth) : './';\n const base = typeof moduleBaseURL === 'string' && moduleBaseURL !== '' ? moduleBaseURL : prefix;\n\n const elements = cssFiles.map((file) => {\n // Handle pre-processed CSS content - skip in link mode\n if (typeof file === \"object\" && !React.isValidElement(file)) {\n return null;\n }\n // Handle string paths\n if (typeof file === \"string\" && file.endsWith('.css')) {\n // Handle different types of paths\n let url = file;\n if (file.startsWith('http') || file.startsWith('data:')) {\n // Keep absolute URLs as is\n url = file;\n } else if (file.startsWith('/')) {\n // Convert absolute paths to relative\n url = base + file.slice(1);\n } else if (!file.startsWith('./') && !file.startsWith('../')) {\n // Add prefix to relative paths that don't start with ./ or ../\n url = join(base, file);\n }\n \n return React.createElement(\"link\", {\n key: file,\n rel: \"stylesheet\",\n href: url,\n precedence: \"high\",\n });\n }\n\n return null;\n }).filter(Boolean);\n\n return React.createElement(\n React.Fragment,\n null,\n ...elements,\n children\n );\n}\n\n"],"names":["React"],"mappings":";;;;;;;;AAOO,SAAS,YAAa,CAAA;AAAA,EAC3B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAQ,GAAA;AACV,CAKG,EAAA;AAED,EAAA,MAAM,QAAQ,KAAM,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,MAAA,CAAO,OAAO,CAAE,CAAA,MAAA;AAC/C,EAAA,MAAM,SAAS,KAAQ,GAAA,CAAA,GAAI,KAAM,CAAA,MAAA,CAAO,KAAK,CAAI,GAAA,IAAA;AACjD,EAAA,MAAM,OAAO,OAAO,aAAA,KAAkB,QAAY,IAAA,aAAA,KAAkB,KAAK,aAAgB,GAAA,MAAA;AAEzF,EAAA,MAAM,QAAW,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,IAAS,KAAA;AAEtC,IAAA,IAAI,OAAO,IAAS,KAAA,QAAA,IAAY,CAACA,cAAM,CAAA,cAAA,CAAe,IAAI,CAAG,EAAA;AAC3D,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAI,OAAO,IAAS,KAAA,QAAA,IAAY,IAAK,CAAA,QAAA,CAAS,MAAM,CAAG,EAAA;AAErD,MAAA,IAAI,GAAM,GAAA,IAAA;AACV,MAAA,IAAI,KAAK,UAAW,CAAA,MAAM,KAAK,IAAK,CAAA,UAAA,CAAW,OAAO,CAAG,EAAA;AAEvD,QAAM,GAAA,GAAA,IAAA;AAAA,OACG,MAAA,IAAA,IAAA,CAAK,UAAW,CAAA,GAAG,CAAG,EAAA;AAE/B,QAAM,GAAA,GAAA,IAAA,GAAO,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA;AAAA,OAC3B,MAAA,IAAW,CAAC,IAAA,CAAK,UAAW,CAAA,IAAI,KAAK,CAAC,IAAA,CAAK,UAAW,CAAA,KAAK,CAAG,EAAA;AAE5D,QAAM,GAAA,GAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA;AAGvB,MAAO,OAAAA,cAAA,CAAM,cAAc,MAAQ,EAAA;AAAA,QACjC,GAAK,EAAA,IAAA;AAAA,QACL,GAAK,EAAA,YAAA;AAAA,QACL,IAAM,EAAA,GAAA;AAAA,QACN,UAAY,EAAA;AAAA,OACb,CAAA;AAAA;AAGH,IAAO,OAAA,IAAA;AAAA,GACR,CAAE,CAAA,MAAA,CAAO,OAAO,CAAA;AAEjB,EAAA,OAAOA,cAAM,CAAA,aAAA;AAAA,IACXA,cAAM,CAAA,QAAA;AAAA,IACN,IAAA;AAAA,IACA,GAAG,QAAA;AAAA,IACH;AAAA,GACF;AACF;;;;"}
|
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
import type { PipeableStream } from "react-dom/server";
|
|
2
|
-
import type {
|
|
2
|
+
import type { CreateHandlerOptions } from "../types.js";
|
|
3
3
|
type CreateHandlerResult = {
|
|
4
4
|
type: "success";
|
|
5
5
|
controller: AbortController;
|
|
6
6
|
stream: PipeableStream;
|
|
7
7
|
assets: any;
|
|
8
|
-
|
|
8
|
+
route: string;
|
|
9
9
|
} | {
|
|
10
10
|
type: "error";
|
|
11
11
|
error: Error;
|
|
12
12
|
} | {
|
|
13
13
|
type: "skip";
|
|
14
14
|
};
|
|
15
|
-
export declare function createHandler<T>({
|
|
16
|
-
url: string;
|
|
17
|
-
urlMap: CheckFilesExistReturn['urlMap'];
|
|
18
|
-
pluginOptions: ResolvedUserOptions;
|
|
19
|
-
streamOptions: CreateHandlerOptions<T>;
|
|
20
|
-
}): Promise<CreateHandlerResult>;
|
|
15
|
+
export declare function createHandler<T>({ getCss, root, cssFiles, cssModules, onCssFile, logger, loader, Html, CssCollector, pagePath, propsPath, pageExportName, propsExportName, inlineCss, moduleBase, preserveModulesRoot: _preserveModulesRoot, moduleBasePath, moduleRootPath, moduleBaseURL, route, pipableStreamOptions, }: CreateHandlerOptions<T>): Promise<CreateHandlerResult>;
|
|
21
16
|
export {};
|
|
22
17
|
//# sourceMappingURL=createHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createHandler.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/createHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"createHandler.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/createHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,KAAK,EAAE,oBAAoB,EAAc,MAAM,aAAa,CAAC;AAEpE,KAAK,mBAAmB,GACpB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAOrB,wBAAsB,aAAa,CAAC,CAAC,EAAE,EACrC,MAAM,EACN,IAAI,EACJ,QAAa,EACb,UAAmD,EACnD,SAAS,EACT,MAAM,EACN,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,cAAc,EACd,eAAe,EACf,SAAS,EACT,UAAU,EACV,mBAAmB,EAAE,oBAAoB,EACzC,cAAc,EACd,cAAc,EACd,aAAa,EACb,KAAK,EACL,oBAAoB,GACrB,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA2FxD"}
|