Skip to content

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.

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

See Also

Released under the MIT License.