xanv 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/XanvType.d.ts CHANGED
@@ -4,7 +4,7 @@ declare abstract class XanvType<TypeKeys extends string | number | symbol, Defau
4
4
  private checkes;
5
5
  meta: Record<string, any>;
6
6
  protected abstract check(value: any): any;
7
- set(key: TypeKeys, check: XVCheckCallback<Default>): void;
7
+ set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void;
8
8
  get(key: TypeKeys): XVCheckCallback<Default> | undefined;
9
9
  optional(): this;
10
10
  default(value: Default): this;
package/XanvType.js CHANGED
@@ -8,8 +8,9 @@
8
8
  transform: undefined,
9
9
  };
10
10
  }
11
- set(key, check) {
11
+ set(key, check, args) {
12
12
  this.checkes.set(key, check);
13
+ this.meta[key] = args || true; // Store the key in meta for reference
13
14
  }
14
15
  get(key) {
15
16
  return this.checkes.get(key);
package/XanvType.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"XanvType.js","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<TypeKeys extends string | number | symbol, Default> {\n private checkes = new Map<TypeKeys, XVCheckCallback<Default>>();\n meta: Record<string, any> = {\n optional: false,\n nullable: false,\n default: undefined,\n transform: undefined,\n }\n\n protected abstract check(value: any): any;\n\n set(key: TypeKeys, check: XVCheckCallback<Default>) {\n this.checkes.set(key, check);\n }\n\n get(key: TypeKeys) {\n return this.checkes.get(key);\n }\n\n optional(): this {\n this.meta.optional = true;\n return this\n }\n\n default(value: Default): this {\n this.meta.default = value;\n return this\n }\n\n nullable(): this {\n this.meta.nullable = true;\n return this\n }\n\n transform(cb: XanvTransformCallback<any>) {\n this.meta.transform = cb\n return this\n }\n\n parse(value: any): Default | null {\n if (this.meta.nullable && value === null) {\n return null;\n }\n\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\n return this.meta.default;\n }\n\n if (this.meta.optional && (value === undefined || value === null)) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n if (this.meta.transform) {\n value = this.meta.transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"sEAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsC;AAC/D,QAAA,IAAA,CAAA,IAAI,GAAwB;AACzB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;SACtB;IAyDJ;IArDG,GAAG,CAAC,GAAa,EAAE,KAA+B,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;IAC/B;AAEA,IAAA,GAAG,CAAC,GAAa,EAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;AACzB,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,EAA8B,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE;AACxB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;QACb,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,IAAI;AACb,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAC7E,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;AAC1B,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAChE,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
1
+ {"version":3,"file":"XanvType.js","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<TypeKeys extends string | number | symbol, Default> {\n private checkes = new Map<TypeKeys, XVCheckCallback<Default>>();\n meta: Record<string, any> = {\n optional: false,\n nullable: false,\n default: undefined,\n transform: undefined,\n }\n\n protected abstract check(value: any): any;\n\n set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void {\n this.checkes.set(key, check);\n (this.meta as any)[key] = args || true; // Store the key in meta for reference\n }\n\n get(key: TypeKeys) {\n return this.checkes.get(key);\n }\n\n optional(): this {\n this.meta.optional = true;\n return this\n }\n\n default(value: Default): this {\n this.meta.default = value;\n return this\n }\n\n nullable(): this {\n this.meta.nullable = true;\n return this\n }\n\n transform(cb: XanvTransformCallback<any>) {\n this.meta.transform = cb\n return this\n }\n\n parse(value: any): Default | null {\n if (this.meta.nullable && value === null) {\n return null;\n }\n\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\n return this.meta.default;\n }\n\n if (this.meta.optional && (value === undefined || value === null)) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n if (this.meta.transform) {\n value = this.meta.transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"sEAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsC;AAC/D,QAAA,IAAA,CAAA,IAAI,GAAwB;AACzB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;SACtB;IA0DJ;AAtDG,IAAA,GAAG,CAAC,GAAa,EAAE,KAA+B,EAAE,IAAU,EAAA;QAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAY,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;IAC1C;AAEA,IAAA,GAAG,CAAC,GAAa,EAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;AACzB,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,EAA8B,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE;AACxB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;QACb,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,IAAI;AACb,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAC7E,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;AAC1B,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAChE,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
package/XanvType.mjs CHANGED
@@ -8,8 +8,9 @@ class XanvType {
8
8
  transform: undefined,
9
9
  };
10
10
  }
11
- set(key, check) {
11
+ set(key, check, args) {
12
12
  this.checkes.set(key, check);
13
+ this.meta[key] = args || true; // Store the key in meta for reference
13
14
  }
14
15
  get(key) {
15
16
  return this.checkes.get(key);
package/XanvType.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"XanvType.mjs","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<TypeKeys extends string | number | symbol, Default> {\n private checkes = new Map<TypeKeys, XVCheckCallback<Default>>();\n meta: Record<string, any> = {\n optional: false,\n nullable: false,\n default: undefined,\n transform: undefined,\n }\n\n protected abstract check(value: any): any;\n\n set(key: TypeKeys, check: XVCheckCallback<Default>) {\n this.checkes.set(key, check);\n }\n\n get(key: TypeKeys) {\n return this.checkes.get(key);\n }\n\n optional(): this {\n this.meta.optional = true;\n return this\n }\n\n default(value: Default): this {\n this.meta.default = value;\n return this\n }\n\n nullable(): this {\n this.meta.nullable = true;\n return this\n }\n\n transform(cb: XanvTransformCallback<any>) {\n this.meta.transform = cb\n return this\n }\n\n parse(value: any): Default | null {\n if (this.meta.nullable && value === null) {\n return null;\n }\n\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\n return this.meta.default;\n }\n\n if (this.meta.optional && (value === undefined || value === null)) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n if (this.meta.transform) {\n value = this.meta.transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"AAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsC;AAC/D,QAAA,IAAA,CAAA,IAAI,GAAwB;AACzB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;SACtB;IAyDJ;IArDG,GAAG,CAAC,GAAa,EAAE,KAA+B,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;IAC/B;AAEA,IAAA,GAAG,CAAC,GAAa,EAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;AACzB,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,EAA8B,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE;AACxB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;QACb,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,IAAI;AACb,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAC7E,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;AAC1B,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAChE,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
1
+ {"version":3,"file":"XanvType.mjs","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<TypeKeys extends string | number | symbol, Default> {\n private checkes = new Map<TypeKeys, XVCheckCallback<Default>>();\n meta: Record<string, any> = {\n optional: false,\n nullable: false,\n default: undefined,\n transform: undefined,\n }\n\n protected abstract check(value: any): any;\n\n set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void {\n this.checkes.set(key, check);\n (this.meta as any)[key] = args || true; // Store the key in meta for reference\n }\n\n get(key: TypeKeys) {\n return this.checkes.get(key);\n }\n\n optional(): this {\n this.meta.optional = true;\n return this\n }\n\n default(value: Default): this {\n this.meta.default = value;\n return this\n }\n\n nullable(): this {\n this.meta.nullable = true;\n return this\n }\n\n transform(cb: XanvTransformCallback<any>) {\n this.meta.transform = cb\n return this\n }\n\n parse(value: any): Default | null {\n if (this.meta.nullable && value === null) {\n return null;\n }\n\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\n return this.meta.default;\n }\n\n if (this.meta.optional && (value === undefined || value === null)) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n if (this.meta.transform) {\n value = this.meta.transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"AAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsC;AAC/D,QAAA,IAAA,CAAA,IAAI,GAAwB;AACzB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;SACtB;IA0DJ;AAtDG,IAAA,GAAG,CAAC,GAAa,EAAE,KAA+B,EAAE,IAAU,EAAA;QAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAY,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;IAC1C;AAEA,IAAA,GAAG,CAAC,GAAa,EAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;AACzB,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,EAA8B,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE;AACxB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;QACb,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,IAAI;AACb,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAC7E,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;AAC1B,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAChE,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xanv",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "types": "./index.d.ts",
5
5
  "main": "./index.js",
6
6
  "module": "./index.mjs",
package/types/Array.js CHANGED
@@ -30,7 +30,7 @@
30
30
  if (v.length < length) {
31
31
  throw new Error(`Array length should be at least ${length} items, received ${v.length}`);
32
32
  }
33
- });
33
+ }, length);
34
34
  return this;
35
35
  }
36
36
  max(length) {
@@ -38,7 +38,7 @@
38
38
  if (v.length > length) {
39
39
  throw new Error(`Array length should not exceed ${length} items, received ${v.length}`);
40
40
  }
41
- });
41
+ }, length);
42
42
  return this;
43
43
  }
44
44
  unique() {
@@ -1 +1 @@
1
- {"version":3,"file":"Array.js","sources":["../../src/types/Array.ts"],"sourcesContent":["import XVMap from \"./Map\";\nimport XVObject from \"./Object\";\nimport XVRecord from \"./Record\";\nimport XanvType from \"../XanvType\";\nimport { XVInstanceType } from \"../types\";\n\nexport type XVArrayInfo = \"min\" | \"max\" | \"unique\"\n\nclass XVArray extends XanvType<XVArrayInfo, any[]> {\n private type?: XVInstanceType;\n private length?: number;\n constructor(type?: XVInstanceType, length?: number) {\n super();\n this.type = type;\n this.length = length;\n }\n\n protected check(value: any): void {\n let _value = value;\n if (!Array.isArray(value)) {\n throw new Error(`Value should be an array, received ${typeof value}`);\n }\n\n if (this.length !== undefined && value.length !== this.length) {\n throw new Error(`Array length should be ${this.length}, received ${value.length}`);\n }\n\n if (this.type) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n try {\n _value[i] = this.type.parse(item);\n } catch (error: any) {\n throw new Error(`Array item at index ${i} should be of type ${this.type.constructor.name}, received ${typeof item}: ${error.message}`);\n }\n }\n }\n return _value;\n }\n\n min(length: number): this {\n this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Array length should be at least ${length} items, received ${v.length}`)\n }\n });\n return this;\n }\n\n max(length: number): this {\n this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Array length should not exceed ${length} items, received ${v.length}`)\n }\n });\n return this;\n }\n\n unique(): this {\n this.set(\"unique\", v => {\n let format: any = []\n for (let i = 0; i < v.length; i++) {\n if (this.type instanceof XVObject || this.type instanceof XVRecord) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVArray) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVMap) {\n const u = JSON.stringify(Array.from(v.entries()));\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n }\n }\n\n const uitems = new Set(v);\n if (uitems.size !== v.length) {\n throw new Error(`Array items should be unique, found duplicates`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVArray;"],"names":["XanvType","XVObject","XVRecord","XVMap"],"mappings":"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"}
1
+ {"version":3,"file":"Array.js","sources":["../../src/types/Array.ts"],"sourcesContent":["import XVMap from \"./Map\";\nimport XVObject from \"./Object\";\nimport XVRecord from \"./Record\";\nimport XanvType from \"../XanvType\";\nimport { XVInstanceType } from \"../types\";\n\nexport type XVArrayInfo = \"min\" | \"max\" | \"unique\"\n\nclass XVArray extends XanvType<XVArrayInfo, any[]> {\n private type?: XVInstanceType;\n private length?: number;\n constructor(type?: XVInstanceType, length?: number) {\n super();\n this.type = type;\n this.length = length;\n }\n\n protected check(value: any): void {\n let _value = value;\n if (!Array.isArray(value)) {\n throw new Error(`Value should be an array, received ${typeof value}`);\n }\n\n if (this.length !== undefined && value.length !== this.length) {\n throw new Error(`Array length should be ${this.length}, received ${value.length}`);\n }\n\n if (this.type) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n try {\n _value[i] = this.type.parse(item);\n } catch (error: any) {\n throw new Error(`Array item at index ${i} should be of type ${this.type.constructor.name}, received ${typeof item}: ${error.message}`);\n }\n }\n }\n return _value;\n }\n\n min(length: number): this {\n this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Array length should be at least ${length} items, received ${v.length}`)\n }\n }, length);\n return this;\n }\n\n max(length: number): this {\n this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Array length should not exceed ${length} items, received ${v.length}`)\n }\n }, length);\n return this;\n }\n\n unique(): this {\n this.set(\"unique\", v => {\n let format: any = []\n for (let i = 0; i < v.length; i++) {\n if (this.type instanceof XVObject || this.type instanceof XVRecord) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVArray) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVMap) {\n const u = JSON.stringify(Array.from(v.entries()));\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n }\n }\n\n const uitems = new Set(v);\n if (uitems.size !== v.length) {\n throw new Error(`Array items should be unique, found duplicates`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVArray;"],"names":["XanvType","XVObject","XVRecord","XVMap"],"mappings":"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"}
package/types/Array.mjs CHANGED
@@ -30,7 +30,7 @@ import XVMap from'./Map.mjs';import XVObject from'./Object.mjs';import XVRecord
30
30
  if (v.length < length) {
31
31
  throw new Error(`Array length should be at least ${length} items, received ${v.length}`);
32
32
  }
33
- });
33
+ }, length);
34
34
  return this;
35
35
  }
36
36
  max(length) {
@@ -38,7 +38,7 @@ import XVMap from'./Map.mjs';import XVObject from'./Object.mjs';import XVRecord
38
38
  if (v.length > length) {
39
39
  throw new Error(`Array length should not exceed ${length} items, received ${v.length}`);
40
40
  }
41
- });
41
+ }, length);
42
42
  return this;
43
43
  }
44
44
  unique() {
@@ -1 +1 @@
1
- {"version":3,"file":"Array.mjs","sources":["../../src/types/Array.ts"],"sourcesContent":["import XVMap from \"./Map\";\nimport XVObject from \"./Object\";\nimport XVRecord from \"./Record\";\nimport XanvType from \"../XanvType\";\nimport { XVInstanceType } from \"../types\";\n\nexport type XVArrayInfo = \"min\" | \"max\" | \"unique\"\n\nclass XVArray extends XanvType<XVArrayInfo, any[]> {\n private type?: XVInstanceType;\n private length?: number;\n constructor(type?: XVInstanceType, length?: number) {\n super();\n this.type = type;\n this.length = length;\n }\n\n protected check(value: any): void {\n let _value = value;\n if (!Array.isArray(value)) {\n throw new Error(`Value should be an array, received ${typeof value}`);\n }\n\n if (this.length !== undefined && value.length !== this.length) {\n throw new Error(`Array length should be ${this.length}, received ${value.length}`);\n }\n\n if (this.type) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n try {\n _value[i] = this.type.parse(item);\n } catch (error: any) {\n throw new Error(`Array item at index ${i} should be of type ${this.type.constructor.name}, received ${typeof item}: ${error.message}`);\n }\n }\n }\n return _value;\n }\n\n min(length: number): this {\n this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Array length should be at least ${length} items, received ${v.length}`)\n }\n });\n return this;\n }\n\n max(length: number): this {\n this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Array length should not exceed ${length} items, received ${v.length}`)\n }\n });\n return this;\n }\n\n unique(): this {\n this.set(\"unique\", v => {\n let format: any = []\n for (let i = 0; i < v.length; i++) {\n if (this.type instanceof XVObject || this.type instanceof XVRecord) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVArray) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVMap) {\n const u = JSON.stringify(Array.from(v.entries()));\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n }\n }\n\n const uitems = new Set(v);\n if (uitems.size !== v.length) {\n throw new Error(`Array items should be unique, found duplicates`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVArray;"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Array.mjs","sources":["../../src/types/Array.ts"],"sourcesContent":["import XVMap from \"./Map\";\nimport XVObject from \"./Object\";\nimport XVRecord from \"./Record\";\nimport XanvType from \"../XanvType\";\nimport { XVInstanceType } from \"../types\";\n\nexport type XVArrayInfo = \"min\" | \"max\" | \"unique\"\n\nclass XVArray extends XanvType<XVArrayInfo, any[]> {\n private type?: XVInstanceType;\n private length?: number;\n constructor(type?: XVInstanceType, length?: number) {\n super();\n this.type = type;\n this.length = length;\n }\n\n protected check(value: any): void {\n let _value = value;\n if (!Array.isArray(value)) {\n throw new Error(`Value should be an array, received ${typeof value}`);\n }\n\n if (this.length !== undefined && value.length !== this.length) {\n throw new Error(`Array length should be ${this.length}, received ${value.length}`);\n }\n\n if (this.type) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n try {\n _value[i] = this.type.parse(item);\n } catch (error: any) {\n throw new Error(`Array item at index ${i} should be of type ${this.type.constructor.name}, received ${typeof item}: ${error.message}`);\n }\n }\n }\n return _value;\n }\n\n min(length: number): this {\n this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Array length should be at least ${length} items, received ${v.length}`)\n }\n }, length);\n return this;\n }\n\n max(length: number): this {\n this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Array length should not exceed ${length} items, received ${v.length}`)\n }\n }, length);\n return this;\n }\n\n unique(): this {\n this.set(\"unique\", v => {\n let format: any = []\n for (let i = 0; i < v.length; i++) {\n if (this.type instanceof XVObject || this.type instanceof XVRecord) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVArray) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVMap) {\n const u = JSON.stringify(Array.from(v.entries()));\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n }\n }\n\n const uitems = new Set(v);\n if (uitems.size !== v.length) {\n throw new Error(`Array items should be unique, found duplicates`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVArray;"],"names":[],"mappings":"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"}
package/types/File.js CHANGED
@@ -19,7 +19,7 @@
19
19
  if (v.size < size) {
20
20
  throw new Error(`File size should be at least ${size} bytes, received ${v.size} bytes`);
21
21
  }
22
- });
22
+ }, size);
23
23
  return this;
24
24
  }
25
25
  maxSize(size) {
@@ -27,7 +27,7 @@
27
27
  if (v.size > size) {
28
28
  throw new Error(`File size should not exceed ${size} bytes, received ${v.size} bytes`);
29
29
  }
30
- });
30
+ }, size);
31
31
  return this;
32
32
  }
33
33
  type(allowedTypes) {
@@ -35,7 +35,7 @@
35
35
  if (!allowedTypes.includes(v.type)) {
36
36
  throw new Error(`File type ${v.type} is not allowed. Allowed types are: ${allowedTypes.join(', ')}`);
37
37
  }
38
- });
38
+ }, allowedTypes);
39
39
  return this;
40
40
  }
41
41
  extension(allowedExtensions) {
@@ -44,7 +44,7 @@
44
44
  if (!ext || !allowedExtensions.includes(ext)) {
45
45
  throw new Error(`File extension ${ext} is not allowed. Allowed extensions are: ${allowedExtensions.join(', ')}`);
46
46
  }
47
- });
47
+ }, allowedExtensions);
48
48
  return this;
49
49
  }
50
50
  }exports.default=XVFile;//# sourceMappingURL=File.js.map
package/types/File.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"File.js","sources":["../../src/types/File.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nexport type XVFileInfo = \"size\" | \"minsize\" | \"maxsize\" | \"type\" | \"extension\";\nclass XVFile extends XanvType<XVFileInfo, boolean> {\n constructor(size?: number) {\n super();\n if (size) {\n this.set('size', (v: any) => {\n if (!(v instanceof File) && !(v instanceof Blob)) {\n throw new Error(`Value should be a File or Blob, received ${typeof v}`);\n }\n });\n }\n }\n\n protected check(value: any) {\n if (!(value instanceof File) || !(value instanceof Blob)) {\n throw new Error(`Value should be a File or Blob, received ${typeof value}`);\n }\n }\n\n minSize(size: number): this {\n this.set('minsize', (v: any) => {\n if (v.size < size) {\n throw new Error(`File size should be at least ${size} bytes, received ${v.size} bytes`);\n }\n });\n return this;\n }\n\n maxSize(size: number): this {\n this.set('maxsize', (v: any) => {\n if (v.size > size) {\n throw new Error(`File size should not exceed ${size} bytes, received ${v.size} bytes`);\n }\n });\n return this;\n }\n\n type(allowedTypes: string[]): this {\n this.set('type', (v: any) => {\n if (!allowedTypes.includes(v.type)) {\n throw new Error(`File type ${v.type} is not allowed. Allowed types are: ${allowedTypes.join(', ')}`);\n }\n });\n return this;\n }\n\n extension(allowedExtensions: string[]): this {\n this.set('extension', (v: any) => {\n const ext = v.name.split('.').pop();\n if (!ext || !allowedExtensions.includes(ext)) {\n throw new Error(`File extension ${ext} is not allowed. Allowed extensions are: ${allowedExtensions.join(', ')}`);\n }\n });\n return this;\n }\n}\n\nexport default XVFile;"],"names":["XanvType"],"mappings":"6GAEA,MAAM,MAAO,SAAQA,gBAA6B,CAAA;AAC/C,IAAA,WAAA,CAAY,IAAa,EAAA;AACtB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,IAAI,EAAE;YACP,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,KAAI;AACzB,gBAAA,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,EAAE;oBAC/C,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,OAAO,CAAC,CAAA,CAAE,CAAC;AACzE,gBAAA;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA;IACJ;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,OAAO,KAAK,CAAA,CAAE,CAAC;AAC7E,QAAA;IACJ;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACzF,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACxF,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,IAAI,CAAC,YAAsB,EAAA;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,KAAI;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACjC,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,CAAC,CAAC,IAAI,CAAA,oCAAA,EAAuC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACtG,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,iBAA2B,EAAA;QAClC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAM,KAAI;AAC9B,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3C,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,eAAA,EAAkB,GAAG,CAAA,yCAAA,EAA4C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AAClH,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AACF"}
1
+ {"version":3,"file":"File.js","sources":["../../src/types/File.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nexport type XVFileInfo = \"size\" | \"minsize\" | \"maxsize\" | \"type\" | \"extension\";\nclass XVFile extends XanvType<XVFileInfo, boolean> {\n constructor(size?: number) {\n super();\n if (size) {\n this.set('size', (v: any) => {\n if (!(v instanceof File) && !(v instanceof Blob)) {\n throw new Error(`Value should be a File or Blob, received ${typeof v}`);\n }\n });\n }\n }\n\n protected check(value: any) {\n if (!(value instanceof File) || !(value instanceof Blob)) {\n throw new Error(`Value should be a File or Blob, received ${typeof value}`);\n }\n }\n\n minSize(size: number): this {\n this.set('minsize', (v: any) => {\n if (v.size < size) {\n throw new Error(`File size should be at least ${size} bytes, received ${v.size} bytes`);\n }\n }, size);\n return this;\n }\n\n maxSize(size: number): this {\n this.set('maxsize', (v: any) => {\n if (v.size > size) {\n throw new Error(`File size should not exceed ${size} bytes, received ${v.size} bytes`);\n }\n }, size);\n return this;\n }\n\n type(allowedTypes: string[]): this {\n this.set('type', (v: any) => {\n if (!allowedTypes.includes(v.type)) {\n throw new Error(`File type ${v.type} is not allowed. Allowed types are: ${allowedTypes.join(', ')}`);\n }\n }, allowedTypes);\n return this;\n }\n\n extension(allowedExtensions: string[]): this {\n this.set('extension', (v: any) => {\n const ext = v.name.split('.').pop();\n if (!ext || !allowedExtensions.includes(ext)) {\n throw new Error(`File extension ${ext} is not allowed. Allowed extensions are: ${allowedExtensions.join(', ')}`);\n }\n }, allowedExtensions);\n return this;\n }\n}\n\nexport default XVFile;"],"names":["XanvType"],"mappings":"6GAEA,MAAM,MAAO,SAAQA,gBAA6B,CAAA;AAC/C,IAAA,WAAA,CAAY,IAAa,EAAA;AACtB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,IAAI,EAAE;YACP,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,KAAI;AACzB,gBAAA,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,EAAE;oBAC/C,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,OAAO,CAAC,CAAA,CAAE,CAAC;AACzE,gBAAA;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA;IACJ;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,OAAO,KAAK,CAAA,CAAE,CAAC;AAC7E,QAAA;IACJ;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACzF,YAAA;QACJ,CAAC,EAAE,IAAI,CAAC;AACR,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACxF,YAAA;QACJ,CAAC,EAAE,IAAI,CAAC;AACR,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,IAAI,CAAC,YAAsB,EAAA;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,KAAI;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACjC,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,CAAC,CAAC,IAAI,CAAA,oCAAA,EAAuC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACtG,YAAA;QACJ,CAAC,EAAE,YAAY,CAAC;AAChB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,iBAA2B,EAAA;QAClC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAM,KAAI;AAC9B,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3C,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,eAAA,EAAkB,GAAG,CAAA,yCAAA,EAA4C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AAClH,YAAA;QACJ,CAAC,EAAE,iBAAiB,CAAC;AACrB,QAAA,OAAO,IAAI;IACd;AACF"}
package/types/File.mjs CHANGED
@@ -19,7 +19,7 @@ import XanvType from'../XanvType.mjs';class XVFile extends XanvType {
19
19
  if (v.size < size) {
20
20
  throw new Error(`File size should be at least ${size} bytes, received ${v.size} bytes`);
21
21
  }
22
- });
22
+ }, size);
23
23
  return this;
24
24
  }
25
25
  maxSize(size) {
@@ -27,7 +27,7 @@ import XanvType from'../XanvType.mjs';class XVFile extends XanvType {
27
27
  if (v.size > size) {
28
28
  throw new Error(`File size should not exceed ${size} bytes, received ${v.size} bytes`);
29
29
  }
30
- });
30
+ }, size);
31
31
  return this;
32
32
  }
33
33
  type(allowedTypes) {
@@ -35,7 +35,7 @@ import XanvType from'../XanvType.mjs';class XVFile extends XanvType {
35
35
  if (!allowedTypes.includes(v.type)) {
36
36
  throw new Error(`File type ${v.type} is not allowed. Allowed types are: ${allowedTypes.join(', ')}`);
37
37
  }
38
- });
38
+ }, allowedTypes);
39
39
  return this;
40
40
  }
41
41
  extension(allowedExtensions) {
@@ -44,7 +44,7 @@ import XanvType from'../XanvType.mjs';class XVFile extends XanvType {
44
44
  if (!ext || !allowedExtensions.includes(ext)) {
45
45
  throw new Error(`File extension ${ext} is not allowed. Allowed extensions are: ${allowedExtensions.join(', ')}`);
46
46
  }
47
- });
47
+ }, allowedExtensions);
48
48
  return this;
49
49
  }
50
50
  }export{XVFile as default};//# sourceMappingURL=File.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"File.mjs","sources":["../../src/types/File.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nexport type XVFileInfo = \"size\" | \"minsize\" | \"maxsize\" | \"type\" | \"extension\";\nclass XVFile extends XanvType<XVFileInfo, boolean> {\n constructor(size?: number) {\n super();\n if (size) {\n this.set('size', (v: any) => {\n if (!(v instanceof File) && !(v instanceof Blob)) {\n throw new Error(`Value should be a File or Blob, received ${typeof v}`);\n }\n });\n }\n }\n\n protected check(value: any) {\n if (!(value instanceof File) || !(value instanceof Blob)) {\n throw new Error(`Value should be a File or Blob, received ${typeof value}`);\n }\n }\n\n minSize(size: number): this {\n this.set('minsize', (v: any) => {\n if (v.size < size) {\n throw new Error(`File size should be at least ${size} bytes, received ${v.size} bytes`);\n }\n });\n return this;\n }\n\n maxSize(size: number): this {\n this.set('maxsize', (v: any) => {\n if (v.size > size) {\n throw new Error(`File size should not exceed ${size} bytes, received ${v.size} bytes`);\n }\n });\n return this;\n }\n\n type(allowedTypes: string[]): this {\n this.set('type', (v: any) => {\n if (!allowedTypes.includes(v.type)) {\n throw new Error(`File type ${v.type} is not allowed. Allowed types are: ${allowedTypes.join(', ')}`);\n }\n });\n return this;\n }\n\n extension(allowedExtensions: string[]): this {\n this.set('extension', (v: any) => {\n const ext = v.name.split('.').pop();\n if (!ext || !allowedExtensions.includes(ext)) {\n throw new Error(`File extension ${ext} is not allowed. Allowed extensions are: ${allowedExtensions.join(', ')}`);\n }\n });\n return this;\n }\n}\n\nexport default XVFile;"],"names":[],"mappings":"sCAEA,MAAM,MAAO,SAAQ,QAA6B,CAAA;AAC/C,IAAA,WAAA,CAAY,IAAa,EAAA;AACtB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,IAAI,EAAE;YACP,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,KAAI;AACzB,gBAAA,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,EAAE;oBAC/C,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,OAAO,CAAC,CAAA,CAAE,CAAC;AACzE,gBAAA;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA;IACJ;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,OAAO,KAAK,CAAA,CAAE,CAAC;AAC7E,QAAA;IACJ;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACzF,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACxF,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,IAAI,CAAC,YAAsB,EAAA;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,KAAI;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACjC,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,CAAC,CAAC,IAAI,CAAA,oCAAA,EAAuC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACtG,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,iBAA2B,EAAA;QAClC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAM,KAAI;AAC9B,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3C,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,eAAA,EAAkB,GAAG,CAAA,yCAAA,EAA4C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AAClH,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AACF"}
1
+ {"version":3,"file":"File.mjs","sources":["../../src/types/File.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nexport type XVFileInfo = \"size\" | \"minsize\" | \"maxsize\" | \"type\" | \"extension\";\nclass XVFile extends XanvType<XVFileInfo, boolean> {\n constructor(size?: number) {\n super();\n if (size) {\n this.set('size', (v: any) => {\n if (!(v instanceof File) && !(v instanceof Blob)) {\n throw new Error(`Value should be a File or Blob, received ${typeof v}`);\n }\n });\n }\n }\n\n protected check(value: any) {\n if (!(value instanceof File) || !(value instanceof Blob)) {\n throw new Error(`Value should be a File or Blob, received ${typeof value}`);\n }\n }\n\n minSize(size: number): this {\n this.set('minsize', (v: any) => {\n if (v.size < size) {\n throw new Error(`File size should be at least ${size} bytes, received ${v.size} bytes`);\n }\n }, size);\n return this;\n }\n\n maxSize(size: number): this {\n this.set('maxsize', (v: any) => {\n if (v.size > size) {\n throw new Error(`File size should not exceed ${size} bytes, received ${v.size} bytes`);\n }\n }, size);\n return this;\n }\n\n type(allowedTypes: string[]): this {\n this.set('type', (v: any) => {\n if (!allowedTypes.includes(v.type)) {\n throw new Error(`File type ${v.type} is not allowed. Allowed types are: ${allowedTypes.join(', ')}`);\n }\n }, allowedTypes);\n return this;\n }\n\n extension(allowedExtensions: string[]): this {\n this.set('extension', (v: any) => {\n const ext = v.name.split('.').pop();\n if (!ext || !allowedExtensions.includes(ext)) {\n throw new Error(`File extension ${ext} is not allowed. Allowed extensions are: ${allowedExtensions.join(', ')}`);\n }\n }, allowedExtensions);\n return this;\n }\n}\n\nexport default XVFile;"],"names":[],"mappings":"sCAEA,MAAM,MAAO,SAAQ,QAA6B,CAAA;AAC/C,IAAA,WAAA,CAAY,IAAa,EAAA;AACtB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,IAAI,EAAE;YACP,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,KAAI;AACzB,gBAAA,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,EAAE;oBAC/C,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,OAAO,CAAC,CAAA,CAAE,CAAC;AACzE,gBAAA;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA;IACJ;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,CAAA,yCAAA,EAA4C,OAAO,KAAK,CAAA,CAAE,CAAC;AAC7E,QAAA;IACJ;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACzF,YAAA;QACJ,CAAC,EAAE,IAAI,CAAC;AACR,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,MAAA,CAAQ,CAAC;AACxF,YAAA;QACJ,CAAC,EAAE,IAAI,CAAC;AACR,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,IAAI,CAAC,YAAsB,EAAA;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAM,KAAI;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACjC,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,CAAC,CAAC,IAAI,CAAA,oCAAA,EAAuC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACtG,YAAA;QACJ,CAAC,EAAE,YAAY,CAAC;AAChB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,iBAA2B,EAAA;QAClC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAM,KAAI;AAC9B,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3C,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,eAAA,EAAkB,GAAG,CAAA,yCAAA,EAA4C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AAClH,YAAA;QACJ,CAAC,EAAE,iBAAiB,CAAC;AACrB,QAAA,OAAO,IAAI;IACd;AACF"}
package/types/Number.js CHANGED
@@ -19,7 +19,7 @@
19
19
  if (v < value) {
20
20
  throw new Error(`Minimum value should be ${value}`);
21
21
  }
22
- });
22
+ }, value);
23
23
  return this;
24
24
  }
25
25
  max(value) {
@@ -27,7 +27,7 @@
27
27
  if (v > value) {
28
28
  throw new Error(`Maximum value should be ${value}`);
29
29
  }
30
- });
30
+ }, value);
31
31
  return this;
32
32
  }
33
33
  positive() {
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nexport type XVNumberInfo =\n | \"length\"\n | \"min\"\n | \"max\"\n | \"positive\"\n | \"negative\"\n | \"integer\"\n | \"float\";\n\nclass XVNumber extends XanvType<XVNumberInfo, number> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.set(\"length\", (v) => {\n if (v.toString().length !== length) {\n throw new Error(`Number length should be ${length} digits, received ${v.toString().length}`);\n }\n });\n }\n }\n\n protected check(value: any): void {\n if (typeof value !== 'number') {\n throw new Error(`Value should be a number, received ${typeof value}`);\n }\n }\n\n min(value: number): this {\n this.set(\"min\", v => {\n if (v < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n });\n return this;\n }\n\n max(value: number): this {\n this.set(\"max\", v => {\n if (v > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n });\n return this;\n }\n\n positive(): this {\n this.set(\"positive\", v => {\n if (v < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n return this;\n }\n\n negative(): this {\n this.set(\"negative\", v => {\n if (v > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n return this;\n }\n\n integer(): this {\n this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n return this;\n }\n\n float(): this {\n this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVNumber;"],"names":["XanvType"],"mappings":"6GAUA,MAAM,QAAS,SAAQA,gBAA8B,CAAA;AAElD,IAAA,WAAA,CAAY,MAAe,EAAA;AACxB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,MAAM,EAAE;YACT,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;gBACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,MAAM,EAAE;AACjC,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,EAA2B,MAAM,CAAA,kBAAA,EAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA,CAAE,CAAC;AAC9F,gBAAA;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA;IACJ;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,OAAO,KAAK,CAAA,CAAE,CAAC;AACvE,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;YACjB,IAAI,CAAC,GAAG,KAAK,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC;AACrD,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;YACjB,IAAI,CAAC,GAAG,KAAK,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC;AACrD,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAG;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAG;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,OAAO,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAG;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,CAA4B,CAAC;AAC/C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAG;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC7C,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,CAAyB,CAAC;AAC5C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEF"}
1
+ {"version":3,"file":"Number.js","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nexport type XVNumberInfo =\n | \"length\"\n | \"min\"\n | \"max\"\n | \"positive\"\n | \"negative\"\n | \"integer\"\n | \"float\";\n\nclass XVNumber extends XanvType<XVNumberInfo, number> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.set(\"length\", (v) => {\n if (v.toString().length !== length) {\n throw new Error(`Number length should be ${length} digits, received ${v.toString().length}`);\n }\n });\n }\n }\n\n protected check(value: any): void {\n if (typeof value !== 'number') {\n throw new Error(`Value should be a number, received ${typeof value}`);\n }\n }\n\n min(value: number): this {\n this.set(\"min\", v => {\n if (v < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n }, value);\n return this;\n }\n\n max(value: number): this {\n this.set(\"max\", v => {\n if (v > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n }, value);\n return this;\n }\n\n positive(): this {\n this.set(\"positive\", v => {\n if (v < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n return this;\n }\n\n negative(): this {\n this.set(\"negative\", v => {\n if (v > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n return this;\n }\n\n integer(): this {\n this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n return this;\n }\n\n float(): this {\n this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVNumber;"],"names":["XanvType"],"mappings":"6GAUA,MAAM,QAAS,SAAQA,gBAA8B,CAAA;AAElD,IAAA,WAAA,CAAY,MAAe,EAAA;AACxB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,MAAM,EAAE;YACT,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;gBACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,MAAM,EAAE;AACjC,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,EAA2B,MAAM,CAAA,kBAAA,EAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA,CAAE,CAAC;AAC9F,gBAAA;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA;IACJ;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,OAAO,KAAK,CAAA,CAAE,CAAC;AACvE,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;YACjB,IAAI,CAAC,GAAG,KAAK,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC;AACrD,YAAA;QACJ,CAAC,EAAE,KAAK,CAAC;AACT,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;YACjB,IAAI,CAAC,GAAG,KAAK,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC;AACrD,YAAA;QACJ,CAAC,EAAE,KAAK,CAAC;AACT,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAG;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAG;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,OAAO,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAG;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,CAA4B,CAAC;AAC/C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAG;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC7C,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,CAAyB,CAAC;AAC5C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEF"}
package/types/Number.mjs CHANGED
@@ -19,7 +19,7 @@ import XanvType from'../XanvType.mjs';class XVNumber extends XanvType {
19
19
  if (v < value) {
20
20
  throw new Error(`Minimum value should be ${value}`);
21
21
  }
22
- });
22
+ }, value);
23
23
  return this;
24
24
  }
25
25
  max(value) {
@@ -27,7 +27,7 @@ import XanvType from'../XanvType.mjs';class XVNumber extends XanvType {
27
27
  if (v > value) {
28
28
  throw new Error(`Maximum value should be ${value}`);
29
29
  }
30
- });
30
+ }, value);
31
31
  return this;
32
32
  }
33
33
  positive() {
@@ -1 +1 @@
1
- {"version":3,"file":"Number.mjs","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nexport type XVNumberInfo =\n | \"length\"\n | \"min\"\n | \"max\"\n | \"positive\"\n | \"negative\"\n | \"integer\"\n | \"float\";\n\nclass XVNumber extends XanvType<XVNumberInfo, number> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.set(\"length\", (v) => {\n if (v.toString().length !== length) {\n throw new Error(`Number length should be ${length} digits, received ${v.toString().length}`);\n }\n });\n }\n }\n\n protected check(value: any): void {\n if (typeof value !== 'number') {\n throw new Error(`Value should be a number, received ${typeof value}`);\n }\n }\n\n min(value: number): this {\n this.set(\"min\", v => {\n if (v < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n });\n return this;\n }\n\n max(value: number): this {\n this.set(\"max\", v => {\n if (v > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n });\n return this;\n }\n\n positive(): this {\n this.set(\"positive\", v => {\n if (v < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n return this;\n }\n\n negative(): this {\n this.set(\"negative\", v => {\n if (v > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n return this;\n }\n\n integer(): this {\n this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n return this;\n }\n\n float(): this {\n this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVNumber;"],"names":[],"mappings":"sCAUA,MAAM,QAAS,SAAQ,QAA8B,CAAA;AAElD,IAAA,WAAA,CAAY,MAAe,EAAA;AACxB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,MAAM,EAAE;YACT,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;gBACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,MAAM,EAAE;AACjC,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,EAA2B,MAAM,CAAA,kBAAA,EAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA,CAAE,CAAC;AAC9F,gBAAA;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA;IACJ;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,OAAO,KAAK,CAAA,CAAE,CAAC;AACvE,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;YACjB,IAAI,CAAC,GAAG,KAAK,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC;AACrD,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;YACjB,IAAI,CAAC,GAAG,KAAK,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC;AACrD,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAG;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAG;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,OAAO,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAG;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,CAA4B,CAAC;AAC/C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAG;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC7C,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,CAAyB,CAAC;AAC5C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEF"}
1
+ {"version":3,"file":"Number.mjs","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nexport type XVNumberInfo =\n | \"length\"\n | \"min\"\n | \"max\"\n | \"positive\"\n | \"negative\"\n | \"integer\"\n | \"float\";\n\nclass XVNumber extends XanvType<XVNumberInfo, number> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.set(\"length\", (v) => {\n if (v.toString().length !== length) {\n throw new Error(`Number length should be ${length} digits, received ${v.toString().length}`);\n }\n });\n }\n }\n\n protected check(value: any): void {\n if (typeof value !== 'number') {\n throw new Error(`Value should be a number, received ${typeof value}`);\n }\n }\n\n min(value: number): this {\n this.set(\"min\", v => {\n if (v < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n }, value);\n return this;\n }\n\n max(value: number): this {\n this.set(\"max\", v => {\n if (v > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n }, value);\n return this;\n }\n\n positive(): this {\n this.set(\"positive\", v => {\n if (v < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n return this;\n }\n\n negative(): this {\n this.set(\"negative\", v => {\n if (v > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n return this;\n }\n\n integer(): this {\n this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n return this;\n }\n\n float(): this {\n this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVNumber;"],"names":[],"mappings":"sCAUA,MAAM,QAAS,SAAQ,QAA8B,CAAA;AAElD,IAAA,WAAA,CAAY,MAAe,EAAA;AACxB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,MAAM,EAAE;YACT,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAI;gBACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,MAAM,EAAE;AACjC,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,EAA2B,MAAM,CAAA,kBAAA,EAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA,CAAE,CAAC;AAC9F,gBAAA;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA;IACJ;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,OAAO,KAAK,CAAA,CAAE,CAAC;AACvE,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;YACjB,IAAI,CAAC,GAAG,KAAK,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC;AACrD,YAAA;QACJ,CAAC,EAAE,KAAK,CAAC;AACT,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;YACjB,IAAI,CAAC,GAAG,KAAK,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC;AACrD,YAAA;QACJ,CAAC,EAAE,KAAK,CAAC;AACT,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAG;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAG;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAC7C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,OAAO,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAG;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,CAA4B,CAAC;AAC/C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAG;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC7C,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,CAAyB,CAAC;AAC5C,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEF"}
package/types/Set.js CHANGED
@@ -21,7 +21,7 @@
21
21
  if (v.size < length) {
22
22
  throw new Error(`Set size should be at least ${length} items, received ${v.size}`);
23
23
  }
24
- });
24
+ }, length);
25
25
  return this;
26
26
  }
27
27
  max(length) {
@@ -29,7 +29,7 @@
29
29
  if (v.size > length) {
30
30
  throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);
31
31
  }
32
- });
32
+ }, length);
33
33
  return this;
34
34
  }
35
35
  }exports.default=XVSet;//# sourceMappingURL=Set.js.map
package/types/Set.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Set.js","sources":["../../src/types/Set.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nexport type XVSetInfo = \"min\" | \"max\";\n\nclass XVSet extends XanvType<XVSetInfo, Set<any>> {\n\n private XVtype: XVInstanceType;\n\n constructor(XVtype: XVInstanceType) {\n super();\n this.XVtype = XVtype;\n }\n\n check(value: any): void {\n if (!(value instanceof Set)) {\n throw new Error(`Value should be a Set, received ${typeof value}`);\n }\n\n for (const item of Array.from(value)) {\n try {\n this.XVtype.parse(item);\n } catch (error) {\n throw new Error(`Set item should be of type ${this.XVtype.constructor.name}, received ${typeof item}`);\n }\n }\n }\n\n min(length: number): this {\n this.set(\"min\", (v: any) => {\n if (v.size < length) {\n throw new Error(`Set size should be at least ${length} items, received ${v.size}`);\n }\n });\n return this;\n }\n\n max(length: number): this {\n this.set(\"max\", (v: any) => {\n if (v.size > length) {\n throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);\n }\n });\n return this;\n }\n\n\n}\n\nexport default XVSet;"],"names":["XanvType"],"mappings":"6GAKA,MAAM,KAAM,SAAQA,gBAA6B,CAAA;AAI9C,IAAA,WAAA,CAAY,MAAsB,EAAA;AAC/B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAE,CAAC;AACxG,YAAA;AACH,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACnF,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAGF"}
1
+ {"version":3,"file":"Set.js","sources":["../../src/types/Set.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nexport type XVSetInfo = \"min\" | \"max\";\n\nclass XVSet extends XanvType<XVSetInfo, Set<any>> {\n\n private XVtype: XVInstanceType;\n\n constructor(XVtype: XVInstanceType) {\n super();\n this.XVtype = XVtype;\n }\n\n check(value: any): void {\n if (!(value instanceof Set)) {\n throw new Error(`Value should be a Set, received ${typeof value}`);\n }\n\n for (const item of Array.from(value)) {\n try {\n this.XVtype.parse(item);\n } catch (error) {\n throw new Error(`Set item should be of type ${this.XVtype.constructor.name}, received ${typeof item}`);\n }\n }\n }\n\n min(length: number): this {\n this.set(\"min\", (v: any) => {\n if (v.size < length) {\n throw new Error(`Set size should be at least ${length} items, received ${v.size}`);\n }\n }, length);\n return this;\n }\n\n max(length: number): this {\n this.set(\"max\", (v: any) => {\n if (v.size > length) {\n throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);\n }\n }, length);\n return this;\n }\n\n\n}\n\nexport default XVSet;"],"names":["XanvType"],"mappings":"6GAKA,MAAM,KAAM,SAAQA,gBAA6B,CAAA;AAI9C,IAAA,WAAA,CAAY,MAAsB,EAAA;AAC/B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAE,CAAC;AACxG,YAAA;AACH,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;AACV,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACnF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;AACV,QAAA,OAAO,IAAI;IACd;AAGF"}
package/types/Set.mjs CHANGED
@@ -21,7 +21,7 @@ import XanvType from'../XanvType.mjs';class XVSet extends XanvType {
21
21
  if (v.size < length) {
22
22
  throw new Error(`Set size should be at least ${length} items, received ${v.size}`);
23
23
  }
24
- });
24
+ }, length);
25
25
  return this;
26
26
  }
27
27
  max(length) {
@@ -29,7 +29,7 @@ import XanvType from'../XanvType.mjs';class XVSet extends XanvType {
29
29
  if (v.size > length) {
30
30
  throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);
31
31
  }
32
- });
32
+ }, length);
33
33
  return this;
34
34
  }
35
35
  }export{XVSet as default};//# sourceMappingURL=Set.mjs.map
package/types/Set.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Set.mjs","sources":["../../src/types/Set.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nexport type XVSetInfo = \"min\" | \"max\";\n\nclass XVSet extends XanvType<XVSetInfo, Set<any>> {\n\n private XVtype: XVInstanceType;\n\n constructor(XVtype: XVInstanceType) {\n super();\n this.XVtype = XVtype;\n }\n\n check(value: any): void {\n if (!(value instanceof Set)) {\n throw new Error(`Value should be a Set, received ${typeof value}`);\n }\n\n for (const item of Array.from(value)) {\n try {\n this.XVtype.parse(item);\n } catch (error) {\n throw new Error(`Set item should be of type ${this.XVtype.constructor.name}, received ${typeof item}`);\n }\n }\n }\n\n min(length: number): this {\n this.set(\"min\", (v: any) => {\n if (v.size < length) {\n throw new Error(`Set size should be at least ${length} items, received ${v.size}`);\n }\n });\n return this;\n }\n\n max(length: number): this {\n this.set(\"max\", (v: any) => {\n if (v.size > length) {\n throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);\n }\n });\n return this;\n }\n\n\n}\n\nexport default XVSet;"],"names":[],"mappings":"sCAKA,MAAM,KAAM,SAAQ,QAA6B,CAAA;AAI9C,IAAA,WAAA,CAAY,MAAsB,EAAA;AAC/B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAE,CAAC;AACxG,YAAA;AACH,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACnF,YAAA;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACd;AAGF"}
1
+ {"version":3,"file":"Set.mjs","sources":["../../src/types/Set.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nexport type XVSetInfo = \"min\" | \"max\";\n\nclass XVSet extends XanvType<XVSetInfo, Set<any>> {\n\n private XVtype: XVInstanceType;\n\n constructor(XVtype: XVInstanceType) {\n super();\n this.XVtype = XVtype;\n }\n\n check(value: any): void {\n if (!(value instanceof Set)) {\n throw new Error(`Value should be a Set, received ${typeof value}`);\n }\n\n for (const item of Array.from(value)) {\n try {\n this.XVtype.parse(item);\n } catch (error) {\n throw new Error(`Set item should be of type ${this.XVtype.constructor.name}, received ${typeof item}`);\n }\n }\n }\n\n min(length: number): this {\n this.set(\"min\", (v: any) => {\n if (v.size < length) {\n throw new Error(`Set size should be at least ${length} items, received ${v.size}`);\n }\n }, length);\n return this;\n }\n\n max(length: number): this {\n this.set(\"max\", (v: any) => {\n if (v.size > length) {\n throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);\n }\n }, length);\n return this;\n }\n\n\n}\n\nexport default XVSet;"],"names":[],"mappings":"sCAKA,MAAM,KAAM,SAAQ,QAA6B,CAAA;AAI9C,IAAA,WAAA,CAAY,MAAsB,EAAA;AAC/B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAE,CAAC;AACxG,YAAA;AACH,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;AACV,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AACxB,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACnF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;AACV,QAAA,OAAO,IAAI;IACd;AAGF"}
package/types/String.js CHANGED
@@ -19,7 +19,7 @@
19
19
  if (v.length < length) {
20
20
  throw new Error(`Minimum length should be ${length} characters, received ${v.length}`);
21
21
  }
22
- });
22
+ }, length);
23
23
  return this;
24
24
  }
25
25
  max(length) {
@@ -27,7 +27,7 @@
27
27
  if (v.length > length) {
28
28
  throw new Error(`Maximum length should be ${length} characters, received ${v.length}`);
29
29
  }
30
- });
30
+ }, length);
31
31
  return this;
32
32
  }
33
33
  email() {
@@ -1 +1 @@
1
- {"version":3,"file":"String.js","sources":["../../src/types/String.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\n\nexport type XVStringInfo =\n | \"min\"\n | \"max\"\n | \"length\"\n | \"email\"\n | \"toUpperCase\"\n | \"toLowerCase\"\n | \"number\"\n | \"date\"\n | \"base64\";\n\nclass XVString extends XanvType<XVStringInfo, string> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.set(\"length\", (v) => {\n if (v.length !== length) {\n throw new Error(`String length should be ${length} characters, received ${v.length}`);\n }\n })\n }\n }\n\n protected check(value: string): void {\n if (typeof value !== 'string') {\n throw new Error(`Value should be a string, received ${typeof value}`);\n }\n }\n\n min(length: number): this {\n this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Minimum length should be ${length} characters, received ${v.length}`);\n }\n });\n return this\n }\n\n max(length: number): this {\n this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Maximum length should be ${length} characters, received ${v.length}`);\n }\n });\n return this\n }\n\n email(): this {\n this.set(\"email\", (v: string) => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(v)) {\n throw new Error(`String should be a valid email address`);\n }\n });\n return this\n }\n\n toUpperCase(): this {\n this.set(\"toUpperCase\", v => {\n if (v !== v.toUpperCase()) {\n throw new Error(`String should be in uppercase`);\n }\n });\n return this\n }\n\n toLowerCase(): this {\n this.set(\"toLowerCase\", v => {\n if (v !== v.toLowerCase()) {\n throw new Error(`String should be in lowercase`);\n }\n });\n return this\n }\n\n number(): this {\n this.set(\"number\", (v: string) => {\n if (isNaN(Number(v))) {\n throw new Error(`String should be a valid number`);\n }\n });\n return this\n }\n\n date(): this {\n this.set(\"date\", (v: string) => {\n const date = new Date(v);\n if (isNaN(date.getTime())) {\n throw new Error(`String should be a valid date`);\n }\n });\n return this;\n }\n\n base64(): this {\n this.set(\"base64\", (v: string) => {\n if (!/^[A-Za-z0-9+/]+={0,2}$/.test(v)) {\n throw new Error(`String should be a valid Base64 encoded string`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVString;"],"names":["XanvType"],"mappings":"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"}
1
+ {"version":3,"file":"String.js","sources":["../../src/types/String.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\n\nexport type XVStringInfo =\n | \"min\"\n | \"max\"\n | \"length\"\n | \"email\"\n | \"toUpperCase\"\n | \"toLowerCase\"\n | \"number\"\n | \"date\"\n | \"base64\";\n\nclass XVString extends XanvType<XVStringInfo, string> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.set(\"length\", (v) => {\n if (v.length !== length) {\n throw new Error(`String length should be ${length} characters, received ${v.length}`);\n }\n })\n }\n }\n\n protected check(value: string): void {\n if (typeof value !== 'string') {\n throw new Error(`Value should be a string, received ${typeof value}`);\n }\n }\n\n min(length: number): this {\n this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Minimum length should be ${length} characters, received ${v.length}`);\n }\n }, length);\n return this\n }\n\n max(length: number): this {\n this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Maximum length should be ${length} characters, received ${v.length}`);\n }\n }, length);\n return this\n }\n\n email(): this {\n this.set(\"email\", (v: string) => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(v)) {\n throw new Error(`String should be a valid email address`);\n }\n });\n return this\n }\n\n toUpperCase(): this {\n this.set(\"toUpperCase\", v => {\n if (v !== v.toUpperCase()) {\n throw new Error(`String should be in uppercase`);\n }\n });\n return this\n }\n\n toLowerCase(): this {\n this.set(\"toLowerCase\", v => {\n if (v !== v.toLowerCase()) {\n throw new Error(`String should be in lowercase`);\n }\n });\n return this\n }\n\n number(): this {\n this.set(\"number\", (v: string) => {\n if (isNaN(Number(v))) {\n throw new Error(`String should be a valid number`);\n }\n });\n return this\n }\n\n date(): this {\n this.set(\"date\", (v: string) => {\n const date = new Date(v);\n if (isNaN(date.getTime())) {\n throw new Error(`String should be a valid date`);\n }\n });\n return this;\n }\n\n base64(): this {\n this.set(\"base64\", (v: string) => {\n if (!/^[A-Za-z0-9+/]+={0,2}$/.test(v)) {\n throw new Error(`String should be a valid Base64 encoded string`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVString;"],"names":["XanvType"],"mappings":"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"}
package/types/String.mjs CHANGED
@@ -19,7 +19,7 @@ import XanvType from'../XanvType.mjs';class XVString extends XanvType {
19
19
  if (v.length < length) {
20
20
  throw new Error(`Minimum length should be ${length} characters, received ${v.length}`);
21
21
  }
22
- });
22
+ }, length);
23
23
  return this;
24
24
  }
25
25
  max(length) {
@@ -27,7 +27,7 @@ import XanvType from'../XanvType.mjs';class XVString extends XanvType {
27
27
  if (v.length > length) {
28
28
  throw new Error(`Maximum length should be ${length} characters, received ${v.length}`);
29
29
  }
30
- });
30
+ }, length);
31
31
  return this;
32
32
  }
33
33
  email() {
@@ -1 +1 @@
1
- {"version":3,"file":"String.mjs","sources":["../../src/types/String.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\n\nexport type XVStringInfo =\n | \"min\"\n | \"max\"\n | \"length\"\n | \"email\"\n | \"toUpperCase\"\n | \"toLowerCase\"\n | \"number\"\n | \"date\"\n | \"base64\";\n\nclass XVString extends XanvType<XVStringInfo, string> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.set(\"length\", (v) => {\n if (v.length !== length) {\n throw new Error(`String length should be ${length} characters, received ${v.length}`);\n }\n })\n }\n }\n\n protected check(value: string): void {\n if (typeof value !== 'string') {\n throw new Error(`Value should be a string, received ${typeof value}`);\n }\n }\n\n min(length: number): this {\n this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Minimum length should be ${length} characters, received ${v.length}`);\n }\n });\n return this\n }\n\n max(length: number): this {\n this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Maximum length should be ${length} characters, received ${v.length}`);\n }\n });\n return this\n }\n\n email(): this {\n this.set(\"email\", (v: string) => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(v)) {\n throw new Error(`String should be a valid email address`);\n }\n });\n return this\n }\n\n toUpperCase(): this {\n this.set(\"toUpperCase\", v => {\n if (v !== v.toUpperCase()) {\n throw new Error(`String should be in uppercase`);\n }\n });\n return this\n }\n\n toLowerCase(): this {\n this.set(\"toLowerCase\", v => {\n if (v !== v.toLowerCase()) {\n throw new Error(`String should be in lowercase`);\n }\n });\n return this\n }\n\n number(): this {\n this.set(\"number\", (v: string) => {\n if (isNaN(Number(v))) {\n throw new Error(`String should be a valid number`);\n }\n });\n return this\n }\n\n date(): this {\n this.set(\"date\", (v: string) => {\n const date = new Date(v);\n if (isNaN(date.getTime())) {\n throw new Error(`String should be a valid date`);\n }\n });\n return this;\n }\n\n base64(): this {\n this.set(\"base64\", (v: string) => {\n if (!/^[A-Za-z0-9+/]+={0,2}$/.test(v)) {\n throw new Error(`String should be a valid Base64 encoded string`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVString;"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"String.mjs","sources":["../../src/types/String.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\n\nexport type XVStringInfo =\n | \"min\"\n | \"max\"\n | \"length\"\n | \"email\"\n | \"toUpperCase\"\n | \"toLowerCase\"\n | \"number\"\n | \"date\"\n | \"base64\";\n\nclass XVString extends XanvType<XVStringInfo, string> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.set(\"length\", (v) => {\n if (v.length !== length) {\n throw new Error(`String length should be ${length} characters, received ${v.length}`);\n }\n })\n }\n }\n\n protected check(value: string): void {\n if (typeof value !== 'string') {\n throw new Error(`Value should be a string, received ${typeof value}`);\n }\n }\n\n min(length: number): this {\n this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Minimum length should be ${length} characters, received ${v.length}`);\n }\n }, length);\n return this\n }\n\n max(length: number): this {\n this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Maximum length should be ${length} characters, received ${v.length}`);\n }\n }, length);\n return this\n }\n\n email(): this {\n this.set(\"email\", (v: string) => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(v)) {\n throw new Error(`String should be a valid email address`);\n }\n });\n return this\n }\n\n toUpperCase(): this {\n this.set(\"toUpperCase\", v => {\n if (v !== v.toUpperCase()) {\n throw new Error(`String should be in uppercase`);\n }\n });\n return this\n }\n\n toLowerCase(): this {\n this.set(\"toLowerCase\", v => {\n if (v !== v.toLowerCase()) {\n throw new Error(`String should be in lowercase`);\n }\n });\n return this\n }\n\n number(): this {\n this.set(\"number\", (v: string) => {\n if (isNaN(Number(v))) {\n throw new Error(`String should be a valid number`);\n }\n });\n return this\n }\n\n date(): this {\n this.set(\"date\", (v: string) => {\n const date = new Date(v);\n if (isNaN(date.getTime())) {\n throw new Error(`String should be a valid date`);\n }\n });\n return this;\n }\n\n base64(): this {\n this.set(\"base64\", (v: string) => {\n if (!/^[A-Za-z0-9+/]+={0,2}$/.test(v)) {\n throw new Error(`String should be a valid Base64 encoded string`);\n }\n });\n return this;\n }\n\n}\n\nexport default XVString;"],"names":[],"mappings":"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"}