vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
93 lines (92 loc) • 3.17 kB
TypeScript
import '../../assertEnvVite.js';
export { configDefinitionsBuiltIn };
export type { ConfigDefinition };
export type { ConfigDefinitions };
export type { ConfigDefinitionsInternal };
export type { ConfigDefinitionInternal };
export type { ConfigEffect };
import type { ConfigEnvInternal, ConfigEnv, DefinedAtFilePath } from '../../../../types/PageConfig.js';
import type { Config, ConfigNameBuiltIn, ConfigNameGlobal } from '../../../../types/Config.js';
import { type ConfigDefinedAt } from '../../../../shared-server-client/page-configs/getConfigDefinedAt.js';
import type { PageConfigBuildTimeBeforeComputed } from '../resolveVikeConfigInternal.js';
/** The meta definition of a config.
*
* https://vike.dev/meta
*/
type ConfigDefinition = ConfigDefinition_ | ConfigDefinitionDefinedByPeerDependency;
type ConfigDefinition_ = {
/** In what environment(s) the config value is loaded.
*
* https://vike.dev/meta
*/
env: ConfigEnv;
/** Disable config overriding and make config values cumulative instead.
*
* @default false
*
* https://vike.dev/meta
*/
cumulative?: boolean;
/**
* Function called when the config value is defined.
*
* https://vike.dev/meta
*/
effect?: ConfigEffect;
/**
* Always load the configuration value, and as soon as possible.
*
* @default false
*
* https://vike.dev/meta
*/
eager?: boolean;
/**
* Whether the configuration always applies to all pages (no config inheritance).
*
* @default false
*
* https://vike.dev/extends#inheritance
*/
global?: boolean | ((value: unknown, moreInfo: {
isGlobalLocation: boolean;
}) => boolean);
/** Whether changes to the configuration should trigger a Vite restart. */
vite?: boolean;
};
type ConfigDefinitionDefinedByPeerDependency = {
/**
* 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}
*/
isDefinedByPeerDependency: true;
};
/**
* Function called when the config value is defined.
*
* https://vike.dev/meta
*/
type ConfigEffect = (config: {
/** The config value.
*
* https://vike.dev/meta
*/
configValue: unknown;
/** Where the config value is defined.
*
* https://vike.dev/meta
*/
configDefinedAt: ConfigDefinedAt;
}) => Config | undefined;
/** For Vike internal use */
type ConfigDefinitionInternal = Omit<ConfigDefinition_, 'env'> & {
_computed?: (pageConfig: PageConfigBuildTimeBeforeComputed) => unknown;
_valueIsFilePath?: true;
_userEffectDefinedAtFilePath?: DefinedAtFilePath;
env: ConfigEnvInternal;
};
type ConfigDefinitions = Record<string, // configName
ConfigDefinition>;
type ConfigDefinitionsInternal = Record<string, // configName
ConfigDefinitionInternal>;
type ConfigDefinitionsBuiltIn = Record<ConfigNameBuiltIn | ConfigNameGlobal, ConfigDefinitionInternal>;
declare const configDefinitionsBuiltIn: ConfigDefinitionsBuiltIn;