{"version":3,"file":"zod.cjs","names":[],"sources":["../../src/middleware/zod.ts"],"sourcesContent":["import { ParsedArgs } from '@cli-forge/parser';\nimport { MiddlewareFunction } from '../lib/public-api';\nimport type { z, ZodObject, ZodPipe } from 'zod';\n\n/*\n * Middleware that uses a Zod schema to validate and transform command arguments.\n * @param schema The Zod schema to use for validation and transformation.\n * @returns A middleware function that applies the Zod schema to the command arguments.\n */\nexport function zodMiddleware<\n  TArgs extends ParsedArgs,\n  TSchema extends ZodObject | ZodPipe<ZodObject>\n>(schema: TSchema): MiddlewareFunction<TArgs, TArgs & z.infer<TSchema>> {\n  return async (args: TArgs) => {\n    const parsed = (await schema.parseAsync(args)) as z.infer<TSchema>;\n    if (typeof parsed !== 'object') {\n      throw new Error('Zod schema did not return an object');\n    }\n    return { ...args, ...parsed };\n  };\n}\n"],"mappings":";;AASA,SAAgB,cAGd,QAAsE;AACtE,QAAO,OAAO,SAAgB;EAC5B,MAAM,SAAU,MAAM,OAAO,WAAW,KAAK;AAC7C,MAAI,OAAO,WAAW,SACpB,OAAM,IAAI,MAAM,sCAAsC;AAExD,SAAO;GAAE,GAAG;GAAM,GAAG;GAAQ"}