vike 0.4.221 → 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/api/prepareViteApiCall.js +18 -16
- 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/buildConfig/fixServerAssets.js +8 -10
- package/dist/cjs/node/plugin/plugins/buildConfig.js +0 -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 +64 -14
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +0 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +2 -40
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +6 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +49 -18
- package/dist/cjs/node/runtime/globalContext.js +24 -8
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +3 -3
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
- package/dist/cjs/node/runtime/renderPage.js +4 -8
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +3 -3
- package/dist/cjs/node/shared/resolveBase.js +0 -13
- package/dist/cjs/shared/getPageConfigsRuntime.js +10 -1
- package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +4 -2
- 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/cjs/utils/debug.js +9 -6
- package/dist/esm/client/client-routing-runtime/prefetch.js +1 -1
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +5 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +9 -2
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -0
- package/dist/esm/client/server-routing-runtime/getPageContext.js +4 -3
- package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +3 -2
- package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
- package/dist/esm/node/api/prepareViteApiCall.d.ts +2 -2
- package/dist/esm/node/api/prepareViteApiCall.js +18 -16
- 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/buildConfig/fixServerAssets.d.ts +0 -2
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +8 -10
- package/dist/esm/node/plugin/plugins/buildConfig.js +1 -2
- 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 +65 -15
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.d.ts +0 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +0 -5
- 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/loadFileAtConfigTime.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +6 -3
- 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 +50 -19
- 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/loadUserFilesServerSide.js +3 -3
- 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/runtime-dev/createDevMiddleware.js +3 -3
- 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 +8 -2
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +4 -2
- 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/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +9 -6
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +1 -1
|
@@ -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(
|
|
@@ -235,10 +248,9 @@ function assertPageConfigGlobal(pageConfigGlobal, plusFilesAll) {
|
|
|
235
248
|
});
|
|
236
249
|
}
|
|
237
250
|
function assertGlobalConfigLocation(configName, sources, plusFilesAll, configDefinitionsGlobal) {
|
|
238
|
-
const locationIdsAll = (0, utils_js_1.objectKeys)(plusFilesAll);
|
|
239
251
|
// Determine existing global +config.js files
|
|
240
252
|
const configFilePathsGlobal = [];
|
|
241
|
-
const plusFilesGlobal = Object.values((0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(plusFilesAll).filter(([locationId]) =>
|
|
253
|
+
const plusFilesGlobal = Object.values((0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(plusFilesAll).filter(([locationId]) => isGlobalLocation(locationId, plusFilesAll)))).flat();
|
|
242
254
|
plusFilesGlobal
|
|
243
255
|
.filter((i) => i.isConfigFile)
|
|
244
256
|
.forEach((plusFile) => {
|
|
@@ -257,7 +269,7 @@ function assertGlobalConfigLocation(configName, sources, plusFilesAll, configDef
|
|
|
257
269
|
if (!filePathAbsoluteUserRootDir)
|
|
258
270
|
return;
|
|
259
271
|
(0, utils_js_1.assert)(!plusFile.isExtensionConfig);
|
|
260
|
-
if (!
|
|
272
|
+
if (!isGlobalLocation(source.locationId, plusFilesAll)) {
|
|
261
273
|
const configDef = configDefinitionsGlobal[configName];
|
|
262
274
|
(0, utils_js_1.assert)(configDef);
|
|
263
275
|
const isConditionallyGlobal = (0, utils_js_1.isCallable)(configDef.global);
|
|
@@ -290,7 +302,7 @@ function assertOnBeforeRenderEnv(pageConfig) {
|
|
|
290
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
|
|
291
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.`);
|
|
292
304
|
}
|
|
293
|
-
function getConfigValues(pageConfig) {
|
|
305
|
+
function getConfigValues(pageConfig, tolerateMissingValue) {
|
|
294
306
|
const configValues = {};
|
|
295
307
|
(0, serializeConfigValues_js_1.getConfigValuesBase)(pageConfig, (configEnv) => !!configEnv.config, null).forEach((entry) => {
|
|
296
308
|
if (entry.configValueBase.type === 'computed') {
|
|
@@ -301,7 +313,11 @@ function getConfigValues(pageConfig) {
|
|
|
301
313
|
if (entry.configValueBase.type === 'standard') {
|
|
302
314
|
(0, utils_js_1.assert)('sourceRelevant' in entry); // Help TS
|
|
303
315
|
const { configValueBase, sourceRelevant, configName } = entry;
|
|
304
|
-
(
|
|
316
|
+
if (!sourceRelevant.valueIsLoaded) {
|
|
317
|
+
if (tolerateMissingValue)
|
|
318
|
+
return;
|
|
319
|
+
(0, utils_js_1.assert)(false);
|
|
320
|
+
}
|
|
305
321
|
const { value } = sourceRelevant;
|
|
306
322
|
configValues[configName] = { ...configValueBase, value };
|
|
307
323
|
}
|
|
@@ -310,9 +326,18 @@ function getConfigValues(pageConfig) {
|
|
|
310
326
|
const { configValueBase, sourcesRelevant, configName } = entry;
|
|
311
327
|
const values = [];
|
|
312
328
|
sourcesRelevant.forEach((source) => {
|
|
313
|
-
(
|
|
329
|
+
if (!source.valueIsLoaded) {
|
|
330
|
+
if (tolerateMissingValue)
|
|
331
|
+
return;
|
|
332
|
+
(0, utils_js_1.assert)(false);
|
|
333
|
+
}
|
|
314
334
|
values.push(source.value);
|
|
315
335
|
});
|
|
336
|
+
if (values.length === 0) {
|
|
337
|
+
if (tolerateMissingValue)
|
|
338
|
+
return;
|
|
339
|
+
(0, utils_js_1.assert)(false);
|
|
340
|
+
}
|
|
316
341
|
configValues[configName] = { ...configValueBase, value: values };
|
|
317
342
|
}
|
|
318
343
|
});
|
|
@@ -357,10 +382,9 @@ function getPlusFilesRelevant(plusFilesAll, locationIdPage) {
|
|
|
357
382
|
return plusFilesRelevant;
|
|
358
383
|
}
|
|
359
384
|
function sortForGlobal(plusFilesAll) {
|
|
360
|
-
const locationIdsAll = (0, utils_js_1.objectKeys)(plusFilesAll);
|
|
361
385
|
const plusFilesAllSorted = Object.fromEntries((0, utils_js_1.objectEntries)(plusFilesAll)
|
|
362
386
|
.sort((0, utils_js_1.lowerFirst)(([locationId]) => locationId.split('/').length))
|
|
363
|
-
.sort((0, utils_js_1.makeFirst)(([locationId]) =>
|
|
387
|
+
.sort((0, utils_js_1.makeFirst)(([locationId]) => isGlobalLocation(locationId, plusFilesAll))));
|
|
364
388
|
return plusFilesAllSorted;
|
|
365
389
|
}
|
|
366
390
|
function resolveConfigValueSources(configName, configDef, plusFilesRelevant, userRootDir, isGlobal) {
|
|
@@ -754,13 +778,13 @@ function getComputed(configValueSources, configDefinitions) {
|
|
|
754
778
|
return configValuesComputed;
|
|
755
779
|
}
|
|
756
780
|
// Show error message upon unknown config
|
|
757
|
-
function assertKnownConfigs(plusFilesAll) {
|
|
781
|
+
function assertKnownConfigs(configDefinitionsResolved, plusFilesAll) {
|
|
758
782
|
const configDefinitionsAll = getConfigDefinitions(plusFilesAll);
|
|
759
783
|
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
const configDefinitionsLocal =
|
|
763
|
-
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];
|
|
764
788
|
plusFiles.forEach((plusFile) => {
|
|
765
789
|
const configNames = getDefiningConfigNames(plusFile);
|
|
766
790
|
configNames.forEach((configName) => {
|
|
@@ -932,3 +956,10 @@ function resolveConfigEnv(configEnv, filePath) {
|
|
|
932
956
|
}
|
|
933
957
|
return configEnvResolved;
|
|
934
958
|
}
|
|
959
|
+
/** Whether configs defined in `locationId` apply to every page */
|
|
960
|
+
function isGlobalLocation(locationId, plusFilesAll) {
|
|
961
|
+
const locationIdsPage = (0, utils_js_1.objectEntries)(plusFilesAll)
|
|
962
|
+
.filter(([_locationId, plusFiles]) => isDefiningPage(plusFiles))
|
|
963
|
+
.map(([locationId]) => locationId);
|
|
964
|
+
return locationIdsPage.every((locId) => (0, filesystemRouting_js_1.isInherited)(locationId, locId));
|
|
965
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -14,7 +14,7 @@ async function loadUserFilesServerSide(pageContext) {
|
|
|
14
14
|
const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig?
|
|
15
15
|
const globalContext = pageContext._globalContext;
|
|
16
16
|
const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
|
|
17
|
-
loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext.pageId, !globalContext.isProduction),
|
|
17
|
+
loadPageUserFiles(pageContext._pageFilesAll, pageConfig, globalContext.pageConfigGlobal, pageContext.pageId, !globalContext.isProduction),
|
|
18
18
|
(0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext.pageId, { sharedPageFilesAlreadyLoaded: true })
|
|
19
19
|
]);
|
|
20
20
|
const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = await (0, analyzePage_js_1.analyzePage)(pageContext._pageFilesAll, pageConfig, pageContext.pageId, globalContext);
|
|
@@ -98,11 +98,11 @@ async function loadUserFilesServerSide(pageContext) {
|
|
|
98
98
|
}
|
|
99
99
|
return pageContextAddendum;
|
|
100
100
|
}
|
|
101
|
-
async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
|
|
101
|
+
async function loadPageUserFiles(pageFilesAll, pageConfig, pageConfigGlobal, pageId, isDev) {
|
|
102
102
|
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(pageFilesAll, pageId);
|
|
103
103
|
const pageConfigLoaded = !pageConfig ? null : await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, isDev);
|
|
104
104
|
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
105
|
-
const pageContextExports = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyOld)(pageFilesServerSide, pageConfigLoaded);
|
|
105
|
+
const pageContextExports = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyOld)(pageFilesServerSide, pageConfigLoaded, pageConfigGlobal);
|
|
106
106
|
return {
|
|
107
107
|
pageContextExports,
|
|
108
108
|
pageFilesLoaded: pageFilesServerSide
|
|
@@ -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);
|
|
@@ -11,7 +11,7 @@ const globalContext_js_1 = require("../runtime/globalContext.js");
|
|
|
11
11
|
*/
|
|
12
12
|
async function createDevMiddleware(options = {}) {
|
|
13
13
|
(0, globalContext_js_1.setGlobalContext_isProduction)(false);
|
|
14
|
-
const
|
|
14
|
+
const viteConfigFromOptions = {
|
|
15
15
|
...options.viteConfig,
|
|
16
16
|
server: {
|
|
17
17
|
...options.viteConfig?.server,
|
|
@@ -19,8 +19,8 @@ async function createDevMiddleware(options = {}) {
|
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
if (options.root)
|
|
22
|
-
|
|
23
|
-
const { viteConfigEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(
|
|
22
|
+
viteConfigFromOptions.root = options.root;
|
|
23
|
+
const { viteConfigEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(viteConfigFromOptions, 'dev');
|
|
24
24
|
const server = await (0, vite_1.createServer)(viteConfigEnhanced);
|
|
25
25
|
const devMiddleware = server.middlewares;
|
|
26
26
|
return { devMiddleware, viteServer: server, viteConfig: server.config };
|
|
@@ -4,21 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.resolveBase = resolveBase;
|
|
7
|
-
exports.resolveBaseRuntime = resolveBaseRuntime;
|
|
8
|
-
exports.resolveBaseFromResolvedConfig = resolveBaseFromResolvedConfig;
|
|
9
7
|
const utils_js_1 = require("./utils.js");
|
|
10
8
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
11
|
-
function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
|
|
12
|
-
let baseViteOriginal = config._baseViteOriginal;
|
|
13
|
-
(0, utils_js_1.assert)(baseViteOriginal === null || typeof baseViteOriginal == 'string');
|
|
14
|
-
return resolveBase(baseViteOriginal, baseServer, baseAssets);
|
|
15
|
-
}
|
|
16
|
-
function resolveBaseRuntime(globalContext) {
|
|
17
|
-
const baseViteOriginal = globalContext.viteConfigRuntime._baseViteOriginal;
|
|
18
|
-
const baseServerUnresolved = globalContext.config.baseServer ?? null;
|
|
19
|
-
const baseAssetsUnresolved = globalContext.config.baseAssets ?? null;
|
|
20
|
-
return resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved);
|
|
21
|
-
}
|
|
22
9
|
function resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved) {
|
|
23
10
|
if (baseViteOriginal === '/__UNSET__')
|
|
24
11
|
baseViteOriginal = null;
|
|
@@ -10,7 +10,16 @@ function getPageConfigsRuntime(virtualFileExports) {
|
|
|
10
10
|
const allPageIds = getAllPageIds(pageFilesAll, pageConfigs);
|
|
11
11
|
// TODO/now: re-use this call, instead of calling it twice
|
|
12
12
|
const globalConfig = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)(pageConfigGlobal);
|
|
13
|
-
|
|
13
|
+
// TODO/now DEDUPE
|
|
14
|
+
const pageConfigsUserFriendly = Object.fromEntries(pageConfigs.map((pageConfig) => {
|
|
15
|
+
const configValues = { ...pageConfigGlobal.configValues, ...pageConfig.configValues };
|
|
16
|
+
const page = {
|
|
17
|
+
...(0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues }),
|
|
18
|
+
route: pageConfig.routeFilesystem?.routeString ?? null
|
|
19
|
+
};
|
|
20
|
+
return [pageConfig.pageId, page];
|
|
21
|
+
}));
|
|
22
|
+
return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig, pageConfigsUserFriendly };
|
|
14
23
|
}
|
|
15
24
|
function getAllPageIds(pageFilesAll, pageConfigs) {
|
|
16
25
|
const fileIds = pageFilesAll.filter(({ isDefaultPageFile }) => !isDefaultPageFile).map(({ pageId }) => pageId);
|
|
@@ -19,7 +19,7 @@ function getPageConfigUserFriendlyNew(pageConfig) {
|
|
|
19
19
|
_from: res.from
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
function getPageConfigUserFriendlyOld(pageFiles, pageConfig) {
|
|
22
|
+
function getPageConfigUserFriendlyOld(pageFiles, pageConfig, pageConfigGlobal) {
|
|
23
23
|
const config = {};
|
|
24
24
|
const configEntries = {}; // TODO/v1-release: remove
|
|
25
25
|
const exportsAll = {}; // TODO/v1-release: remove
|
|
@@ -44,7 +44,9 @@ function getPageConfigUserFriendlyOld(pageFiles, pageConfig) {
|
|
|
44
44
|
let sources;
|
|
45
45
|
let from;
|
|
46
46
|
if (pageConfig) {
|
|
47
|
-
const res = getPageConfigUserFriendlyV1Desin(
|
|
47
|
+
const res = getPageConfigUserFriendlyV1Desin({
|
|
48
|
+
configValues: { ...pageConfigGlobal.configValues, ...pageConfig.configValues }
|
|
49
|
+
});
|
|
48
50
|
source = res.source;
|
|
49
51
|
sources = res.sources;
|
|
50
52
|
from = res.from;
|
|
@@ -10,7 +10,7 @@ const getConfigDefinedAt_js_1 = require("../page-configs/getConfigDefinedAt.js")
|
|
|
10
10
|
const resolveRouteFunction_js_1 = require("./resolveRouteFunction.js");
|
|
11
11
|
const getHook_js_1 = require("../hooks/getHook.js");
|
|
12
12
|
async function loadPageRoutes(
|
|
13
|
-
// Remove all arguments and use
|
|
13
|
+
// Remove all arguments and use GlobalContextInternal instead?
|
|
14
14
|
pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds) {
|
|
15
15
|
// TODO/next-major: remove & make this function sync
|
|
16
16
|
await Promise.all(pageFilesAll.filter((p) => p.fileType === '.page.route').map((p) => p.loadFile?.()));
|
|
@@ -27,7 +27,7 @@ function assertSingleInstance() {
|
|
|
27
27
|
const versions = (0, unique_js_1.unique)(globalObject.instances);
|
|
28
28
|
assertUsage(versions.length <= 1,
|
|
29
29
|
// DO *NOT* patch vike to remove this error: because of multiple conflicting versions, you *will* eventually encounter insidious issues that hard to debug and potentially a security hazard, see for example https://github.com/vikejs/vike/issues/1108
|
|
30
|
-
`vike@${picocolors_1.default.bold(versions[0])} and vike@${picocolors_1.default.bold(versions[1])} loaded but
|
|
30
|
+
`vike@${picocolors_1.default.bold(versions[0])} and vike@${picocolors_1.default.bold(versions[1])} loaded but it's forbidden to load different versions`);
|
|
31
31
|
}
|
|
32
32
|
if (globalObject.checkSingleInstance && globalObject.instances.length > 1) {
|
|
33
33
|
/*/ Not sure whether circular dependency can cause problems? In principle not since client-side code is ESM.
|
package/dist/cjs/utils/debug.js
CHANGED
|
@@ -17,7 +17,9 @@ const isArray_js_1 = require("./isArray.js");
|
|
|
17
17
|
(0, assert_js_1.assert)(!(0, isBrowser_js_1.isBrowser)());
|
|
18
18
|
globalThis.__brillout_debug_createDebugger = createDebugger;
|
|
19
19
|
const flags = [
|
|
20
|
+
'vike:crawl',
|
|
20
21
|
'vike:error',
|
|
22
|
+
'vike:esbuild-resolve',
|
|
21
23
|
'vike:extractAssets',
|
|
22
24
|
'vike:extractExportNames',
|
|
23
25
|
'vike:glob',
|
|
@@ -30,9 +32,9 @@ const flags = [
|
|
|
30
32
|
'vike:routing',
|
|
31
33
|
'vike:setup',
|
|
32
34
|
'vike:stream',
|
|
33
|
-
'vike:virtual-files'
|
|
34
|
-
'vike:esbuild-resolve'
|
|
35
|
+
'vike:virtual-files'
|
|
35
36
|
];
|
|
37
|
+
const flagsSkipWildcard = ['vike:log'];
|
|
36
38
|
const flagRegex = /\bvike:[a-zA-Z-]+/g;
|
|
37
39
|
assertFlagsActivated();
|
|
38
40
|
function createDebugger(flag, optionsGlobal) {
|
|
@@ -77,8 +79,8 @@ function debug_(flag, options, ...msgs) {
|
|
|
77
79
|
function isDebugActivated(flag) {
|
|
78
80
|
(0, checkType_js_1.checkType)(flag);
|
|
79
81
|
(0, assert_js_1.assert)(flags.includes(flag));
|
|
80
|
-
const flagsActivated = getFlagsActivated();
|
|
81
|
-
const isActivated = flagsActivated.includes(flag);
|
|
82
|
+
const { flagsActivated, all } = getFlagsActivated();
|
|
83
|
+
const isActivated = flagsActivated.includes(flag) || (all && !flagsSkipWildcard.includes(flag));
|
|
82
84
|
return isActivated;
|
|
83
85
|
}
|
|
84
86
|
function formatMsg(info, options, padding, position) {
|
|
@@ -142,7 +144,7 @@ function replaceFunctionSerializer(_key, value) {
|
|
|
142
144
|
return value;
|
|
143
145
|
}
|
|
144
146
|
function assertFlagsActivated() {
|
|
145
|
-
const flagsActivated = getFlagsActivated();
|
|
147
|
+
const { flagsActivated } = getFlagsActivated();
|
|
146
148
|
flagsActivated.forEach((flag) => {
|
|
147
149
|
(0, assert_js_1.assertUsage)(flags.includes(flag), `Unknown DEBUG flag ${picocolors_1.default.cyan(flag)}. Valid flags:\n${flags.map((f) => ` ${picocolors_1.default.cyan(f)}`).join('\n')}`);
|
|
148
150
|
});
|
|
@@ -150,7 +152,8 @@ function assertFlagsActivated() {
|
|
|
150
152
|
function getFlagsActivated() {
|
|
151
153
|
const DEBUG = getDEBUG() ?? '';
|
|
152
154
|
const flagsActivated = DEBUG.match(flagRegex) ?? [];
|
|
153
|
-
|
|
155
|
+
const all = DEBUG.includes('vike:*');
|
|
156
|
+
return { flagsActivated, all };
|
|
154
157
|
}
|
|
155
158
|
function getDEBUG() {
|
|
156
159
|
let DEBUG;
|
|
@@ -45,7 +45,7 @@ function getPageContextPrefetched(pageContext) {
|
|
|
45
45
|
}
|
|
46
46
|
async function prefetchAssets(pageContextLink) {
|
|
47
47
|
try {
|
|
48
|
-
await loadUserFilesClientSide(pageContextLink.pageId, pageContextLink._pageFilesAll, pageContextLink._pageConfigs);
|
|
48
|
+
await loadUserFilesClientSide(pageContextLink.pageId, pageContextLink._pageFilesAll, pageContextLink._pageConfigs, pageContextLink._pageConfigGlobal);
|
|
49
49
|
}
|
|
50
50
|
catch (err) {
|
|
51
51
|
if (isErrorFetchingStaticAssets(err)) {
|
|
@@ -17,5 +17,10 @@ type RenderArgs = {
|
|
|
17
17
|
pageContextInitClient?: Record<string, unknown>;
|
|
18
18
|
};
|
|
19
19
|
declare function renderPageClientSide(renderArgs: RenderArgs): Promise<void>;
|
|
20
|
+
declare global {
|
|
21
|
+
var _vike: {
|
|
22
|
+
fullyRenderedUrl?: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
20
25
|
declare function disableClientRouting(err: unknown, log: boolean): void;
|
|
21
26
|
declare function getRenderCount(): number;
|
|
@@ -131,7 +131,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
131
131
|
objectAssign(pageContext, pageContextFromRoute);
|
|
132
132
|
}
|
|
133
133
|
try {
|
|
134
|
-
objectAssign(pageContext, await loadUserFilesClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs));
|
|
134
|
+
objectAssign(pageContext, await loadUserFilesClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
|
|
135
135
|
}
|
|
136
136
|
catch (err) {
|
|
137
137
|
if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
|
|
@@ -336,7 +336,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
336
336
|
return;
|
|
337
337
|
}
|
|
338
338
|
try {
|
|
339
|
-
objectAssign(pageContext, await loadUserFilesClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs));
|
|
339
|
+
objectAssign(pageContext, await loadUserFilesClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
|
|
340
340
|
}
|
|
341
341
|
catch (err) {
|
|
342
342
|
if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
|
|
@@ -484,8 +484,15 @@ async function renderPageClientSide(renderArgs) {
|
|
|
484
484
|
// Add link prefetch handlers
|
|
485
485
|
addLinkPrefetchHandlers_watch();
|
|
486
486
|
addLinkPrefetchHandlers();
|
|
487
|
+
stampFinished(urlOriginal);
|
|
487
488
|
}
|
|
488
489
|
}
|
|
490
|
+
// For Vike tests (but also potentially for Vike users)
|
|
491
|
+
// https://github.com/vikejs/vike/blob/ffbc5cf16407bcc075f414447e50d997c87c0c94/test/playground/pages/nested-layout/e2e-test.ts#L59
|
|
492
|
+
function stampFinished(urlOriginal) {
|
|
493
|
+
window._vike ?? (window._vike = {});
|
|
494
|
+
window._vike.fullyRenderedUrl = urlOriginal;
|
|
495
|
+
}
|
|
489
496
|
function changeUrl(url, overwriteLastHistoryEntry) {
|
|
490
497
|
if (getCurrentUrl() === url)
|
|
491
498
|
return;
|
|
@@ -10,6 +10,7 @@ declare function getPageContext(): Promise<{
|
|
|
10
10
|
} & {
|
|
11
11
|
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
12
12
|
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
13
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
13
14
|
} & import("../../shared/getPageFiles.js").PageConfigUserFriendly & {
|
|
14
15
|
_pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
|
|
15
16
|
}>;
|
|
@@ -6,7 +6,7 @@ import { getCurrentUrl } from '../shared/getCurrentUrl.js';
|
|
|
6
6
|
import { getPageConfigsRuntime } from '../../shared/getPageConfigsRuntime.js';
|
|
7
7
|
// @ts-ignore
|
|
8
8
|
import * as virtualFileExports from 'virtual:vike:importUserCode:client:server-routing';
|
|
9
|
-
const { pageFilesAll, pageConfigs } = getPageConfigsRuntime(virtualFileExports);
|
|
9
|
+
const { pageFilesAll, pageConfigs, pageConfigGlobal } = getPageConfigsRuntime(virtualFileExports);
|
|
10
10
|
const urlFirst = getCurrentUrl({ withoutHash: true });
|
|
11
11
|
async function getPageContext() {
|
|
12
12
|
const pageContext = getPageContextSerializedInHtml();
|
|
@@ -28,9 +28,10 @@ async function loadPageUserFiles(pageId) {
|
|
|
28
28
|
const pageContextAddendum = {};
|
|
29
29
|
objectAssign(pageContextAddendum, {
|
|
30
30
|
_pageFilesAll: pageFilesAll,
|
|
31
|
-
_pageConfigs: pageConfigs
|
|
31
|
+
_pageConfigs: pageConfigs,
|
|
32
|
+
_pageConfigGlobal: pageConfigGlobal
|
|
32
33
|
});
|
|
33
|
-
objectAssign(pageContextAddendum, await loadUserFilesClientSide(pageId, pageContextAddendum._pageFilesAll, pageContextAddendum._pageConfigs));
|
|
34
|
+
objectAssign(pageContextAddendum, await loadUserFilesClientSide(pageId, pageContextAddendum._pageFilesAll, pageContextAddendum._pageConfigs, pageContextAddendum._pageConfigGlobal));
|
|
34
35
|
pageFilesAll
|
|
35
36
|
.filter((p) => p.fileType !== '.page.server')
|
|
36
37
|
.forEach((p) => {
|
|
@@ -2,13 +2,14 @@ export { loadUserFilesClientSide };
|
|
|
2
2
|
export { isErrorFetchingStaticAssets };
|
|
3
3
|
export type { PageContextUserFiles };
|
|
4
4
|
import { type PageFile, type PageConfigUserFriendly } from '../../shared/getPageFiles.js';
|
|
5
|
-
import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
5
|
+
import type { PageConfigGlobalRuntime, PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
6
6
|
type PageContextUserFilesLoaded = PageConfigUserFriendly & {
|
|
7
7
|
_pageFilesLoaded: PageFile[];
|
|
8
8
|
};
|
|
9
9
|
type PageContextUserFiles = {
|
|
10
10
|
_pageFilesAll: PageFile[];
|
|
11
11
|
_pageConfigs: PageConfigRuntime[];
|
|
12
|
+
_pageConfigGlobal: PageConfigGlobalRuntime;
|
|
12
13
|
};
|
|
13
|
-
declare function loadUserFilesClientSide(pageId: string, pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[]): Promise<PageContextUserFilesLoaded>;
|
|
14
|
+
declare function loadUserFilesClientSide(pageId: string, pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[], pageConfigGlobal: PageConfigGlobalRuntime): Promise<PageContextUserFilesLoaded>;
|
|
14
15
|
declare function isErrorFetchingStaticAssets(err: unknown): boolean;
|