vike 0.4.221-commit-937dbfb → 0.4.222-commit-207e079
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/node/plugin/index.js +1 -1
- package/dist/cjs/node/plugin/plugins/baseUrls.js +6 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +4 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +73 -39
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +37 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +2 -40
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +2 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +39 -14
- package/dist/cjs/node/runtime/globalContext.js +24 -8
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
- package/dist/cjs/node/runtime/renderPage.js +4 -8
- package/dist/cjs/node/shared/resolveBase.js +0 -13
- package/dist/cjs/shared/getPageConfigsRuntime.js +10 -1
- package/dist/cjs/shared/route/loadPageRoutes.js +1 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assertSingleInstance.js +1 -1
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +5 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +7 -0
- package/dist/esm/node/plugin/index.d.ts +4 -1
- package/dist/esm/node/plugin/index.js +1 -1
- package/dist/esm/node/plugin/plugins/baseUrls.js +6 -1
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +4 -1
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +73 -39
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +4 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +38 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.d.ts +0 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +2 -37
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +39 -14
- package/dist/esm/node/runtime/globalContext.d.ts +10 -7
- package/dist/esm/node/runtime/globalContext.js +24 -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/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +8 -8
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
- package/dist/esm/node/runtime/renderPage.js +4 -8
- 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 -1
- package/dist/esm/shared/getPageConfigsRuntime.js +10 -1
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +6 -0
- package/dist/esm/shared/route/loadPageRoutes.js +1 -1
- package/dist/esm/shared/types.d.ts +9 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assertSingleInstance.js +1 -1
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +1 -1
|
@@ -35,7 +35,7 @@ const workaroundVite6HmrRegression_js_1 = require("./plugins/workaroundVite6HmrR
|
|
|
35
35
|
const buildApp_js_1 = require("./plugins/buildApp.js");
|
|
36
36
|
// We don't call this in ./onLoad.ts to avoid a cyclic dependency with utils.ts
|
|
37
37
|
(0, getPageAssets_js_1.setResolveClientEntriesDev)(resolveClientEntriesDev_js_1.resolveClientEntriesDev);
|
|
38
|
-
// Return
|
|
38
|
+
// Return `PluginInterop` instead of `Plugin` to avoid type mismatch upon different Vite versions
|
|
39
39
|
function plugin(vikeVitePluginOptions = {}) {
|
|
40
40
|
const plugins = [
|
|
41
41
|
...(0, commonConfig_js_1.commonConfig)(vikeVitePluginOptions),
|
|
@@ -29,7 +29,7 @@ function baseUrls() {
|
|
|
29
29
|
},
|
|
30
30
|
async configResolved(config) {
|
|
31
31
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(config);
|
|
32
|
-
const basesResolved2 =
|
|
32
|
+
const basesResolved2 = resolveBaseFromResolvedConfig(vikeConfig.global.config.baseServer ?? null, vikeConfig.global.config.baseAssets ?? null, config);
|
|
33
33
|
(0, utils_js_1.assert)(basesResolved2.baseServer === basesResolved.baseServer);
|
|
34
34
|
(0, utils_js_1.assert)(basesResolved2.baseAssets === basesResolved.baseAssets);
|
|
35
35
|
/* In dev, Vite seems buggy around setting vite.config.js#base to an absolute URL (e.g. http://localhost:8080/cdn/)
|
|
@@ -40,3 +40,8 @@ function baseUrls() {
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
+
function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
|
|
44
|
+
let baseViteOriginal = config._baseViteOriginal;
|
|
45
|
+
(0, utils_js_1.assert)(baseViteOriginal === null || typeof baseViteOriginal == 'string');
|
|
46
|
+
return (0, resolveBase_js_1.resolveBase)(baseViteOriginal, baseServer, baseAssets);
|
|
47
|
+
}
|
|
@@ -35,7 +35,10 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
35
35
|
_isDev: isDev,
|
|
36
36
|
_root: root,
|
|
37
37
|
_vikeVitePluginOptions: vikeVitePluginOptions,
|
|
38
|
-
vike: {
|
|
38
|
+
vike: {
|
|
39
|
+
pages: vikeConfig.pages,
|
|
40
|
+
config: vikeConfig.global.config
|
|
41
|
+
},
|
|
39
42
|
// TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
|
|
40
43
|
configVikePromise: Promise.resolve({
|
|
41
44
|
prerender: (0, context_js_2.isPrerenderEnabled)(vikeConfig)
|
|
@@ -15,8 +15,8 @@ const getVikeConfig_js_1 = require("./v1-design/getVikeConfig.js");
|
|
|
15
15
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
16
16
|
const loggerNotProd_js_1 = require("../../shared/loggerNotProd.js");
|
|
17
17
|
const getFilePath_js_1 = require("../../shared/getFilePath.js");
|
|
18
|
-
const getPlusFilesAll_js_1 = require("./v1-design/getVikeConfig/getPlusFilesAll.js");
|
|
19
18
|
const globalContext_js_1 = require("../../../runtime/globalContext.js");
|
|
19
|
+
const crawlPlusFiles_js_1 = require("./v1-design/getVikeConfig/crawlPlusFiles.js");
|
|
20
20
|
function importUserCode() {
|
|
21
21
|
let config;
|
|
22
22
|
let vikeConfig;
|
|
@@ -73,50 +73,55 @@ function handleFileAddRemove(server, config) {
|
|
|
73
73
|
return;
|
|
74
74
|
function listener(file, isRemove) {
|
|
75
75
|
file = (0, vite_1.normalizePath)(file);
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const virtualModules = getVirtualModules(server);
|
|
79
|
-
virtualModules.forEach((mod) => {
|
|
80
|
-
server.moduleGraph.invalidateModule(mod);
|
|
81
|
-
});
|
|
76
|
+
if ((0, crawlPlusFiles_js_1.isPlusFile)(file) || isVikeConfigDependency(file, server.moduleGraph)?.modifiesVikeVirtualFiles) {
|
|
77
|
+
invalidateVikeVirtualFiles(server);
|
|
82
78
|
reloadConfig(file, config, isRemove ? 'removed' : 'created');
|
|
83
79
|
}
|
|
84
80
|
}
|
|
85
81
|
}
|
|
82
|
+
function invalidateVikeVirtualFiles(server) {
|
|
83
|
+
const vikeVirtualFiles = getVikeVirtualFiles(server);
|
|
84
|
+
vikeVirtualFiles.forEach((mod) => {
|
|
85
|
+
server.moduleGraph.invalidateModule(mod);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
86
88
|
function handleHotUpdate(ctx, config) {
|
|
87
89
|
const { file, server } = ctx;
|
|
88
|
-
const isVikeConfig =
|
|
89
|
-
const isViteModule = ctx.modules.length > 0;
|
|
90
|
-
/* Should we show this?
|
|
91
|
-
// - Can be useful for server files that aren't processed by Vite.
|
|
92
|
-
// - Can be annoying for files that obviously aren't processed by Vite.
|
|
93
|
-
if (!isVikeConfig && !isViteModule) {
|
|
94
|
-
logViteAny(
|
|
95
|
-
`${msg} — ${pc.cyan('no HMR')}, see https://vike.dev/on-demand-compiler`,
|
|
96
|
-
'info',
|
|
97
|
-
null,
|
|
98
|
-
true
|
|
99
|
-
)
|
|
100
|
-
return
|
|
101
|
-
}
|
|
102
|
-
//*/
|
|
103
|
-
// It can hide an error it shouldn't hide (because the error isn't shown again), but it's ok since users can reload the page and the error will be shown again (Vite transpilation errors are shown again upon a page reload).
|
|
104
|
-
if (!isVikeConfig && isViteModule) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
90
|
+
const isVikeConfig = isVikeConfigDependency(ctx.file, ctx.server.moduleGraph);
|
|
107
91
|
if (isVikeConfig) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
92
|
+
if (isVikeConfig.modifiesVikeVirtualFiles) {
|
|
93
|
+
/* Tailwind breaks this assertion, see https://github.com/vikejs/vike/discussions/1330#discussioncomment-7787238
|
|
94
|
+
const isViteModule = ctx.modules.length > 0
|
|
95
|
+
assert(!isViteModule)
|
|
96
|
+
*/
|
|
97
|
+
// Ensure server.ssrLoadModule() loads fresh Vike virtual files (`reloadConfig()` > `updateUserFiles()` > `server.ssrLoadModule()`)
|
|
98
|
+
invalidateVikeVirtualFiles(server);
|
|
99
|
+
reloadConfig(file, config, 'modified');
|
|
100
|
+
// Triggers a full page reload
|
|
101
|
+
const vikeVirtualFiles = getVikeVirtualFiles(server);
|
|
102
|
+
return vikeVirtualFiles;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// Ensure we invalidate `file` *before* server.ssrLoadModule() in updateUserFiles()
|
|
106
|
+
// Vite already invalidates it, but possibly *after* handleHotUpdate() and thus after server.ssrLoadModule()
|
|
107
|
+
ctx.modules.forEach((mod) => server.moduleGraph.invalidateModule(mod));
|
|
108
|
+
(0, globalContext_js_1.updateUserFiles)();
|
|
109
|
+
}
|
|
114
110
|
}
|
|
115
111
|
}
|
|
116
|
-
function
|
|
112
|
+
function isVikeConfigDependency(filePathAbsoluteFilesystem, moduleGraph) {
|
|
113
|
+
// Check config-only files, for example all pages/+config.js dependencies. (There aren't part of Vite's module graph.)
|
|
117
114
|
(0, utils_js_1.assertPosixPath)(filePathAbsoluteFilesystem);
|
|
118
115
|
getVikeConfig_js_1.vikeConfigDependencies.forEach((f) => (0, utils_js_1.assertPosixPath)(f));
|
|
119
|
-
|
|
116
|
+
if (getVikeConfig_js_1.vikeConfigDependencies.has(filePathAbsoluteFilesystem))
|
|
117
|
+
return { modifiesVikeVirtualFiles: true };
|
|
118
|
+
// Check using Vite's module graph, for example all +htmlAttributes dependencies.
|
|
119
|
+
// Alternatively, simply call updateUserFiles() on every handleHotUpdate() call.
|
|
120
|
+
const importers = getImporters(filePathAbsoluteFilesystem, moduleGraph);
|
|
121
|
+
const isPlusValueFileDependency = Array.from(importers).some((importer) => importer.file && (0, crawlPlusFiles_js_1.isPlusFile)(importer.file));
|
|
122
|
+
if (isPlusValueFileDependency)
|
|
123
|
+
return { modifiesVikeVirtualFiles: false };
|
|
124
|
+
return null;
|
|
120
125
|
}
|
|
121
126
|
function reloadConfig(filePath, config, op) {
|
|
122
127
|
{
|
|
@@ -127,16 +132,45 @@ function reloadConfig(filePath, config, op) {
|
|
|
127
132
|
(0, getVikeConfig_js_1.reloadVikeConfig)(config);
|
|
128
133
|
(0, globalContext_js_1.updateUserFiles)();
|
|
129
134
|
}
|
|
130
|
-
function
|
|
131
|
-
const
|
|
135
|
+
function getVikeVirtualFiles(server) {
|
|
136
|
+
const vikeVirtualFiles = Array.from(server.moduleGraph.urlToModuleMap.keys())
|
|
132
137
|
.filter((url) => (0, virtualFilePageConfigValuesAll_js_1.isVirtualFileIdPageConfigValuesAll)(url) || (0, virtualFileImportUserCode_js_1.isVirtualFileIdImportUserCode)(url))
|
|
133
138
|
.map((url) => {
|
|
134
139
|
const mod = server.moduleGraph.urlToModuleMap.get(url);
|
|
135
140
|
(0, utils_js_1.assert)(mod);
|
|
136
141
|
return mod;
|
|
137
142
|
});
|
|
138
|
-
return
|
|
143
|
+
return vikeVirtualFiles;
|
|
144
|
+
}
|
|
145
|
+
// Get all transitive importers (including the module itself)
|
|
146
|
+
function getImporters(file, moduleGraph) {
|
|
147
|
+
const importers = new Set();
|
|
148
|
+
const mods = moduleGraph.getModulesByFile(file);
|
|
149
|
+
if (!mods)
|
|
150
|
+
return importers;
|
|
151
|
+
for (const mod of mods) {
|
|
152
|
+
getModuleImporters(mod).forEach((importer) => {
|
|
153
|
+
if (importer)
|
|
154
|
+
importers.add(importer);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return importers;
|
|
139
158
|
}
|
|
140
|
-
function
|
|
141
|
-
|
|
159
|
+
function getModuleImporters(mod, seen = new Set()) {
|
|
160
|
+
if (seen.has(mod))
|
|
161
|
+
return new Set();
|
|
162
|
+
seen.add(mod);
|
|
163
|
+
const importers = new Set();
|
|
164
|
+
if (mod.id)
|
|
165
|
+
importers.add(mod);
|
|
166
|
+
// Traverse through the importers (modules that import this module)
|
|
167
|
+
for (const importer of mod.importers) {
|
|
168
|
+
if (importer.id)
|
|
169
|
+
importers.add(importer);
|
|
170
|
+
getModuleImporters(importer, seen).forEach((importerTransitive) => {
|
|
171
|
+
if (importerTransitive)
|
|
172
|
+
importers.add(importerTransitive);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return importers;
|
|
142
176
|
}
|
package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js
CHANGED
|
@@ -4,6 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.crawlPlusFiles = crawlPlusFiles;
|
|
7
|
+
exports.isPlusFile = isPlusFile;
|
|
8
|
+
exports.getPlusFileValueConfigName = getPlusFileValueConfigName;
|
|
7
9
|
const utils_js_1 = require("../../../../utils.js");
|
|
8
10
|
const path_1 = __importDefault(require("path"));
|
|
9
11
|
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
@@ -54,6 +56,7 @@ async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
|
|
|
54
56
|
(0, utils_js_1.assertPosixPath)(filePath);
|
|
55
57
|
(0, utils_js_1.assert)(!filePath.startsWith(userRootDir));
|
|
56
58
|
const filePathAbsoluteUserRootDir = path_1.default.posix.join('/', filePath);
|
|
59
|
+
(0, utils_js_1.assert)(isPlusFile(filePathAbsoluteUserRootDir));
|
|
57
60
|
return { filePathAbsoluteUserRootDir };
|
|
58
61
|
});
|
|
59
62
|
return plusFiles;
|
|
@@ -228,3 +231,37 @@ function isGitCrawlDisabled() {
|
|
|
228
231
|
const crawSettings = (0, getEnvVarObject_js_1.getEnvVarObject)('VIKE_CRAWL');
|
|
229
232
|
return crawSettings?.git === false;
|
|
230
233
|
}
|
|
234
|
+
function isPlusFile(filePath) {
|
|
235
|
+
(0, utils_js_1.assertPosixPath)(filePath);
|
|
236
|
+
if ((0, transpileAndExecuteFile_js_1.isTemporaryBuildFile)(filePath))
|
|
237
|
+
return false;
|
|
238
|
+
const fileName = filePath.split('/').pop();
|
|
239
|
+
return fileName.startsWith('+');
|
|
240
|
+
}
|
|
241
|
+
function getPlusFileValueConfigName(filePath) {
|
|
242
|
+
if (!isPlusFile(filePath))
|
|
243
|
+
return null;
|
|
244
|
+
const fileName = path_1.default.posix.basename(filePath);
|
|
245
|
+
// assertNoUnexpectedPlusSign(filePath, fileName)
|
|
246
|
+
const basename = fileName.split('.')[0];
|
|
247
|
+
(0, utils_js_1.assert)(basename.startsWith('+'));
|
|
248
|
+
const configName = basename.slice(1);
|
|
249
|
+
(0, utils_js_1.assertUsage)(configName !== '', `${filePath} Invalid filename ${fileName}`);
|
|
250
|
+
return configName;
|
|
251
|
+
}
|
|
252
|
+
/* https://github.com/vikejs/vike/issues/1407
|
|
253
|
+
function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
|
|
254
|
+
const dirs = path.posix.dirname(filePath).split('/')
|
|
255
|
+
dirs.forEach((dir, i) => {
|
|
256
|
+
const dirPath = dirs.slice(0, i + 1).join('/')
|
|
257
|
+
assertUsage(
|
|
258
|
+
!dir.includes('+'),
|
|
259
|
+
`Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`
|
|
260
|
+
)
|
|
261
|
+
})
|
|
262
|
+
assertUsage(
|
|
263
|
+
!fileName.slice(1).includes('+'),
|
|
264
|
+
`Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`
|
|
265
|
+
)
|
|
266
|
+
}
|
|
267
|
+
*/
|
package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js
CHANGED
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.getPlusFilesAll = getPlusFilesAll;
|
|
7
|
-
exports.getPlusFileValueConfigName = getPlusFileValueConfigName;
|
|
8
4
|
const utils_js_1 = require("../../../../utils.js");
|
|
9
5
|
const configDefinitionsBuiltIn_js_1 = require("./configDefinitionsBuiltIn.js");
|
|
10
6
|
const filesystemRouting_js_1 = require("./filesystemRouting.js");
|
|
11
|
-
const transpileAndExecuteFile_js_1 = require("./transpileAndExecuteFile.js");
|
|
12
7
|
const crawlPlusFiles_js_1 = require("./crawlPlusFiles.js");
|
|
13
8
|
const getConfigFileExport_js_1 = require("./getConfigFileExport.js");
|
|
14
9
|
const loadFileAtConfigTime_js_1 = require("./loadFileAtConfigTime.js");
|
|
15
10
|
const resolvePointerImport_js_1 = require("./resolvePointerImport.js");
|
|
16
11
|
const getFilePath_js_1 = require("../../../../shared/getFilePath.js");
|
|
17
12
|
const assertExtensions_js_1 = require("./assertExtensions.js");
|
|
18
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
19
13
|
async function getPlusFilesAll(userRootDir, esbuildCache) {
|
|
20
14
|
const plusFiles = await findPlusFiles(userRootDir, null);
|
|
21
15
|
const configFiles = [];
|
|
22
16
|
const valueFiles = [];
|
|
23
17
|
plusFiles.forEach((f) => {
|
|
24
|
-
if (getPlusFileValueConfigName(f.filePathAbsoluteFilesystem) === 'config') {
|
|
18
|
+
if ((0, crawlPlusFiles_js_1.getPlusFileValueConfigName)(f.filePathAbsoluteFilesystem) === 'config') {
|
|
25
19
|
configFiles.push(f);
|
|
26
20
|
}
|
|
27
21
|
else {
|
|
@@ -66,7 +60,7 @@ async function getPlusFilesAll(userRootDir, esbuildCache) {
|
|
|
66
60
|
...valueFiles.map(async (filePath) => {
|
|
67
61
|
const { filePathAbsoluteUserRootDir } = filePath;
|
|
68
62
|
(0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
|
|
69
|
-
const configName = getPlusFileValueConfigName(filePathAbsoluteUserRootDir);
|
|
63
|
+
const configName = (0, crawlPlusFiles_js_1.getPlusFileValueConfigName)(filePathAbsoluteUserRootDir);
|
|
70
64
|
(0, utils_js_1.assert)(configName);
|
|
71
65
|
const locationId = (0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir);
|
|
72
66
|
const plusFile = {
|
|
@@ -125,35 +119,3 @@ async function findPlusFiles(userRootDir, outDirRoot) {
|
|
|
125
119
|
const plusFiles = files.map(({ filePathAbsoluteUserRootDir }) => (0, getFilePath_js_1.getFilePathResolved)({ filePathAbsoluteUserRootDir, userRootDir }));
|
|
126
120
|
return plusFiles;
|
|
127
121
|
}
|
|
128
|
-
function getPlusFileValueConfigName(filePath) {
|
|
129
|
-
(0, utils_js_1.assertPosixPath)(filePath);
|
|
130
|
-
if ((0, transpileAndExecuteFile_js_1.isTemporaryBuildFile)(filePath))
|
|
131
|
-
return null;
|
|
132
|
-
const fileName = node_path_1.default.posix.basename(filePath);
|
|
133
|
-
// assertNoUnexpectedPlusSign(filePath, fileName)
|
|
134
|
-
const basename = fileName.split('.')[0];
|
|
135
|
-
if (!basename.startsWith('+')) {
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
const configName = basename.slice(1);
|
|
140
|
-
(0, utils_js_1.assertUsage)(configName !== '', `${filePath} Invalid filename ${fileName}`);
|
|
141
|
-
return configName;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
/* https://github.com/vikejs/vike/issues/1407
|
|
145
|
-
function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
|
|
146
|
-
const dirs = path.posix.dirname(filePath).split('/')
|
|
147
|
-
dirs.forEach((dir, i) => {
|
|
148
|
-
const dirPath = dirs.slice(0, i + 1).join('/')
|
|
149
|
-
assertUsage(
|
|
150
|
-
!dir.includes('+'),
|
|
151
|
-
`Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`
|
|
152
|
-
)
|
|
153
|
-
})
|
|
154
|
-
assertUsage(
|
|
155
|
-
!fileName.slice(1).includes('+'),
|
|
156
|
-
`Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`
|
|
157
|
-
)
|
|
158
|
-
}
|
|
159
|
-
*/
|
|
@@ -28,6 +28,7 @@ if (debugEsbuildResolve.isActivated)
|
|
|
28
28
|
debugEsbuildResolve('esbuild version', esbuild_1.version);
|
|
29
29
|
async function transpileAndExecuteFile(filePath, userRootDir, isExtensionConfig, esbuildCache) {
|
|
30
30
|
const { filePathAbsoluteFilesystem, filePathToShowToUserResolved } = filePath;
|
|
31
|
+
(0, utils_js_1.assert)(filePathAbsoluteFilesystem);
|
|
31
32
|
const fileExtension = getFileExtension(filePathAbsoluteFilesystem);
|
|
32
33
|
if (esbuildCache[filePathAbsoluteFilesystem]) {
|
|
33
34
|
return await esbuildCache[filePathAbsoluteFilesystem];
|
|
@@ -54,6 +55,7 @@ async function transpileAndExecuteFile(filePath, userRootDir, isExtensionConfig,
|
|
|
54
55
|
}
|
|
55
56
|
async function transpileFile(filePath, transformImports, userRootDir) {
|
|
56
57
|
const { filePathAbsoluteFilesystem, filePathToShowToUserResolved } = filePath;
|
|
58
|
+
(0, utils_js_1.assert)(filePathAbsoluteFilesystem);
|
|
57
59
|
(0, utils_js_1.assertPosixPath)(filePathAbsoluteFilesystem);
|
|
58
60
|
getVikeConfig_js_1.vikeConfigDependencies.add(filePathAbsoluteFilesystem);
|
|
59
61
|
if (debug.isActivated)
|
|
@@ -37,6 +37,7 @@ function reloadVikeConfig(config) {
|
|
|
37
37
|
const userRootDir = config.root;
|
|
38
38
|
const vikeVitePluginOptions = config._vikeVitePluginOptions;
|
|
39
39
|
(0, utils_js_1.assert)(vikeVitePluginOptions);
|
|
40
|
+
// TODO/now: unify with esbuildCache
|
|
40
41
|
vikeConfigDependencies.clear();
|
|
41
42
|
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, true, vikeVitePluginOptions);
|
|
42
43
|
handleReloadSideEffects();
|
|
@@ -132,7 +133,8 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
132
133
|
configDefinitions: {},
|
|
133
134
|
configValueSources: {}
|
|
134
135
|
},
|
|
135
|
-
global: (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues: {} })
|
|
136
|
+
global: (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues: {} }),
|
|
137
|
+
pages: {}
|
|
136
138
|
};
|
|
137
139
|
return dummyData;
|
|
138
140
|
}
|
|
@@ -141,15 +143,26 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
141
143
|
async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
142
144
|
const esbuildCache = {};
|
|
143
145
|
const plusFilesAll = await (0, getPlusFilesAll_js_1.getPlusFilesAll)(userRootDir, esbuildCache);
|
|
144
|
-
// assertKnownConfigs(plusFilesAll)
|
|
145
146
|
const configDefinitionsResolved = await resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache);
|
|
147
|
+
assertKnownConfigs(configDefinitionsResolved, plusFilesAll);
|
|
146
148
|
const { pageConfigGlobal, pageConfigs } = getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRootDir);
|
|
147
149
|
// interop vike(options) in vite.config.js
|
|
148
150
|
temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
|
|
149
151
|
// global
|
|
150
|
-
const
|
|
151
|
-
const global = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues });
|
|
152
|
-
|
|
152
|
+
const configValuesGlobal = getConfigValues(pageConfigGlobal);
|
|
153
|
+
const global = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues: configValuesGlobal });
|
|
154
|
+
// TODO/now DEDUPE
|
|
155
|
+
// pages
|
|
156
|
+
const pages = (0, utils_js_1.objectFromEntries)(pageConfigs.map((pageConfig) => {
|
|
157
|
+
const configValuesLocal = getConfigValues(pageConfig, true);
|
|
158
|
+
const configValues = { ...configValuesGlobal, ...configValuesLocal };
|
|
159
|
+
const page = {
|
|
160
|
+
...(0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues }),
|
|
161
|
+
route: pageConfig.routeFilesystem?.routeString ?? null
|
|
162
|
+
};
|
|
163
|
+
return [pageConfig.pageId, page];
|
|
164
|
+
}));
|
|
165
|
+
return { pageConfigs, pageConfigGlobal, global, pages };
|
|
153
166
|
}
|
|
154
167
|
async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache) {
|
|
155
168
|
const configDefinitionsGlobal = getConfigDefinitions(
|
|
@@ -289,7 +302,7 @@ function assertOnBeforeRenderEnv(pageConfig) {
|
|
|
289
302
|
// When using Server Routing, loading a onBeforeRender() hook on the client-side hasn't any effect (the Server Routing's client runtime never calls it); it unnecessarily bloats client bundle sizes
|
|
290
303
|
(0, utils_js_1.assertUsage)(!(onBeforeRenderEnv.client && !isClientRouting), `Page ${pageConfig.pageId} has an onBeforeRender() hook with env ${picocolors_1.default.cyan(JSON.stringify(onBeforeRenderEnv))} which doesn't make sense because the page is using Server Routing: onBeforeRender() can be run in the client only when using Client Routing.`);
|
|
291
304
|
}
|
|
292
|
-
function getConfigValues(pageConfig) {
|
|
305
|
+
function getConfigValues(pageConfig, tolerateMissingValue) {
|
|
293
306
|
const configValues = {};
|
|
294
307
|
(0, serializeConfigValues_js_1.getConfigValuesBase)(pageConfig, (configEnv) => !!configEnv.config, null).forEach((entry) => {
|
|
295
308
|
if (entry.configValueBase.type === 'computed') {
|
|
@@ -300,7 +313,11 @@ function getConfigValues(pageConfig) {
|
|
|
300
313
|
if (entry.configValueBase.type === 'standard') {
|
|
301
314
|
(0, utils_js_1.assert)('sourceRelevant' in entry); // Help TS
|
|
302
315
|
const { configValueBase, sourceRelevant, configName } = entry;
|
|
303
|
-
(
|
|
316
|
+
if (!sourceRelevant.valueIsLoaded) {
|
|
317
|
+
if (tolerateMissingValue)
|
|
318
|
+
return;
|
|
319
|
+
(0, utils_js_1.assert)(false);
|
|
320
|
+
}
|
|
304
321
|
const { value } = sourceRelevant;
|
|
305
322
|
configValues[configName] = { ...configValueBase, value };
|
|
306
323
|
}
|
|
@@ -309,9 +326,18 @@ function getConfigValues(pageConfig) {
|
|
|
309
326
|
const { configValueBase, sourcesRelevant, configName } = entry;
|
|
310
327
|
const values = [];
|
|
311
328
|
sourcesRelevant.forEach((source) => {
|
|
312
|
-
(
|
|
329
|
+
if (!source.valueIsLoaded) {
|
|
330
|
+
if (tolerateMissingValue)
|
|
331
|
+
return;
|
|
332
|
+
(0, utils_js_1.assert)(false);
|
|
333
|
+
}
|
|
313
334
|
values.push(source.value);
|
|
314
335
|
});
|
|
336
|
+
if (values.length === 0) {
|
|
337
|
+
if (tolerateMissingValue)
|
|
338
|
+
return;
|
|
339
|
+
(0, utils_js_1.assert)(false);
|
|
340
|
+
}
|
|
315
341
|
configValues[configName] = { ...configValueBase, value: values };
|
|
316
342
|
}
|
|
317
343
|
});
|
|
@@ -356,7 +382,6 @@ function getPlusFilesRelevant(plusFilesAll, locationIdPage) {
|
|
|
356
382
|
return plusFilesRelevant;
|
|
357
383
|
}
|
|
358
384
|
function sortForGlobal(plusFilesAll) {
|
|
359
|
-
const locationIdsAll = (0, utils_js_1.objectKeys)(plusFilesAll);
|
|
360
385
|
const plusFilesAllSorted = Object.fromEntries((0, utils_js_1.objectEntries)(plusFilesAll)
|
|
361
386
|
.sort((0, utils_js_1.lowerFirst)(([locationId]) => locationId.split('/').length))
|
|
362
387
|
.sort((0, utils_js_1.makeFirst)(([locationId]) => isGlobalLocation(locationId, plusFilesAll))));
|
|
@@ -753,13 +778,13 @@ function getComputed(configValueSources, configDefinitions) {
|
|
|
753
778
|
return configValuesComputed;
|
|
754
779
|
}
|
|
755
780
|
// Show error message upon unknown config
|
|
756
|
-
function assertKnownConfigs(plusFilesAll) {
|
|
781
|
+
function assertKnownConfigs(configDefinitionsResolved, plusFilesAll) {
|
|
757
782
|
const configDefinitionsAll = getConfigDefinitions(plusFilesAll);
|
|
758
783
|
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
const configDefinitionsLocal =
|
|
762
|
-
const configNamesKnownLocal = Object.keys(configDefinitionsLocal);
|
|
784
|
+
const configNamesGlobal = Object.keys(configDefinitionsResolved.configDefinitionsGlobal);
|
|
785
|
+
(0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsLocal).forEach(([_locationId, { configDefinitions, plusFiles }]) => {
|
|
786
|
+
const configDefinitionsLocal = configDefinitions;
|
|
787
|
+
const configNamesKnownLocal = [...Object.keys(configDefinitionsLocal), ...configNamesGlobal];
|
|
763
788
|
plusFiles.forEach((plusFile) => {
|
|
764
789
|
const configNames = getDefiningConfigNames(plusFile);
|
|
765
790
|
configNames.forEach((configName) => {
|
|
@@ -21,7 +21,7 @@ exports.assertBuildInfo = assertBuildInfo;
|
|
|
21
21
|
exports.getViteConfigRuntime = getViteConfigRuntime;
|
|
22
22
|
exports.updateUserFiles = updateUserFiles;
|
|
23
23
|
// The core logic revolves around:
|
|
24
|
-
// - globalObject.userFiles which is the main requirement for
|
|
24
|
+
// - globalObject.userFiles which is the main requirement for resolveGlobalContext()
|
|
25
25
|
// - In production: globalObject.buildEntry which is the production entry set by @brillout/vite-plugin-server-entry
|
|
26
26
|
// - loadBuildEntry() sets globalObject.buildEntry and then sets globalObject.userFiles
|
|
27
27
|
// - With vike-server it's set at server start: @brillout/vite-plugin-server-entry injects `import './entry.mjs'` (the production entry generated by @brillout/vite-plugin-server-entry) as first line of code of dist/server/index.mjs while dist/server/entry.mjs calls setGlobalContext_buildEntry()
|
|
@@ -35,6 +35,7 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
|
35
35
|
const loadPageRoutes_js_1 = require("../../shared/route/loadPageRoutes.js");
|
|
36
36
|
const assertV1Design_js_1 = require("../shared/assertV1Design.js");
|
|
37
37
|
const getPageConfigsRuntime_js_1 = require("../../shared/getPageConfigsRuntime.js");
|
|
38
|
+
const resolveBase_js_1 = require("../shared/resolveBase.js");
|
|
38
39
|
const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
|
|
39
40
|
const globalObject = (0, utils_js_1.getGlobalObject)('globalContext.ts', getInitialGlobalContext());
|
|
40
41
|
async function getGlobalContextInternal() {
|
|
@@ -78,8 +79,14 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
78
79
|
return globalContext_public;
|
|
79
80
|
}
|
|
80
81
|
function makePublic(globalContext) {
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
const globalContextPublic = (0, utils_js_1.makePublicCopy)(globalContext, 'globalContext', [
|
|
83
|
+
'assetsManifest',
|
|
84
|
+
'config',
|
|
85
|
+
'viteConfig',
|
|
86
|
+
'pages',
|
|
87
|
+
'baseServer',
|
|
88
|
+
'baseAssets'
|
|
89
|
+
]);
|
|
83
90
|
return globalContextPublic;
|
|
84
91
|
}
|
|
85
92
|
async function setGlobalContext_viteDevServer(viteDevServer) {
|
|
@@ -183,7 +190,7 @@ function setIsProduction(isProduction) {
|
|
|
183
190
|
globalObject.isProduction = isProduction;
|
|
184
191
|
}
|
|
185
192
|
function defineGlobalContext() {
|
|
186
|
-
const globalContext =
|
|
193
|
+
const globalContext = resolveGlobalContext();
|
|
187
194
|
assertIsDefined(globalContext);
|
|
188
195
|
const globalContext_public = makePublic(globalContext);
|
|
189
196
|
(0, utils_js_1.objectAssign)(globalContext, { globalContext_public });
|
|
@@ -192,7 +199,7 @@ function defineGlobalContext() {
|
|
|
192
199
|
assertGlobalContextIsDefined();
|
|
193
200
|
(0, utils_js_1.onSetupRuntime)();
|
|
194
201
|
}
|
|
195
|
-
function
|
|
202
|
+
function resolveGlobalContext() {
|
|
196
203
|
const { viteDevServer, viteConfig, isPrerendering, isProduction, userFiles } = globalObject;
|
|
197
204
|
(0, utils_js_1.assert)(typeof isProduction === 'boolean');
|
|
198
205
|
let globalContext;
|
|
@@ -211,7 +218,8 @@ function assembleGlobalContext() {
|
|
|
211
218
|
viteDevServer,
|
|
212
219
|
viteConfig,
|
|
213
220
|
...userFiles,
|
|
214
|
-
viteConfigRuntime
|
|
221
|
+
viteConfigRuntime,
|
|
222
|
+
...resolveBaseRuntime(viteConfigRuntime, userFiles.config)
|
|
215
223
|
};
|
|
216
224
|
}
|
|
217
225
|
else {
|
|
@@ -228,7 +236,8 @@ function assembleGlobalContext() {
|
|
|
228
236
|
...userFiles,
|
|
229
237
|
viteDevServer: null,
|
|
230
238
|
viteConfigRuntime: buildInfo.viteConfigRuntime,
|
|
231
|
-
usesClientRouter: buildInfo.usesClientRouter
|
|
239
|
+
usesClientRouter: buildInfo.usesClientRouter,
|
|
240
|
+
...resolveBaseRuntime(buildInfo.viteConfigRuntime, userFiles.config)
|
|
232
241
|
};
|
|
233
242
|
if (isPrerendering) {
|
|
234
243
|
(0, utils_js_1.assert)(viteConfig);
|
|
@@ -253,7 +262,7 @@ async function getUserFiles() {
|
|
|
253
262
|
const globalObject_ = globalObject;
|
|
254
263
|
const { pageConfigsRuntime } = globalObject_;
|
|
255
264
|
(0, utils_js_1.assert)(pageConfigsRuntime);
|
|
256
|
-
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig } = pageConfigsRuntime;
|
|
265
|
+
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig, pageConfigsUserFriendly } = pageConfigsRuntime;
|
|
257
266
|
const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
258
267
|
const userFiles = {
|
|
259
268
|
pageFilesAll,
|
|
@@ -262,6 +271,7 @@ async function getUserFiles() {
|
|
|
262
271
|
allPageIds,
|
|
263
272
|
pageRoutes,
|
|
264
273
|
onBeforeRouteHook,
|
|
274
|
+
pages: pageConfigsUserFriendly,
|
|
265
275
|
config: globalConfig.config
|
|
266
276
|
};
|
|
267
277
|
(0, assertV1Design_js_1.assertV1Design)(
|
|
@@ -396,3 +406,9 @@ function getInitialGlobalContext() {
|
|
|
396
406
|
viteDevServerPromiseResolve
|
|
397
407
|
};
|
|
398
408
|
}
|
|
409
|
+
function resolveBaseRuntime(viteConfigRuntime, config) {
|
|
410
|
+
const baseViteOriginal = viteConfigRuntime._baseViteOriginal;
|
|
411
|
+
const baseServerUnresolved = config.baseServer ?? null;
|
|
412
|
+
const baseAssetsUnresolved = config.baseAssets ?? null;
|
|
413
|
+
return (0, resolveBase_js_1.resolveBase)(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved);
|
|
414
|
+
}
|
|
@@ -22,7 +22,6 @@ const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePa
|
|
|
22
22
|
const executeGuardHook_js_1 = require("../../../shared/route/executeGuardHook.js");
|
|
23
23
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
24
24
|
const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
|
|
25
|
-
const resolveBase_js_1 = require("../../shared/resolveBase.js");
|
|
26
25
|
async function renderPageAlreadyRouted(pageContext) {
|
|
27
26
|
// pageContext.pageId can either be the:
|
|
28
27
|
// - ID of the page matching the routing, or the
|
|
@@ -117,14 +116,13 @@ async function getPageContextInitEnhanced(pageContextInit, globalContext, { ssr:
|
|
|
117
116
|
isClientSideNavigation: false
|
|
118
117
|
} } = {}) {
|
|
119
118
|
(0, utils_js_1.assert)(pageContextInit.urlOriginal);
|
|
120
|
-
const { baseServer, baseAssets } = (0, resolveBase_js_1.resolveBaseRuntime)(globalContext);
|
|
121
119
|
const pageContextInitEnhanced = {};
|
|
122
120
|
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextInit);
|
|
123
121
|
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, {
|
|
124
122
|
_objectCreatedByVike: true,
|
|
125
123
|
// The following is defined on `pageContext` because we can eventually make these non-global
|
|
126
|
-
_baseServer: baseServer,
|
|
127
|
-
_baseAssets: baseAssets,
|
|
124
|
+
_baseServer: globalContext.baseServer,
|
|
125
|
+
_baseAssets: globalContext.baseAssets,
|
|
128
126
|
// TODO/now: add meta.default
|
|
129
127
|
_includeAssetsImportedByServer: globalContext.config.includeAssetsImportedByServer ?? true,
|
|
130
128
|
// TODO/soon: use GloablContext instead
|
|
@@ -23,7 +23,6 @@ const error_page_js_1 = require("../../shared/error-page.js");
|
|
|
23
23
|
const handleErrorWithoutErrorPage_js_1 = require("./renderPage/handleErrorWithoutErrorPage.js");
|
|
24
24
|
const loadUserFilesServerSide_js_1 = require("./renderPage/loadUserFilesServerSide.js");
|
|
25
25
|
const resolveRedirects_js_1 = require("./renderPage/resolveRedirects.js");
|
|
26
|
-
const resolveBase_js_1 = require("../shared/resolveBase.js");
|
|
27
26
|
const globalObject = (0, utils_js_1.getGlobalObject)('runtime/renderPage.ts', {
|
|
28
27
|
httpRequestsCount: 0
|
|
29
28
|
});
|
|
@@ -343,7 +342,6 @@ function assertIsNotViteRequest(urlPathname, urlOriginal) {
|
|
|
343
342
|
(0, utils_js_1.assertUsage)(false, `${picocolors_1.default.code('renderPage(pageContextInit)')} called with ${picocolors_1.default.code(`pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`)} which is unexpected because the URL ${picocolors_1.default.bold(urlOriginal)} should have already been handled by the development middleware: make sure the ${picocolors_1.default.cyan('createDevMiddleware()')} middleware is executed *before* the ${picocolors_1.default.cyan('renderPage()')} middleware, see ${picocolors_1.default.underline('https://vike.dev/renderPage')}`);
|
|
344
343
|
}
|
|
345
344
|
async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
346
|
-
const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)(globalContext);
|
|
347
345
|
const { trailingSlash, disableUrlNormalization } = globalContext.config;
|
|
348
346
|
if (disableUrlNormalization)
|
|
349
347
|
return null;
|
|
@@ -351,7 +349,7 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
|
351
349
|
const { isPageContextRequest } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
|
|
352
350
|
if (isPageContextRequest)
|
|
353
351
|
return null;
|
|
354
|
-
const urlNormalized = (0, utils_js_1.normalizeUrlPathname)(urlOriginal, trailingSlash ?? false, baseServer);
|
|
352
|
+
const urlNormalized = (0, utils_js_1.normalizeUrlPathname)(urlOriginal, trailingSlash ?? false, globalContext.baseServer);
|
|
355
353
|
if (!urlNormalized)
|
|
356
354
|
return null;
|
|
357
355
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`URL normalized from ${picocolors_1.default.cyan(urlOriginal)} to ${picocolors_1.default.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
|
|
@@ -361,8 +359,7 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
|
361
359
|
return pageContextHttpResponse;
|
|
362
360
|
}
|
|
363
361
|
async function getPermanentRedirect(pageContextInit, globalContext, httpRequestId) {
|
|
364
|
-
const
|
|
365
|
-
const urlWithoutBase = (0, utils_js_1.removeBaseServer)(pageContextInit.urlOriginal, baseServer);
|
|
362
|
+
const urlWithoutBase = (0, utils_js_1.removeBaseServer)(pageContextInit.urlOriginal, globalContext.baseServer);
|
|
366
363
|
let origin = null;
|
|
367
364
|
let urlTargetExternal = null;
|
|
368
365
|
let urlTarget = (0, utils_js_1.modifyUrlPathname)(urlWithoutBase, (urlPathname) => {
|
|
@@ -393,9 +390,8 @@ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestI
|
|
|
393
390
|
}
|
|
394
391
|
if (normalize(urlTarget) === normalize(urlWithoutBase))
|
|
395
392
|
return null;
|
|
396
|
-
const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)(globalContext);
|
|
397
393
|
if (!originChanged)
|
|
398
|
-
urlTarget = (0, utils_js_1.prependBase)(urlTarget, baseServer);
|
|
394
|
+
urlTarget = (0, utils_js_1.prependBase)(urlTarget, globalContext.baseServer);
|
|
399
395
|
(0, utils_js_1.assert)(urlTarget !== pageContextInit.urlOriginal);
|
|
400
396
|
}
|
|
401
397
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
|
|
@@ -459,7 +455,7 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
|
|
|
459
455
|
return { pageContextAbort };
|
|
460
456
|
}
|
|
461
457
|
async function assertBaseUrl(pageContextInit, globalContext) {
|
|
462
|
-
const { baseServer } =
|
|
458
|
+
const { baseServer } = globalContext;
|
|
463
459
|
const { urlOriginal } = pageContextInit;
|
|
464
460
|
const { urlWithoutPageContextRequestSuffix } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
|
|
465
461
|
const { hasBaseServer } = (0, utils_js_1.parseUrl)(urlWithoutPageContextRequestSuffix, baseServer);
|