FlagBuilder
Immutable flag schema builder.
The type parameter C is a phantom that tracks the value type and presence through the fluent chain. Each modifier returns a new builder — the original is never mutated.
- Import:
@kjanat/dreamcli - Export kind: class
- Declared in:
src/core/schema/flag.ts - Source link:
src/core/schema/flag.ts:533
Signatures
ts
class FlagBuilder<C extends FlagConfig> {}Members
Constructors
constructor
ts
constructor();Properties
_config
Type brand — exists only in the type system (declare produces no runtime property). Used by InferFlag / InferFlags.
ts
_config: FlagBuilder.C;schema
Runtime schema descriptor.
ts
schema: FlagSchema;Methods
alias
ts
alias(name: string, options?: { hidden?: boolean; }): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;config
ts
config(path: string): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;default
ts
default<V extends unknown>(value: V): FlagBuilder<WithPresence<FlagBuilder.C, "defaulted">>;deprecated
ts
deprecated(message?: string): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;describe
ts
describe(description: string): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;duplicates
ts
duplicates(this: FlagBuilder<FlagBuilder.C & { flagKind: "string" | "number" | "boolean" | "enum" | "custom"; }>, policy: DuplicatePolicy): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;env
ts
env(varName: string): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;finite
ts
finite(this: FlagBuilder<FlagBuilder.C & { flagKind: "number"; }>, allow: boolean): FlagBuilder<FlagBuilder.C>;int
ts
int(this: FlagBuilder<FlagBuilder.C & { flagKind: "number"; }>, value: boolean): FlagBuilder<FlagBuilder.C>;max
ts
max(this: FlagBuilder<FlagBuilder.C & { flagKind: "number"; }>, value: number): FlagBuilder<FlagBuilder.C>;maxLength
ts
maxLength(this: FlagBuilder<FlagBuilder.C & { flagKind: "string"; }>, value: number): FlagBuilder<FlagBuilder.C>;min
ts
min(this: FlagBuilder<FlagBuilder.C & { flagKind: "number"; }>, value: number): FlagBuilder<FlagBuilder.C>;minLength
ts
minLength(this: FlagBuilder<FlagBuilder.C & { flagKind: "string"; }>, value: number): FlagBuilder<FlagBuilder.C>;negatable
ts
negatable(this: FlagBuilder<FlagBuilder.C & { flagKind: "boolean"; }>, options?: { alias?: string; hidden?: boolean; }): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;nonEmpty
ts
nonEmpty(this: FlagBuilder<FlagBuilder.C & { flagKind: "string"; }>, value: boolean): FlagBuilder<FlagBuilder.C>;pattern
ts
pattern(this: FlagBuilder<FlagBuilder.C & { flagKind: "string"; }>, value: RegExp): FlagBuilder<FlagBuilder.C>;prompt
ts
prompt(config: AllowedPromptConfig<FlagBuilder.C>): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;propagate
ts
propagate(): FlagBuilder<WithoutElementEligibility<FlagBuilder.C>>;required
ts
required(): FlagBuilder<WithPresence<FlagBuilder.C, "required">>;separator
ts
separator(this: FlagBuilder<FlagBuilder.C & { flagKind: "array"; }>, value: string): FlagBuilder<FlagBuilder.C>;unique
ts
unique(this: FlagBuilder<FlagBuilder.C & { flagKind: "array"; }>, value: boolean): FlagBuilder<FlagBuilder.C>;Examples
ts
const port = flag.number().default(8080);
type Port = InferFlag<typeof port>; // number
const region = flag.enum(['us', 'eu', 'ap']);
type Region = InferFlag<typeof region>; // 'us' | 'eu' | 'ap' | undefined