{"version":3,"file":"Array.cjs","sources":["../../src/types/Array.ts"],"sourcesContent":["import XVType from \"../XVType\";\nimport { Infer } from \"../types\";\n\nclass XVArray<T extends XVType<any>> extends XVType<Infer<T>[]> {\n   constructor(readonly Arraytype: T) {\n      super()\n   }\n\n   protected check(input: unknown): Infer<T>[] {\n      if (!Array.isArray(input)) throw new Error(\"Expected array\")\n      const arr = input.map(v => this.Arraytype.parse(v))\n      return arr as Infer<T>[]\n   }\n\n   min(length: number) {\n      return this.set(\"min\", (v: unknown) => {\n         const arr = v as Infer<T>[];\n         if (arr.length < length) {\n            throw new Error(`Array length should be at least ${length} items, received ${arr.length}`);\n         }\n      }, length);\n   }\n\n\n   max(length: number) {\n      return this.set(\"max\", (v: unknown) => {\n         const arr = v as Infer<T>[];\n         if (arr.length > length) {\n            throw new Error(`Array length should not exceed ${length} items, received ${arr.length}`);\n         }\n      }, length);\n   }\n\n   unique() {\n      return this.set(\"unique\", (v: unknown) => {\n         const arr = v as Infer<T>[];\n         const seen = new Set<string>();\n\n         for (const item of arr) {\n            const key = JSON.stringify(item);\n            if (seen.has(key)) {\n               throw new Error(`Array items should be unique, found duplicate: ${key}`);\n            }\n            seen.add(key);\n         }\n      });\n   }\n}\n\nexport default XVArray;\n"],"names":[],"mappings":";;;;AAGA,MAAM,OAA+B,SAAQ,MAAkB,CAAA;AAC5D,IAAA,WAAA,CAAqB,SAAY,EAAA;AAC9B,QAAA,KAAK,EAAE;QADW,IAAA,CAAA,SAAS,GAAT,SAAS;IAE9B;AAEU,IAAA,KAAK,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;AAC5D,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,QAAA,OAAO,GAAiB;IAC3B;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAU,KAAI;YACnC,MAAM,GAAG,GAAG,CAAe;AAC3B,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,MAAM,CAAA,iBAAA,EAAoB,GAAG,CAAC,MAAM,CAAA,CAAE,CAAC;YAC7F;QACH,CAAC,EAAE,MAAM,CAAC;IACb;AAGA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAU,KAAI;YACnC,MAAM,GAAG,GAAG,CAAe;AAC3B,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,EAAkC,MAAM,CAAA,iBAAA,EAAoB,GAAG,CAAC,MAAM,CAAA,CAAE,CAAC;YAC5F;QACH,CAAC,EAAE,MAAM,CAAC;IACb;IAEA,MAAM,GAAA;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAU,KAAI;YACtC,MAAM,GAAG,GAAG,CAAe;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;AAE9B,YAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAChC,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAChB,oBAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,CAAA,CAAE,CAAC;gBAC3E;AACA,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAChB;AACH,QAAA,CAAC,CAAC;IACL;AACF;;;;"}