import { z } from "@deboxsoft/module-core"; import { parseDef } from "../parseDef.js"; import { JsonSchema7Type } from "../parseTypes.js"; import { Refs } from "../Refs.js"; import { JsonSchema7AllOfType } from "./intersection.js"; export const parsePipelineDef = ( def: z.ZodPipelineDef, refs: Refs, ): JsonSchema7AllOfType | JsonSchema7Type | undefined => { if (refs.pipeStrategy === "input") { return parseDef(def.in._def, refs); } else if (refs.pipeStrategy === "output") { return parseDef(def.out._def, refs); } const a = parseDef(def.in._def, { ...refs, currentPath: [...refs.currentPath, "allOf", "0"], }); const b = parseDef(def.out._def, { ...refs, currentPath: [...refs.currentPath, "allOf", a ? "1" : "0"], }); return { allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined), }; };