import { FlagNode, FlagOptions, NodeType } from './types'; import { ValidOptions } from './types-internal'; import { serializeOptions, validateEmptyChildren, validateName, withDefault, } from './utils'; const validOptions = { alias: { type: 'string', length: 1, }, description: { type: 'string', default: '', }, } satisfies ValidOptions; export function Flag( name: N, options?: FlagOptions | null, ...children: readonly never[] ): FlagNode { validateName(name); validateEmptyChildren(children); const finalOptions = serializeOptions(withDefault(options, {}), validOptions); return { _type: NodeType.FLAG, name, options: finalOptions, }; }