From 4535673b20cd1929cd607d16ba9ccb1c5b420d80 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Thu, 19 Feb 2026 23:16:43 +0100 Subject: [PATCH] feat(config): allow extra properties in config definitions --- .gitignore | 1 + src/figue.types.ts | 15 +++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 220e6d0..b08401e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ coverage dist types .conf* +.zed diff --git a/src/figue.types.ts b/src/figue.types.ts index 44a80ba..89af6fa 100644 --- a/src/figue.types.ts +++ b/src/figue.types.ts @@ -1,20 +1,23 @@ import type { StandardSchemaV1 } from '@standard-schema/spec'; import type { Expand } from './types'; -export type ConfigDefinitionElement = { +export type ConfigDefinitionElement< + T extends StandardSchemaV1 = StandardSchemaV1, + Extra extends Record = Record, +> = { schema: T; env?: string | string[]; doc?: string; default?: StandardSchemaV1.InferOutput; -}; +} & Extra; -export type ConfigDefinition = { - [P in keyof any]: ConfigDefinitionElement | ConfigDefinitionObject; +export type ConfigDefinition = Record> = { + [P in keyof any]: ConfigDefinitionElement | ConfigDefinitionObject; }; // Helper type for nested ConfigDefinition to avoid direct recursive type alias -export type ConfigDefinitionObject = { - [K in keyof any]: ConfigDefinitionElement | ConfigDefinition; +export type ConfigDefinitionObject = Record> = { + [K in keyof any]: ConfigDefinitionElement | ConfigDefinition; }; export type InferSchemaType = Expand<{