vike 0.4.225 → 0.4.226
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/client/shared/getPageContextProxyForUser.js +3 -66
- package/dist/cjs/node/api/build.js +7 -7
- package/dist/cjs/node/api/dev.js +2 -2
- package/dist/cjs/node/api/prepareViteApiCall.js +55 -30
- package/dist/cjs/node/api/prerender.js +2 -3
- package/dist/cjs/node/api/preview.js +27 -6
- package/dist/cjs/node/api/utils.js +1 -0
- package/dist/cjs/node/cli/entry.js +4 -2
- package/dist/cjs/node/cli/parseCli.js +10 -4
- package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +2 -2
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +51 -0
- package/dist/cjs/node/plugin/plugins/build.js +3 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +8 -6
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +14 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -1
- 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 +99 -85
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +10 -1
- package/dist/cjs/node/plugin/shared/getEnvVarObject.js +7 -0
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +3 -3
- package/dist/cjs/node/prerender/runPrerender.js +8 -12
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +13 -8
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
- package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +67 -14
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +3 -2
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -0
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +18 -12
- package/dist/cjs/node/runtime/renderPage.js +13 -28
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +2 -2
- package/dist/cjs/node/shared/assertV1Design.js +1 -1
- package/dist/cjs/node/shared/utils.js +1 -1
- package/dist/cjs/node/shared/virtual-files.js +14 -10
- package/dist/cjs/shared/NOT_SERIALIZABLE.js +5 -0
- package/dist/cjs/shared/modifyUrl.js +3 -5
- package/dist/cjs/shared/modifyUrlSameOrigin.js +42 -0
- package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +3 -2
- package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +5 -5
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +9 -9
- package/dist/cjs/shared/utils.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +10 -3
- package/dist/cjs/utils/assertSetup.js +12 -8
- package/dist/cjs/utils/getRandomId.js +1 -1
- package/dist/cjs/utils/isNullish.js +16 -0
- package/dist/cjs/utils/normalizeHeaders.js +1 -1
- package/dist/cjs/utils/objectAssign.js +7 -2
- package/dist/cjs/utils/objectFilter.js +10 -0
- package/dist/cjs/utils/pick.js +12 -0
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +3 -1
- package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
- package/dist/esm/client/client-routing-runtime/navigate.d.ts +6 -5
- package/dist/esm/client/client-routing-runtime/navigate.js +6 -2
- package/dist/esm/client/client-routing-runtime/normalizeUrlArgument.js +1 -1
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +1 -1
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +6 -3
- package/dist/esm/client/server-routing-runtime/getPageContext.js +6 -3
- package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +1 -11
- package/dist/esm/client/shared/getPageContextProxyForUser.js +4 -67
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
- package/dist/esm/node/api/build.js +7 -7
- package/dist/esm/node/api/dev.js +2 -2
- package/dist/esm/node/api/prepareViteApiCall.d.ts +2 -1
- package/dist/esm/node/api/prepareViteApiCall.js +57 -32
- package/dist/esm/node/api/prerender.js +2 -3
- package/dist/esm/node/api/preview.d.ts +1 -1
- package/dist/esm/node/api/preview.js +24 -6
- package/dist/esm/node/api/utils.d.ts +1 -0
- package/dist/esm/node/api/utils.js +1 -0
- package/dist/esm/node/cli/entry.js +4 -2
- package/dist/esm/node/cli/parseCli.js +10 -4
- package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +2 -2
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +49 -0
- package/dist/esm/node/plugin/plugins/build.js +3 -1
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +3 -1
- package/dist/esm/node/plugin/plugins/commonConfig.js +8 -6
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +15 -11
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -1
- 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 +11 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +101 -86
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +11 -2
- package/dist/esm/node/plugin/shared/getEnvVarObject.js +7 -0
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +3 -3
- package/dist/esm/node/prerender/runPrerender.js +8 -12
- 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.d.ts +2 -3
- package/dist/esm/node/runtime/globalContext.js +13 -8
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
- package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -0
- package/dist/esm/node/runtime/html/serializePageContextClientSide.js +69 -15
- 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/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -0
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +27 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +18 -12
- package/dist/esm/node/runtime/renderPage.js +14 -29
- package/dist/esm/node/runtime/utils.d.ts +1 -1
- package/dist/esm/node/runtime/utils.js +1 -1
- package/dist/esm/node/runtime-dev/createDevMiddleware.js +2 -2
- package/dist/esm/node/shared/assertV1Design.js +1 -1
- package/dist/esm/node/shared/utils.d.ts +1 -1
- package/dist/esm/node/shared/utils.js +1 -1
- package/dist/esm/node/shared/virtual-files.d.ts +2 -0
- package/dist/esm/node/shared/virtual-files.js +14 -10
- package/dist/esm/shared/NOT_SERIALIZABLE.d.ts +1 -0
- package/dist/esm/shared/NOT_SERIALIZABLE.js +2 -0
- package/dist/esm/shared/modifyUrl.d.ts +2 -2
- package/dist/esm/shared/modifyUrl.js +3 -5
- package/dist/esm/shared/modifyUrlSameOrigin.d.ts +9 -0
- package/dist/esm/shared/modifyUrlSameOrigin.js +40 -0
- package/dist/esm/shared/page-configs/Config.d.ts +11 -3
- package/dist/esm/shared/page-configs/PageConfig.d.ts +2 -2
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +3 -1
- package/dist/esm/shared/page-configs/getConfigDefinedAt.js +3 -2
- package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +5 -5
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +9 -9
- package/dist/esm/shared/route/abort.d.ts +2 -2
- package/dist/esm/shared/types.d.ts +39 -3
- package/dist/esm/shared/utils.d.ts +2 -1
- package/dist/esm/shared/utils.js +2 -1
- package/dist/esm/types/index.d.ts +0 -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 +10 -3
- package/dist/esm/utils/assertSetup.d.ts +2 -2
- package/dist/esm/utils/assertSetup.js +12 -8
- package/dist/esm/utils/getRandomId.d.ts +1 -1
- package/dist/esm/utils/getRandomId.js +1 -1
- package/dist/esm/utils/isNullish.d.ts +3 -0
- package/dist/esm/utils/isNullish.js +11 -0
- package/dist/esm/utils/normalizeHeaders.js +1 -1
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +7 -2
- package/dist/esm/utils/objectFilter.d.ts +1 -0
- package/dist/esm/utils/objectFilter.js +7 -0
- package/dist/esm/utils/pick.d.ts +1 -0
- package/dist/esm/utils/pick.js +9 -0
- package/package.json +4 -2
- package/dist/cjs/shared/notSerializable.js +0 -5
- package/dist/cjs/utils/isNotNullish.js +0 -5
- package/dist/esm/shared/notSerializable.d.ts +0 -1
- package/dist/esm/shared/notSerializable.js +0 -2
- package/dist/esm/utils/isNotNullish.d.ts +0 -1
- package/dist/esm/utils/isNotNullish.js +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export { getVikeConfig };
|
|
2
|
+
export { getVikeConfigOptional };
|
|
2
3
|
export { getVikeConfig2 };
|
|
3
4
|
export { reloadVikeConfig };
|
|
4
|
-
export { vikeConfigDependencies };
|
|
5
5
|
export { isV1Design };
|
|
6
6
|
export { getConfVal };
|
|
7
7
|
export { getConfigDefinitionOptional };
|
|
8
|
+
export { getVikeConfigFromCliOrEnv };
|
|
8
9
|
export { isOverriden };
|
|
9
10
|
export type { VikeConfigObject };
|
|
10
11
|
import type { PageConfigGlobalBuildTime, ConfigValueSource, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
|
|
@@ -17,14 +18,22 @@ type VikeConfigObject = {
|
|
|
17
18
|
pageConfigGlobal: PageConfigGlobalBuildTime;
|
|
18
19
|
global: PageConfigUserFriendly;
|
|
19
20
|
pages: PageConfigsUserFriendly;
|
|
21
|
+
vikeConfigDependencies: Set<string>;
|
|
20
22
|
};
|
|
21
|
-
declare const vikeConfigDependencies: Set<string>;
|
|
22
23
|
declare function reloadVikeConfig(config: ResolvedConfig): void;
|
|
23
24
|
declare function getVikeConfig(config: ResolvedConfig, { doNotRestartViteOnError }?: {
|
|
24
25
|
doNotRestartViteOnError?: true;
|
|
25
26
|
}): Promise<VikeConfigObject>;
|
|
26
27
|
declare function getVikeConfig2(userRootDir: string, isDev: boolean, vikeVitePluginOptions: unknown): Promise<VikeConfigObject>;
|
|
28
|
+
declare function getVikeConfigOptional(): Promise<null | VikeConfigObject>;
|
|
27
29
|
declare function isV1Design(config: ResolvedConfig | UserConfig): boolean;
|
|
30
|
+
declare function getVikeConfigFromCliOrEnv(): {
|
|
31
|
+
vikeConfigFromCliOrEnv: {
|
|
32
|
+
[x: string]: unknown;
|
|
33
|
+
};
|
|
34
|
+
configFromCliOptions: import("../../../../cli/parseCli.js").CliOptions | null;
|
|
35
|
+
configFromEnvVar: Record<string, unknown> | null;
|
|
36
|
+
};
|
|
28
37
|
declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitions, configName: string): ConfigDefinitionInternal | null;
|
|
29
38
|
declare function getConfVal(plusFile: PlusFile, configName: string): null | {
|
|
30
39
|
value: unknown;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export { getVikeConfig };
|
|
2
|
+
export { getVikeConfigOptional };
|
|
2
3
|
export { getVikeConfig2 };
|
|
3
4
|
export { reloadVikeConfig };
|
|
4
|
-
export { vikeConfigDependencies };
|
|
5
5
|
export { isV1Design };
|
|
6
6
|
export { getConfVal };
|
|
7
7
|
export { getConfigDefinitionOptional };
|
|
8
|
+
export { getVikeConfigFromCliOrEnv };
|
|
8
9
|
export { isOverriden };
|
|
9
|
-
import { assertPosixPath, assert, isObject, assertUsage, assertWarning, objectEntries, hasProp, includes, assertIsNotProductionRuntime, getMostSimilar, joinEnglish, assertKeys, objectKeys, objectFromEntries, unique, isCallable, makeFirst, lowerFirst, makeLast } from '../../../utils.js';
|
|
10
|
+
import { assertPosixPath, assert, isObject, assertUsage, assertWarning, objectEntries, hasProp, includes, assertIsNotProductionRuntime, getMostSimilar, joinEnglish, assertKeys, objectKeys, objectFromEntries, unique, isCallable, makeFirst, lowerFirst, makeLast, assertIsSingleModuleInstance } from '../../../utils.js';
|
|
10
11
|
import { configDefinitionsBuiltIn } from './getVikeConfig/configDefinitionsBuiltIn.js';
|
|
11
12
|
import { getLocationId, getFilesystemRouteString, getFilesystemRouteDefinedBy, isInherited, sortAfterInheritanceOrder, applyFilesystemRoutingRootEffect } from './getVikeConfig/filesystemRouting.js';
|
|
12
13
|
import { isVikeConfigInvalid, isVikeConfigInvalid_set } from '../../../../runtime/renderPage/isVikeConfigInvalid.js';
|
|
@@ -14,7 +15,7 @@ import { getViteDevServer } from '../../../../runtime/globalContext.js';
|
|
|
14
15
|
import { logConfigError, logConfigErrorRecover } from '../../../shared/loggerNotProd.js';
|
|
15
16
|
import { removeSuperfluousViteLog_enable, removeSuperfluousViteLog_disable } from '../../../shared/loggerVite/removeSuperfluousViteLog.js';
|
|
16
17
|
import pc from '@brillout/picocolors';
|
|
17
|
-
import { getConfigDefinedAt } from '../../../../../shared/page-configs/getConfigDefinedAt.js';
|
|
18
|
+
import { getConfigDefinedAt, getDefinedByString } from '../../../../../shared/page-configs/getConfigDefinedAt.js';
|
|
18
19
|
import { loadPointerImport, loadValueFile } from './getVikeConfig/loadFileAtConfigTime.js';
|
|
19
20
|
import { resolvePointerImport } from './getVikeConfig/resolvePointerImport.js';
|
|
20
21
|
import { getFilePathResolved } from '../../../shared/getFilePath.js';
|
|
@@ -27,16 +28,14 @@ import { getEnvVarObject } from '../../../shared/getEnvVarObject.js';
|
|
|
27
28
|
import { getApiOperation } from '../../../../api/context.js';
|
|
28
29
|
import { getCliOptions } from '../../../../cli/context.js';
|
|
29
30
|
assertIsNotProductionRuntime();
|
|
31
|
+
assertIsSingleModuleInstance('v1-design/getVikeConfig.ts');
|
|
30
32
|
let restartVite = false;
|
|
31
33
|
let wasConfigInvalid = null;
|
|
32
34
|
let vikeConfigPromise = null;
|
|
33
|
-
const vikeConfigDependencies = new Set();
|
|
34
35
|
function reloadVikeConfig(config) {
|
|
35
36
|
const userRootDir = config.root;
|
|
36
37
|
const vikeVitePluginOptions = config._vikeVitePluginOptions;
|
|
37
38
|
assert(vikeVitePluginOptions);
|
|
38
|
-
// TODO/now: unify with esbuildCache
|
|
39
|
-
vikeConfigDependencies.clear();
|
|
40
39
|
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, true, vikeVitePluginOptions);
|
|
41
40
|
handleReloadSideEffects();
|
|
42
41
|
}
|
|
@@ -90,6 +89,11 @@ async function getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, doN
|
|
|
90
89
|
}
|
|
91
90
|
return await vikeConfigPromise;
|
|
92
91
|
}
|
|
92
|
+
async function getVikeConfigOptional() {
|
|
93
|
+
if (!vikeConfigPromise)
|
|
94
|
+
return null;
|
|
95
|
+
return await vikeConfigPromise;
|
|
96
|
+
}
|
|
93
97
|
function isV1Design(config) {
|
|
94
98
|
const vikeConfig = config._vikeConfigObject;
|
|
95
99
|
assert(vikeConfig);
|
|
@@ -134,22 +138,24 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
134
138
|
configValueSources: {}
|
|
135
139
|
},
|
|
136
140
|
global: getPageConfigGlobalUserFriendly({ pageConfigGlobalValues: {} }),
|
|
137
|
-
pages: {}
|
|
141
|
+
pages: {},
|
|
142
|
+
vikeConfigDependencies: new Set()
|
|
138
143
|
};
|
|
139
144
|
return dummyData;
|
|
140
145
|
}
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
148
|
async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
144
|
-
const esbuildCache = {
|
|
149
|
+
const esbuildCache = {
|
|
150
|
+
transpileCache: {},
|
|
151
|
+
vikeConfigDependencies: new Set()
|
|
152
|
+
};
|
|
145
153
|
const plusFilesAll = await getPlusFilesAll(userRootDir, esbuildCache);
|
|
146
154
|
const configDefinitionsResolved = await resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache);
|
|
147
|
-
assertKnownConfigs(configDefinitionsResolved, plusFilesAll);
|
|
148
155
|
const { pageConfigGlobal, pageConfigs } = getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRootDir);
|
|
149
156
|
// Backwards compatibility for vike(options) in vite.config.js
|
|
150
157
|
temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
|
|
151
|
-
|
|
152
|
-
setCliAndApiOptions(pageConfigGlobal);
|
|
158
|
+
setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved);
|
|
153
159
|
// global
|
|
154
160
|
const pageConfigGlobalValues = getConfigValues(pageConfigGlobal);
|
|
155
161
|
const global = getPageConfigGlobalUserFriendly({ pageConfigGlobalValues });
|
|
@@ -158,7 +164,7 @@ async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
|
158
164
|
const pageConfigValues = getConfigValues(pageConfig, true);
|
|
159
165
|
return getPageConfigUserFriendly(pageConfigGlobalValues, pageConfig, pageConfigValues);
|
|
160
166
|
}));
|
|
161
|
-
return { pageConfigs, pageConfigGlobal, global, pages };
|
|
167
|
+
return { pageConfigs, pageConfigGlobal, global, pages, vikeConfigDependencies: esbuildCache.vikeConfigDependencies };
|
|
162
168
|
}
|
|
163
169
|
async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache) {
|
|
164
170
|
const plusFilesAllOrdered = Object.values(plusFilesAll)
|
|
@@ -168,6 +174,10 @@ async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache)
|
|
|
168
174
|
// We use `plusFilesAll` in order to allow local Vike extensions to create global configs, and to set the value of global configs such as `+vite` (enabling Vike extensions to add Vite plugins).
|
|
169
175
|
plusFilesAllOrdered, (configDef) => !!configDef.global);
|
|
170
176
|
await loadCustomConfigBuildTimeFiles(plusFilesAll, configDefinitionsGlobal, userRootDir, esbuildCache);
|
|
177
|
+
const configDefinitionsAll = getConfigDefinitions(Object.values(plusFilesAll).flat());
|
|
178
|
+
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
179
|
+
const configNamesKnownGlobal = Object.keys(configDefinitionsGlobal);
|
|
180
|
+
assert(configNamesKnownGlobal.every((configName) => configNamesKnownAll.includes(configName)));
|
|
171
181
|
const configDefinitionsLocal = {};
|
|
172
182
|
await Promise.all(objectEntries(plusFilesAll).map(async ([locationIdPage, plusFiles]) => {
|
|
173
183
|
const plusFilesRelevant = objectEntries(plusFilesAll)
|
|
@@ -177,12 +187,23 @@ async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache)
|
|
|
177
187
|
.sort((plusFile1, plusFile2) => sortAfterInheritanceOrderPage(plusFile1, plusFile2, locationIdPage, null));
|
|
178
188
|
const configDefinitions = getConfigDefinitions(plusFilesRelevant, (configDef) => configDef.global !== true);
|
|
179
189
|
await loadCustomConfigBuildTimeFiles(plusFiles, configDefinitions, userRootDir, esbuildCache);
|
|
180
|
-
|
|
190
|
+
const configNamesKnownLocal = unique([...Object.keys(configDefinitions), ...configNamesKnownGlobal]);
|
|
191
|
+
assert(configNamesKnownLocal.every((configName) => configNamesKnownAll.includes(configName)));
|
|
192
|
+
configDefinitionsLocal[locationIdPage] = {
|
|
193
|
+
configDefinitions,
|
|
194
|
+
plusFiles,
|
|
195
|
+
plusFilesRelevant,
|
|
196
|
+
configNamesKnownLocal
|
|
197
|
+
};
|
|
181
198
|
}));
|
|
182
199
|
const configDefinitionsResolved = {
|
|
183
200
|
configDefinitionsGlobal,
|
|
184
|
-
configDefinitionsLocal
|
|
201
|
+
configDefinitionsLocal,
|
|
202
|
+
configDefinitionsAll,
|
|
203
|
+
configNamesKnownAll,
|
|
204
|
+
configNamesKnownGlobal
|
|
185
205
|
};
|
|
206
|
+
assertKnownConfigs(configDefinitionsResolved);
|
|
186
207
|
return configDefinitionsResolved;
|
|
187
208
|
}
|
|
188
209
|
// Load value files (with `env.config===true`) of *custom* configs.
|
|
@@ -285,7 +306,7 @@ function assertGlobalConfigLocation(configName, sources, plusFilesAll, configDef
|
|
|
285
306
|
: 'to a value that is global';
|
|
286
307
|
const what = isConditionallyGlobal ? 'global values' : pc.cyan(configName);
|
|
287
308
|
const errEnd = configFilePathsGlobal.length > 0
|
|
288
|
-
? `define ${what} at a global config file such as ${joinEnglish(configFilePathsGlobal, 'or')} instead`
|
|
309
|
+
? `define ${what} at a global config file such as ${joinEnglish(configFilePathsGlobal.map(pc.bold), 'or')} instead`
|
|
289
310
|
: `create a global config file (e.g. /pages/+config.js) and define ${what} there instead`;
|
|
290
311
|
// When updating this error message => also update error message at https://vike.dev/warning/global-config
|
|
291
312
|
const errMsg = `${errBeg} ${errMid}: ${errEnd} (https://vike.dev/warning/global-config).`;
|
|
@@ -354,56 +375,55 @@ function temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, use
|
|
|
354
375
|
assertWarning(Object.keys(vikeVitePluginOptions).length === 0, `Define Vike settings in +config.js instead of vite.config.js ${pc.underline('https://vike.dev/migration/settings')}`, { onlyOnce: true });
|
|
355
376
|
Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
|
|
356
377
|
var _a;
|
|
357
|
-
assert(includes(objectKeys(configDefinitionsBuiltIn), configName));
|
|
358
|
-
const configDef = configDefinitionsBuiltIn[configName];
|
|
359
378
|
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
userRootDir,
|
|
368
|
-
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
369
|
-
}),
|
|
370
|
-
fileExportPathToShowToUser: null
|
|
371
|
-
},
|
|
372
|
-
locationId: '/',
|
|
373
|
-
plusFile: null,
|
|
374
|
-
valueIsLoadedWithImport: false,
|
|
375
|
-
valueIsDefinedByPlusValueFile: false
|
|
376
|
-
});
|
|
379
|
+
sources.push(getSourceNonConfigFile(configName, value, {
|
|
380
|
+
...getFilePathResolved({
|
|
381
|
+
userRootDir,
|
|
382
|
+
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
383
|
+
}),
|
|
384
|
+
fileExportPathToShowToUser: null
|
|
385
|
+
}));
|
|
377
386
|
});
|
|
378
387
|
}
|
|
379
|
-
function setCliAndApiOptions(pageConfigGlobal) {
|
|
380
|
-
//
|
|
381
|
-
const configFromEnv = getEnvVarObject('VIKE_CONFIG');
|
|
382
|
-
if (configFromEnv) {
|
|
383
|
-
add(configFromEnv, { definedBy: 'env' });
|
|
384
|
-
}
|
|
385
|
-
// Vike API — passed options
|
|
388
|
+
function setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved) {
|
|
389
|
+
// Vike API — passed options [lowest precedence]
|
|
386
390
|
const apiOperation = getApiOperation();
|
|
387
391
|
if (apiOperation?.options.vikeConfig) {
|
|
388
|
-
|
|
389
|
-
definedBy: 'api',
|
|
390
|
-
operation: apiOperation.operation
|
|
391
|
-
});
|
|
392
|
+
addSources(apiOperation.options.vikeConfig, { definedBy: 'api', operation: apiOperation.operation }, false);
|
|
392
393
|
}
|
|
394
|
+
const { configFromCliOptions, configFromEnvVar } = getVikeConfigFromCliOrEnv();
|
|
393
395
|
// Vike CLI options
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
396
|
+
if (configFromCliOptions) {
|
|
397
|
+
addSources(configFromCliOptions, { definedBy: 'cli' }, true);
|
|
398
|
+
}
|
|
399
|
+
// VIKE_CONFIG [highest precedence]
|
|
400
|
+
if (configFromEnvVar) {
|
|
401
|
+
addSources(configFromEnvVar, { definedBy: 'env' }, false);
|
|
397
402
|
}
|
|
398
403
|
return;
|
|
399
|
-
function
|
|
404
|
+
function addSources(configValues, definedBy, exitOnError) {
|
|
400
405
|
Object.entries(configValues).forEach(([configName, value]) => {
|
|
401
406
|
var _a;
|
|
407
|
+
const sourceName = `The ${getDefinedByString(definedBy, configName)}`;
|
|
408
|
+
assertKnownConfig(configName, configDefinitionsResolved.configNamesKnownGlobal, configDefinitionsResolved, '/', sourceName, exitOnError);
|
|
402
409
|
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
403
410
|
sources.unshift(getSourceNonConfigFile(configName, value, definedBy));
|
|
404
411
|
});
|
|
405
412
|
}
|
|
406
413
|
}
|
|
414
|
+
function getVikeConfigFromCliOrEnv() {
|
|
415
|
+
const configFromCliOptions = getCliOptions();
|
|
416
|
+
const configFromEnvVar = getEnvVarObject('VIKE_CONFIG');
|
|
417
|
+
const vikeConfigFromCliOrEnv = {
|
|
418
|
+
...configFromCliOptions, // Lower precedence
|
|
419
|
+
...configFromEnvVar // Higher precedence
|
|
420
|
+
};
|
|
421
|
+
return {
|
|
422
|
+
vikeConfigFromCliOrEnv,
|
|
423
|
+
configFromCliOptions,
|
|
424
|
+
configFromEnvVar
|
|
425
|
+
};
|
|
426
|
+
}
|
|
407
427
|
function getSourceNonConfigFile(configName, value, definedAt) {
|
|
408
428
|
assert(includes(objectKeys(configDefinitionsBuiltIn), configName));
|
|
409
429
|
const configDef = configDefinitionsBuiltIn[configName];
|
|
@@ -411,7 +431,7 @@ function getSourceNonConfigFile(configName, value, definedAt) {
|
|
|
411
431
|
valueIsLoaded: true,
|
|
412
432
|
value,
|
|
413
433
|
configEnv: configDef.env,
|
|
414
|
-
|
|
434
|
+
definedAt,
|
|
415
435
|
locationId: '/',
|
|
416
436
|
plusFile: null,
|
|
417
437
|
valueIsLoadedWithImport: false,
|
|
@@ -527,7 +547,7 @@ function resolveConfigValueSources(configName, configDef, plusFilesRelevant, use
|
|
|
527
547
|
return sources;
|
|
528
548
|
}
|
|
529
549
|
function isDefiningConfig(plusFile, configName) {
|
|
530
|
-
return
|
|
550
|
+
return getConfigNamesSetByPlusFile(plusFile).includes(configName);
|
|
531
551
|
}
|
|
532
552
|
function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
533
553
|
const confVal = getConfVal(plusFile, configName);
|
|
@@ -570,7 +590,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
570
590
|
configEnv: configDef.env,
|
|
571
591
|
valueIsLoadedWithImport: false,
|
|
572
592
|
valueIsDefinedByPlusValueFile: false,
|
|
573
|
-
definedAtFilePath
|
|
593
|
+
definedAt: definedAtFilePath
|
|
574
594
|
};
|
|
575
595
|
return configValueSource;
|
|
576
596
|
}
|
|
@@ -594,7 +614,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
594
614
|
configEnv: resolveConfigEnv(configDef.env, pointerImport.fileExportPath),
|
|
595
615
|
valueIsLoadedWithImport: true,
|
|
596
616
|
valueIsDefinedByPlusValueFile: false,
|
|
597
|
-
|
|
617
|
+
definedAt: pointerImport.fileExportPath
|
|
598
618
|
};
|
|
599
619
|
return configValueSource;
|
|
600
620
|
}
|
|
@@ -606,7 +626,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
606
626
|
configEnv: configDef.env,
|
|
607
627
|
valueIsLoadedWithImport: false,
|
|
608
628
|
valueIsDefinedByPlusValueFile: false,
|
|
609
|
-
|
|
629
|
+
definedAt: definedAtFilePath_
|
|
610
630
|
};
|
|
611
631
|
return configValueSource;
|
|
612
632
|
}
|
|
@@ -620,7 +640,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
620
640
|
configEnv: configEnvResolved,
|
|
621
641
|
valueIsLoadedWithImport: !confVal.valueIsLoaded || !isJsonValue(confVal.value),
|
|
622
642
|
valueIsDefinedByPlusValueFile: true,
|
|
623
|
-
|
|
643
|
+
definedAt: {
|
|
624
644
|
...plusFile.filePath,
|
|
625
645
|
fileExportPathToShowToUser: configName === plusFile.configName
|
|
626
646
|
? []
|
|
@@ -634,7 +654,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
634
654
|
}
|
|
635
655
|
function isDefiningPage(plusFiles) {
|
|
636
656
|
for (const plusFile of plusFiles) {
|
|
637
|
-
const configNames =
|
|
657
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
638
658
|
if (configNames.some((configName) => isDefiningPageConfig(configName))) {
|
|
639
659
|
return true;
|
|
640
660
|
}
|
|
@@ -656,7 +676,7 @@ function resolveIsGlobalValue(configDefGlobal, source, plusFilesAll) {
|
|
|
656
676
|
assert(typeof isGlobal === 'boolean');
|
|
657
677
|
return isGlobal;
|
|
658
678
|
}
|
|
659
|
-
function
|
|
679
|
+
function getConfigNamesSetByPlusFile(plusFile) {
|
|
660
680
|
let configNames = [];
|
|
661
681
|
if (!plusFile.isConfigFile) {
|
|
662
682
|
configNames.push(plusFile.configName);
|
|
@@ -776,7 +796,7 @@ function runEffect(configName, configDef, source) {
|
|
|
776
796
|
// Call effect
|
|
777
797
|
const configModFromEffect = configDef.effect({
|
|
778
798
|
configValue: source.value,
|
|
779
|
-
configDefinedAt: getConfigDefinedAt('Config', configName, source.
|
|
799
|
+
configDefinedAt: getConfigDefinedAt('Config', configName, source.definedAt)
|
|
780
800
|
});
|
|
781
801
|
if (!configModFromEffect)
|
|
782
802
|
return null;
|
|
@@ -790,7 +810,7 @@ function applyEffectConfVal(configModFromEffect, sourceEffect, configValueSource
|
|
|
790
810
|
assert(configDef);
|
|
791
811
|
assert(configDefEffect._userEffectDefinedAtFilePath);
|
|
792
812
|
const configValueSource = {
|
|
793
|
-
|
|
813
|
+
definedAt: configDefEffect._userEffectDefinedAtFilePath,
|
|
794
814
|
plusFile: sourceEffect.plusFile,
|
|
795
815
|
locationId: sourceEffect.locationId,
|
|
796
816
|
configEnv: configDef.env,
|
|
@@ -853,33 +873,30 @@ function getComputed(configValueSources, configDefinitions) {
|
|
|
853
873
|
return configValuesComputed;
|
|
854
874
|
}
|
|
855
875
|
// Show error message upon unknown config
|
|
856
|
-
function assertKnownConfigs(configDefinitionsResolved
|
|
857
|
-
|
|
858
|
-
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
859
|
-
const configNamesGlobal = Object.keys(configDefinitionsResolved.configDefinitionsGlobal);
|
|
860
|
-
objectEntries(configDefinitionsResolved.configDefinitionsLocal).forEach(([_locationId, { configDefinitions, plusFiles }]) => {
|
|
861
|
-
const configDefinitionsLocal = configDefinitions;
|
|
862
|
-
const configNamesKnownLocal = [...Object.keys(configDefinitionsLocal), ...configNamesGlobal];
|
|
876
|
+
function assertKnownConfigs(configDefinitionsResolved) {
|
|
877
|
+
objectEntries(configDefinitionsResolved.configDefinitionsLocal).forEach(([_locationId, { configNamesKnownLocal, plusFiles }]) => {
|
|
863
878
|
plusFiles.forEach((plusFile) => {
|
|
864
|
-
const configNames =
|
|
879
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
865
880
|
configNames.forEach((configName) => {
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
881
|
+
const { locationId } = plusFile;
|
|
882
|
+
const sourceName = plusFile.filePath.filePathToShowToUser;
|
|
883
|
+
assertKnownConfig(configName, configNamesKnownLocal, configDefinitionsResolved, locationId, sourceName, false);
|
|
869
884
|
});
|
|
870
885
|
});
|
|
871
886
|
});
|
|
872
887
|
}
|
|
873
|
-
function assertKnownConfig(configName,
|
|
874
|
-
|
|
888
|
+
function assertKnownConfig(configName, configNamesKnownRelevant, configDefinitionsResolved, locationId, sourceName, exitOnError) {
|
|
889
|
+
const { configNamesKnownAll } = configDefinitionsResolved;
|
|
890
|
+
if (configNamesKnownRelevant.includes(configName)) {
|
|
891
|
+
assert(configNamesKnownAll.includes(configName));
|
|
875
892
|
return;
|
|
893
|
+
}
|
|
876
894
|
const configNameColored = pc.cyan(configName);
|
|
877
|
-
const { locationId, filePath: { filePathToShowToUser } } = plusFile;
|
|
878
|
-
const errMsg = `${filePathToShowToUser} sets an unknown config ${configNameColored}`;
|
|
879
895
|
// Inheritance issue: config is known but isn't defined at `locationId`
|
|
880
896
|
if (configNamesKnownAll.includes(configName)) {
|
|
881
|
-
assertUsage(false, `${
|
|
897
|
+
assertUsage(false, `${sourceName} sets the value of the config ${configNameColored} which is a custom config that is defined with ${pc.underline('https://vike.dev/meta')} at a path that doesn't apply to ${locationId} — see ${pc.underline('https://vike.dev/config#inheritance')}`, { exitOnError });
|
|
882
898
|
}
|
|
899
|
+
const errMsg = `${sourceName} sets an unknown config ${configNameColored}`;
|
|
883
900
|
// Missing vike-{react,vue,solid} installation
|
|
884
901
|
{
|
|
885
902
|
const ui = ['vike-react', 'vike-vue', 'vike-solid'];
|
|
@@ -895,11 +912,9 @@ function assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLoca
|
|
|
895
912
|
Wrapper: ui
|
|
896
913
|
};
|
|
897
914
|
if (configName in knownVikeExntensionConfigs) {
|
|
898
|
-
const requiredVikeExtension = knownVikeExntensionConfigs[configName]
|
|
899
|
-
.map((e) => pc.bold(e))
|
|
900
|
-
.join('/');
|
|
915
|
+
const requiredVikeExtension = joinEnglish(knownVikeExntensionConfigs[configName].map((e) => pc.bold(e)), 'or');
|
|
901
916
|
const errMsgEnhanced = `${errMsg}. If you want to use the configuration ${configNameColored} documented at ${pc.underline(`https://vike.dev/${configName}`)} then make sure to install ${requiredVikeExtension}. (Alternatively, you can define ${configNameColored} yourself by using ${pc.cyan('meta')}, see ${pc.underline('https://vike.dev/meta')} for more information.)`;
|
|
902
|
-
assertUsage(false, errMsgEnhanced);
|
|
917
|
+
assertUsage(false, errMsgEnhanced, { exitOnError });
|
|
903
918
|
}
|
|
904
919
|
}
|
|
905
920
|
// Similarity hint
|
|
@@ -916,9 +931,9 @@ function assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLoca
|
|
|
916
931
|
if (configName === 'page') {
|
|
917
932
|
errMsgEnhanced += ` (The name of the config ${pc.cyan('Page')} starts with a capital letter ${pc.cyan('P')} because it defines a UI component: a ubiquitous JavaScript convention is that the name of UI components start with a capital letter.)`;
|
|
918
933
|
}
|
|
919
|
-
assertUsage(false, errMsgEnhanced);
|
|
934
|
+
assertUsage(false, errMsgEnhanced, { exitOnError });
|
|
920
935
|
}
|
|
921
|
-
assertUsage(false, errMsg);
|
|
936
|
+
assertUsage(false, errMsg, { exitOnError });
|
|
922
937
|
}
|
|
923
938
|
function determineRouteFilesystem(locationId, configValueSources) {
|
|
924
939
|
const configName = 'filesystemRoutingRoot';
|
|
@@ -950,12 +965,12 @@ function getFilesystemRoutingRootEffect(configFilesystemRoutingRoot, configName)
|
|
|
950
965
|
// Eagerly loaded since it's config-only
|
|
951
966
|
assert(configFilesystemRoutingRoot.valueIsLoaded);
|
|
952
967
|
const { value } = configFilesystemRoutingRoot;
|
|
953
|
-
const configDefinedAt = getConfigDefinedAt('Config', configName, configFilesystemRoutingRoot.
|
|
968
|
+
const configDefinedAt = getConfigDefinedAt('Config', configName, configFilesystemRoutingRoot.definedAt);
|
|
954
969
|
assertUsage(typeof value === 'string', `${configDefinedAt} should be a string`);
|
|
955
970
|
assertUsage(value.startsWith('/'), `${configDefinedAt} is ${pc.cyan(value)} but it should start with a leading slash ${pc.cyan('/')}`);
|
|
956
|
-
const {
|
|
957
|
-
assert(!
|
|
958
|
-
const { filePathAbsoluteUserRootDir } =
|
|
971
|
+
const { definedAt } = configFilesystemRoutingRoot;
|
|
972
|
+
assert(!definedAt.definedBy);
|
|
973
|
+
const { filePathAbsoluteUserRootDir } = definedAt;
|
|
959
974
|
assert(filePathAbsoluteUserRootDir);
|
|
960
975
|
const before = getFilesystemRouteString(getLocationId(filePathAbsoluteUserRootDir));
|
|
961
976
|
const after = value;
|
|
@@ -1006,7 +1021,7 @@ function getConfigDefinitionOptional(configDefinitions, configName) {
|
|
|
1006
1021
|
return configDefinitions[configName] ?? null;
|
|
1007
1022
|
}
|
|
1008
1023
|
function getConfVal(plusFile, configName) {
|
|
1009
|
-
const configNames =
|
|
1024
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
1010
1025
|
if (!configNames.includes(configName))
|
|
1011
1026
|
return null;
|
|
1012
1027
|
if (plusFile.isNotLoaded)
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
export { setGlobalContext };
|
|
2
2
|
import { setGlobalContext_viteDevServer, setGlobalContext_viteConfig, setGlobalContext_isProduction } from '../../runtime/globalContext.js';
|
|
3
|
-
import { assertFilePathAbsoluteFilesystem, isDevCheck, markSetup_isViteDev, markSetup_viteDevServer, markSetup_vitePreviewServer } from '../utils.js';
|
|
3
|
+
import { assert, assertFilePathAbsoluteFilesystem, isDevCheck, markSetup_isViteDev, markSetup_viteDevServer, markSetup_vitePreviewServer } from '../utils.js';
|
|
4
4
|
import { getOutDirs } from '../shared/getOutDirs.js';
|
|
5
|
+
import { reloadVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
|
|
5
6
|
function setGlobalContext() {
|
|
7
|
+
let isServerReload = false;
|
|
8
|
+
let config;
|
|
6
9
|
return [
|
|
7
10
|
{
|
|
8
11
|
name: 'vike:setGlobalContext:pre',
|
|
9
12
|
enforce: 'pre',
|
|
13
|
+
// This hook is called not only at server start but also at server restart (a new `viteDevServer` instance is created)
|
|
10
14
|
configureServer: {
|
|
11
15
|
order: 'pre',
|
|
12
16
|
handler(viteDevServer) {
|
|
17
|
+
assert(config);
|
|
18
|
+
if (isServerReload)
|
|
19
|
+
reloadVikeConfig(config);
|
|
20
|
+
isServerReload = true;
|
|
13
21
|
setGlobalContext_viteDevServer(viteDevServer);
|
|
14
22
|
markSetup_viteDevServer();
|
|
15
23
|
}
|
|
@@ -31,7 +39,8 @@ function setGlobalContext() {
|
|
|
31
39
|
enforce: 'post',
|
|
32
40
|
configResolved: {
|
|
33
41
|
order: 'post',
|
|
34
|
-
async handler(
|
|
42
|
+
async handler(config_) {
|
|
43
|
+
config = config_;
|
|
35
44
|
const { outDirRoot } = getOutDirs(config);
|
|
36
45
|
assertFilePathAbsoluteFilesystem(outDirRoot); // Needed for `importServerProductionEntry({ outDir })` of @brillout/vite-plugin-server-entry
|
|
37
46
|
setGlobalContext_viteConfig(config, outDirRoot);
|
|
@@ -18,8 +18,15 @@ function parseJson5(valueStr, what) {
|
|
|
18
18
|
value = JSON5.parse(valueStr);
|
|
19
19
|
}
|
|
20
20
|
catch (err) {
|
|
21
|
+
if (isNotJavaScriptLike(valueStr)) {
|
|
22
|
+
// Interpret as string
|
|
23
|
+
return valueStr;
|
|
24
|
+
}
|
|
21
25
|
console.error(err);
|
|
22
26
|
assertUsage(false, `Cannot parse ${pc.cyan(what)} (see error above) because it's set to the following which isn't a valid JSON5 string: ${pc.bold(valueStr)}`);
|
|
23
27
|
}
|
|
24
28
|
return value;
|
|
25
29
|
}
|
|
30
|
+
function isNotJavaScriptLike(valueStr) {
|
|
31
|
+
return ![':', ',', '{', '}', '(', ')'].some((c) => valueStr.includes(c));
|
|
32
|
+
}
|
|
@@ -15,8 +15,8 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
|
15
15
|
};
|
|
16
16
|
let defaultLocalValue = false;
|
|
17
17
|
{
|
|
18
|
-
const valueFirst = prerenderConfigs.filter((p) => !isObject(p) || p.
|
|
19
|
-
if (valueFirst === true || (isObject(valueFirst) && (valueFirst.
|
|
18
|
+
const valueFirst = prerenderConfigs.filter((p) => !isObject(p) || p.enable !== null)[0];
|
|
19
|
+
if (valueFirst === true || (isObject(valueFirst) && (valueFirst.enable ?? defaultValueForObject))) {
|
|
20
20
|
defaultLocalValue = true;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -47,7 +47,7 @@ function resolvePrerenderConfigLocal(pageConfig) {
|
|
|
47
47
|
const values = configValue.value;
|
|
48
48
|
assert(isArray(values));
|
|
49
49
|
const value = values[0];
|
|
50
|
-
//
|
|
50
|
+
// If it's set to an object in a local config then Vike considers it a global config and it's skipped from local inheritance, thus we can assume the value to be a boolean.
|
|
51
51
|
assert(typeof value === 'boolean');
|
|
52
52
|
assert(isArray(configValue.definedAtData));
|
|
53
53
|
const prerenderConfigLocal = { value };
|
|
@@ -38,8 +38,8 @@ async function runPrerenderFromAPI(options = {}) {
|
|
|
38
38
|
}
|
|
39
39
|
async function runPrerenderFromCLIPrerenderCommand() {
|
|
40
40
|
try {
|
|
41
|
-
const {
|
|
42
|
-
await runPrerender({ viteConfig:
|
|
41
|
+
const { viteConfigFromUserEnhanced } = await prepareViteApiCall({}, 'prerender');
|
|
42
|
+
await runPrerender({ viteConfig: viteConfigFromUserEnhanced }, '$ vike prerender');
|
|
43
43
|
}
|
|
44
44
|
catch (err) {
|
|
45
45
|
console.error(err);
|
|
@@ -304,20 +304,16 @@ async function handlePagesWithStaticRoutes(prerenderContext, globalContext, doNo
|
|
|
304
304
|
})));
|
|
305
305
|
}
|
|
306
306
|
async function createPageContext(urlOriginal, prerenderContext, globalContext) {
|
|
307
|
-
const
|
|
307
|
+
const pageContextInit = { urlOriginal };
|
|
308
|
+
objectAssign(pageContextInit, prerenderContext.pageContextInit);
|
|
309
|
+
const pageContext = await getPageContextInitEnhanced(pageContextInit, globalContext, true, {});
|
|
310
|
+
assert(pageContext.isPrerendering === true);
|
|
311
|
+
objectAssign(pageContext, {
|
|
308
312
|
_urlHandler: null,
|
|
309
313
|
_urlRewrite: null,
|
|
310
314
|
_noExtraDir: prerenderContext.noExtraDir,
|
|
311
315
|
_prerenderContext: prerenderContext
|
|
312
|
-
};
|
|
313
|
-
const pageContextInit = {
|
|
314
|
-
urlOriginal
|
|
315
|
-
};
|
|
316
|
-
objectAssign(pageContextInit, prerenderContext.pageContextInit);
|
|
317
|
-
{
|
|
318
|
-
const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext);
|
|
319
|
-
objectAssign(pageContext, pageContextInitEnhanced);
|
|
320
|
-
}
|
|
316
|
+
});
|
|
321
317
|
return pageContext;
|
|
322
318
|
}
|
|
323
319
|
async function callOnPrerenderStartHook(prerenderContext, globalContext) {
|
|
@@ -15,4 +15,4 @@ export * from '../../utils/isArray.js';
|
|
|
15
15
|
export * from '../../utils/isObject.js';
|
|
16
16
|
export * from '../../utils/changeEnumerable.js';
|
|
17
17
|
export * from '../../utils/makePublicCopy.js';
|
|
18
|
-
export * from '../../utils/
|
|
18
|
+
export * from '../../utils/isNullish.js';
|
|
@@ -17,4 +17,4 @@ export * from '../../utils/isArray.js';
|
|
|
17
17
|
export * from '../../utils/isObject.js';
|
|
18
18
|
export * from '../../utils/changeEnumerable.js';
|
|
19
19
|
export * from '../../utils/makePublicCopy.js';
|
|
20
|
-
export * from '../../utils/
|
|
20
|
+
export * from '../../utils/isNullish.js';
|
|
@@ -21,7 +21,6 @@ export type { GlobalContextPublic };
|
|
|
21
21
|
import type { ViteManifest } from '../shared/ViteManifest.js';
|
|
22
22
|
import type { ResolvedConfig, ViteDevServer } from 'vite';
|
|
23
23
|
import type { PageConfigUserFriendly, PageConfigsUserFriendly } from '../../shared/page-configs/getPageConfigUserFriendly.js';
|
|
24
|
-
import type { ConfigVitePluginServerEntry } from '@brillout/vite-plugin-server-entry/plugin';
|
|
25
24
|
import { type BaseUrlsResolved } from '../shared/resolveBase.js';
|
|
26
25
|
type PageRuntimeInfo = Awaited<ReturnType<typeof getUserFiles>>;
|
|
27
26
|
type GlobalContextInternal = GlobalContext & {
|
|
@@ -84,11 +83,11 @@ type BuildInfo = {
|
|
|
84
83
|
viteConfigRuntime: {
|
|
85
84
|
_baseViteOriginal: string;
|
|
86
85
|
vitePluginServerEntry: {
|
|
87
|
-
inject?:
|
|
86
|
+
inject?: boolean;
|
|
88
87
|
};
|
|
89
88
|
};
|
|
90
89
|
};
|
|
91
90
|
declare function assertBuildInfo(buildInfo: unknown): asserts buildInfo is BuildInfo;
|
|
92
|
-
declare function getViteConfigRuntime(viteConfig: ResolvedConfig
|
|
91
|
+
declare function getViteConfigRuntime(viteConfig: ResolvedConfig): BuildInfo['viteConfigRuntime'];
|
|
93
92
|
declare function updateUserFiles(): Promise<void>;
|
|
94
93
|
declare function clearGlobalContext(): void;
|
|
@@ -64,6 +64,7 @@ function getGlobalContextSync() {
|
|
|
64
64
|
}
|
|
65
65
|
/** @experimental https://vike.dev/getGlobalContext */
|
|
66
66
|
async function getGlobalContextAsync(isProduction) {
|
|
67
|
+
debug('getGlobalContextAsync()');
|
|
67
68
|
assertUsage(typeof isProduction === 'boolean', `[getGlobalContextAsync(isProduction)] Argument ${pc.cyan('isProduction')} ${isProduction === undefined ? 'is missing' : `should be ${pc.cyan('true')} or ${pc.cyan('false')}`}`);
|
|
68
69
|
setIsProduction(isProduction);
|
|
69
70
|
if (!globalObject.globalContext)
|
|
@@ -89,10 +90,10 @@ function makePublic(globalContext) {
|
|
|
89
90
|
async function setGlobalContext_viteDevServer(viteDevServer) {
|
|
90
91
|
debug('setGlobalContext_viteDevServer()');
|
|
91
92
|
setIsProduction(false);
|
|
92
|
-
|
|
93
|
-
if (globalObject.viteDevServer)
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
// 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.
|
|
94
|
+
if (!globalObject.viteDevServer) {
|
|
95
|
+
assertIsNotInitilizedYet();
|
|
96
|
+
}
|
|
96
97
|
assert(globalObject.viteConfig);
|
|
97
98
|
globalObject.viteDevServer = viteDevServer;
|
|
98
99
|
await updateUserFiles();
|
|
@@ -308,10 +309,14 @@ async function loadBuildEntry(outDir) {
|
|
|
308
309
|
globalObject.buildEntry = globalObject.buildEntryPrevious;
|
|
309
310
|
}
|
|
310
311
|
assert(globalObject.buildEntry);
|
|
311
|
-
assertWarning(
|
|
312
|
-
//
|
|
313
|
-
//
|
|
314
|
-
|
|
312
|
+
assertWarning(
|
|
313
|
+
// vike-server => `vitePluginServerEntry.inject === true`
|
|
314
|
+
// vike-node => `vitePluginServerEntry.inject === [ 'index' ]`
|
|
315
|
+
globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject !== true,
|
|
316
|
+
/* TO-DO/eventually:
|
|
317
|
+
!!globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject,
|
|
318
|
+
*/
|
|
319
|
+
`Run the built server entry (e.g. ${pc.cyan('$ node dist/server/index.mjs')}) instead of the original server entry (e.g. ${pc.cyan('$ ts-node server/index.ts')})`, { onlyOnce: true });
|
|
315
320
|
}
|
|
316
321
|
const { buildEntry } = globalObject;
|
|
317
322
|
assertBuildEntry(buildEntry);
|