{"version":3,"file":"Tuple.cjs","sources":["../../src/types/Tuple.ts"],"sourcesContent":["import { Infer } from \"../types\";\nimport XVType from \"../XVType\";\n\nclass XVTuple<T extends XVType<any>[] = any> extends XVType<{ [K in keyof T]: Infer<T[K]> }> {\n\n   constructor(readonly TupleTypes: T) {\n      super();\n   }\n\n   protected check(value: unknown): { [K in keyof T]: Infer<T[K]> } {\n      if (!Array.isArray(value)) {\n         throw new Error(`Value should be a tuple, received ${typeof value}`);\n      }\n\n      if (value.length !== this.TupleTypes.length) {\n         throw new Error(`Tuple length should be ${this.TupleTypes.length}, received ${value.length}`);\n      }\n\n      const result = [] as unknown as { [K in keyof T]: Infer<T[K]> };\n\n      for (let i = 0; i < value.length; i++) {\n         try {\n            result[i] = this.TupleTypes[i].parse(value[i]) as Infer<T[typeof i]>;\n         } catch (err: any) {\n            throw new Error(\n               `Tuple item at index ${i} should be of type ${this.TupleTypes[i].constructor.name}, received ${typeof value[i]}`\n            );\n         }\n      }\n\n      return result;\n   }\n}\n\nexport default XVTuple;\n"],"names":[],"mappings":";;;;AAGA,MAAM,OAAuC,SAAQ,MAAuC,CAAA;AAEzF,IAAA,WAAA,CAAqB,UAAa,EAAA;AAC/B,QAAA,KAAK,EAAE;QADW,IAAA,CAAA,UAAU,GAAV,UAAU;IAE/B;AAEU,IAAA,KAAK,CAAC,KAAc,EAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,CAAA,kCAAA,EAAqC,OAAO,KAAK,CAAA,CAAE,CAAC;QACvE;QAEA,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC1C,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,UAAU,CAAC,MAAM,cAAc,KAAK,CAAC,MAAM,CAAA,CAAE,CAAC;QAChG;QAEA,MAAM,MAAM,GAAG,EAAgD;AAE/D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,IAAI;AACD,gBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAuB;YACvE;YAAE,OAAO,GAAQ,EAAE;gBAChB,MAAM,IAAI,KAAK,CACZ,CAAA,oBAAA,EAAuB,CAAC,sBAAsB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE,CAClH;YACJ;QACH;AAEA,QAAA,OAAO,MAAM;IAChB;AACF;;;;"}