vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
16 lines (15 loc) • 1.42 kB
TypeScript
export type { PageContextConfig };
export type { ConfigResolved };
import type { VikePackages } from '../VikeNamespace.js';
import type { ConfigBuiltIn, ConfigBuiltInResolved, ImportString } from '../Config.js';
import type { Combine, IsNotEmpty, XOR5 } from './helpers.js';
type PageContextConfig = ConfigResolved & (ConfigVikePackagesNotEmptyXor extends true ? ConfigVikePackagesIntersection : ConfigVikePackagesCombined);
type ConfigUnresolved = WithoutImportString<ConfigBuiltIn & Vike.Config>;
type ConfigResolvedOnly = ConfigBuiltInResolved & Vike.ConfigResolved;
type ConfigResolved = ConfigResolvedOnly & Omit<ConfigUnresolved, keyof ConfigResolvedOnly>;
type ConfigVikePackagesIntersection = VikePackages.ConfigVikeReact & VikePackages.ConfigVikeVue & VikePackages.ConfigVikeSolid & VikePackages.ConfigVikeSvelte & VikePackages.ConfigVikeAngular;
type ConfigVikePackagesCombined = Combine<VikePackages.ConfigVikeReact, Combine<VikePackages.ConfigVikeVue, Combine<VikePackages.ConfigVikeSolid, Combine<VikePackages.ConfigVikeSvelte, VikePackages.ConfigVikeAngular>>>>;
type ConfigVikePackagesNotEmptyXor = XOR5<IsNotEmpty<VikePackages.ConfigVikeReact>, IsNotEmpty<VikePackages.ConfigVikeVue>, IsNotEmpty<VikePackages.ConfigVikeSolid>, IsNotEmpty<VikePackages.ConfigVikeSvelte>, IsNotEmpty<VikePackages.ConfigVikeAngular>>;
type WithoutImportString<T> = {
[K in keyof T]: Exclude<T[K], ImportString>;
};