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/Number.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import XanvType from '../XanvType.js';
2
2
 
3
- declare class XVNumber<T extends number = number> extends XanvType<T> {
4
- constructor(length?: number);
5
- protected check(value: any): void;
6
- length(value: number): this;
7
- min(value: number): this;
8
- max(value: number): this;
9
- positive(): this;
10
- negative(): this;
11
- integer(): this;
12
- float(): this;
3
+ declare class XVNumber<T extends number = number> extends XanvType<T> {
4
+ constructor(length?: number);
5
+ protected check(value: any): T;
6
+ length(value: number): this;
7
+ min(value: number): this;
8
+ max(value: number): this;
9
+ positive(): this;
10
+ negative(): this;
11
+ integer(): this;
12
+ float(): this;
13
13
  }
14
14
 
15
15
  export { XVNumber as default };
package/types/Number.js CHANGED
@@ -1,67 +1,75 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var XanvType=require('../XanvType.js');class XVNumber extends XanvType.default {
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
- }exports.default=XVNumber;//# sourceMappingURL=Number.js.map
1
+ import XanvType from '../XanvType.js';
2
+
3
+ class XVNumber extends XanvType {
4
+ constructor(length) {
5
+ super();
6
+ if (length !== undefined) {
7
+ this.length(length);
8
+ }
9
+ }
10
+ check(value) {
11
+ if (typeof value !== "number") {
12
+ throw new Error(`Value should be a number, received ${typeof value}`);
13
+ }
14
+ return value;
15
+ }
16
+ length(value) {
17
+ return this.set("length", (v) => {
18
+ const n = v;
19
+ if (n.toString().length !== value) {
20
+ throw new Error(`Number length should be ${value} digits, received ${n.toString().length}`);
21
+ }
22
+ }, value);
23
+ }
24
+ min(value) {
25
+ return this.set("min", (v) => {
26
+ const n = v;
27
+ if (n < value) {
28
+ throw new Error(`Minimum value should be ${value}, received ${n}`);
29
+ }
30
+ }, value);
31
+ }
32
+ max(value) {
33
+ return this.set("max", (v) => {
34
+ const n = v;
35
+ if (n > value) {
36
+ throw new Error(`Maximum value should be ${value}, received ${n}`);
37
+ }
38
+ }, value);
39
+ }
40
+ positive() {
41
+ return this.set("positive", (v) => {
42
+ const n = v;
43
+ if (n < 0) {
44
+ throw new Error(`Value should be positive, received ${n}`);
45
+ }
46
+ });
47
+ }
48
+ negative() {
49
+ return this.set("negative", (v) => {
50
+ const n = v;
51
+ if (n > 0) {
52
+ throw new Error(`Value should be negative, received ${n}`);
53
+ }
54
+ });
55
+ }
56
+ integer() {
57
+ return this.set("integer", (v) => {
58
+ const n = v;
59
+ if (!Number.isInteger(n)) {
60
+ throw new Error(`Value should be an integer, received ${n}`);
61
+ }
62
+ });
63
+ }
64
+ float() {
65
+ return this.set("float", (v) => {
66
+ const n = v;
67
+ if (!Number.isFinite(n) || Number.isInteger(n)) {
68
+ throw new Error(`Value should be a float, received ${n}`);
69
+ }
70
+ });
71
+ }
72
+ }
73
+
74
+ export { XVNumber as default };
75
+ //# sourceMappingURL=Number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\n\nclass XVNumber<T extends number = number> extends XanvType<T> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.length(length);\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 length(value: number) {\n return this.set(\"length\", (v: any) => {\n const n = Number(v);\n if (n.toString().length !== value) {\n throw new Error(`Number length should be ${value} digits, received ${n.toString().length}`);\n }\n }, value);\n }\n\n min(value: number) {\n return this.set(\"min\", (v: any) => {\n const n = Number(v);\n if (n < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n }, value);\n }\n\n max(value: number) {\n return this.set(\"max\", (v: any) => {\n const n = Number(v);\n if (n > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n }, value);\n }\n\n positive() {\n return this.set(\"positive\", (v: any) => {\n const n = Number(v);\n if (n < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n }\n\n negative() {\n return this.set(\"negative\", (v: any) => {\n const n = Number(v);\n if (n > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n }\n\n integer() {\n return this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n }\n\n float() {\n return this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n }\n\n}\n\nexport default XVNumber;"],"names":["XanvType"],"mappings":"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"}
1
+ {"version":3,"file":"Number.js","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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"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var XanvType = require('../XanvType.cjs');
4
+
5
+ // XVObject.ts
6
+ class XVObject extends XanvType {
7
+ constructor(arg) {
8
+ super();
9
+ this.arg = arg;
10
+ }
11
+ check(value) {
12
+ const result = {};
13
+ for (const key in this.arg) {
14
+ const itemType = this.arg[key];
15
+ result[key] = itemType.parse(value[key]);
16
+ }
17
+ return result;
18
+ }
19
+ }
20
+
21
+ module.exports = XVObject;
22
+ //# sourceMappingURL=Object.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Object.cjs","sources":["../../src/types/Object.ts"],"sourcesContent":["// XVObject.ts\r\nimport XanvType from \"../XanvType\";\r\nimport { Infer, XVInstanceType } from \"../types\";\r\n\r\nexport type XVObjectShape = Record<string, XVInstanceType | any>;\r\n\r\nclass XVObject<O extends XVObjectShape = any> extends XanvType<{ [K in keyof O]: Infer<O[K]> }> {\r\n public readonly arg?: O;\r\n\r\n constructor(arg?: O) {\r\n super();\r\n this.arg = arg;\r\n }\r\n\r\n protected check(value: any): { [K in keyof O]: Infer<O[K]> } {\r\n const result: any = {};\r\n for (const key in this.arg) {\r\n const itemType = this.arg[key];\r\n result[key] = itemType.parse(value[key]);\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n\r\nexport default XVObject;\r\n"],"names":[],"mappings":";;;;AAAA;AAMA,MAAM,QAAwC,SAAQ,QAAyC,CAAA;AAG5F,IAAA,WAAA,CAAY,GAAO,EAAA;AAChB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,CAAC;AAES,IAAA,KAAK,CAAC,KAAU,EAAA;QACvB,MAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAA,CAAA;AACD,QAAA,OAAO,MAAM,CAAC;IACjB,CAAC;AACH;;;;"}
package/types/Object.d.ts CHANGED
@@ -1,10 +1,16 @@
1
1
  import XanvType from '../XanvType.js';
2
- import { XVObjectType } from '../types.js';
2
+ import { XVInstanceType, Infer } from '../types.js';
3
3
 
4
- declare class XVObject<T = Record<any, any>> extends XanvType<T> {
5
- private arg?;
6
- constructor(arg?: XVObjectType);
7
- protected check(value: any): void;
4
+ type XVObjectShape = Record<string, XVInstanceType | any>;
5
+ declare class XVObject<O extends XVObjectShape = any> extends XanvType<{
6
+ [K in keyof O]: Infer<O[K]>;
7
+ }> {
8
+ readonly arg?: O;
9
+ constructor(arg?: O);
10
+ protected check(value: any): {
11
+ [K in keyof O]: Infer<O[K]>;
12
+ };
8
13
  }
9
14
 
10
15
  export { XVObject as default };
16
+ export type { XVObjectShape };
package/types/Object.js CHANGED
@@ -1,26 +1,20 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var XanvType=require('../XanvType.js');class XVObject extends XanvType.default {
2
- constructor(arg) {
3
- super();
4
- if (arg && (typeof arg !== 'object' || arg === null || Array.isArray(arg))) {
5
- throw new Error("Argument should be a non-null object");
6
- }
7
- this.arg = arg;
8
- }
9
- check(value) {
10
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
11
- throw new Error(`Value should be an object, received ${typeof value}`);
12
- }
13
- if (this.arg) {
14
- for (const key in this.arg) {
15
- const itemType = this.arg[key];
16
- try {
17
- value[key] = itemType.parse(value[key]);
18
- }
19
- catch (error) {
20
- throw new Error(`Property '${key}' should be of type ${itemType.constructor.name}, received ${typeof value[key]}`);
21
- }
22
- }
23
- }
24
- return value;
25
- }
26
- }exports.default=XVObject;//# sourceMappingURL=Object.js.map
1
+ import XanvType from '../XanvType.js';
2
+
3
+ // XVObject.ts
4
+ class XVObject extends XanvType {
5
+ constructor(arg) {
6
+ super();
7
+ this.arg = arg;
8
+ }
9
+ check(value) {
10
+ const result = {};
11
+ for (const key in this.arg) {
12
+ const itemType = this.arg[key];
13
+ result[key] = itemType.parse(value[key]);
14
+ }
15
+ return result;
16
+ }
17
+ }
18
+
19
+ export { XVObject as default };
20
+ //# sourceMappingURL=Object.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Object.js","sources":["../../src/types/Object.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVObjectType } from \"../types\";\n\nclass XVObject<T = Record<any, any>> extends XanvType<T> {\n private arg?: XVObjectType;\n\n constructor(arg?: XVObjectType) {\n super();\n if (arg && (typeof arg !== 'object' || arg === null || Array.isArray(arg))) {\n throw new Error(\"Argument should be a non-null object\");\n }\n this.arg = arg;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(`Value should be an object, received ${typeof value}`);\n }\n\n if (this.arg) {\n for (const key in this.arg) {\n const itemType = this.arg[key];\n try {\n value[key] = itemType.parse(value[key]);\n } catch (error: any) {\n throw new Error(`Property '${key}' should be of type ${itemType.constructor.name}, received ${typeof value[key]}`);\n }\n }\n }\n return value;\n }\n\n}\n\nexport default XVObject;\n"],"names":["XanvType"],"mappings":"6GAGA,MAAM,QAA+B,SAAQA,gBAAW,CAAA;AAGrD,IAAA,WAAA,CAAY,GAAkB,EAAA;AAC3B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACzE,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACzD,QAAA;AACD,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;IACjB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,KAAK,CAAA,CAAE,CAAC;AACxE,QAAA;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;AACX,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9B,IAAI;AACD,oBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,gBAAA;AAAC,gBAAA,OAAO,KAAU,EAAE;AAClB,oBAAA,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAA,oBAAA,EAAuB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AACpH,gBAAA;AACH,YAAA;AACH,QAAA;AACD,QAAA,OAAO,KAAK;IACf;AAEF"}
1
+ {"version":3,"file":"Object.js","sources":["../../src/types/Object.ts"],"sourcesContent":["// XVObject.ts\r\nimport XanvType from \"../XanvType\";\r\nimport { Infer, XVInstanceType } from \"../types\";\r\n\r\nexport type XVObjectShape = Record<string, XVInstanceType | any>;\r\n\r\nclass XVObject<O extends XVObjectShape = any> extends XanvType<{ [K in keyof O]: Infer<O[K]> }> {\r\n public readonly arg?: O;\r\n\r\n constructor(arg?: O) {\r\n super();\r\n this.arg = arg;\r\n }\r\n\r\n protected check(value: any): { [K in keyof O]: Infer<O[K]> } {\r\n const result: any = {};\r\n for (const key in this.arg) {\r\n const itemType = this.arg[key];\r\n result[key] = itemType.parse(value[key]);\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n\r\nexport default XVObject;\r\n"],"names":[],"mappings":";;AAAA;AAMA,MAAM,QAAwC,SAAQ,QAAyC,CAAA;AAG5F,IAAA,WAAA,CAAY,GAAO,EAAA;AAChB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,CAAC;AAES,IAAA,KAAK,CAAC,KAAU,EAAA;QACvB,MAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAA,CAAA;AACD,QAAA,OAAO,MAAM,CAAC;IACjB,CAAC;AACH;;;;"}
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var XanvType = require('../XanvType.cjs');
4
+
5
+ class XVPromise extends XanvType {
6
+ constructor(inner) {
7
+ super();
8
+ this._inner = inner;
9
+ }
10
+ check(value) {
11
+ if (!(value instanceof Promise)) {
12
+ throw new Error(`Value should be a Promise, received ${typeof value}`);
13
+ }
14
+ return value;
15
+ }
16
+ parse(value) {
17
+ super.parse(value);
18
+ // Wrap the promise so the resolved value is validated
19
+ return value.then((res) => {
20
+ if (this._inner) {
21
+ this._inner.parse(res);
22
+ }
23
+ return res;
24
+ });
25
+ }
26
+ }
27
+
28
+ module.exports = XVPromise;
29
+ //# sourceMappingURL=Promise.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Promise.cjs","sources":["../../src/types/Promise.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\r\nimport { XVInstanceType, Infer } from \"../types\";\r\n\r\nclass XVPromise<T extends XVInstanceType> extends XanvType<Promise<Infer<T>>, unknown> {\r\n private _inner: T;\r\n\r\n constructor(inner: T) {\r\n super();\r\n this._inner = inner;\r\n }\r\n\r\n protected check(value: any): Promise<Infer<T>> {\r\n if (!(value instanceof Promise)) {\r\n throw new Error(`Value should be a Promise, received ${typeof value}`);\r\n }\r\n return value;\r\n }\r\n\r\n parse(value: any): Promise<Infer<T>> {\r\n super.parse(value);\r\n\r\n // Wrap the promise so the resolved value is validated\r\n return (value as Promise<any>).then((res) => {\r\n if (this._inner) {\r\n this._inner.parse(res);\r\n }\r\n return res;\r\n });\r\n }\r\n}\r\n\r\nexport default XVPromise;\r\n"],"names":[],"mappings":";;;;AAGA,MAAM,SAAoC,SAAQ,QAAoC,CAAA;AAGnF,IAAA,WAAA,CAAY,KAAQ,EAAA;AACjB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACvB,CAAC;AAES,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,OAAO,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,KAAK,CAAA,CAAE,CAAC,CAAC;AACzE,QAAA,CAAA;AACD,QAAA,OAAO,KAAK,CAAC;IAChB,CAAC;AAED,IAAA,KAAK,CAAC,KAAU,EAAA;AACb,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;AAGnB,QAAA,OAAQ,KAAsB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;YACzC,IAAI,IAAI,CAAC,MAAM,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,YAAA,CAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACd,QAAA,CAAC,CAAC,CAAC;IACN,CAAC;AACH;;;;"}
@@ -0,0 +1,11 @@
1
+ import XanvType from '../XanvType.js';
2
+ import { XVInstanceType, Infer } from '../types.js';
3
+
4
+ declare class XVPromise<T extends XVInstanceType> extends XanvType<Promise<Infer<T>>, unknown> {
5
+ private _inner;
6
+ constructor(inner: T);
7
+ protected check(value: any): Promise<Infer<T>>;
8
+ parse(value: any): Promise<Infer<T>>;
9
+ }
10
+
11
+ export { XVPromise as default };
@@ -0,0 +1,27 @@
1
+ import XanvType from '../XanvType.js';
2
+
3
+ class XVPromise extends XanvType {
4
+ constructor(inner) {
5
+ super();
6
+ this._inner = inner;
7
+ }
8
+ check(value) {
9
+ if (!(value instanceof Promise)) {
10
+ throw new Error(`Value should be a Promise, received ${typeof value}`);
11
+ }
12
+ return value;
13
+ }
14
+ parse(value) {
15
+ super.parse(value);
16
+ // Wrap the promise so the resolved value is validated
17
+ return value.then((res) => {
18
+ if (this._inner) {
19
+ this._inner.parse(res);
20
+ }
21
+ return res;
22
+ });
23
+ }
24
+ }
25
+
26
+ export { XVPromise as default };
27
+ //# sourceMappingURL=Promise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Promise.js","sources":["../../src/types/Promise.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\r\nimport { XVInstanceType, Infer } from \"../types\";\r\n\r\nclass XVPromise<T extends XVInstanceType> extends XanvType<Promise<Infer<T>>, unknown> {\r\n private _inner: T;\r\n\r\n constructor(inner: T) {\r\n super();\r\n this._inner = inner;\r\n }\r\n\r\n protected check(value: any): Promise<Infer<T>> {\r\n if (!(value instanceof Promise)) {\r\n throw new Error(`Value should be a Promise, received ${typeof value}`);\r\n }\r\n return value;\r\n }\r\n\r\n parse(value: any): Promise<Infer<T>> {\r\n super.parse(value);\r\n\r\n // Wrap the promise so the resolved value is validated\r\n return (value as Promise<any>).then((res) => {\r\n if (this._inner) {\r\n this._inner.parse(res);\r\n }\r\n return res;\r\n });\r\n }\r\n}\r\n\r\nexport default XVPromise;\r\n"],"names":[],"mappings":";;AAGA,MAAM,SAAoC,SAAQ,QAAoC,CAAA;AAGnF,IAAA,WAAA,CAAY,KAAQ,EAAA;AACjB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACvB,CAAC;AAES,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,OAAO,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,KAAK,CAAA,CAAE,CAAC,CAAC;AACzE,QAAA,CAAA;AACD,QAAA,OAAO,KAAK,CAAC;IAChB,CAAC;AAED,IAAA,KAAK,CAAC,KAAU,EAAA;AACb,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;AAGnB,QAAA,OAAQ,KAAsB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;YACzC,IAAI,IAAI,CAAC,MAAM,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,YAAA,CAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACd,QAAA,CAAC,CAAC,CAAC;IACN,CAAC;AACH;;;;"}
@@ -1,24 +1,31 @@
1
- import XanvType from'../XanvType.mjs';class XVRecord extends XanvType {
2
- constructor(key, value) {
3
- super();
4
- this.name = 'XanvRecord';
5
- this.key = key;
6
- this.value = value;
7
- }
8
- check(value) {
9
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
10
- throw new Error(`Value should be a record, received ${typeof value}`);
11
- }
12
- for (const [k, v] of Object.entries(value)) {
13
- try {
14
- this.key.parse(k);
15
- this.value.parse(v);
16
- value[k] = this.value.parse(v);
17
- }
18
- catch (error) {
19
- throw new Error(`Record entry '${k}' should have key of type ${this.key.constructor.name} and value of type ${this.value.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);
20
- }
21
- }
22
- return value;
23
- }
24
- }export{XVRecord as default};//# sourceMappingURL=Record.mjs.map
1
+ 'use strict';
2
+
3
+ var XanvType = require('../XanvType.cjs');
4
+
5
+ class XVRecord extends XanvType {
6
+ constructor(key, value) {
7
+ super();
8
+ this.name = 'XanvRecord';
9
+ this.key = key;
10
+ this.value = value;
11
+ }
12
+ check(value) {
13
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
14
+ throw new Error(`Value should be a record, received ${typeof value}`);
15
+ }
16
+ for (const [k, v] of Object.entries(value)) {
17
+ try {
18
+ this.key.parse(k);
19
+ this.value.parse(v);
20
+ value[k] = this.value.parse(v);
21
+ }
22
+ catch (error) {
23
+ throw new Error(`Record entry '${k}' should have key of type ${this.key.constructor.name} and value of type ${this.value.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);
24
+ }
25
+ }
26
+ return value;
27
+ }
28
+ }
29
+
30
+ module.exports = XVRecord;
31
+ //# sourceMappingURL=Record.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Record.cjs","sources":["../../src/types/Record.ts"],"sourcesContent":["import { Infer, XVInstanceType } from \"../types\";\r\nimport XanvType from \"../XanvType\";\r\n\r\nclass XVRecord<K extends XVInstanceType, V extends XVInstanceType> extends XanvType<Record<Infer<K>, Infer<V>>> {\r\n name: string = 'XanvRecord';\r\n private key: K;\r\n private value: V;\r\n\r\n constructor(key: K, value: V) {\r\n super();\r\n this.key = key;\r\n this.value = value;\r\n }\r\n\r\n protected check(value: any): Record<Infer<K>, Infer<V>> {\r\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\r\n throw new Error(`Value should be a record, received ${typeof value}`);\r\n }\r\n\r\n for (const [k, v] of Object.entries(value)) {\r\n try {\r\n this.key.parse(k);\r\n (this as any).value.parse(v);\r\n value[k] = (this as any).value.parse(v);\r\n } catch (error) {\r\n throw new Error(`Record entry '${k}' should have key of type ${this.key.constructor.name} and value of type ${this.value.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n}\r\n\r\nexport default XVRecord;"],"names":[],"mappings":";;;;AAGA,MAAM,QAA6D,SAAQ,QAAoC,CAAA;IAK5G,WAAA,CAAY,GAAM,EAAE,KAAQ,EAAA;AACzB,QAAA,KAAK,EAAE,CAAC;QALX,IAAA,CAAA,IAAI,GAAW,YAAY,CAAC;AAMzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACtB,CAAC;AAES,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,OAAO,KAAK,CAAA,CAAE,CAAC,CAAC;AACxE,QAAA,CAAA;AAED,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzC,IAAI;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,gBAAA,IAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAA,KAAK,CAAC,CAAC,CAAC,GAAI,IAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,CAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,CAAC,CAAA,0BAAA,EAA6B,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,CAAC;AAC9L,YAAA,CAAA;AACH,QAAA,CAAA;AACD,QAAA,OAAO,KAAK,CAAC;IAChB,CAAC;AAEH;;;;"}
package/types/Record.d.ts CHANGED
@@ -1,12 +1,12 @@
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 XVRecord<K extends string = string, V = any> extends XanvType<Record<K, V>> {
5
- name: string;
6
- private key;
7
- private value;
8
- constructor(key: XVInstanceType, value: XVInstanceType);
9
- protected check(value: any): void;
4
+ declare class XVRecord<K extends XVInstanceType, V extends XVInstanceType> extends XanvType<Record<Infer<K>, Infer<V>>> {
5
+ name: string;
6
+ private key;
7
+ private value;
8
+ constructor(key: K, value: V);
9
+ protected check(value: any): Record<Infer<K>, Infer<V>>;
10
10
  }
11
11
 
12
12
  export { XVRecord as default };
package/types/Record.js CHANGED
@@ -1,24 +1,29 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var XanvType=require('../XanvType.js');class XVRecord extends XanvType.default {
2
- constructor(key, value) {
3
- super();
4
- this.name = 'XanvRecord';
5
- this.key = key;
6
- this.value = value;
7
- }
8
- check(value) {
9
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
10
- throw new Error(`Value should be a record, received ${typeof value}`);
11
- }
12
- for (const [k, v] of Object.entries(value)) {
13
- try {
14
- this.key.parse(k);
15
- this.value.parse(v);
16
- value[k] = this.value.parse(v);
17
- }
18
- catch (error) {
19
- throw new Error(`Record entry '${k}' should have key of type ${this.key.constructor.name} and value of type ${this.value.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);
20
- }
21
- }
22
- return value;
23
- }
24
- }exports.default=XVRecord;//# sourceMappingURL=Record.js.map
1
+ import XanvType from '../XanvType.js';
2
+
3
+ class XVRecord extends XanvType {
4
+ constructor(key, value) {
5
+ super();
6
+ this.name = 'XanvRecord';
7
+ this.key = key;
8
+ this.value = value;
9
+ }
10
+ check(value) {
11
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
12
+ throw new Error(`Value should be a record, received ${typeof value}`);
13
+ }
14
+ for (const [k, v] of Object.entries(value)) {
15
+ try {
16
+ this.key.parse(k);
17
+ this.value.parse(v);
18
+ value[k] = this.value.parse(v);
19
+ }
20
+ catch (error) {
21
+ throw new Error(`Record entry '${k}' should have key of type ${this.key.constructor.name} and value of type ${this.value.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);
22
+ }
23
+ }
24
+ return value;
25
+ }
26
+ }
27
+
28
+ export { XVRecord as default };
29
+ //# sourceMappingURL=Record.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Record.js","sources":["../../src/types/Record.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nclass XVRecord<K extends string = string, V = any> extends XanvType<Record<K, V>> {\n name: string = 'XanvRecord';\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): void {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(`Value should be a record, received ${typeof value}`);\n }\n\n for (const [k, v] of Object.entries(value)) {\n try {\n this.key.parse(k);\n this.value.parse(v);\n value[k] = this.value.parse(v);\n } catch (error) {\n throw new Error(`Record entry '${k}' 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 return value;\n }\n\n}\n\nexport default XVRecord;"],"names":["XanvType"],"mappings":"6GAGA,MAAM,QAA6C,SAAQA,gBAAsB,CAAA;IAK9E,WAAA,CAAY,GAAmB,EAAE,KAAqB,EAAA;AACnD,QAAA,KAAK,EAAE;QALV,IAAA,CAAA,IAAI,GAAW,YAAY;AAMxB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACrB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,OAAO,KAAK,CAAA,CAAE,CAAC;AACvE,QAAA;AAED,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzC,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,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,CAAC,CAAA,0BAAA,EAA6B,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;AAC7L,YAAA;AACH,QAAA;AACD,QAAA,OAAO,KAAK;IACf;AAEF"}
1
+ {"version":3,"file":"Record.js","sources":["../../src/types/Record.ts"],"sourcesContent":["import { Infer, XVInstanceType } from \"../types\";\r\nimport XanvType from \"../XanvType\";\r\n\r\nclass XVRecord<K extends XVInstanceType, V extends XVInstanceType> extends XanvType<Record<Infer<K>, Infer<V>>> {\r\n name: string = 'XanvRecord';\r\n private key: K;\r\n private value: V;\r\n\r\n constructor(key: K, value: V) {\r\n super();\r\n this.key = key;\r\n this.value = value;\r\n }\r\n\r\n protected check(value: any): Record<Infer<K>, Infer<V>> {\r\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\r\n throw new Error(`Value should be a record, received ${typeof value}`);\r\n }\r\n\r\n for (const [k, v] of Object.entries(value)) {\r\n try {\r\n this.key.parse(k);\r\n (this as any).value.parse(v);\r\n value[k] = (this as any).value.parse(v);\r\n } catch (error) {\r\n throw new Error(`Record entry '${k}' should have key of type ${this.key.constructor.name} and value of type ${this.value.constructor.name}, received key: ${typeof k}, value: ${typeof v}`);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n}\r\n\r\nexport default XVRecord;"],"names":[],"mappings":";;AAGA,MAAM,QAA6D,SAAQ,QAAoC,CAAA;IAK5G,WAAA,CAAY,GAAM,EAAE,KAAQ,EAAA;AACzB,QAAA,KAAK,EAAE,CAAC;QALX,IAAA,CAAA,IAAI,GAAW,YAAY,CAAC;AAMzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACtB,CAAC;AAES,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,OAAO,KAAK,CAAA,CAAE,CAAC,CAAC;AACxE,QAAA,CAAA;AAED,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzC,IAAI;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,gBAAA,IAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAA,KAAK,CAAC,CAAC,CAAC,GAAI,IAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,CAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,CAAC,CAAA,0BAAA,EAA6B,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,CAAC;AAC9L,YAAA,CAAA;AACH,QAAA,CAAA;AACD,QAAA,OAAO,KAAK,CAAC;IAChB,CAAC;AAEH;;;;"}