vike 0.4.222 → 0.4.223-commit-586dbfb
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/dist/cjs/client/shared/getPageContextProxyForUser.js +1 -1
- package/dist/cjs/node/api/prepareViteApiCall.js +1 -1
- package/dist/cjs/node/plugin/index.js +6 -4
- package/dist/cjs/node/plugin/plugins/baseUrls.js +9 -2
- package/dist/cjs/node/plugin/plugins/buildApp.js +14 -7
- package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +49 -19
- package/dist/cjs/node/plugin/plugins/buildConfig.js +6 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +17 -1
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
- package/dist/cjs/node/plugin/plugins/envVars.js +2 -18
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +2 -2
- package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +4 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +11 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +8 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +36 -71
- package/dist/cjs/node/plugin/shared/findPageFiles.js +3 -3
- package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +1 -1
- package/dist/cjs/node/plugin/shared/viteIsSSR.js +19 -10
- package/dist/cjs/node/prerender/runPrerender.js +3 -1
- package/dist/cjs/node/runtime/globalContext.js +19 -8
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +24 -0
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +1 -1
- package/dist/cjs/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
- package/dist/cjs/node/runtime/renderPage/isNewError.js +1 -1
- package/dist/cjs/node/runtime/renderPage/isVikeConfigInvalid.js +10 -0
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/logErrorHint.js +7 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
- package/dist/cjs/node/runtime/renderPage.js +63 -49
- package/dist/cjs/node/runtime/universal-middleware.js +14 -0
- package/dist/cjs/node/shared/resolveBase.js +0 -13
- package/dist/cjs/shared/getPageConfigsRuntime.js +2 -8
- package/dist/cjs/shared/getPageContextRequestUrl.js +1 -1
- package/dist/cjs/shared/getPageContextUrlComputed.js +12 -9
- package/dist/cjs/shared/hooks/getHook.js +1 -1
- package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +44 -12
- package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +2 -8
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +16 -6
- package/dist/cjs/shared/route/loadPageRoutes.js +1 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +1 -1
- package/dist/cjs/utils/assertSetup.js +1 -1
- package/dist/cjs/utils/assertSingleInstance.js +2 -2
- package/dist/cjs/utils/findFile.js +1 -1
- package/dist/cjs/utils/getGlobalObject.js +2 -6
- package/dist/cjs/utils/parseUrl-extras.js +2 -2
- package/dist/cjs/utils/parseUrl.js +5 -5
- package/dist/cjs/utils/requireResolve.js +3 -3
- package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/getPageContextCurrent.js +1 -1
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
- package/dist/esm/client/client-routing-runtime/history.js +1 -1
- package/dist/esm/client/client-routing-runtime/index.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/index.js +1 -0
- package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +3 -3
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +8 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +12 -3
- package/dist/esm/client/client-routing-runtime/scrollRestoration.js +1 -1
- package/dist/esm/client/client-routing-runtime/skipLink.js +2 -2
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
- package/dist/esm/client/shared/getPageContextProxyForUser.js +1 -1
- package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
- package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
- package/dist/esm/node/api/prepareViteApiCall.js +1 -1
- package/dist/esm/node/plugin/index.d.ts +6 -2
- package/dist/esm/node/plugin/index.js +2 -1
- package/dist/esm/node/plugin/plugins/baseUrls.js +9 -2
- package/dist/esm/node/plugin/plugins/buildApp.js +14 -7
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +49 -19
- package/dist/esm/node/plugin/plugins/buildConfig.js +6 -1
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +14 -6
- package/dist/esm/node/plugin/plugins/commonConfig.js +17 -1
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
- package/dist/esm/node/plugin/plugins/envVars.js +2 -18
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +3 -3
- package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +4 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +10 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +8 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +5 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +38 -73
- package/dist/esm/node/plugin/shared/findPageFiles.js +3 -3
- package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +2 -2
- package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +7 -4
- package/dist/esm/node/plugin/shared/viteIsSSR.js +20 -11
- package/dist/esm/node/prerender/runPrerender.js +3 -1
- package/dist/esm/node/runtime/globalContext.d.ts +9 -8
- package/dist/esm/node/runtime/globalContext.js +19 -8
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +2 -0
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +24 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +1 -1
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
- package/dist/esm/node/runtime/renderPage/isNewError.js +1 -1
- package/dist/esm/node/runtime/renderPage/isVikeConfigInvalid.d.ts +6 -0
- package/dist/esm/node/runtime/renderPage/isVikeConfigInvalid.js +8 -0
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/logErrorHint.js +7 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +4 -4
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +12 -12
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
- package/dist/esm/node/runtime/renderPage.d.ts +5 -5
- package/dist/esm/node/runtime/renderPage.js +64 -49
- package/dist/esm/node/runtime/universal-middleware.d.ts +1 -0
- package/dist/esm/node/runtime/universal-middleware.js +11 -0
- package/dist/esm/node/shared/resolveBase.d.ts +1 -9
- package/dist/esm/node/shared/resolveBase.js +0 -13
- package/dist/esm/shared/getPageConfigsRuntime.d.ts +2 -2
- package/dist/esm/shared/getPageConfigsRuntime.js +3 -9
- package/dist/esm/shared/getPageContextRequestUrl.js +1 -1
- package/dist/esm/shared/getPageContextUrlComputed.js +12 -9
- package/dist/esm/shared/getPageFiles.d.ts +1 -1
- package/dist/esm/shared/hooks/getHook.d.ts +3 -3
- package/dist/esm/shared/hooks/getHook.js +1 -1
- package/dist/esm/shared/page-configs/Config.d.ts +3 -1
- package/dist/esm/shared/page-configs/PageConfig.d.ts +12 -4
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +24 -16
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +44 -12
- package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +3 -2
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -8
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -0
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +16 -6
- package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +1 -1
- package/dist/esm/shared/types.d.ts +6 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assert.js +1 -1
- package/dist/esm/utils/assertSetup.js +1 -1
- package/dist/esm/utils/assertSingleInstance.js +2 -2
- package/dist/esm/utils/findFile.js +1 -1
- package/dist/esm/utils/getGlobalObject.d.ts +3 -2
- package/dist/esm/utils/getGlobalObject.js +2 -6
- package/dist/esm/utils/parseUrl-extras.js +2 -2
- package/dist/esm/utils/parseUrl.d.ts +3 -4
- package/dist/esm/utils/parseUrl.js +5 -5
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/dist/esm/utils/requireResolve.js +3 -3
- package/package.json +18 -6
- package/universal-middleware.js +3 -0
- package/dist/cjs/node/runtime/renderPage/isConfigInvalid.js +0 -10
- package/dist/esm/node/runtime/renderPage/isConfigInvalid.d.ts +0 -6
- package/dist/esm/node/runtime/renderPage/isConfigInvalid.js +0 -8
- package/dist-cjs-fixup.mjs +0 -41
|
@@ -30,8 +30,8 @@ async function fixServerAssets(config) {
|
|
|
30
30
|
const outDirs = getOutDirs(config);
|
|
31
31
|
const clientManifest = await loadManifest(outDirs.outDirClient);
|
|
32
32
|
const serverManifest = await loadManifest(outDirs.outDirServer);
|
|
33
|
-
const { clientManifestMod, serverManifestMod,
|
|
34
|
-
await copyAssets(
|
|
33
|
+
const { clientManifestMod, serverManifestMod, filesToMove, filesToRemove } = addServerAssets(clientManifest, serverManifest);
|
|
34
|
+
await copyAssets(filesToMove, filesToRemove, config);
|
|
35
35
|
return { clientManifestMod, serverManifestMod };
|
|
36
36
|
}
|
|
37
37
|
async function loadManifest(outDir) {
|
|
@@ -42,15 +42,15 @@ async function loadManifest(outDir) {
|
|
|
42
42
|
assert(manifest);
|
|
43
43
|
return manifest;
|
|
44
44
|
}
|
|
45
|
-
async function copyAssets(
|
|
45
|
+
async function copyAssets(filesToMove, filesToRemove, config) {
|
|
46
46
|
const { outDirClient, outDirServer } = getOutDirs(config);
|
|
47
47
|
const assetsDir = getAssetsDir(config);
|
|
48
48
|
const assetsDirServer = path.posix.join(outDirServer, assetsDir);
|
|
49
|
-
if (!
|
|
49
|
+
if (!filesToMove.length && !filesToRemove.length && !existsSync(assetsDirServer))
|
|
50
50
|
return;
|
|
51
51
|
assert(existsSync(assetsDirServer));
|
|
52
52
|
const concurrencyLimit = pLimit(10);
|
|
53
|
-
await Promise.all(
|
|
53
|
+
await Promise.all(filesToMove.map((file) => concurrencyLimit(async () => {
|
|
54
54
|
const source = path.posix.join(outDirServer, file);
|
|
55
55
|
const target = path.posix.join(outDirClient, file);
|
|
56
56
|
await fs.mkdir(path.posix.dirname(target), { recursive: true });
|
|
@@ -86,19 +86,20 @@ function addServerAssets(clientManifest, serverManifest) {
|
|
|
86
86
|
assert(!entriesServer.has(pageId));
|
|
87
87
|
entriesServer.set(pageId, { key, ...resources });
|
|
88
88
|
}
|
|
89
|
-
let
|
|
89
|
+
let filesToMove = [];
|
|
90
90
|
let filesToRemove = [];
|
|
91
|
+
// Copy page assets
|
|
91
92
|
for (const [pageId, entryClient] of entriesClient.entries()) {
|
|
92
93
|
const entryServer = entriesServer.get(pageId);
|
|
93
94
|
if (!entryServer)
|
|
94
95
|
continue;
|
|
95
|
-
const
|
|
96
|
+
const cssToMove = [];
|
|
96
97
|
const cssToRemove = [];
|
|
97
|
-
const
|
|
98
|
+
const assetsToMove = [];
|
|
98
99
|
const assetsToRemove = [];
|
|
99
100
|
entryServer.css.forEach((cssServer) => {
|
|
100
101
|
if (!entryClient.css.some((cssClient) => cssServer.hash === cssClient.hash)) {
|
|
101
|
-
|
|
102
|
+
cssToMove.push(cssServer.src);
|
|
102
103
|
}
|
|
103
104
|
else {
|
|
104
105
|
cssToRemove.push(cssServer.src);
|
|
@@ -106,17 +107,17 @@ function addServerAssets(clientManifest, serverManifest) {
|
|
|
106
107
|
});
|
|
107
108
|
entryServer.assets.forEach((assetServer) => {
|
|
108
109
|
if (!entryClient.assets.some((assetClient) => assetServer.hash === assetClient.hash)) {
|
|
109
|
-
|
|
110
|
+
assetsToMove.push(assetServer.src);
|
|
110
111
|
}
|
|
111
112
|
else {
|
|
112
113
|
assetsToRemove.push(assetServer.src);
|
|
113
114
|
}
|
|
114
115
|
});
|
|
115
|
-
if (
|
|
116
|
+
if (cssToMove.length) {
|
|
116
117
|
const { key } = entryClient;
|
|
117
|
-
|
|
118
|
+
filesToMove.push(...cssToMove);
|
|
118
119
|
(_a = clientManifest[key]).css ?? (_a.css = []);
|
|
119
|
-
clientManifest[key].css?.push(...
|
|
120
|
+
clientManifest[key].css?.push(...cssToMove);
|
|
120
121
|
}
|
|
121
122
|
if (cssToRemove.length) {
|
|
122
123
|
const { key } = entryServer;
|
|
@@ -124,11 +125,11 @@ function addServerAssets(clientManifest, serverManifest) {
|
|
|
124
125
|
(_b = serverManifest[key]).css ?? (_b.css = []);
|
|
125
126
|
serverManifest[key].css = serverManifest[key].css.filter((entry) => !cssToRemove.includes(entry));
|
|
126
127
|
}
|
|
127
|
-
if (
|
|
128
|
+
if (assetsToMove.length) {
|
|
128
129
|
const { key } = entryClient;
|
|
129
|
-
|
|
130
|
+
filesToMove.push(...assetsToMove);
|
|
130
131
|
(_c = clientManifest[key]).assets ?? (_c.assets = []);
|
|
131
|
-
clientManifest[key].assets?.push(...
|
|
132
|
+
clientManifest[key].assets?.push(...assetsToMove);
|
|
132
133
|
}
|
|
133
134
|
if (assetsToRemove.length) {
|
|
134
135
|
const { key } = entryServer;
|
|
@@ -137,11 +138,40 @@ function addServerAssets(clientManifest, serverManifest) {
|
|
|
137
138
|
serverManifest[key].assets = serverManifest[key].assets.filter((entry) => !assetsToRemove.includes(entry));
|
|
138
139
|
}
|
|
139
140
|
}
|
|
141
|
+
// Also copy assets of virtual:@brillout/vite-plugin-server-entry:serverEntry
|
|
142
|
+
{
|
|
143
|
+
const filesClientAll = [];
|
|
144
|
+
for (const key in clientManifest) {
|
|
145
|
+
const entry = clientManifest[key];
|
|
146
|
+
filesClientAll.push(entry.file);
|
|
147
|
+
filesClientAll.push(...(entry.assets ?? []));
|
|
148
|
+
filesClientAll.push(...(entry.css ?? []));
|
|
149
|
+
}
|
|
150
|
+
for (const key in serverManifest) {
|
|
151
|
+
const entry = serverManifest[key];
|
|
152
|
+
if (!entry.isEntry)
|
|
153
|
+
continue;
|
|
154
|
+
const resources = collectResources(entry, serverManifest);
|
|
155
|
+
const css = resources.css.map((css) => css.src).filter((file) => !filesClientAll.includes(file));
|
|
156
|
+
const assets = resources.assets.map((asset) => asset.src).filter((file) => !filesClientAll.includes(file));
|
|
157
|
+
filesToMove.push(...css, ...assets);
|
|
158
|
+
if (css.length > 0 || assets.length > 0) {
|
|
159
|
+
assert(!clientManifest[key]);
|
|
160
|
+
clientManifest[key] = {
|
|
161
|
+
...entry,
|
|
162
|
+
css,
|
|
163
|
+
assets,
|
|
164
|
+
dynamicImports: undefined,
|
|
165
|
+
imports: undefined
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
140
170
|
const clientManifestMod = clientManifest;
|
|
141
171
|
const serverManifestMod = serverManifest;
|
|
142
|
-
|
|
143
|
-
filesToRemove = unique(filesToRemove).filter((file) => !
|
|
144
|
-
return { clientManifestMod, serverManifestMod,
|
|
172
|
+
filesToMove = unique(filesToMove);
|
|
173
|
+
filesToRemove = unique(filesToRemove).filter((file) => !filesToMove.includes(file));
|
|
174
|
+
return { clientManifestMod, serverManifestMod, filesToMove, filesToRemove };
|
|
145
175
|
}
|
|
146
176
|
function getPageId(key) {
|
|
147
177
|
// Normalize from:
|
|
@@ -17,6 +17,7 @@ import { getFilePathResolved } from '../shared/getFilePath.js';
|
|
|
17
17
|
import { getConfigValueBuildTime } from '../../../shared/page-configs/getConfigValueBuildTime.js';
|
|
18
18
|
import { getOutDirs, resolveOutDir } from '../shared/getOutDirs.js';
|
|
19
19
|
import { viteIsSSR } from '../shared/viteIsSSR.js';
|
|
20
|
+
import { getVikeConfigPublic } from './commonConfig.js';
|
|
20
21
|
// @ts-ignore Shimmed by dist-cjs-fixup.js for CJS build.
|
|
21
22
|
const importMetaUrl = import.meta.url;
|
|
22
23
|
const require_ = createRequire(importMetaUrl);
|
|
@@ -57,11 +58,12 @@ function buildConfig() {
|
|
|
57
58
|
order: 'post',
|
|
58
59
|
handler(config) {
|
|
59
60
|
onSetupBuild();
|
|
61
|
+
const vike = getVikeConfigPublic(config);
|
|
60
62
|
return {
|
|
61
63
|
build: {
|
|
62
64
|
outDir: resolveOutDir(config),
|
|
63
65
|
manifest: manifestTempFile,
|
|
64
|
-
copyPublicDir:
|
|
66
|
+
copyPublicDir: vike.config.viteEnvironmentAPI
|
|
65
67
|
? // Already set by buildApp() plugin
|
|
66
68
|
undefined
|
|
67
69
|
: !viteIsSSR(config)
|
|
@@ -80,6 +82,9 @@ function buildConfig() {
|
|
|
80
82
|
{
|
|
81
83
|
name: 'vike:buildConfig:pre',
|
|
82
84
|
apply: 'build',
|
|
85
|
+
applyToEnvironment(env) {
|
|
86
|
+
return env.name === 'ssr';
|
|
87
|
+
},
|
|
83
88
|
// Make sure other writeBundle() hooks are called after this writeBundle() hook.
|
|
84
89
|
// - set_ASSETS_MANIFEST() needs to be called before dist/server/ code is executed.
|
|
85
90
|
// - For example, the writeBundle() hook of vite-plugin-vercel needs to be called after this writeBundle() hook, otherwise: https://github.com/vikejs/vike/issues/1527
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { commonConfig };
|
|
2
|
-
|
|
2
|
+
export { getVikeConfigPublic };
|
|
3
|
+
import { type InlineConfig, type Plugin, type ResolvedConfig, type UserConfig } from 'vite';
|
|
3
4
|
import { type VikeConfigObject } from './importUserCode/v1-design/getVikeConfig.js';
|
|
4
5
|
import type { PrerenderContextPublic } from '../../prerender/runPrerender.js';
|
|
5
6
|
declare module 'vite' {
|
|
@@ -9,11 +10,18 @@ declare module 'vite' {
|
|
|
9
10
|
_root?: string;
|
|
10
11
|
_baseViteOriginal?: string;
|
|
11
12
|
_viteConfigEnhanced?: InlineConfig;
|
|
12
|
-
|
|
13
|
-
config: VikeConfigObject['global']['config'];
|
|
14
|
-
pages: VikeConfigObject['pages'];
|
|
15
|
-
prerenderContext?: PrerenderContextPublic;
|
|
16
|
-
};
|
|
13
|
+
_vike?: VikeConfigPublic;
|
|
17
14
|
}
|
|
18
15
|
}
|
|
16
|
+
type VikeConfigPublic = {
|
|
17
|
+
config: VikeConfigObject['global']['config'];
|
|
18
|
+
pages: VikeConfigObject['pages'];
|
|
19
|
+
prerenderContext?: PrerenderContextPublic;
|
|
20
|
+
};
|
|
19
21
|
declare function commonConfig(vikeVitePluginOptions: unknown): Plugin[];
|
|
22
|
+
/**
|
|
23
|
+
* Get all the information Vike knows about the app in your Vite plugin.
|
|
24
|
+
*
|
|
25
|
+
* https://vike.dev/getVikeConfig
|
|
26
|
+
*/
|
|
27
|
+
declare function getVikeConfigPublic(config: ResolvedConfig | UserConfig): VikeConfigPublic;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { commonConfig };
|
|
2
|
+
export { getVikeConfigPublic };
|
|
2
3
|
import { mergeConfig } from 'vite';
|
|
3
4
|
import { assert, assertUsage, assertWarning, findPackageJson, hasProp, isDevCheck, isDocker, isObject } from '../utils.js';
|
|
4
5
|
import { assertRollupInput } from './buildConfig.js';
|
|
@@ -30,7 +31,7 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
30
31
|
_isDev: isDev,
|
|
31
32
|
_root: root,
|
|
32
33
|
_vikeVitePluginOptions: vikeVitePluginOptions,
|
|
33
|
-
|
|
34
|
+
_vike: {
|
|
34
35
|
pages: vikeConfig.pages,
|
|
35
36
|
config: vikeConfig.global.config
|
|
36
37
|
},
|
|
@@ -168,3 +169,18 @@ function temp_supportOldInterface(config) {
|
|
|
168
169
|
}
|
|
169
170
|
assert(false);
|
|
170
171
|
}
|
|
172
|
+
// TODO/soon rename:
|
|
173
|
+
// - `getVikeConfig()` => `resolveVikeConfig()` ?
|
|
174
|
+
// - `getVikeConfigPublic()` => `getVikeConfig()`
|
|
175
|
+
// - `VikeConfigPublic` => `VikeConfig` ?
|
|
176
|
+
// - `VikeConfigObject` => `VikeConfigInternal` ?
|
|
177
|
+
/**
|
|
178
|
+
* Get all the information Vike knows about the app in your Vite plugin.
|
|
179
|
+
*
|
|
180
|
+
* https://vike.dev/getVikeConfig
|
|
181
|
+
*/
|
|
182
|
+
function getVikeConfigPublic(config) {
|
|
183
|
+
const vikeConfig = config._vike;
|
|
184
|
+
assert(vikeConfig);
|
|
185
|
+
return vikeConfig;
|
|
186
|
+
}
|
|
@@ -48,7 +48,7 @@ async function getPageDeps(config, pageConfigs) {
|
|
|
48
48
|
sources
|
|
49
49
|
.filter((c) => !c.isOverriden)
|
|
50
50
|
.forEach((configValueSource) => {
|
|
51
|
-
if (!configValueSource.
|
|
51
|
+
if (!configValueSource.valueIsLoadedWithImport && !configValueSource.valueIsFilePath)
|
|
52
52
|
return;
|
|
53
53
|
const { definedAtFilePath, configEnv } = configValueSource;
|
|
54
54
|
if (!configEnv.client)
|
|
@@ -4,6 +4,7 @@ import { assert, assertPosixPath, assertUsage, assertWarning, escapeRegex, isArr
|
|
|
4
4
|
import { sourceMapPassthrough } from '../shared/rollupSourceMap.js';
|
|
5
5
|
import { getModuleFilePathAbsolute } from '../shared/getFilePath.js';
|
|
6
6
|
import { normalizeId } from '../shared/normalizeId.js';
|
|
7
|
+
import { viteIsSSR_safe } from '../shared/viteIsSSR.js';
|
|
7
8
|
// TODO/enventually: (after we implemented vike.config.js)
|
|
8
9
|
// - Make import.meta.env work inside +config.js
|
|
9
10
|
// - For it to work, we'll probably need the user to define the settings (e.g. `envDir`) for loadEnv() inside vike.config.js instead of vite.config.js
|
|
@@ -36,7 +37,7 @@ function envVarsPlugin() {
|
|
|
36
37
|
if (!code.includes('import.meta.env.'))
|
|
37
38
|
return;
|
|
38
39
|
const isBuild = config.command === 'build';
|
|
39
|
-
const isClientSide =
|
|
40
|
+
const isClientSide = !viteIsSSR_safe(config, options);
|
|
40
41
|
Object.entries(envsAll)
|
|
41
42
|
.filter(([key]) => {
|
|
42
43
|
// Already handled by Vite
|
|
@@ -82,20 +83,3 @@ function envVarsPlugin() {
|
|
|
82
83
|
function applyEnvVar(envStatementRegEx, envVal, code) {
|
|
83
84
|
return code.replace(envStatementRegEx, JSON.stringify(envVal));
|
|
84
85
|
}
|
|
85
|
-
function getIsClientSide(config, options) {
|
|
86
|
-
const isBuild = config.command === 'build';
|
|
87
|
-
if (isBuild) {
|
|
88
|
-
assert(typeof config.build.ssr === 'boolean');
|
|
89
|
-
const isServerSide = config.build.ssr;
|
|
90
|
-
if (options !== undefined) {
|
|
91
|
-
assert(options.ssr === isServerSide);
|
|
92
|
-
}
|
|
93
|
-
return !isServerSide;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
assert(config.build.ssr === false);
|
|
97
|
-
assert(typeof options?.ssr === 'boolean');
|
|
98
|
-
const isServerSide = options.ssr;
|
|
99
|
-
return !isServerSide;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
@@ -17,7 +17,7 @@ import { fixServerAssets_isEnabled } from './buildConfig/fixServerAssets.js';
|
|
|
17
17
|
import { getVikeConfig, isV1Design } from './importUserCode/v1-design/getVikeConfig.js';
|
|
18
18
|
import { assertV1Design } from '../../shared/assertV1Design.js';
|
|
19
19
|
import { normalizeId } from '../shared/normalizeId.js';
|
|
20
|
-
import {
|
|
20
|
+
import { viteIsSSR_safe } from '../shared/viteIsSSR.js';
|
|
21
21
|
const extractAssetsRE = /(\?|&)extractAssets(?:&|$)/;
|
|
22
22
|
const rawRE = /(\?|&)raw(?:&|$)/;
|
|
23
23
|
const urlRE = /(\?|&)url(?:&|$)/;
|
|
@@ -46,7 +46,7 @@ function extractAssetsPlugin() {
|
|
|
46
46
|
}
|
|
47
47
|
// TODO/now: add meta.default
|
|
48
48
|
assert(vikeConfig.global.config.includeAssetsImportedByServer ?? true);
|
|
49
|
-
assert(!
|
|
49
|
+
assert(!viteIsSSR_safe(config, options));
|
|
50
50
|
const importStatements = await getImportStatements(src);
|
|
51
51
|
const moduleNames = getImportedModules(importStatements);
|
|
52
52
|
const code = moduleNames.map((moduleName) => `import '${moduleName}';`).join('\n');
|
|
@@ -63,7 +63,7 @@ function extractAssetsPlugin() {
|
|
|
63
63
|
// - Vite's `vite:resolve` plugin; https://github.com/vitejs/vite/blob/d649daba7682791178b711d9a3e44a6b5d00990c/packages/vite/src/node/plugins/resolve.ts#L105
|
|
64
64
|
enforce: 'pre',
|
|
65
65
|
async resolveId(source, importer, options) {
|
|
66
|
-
if (
|
|
66
|
+
if (viteIsSSR_safe(config, options)) {
|
|
67
67
|
// When building for the server, there should never be a `?extractAssets` query
|
|
68
68
|
assert(!extractAssetsRE.test(source));
|
|
69
69
|
assert(importer === undefined || !extractAssetsRE.test(importer));
|
|
@@ -8,7 +8,7 @@ import { normalizeId } from '../shared/normalizeId.js';
|
|
|
8
8
|
import { viteIsSSR_options } from '../shared/viteIsSSR.js';
|
|
9
9
|
const extractExportNamesRE = /(\?|&)extractExportNames(?:&|$)/;
|
|
10
10
|
const debug = createDebugger('vike:extractExportNames');
|
|
11
|
-
const globalObject = getGlobalObject('extractExportNamesPlugin.ts', {});
|
|
11
|
+
const globalObject = getGlobalObject('plugins/extractExportNamesPlugin.ts', {});
|
|
12
12
|
function extractExportNamesPlugin() {
|
|
13
13
|
let isDev = false;
|
|
14
14
|
return {
|
package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js
CHANGED
|
@@ -63,8 +63,8 @@ function getConfigRequireValue(plusFile) {
|
|
|
63
63
|
const confVal = getConfVal(plusFile, 'require');
|
|
64
64
|
if (!confVal)
|
|
65
65
|
return null;
|
|
66
|
-
assert(confVal.
|
|
67
|
-
const require = confVal.
|
|
66
|
+
assert(confVal.valueIsLoaded);
|
|
67
|
+
const require = confVal.value;
|
|
68
68
|
const { filePathToShowToUserResolved } = plusFile.filePath;
|
|
69
69
|
assert(filePathToShowToUserResolved);
|
|
70
70
|
assertUsage(isObjectOfStrings(require), `The setting ${pc.bold('require')} defined at ${filePathToShowToUserResolved} should be an object with string values (${pc.bold('Record<string, string>')}).`);
|
|
@@ -74,8 +74,8 @@ function getNameValue(plusFile) {
|
|
|
74
74
|
const confVal = getConfVal(plusFile, 'name');
|
|
75
75
|
if (!confVal)
|
|
76
76
|
return null;
|
|
77
|
-
assert(confVal.
|
|
78
|
-
const name = confVal.
|
|
77
|
+
assert(confVal.valueIsLoaded);
|
|
78
|
+
const name = confVal.value;
|
|
79
79
|
const filePathToShowToUser = getFilePathToShowToUser(plusFile);
|
|
80
80
|
assertUsage(typeof name === 'string', `The setting ${pc.bold('name')} defined at ${filePathToShowToUser} should be a string.`);
|
|
81
81
|
return name;
|
|
@@ -31,7 +31,12 @@ const configDefinitionsBuiltIn = {
|
|
|
31
31
|
cumulative: true
|
|
32
32
|
},
|
|
33
33
|
route: {
|
|
34
|
-
env: {
|
|
34
|
+
env: {
|
|
35
|
+
server: true,
|
|
36
|
+
client: 'if-client-routing',
|
|
37
|
+
// For vite-plugin-vercel
|
|
38
|
+
config: true
|
|
39
|
+
},
|
|
35
40
|
eager: true
|
|
36
41
|
},
|
|
37
42
|
guard: {
|
package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js
CHANGED
|
@@ -3,7 +3,7 @@ export { isPlusFile };
|
|
|
3
3
|
export { getPlusFileValueConfigName };
|
|
4
4
|
import { assertPosixPath, assert, scriptFileExtensions, assertIsSingleModuleInstance, assertIsNotProductionRuntime, isVersionOrAbove, isScriptFile, scriptFileExtensionList, createDebugger, deepEqual, assertUsage } from '../../../../utils.js';
|
|
5
5
|
import path from 'path';
|
|
6
|
-
import glob from '
|
|
6
|
+
import { glob } from 'tinyglobby';
|
|
7
7
|
import { exec } from 'child_process';
|
|
8
8
|
import { promisify } from 'util';
|
|
9
9
|
import { isTemporaryBuildFile } from './transpileAndExecuteFile.js';
|
|
@@ -11,7 +11,7 @@ import { getEnvVarObject } from '../../../../shared/getEnvVarObject.js';
|
|
|
11
11
|
const execA = promisify(exec);
|
|
12
12
|
const debug = createDebugger('vike:crawl');
|
|
13
13
|
assertIsNotProductionRuntime();
|
|
14
|
-
assertIsSingleModuleInstance('crawlPlusFiles.ts');
|
|
14
|
+
assertIsSingleModuleInstance('getVikeConfig/crawlPlusFiles.ts');
|
|
15
15
|
let gitIsNotUsable = false;
|
|
16
16
|
async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
|
|
17
17
|
assertPosixPath(userRootDir);
|
|
@@ -35,10 +35,10 @@ async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
|
|
|
35
35
|
// Crawl
|
|
36
36
|
const filesGit = !isGitCrawlDisabled() && (await gitLsFiles(userRootDir, outDirRelativeFromUserRootDir));
|
|
37
37
|
const filesGitNothingFound = !filesGit || filesGit.length === 0;
|
|
38
|
-
const filesGlob = (filesGitNothingFound || debug.isActivated) && (await
|
|
38
|
+
const filesGlob = (filesGitNothingFound || debug.isActivated) && (await tinyglobby(userRootDir, outDirRelativeFromUserRootDir));
|
|
39
39
|
let files = !filesGitNothingFound
|
|
40
40
|
? filesGit
|
|
41
|
-
: // Fallback to
|
|
41
|
+
: // Fallback to tinyglobby for users that dynamically generate plus files. (Assuming that no plus file is found because of the user's .gitignore list.)
|
|
42
42
|
filesGlob;
|
|
43
43
|
assert(files);
|
|
44
44
|
if (debug.isActivated)
|
|
@@ -47,7 +47,7 @@ async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
|
|
|
47
47
|
files = files.filter((filePath) => !isTemporaryBuildFile(filePath));
|
|
48
48
|
// Normalize
|
|
49
49
|
const plusFiles = files.map((filePath) => {
|
|
50
|
-
// Both `$ git-ls files` and
|
|
50
|
+
// Both `$ git-ls files` and tinyglobby return posix paths
|
|
51
51
|
assertPosixPath(filePath);
|
|
52
52
|
assert(!filePath.startsWith(userRootDir));
|
|
53
53
|
const filePathAbsoluteUserRootDir = path.posix.join('/', filePath);
|
|
@@ -56,7 +56,7 @@ async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
|
|
|
56
56
|
});
|
|
57
57
|
return plusFiles;
|
|
58
58
|
}
|
|
59
|
-
// Same as
|
|
59
|
+
// Same as tinyglobby() but using `$ git ls-files`
|
|
60
60
|
async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
|
|
61
61
|
if (gitIsNotUsable)
|
|
62
62
|
return null;
|
|
@@ -123,13 +123,14 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
|
|
|
123
123
|
}
|
|
124
124
|
return files;
|
|
125
125
|
}
|
|
126
|
-
// Same as gitLsFiles() but using
|
|
127
|
-
async function
|
|
126
|
+
// Same as gitLsFiles() but using tinyglobby
|
|
127
|
+
async function tinyglobby(userRootDir, outDirRelativeFromUserRootDir) {
|
|
128
128
|
const pattern = `**/+*.${scriptFileExtensions}`;
|
|
129
129
|
const options = {
|
|
130
130
|
ignore: getIgnoreAsPatterns(outDirRelativeFromUserRootDir),
|
|
131
131
|
cwd: userRootDir,
|
|
132
|
-
dot: false
|
|
132
|
+
dot: false,
|
|
133
|
+
expandDirectories: false
|
|
133
134
|
};
|
|
134
135
|
const files = await glob(pattern, options);
|
|
135
136
|
// Make build deterministic, in order to get a stable generated hash for dist/client/assets/entries/entry-client-routing.${hash}.js
|
|
@@ -163,14 +163,17 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
|
|
|
163
163
|
// - vike@0.4.162 started soft-requiring Vike extensions to set the name config.
|
|
164
164
|
// - In practice, it seems like it requires some (non-trivial?) refactoring.
|
|
165
165
|
isVikeExtensionImport;
|
|
166
|
+
// Externalize npm package imports
|
|
166
167
|
assertPosixPath(importPathResolved);
|
|
167
|
-
const
|
|
168
|
+
const isNpmPkgImport = importPathResolved.includes('/node_modules/') ||
|
|
169
|
+
// Linked npm packages
|
|
170
|
+
!importPathResolved.startsWith(userRootDir);
|
|
168
171
|
const isExternal = isPointerImport ||
|
|
169
172
|
// Performance: npm package imports can be externalized. (We could as well let esbuild transpile /node_modules/ code but it's useless as /node_modules/ code is already built. It would unnecessarily slow down transpilation.)
|
|
170
|
-
|
|
173
|
+
isNpmPkgImport;
|
|
171
174
|
if (!isExternal) {
|
|
172
175
|
// User-land config code (i.e. not runtime code) => let esbuild transpile it
|
|
173
|
-
assert(!isPointerImport && !
|
|
176
|
+
assert(!isPointerImport && !isNpmPkgImport);
|
|
174
177
|
if (debug.isActivated)
|
|
175
178
|
debug('onResolved()', { args, resolved, isPointerImport, isExternal });
|
|
176
179
|
return resolved;
|
|
@@ -189,7 +192,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
|
|
|
189
192
|
userRootDir
|
|
190
193
|
});
|
|
191
194
|
// We assuming that path aliases always resolve inside `userRootDir`.
|
|
192
|
-
if (filePathAbsoluteUserRootDir && !
|
|
195
|
+
if (filePathAbsoluteUserRootDir && !isNpmPkgImport) {
|
|
193
196
|
// `importPathOriginal` is a path alias.
|
|
194
197
|
// - We have to use esbuild's path alias resolution, because:
|
|
195
198
|
// - Vike doesn't resolve path aliases at all.
|
|
@@ -211,7 +214,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
|
|
|
211
214
|
// Import of runtime code => handled by Vike
|
|
212
215
|
isPointerImport ||
|
|
213
216
|
// Import of config code => loaded by Node.js at build-time
|
|
214
|
-
|
|
217
|
+
isNpmPkgImport);
|
|
215
218
|
pointerImports[importPathTranspiled] = isPointerImport;
|
|
216
219
|
return { external: true, path: importPathTranspiled };
|
|
217
220
|
});
|
|
@@ -9,12 +9,12 @@ export type { VikeConfigObject };
|
|
|
9
9
|
import type { PageConfigGlobalBuildTime, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
|
|
10
10
|
import { type ConfigDefinitions, type ConfigDefinitionInternal } from './getVikeConfig/configDefinitionsBuiltIn.js';
|
|
11
11
|
import type { ResolvedConfig } from 'vite';
|
|
12
|
-
import { type
|
|
12
|
+
import { type PageConfigUserFriendly, type PageConfigsUserFriendly } from '../../../../../shared/page-configs/getPageConfigUserFriendly.js';
|
|
13
13
|
import { type PlusFile } from './getVikeConfig/getPlusFilesAll.js';
|
|
14
14
|
type VikeConfigObject = {
|
|
15
15
|
pageConfigs: PageConfigBuildTime[];
|
|
16
16
|
pageConfigGlobal: PageConfigGlobalBuildTime;
|
|
17
|
-
global:
|
|
17
|
+
global: PageConfigUserFriendly;
|
|
18
18
|
pages: PageConfigsUserFriendly;
|
|
19
19
|
};
|
|
20
20
|
declare const vikeConfigDependencies: Set<string>;
|
|
@@ -26,8 +26,8 @@ declare function getVikeConfig2(userRootDir: string, isDev: boolean, vikeVitePlu
|
|
|
26
26
|
declare function isV1Design(config: ResolvedConfig): Promise<boolean>;
|
|
27
27
|
declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitions, configName: string): ConfigDefinitionInternal | null;
|
|
28
28
|
declare function getConfVal(plusFile: PlusFile, configName: string): null | {
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
value: unknown;
|
|
30
|
+
valueIsLoaded: true;
|
|
31
31
|
} | {
|
|
32
|
-
|
|
32
|
+
valueIsLoaded: false;
|
|
33
33
|
};
|