Skip to content

feat(config): allow extra properties in config definitions#21

Merged
CorentinTh merged 1 commit intomainfrom
extendable-config-definition
Feb 19, 2026
Merged

feat(config): allow extra properties in config definitions#21
CorentinTh merged 1 commit intomainfrom
extendable-config-definition

Conversation

@CorentinTh
Copy link
Owner

No description provided.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds support for extra properties in config definitions by introducing a generic Extra type parameter to the configuration type system. This allows users to extend config definition elements with custom properties beyond the standard schema, env, doc, and default fields. The PR also adds .zed (Zed editor configuration) to .gitignore.

Changes:

  • Added Extra generic parameter to ConfigDefinitionElement, ConfigDefinition, and ConfigDefinitionObject types
  • Updated .gitignore to exclude Zed editor configuration folder

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.

File Description
src/figue.types.ts Added generic Extra parameter to allow extra properties in config definitions while maintaining backward compatibility through default type parameters
.gitignore Added .zed folder to ignore list for Zed editor configuration files
Comments suppressed due to low confidence (1)

src/figue.types.ts:25

  • For clarity and maintainability, consider updating the InferSchemaType to explicitly handle the generic parameters. While the current implementation should work due to TypeScript's structural typing (since Extra is constrained to Record<string, unknown>), the type checks could be more explicit by using "ConfigDefinitionElement<any, any>" instead of relying on default type parameters. This would make the intent clearer and ensure compatibility with any Extra type.
export 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;
}>;

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@CorentinTh CorentinTh merged commit 2291e42 into main Feb 19, 2026
7 checks passed
@CorentinTh CorentinTh deleted the extendable-config-definition branch February 19, 2026 22:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants