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
|
@@ -3,8 +3,8 @@ 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.vikeConfigDependencies = void 0;
|
|
7
6
|
exports.getVikeConfig = getVikeConfig;
|
|
7
|
+
exports.getVikeConfigOptional = getVikeConfigOptional;
|
|
8
8
|
exports.getVikeConfig2 = getVikeConfig2;
|
|
9
9
|
exports.reloadVikeConfig = reloadVikeConfig;
|
|
10
10
|
exports.isV1Design = isV1Design;
|
|
@@ -28,18 +28,18 @@ const assertExtensions_js_1 = require("./getVikeConfig/assertExtensions.js");
|
|
|
28
28
|
const getPageConfigUserFriendly_js_1 = require("../../../../../shared/page-configs/getPageConfigUserFriendly.js");
|
|
29
29
|
const serializeConfigValues_js_1 = require("../../../../../shared/page-configs/serialize/serializeConfigValues.js");
|
|
30
30
|
const getPlusFilesAll_js_1 = require("./getVikeConfig/getPlusFilesAll.js");
|
|
31
|
+
const getEnvVarObject_js_1 = require("../../../shared/getEnvVarObject.js");
|
|
32
|
+
const context_js_1 = require("../../../../api/context.js");
|
|
33
|
+
const context_js_2 = require("../../../../cli/context.js");
|
|
31
34
|
(0, utils_js_1.assertIsNotProductionRuntime)();
|
|
35
|
+
(0, utils_js_1.assertIsSingleModuleInstance)('v1-design/getVikeConfig.ts');
|
|
32
36
|
let restartVite = false;
|
|
33
37
|
let wasConfigInvalid = null;
|
|
34
38
|
let vikeConfigPromise = null;
|
|
35
|
-
const vikeConfigDependencies = new Set();
|
|
36
|
-
exports.vikeConfigDependencies = vikeConfigDependencies;
|
|
37
39
|
function reloadVikeConfig(config) {
|
|
38
40
|
const userRootDir = config.root;
|
|
39
41
|
const vikeVitePluginOptions = config._vikeVitePluginOptions;
|
|
40
42
|
(0, utils_js_1.assert)(vikeVitePluginOptions);
|
|
41
|
-
// TODO/now: unify with esbuildCache
|
|
42
|
-
vikeConfigDependencies.clear();
|
|
43
43
|
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, true, vikeVitePluginOptions);
|
|
44
44
|
handleReloadSideEffects();
|
|
45
45
|
}
|
|
@@ -93,6 +93,11 @@ async function getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, doN
|
|
|
93
93
|
}
|
|
94
94
|
return await vikeConfigPromise;
|
|
95
95
|
}
|
|
96
|
+
async function getVikeConfigOptional() {
|
|
97
|
+
if (!vikeConfigPromise)
|
|
98
|
+
return null;
|
|
99
|
+
return await vikeConfigPromise;
|
|
100
|
+
}
|
|
96
101
|
function isV1Design(config) {
|
|
97
102
|
const vikeConfig = config._vikeConfigObject;
|
|
98
103
|
(0, utils_js_1.assert)(vikeConfig);
|
|
@@ -137,20 +142,24 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
137
142
|
configValueSources: {}
|
|
138
143
|
},
|
|
139
144
|
global: (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({ pageConfigGlobalValues: {} }),
|
|
140
|
-
pages: {}
|
|
145
|
+
pages: {},
|
|
146
|
+
vikeConfigDependencies: new Set()
|
|
141
147
|
};
|
|
142
148
|
return dummyData;
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
}
|
|
146
152
|
async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
147
|
-
const esbuildCache = {
|
|
153
|
+
const esbuildCache = {
|
|
154
|
+
transpileCache: {},
|
|
155
|
+
vikeConfigDependencies: new Set()
|
|
156
|
+
};
|
|
148
157
|
const plusFilesAll = await (0, getPlusFilesAll_js_1.getPlusFilesAll)(userRootDir, esbuildCache);
|
|
149
158
|
const configDefinitionsResolved = await resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache);
|
|
150
|
-
assertKnownConfigs(configDefinitionsResolved, plusFilesAll);
|
|
151
159
|
const { pageConfigGlobal, pageConfigs } = getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRootDir);
|
|
152
160
|
// Backwards compatibility for vike(options) in vite.config.js
|
|
153
161
|
temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
|
|
162
|
+
setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved);
|
|
154
163
|
// global
|
|
155
164
|
const pageConfigGlobalValues = getConfigValues(pageConfigGlobal);
|
|
156
165
|
const global = (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({ pageConfigGlobalValues });
|
|
@@ -159,7 +168,7 @@ async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
|
159
168
|
const pageConfigValues = getConfigValues(pageConfig, true);
|
|
160
169
|
return (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendly)(pageConfigGlobalValues, pageConfig, pageConfigValues);
|
|
161
170
|
}));
|
|
162
|
-
return { pageConfigs, pageConfigGlobal, global, pages };
|
|
171
|
+
return { pageConfigs, pageConfigGlobal, global, pages, vikeConfigDependencies: esbuildCache.vikeConfigDependencies };
|
|
163
172
|
}
|
|
164
173
|
async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache) {
|
|
165
174
|
const plusFilesAllOrdered = Object.values(plusFilesAll)
|
|
@@ -169,6 +178,10 @@ async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache)
|
|
|
169
178
|
// 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).
|
|
170
179
|
plusFilesAllOrdered, (configDef) => !!configDef.global);
|
|
171
180
|
await loadCustomConfigBuildTimeFiles(plusFilesAll, configDefinitionsGlobal, userRootDir, esbuildCache);
|
|
181
|
+
const configDefinitionsAll = getConfigDefinitions(Object.values(plusFilesAll).flat());
|
|
182
|
+
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
183
|
+
const configNamesKnownGlobal = Object.keys(configDefinitionsGlobal);
|
|
184
|
+
(0, utils_js_1.assert)(configNamesKnownGlobal.every((configName) => configNamesKnownAll.includes(configName)));
|
|
172
185
|
const configDefinitionsLocal = {};
|
|
173
186
|
await Promise.all((0, utils_js_1.objectEntries)(plusFilesAll).map(async ([locationIdPage, plusFiles]) => {
|
|
174
187
|
const plusFilesRelevant = (0, utils_js_1.objectEntries)(plusFilesAll)
|
|
@@ -178,12 +191,23 @@ async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache)
|
|
|
178
191
|
.sort((plusFile1, plusFile2) => sortAfterInheritanceOrderPage(plusFile1, plusFile2, locationIdPage, null));
|
|
179
192
|
const configDefinitions = getConfigDefinitions(plusFilesRelevant, (configDef) => configDef.global !== true);
|
|
180
193
|
await loadCustomConfigBuildTimeFiles(plusFiles, configDefinitions, userRootDir, esbuildCache);
|
|
181
|
-
|
|
194
|
+
const configNamesKnownLocal = (0, utils_js_1.unique)([...Object.keys(configDefinitions), ...configNamesKnownGlobal]);
|
|
195
|
+
(0, utils_js_1.assert)(configNamesKnownLocal.every((configName) => configNamesKnownAll.includes(configName)));
|
|
196
|
+
configDefinitionsLocal[locationIdPage] = {
|
|
197
|
+
configDefinitions,
|
|
198
|
+
plusFiles,
|
|
199
|
+
plusFilesRelevant,
|
|
200
|
+
configNamesKnownLocal
|
|
201
|
+
};
|
|
182
202
|
}));
|
|
183
203
|
const configDefinitionsResolved = {
|
|
184
204
|
configDefinitionsGlobal,
|
|
185
|
-
configDefinitionsLocal
|
|
205
|
+
configDefinitionsLocal,
|
|
206
|
+
configDefinitionsAll,
|
|
207
|
+
configNamesKnownAll,
|
|
208
|
+
configNamesKnownGlobal
|
|
186
209
|
};
|
|
210
|
+
assertKnownConfigs(configDefinitionsResolved);
|
|
187
211
|
return configDefinitionsResolved;
|
|
188
212
|
}
|
|
189
213
|
// Load value files (with `env.config===true`) of *custom* configs.
|
|
@@ -209,13 +233,13 @@ function getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRo
|
|
|
209
233
|
(0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsGlobal).forEach(([configName, configDef]) => {
|
|
210
234
|
const sources = resolveConfigValueSources(configName, configDef,
|
|
211
235
|
// 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).
|
|
212
|
-
Object.values(plusFilesAll).flat(), userRootDir, true);
|
|
236
|
+
Object.values(plusFilesAll).flat(), userRootDir, true, plusFilesAll);
|
|
213
237
|
if (sources.length === 0)
|
|
214
238
|
return;
|
|
215
239
|
pageConfigGlobal.configValueSources[configName] = sources;
|
|
216
240
|
});
|
|
217
241
|
applyEffectsMetaEnv(pageConfigGlobal.configValueSources, configDefinitionsResolved.configDefinitionsGlobal);
|
|
218
|
-
applyEffectsConfVal(pageConfigGlobal.configValueSources, configDefinitionsResolved.configDefinitionsGlobal);
|
|
242
|
+
applyEffectsConfVal(pageConfigGlobal.configValueSources, configDefinitionsResolved.configDefinitionsGlobal, plusFilesAll);
|
|
219
243
|
sortConfigValueSources(pageConfigGlobal.configValueSources, null);
|
|
220
244
|
assertPageConfigGlobal(pageConfigGlobal, plusFilesAll);
|
|
221
245
|
const pageConfigs = (0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsLocal)
|
|
@@ -226,14 +250,14 @@ function getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRo
|
|
|
226
250
|
(0, utils_js_1.objectEntries)(configDefinitionsLocal)
|
|
227
251
|
.filter(([_configName, configDef]) => configDef.global !== true)
|
|
228
252
|
.forEach(([configName, configDef]) => {
|
|
229
|
-
const sources = resolveConfigValueSources(configName, configDef, plusFilesRelevant, userRootDir, false);
|
|
253
|
+
const sources = resolveConfigValueSources(configName, configDef, plusFilesRelevant, userRootDir, false, plusFilesAll);
|
|
230
254
|
if (sources.length === 0)
|
|
231
255
|
return;
|
|
232
256
|
configValueSources[configName] = sources;
|
|
233
257
|
});
|
|
234
258
|
const pageConfigRoute = determineRouteFilesystem(locationId, configValueSources);
|
|
235
259
|
applyEffectsMetaEnv(configValueSources, configDefinitionsLocal);
|
|
236
|
-
applyEffectsConfVal(configValueSources, configDefinitionsLocal);
|
|
260
|
+
applyEffectsConfVal(configValueSources, configDefinitionsLocal, plusFilesAll);
|
|
237
261
|
sortConfigValueSources(configValueSources, locationId);
|
|
238
262
|
const configValuesComputed = getComputed(configValueSources, configDefinitionsLocal);
|
|
239
263
|
const pageConfig = {
|
|
@@ -355,27 +379,58 @@ function temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, use
|
|
|
355
379
|
(0, utils_js_1.assertWarning)(Object.keys(vikeVitePluginOptions).length === 0, `Define Vike settings in +config.js instead of vite.config.js ${picocolors_1.default.underline('https://vike.dev/migration/settings')}`, { onlyOnce: true });
|
|
356
380
|
Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
|
|
357
381
|
var _a;
|
|
358
|
-
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn), configName));
|
|
359
|
-
const configDef = configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn[configName];
|
|
360
382
|
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
361
|
-
sources.push({
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
369
|
-
}),
|
|
370
|
-
fileExportPathToShowToUser: null
|
|
371
|
-
},
|
|
372
|
-
locationId: '/',
|
|
373
|
-
plusFile: null,
|
|
374
|
-
valueIsLoadedWithImport: false,
|
|
375
|
-
valueIsDefinedByPlusValueFile: false
|
|
376
|
-
});
|
|
383
|
+
sources.push(getSourceNonConfigFile(configName, value, {
|
|
384
|
+
...(0, getFilePath_js_1.getFilePathResolved)({
|
|
385
|
+
userRootDir,
|
|
386
|
+
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
387
|
+
}),
|
|
388
|
+
fileExportPathToShowToUser: null
|
|
389
|
+
}));
|
|
377
390
|
});
|
|
378
391
|
}
|
|
392
|
+
function setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved) {
|
|
393
|
+
// Vike API — passed options [lowest precedence]
|
|
394
|
+
const apiOperation = (0, context_js_1.getApiOperation)();
|
|
395
|
+
if (apiOperation?.options.vikeConfig) {
|
|
396
|
+
addSources(apiOperation.options.vikeConfig, { definedBy: 'api', operation: apiOperation.operation }, false);
|
|
397
|
+
}
|
|
398
|
+
// Vike CLI options
|
|
399
|
+
const cliOptions = (0, context_js_2.getCliOptions)();
|
|
400
|
+
if (cliOptions) {
|
|
401
|
+
addSources(cliOptions, { definedBy: 'cli' }, true);
|
|
402
|
+
}
|
|
403
|
+
// VIKE_CONFIG [highest precedence]
|
|
404
|
+
const configFromEnv = (0, getEnvVarObject_js_1.getEnvVarObject)('VIKE_CONFIG');
|
|
405
|
+
if (configFromEnv) {
|
|
406
|
+
addSources(configFromEnv, { definedBy: 'env' }, false);
|
|
407
|
+
}
|
|
408
|
+
return;
|
|
409
|
+
function addSources(configValues, definedBy, exitOnError) {
|
|
410
|
+
Object.entries(configValues).forEach(([configName, value]) => {
|
|
411
|
+
var _a;
|
|
412
|
+
const sourceName = `The ${(0, getConfigDefinedAt_js_1.getDefinedByString)(definedBy, configName)}`;
|
|
413
|
+
assertKnownConfig(configName, configDefinitionsResolved.configNamesKnownGlobal, configDefinitionsResolved, '/', sourceName, exitOnError);
|
|
414
|
+
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
415
|
+
sources.unshift(getSourceNonConfigFile(configName, value, definedBy));
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
function getSourceNonConfigFile(configName, value, definedAt) {
|
|
420
|
+
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn), configName));
|
|
421
|
+
const configDef = configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn[configName];
|
|
422
|
+
const source = {
|
|
423
|
+
valueIsLoaded: true,
|
|
424
|
+
value,
|
|
425
|
+
configEnv: configDef.env,
|
|
426
|
+
definedAt,
|
|
427
|
+
locationId: '/',
|
|
428
|
+
plusFile: null,
|
|
429
|
+
valueIsLoadedWithImport: false,
|
|
430
|
+
valueIsDefinedByPlusValueFile: false
|
|
431
|
+
};
|
|
432
|
+
return source;
|
|
433
|
+
}
|
|
379
434
|
function sortConfigValueSources(configValueSources, locationIdPage) {
|
|
380
435
|
Object.entries(configValueSources).forEach(([configName, sources]) => {
|
|
381
436
|
sources
|
|
@@ -462,7 +517,7 @@ function sortPlusFilesSameLocationId(plusFile1, plusFile2, configName) {
|
|
|
462
517
|
// No need to make it deterministic: the overall order is arleady deterministic, see sortMakeDeterministic() at getPlusFilesAll()
|
|
463
518
|
return 0;
|
|
464
519
|
}
|
|
465
|
-
function resolveConfigValueSources(configName, configDef, plusFilesRelevant, userRootDir, isGlobal) {
|
|
520
|
+
function resolveConfigValueSources(configName, configDef, plusFilesRelevant, userRootDir, isGlobal, plusFilesAll) {
|
|
466
521
|
let sources = plusFilesRelevant
|
|
467
522
|
.filter((plusFile) => isDefiningConfig(plusFile, configName))
|
|
468
523
|
.map((plusFile) => getConfigValueSource(configName, plusFile, configDef, userRootDir));
|
|
@@ -477,14 +532,14 @@ function resolveConfigValueSources(configName, configDef, plusFilesRelevant, use
|
|
|
477
532
|
sources = sources.filter((source) => {
|
|
478
533
|
(0, utils_js_1.assert)(source.configEnv.config);
|
|
479
534
|
(0, utils_js_1.assert)(source.valueIsLoaded);
|
|
480
|
-
const valueIsGlobal = resolveIsGlobalValue(configDef.global, source
|
|
535
|
+
const valueIsGlobal = resolveIsGlobalValue(configDef.global, source, plusFilesAll);
|
|
481
536
|
return isGlobal ? valueIsGlobal : !valueIsGlobal;
|
|
482
537
|
});
|
|
483
538
|
}
|
|
484
539
|
return sources;
|
|
485
540
|
}
|
|
486
541
|
function isDefiningConfig(plusFile, configName) {
|
|
487
|
-
return
|
|
542
|
+
return getConfigNamesSetByPlusFile(plusFile).includes(configName);
|
|
488
543
|
}
|
|
489
544
|
function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
490
545
|
const confVal = getConfVal(plusFile, configName);
|
|
@@ -527,7 +582,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
527
582
|
configEnv: configDef.env,
|
|
528
583
|
valueIsLoadedWithImport: false,
|
|
529
584
|
valueIsDefinedByPlusValueFile: false,
|
|
530
|
-
definedAtFilePath
|
|
585
|
+
definedAt: definedAtFilePath
|
|
531
586
|
};
|
|
532
587
|
return configValueSource;
|
|
533
588
|
}
|
|
@@ -551,7 +606,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
551
606
|
configEnv: resolveConfigEnv(configDef.env, pointerImport.fileExportPath),
|
|
552
607
|
valueIsLoadedWithImport: true,
|
|
553
608
|
valueIsDefinedByPlusValueFile: false,
|
|
554
|
-
|
|
609
|
+
definedAt: pointerImport.fileExportPath
|
|
555
610
|
};
|
|
556
611
|
return configValueSource;
|
|
557
612
|
}
|
|
@@ -563,7 +618,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
563
618
|
configEnv: configDef.env,
|
|
564
619
|
valueIsLoadedWithImport: false,
|
|
565
620
|
valueIsDefinedByPlusValueFile: false,
|
|
566
|
-
|
|
621
|
+
definedAt: definedAtFilePath_
|
|
567
622
|
};
|
|
568
623
|
return configValueSource;
|
|
569
624
|
}
|
|
@@ -577,7 +632,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
577
632
|
configEnv: configEnvResolved,
|
|
578
633
|
valueIsLoadedWithImport: !confVal.valueIsLoaded || !(0, serializeConfigValues_js_1.isJsonValue)(confVal.value),
|
|
579
634
|
valueIsDefinedByPlusValueFile: true,
|
|
580
|
-
|
|
635
|
+
definedAt: {
|
|
581
636
|
...plusFile.filePath,
|
|
582
637
|
fileExportPathToShowToUser: configName === plusFile.configName
|
|
583
638
|
? []
|
|
@@ -591,7 +646,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
591
646
|
}
|
|
592
647
|
function isDefiningPage(plusFiles) {
|
|
593
648
|
for (const plusFile of plusFiles) {
|
|
594
|
-
const configNames =
|
|
649
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
595
650
|
if (configNames.some((configName) => isDefiningPageConfig(configName))) {
|
|
596
651
|
return true;
|
|
597
652
|
}
|
|
@@ -601,16 +656,19 @@ function isDefiningPage(plusFiles) {
|
|
|
601
656
|
function isDefiningPageConfig(configName) {
|
|
602
657
|
return ['Page', 'route'].includes(configName);
|
|
603
658
|
}
|
|
604
|
-
function resolveIsGlobalValue(configDefGlobal,
|
|
659
|
+
function resolveIsGlobalValue(configDefGlobal, source, plusFilesAll) {
|
|
660
|
+
(0, utils_js_1.assert)(source.valueIsLoaded);
|
|
605
661
|
let isGlobal;
|
|
606
662
|
if ((0, utils_js_1.isCallable)(configDefGlobal))
|
|
607
|
-
isGlobal = configDefGlobal(
|
|
663
|
+
isGlobal = configDefGlobal(source.value, {
|
|
664
|
+
isGlobalLocation: isGlobalLocation(source.locationId, plusFilesAll)
|
|
665
|
+
});
|
|
608
666
|
else
|
|
609
667
|
isGlobal = configDefGlobal ?? false;
|
|
610
668
|
(0, utils_js_1.assert)(typeof isGlobal === 'boolean');
|
|
611
669
|
return isGlobal;
|
|
612
670
|
}
|
|
613
|
-
function
|
|
671
|
+
function getConfigNamesSetByPlusFile(plusFile) {
|
|
614
672
|
let configNames = [];
|
|
615
673
|
if (!plusFile.isConfigFile) {
|
|
616
674
|
configNames.push(plusFile.configName);
|
|
@@ -694,7 +752,7 @@ function assertMetaUsage(metaVal, metaConfigDefinedAt) {
|
|
|
694
752
|
});
|
|
695
753
|
}
|
|
696
754
|
// Test: https://github.com/vikejs/vike/blob/441a37c4c1a3b07bb8f6efb1d1f7be297a53974a/test/playground/vite.config.ts#L39
|
|
697
|
-
function applyEffectsConfVal(configValueSources, configDefinitions) {
|
|
755
|
+
function applyEffectsConfVal(configValueSources, configDefinitions, plusFilesAll) {
|
|
698
756
|
(0, utils_js_1.objectEntries)(configDefinitions).forEach(([configNameEffect, configDefEffect]) => {
|
|
699
757
|
const sourceEffect = configValueSources[configNameEffect]?.[0];
|
|
700
758
|
if (!sourceEffect)
|
|
@@ -702,8 +760,8 @@ function applyEffectsConfVal(configValueSources, configDefinitions) {
|
|
|
702
760
|
const effect = runEffect(configNameEffect, configDefEffect, sourceEffect);
|
|
703
761
|
if (!effect)
|
|
704
762
|
return;
|
|
705
|
-
const
|
|
706
|
-
applyEffectConfVal(configModFromEffect, sourceEffect, configValueSources, configNameEffect, configDefEffect, configDefinitions,
|
|
763
|
+
const configModFromEffect = effect;
|
|
764
|
+
applyEffectConfVal(configModFromEffect, sourceEffect, configValueSources, configNameEffect, configDefEffect, configDefinitions, plusFilesAll);
|
|
707
765
|
});
|
|
708
766
|
}
|
|
709
767
|
// Test: https://github.com/vikejs/vike/blob/441a37c4c1a3b07bb8f6efb1d1f7be297a53974a/test/playground/pages/config-meta/effect/e2e-test.ts#L16
|
|
@@ -715,7 +773,7 @@ function applyEffectsMetaEnv(configValueSources, configDefinitions) {
|
|
|
715
773
|
const effect = runEffect(configNameEffect, configDefEffect, sourceEffect);
|
|
716
774
|
if (!effect)
|
|
717
775
|
return;
|
|
718
|
-
const
|
|
776
|
+
const configModFromEffect = effect;
|
|
719
777
|
applyEffectMetaEnv(configModFromEffect, configValueSources, configDefEffect);
|
|
720
778
|
});
|
|
721
779
|
}
|
|
@@ -727,17 +785,16 @@ function runEffect(configName, configDef, source) {
|
|
|
727
785
|
`Cannot add meta.effect to ${picocolors_1.default.cyan(configName)} because its meta.env is ${picocolors_1.default.cyan(JSON.stringify(configDef.env))} but an effect can only be added to a config that has a meta.env with ${picocolors_1.default.cyan('{ config: true }')}.`
|
|
728
786
|
].join(' '));
|
|
729
787
|
(0, utils_js_1.assert)(source.valueIsLoaded);
|
|
730
|
-
const configValueEffectSource = source.value;
|
|
731
788
|
// Call effect
|
|
732
789
|
const configModFromEffect = configDef.effect({
|
|
733
|
-
configValue:
|
|
734
|
-
configDefinedAt: (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, source.
|
|
790
|
+
configValue: source.value,
|
|
791
|
+
configDefinedAt: (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, source.definedAt)
|
|
735
792
|
});
|
|
736
793
|
if (!configModFromEffect)
|
|
737
794
|
return null;
|
|
738
|
-
return
|
|
795
|
+
return configModFromEffect;
|
|
739
796
|
}
|
|
740
|
-
function applyEffectConfVal(configModFromEffect, sourceEffect, configValueSources, configNameEffect, configDefEffect, configDefinitions,
|
|
797
|
+
function applyEffectConfVal(configModFromEffect, sourceEffect, configValueSources, configNameEffect, configDefEffect, configDefinitions, plusFilesAll) {
|
|
741
798
|
(0, utils_js_1.objectEntries)(configModFromEffect).forEach(([configNameTarget, configValue]) => {
|
|
742
799
|
if (configNameTarget === 'meta')
|
|
743
800
|
return;
|
|
@@ -745,7 +802,7 @@ function applyEffectConfVal(configModFromEffect, sourceEffect, configValueSource
|
|
|
745
802
|
(0, utils_js_1.assert)(configDef);
|
|
746
803
|
(0, utils_js_1.assert)(configDefEffect._userEffectDefinedAtFilePath);
|
|
747
804
|
const configValueSource = {
|
|
748
|
-
|
|
805
|
+
definedAt: configDefEffect._userEffectDefinedAtFilePath,
|
|
749
806
|
plusFile: sourceEffect.plusFile,
|
|
750
807
|
locationId: sourceEffect.locationId,
|
|
751
808
|
configEnv: configDef.env,
|
|
@@ -754,11 +811,12 @@ function applyEffectConfVal(configModFromEffect, sourceEffect, configValueSource
|
|
|
754
811
|
valueIsLoaded: true,
|
|
755
812
|
value: configValue
|
|
756
813
|
};
|
|
757
|
-
|
|
758
|
-
const
|
|
814
|
+
(0, utils_js_1.assert)(sourceEffect.valueIsLoaded);
|
|
815
|
+
const isValueGlobalSource = resolveIsGlobalValue(configDefEffect.global, sourceEffect, plusFilesAll);
|
|
816
|
+
const isValueGlobalTarget = resolveIsGlobalValue(configDef.global, configValueSource, plusFilesAll);
|
|
759
817
|
const isGlobalHumanReadable = (isGlobal) => `${isGlobal ? 'non-' : ''}global`;
|
|
760
818
|
// The error message make it sound like it's an inherent limitation, it actually isn't (both ways can make senses).
|
|
761
|
-
(0, utils_js_1.assertUsage)(isValueGlobalSource === isValueGlobalTarget, `The configuration ${picocolors_1.default.cyan(configNameEffect)} is set to ${picocolors_1.default.cyan(JSON.stringify(
|
|
819
|
+
(0, utils_js_1.assertUsage)(isValueGlobalSource === isValueGlobalTarget, `The configuration ${picocolors_1.default.cyan(configNameEffect)} is set to ${picocolors_1.default.cyan(JSON.stringify(sourceEffect.value))} which is considered ${isGlobalHumanReadable(isValueGlobalSource)}. However, it has a meta.effect that sets the configuration ${picocolors_1.default.cyan(configNameTarget)} to ${picocolors_1.default.cyan(JSON.stringify(configValue))} which is considered ${isGlobalHumanReadable(isValueGlobalTarget)}. This is contradictory: make sure the values are either both non-global or both global.`);
|
|
762
820
|
configValueSources[configNameTarget] ?? (configValueSources[configNameTarget] = []);
|
|
763
821
|
configValueSources[configNameTarget].push(configValueSource);
|
|
764
822
|
});
|
|
@@ -807,33 +865,30 @@ function getComputed(configValueSources, configDefinitions) {
|
|
|
807
865
|
return configValuesComputed;
|
|
808
866
|
}
|
|
809
867
|
// Show error message upon unknown config
|
|
810
|
-
function assertKnownConfigs(configDefinitionsResolved
|
|
811
|
-
|
|
812
|
-
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
813
|
-
const configNamesGlobal = Object.keys(configDefinitionsResolved.configDefinitionsGlobal);
|
|
814
|
-
(0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsLocal).forEach(([_locationId, { configDefinitions, plusFiles }]) => {
|
|
815
|
-
const configDefinitionsLocal = configDefinitions;
|
|
816
|
-
const configNamesKnownLocal = [...Object.keys(configDefinitionsLocal), ...configNamesGlobal];
|
|
868
|
+
function assertKnownConfigs(configDefinitionsResolved) {
|
|
869
|
+
(0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsLocal).forEach(([_locationId, { configNamesKnownLocal, plusFiles }]) => {
|
|
817
870
|
plusFiles.forEach((plusFile) => {
|
|
818
|
-
const configNames =
|
|
871
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
819
872
|
configNames.forEach((configName) => {
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
(
|
|
873
|
+
const { locationId } = plusFile;
|
|
874
|
+
const sourceName = plusFile.filePath.filePathToShowToUser;
|
|
875
|
+
assertKnownConfig(configName, configNamesKnownLocal, configDefinitionsResolved, locationId, sourceName, false);
|
|
823
876
|
});
|
|
824
877
|
});
|
|
825
878
|
});
|
|
826
879
|
}
|
|
827
|
-
function assertKnownConfig(configName,
|
|
828
|
-
|
|
880
|
+
function assertKnownConfig(configName, configNamesKnownRelevant, configDefinitionsResolved, locationId, sourceName, exitOnError) {
|
|
881
|
+
const { configNamesKnownAll } = configDefinitionsResolved;
|
|
882
|
+
if (configNamesKnownRelevant.includes(configName)) {
|
|
883
|
+
(0, utils_js_1.assert)(configNamesKnownAll.includes(configName));
|
|
829
884
|
return;
|
|
885
|
+
}
|
|
830
886
|
const configNameColored = picocolors_1.default.cyan(configName);
|
|
831
|
-
const { locationId, filePath: { filePathToShowToUser } } = plusFile;
|
|
832
|
-
const errMsg = `${filePathToShowToUser} sets an unknown config ${configNameColored}`;
|
|
833
887
|
// Inheritance issue: config is known but isn't defined at `locationId`
|
|
834
888
|
if (configNamesKnownAll.includes(configName)) {
|
|
835
|
-
(0, utils_js_1.assertUsage)(false, `${
|
|
889
|
+
(0, utils_js_1.assertUsage)(false, `${sourceName} sets the value of the config ${configNameColored} which is a custom config that is defined with ${picocolors_1.default.underline('https://vike.dev/meta')} at a path that doesn't apply to ${locationId} — see ${picocolors_1.default.underline('https://vike.dev/config#inheritance')}`, { exitOnError });
|
|
836
890
|
}
|
|
891
|
+
const errMsg = `${sourceName} sets an unknown config ${configNameColored}`;
|
|
837
892
|
// Missing vike-{react,vue,solid} installation
|
|
838
893
|
{
|
|
839
894
|
const ui = ['vike-react', 'vike-vue', 'vike-solid'];
|
|
@@ -849,11 +904,9 @@ function assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLoca
|
|
|
849
904
|
Wrapper: ui
|
|
850
905
|
};
|
|
851
906
|
if (configName in knownVikeExntensionConfigs) {
|
|
852
|
-
const requiredVikeExtension = knownVikeExntensionConfigs[configName]
|
|
853
|
-
.map((e) => picocolors_1.default.bold(e))
|
|
854
|
-
.join('/');
|
|
907
|
+
const requiredVikeExtension = (0, utils_js_1.joinEnglish)(knownVikeExntensionConfigs[configName].map((e) => picocolors_1.default.bold(e)), 'or');
|
|
855
908
|
const errMsgEnhanced = `${errMsg}. If you want to use the configuration ${configNameColored} documented at ${picocolors_1.default.underline(`https://vike.dev/${configName}`)} then make sure to install ${requiredVikeExtension}. (Alternatively, you can define ${configNameColored} yourself by using ${picocolors_1.default.cyan('meta')}, see ${picocolors_1.default.underline('https://vike.dev/meta')} for more information.)`;
|
|
856
|
-
(0, utils_js_1.assertUsage)(false, errMsgEnhanced);
|
|
909
|
+
(0, utils_js_1.assertUsage)(false, errMsgEnhanced, { exitOnError });
|
|
857
910
|
}
|
|
858
911
|
}
|
|
859
912
|
// Similarity hint
|
|
@@ -870,9 +923,9 @@ function assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLoca
|
|
|
870
923
|
if (configName === 'page') {
|
|
871
924
|
errMsgEnhanced += ` (The name of the config ${picocolors_1.default.cyan('Page')} starts with a capital letter ${picocolors_1.default.cyan('P')} because it defines a UI component: a ubiquitous JavaScript convention is that the name of UI components start with a capital letter.)`;
|
|
872
925
|
}
|
|
873
|
-
(0, utils_js_1.assertUsage)(false, errMsgEnhanced);
|
|
926
|
+
(0, utils_js_1.assertUsage)(false, errMsgEnhanced, { exitOnError });
|
|
874
927
|
}
|
|
875
|
-
(0, utils_js_1.assertUsage)(false, errMsg);
|
|
928
|
+
(0, utils_js_1.assertUsage)(false, errMsg, { exitOnError });
|
|
876
929
|
}
|
|
877
930
|
function determineRouteFilesystem(locationId, configValueSources) {
|
|
878
931
|
const configName = 'filesystemRoutingRoot';
|
|
@@ -895,7 +948,7 @@ function determineRouteFilesystem(locationId, configValueSources) {
|
|
|
895
948
|
(0, utils_js_1.assert)(filesystemRouteString.startsWith('/'));
|
|
896
949
|
const routeFilesystem = {
|
|
897
950
|
routeString: filesystemRouteString,
|
|
898
|
-
|
|
951
|
+
definedAtLocation: filesystemRouteDefinedBy
|
|
899
952
|
};
|
|
900
953
|
return { routeFilesystem, isErrorPage: undefined };
|
|
901
954
|
}
|
|
@@ -904,10 +957,12 @@ function getFilesystemRoutingRootEffect(configFilesystemRoutingRoot, configName)
|
|
|
904
957
|
// Eagerly loaded since it's config-only
|
|
905
958
|
(0, utils_js_1.assert)(configFilesystemRoutingRoot.valueIsLoaded);
|
|
906
959
|
const { value } = configFilesystemRoutingRoot;
|
|
907
|
-
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, configFilesystemRoutingRoot.
|
|
960
|
+
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, configFilesystemRoutingRoot.definedAt);
|
|
908
961
|
(0, utils_js_1.assertUsage)(typeof value === 'string', `${configDefinedAt} should be a string`);
|
|
909
962
|
(0, utils_js_1.assertUsage)(value.startsWith('/'), `${configDefinedAt} is ${picocolors_1.default.cyan(value)} but it should start with a leading slash ${picocolors_1.default.cyan('/')}`);
|
|
910
|
-
const {
|
|
963
|
+
const { definedAt } = configFilesystemRoutingRoot;
|
|
964
|
+
(0, utils_js_1.assert)(!definedAt.definedBy);
|
|
965
|
+
const { filePathAbsoluteUserRootDir } = definedAt;
|
|
911
966
|
(0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
|
|
912
967
|
const before = (0, filesystemRouting_js_1.getFilesystemRouteString)((0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir));
|
|
913
968
|
const after = value;
|
|
@@ -958,7 +1013,7 @@ function getConfigDefinitionOptional(configDefinitions, configName) {
|
|
|
958
1013
|
return configDefinitions[configName] ?? null;
|
|
959
1014
|
}
|
|
960
1015
|
function getConfVal(plusFile, configName) {
|
|
961
|
-
const configNames =
|
|
1016
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
962
1017
|
if (!configNames.includes(configName))
|
|
963
1018
|
return null;
|
|
964
1019
|
if (plusFile.isNotLoaded)
|
|
@@ -4,14 +4,22 @@ exports.setGlobalContext = setGlobalContext;
|
|
|
4
4
|
const globalContext_js_1 = require("../../runtime/globalContext.js");
|
|
5
5
|
const utils_js_1 = require("../utils.js");
|
|
6
6
|
const getOutDirs_js_1 = require("../shared/getOutDirs.js");
|
|
7
|
+
const getVikeConfig_js_1 = require("./importUserCode/v1-design/getVikeConfig.js");
|
|
7
8
|
function setGlobalContext() {
|
|
9
|
+
let isServerReload = false;
|
|
10
|
+
let config;
|
|
8
11
|
return [
|
|
9
12
|
{
|
|
10
13
|
name: 'vike:setGlobalContext:pre',
|
|
11
14
|
enforce: 'pre',
|
|
15
|
+
// This hook is called not only at server start but also at server restart (a new `viteDevServer` instance is created)
|
|
12
16
|
configureServer: {
|
|
13
17
|
order: 'pre',
|
|
14
18
|
handler(viteDevServer) {
|
|
19
|
+
(0, utils_js_1.assert)(config);
|
|
20
|
+
if (isServerReload)
|
|
21
|
+
(0, getVikeConfig_js_1.reloadVikeConfig)(config);
|
|
22
|
+
isServerReload = true;
|
|
15
23
|
(0, globalContext_js_1.setGlobalContext_viteDevServer)(viteDevServer);
|
|
16
24
|
(0, utils_js_1.markSetup_viteDevServer)();
|
|
17
25
|
}
|
|
@@ -33,7 +41,8 @@ function setGlobalContext() {
|
|
|
33
41
|
enforce: 'post',
|
|
34
42
|
configResolved: {
|
|
35
43
|
order: 'post',
|
|
36
|
-
async handler(
|
|
44
|
+
async handler(config_) {
|
|
45
|
+
config = config_;
|
|
37
46
|
const { outDirRoot } = (0, getOutDirs_js_1.getOutDirs)(config);
|
|
38
47
|
(0, utils_js_1.assertFilePathAbsoluteFilesystem)(outDirRoot); // Needed for `importServerProductionEntry({ outDir })` of @brillout/vite-plugin-server-entry
|
|
39
48
|
(0, globalContext_js_1.setGlobalContext_viteConfig)(config, outDirRoot);
|
|
@@ -4,26 +4,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getEnvVarObject = getEnvVarObject;
|
|
7
|
+
exports.parseJson5 = parseJson5;
|
|
7
8
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
8
9
|
const utils_js_1 = require("../utils.js");
|
|
9
10
|
const json5_1 = __importDefault(require("json5"));
|
|
10
|
-
function getEnvVarObject(envVarName
|
|
11
|
-
/* Let's eventually implement this for Vike's config as well
|
|
12
|
-
| 'VIKE_CONFIG'
|
|
13
|
-
*/
|
|
14
|
-
) {
|
|
11
|
+
function getEnvVarObject(envVarName) {
|
|
15
12
|
const valueStr = process.env[envVarName];
|
|
16
13
|
if (!valueStr)
|
|
17
14
|
return null;
|
|
15
|
+
const value = parseJson5(valueStr, envVarName);
|
|
16
|
+
(0, utils_js_1.assertUsage)(value, `${envVarName} should define an object but it's ${picocolors_1.default.bold(String(value))} instead.`);
|
|
17
|
+
(0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(value), `${envVarName} should define an object but it's set to the following which isn't an object: ${picocolors_1.default.bold(valueStr)}`);
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
function parseJson5(valueStr, what) {
|
|
18
21
|
let value;
|
|
19
22
|
try {
|
|
20
23
|
value = json5_1.default.parse(valueStr);
|
|
21
24
|
}
|
|
22
25
|
catch (err) {
|
|
23
26
|
console.error(err);
|
|
24
|
-
(0, utils_js_1.assertUsage)(false, `Cannot parse ${
|
|
27
|
+
(0, utils_js_1.assertUsage)(false, `Cannot parse ${picocolors_1.default.cyan(what)} (see error above) because it's set to the following which isn't a valid JSON5 string: ${picocolors_1.default.bold(valueStr)}`);
|
|
25
28
|
}
|
|
26
|
-
(0, utils_js_1.assertUsage)(value, `${envVarName} should define an object but it's ${picocolors_1.default.bold(String(value))} instead.`);
|
|
27
|
-
(0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(value), `${envVarName} should define an object but it's set to the following which isn't an object: ${picocolors_1.default.bold(valueStr)}`);
|
|
28
29
|
return value;
|
|
29
30
|
}
|
|
@@ -20,7 +20,7 @@ function logWithVikeTag(msg, logType, category, showVikeVersion = false) {
|
|
|
20
20
|
function getProjectTag(showVikeVersion) {
|
|
21
21
|
let projectTag;
|
|
22
22
|
if (showVikeVersion) {
|
|
23
|
-
projectTag = `[vike@${utils_js_1.
|
|
23
|
+
projectTag = `[vike@${utils_js_1.PROJECT_VERSION}]`;
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
26
|
projectTag = `[vike]`;
|
|
@@ -4,24 +4,32 @@ exports.resolvePrerenderConfigGlobal = resolvePrerenderConfigGlobal;
|
|
|
4
4
|
exports.resolvePrerenderConfigLocal = resolvePrerenderConfigLocal;
|
|
5
5
|
const utils_js_1 = require("./utils.js");
|
|
6
6
|
const getConfigValueBuildTime_js_1 = require("../../shared/page-configs/getConfigValueBuildTime.js");
|
|
7
|
+
// When setting +prerender to an object => it also enables pre-rendering
|
|
8
|
+
const defaultValueForObject = true;
|
|
7
9
|
function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
8
|
-
const prerenderConfigs = vikeConfig.global.config.prerender;
|
|
9
|
-
|
|
10
|
-
// Needed because of backwards compatibility of `vike({prerender:true})` in `vite.config.js`; after we remove it we can remove this line.
|
|
11
|
-
prerenderConfigList = prerenderConfigList.filter(isObject2);
|
|
12
|
-
(0, utils_js_1.assert)(prerenderConfigList.every(isObject2)); // Help TS
|
|
10
|
+
const prerenderConfigs = vikeConfig.global.config.prerender || [];
|
|
11
|
+
const prerenderSettings = prerenderConfigs.filter(isObject2);
|
|
13
12
|
const prerenderConfigGlobal = {
|
|
14
|
-
partial: pickFirst(
|
|
15
|
-
noExtraDir: pickFirst(
|
|
16
|
-
parallel: pickFirst(
|
|
17
|
-
disableAutoRun: pickFirst(
|
|
13
|
+
partial: pickFirst(prerenderSettings.map((c) => c.partial)) ?? false,
|
|
14
|
+
noExtraDir: pickFirst(prerenderSettings.map((c) => c.noExtraDir)) ?? false,
|
|
15
|
+
parallel: pickFirst(prerenderSettings.map((c) => c.parallel)) ?? true,
|
|
16
|
+
disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false
|
|
18
17
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
let defaultLocalValue = false;
|
|
19
|
+
{
|
|
20
|
+
const valueFirst = prerenderConfigs.filter((p) => !(0, utils_js_1.isObject)(p) || p.value !== null)[0];
|
|
21
|
+
if (valueFirst === true || ((0, utils_js_1.isObject)(valueFirst) && (valueFirst.value ?? defaultValueForObject))) {
|
|
22
|
+
defaultLocalValue = true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// TODO/next-major: remove
|
|
26
|
+
// Backwards compatibility for `vike({prerender:true})` in vite.config.js
|
|
27
|
+
{
|
|
28
|
+
const valuesWithDefinedAt = vikeConfig.global._from.configsCumulative.prerender?.values ?? [];
|
|
29
|
+
if (valuesWithDefinedAt.some((v) => v.definedAt.includes('vite.config.js') && v.value)) {
|
|
30
|
+
defaultLocalValue = true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
25
33
|
(0, utils_js_1.objectAssign)(prerenderConfigGlobal, {
|
|
26
34
|
defaultLocalValue,
|
|
27
35
|
isPrerenderingEnabledForAllPages: vikeConfig.pageConfigs.length > 0 &&
|
|
@@ -47,8 +55,8 @@ function resolvePrerenderConfigLocal(pageConfig) {
|
|
|
47
55
|
const prerenderConfigLocal = { value };
|
|
48
56
|
return prerenderConfigLocal;
|
|
49
57
|
}
|
|
50
|
-
function isObject2(
|
|
51
|
-
return typeof
|
|
58
|
+
function isObject2(value) {
|
|
59
|
+
return typeof value === 'object' && value !== null;
|
|
52
60
|
}
|
|
53
61
|
function pickFirst(arr) {
|
|
54
62
|
return arr.filter((v) => v !== undefined)[0];
|