{"version":3,"file":"Union.cjs","sources":["../../src/types/Union.ts"],"sourcesContent":["import { Infer } from \"../types\";\nimport XVType from \"../XVType\";\n\nclass XVUnion<T extends XVType<any>[] = XVType<any>[]> extends XVType<Infer<T[number]>> {\n\n   constructor(readonly UnionTypes: T) {\n      super();\n      if (!Array.isArray(UnionTypes) || UnionTypes.length === 0) {\n         throw new Error(\"Union types must be a non-empty array\");\n      }\n   }\n\n   protected check(value: unknown): Infer<T[number]> {\n      let lastError: any = null;\n\n      for (const type of this.UnionTypes) {\n         try {\n            return type.parse(value); // parse each type\n         } catch (err) {\n            lastError = err;\n         }\n      }\n\n      throw new Error(\n         `Value does not match any of the union types: ${this.UnionTypes\n            .map((t) => t.constructor.name)\n            .join(\", \")}. Last error: ${lastError?.message || lastError}`\n      );\n   }\n}\n\nexport default XVUnion;\n"],"names":[],"mappings":";;;;AAGA,MAAM,OAAiD,SAAQ,MAAwB,CAAA;AAEpF,IAAA,WAAA,CAAqB,UAAa,EAAA;AAC/B,QAAA,KAAK,EAAE;QADW,IAAA,CAAA,UAAU,GAAV,UAAU;AAE5B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACxD,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;QAC3D;IACH;AAEU,IAAA,KAAK,CAAC,KAAc,EAAA;QAC3B,IAAI,SAAS,GAAQ,IAAI;AAEzB,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B;YAAE,OAAO,GAAG,EAAE;gBACX,SAAS,GAAG,GAAG;YAClB;QACH;AAEA,QAAA,MAAM,IAAI,KAAK,CACZ,CAAA,6CAAA,EAAgD,IAAI,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI;AAC7B,aAAA,IAAI,CAAC,IAAI,CAAC,CAAA,cAAA,EAAiB,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,OAAO,KAAI,SAAS,CAAA,CAAE,CAClE;IACJ;AACF;;;;"}