vike 0.4.220-commit-9a798ce → 0.4.220-commit-af5c91f
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/utils.js +1 -1
- package/dist/cjs/node/plugin/index.js +1 -1
- package/dist/cjs/node/plugin/onLoad.js +1 -1
- package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +5 -3
- package/dist/cjs/node/plugin/plugins/buildConfig.js +7 -5
- package/dist/cjs/node/plugin/plugins/buildEntry/index.js +2 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -2
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +3 -2
- package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +10 -8
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/assertExtensions.js +8 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +39 -22
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +9 -64
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +319 -350
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +2 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +7 -6
- package/dist/cjs/node/plugin/plugins/packageJsonFile.js +2 -2
- package/dist/cjs/node/plugin/plugins/previewConfig.js +4 -3
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +2 -1
- package/dist/cjs/node/plugin/shared/findPageFiles.js +2 -1
- package/dist/cjs/node/plugin/{getOutDirs.js → shared/getOutDirs.js} +24 -27
- package/dist/cjs/node/plugin/{resolveClientEntriesDev.js → shared/resolveClientEntriesDev.js} +5 -8
- package/dist/cjs/{utils → node/plugin/shared}/viteIsSSR.js +2 -2
- package/dist/cjs/node/plugin/utils.js +0 -1
- package/dist/cjs/node/prerender/context.js +8 -3
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +26 -5
- package/dist/cjs/node/prerender/runPrerender.js +6 -11
- package/dist/cjs/node/prerender/utils.js +1 -2
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +9 -4
- package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +2 -27
- package/dist/cjs/node/runtime/renderPage/isFontFallback.js +29 -0
- package/dist/cjs/node/runtime/utils.js +1 -3
- package/dist/cjs/shared/getPageContextUrlComputed.js +6 -1
- package/dist/cjs/shared/getPageFiles/fileTypes.js +0 -1
- package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +0 -3
- package/dist/cjs/shared/getPageFiles/getPageFileObject.js +0 -5
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +69 -18
- package/dist/cjs/shared/utils.js +0 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/findFile.js +3 -3
- package/dist/cjs/utils/isDev.js +2 -5
- package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +2 -2
- package/dist/cjs/utils/path.js +48 -0
- package/dist/cjs/utils/requireResolve.js +3 -3
- package/dist/esm/node/api/utils.d.ts +1 -1
- package/dist/esm/node/api/utils.js +1 -1
- package/dist/esm/node/plugin/index.js +1 -1
- package/dist/esm/node/plugin/onLoad.js +1 -1
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +3 -1
- package/dist/esm/node/plugin/plugins/buildConfig.js +3 -1
- package/dist/esm/node/plugin/plugins/buildEntry/index.js +2 -1
- package/dist/esm/node/plugin/plugins/commonConfig.js +2 -3
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +2 -1
- package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -1
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +9 -7
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.js +9 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +15 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +40 -23
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +8 -18
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +10 -65
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +6 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +12 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +25 -8
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +322 -353
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +2 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +7 -6
- package/dist/esm/node/plugin/plugins/packageJsonFile.js +1 -1
- package/dist/esm/node/plugin/plugins/previewConfig.js +2 -1
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +2 -1
- package/dist/esm/node/plugin/shared/findPageFiles.js +2 -1
- package/dist/esm/node/plugin/{getOutDirs.js → shared/getOutDirs.js} +2 -5
- package/dist/esm/node/plugin/{resolveClientEntriesDev.js → shared/resolveClientEntriesDev.js} +5 -8
- package/dist/esm/{utils → node/plugin/shared}/viteIsSSR.js +2 -2
- package/dist/esm/node/plugin/utils.d.ts +0 -1
- package/dist/esm/node/plugin/utils.js +0 -1
- package/dist/esm/node/prerender/context.d.ts +2 -0
- package/dist/esm/node/prerender/context.js +8 -3
- package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +8 -1
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +26 -5
- package/dist/esm/node/prerender/runPrerender.js +7 -12
- package/dist/esm/node/prerender/utils.d.ts +1 -2
- package/dist/esm/node/prerender/utils.js +1 -2
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +9 -4
- package/dist/esm/node/runtime/renderPage/getEarlyHints.js +1 -26
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/isFontFallback.d.ts +3 -0
- package/dist/esm/node/runtime/renderPage/isFontFallback.js +27 -0
- package/dist/esm/node/runtime/utils.d.ts +1 -3
- package/dist/esm/node/runtime/utils.js +1 -3
- package/dist/esm/shared/getPageContextUrlComputed.js +6 -1
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -2
- package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +0 -3
- package/dist/esm/shared/getPageFiles/getPageFileObject.js +0 -5
- package/dist/esm/shared/page-configs/PageConfig.d.ts +0 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +7 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +70 -19
- package/dist/esm/shared/utils.d.ts +0 -1
- package/dist/esm/shared/utils.js +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/findFile.js +1 -1
- package/dist/esm/utils/isDev.js +3 -6
- package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +1 -1
- package/dist/esm/utils/path.d.ts +14 -0
- package/dist/esm/utils/path.js +46 -0
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/dist/esm/utils/requireResolve.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/addImportStatement.js +0 -29
- package/dist/cjs/shared/assertPageFilePath.js +0 -11
- package/dist/cjs/utils/path-shim.js +0 -19
- package/dist/cjs/utils/toPosixPath.js +0 -18
- package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.d.ts +0 -14
- package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.js +0 -27
- package/dist/esm/shared/assertPageFilePath.d.ts +0 -2
- package/dist/esm/shared/assertPageFilePath.js +0 -9
- package/dist/esm/utils/path-shim.d.ts +0 -2
- package/dist/esm/utils/path-shim.js +0 -17
- package/dist/esm/utils/toPosixPath.d.ts +0 -4
- package/dist/esm/utils/toPosixPath.js +0 -16
- /package/dist/esm/node/plugin/{getOutDirs.d.ts → shared/getOutDirs.d.ts} +0 -0
- /package/dist/esm/node/plugin/{resolveClientEntriesDev.d.ts → shared/resolveClientEntriesDev.d.ts} +0 -0
- /package/dist/esm/{utils → node/plugin/shared}/viteIsSSR.d.ts +0 -0
|
@@ -9,7 +9,8 @@ exports.getVikeConfig2 = getVikeConfig2;
|
|
|
9
9
|
exports.reloadVikeConfig = reloadVikeConfig;
|
|
10
10
|
exports.isVikeConfigFile = isVikeConfigFile;
|
|
11
11
|
exports.isV1Design = isV1Design;
|
|
12
|
-
exports.
|
|
12
|
+
exports.getConfVal = getConfVal;
|
|
13
|
+
exports.getConfigDefinitionOptional = getConfigDefinitionOptional;
|
|
13
14
|
const utils_js_1 = require("../../../utils.js");
|
|
14
15
|
const path_1 = __importDefault(require("path"));
|
|
15
16
|
const configDefinitionsBuiltIn_js_1 = require("./getVikeConfig/configDefinitionsBuiltIn.js");
|
|
@@ -30,8 +31,6 @@ const getConfigValueBuildTime_js_1 = require("../../../../../shared/page-configs
|
|
|
30
31
|
const assertExtensions_js_1 = require("./assertExtensions.js");
|
|
31
32
|
const getPageConfigUserFriendly_js_1 = require("../../../../../shared/page-configs/getPageConfigUserFriendly.js");
|
|
32
33
|
const serializeConfigValues_js_1 = require("../../../../../shared/page-configs/serialize/serializeConfigValues.js");
|
|
33
|
-
const configDefinitionsBuiltIn = getConfigDefinitionsBuiltIn();
|
|
34
|
-
const configDefinitionsBuiltInGlobal = getConfigDefinitionsBuiltInGlobal();
|
|
35
34
|
(0, utils_js_1.assertIsNotProductionRuntime)();
|
|
36
35
|
let restartVite = false;
|
|
37
36
|
let wasConfigInvalid = null;
|
|
@@ -43,7 +42,6 @@ function reloadVikeConfig(config) {
|
|
|
43
42
|
const vikeVitePluginOptions = config._vikeVitePluginOptions;
|
|
44
43
|
(0, utils_js_1.assert)(vikeVitePluginOptions);
|
|
45
44
|
vikeConfigDependencies.clear();
|
|
46
|
-
(0, resolvePointerImport_js_1.clearFilesEnvMap)();
|
|
47
45
|
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, true, vikeVitePluginOptions);
|
|
48
46
|
handleReloadSideEffects();
|
|
49
47
|
}
|
|
@@ -102,7 +100,7 @@ async function isV1Design(config) {
|
|
|
102
100
|
const isV1Design = pageConfigs.length > 0;
|
|
103
101
|
return isV1Design;
|
|
104
102
|
}
|
|
105
|
-
async function loadInterfaceFiles(userRootDir) {
|
|
103
|
+
async function loadInterfaceFiles(userRootDir, esbuildCache) {
|
|
106
104
|
const plusFiles = await findPlusFiles(userRootDir, null);
|
|
107
105
|
const configFiles = [];
|
|
108
106
|
const valueFiles = [];
|
|
@@ -120,10 +118,10 @@ async function loadInterfaceFiles(userRootDir) {
|
|
|
120
118
|
...configFiles.map(async (filePath) => {
|
|
121
119
|
const { filePathAbsoluteUserRootDir } = filePath;
|
|
122
120
|
(0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
|
|
123
|
-
const { configFile, extendsConfigs } = await (0, loadFileAtConfigTime_js_1.loadConfigFile)(filePath, userRootDir, [], false);
|
|
121
|
+
const { configFile, extendsConfigs } = await (0, loadFileAtConfigTime_js_1.loadConfigFile)(filePath, userRootDir, [], false, esbuildCache);
|
|
124
122
|
(0, utils_js_1.assert)(filePath.filePathAbsoluteUserRootDir);
|
|
125
123
|
const locationId = (0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir);
|
|
126
|
-
const interfaceFile = getInterfaceFileFromConfigFile(configFile, false, locationId);
|
|
124
|
+
const interfaceFile = getInterfaceFileFromConfigFile(configFile, false, locationId, userRootDir);
|
|
127
125
|
interfaceFilesAll[locationId] = interfaceFilesAll[locationId] ?? [];
|
|
128
126
|
interfaceFilesAll[locationId].push(interfaceFile);
|
|
129
127
|
extendsConfigs.forEach((extendsConfig) => {
|
|
@@ -143,7 +141,7 @@ async function loadInterfaceFiles(userRootDir) {
|
|
|
143
141
|
export default { extends: [vikeReact] }
|
|
144
142
|
```
|
|
145
143
|
*/
|
|
146
|
-
const interfaceFile = getInterfaceFileFromConfigFile(extendsConfig, true, locationId);
|
|
144
|
+
const interfaceFile = getInterfaceFileFromConfigFile(extendsConfig, true, locationId, userRootDir);
|
|
147
145
|
(0, assertExtensions_js_1.assertExtensionsConventions)(interfaceFile);
|
|
148
146
|
interfaceFilesAll[locationId].push(interfaceFile);
|
|
149
147
|
});
|
|
@@ -158,60 +156,50 @@ async function loadInterfaceFiles(userRootDir) {
|
|
|
158
156
|
const interfaceFile = {
|
|
159
157
|
locationId,
|
|
160
158
|
filePath,
|
|
161
|
-
fileExportsByConfigName: {
|
|
162
|
-
[configName]: {}
|
|
163
|
-
},
|
|
164
159
|
isConfigFile: false,
|
|
165
160
|
isValueFile: true,
|
|
161
|
+
isValueFileLoaded: false,
|
|
166
162
|
configName
|
|
167
163
|
};
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
await (0, loadFileAtConfigTime_js_1.loadValueFile)(interfaceFile, configName, userRootDir);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
{
|
|
178
|
-
interfaceFilesAll[locationId] = interfaceFilesAll[locationId] ?? [];
|
|
179
|
-
interfaceFilesAll[locationId].push(interfaceFile);
|
|
180
|
-
}
|
|
164
|
+
interfaceFilesAll[locationId] = interfaceFilesAll[locationId] ?? [];
|
|
165
|
+
interfaceFilesAll[locationId].push(interfaceFile);
|
|
166
|
+
// We don't have access to the custom config definitions defined by the user yet.
|
|
167
|
+
// - If `configDef` is `undefined` => we load the file +{configName}.js later.
|
|
168
|
+
// - We already need to load +meta.js here (to get the custom config definitions defined by the user)
|
|
169
|
+
await (0, loadFileAtConfigTime_js_1.loadValueFile)(interfaceFile, configDefinitionsBuiltIn_js_1.configDefinitionsBuiltInAll, userRootDir, esbuildCache);
|
|
181
170
|
})
|
|
182
171
|
]);
|
|
183
|
-
|
|
172
|
+
assertKnownConfigs(interfaceFilesAll);
|
|
184
173
|
return interfaceFilesAll;
|
|
185
174
|
}
|
|
186
|
-
function getInterfaceFileFromConfigFile(configFile,
|
|
175
|
+
function getInterfaceFileFromConfigFile(configFile, isConfigExtension, locationId, userRootDir) {
|
|
187
176
|
const { fileExports, filePath, extendsFilePaths } = configFile;
|
|
177
|
+
const fileExportsByConfigName = {};
|
|
178
|
+
const pointerImportsByConfigName = {};
|
|
179
|
+
const fileExport = (0, getConfigFileExport_js_1.getConfigFileExport)(fileExports, filePath.filePathToShowToUser);
|
|
180
|
+
Object.entries(fileExport).forEach(([configName, configValue]) => {
|
|
181
|
+
fileExportsByConfigName[configName] = configValue;
|
|
182
|
+
const pointerImport = (0, resolvePointerImport_js_1.resolvePointerImport)(configValue, configFile.filePath, userRootDir, configName);
|
|
183
|
+
if (pointerImport) {
|
|
184
|
+
pointerImportsByConfigName[configName] = {
|
|
185
|
+
...pointerImport,
|
|
186
|
+
fileExportValueLoaded: false
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
});
|
|
188
190
|
const interfaceFile = {
|
|
189
191
|
locationId,
|
|
190
192
|
filePath,
|
|
191
|
-
fileExportsByConfigName
|
|
193
|
+
fileExportsByConfigName,
|
|
194
|
+
pointerImportsByConfigName,
|
|
192
195
|
isConfigFile: true,
|
|
193
196
|
isValueFile: false,
|
|
194
|
-
|
|
197
|
+
isValueFileLoaded: true,
|
|
198
|
+
isConfigExtension,
|
|
195
199
|
extendsFilePaths
|
|
196
200
|
};
|
|
197
|
-
const fileExport = (0, getConfigFileExport_js_1.getConfigFileExport)(fileExports, filePath.filePathToShowToUser);
|
|
198
|
-
Object.entries(fileExport).forEach(([configName, configValue]) => {
|
|
199
|
-
interfaceFile.fileExportsByConfigName[configName] = { configValue };
|
|
200
|
-
});
|
|
201
201
|
return interfaceFile;
|
|
202
202
|
}
|
|
203
|
-
/** Show error message upon unknown config */
|
|
204
|
-
function assertAllConfigsAreKnown(interfaceFilesAll) {
|
|
205
|
-
(0, utils_js_1.objectEntries)(interfaceFilesAll).forEach(([locationId, interfaceFiles]) => {
|
|
206
|
-
const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesAll, locationId);
|
|
207
|
-
const configDefinitions = getConfigDefinitions(interfaceFilesRelevant);
|
|
208
|
-
interfaceFiles.forEach((interfaceFile) => {
|
|
209
|
-
Object.keys(interfaceFile.fileExportsByConfigName).forEach((configName) => {
|
|
210
|
-
assertConfigExists(configName, Object.keys(configDefinitions), interfaceFile.filePath.filePathToShowToUser);
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
203
|
async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePluginOptions, doNotRestartViteOnError) {
|
|
216
204
|
let hasError = false;
|
|
217
205
|
let ret;
|
|
@@ -246,7 +234,6 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
246
234
|
pageConfigs: [],
|
|
247
235
|
pageConfigGlobal: {
|
|
248
236
|
configDefinitions: {},
|
|
249
|
-
interfaceFiles: {},
|
|
250
237
|
configValueSources: {}
|
|
251
238
|
},
|
|
252
239
|
global: (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues: {} })
|
|
@@ -256,9 +243,10 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
256
243
|
}
|
|
257
244
|
}
|
|
258
245
|
async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
259
|
-
const
|
|
260
|
-
const
|
|
261
|
-
const
|
|
246
|
+
const esbuildCache = {};
|
|
247
|
+
const interfaceFilesAll = await loadInterfaceFiles(userRootDir, esbuildCache);
|
|
248
|
+
const configDefinitionsResolved = await resolveConfigDefinitions(interfaceFilesAll, userRootDir, esbuildCache);
|
|
249
|
+
const { pageConfigGlobal, pageConfigs } = getPageConfigs(configDefinitionsResolved, interfaceFilesAll, userRootDir);
|
|
262
250
|
// interop vike(options) in vite.config.js
|
|
263
251
|
temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
|
|
264
252
|
// global
|
|
@@ -266,189 +254,138 @@ async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
|
266
254
|
const global = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues });
|
|
267
255
|
return { pageConfigs, pageConfigGlobal, global };
|
|
268
256
|
}
|
|
269
|
-
async function
|
|
270
|
-
|
|
271
|
-
//
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
false,
|
|
289
|
-
[
|
|
290
|
-
`${interfaceFile.filePath.filePathToShowToUser} defines the config ${pc.cyan(
|
|
291
|
-
configName
|
|
292
|
-
)} which is global:`,
|
|
293
|
-
globalPaths.length
|
|
294
|
-
? `define ${pc.cyan(configName)} in ${joinEnglish(globalPaths, 'or')} instead`
|
|
295
|
-
: `create a global config (e.g. /pages/+config.js) and define ${pc.cyan(configName)} there instead`
|
|
296
|
-
].join(' ')
|
|
297
|
-
)
|
|
298
|
-
}
|
|
299
|
-
})
|
|
300
|
-
})
|
|
301
|
-
})
|
|
302
|
-
}
|
|
303
|
-
//*/
|
|
304
|
-
}
|
|
305
|
-
function temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir) {
|
|
306
|
-
(0, utils_js_1.assert)((0, utils_js_1.isObject)(vikeVitePluginOptions));
|
|
307
|
-
(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 });
|
|
308
|
-
Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
|
|
309
|
-
var _a;
|
|
310
|
-
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltInGlobal), configName));
|
|
311
|
-
const configDef = configDefinitionsBuiltInGlobal[configName];
|
|
312
|
-
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
313
|
-
sources.push({
|
|
314
|
-
value,
|
|
315
|
-
configEnv: configDef.env,
|
|
316
|
-
definedAtFilePath: {
|
|
317
|
-
...(0, getFilePath_js_1.getFilePathResolved)({
|
|
318
|
-
userRootDir,
|
|
319
|
-
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
320
|
-
}),
|
|
321
|
-
fileExportPathToShowToUser: null
|
|
322
|
-
},
|
|
323
|
-
locationId: '/',
|
|
324
|
-
interfaceFile: null,
|
|
325
|
-
isOverriden: configDef.cumulative ? false : sources.length > 0,
|
|
326
|
-
valueIsImportedAtRuntime: false,
|
|
327
|
-
valueIsDefinedByPlusFile: false
|
|
328
|
-
});
|
|
329
|
-
});
|
|
257
|
+
async function resolveConfigDefinitions(interfaceFilesAll, userRootDir, esbuildCache) {
|
|
258
|
+
const configDefinitionsGlobal = getConfigDefinitions(
|
|
259
|
+
// We use `interfaceFilesAll` in order to allow local Vike extensions to create global configs.
|
|
260
|
+
interfaceFilesAll, // TODO/now sort
|
|
261
|
+
(configDef) => !!configDef.global);
|
|
262
|
+
await loadCustomConfigBuildTimeFiles(interfaceFilesAll, configDefinitionsGlobal, userRootDir, esbuildCache);
|
|
263
|
+
const configDefinitionsLocal = {};
|
|
264
|
+
await Promise.all((0, utils_js_1.objectEntries)(interfaceFilesAll).map(async ([locationId, interfaceFiles]) => {
|
|
265
|
+
const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesAll, locationId);
|
|
266
|
+
// configDefinitions = getConfigDefinitions(interfaceFilesRelevant, (configDef) => configDef.global !== true) // TODO/now
|
|
267
|
+
const configDefinitions = getConfigDefinitions(interfaceFilesRelevant);
|
|
268
|
+
await loadCustomConfigBuildTimeFiles(interfaceFiles, configDefinitions, userRootDir, esbuildCache);
|
|
269
|
+
configDefinitionsLocal[locationId] = { configDefinitions, interfaceFiles, interfaceFilesRelevant };
|
|
270
|
+
}));
|
|
271
|
+
const configDefinitionsResolved = {
|
|
272
|
+
configDefinitionsGlobal,
|
|
273
|
+
configDefinitionsLocal
|
|
274
|
+
};
|
|
275
|
+
return configDefinitionsResolved;
|
|
330
276
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
277
|
+
// Load value files (with `env.config===true`) of *custom* configs.
|
|
278
|
+
// - The value files of *built-in* configs are already loaded at `loadInterfaceFiles()`.
|
|
279
|
+
async function loadCustomConfigBuildTimeFiles(interfaceFiles, configDefinitions, userRootDir, esbuildCache) {
|
|
280
|
+
const interfaceFileList = Object.values(interfaceFiles).flat(1);
|
|
281
|
+
await Promise.all(interfaceFileList.map(async (interfaceFile) => {
|
|
282
|
+
if (interfaceFile.isValueFile) {
|
|
283
|
+
await (0, loadFileAtConfigTime_js_1.loadValueFile)(interfaceFile, configDefinitions, userRootDir, esbuildCache);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
await Promise.all(Object.entries(interfaceFile.pointerImportsByConfigName).map(async ([configName, pointerImport]) => {
|
|
287
|
+
await (0, loadFileAtConfigTime_js_1.loadPointerImport)(pointerImport, userRootDir, configName, configDefinitions, esbuildCache);
|
|
288
|
+
}));
|
|
289
|
+
}
|
|
335
290
|
}));
|
|
291
|
+
}
|
|
292
|
+
function getPageConfigs(configDefinitionsResolved, interfaceFilesAll, userRootDir) {
|
|
336
293
|
const pageConfigGlobal = {
|
|
337
|
-
configDefinitions:
|
|
338
|
-
interfaceFiles: interfaceFilesGlobal,
|
|
294
|
+
configDefinitions: configDefinitionsResolved.configDefinitionsGlobal,
|
|
339
295
|
configValueSources: {}
|
|
340
296
|
};
|
|
341
|
-
|
|
342
|
-
const sources =
|
|
343
|
-
|
|
344
|
-
|
|
297
|
+
(0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsGlobal).forEach(([configName, configDef]) => {
|
|
298
|
+
const sources = resolveConfigValueSources(configName, configDef,
|
|
299
|
+
// We use `interfaceFilesAll` in order to allow local Vike extensions to set the value of global configs (e.g. `vite`).
|
|
300
|
+
interfaceFilesAll, // TODO/now check sort order
|
|
301
|
+
userRootDir, true);
|
|
302
|
+
if (sources.length === 0)
|
|
345
303
|
return;
|
|
346
304
|
pageConfigGlobal.configValueSources[configName] = sources;
|
|
347
|
-
})
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
.filter(([_locationId, interfaceFiles]) => isDefiningPage(interfaceFiles))
|
|
351
|
-
.map(
|
|
352
|
-
const
|
|
353
|
-
const interfaceFilesRelevantList = Object.values(interfaceFilesRelevant).flat(1);
|
|
354
|
-
const configDefinitions = getConfigDefinitions(interfaceFilesRelevant);
|
|
355
|
-
// Load value files of `env.config===true` custom configs
|
|
356
|
-
await Promise.all(interfaceFilesRelevantList.map(async (interfaceFile) => {
|
|
357
|
-
if (!interfaceFile.isValueFile)
|
|
358
|
-
return;
|
|
359
|
-
const { configName } = interfaceFile;
|
|
360
|
-
if (isGlobalConfig(configName))
|
|
361
|
-
return;
|
|
362
|
-
const configDef = getConfigDefinition(configDefinitions, configName, interfaceFile.filePath.filePathToShowToUser);
|
|
363
|
-
if (!shouldBeLoadableAtBuildTime(configDef))
|
|
364
|
-
return;
|
|
365
|
-
const isAlreadyLoaded = interfacefileIsAlreaydLoaded(interfaceFile);
|
|
366
|
-
if (isAlreadyLoaded)
|
|
367
|
-
return;
|
|
368
|
-
// Value files of built-in configs should have already been loaded at loadInterfaceFiles()
|
|
369
|
-
(0, utils_js_1.assert)(!(configName in configDefinitionsBuiltIn));
|
|
370
|
-
await (0, loadFileAtConfigTime_js_1.loadValueFile)(interfaceFile, configName, userRootDir);
|
|
371
|
-
}));
|
|
305
|
+
});
|
|
306
|
+
assertPageConfigGlobal(pageConfigGlobal, interfaceFilesAll);
|
|
307
|
+
const pageConfigs = (0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsLocal)
|
|
308
|
+
.filter(([_locationId, { interfaceFiles }]) => isDefiningPage(interfaceFiles))
|
|
309
|
+
.map(([locationId, { configDefinitions, interfaceFilesRelevant }]) => {
|
|
310
|
+
const configDefinitionsLocal = configDefinitions;
|
|
372
311
|
let configValueSources = {};
|
|
373
|
-
|
|
374
|
-
.filter(([
|
|
375
|
-
.
|
|
376
|
-
const sources =
|
|
312
|
+
(0, utils_js_1.objectEntries)(configDefinitionsLocal)
|
|
313
|
+
.filter(([_configName, configDef]) => configDef.global !== true)
|
|
314
|
+
.forEach(([configName, configDef]) => {
|
|
315
|
+
const sources = resolveConfigValueSources(configName, configDef, interfaceFilesRelevant, userRootDir, false);
|
|
377
316
|
if (sources.length === 0)
|
|
378
317
|
return;
|
|
318
|
+
// assertUsage(!isGlobalConfig(configName, configDefinitionsLocal, sources), 'TODO') // TODO/now
|
|
379
319
|
configValueSources[configName] = sources;
|
|
380
|
-
})
|
|
320
|
+
});
|
|
381
321
|
configValueSources = sortConfigValueSources(configValueSources, locationId);
|
|
382
322
|
const { routeFilesystem, isErrorPage } = determineRouteFilesystem(locationId, configValueSources);
|
|
383
|
-
applyEffectsAll(configValueSources,
|
|
384
|
-
const configValuesComputed = getComputed(configValueSources,
|
|
323
|
+
applyEffectsAll(configValueSources, configDefinitionsLocal);
|
|
324
|
+
const configValuesComputed = getComputed(configValueSources, configDefinitionsLocal);
|
|
385
325
|
const pageConfig = {
|
|
386
326
|
pageId: locationId,
|
|
387
327
|
isErrorPage,
|
|
388
328
|
routeFilesystem,
|
|
389
|
-
configDefinitions,
|
|
329
|
+
configDefinitions: configDefinitionsLocal,
|
|
390
330
|
interfaceFiles: interfaceFilesRelevant,
|
|
391
331
|
configValueSources,
|
|
392
332
|
configValuesComputed
|
|
393
333
|
};
|
|
394
|
-
|
|
395
|
-
})
|
|
396
|
-
assertPageConfigs(pageConfigs
|
|
334
|
+
return pageConfig;
|
|
335
|
+
});
|
|
336
|
+
assertPageConfigs(pageConfigs);
|
|
397
337
|
return { pageConfigs, pageConfigGlobal };
|
|
398
338
|
}
|
|
399
|
-
function
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
(0, assertExtensions_js_1.assertExtensionsRequire)(pageConfig);
|
|
403
|
-
assertOnBeforeRenderEnv(pageConfig);
|
|
339
|
+
function assertPageConfigGlobal(pageConfigGlobal, interfaceFilesAll) {
|
|
340
|
+
Object.entries(pageConfigGlobal.configValueSources).forEach(([configName, sources]) => {
|
|
341
|
+
assertGlobalConfigLocation(configName, sources, interfaceFilesAll, pageConfigGlobal.configDefinitions);
|
|
404
342
|
});
|
|
405
343
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
//
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
const
|
|
415
|
-
if (
|
|
416
|
-
|
|
344
|
+
function assertGlobalConfigLocation(configName, sources, interfaceFilesAll, configDefinitionsGlobal) {
|
|
345
|
+
const locationIdsAll = (0, utils_js_1.objectKeys)(interfaceFilesAll);
|
|
346
|
+
// Determine existing global +config.js files
|
|
347
|
+
const configFilePathsGlobal = [];
|
|
348
|
+
const interfaceFilesGlobal = Object.values((0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(interfaceFilesAll).filter(([locationId]) => (0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIdsAll)))).flat();
|
|
349
|
+
interfaceFilesGlobal
|
|
350
|
+
.filter((i) => i.isConfigFile)
|
|
351
|
+
.forEach((interfaceFile) => {
|
|
352
|
+
const { filePathAbsoluteUserRootDir } = interfaceFile.filePath;
|
|
353
|
+
if (filePathAbsoluteUserRootDir) {
|
|
354
|
+
configFilePathsGlobal.push(filePathAbsoluteUserRootDir);
|
|
417
355
|
}
|
|
418
|
-
|
|
419
|
-
|
|
356
|
+
});
|
|
357
|
+
// Call assertWarning()
|
|
358
|
+
sources.forEach((source) => {
|
|
359
|
+
const { interfaceFile } = source;
|
|
360
|
+
// It's `null` when the config is defined by `vike(options)` in vite.config.js
|
|
361
|
+
(0, utils_js_1.assert)(interfaceFile);
|
|
362
|
+
const { filePathAbsoluteUserRootDir } = interfaceFile.filePath;
|
|
363
|
+
// Allow local Vike extensions to set gloabl configs (`filePathAbsoluteUserRootDir===null` for Vike extension)
|
|
364
|
+
if (!filePathAbsoluteUserRootDir)
|
|
365
|
+
return;
|
|
366
|
+
(0, utils_js_1.assert)(!interfaceFile.isConfigExtension);
|
|
367
|
+
if (!(0, filesystemRouting_js_1.isGlobalLocation)(source.locationId, locationIdsAll)) {
|
|
368
|
+
const configDef = configDefinitionsGlobal[configName];
|
|
369
|
+
(0, utils_js_1.assert)(configDef);
|
|
370
|
+
const isConditionallyGlobal = (0, utils_js_1.isCallable)(configDef.global);
|
|
371
|
+
const errBeg = `${filePathAbsoluteUserRootDir} (which is a local config file) sets the config ${picocolors_1.default.cyan(configName)}`;
|
|
372
|
+
const errMid = !isConditionallyGlobal
|
|
373
|
+
? "but it's a global config"
|
|
374
|
+
: 'to a value that is global';
|
|
375
|
+
const what = isConditionallyGlobal ? 'global values' : picocolors_1.default.cyan(configName);
|
|
376
|
+
const errEnd = configFilePathsGlobal.length > 0
|
|
377
|
+
? `define ${what} at a global config file such as ${(0, utils_js_1.joinEnglish)(configFilePathsGlobal, 'or')} instead`
|
|
378
|
+
: `create a global config file (e.g. /pages/+config.js) and define ${what} there instead`;
|
|
379
|
+
// When updating this error message => also update error message at https://vike.dev/warning/global-config
|
|
380
|
+
const errMsg = `${errBeg} ${errMid}: ${errEnd} (https://vike.dev/warning/global-config).`;
|
|
381
|
+
(0, utils_js_1.assertWarning)(false, errMsg, { onlyOnce: true });
|
|
420
382
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
if (!(0, filesystemRouting_js_1.isGlobalLocation)(interfaceFile.locationId, locationIds)) {
|
|
428
|
-
const interfaceFilesGlobal = (0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(interfaceFilesAll).filter(([locationId]) => {
|
|
429
|
-
return (0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds);
|
|
430
|
-
}));
|
|
431
|
-
const configFilesGlobal = [];
|
|
432
|
-
(0, utils_js_1.objectEntries)(interfaceFilesGlobal).forEach(([locationId, interfaceFiles]) => {
|
|
433
|
-
(0, utils_js_1.assert)((0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds));
|
|
434
|
-
interfaceFiles.forEach((interfaceFile) => {
|
|
435
|
-
if (!interfaceFile.isConfigFile)
|
|
436
|
-
return;
|
|
437
|
-
const { filePath: { filePathAbsoluteUserRootDir } } = interfaceFile;
|
|
438
|
-
if (filePathAbsoluteUserRootDir) {
|
|
439
|
-
configFilesGlobal.push(filePathAbsoluteUserRootDir);
|
|
440
|
-
}
|
|
441
|
-
});
|
|
442
|
-
});
|
|
443
|
-
(0, utils_js_1.assertUsage)(false, [
|
|
444
|
-
`${interfaceFile.filePath.filePathToShowToUser} sets the config ${picocolors_1.default.cyan(configName)} but it's a global config:`,
|
|
445
|
-
configFilesGlobal.length > 0
|
|
446
|
-
? `define ${picocolors_1.default.cyan(configName)} at ${(0, utils_js_1.joinEnglish)(configFilesGlobal, 'or')} instead.`
|
|
447
|
-
: `create a global config (e.g. /pages/+config.js) and define ${picocolors_1.default.cyan(configName)} there instead.`
|
|
448
|
-
].join(' '));
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
});
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
function assertPageConfigs(pageConfigs) {
|
|
386
|
+
pageConfigs.forEach((pageConfig) => {
|
|
387
|
+
(0, assertExtensions_js_1.assertExtensionsRequire)(pageConfig);
|
|
388
|
+
assertOnBeforeRenderEnv(pageConfig);
|
|
452
389
|
});
|
|
453
390
|
}
|
|
454
391
|
function assertOnBeforeRenderEnv(pageConfig) {
|
|
@@ -488,13 +425,31 @@ function getConfigValues(pageConfig) {
|
|
|
488
425
|
});
|
|
489
426
|
return configValues;
|
|
490
427
|
}
|
|
491
|
-
function
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
428
|
+
function temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir) {
|
|
429
|
+
(0, utils_js_1.assert)((0, utils_js_1.isObject)(vikeVitePluginOptions));
|
|
430
|
+
(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 });
|
|
431
|
+
Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
|
|
432
|
+
var _a;
|
|
433
|
+
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltInAll), configName));
|
|
434
|
+
const configDef = configDefinitionsBuiltIn_js_1.configDefinitionsBuiltInAll[configName];
|
|
435
|
+
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
436
|
+
sources.push({
|
|
437
|
+
value,
|
|
438
|
+
configEnv: configDef.env,
|
|
439
|
+
definedAtFilePath: {
|
|
440
|
+
...(0, getFilePath_js_1.getFilePathResolved)({
|
|
441
|
+
userRootDir,
|
|
442
|
+
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
443
|
+
}),
|
|
444
|
+
fileExportPathToShowToUser: null
|
|
445
|
+
},
|
|
446
|
+
locationId: '/',
|
|
447
|
+
interfaceFile: null,
|
|
448
|
+
isOverriden: configDef.cumulative ? false : sources.length > 0,
|
|
449
|
+
valueIsImportedAtRuntime: false,
|
|
450
|
+
valueIsDefinedByPlusFile: false
|
|
451
|
+
});
|
|
452
|
+
});
|
|
498
453
|
}
|
|
499
454
|
function getInterfaceFilesRelevant(interfaceFilesAll, locationIdPage) {
|
|
500
455
|
const interfaceFilesRelevant = Object.fromEntries((0, utils_js_1.objectEntries)(interfaceFilesAll)
|
|
@@ -504,26 +459,19 @@ function getInterfaceFilesRelevant(interfaceFilesAll, locationIdPage) {
|
|
|
504
459
|
.sort(([locationId1], [locationId2]) => (0, filesystemRouting_js_1.sortAfterInheritanceOrder)(locationId1, locationId2, locationIdPage)));
|
|
505
460
|
return interfaceFilesRelevant;
|
|
506
461
|
}
|
|
507
|
-
|
|
508
|
-
const
|
|
462
|
+
function resolveConfigValueSources(configName, configDef, interfaceFilesRelevant, userRootDir, isGlobal) {
|
|
463
|
+
const interfaceFilesSource = [];
|
|
509
464
|
// interfaceFilesRelevant is sorted by sortAfterInheritanceOrder()
|
|
510
465
|
for (const interfaceFiles of Object.values(interfaceFilesRelevant)) {
|
|
511
|
-
const interfaceFilesDefiningConfig = interfaceFiles.filter((interfaceFile) => interfaceFile.
|
|
466
|
+
const interfaceFilesDefiningConfig = interfaceFiles.filter((interfaceFile) => getDefiningConfigNames(interfaceFile).includes(configName));
|
|
512
467
|
if (interfaceFilesDefiningConfig.length === 0)
|
|
513
468
|
continue;
|
|
514
469
|
const visited = new WeakSet();
|
|
515
470
|
const add = (interfaceFile) => {
|
|
516
471
|
(0, utils_js_1.assert)(!visited.has(interfaceFile));
|
|
517
472
|
visited.add(interfaceFile);
|
|
518
|
-
const isHighestInheritancePrecedence =
|
|
519
|
-
|
|
520
|
-
configName,
|
|
521
|
-
interfaceFile,
|
|
522
|
-
configDef,
|
|
523
|
-
userRootDir,
|
|
524
|
-
importedFilesLoaded,
|
|
525
|
-
isHighestInheritancePrecedence
|
|
526
|
-
]);
|
|
473
|
+
const isHighestInheritancePrecedence = interfaceFilesSource.length === 0;
|
|
474
|
+
interfaceFilesSource.push({ interfaceFile, isHighestInheritancePrecedence });
|
|
527
475
|
};
|
|
528
476
|
// Main resolution logic
|
|
529
477
|
{
|
|
@@ -534,8 +482,8 @@ async function resolveConfigValueSources(configName, configDef, interfaceFilesRe
|
|
|
534
482
|
.sort(makeOrderDeterministic);
|
|
535
483
|
const interfaceConfigFiles = interfaceFilesDefiningConfig
|
|
536
484
|
.filter((interfaceFile) => interfaceFile.isConfigFile &&
|
|
537
|
-
// We consider
|
|
538
|
-
!interfaceFile.
|
|
485
|
+
// We consider values from extensions (e.g. vike-react) later (i.e. with less priority)
|
|
486
|
+
!interfaceFile.isConfigExtension)
|
|
539
487
|
.sort(makeOrderDeterministic);
|
|
540
488
|
const interfaceValueFile = interfaceValueFiles[0];
|
|
541
489
|
const interfaceConfigFile = interfaceConfigFiles[0];
|
|
@@ -563,8 +511,8 @@ async function resolveConfigValueSources(configName, configDef, interfaceFilesRe
|
|
|
563
511
|
});
|
|
564
512
|
// extends
|
|
565
513
|
interfaceFilesDefiningConfig
|
|
566
|
-
.filter((interfaceFile) => interfaceFile.isConfigFile && interfaceFile.
|
|
567
|
-
//
|
|
514
|
+
.filter((interfaceFile) => interfaceFile.isConfigFile && interfaceFile.isConfigExtension)
|
|
515
|
+
// Extension config files are already sorted by inheritance order
|
|
568
516
|
.forEach((interfaceFile) => {
|
|
569
517
|
add(interfaceFile);
|
|
570
518
|
});
|
|
@@ -572,31 +520,26 @@ async function resolveConfigValueSources(configName, configDef, interfaceFilesRe
|
|
|
572
520
|
(0, utils_js_1.assert)(visited.has(interfaceFile));
|
|
573
521
|
});
|
|
574
522
|
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
function makeOrderDeterministic(interfaceFile1, interfaceFile2) {
|
|
579
|
-
return (0, utils_js_1.lowerFirst)((interfaceFile) => {
|
|
580
|
-
const { filePathAbsoluteUserRootDir } = interfaceFile.filePath;
|
|
581
|
-
(0, utils_js_1.assert)(isInterfaceFileUserLand(interfaceFile));
|
|
582
|
-
(0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
|
|
583
|
-
return filePathAbsoluteUserRootDir.length;
|
|
584
|
-
})(interfaceFile1, interfaceFile2);
|
|
585
|
-
}
|
|
586
|
-
function warnOverridenConfigValues(interfaceFileWinner, interfaceFilesOverriden, configName) {
|
|
587
|
-
interfaceFilesOverriden.forEach((interfaceFileLoser) => {
|
|
588
|
-
const loserFilePath = interfaceFileLoser.filePath.filePathToShowToUser;
|
|
589
|
-
const winnerFilePath = interfaceFileWinner.filePath.filePathToShowToUser;
|
|
590
|
-
const confName = picocolors_1.default.cyan(configName);
|
|
591
|
-
(0, utils_js_1.assertWarning)(false, `The value of the config ${confName} defined at ${loserFilePath} is always overwritten by the value defined at ${winnerFilePath}, remove the superfluous value defined at ${loserFilePath}`, { onlyOnce: true });
|
|
523
|
+
let sources = interfaceFilesSource.map(({ interfaceFile, isHighestInheritancePrecedence }) => {
|
|
524
|
+
const configValueSource = getConfigValueSource(configName, interfaceFile, configDef, userRootDir, isHighestInheritancePrecedence);
|
|
525
|
+
return configValueSource;
|
|
592
526
|
});
|
|
527
|
+
if ((0, utils_js_1.isCallable)(configDef.global)) {
|
|
528
|
+
const isGlobalValue = configDef.global;
|
|
529
|
+
(0, utils_js_1.assert)(configDef.env.config);
|
|
530
|
+
sources = sources.filter((source) => {
|
|
531
|
+
(0, utils_js_1.assert)(source.configEnv.config);
|
|
532
|
+
// TODO/now: source.valueIsDefined
|
|
533
|
+
(0, utils_js_1.assert)('value' in source);
|
|
534
|
+
const valueIsGlobal = isGlobalValue(source.value);
|
|
535
|
+
return isGlobal ? valueIsGlobal : !valueIsGlobal;
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
return sources;
|
|
593
539
|
}
|
|
594
|
-
function
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
async function getConfigValueSource(configName, interfaceFile, configDef, userRootDir, importedFilesLoaded, isHighestInheritancePrecedence) {
|
|
598
|
-
const conf = interfaceFile.fileExportsByConfigName[configName];
|
|
599
|
-
(0, utils_js_1.assert)(conf);
|
|
540
|
+
function getConfigValueSource(configName, interfaceFile, configDef, userRootDir, isHighestInheritancePrecedence) {
|
|
541
|
+
const confVal = getConfVal(interfaceFile, configName);
|
|
542
|
+
(0, utils_js_1.assert)(confVal);
|
|
600
543
|
const configValueSourceCommon = {
|
|
601
544
|
locationId: interfaceFile.locationId,
|
|
602
545
|
interfaceFile
|
|
@@ -612,11 +555,12 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
|
|
|
612
555
|
let valueFilePath;
|
|
613
556
|
if (interfaceFile.isConfigFile) {
|
|
614
557
|
// Defined over pointer import
|
|
615
|
-
|
|
558
|
+
(0, utils_js_1.assert)(confVal.configValueLoaded);
|
|
559
|
+
const pointerImport = (0, resolvePointerImport_js_1.resolvePointerImport)(confVal.configValue, interfaceFile.filePath, userRootDir, configName);
|
|
616
560
|
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, definedAtFilePath_);
|
|
617
|
-
(0, utils_js_1.assertUsage)(
|
|
618
|
-
valueFilePath =
|
|
619
|
-
definedAtFilePath =
|
|
561
|
+
(0, utils_js_1.assertUsage)(pointerImport, `${configDefinedAt} should be an import`);
|
|
562
|
+
valueFilePath = pointerImport.fileExportPath.filePathAbsoluteVite;
|
|
563
|
+
definedAtFilePath = pointerImport.fileExportPath;
|
|
620
564
|
}
|
|
621
565
|
else {
|
|
622
566
|
// Defined by value file, i.e. +{configName}.js
|
|
@@ -641,31 +585,22 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
|
|
|
641
585
|
}
|
|
642
586
|
// +config.js
|
|
643
587
|
if (interfaceFile.isConfigFile) {
|
|
644
|
-
(0, utils_js_1.assert)(
|
|
645
|
-
const { configValue } =
|
|
588
|
+
(0, utils_js_1.assert)(confVal.configValueLoaded);
|
|
589
|
+
const { configValue } = confVal;
|
|
646
590
|
// Defined over pointer import
|
|
647
|
-
const
|
|
648
|
-
if (
|
|
591
|
+
const pointerImport = interfaceFile.pointerImportsByConfigName[configName];
|
|
592
|
+
if (pointerImport) {
|
|
649
593
|
const configValueSource = {
|
|
650
594
|
...configValueSourceCommon,
|
|
651
|
-
configEnv:
|
|
595
|
+
configEnv: resolveConfigEnv(configDef.env, pointerImport.fileExportPath),
|
|
652
596
|
valueIsImportedAtRuntime: true,
|
|
653
597
|
valueIsDefinedByPlusFile: false,
|
|
654
598
|
isOverriden,
|
|
655
|
-
definedAtFilePath:
|
|
599
|
+
definedAtFilePath: pointerImport.fileExportPath
|
|
656
600
|
};
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
configName !== 'extends') {
|
|
661
|
-
if (resolved.pointerImport.filePathAbsoluteFilesystem) {
|
|
662
|
-
const fileExport = await (0, loadFileAtConfigTime_js_1.loadImportedFile)(resolved.pointerImport, userRootDir, importedFilesLoaded);
|
|
663
|
-
configValueSource.value = fileExport;
|
|
664
|
-
}
|
|
665
|
-
else {
|
|
666
|
-
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, configValueSource.definedAtFilePath);
|
|
667
|
-
(0, utils_js_1.assertUsage)(!configDef.cumulative, `${configDefinedAt} cannot be defined over an aliased import`);
|
|
668
|
-
}
|
|
601
|
+
if (pointerImport.fileExportValueLoaded) {
|
|
602
|
+
configValueSource.value = pointerImport.fileExportValue;
|
|
603
|
+
(0, utils_js_1.assert)('fileExportValue' in pointerImport);
|
|
669
604
|
}
|
|
670
605
|
return configValueSource;
|
|
671
606
|
}
|
|
@@ -683,8 +618,8 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
|
|
|
683
618
|
}
|
|
684
619
|
// Defined by value file, i.e. +{configName}.js
|
|
685
620
|
if (interfaceFile.isValueFile) {
|
|
686
|
-
const configEnvResolved = (
|
|
687
|
-
const valueAlreadyLoaded =
|
|
621
|
+
const configEnvResolved = resolveConfigEnv(configDef.env, interfaceFile.filePath);
|
|
622
|
+
const valueAlreadyLoaded = confVal.configValueLoaded;
|
|
688
623
|
(0, utils_js_1.assert)(valueAlreadyLoaded === !!configEnvResolved.config);
|
|
689
624
|
const configValueSource = {
|
|
690
625
|
...configValueSourceCommon,
|
|
@@ -701,15 +636,34 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
|
|
|
701
636
|
}
|
|
702
637
|
};
|
|
703
638
|
if (valueAlreadyLoaded) {
|
|
704
|
-
configValueSource.value =
|
|
639
|
+
configValueSource.value = confVal.configValue;
|
|
705
640
|
}
|
|
706
641
|
return configValueSource;
|
|
707
642
|
}
|
|
708
643
|
(0, utils_js_1.assert)(false);
|
|
709
644
|
}
|
|
645
|
+
function makeOrderDeterministic(interfaceFile1, interfaceFile2) {
|
|
646
|
+
return (0, utils_js_1.lowerFirst)((interfaceFile) => {
|
|
647
|
+
const { filePathAbsoluteUserRootDir } = interfaceFile.filePath;
|
|
648
|
+
(0, utils_js_1.assert)(isInterfaceFileUserLand(interfaceFile));
|
|
649
|
+
(0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
|
|
650
|
+
return filePathAbsoluteUserRootDir.length;
|
|
651
|
+
})(interfaceFile1, interfaceFile2);
|
|
652
|
+
}
|
|
653
|
+
function warnOverridenConfigValues(interfaceFileWinner, interfaceFilesOverriden, configName) {
|
|
654
|
+
interfaceFilesOverriden.forEach((interfaceFileLoser) => {
|
|
655
|
+
const loserFilePath = interfaceFileLoser.filePath.filePathToShowToUser;
|
|
656
|
+
const winnerFilePath = interfaceFileWinner.filePath.filePathToShowToUser;
|
|
657
|
+
const confName = picocolors_1.default.cyan(configName);
|
|
658
|
+
(0, utils_js_1.assertWarning)(false, `The value of the config ${confName} defined at ${loserFilePath} is always overwritten by the value defined at ${winnerFilePath}, remove the superfluous value defined at ${loserFilePath}`, { onlyOnce: true });
|
|
659
|
+
});
|
|
660
|
+
}
|
|
661
|
+
function isInterfaceFileUserLand(interfaceFile) {
|
|
662
|
+
return (interfaceFile.isConfigFile && !interfaceFile.isConfigExtension) || interfaceFile.isValueFile;
|
|
663
|
+
}
|
|
710
664
|
function isDefiningPage(interfaceFiles) {
|
|
711
665
|
for (const interfaceFile of interfaceFiles) {
|
|
712
|
-
const configNames =
|
|
666
|
+
const configNames = getDefiningConfigNames(interfaceFile);
|
|
713
667
|
if (configNames.some((configName) => isDefiningPageConfig(configName))) {
|
|
714
668
|
return true;
|
|
715
669
|
}
|
|
@@ -719,16 +673,29 @@ function isDefiningPage(interfaceFiles) {
|
|
|
719
673
|
function isDefiningPageConfig(configName) {
|
|
720
674
|
return ['Page', 'route'].includes(configName);
|
|
721
675
|
}
|
|
722
|
-
function
|
|
723
|
-
|
|
676
|
+
function getDefiningConfigNames(interfaceFile) {
|
|
677
|
+
let configNames = [];
|
|
678
|
+
if (interfaceFile.isValueFile) {
|
|
679
|
+
configNames.push(interfaceFile.configName);
|
|
680
|
+
}
|
|
681
|
+
if (interfaceFile.isValueFileLoaded) {
|
|
682
|
+
configNames.push(...Object.keys(interfaceFile.fileExportsByConfigName));
|
|
683
|
+
}
|
|
684
|
+
configNames = (0, utils_js_1.unique)(configNames);
|
|
685
|
+
return configNames;
|
|
686
|
+
}
|
|
687
|
+
function getConfigDefinitions(interfaceFilesRelevant, filter) {
|
|
688
|
+
let configDefinitions = { ...configDefinitionsBuiltIn_js_1.configDefinitionsBuiltInAll };
|
|
689
|
+
// Add user-land meta configs
|
|
724
690
|
Object.entries(interfaceFilesRelevant)
|
|
725
691
|
.reverse()
|
|
726
692
|
.forEach(([_locationId, interfaceFiles]) => {
|
|
727
693
|
interfaceFiles.forEach((interfaceFile) => {
|
|
728
|
-
const
|
|
729
|
-
if (!
|
|
694
|
+
const confVal = getConfVal(interfaceFile, 'meta');
|
|
695
|
+
if (!confVal)
|
|
730
696
|
return;
|
|
731
|
-
|
|
697
|
+
(0, utils_js_1.assert)(confVal.configValueLoaded);
|
|
698
|
+
const meta = confVal.configValue;
|
|
732
699
|
assertMetaUsage(meta, `Config ${picocolors_1.default.cyan('meta')} defined at ${interfaceFile.filePath.filePathToShowToUser}`);
|
|
733
700
|
// Set configDef._userEffectDefinedAtFilePath
|
|
734
701
|
Object.entries(meta).forEach(([configName, configDef]) => {
|
|
@@ -740,16 +707,18 @@ function getConfigDefinitions(interfaceFilesRelevant) {
|
|
|
740
707
|
fileExportPathToShowToUser: ['default', 'meta', configName, 'effect']
|
|
741
708
|
};
|
|
742
709
|
});
|
|
743
|
-
(0, utils_js_1.objectEntries)(meta).forEach(([configName,
|
|
710
|
+
(0, utils_js_1.objectEntries)(meta).forEach(([configName, configDefinitionUserLand]) => {
|
|
744
711
|
// User can override an existing config definition
|
|
745
|
-
|
|
746
|
-
...
|
|
747
|
-
...
|
|
712
|
+
configDefinitions[configName] = {
|
|
713
|
+
...configDefinitions[configName],
|
|
714
|
+
...configDefinitionUserLand
|
|
748
715
|
};
|
|
749
716
|
});
|
|
750
717
|
});
|
|
751
718
|
});
|
|
752
|
-
|
|
719
|
+
if (filter) {
|
|
720
|
+
configDefinitions = Object.fromEntries(Object.entries(configDefinitions).filter(([_configName, configDef]) => filter(configDef)));
|
|
721
|
+
}
|
|
753
722
|
return configDefinitions;
|
|
754
723
|
}
|
|
755
724
|
function assertMetaUsage(metaVal, metaConfigDefinedAt) {
|
|
@@ -903,10 +872,35 @@ function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
|
|
|
903
872
|
)
|
|
904
873
|
}
|
|
905
874
|
*/
|
|
906
|
-
|
|
875
|
+
// Show error message upon unknown config
|
|
876
|
+
function assertKnownConfigs(interfaceFilesAll) {
|
|
877
|
+
const configDefinitionsAll = getConfigDefinitions(interfaceFilesAll);
|
|
878
|
+
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
879
|
+
(0, utils_js_1.objectEntries)(interfaceFilesAll).forEach(([locationId, interfaceFiles]) => {
|
|
880
|
+
const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesAll, locationId);
|
|
881
|
+
const configDefinitionsLocal = getConfigDefinitions(interfaceFilesRelevant);
|
|
882
|
+
const configNamesKnownLocal = Object.keys(configDefinitionsLocal);
|
|
883
|
+
interfaceFiles.forEach((interfaceFile) => {
|
|
884
|
+
const configNames = getDefiningConfigNames(interfaceFile);
|
|
885
|
+
configNames.forEach((configName) => {
|
|
886
|
+
assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLocal, interfaceFile);
|
|
887
|
+
(0, utils_js_1.assert)(configNamesKnownLocal.includes(configName));
|
|
888
|
+
(0, utils_js_1.assert)(configNamesKnownAll.includes(configName));
|
|
889
|
+
});
|
|
890
|
+
});
|
|
891
|
+
});
|
|
892
|
+
}
|
|
893
|
+
function assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLocal, interfaceFile) {
|
|
894
|
+
if (configNamesKnownLocal.includes(configName))
|
|
895
|
+
return;
|
|
907
896
|
const configNameColored = picocolors_1.default.cyan(configName);
|
|
908
|
-
|
|
909
|
-
|
|
897
|
+
const { locationId, filePath: { filePathToShowToUser } } = interfaceFile;
|
|
898
|
+
const errMsg = `${filePathToShowToUser} sets an unknown config ${configNameColored}`;
|
|
899
|
+
// Inheritance issue: config is known but isn't defined at `locationId`
|
|
900
|
+
if (configNamesKnownAll.includes(configName)) {
|
|
901
|
+
(0, utils_js_1.assertUsage)(false, `${filePathToShowToUser} 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')}`);
|
|
902
|
+
}
|
|
903
|
+
// Missing vike-{react,vue,solid} installation
|
|
910
904
|
{
|
|
911
905
|
const ui = ['vike-react', 'vike-vue', 'vike-solid'];
|
|
912
906
|
const knownVikeExntensionConfigs = {
|
|
@@ -921,15 +915,11 @@ function handleUnknownConfig(configName, configNames, filePathToShowToUser) {
|
|
|
921
915
|
Wrapper: ui
|
|
922
916
|
};
|
|
923
917
|
if (configName in knownVikeExntensionConfigs) {
|
|
924
|
-
const requiredVikeExtension = knownVikeExntensionConfigs[configName]
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
.join('/')}.`,
|
|
930
|
-
`Also make sure it applies to ${filePathToShowToUser} (see https://vike.dev/extends#inheritance).`,
|
|
931
|
-
`Alternatively, if you don't want to use the aforementioned Vike extension, define it yourself by using ${picocolors_1.default.cyan('meta')} (https://vike.dev/meta).`
|
|
932
|
-
].join(' '));
|
|
918
|
+
const requiredVikeExtension = knownVikeExntensionConfigs[configName]
|
|
919
|
+
.map((e) => picocolors_1.default.bold(e))
|
|
920
|
+
.join('/');
|
|
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.)`;
|
|
922
|
+
(0, utils_js_1.assertUsage)(false, errMsgEnhanced);
|
|
933
923
|
}
|
|
934
924
|
}
|
|
935
925
|
// Similarity hint
|
|
@@ -938,18 +928,15 @@ function handleUnknownConfig(configName, configNames, filePathToShowToUser) {
|
|
|
938
928
|
configNameSimilar = 'Page';
|
|
939
929
|
}
|
|
940
930
|
else {
|
|
941
|
-
configNameSimilar = (0, utils_js_1.getMostSimilar)(configName,
|
|
931
|
+
configNameSimilar = (0, utils_js_1.getMostSimilar)(configName, configNamesKnownAll);
|
|
942
932
|
}
|
|
943
933
|
if (configNameSimilar) {
|
|
944
934
|
(0, utils_js_1.assert)(configNameSimilar !== configName);
|
|
945
|
-
|
|
935
|
+
let errMsgEnhanced = `${errMsg}. Did you mean ${picocolors_1.default.cyan(configNameSimilar)} instead?`;
|
|
946
936
|
if (configName === 'page') {
|
|
947
|
-
|
|
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.)`;
|
|
948
938
|
}
|
|
949
|
-
|
|
950
|
-
// `meta` hint
|
|
951
|
-
if (!configNameSimilar) {
|
|
952
|
-
errMsg += ` Make sure to define ${configNameColored} by using ${picocolors_1.default.cyan('meta')} (https://vike.dev/meta), and also make sure the meta configuration applies to ${filePathToShowToUser} (see https://vike.dev/config#inheritance).`;
|
|
939
|
+
(0, utils_js_1.assertUsage)(false, errMsgEnhanced);
|
|
953
940
|
}
|
|
954
941
|
(0, utils_js_1.assertUsage)(false, errMsg);
|
|
955
942
|
}
|
|
@@ -1036,52 +1023,9 @@ function getConfigEnvValue(val, errMsgIntro) {
|
|
|
1036
1023
|
*/
|
|
1037
1024
|
return val;
|
|
1038
1025
|
}
|
|
1039
|
-
function getConfigDefinition(configDefinitions, configName, filePathToShowToUser) {
|
|
1040
|
-
const configDef = configDefinitions[configName];
|
|
1041
|
-
assertConfigExists(configName, Object.keys(configDefinitions), filePathToShowToUser);
|
|
1042
|
-
(0, utils_js_1.assert)(configDef);
|
|
1043
|
-
return configDef;
|
|
1044
|
-
}
|
|
1045
1026
|
function getConfigDefinitionOptional(configDefinitions, configName) {
|
|
1046
1027
|
return configDefinitions[configName] ?? null;
|
|
1047
1028
|
}
|
|
1048
|
-
function shouldBeLoadableAtBuildTime(configDef) {
|
|
1049
|
-
return !!configDef.env.config && !configDef._valueIsFilePath;
|
|
1050
|
-
}
|
|
1051
|
-
function isGlobalConfig(configName) {
|
|
1052
|
-
// TODO/now
|
|
1053
|
-
if (configName === 'prerender')
|
|
1054
|
-
return false;
|
|
1055
|
-
const configNamesGlobal = getConfigNamesGlobal();
|
|
1056
|
-
return (0, utils_js_1.includes)(configNamesGlobal, configName);
|
|
1057
|
-
}
|
|
1058
|
-
/*
|
|
1059
|
-
// TODO/now
|
|
1060
|
-
function isGlobalConfig(configName: string, configDefinitions: ConfigDefinitions): configName is ConfigNameGlobal {
|
|
1061
|
-
const configSpec = configDefinitions[configName]
|
|
1062
|
-
assert(configSpec)
|
|
1063
|
-
const globalValue = configSpec.global
|
|
1064
|
-
if (!globalValue) return false
|
|
1065
|
-
if (globalValue === true ) return true
|
|
1066
|
-
return globalValue(value)
|
|
1067
|
-
}
|
|
1068
|
-
*/
|
|
1069
|
-
function getConfigNamesGlobal() {
|
|
1070
|
-
return Object.keys(configDefinitionsBuiltInGlobal);
|
|
1071
|
-
}
|
|
1072
|
-
function getConfigDefinitionsBuiltInGlobal() {
|
|
1073
|
-
return (0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltInAll).filter(([_configName, configDef]) => configDef.global !== undefined));
|
|
1074
|
-
}
|
|
1075
|
-
function getConfigDefinitionsBuiltIn() {
|
|
1076
|
-
return (0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltInAll).filter(([_configName, configDef]) => configDef.global !== true));
|
|
1077
|
-
}
|
|
1078
|
-
function assertConfigExists(configName, configNamesRelevant, filePathToShowToUser) {
|
|
1079
|
-
const configNames = [...configNamesRelevant, ...getConfigNamesGlobal()];
|
|
1080
|
-
if (configNames.includes(configName))
|
|
1081
|
-
return;
|
|
1082
|
-
handleUnknownConfig(configName, configNames, filePathToShowToUser);
|
|
1083
|
-
(0, utils_js_1.assert)(false);
|
|
1084
|
-
}
|
|
1085
1029
|
function sortConfigValueSources(configValueSources, locationIdPage) {
|
|
1086
1030
|
return Object.fromEntries(Object.entries(configValueSources)
|
|
1087
1031
|
// Make order deterministic (no other purpose)
|
|
@@ -1098,6 +1042,31 @@ function sortConfigValueSources(configValueSources, locationIdPage) {
|
|
|
1098
1042
|
// Sort after the filesystem inheritance of the config value
|
|
1099
1043
|
.sort(([, [source1]], [, [source2]]) => (0, utils_js_1.reverse)((0, filesystemRouting_js_1.sortAfterInheritanceOrder)(source1.locationId, source2.locationId, locationIdPage))));
|
|
1100
1044
|
}
|
|
1101
|
-
function
|
|
1102
|
-
|
|
1045
|
+
function getConfVal(interfaceFile, configName) {
|
|
1046
|
+
const configNames = getDefiningConfigNames(interfaceFile);
|
|
1047
|
+
if (!configNames.includes(configName))
|
|
1048
|
+
return null;
|
|
1049
|
+
if (!interfaceFile.isValueFileLoaded)
|
|
1050
|
+
return { configValueLoaded: false };
|
|
1051
|
+
const confVal = { configValue: interfaceFile.fileExportsByConfigName[configName], configValueLoaded: true };
|
|
1052
|
+
return confVal;
|
|
1053
|
+
}
|
|
1054
|
+
function resolveConfigEnv(configEnv, filePath) {
|
|
1055
|
+
const configEnvResolved = { ...configEnv };
|
|
1056
|
+
if (filePath.filePathAbsoluteFilesystem) {
|
|
1057
|
+
const { fileName } = filePath;
|
|
1058
|
+
if (fileName.includes('.server.')) {
|
|
1059
|
+
configEnvResolved.server = true;
|
|
1060
|
+
configEnvResolved.client = false;
|
|
1061
|
+
}
|
|
1062
|
+
else if (fileName.includes('.client.')) {
|
|
1063
|
+
configEnvResolved.client = true;
|
|
1064
|
+
configEnvResolved.server = false;
|
|
1065
|
+
}
|
|
1066
|
+
else if (fileName.includes('.shared.')) {
|
|
1067
|
+
configEnvResolved.server = true;
|
|
1068
|
+
configEnvResolved.client = true;
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
return configEnvResolved;
|
|
1103
1072
|
}
|