{"version":3,"file":"index.mjs","names":["z","ZodInvertible","ZodPipeline","constructor","inputSchema","parse","outputSchema","format","transform","pipe","_def","invertible","schema","outSchema","IgnoreEffect","Symbol","ignoreEffect","invert","typeName","ZodFirstPartyTypeKind","ZodArray","array","element","ZodObject","shape","invertedShape","Object","fromEntries","entries","map","key","value","catchall","ZodUnion","union","options","ZodDiscriminatedUnion","discriminator","discriminatedUnion","ZodIntersection","left","right","intersection","ZodTuple","items","rest","result","tuple","ZodRecord","keySchema","valueSchema","record","ZodMap","ZodSet","set","valueType","ZodFunction","args","returns","function","ZodLazy","lazy","ZodEffects","effect","innerType","type","refinement","any","superRefine","Error","ZodOptional","unwrap","optional","ZodNullable","nullable","ZodDefault","removeDefault","ZodCatch","removeCatch","ZodPromise","promise","ZodBranded","out","in","ZodReadonly","readonly"],"sources":["src/index.ts"],"sourcesContent":["import z from 'zod'\n\nexport interface ZodInvertibleDef<\n  I extends z.ZodTypeAny,\n  O extends z.ZodTypeAny,\n> extends z.ZodPipelineDef<z.ZodEffects<I, z.input<O>>, O> {\n  inputSchema: I\n  outputSchema: O\n  parse: (\n    value: z.output<I>,\n    ctx: z.RefinementCtx\n  ) => z.input<O> | Promise<z.input<O>>\n  format: (\n    value: z.output<O>,\n    ctx: z.RefinementCtx\n  ) => z.output<I> | Promise<z.output<I>>\n}\n\nexport class ZodInvertible<\n  I extends z.ZodTypeAny,\n  O extends z.ZodTypeAny,\n> extends z.ZodPipeline<z.ZodEffects<I, z.input<O>>, O> {\n  declare _def: ZodInvertibleDef<I, O>\n\n  constructor(\n    inputSchema: I,\n    parse: (\n      out: z.output<I>,\n      ctx: z.RefinementCtx\n    ) => z.input<O> | Promise<z.input<O>>,\n    outputSchema: O,\n    format: (\n      out: z.output<O>,\n      ctx: z.RefinementCtx\n    ) => z.output<I> | Promise<z.output<I>>\n  ) {\n    super({\n      ...inputSchema.transform(parse).pipe(outputSchema)._def,\n      inputSchema,\n      outputSchema,\n      parse,\n      format,\n    } as ZodInvertibleDef<I, O>)\n  }\n}\n\nexport function invertible<T extends z.ZodTypeAny, U extends z.ZodTypeAny>(\n  schema: T,\n  parse: (\n    value: z.output<T>,\n    ctx: z.RefinementCtx\n  ) => z.input<U> | Promise<z.input<U>>,\n  outSchema: U,\n  format: (\n    value: z.output<U>,\n    ctx: z.RefinementCtx\n  ) => z.output<T> | Promise<z.output<T>>\n) {\n  return new ZodInvertible(schema, parse, outSchema, format)\n}\n\nexport const IgnoreEffect = Symbol('IgnoreEffect')\n\nexport function ignoreEffect<T extends z.ZodEffects<any, any, any>>(\n  schema: T\n): T {\n  ;(schema as any)[IgnoreEffect] = true\n  return schema\n}\n\nexport function invert<T extends z.ZodTypeAny>(\n  schema: T\n): z.ZodType<z.input<T>, any, z.output<T>> {\n  switch (schema._def.typeName) {\n    case z.ZodFirstPartyTypeKind.ZodArray:\n      return z.array(invert((schema as any as z.ZodArray<any>).element))\n    case z.ZodFirstPartyTypeKind.ZodObject: {\n      const { shape, _def } = schema as any as z.AnyZodObject\n      const invertedShape = Object.fromEntries(\n        Object.entries(shape).map(([key, value]) => [key, invert(value as any)])\n      )\n      return new z.ZodObject({\n        ..._def,\n        catchall: invert(_def.catchall),\n        shape: () => invertedShape,\n      })\n    }\n    case z.ZodFirstPartyTypeKind.ZodUnion:\n      return z.union((schema as any as z.ZodUnion<any>).options.map(invert))\n    case z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion: {\n      const { discriminator, options } =\n        schema as any as z.ZodDiscriminatedUnion<any, any>\n      return z.discriminatedUnion(discriminator, options.map(invert))\n    }\n    case z.ZodFirstPartyTypeKind.ZodIntersection: {\n      const { left, right } = (schema as any as z.ZodIntersection<any, any>)\n        ._def\n      return z.intersection(invert(left), invert(right))\n    }\n    case z.ZodFirstPartyTypeKind.ZodTuple: {\n      const {\n        items,\n        _def: { rest },\n      } = schema as any as z.ZodTuple<any, any>\n      const result = z.tuple(items.map(invert))\n      return rest ? result.rest(invert(rest)) : result\n    }\n    case z.ZodFirstPartyTypeKind.ZodRecord: {\n      const { keySchema, valueSchema } = schema as any as z.ZodRecord<any, any>\n      return z.record(invert(keySchema), invert(valueSchema))\n    }\n    case z.ZodFirstPartyTypeKind.ZodMap: {\n      const { keySchema, valueSchema } = schema as any as z.ZodMap<any, any>\n      return z.map(invert(keySchema), invert(valueSchema))\n    }\n    case z.ZodFirstPartyTypeKind.ZodSet:\n      return z.set(invert((schema as any as z.ZodSet<any>)._def.valueType))\n    case z.ZodFirstPartyTypeKind.ZodFunction: {\n      const {\n        _def: { args, returns },\n      } = schema as any as z.ZodFunction<any, any>\n      return z.function(args.map(invert), invert(returns))\n    }\n    case z.ZodFirstPartyTypeKind.ZodLazy:\n      return z.lazy(() => invert((schema as any as z.ZodLazy<any>).schema))\n    case z.ZodFirstPartyTypeKind.ZodEffects: {\n      const {\n        _def: { effect, schema: innerType },\n      } = schema as any as z.ZodEffects<any>\n      switch (effect.type) {\n        case 'refinement': {\n          const { refinement } = effect\n          return z.any().superRefine(refinement).pipe(invert(innerType))\n        }\n        case 'preprocess':\n        case 'transform':\n          if ((schema as any)[IgnoreEffect]) {\n            return invert(innerType)\n          }\n          throw new Error(`effect not supported: ${effect.type}`)\n      }\n      break\n    }\n    case z.ZodFirstPartyTypeKind.ZodOptional:\n      return invert((schema as any as z.ZodOptional<any>).unwrap()).optional()\n    case z.ZodFirstPartyTypeKind.ZodNullable:\n      return invert((schema as any as z.ZodNullable<any>).unwrap()).nullable()\n    case z.ZodFirstPartyTypeKind.ZodDefault:\n      return invert((schema as any as z.ZodDefault<any>).removeDefault())\n    case z.ZodFirstPartyTypeKind.ZodCatch:\n      return invert((schema as any as z.ZodCatch<any>).removeCatch())\n    case z.ZodFirstPartyTypeKind.ZodPromise:\n      return z.promise(invert((schema as any as z.ZodPromise<any>)._def.type))\n    case z.ZodFirstPartyTypeKind.ZodBranded:\n      return invert((schema as any as z.ZodBranded<any, any>)._def.type)\n    case z.ZodFirstPartyTypeKind.ZodPipeline: {\n      if (schema instanceof ZodInvertible) {\n        const {\n          _def: { inputSchema, outputSchema, parse, format },\n        } = schema\n        return invertible(\n          invert(outputSchema),\n          format,\n          invert(inputSchema),\n          parse\n        )\n      }\n      const { _def } = schema as any as z.ZodPipeline<any, any>\n      return invert(_def.out).pipe(invert(_def.in))\n    }\n    case z.ZodFirstPartyTypeKind.ZodReadonly:\n      return invert(\n        (schema as any as z.ZodReadonly<any>)._def.innerType\n      ).readonly()\n  }\n  return schema\n}\n"],"mappings":"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","ignoreList":[]}
