vike 0.4.225 → 0.4.226-commit-8f5c172
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 +3 -3
- 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 +22 -8
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
- package/dist/cjs/node/plugin/plugins/fileEnv.js +3 -0
- 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 +21 -28
- 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/assertSingleInstance.js +19 -4
- 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 +3 -3
- 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 +10 -2
- package/dist/esm/node/plugin/plugins/commonConfig.js +22 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
- package/dist/esm/node/plugin/plugins/fileEnv.js +3 -0
- 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.d.ts +1 -1
- package/dist/esm/node/prerender/runPrerender.js +21 -28
- 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/assertSingleInstance.js +19 -4
- 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
|
@@ -34,9 +34,9 @@ function importUserCode() {
|
|
|
34
34
|
return (0, virtual_files_js_1.resolveVirtualFileId)(id);
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
|
-
handleHotUpdate(ctx) {
|
|
37
|
+
async handleHotUpdate(ctx) {
|
|
38
38
|
try {
|
|
39
|
-
return handleHotUpdate(ctx, config);
|
|
39
|
+
return await handleHotUpdate(ctx, config);
|
|
40
40
|
}
|
|
41
41
|
catch (err) {
|
|
42
42
|
// Vite swallows errors thrown by handleHotUpdate()
|
|
@@ -68,9 +68,9 @@ function handleFileAddRemove(server, config) {
|
|
|
68
68
|
server.watcher.prependListener('add', (f) => listener(f, false));
|
|
69
69
|
server.watcher.prependListener('unlink', (f) => listener(f, true));
|
|
70
70
|
return;
|
|
71
|
-
function listener(file, isRemove) {
|
|
71
|
+
async function listener(file, isRemove) {
|
|
72
72
|
file = (0, vite_1.normalizePath)(file);
|
|
73
|
-
if ((0, crawlPlusFiles_js_1.isPlusFile)(file) || isVikeConfigDependency(file, server.moduleGraph)?.modifiesVikeVirtualFiles) {
|
|
73
|
+
if ((0, crawlPlusFiles_js_1.isPlusFile)(file) || (await isVikeConfigDependency(file, server.moduleGraph))?.modifiesVikeVirtualFiles) {
|
|
74
74
|
invalidateVikeVirtualFiles(server);
|
|
75
75
|
reloadConfig(file, config, isRemove ? 'removed' : 'created');
|
|
76
76
|
}
|
|
@@ -82,9 +82,9 @@ function invalidateVikeVirtualFiles(server) {
|
|
|
82
82
|
server.moduleGraph.invalidateModule(mod);
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
|
-
function handleHotUpdate(ctx, config) {
|
|
85
|
+
async function handleHotUpdate(ctx, config) {
|
|
86
86
|
const { file, server } = ctx;
|
|
87
|
-
const isVikeConfig = isVikeConfigDependency(ctx.file, ctx.server.moduleGraph);
|
|
87
|
+
const isVikeConfig = await isVikeConfigDependency(ctx.file, ctx.server.moduleGraph);
|
|
88
88
|
if (isVikeConfig) {
|
|
89
89
|
if (isVikeConfig.modifiesVikeVirtualFiles) {
|
|
90
90
|
/* Tailwind breaks this assertion, see https://github.com/vikejs/vike/discussions/1330#discussioncomment-7787238
|
|
@@ -106,12 +106,16 @@ function handleHotUpdate(ctx, config) {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
function isVikeConfigDependency(filePathAbsoluteFilesystem, moduleGraph) {
|
|
109
|
+
async function isVikeConfigDependency(filePathAbsoluteFilesystem, moduleGraph) {
|
|
110
110
|
// Check config-only files, for example all pages/+config.js dependencies. (There aren't part of Vite's module graph.)
|
|
111
111
|
(0, utils_js_1.assertPosixPath)(filePathAbsoluteFilesystem);
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
|
|
112
|
+
const vikeConfigObject = await (0, getVikeConfig_js_1.getVikeConfigOptional)();
|
|
113
|
+
if (vikeConfigObject) {
|
|
114
|
+
const { vikeConfigDependencies } = vikeConfigObject;
|
|
115
|
+
vikeConfigDependencies.forEach((f) => (0, utils_js_1.assertPosixPath)(f));
|
|
116
|
+
if (vikeConfigDependencies.has(filePathAbsoluteFilesystem))
|
|
117
|
+
return { modifiesVikeVirtualFiles: true };
|
|
118
|
+
}
|
|
115
119
|
// Check using Vite's module graph, for example all +htmlAttributes dependencies.
|
|
116
120
|
// Alternatively, simply call updateUserFiles() on every handleHotUpdate() call.
|
|
117
121
|
const importers = getImporters(filePathAbsoluteFilesystem, moduleGraph);
|
|
@@ -98,7 +98,7 @@ const configDefinitionsBuiltIn = {
|
|
|
98
98
|
(0, utils_js_1.assert)(source.valueIsLoaded);
|
|
99
99
|
if (source.value !== null) {
|
|
100
100
|
const { value } = source;
|
|
101
|
-
const definedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', 'clientHooks', source.
|
|
101
|
+
const definedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', 'clientHooks', source.definedAt);
|
|
102
102
|
(0, utils_js_1.assertUsage)(typeof value === 'boolean', `${definedAt} should be a boolean`);
|
|
103
103
|
return value;
|
|
104
104
|
}
|
|
@@ -133,6 +133,10 @@ const configDefinitionsBuiltIn = {
|
|
|
133
133
|
env: { config: true },
|
|
134
134
|
global: true
|
|
135
135
|
},
|
|
136
|
+
mode: {
|
|
137
|
+
env: { config: true },
|
|
138
|
+
global: true
|
|
139
|
+
},
|
|
136
140
|
injectScriptsAt: {
|
|
137
141
|
env: { server: true }
|
|
138
142
|
},
|
|
@@ -14,7 +14,6 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
|
14
14
|
const import_1 = require("@brillout/import");
|
|
15
15
|
const utils_js_1 = require("../../../../utils.js");
|
|
16
16
|
const transformPointerImports_js_1 = require("./transformPointerImports.js");
|
|
17
|
-
const getVikeConfig_js_1 = require("../getVikeConfig.js");
|
|
18
17
|
const source_map_support_1 = __importDefault(require("source-map-support"));
|
|
19
18
|
const getFilePath_js_1 = require("../../../../shared/getFilePath.js");
|
|
20
19
|
const module_1 = require("module");
|
|
@@ -31,11 +30,11 @@ async function transpileAndExecuteFile(filePath, userRootDir, isExtensionConfig,
|
|
|
31
30
|
const { filePathAbsoluteFilesystem, filePathToShowToUserResolved } = filePath;
|
|
32
31
|
(0, utils_js_1.assert)(filePathAbsoluteFilesystem);
|
|
33
32
|
const fileExtension = getFileExtension(filePathAbsoluteFilesystem);
|
|
34
|
-
if (esbuildCache[filePathAbsoluteFilesystem]) {
|
|
35
|
-
return await esbuildCache[filePathAbsoluteFilesystem];
|
|
33
|
+
if (esbuildCache.transpileCache[filePathAbsoluteFilesystem]) {
|
|
34
|
+
return await esbuildCache.transpileCache[filePathAbsoluteFilesystem];
|
|
36
35
|
}
|
|
37
36
|
const { promise, resolve } = (0, utils_js_1.genPromise)();
|
|
38
|
-
esbuildCache[filePathAbsoluteFilesystem] = promise;
|
|
37
|
+
esbuildCache.transpileCache[filePathAbsoluteFilesystem] = promise;
|
|
39
38
|
(0, utils_js_1.assertUsage)((0, utils_js_1.isPlainJavaScriptFile)(filePathAbsoluteFilesystem), `${filePathToShowToUserResolved} has file extension .${fileExtension} but a config file can only be a JavaScript/TypeScript file`);
|
|
40
39
|
const isHeader = isHeaderFile(filePathAbsoluteFilesystem);
|
|
41
40
|
if (isHeader) {
|
|
@@ -48,20 +47,20 @@ async function transpileAndExecuteFile(filePath, userRootDir, isExtensionConfig,
|
|
|
48
47
|
}
|
|
49
48
|
else {
|
|
50
49
|
const transformImports = isHeader ? 'all' : true;
|
|
51
|
-
const code = await transpileFile(filePath, transformImports, userRootDir);
|
|
50
|
+
const code = await transpileFile(filePath, transformImports, userRootDir, esbuildCache);
|
|
52
51
|
fileExports = await executeTranspiledFile(filePath, code);
|
|
53
52
|
}
|
|
54
53
|
resolve({ fileExports });
|
|
55
54
|
return { fileExports };
|
|
56
55
|
}
|
|
57
|
-
async function transpileFile(filePath, transformImports, userRootDir) {
|
|
56
|
+
async function transpileFile(filePath, transformImports, userRootDir, esbuildCache) {
|
|
58
57
|
const { filePathAbsoluteFilesystem, filePathToShowToUserResolved } = filePath;
|
|
59
58
|
(0, utils_js_1.assert)(filePathAbsoluteFilesystem);
|
|
60
59
|
(0, utils_js_1.assertPosixPath)(filePathAbsoluteFilesystem);
|
|
61
|
-
|
|
60
|
+
esbuildCache.vikeConfigDependencies.add(filePathAbsoluteFilesystem);
|
|
62
61
|
if (debug.isActivated)
|
|
63
62
|
debug('transpile', filePathToShowToUserResolved);
|
|
64
|
-
let { code, pointerImports } = await transpileWithEsbuild(filePath, userRootDir, transformImports);
|
|
63
|
+
let { code, pointerImports } = await transpileWithEsbuild(filePath, userRootDir, transformImports, esbuildCache);
|
|
65
64
|
if (debug.isActivated)
|
|
66
65
|
debug(`code, post esbuild (${filePathToShowToUserResolved})`, code);
|
|
67
66
|
let isImportTransformed = false;
|
|
@@ -80,7 +79,7 @@ async function transpileFile(filePath, transformImports, userRootDir) {
|
|
|
80
79
|
}
|
|
81
80
|
return code;
|
|
82
81
|
}
|
|
83
|
-
async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
|
|
82
|
+
async function transpileWithEsbuild(filePath, userRootDir, transformImports, esbuildCache) {
|
|
84
83
|
const entryFilePath = filePath.filePathAbsoluteFilesystem;
|
|
85
84
|
const entryFileDir = path_1.default.posix.dirname(entryFilePath);
|
|
86
85
|
const options = {
|
|
@@ -234,7 +233,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
|
|
|
234
233
|
// We collect the dependency `args.path` in case the bulid fails (upon build error => error is thrown => no metafile)
|
|
235
234
|
let { path } = args;
|
|
236
235
|
path = (0, utils_js_1.toPosixPath)(path);
|
|
237
|
-
|
|
236
|
+
esbuildCache.vikeConfigDependencies.add(path);
|
|
238
237
|
return undefined;
|
|
239
238
|
});
|
|
240
239
|
/* To exhaustively collect all dependencies upon build failure, we would also need to use onResolve().
|
|
@@ -263,7 +262,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
|
|
|
263
262
|
filePathRelative = (0, utils_js_1.toPosixPath)(filePathRelative);
|
|
264
263
|
(0, utils_js_1.assertPosixPath)(userRootDir);
|
|
265
264
|
const filePathAbsoluteFilesystem = path_1.default.posix.join(userRootDir, filePathRelative);
|
|
266
|
-
|
|
265
|
+
esbuildCache.vikeConfigDependencies.add(filePathAbsoluteFilesystem);
|
|
267
266
|
});
|
|
268
267
|
const code = result.outputFiles[0].text;
|
|
269
268
|
(0, utils_js_1.assert)(typeof code === 'string');
|
|
@@ -335,7 +334,7 @@ function getTemporaryBuildFilePath(filePathAbsoluteFilesystem) {
|
|
|
335
334
|
const dirname = path_1.default.posix.dirname(filePathAbsoluteFilesystem);
|
|
336
335
|
const filename = path_1.default.posix.basename(filePathAbsoluteFilesystem);
|
|
337
336
|
// Syntax with semicolon `build:${/*...*/}` doesn't work on Windows: https://github.com/vikejs/vike/issues/800#issuecomment-1517329455
|
|
338
|
-
const filePathTmp = path_1.default.posix.join(dirname, `${filename}.build-${(0, utils_js_1.getRandomId)(
|
|
337
|
+
const filePathTmp = path_1.default.posix.join(dirname, `${filename}.build-${(0, utils_js_1.getRandomId)()}.mjs`);
|
|
339
338
|
(0, utils_js_1.assert)(isTemporaryBuildFile(filePathTmp));
|
|
340
339
|
return filePathTmp;
|
|
341
340
|
}
|
|
@@ -3,13 +3,14 @@ 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;
|
|
11
11
|
exports.getConfVal = getConfVal;
|
|
12
12
|
exports.getConfigDefinitionOptional = getConfigDefinitionOptional;
|
|
13
|
+
exports.getVikeConfigFromCliOrEnv = getVikeConfigFromCliOrEnv;
|
|
13
14
|
exports.isOverriden = isOverriden;
|
|
14
15
|
const utils_js_1 = require("../../../utils.js");
|
|
15
16
|
const configDefinitionsBuiltIn_js_1 = require("./getVikeConfig/configDefinitionsBuiltIn.js");
|
|
@@ -32,17 +33,14 @@ const getEnvVarObject_js_1 = require("../../../shared/getEnvVarObject.js");
|
|
|
32
33
|
const context_js_1 = require("../../../../api/context.js");
|
|
33
34
|
const context_js_2 = require("../../../../cli/context.js");
|
|
34
35
|
(0, utils_js_1.assertIsNotProductionRuntime)();
|
|
36
|
+
(0, utils_js_1.assertIsSingleModuleInstance)('v1-design/getVikeConfig.ts');
|
|
35
37
|
let restartVite = false;
|
|
36
38
|
let wasConfigInvalid = null;
|
|
37
39
|
let vikeConfigPromise = null;
|
|
38
|
-
const vikeConfigDependencies = new Set();
|
|
39
|
-
exports.vikeConfigDependencies = vikeConfigDependencies;
|
|
40
40
|
function reloadVikeConfig(config) {
|
|
41
41
|
const userRootDir = config.root;
|
|
42
42
|
const vikeVitePluginOptions = config._vikeVitePluginOptions;
|
|
43
43
|
(0, utils_js_1.assert)(vikeVitePluginOptions);
|
|
44
|
-
// TODO/now: unify with esbuildCache
|
|
45
|
-
vikeConfigDependencies.clear();
|
|
46
44
|
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, true, vikeVitePluginOptions);
|
|
47
45
|
handleReloadSideEffects();
|
|
48
46
|
}
|
|
@@ -96,6 +94,11 @@ async function getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, doN
|
|
|
96
94
|
}
|
|
97
95
|
return await vikeConfigPromise;
|
|
98
96
|
}
|
|
97
|
+
async function getVikeConfigOptional() {
|
|
98
|
+
if (!vikeConfigPromise)
|
|
99
|
+
return null;
|
|
100
|
+
return await vikeConfigPromise;
|
|
101
|
+
}
|
|
99
102
|
function isV1Design(config) {
|
|
100
103
|
const vikeConfig = config._vikeConfigObject;
|
|
101
104
|
(0, utils_js_1.assert)(vikeConfig);
|
|
@@ -140,22 +143,24 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
140
143
|
configValueSources: {}
|
|
141
144
|
},
|
|
142
145
|
global: (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({ pageConfigGlobalValues: {} }),
|
|
143
|
-
pages: {}
|
|
146
|
+
pages: {},
|
|
147
|
+
vikeConfigDependencies: new Set()
|
|
144
148
|
};
|
|
145
149
|
return dummyData;
|
|
146
150
|
}
|
|
147
151
|
}
|
|
148
152
|
}
|
|
149
153
|
async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
150
|
-
const esbuildCache = {
|
|
154
|
+
const esbuildCache = {
|
|
155
|
+
transpileCache: {},
|
|
156
|
+
vikeConfigDependencies: new Set()
|
|
157
|
+
};
|
|
151
158
|
const plusFilesAll = await (0, getPlusFilesAll_js_1.getPlusFilesAll)(userRootDir, esbuildCache);
|
|
152
159
|
const configDefinitionsResolved = await resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache);
|
|
153
|
-
assertKnownConfigs(configDefinitionsResolved, plusFilesAll);
|
|
154
160
|
const { pageConfigGlobal, pageConfigs } = getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRootDir);
|
|
155
161
|
// Backwards compatibility for vike(options) in vite.config.js
|
|
156
162
|
temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
|
|
157
|
-
|
|
158
|
-
setCliAndApiOptions(pageConfigGlobal);
|
|
163
|
+
setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved);
|
|
159
164
|
// global
|
|
160
165
|
const pageConfigGlobalValues = getConfigValues(pageConfigGlobal);
|
|
161
166
|
const global = (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({ pageConfigGlobalValues });
|
|
@@ -164,7 +169,7 @@ async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
|
164
169
|
const pageConfigValues = getConfigValues(pageConfig, true);
|
|
165
170
|
return (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendly)(pageConfigGlobalValues, pageConfig, pageConfigValues);
|
|
166
171
|
}));
|
|
167
|
-
return { pageConfigs, pageConfigGlobal, global, pages };
|
|
172
|
+
return { pageConfigs, pageConfigGlobal, global, pages, vikeConfigDependencies: esbuildCache.vikeConfigDependencies };
|
|
168
173
|
}
|
|
169
174
|
async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache) {
|
|
170
175
|
const plusFilesAllOrdered = Object.values(plusFilesAll)
|
|
@@ -174,6 +179,10 @@ async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache)
|
|
|
174
179
|
// 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).
|
|
175
180
|
plusFilesAllOrdered, (configDef) => !!configDef.global);
|
|
176
181
|
await loadCustomConfigBuildTimeFiles(plusFilesAll, configDefinitionsGlobal, userRootDir, esbuildCache);
|
|
182
|
+
const configDefinitionsAll = getConfigDefinitions(Object.values(plusFilesAll).flat());
|
|
183
|
+
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
184
|
+
const configNamesKnownGlobal = Object.keys(configDefinitionsGlobal);
|
|
185
|
+
(0, utils_js_1.assert)(configNamesKnownGlobal.every((configName) => configNamesKnownAll.includes(configName)));
|
|
177
186
|
const configDefinitionsLocal = {};
|
|
178
187
|
await Promise.all((0, utils_js_1.objectEntries)(plusFilesAll).map(async ([locationIdPage, plusFiles]) => {
|
|
179
188
|
const plusFilesRelevant = (0, utils_js_1.objectEntries)(plusFilesAll)
|
|
@@ -183,12 +192,23 @@ async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache)
|
|
|
183
192
|
.sort((plusFile1, plusFile2) => sortAfterInheritanceOrderPage(plusFile1, plusFile2, locationIdPage, null));
|
|
184
193
|
const configDefinitions = getConfigDefinitions(plusFilesRelevant, (configDef) => configDef.global !== true);
|
|
185
194
|
await loadCustomConfigBuildTimeFiles(plusFiles, configDefinitions, userRootDir, esbuildCache);
|
|
186
|
-
|
|
195
|
+
const configNamesKnownLocal = (0, utils_js_1.unique)([...Object.keys(configDefinitions), ...configNamesKnownGlobal]);
|
|
196
|
+
(0, utils_js_1.assert)(configNamesKnownLocal.every((configName) => configNamesKnownAll.includes(configName)));
|
|
197
|
+
configDefinitionsLocal[locationIdPage] = {
|
|
198
|
+
configDefinitions,
|
|
199
|
+
plusFiles,
|
|
200
|
+
plusFilesRelevant,
|
|
201
|
+
configNamesKnownLocal
|
|
202
|
+
};
|
|
187
203
|
}));
|
|
188
204
|
const configDefinitionsResolved = {
|
|
189
205
|
configDefinitionsGlobal,
|
|
190
|
-
configDefinitionsLocal
|
|
206
|
+
configDefinitionsLocal,
|
|
207
|
+
configDefinitionsAll,
|
|
208
|
+
configNamesKnownAll,
|
|
209
|
+
configNamesKnownGlobal
|
|
191
210
|
};
|
|
211
|
+
assertKnownConfigs(configDefinitionsResolved);
|
|
192
212
|
return configDefinitionsResolved;
|
|
193
213
|
}
|
|
194
214
|
// Load value files (with `env.config===true`) of *custom* configs.
|
|
@@ -291,7 +311,7 @@ function assertGlobalConfigLocation(configName, sources, plusFilesAll, configDef
|
|
|
291
311
|
: 'to a value that is global';
|
|
292
312
|
const what = isConditionallyGlobal ? 'global values' : picocolors_1.default.cyan(configName);
|
|
293
313
|
const errEnd = configFilePathsGlobal.length > 0
|
|
294
|
-
? `define ${what} at a global config file such as ${(0, utils_js_1.joinEnglish)(configFilePathsGlobal, 'or')} instead`
|
|
314
|
+
? `define ${what} at a global config file such as ${(0, utils_js_1.joinEnglish)(configFilePathsGlobal.map(picocolors_1.default.bold), 'or')} instead`
|
|
295
315
|
: `create a global config file (e.g. /pages/+config.js) and define ${what} there instead`;
|
|
296
316
|
// When updating this error message => also update error message at https://vike.dev/warning/global-config
|
|
297
317
|
const errMsg = `${errBeg} ${errMid}: ${errEnd} (https://vike.dev/warning/global-config).`;
|
|
@@ -360,56 +380,55 @@ function temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, use
|
|
|
360
380
|
(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 });
|
|
361
381
|
Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
|
|
362
382
|
var _a;
|
|
363
|
-
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn), configName));
|
|
364
|
-
const configDef = configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn[configName];
|
|
365
383
|
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
userRootDir,
|
|
374
|
-
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
375
|
-
}),
|
|
376
|
-
fileExportPathToShowToUser: null
|
|
377
|
-
},
|
|
378
|
-
locationId: '/',
|
|
379
|
-
plusFile: null,
|
|
380
|
-
valueIsLoadedWithImport: false,
|
|
381
|
-
valueIsDefinedByPlusValueFile: false
|
|
382
|
-
});
|
|
384
|
+
sources.push(getSourceNonConfigFile(configName, value, {
|
|
385
|
+
...(0, getFilePath_js_1.getFilePathResolved)({
|
|
386
|
+
userRootDir,
|
|
387
|
+
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
388
|
+
}),
|
|
389
|
+
fileExportPathToShowToUser: null
|
|
390
|
+
}));
|
|
383
391
|
});
|
|
384
392
|
}
|
|
385
|
-
function setCliAndApiOptions(pageConfigGlobal) {
|
|
386
|
-
//
|
|
387
|
-
const configFromEnv = (0, getEnvVarObject_js_1.getEnvVarObject)('VIKE_CONFIG');
|
|
388
|
-
if (configFromEnv) {
|
|
389
|
-
add(configFromEnv, { definedBy: 'env' });
|
|
390
|
-
}
|
|
391
|
-
// Vike API — passed options
|
|
393
|
+
function setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved) {
|
|
394
|
+
// Vike API — passed options [lowest precedence]
|
|
392
395
|
const apiOperation = (0, context_js_1.getApiOperation)();
|
|
393
396
|
if (apiOperation?.options.vikeConfig) {
|
|
394
|
-
|
|
395
|
-
definedBy: 'api',
|
|
396
|
-
operation: apiOperation.operation
|
|
397
|
-
});
|
|
397
|
+
addSources(apiOperation.options.vikeConfig, { definedBy: 'api', operation: apiOperation.operation }, false);
|
|
398
398
|
}
|
|
399
|
+
const { configFromCliOptions, configFromEnvVar } = getVikeConfigFromCliOrEnv();
|
|
399
400
|
// Vike CLI options
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
401
|
+
if (configFromCliOptions) {
|
|
402
|
+
addSources(configFromCliOptions, { definedBy: 'cli' }, true);
|
|
403
|
+
}
|
|
404
|
+
// VIKE_CONFIG [highest precedence]
|
|
405
|
+
if (configFromEnvVar) {
|
|
406
|
+
addSources(configFromEnvVar, { definedBy: 'env' }, false);
|
|
403
407
|
}
|
|
404
408
|
return;
|
|
405
|
-
function
|
|
409
|
+
function addSources(configValues, definedBy, exitOnError) {
|
|
406
410
|
Object.entries(configValues).forEach(([configName, value]) => {
|
|
407
411
|
var _a;
|
|
412
|
+
const sourceName = `The ${(0, getConfigDefinedAt_js_1.getDefinedByString)(definedBy, configName)}`;
|
|
413
|
+
assertKnownConfig(configName, configDefinitionsResolved.configNamesKnownGlobal, configDefinitionsResolved, '/', sourceName, exitOnError);
|
|
408
414
|
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
409
415
|
sources.unshift(getSourceNonConfigFile(configName, value, definedBy));
|
|
410
416
|
});
|
|
411
417
|
}
|
|
412
418
|
}
|
|
419
|
+
function getVikeConfigFromCliOrEnv() {
|
|
420
|
+
const configFromCliOptions = (0, context_js_2.getCliOptions)();
|
|
421
|
+
const configFromEnvVar = (0, getEnvVarObject_js_1.getEnvVarObject)('VIKE_CONFIG');
|
|
422
|
+
const vikeConfigFromCliOrEnv = {
|
|
423
|
+
...configFromCliOptions, // Lower precedence
|
|
424
|
+
...configFromEnvVar // Higher precedence
|
|
425
|
+
};
|
|
426
|
+
return {
|
|
427
|
+
vikeConfigFromCliOrEnv,
|
|
428
|
+
configFromCliOptions,
|
|
429
|
+
configFromEnvVar
|
|
430
|
+
};
|
|
431
|
+
}
|
|
413
432
|
function getSourceNonConfigFile(configName, value, definedAt) {
|
|
414
433
|
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn), configName));
|
|
415
434
|
const configDef = configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn[configName];
|
|
@@ -417,7 +436,7 @@ function getSourceNonConfigFile(configName, value, definedAt) {
|
|
|
417
436
|
valueIsLoaded: true,
|
|
418
437
|
value,
|
|
419
438
|
configEnv: configDef.env,
|
|
420
|
-
|
|
439
|
+
definedAt,
|
|
421
440
|
locationId: '/',
|
|
422
441
|
plusFile: null,
|
|
423
442
|
valueIsLoadedWithImport: false,
|
|
@@ -533,7 +552,7 @@ function resolveConfigValueSources(configName, configDef, plusFilesRelevant, use
|
|
|
533
552
|
return sources;
|
|
534
553
|
}
|
|
535
554
|
function isDefiningConfig(plusFile, configName) {
|
|
536
|
-
return
|
|
555
|
+
return getConfigNamesSetByPlusFile(plusFile).includes(configName);
|
|
537
556
|
}
|
|
538
557
|
function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
539
558
|
const confVal = getConfVal(plusFile, configName);
|
|
@@ -576,7 +595,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
576
595
|
configEnv: configDef.env,
|
|
577
596
|
valueIsLoadedWithImport: false,
|
|
578
597
|
valueIsDefinedByPlusValueFile: false,
|
|
579
|
-
definedAtFilePath
|
|
598
|
+
definedAt: definedAtFilePath
|
|
580
599
|
};
|
|
581
600
|
return configValueSource;
|
|
582
601
|
}
|
|
@@ -600,7 +619,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
600
619
|
configEnv: resolveConfigEnv(configDef.env, pointerImport.fileExportPath),
|
|
601
620
|
valueIsLoadedWithImport: true,
|
|
602
621
|
valueIsDefinedByPlusValueFile: false,
|
|
603
|
-
|
|
622
|
+
definedAt: pointerImport.fileExportPath
|
|
604
623
|
};
|
|
605
624
|
return configValueSource;
|
|
606
625
|
}
|
|
@@ -612,7 +631,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
612
631
|
configEnv: configDef.env,
|
|
613
632
|
valueIsLoadedWithImport: false,
|
|
614
633
|
valueIsDefinedByPlusValueFile: false,
|
|
615
|
-
|
|
634
|
+
definedAt: definedAtFilePath_
|
|
616
635
|
};
|
|
617
636
|
return configValueSource;
|
|
618
637
|
}
|
|
@@ -626,7 +645,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
626
645
|
configEnv: configEnvResolved,
|
|
627
646
|
valueIsLoadedWithImport: !confVal.valueIsLoaded || !(0, serializeConfigValues_js_1.isJsonValue)(confVal.value),
|
|
628
647
|
valueIsDefinedByPlusValueFile: true,
|
|
629
|
-
|
|
648
|
+
definedAt: {
|
|
630
649
|
...plusFile.filePath,
|
|
631
650
|
fileExportPathToShowToUser: configName === plusFile.configName
|
|
632
651
|
? []
|
|
@@ -640,7 +659,7 @@ function getConfigValueSource(configName, plusFile, configDef, userRootDir) {
|
|
|
640
659
|
}
|
|
641
660
|
function isDefiningPage(plusFiles) {
|
|
642
661
|
for (const plusFile of plusFiles) {
|
|
643
|
-
const configNames =
|
|
662
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
644
663
|
if (configNames.some((configName) => isDefiningPageConfig(configName))) {
|
|
645
664
|
return true;
|
|
646
665
|
}
|
|
@@ -662,7 +681,7 @@ function resolveIsGlobalValue(configDefGlobal, source, plusFilesAll) {
|
|
|
662
681
|
(0, utils_js_1.assert)(typeof isGlobal === 'boolean');
|
|
663
682
|
return isGlobal;
|
|
664
683
|
}
|
|
665
|
-
function
|
|
684
|
+
function getConfigNamesSetByPlusFile(plusFile) {
|
|
666
685
|
let configNames = [];
|
|
667
686
|
if (!plusFile.isConfigFile) {
|
|
668
687
|
configNames.push(plusFile.configName);
|
|
@@ -782,7 +801,7 @@ function runEffect(configName, configDef, source) {
|
|
|
782
801
|
// Call effect
|
|
783
802
|
const configModFromEffect = configDef.effect({
|
|
784
803
|
configValue: source.value,
|
|
785
|
-
configDefinedAt: (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, source.
|
|
804
|
+
configDefinedAt: (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, source.definedAt)
|
|
786
805
|
});
|
|
787
806
|
if (!configModFromEffect)
|
|
788
807
|
return null;
|
|
@@ -796,7 +815,7 @@ function applyEffectConfVal(configModFromEffect, sourceEffect, configValueSource
|
|
|
796
815
|
(0, utils_js_1.assert)(configDef);
|
|
797
816
|
(0, utils_js_1.assert)(configDefEffect._userEffectDefinedAtFilePath);
|
|
798
817
|
const configValueSource = {
|
|
799
|
-
|
|
818
|
+
definedAt: configDefEffect._userEffectDefinedAtFilePath,
|
|
800
819
|
plusFile: sourceEffect.plusFile,
|
|
801
820
|
locationId: sourceEffect.locationId,
|
|
802
821
|
configEnv: configDef.env,
|
|
@@ -859,33 +878,30 @@ function getComputed(configValueSources, configDefinitions) {
|
|
|
859
878
|
return configValuesComputed;
|
|
860
879
|
}
|
|
861
880
|
// Show error message upon unknown config
|
|
862
|
-
function assertKnownConfigs(configDefinitionsResolved
|
|
863
|
-
|
|
864
|
-
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
865
|
-
const configNamesGlobal = Object.keys(configDefinitionsResolved.configDefinitionsGlobal);
|
|
866
|
-
(0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsLocal).forEach(([_locationId, { configDefinitions, plusFiles }]) => {
|
|
867
|
-
const configDefinitionsLocal = configDefinitions;
|
|
868
|
-
const configNamesKnownLocal = [...Object.keys(configDefinitionsLocal), ...configNamesGlobal];
|
|
881
|
+
function assertKnownConfigs(configDefinitionsResolved) {
|
|
882
|
+
(0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsLocal).forEach(([_locationId, { configNamesKnownLocal, plusFiles }]) => {
|
|
869
883
|
plusFiles.forEach((plusFile) => {
|
|
870
|
-
const configNames =
|
|
884
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
871
885
|
configNames.forEach((configName) => {
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
(
|
|
886
|
+
const { locationId } = plusFile;
|
|
887
|
+
const sourceName = plusFile.filePath.filePathToShowToUser;
|
|
888
|
+
assertKnownConfig(configName, configNamesKnownLocal, configDefinitionsResolved, locationId, sourceName, false);
|
|
875
889
|
});
|
|
876
890
|
});
|
|
877
891
|
});
|
|
878
892
|
}
|
|
879
|
-
function assertKnownConfig(configName,
|
|
880
|
-
|
|
893
|
+
function assertKnownConfig(configName, configNamesKnownRelevant, configDefinitionsResolved, locationId, sourceName, exitOnError) {
|
|
894
|
+
const { configNamesKnownAll } = configDefinitionsResolved;
|
|
895
|
+
if (configNamesKnownRelevant.includes(configName)) {
|
|
896
|
+
(0, utils_js_1.assert)(configNamesKnownAll.includes(configName));
|
|
881
897
|
return;
|
|
898
|
+
}
|
|
882
899
|
const configNameColored = picocolors_1.default.cyan(configName);
|
|
883
|
-
const { locationId, filePath: { filePathToShowToUser } } = plusFile;
|
|
884
|
-
const errMsg = `${filePathToShowToUser} sets an unknown config ${configNameColored}`;
|
|
885
900
|
// Inheritance issue: config is known but isn't defined at `locationId`
|
|
886
901
|
if (configNamesKnownAll.includes(configName)) {
|
|
887
|
-
(0, utils_js_1.assertUsage)(false, `${
|
|
902
|
+
(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 });
|
|
888
903
|
}
|
|
904
|
+
const errMsg = `${sourceName} sets an unknown config ${configNameColored}`;
|
|
889
905
|
// Missing vike-{react,vue,solid} installation
|
|
890
906
|
{
|
|
891
907
|
const ui = ['vike-react', 'vike-vue', 'vike-solid'];
|
|
@@ -901,11 +917,9 @@ function assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLoca
|
|
|
901
917
|
Wrapper: ui
|
|
902
918
|
};
|
|
903
919
|
if (configName in knownVikeExntensionConfigs) {
|
|
904
|
-
const requiredVikeExtension = knownVikeExntensionConfigs[configName]
|
|
905
|
-
.map((e) => picocolors_1.default.bold(e))
|
|
906
|
-
.join('/');
|
|
920
|
+
const requiredVikeExtension = (0, utils_js_1.joinEnglish)(knownVikeExntensionConfigs[configName].map((e) => picocolors_1.default.bold(e)), 'or');
|
|
907
921
|
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.)`;
|
|
908
|
-
(0, utils_js_1.assertUsage)(false, errMsgEnhanced);
|
|
922
|
+
(0, utils_js_1.assertUsage)(false, errMsgEnhanced, { exitOnError });
|
|
909
923
|
}
|
|
910
924
|
}
|
|
911
925
|
// Similarity hint
|
|
@@ -922,9 +936,9 @@ function assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLoca
|
|
|
922
936
|
if (configName === 'page') {
|
|
923
937
|
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.)`;
|
|
924
938
|
}
|
|
925
|
-
(0, utils_js_1.assertUsage)(false, errMsgEnhanced);
|
|
939
|
+
(0, utils_js_1.assertUsage)(false, errMsgEnhanced, { exitOnError });
|
|
926
940
|
}
|
|
927
|
-
(0, utils_js_1.assertUsage)(false, errMsg);
|
|
941
|
+
(0, utils_js_1.assertUsage)(false, errMsg, { exitOnError });
|
|
928
942
|
}
|
|
929
943
|
function determineRouteFilesystem(locationId, configValueSources) {
|
|
930
944
|
const configName = 'filesystemRoutingRoot';
|
|
@@ -956,12 +970,12 @@ function getFilesystemRoutingRootEffect(configFilesystemRoutingRoot, configName)
|
|
|
956
970
|
// Eagerly loaded since it's config-only
|
|
957
971
|
(0, utils_js_1.assert)(configFilesystemRoutingRoot.valueIsLoaded);
|
|
958
972
|
const { value } = configFilesystemRoutingRoot;
|
|
959
|
-
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, configFilesystemRoutingRoot.
|
|
973
|
+
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, configFilesystemRoutingRoot.definedAt);
|
|
960
974
|
(0, utils_js_1.assertUsage)(typeof value === 'string', `${configDefinedAt} should be a string`);
|
|
961
975
|
(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('/')}`);
|
|
962
|
-
const {
|
|
963
|
-
(0, utils_js_1.assert)(!
|
|
964
|
-
const { filePathAbsoluteUserRootDir } =
|
|
976
|
+
const { definedAt } = configFilesystemRoutingRoot;
|
|
977
|
+
(0, utils_js_1.assert)(!definedAt.definedBy);
|
|
978
|
+
const { filePathAbsoluteUserRootDir } = definedAt;
|
|
965
979
|
(0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
|
|
966
980
|
const before = (0, filesystemRouting_js_1.getFilesystemRouteString)((0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir));
|
|
967
981
|
const after = value;
|
|
@@ -1012,7 +1026,7 @@ function getConfigDefinitionOptional(configDefinitions, configName) {
|
|
|
1012
1026
|
return configDefinitions[configName] ?? null;
|
|
1013
1027
|
}
|
|
1014
1028
|
function getConfVal(plusFile, configName) {
|
|
1015
|
-
const configNames =
|
|
1029
|
+
const configNames = getConfigNamesSetByPlusFile(plusFile);
|
|
1016
1030
|
if (!configNames.includes(configName))
|
|
1017
1031
|
return null;
|
|
1018
1032
|
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);
|
|
@@ -23,8 +23,15 @@ function parseJson5(valueStr, what) {
|
|
|
23
23
|
value = json5_1.default.parse(valueStr);
|
|
24
24
|
}
|
|
25
25
|
catch (err) {
|
|
26
|
+
if (isNotJavaScriptLike(valueStr)) {
|
|
27
|
+
// Interpret as string
|
|
28
|
+
return valueStr;
|
|
29
|
+
}
|
|
26
30
|
console.error(err);
|
|
27
31
|
(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)}`);
|
|
28
32
|
}
|
|
29
33
|
return value;
|
|
30
34
|
}
|
|
35
|
+
function isNotJavaScriptLike(valueStr) {
|
|
36
|
+
return ![':', ',', '{', '}', '(', ')'].some((c) => valueStr.includes(c));
|
|
37
|
+
}
|
|
@@ -17,8 +17,8 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
|
|
|
17
17
|
};
|
|
18
18
|
let defaultLocalValue = false;
|
|
19
19
|
{
|
|
20
|
-
const valueFirst = prerenderConfigs.filter((p) => !(0, utils_js_1.isObject)(p) || p.
|
|
21
|
-
if (valueFirst === true || ((0, utils_js_1.isObject)(valueFirst) && (valueFirst.
|
|
20
|
+
const valueFirst = prerenderConfigs.filter((p) => !(0, utils_js_1.isObject)(p) || p.enable !== null)[0];
|
|
21
|
+
if (valueFirst === true || ((0, utils_js_1.isObject)(valueFirst) && (valueFirst.enable ?? defaultValueForObject))) {
|
|
22
22
|
defaultLocalValue = true;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -49,7 +49,7 @@ function resolvePrerenderConfigLocal(pageConfig) {
|
|
|
49
49
|
const values = configValue.value;
|
|
50
50
|
(0, utils_js_1.assert)((0, utils_js_1.isArray)(values));
|
|
51
51
|
const value = values[0];
|
|
52
|
-
//
|
|
52
|
+
// 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.
|
|
53
53
|
(0, utils_js_1.assert)(typeof value === 'boolean');
|
|
54
54
|
(0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
|
|
55
55
|
const prerenderConfigLocal = { value };
|