xanv 1.1.11 → 1.1.13

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.
Files changed (127) hide show
  1. package/XanvType.cjs +62 -0
  2. package/XanvType.cjs.map +1 -0
  3. package/XanvType.d.ts +20 -14
  4. package/XanvType.js +60 -54
  5. package/XanvType.js.map +1 -1
  6. package/index.cjs +61 -0
  7. package/index.cjs.map +1 -0
  8. package/index.d.ts +25 -29
  9. package/index.js +41 -17
  10. package/index.js.map +1 -1
  11. package/package.json +4 -19
  12. package/readme.md +199 -199
  13. package/types/Any.cjs +16 -0
  14. package/types/Any.cjs.map +1 -0
  15. package/types/Any.d.ts +3 -3
  16. package/types/Any.js +14 -6
  17. package/types/Any.js.map +1 -1
  18. package/types/Array.cjs +66 -0
  19. package/types/Array.cjs.map +1 -0
  20. package/types/Array.d.ts +9 -9
  21. package/types/Array.js +64 -80
  22. package/types/Array.js.map +1 -1
  23. package/types/Boolean.cjs +15 -0
  24. package/types/Boolean.cjs.map +1 -0
  25. package/types/Boolean.d.ts +2 -2
  26. package/types/Boolean.js +13 -7
  27. package/types/Boolean.js.map +1 -1
  28. package/types/{Date.mjs → Date.cjs} +15 -7
  29. package/types/Date.cjs.map +1 -0
  30. package/types/Date.d.ts +2 -2
  31. package/types/Date.js +13 -7
  32. package/types/Date.js.map +1 -1
  33. package/types/Enum.cjs +28 -0
  34. package/types/Enum.cjs.map +1 -0
  35. package/types/Enum.d.ts +4 -5
  36. package/types/Enum.js +26 -25
  37. package/types/Enum.js.map +1 -1
  38. package/types/File.cjs +62 -0
  39. package/types/File.cjs.map +1 -0
  40. package/types/File.d.ts +8 -8
  41. package/types/File.js +60 -52
  42. package/types/File.js.map +1 -1
  43. package/types/Function.cjs +33 -0
  44. package/types/Function.cjs.map +1 -0
  45. package/types/Function.d.ts +15 -0
  46. package/types/Function.js +31 -0
  47. package/types/Function.js.map +1 -0
  48. package/types/Json.cjs +19 -0
  49. package/types/Json.cjs.map +1 -0
  50. package/types/Json.d.ts +3 -3
  51. package/types/Json.js +17 -11
  52. package/types/Json.js.map +1 -1
  53. package/types/Map.cjs +31 -0
  54. package/types/Map.cjs.map +1 -0
  55. package/types/Map.d.ts +6 -6
  56. package/types/Map.js +29 -23
  57. package/types/Map.js.map +1 -1
  58. package/types/{Number.mjs → Number.cjs} +77 -67
  59. package/types/Number.cjs.map +1 -0
  60. package/types/Number.d.ts +10 -10
  61. package/types/Number.js +75 -67
  62. package/types/Number.js.map +1 -1
  63. package/types/Object.cjs +22 -0
  64. package/types/Object.cjs.map +1 -0
  65. package/types/Object.d.ts +11 -5
  66. package/types/Object.js +20 -26
  67. package/types/Object.js.map +1 -1
  68. package/types/Promise.cjs +29 -0
  69. package/types/Promise.cjs.map +1 -0
  70. package/types/Promise.d.ts +11 -0
  71. package/types/Promise.js +27 -0
  72. package/types/Promise.js.map +1 -0
  73. package/types/{Record.mjs → Record.cjs} +31 -24
  74. package/types/Record.cjs.map +1 -0
  75. package/types/Record.d.ts +7 -7
  76. package/types/Record.js +29 -24
  77. package/types/Record.js.map +1 -1
  78. package/types/{Set.mjs → Set.cjs} +41 -33
  79. package/types/Set.cjs.map +1 -0
  80. package/types/Set.d.ts +6 -6
  81. package/types/Set.js +39 -33
  82. package/types/Set.js.map +1 -1
  83. package/types/{String.mjs → String.cjs} +95 -87
  84. package/types/String.cjs.map +1 -0
  85. package/types/String.d.ts +12 -12
  86. package/types/String.js +93 -87
  87. package/types/String.js.map +1 -1
  88. package/types/Tuple.cjs +31 -0
  89. package/types/Tuple.cjs.map +1 -0
  90. package/types/Tuple.d.ts +9 -5
  91. package/types/Tuple.js +29 -23
  92. package/types/Tuple.js.map +1 -1
  93. package/types/Union.cjs +34 -0
  94. package/types/Union.cjs.map +1 -0
  95. package/types/Union.d.ts +5 -4
  96. package/types/Union.js +32 -28
  97. package/types/Union.js.map +1 -1
  98. package/types.d.ts +29 -10
  99. package/XanvType.mjs +0 -54
  100. package/XanvType.mjs.map +0 -1
  101. package/index.mjs +0 -17
  102. package/index.mjs.map +0 -1
  103. package/types/Any.mjs +0 -6
  104. package/types/Any.mjs.map +0 -1
  105. package/types/Array.mjs +0 -80
  106. package/types/Array.mjs.map +0 -1
  107. package/types/Boolean.mjs +0 -7
  108. package/types/Boolean.mjs.map +0 -1
  109. package/types/Date.mjs.map +0 -1
  110. package/types/Enum.mjs +0 -25
  111. package/types/Enum.mjs.map +0 -1
  112. package/types/File.mjs +0 -52
  113. package/types/File.mjs.map +0 -1
  114. package/types/Json.mjs +0 -11
  115. package/types/Json.mjs.map +0 -1
  116. package/types/Map.mjs +0 -23
  117. package/types/Map.mjs.map +0 -1
  118. package/types/Number.mjs.map +0 -1
  119. package/types/Object.mjs +0 -26
  120. package/types/Object.mjs.map +0 -1
  121. package/types/Record.mjs.map +0 -1
  122. package/types/Set.mjs.map +0 -1
  123. package/types/String.mjs.map +0 -1
  124. package/types/Tuple.mjs +0 -23
  125. package/types/Tuple.mjs.map +0 -1
  126. package/types/Union.mjs +0 -28
  127. package/types/Union.mjs.map +0 -1
package/types/File.js CHANGED
@@ -1,52 +1,60 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var XanvType=require('../XanvType.js');class XVFile extends XanvType.default {
2
- constructor(size) {
3
- super();
4
- if (size) {
5
- this.size(size);
6
- }
7
- }
8
- check(value) {
9
- if (!(value instanceof File) || !(value instanceof Blob)) {
10
- throw new Error(`Value should be a File or Blob, received ${typeof value}`);
11
- }
12
- }
13
- size(size) {
14
- return this.set('size', (v) => {
15
- if (!(v instanceof File) && !(v instanceof Blob)) {
16
- throw new Error(`Value should be a File or Blob, received ${typeof v}`);
17
- }
18
- if (v.size !== size) {
19
- throw new Error(`File size should be exactly ${size} bytes, received ${v.size} bytes`);
20
- }
21
- }, size);
22
- }
23
- minsize(size) {
24
- return this.set('minsize', (v) => {
25
- if (v.size < size) {
26
- throw new Error(`File size should be at least ${size} bytes, received ${v.size} bytes`);
27
- }
28
- }, size);
29
- }
30
- maxsize(size) {
31
- return this.set('maxsize', (v) => {
32
- if (v.size > size) {
33
- throw new Error(`File size should not exceed ${size} bytes, received ${v.size} bytes`);
34
- }
35
- }, size);
36
- }
37
- type(allowedTypes) {
38
- return this.set('type', (v) => {
39
- if (!allowedTypes.includes(v.type)) {
40
- throw new Error(`File type ${v.type} is not allowed. Allowed types are: ${allowedTypes.join(', ')}`);
41
- }
42
- }, allowedTypes);
43
- }
44
- extension(allowedExtensions) {
45
- return this.set('extension', (v) => {
46
- const ext = v.name.split('.').pop();
47
- if (!ext || !allowedExtensions.includes(ext)) {
48
- throw new Error(`File extension ${ext} is not allowed. Allowed extensions are: ${allowedExtensions.join(', ')}`);
49
- }
50
- }, allowedExtensions);
51
- }
52
- }exports.default=XVFile;//# sourceMappingURL=File.js.map
1
+ import XanvType from '../XanvType.js';
2
+
3
+ class XVFile extends XanvType {
4
+ constructor(size) {
5
+ super();
6
+ if (size !== undefined) {
7
+ this.size(size);
8
+ }
9
+ }
10
+ check(value) {
11
+ if (!(value instanceof File || value instanceof Blob)) {
12
+ throw new Error(`Value should be a File or Blob, received ${typeof value}`);
13
+ }
14
+ return value;
15
+ }
16
+ size(size) {
17
+ return this.set("size", (v) => {
18
+ const file = v;
19
+ if (file.size !== size) {
20
+ throw new Error(`File size should be exactly ${size} bytes, received ${file.size} bytes`);
21
+ }
22
+ }, size);
23
+ }
24
+ minsize(size) {
25
+ return this.set("minsize", (v) => {
26
+ const file = v;
27
+ if (file.size < size) {
28
+ throw new Error(`File size should be at least ${size} bytes, received ${file.size} bytes`);
29
+ }
30
+ }, size);
31
+ }
32
+ maxsize(size) {
33
+ return this.set("maxsize", (v) => {
34
+ const file = v;
35
+ if (file.size > size) {
36
+ throw new Error(`File size should not exceed ${size} bytes, received ${file.size} bytes`);
37
+ }
38
+ }, size);
39
+ }
40
+ type(allowedTypes) {
41
+ return this.set("type", (v) => {
42
+ const file = v;
43
+ if (!allowedTypes.includes(file.type)) {
44
+ throw new Error(`File type ${file.type} is not allowed. Allowed types: ${allowedTypes.join(", ")}`);
45
+ }
46
+ }, allowedTypes);
47
+ }
48
+ extension(allowedExtensions) {
49
+ return this.set("extension", (v) => {
50
+ const file = v;
51
+ const ext = file.name.split(".").pop();
52
+ if (!ext || !allowedExtensions.includes(ext)) {
53
+ throw new Error(`File extension ${ext} is not allowed. Allowed extensions: ${allowedExtensions.join(", ")}`);
54
+ }
55
+ }, allowedExtensions);
56
+ }
57
+ }
58
+
59
+ export { XVFile as default };
60
+ //# 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\";\n\nclass XVFile<T extends File | Blob = File | Blob> extends XanvType<T> {\n constructor(size?: number) {\n super();\n if (size) {\n this.size(size);\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 size(size: number) {\n return 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 if (v.size !== size) {\n throw new Error(`File size should be exactly ${size} bytes, received ${v.size} bytes`);\n }\n }, size);\n }\n\n minsize(size: number) {\n return 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 }\n\n maxsize(size: number) {\n return 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 }\n\n type(allowedTypes: string[]) {\n return 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 }\n\n extension(allowedExtensions: string[]) {\n return 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 }\n}\n\nexport default XVFile;"],"names":["XanvType"],"mappings":"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"}
1
+ {"version":3,"file":"File.js","sources":["../../src/types/File.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\r\n\r\nclass XVFile extends XanvType<File | Blob, unknown> {\r\n constructor(size?: number) {\r\n super();\r\n if (size !== undefined) {\r\n this.size(size);\r\n }\r\n }\r\n\r\n protected check(value: unknown): File | Blob {\r\n if (!(value instanceof File || value instanceof Blob)) {\r\n throw new Error(\r\n `Value should be a File or Blob, received ${typeof value}`\r\n );\r\n }\r\n return value;\r\n }\r\n\r\n size(size: number) {\r\n return this.set(\r\n \"size\",\r\n (v: unknown) => {\r\n const file = v as File | Blob;\r\n if (file.size !== size) {\r\n throw new Error(\r\n `File size should be exactly ${size} bytes, received ${file.size} bytes`\r\n );\r\n }\r\n },\r\n size\r\n );\r\n }\r\n\r\n minsize(size: number) {\r\n return this.set(\r\n \"minsize\",\r\n (v: unknown) => {\r\n const file = v as File | Blob;\r\n if (file.size < size) {\r\n throw new Error(\r\n `File size should be at least ${size} bytes, received ${file.size} bytes`\r\n );\r\n }\r\n },\r\n size\r\n );\r\n }\r\n\r\n maxsize(size: number) {\r\n return this.set(\r\n \"maxsize\",\r\n (v: unknown) => {\r\n const file = v as File | Blob;\r\n if (file.size > size) {\r\n throw new Error(\r\n `File size should not exceed ${size} bytes, received ${file.size} bytes`\r\n );\r\n }\r\n },\r\n size\r\n );\r\n }\r\n\r\n type(allowedTypes: string[]) {\r\n return this.set(\r\n \"type\",\r\n (v: unknown) => {\r\n const file = v as File | Blob;\r\n if (!allowedTypes.includes(file.type)) {\r\n throw new Error(\r\n `File type ${file.type} is not allowed. Allowed types: ${allowedTypes.join(\r\n \", \"\r\n )}`\r\n );\r\n }\r\n },\r\n allowedTypes\r\n );\r\n }\r\n\r\n extension(allowedExtensions: string[]) {\r\n return this.set(\r\n \"extension\",\r\n (v: unknown) => {\r\n const file: any = v as File | Blob;\r\n const ext = file.name.split(\".\").pop();\r\n if (!ext || !allowedExtensions.includes(ext)) {\r\n throw new Error(\r\n `File extension ${ext} is not allowed. Allowed extensions: ${allowedExtensions.join(\r\n \", \"\r\n )}`\r\n );\r\n }\r\n },\r\n allowedExtensions\r\n );\r\n }\r\n}\r\n\r\nexport default XVFile;\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var XanvType = require('../XanvType.cjs');
4
+
5
+ class XVFunction extends XanvType {
6
+ constructor(args, ret) {
7
+ super();
8
+ this._args = args;
9
+ this._return = ret;
10
+ }
11
+ check(value) {
12
+ if (typeof value !== "function") {
13
+ throw new Error(`Value should be a function, received ${typeof value}`);
14
+ }
15
+ return value;
16
+ }
17
+ parse(fn) {
18
+ super.parse(fn);
19
+ return ((...args) => {
20
+ // Validate each argument
21
+ this._args.forEach((argValidator, i) => {
22
+ argValidator.parse(args[i]);
23
+ });
24
+ const result = fn(...args);
25
+ // Validate return value
26
+ this._return.parse(result);
27
+ return result;
28
+ });
29
+ }
30
+ }
31
+
32
+ module.exports = XVFunction;
33
+ //# sourceMappingURL=Function.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Function.cjs","sources":["../../src/types/Function.ts"],"sourcesContent":["import { Infer, XVInstanceType } from \"../types\";\r\nimport XanvType from \"../XanvType\";\r\n\r\ntype Func<A extends XVInstanceType[], R extends XVInstanceType> =\r\n (...args: { [K in keyof A]: Infer<A[K]> }) => Infer<R>;\r\n\r\nclass XVFunction<A extends XVInstanceType[], R extends XVInstanceType>\r\n extends XanvType<Func<A, R>, unknown> {\r\n\r\n private _args: A;\r\n private _return: R;\r\n\r\n constructor(args: A, ret: R) {\r\n super();\r\n this._args = args;\r\n this._return = ret;\r\n }\r\n\r\n protected check(value: any): Func<A, R> {\r\n if (typeof value !== \"function\") {\r\n throw new Error(`Value should be a function, received ${typeof value}`);\r\n }\r\n return value;\r\n }\r\n\r\n parse(fn: any): Func<A, R> {\r\n super.parse(fn);\r\n\r\n return ((...args: any[]) => {\r\n // Validate each argument\r\n this._args.forEach((argValidator, i) => {\r\n argValidator.parse(args[i]);\r\n });\r\n\r\n const result = fn(...args);\r\n\r\n // Validate return value\r\n this._return.parse(result);\r\n\r\n return result;\r\n }) as Func<A, R>;\r\n }\r\n}\r\n\r\nexport default XVFunction;\r\n"],"names":[],"mappings":";;;;AAMA,MAAM,UACH,SAAQ,QAA6B,CAAA;IAKrC,WAAA,CAAY,IAAO,EAAE,GAAM,EAAA;AACxB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACtB,CAAC;AAES,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,EAAwC,OAAO,KAAK,CAAA,CAAE,CAAC,CAAC;AAC1E,QAAA,CAAA;AACD,QAAA,OAAO,KAAK,CAAC;IAChB,CAAC;AAED,IAAA,KAAK,CAAC,EAAO,EAAA;AACV,QAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEhB,QAAA,QAAQ,CAAC,GAAG,IAAW,KAAI;;YAExB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,KAAI;gBACpC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAA,CAAC,CAAC,CAAC;AAEH,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;;AAG3B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAE3B,YAAA,OAAO,MAAM,CAAC;AACjB,QAAA,CAAC,EAAgB;IACpB,CAAC;AACH;;;;"}
@@ -0,0 +1,15 @@
1
+ import { XVInstanceType, Infer } from '../types.js';
2
+ import XanvType from '../XanvType.js';
3
+
4
+ type Func<A extends XVInstanceType[], R extends XVInstanceType> = (...args: {
5
+ [K in keyof A]: Infer<A[K]>;
6
+ }) => Infer<R>;
7
+ declare class XVFunction<A extends XVInstanceType[], R extends XVInstanceType> extends XanvType<Func<A, R>, unknown> {
8
+ private _args;
9
+ private _return;
10
+ constructor(args: A, ret: R);
11
+ protected check(value: any): Func<A, R>;
12
+ parse(fn: any): Func<A, R>;
13
+ }
14
+
15
+ export { XVFunction as default };
@@ -0,0 +1,31 @@
1
+ import XanvType from '../XanvType.js';
2
+
3
+ class XVFunction extends XanvType {
4
+ constructor(args, ret) {
5
+ super();
6
+ this._args = args;
7
+ this._return = ret;
8
+ }
9
+ check(value) {
10
+ if (typeof value !== "function") {
11
+ throw new Error(`Value should be a function, received ${typeof value}`);
12
+ }
13
+ return value;
14
+ }
15
+ parse(fn) {
16
+ super.parse(fn);
17
+ return ((...args) => {
18
+ // Validate each argument
19
+ this._args.forEach((argValidator, i) => {
20
+ argValidator.parse(args[i]);
21
+ });
22
+ const result = fn(...args);
23
+ // Validate return value
24
+ this._return.parse(result);
25
+ return result;
26
+ });
27
+ }
28
+ }
29
+
30
+ export { XVFunction as default };
31
+ //# sourceMappingURL=Function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Function.js","sources":["../../src/types/Function.ts"],"sourcesContent":["import { Infer, XVInstanceType } from \"../types\";\r\nimport XanvType from \"../XanvType\";\r\n\r\ntype Func<A extends XVInstanceType[], R extends XVInstanceType> =\r\n (...args: { [K in keyof A]: Infer<A[K]> }) => Infer<R>;\r\n\r\nclass XVFunction<A extends XVInstanceType[], R extends XVInstanceType>\r\n extends XanvType<Func<A, R>, unknown> {\r\n\r\n private _args: A;\r\n private _return: R;\r\n\r\n constructor(args: A, ret: R) {\r\n super();\r\n this._args = args;\r\n this._return = ret;\r\n }\r\n\r\n protected check(value: any): Func<A, R> {\r\n if (typeof value !== \"function\") {\r\n throw new Error(`Value should be a function, received ${typeof value}`);\r\n }\r\n return value;\r\n }\r\n\r\n parse(fn: any): Func<A, R> {\r\n super.parse(fn);\r\n\r\n return ((...args: any[]) => {\r\n // Validate each argument\r\n this._args.forEach((argValidator, i) => {\r\n argValidator.parse(args[i]);\r\n });\r\n\r\n const result = fn(...args);\r\n\r\n // Validate return value\r\n this._return.parse(result);\r\n\r\n return result;\r\n }) as Func<A, R>;\r\n }\r\n}\r\n\r\nexport default XVFunction;\r\n"],"names":[],"mappings":";;AAMA,MAAM,UACH,SAAQ,QAA6B,CAAA;IAKrC,WAAA,CAAY,IAAO,EAAE,GAAM,EAAA;AACxB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACtB,CAAC;AAES,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,EAAwC,OAAO,KAAK,CAAA,CAAE,CAAC,CAAC;AAC1E,QAAA,CAAA;AACD,QAAA,OAAO,KAAK,CAAC;IAChB,CAAC;AAED,IAAA,KAAK,CAAC,EAAO,EAAA;AACV,QAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEhB,QAAA,QAAQ,CAAC,GAAG,IAAW,KAAI;;YAExB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,KAAI;gBACpC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAA,CAAC,CAAC,CAAC;AAEH,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;;AAG3B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAE3B,YAAA,OAAO,MAAM,CAAC;AACjB,QAAA,CAAC,EAAgB;IACpB,CAAC;AACH;;;;"}
package/types/Json.cjs ADDED
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var XanvType = require('../XanvType.cjs');
4
+
5
+ class XVJson extends XanvType {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.name = "XanvJson";
9
+ }
10
+ check(value) {
11
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
12
+ throw new Error("Value is not a valid JSON object");
13
+ }
14
+ return value;
15
+ }
16
+ }
17
+
18
+ module.exports = XVJson;
19
+ //# sourceMappingURL=Json.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Json.cjs","sources":["../../src/types/Json.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\r\n\r\nclass XVJson<T extends Record<string, any> = Record<string, any>> extends XanvType<T, unknown> {\r\n name: string = \"XanvJson\";\r\n\r\n protected check(value: unknown): T {\r\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\r\n throw new Error(\"Value is not a valid JSON object\");\r\n }\r\n return value as T;\r\n }\r\n}\r\n\r\nexport default XVJson;\r\n"],"names":[],"mappings":";;;;AAEA,MAAM,MAA4D,SAAQ,QAAoB,CAAA;AAA9F,IAAA,WAAA,GAAA;;QACG,IAAA,CAAA,IAAI,GAAW,UAAU,CAAC;IAQ7B,CAAC;AANY,IAAA,KAAK,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtE,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,QAAA,CAAA;AACD,QAAA,OAAO,KAAU,CAAC;IACrB,CAAC;AACH;;;;"}
package/types/Json.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import XanvType from '../XanvType.js';
2
2
 
3
- declare class XVJson extends XanvType<object> {
4
- name: string;
5
- protected check(value: any): void;
3
+ declare class XVJson<T extends Record<string, any> = Record<string, any>> extends XanvType<T, unknown> {
4
+ name: string;
5
+ protected check(value: unknown): T;
6
6
  }
7
7
 
8
8
  export { XVJson as default };
package/types/Json.js CHANGED
@@ -1,11 +1,17 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var XanvType=require('../XanvType.js');class XVJson extends XanvType.default {
2
- constructor() {
3
- super(...arguments);
4
- this.name = 'XanvJson';
5
- }
6
- check(value) {
7
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
8
- throw new Error("Value is not a valid JSON object");
9
- }
10
- }
11
- }exports.default=XVJson;//# sourceMappingURL=Json.js.map
1
+ import XanvType from '../XanvType.js';
2
+
3
+ class XVJson extends XanvType {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.name = "XanvJson";
7
+ }
8
+ check(value) {
9
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
10
+ throw new Error("Value is not a valid JSON object");
11
+ }
12
+ return value;
13
+ }
14
+ }
15
+
16
+ export { XVJson as default };
17
+ //# sourceMappingURL=Json.js.map
package/types/Json.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Json.js","sources":["../../src/types/Json.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\n\nclass XVJson extends XanvType<object> {\n name: string = 'XanvJson';\n protected check(value: any): void {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(\"Value is not a valid JSON object\");\n }\n }\n}\n\nexport default XVJson;"],"names":["XanvType"],"mappings":"6GAEA,MAAM,MAAO,SAAQA,gBAAgB,CAAA;AAArC,IAAA,WAAA,GAAA;;QACG,IAAA,CAAA,IAAI,GAAW,UAAU;IAM5B;AALa,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtE,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AACrD,QAAA;IACJ;AACF"}
1
+ {"version":3,"file":"Json.js","sources":["../../src/types/Json.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\r\n\r\nclass XVJson<T extends Record<string, any> = Record<string, any>> extends XanvType<T, unknown> {\r\n name: string = \"XanvJson\";\r\n\r\n protected check(value: unknown): T {\r\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\r\n throw new Error(\"Value is not a valid JSON object\");\r\n }\r\n return value as T;\r\n }\r\n}\r\n\r\nexport default XVJson;\r\n"],"names":[],"mappings":";;AAEA,MAAM,MAA4D,SAAQ,QAAoB,CAAA;AAA9F,IAAA,WAAA,GAAA;;QACG,IAAA,CAAA,IAAI,GAAW,UAAU,CAAC;IAQ7B,CAAC;AANY,IAAA,KAAK,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtE,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,QAAA,CAAA;AACD,QAAA,OAAO,KAAU,CAAC;IACrB,CAAC;AACH;;;;"}
package/types/Map.cjs ADDED
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var XanvType = require('../XanvType.cjs');
4
+
5
+ class XVMap extends XanvType {
6
+ constructor(key, value) {
7
+ super();
8
+ this.keySchema = key;
9
+ this.valueSchema = value;
10
+ }
11
+ check(value) {
12
+ if (!(value instanceof Map)) {
13
+ throw new Error(`Value should be a Map, received ${typeof value}`);
14
+ }
15
+ const result = new Map();
16
+ for (const [k, v] of value.entries()) {
17
+ try {
18
+ const parsedKey = this.keySchema.parse(k);
19
+ const parsedValue = this.valueSchema.parse(v);
20
+ result.set(parsedKey, parsedValue);
21
+ }
22
+ catch (err) {
23
+ throw new Error(`Map entry should have key of type ${this.keySchema.constructor.name} and value of type ${this.valueSchema.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);
24
+ }
25
+ }
26
+ return result;
27
+ }
28
+ }
29
+
30
+ module.exports = XVMap;
31
+ //# sourceMappingURL=Map.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Map.cjs","sources":["../../src/types/Map.ts"],"sourcesContent":["import { Infer, XVInstanceType } from \"../types\";\r\nimport XanvType from \"../XanvType\";\r\n\r\nclass XVMap<K extends XVInstanceType = any, V extends XVInstanceType = any> extends XanvType<Map<Infer<K>, Infer<V>>, unknown> {\r\n private keySchema: K;\r\n private valueSchema: V;\r\n\r\n constructor(key: K, value: V) {\r\n super();\r\n this.keySchema = key;\r\n this.valueSchema = value;\r\n }\r\n\r\n protected check(value: unknown): Map<Infer<K>, Infer<V>> {\r\n if (!(value instanceof Map)) {\r\n throw new Error(`Value should be a Map, received ${typeof value}`);\r\n }\r\n\r\n const result = new Map<Infer<K>, Infer<V>>();\r\n\r\n for (const [k, v] of (value as any).entries()) {\r\n try {\r\n const parsedKey = this.keySchema.parse(k) as Infer<K>;\r\n const parsedValue = this.valueSchema.parse(v) as Infer<V>;\r\n result.set(parsedKey, parsedValue);\r\n } catch (err) {\r\n throw new Error(\r\n `Map entry should have key of type ${this.keySchema.constructor.name} and value of type ${this.valueSchema.constructor.name}, received key: ${typeof k}, value: ${typeof v}`\r\n );\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default XVMap;\r\n"],"names":[],"mappings":";;;;AAGA,MAAM,KAAsE,SAAQ,QAA0C,CAAA;IAI3H,WAAA,CAAY,GAAM,EAAE,KAAQ,EAAA;AACzB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC5B,CAAC;AAES,IAAA,KAAK,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC,CAAC;AACrE,QAAA,CAAA;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;QAE7C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAK,KAAa,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;gBACtD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;AAC1D,gBAAA,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACrC,YAAA,CAAA;AAAC,YAAA,OAAO,GAAG,EAAE;gBACX,MAAM,IAAI,KAAK,CACZ,CAAA,kCAAA,EAAqC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAA,gBAAA,EAAmB,OAAO,CAAC,CAAA,SAAA,EAAY,OAAO,CAAC,CAAA,CAAE,CAC9K,CAAC;AACJ,YAAA,CAAA;AACH,QAAA,CAAA;AAED,QAAA,OAAO,MAAM,CAAC;IACjB,CAAC;AACH;;;;"}
package/types/Map.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { XVInstanceType } from '../types.js';
1
+ import { XVInstanceType, Infer } from '../types.js';
2
2
  import XanvType from '../XanvType.js';
3
3
 
4
- declare class XVMap<K = any, V = any> extends XanvType<Map<K, V>> {
5
- private key;
6
- private value;
7
- constructor(key: XVInstanceType, value: XVInstanceType);
8
- protected check(value: any): Map<any, any>;
4
+ declare class XVMap<K extends XVInstanceType = any, V extends XVInstanceType = any> extends XanvType<Map<Infer<K>, Infer<V>>, unknown> {
5
+ private keySchema;
6
+ private valueSchema;
7
+ constructor(key: K, value: V);
8
+ protected check(value: unknown): Map<Infer<K>, Infer<V>>;
9
9
  }
10
10
 
11
11
  export { XVMap as default };
package/types/Map.js CHANGED
@@ -1,23 +1,29 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var XanvType=require('../XanvType.js');class XVMap extends XanvType.default {
2
- constructor(key, value) {
3
- super();
4
- this.key = key;
5
- this.value = value;
6
- }
7
- check(value) {
8
- if (!(value instanceof Map)) {
9
- throw new Error(`Value should be a Map, received ${typeof value}`);
10
- }
11
- for (const [k, v] of Array.from(value.entries())) {
12
- try {
13
- this.key.parse(k);
14
- this.value.parse(v);
15
- value.set(k, this.value.parse(v));
16
- }
17
- catch (error) {
18
- throw new Error(`Map entry should have key of type ${this.key.constructor.name} and value of type ${this.value.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);
19
- }
20
- }
21
- return value;
22
- }
23
- }exports.default=XVMap;//# sourceMappingURL=Map.js.map
1
+ import XanvType from '../XanvType.js';
2
+
3
+ class XVMap extends XanvType {
4
+ constructor(key, value) {
5
+ super();
6
+ this.keySchema = key;
7
+ this.valueSchema = value;
8
+ }
9
+ check(value) {
10
+ if (!(value instanceof Map)) {
11
+ throw new Error(`Value should be a Map, received ${typeof value}`);
12
+ }
13
+ const result = new Map();
14
+ for (const [k, v] of value.entries()) {
15
+ try {
16
+ const parsedKey = this.keySchema.parse(k);
17
+ const parsedValue = this.valueSchema.parse(v);
18
+ result.set(parsedKey, parsedValue);
19
+ }
20
+ catch (err) {
21
+ throw new Error(`Map entry should have key of type ${this.keySchema.constructor.name} and value of type ${this.valueSchema.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);
22
+ }
23
+ }
24
+ return result;
25
+ }
26
+ }
27
+
28
+ export { XVMap as default };
29
+ //# sourceMappingURL=Map.js.map
package/types/Map.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Map.js","sources":["../../src/types/Map.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nclass XVMap<K = any, V = any> extends XanvType<Map<K, V>> {\n private key: XVInstanceType;\n private value: XVInstanceType;\n\n constructor(key: XVInstanceType, value: XVInstanceType) {\n super();\n this.key = key;\n this.value = value;\n }\n\n protected check(value: any) {\n if (!(value instanceof Map)) {\n throw new Error(`Value should be a Map, received ${typeof value}`);\n }\n\n for (const [k, v] of Array.from(value.entries())) {\n try {\n this.key.parse(k);\n this.value.parse(v);\n value.set(k, this.value.parse(v));\n } catch (error) {\n throw new Error(`Map entry should have key of type ${this.key.constructor.name} and value of type ${this.value.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);\n }\n }\n\n return value;\n }\n\n\n}\n\nexport default XVMap;"],"names":["XanvType"],"mappings":"6GAGA,MAAM,KAAwB,SAAQA,gBAAmB,CAAA;IAItD,WAAA,CAAY,GAAmB,EAAE,KAAqB,EAAA;AACnD,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACrB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;AAED,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;YAC/C,IAAI;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjB,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnB,gBAAA,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,CAAA,kCAAA,EAAqC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAA,mBAAA,EAAsB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAA,gBAAA,EAAmB,OAAO,CAAC,CAAA,SAAA,EAAY,OAAO,CAAC,CAAA,CAAE,CAAC;AACnL,YAAA;AACH,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AAGF"}
1
+ {"version":3,"file":"Map.js","sources":["../../src/types/Map.ts"],"sourcesContent":["import { Infer, XVInstanceType } from \"../types\";\r\nimport XanvType from \"../XanvType\";\r\n\r\nclass XVMap<K extends XVInstanceType = any, V extends XVInstanceType = any> extends XanvType<Map<Infer<K>, Infer<V>>, unknown> {\r\n private keySchema: K;\r\n private valueSchema: V;\r\n\r\n constructor(key: K, value: V) {\r\n super();\r\n this.keySchema = key;\r\n this.valueSchema = value;\r\n }\r\n\r\n protected check(value: unknown): Map<Infer<K>, Infer<V>> {\r\n if (!(value instanceof Map)) {\r\n throw new Error(`Value should be a Map, received ${typeof value}`);\r\n }\r\n\r\n const result = new Map<Infer<K>, Infer<V>>();\r\n\r\n for (const [k, v] of (value as any).entries()) {\r\n try {\r\n const parsedKey = this.keySchema.parse(k) as Infer<K>;\r\n const parsedValue = this.valueSchema.parse(v) as Infer<V>;\r\n result.set(parsedKey, parsedValue);\r\n } catch (err) {\r\n throw new Error(\r\n `Map entry should have key of type ${this.keySchema.constructor.name} and value of type ${this.valueSchema.constructor.name}, received key: ${typeof k}, value: ${typeof v}`\r\n );\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default XVMap;\r\n"],"names":[],"mappings":";;AAGA,MAAM,KAAsE,SAAQ,QAA0C,CAAA;IAI3H,WAAA,CAAY,GAAM,EAAE,KAAQ,EAAA;AACzB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC5B,CAAC;AAES,IAAA,KAAK,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC,CAAC;AACrE,QAAA,CAAA;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;QAE7C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAK,KAAa,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;gBACtD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;AAC1D,gBAAA,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACrC,YAAA,CAAA;AAAC,YAAA,OAAO,GAAG,EAAE;gBACX,MAAM,IAAI,KAAK,CACZ,CAAA,kCAAA,EAAqC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAA,gBAAA,EAAmB,OAAO,CAAC,CAAA,SAAA,EAAY,OAAO,CAAC,CAAA,CAAE,CAC9K,CAAC;AACJ,YAAA,CAAA;AACH,QAAA,CAAA;AAED,QAAA,OAAO,MAAM,CAAC;IACjB,CAAC;AACH;;;;"}
@@ -1,67 +1,77 @@
1
- import XanvType from'../XanvType.mjs';class XVNumber extends XanvType {
2
- constructor(length) {
3
- super();
4
- if (length) {
5
- this.length(length);
6
- }
7
- }
8
- check(value) {
9
- if (typeof value !== 'number') {
10
- throw new Error(`Value should be a number, received ${typeof value}`);
11
- }
12
- }
13
- length(value) {
14
- return this.set("length", (v) => {
15
- const n = Number(v);
16
- if (n.toString().length !== value) {
17
- throw new Error(`Number length should be ${value} digits, received ${n.toString().length}`);
18
- }
19
- }, value);
20
- }
21
- min(value) {
22
- return this.set("min", (v) => {
23
- const n = Number(v);
24
- if (n < value) {
25
- throw new Error(`Minimum value should be ${value}`);
26
- }
27
- }, value);
28
- }
29
- max(value) {
30
- return this.set("max", (v) => {
31
- const n = Number(v);
32
- if (n > value) {
33
- throw new Error(`Maximum value should be ${value}`);
34
- }
35
- }, value);
36
- }
37
- positive() {
38
- return this.set("positive", (v) => {
39
- const n = Number(v);
40
- if (n < 0) {
41
- throw new Error(`Value should be positive`);
42
- }
43
- });
44
- }
45
- negative() {
46
- return this.set("negative", (v) => {
47
- const n = Number(v);
48
- if (n > 0) {
49
- throw new Error(`Value should be negative`);
50
- }
51
- });
52
- }
53
- integer() {
54
- return this.set("integer", v => {
55
- if (!Number.isInteger(v)) {
56
- throw new Error(`Value should be an integer`);
57
- }
58
- });
59
- }
60
- float() {
61
- return this.set("float", v => {
62
- if (!Number.isFinite(v) || Number.isInteger(v)) {
63
- throw new Error(`Value should be a float`);
64
- }
65
- });
66
- }
67
- }export{XVNumber as default};//# sourceMappingURL=Number.mjs.map
1
+ 'use strict';
2
+
3
+ var XanvType = require('../XanvType.cjs');
4
+
5
+ class XVNumber extends XanvType {
6
+ constructor(length) {
7
+ super();
8
+ if (length !== undefined) {
9
+ this.length(length);
10
+ }
11
+ }
12
+ check(value) {
13
+ if (typeof value !== "number") {
14
+ throw new Error(`Value should be a number, received ${typeof value}`);
15
+ }
16
+ return value;
17
+ }
18
+ length(value) {
19
+ return this.set("length", (v) => {
20
+ const n = v;
21
+ if (n.toString().length !== value) {
22
+ throw new Error(`Number length should be ${value} digits, received ${n.toString().length}`);
23
+ }
24
+ }, value);
25
+ }
26
+ min(value) {
27
+ return this.set("min", (v) => {
28
+ const n = v;
29
+ if (n < value) {
30
+ throw new Error(`Minimum value should be ${value}, received ${n}`);
31
+ }
32
+ }, value);
33
+ }
34
+ max(value) {
35
+ return this.set("max", (v) => {
36
+ const n = v;
37
+ if (n > value) {
38
+ throw new Error(`Maximum value should be ${value}, received ${n}`);
39
+ }
40
+ }, value);
41
+ }
42
+ positive() {
43
+ return this.set("positive", (v) => {
44
+ const n = v;
45
+ if (n < 0) {
46
+ throw new Error(`Value should be positive, received ${n}`);
47
+ }
48
+ });
49
+ }
50
+ negative() {
51
+ return this.set("negative", (v) => {
52
+ const n = v;
53
+ if (n > 0) {
54
+ throw new Error(`Value should be negative, received ${n}`);
55
+ }
56
+ });
57
+ }
58
+ integer() {
59
+ return this.set("integer", (v) => {
60
+ const n = v;
61
+ if (!Number.isInteger(n)) {
62
+ throw new Error(`Value should be an integer, received ${n}`);
63
+ }
64
+ });
65
+ }
66
+ float() {
67
+ return this.set("float", (v) => {
68
+ const n = v;
69
+ if (!Number.isFinite(n) || Number.isInteger(n)) {
70
+ throw new Error(`Value should be a float, received ${n}`);
71
+ }
72
+ });
73
+ }
74
+ }
75
+
76
+ module.exports = XVNumber;
77
+ //# sourceMappingURL=Number.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Number.cjs","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\r\n\r\nclass XVNumber<T extends number = number> extends XanvType<T> {\r\n constructor(length?: number) {\r\n super();\r\n if (length !== undefined) {\r\n this.length(length);\r\n }\r\n }\r\n\r\n protected check(value: any): T {\r\n if (typeof value !== \"number\") {\r\n throw new Error(`Value should be a number, received ${typeof value}`);\r\n }\r\n return value as T\r\n }\r\n\r\n length(value: number) {\r\n return this.set(\"length\", (v: unknown) => {\r\n const n = v as number;\r\n if (n.toString().length !== value) {\r\n throw new Error(\r\n `Number length should be ${value} digits, received ${n.toString().length}`\r\n );\r\n }\r\n }, value);\r\n }\r\n\r\n min(value: number) {\r\n return this.set(\"min\", (v: unknown) => {\r\n const n = v as number;\r\n if (n < value) {\r\n throw new Error(`Minimum value should be ${value}, received ${n}`);\r\n }\r\n }, value);\r\n }\r\n\r\n max(value: number) {\r\n return this.set(\"max\", (v: unknown) => {\r\n const n = v as number;\r\n if (n > value) {\r\n throw new Error(`Maximum value should be ${value}, received ${n}`);\r\n }\r\n }, value);\r\n }\r\n\r\n positive() {\r\n return this.set(\"positive\", (v: unknown) => {\r\n const n = v as number;\r\n if (n < 0) {\r\n throw new Error(`Value should be positive, received ${n}`);\r\n }\r\n });\r\n }\r\n\r\n negative() {\r\n return this.set(\"negative\", (v: unknown) => {\r\n const n = v as number;\r\n if (n > 0) {\r\n throw new Error(`Value should be negative, received ${n}`);\r\n }\r\n });\r\n }\r\n\r\n integer() {\r\n return this.set(\"integer\", (v: unknown) => {\r\n const n = v as number;\r\n if (!Number.isInteger(n)) {\r\n throw new Error(`Value should be an integer, received ${n}`);\r\n }\r\n });\r\n }\r\n\r\n float() {\r\n return this.set(\"float\", (v: unknown) => {\r\n const n = v as number;\r\n if (!Number.isFinite(n) || Number.isInteger(n)) {\r\n throw new Error(`Value should be a float, received ${n}`);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default XVNumber;\r\n"],"names":[],"mappings":"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"}