vike 0.4.224-commit-00ed9fe → 0.4.225-commit-37a36a5
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 +1 -1
- package/dist/cjs/node/api/context.js +4 -4
- package/dist/cjs/node/api/dev.js +1 -1
- package/dist/cjs/node/api/prepareViteApiCall.js +3 -2
- package/dist/cjs/node/api/prerender.js +1 -1
- package/dist/cjs/node/api/preview.js +1 -1
- package/dist/cjs/node/cli/context.js +5 -4
- package/dist/cjs/node/cli/entry.js +3 -3
- package/dist/cjs/node/cli/parseCli.js +43 -15
- package/dist/cjs/node/cli/utils.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +15 -4
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +14 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +138 -83
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +10 -1
- package/dist/cjs/node/plugin/shared/getEnvVarObject.js +9 -8
- package/dist/cjs/node/plugin/shared/loggerNotProd/log.js +1 -1
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +25 -17
- package/dist/cjs/node/prerender/runPrerender.js +2 -2
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +9 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +3 -2
- package/dist/cjs/node/runtime/utils.js +0 -1
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +10 -8
- package/dist/cjs/node/shared/assertV1Design.js +2 -1
- package/dist/cjs/node/shared/utils.js +0 -1
- package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +19 -2
- package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +8 -5
- package/dist/cjs/shared/page-configs/helpers.js +1 -1
- package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +2 -5
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +9 -5
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -2
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +11 -4
- package/dist/cjs/utils/assertSingleInstance.js +11 -17
- package/dist/cjs/utils/getRandomId.js +1 -1
- package/dist/cjs/utils/normalizeHeaders.js +1 -1
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +1 -1
- package/dist/esm/client/client-routing-runtime/createPageContext.js +2 -2
- package/dist/esm/node/api/build.js +1 -1
- package/dist/esm/node/api/context.d.ts +8 -2
- package/dist/esm/node/api/context.js +4 -4
- package/dist/esm/node/api/dev.js +1 -1
- package/dist/esm/node/api/prepareViteApiCall.d.ts +2 -2
- package/dist/esm/node/api/prepareViteApiCall.js +3 -2
- package/dist/esm/node/api/prerender.js +1 -1
- package/dist/esm/node/api/preview.js +1 -1
- package/dist/esm/node/api/types.d.ts +7 -0
- package/dist/esm/node/cli/context.d.ts +4 -2
- package/dist/esm/node/cli/context.js +5 -4
- package/dist/esm/node/cli/entry.js +4 -4
- package/dist/esm/node/cli/parseCli.d.ts +3 -0
- package/dist/esm/node/cli/parseCli.js +44 -16
- package/dist/esm/node/cli/utils.d.ts +1 -1
- package/dist/esm/node/cli/utils.js +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -4
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +15 -11
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +3 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +5 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
- 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 +140 -84
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +11 -2
- package/dist/esm/node/plugin/shared/getEnvVarObject.d.ts +3 -1
- package/dist/esm/node/plugin/shared/getEnvVarObject.js +9 -8
- package/dist/esm/node/plugin/shared/loggerNotProd/log.js +2 -2
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +26 -18
- package/dist/esm/node/prerender/runPrerender.js +3 -3
- package/dist/esm/node/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.js +10 -6
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -3
- package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +3 -2
- package/dist/esm/node/runtime/utils.d.ts +0 -1
- package/dist/esm/node/runtime/utils.js +0 -1
- package/dist/esm/node/runtime-dev/createDevMiddleware.js +10 -8
- package/dist/esm/node/shared/assertV1Design.js +2 -1
- package/dist/esm/node/shared/utils.d.ts +0 -1
- package/dist/esm/node/shared/utils.js +0 -1
- package/dist/esm/shared/page-configs/Config.d.ts +19 -1
- package/dist/esm/shared/page-configs/PageConfig.d.ts +16 -5
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +5 -3
- package/dist/esm/shared/page-configs/getConfigDefinedAt.js +20 -3
- package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +8 -5
- package/dist/esm/shared/page-configs/helpers.js +1 -1
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +1 -1
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -5
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +3 -3
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +9 -5
- package/dist/esm/shared/route/loadPageRoutes.js +2 -2
- package/dist/esm/shared/types.d.ts +5 -1
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assert.d.ts +2 -1
- package/dist/esm/utils/assert.js +11 -4
- package/dist/esm/utils/assertSingleInstance.js +11 -17
- package/dist/esm/utils/getRandomId.d.ts +1 -1
- package/dist/esm/utils/getRandomId.js +1 -1
- package/dist/esm/utils/normalizeHeaders.js +1 -1
- package/package.json +5 -3
- package/dist/cjs/utils/projectInfo.js +0 -8
- package/dist/esm/utils/projectInfo.d.ts +0 -4
- package/dist/esm/utils/projectInfo.js +0 -5
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
export { resolvePrerenderConfigGlobal };
|
|
2
2
|
export { resolvePrerenderConfigLocal };
|
|
3
|
-
import { assert, isArray, objectAssign } from './utils.js';
|
|
3
|
+
import { assert, isArray, isObject, objectAssign } from './utils.js';
|
|
4
4
|
import { getConfigValueBuildTime } from '../../shared/page-configs/getConfigValueBuildTime.js';
|
|
5
|
+
// When setting +prerender to an object => it also enables pre-rendering
|
|
6
|
+
const defaultValueForObject = true;
|
|
5
7
|
function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
6
|
-
const prerenderConfigs = vikeConfig.global.config.prerender;
|
|
7
|
-
|
|
8
|
-
// Needed because of backwards compatibility of `vike({prerender:true})` in `vite.config.js`; after we remove it we can remove this line.
|
|
9
|
-
prerenderConfigList = prerenderConfigList.filter(isObject2);
|
|
10
|
-
assert(prerenderConfigList.every(isObject2)); // Help TS
|
|
8
|
+
const prerenderConfigs = vikeConfig.global.config.prerender || [];
|
|
9
|
+
const prerenderSettings = prerenderConfigs.filter(isObject2);
|
|
11
10
|
const prerenderConfigGlobal = {
|
|
12
|
-
partial: pickFirst(
|
|
13
|
-
noExtraDir: pickFirst(
|
|
14
|
-
parallel: pickFirst(
|
|
15
|
-
disableAutoRun: pickFirst(
|
|
11
|
+
partial: pickFirst(prerenderSettings.map((c) => c.partial)) ?? false,
|
|
12
|
+
noExtraDir: pickFirst(prerenderSettings.map((c) => c.noExtraDir)) ?? false,
|
|
13
|
+
parallel: pickFirst(prerenderSettings.map((c) => c.parallel)) ?? true,
|
|
14
|
+
disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false
|
|
16
15
|
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
let defaultLocalValue = false;
|
|
17
|
+
{
|
|
18
|
+
const valueFirst = prerenderConfigs.filter((p) => !isObject(p) || p.value !== null)[0];
|
|
19
|
+
if (valueFirst === true || (isObject(valueFirst) && (valueFirst.value ?? defaultValueForObject))) {
|
|
20
|
+
defaultLocalValue = true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// TODO/next-major: remove
|
|
24
|
+
// Backwards compatibility for `vike({prerender:true})` in vite.config.js
|
|
25
|
+
{
|
|
26
|
+
const valuesWithDefinedAt = vikeConfig.global._from.configsCumulative.prerender?.values ?? [];
|
|
27
|
+
if (valuesWithDefinedAt.some((v) => v.definedAt.includes('vite.config.js') && v.value)) {
|
|
28
|
+
defaultLocalValue = true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
23
31
|
objectAssign(prerenderConfigGlobal, {
|
|
24
32
|
defaultLocalValue,
|
|
25
33
|
isPrerenderingEnabledForAllPages: vikeConfig.pageConfigs.length > 0 &&
|
|
@@ -45,8 +53,8 @@ function resolvePrerenderConfigLocal(pageConfig) {
|
|
|
45
53
|
const prerenderConfigLocal = { value };
|
|
46
54
|
return prerenderConfigLocal;
|
|
47
55
|
}
|
|
48
|
-
function isObject2(
|
|
49
|
-
return typeof
|
|
56
|
+
function isObject2(value) {
|
|
57
|
+
return typeof value === 'object' && value !== null;
|
|
50
58
|
}
|
|
51
59
|
function pickFirst(arr) {
|
|
52
60
|
return arr.filter((v) => v !== undefined)[0];
|
|
@@ -4,7 +4,7 @@ export { runPrerenderFromAutoRun };
|
|
|
4
4
|
export { runPrerender_forceExit };
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import { route } from '../../shared/route/index.js';
|
|
7
|
-
import { assert, assertUsage, assertWarning, hasProp,
|
|
7
|
+
import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, changeEnumerable, onSetupPrerender, isObject, makePublicCopy, PROJECT_VERSION } from './utils.js';
|
|
8
8
|
import { prerenderPage, prerender404Page, getPageContextInitEnhanced } from '../runtime/renderPage/renderPageAlreadyRouted.js';
|
|
9
9
|
import pc from '@brillout/picocolors';
|
|
10
10
|
import { cpus } from 'os';
|
|
@@ -38,7 +38,7 @@ async function runPrerenderFromAPI(options = {}) {
|
|
|
38
38
|
}
|
|
39
39
|
async function runPrerenderFromCLIPrerenderCommand() {
|
|
40
40
|
try {
|
|
41
|
-
const { viteConfigEnhanced } = await prepareViteApiCall(
|
|
41
|
+
const { viteConfigEnhanced } = await prepareViteApiCall({}, 'prerender');
|
|
42
42
|
await runPrerender({ viteConfig: viteConfigEnhanced }, '$ vike prerender');
|
|
43
43
|
}
|
|
44
44
|
catch (err) {
|
|
@@ -75,7 +75,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
75
75
|
getHook_setIsPrerenderering();
|
|
76
76
|
const logLevel = !!options.onPagePrerender ? 'warn' : 'info';
|
|
77
77
|
if (logLevel === 'info') {
|
|
78
|
-
console.log(`${pc.cyan(`vike v${
|
|
78
|
+
console.log(`${pc.cyan(`vike v${PROJECT_VERSION}`)} ${pc.green('pre-rendering HTML...')}`);
|
|
79
79
|
}
|
|
80
80
|
await disableReactStreaming();
|
|
81
81
|
const viteConfig = await resolveConfig(options.viteConfig || {}, 'build', 'production');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from '../../utils/assert.js';
|
|
2
2
|
export * from '../../utils/hasProp.js';
|
|
3
|
-
export * from '../../utils/
|
|
3
|
+
export * from '../../utils/PROJECT_VERSION.js';
|
|
4
4
|
export * from '../../utils/objectAssign.js';
|
|
5
5
|
export * from '../../utils/isObjectWithKeys.js';
|
|
6
6
|
export * from '../../utils/isCallable.js';
|
|
@@ -2,7 +2,7 @@ import { assertIsNotBrowser } from '../../utils/assertIsNotBrowser.js';
|
|
|
2
2
|
assertIsNotBrowser();
|
|
3
3
|
export * from '../../utils/assert.js';
|
|
4
4
|
export * from '../../utils/hasProp.js';
|
|
5
|
-
export * from '../../utils/
|
|
5
|
+
export * from '../../utils/PROJECT_VERSION.js';
|
|
6
6
|
export * from '../../utils/objectAssign.js';
|
|
7
7
|
export * from '../../utils/isObjectWithKeys.js';
|
|
8
8
|
export * from '../../utils/isCallable.js';
|
|
@@ -25,7 +25,7 @@ export { updateUserFiles };
|
|
|
25
25
|
// - Without vike-server it's manually loaded here using importServerProductionEntry() which uses @brillout/vite-plugin-server-entry's autoImporter or crawler
|
|
26
26
|
// - In development: globalObject.viteDevServer which is Vite's development server
|
|
27
27
|
// - globalObject.viteDevServer is used by updateUserFiles() which then sets globalConfig.userFiles
|
|
28
|
-
import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectAssign, objectReplace, isObject, hasProp, debugGlob, getGlobalObject, genPromise, createDebugger, makePublicCopy,
|
|
28
|
+
import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectAssign, objectReplace, isObject, hasProp, debugGlob, getGlobalObject, genPromise, createDebugger, makePublicCopy, checkType, PROJECT_VERSION } from './utils.js';
|
|
29
29
|
import { importServerProductionEntry } from '@brillout/vite-plugin-server-entry/runtime';
|
|
30
30
|
import { virtualFileIdImportUserCodeServer } from '../shared/virtual-files/virtualFileImportUserCode.js';
|
|
31
31
|
import pc from '@brillout/picocolors';
|
|
@@ -89,9 +89,10 @@ function makePublic(globalContext) {
|
|
|
89
89
|
async function setGlobalContext_viteDevServer(viteDevServer) {
|
|
90
90
|
debug('setGlobalContext_viteDevServer()');
|
|
91
91
|
setIsProduction(false);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
// We cannot cache globalObject.viteDevServer because it's fully replaced when the user modifies vite.config.js => Vite's dev server is fully reloaded and a new viteDevServer replaces the previous one.
|
|
93
|
+
if (!globalObject.viteDevServer) {
|
|
94
|
+
assertIsNotInitilizedYet();
|
|
95
|
+
}
|
|
95
96
|
assert(globalObject.viteConfig);
|
|
96
97
|
globalObject.viteDevServer = viteDevServer;
|
|
97
98
|
await updateUserFiles();
|
|
@@ -351,7 +352,7 @@ function assertBuildInfo(buildInfo) {
|
|
|
351
352
|
checkType({ ...buildInfo, viteConfigRuntime: buildInfo.viteConfigRuntime });
|
|
352
353
|
}
|
|
353
354
|
function assertVersionAtBuildTime(versionAtBuildTime) {
|
|
354
|
-
const versionAtRuntime =
|
|
355
|
+
const versionAtRuntime = PROJECT_VERSION;
|
|
355
356
|
const pretty = (version) => pc.bold(`vike@${version}`);
|
|
356
357
|
assertUsage(versionAtBuildTime === versionAtRuntime, `Re-build your app (you're using ${pretty(versionAtRuntime)} but your app was built with ${pretty(versionAtBuildTime)})`);
|
|
357
358
|
}
|
|
@@ -369,7 +370,7 @@ async function updateUserFiles() {
|
|
|
369
370
|
const { promise, resolve } = genPromise();
|
|
370
371
|
assert(!globalObject.isProduction);
|
|
371
372
|
globalObject.waitForUserFilesUpdate = promise;
|
|
372
|
-
const viteDevServer =
|
|
373
|
+
const { viteDevServer } = globalObject;
|
|
373
374
|
assert(viteDevServer);
|
|
374
375
|
let virtualFileExports;
|
|
375
376
|
try {
|
|
@@ -381,6 +382,9 @@ async function updateUserFiles() {
|
|
|
381
382
|
}
|
|
382
383
|
virtualFileExports = virtualFileExports.default || virtualFileExports;
|
|
383
384
|
debugGlob('Glob result: ', virtualFileExports);
|
|
385
|
+
// Avoid race condition: abort if there is a new globalObject.viteDevServer (happens when vite.config.js is modified => Vite's dev server is fully reloaded).
|
|
386
|
+
if (viteDevServer !== globalObject.viteDevServer)
|
|
387
|
+
return;
|
|
384
388
|
await setUserFiles(virtualFileExports);
|
|
385
389
|
resolve();
|
|
386
390
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { getViteDevScript };
|
|
2
2
|
import { assert, assertUsage, assertWarning } from '../../utils.js';
|
|
3
3
|
import pc from '@brillout/picocolors';
|
|
4
|
+
const reachOutCTA = 'Create a new GitHub issue to discuss a solution.';
|
|
4
5
|
async function getViteDevScript(pageContext) {
|
|
5
6
|
const globalContext = pageContext._globalContext;
|
|
6
7
|
if (globalContext.isProduction) {
|
|
@@ -12,11 +13,13 @@ async function getViteDevScript(pageContext) {
|
|
|
12
13
|
let fakeHtml = fakeHtmlBegin + fakeHtmlEnd;
|
|
13
14
|
fakeHtml = await viteDevServer.transformIndexHtml('/', fakeHtml);
|
|
14
15
|
assertUsage(!fakeHtml.includes('vite-plugin-pwa'), `The HTML transformer of ${pc.cyan('vite-plugin-pwa')} cannot be applied, see workaround at https://github.com/vikejs/vike/issues/388#issuecomment-1199280084`);
|
|
15
|
-
assertUsage(!fakeHtml.startsWith(fakeHtmlBegin.replace(' ', '')),
|
|
16
|
-
assertUsage(fakeHtml.startsWith(fakeHtmlBegin) && fakeHtml.endsWith(fakeHtmlEnd),
|
|
16
|
+
assertUsage(!fakeHtml.startsWith(fakeHtmlBegin.replace(' ', '')), `Vite plugins that minify the HTML cannot be applied, see https://github.com/vikejs/vike/issues/224`);
|
|
17
|
+
assertUsage(fakeHtml.startsWith(fakeHtmlBegin) && fakeHtml.endsWith(fakeHtmlEnd), `You are using a Vite Plugin that transforms the HTML in a way that conflicts with Vike. ${reachOutCTA}`);
|
|
17
18
|
const viteInjection = fakeHtml.slice(fakeHtmlBegin.length, -1 * fakeHtmlEnd.length);
|
|
18
19
|
assert(viteInjection.includes('script'));
|
|
19
|
-
assertWarning(!viteInjection.includes('import('),
|
|
20
|
+
assertWarning(!viteInjection.includes('import('), `Unexpected Vite injected HMR code. ${reachOutCTA}`, {
|
|
21
|
+
onlyOnce: true
|
|
22
|
+
});
|
|
20
23
|
const viteDevScript = viteInjection;
|
|
21
24
|
return viteDevScript;
|
|
22
25
|
}
|
|
@@ -13,6 +13,4 @@ import { RenderErrorPage as RenderErrorPage_ } from '../../shared/route/abort.js
|
|
|
13
13
|
*
|
|
14
14
|
* See https://vike.dev/render
|
|
15
15
|
*/
|
|
16
|
-
export declare const RenderErrorPage: (
|
|
17
|
-
pageContext?: Record<string, unknown>;
|
|
18
|
-
} | undefined) => Error;
|
|
16
|
+
export declare const RenderErrorPage: (...args: Parameters<typeof RenderErrorPage_>) => Error;
|
|
@@ -4,14 +4,15 @@ import pc from '@brillout/picocolors';
|
|
|
4
4
|
const globalObject = getGlobalObject('createHttpResponse/assertNoInfiniteHttpRedirect.ts', {
|
|
5
5
|
redirectGraph: {}
|
|
6
6
|
});
|
|
7
|
-
// It's too strict, see https://github.com/vikejs/vike/issues/1270#issuecomment-1820608999
|
|
8
|
-
// - Let's create a new setting `+doNotCatchInfiniteRedirect` if someone complains.
|
|
9
7
|
function assertNoInfiniteHttpRedirect(
|
|
10
8
|
// The exact URL that the user will be redirected to.
|
|
11
9
|
// - It includes the Base URL as well as the locale (i18n) base.
|
|
12
10
|
urlRedirectTarget,
|
|
13
11
|
// Rationale for checking against `pageContextInit.urlOriginal`: https://github.com/vikejs/vike/pull/2264#issuecomment-2713890263
|
|
14
12
|
pageContextInit) {
|
|
13
|
+
// TO-DO/eventually: use cookie as described at https://github.com/vikejs/vike/pull/2273
|
|
14
|
+
if (true)
|
|
15
|
+
return 'DISABLED'; // Disabled until we make it reliable.
|
|
15
16
|
if (!urlRedirectTarget.startsWith('/')) {
|
|
16
17
|
// We assume that urlRedirectTarget points to an origin that is external (not the same origin), and we can therefore assume that the app doesn't define an infinite loop (at least not in itself).
|
|
17
18
|
// - There isn't a reliable way to check whether the redirect points to an external origin or the same origin; we hope/assume the user sets the URL without origin.
|
|
@@ -11,7 +11,6 @@ export * from '../../utils/parseUrl.js';
|
|
|
11
11
|
export * from '../../utils/parseUrl-extras.js';
|
|
12
12
|
export * from '../../utils/slice.js';
|
|
13
13
|
export * from '../../utils/sorter.js';
|
|
14
|
-
export * from '../../utils/projectInfo.js';
|
|
15
14
|
export * from '../../utils/isArray.js';
|
|
16
15
|
export * from '../../utils/isObject.js';
|
|
17
16
|
export * from '../../utils/objectAssign.js';
|
|
@@ -15,7 +15,6 @@ export * from '../../utils/parseUrl.js';
|
|
|
15
15
|
export * from '../../utils/parseUrl-extras.js';
|
|
16
16
|
export * from '../../utils/slice.js';
|
|
17
17
|
export * from '../../utils/sorter.js';
|
|
18
|
-
export * from '../../utils/projectInfo.js';
|
|
19
18
|
export * from '../../utils/isArray.js';
|
|
20
19
|
export * from '../../utils/isObject.js';
|
|
21
20
|
export * from '../../utils/objectAssign.js';
|
|
@@ -9,16 +9,18 @@ import { setGlobalContext_isProduction } from '../runtime/globalContext.js';
|
|
|
9
9
|
*/
|
|
10
10
|
async function createDevMiddleware(options = {}) {
|
|
11
11
|
setGlobalContext_isProduction(false);
|
|
12
|
-
const
|
|
13
|
-
...options
|
|
14
|
-
|
|
15
|
-
...options.viteConfig
|
|
16
|
-
|
|
12
|
+
const optionsMod = {
|
|
13
|
+
...options,
|
|
14
|
+
viteConfig: {
|
|
15
|
+
...options.viteConfig,
|
|
16
|
+
root: options.root ?? options.viteConfig?.root,
|
|
17
|
+
server: {
|
|
18
|
+
...options.viteConfig?.server,
|
|
19
|
+
middlewareMode: options.viteConfig?.server?.middlewareMode ?? true
|
|
20
|
+
}
|
|
17
21
|
}
|
|
18
22
|
};
|
|
19
|
-
|
|
20
|
-
viteConfigFromOptions.root = options.root;
|
|
21
|
-
const { viteConfigEnhanced } = await prepareViteApiCall(viteConfigFromOptions, 'dev');
|
|
23
|
+
const { viteConfigEnhanced } = await prepareViteApiCall(optionsMod, 'dev');
|
|
22
24
|
const server = await createServer(viteConfigEnhanced);
|
|
23
25
|
const devMiddleware = server.middlewares;
|
|
24
26
|
return { devMiddleware, viteServer: server, viteConfig: server.config };
|
|
@@ -10,7 +10,8 @@ function assertV1Design(pageConfigs, pageFilesAll) {
|
|
|
10
10
|
assert(pageConfigs.length > 0);
|
|
11
11
|
const filesV1 = unique(pageConfigs
|
|
12
12
|
.map((p) => Object.values(p.configValueSources).map((sources) => sources
|
|
13
|
-
.map((c) => c.
|
|
13
|
+
.map((c) => c.definedAt)
|
|
14
|
+
.map((definedAt) => (definedAt.definedBy ? null : definedAt.filePathAbsoluteUserRootDir))
|
|
14
15
|
.filter(isNotNullish)
|
|
15
16
|
.map((filePathToShowToUser) => indent + filePathToShowToUser)))
|
|
16
17
|
.flat(2));
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export * from '../../utils/assert.js';
|
|
2
2
|
export * from '../../utils/getFileExtension.js';
|
|
3
3
|
export * from '../../utils/isPlainObject.js';
|
|
4
|
-
export * from '../../utils/projectInfo.js';
|
|
5
4
|
export * from '../../utils/checkType.js';
|
|
6
5
|
export * from '../../utils/hasProp.js';
|
|
7
6
|
export * from '../../utils/objectAssign.js';
|
|
@@ -3,7 +3,6 @@ assertIsNotBrowser();
|
|
|
3
3
|
export * from '../../utils/assert.js';
|
|
4
4
|
export * from '../../utils/getFileExtension.js';
|
|
5
5
|
export * from '../../utils/isPlainObject.js';
|
|
6
|
-
export * from '../../utils/projectInfo.js';
|
|
7
6
|
export * from '../../utils/checkType.js';
|
|
8
7
|
export * from '../../utils/hasProp.js';
|
|
9
8
|
export * from '../../utils/objectAssign.js';
|
|
@@ -297,7 +297,9 @@ type ConfigBuiltIn = {
|
|
|
297
297
|
*/
|
|
298
298
|
disableAutoRun?: boolean;
|
|
299
299
|
/**
|
|
300
|
-
*
|
|
300
|
+
* Whether to enable pre-rendering.
|
|
301
|
+
*
|
|
302
|
+
* Setting `value: null` enables you to set prerender settings without activating pre-rendering. (Useful for Vike extensions.)
|
|
301
303
|
*
|
|
302
304
|
* https://vike.dev/prerender#value
|
|
303
305
|
*
|
|
@@ -471,6 +473,22 @@ type ConfigBuiltIn = {
|
|
|
471
473
|
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
472
474
|
*/
|
|
473
475
|
cacheControl?: string;
|
|
476
|
+
/**
|
|
477
|
+
* Make development/preview server available over LAN and public addresses.
|
|
478
|
+
*
|
|
479
|
+
* Default: `false` (or `true` if running inside Docker/Podman).
|
|
480
|
+
*
|
|
481
|
+
* https://vike.dev/host
|
|
482
|
+
*/
|
|
483
|
+
host?: boolean | string;
|
|
484
|
+
/**
|
|
485
|
+
* Change port of development/preview server.
|
|
486
|
+
*
|
|
487
|
+
* @default 3000
|
|
488
|
+
*
|
|
489
|
+
* https://vike.dev/port
|
|
490
|
+
*/
|
|
491
|
+
port?: number;
|
|
474
492
|
/** Where scripts are injected in the HTML.
|
|
475
493
|
*
|
|
476
494
|
* https://vike.dev/injectScriptsAt
|
|
@@ -17,12 +17,15 @@ export type { ConfigValueSources };
|
|
|
17
17
|
export type { ConfigValuesComputed };
|
|
18
18
|
export type { DefinedAtData };
|
|
19
19
|
export type { DefinedAtFile };
|
|
20
|
+
export type { DefinedAt };
|
|
21
|
+
export type { DefinedBy };
|
|
20
22
|
export type { DefinedAtFilePath };
|
|
21
23
|
import type { ConfigValueSerialized } from './serialize/PageConfigSerialized.js';
|
|
22
24
|
import type { LocationId } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js';
|
|
23
25
|
import type { FilePath } from './FilePath.js';
|
|
24
26
|
import type { ConfigDefinitions } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
|
|
25
27
|
import type { PlusFile } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js';
|
|
28
|
+
import type { Operation } from '../../node/api/types.js';
|
|
26
29
|
type PageConfigCommon = {
|
|
27
30
|
pageId: string;
|
|
28
31
|
} & PageConfigRoute;
|
|
@@ -33,7 +36,7 @@ type PageConfigRoute = {
|
|
|
33
36
|
isErrorPage?: undefined;
|
|
34
37
|
routeFilesystem: {
|
|
35
38
|
routeString: string;
|
|
36
|
-
|
|
39
|
+
definedAtLocation: string;
|
|
37
40
|
};
|
|
38
41
|
};
|
|
39
42
|
/** Page config, runtime data structure */
|
|
@@ -89,7 +92,7 @@ type ConfigValueSources = Record<string, // configName
|
|
|
89
92
|
ConfigValueSource[]>;
|
|
90
93
|
type ConfigValueSource = {
|
|
91
94
|
configEnv: ConfigEnvInternal;
|
|
92
|
-
|
|
95
|
+
definedAt: DefinedAtFilePath | DefinedBy;
|
|
93
96
|
plusFile: PlusFile | null;
|
|
94
97
|
locationId: LocationId;
|
|
95
98
|
/** Wether the config value is loaded at runtime, for example config.Page or config.onBeforeRender */
|
|
@@ -119,13 +122,13 @@ type ConfigValue = ConfigValueStandard | ConfigValueCumulative | ConfigValueComp
|
|
|
119
122
|
type ConfigValueStandard = {
|
|
120
123
|
type: 'standard';
|
|
121
124
|
value: unknown;
|
|
122
|
-
definedAtData:
|
|
125
|
+
definedAtData: DefinedAt;
|
|
123
126
|
};
|
|
124
127
|
/** Defined by multiple sources (thus multiple file paths). */
|
|
125
128
|
type ConfigValueCumulative = {
|
|
126
129
|
type: 'cumulative';
|
|
127
130
|
value: unknown[];
|
|
128
|
-
definedAtData:
|
|
131
|
+
definedAtData: DefinedAt[];
|
|
129
132
|
};
|
|
130
133
|
/** Defined internally by Vike (currently, Vike doesn't support computed configs created by users). */
|
|
131
134
|
type ConfigValueComputed = {
|
|
@@ -133,8 +136,16 @@ type ConfigValueComputed = {
|
|
|
133
136
|
value: unknown;
|
|
134
137
|
definedAtData: null;
|
|
135
138
|
};
|
|
136
|
-
type DefinedAtData =
|
|
139
|
+
type DefinedAtData = DefinedAt | DefinedAt[] | null;
|
|
140
|
+
type DefinedAt = DefinedAtFile | DefinedBy;
|
|
141
|
+
type DefinedBy = {
|
|
142
|
+
definedBy: 'cli' | 'env';
|
|
143
|
+
} | {
|
|
144
|
+
definedBy: 'api';
|
|
145
|
+
operation: Operation;
|
|
146
|
+
};
|
|
137
147
|
type DefinedAtFile = {
|
|
138
148
|
filePathToShowToUser: string;
|
|
139
149
|
fileExportPathToShowToUser: null | string[];
|
|
150
|
+
definedBy?: undefined;
|
|
140
151
|
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { getConfigDefinedAt };
|
|
2
2
|
export { getConfigDefinedAtOptional };
|
|
3
3
|
export { getDefinedAtString };
|
|
4
|
+
export { getDefinedByString };
|
|
4
5
|
export type { ConfigDefinedAt };
|
|
5
6
|
export type { ConfigDefinedAtOptional };
|
|
6
|
-
import type { DefinedAtData,
|
|
7
|
+
import type { DefinedAtData, DefinedBy } from './PageConfig.js';
|
|
7
8
|
type ConfigDefinedAtOptional = ConfigDefinedAt | `Config ${string} defined internally`;
|
|
8
9
|
type ConfigDefinedAt = `Config ${string} defined at ${string}`;
|
|
9
|
-
declare function getConfigDefinedAt<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData:
|
|
10
|
+
declare function getConfigDefinedAt<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData: NonNullable<DefinedAtData>): `${SentenceBegin} ${ConfigName} defined at ${string}`;
|
|
10
11
|
declare function getConfigDefinedAtOptional<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData: DefinedAtData): `${SentenceBegin} ${ConfigName} defined ${'internally' | `at ${string}`}`;
|
|
11
|
-
declare function getDefinedAtString(definedAtData:
|
|
12
|
+
declare function getDefinedAtString(definedAtData: NonNullable<DefinedAtData>, configName: string): string;
|
|
13
|
+
declare function getDefinedByString(definedAt: DefinedBy, configName: string): `API call dev({ vikeConfig: { ${string} } })` | `API call build({ vikeConfig: { ${string} } })` | `API call preview({ vikeConfig: { ${string} } })` | `API call prerender({ vikeConfig: { ${string} } })` | `CLI option --${string}` | `environment variable VIKE_CONFIG="{${string}}"`;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { getConfigDefinedAt };
|
|
2
2
|
export { getConfigDefinedAtOptional };
|
|
3
3
|
export { getDefinedAtString };
|
|
4
|
-
|
|
4
|
+
export { getDefinedByString };
|
|
5
|
+
import { assert, checkType, isArray } from '../utils.js';
|
|
5
6
|
import pc from '@brillout/picocolors';
|
|
6
7
|
import { getExportPath } from './getExportPath.js';
|
|
7
8
|
function getConfigDefinedAt(sentenceBegin, configName, definedAtData) {
|
|
@@ -28,8 +29,10 @@ function getDefinedAtString(definedAtData, configName) {
|
|
|
28
29
|
}
|
|
29
30
|
assert(files.length >= 1);
|
|
30
31
|
const definedAtString = files
|
|
31
|
-
.map((
|
|
32
|
-
|
|
32
|
+
.map((definedAt) => {
|
|
33
|
+
if (definedAt.definedBy)
|
|
34
|
+
return getDefinedByString(definedAt, configName);
|
|
35
|
+
const { filePathToShowToUser, fileExportPathToShowToUser } = definedAt;
|
|
33
36
|
let s = filePathToShowToUser;
|
|
34
37
|
const exportPath = getExportPath(fileExportPathToShowToUser, configName);
|
|
35
38
|
if (exportPath) {
|
|
@@ -40,3 +43,17 @@ function getDefinedAtString(definedAtData, configName) {
|
|
|
40
43
|
.join(' / ');
|
|
41
44
|
return definedAtString;
|
|
42
45
|
}
|
|
46
|
+
function getDefinedByString(definedAt, configName) {
|
|
47
|
+
if (definedAt.definedBy === 'api') {
|
|
48
|
+
return `API call ${pc.cyan(`${definedAt.operation}({ vikeConfig: { ${configName} } })`)}`;
|
|
49
|
+
}
|
|
50
|
+
const { definedBy } = definedAt;
|
|
51
|
+
if (definedBy === 'cli') {
|
|
52
|
+
return `CLI option ${pc.cyan(`--${configName}`)}`;
|
|
53
|
+
}
|
|
54
|
+
if (definedBy === 'env') {
|
|
55
|
+
return `environment variable ${pc.cyan(`VIKE_CONFIG="{${configName}}"`)}`;
|
|
56
|
+
}
|
|
57
|
+
checkType(definedBy);
|
|
58
|
+
assert(false);
|
|
59
|
+
}
|
|
@@ -31,7 +31,7 @@ function getConfigValue(pageConfig, configName) {
|
|
|
31
31
|
return {
|
|
32
32
|
type: 'standard',
|
|
33
33
|
value: configValueSource.value,
|
|
34
|
-
definedAtData:
|
|
34
|
+
definedAtData: getDefinedAt(configValueSource)
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
else {
|
|
@@ -51,13 +51,16 @@ function mergeCumulative(configValueSources) {
|
|
|
51
51
|
assert(configValueSource.configEnv.config === true);
|
|
52
52
|
assert(configValueSource.valueIsLoaded);
|
|
53
53
|
value.push(configValueSource.value);
|
|
54
|
-
definedAtData.push(
|
|
54
|
+
definedAtData.push(getDefinedAt(configValueSource));
|
|
55
55
|
});
|
|
56
56
|
return { value, definedAtData };
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function getDefinedAt(configValueSource) {
|
|
59
|
+
const { definedAt } = configValueSource;
|
|
60
|
+
if (definedAt.definedBy)
|
|
61
|
+
return definedAt;
|
|
59
62
|
return {
|
|
60
|
-
filePathToShowToUser:
|
|
61
|
-
fileExportPathToShowToUser:
|
|
63
|
+
filePathToShowToUser: definedAt.filePathToShowToUser,
|
|
64
|
+
fileExportPathToShowToUser: definedAt.fileExportPathToShowToUser
|
|
62
65
|
};
|
|
63
66
|
}
|
|
@@ -12,7 +12,7 @@ function getConfigValueFilePathToShowToUser(definedAtData) {
|
|
|
12
12
|
// A unique file path only exists if the config value isn't cumulative nor computed:
|
|
13
13
|
// - cumulative config values have multiple file paths
|
|
14
14
|
// - computed values don't have any file path
|
|
15
|
-
if (!definedAtData || isArray(definedAtData))
|
|
15
|
+
if (!definedAtData || isArray(definedAtData) || definedAtData.definedBy)
|
|
16
16
|
return null;
|
|
17
17
|
const { filePathToShowToUser } = definedAtData;
|
|
18
18
|
assert(filePathToShowToUser);
|
|
@@ -3,8 +3,8 @@ export { parseConfigValuesSerialized };
|
|
|
3
3
|
import type { ConfigValues, PageConfigRuntime, PageConfigGlobalRuntime } from '../PageConfig.js';
|
|
4
4
|
import type { PageConfigGlobalRuntimeSerialized, PageConfigRuntimeSerialized } from './PageConfigSerialized.js';
|
|
5
5
|
import type { ConfigValueSerialized } from './PageConfigSerialized.js';
|
|
6
|
-
declare function parseConfigValuesSerialized(configValuesSerialized: Record<string, ConfigValueSerialized>): ConfigValues;
|
|
7
6
|
declare function parsePageConfigs(pageConfigsSerialized: PageConfigRuntimeSerialized[], pageConfigGlobalSerialized: PageConfigGlobalRuntimeSerialized): {
|
|
8
7
|
pageConfigs: PageConfigRuntime[];
|
|
9
8
|
pageConfigGlobal: PageConfigGlobalRuntime;
|
|
10
9
|
};
|
|
10
|
+
declare function parseConfigValuesSerialized(configValuesSerialized: Record<string, ConfigValueSerialized>): ConfigValues;
|
|
@@ -4,10 +4,6 @@ import { assert, assertUsage, isCallable } from '../../utils.js';
|
|
|
4
4
|
import { getConfigDefinedAt } from '../getConfigDefinedAt.js';
|
|
5
5
|
import { parseTransform } from '@brillout/json-serializer/parse';
|
|
6
6
|
import { assertPlusFileExport } from '../assertPlusFileExport.js';
|
|
7
|
-
function parseConfigValuesSerialized(configValuesSerialized) {
|
|
8
|
-
const configValues = parseConfigValuesSerialized_tmp(configValuesSerialized);
|
|
9
|
-
return configValues;
|
|
10
|
-
}
|
|
11
7
|
function parsePageConfigs(pageConfigsSerialized, pageConfigGlobalSerialized) {
|
|
12
8
|
// pageConfigs
|
|
13
9
|
const pageConfigs = pageConfigsSerialized.map((pageConfigSerialized) => {
|
|
@@ -43,7 +39,7 @@ function assertRouteConfigValue(configValues) {
|
|
|
43
39
|
}
|
|
44
40
|
*/
|
|
45
41
|
}
|
|
46
|
-
function
|
|
42
|
+
function parseConfigValuesSerialized(configValuesSerialized) {
|
|
47
43
|
const configValues = {};
|
|
48
44
|
Object.entries(configValuesSerialized).forEach(([configName, configValueSeriliazed]) => {
|
|
49
45
|
let configValue;
|
|
@@ -100,6 +96,7 @@ function parseValueSerialized(valueSerialized, configName, getDefinedAtFile) {
|
|
|
100
96
|
if (valueSerialized.type === 'plus-file') {
|
|
101
97
|
const definedAtFile = getDefinedAtFile();
|
|
102
98
|
const { exportValues } = valueSerialized;
|
|
99
|
+
assert(!definedAtFile.definedBy);
|
|
103
100
|
assertPlusFileExport(exportValues, definedAtFile.filePathToShowToUser, configName);
|
|
104
101
|
let value;
|
|
105
102
|
let valueWasFound = false;
|
|
@@ -2,7 +2,7 @@ export { serializeConfigValues };
|
|
|
2
2
|
export { getConfigValuesBase };
|
|
3
3
|
export { isJsonValue };
|
|
4
4
|
export type { FilesEnv };
|
|
5
|
-
import type { ConfigEnvInternal, ConfigValueSource,
|
|
5
|
+
import type { ConfigEnvInternal, ConfigValueSource, DefinedAt, PageConfigBuildTime, PageConfigGlobalBuildTime } from '../PageConfig.js';
|
|
6
6
|
declare function serializeConfigValues(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, importStatements: string[], filesEnv: FilesEnv, isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, tabspace: string, isEager: boolean | null): string[];
|
|
7
7
|
declare function isJsonValue(value: unknown): boolean;
|
|
8
8
|
declare function getConfigValuesBase(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, isEager: boolean | null): ConfigValuesBase;
|
|
@@ -17,14 +17,14 @@ type ConfigValuesBase = ({
|
|
|
17
17
|
} | {
|
|
18
18
|
configValueBase: {
|
|
19
19
|
type: 'standard';
|
|
20
|
-
definedAtData:
|
|
20
|
+
definedAtData: DefinedAt;
|
|
21
21
|
};
|
|
22
22
|
sourceRelevant: ConfigValueSource;
|
|
23
23
|
configName: string;
|
|
24
24
|
} | {
|
|
25
25
|
configValueBase: {
|
|
26
26
|
type: 'cumulative';
|
|
27
|
-
definedAtData:
|
|
27
|
+
definedAtData: DefinedAt[];
|
|
28
28
|
};
|
|
29
29
|
sourcesRelevant: ConfigValueSource[];
|
|
30
30
|
configName: string;
|
|
@@ -47,7 +47,7 @@ function serializeConfigValues(pageConfig, importStatements, filesEnv, isEnvMatc
|
|
|
47
47
|
function getValueSerializedFromSource(configValueSource, configName, importStatements, filesEnv) {
|
|
48
48
|
let valueData;
|
|
49
49
|
if (configValueSource.valueIsLoaded && !configValueSource.valueIsLoadedWithImport) {
|
|
50
|
-
valueData = getValueSerializedWithJson(configValueSource.value, configName, configValueSource.
|
|
50
|
+
valueData = getValueSerializedWithJson(configValueSource.value, configName, configValueSource.definedAt, importStatements, filesEnv, configValueSource.configEnv);
|
|
51
51
|
}
|
|
52
52
|
else {
|
|
53
53
|
valueData = getValueSerializedWithImport(configValueSource, importStatements, filesEnv, configName);
|
|
@@ -98,8 +98,9 @@ function serializeConfigValue(configValueBase, valueData, configName, lines, tab
|
|
|
98
98
|
}
|
|
99
99
|
function getValueSerializedWithImport(configValueSource, importStatements, filesEnv, configName) {
|
|
100
100
|
assert(!configValueSource.valueIsFilePath);
|
|
101
|
-
const { valueIsDefinedByPlusValueFile,
|
|
102
|
-
|
|
101
|
+
const { valueIsDefinedByPlusValueFile, definedAt, configEnv } = configValueSource;
|
|
102
|
+
assert(!definedAt.definedBy);
|
|
103
|
+
const { filePathAbsoluteVite, fileExportName } = definedAt;
|
|
103
104
|
if (valueIsDefinedByPlusValueFile)
|
|
104
105
|
assert(fileExportName === undefined);
|
|
105
106
|
const { importName } = addImportStatement(importStatements, filePathAbsoluteVite, fileExportName || '*', filesEnv, configEnv, configName);
|
|
@@ -226,9 +227,12 @@ function getConfigValuesBase(pageConfig, isEnvMatch, isEager) {
|
|
|
226
227
|
return [...fromComputed, ...fromSources].filter((r) => r !== 'SKIP');
|
|
227
228
|
}
|
|
228
229
|
function getDefinedAtFileSource(source) {
|
|
230
|
+
const { definedAt } = source;
|
|
231
|
+
if (definedAt.definedBy)
|
|
232
|
+
return definedAt;
|
|
229
233
|
const definedAtFile = {
|
|
230
|
-
filePathToShowToUser:
|
|
231
|
-
fileExportPathToShowToUser:
|
|
234
|
+
filePathToShowToUser: definedAt.filePathToShowToUser,
|
|
235
|
+
fileExportPathToShowToUser: definedAt.fileExportPathToShowToUser
|
|
232
236
|
};
|
|
233
237
|
return definedAtFile;
|
|
234
238
|
}
|
|
@@ -60,11 +60,11 @@ function getPageRoutes(filesystemRoots, pageFilesAll, pageConfigs, allPageIds) {
|
|
|
60
60
|
if (!pageRoute) {
|
|
61
61
|
const { routeFilesystem } = pageConfig;
|
|
62
62
|
assert(routeFilesystem);
|
|
63
|
-
const { routeString,
|
|
63
|
+
const { routeString, definedAtLocation } = routeFilesystem;
|
|
64
64
|
assert(routeFilesystem.routeString.startsWith('/'));
|
|
65
65
|
pageRoute = {
|
|
66
66
|
pageId,
|
|
67
|
-
routeFilesystemDefinedBy:
|
|
67
|
+
routeFilesystemDefinedBy: definedAtLocation,
|
|
68
68
|
comesFromV1PageConfig,
|
|
69
69
|
routeString,
|
|
70
70
|
routeDefinedAtString: null,
|
|
@@ -138,7 +138,11 @@ type PageContextBuiltInCommon<Data> = {
|
|
|
138
138
|
*/
|
|
139
139
|
isBaseMissing?: true;
|
|
140
140
|
};
|
|
141
|
-
type PageContextBuiltInServer<Data> = PageContextBuiltInCommon<Data> & PageContextUrlServer
|
|
141
|
+
type PageContextBuiltInServer<Data> = PageContextBuiltInCommon<Data> & PageContextUrlServer & {
|
|
142
|
+
isHydration?: undefined;
|
|
143
|
+
isBackwardNavigation?: undefined;
|
|
144
|
+
previousPageContext?: undefined;
|
|
145
|
+
};
|
|
142
146
|
type PageContextBuiltInClientWithClientRouting<Data> = Partial<PageContextBuiltInCommon<Data>> & Pick<PageContextBuiltInCommon<Data>, 'Page' | 'routeParams' | 'pageExports' | 'config' | 'configEntries' | 'exports' | 'exportsAll' | 'abortReason' | 'data' | 'pageId' | 'source' | 'sources' | 'from'> & {
|
|
143
147
|
/** Whether the current page is already rendered to HTML */
|
|
144
148
|
isHydration: boolean;
|