{"version":3,"file":"serve.mjs","names":[],"sources":["../../src/extension/serve.ts"],"sourcesContent":["import { resolveAllCommands } from '../core/commands.ts';\nimport type { PadroneServePreferences } from '../feature/serve.ts';\nimport type { AnyPadroneBuilder, CommandTypesBase, PadroneCommand } from '../types/index.ts';\nimport type { PadroneSchema } from '../types/schema.ts';\nimport type { WithCommand } from '../util/type-utils.ts';\nimport { getRootCommand } from '../util/utils.ts';\nimport { passthroughSchema } from './utils.ts';\n\n// ── Types ────────────────────────────────────────────────────────────────\n\ntype ServeArgs = { port?: string; host?: string; basePath?: string };\n\ntype ServeCommand = PadroneCommand<'serve', '', PadroneSchema<ServeArgs>, void, [], [], true>;\n\nexport type WithServe<T> = WithCommand<T, 'serve', ServeCommand>;\n\n// ── Extension ────────────────────────────────────────────────────────────\n\n/**\n * Extension that adds the `serve` command for starting a REST HTTP server.\n *\n * Usage:\n * ```ts\n * import { createPadrone } from 'padrone';\n * import { padroneServe } from 'padrone/serve';\n *\n * createPadrone('my-cli').extend(padroneServe())\n * ```\n */\nexport function padroneServe(defaults?: PadroneServePreferences): <T extends CommandTypesBase>(builder: T) => WithServe<T> {\n  return ((builder: AnyPadroneBuilder) =>\n    builder.command('serve', (c) =>\n      c\n        .configure({ description: 'Start a REST HTTP server', hidden: true })\n        .arguments(passthroughSchema({ port: 'string', host: 'string', 'base-path': 'string' }))\n        .async()\n        .action(async (args, ctx) => {\n          const rootCommand = getRootCommand(ctx.command);\n          resolveAllCommands(rootCommand);\n          const { startServeServer } = await import('../feature/serve.ts');\n          const port = args.port ? parseInt(args.port, 10) : undefined;\n          const prefs: PadroneServePreferences = {\n            ...defaults,\n            port: port && !Number.isNaN(port) ? port : defaults?.port,\n            host: args.host ?? defaults?.host,\n            basePath: args['base-path'] ?? defaults?.basePath,\n          };\n          await startServeServer(ctx.program, rootCommand, ctx.program.eval, prefs);\n        }),\n    )) as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;AA6BA,SAAgB,aAAa,UAA8F;CACzH,SAAS,YACP,QAAQ,QAAQ,UAAU,MACxB,EACG,UAAU;EAAE,aAAa;EAA4B,QAAQ;CAAK,CAAC,CAAC,CACpE,UAAU,kBAAkB;EAAE,MAAM;EAAU,MAAM;EAAU,aAAa;CAAS,CAAC,CAAC,CAAC,CACvF,MAAM,CAAC,CACP,OAAO,OAAO,MAAM,QAAQ;EAC3B,MAAM,cAAc,eAAe,IAAI,OAAO;EAC9C,mBAAmB,WAAW;EAC9B,MAAM,EAAE,qBAAqB,MAAM,OAAO;EAC1C,MAAM,OAAO,KAAK,OAAO,SAAS,KAAK,MAAM,EAAE,IAAI,KAAA;EACnD,MAAM,QAAiC;GACrC,GAAG;GACH,MAAM,QAAQ,CAAC,OAAO,MAAM,IAAI,IAAI,OAAO,UAAU;GACrD,MAAM,KAAK,QAAQ,UAAU;GAC7B,UAAU,KAAK,gBAAgB,UAAU;EAC3C;EACA,MAAM,iBAAiB,IAAI,SAAS,aAAa,IAAI,QAAQ,MAAM,KAAK;CAC1E,CAAC,CACL;AACJ"}