UNPKG

figue

Version:

Platform agnostic configuration management library, with environmental variables and validation, like convict but cross-env and zod schemas

46 lines (44 loc) 1.86 kB
import { StandardSchemaV1 } from "@standard-schema/spec"; //#region src/types.d.ts type Falsy = false | 0 | '' | null | undefined; type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never; //# sourceMappingURL=types.d.ts.map //#endregion //#region src/figue.types.d.ts type ConfigDefinitionElement<T extends StandardSchemaV1 = StandardSchemaV1> = { schema: T; env?: string; doc?: string; default?: StandardSchemaV1.InferOutput<T>; }; type ConfigDefinition = { [P in keyof any]: ConfigDefinitionElement | ConfigDefinitionObject }; type ConfigDefinitionObject = { [K in keyof any]: ConfigDefinitionElement | ConfigDefinition }; type InferSchemaType<T extends ConfigDefinition> = Expand<{ [P in keyof T]: T[P] extends ConfigDefinitionElement ? StandardSchemaV1.InferOutput<T[P]['schema']> : T[P] extends ConfigDefinition ? Expand<InferSchemaType<T[P]>> : never }>; type EnvRecord = Record<string, unknown>; //#endregion //#region src/figue.d.ts declare function defineConfig<T extends ConfigDefinition, Config extends Record<string, unknown> = InferSchemaType<T>>(configDefinition: T, { envSources, envSource, defaults: rawDefaults, priority, getDefaults }?: { envSources?: EnvRecord[]; envSource?: EnvRecord; defaults?: (Record<string, unknown> | Falsy)[] | Record<string, unknown>; getDefaults?: ((args: { configDefaults: Record<string, unknown>; envConfig: Record<string, unknown>; config: Record<string, unknown>; }) => (Record<string, unknown> | Falsy)[] | Record<string, unknown>); priority?: 'env' | 'defaults'; }): { config: Config; env: EnvRecord; envConfig: Record<string, unknown>; }; //# sourceMappingURL=figue.d.ts.map //#endregion export { type ConfigDefinition, type ConfigDefinitionElement, type ConfigDefinitionObject, type EnvRecord, defineConfig }; //# sourceMappingURL=index.d.ts.map