{"version":3,"file":"Enum.cjs","sources":["../../src/types/Enum.ts"],"sourcesContent":["import XVType from \"../XVType\";\n\nexport type EnumLike<T extends string | number> = Record<string, T>;\n\nclass XVEnum<T extends string | number> extends XVType<T> {\n   readonly enum_options: T[];\n\n   constructor(input: readonly T[] | EnumLike<T>) {\n      super();\n\n      this.enum_options = Array.isArray(input)\n         ? [...input]\n         : Object.values(input);\n\n      if (this.enum_options.length === 0) {\n         throw new Error(\"Enum options must be non-empty\");\n      }\n   }\n\n   protected check(value: unknown): T {\n      if (!this.enum_options.includes(value as T)) {\n         throw new Error(`Value should be one of: ${this.enum_options.join(\", \")}`);\n      }\n      return value as T;\n   }\n}\n\nexport default XVEnum;\n"],"names":[],"mappings":";;;;AAIA,MAAM,MAAkC,SAAQ,MAAS,CAAA;AAGtD,IAAA,WAAA,CAAY,KAAiC,EAAA;AAC1C,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK;AACpC,cAAE,CAAC,GAAG,KAAK;AACX,cAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAEzB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;QACpD;IACH;AAEU,IAAA,KAAK,CAAC,KAAc,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAU,CAAC,EAAE;AAC1C,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;QAC7E;AACA,QAAA,OAAO,KAAU;IACpB;AACF;;;;"}