{"version":3,"file":"create.mjs","names":[],"sources":["../../src/core/create.ts"],"sourcesContent":["import { padroneAutoOutput } from '../extension/auto-output.ts';\nimport { padroneColor } from '../extension/color.ts';\nimport type { HelpCommand } from '../extension/help.ts';\nimport { padroneHelp } from '../extension/help.ts';\nimport { padroneInteractive } from '../extension/interactive.ts';\nimport { padroneRepl } from '../extension/repl.ts';\nimport { padroneSignalHandling } from '../extension/signal.ts';\nimport { padroneStdin } from '../extension/stdin.ts';\nimport { padroneSuggestions } from '../extension/suggestions.ts';\nimport type { VersionCommand } from '../extension/version.ts';\nimport { padroneVersion } from '../extension/version.ts';\nimport { createWrapHandler } from '../feature/wrap.ts';\nimport type {\n  AnyPadroneCommand,\n  AnyPadroneProgram,\n  CommandTypesBase,\n  DefineCommandBuilder,\n  DefineCommandContext,\n  InterceptorFactory,\n  InterceptorMeta,\n  PadroneBuilder,\n  PadroneCommand,\n  PadroneInterceptorFn,\n  PadroneProgram,\n  PadroneSchema,\n  RegisteredInterceptor,\n} from '../types/index.ts';\nimport { commandSymbol, findCommandByName, lazyResolver, mergeCommands, repathCommandTree, resolveCommand } from './commands.ts';\nimport { RoutingError } from './errors.ts';\nimport type { ExecContext } from './exec.ts';\nimport { collectInterceptors, errorResultWithSignal, execCommand } from './exec.ts';\nimport { toRegisteredInterceptor } from './interceptors.ts';\nimport { createProgramMethods } from './program-methods.ts';\nimport { hasInteractiveConfig, isAsyncBranded, makeThenable, noop, withPromiseDrain } from './results.ts';\nimport { parseCommand } from './validate.ts';\n\nexport { buildReplCompleter } from './commands.ts';\nexport { asyncSchema } from './results.ts';\n\n/**\n * Options for configuring which built-in extensions are applied by default.\n */\nexport type PadroneBuiltins = {\n  /** Enable `help` command, `--help` / `-h` flags, and default help display. Defaults to `true`. */\n  help?: boolean;\n  /** Enable `version` command and `--version` / `-v` / `-V` flags. Defaults to `true`. */\n  version?: boolean;\n  /** Enable `repl` command and `--repl` flag. Defaults to `true`. */\n  repl?: boolean;\n  /** Enable `--color` / `--no-color` flag support. Defaults to `true`. */\n  color?: boolean;\n  /** Enable \"Did you mean?\" suggestions for unknown commands and options. Defaults to `true`. */\n  suggestions?: boolean;\n  /** Enable signal handling (SIGINT, SIGTERM, SIGHUP). Defaults to `true`. */\n  signal?: boolean;\n  /** Enable automatic result output for `cli()`. Defaults to `true`. */\n  autoOutput?: boolean;\n  /** Enable stdin piping support. Defaults to `true`. */\n  stdin?: boolean;\n  /** Enable interactive prompting for missing arguments. Defaults to `true`. */\n  interactive?: boolean;\n};\n\nexport type PadroneOptions = { builtins?: PadroneBuiltins };\n\n// biome-ignore lint/complexity/noBannedTypes: empty object signals \"all defaults enabled\"\ntype DefaultBuiltins = {};\n\ntype BuiltinCommands<B> = [...(B extends { help: false } ? [] : [HelpCommand]), ...(B extends { version: false } ? [] : [VersionCommand])];\n\nexport function createPadrone<TProgramName extends string, const TBuiltins extends PadroneBuiltins = DefaultBuiltins>(\n  name: TProgramName,\n  options?: { builtins?: TBuiltins },\n): PadroneProgram<TProgramName, '', '', PadroneSchema<void>, void, BuiltinCommands<TBuiltins>> {\n  let builder: any = createPadroneBuilder({ name, path: '', commands: [] } as any);\n\n  const b = options?.builtins;\n  if (b?.help !== false) builder = builder.extend(padroneHelp());\n  if (b?.version !== false) builder = builder.extend(padroneVersion());\n  if (b?.repl !== false) builder = builder.extend(padroneRepl());\n  if (b?.color !== false) builder = builder.extend(padroneColor());\n  if (b?.suggestions !== false) builder = builder.extend(padroneSuggestions());\n  if (b?.signal !== false) builder = builder.extend(padroneSignalHandling());\n  if (b?.autoOutput !== false) builder = builder.extend(padroneAutoOutput());\n  if (b?.stdin !== false) builder = builder.extend(padroneStdin());\n  if (b?.interactive !== false) builder = builder.extend(padroneInteractive());\n\n  return builder as any;\n}\n\nexport function createPadroneBuilder<TBuilder extends PadroneProgram = PadroneProgram>(\n  inputCommand: AnyPadroneCommand,\n): TBuilder & { [commandSymbol]: AnyPadroneCommand } {\n  // Re-parent direct subcommands so getCommandRuntime walks to the current root,\n  // not a stale parent from before .runtime()/.configure()/etc.\n  const existingCommand =\n    inputCommand.commands?.length && inputCommand.commands.some((c) => c.parent && c.parent !== inputCommand)\n      ? {\n          ...inputCommand,\n          commands: inputCommand.commands.map((c) => (c.parent && c.parent !== inputCommand ? { ...c, parent: inputCommand } : c)),\n        }\n      : inputCommand;\n\n  const parseCommandFn = (input: string | undefined) => parseCommand(input, existingCommand, findCommandByName);\n  const collectInterceptorsFn = (cmd: AnyPadroneCommand) => collectInterceptors(cmd, existingCommand);\n\n  // Execution context shared by exec and program methods.\n  // `builder` is assigned after the builder object is created (forward ref resolved at runtime only).\n  const execCtx: ExecContext = {\n    rootCommand: existingCommand,\n    builder: undefined as any,\n    parseCommandFn,\n    collectInterceptorsFn,\n  };\n\n  const evalCommand: AnyPadroneProgram['eval'] = (input, evalOptions) => {\n    try {\n      const result = execCommand(input as string, execCtx, evalOptions, 'soft', evalOptions?.caller ?? 'eval');\n      if (result instanceof Promise) return withPromiseDrain(result.catch((err: unknown) => errorResultWithSignal(err))) as any;\n      return makeThenable(result);\n    } catch (err) {\n      return makeThenable(errorResultWithSignal(err)) as any;\n    }\n  };\n\n  const programMethods = createProgramMethods(execCtx, evalCommand);\n\n  const builder = {\n    extend(extension: (builder: any) => any) {\n      return extension(builder);\n    },\n    configure(config) {\n      return createPadroneBuilder({ ...existingCommand, ...config }) as any;\n    },\n    runtime(runtimeConfig) {\n      return createPadroneBuilder({ ...existingCommand, runtime: { ...existingCommand.runtime, ...runtimeConfig } }) as any;\n    },\n    async() {\n      return createPadroneBuilder({ ...existingCommand, isAsync: true }) as any;\n    },\n    context(transform?: (ctx: unknown) => unknown) {\n      if (!transform) return createPadroneBuilder({ ...existingCommand }) as any;\n      const existing = existingCommand.contextTransform;\n      const composed = existing ? (ctx: unknown) => transform(existing(ctx)) : transform;\n      return createPadroneBuilder({ ...existingCommand, contextTransform: composed }) as any;\n    },\n    arguments(schema, meta) {\n      const resolvedArgs = typeof schema === 'function' ? schema(existingCommand.argsSchema as any) : schema;\n      const isAsync = existingCommand.isAsync || isAsyncBranded(resolvedArgs) || hasInteractiveConfig(meta);\n      return createPadroneBuilder({ ...existingCommand, argsSchema: resolvedArgs, meta, isAsync }) as any;\n    },\n    action(handler = noop) {\n      const baseHandler = existingCommand.action ?? noop;\n      return createPadroneBuilder({\n        ...existingCommand,\n        action: (args: any, ctx: any) => (handler as any)(args, ctx, baseHandler),\n      }) as any;\n    },\n    wrap(config) {\n      const handler = createWrapHandler(config, existingCommand.argsSchema as any, existingCommand.meta?.positional);\n      return createPadroneBuilder({ ...existingCommand, action: handler }) as any;\n    },\n    command(nameOrNames: string | readonly string[], builderFn?: (builder: any) => any) {\n      const name = Array.isArray(nameOrNames) ? nameOrNames[0] : nameOrNames;\n      const aliases = Array.isArray(nameOrNames) && nameOrNames.length > 1 ? (nameOrNames.slice(1) as string[]) : undefined;\n\n      const existingSubcommand = existingCommand.commands?.find((c) => c.name === name) as AnyPadroneCommand | undefined;\n      if (existingSubcommand) resolveCommand(existingSubcommand);\n\n      const initialCommand: AnyPadroneCommand = existingSubcommand\n        ? { ...existingSubcommand, aliases: aliases ?? existingSubcommand.aliases, parent: existingCommand }\n        : ({\n            name,\n            path: existingCommand.path ? `${existingCommand.path} ${name}` : name,\n            aliases,\n            parent: existingCommand,\n            '~types': {} as any,\n          } satisfies PadroneCommand);\n\n      if (builderFn) {\n        const lazyCmd: AnyPadroneCommand = { ...initialCommand };\n        (lazyCmd as any)[lazyResolver] = (target: AnyPadroneCommand) => {\n          const savedParent = target.parent;\n          const b = createPadroneBuilder(target);\n          const commandObj = ((builderFn(b as any) as unknown as typeof b)?.[commandSymbol] as AnyPadroneCommand) ?? target;\n          const mergedCommandObj = existingSubcommand ? mergeCommands(existingSubcommand, commandObj) : commandObj;\n          Object.assign(target, mergedCommandObj);\n          // Restore parent: mergeCommands copies the existing command's parent which may be stale\n          // (e.g. when an extension is applied twice, the merged parent predates re-parenting).\n          target.parent = savedParent;\n        };\n\n        const commands = existingCommand.commands || [];\n        const existingIndex = commands.findIndex((c) => c.name === name);\n        const updatedCommands =\n          existingIndex >= 0\n            ? [...commands.slice(0, existingIndex), lazyCmd, ...commands.slice(existingIndex + 1)]\n            : [...commands, lazyCmd];\n\n        return createPadroneBuilder({ ...existingCommand, commands: updatedCommands }) as any;\n      }\n\n      const commands = existingCommand.commands || [];\n      const existingIndex = commands.findIndex((c) => c.name === name);\n      const updatedCommands =\n        existingIndex >= 0\n          ? [...commands.slice(0, existingIndex), initialCommand, ...commands.slice(existingIndex + 1)]\n          : [...commands, initialCommand];\n\n      return createPadroneBuilder({ ...existingCommand, commands: updatedCommands }) as any;\n    },\n\n    mount(nameOrNames: string | readonly string[], program: unknown, options?: { context?: (ctx: unknown) => unknown }) {\n      const name = Array.isArray(nameOrNames) ? nameOrNames[0] : nameOrNames;\n      const aliases = Array.isArray(nameOrNames) && nameOrNames.length > 1 ? (nameOrNames.slice(1) as string[]) : undefined;\n\n      const programCommand = (program as any)[commandSymbol] as AnyPadroneCommand | undefined;\n      if (!programCommand) throw new RoutingError('Cannot mount: not a valid Padrone program');\n\n      const remounted = repathCommandTree(programCommand, name, existingCommand.path || '', existingCommand);\n      remounted.aliases = aliases;\n\n      if (options?.context) {\n        const existing = remounted.contextTransform;\n        remounted.contextTransform = existing ? (ctx: unknown) => existing(options.context!(ctx)) : options.context;\n      }\n\n      const existingSubcommand = existingCommand.commands?.find((c) => c.name === name) as AnyPadroneCommand | undefined;\n      const mergedCommandObj = existingSubcommand ? mergeCommands(existingSubcommand, remounted) : remounted;\n\n      const commands = existingCommand.commands || [];\n      const existingIndex = commands.findIndex((c) => c.name === name);\n      const updatedCommands =\n        existingIndex >= 0\n          ? [...commands.slice(0, existingIndex), mergedCommandObj, ...commands.slice(existingIndex + 1)]\n          : [...commands, mergedCommandObj];\n\n      return createPadroneBuilder({ ...existingCommand, commands: updatedCommands }) as any;\n    },\n\n    intercept(metaOrFn: InterceptorMeta | PadroneInterceptorFn<any, any, any>, factory?: InterceptorFactory<any, any, any>) {\n      const registered: RegisteredInterceptor = toRegisteredInterceptor(metaOrFn, factory);\n      return createPadroneBuilder({\n        ...existingCommand,\n        interceptors: [...(existingCommand.interceptors ?? []), registered],\n      }) as any;\n    },\n\n    ...programMethods,\n\n    get info() {\n      return {\n        name: existingCommand.name,\n        title: existingCommand.title,\n        description: existingCommand.description,\n        version: existingCommand.version,\n        examples: existingCommand.examples,\n        deprecated: existingCommand.deprecated,\n        commands: (existingCommand.commands ?? []).map((c) => c.name),\n      };\n    },\n\n    '~types': {} as any,\n\n    [commandSymbol]: existingCommand,\n  } satisfies AnyPadroneProgram & { [commandSymbol]: AnyPadroneCommand } as any;\n\n  // Fix forward reference: execCtx.builder needs to reference the builder after it's created\n  execCtx.builder = builder;\n\n  return builder as TBuilder & { [commandSymbol]: AnyPadroneCommand };\n}\n\n/**\n * Identity helper that contextually types a command builder callback while preserving its full return type.\n * Use this when defining commands in separate files — the parent program retains exact type information\n * about the subcommand's args, result, and nested commands.\n *\n * The builder's context includes `DefineCommandContext` by default (optional `logger`, `tracing`, `progress`).\n * Override globally via module augmentation on `DefineCommandContext`, or per-command via `.requires()`.\n *\n * @example Direct form (most common)\n * ```ts\n * export const myCommand = defineCommand((c) =>\n *   c.arguments(z.object({ name: z.string() }))\n *    .action((args) => console.log(args.name))\n * );\n * ```\n *\n * @example With required interceptor context\n * ```ts\n * export const adminCommand = defineCommand()\n *   .requires<{ adminDb: AdminDB }>()\n *   .define((c) => c.action((_args, ctx) => ctx.context.adminDb.query(...)));\n * ```\n */\nexport function defineCommand<TContext = unknown, TOut extends CommandTypesBase = CommandTypesBase>(\n  fn: (builder: PadroneBuilder<string, string, string, PadroneSchema<void>, void, [], any, false, TContext, DefineCommandContext>) => TOut,\n): typeof fn;\nexport function defineCommand(): DefineCommandBuilder;\nexport function defineCommand(fn?: any): any {\n  if (fn) return fn;\n  const builder: DefineCommandBuilder = {\n    requires: () => builder as any,\n    define: (f: any) => f,\n  };\n  return builder;\n}\n"],"mappings":"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"}