import { ArgNode, ArgOptions, NodeType } from './types'; import { ValidOptions } from './types-internal'; import { serializeOptions, validateEmptyChildren, validateName, withDefault, } from './utils'; const validOptions = { description: { type: 'string', default: '', }, options: { type: 'array', }, type: { type: 'string', }, multi: { type: 'boolean', default: false, }, } satisfies ValidOptions; export function Arg( name: N, options?: ArgOptions | null, ...children: readonly never[] ): ArgNode { validateName(name); validateEmptyChildren(children); const finalOptions = serializeOptions(withDefault(options, {}), validOptions); return { _type: NodeType.ARG, name, options: finalOptions, }; }