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/XanvType.cjs ADDED
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ class XanvType {
4
+ constructor() {
5
+ this.checks = [];
6
+ this.transforms = [];
7
+ this.meta = {};
8
+ }
9
+ set(methodName, check, args = true) {
10
+ if (!(methodName in this)) {
11
+ throw new Error(`Method ${methodName} does not exist on ${this.constructor.name}`);
12
+ }
13
+ this.checks.push(check);
14
+ this.meta[methodName] = args;
15
+ return this;
16
+ }
17
+ clone() {
18
+ const cloned = Object.create(this);
19
+ cloned.checks = [...this.checks];
20
+ cloned.meta = Object.assign({}, this.meta);
21
+ cloned.transforms = [...this.transforms];
22
+ return cloned;
23
+ }
24
+ optional() {
25
+ return this.set("optional", () => { });
26
+ }
27
+ nullable() {
28
+ return this.set("nullable", () => { });
29
+ }
30
+ default(value) {
31
+ return this.set("default", () => { }, value);
32
+ }
33
+ transform(cb) {
34
+ this.transforms.push(cb);
35
+ return this;
36
+ }
37
+ parse(value) {
38
+ // default
39
+ if (this.meta.default !== undefined && (value === undefined || value === null)) {
40
+ value = typeof this.meta.default === "function" ? this.meta.default() : this.meta.default;
41
+ }
42
+ // optional / nullable
43
+ if (this.meta.optional && value === undefined)
44
+ return undefined;
45
+ if (this.meta.nullable && value === null)
46
+ return null;
47
+ // run internal check
48
+ let result = this.check(value);
49
+ // run user checks
50
+ for (const check of this.checks) {
51
+ check(result);
52
+ }
53
+ // run transforms
54
+ for (const transform of this.transforms) {
55
+ result = transform(result);
56
+ }
57
+ return result;
58
+ }
59
+ }
60
+
61
+ module.exports = XanvType;
62
+ //# sourceMappingURL=XanvType.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XanvType.cjs","sources":["../src/XanvType.ts"],"sourcesContent":["export type XanvTransformCallback<T, U = T> = (value: T) => U;\r\nexport type XVCheckCallback<T> = (value: unknown) => void;\r\n\r\nexport type Meta = {\r\n optional?: boolean;\r\n nullable?: boolean;\r\n default?: any;\r\n};\r\n\r\nabstract class XanvType<Value, Input = unknown> {\r\n private checks: XVCheckCallback<Value>[] = [];\r\n private transforms: XanvTransformCallback<any, any>[] = [];\r\n readonly meta: Meta = {};\r\n\r\n protected abstract check(value: Input): Value;\r\n\r\n protected set(methodName: string, check: XVCheckCallback<Value>, args: any = true): this {\r\n if (!(methodName in this)) {\r\n throw new Error(\r\n `Method ${methodName} does not exist on ${this.constructor.name}`\r\n );\r\n }\r\n this.checks.push(check);\r\n (this as any).meta[methodName] = args;\r\n return this;\r\n }\r\n\r\n clone(): this {\r\n const cloned = Object.create(this);\r\n cloned.checks = [...this.checks];\r\n cloned.meta = { ...this.meta };\r\n cloned.transforms = [...this.transforms];\r\n return cloned;\r\n }\r\n\r\n optional(): this {\r\n return this.set(\"optional\", () => { })\r\n }\r\n\r\n nullable(): this {\r\n return this.set(\"nullable\", () => { })\r\n }\r\n\r\n default(value: Value | (() => Value)): this {\r\n return this.set(\"default\", () => { }, value)\r\n }\r\n\r\n transform<T>(cb: XanvTransformCallback<Value, T>): this {\r\n this.transforms.push(cb);\r\n return this\r\n }\r\n\r\n parse(value: Input): Value | undefined | null {\r\n // default\r\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\r\n value = typeof this.meta.default === \"function\" ? this.meta.default() : this.meta.default;\r\n }\r\n\r\n // optional / nullable\r\n if (this.meta.optional && value === undefined) return undefined;\r\n if (this.meta.nullable && value === null) return null;\r\n\r\n // run internal check\r\n let result = this.check(value);\r\n\r\n // run user checks\r\n for (const check of this.checks) {\r\n check(result);\r\n }\r\n\r\n // run transforms\r\n for (const transform of this.transforms) {\r\n result = transform(result);\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default XanvType;\r\n"],"names":[],"mappings":"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"}
package/XanvType.d.ts CHANGED
@@ -1,17 +1,23 @@
1
- import { XVCheckCallback, XanvTransformCallback } from './types.js';
2
-
3
- declare abstract class XanvType<Value = any> {
4
- private checkes;
5
- private transforms;
6
- readonly meta: Record<string, any>;
7
- protected abstract check(value: any): any;
8
- protected set(methodName: string, check: XVCheckCallback<Value>, args?: any): this;
9
- clone(): any;
10
- optional(): this;
11
- default(value: Value | (() => Value)): this;
12
- nullable(): this;
13
- transform(cb: XanvTransformCallback<Value>): void;
14
- parse(value: any): Value | undefined | null;
1
+ type XanvTransformCallback<T, U = T> = (value: T) => U;
2
+ type XVCheckCallback<T> = (value: unknown) => void;
3
+ type Meta = {
4
+ optional?: boolean;
5
+ nullable?: boolean;
6
+ default?: any;
7
+ };
8
+ declare abstract class XanvType<Value, Input = unknown> {
9
+ private checks;
10
+ private transforms;
11
+ readonly meta: Meta;
12
+ protected abstract check(value: Input): Value;
13
+ protected set(methodName: string, check: XVCheckCallback<Value>, args?: any): this;
14
+ clone(): this;
15
+ optional(): this;
16
+ nullable(): this;
17
+ default(value: Value | (() => Value)): this;
18
+ transform<T>(cb: XanvTransformCallback<Value, T>): this;
19
+ parse(value: Input): Value | undefined | null;
15
20
  }
16
21
 
17
22
  export { XanvType as default };
23
+ export type { Meta, XVCheckCallback, XanvTransformCallback };
package/XanvType.js CHANGED
@@ -1,54 +1,60 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});class XanvType {
2
- constructor() {
3
- this.checkes = new Map();
4
- this.transforms = [];
5
- this.meta = {};
6
- }
7
- set(methodName, check, args = true) {
8
- const has = methodName in this;
9
- if (!has) {
10
- throw new Error(`Method ${methodName} does not exist on ${this.constructor.name}`);
11
- }
12
- this.checkes.set(methodName, check);
13
- this.meta[methodName] = args;
14
- return this;
15
- }
16
- clone() {
17
- const cloned = Object.create(this);
18
- cloned.checkes = new Map(this.checkes);
19
- cloned.meta = Object.assign({}, this.meta);
20
- cloned.transforms = [...this.transforms];
21
- return cloned;
22
- }
23
- optional() {
24
- return this.set('optional', () => { }, true);
25
- }
26
- default(value) {
27
- return this.set('default', () => { }, value);
28
- }
29
- nullable() {
30
- return this.set('nullable', () => { }, true);
31
- }
32
- transform(cb) {
33
- this.transforms.push(cb);
34
- }
35
- parse(value) {
36
- if (this.meta.default !== undefined && (value === undefined || value === null)) {
37
- value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default;
38
- }
39
- if (this.meta.optional && value === undefined) {
40
- return value;
41
- }
42
- if (this.meta.nullable && value === null) {
43
- return value;
44
- }
45
- value = this.check(value) || value;
46
- for (const [, check] of Array.from(this.checkes.entries())) {
47
- check(value);
48
- }
49
- for (const transform of this.transforms) {
50
- value = transform(value);
51
- }
52
- return value;
53
- }
54
- }exports.default=XanvType;//# sourceMappingURL=XanvType.js.map
1
+ class XanvType {
2
+ constructor() {
3
+ this.checks = [];
4
+ this.transforms = [];
5
+ this.meta = {};
6
+ }
7
+ set(methodName, check, args = true) {
8
+ if (!(methodName in this)) {
9
+ throw new Error(`Method ${methodName} does not exist on ${this.constructor.name}`);
10
+ }
11
+ this.checks.push(check);
12
+ this.meta[methodName] = args;
13
+ return this;
14
+ }
15
+ clone() {
16
+ const cloned = Object.create(this);
17
+ cloned.checks = [...this.checks];
18
+ cloned.meta = Object.assign({}, this.meta);
19
+ cloned.transforms = [...this.transforms];
20
+ return cloned;
21
+ }
22
+ optional() {
23
+ return this.set("optional", () => { });
24
+ }
25
+ nullable() {
26
+ return this.set("nullable", () => { });
27
+ }
28
+ default(value) {
29
+ return this.set("default", () => { }, value);
30
+ }
31
+ transform(cb) {
32
+ this.transforms.push(cb);
33
+ return this;
34
+ }
35
+ parse(value) {
36
+ // default
37
+ if (this.meta.default !== undefined && (value === undefined || value === null)) {
38
+ value = typeof this.meta.default === "function" ? this.meta.default() : this.meta.default;
39
+ }
40
+ // optional / nullable
41
+ if (this.meta.optional && value === undefined)
42
+ return undefined;
43
+ if (this.meta.nullable && value === null)
44
+ return null;
45
+ // run internal check
46
+ let result = this.check(value);
47
+ // run user checks
48
+ for (const check of this.checks) {
49
+ check(result);
50
+ }
51
+ // run transforms
52
+ for (const transform of this.transforms) {
53
+ result = transform(result);
54
+ }
55
+ return result;
56
+ }
57
+ }
58
+
59
+ export { XanvType as default };
60
+ //# sourceMappingURL=XanvType.js.map
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<Value = any> {\n private checkes = new Map<string, XVCheckCallback<Value>>();\n private transforms: XanvTransformCallback<Value>[] = []\n readonly meta: Record<string, any> = {}\n protected abstract check(value: any): any;\n\n protected set(methodName: string, check: XVCheckCallback<Value>, args: any = true) {\n const has = methodName in this\n if (!has) {\n throw new Error(`Method ${methodName} does not exist on ${this.constructor.name}`);\n }\n this.checkes.set(methodName, check);\n this.meta[methodName] = args\n return this\n }\n\n clone() {\n const cloned = Object.create(this);\n cloned.checkes = new Map(this.checkes);\n cloned.meta = { ...this.meta };\n cloned.transforms = [...this.transforms];\n return cloned;\n }\n\n optional() {\n return this.set('optional', () => { }, true);\n }\n\n default(value: Value | (() => Value)) {\n return this.set('default', () => { }, value);\n }\n\n nullable() {\n return this.set('nullable', () => { }, true);\n }\n\n transform(cb: XanvTransformCallback<Value>) {\n this.transforms.push(cb);\n }\n\n parse(value: any): Value | undefined | null {\n\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\n }\n\n if (this.meta.optional && value === undefined) {\n return value;\n }\n\n if (this.meta.nullable && 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 for (const transform of this.transforms) {\n value = 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,EAAkC;QACnD,IAAA,CAAA,UAAU,GAAmC,EAAE;QAC9C,IAAA,CAAA,IAAI,GAAwB,EAAE;IA+D1C;AA5Da,IAAA,GAAG,CAAC,UAAkB,EAAE,KAA6B,EAAE,OAAY,IAAI,EAAA;AAC9E,QAAA,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI;QAC9B,IAAI,CAAC,GAAG,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,OAAA,EAAU,UAAU,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,QAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAC5B,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,CAAC,IAAI,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,IAAI,CAAE;QAC9B,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,OAAO,MAAM;IAChB;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,KAA4B,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAK,EAAG,CAAC,EAAE,KAAK,CAAC;IAC/C;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,SAAS,CAAC,EAAgC,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;YAC7E,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AAC3F,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AAC5C,YAAA,OAAO,KAAK;AACd,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,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,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC1B,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
1
+ {"version":3,"file":"XanvType.js","sources":["../src/XanvType.ts"],"sourcesContent":["export type XanvTransformCallback<T, U = T> = (value: T) => U;\r\nexport type XVCheckCallback<T> = (value: unknown) => void;\r\n\r\nexport type Meta = {\r\n optional?: boolean;\r\n nullable?: boolean;\r\n default?: any;\r\n};\r\n\r\nabstract class XanvType<Value, Input = unknown> {\r\n private checks: XVCheckCallback<Value>[] = [];\r\n private transforms: XanvTransformCallback<any, any>[] = [];\r\n readonly meta: Meta = {};\r\n\r\n protected abstract check(value: Input): Value;\r\n\r\n protected set(methodName: string, check: XVCheckCallback<Value>, args: any = true): this {\r\n if (!(methodName in this)) {\r\n throw new Error(\r\n `Method ${methodName} does not exist on ${this.constructor.name}`\r\n );\r\n }\r\n this.checks.push(check);\r\n (this as any).meta[methodName] = args;\r\n return this;\r\n }\r\n\r\n clone(): this {\r\n const cloned = Object.create(this);\r\n cloned.checks = [...this.checks];\r\n cloned.meta = { ...this.meta };\r\n cloned.transforms = [...this.transforms];\r\n return cloned;\r\n }\r\n\r\n optional(): this {\r\n return this.set(\"optional\", () => { })\r\n }\r\n\r\n nullable(): this {\r\n return this.set(\"nullable\", () => { })\r\n }\r\n\r\n default(value: Value | (() => Value)): this {\r\n return this.set(\"default\", () => { }, value)\r\n }\r\n\r\n transform<T>(cb: XanvTransformCallback<Value, T>): this {\r\n this.transforms.push(cb);\r\n return this\r\n }\r\n\r\n parse(value: Input): Value | undefined | null {\r\n // default\r\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\r\n value = typeof this.meta.default === \"function\" ? this.meta.default() : this.meta.default;\r\n }\r\n\r\n // optional / nullable\r\n if (this.meta.optional && value === undefined) return undefined;\r\n if (this.meta.nullable && value === null) return null;\r\n\r\n // run internal check\r\n let result = this.check(value);\r\n\r\n // run user checks\r\n for (const check of this.checks) {\r\n check(result);\r\n }\r\n\r\n // run transforms\r\n for (const transform of this.transforms) {\r\n result = transform(result);\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport default XanvType;\r\n"],"names":[],"mappings":"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"}
package/index.cjs ADDED
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ var XanvType = require('./XanvType.cjs');
4
+ var Any = require('./types/Any.cjs');
5
+ var Array = require('./types/Array.cjs');
6
+ var Boolean = require('./types/Boolean.cjs');
7
+ var Date = require('./types/Date.cjs');
8
+ var Enum = require('./types/Enum.cjs');
9
+ var File = require('./types/File.cjs');
10
+ var Map = require('./types/Map.cjs');
11
+ var Number = require('./types/Number.cjs');
12
+ var Object$1 = require('./types/Object.cjs');
13
+ var Record = require('./types/Record.cjs');
14
+ var Set = require('./types/Set.cjs');
15
+ var String = require('./types/String.cjs');
16
+ var Tuple = require('./types/Tuple.cjs');
17
+ var Union = require('./types/Union.cjs');
18
+ var Json = require('./types/Json.cjs');
19
+ var Function = require('./types/Function.cjs');
20
+ var Promise$1 = require('./types/Promise.cjs');
21
+
22
+ const xv = {
23
+ any: () => new Any(),
24
+ array: (type, length) => new Array(type, length),
25
+ boolean: () => new Boolean(),
26
+ date: () => new Date(),
27
+ enum: (...values) => new Enum(values),
28
+ file: () => new File(),
29
+ number: (length) => new Number(length),
30
+ object: (arg) => new Object$1(arg),
31
+ record: (key, value) => new Record(key, value),
32
+ map: (key, value) => new Map(key, value),
33
+ set: (type) => new Set(type),
34
+ string: (length) => new String(length),
35
+ tuple: (type) => new Tuple(type),
36
+ union: (types) => new Union(types),
37
+ json: () => new Json(),
38
+ function: (args, ret) => new Function(args, ret),
39
+ promise: (type) => new Promise$1(type),
40
+ };
41
+
42
+ exports.XanvType = XanvType;
43
+ exports.XVAny = Any;
44
+ exports.XVArray = Array;
45
+ exports.XVBoolean = Boolean;
46
+ exports.XVDate = Date;
47
+ exports.XVEnum = Enum;
48
+ exports.XVFile = File;
49
+ exports.XVMap = Map;
50
+ exports.XVNumber = Number;
51
+ exports.XVObject = Object$1;
52
+ exports.XVRecord = Record;
53
+ exports.XVSet = Set;
54
+ exports.XVString = String;
55
+ exports.XVTuple = Tuple;
56
+ exports.XVUnion = Union;
57
+ exports.XVJson = Json;
58
+ exports.XVFunction = Function;
59
+ exports.XVPromise = Promise$1;
60
+ exports.xv = xv;
61
+ //# sourceMappingURL=index.cjs.map
package/index.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import XanvType from \"./XanvType\";\r\nimport XVAny from \"./types/Any\";\r\nimport XVArray from \"./types/Array\";\r\nimport XVBoolean from \"./types/Boolean\";\r\nimport XVDate from \"./types/Date\";\r\nimport XVEnum from \"./types/Enum\";\r\nimport XVFile from \"./types/File\";\r\nimport XVMap from \"./types/Map\";\r\nimport XVNumber from \"./types/Number\";\r\nimport XVObject, { XVObjectShape } from \"./types/Object\";\r\nimport XVRecord from \"./types/Record\";\r\nimport XVSet from \"./types/Set\";\r\nimport XVString from \"./types/String\";\r\nimport XVTuple from \"./types/Tuple\";\r\nimport XVUnion from \"./types/Union\";\r\nimport XVJson from \"./types/Json\";\r\nimport XVFunction from \"./types/Function\";\r\n\r\nimport {\r\n XVInstanceType,\r\n XVCheckCallback,\r\n Infer,\r\n} from \"./types\";\r\nimport XVPromise from \"./types/Promise\";\r\n\r\nexport type {\r\n XVInstanceType,\r\n XVCheckCallback,\r\n Infer\r\n};\r\n\r\nexport {\r\n XanvType,\r\n XVAny,\r\n XVArray,\r\n XVBoolean,\r\n XVFunction,\r\n XVPromise,\r\n XVDate,\r\n XVEnum,\r\n XVFile,\r\n XVMap,\r\n XVNumber,\r\n XVObject,\r\n XVRecord,\r\n XVSet,\r\n XVString,\r\n XVTuple,\r\n XVUnion,\r\n XVJson,\r\n};\r\n\r\nexport const xv = {\r\n any: () => new XVAny(),\r\n array: <T extends XVInstanceType>(type: T, length?: number) => new XVArray<T>(type, length),\r\n boolean: () => new XVBoolean(),\r\n date: () => new XVDate(),\r\n enum: <T extends readonly (string | number)[]>(...values: T) => new XVEnum<T>(values),\r\n file: () => new XVFile(),\r\n number: (length?: number) => new XVNumber(length),\r\n object: <T extends XVObjectShape>(arg?: T) => new XVObject<T>(arg),\r\n record: <K extends XVInstanceType, V extends XVInstanceType>(key: K, value: V) => new XVRecord<K, V>(key, value),\r\n map: <K extends XVInstanceType, V extends XVInstanceType>(key: K, value: V) => new XVMap<K, V>(key, value),\r\n set: <T extends XVInstanceType>(type: T) => new XVSet<T>(type),\r\n string: (length?: number) => new XVString(length),\r\n tuple: <T extends XVInstanceType[]>(type: T) => new XVTuple<T>(type),\r\n union: <T extends XVInstanceType[]>(types: T) => new XVUnion<T>(types),\r\n json: () => new XVJson(),\r\n function: <A extends XVInstanceType[], R extends XVInstanceType>(args: A, ret: R) => new XVFunction<A, R>(args, ret),\r\n promise: <T extends XVInstanceType>(type: T) => new XVPromise(type),\r\n};\r\n\r\n"],"names":["XVAny","XVArray","XVBoolean","XVDate","XVEnum","XVFile","XVNumber","XVObject","XVRecord","XVMap","XVSet","XVString","XVTuple","XVUnion","XVJson","XVFunction","XVPromise"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoDO,MAAM,EAAE,GAAG;AACf,IAAA,GAAG,EAAE,MAAM,IAAIA,GAAK,EAAE;AACtB,IAAA,KAAK,EAAE,CAA2B,IAAO,EAAE,MAAe,KAAK,IAAIC,KAAO,CAAI,IAAI,EAAE,MAAM,CAAC;AAC3F,IAAA,OAAO,EAAE,MAAM,IAAIC,OAAS,EAAE;AAC9B,IAAA,IAAI,EAAE,MAAM,IAAIC,IAAM,EAAE;IACxB,IAAI,EAAE,CAAyC,GAAG,MAAS,KAAK,IAAIC,IAAM,CAAI,MAAM,CAAC;AACrF,IAAA,IAAI,EAAE,MAAM,IAAIC,IAAM,EAAE;IACxB,MAAM,EAAE,CAAC,MAAe,KAAK,IAAIC,MAAQ,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAA0B,GAAO,KAAK,IAAIC,QAAQ,CAAI,GAAG,CAAC;AAClE,IAAA,MAAM,EAAE,CAAqD,GAAM,EAAE,KAAQ,KAAK,IAAIC,MAAQ,CAAO,GAAG,EAAE,KAAK,CAAC;AAChH,IAAA,GAAG,EAAE,CAAqD,GAAM,EAAE,KAAQ,KAAK,IAAIC,GAAK,CAAO,GAAG,EAAE,KAAK,CAAC;IAC1G,GAAG,EAAE,CAA2B,IAAO,KAAK,IAAIC,GAAK,CAAI,IAAI,CAAC;IAC9D,MAAM,EAAE,CAAC,MAAe,KAAK,IAAIC,MAAQ,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAA6B,IAAO,KAAK,IAAIC,KAAO,CAAI,IAAI,CAAC;IACpE,KAAK,EAAE,CAA6B,KAAQ,KAAK,IAAIC,KAAO,CAAI,KAAK,CAAC;AACtE,IAAA,IAAI,EAAE,MAAM,IAAIC,IAAM,EAAE;AACxB,IAAA,QAAQ,EAAE,CAAuD,IAAO,EAAE,GAAM,KAAK,IAAIC,QAAU,CAAO,IAAI,EAAE,GAAG,CAAC;IACpH,OAAO,EAAE,CAA2B,IAAO,KAAK,IAAIC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;"}
package/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import XanvType from './XanvType.js';
1
+ export { default as XanvType } from './XanvType.js';
2
2
  import XVAny from './types/Any.js';
3
3
  import XVArray from './types/Array.js';
4
4
  import XVBoolean from './types/Boolean.js';
@@ -7,40 +7,36 @@ import XVEnum from './types/Enum.js';
7
7
  import XVFile from './types/File.js';
8
8
  import XVMap from './types/Map.js';
9
9
  import XVNumber from './types/Number.js';
10
- import XVObject from './types/Object.js';
10
+ import XVObject, { XVObjectShape } from './types/Object.js';
11
11
  import XVRecord from './types/Record.js';
12
12
  import XVSet from './types/Set.js';
13
13
  import XVString from './types/String.js';
14
14
  import XVTuple from './types/Tuple.js';
15
15
  import XVUnion from './types/Union.js';
16
16
  import XVJson from './types/Json.js';
17
- import { XVInstanceType, XVEnumValues, XVObjectType } from './types.js';
18
- export { XVCheckCallback, XVObjectValueType } from './types.js';
17
+ import XVFunction from './types/Function.js';
18
+ import { XVInstanceType } from './types.js';
19
+ export { Infer, XVCheckCallback } from './types.js';
20
+ import XVPromise from './types/Promise.js';
19
21
 
20
- declare const xv: {
21
- any: () => XVAny<any>;
22
- array: (type: XVInstanceType, length?: number) => XVArray<any[]>;
23
- boolean: () => XVBoolean;
24
- date: () => XVDate<Date>;
25
- enum: (values: XVEnumValues) => XVEnum<string | number>;
26
- file: () => XVFile<File | Blob>;
27
- map: (key: XVInstanceType, value: XVInstanceType) => XVMap<any, any>;
28
- number: (length?: number) => XVNumber<number>;
29
- object: (arg?: XVObjectType) => XVObject<Record<any, any>>;
30
- record: (key: XVInstanceType, value: XVInstanceType) => XVRecord<string, any>;
31
- set: (type: XVInstanceType) => XVSet<unknown>;
32
- string: (length?: number) => XVString<string>;
33
- tuple: (type: XVInstanceType[]) => XVTuple<any[]>;
34
- union: (type: XVInstanceType[]) => XVUnion<any>;
35
- json: () => XVJson;
22
+ declare const xv: {
23
+ any: () => XVAny;
24
+ array: <T extends XVInstanceType>(type: T, length?: number) => XVArray<T>;
25
+ boolean: () => XVBoolean;
26
+ date: () => XVDate;
27
+ enum: <T_1 extends readonly (string | number)[]>(...values: T_1) => XVEnum<T_1>;
28
+ file: () => XVFile;
29
+ number: (length?: number) => XVNumber<number>;
30
+ object: <T_2 extends XVObjectShape>(arg?: T_2 | undefined) => XVObject<T_2>;
31
+ record: <K extends XVInstanceType, V extends XVInstanceType>(key: K, value: V) => XVRecord<K, V>;
32
+ map: <K_1 extends XVInstanceType, V_1 extends XVInstanceType>(key: K_1, value: V_1) => XVMap<K_1, V_1>;
33
+ set: <T_3 extends XVInstanceType>(type: T_3) => XVSet<T_3>;
34
+ string: (length?: number) => XVString;
35
+ tuple: <T_4 extends XVInstanceType[]>(type: T_4) => XVTuple<T_4>;
36
+ union: <T_5 extends XVInstanceType[]>(types: T_5) => XVUnion<T_5>;
37
+ json: () => XVJson<Record<string, any>>;
38
+ function: <A extends XVInstanceType[], R extends XVInstanceType>(args: A, ret: R) => XVFunction<A, R>;
39
+ promise: <T_6 extends XVInstanceType>(type: T_6) => XVPromise<T_6>;
36
40
  };
37
- type Infer<T> = T extends XanvType<infer U> ? U : T extends XVString ? string : T extends XVNumber ? number : T extends XVBoolean ? boolean : T extends XVDate ? Date : T extends XVAny ? any : T extends XVFile ? File | Blob : T extends XVEnum ? (string | number) : T extends XVArray ? any[] : T extends XVTuple ? any[] : T extends XVUnion ? any : T extends XVMap ? Map<any, any> : T extends XVSet ? Set<any> : T extends XVRecord ? Record<string, any> : T extends XVJson ? object : T extends XVObject ? (T extends {
38
- arg?: infer O;
39
- } ? {
40
- [K in keyof O]: Infer<O[K]>;
41
- } : any) : T extends object ? {
42
- [K in keyof T]: Infer<T[K]>;
43
- } : any;
44
41
 
45
- export { XVAny, XVArray, XVBoolean, XVDate, XVEnum, XVEnumValues, XVFile, XVInstanceType, XVJson, XVMap, XVNumber, XVObject, XVObjectType, XVRecord, XVSet, XVString, XVTuple, XVUnion, XanvType, xv };
46
- export type { Infer };
42
+ export { XVAny, XVArray, XVBoolean, XVDate, XVEnum, XVFile, XVFunction, XVInstanceType, XVJson, XVMap, XVNumber, XVObject, XVPromise, XVRecord, XVSet, XVString, XVTuple, XVUnion, xv };
package/index.js CHANGED
@@ -1,17 +1,41 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var XanvType=require('./XanvType.js'),Any=require('./types/Any.js'),Array=require('./types/Array.js'),Boolean=require('./types/Boolean.js'),Date=require('./types/Date.js'),Enum=require('./types/Enum.js'),File=require('./types/File.js'),Map=require('./types/Map.js'),Number=require('./types/Number.js'),Object$1=require('./types/Object.js'),Record=require('./types/Record.js'),Set=require('./types/Set.js'),String=require('./types/String.js'),Tuple=require('./types/Tuple.js'),Union=require('./types/Union.js'),Json=require('./types/Json.js');const xv = {
2
- any: () => new Any.default(),
3
- array: (type, length) => new Array.default(type, length),
4
- boolean: () => new Boolean.default(),
5
- date: () => new Date.default(),
6
- enum: (values) => new Enum.default(values),
7
- file: () => new File.default(),
8
- map: (key, value) => new Map.default(key, value),
9
- number: (length) => new Number.default(length),
10
- object: (arg) => new Object$1.default(arg),
11
- record: (key, value) => new Record.default(key, value),
12
- set: (type) => new Set.default(type),
13
- string: (length) => new String.default(length),
14
- tuple: (type) => new Tuple.default(type),
15
- union: (type) => new Union.default(type),
16
- json: () => new Json.default(),
17
- };exports.XanvType=XanvType.default;exports.XVAny=Any.default;exports.XVArray=Array.default;exports.XVBoolean=Boolean.default;exports.XVDate=Date.default;exports.XVEnum=Enum.default;exports.XVFile=File.default;exports.XVMap=Map.default;exports.XVNumber=Number.default;exports.XVObject=Object$1.default;exports.XVRecord=Record.default;exports.XVSet=Set.default;exports.XVString=String.default;exports.XVTuple=Tuple.default;exports.XVUnion=Union.default;exports.XVJson=Json.default;exports.xv=xv;//# sourceMappingURL=index.js.map
1
+ export { default as XanvType } from './XanvType.js';
2
+ import XVAny from './types/Any.js';
3
+ import XVArray from './types/Array.js';
4
+ import XVBoolean from './types/Boolean.js';
5
+ import XVDate from './types/Date.js';
6
+ import XVEnum from './types/Enum.js';
7
+ import XVFile from './types/File.js';
8
+ import XVMap from './types/Map.js';
9
+ import XVNumber from './types/Number.js';
10
+ import XVObject from './types/Object.js';
11
+ import XVRecord from './types/Record.js';
12
+ import XVSet from './types/Set.js';
13
+ import XVString from './types/String.js';
14
+ import XVTuple from './types/Tuple.js';
15
+ import XVUnion from './types/Union.js';
16
+ import XVJson from './types/Json.js';
17
+ import XVFunction from './types/Function.js';
18
+ import XVPromise from './types/Promise.js';
19
+
20
+ const xv = {
21
+ any: () => new XVAny(),
22
+ array: (type, length) => new XVArray(type, length),
23
+ boolean: () => new XVBoolean(),
24
+ date: () => new XVDate(),
25
+ enum: (...values) => new XVEnum(values),
26
+ file: () => new XVFile(),
27
+ number: (length) => new XVNumber(length),
28
+ object: (arg) => new XVObject(arg),
29
+ record: (key, value) => new XVRecord(key, value),
30
+ map: (key, value) => new XVMap(key, value),
31
+ set: (type) => new XVSet(type),
32
+ string: (length) => new XVString(length),
33
+ tuple: (type) => new XVTuple(type),
34
+ union: (types) => new XVUnion(types),
35
+ json: () => new XVJson(),
36
+ function: (args, ret) => new XVFunction(args, ret),
37
+ promise: (type) => new XVPromise(type),
38
+ };
39
+
40
+ export { XVAny, XVArray, XVBoolean, XVDate, XVEnum, XVFile, XVFunction, XVJson, XVMap, XVNumber, XVObject, XVPromise, XVRecord, XVSet, XVString, XVTuple, XVUnion, xv };
41
+ //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import XanvType from \"./XanvType\";\nimport XVAny from \"./types/Any\";\nimport XVArray from \"./types/Array\";\nimport XVBoolean from \"./types/Boolean\";\nimport XVDate from \"./types/Date\";\nimport XVEnum from \"./types/Enum\";\nimport XVFile from \"./types/File\";\nimport XVMap from \"./types/Map\";\nimport XVNumber from \"./types/Number\";\nimport XVObject from \"./types/Object\";\nimport XVRecord from \"./types/Record\";\nimport XVSet from \"./types/Set\";\nimport XVString from \"./types/String\";\nimport XVTuple from \"./types/Tuple\";\nimport XVUnion from \"./types/Union\";\nimport XVJson from \"./types/Json\";\n\nimport {\n XVEnumValues,\n XVInstanceType,\n XVObjectType,\n XVCheckCallback,\n XVObjectValueType,\n} from \"./types\";\n\nexport type {\n XVEnumValues,\n XVInstanceType,\n XVObjectType,\n XVCheckCallback,\n XVObjectValueType,\n};\n\nexport {\n XanvType,\n XVAny,\n XVArray,\n XVBoolean,\n XVDate,\n XVEnum,\n XVFile,\n XVMap,\n XVNumber,\n XVObject,\n XVRecord,\n XVSet,\n XVString,\n XVTuple,\n XVUnion,\n XVJson,\n};\n\nexport const xv = {\n any: () => new XVAny(),\n array: (type: XVInstanceType, length?: number) => new XVArray(type, length),\n boolean: () => new XVBoolean(),\n date: () => new XVDate(),\n enum: (values: XVEnumValues) => new XVEnum(values),\n file: () => new XVFile(),\n map: (key: XVInstanceType, value: XVInstanceType) => new XVMap(key, value),\n number: (length?: number) => new XVNumber(length),\n object: (arg?: XVObjectType) => new XVObject(arg),\n record: (key: XVInstanceType, value: XVInstanceType) => new XVRecord(key, value),\n set: (type: XVInstanceType) => new XVSet(type),\n string: (length?: number) => new XVString(length),\n tuple: (type: XVInstanceType[]) => new XVTuple(type),\n union: (type: XVInstanceType[]) => new XVUnion(type),\n json: () => new XVJson(),\n}\n\nexport type Infer<T> =\n T extends XanvType<infer U> ? U :\n T extends XVString ? string :\n T extends XVNumber ? number :\n T extends XVBoolean ? boolean :\n T extends XVDate ? Date :\n T extends XVAny ? any :\n T extends XVFile ? File | Blob :\n T extends XVEnum ? (string | number) :\n T extends XVArray ? any[] :\n T extends XVTuple ? any[] :\n T extends XVUnion ? any :\n T extends XVMap ? Map<any, any> :\n T extends XVSet ? Set<any> :\n T extends XVRecord ? Record<string, any> :\n T extends XVJson ? object :\n T extends XVObject ? (T extends { arg?: infer O } ? { [K in keyof O]: Infer<O[K]> } : any) :\n T extends object ? { [K in keyof T]: Infer<T[K]> } :\n any;\n\n"],"names":["XVAny","XVArray","XVBoolean","XVDate","XVEnum","XVFile","XVMap","XVNumber","XVObject","XVRecord","XVSet","XVString","XVTuple","XVUnion","XVJson"],"mappings":"omBAoDO,MAAM,EAAE,GAAG;AACf,IAAA,GAAG,EAAE,MAAM,IAAIA,WAAK,EAAE;AACtB,IAAA,KAAK,EAAE,CAAC,IAAoB,EAAE,MAAe,KAAK,IAAIC,aAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3E,IAAA,OAAO,EAAE,MAAM,IAAIC,eAAS,EAAE;AAC9B,IAAA,IAAI,EAAE,MAAM,IAAIC,YAAM,EAAE;IACxB,IAAI,EAAE,CAAC,MAAoB,KAAK,IAAIC,YAAM,CAAC,MAAM,CAAC;AAClD,IAAA,IAAI,EAAE,MAAM,IAAIC,YAAM,EAAE;AACxB,IAAA,GAAG,EAAE,CAAC,GAAmB,EAAE,KAAqB,KAAK,IAAIC,WAAK,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1E,MAAM,EAAE,CAAC,MAAe,KAAK,IAAIC,cAAQ,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,GAAkB,KAAK,IAAIC,gBAAQ,CAAC,GAAG,CAAC;AACjD,IAAA,MAAM,EAAE,CAAC,GAAmB,EAAE,KAAqB,KAAK,IAAIC,cAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IAChF,GAAG,EAAE,CAAC,IAAoB,KAAK,IAAIC,WAAK,CAAC,IAAI,CAAC;IAC9C,MAAM,EAAE,CAAC,MAAe,KAAK,IAAIC,cAAQ,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAAC,IAAsB,KAAK,IAAIC,aAAO,CAAC,IAAI,CAAC;IACpD,KAAK,EAAE,CAAC,IAAsB,KAAK,IAAIC,aAAO,CAAC,IAAI,CAAC;AACpD,IAAA,IAAI,EAAE,MAAM,IAAIC,YAAM,EAAE;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import XanvType from \"./XanvType\";\r\nimport XVAny from \"./types/Any\";\r\nimport XVArray from \"./types/Array\";\r\nimport XVBoolean from \"./types/Boolean\";\r\nimport XVDate from \"./types/Date\";\r\nimport XVEnum from \"./types/Enum\";\r\nimport XVFile from \"./types/File\";\r\nimport XVMap from \"./types/Map\";\r\nimport XVNumber from \"./types/Number\";\r\nimport XVObject, { XVObjectShape } from \"./types/Object\";\r\nimport XVRecord from \"./types/Record\";\r\nimport XVSet from \"./types/Set\";\r\nimport XVString from \"./types/String\";\r\nimport XVTuple from \"./types/Tuple\";\r\nimport XVUnion from \"./types/Union\";\r\nimport XVJson from \"./types/Json\";\r\nimport XVFunction from \"./types/Function\";\r\n\r\nimport {\r\n XVInstanceType,\r\n XVCheckCallback,\r\n Infer,\r\n} from \"./types\";\r\nimport XVPromise from \"./types/Promise\";\r\n\r\nexport type {\r\n XVInstanceType,\r\n XVCheckCallback,\r\n Infer\r\n};\r\n\r\nexport {\r\n XanvType,\r\n XVAny,\r\n XVArray,\r\n XVBoolean,\r\n XVFunction,\r\n XVPromise,\r\n XVDate,\r\n XVEnum,\r\n XVFile,\r\n XVMap,\r\n XVNumber,\r\n XVObject,\r\n XVRecord,\r\n XVSet,\r\n XVString,\r\n XVTuple,\r\n XVUnion,\r\n XVJson,\r\n};\r\n\r\nexport const xv = {\r\n any: () => new XVAny(),\r\n array: <T extends XVInstanceType>(type: T, length?: number) => new XVArray<T>(type, length),\r\n boolean: () => new XVBoolean(),\r\n date: () => new XVDate(),\r\n enum: <T extends readonly (string | number)[]>(...values: T) => new XVEnum<T>(values),\r\n file: () => new XVFile(),\r\n number: (length?: number) => new XVNumber(length),\r\n object: <T extends XVObjectShape>(arg?: T) => new XVObject<T>(arg),\r\n record: <K extends XVInstanceType, V extends XVInstanceType>(key: K, value: V) => new XVRecord<K, V>(key, value),\r\n map: <K extends XVInstanceType, V extends XVInstanceType>(key: K, value: V) => new XVMap<K, V>(key, value),\r\n set: <T extends XVInstanceType>(type: T) => new XVSet<T>(type),\r\n string: (length?: number) => new XVString(length),\r\n tuple: <T extends XVInstanceType[]>(type: T) => new XVTuple<T>(type),\r\n union: <T extends XVInstanceType[]>(types: T) => new XVUnion<T>(types),\r\n json: () => new XVJson(),\r\n function: <A extends XVInstanceType[], R extends XVInstanceType>(args: A, ret: R) => new XVFunction<A, R>(args, ret),\r\n promise: <T extends XVInstanceType>(type: T) => new XVPromise(type),\r\n};\r\n\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAoDO,MAAM,EAAE,GAAG;AACf,IAAA,GAAG,EAAE,MAAM,IAAI,KAAK,EAAE;AACtB,IAAA,KAAK,EAAE,CAA2B,IAAO,EAAE,MAAe,KAAK,IAAI,OAAO,CAAI,IAAI,EAAE,MAAM,CAAC;AAC3F,IAAA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE;AAC9B,IAAA,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE;IACxB,IAAI,EAAE,CAAyC,GAAG,MAAS,KAAK,IAAI,MAAM,CAAI,MAAM,CAAC;AACrF,IAAA,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE;IACxB,MAAM,EAAE,CAAC,MAAe,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAA0B,GAAO,KAAK,IAAI,QAAQ,CAAI,GAAG,CAAC;AAClE,IAAA,MAAM,EAAE,CAAqD,GAAM,EAAE,KAAQ,KAAK,IAAI,QAAQ,CAAO,GAAG,EAAE,KAAK,CAAC;AAChH,IAAA,GAAG,EAAE,CAAqD,GAAM,EAAE,KAAQ,KAAK,IAAI,KAAK,CAAO,GAAG,EAAE,KAAK,CAAC;IAC1G,GAAG,EAAE,CAA2B,IAAO,KAAK,IAAI,KAAK,CAAI,IAAI,CAAC;IAC9D,MAAM,EAAE,CAAC,MAAe,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAA6B,IAAO,KAAK,IAAI,OAAO,CAAI,IAAI,CAAC;IACpE,KAAK,EAAE,CAA6B,KAAQ,KAAK,IAAI,OAAO,CAAI,KAAK,CAAC;AACtE,IAAA,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE;AACxB,IAAA,QAAQ,EAAE,CAAuD,IAAO,EAAE,GAAM,KAAK,IAAI,UAAU,CAAO,IAAI,EAAE,GAAG,CAAC;IACpH,OAAO,EAAE,CAA2B,IAAO,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC;;;;;"}
package/package.json CHANGED
@@ -1,25 +1,10 @@
1
1
  {
2
2
  "name": "xanv",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "types": "./index.d.ts",
5
- "main": "./index.js",
6
- "module": "./index.mjs",
5
+ "main": "./index.cjs",
6
+ "module": "./index.js",
7
7
  "sideEffects": false,
8
- "devDependencies": {
9
- "@types/react": "^19.0.2",
10
- "@types/react-dom": "^19.0.2",
11
- "makepack": "^1.7.15",
12
- "react": "^19.0.0",
13
- "react-dom": "^19.0.0",
14
- "typescript": "^4.4.2"
15
- },
16
- "exports": {
17
- ".": {
18
- "import": "./index.mjs",
19
- "require": "./index.js",
20
- "types": "./index.d.ts"
21
- }
22
- },
23
8
  "description": "",
24
9
  "keywords": [],
25
10
  "author": {
@@ -30,4 +15,4 @@
30
15
  "type": "git",
31
16
  "url": "https://github.com/devnax/xanv.git"
32
17
  }
33
- }
18
+ }