{"version":3,"file":"intersection.mjs","names":[],"sources":["../../src/schemas/intersection.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { BaseSchema } from \"../core/base\";\nimport type { CombinedStandardProps, Schema } from \"../core/types\";\n\nfunction deepMerge(a: any, b: any): any {\n  if (\n    typeof a !== \"object\" ||\n    typeof b !== \"object\" ||\n    a === null ||\n    b === null ||\n    Array.isArray(a) ||\n    Array.isArray(b)\n  ) {\n    return b;\n  }\n  const out: Record<string, any> = { ...a };\n  for (const k of Object.keys(b)) {\n    out[k] = k in a ? deepMerge(a[k], b[k]) : b[k];\n  }\n  return out;\n}\n\nexport class IntersectionSchema<I, O> extends BaseSchema<I, O> {\n  private readonly schemas: Schema<I, any>[];\n\n  constructor(...schemas: Schema<I, any>[]) {\n    super();\n    this.schemas = schemas;\n    this.jsonSchema = { allOf: schemas.map((s) => s.jsonSchema) };\n  }\n\n  get [\"~standard\"](): CombinedStandardProps<I, O> {\n    return {\n      version: 1,\n      vendor: \"h-schema\",\n      jsonSchema: {\n        input: () => this.jsonSchema,\n        output: () => this.jsonSchema,\n      },\n      validate: (value: unknown) => {\n        let merged: any;\n        const issues: StandardSchemaV1.Issue[] = [];\n        for (const s of this.schemas) {\n          const r = s[\"~standard\"].validate(value) as StandardSchemaV1.Result<any>;\n          if (\"issues\" in r) {\n            if (r.issues) {\n              issues.push(...r.issues);\n            }\n          } else {\n            merged = merged === undefined ? r.value : deepMerge(merged, r.value);\n          }\n        }\n        if (issues.length > 0) {\n          return { issues };\n        }\n        return { value: merged as O };\n      },\n      types: {\n        input: {} as I,\n        output: {} as O,\n      },\n    };\n  }\n}\n"],"mappings":";;AAIA,SAAS,UAAU,GAAQ,GAAa;CACtC,IACE,OAAO,MAAM,YACb,OAAO,MAAM,YACb,MAAM,QACN,MAAM,QACN,MAAM,QAAQ,CAAC,KACf,MAAM,QAAQ,CAAC,GAEf,OAAO;CAET,MAAM,MAA2B,EAAE,GAAG,EAAE;CACxC,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC,GAC3B,IAAI,KAAK,KAAK,IAAI,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;CAE9C,OAAO;AACT;AAEA,IAAa,qBAAb,cAA8C,WAAiB;CAC7D;CAEA,YAAY,GAAG,SAA2B;EACxC,MAAM;EACN,KAAK,UAAU;EACf,KAAK,aAAa,EAAE,OAAO,QAAQ,KAAK,MAAM,EAAE,UAAU,EAAE;CAC9D;CAEA,KAAK,eAA4C;EAC/C,OAAO;GACL,SAAS;GACT,QAAQ;GACR,YAAY;IACV,aAAa,KAAK;IAClB,cAAc,KAAK;GACrB;GACA,WAAW,UAAmB;IAC5B,IAAI;IACJ,MAAM,SAAmC,CAAC;IAC1C,KAAK,MAAM,KAAK,KAAK,SAAS;KAC5B,MAAM,IAAI,EAAE,YAAY,CAAC,SAAS,KAAK;KACvC,IAAI,YAAY,GACV;UAAA,EAAE,QACJ,OAAO,KAAK,GAAG,EAAE,MAAM;KAAA,OAGzB,SAAS,WAAW,KAAA,IAAY,EAAE,QAAQ,UAAU,QAAQ,EAAE,KAAK;IAEvE;IACA,IAAI,OAAO,SAAS,GAClB,OAAO,EAAE,OAAO;IAElB,OAAO,EAAE,OAAO,OAAY;GAC9B;GACA,OAAO;IACL,OAAO,CAAC;IACR,QAAQ,CAAC;GACX;EACF;CACF;AACF"}