vike 0.4.259 → 0.4.260-commit-2e7fb2a
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/AGENTS.md +3 -0
- package/README.md +2 -0
- package/dist/client/runtime-client-routing/renderPageClient.js +1 -1
- package/dist/client/shared/getJsonSerializedInHtml.js +1 -10
- package/dist/node/api/build.js +6 -6
- package/dist/node/api/dev.d.ts +2 -10
- package/dist/node/api/dev.js +5 -52
- package/dist/node/api/prepareViteApiCall.d.ts +1 -1
- package/dist/node/api/prepareViteApiCall.js +2 -2
- package/dist/node/api/prerender.js +2 -2
- package/dist/node/api/preview.d.ts +2 -2
- package/dist/node/api/preview.js +15 -16
- package/dist/node/api/{resolveViteConfigFromUser.d.ts → resolveViteConfigUser.d.ts} +5 -5
- package/dist/node/api/{resolveViteConfigFromUser.js → resolveViteConfigUser.js} +100 -69
- package/dist/node/api/startupLog.d.ts +4 -0
- package/dist/node/api/{getStartupLogFirstLine.js → startupLog.js} +14 -1
- package/dist/node/api/types.d.ts +9 -0
- package/dist/node/cli/entry.js +1 -5
- package/dist/node/cli/parseCli.js +26 -12
- package/dist/node/createDevMiddleware.js +2 -2
- package/dist/node/prerender/runPrerender.d.ts +8 -2
- package/dist/node/prerender/runPrerender.js +3 -1
- package/dist/node/prerender/runPrerenderEntry.js +2 -2
- package/dist/node/vite/index.js +2 -2
- package/dist/node/vite/plugins/build/handleAssetsManifest.d.ts +2 -6
- package/dist/node/vite/plugins/build/handleAssetsManifest.js +16 -9
- package/dist/node/vite/plugins/build/pluginBuildApp.js +10 -5
- package/dist/node/vite/plugins/build/pluginBuildConfig.d.ts +6 -1
- package/dist/node/vite/plugins/build/pluginBuildConfig.js +13 -11
- package/dist/node/vite/plugins/build/pluginDistFileNames.js +1 -6
- package/dist/node/vite/plugins/build/pluginModuleBanner.js +2 -4
- package/dist/node/vite/plugins/pluginCommon.d.ts +1 -1
- package/dist/node/vite/plugins/pluginCommon.js +15 -7
- package/dist/node/vite/plugins/pluginDev/autoAddVikeSkill.d.ts +3 -0
- package/dist/node/vite/plugins/pluginDev/autoAddVikeSkill.js +174 -0
- package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +67 -31
- package/dist/node/vite/plugins/pluginDev.js +17 -0
- package/dist/node/vite/plugins/pluginStripPointerImportAttribute.js +31 -10
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +5 -7
- package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +2 -2
- package/dist/node/vite/plugins/pluginVirtualFiles.js +1 -1
- package/dist/node/vite/shared/addSsrMiddleware.js +1 -1
- package/dist/node/vite/shared/getMagicString.d.ts +1 -1
- package/dist/node/vite/shared/getMagicString.js +3 -0
- package/dist/node/vite/shared/isVite8OrAbove.d.ts +4 -0
- package/dist/node/vite/shared/isVite8OrAbove.js +9 -0
- package/dist/node/vite/shared/isViteCli.d.ts +9 -4
- package/dist/node/vite/shared/isViteCli.js +24 -4
- package/dist/node/vite/shared/loggerDev.js +6 -5
- package/dist/node/vite/shared/loggerVite.js +3 -2
- package/dist/node/vite/shared/resolveVikeConfigInternal/assertExtensions.d.ts +3 -1
- package/dist/node/vite/shared/resolveVikeConfigInternal/assertExtensions.js +6 -5
- package/dist/node/vite/shared/resolveVikeConfigInternal/{crawlPlusFilePaths.d.ts → crawlPlusFiles.d.ts} +2 -2
- package/dist/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +71 -0
- package/dist/node/vite/shared/resolveVikeConfigInternal/{getPlusFilesByLocationId.d.ts → getPlusFiles.d.ts} +5 -3
- package/dist/node/vite/shared/resolveVikeConfigInternal/{getPlusFilesByLocationId.js → getPlusFiles.js} +18 -17
- package/dist/node/vite/shared/resolveVikeConfigInternal/loadFileAtConfigTime.d.ts +1 -1
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +15 -15
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +19 -0
- package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +19 -4
- package/dist/node/vite/shared/resolveVikeConfigInternal.js +217 -76
- package/dist/server/runtime/globalContext.js +4 -1
- package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +12 -3
- package/dist/server/runtime/renderPageServer/html/injectAssets/getHtmlTags.js +2 -3
- package/dist/server/runtime/renderPageServer/html/injectAssets/injectHtmlTags.js +3 -1
- package/dist/server/runtime/renderPageServer/html/serializeContext.js +5 -10
- package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +8 -2
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +32 -8
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.js +1 -1
- package/dist/server/runtime/renderPageServer.d.ts +8 -2
- package/dist/server/runtime/renderPageServer.js +6 -4
- package/dist/shared-server-client/page-configs/serialize/serializeConfigValues.d.ts +3 -3
- package/dist/shared-server-client/page-configs/serialize/serializeConfigValues.js +8 -1
- package/dist/types/Config.d.ts +54 -6
- package/dist/types/PageConfig.d.ts +12 -10
- package/dist/types/PageContext.d.ts +8 -3
- package/dist/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/utils/PROJECT_VERSION.js +1 -1
- package/dist/utils/assert.d.ts +2 -0
- package/dist/utils/assert.js +8 -8
- package/dist/utils/assertViteVersion.js +1 -1
- package/dist/utils/crawlFiles/ignorePatternsBuiltIn.d.ts +1 -0
- package/dist/{node/vite/shared/resolveVikeConfigInternal/crawlPlusFilePaths → utils/crawlFiles}/ignorePatternsBuiltIn.js +1 -1
- package/dist/utils/crawlFiles.d.ts +21 -0
- package/dist/utils/crawlFiles.js +195 -0
- package/dist/utils/debug.d.ts +1 -1
- package/dist/utils/debug.js +1 -0
- package/dist/{node/vite/shared → utils}/getEnvVarObject.d.ts +0 -1
- package/dist/{node/vite/shared → utils}/getEnvVarObject.js +4 -3
- package/dist/utils/getViteRPC.js +1 -1
- package/dist/utils/objectMap.d.ts +2 -0
- package/dist/utils/objectMap.js +4 -0
- package/dist/utils/parseNpmPackage.js +4 -1
- package/dist/utils/pick.d.ts +1 -1
- package/dist/utils/setTimeoutUnref.d.ts +2 -0
- package/dist/utils/setTimeoutUnref.js +11 -0
- package/package.json +19 -21
- package/dist/node/api/getStartupLogFirstLine.d.ts +0 -7
- package/dist/node/vite/shared/resolveVikeConfigInternal/crawlPlusFilePaths/ignorePatternsBuiltIn.d.ts +0 -2
- package/dist/node/vite/shared/resolveVikeConfigInternal/crawlPlusFilePaths.js +0 -258
- package/dist/server/__internal/vite.d.ts +0 -2
- package/dist/server/__internal/vite.js +0 -2
- package/dist/server/runtime/renderPageServer/html/injectAssets/sanitizeJson.d.ts +0 -4
- package/dist/server/runtime/renderPageServer/html/injectAssets/sanitizeJson.js +0 -7
|
@@ -9,6 +9,7 @@ import { removeEmptyLines } from '../../../utils/removeEmptyLines.js';
|
|
|
9
9
|
import { trimWithAnsi, trimWithAnsiTrailOnly } from '../../../utils/trimWithAnsi.js';
|
|
10
10
|
import { assert } from '../../../utils/assert.js';
|
|
11
11
|
import { getGlobalObject } from '../../../utils/getGlobalObject.js';
|
|
12
|
+
import { setTimeoutUnref } from '../../../utils/setTimeoutUnref.js';
|
|
12
13
|
import { getRequestId_withAsyncHook } from '../../../server/runtime/asyncHook.js';
|
|
13
14
|
import { logErrorServerDev, logVite } from './loggerDev.js';
|
|
14
15
|
import '../assertEnvVite.js';
|
|
@@ -28,7 +29,7 @@ function interceptViteLogs(config) {
|
|
|
28
29
|
}
|
|
29
30
|
function intercept(loggerType, config) {
|
|
30
31
|
let isBeginning = true;
|
|
31
|
-
|
|
32
|
+
setTimeoutUnref(() => (isBeginning = false), 10 * 1000);
|
|
32
33
|
config.logger[loggerType] = (msg, options = {}) => {
|
|
33
34
|
assert(!isDebugError());
|
|
34
35
|
if (swallowViteLogForceOptimization(msg))
|
|
@@ -132,7 +133,7 @@ function swallowViteLogConnected() {
|
|
|
132
133
|
globalObject.swallowViteLogConnected_originalConsoleLog = console.log;
|
|
133
134
|
// The message `[vite] connected.` doesn't go through Vite's logger thus we must monkey patch console.log()
|
|
134
135
|
console.log = swallowViteLogConnected_logPatch;
|
|
135
|
-
|
|
136
|
+
setTimeoutUnref(swallowViteLogConnected_clean, 3000);
|
|
136
137
|
}
|
|
137
138
|
// Remove console.log() monkey patch
|
|
138
139
|
function swallowViteLogConnected_clean() {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { assertExtensionsConventions };
|
|
2
2
|
export { assertExtensionsRequire };
|
|
3
|
-
|
|
3
|
+
export { getExtensionName };
|
|
4
|
+
import type { PlusFile } from './getPlusFiles.js';
|
|
4
5
|
import '../../assertEnvVite.js';
|
|
5
6
|
declare function assertExtensionsConventions(plusFile: PlusFile): void;
|
|
6
7
|
declare function assertExtensionsRequire(plusFiles: PlusFile[]): void;
|
|
8
|
+
declare function getExtensionName(plusFile: PlusFile): null | string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { assertExtensionsConventions };
|
|
2
2
|
export { assertExtensionsRequire };
|
|
3
|
+
export { getExtensionName };
|
|
3
4
|
import pc from '@brillout/picocolors';
|
|
4
5
|
import { PROJECT_VERSION } from '../../../../utils/PROJECT_VERSION.js';
|
|
5
6
|
import { assert, assertUsage, assertWarning } from '../../../../utils/assert.js';
|
|
@@ -21,14 +22,14 @@ function assertConfigExportPath(plusFile) {
|
|
|
21
22
|
assert(!p.includes('node_modules'));
|
|
22
23
|
return;
|
|
23
24
|
}
|
|
24
|
-
const name =
|
|
25
|
+
const name = getExtensionName(plusFile);
|
|
25
26
|
assert(name); // already asserted in assertExtensionName()
|
|
26
27
|
const importPathAbsoluteExpected = `${name}/config`;
|
|
27
28
|
assertWarning(importPathAbsolute === importPathAbsoluteExpected, `The Vike configuration of ${pc.bold(name)} is exported at ${pc.bold(importPathAbsolute)}, but it should be exported at ${pc.bold(importPathAbsoluteExpected)} instead.`, { onlyOnce: true });
|
|
28
29
|
}
|
|
29
30
|
function assertExtensionName(plusFile) {
|
|
30
31
|
const filePathToShowToUser = getFilePathToShowToUser(plusFile);
|
|
31
|
-
const name =
|
|
32
|
+
const name = getExtensionName(plusFile);
|
|
32
33
|
assertUsage(name, `Vike extension name missing: the config ${filePathToShowToUser} must define the setting ${pc.cyan('name')}`);
|
|
33
34
|
}
|
|
34
35
|
function assertExtensionsRequire(plusFiles) {
|
|
@@ -36,7 +37,7 @@ function assertExtensionsRequire(plusFiles) {
|
|
|
36
37
|
// Collect extensions
|
|
37
38
|
const extensions = {};
|
|
38
39
|
plusFilesRelevantList.forEach((plusFile) => {
|
|
39
|
-
const name =
|
|
40
|
+
const name = getExtensionName(plusFile);
|
|
40
41
|
if (name) {
|
|
41
42
|
const version = getExtensionVersion(name, plusFile);
|
|
42
43
|
extensions[name] = version;
|
|
@@ -47,7 +48,7 @@ function assertExtensionsRequire(plusFiles) {
|
|
|
47
48
|
const require = resolveRequireSetting(plusFile);
|
|
48
49
|
if (!require)
|
|
49
50
|
return;
|
|
50
|
-
const name =
|
|
51
|
+
const name = getExtensionName(plusFile);
|
|
51
52
|
const filePathToShowToUser = getFilePathToShowToUser(plusFile);
|
|
52
53
|
assertUsage(name, `Setting ${pc.bold('name')} is required for being able to use setting ${pc.bold('require')} in ${filePathToShowToUser}.`);
|
|
53
54
|
Object.entries(require).forEach(([reqName, req]) => {
|
|
@@ -96,7 +97,7 @@ function resolveRequireSetting(plusFile) {
|
|
|
96
97
|
});
|
|
97
98
|
return requireSetting;
|
|
98
99
|
}
|
|
99
|
-
function
|
|
100
|
+
function getExtensionName(plusFile) {
|
|
100
101
|
const confVal = getConfVal(plusFile, 'name');
|
|
101
102
|
if (!confVal)
|
|
102
103
|
return null;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { crawlPlusFiles };
|
|
2
2
|
export { isPlusFile };
|
|
3
3
|
export { getPlusFileValueConfigName };
|
|
4
4
|
import '../../assertEnvVite.js';
|
|
5
|
-
declare function
|
|
5
|
+
declare function crawlPlusFiles(userRootDir: string): Promise<{
|
|
6
6
|
filePathAbsoluteUserRootDir: string;
|
|
7
7
|
}[]>;
|
|
8
8
|
declare function isPlusFile(filePath: string): boolean;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export { crawlPlusFiles };
|
|
2
|
+
export { isPlusFile };
|
|
3
|
+
export { getPlusFileValueConfigName };
|
|
4
|
+
import { assert, assertUsage } from '../../../../utils/assert.js';
|
|
5
|
+
import { assertFilePathAbsoluteFilesystem } from '../../../../utils/isFilePathAbsoluteFilesystem.js';
|
|
6
|
+
import { assertPosixPath } from '../../../../utils/path.js';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { isTemporaryBuildFile } from './transpileAndExecuteFile.js';
|
|
9
|
+
import '../../assertEnvVite.js';
|
|
10
|
+
import { crawlFiles } from '../../../../utils/crawlFiles.js';
|
|
11
|
+
import { scriptFileExtensionList } from '../../../../utils/isScriptFile.js';
|
|
12
|
+
import { assertIsNotProductionRuntime } from '../../../../utils/assertSetup.js';
|
|
13
|
+
assertIsNotProductionRuntime();
|
|
14
|
+
async function crawlPlusFiles(userRootDir) {
|
|
15
|
+
assertPosixPath(userRootDir);
|
|
16
|
+
assertFilePathAbsoluteFilesystem(userRootDir);
|
|
17
|
+
let files = await crawlFiles({
|
|
18
|
+
filePattern: '**/+*',
|
|
19
|
+
fileExtension: scriptFileExtensionList,
|
|
20
|
+
cwd: userRootDir,
|
|
21
|
+
dot: false,
|
|
22
|
+
// Fallback to tinyglobby for users that dynamically generate plus files (and `.gitignore`s them)
|
|
23
|
+
globFallback: true,
|
|
24
|
+
});
|
|
25
|
+
// Filter build files
|
|
26
|
+
files = files.filter((filePath) => !isTemporaryBuildFile(filePath));
|
|
27
|
+
// Normalize
|
|
28
|
+
const plusFiles = files.map((filePath) => {
|
|
29
|
+
// Both `$ git-ls files` and tinyglobby return posix paths
|
|
30
|
+
assertPosixPath(filePath);
|
|
31
|
+
assert(!filePath.startsWith(userRootDir));
|
|
32
|
+
const filePathAbsoluteUserRootDir = path.posix.join('/', filePath);
|
|
33
|
+
assert(isPlusFile(filePathAbsoluteUserRootDir));
|
|
34
|
+
return { filePathAbsoluteUserRootDir };
|
|
35
|
+
});
|
|
36
|
+
return plusFiles;
|
|
37
|
+
}
|
|
38
|
+
function isPlusFile(filePath) {
|
|
39
|
+
assertPosixPath(filePath);
|
|
40
|
+
if (isTemporaryBuildFile(filePath))
|
|
41
|
+
return false;
|
|
42
|
+
const fileName = filePath.split('/').pop();
|
|
43
|
+
return fileName.startsWith('+');
|
|
44
|
+
}
|
|
45
|
+
function getPlusFileValueConfigName(filePath) {
|
|
46
|
+
if (!isPlusFile(filePath))
|
|
47
|
+
return null;
|
|
48
|
+
const fileName = path.posix.basename(filePath);
|
|
49
|
+
// assertNoUnexpectedPlusSign(filePath, fileName)
|
|
50
|
+
const basename = fileName.split('.')[0];
|
|
51
|
+
assert(basename.startsWith('+'));
|
|
52
|
+
const configName = basename.slice(1);
|
|
53
|
+
assertUsage(configName !== '', `${filePath} Invalid filename ${fileName}`);
|
|
54
|
+
return configName;
|
|
55
|
+
}
|
|
56
|
+
/* https://github.com/vikejs/vike/issues/1407
|
|
57
|
+
function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
|
|
58
|
+
const dirs = path.posix.dirname(filePath).split('/')
|
|
59
|
+
dirs.forEach((dir, i) => {
|
|
60
|
+
const dirPath = dirs.slice(0, i + 1).join('/')
|
|
61
|
+
assertUsage(
|
|
62
|
+
!dir.includes('+'),
|
|
63
|
+
`Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`
|
|
64
|
+
)
|
|
65
|
+
})
|
|
66
|
+
assertUsage(
|
|
67
|
+
!fileName.slice(1).includes('+'),
|
|
68
|
+
`Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
*/
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { getPlusFiles };
|
|
2
|
+
export { getPlusFileFromConfigFile };
|
|
2
3
|
export type { PlusFileValue };
|
|
3
4
|
export type { PlusFile };
|
|
4
5
|
export type { PlusFilesByLocationId };
|
|
5
6
|
import { type LocationId } from './filesystemRouting.js';
|
|
6
7
|
import { type EsbuildCache } from './transpileAndExecuteFile.js';
|
|
7
|
-
import { PointerImportLoaded } from './loadFileAtConfigTime.js';
|
|
8
|
+
import { type ConfigFile, PointerImportLoaded } from './loadFileAtConfigTime.js';
|
|
8
9
|
import type { FilePathResolved } from '../../../../types/FilePath.js';
|
|
9
10
|
import '../../assertEnvVite.js';
|
|
10
11
|
type PlusFile = PlusFileConfig | PlusFileValue;
|
|
@@ -39,4 +40,5 @@ type PlusFileValue = PlusFileCommon & {
|
|
|
39
40
|
isExtensionConfig?: undefined;
|
|
40
41
|
};
|
|
41
42
|
type PlusFilesByLocationId = Record<LocationId, PlusFile[]>;
|
|
42
|
-
declare function
|
|
43
|
+
declare function getPlusFiles(userRootDir: string, esbuildCache: EsbuildCache): Promise<PlusFilesByLocationId>;
|
|
44
|
+
declare function getPlusFileFromConfigFile(configFile: ConfigFile, isExtensionConfig: boolean, locationId: LocationId, userRootDir: string): PlusFileConfig;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { getPlusFiles };
|
|
2
|
+
export { getPlusFileFromConfigFile };
|
|
2
3
|
import { assert } from '../../../../utils/assert.js';
|
|
3
4
|
import { metaBuiltIn } from './metaBuiltIn.js';
|
|
4
5
|
import { getLocationId } from './filesystemRouting.js';
|
|
5
|
-
import {
|
|
6
|
+
import { crawlPlusFiles, getPlusFileValueConfigName } from './crawlPlusFiles.js';
|
|
6
7
|
import { getConfigFileExport } from './getConfigFileExport.js';
|
|
7
8
|
import { loadConfigFile, loadValueFile } from './loadFileAtConfigTime.js';
|
|
8
9
|
import { resolvePointerImport } from './resolvePointerImport.js';
|
|
9
10
|
import { getFilePathResolved } from '../getFilePath.js';
|
|
10
11
|
import { assertExtensionsConventions, assertExtensionsRequire } from './assertExtensions.js';
|
|
11
12
|
import '../../assertEnvVite.js';
|
|
12
|
-
async function
|
|
13
|
-
const plusFilePaths = (await
|
|
13
|
+
async function getPlusFiles(userRootDir, esbuildCache) {
|
|
14
|
+
const plusFilePaths = (await crawlPlusFiles(userRootDir)).map(({ filePathAbsoluteUserRootDir }) => getFilePathResolved({ filePathAbsoluteUserRootDir, userRootDir }));
|
|
14
15
|
const plusFilesByLocationId = {};
|
|
15
16
|
await Promise.all(plusFilePaths.map(async (filePath) => {
|
|
16
17
|
if (getPlusFileValueConfigName(filePath.filePathAbsoluteFilesystem) === 'config') {
|
|
@@ -25,21 +26,21 @@ async function getPlusFilesByLocationId(userRootDir, esbuildCache) {
|
|
|
25
26
|
plusFilesByLocationId[locationId].push(plusFile);
|
|
26
27
|
extendsConfigs.forEach((extendsConfig) => {
|
|
27
28
|
/* We purposely use the same locationId because the Vike extension's config should only apply to where it's being extended from, for example:
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
```js
|
|
30
|
+
// /pages/admin/+config.js
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
import vikeVue from 'vike-vue/config'
|
|
33
|
+
// Should only apply to /pages/admin/**
|
|
34
|
+
export default { extends: [vikeVue] }
|
|
35
|
+
```
|
|
36
|
+
```js
|
|
37
|
+
// /pages/marketing/+config.js
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
import vikeReact from 'vike-react/config'
|
|
40
|
+
// Should only apply to /pages/marketing/**
|
|
41
|
+
export default { extends: [vikeReact] }
|
|
42
|
+
```
|
|
43
|
+
*/
|
|
43
44
|
const plusFile = getPlusFileFromConfigFile(extendsConfig, true, locationId, userRootDir);
|
|
44
45
|
assertExtensionsConventions(plusFile);
|
|
45
46
|
plusFilesByLocationId[locationId].push(plusFile);
|
|
@@ -5,7 +5,7 @@ export type { ConfigFile };
|
|
|
5
5
|
export type { PointerImportLoaded };
|
|
6
6
|
import type { FilePathResolved } from '../../../../types/FilePath.js';
|
|
7
7
|
import { type EsbuildCache } from './transpileAndExecuteFile.js';
|
|
8
|
-
import type { PlusFileValue } from './
|
|
8
|
+
import type { PlusFileValue } from './getPlusFiles.js';
|
|
9
9
|
import { PointerImport } from './resolvePointerImport.js';
|
|
10
10
|
import type { ConfigDefinitionsInternal } from './metaBuiltIn.js';
|
|
11
11
|
import '../../assertEnvVite.js';
|
|
@@ -4,8 +4,8 @@ export type { ConfigDefinitions };
|
|
|
4
4
|
export type { ConfigDefinitionsInternal };
|
|
5
5
|
export type { ConfigDefinitionInternal };
|
|
6
6
|
export type { ConfigEffect };
|
|
7
|
-
import type {
|
|
8
|
-
import type { Config, ConfigNameBuiltIn,
|
|
7
|
+
import type { ConfigEnv, DefinedAtFilePath } from '../../../../types/PageConfig.js';
|
|
8
|
+
import type { Config, ConfigNameBuiltIn, ConfigNameBuiltInGlobal } from '../../../../types/Config.js';
|
|
9
9
|
import { type ConfigDefinedAt } from '../../../../shared-server-client/page-configs/getConfigDefinedAt.js';
|
|
10
10
|
import type { PageConfigBuildTimeBeforeComputed } from '../resolveVikeConfigInternal.js';
|
|
11
11
|
import '../../assertEnvVite.js';
|
|
@@ -13,8 +13,7 @@ import '../../assertEnvVite.js';
|
|
|
13
13
|
*
|
|
14
14
|
* https://vike.dev/meta
|
|
15
15
|
*/
|
|
16
|
-
type ConfigDefinition =
|
|
17
|
-
type ConfigDefinition_ = {
|
|
16
|
+
type ConfigDefinition = {
|
|
18
17
|
/** In what environment(s) the config value is loaded.
|
|
19
18
|
*
|
|
20
19
|
* https://vike.dev/meta
|
|
@@ -57,7 +56,14 @@ type ConfigDefinition_ = {
|
|
|
57
56
|
}) => boolean);
|
|
58
57
|
/** Whether changes to the configuration should trigger a Vite restart. */
|
|
59
58
|
vite?: boolean;
|
|
60
|
-
|
|
59
|
+
/** @experimental */
|
|
60
|
+
_computed?: (pageConfig: PageConfigBuildTimeBeforeComputed) => unknown;
|
|
61
|
+
/** @experimental */
|
|
62
|
+
_valueIsFilePath?: true;
|
|
63
|
+
/** @experimental */
|
|
64
|
+
_userEffectDefinedAtFilePath?: DefinedAtFilePath;
|
|
65
|
+
isDefinedByPeerDependency?: undefined;
|
|
66
|
+
} | ConfigDefinitionDefinedByPeerDependency;
|
|
61
67
|
type ConfigDefinitionDefinedByPeerDependency = {
|
|
62
68
|
/**
|
|
63
69
|
* Omit the "unknown config" error without defining the config — useful for optional peer dependencies: for example, vike-server sets +stream.require which is defined by vike-{react,vue,solid} but some users don't use vike-{react,vue,solid}
|
|
@@ -70,27 +76,21 @@ type ConfigDefinitionDefinedByPeerDependency = {
|
|
|
70
76
|
* https://vike.dev/meta
|
|
71
77
|
*/
|
|
72
78
|
type ConfigEffect = (config: {
|
|
73
|
-
/** The config value.
|
|
79
|
+
/** The config's value.
|
|
74
80
|
*
|
|
75
81
|
* https://vike.dev/meta
|
|
76
82
|
*/
|
|
77
83
|
configValue: unknown;
|
|
78
|
-
/** Where the config value is defined.
|
|
84
|
+
/** Where the config's value is defined.
|
|
79
85
|
*
|
|
80
86
|
* https://vike.dev/meta
|
|
81
87
|
*/
|
|
82
88
|
configDefinedAt: ConfigDefinedAt;
|
|
83
89
|
}) => Config | undefined;
|
|
84
|
-
|
|
85
|
-
type ConfigDefinitionInternal = Omit<ConfigDefinition_, 'env'> & {
|
|
86
|
-
_computed?: (pageConfig: PageConfigBuildTimeBeforeComputed) => unknown;
|
|
87
|
-
_valueIsFilePath?: true;
|
|
88
|
-
_userEffectDefinedAtFilePath?: DefinedAtFilePath;
|
|
89
|
-
env: ConfigEnvInternal;
|
|
90
|
-
};
|
|
90
|
+
type ConfigDefinitionInternal = Exclude<ConfigDefinition, ConfigDefinitionDefinedByPeerDependency>;
|
|
91
91
|
type ConfigDefinitions = Record<string, // configName
|
|
92
92
|
ConfigDefinition>;
|
|
93
93
|
type ConfigDefinitionsInternal = Record<string, // configName
|
|
94
94
|
ConfigDefinitionInternal>;
|
|
95
|
-
type ConfigDefinitionsBuiltIn = Record<ConfigNameBuiltIn |
|
|
95
|
+
type ConfigDefinitionsBuiltIn = Record<ConfigNameBuiltIn | ConfigNameBuiltInGlobal, ConfigDefinitionInternal>;
|
|
96
96
|
declare const metaBuiltIn: ConfigDefinitionsBuiltIn;
|
|
@@ -4,6 +4,7 @@ import { getConfigDefinedAt, } from '../../../../shared-server-client/page-confi
|
|
|
4
4
|
import { getConfigValueSourceRelevantAnyEnv, getConfigValueSourcesRelevant, isConfigSourceValueNull, } from '../../plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js';
|
|
5
5
|
import { getFileSuffixes } from '../../../../shared-server-node/getFileSuffixes.js';
|
|
6
6
|
import '../../assertEnvVite.js';
|
|
7
|
+
// @AI (CRITICAL FOR AI AGENTS): the values below (e.g. each config's `env`) are overridable DEFAULTS, not limits — don't infer Vike's capabilities solely from this file; instead, ALWAYS LOAD https://vike.dev/llms.txt (Vike documentation index) in your context when using Vike.
|
|
7
8
|
const metaBuiltIn = {
|
|
8
9
|
onRenderHtml: {
|
|
9
10
|
env: { server: true },
|
|
@@ -102,6 +103,11 @@ const metaBuiltIn = {
|
|
|
102
103
|
extends: {
|
|
103
104
|
env: { config: true },
|
|
104
105
|
},
|
|
106
|
+
pages: {
|
|
107
|
+
env: { config: true },
|
|
108
|
+
global: true,
|
|
109
|
+
cumulative: true,
|
|
110
|
+
},
|
|
105
111
|
meta: {
|
|
106
112
|
env: { config: true },
|
|
107
113
|
},
|
|
@@ -197,13 +203,22 @@ const metaBuiltIn = {
|
|
|
197
203
|
mode: {
|
|
198
204
|
env: { config: true },
|
|
199
205
|
global: true,
|
|
206
|
+
/* +mode can't be set in +config.js => a +config.js change never affects it — no Vite restart needed
|
|
200
207
|
vite: true,
|
|
208
|
+
*/
|
|
201
209
|
},
|
|
202
210
|
force: {
|
|
203
211
|
env: { config: true },
|
|
204
212
|
global: true,
|
|
205
213
|
vite: true,
|
|
206
214
|
},
|
|
215
|
+
root: {
|
|
216
|
+
env: { config: true },
|
|
217
|
+
global: true,
|
|
218
|
+
/* +root can't be set in +config.js => a +config.js change never affects it — no Vite restart needed
|
|
219
|
+
vite: true,
|
|
220
|
+
*/
|
|
221
|
+
},
|
|
207
222
|
csp: {
|
|
208
223
|
env: { server: true },
|
|
209
224
|
},
|
|
@@ -312,6 +327,10 @@ const metaBuiltIn = {
|
|
|
312
327
|
vercel: {
|
|
313
328
|
env: { config: true },
|
|
314
329
|
},
|
|
330
|
+
ai: {
|
|
331
|
+
env: { config: true },
|
|
332
|
+
global: true,
|
|
333
|
+
},
|
|
315
334
|
};
|
|
316
335
|
function getConfigEnv(pageConfig, configName) {
|
|
317
336
|
const source = getConfigValueSourceRelevantAnyEnv(configName, pageConfig);
|
|
@@ -9,12 +9,13 @@ export { isV1Design };
|
|
|
9
9
|
export { getConfVal };
|
|
10
10
|
export { getConfigDefinitionOptional };
|
|
11
11
|
export { getVikeConfigFromCliOrEnv };
|
|
12
|
+
export { EARLY_SETTINGS };
|
|
12
13
|
export type { VikeConfigInternal };
|
|
13
14
|
export type { PageConfigBuildTimeBeforeComputed };
|
|
14
|
-
import type { PageConfigGlobalBuildTime, PageConfigBuildTime } from '../../../types/PageConfig.js';
|
|
15
|
-
import { type ConfigDefinitionsInternal
|
|
15
|
+
import type { PageConfigGlobalBuildTime, ConfigEnv, PageConfigBuildTime, DefinedAtFilePath } from '../../../types/PageConfig.js';
|
|
16
|
+
import { type ConfigDefinitionsInternal } from './resolveVikeConfigInternal/metaBuiltIn.js';
|
|
16
17
|
import { type GlobalConfigPublic } from '../../../shared-server-client/page-configs/resolveVikeConfigPublic.js';
|
|
17
|
-
import { type PlusFile } from './resolveVikeConfigInternal/
|
|
18
|
+
import { type PlusFile } from './resolveVikeConfigInternal/getPlusFiles.js';
|
|
18
19
|
import type { PrerenderContextPublic } from '../../prerender/runPrerender.js';
|
|
19
20
|
import type { ResolvedConfig, UserConfig } from 'vite';
|
|
20
21
|
import { type DangerouslyUseInternals } from '../../../shared-server-client/getPublicProxy.js';
|
|
@@ -62,8 +63,22 @@ declare function getVikeConfigFromCliOrEnv(): {
|
|
|
62
63
|
configFromCliOptions: import("../../cli/parseCli.js").CliOptions | null;
|
|
63
64
|
configFromEnvVar: Record<string, unknown> | null;
|
|
64
65
|
};
|
|
66
|
+
declare const EARLY_SETTINGS: readonly ["root", "mode"];
|
|
65
67
|
type PageConfigBuildTimeBeforeComputed = Omit<PageConfigBuildTime, 'configValuesComputed'>;
|
|
66
|
-
declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitionsInternal, configName: string):
|
|
68
|
+
declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitionsInternal, configName: string): {
|
|
69
|
+
env: ConfigEnv;
|
|
70
|
+
cumulative?: boolean;
|
|
71
|
+
effect?: import("./resolveVikeConfigInternal/metaBuiltIn.js").ConfigEffect;
|
|
72
|
+
eager?: boolean;
|
|
73
|
+
global?: boolean | ((value: unknown, moreInfo: {
|
|
74
|
+
isGlobalLocation: boolean;
|
|
75
|
+
}) => boolean);
|
|
76
|
+
vite?: boolean;
|
|
77
|
+
_computed?: (pageConfig: PageConfigBuildTimeBeforeComputed) => unknown;
|
|
78
|
+
_valueIsFilePath?: true;
|
|
79
|
+
_userEffectDefinedAtFilePath?: DefinedAtFilePath;
|
|
80
|
+
isDefinedByPeerDependency?: undefined;
|
|
81
|
+
} | null;
|
|
67
82
|
declare function getConfVal(plusFile: PlusFile, configName: string): null | {
|
|
68
83
|
value: unknown;
|
|
69
84
|
valueIsLoaded: true;
|