vike 0.4.219 → 0.4.220-commit-9a798ce
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/build.js +23 -58
- package/dist/cjs/node/api/context.js +6 -8
- package/dist/cjs/node/api/prepareViteApiCall.js +6 -7
- package/dist/cjs/node/api/utils.js +1 -1
- package/dist/cjs/node/cli/context.js +16 -0
- package/dist/cjs/node/cli/entry.js +2 -0
- package/dist/cjs/node/cli/utils.js +1 -0
- package/dist/cjs/{utils → node/plugin}/getOutDirs.js +11 -11
- package/dist/cjs/node/plugin/index.js +1 -7
- package/dist/cjs/node/plugin/onLoad.js +6 -1
- package/dist/cjs/node/plugin/plugins/autoFullBuild.js +43 -31
- package/dist/cjs/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/cjs/node/plugin/plugins/buildConfig.js +6 -3
- package/dist/cjs/node/plugin/plugins/buildEntry/index.js +24 -21
- package/dist/cjs/node/plugin/plugins/commonConfig.js +11 -8
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +4 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +10 -7
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +3 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/assertExtensions.js +10 -9
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +8 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +158 -176
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +3 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +3 -2
- package/dist/cjs/node/plugin/plugins/previewConfig.js +3 -4
- package/dist/cjs/node/plugin/utils.js +1 -1
- package/dist/cjs/node/prerender/context.js +26 -0
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +25 -0
- package/dist/cjs/node/prerender/runPrerender.js +64 -37
- package/dist/cjs/node/prerender/utils.js +3 -2
- package/dist/cjs/node/runtime/globalContext.js +44 -58
- package/dist/cjs/node/runtime/page-files/setup.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -3
- package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +6 -5
- package/dist/cjs/node/runtime/renderPage.js +10 -5
- package/dist/cjs/node/runtime/utils.js +3 -2
- package/dist/cjs/node/shared/resolveBase.js +9 -0
- package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +2 -2
- package/dist/cjs/shared/page-configs/loadConfigValues.js +5 -1
- package/dist/cjs/shared/utils.js +1 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assertSetup.js +15 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +34 -0
- package/dist/cjs/utils/findFile.js +3 -3
- package/dist/cjs/utils/isDev.js +4 -1
- package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +2 -2
- package/dist/cjs/utils/makePublicCopy.js +32 -0
- package/dist/cjs/utils/requireResolve.js +3 -3
- package/dist/esm/client/client-routing-runtime/history.d.ts +3 -1
- package/dist/esm/client/client-routing-runtime/history.js +23 -18
- package/dist/esm/client/client-routing-runtime/index.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/index.js +0 -1
- package/dist/esm/client/client-routing-runtime/initClientRouter.js +2 -2
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +3 -4
- package/dist/esm/client/client-routing-runtime/initOnPopState.d.ts +0 -10
- package/dist/esm/client/client-routing-runtime/initOnPopState.js +50 -62
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +15 -15
- package/dist/esm/client/client-routing-runtime/scrollRestoration.d.ts +4 -6
- package/dist/esm/client/client-routing-runtime/scrollRestoration.js +17 -12
- package/dist/esm/client/client-routing-runtime/setScrollPosition.d.ts +1 -1
- package/dist/esm/client/client-routing-runtime/setScrollPosition.js +29 -5
- package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/utils.js +1 -0
- package/dist/esm/client/shared/normalizeClientSideUrl.js +2 -3
- package/dist/esm/node/api/build.d.ts +1 -6
- package/dist/esm/node/api/build.js +20 -25
- package/dist/esm/node/api/context.d.ts +4 -4
- package/dist/esm/node/api/context.js +6 -9
- package/dist/esm/node/api/prepareViteApiCall.d.ts +0 -1
- package/dist/esm/node/api/prepareViteApiCall.js +7 -8
- package/dist/esm/node/api/utils.d.ts +1 -1
- package/dist/esm/node/api/utils.js +1 -1
- package/dist/esm/node/cli/context.d.ts +5 -0
- package/dist/esm/node/cli/context.js +14 -0
- package/dist/esm/node/cli/entry.js +2 -0
- package/dist/esm/node/cli/parseCli.d.ts +3 -1
- package/dist/esm/node/cli/utils.d.ts +1 -0
- package/dist/esm/node/cli/utils.js +1 -0
- package/dist/esm/{utils → node/plugin}/getOutDirs.js +5 -5
- package/dist/esm/node/plugin/index.d.ts +29 -1
- package/dist/esm/node/plugin/index.js +2 -8
- package/dist/esm/node/plugin/onLoad.js +7 -2
- package/dist/esm/node/plugin/plugins/autoFullBuild.js +43 -31
- package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/esm/node/plugin/plugins/buildConfig.js +7 -4
- package/dist/esm/node/plugin/plugins/buildEntry/index.d.ts +3 -3
- package/dist/esm/node/plugin/plugins/buildEntry/index.js +25 -22
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +8 -2
- package/dist/esm/node/plugin/plugins/commonConfig.js +9 -6
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +4 -2
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +10 -7
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +3 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.d.ts +3 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.js +10 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +8 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -95
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +159 -177
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +3 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +3 -2
- package/dist/esm/node/plugin/plugins/previewConfig.js +3 -4
- package/dist/esm/node/plugin/utils.js +1 -1
- package/dist/esm/node/prerender/context.d.ts +9 -0
- package/dist/esm/node/prerender/context.js +24 -0
- package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +5 -0
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +23 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +42 -1
- package/dist/esm/node/prerender/runPrerender.js +65 -38
- package/dist/esm/node/prerender/utils.d.ts +3 -2
- package/dist/esm/node/prerender/utils.js +3 -2
- package/dist/esm/node/runtime/globalContext.d.ts +15 -9
- package/dist/esm/node/runtime/globalContext.js +45 -59
- package/dist/esm/node/runtime/page-files/setup.js +1 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +5 -5
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -3
- package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +2 -0
- package/dist/esm/node/runtime/renderPage/resolveRedirects.js +5 -5
- package/dist/esm/node/runtime/renderPage.js +10 -5
- package/dist/esm/node/runtime/utils.d.ts +3 -2
- package/dist/esm/node/runtime/utils.js +3 -2
- package/dist/esm/node/shared/resolveBase.d.ts +4 -1
- package/dist/esm/node/shared/resolveBase.js +9 -0
- package/dist/esm/shared/page-configs/Config.d.ts +76 -3
- package/dist/esm/shared/page-configs/PageConfig.d.ts +25 -16
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +1 -1
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +2 -2
- package/dist/esm/shared/page-configs/loadConfigValues.js +6 -2
- package/dist/esm/shared/utils.d.ts +1 -1
- package/dist/esm/shared/utils.js +1 -1
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assertSetup.js +15 -1
- package/dist/esm/utils/catchInfiniteLoop.d.ts +2 -0
- package/dist/esm/utils/catchInfiniteLoop.js +32 -0
- package/dist/esm/utils/findFile.js +1 -1
- package/dist/esm/utils/isDev.js +4 -1
- package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +1 -1
- package/dist/esm/utils/makePublicCopy.d.ts +3 -0
- package/dist/esm/utils/makePublicCopy.js +30 -0
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/dist/esm/utils/requireResolve.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -17
- package/dist/cjs/node/prerender/isPrerenderAutoRunEnabled.js +0 -16
- package/dist/cjs/node/shared/assertPluginManifest.js +0 -20
- package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -16
- package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.d.ts +0 -5
- package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -15
- package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.d.ts +0 -5
- package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.js +0 -14
- package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -12
- package/dist/esm/node/shared/assertPluginManifest.js +0 -18
- package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -10
- package/dist/esm/node/shared/assertRuntimeManifest.js +0 -14
- /package/dist/cjs/utils/{filesystemPathHandling.js → toPosixPath.js} +0 -0
- /package/dist/esm/{utils → node/plugin}/getOutDirs.d.ts +0 -0
- /package/dist/esm/utils/{filesystemPathHandling.d.ts → toPosixPath.d.ts} +0 -0
- /package/dist/esm/utils/{filesystemPathHandling.js → toPosixPath.js} +0 -0
|
@@ -65,6 +65,8 @@ const logErrorHint_js_1 = require("../runtime/renderPage/logErrorHint.js");
|
|
|
65
65
|
const executeHook_js_1 = require("../../shared/hooks/executeHook.js");
|
|
66
66
|
const getConfigValueBuildTime_js_1 = require("../../shared/page-configs/getConfigValueBuildTime.js");
|
|
67
67
|
const prepareViteApiCall_js_1 = require("../api/prepareViteApiCall.js");
|
|
68
|
+
const context_js_1 = require("./context.js");
|
|
69
|
+
const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
|
|
68
70
|
async function runPrerenderFromAPI(options = {}) {
|
|
69
71
|
return await runPrerender(options, 'prerender()');
|
|
70
72
|
// - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
|
|
@@ -84,16 +86,20 @@ async function runPrerenderFromCLIPrerenderCommand() {
|
|
|
84
86
|
runPrerender_forceExit();
|
|
85
87
|
}
|
|
86
88
|
async function runPrerenderFromAutoRun(viteConfig) {
|
|
89
|
+
let prerenderContextPublic;
|
|
87
90
|
try {
|
|
88
|
-
await runPrerender({ viteConfig });
|
|
91
|
+
const ret = await runPrerender({ viteConfig });
|
|
92
|
+
prerenderContextPublic = ret.prerenderContextPublic;
|
|
89
93
|
}
|
|
90
94
|
catch (err) {
|
|
91
95
|
console.error(err);
|
|
92
96
|
(0, logErrorHint_js_1.logErrorHint)(err);
|
|
93
97
|
process.exit(1);
|
|
94
98
|
}
|
|
99
|
+
return { prerenderContextPublic };
|
|
95
100
|
}
|
|
96
101
|
async function runPrerender(options = {}, standaloneTrigger) {
|
|
102
|
+
(0, context_js_1.setContextIsPrerendering)();
|
|
97
103
|
checkOutdatedOptions(options);
|
|
98
104
|
(0, utils_js_1.onSetupPrerender)();
|
|
99
105
|
(0, globalContext_js_1.setGlobalContext_isPrerendering)();
|
|
@@ -107,7 +113,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
107
113
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(viteConfig);
|
|
108
114
|
const { outDirClient } = (0, utils_js_1.getOutDirs)(viteConfig);
|
|
109
115
|
const { root } = viteConfig;
|
|
110
|
-
const prerenderConfig = vikeConfig.
|
|
116
|
+
const prerenderConfig = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfig)(vikeConfig.global.config.prerender);
|
|
111
117
|
validatePrerenderConfig(prerenderConfig);
|
|
112
118
|
if (!prerenderConfig) {
|
|
113
119
|
(0, utils_js_1.assert)(standaloneTrigger);
|
|
@@ -120,43 +126,48 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
120
126
|
await (0, globalContext_js_1.initGlobalContext_runPrerender)();
|
|
121
127
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
122
128
|
globalContext.pageFilesAll.forEach(assertExportNames);
|
|
123
|
-
const prerenderContext = {
|
|
124
|
-
|
|
125
|
-
_urlHandler: null,
|
|
126
|
-
_noExtraDir: noExtraDir ?? false,
|
|
129
|
+
const prerenderContext = {
|
|
130
|
+
noExtraDir: noExtraDir ?? false,
|
|
127
131
|
pageContexts: [],
|
|
128
|
-
pageContextInit: options.pageContextInit ?? null
|
|
129
|
-
|
|
132
|
+
pageContextInit: options.pageContextInit ?? null,
|
|
133
|
+
prerenderedPageContexts: {},
|
|
134
|
+
output: []
|
|
135
|
+
};
|
|
130
136
|
const doNotPrerenderList = [];
|
|
131
137
|
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
|
|
132
138
|
await callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList);
|
|
133
139
|
await handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit);
|
|
134
140
|
await callOnPrerenderStartHook(prerenderContext);
|
|
135
|
-
const prerenderedPageContexts = {};
|
|
136
141
|
let prerenderedCount = 0;
|
|
142
|
+
// Write files as soon as pages finish rendering (instead of writing all files at once only after all pages have rendered).
|
|
137
143
|
const onComplete = async (htmlFile) => {
|
|
138
144
|
prerenderedCount++;
|
|
139
145
|
if (htmlFile.pageId) {
|
|
140
|
-
prerenderedPageContexts[htmlFile.pageId] = htmlFile.pageContext;
|
|
146
|
+
prerenderContext.prerenderedPageContexts[htmlFile.pageId] = htmlFile.pageContext;
|
|
141
147
|
}
|
|
142
|
-
await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, logLevel);
|
|
148
|
+
await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
|
|
143
149
|
};
|
|
144
150
|
await routeAndPrerender(prerenderContext, concurrencyLimit, onComplete);
|
|
145
|
-
warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerenderList);
|
|
146
|
-
await prerender404(
|
|
151
|
+
warnContradictoryNoPrerenderList(prerenderContext.prerenderedPageContexts, doNotPrerenderList);
|
|
152
|
+
await prerender404(prerenderContext, onComplete);
|
|
147
153
|
if (logLevel === 'info') {
|
|
148
154
|
console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
149
155
|
}
|
|
150
|
-
warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial);
|
|
151
|
-
|
|
156
|
+
warnMissingPages(prerenderContext.prerenderedPageContexts, doNotPrerenderList, partial);
|
|
157
|
+
const prerenderContextPublic = makePublic(prerenderContext);
|
|
158
|
+
return { viteConfig, prerenderContextPublic };
|
|
152
159
|
}
|
|
153
160
|
async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit) {
|
|
154
161
|
// V1 design
|
|
155
162
|
pageConfigs.forEach((pageConfig) => {
|
|
156
163
|
const configName = 'prerender';
|
|
157
|
-
const configValue = (0, getConfigValueBuildTime_js_1.getConfigValueBuildTime)(pageConfig, configName
|
|
158
|
-
if (configValue
|
|
159
|
-
|
|
164
|
+
const configValue = (0, getConfigValueBuildTime_js_1.getConfigValueBuildTime)(pageConfig, configName);
|
|
165
|
+
if (!configValue)
|
|
166
|
+
return;
|
|
167
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(configValue, 'value', 'array'));
|
|
168
|
+
if (configValue.value[0] === false) {
|
|
169
|
+
(0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
|
|
170
|
+
const configValueFilePathToShowToUser = (0, helpers_js_1.getConfigValueFilePathToShowToUser)(configValue.definedAtData[0]);
|
|
160
171
|
(0, utils_js_1.assert)(configValueFilePathToShowToUser);
|
|
161
172
|
doNotPrerenderList.push({
|
|
162
173
|
pageId: pageConfig.pageId,
|
|
@@ -339,7 +350,7 @@ function createPageContext(urlOriginal, prerenderContext) {
|
|
|
339
350
|
const pageContext = {
|
|
340
351
|
_urlHandler: null,
|
|
341
352
|
_urlRewrite: null,
|
|
342
|
-
_noExtraDir: prerenderContext.
|
|
353
|
+
_noExtraDir: prerenderContext.noExtraDir,
|
|
343
354
|
_prerenderContext: prerenderContext
|
|
344
355
|
};
|
|
345
356
|
const pageContextInit = {
|
|
@@ -425,17 +436,20 @@ async function callOnPrerenderStartHook(prerenderContext) {
|
|
|
425
436
|
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
426
437
|
// Set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in onPrerenderStart() hook, e.g. /examples/i18n/
|
|
427
438
|
const { restoreEnumerable, addPageContextComputedUrl } = makePageContextComputedUrlNonEnumerable(prerenderContext.pageContexts);
|
|
428
|
-
let result = await (0, executeHook_js_1.executeHook)(() =>
|
|
429
|
-
|
|
439
|
+
let result = await (0, executeHook_js_1.executeHook)(() => {
|
|
440
|
+
const prerenderContextPublic = makePublic(prerenderContext);
|
|
430
441
|
// TODO/v1-release: remove warning
|
|
431
|
-
|
|
432
|
-
(
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
442
|
+
Object.defineProperty(prerenderContextPublic, 'prerenderPageContexts', {
|
|
443
|
+
get() {
|
|
444
|
+
(0, utils_js_1.assertWarning)(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
|
|
445
|
+
showStackTrace: true,
|
|
446
|
+
onlyOnce: true
|
|
447
|
+
});
|
|
448
|
+
return prerenderContext.pageContexts;
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
return hookFn(prerenderContextPublic);
|
|
452
|
+
}, onPrerenderStartHook, null);
|
|
439
453
|
restoreEnumerable();
|
|
440
454
|
if (result === null || result === undefined) {
|
|
441
455
|
return;
|
|
@@ -542,7 +556,7 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
|
|
|
542
556
|
pageContext,
|
|
543
557
|
htmlString: documentHtml,
|
|
544
558
|
pageContextSerialized,
|
|
545
|
-
doNotCreateExtraDirectory: prerenderContext.
|
|
559
|
+
doNotCreateExtraDirectory: prerenderContext.noExtraDir,
|
|
546
560
|
pageId
|
|
547
561
|
});
|
|
548
562
|
})));
|
|
@@ -577,8 +591,8 @@ function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial)
|
|
|
577
591
|
(0, utils_js_1.assertWarning)(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
|
|
578
592
|
});
|
|
579
593
|
}
|
|
580
|
-
async function prerender404(
|
|
581
|
-
if (!Object.values(prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
|
|
594
|
+
async function prerender404(prerenderContext, onComplete) {
|
|
595
|
+
if (!Object.values(prerenderContext.prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
|
|
582
596
|
let result;
|
|
583
597
|
try {
|
|
584
598
|
result = await (0, renderPageAlreadyRouted_js_1.prerender404Page)(prerenderContext.pageContextInit);
|
|
@@ -601,22 +615,23 @@ async function prerender404(prerenderedPageContexts, prerenderContext, onComplet
|
|
|
601
615
|
}
|
|
602
616
|
}
|
|
603
617
|
}
|
|
604
|
-
async function writeFiles({ urlOriginal, pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, logLevel) {
|
|
618
|
+
async function writeFiles({ urlOriginal, pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, output, logLevel) {
|
|
605
619
|
(0, utils_js_1.assert)(urlOriginal.startsWith('/'));
|
|
606
620
|
const writeJobs = [
|
|
607
|
-
write(urlOriginal, pageContext, '
|
|
621
|
+
write(urlOriginal, pageContext, 'HTML', htmlString, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel)
|
|
608
622
|
];
|
|
609
623
|
if (pageContextSerialized !== null) {
|
|
610
|
-
writeJobs.push(write(urlOriginal, pageContext, '
|
|
624
|
+
writeJobs.push(write(urlOriginal, pageContext, 'JSON', pageContextSerialized, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel));
|
|
611
625
|
}
|
|
612
626
|
await Promise.all(writeJobs);
|
|
613
627
|
}
|
|
614
|
-
async function write(urlOriginal, pageContext,
|
|
628
|
+
async function write(urlOriginal, pageContext, fileType, fileContent, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel) {
|
|
615
629
|
let fileUrl;
|
|
616
|
-
if (
|
|
630
|
+
if (fileType === 'HTML') {
|
|
617
631
|
fileUrl = (0, utils_js_1.urlToFile)(urlOriginal, '.html', doNotCreateExtraDirectory);
|
|
618
632
|
}
|
|
619
633
|
else {
|
|
634
|
+
(0, utils_js_1.assert)(fileType === 'JSON');
|
|
620
635
|
fileUrl = (0, getPageContextRequestUrl_js_1.getPageContextRequestUrl)(urlOriginal);
|
|
621
636
|
}
|
|
622
637
|
(0, utils_js_1.assertPosixPath)(fileUrl);
|
|
@@ -628,6 +643,12 @@ async function write(urlOriginal, pageContext, fileExtension, fileContent, root,
|
|
|
628
643
|
(0, utils_js_1.assertPosixPath)(outDirClient);
|
|
629
644
|
(0, utils_js_1.assertPosixPath)(filePathRelative);
|
|
630
645
|
const filePath = path_1.default.posix.join(outDirClient, filePathRelative);
|
|
646
|
+
output.push({
|
|
647
|
+
filePath,
|
|
648
|
+
fileType,
|
|
649
|
+
fileContent,
|
|
650
|
+
pageContext
|
|
651
|
+
});
|
|
631
652
|
if (onPagePrerender) {
|
|
632
653
|
const prerenderPageContext = {};
|
|
633
654
|
(0, utils_js_1.objectAssign)(prerenderPageContext, pageContext);
|
|
@@ -796,3 +817,9 @@ prerenderConfig) {
|
|
|
796
817
|
(0, utils_js_1.assertUsage)(false, `Setting ${picocolors_1.default.cyan(`prerender.${prop}`)} ${errMsg}`);
|
|
797
818
|
}
|
|
798
819
|
}
|
|
820
|
+
function makePublic(prerenderContext) {
|
|
821
|
+
const prerenderContextPublic = (0, utils_js_1.makePublicCopy)(prerenderContext, 'prerenderContext', [
|
|
822
|
+
'pageContexts'
|
|
823
|
+
]);
|
|
824
|
+
return prerenderContextPublic;
|
|
825
|
+
}
|
|
@@ -22,9 +22,9 @@ __exportStar(require("../../utils/projectInfo.js"), exports);
|
|
|
22
22
|
__exportStar(require("../../utils/objectAssign.js"), exports);
|
|
23
23
|
__exportStar(require("../../utils/isObjectWithKeys.js"), exports);
|
|
24
24
|
__exportStar(require("../../utils/isCallable.js"), exports);
|
|
25
|
-
__exportStar(require("
|
|
25
|
+
__exportStar(require("../plugin/getOutDirs.js"), exports);
|
|
26
26
|
__exportStar(require("../../utils/isPropertyGetter.js"), exports);
|
|
27
|
-
__exportStar(require("../../utils/
|
|
27
|
+
__exportStar(require("../../utils/toPosixPath.js"), exports);
|
|
28
28
|
__exportStar(require("../../utils/urlToFile.js"), exports);
|
|
29
29
|
__exportStar(require("../../utils/isPlainObject.js"), exports);
|
|
30
30
|
__exportStar(require("../../utils/assertSetup.js"), exports);
|
|
@@ -33,3 +33,4 @@ __exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
|
|
|
33
33
|
__exportStar(require("../../utils/isArray.js"), exports);
|
|
34
34
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
35
35
|
__exportStar(require("../../utils/changeEnumerable.js"), exports);
|
|
36
|
+
__exportStar(require("../../utils/makePublicCopy.js"), exports);
|
|
@@ -8,7 +8,6 @@ exports.getGlobalContextAsync = getGlobalContextAsync;
|
|
|
8
8
|
exports.getGlobalContext = getGlobalContext;
|
|
9
9
|
exports.getViteDevServer = getViteDevServer;
|
|
10
10
|
exports.getViteConfig = getViteConfig;
|
|
11
|
-
exports.getRuntimeManifest = getRuntimeManifest;
|
|
12
11
|
exports.initGlobalContext_renderPage = initGlobalContext_renderPage;
|
|
13
12
|
exports.initGlobalContext_runPrerender = initGlobalContext_runPrerender;
|
|
14
13
|
exports.initGlobalContext_getGlobalContextAsync = initGlobalContext_getGlobalContextAsync;
|
|
@@ -19,14 +18,13 @@ exports.setGlobalContext_isViteDev = setGlobalContext_isViteDev;
|
|
|
19
18
|
exports.setGlobalContext_isPrerendering = setGlobalContext_isPrerendering;
|
|
20
19
|
exports.setGlobalContext_buildEntry = setGlobalContext_buildEntry;
|
|
21
20
|
exports.clearGlobalContext = clearGlobalContext;
|
|
21
|
+
exports.assertBuildInfo = assertBuildInfo;
|
|
22
|
+
exports.getViteConfigRuntime = getViteConfigRuntime;
|
|
22
23
|
const utils_js_1 = require("./utils.js");
|
|
23
24
|
const runtime_1 = require("@brillout/vite-plugin-server-entry/runtime");
|
|
24
25
|
const virtualFileImportUserCode_js_1 = require("../shared/virtual-files/virtualFileImportUserCode.js");
|
|
25
26
|
const getPageFiles_js_1 = require("../../shared/getPageFiles/getPageFiles.js");
|
|
26
|
-
const assertPluginManifest_js_1 = require("../shared/assertPluginManifest.js");
|
|
27
|
-
const assertRuntimeManifest_js_1 = require("../shared/assertRuntimeManifest.js");
|
|
28
27
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
29
|
-
const resolveBase_js_1 = require("../shared/resolveBase.js");
|
|
30
28
|
const loadPageRoutes_js_1 = require("../../shared/route/loadPageRoutes.js");
|
|
31
29
|
const assertV1Design_js_1 = require("../shared/assertV1Design.js");
|
|
32
30
|
const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
|
|
@@ -53,28 +51,8 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
53
51
|
return makePublic(globalContext);
|
|
54
52
|
}
|
|
55
53
|
function makePublic(globalContext) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
assetsManifest: globalContext.assetsManifest
|
|
59
|
-
};
|
|
60
|
-
// Add internals (and prepended _ prefix to their keys)
|
|
61
|
-
{
|
|
62
|
-
const publicKeys = Object.keys(globalContextPublic);
|
|
63
|
-
(0, utils_js_1.objectKeys)(globalContext)
|
|
64
|
-
.filter((key) => !publicKeys.includes(key))
|
|
65
|
-
.forEach((key) => {
|
|
66
|
-
const keyPublic = `_${key}`;
|
|
67
|
-
Object.defineProperty(globalContextPublic, keyPublic, {
|
|
68
|
-
enumerable: true,
|
|
69
|
-
get() {
|
|
70
|
-
(0, utils_js_1.assertWarning)(false, `Using internal globalContext.${keyPublic} which is discouraged: it may break in any minor version update. Instead, reach out on GitHub and elaborate your use case.`, {
|
|
71
|
-
onlyOnce: true
|
|
72
|
-
});
|
|
73
|
-
return globalContext[key];
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
}
|
|
54
|
+
// TODO/now: add viteConfig and vikeConfig
|
|
55
|
+
const globalContextPublic = (0, utils_js_1.makePublicCopy)(globalContext, 'globalContext', ['assetsManifest']);
|
|
78
56
|
return globalContextPublic;
|
|
79
57
|
}
|
|
80
58
|
function setGlobalContext_viteDevServer(viteDevServer) {
|
|
@@ -164,7 +142,7 @@ async function initGlobalContext(isProduction) {
|
|
|
164
142
|
(0, utils_js_1.assert)(viteDevServer);
|
|
165
143
|
(0, utils_js_1.assert)(!isPrerendering);
|
|
166
144
|
const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
|
|
167
|
-
const
|
|
145
|
+
const viteConfigRuntime = getViteConfigRuntime(viteConfig);
|
|
168
146
|
globalObject.globalContext = {
|
|
169
147
|
isProduction: false,
|
|
170
148
|
isPrerendering: false,
|
|
@@ -175,20 +153,14 @@ async function initGlobalContext(isProduction) {
|
|
|
175
153
|
global: globalConfig
|
|
176
154
|
},
|
|
177
155
|
...userFiles,
|
|
178
|
-
|
|
179
|
-
baseAssets: pluginManifest.baseAssets,
|
|
180
|
-
includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
|
|
181
|
-
trailingSlash: pluginManifest.trailingSlash,
|
|
182
|
-
disableUrlNormalization: pluginManifest.disableUrlNormalization
|
|
156
|
+
viteConfigRuntime
|
|
183
157
|
};
|
|
184
158
|
}
|
|
185
159
|
else {
|
|
186
160
|
const buildEntry = await getBuildEntry(globalObject.outDirRoot, isPrerendering);
|
|
187
|
-
const { assetsManifest,
|
|
161
|
+
const { assetsManifest, buildInfo } = buildEntry;
|
|
188
162
|
(0, getPageFiles_js_1.setPageFiles)(buildEntry.pageFiles);
|
|
189
163
|
const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
|
|
190
|
-
assertViteManifest(assetsManifest);
|
|
191
|
-
(0, assertPluginManifest_js_1.assertPluginManifest)(pluginManifest);
|
|
192
164
|
const globalContext = {
|
|
193
165
|
isProduction: true,
|
|
194
166
|
assetsManifest,
|
|
@@ -197,12 +169,8 @@ async function initGlobalContext(isProduction) {
|
|
|
197
169
|
},
|
|
198
170
|
...userFiles,
|
|
199
171
|
viteDevServer: null,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
|
|
203
|
-
trailingSlash: pluginManifest.trailingSlash,
|
|
204
|
-
usesClientRouter: pluginManifest.usesClientRouter,
|
|
205
|
-
disableUrlNormalization: pluginManifest.disableUrlNormalization
|
|
172
|
+
viteConfigRuntime: buildInfo.viteConfigRuntime,
|
|
173
|
+
usesClientRouter: buildInfo.usesClientRouter
|
|
206
174
|
};
|
|
207
175
|
if (isPrerendering) {
|
|
208
176
|
(0, utils_js_1.assert)(viteConfig);
|
|
@@ -237,19 +205,6 @@ async function getPageRuntimeInfo(isProduction) {
|
|
|
237
205
|
pageConfigs.length > 0, pageFilesAll);
|
|
238
206
|
return { userFiles, globalConfig };
|
|
239
207
|
}
|
|
240
|
-
function getRuntimeManifest(vikeConfigGlobal, viteConfig) {
|
|
241
|
-
const { includeAssetsImportedByServer, trailingSlash, disableUrlNormalization } = vikeConfigGlobal;
|
|
242
|
-
const { baseServer, baseAssets } = (0, resolveBase_js_1.resolveBaseFromResolvedConfig)(vikeConfigGlobal.baseServer, vikeConfigGlobal.baseAssets, viteConfig);
|
|
243
|
-
const manifest = {
|
|
244
|
-
baseServer,
|
|
245
|
-
baseAssets,
|
|
246
|
-
includeAssetsImportedByServer,
|
|
247
|
-
trailingSlash,
|
|
248
|
-
disableUrlNormalization
|
|
249
|
-
};
|
|
250
|
-
(0, assertRuntimeManifest_js_1.assertRuntimeManifest)(manifest);
|
|
251
|
-
return manifest;
|
|
252
|
-
}
|
|
253
208
|
function assertViteManifest(manifest) {
|
|
254
209
|
(0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(manifest));
|
|
255
210
|
/* We should include these assertions but we don't as a workaround for PWA manifests: https://github.com/vikejs/vike/issues/769
|
|
@@ -282,17 +237,48 @@ async function getBuildEntry(outDir, isPrerendering) {
|
|
|
282
237
|
(0, utils_js_1.assert)(globalObject.buildEntry);
|
|
283
238
|
}
|
|
284
239
|
const { buildEntry } = globalObject;
|
|
285
|
-
(
|
|
286
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pageFiles', 'object'));
|
|
287
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'assetsManifest', 'object'));
|
|
288
|
-
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pluginManifest', 'object'));
|
|
240
|
+
assertBuildEntry(buildEntry);
|
|
289
241
|
return buildEntry;
|
|
290
242
|
}
|
|
291
243
|
function setGlobalContext_buildEntry(buildEntry) {
|
|
292
244
|
debug('setGlobalContext_buildEntry()');
|
|
245
|
+
assertBuildEntry(buildEntry);
|
|
293
246
|
globalObject.buildEntry = buildEntry;
|
|
294
247
|
globalObject.buildEntryPrevious = buildEntry;
|
|
295
248
|
}
|
|
249
|
+
function assertBuildEntry(buildEntry) {
|
|
250
|
+
(0, utils_js_1.assert)((0, utils_js_1.isObject)(buildEntry));
|
|
251
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'pageFiles', 'object'));
|
|
252
|
+
const { pageFiles } = buildEntry;
|
|
253
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'assetsManifest', 'object'));
|
|
254
|
+
const { assetsManifest } = buildEntry;
|
|
255
|
+
assertViteManifest(assetsManifest);
|
|
256
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildEntry, 'buildInfo', 'object'));
|
|
257
|
+
const { buildInfo } = buildEntry;
|
|
258
|
+
assertBuildInfo(buildInfo);
|
|
259
|
+
(0, utils_js_1.checkType)({ pageFiles, assetsManifest, buildInfo });
|
|
260
|
+
}
|
|
261
|
+
function assertBuildInfo(buildInfo) {
|
|
262
|
+
(0, utils_js_1.assert)((0, utils_js_1.isObject)(buildInfo));
|
|
263
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildInfo, 'versionAtBuildTime', 'string'));
|
|
264
|
+
assertVersionAtBuildTime(buildInfo.versionAtBuildTime);
|
|
265
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildInfo, 'viteConfigRuntime', 'object'));
|
|
266
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildInfo.viteConfigRuntime, '_baseViteOriginal', 'string'));
|
|
267
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(buildInfo, 'usesClientRouter', 'boolean'));
|
|
268
|
+
(0, utils_js_1.checkType)({ ...buildInfo, viteConfigRuntime: buildInfo.viteConfigRuntime });
|
|
269
|
+
}
|
|
270
|
+
function assertVersionAtBuildTime(versionAtBuildTime) {
|
|
271
|
+
const versionAtRuntime = utils_js_1.projectInfo.projectVersion;
|
|
272
|
+
const pretty = (version) => picocolors_1.default.bold(`vike@${version}`);
|
|
273
|
+
(0, utils_js_1.assertUsage)(versionAtBuildTime === versionAtRuntime, `Re-build your app (you're using ${pretty(versionAtRuntime)} but your app was built with ${pretty(versionAtBuildTime)})`);
|
|
274
|
+
}
|
|
275
|
+
function getViteConfigRuntime(viteConfig) {
|
|
276
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(viteConfig, '_baseViteOriginal', 'string'));
|
|
277
|
+
const viteConfigRuntime = {
|
|
278
|
+
_baseViteOriginal: viteConfig._baseViteOriginal
|
|
279
|
+
};
|
|
280
|
+
return viteConfigRuntime;
|
|
281
|
+
}
|
|
296
282
|
function initDevEntry() {
|
|
297
283
|
(0, getPageFiles_js_1.setPageFilesAsync)(getPageFilesExports);
|
|
298
284
|
}
|
|
@@ -23,6 +23,7 @@ const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePa
|
|
|
23
23
|
const executeGuardHook_js_1 = require("../../../shared/route/executeGuardHook.js");
|
|
24
24
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
25
25
|
const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
|
|
26
|
+
const resolveBase_js_1 = require("../../shared/resolveBase.js");
|
|
26
27
|
async function renderPageAlreadyRouted(pageContext) {
|
|
27
28
|
// pageContext.pageId can either be the:
|
|
28
29
|
// - ID of the page matching the routing, or the
|
|
@@ -119,14 +120,16 @@ function getPageContextInitEnhanced(pageContextInit, { ssr: { urlRewrite, urlHan
|
|
|
119
120
|
} } = {}) {
|
|
120
121
|
(0, utils_js_1.assert)(pageContextInit.urlOriginal);
|
|
121
122
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
123
|
+
const { baseServer, baseAssets } = (0, resolveBase_js_1.resolveBaseRuntime)();
|
|
122
124
|
const pageContextInitEnhanced = {};
|
|
123
125
|
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextInit);
|
|
124
126
|
(0, utils_js_1.objectAssign)(pageContextInitEnhanced, {
|
|
125
127
|
_objectCreatedByVike: true,
|
|
126
128
|
// The following is defined on `pageContext` because we can eventually make these non-global
|
|
127
|
-
_baseServer:
|
|
128
|
-
_baseAssets:
|
|
129
|
-
|
|
129
|
+
_baseServer: baseServer,
|
|
130
|
+
_baseAssets: baseAssets,
|
|
131
|
+
// TODO/now: add meta.default
|
|
132
|
+
_includeAssetsImportedByServer: globalContext.vikeConfig.global.config.includeAssetsImportedByServer ?? true,
|
|
130
133
|
// TODO: use GloablContext instead
|
|
131
134
|
_pageFilesAll: globalContext.pageFilesAll,
|
|
132
135
|
_pageConfigs: globalContext.pageConfigs,
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.redirectsErrPrefix = void 0;
|
|
6
7
|
exports.resolveRedirects = resolveRedirects;
|
|
7
8
|
exports.resolveRouteStringRedirect = resolveRouteStringRedirect;
|
|
8
9
|
const assertIsNotBrowser_js_1 = require("../../../utils/assertIsNotBrowser.js");
|
|
@@ -11,8 +12,8 @@ const resolveUrlPathname_js_1 = require("../../../shared/route/resolveUrlPathnam
|
|
|
11
12
|
const resolveRouteString_js_1 = require("../../../shared/route/resolveRouteString.js");
|
|
12
13
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
13
14
|
(0, assertIsNotBrowser_js_1.assertIsNotBrowser)(); // Don't bloat the client
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
const redirectsErrPrefix = '[+redirects]';
|
|
16
|
+
exports.redirectsErrPrefix = redirectsErrPrefix;
|
|
16
17
|
function resolveRedirects(redirectsAll, urlPathname) {
|
|
17
18
|
const redirects = merge(redirectsAll);
|
|
18
19
|
for (const [urlSource, urlTarget] of Object.entries(redirects)) {
|
|
@@ -23,9 +24,9 @@ function resolveRedirects(redirectsAll, urlPathname) {
|
|
|
23
24
|
return null;
|
|
24
25
|
}
|
|
25
26
|
function resolveRouteStringRedirect(urlSource, urlTarget, urlPathname) {
|
|
26
|
-
(0, resolveRouteString_js_1.assertRouteString)(urlSource, `${
|
|
27
|
+
(0, resolveRouteString_js_1.assertRouteString)(urlSource, `${redirectsErrPrefix} Invalid`);
|
|
27
28
|
// Is allowing any protocol a safety issue? https://github.com/vikejs/vike/pull/1292#issuecomment-1828043917
|
|
28
|
-
(0, utils_js_1.assertUsageUrlRedirectTarget)(urlTarget, `${
|
|
29
|
+
(0, utils_js_1.assertUsageUrlRedirectTarget)(urlTarget, `${redirectsErrPrefix} The URL redirection target`, true);
|
|
29
30
|
assertParams(urlSource, urlTarget);
|
|
30
31
|
const match = (0, resolveRouteString_js_1.resolveRouteString)(urlSource, urlPathname);
|
|
31
32
|
if (!match)
|
|
@@ -41,7 +42,7 @@ function assertParams(urlSource, urlTarget) {
|
|
|
41
42
|
routeSegments.forEach((routeSegment) => {
|
|
42
43
|
if (routeSegment.startsWith('@') || routeSegment.startsWith('*')) {
|
|
43
44
|
const segments = urlSource.split('/');
|
|
44
|
-
(0, utils_js_1.assertUsage)(segments.includes(routeSegment), `${
|
|
45
|
+
(0, utils_js_1.assertUsage)(segments.includes(routeSegment), `${redirectsErrPrefix} The redirection source URL ${picocolors_1.default.string(urlSource)} is missing the URL parameter ${picocolors_1.default.string(routeSegment)} used by the redirection target URL ${picocolors_1.default.string(urlTarget)}`);
|
|
45
46
|
}
|
|
46
47
|
});
|
|
47
48
|
}
|
|
@@ -23,6 +23,7 @@ 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");
|
|
26
27
|
const globalObject = (0, utils_js_1.getGlobalObject)('runtime/renderPage.ts', {
|
|
27
28
|
httpRequestsCount: 0
|
|
28
29
|
});
|
|
@@ -342,14 +343,16 @@ function assertIsNotViteRequest(urlPathname, urlOriginal) {
|
|
|
342
343
|
(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')}`);
|
|
343
344
|
}
|
|
344
345
|
function normalizeUrl(pageContextInit, httpRequestId) {
|
|
345
|
-
const
|
|
346
|
+
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
347
|
+
const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)();
|
|
348
|
+
const { trailingSlash, disableUrlNormalization } = globalContext.vikeConfig.global.config;
|
|
346
349
|
if (disableUrlNormalization)
|
|
347
350
|
return null;
|
|
348
351
|
const { urlOriginal } = pageContextInit;
|
|
349
352
|
const { isPageContextRequest } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
|
|
350
353
|
if (isPageContextRequest)
|
|
351
354
|
return null;
|
|
352
|
-
const urlNormalized = (0, utils_js_1.normalizeUrlPathname)(urlOriginal, trailingSlash, baseServer);
|
|
355
|
+
const urlNormalized = (0, utils_js_1.normalizeUrlPathname)(urlOriginal, trailingSlash ?? false, baseServer);
|
|
353
356
|
if (!urlNormalized)
|
|
354
357
|
return null;
|
|
355
358
|
(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');
|
|
@@ -360,7 +363,8 @@ function normalizeUrl(pageContextInit, httpRequestId) {
|
|
|
360
363
|
}
|
|
361
364
|
function getPermanentRedirect(pageContextInit, httpRequestId) {
|
|
362
365
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
363
|
-
const
|
|
366
|
+
const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)();
|
|
367
|
+
const urlWithoutBase = (0, utils_js_1.removeBaseServer)(pageContextInit.urlOriginal, baseServer);
|
|
364
368
|
let origin = null;
|
|
365
369
|
let urlTargetExternal = null;
|
|
366
370
|
let urlTarget = (0, utils_js_1.modifyUrlPathname)(urlWithoutBase, (urlPathname) => {
|
|
@@ -391,8 +395,9 @@ function getPermanentRedirect(pageContextInit, httpRequestId) {
|
|
|
391
395
|
}
|
|
392
396
|
if (normalize(urlTarget) === normalize(urlWithoutBase))
|
|
393
397
|
return null;
|
|
398
|
+
const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)();
|
|
394
399
|
if (!originChanged)
|
|
395
|
-
urlTarget = (0, utils_js_1.prependBase)(urlTarget,
|
|
400
|
+
urlTarget = (0, utils_js_1.prependBase)(urlTarget, baseServer);
|
|
396
401
|
(0, utils_js_1.assert)(urlTarget !== pageContextInit.urlOriginal);
|
|
397
402
|
}
|
|
398
403
|
(0, loggerRuntime_js_1.logRuntimeInfo)?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
|
|
@@ -457,7 +462,7 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit) {
|
|
|
457
462
|
return { pageContextAbort };
|
|
458
463
|
}
|
|
459
464
|
function assertBaseUrl(pageContextInit) {
|
|
460
|
-
const { baseServer } = (0,
|
|
465
|
+
const { baseServer } = (0, resolveBase_js_1.resolveBaseRuntime)();
|
|
461
466
|
const { urlOriginal } = pageContextInit;
|
|
462
467
|
const { urlWithoutPageContextRequestSuffix } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
|
|
463
468
|
const { hasBaseServer } = (0, utils_js_1.parseUrl)(urlWithoutPageContextRequestSuffix, baseServer);
|
|
@@ -41,8 +41,8 @@ __exportStar(require("../../utils/compareString.js"), exports);
|
|
|
41
41
|
__exportStar(require("../../utils/isObjectWithKeys.js"), exports);
|
|
42
42
|
__exportStar(require("../../utils/stringifyStringArray.js"), exports);
|
|
43
43
|
__exportStar(require("../../utils/unique.js"), exports);
|
|
44
|
-
__exportStar(require("../../utils/
|
|
45
|
-
__exportStar(require("
|
|
44
|
+
__exportStar(require("../../utils/toPosixPath.js"), exports);
|
|
45
|
+
__exportStar(require("../plugin/getOutDirs.js"), exports);
|
|
46
46
|
__exportStar(require("../../utils/capitalizeFirstLetter.js"), exports);
|
|
47
47
|
__exportStar(require("../../utils/debugGlob.js"), exports);
|
|
48
48
|
__exportStar(require("../../utils/isSameErrorMessage.js"), exports);
|
|
@@ -76,3 +76,4 @@ __exportStar(require("../../utils/isVikeReactApp.js"), exports);
|
|
|
76
76
|
__exportStar(require("../../utils/getPropAccessNotation.js"), exports);
|
|
77
77
|
__exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
|
|
78
78
|
__exportStar(require("../../utils/genPromise.js"), exports);
|
|
79
|
+
__exportStar(require("../../utils/makePublicCopy.js"), exports);
|
|
@@ -4,14 +4,23 @@ 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;
|
|
7
8
|
exports.resolveBaseFromResolvedConfig = resolveBaseFromResolvedConfig;
|
|
8
9
|
const utils_js_1 = require("./utils.js");
|
|
9
10
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
11
|
+
const globalContext_js_1 = require("../runtime/globalContext.js");
|
|
10
12
|
function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
|
|
11
13
|
let baseViteOriginal = config._baseViteOriginal;
|
|
12
14
|
(0, utils_js_1.assert)(baseViteOriginal === null || typeof baseViteOriginal == 'string');
|
|
13
15
|
return resolveBase(baseViteOriginal, baseServer, baseAssets);
|
|
14
16
|
}
|
|
17
|
+
function resolveBaseRuntime() {
|
|
18
|
+
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
19
|
+
const baseViteOriginal = globalContext.viteConfigRuntime._baseViteOriginal;
|
|
20
|
+
const baseServerUnresolved = globalContext.vikeConfig.global.config.baseServer ?? null;
|
|
21
|
+
const baseAssetsUnresolved = globalContext.vikeConfig.global.config.baseAssets ?? null;
|
|
22
|
+
return resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved);
|
|
23
|
+
}
|
|
15
24
|
function resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved) {
|
|
16
25
|
if (baseViteOriginal === '/__UNSET__')
|
|
17
26
|
baseViteOriginal = null;
|
|
@@ -68,11 +68,11 @@ function getPageConfigUserFriendly(pageFiles, pageConfig) {
|
|
|
68
68
|
(0, utils_js_1.assert)(!('default' in exports));
|
|
69
69
|
(0, utils_js_1.assert)(!('default' in exportsAll));
|
|
70
70
|
const pageContextExports = {
|
|
71
|
+
config: config,
|
|
71
72
|
from,
|
|
72
73
|
source,
|
|
73
74
|
sources,
|
|
74
75
|
// TODO/eventually: deprecate/remove every prop below
|
|
75
|
-
config,
|
|
76
76
|
configEntries,
|
|
77
77
|
exports,
|
|
78
78
|
exportsAll,
|
|
@@ -156,7 +156,7 @@ function getPageConfigUserFriendlyNew(pageConfig) {
|
|
|
156
156
|
});
|
|
157
157
|
});
|
|
158
158
|
return {
|
|
159
|
-
config,
|
|
159
|
+
config: config,
|
|
160
160
|
configEntries,
|
|
161
161
|
exportsAll,
|
|
162
162
|
source,
|
|
@@ -9,7 +9,11 @@ async function loadConfigValues(pageConfig, isDev) {
|
|
|
9
9
|
!isDev) {
|
|
10
10
|
return pageConfig;
|
|
11
11
|
}
|
|
12
|
-
const
|
|
12
|
+
const { moduleId, moduleExports } = pageConfig.loadConfigValuesAll();
|
|
13
|
+
const configValuesLoaded = await moduleExports;
|
|
14
|
+
// `configValuesLoaded` is sometimes `undefined` https://github.com/vikejs/vike/discussions/2092
|
|
15
|
+
if (!configValuesLoaded)
|
|
16
|
+
(0, utils_js_1.assert)(false, { moduleExports, configValuesLoaded, moduleId });
|
|
13
17
|
const configValues = (0, parsePageConfigs_js_1.parseConfigValuesSerialized)(configValuesLoaded.configValuesSerialized);
|
|
14
18
|
Object.assign(pageConfig.configValues, configValues);
|
|
15
19
|
(0, utils_js_1.objectAssign)(pageConfig, { isAllLoaded: true });
|
package/dist/cjs/shared/utils.js
CHANGED
|
@@ -32,7 +32,7 @@ __exportStar(require("../utils/isPlainObject.js"), exports);
|
|
|
32
32
|
__exportStar(require("../utils/compareString.js"), exports);
|
|
33
33
|
__exportStar(require("../utils/isNotNullish.js"), exports);
|
|
34
34
|
__exportStar(require("../utils/stringifyStringArray.js"), exports);
|
|
35
|
-
__exportStar(require("../utils/
|
|
35
|
+
__exportStar(require("../utils/toPosixPath.js"), exports);
|
|
36
36
|
__exportStar(require("../utils/cast.js"), exports);
|
|
37
37
|
__exportStar(require("../utils/isPropertyGetter.js"), exports);
|
|
38
38
|
__exportStar(require("../utils/isPromise.js"), exports);
|