{"version":3,"file":"index.cjs","names":[],"sources":["../../src/index.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { ValidatorAdapter } from '@tanstack/react-router'\n\nexport interface ZodTypeLike {\n  _input: any\n  _output: any\n  parse: (input: any) => any\n}\n\nexport type InputOutputOption = 'input' | 'output'\n\nexport interface zodValidatorOptions {\n  readonly schema: ZodTypeLike\n  readonly input?: InputOutputOption\n  readonly output?: InputOutputOption\n}\n\nexport type zodValidatorInput<\n  TOptions extends ZodTypeLike | zodValidatorOptions,\n> = TOptions extends zodValidatorOptions\n  ? 'input' extends TOptions['input']\n    ? TOptions['schema']['_input']\n    : TOptions['schema']['_output']\n  : TOptions extends ZodTypeLike\n    ? TOptions['_input']\n    : never\n\nexport type zodValidatorOutput<\n  TOptions extends ZodTypeLike | zodValidatorOptions,\n> = TOptions extends zodValidatorOptions\n  ? 'output' extends TOptions['output']\n    ? TOptions['schema']['_output']\n    : TOptions['schema']['_input']\n  : TOptions extends ZodTypeLike\n    ? TOptions['_output']\n    : never\n\nexport type zodValidatorAdapter<\n  TOptions extends ZodTypeLike | zodValidatorOptions,\n> = ValidatorAdapter<zodValidatorInput<TOptions>, zodValidatorOutput<TOptions>>\n\nexport const zodValidator = <\n  TOptions extends ZodTypeLike | zodValidatorOptions,\n>(\n  options: TOptions,\n): zodValidatorAdapter<TOptions> => {\n  const input = 'input' in options ? options.input : 'input'\n  const output = 'output' in options ? options.output : 'output'\n  const _input = 'schema' in options ? options.schema._input : options._input\n  const _output = 'schema' in options ? options.schema._output : options._output\n  return {\n    types: {\n      input: input === 'output' ? _output : _input,\n      output: output === 'input' ? _input : _output,\n    },\n    parse: (input) =>\n      'schema' in options ? options.schema.parse(input) : options.parse(input),\n  }\n}\n\nexport const fallback = <TSchema extends z.ZodTypeAny>(\n  schema: TSchema,\n  fallback: TSchema['_input'],\n): z.ZodPipeline<\n  z.ZodType<TSchema['_input'], z.ZodTypeDef, TSchema['_input']>,\n  z.ZodCatch<TSchema>\n> => {\n  return z.custom<TSchema['_input']>().pipe(schema.catch(fallback))\n}\n"],"mappings":";;;AAyCA,IAAa,gBAGX,YACkC;CAClC,MAAM,QAAQ,WAAW,UAAU,QAAQ,QAAQ;CACnD,MAAM,SAAS,YAAY,UAAU,QAAQ,SAAS;CACtD,MAAM,SAAS,YAAY,UAAU,QAAQ,OAAO,SAAS,QAAQ;CACrE,MAAM,UAAU,YAAY,UAAU,QAAQ,OAAO,UAAU,QAAQ;AACvE,QAAO;EACL,OAAO;GACL,OAAO,UAAU,WAAW,UAAU;GACtC,QAAQ,WAAW,UAAU,SAAS;GACvC;EACD,QAAQ,UACN,YAAY,UAAU,QAAQ,OAAO,MAAM,MAAM,GAAG,QAAQ,MAAM,MAAM;EAC3E;;AAGH,IAAa,YACX,QACA,aAIG;AACH,QAAO,IAAA,EAAE,QAA2B,CAAC,KAAK,OAAO,MAAM,SAAS,CAAC"}