xanv 1.0.7 → 1.0.8

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 (83) hide show
  1. package/XanvType.d.ts +11 -11
  2. package/XanvType.js +49 -49
  3. package/XanvType.js.map +1 -1
  4. package/XanvType.mjs +49 -49
  5. package/XanvType.mjs.map +1 -1
  6. package/index.d.ts +50 -20
  7. package/index.js +15 -14
  8. package/index.js.map +1 -1
  9. package/index.mjs +15 -14
  10. package/index.mjs.map +1 -1
  11. package/package.json +1 -1
  12. package/readme.md +199 -121
  13. package/types/Any.d.ts +7 -3
  14. package/types/Any.js +11 -3
  15. package/types/Any.js.map +1 -1
  16. package/types/Any.mjs +11 -3
  17. package/types/Any.mjs.map +1 -1
  18. package/types/Array.d.ts +9 -9
  19. package/types/Array.js +84 -83
  20. package/types/Array.js.map +1 -1
  21. package/types/Array.mjs +84 -83
  22. package/types/Array.mjs.map +1 -1
  23. package/types/Boolean.d.ts +3 -3
  24. package/types/Boolean.js +8 -7
  25. package/types/Boolean.js.map +1 -1
  26. package/types/Boolean.mjs +8 -7
  27. package/types/Boolean.mjs.map +1 -1
  28. package/types/Date.d.ts +3 -3
  29. package/types/Date.js +8 -7
  30. package/types/Date.js.map +1 -1
  31. package/types/Date.mjs +8 -7
  32. package/types/Date.mjs.map +1 -1
  33. package/types/Enum.d.ts +5 -5
  34. package/types/Enum.js +18 -17
  35. package/types/Enum.js.map +1 -1
  36. package/types/Enum.mjs +18 -17
  37. package/types/Enum.mjs.map +1 -1
  38. package/types/File.d.ts +8 -8
  39. package/types/File.js +51 -50
  40. package/types/File.js.map +1 -1
  41. package/types/File.mjs +51 -50
  42. package/types/File.mjs.map +1 -1
  43. package/types/Map.d.ts +6 -6
  44. package/types/Map.js +24 -23
  45. package/types/Map.js.map +1 -1
  46. package/types/Map.mjs +24 -23
  47. package/types/Map.mjs.map +1 -1
  48. package/types/Number.d.ts +10 -10
  49. package/types/Number.js +71 -65
  50. package/types/Number.js.map +1 -1
  51. package/types/Number.mjs +71 -65
  52. package/types/Number.mjs.map +1 -1
  53. package/types/Object.d.ts +6 -6
  54. package/types/Object.js +25 -25
  55. package/types/Object.js.map +1 -1
  56. package/types/Object.mjs +25 -25
  57. package/types/Object.mjs.map +1 -1
  58. package/types/Record.d.ts +8 -8
  59. package/types/Record.js +25 -24
  60. package/types/Record.js.map +1 -1
  61. package/types/Record.mjs +25 -24
  62. package/types/Record.mjs.map +1 -1
  63. package/types/Set.d.ts +7 -7
  64. package/types/Set.js +36 -35
  65. package/types/Set.js.map +1 -1
  66. package/types/Set.mjs +36 -35
  67. package/types/Set.mjs.map +1 -1
  68. package/types/String.d.ts +12 -12
  69. package/types/String.js +93 -83
  70. package/types/String.js.map +1 -1
  71. package/types/String.mjs +93 -83
  72. package/types/String.mjs.map +1 -1
  73. package/types/Tuple.d.ts +5 -5
  74. package/types/Tuple.js +24 -23
  75. package/types/Tuple.js.map +1 -1
  76. package/types/Tuple.mjs +24 -23
  77. package/types/Tuple.mjs.map +1 -1
  78. package/types/Union.d.ts +5 -5
  79. package/types/Union.js +29 -28
  80. package/types/Union.js.map +1 -1
  81. package/types/Union.mjs +29 -28
  82. package/types/Union.mjs.map +1 -1
  83. package/types.d.ts +6 -6
package/XanvType.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { XVCheckCallback, XanvTransformCallback } from './types.js';
2
2
 
3
- declare abstract class XanvType<TypeKeys extends string | number | symbol, Default> {
4
- private checkes;
5
- meta: Record<string, any>;
6
- protected abstract check(value: any): any;
7
- set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void;
8
- get(key: TypeKeys): XVCheckCallback<Default> | undefined;
9
- optional(): this;
10
- default(def: Default | (() => Default)): this;
11
- nullable(): this;
12
- transform(cb: XanvTransformCallback<any>): this;
13
- parse(value: any): Default | null;
3
+ declare abstract class XanvType<TypeKeys extends string | number | symbol, Default> {
4
+ private checkes;
5
+ readonly meta: Record<string, any>;
6
+ protected abstract check(value: any): any;
7
+ set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void;
8
+ get(key: TypeKeys): XVCheckCallback<Default> | undefined;
9
+ optional(): this;
10
+ default(def: Default | (() => Default)): this;
11
+ nullable(): this;
12
+ transform(cb: XanvTransformCallback<Default>): this;
13
+ parse(value: any): Default | undefined | null;
14
14
  }
15
15
 
16
16
  export { XanvType as default };
package/XanvType.js CHANGED
@@ -1,50 +1,50 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});class XanvType {
2
- constructor() {
3
- this.checkes = new Map();
4
- this.meta = {
5
- optional: false,
6
- nullable: false,
7
- default: undefined,
8
- transform: undefined,
9
- };
10
- }
11
- set(key, check, args) {
12
- this.checkes.set(key, check);
13
- this.meta[key] = args || true; // Store the key in meta for reference
14
- }
15
- get(key) {
16
- return this.checkes.get(key);
17
- }
18
- optional() {
19
- this.meta.optional = true;
20
- return this;
21
- }
22
- default(def) {
23
- this.meta.default = def;
24
- return this;
25
- }
26
- nullable() {
27
- this.meta.nullable = true;
28
- return this;
29
- }
30
- transform(cb) {
31
- this.meta.transform = cb;
32
- return this;
33
- }
34
- parse(value) {
35
- if ((value === undefined || value === null) && this.meta.default !== undefined) {
36
- value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default;
37
- }
38
- if ((this.meta.nullable || this.meta.optional) && (value === undefined || value === null)) {
39
- return value;
40
- }
41
- value = this.check(value) || value;
42
- for (const [, check] of Array.from(this.checkes.entries())) {
43
- check(value);
44
- }
45
- if (this.meta.transform) {
46
- value = this.meta.transform(value);
47
- }
48
- return value;
49
- }
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});class XanvType {
2
+ constructor() {
3
+ this.checkes = new Map();
4
+ this.meta = {
5
+ optional: false,
6
+ nullable: false,
7
+ default: undefined,
8
+ transform: undefined,
9
+ };
10
+ }
11
+ set(key, check, args) {
12
+ this.checkes.set(key, check);
13
+ this.meta[key] = args || true; // Store the key in meta for reference
14
+ }
15
+ get(key) {
16
+ return this.checkes.get(key);
17
+ }
18
+ optional() {
19
+ this.meta.optional = true;
20
+ return this;
21
+ }
22
+ default(def) {
23
+ this.meta.default = def;
24
+ return this;
25
+ }
26
+ nullable() {
27
+ this.meta.nullable = true;
28
+ return this;
29
+ }
30
+ transform(cb) {
31
+ this.meta.transform = cb;
32
+ return this;
33
+ }
34
+ parse(value) {
35
+ if ((value === undefined || value === null) && this.meta.default !== undefined) {
36
+ value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default;
37
+ }
38
+ if ((this.meta.nullable || this.meta.optional) && (value === undefined || value === null)) {
39
+ return value;
40
+ }
41
+ value = this.check(value) || value;
42
+ for (const [, check] of Array.from(this.checkes.entries())) {
43
+ check(value);
44
+ }
45
+ if (this.meta.transform) {
46
+ value = this.meta.transform(value);
47
+ }
48
+ return value;
49
+ }
50
50
  }exports.default=XanvType;//# 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<TypeKeys extends string | number | symbol, Default> {\n private checkes = new Map<TypeKeys, XVCheckCallback<Default>>();\n meta: Record<string, any> = {\n optional: false,\n nullable: false,\n default: undefined,\n transform: undefined,\n }\n\n protected abstract check(value: any): any;\n\n set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void {\n this.checkes.set(key, check);\n (this.meta as any)[key] = args || true; // Store the key in meta for reference\n }\n\n get(key: TypeKeys) {\n return this.checkes.get(key);\n }\n\n optional(): this {\n this.meta.optional = true;\n return this\n }\n\n default(def: Default | (() => Default)): this {\n this.meta.default = def;\n return this\n }\n\n nullable(): this {\n this.meta.nullable = true;\n return this\n }\n\n transform(cb: XanvTransformCallback<any>) {\n this.meta.transform = cb\n return this\n }\n\n parse(value: any): Default | null {\n\n if ((value === undefined || value === null) && this.meta.default !== undefined) {\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\n }\n\n if ((this.meta.nullable || this.meta.optional) && (value === undefined || value === null)) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n if (this.meta.transform) {\n value = this.meta.transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"sEAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsC;AAC/D,QAAA,IAAA,CAAA,IAAI,GAAwB;AACzB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;SACtB;IAuDJ;AAnDG,IAAA,GAAG,CAAC,GAAa,EAAE,KAA+B,EAAE,IAAU,EAAA;QAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAY,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;IAC1C;AAEA,IAAA,GAAG,CAAC,GAAa,EAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,GAA8B,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG;AACvB,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,EAA8B,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE;AACxB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,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,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AACxF,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
1
+ {"version":3,"file":"XanvType.js","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\r\n\r\nabstract class XanvType<TypeKeys extends string | number | symbol, Default> {\r\n private checkes = new Map<TypeKeys, XVCheckCallback<Default>>();\r\n readonly meta: Record<string, any> = {\r\n optional: false,\r\n nullable: false,\r\n default: undefined,\r\n transform: undefined,\r\n }\r\n\r\n protected abstract check(value: any): any;\r\n\r\n set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void {\r\n this.checkes.set(key, check);\r\n (this.meta as any)[key] = args || true; // Store the key in meta for reference\r\n }\r\n\r\n get(key: TypeKeys) {\r\n return this.checkes.get(key);\r\n }\r\n\r\n optional(): this {\r\n this.meta.optional = true;\r\n return this\r\n }\r\n\r\n default(def: Default | (() => Default)): this {\r\n this.meta.default = def;\r\n return this\r\n }\r\n\r\n nullable(): this {\r\n this.meta.nullable = true;\r\n return this\r\n }\r\n\r\n transform(cb: XanvTransformCallback<Default>) {\r\n this.meta.transform = cb\r\n return this\r\n }\r\n\r\n parse(value: any): Default | undefined | null {\r\n\r\n if ((value === undefined || value === null) && this.meta.default !== undefined) {\r\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\r\n }\r\n\r\n if ((this.meta.nullable || this.meta.optional) && (value === undefined || value === null)) {\r\n return value;\r\n }\r\n\r\n value = this.check(value) || value;\r\n\r\n for (const [, check] of Array.from(this.checkes.entries())) {\r\n check(value);\r\n }\r\n\r\n if (this.meta.transform) {\r\n value = this.meta.transform(value);\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n\r\nexport default XanvType;"],"names":[],"mappings":"sEAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsC,CAAC;AACvD,QAAA,IAAA,CAAA,IAAI,GAAwB;AAClC,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;SACtB,CAAA;IAuDJ,CAAC;AAnDE,IAAA,GAAG,CAAC,GAAa,EAAE,KAA+B,EAAE,IAAU,EAAA;QAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAY,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;IAC1C,CAAC;AAED,IAAA,GAAG,CAAC,GAAa,EAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAA;IACd,CAAC;AAED,IAAA,OAAO,CAAC,GAA8B,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACxB,QAAA,OAAO,IAAI,CAAA;IACd,CAAC;IAED,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAA;IACd,CAAC;AAED,IAAA,SAAS,CAAC,EAAkC,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;IACd,CAAC;AAED,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,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,CAAA;AAC3F,QAAA,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AACxF,YAAA,OAAO,KAAK,CAAC;AACf,QAAA,CAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAEnC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC,CAAC;AACf,QAAA,CAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,CAAA;AAED,QAAA,OAAO,KAAK,CAAC;IAChB,CAAC;AACH"}
package/XanvType.mjs CHANGED
@@ -1,50 +1,50 @@
1
- class XanvType {
2
- constructor() {
3
- this.checkes = new Map();
4
- this.meta = {
5
- optional: false,
6
- nullable: false,
7
- default: undefined,
8
- transform: undefined,
9
- };
10
- }
11
- set(key, check, args) {
12
- this.checkes.set(key, check);
13
- this.meta[key] = args || true; // Store the key in meta for reference
14
- }
15
- get(key) {
16
- return this.checkes.get(key);
17
- }
18
- optional() {
19
- this.meta.optional = true;
20
- return this;
21
- }
22
- default(def) {
23
- this.meta.default = def;
24
- return this;
25
- }
26
- nullable() {
27
- this.meta.nullable = true;
28
- return this;
29
- }
30
- transform(cb) {
31
- this.meta.transform = cb;
32
- return this;
33
- }
34
- parse(value) {
35
- if ((value === undefined || value === null) && this.meta.default !== undefined) {
36
- value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default;
37
- }
38
- if ((this.meta.nullable || this.meta.optional) && (value === undefined || value === null)) {
39
- return value;
40
- }
41
- value = this.check(value) || value;
42
- for (const [, check] of Array.from(this.checkes.entries())) {
43
- check(value);
44
- }
45
- if (this.meta.transform) {
46
- value = this.meta.transform(value);
47
- }
48
- return value;
49
- }
1
+ class XanvType {
2
+ constructor() {
3
+ this.checkes = new Map();
4
+ this.meta = {
5
+ optional: false,
6
+ nullable: false,
7
+ default: undefined,
8
+ transform: undefined,
9
+ };
10
+ }
11
+ set(key, check, args) {
12
+ this.checkes.set(key, check);
13
+ this.meta[key] = args || true; // Store the key in meta for reference
14
+ }
15
+ get(key) {
16
+ return this.checkes.get(key);
17
+ }
18
+ optional() {
19
+ this.meta.optional = true;
20
+ return this;
21
+ }
22
+ default(def) {
23
+ this.meta.default = def;
24
+ return this;
25
+ }
26
+ nullable() {
27
+ this.meta.nullable = true;
28
+ return this;
29
+ }
30
+ transform(cb) {
31
+ this.meta.transform = cb;
32
+ return this;
33
+ }
34
+ parse(value) {
35
+ if ((value === undefined || value === null) && this.meta.default !== undefined) {
36
+ value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default;
37
+ }
38
+ if ((this.meta.nullable || this.meta.optional) && (value === undefined || value === null)) {
39
+ return value;
40
+ }
41
+ value = this.check(value) || value;
42
+ for (const [, check] of Array.from(this.checkes.entries())) {
43
+ check(value);
44
+ }
45
+ if (this.meta.transform) {
46
+ value = this.meta.transform(value);
47
+ }
48
+ return value;
49
+ }
50
50
  }export{XanvType as default};//# sourceMappingURL=XanvType.mjs.map
package/XanvType.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"XanvType.mjs","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<TypeKeys extends string | number | symbol, Default> {\n private checkes = new Map<TypeKeys, XVCheckCallback<Default>>();\n meta: Record<string, any> = {\n optional: false,\n nullable: false,\n default: undefined,\n transform: undefined,\n }\n\n protected abstract check(value: any): any;\n\n set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void {\n this.checkes.set(key, check);\n (this.meta as any)[key] = args || true; // Store the key in meta for reference\n }\n\n get(key: TypeKeys) {\n return this.checkes.get(key);\n }\n\n optional(): this {\n this.meta.optional = true;\n return this\n }\n\n default(def: Default | (() => Default)): this {\n this.meta.default = def;\n return this\n }\n\n nullable(): this {\n this.meta.nullable = true;\n return this\n }\n\n transform(cb: XanvTransformCallback<any>) {\n this.meta.transform = cb\n return this\n }\n\n parse(value: any): Default | null {\n\n if ((value === undefined || value === null) && this.meta.default !== undefined) {\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\n }\n\n if ((this.meta.nullable || this.meta.optional) && (value === undefined || value === null)) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n if (this.meta.transform) {\n value = this.meta.transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"AAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsC;AAC/D,QAAA,IAAA,CAAA,IAAI,GAAwB;AACzB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;SACtB;IAuDJ;AAnDG,IAAA,GAAG,CAAC,GAAa,EAAE,KAA+B,EAAE,IAAU,EAAA;QAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAY,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;IAC1C;AAEA,IAAA,GAAG,CAAC,GAAa,EAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,OAAO,CAAC,GAA8B,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG;AACvB,QAAA,OAAO,IAAI;IACd;IAEA,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI;AACzB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,SAAS,CAAC,EAA8B,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE;AACxB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,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,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AACxF,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACpC,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
1
+ {"version":3,"file":"XanvType.mjs","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\r\n\r\nabstract class XanvType<TypeKeys extends string | number | symbol, Default> {\r\n private checkes = new Map<TypeKeys, XVCheckCallback<Default>>();\r\n readonly meta: Record<string, any> = {\r\n optional: false,\r\n nullable: false,\r\n default: undefined,\r\n transform: undefined,\r\n }\r\n\r\n protected abstract check(value: any): any;\r\n\r\n set(key: TypeKeys, check: XVCheckCallback<Default>, args?: any): void {\r\n this.checkes.set(key, check);\r\n (this.meta as any)[key] = args || true; // Store the key in meta for reference\r\n }\r\n\r\n get(key: TypeKeys) {\r\n return this.checkes.get(key);\r\n }\r\n\r\n optional(): this {\r\n this.meta.optional = true;\r\n return this\r\n }\r\n\r\n default(def: Default | (() => Default)): this {\r\n this.meta.default = def;\r\n return this\r\n }\r\n\r\n nullable(): this {\r\n this.meta.nullable = true;\r\n return this\r\n }\r\n\r\n transform(cb: XanvTransformCallback<Default>) {\r\n this.meta.transform = cb\r\n return this\r\n }\r\n\r\n parse(value: any): Default | undefined | null {\r\n\r\n if ((value === undefined || value === null) && this.meta.default !== undefined) {\r\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\r\n }\r\n\r\n if ((this.meta.nullable || this.meta.optional) && (value === undefined || value === null)) {\r\n return value;\r\n }\r\n\r\n value = this.check(value) || value;\r\n\r\n for (const [, check] of Array.from(this.checkes.entries())) {\r\n check(value);\r\n }\r\n\r\n if (this.meta.transform) {\r\n value = this.meta.transform(value);\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n\r\nexport default XanvType;"],"names":[],"mappings":"AAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsC,CAAC;AACvD,QAAA,IAAA,CAAA,IAAI,GAAwB;AAClC,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;SACtB,CAAA;IAuDJ,CAAC;AAnDE,IAAA,GAAG,CAAC,GAAa,EAAE,KAA+B,EAAE,IAAU,EAAA;QAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAY,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;IAC1C,CAAC;AAED,IAAA,GAAG,CAAC,GAAa,EAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAA;IACd,CAAC;AAED,IAAA,OAAO,CAAC,GAA8B,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACxB,QAAA,OAAO,IAAI,CAAA;IACd,CAAC;IAED,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAA;IACd,CAAC;AAED,IAAA,SAAS,CAAC,EAAkC,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;IACd,CAAC;AAED,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,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,CAAA;AAC3F,QAAA,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AACxF,YAAA,OAAO,KAAK,CAAC;AACf,QAAA,CAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAEnC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC,CAAC;AACf,QAAA,CAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,CAAA;AAED,QAAA,OAAO,KAAK,CAAC;IAChB,CAAC;AACH"}
package/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- export { default as XanvType } from './XanvType.js';
2
- export { default as XVAny } from './types/Any.js';
1
+ import XanvType from './XanvType.js';
2
+ import XVAny from './types/Any.js';
3
3
  import XVArray from './types/Array.js';
4
4
  import XVBoolean from './types/Boolean.js';
5
5
  import XVDate from './types/Date.js';
6
6
  import XVEnum from './types/Enum.js';
7
- export { default as XVFile } from './types/File.js';
7
+ import XVFile from './types/File.js';
8
8
  import XVMap from './types/Map.js';
9
9
  import XVNumber from './types/Number.js';
10
10
  import XVObject from './types/Object.js';
@@ -13,22 +13,52 @@ 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
- import { XVInstanceType, XVEnumValues, XVObjectType } from './types.js';
17
- export { XVCheckCallback, XVObjectKeyType, XVObjectValueType } from './types.js';
16
+ import { XVEnumValues } from './types.js';
17
+ export { XVCheckCallback, XVInstanceType, XVObjectType, XVObjectValueType } from './types.js';
18
18
 
19
- declare const xv: {
20
- array: (type: XVInstanceType, length?: number) => XVArray;
21
- boolean: () => XVBoolean;
22
- date: () => XVDate;
23
- enum: (values: XVEnumValues) => XVEnum;
24
- map: (key: XVInstanceType, value: XVInstanceType) => XVMap;
25
- number: (length?: number) => XVNumber;
26
- object: (arg?: XVObjectType) => XVObject;
27
- record: (key: XVInstanceType, value: XVInstanceType) => XVRecord;
28
- set: (type: XVInstanceType) => XVSet;
29
- string: (length?: number) => XVString;
30
- tuple: (type: XVInstanceType[]) => XVTuple;
31
- union: (type: XVInstanceType[]) => XVUnion;
32
- };
19
+ interface XVStatic {
20
+ array<T>(type: XVInstanceOf<T>, length?: number): XVArray<T> & XVInstanceOf<T[]>;
21
+ tuple<T extends any[]>(types: {
22
+ [K in keyof T]: XVInstanceOf<T[K]>;
23
+ }): XVTuple<T> & XVInstanceOf<T>;
24
+ union<T extends any[]>(types: {
25
+ [K in keyof T]: XVInstanceOf<T[K]>;
26
+ }): XVUnion<T> & XVInstanceOf<T>;
27
+ boolean(): XVBoolean<boolean> & XVInstanceOf<boolean>;
28
+ date(): XVDate<Date> & XVInstanceOf<Date>;
29
+ enum<T extends string | number = string | number>(values: XVEnumValues): XVEnum<T> & XVInstanceOf<T>;
30
+ map<K, V>(key: XVInstanceOf<K>, value: XVInstanceOf<V>): XVMap<K, V> & XVInstanceOf<Map<K, V>>;
31
+ number(): XVNumber<number> & XVInstanceOf<number>;
32
+ object<S extends Record<string, any> = Record<string, any>>(arg?: {
33
+ [K in keyof S]: XVInstanceOf<S[K]>;
34
+ }): XVObject<S> & XVInstanceOf<{
35
+ [K in keyof S]: S[K];
36
+ }>;
37
+ record<K extends string = string, V = any>(key: XVInstanceOf<K>, value: XVInstanceOf<V>): XVRecord<K, V> & XVInstanceOf<Record<K, V>>;
38
+ set<T>(type: XVInstanceOf<T>): XVSet<T> & XVInstanceOf<Set<T>>;
39
+ string(): XVString<string> & XVInstanceOf<string>;
40
+ string(length: number): XVString<string> & XVInstanceOf<string>;
41
+ any(): XVAny<any> & XVInstanceOf<any>;
42
+ }
43
+ type XVInstanceOf<T = any> = XanvType<any, T> & {
44
+ meta: {
45
+ optional: false;
46
+ nullable: false;
47
+ default: undefined;
48
+ transform: undefined;
49
+ };
50
+ };
51
+ type Infer<T> = T extends XVInstanceOf<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 XVObject ? (T extends {
52
+ arg?: infer O;
53
+ } ? {
54
+ [K in keyof O]: Infer<O[K]>;
55
+ } : any) : T extends object ? {
56
+ [K in keyof T]: Infer<T[K]>;
57
+ } : any;
58
+ declare const xv: XVStatic;
59
+ declare namespace xv {
60
+ type infer<T> = Infer<T>;
61
+ }
33
62
 
34
- export { XVArray, XVBoolean, XVDate, XVEnum, XVEnumValues, XVInstanceType, XVMap, XVNumber, XVObject, XVObjectType, XVRecord, XVSet, XVString, XVTuple, XVUnion, xv };
63
+ export { XVAny, XVArray, XVBoolean, XVDate, XVEnum, XVEnumValues, XVFile, XVMap, XVNumber, XVObject, XVRecord, XVSet, XVString, XVTuple, XVUnion, XanvType, xv };
64
+ export type { Infer, XVInstanceOf, XVStatic };
package/index.js CHANGED
@@ -1,14 +1,15 @@
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');const xv = {
2
- array: (type, length) => new Array.default(type, length),
3
- boolean: () => new Boolean.default(),
4
- date: () => new Date.default(),
5
- enum: (values) => new Enum.default(values),
6
- map: (key, value) => new Map.default(key, value),
7
- number: (length) => new Number.default(length),
8
- object: (arg) => new Object$1.default(arg),
9
- record: (key, value) => new Record.default(key, value),
10
- set: (type) => new Set.default(type),
11
- string: (length) => new String.default(length),
12
- tuple: (type) => new Tuple.default(type),
13
- union: (type) => new Union.default(type),
14
- };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.xv=xv;//# sourceMappingURL=index.js.map
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');const _xv = {
2
+ array: (type, length) => new Array.default(type, length),
3
+ boolean: () => new Boolean.default(),
4
+ date: () => new Date.default(),
5
+ enum: (values) => new Enum.default(values),
6
+ map: (key, value) => new Map.default(key, value),
7
+ number: (length) => new Number.default(length),
8
+ object: (arg) => new Object$1.default(arg),
9
+ record: (key, value) => new Record.default(key, value),
10
+ set: (type) => new Set.default(type),
11
+ string: (length) => new String.default(length),
12
+ tuple: (type) => new Tuple.default(type),
13
+ union: (type) => new Union.default(type),
14
+ };
15
+ const xv = _xv;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.xv=xv;//# 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\";\n\nimport {\n XVEnumValues,\n XVInstanceType,\n XVObjectType,\n XVCheckCallback,\n XVObjectKeyType,\n XVObjectValueType,\n} from \"./types\";\n\nexport type {\n XVEnumValues,\n XVInstanceType,\n XVObjectType,\n XVCheckCallback,\n XVObjectKeyType,\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};\n\nexport const xv = {\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 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}\n\n"],"names":["XVArray","XVBoolean","XVDate","XVEnum","XVMap","XVNumber","XVObject","XVRecord","XVSet","XVString","XVTuple","XVUnion"],"mappings":"okBAoDO,MAAM,EAAE,GAAG;AACf,IAAA,KAAK,EAAE,CAAC,IAAoB,EAAE,MAAe,KAAK,IAAIA,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,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;"}
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 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\n\r\nimport {\r\n XVEnumValues,\r\n XVInstanceType,\r\n XVObjectType,\r\n XVCheckCallback,\r\n XVObjectValueType,\r\n} from \"./types\";\r\n\r\nexport type {\r\n XVEnumValues,\r\n XVInstanceType,\r\n XVObjectType,\r\n XVCheckCallback,\r\n XVObjectValueType,\r\n};\r\n\r\nexport {\r\n XanvType,\r\n XVAny,\r\n XVArray,\r\n XVBoolean,\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};\r\n\r\nconst _xv = {\r\n array: (type: XVInstanceType, length?: number) => new XVArray(type, length),\r\n boolean: () => new XVBoolean(),\r\n date: () => new XVDate(),\r\n enum: (values: XVEnumValues) => new XVEnum(values),\r\n map: (key: XVInstanceType, value: XVInstanceType) => new XVMap(key, value),\r\n number: (length?: number) => new XVNumber(length),\r\n object: (arg?: XVObjectType) => new XVObject(arg),\r\n record: (key: XVInstanceType, value: XVInstanceType) => new XVRecord(key, value),\r\n set: (type: XVInstanceType) => new XVSet(type),\r\n string: (length?: number) => new XVString(length),\r\n tuple: (type: XVInstanceType[]) => new XVTuple(type),\r\n union: (type: XVInstanceType[]) => new XVUnion(type),\r\n}\r\n\r\n// Strongly-typed factory signatures for compile-time only usage\r\nexport interface XVStatic {\r\n array<T>(type: XVInstanceOf<T>, length?: number): XVArray<T> & XVInstanceOf<T[]>;\r\n tuple<T extends any[]>(types: { [K in keyof T]: XVInstanceOf<T[K]> }): XVTuple<T> & XVInstanceOf<T>;\r\n union<T extends any[]>(types: { [K in keyof T]: XVInstanceOf<T[K]> }): XVUnion<T> & XVInstanceOf<T>;\r\n boolean(): XVBoolean<boolean> & XVInstanceOf<boolean>;\r\n date(): XVDate<Date> & XVInstanceOf<Date>;\r\n enum<T extends string | number = string | number>(values: XVEnumValues): XVEnum<T> & XVInstanceOf<T>;\r\n map<K, V>(key: XVInstanceOf<K>, value: XVInstanceOf<V>): XVMap<K, V> & XVInstanceOf<Map<K, V>>;\r\n number(): XVNumber<number> & XVInstanceOf<number>;\r\n object<S extends Record<string, any> = Record<string, any>>(arg?: { [K in keyof S]: XVInstanceOf<S[K]> }): XVObject<S> & XVInstanceOf<{ [K in keyof S]: S[K] }>;\r\n record<K extends string = string, V = any>(key: XVInstanceOf<K>, value: XVInstanceOf<V>): XVRecord<K, V> & XVInstanceOf<Record<K, V>>;\r\n set<T>(type: XVInstanceOf<T>): XVSet<T> & XVInstanceOf<Set<T>>;\r\n string(): XVString<string> & XVInstanceOf<string>;\r\n string(length: number): XVString<string> & XVInstanceOf<string>;\r\n any(): XVAny<any> & XVInstanceOf<any>;\r\n}\r\n\r\nexport const xv = _xv as unknown as XVStatic;\r\n\r\n// Type-level inference utility\r\n// Use: type T = Infer<typeof schema>\r\n// Phantom generic wrapper type for compile-time inference.\r\n// Factory helpers will annotate returned instances with this to carry type information.\r\nexport type XVInstanceOf<T = any> = XanvType<any, T> & {\r\n meta: {\r\n optional: false,\r\n nullable: false,\r\n default: undefined,\r\n transform: undefined,\r\n }\r\n};\r\n\r\nexport type Infer<T> =\r\n // If the value is an XVInstanceOf carrying a compile-time type, extract it\r\n T extends XVInstanceOf<infer U> ? U :\r\n // direct XV class instances without phantom info (fallbacks)\r\n T extends XVString ? string :\r\n T extends XVNumber ? number :\r\n T extends XVBoolean ? boolean :\r\n T extends XVDate ? Date :\r\n T extends XVAny ? any :\r\n T extends XVFile ? File | Blob :\r\n T extends XVEnum ? (string | number) :\r\n T extends XVArray ? any[] :\r\n T extends XVTuple ? any[] :\r\n T extends XVUnion ? any :\r\n T extends XVMap ? Map<any, any> :\r\n T extends XVSet ? Set<any> :\r\n T extends XVRecord ? Record<string, any> :\r\n // XVObject with an `arg` schema\r\n T extends XVObject ? (T extends { arg?: infer O } ? { [K in keyof O]: Infer<O[K]> } : any) :\r\n // Plain schema object (e.g. { a: xv.string(), b: xv.number() }) — recurse\r\n T extends object ? { [K in keyof T]: Infer<T[K]> } :\r\n any;\r\n\r\n// Merge types onto the runtime `xv` export so users can write `type T = xv.infer<typeof schema>`\r\nexport namespace xv {\r\n export type infer<T> = Infer<T>;\r\n}\r\n\r\n"],"names":["XVArray","XVBoolean","XVDate","XVEnum","XVMap","XVNumber","XVObject","XVRecord","XVSet","XVString","XVTuple","XVUnion"],"mappings":"okBAkDA,MAAM,GAAG,GAAG;AACT,IAAA,KAAK,EAAE,CAAC,IAAoB,EAAE,MAAe,KAAK,IAAIA,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,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;CACtD,CAAA;AAoBM,MAAM,EAAE,GAAG"}
package/index.mjs CHANGED
@@ -1,14 +1,15 @@
1
- export{default as XanvType}from'./XanvType.mjs';export{default as XVAny}from'./types/Any.mjs';import XVArray from'./types/Array.mjs';import XVBoolean from'./types/Boolean.mjs';import XVDate from'./types/Date.mjs';import XVEnum from'./types/Enum.mjs';export{default as XVFile}from'./types/File.mjs';import XVMap from'./types/Map.mjs';import XVNumber from'./types/Number.mjs';import XVObject from'./types/Object.mjs';import XVRecord from'./types/Record.mjs';import XVSet from'./types/Set.mjs';import XVString from'./types/String.mjs';import XVTuple from'./types/Tuple.mjs';import XVUnion from'./types/Union.mjs';const xv = {
2
- array: (type, length) => new XVArray(type, length),
3
- boolean: () => new XVBoolean(),
4
- date: () => new XVDate(),
5
- enum: (values) => new XVEnum(values),
6
- map: (key, value) => new XVMap(key, value),
7
- number: (length) => new XVNumber(length),
8
- object: (arg) => new XVObject(arg),
9
- record: (key, value) => new XVRecord(key, value),
10
- set: (type) => new XVSet(type),
11
- string: (length) => new XVString(length),
12
- tuple: (type) => new XVTuple(type),
13
- union: (type) => new XVUnion(type),
14
- };export{XVArray,XVBoolean,XVDate,XVEnum,XVMap,XVNumber,XVObject,XVRecord,XVSet,XVString,XVTuple,XVUnion,xv};//# sourceMappingURL=index.mjs.map
1
+ export{default as XanvType}from'./XanvType.mjs';export{default as XVAny}from'./types/Any.mjs';import XVArray from'./types/Array.mjs';import XVBoolean from'./types/Boolean.mjs';import XVDate from'./types/Date.mjs';import XVEnum from'./types/Enum.mjs';export{default as XVFile}from'./types/File.mjs';import XVMap from'./types/Map.mjs';import XVNumber from'./types/Number.mjs';import XVObject from'./types/Object.mjs';import XVRecord from'./types/Record.mjs';import XVSet from'./types/Set.mjs';import XVString from'./types/String.mjs';import XVTuple from'./types/Tuple.mjs';import XVUnion from'./types/Union.mjs';const _xv = {
2
+ array: (type, length) => new XVArray(type, length),
3
+ boolean: () => new XVBoolean(),
4
+ date: () => new XVDate(),
5
+ enum: (values) => new XVEnum(values),
6
+ map: (key, value) => new XVMap(key, value),
7
+ number: (length) => new XVNumber(length),
8
+ object: (arg) => new XVObject(arg),
9
+ record: (key, value) => new XVRecord(key, value),
10
+ set: (type) => new XVSet(type),
11
+ string: (length) => new XVString(length),
12
+ tuple: (type) => new XVTuple(type),
13
+ union: (type) => new XVUnion(type),
14
+ };
15
+ const xv = _xv;export{XVArray,XVBoolean,XVDate,XVEnum,XVMap,XVNumber,XVObject,XVRecord,XVSet,XVString,XVTuple,XVUnion,xv};//# sourceMappingURL=index.mjs.map
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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\";\n\nimport {\n XVEnumValues,\n XVInstanceType,\n XVObjectType,\n XVCheckCallback,\n XVObjectKeyType,\n XVObjectValueType,\n} from \"./types\";\n\nexport type {\n XVEnumValues,\n XVInstanceType,\n XVObjectType,\n XVCheckCallback,\n XVObjectKeyType,\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};\n\nexport const xv = {\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 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}\n\n"],"names":[],"mappings":"kmBAoDO,MAAM,EAAE,GAAG;AACf,IAAA,KAAK,EAAE,CAAC,IAAoB,EAAE,MAAe,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3E,IAAA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE;AAC9B,IAAA,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE;IACxB,IAAI,EAAE,CAAC,MAAoB,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;AAClD,IAAA,GAAG,EAAE,CAAC,GAAmB,EAAE,KAAqB,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1E,MAAM,EAAE,CAAC,MAAe,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,GAAkB,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC;AACjD,IAAA,MAAM,EAAE,CAAC,GAAmB,EAAE,KAAqB,KAAK,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IAChF,GAAG,EAAE,CAAC,IAAoB,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;IAC9C,MAAM,EAAE,CAAC,MAAe,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAAC,IAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,KAAK,EAAE,CAAC,IAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;"}
1
+ {"version":3,"file":"index.mjs","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 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\n\r\nimport {\r\n XVEnumValues,\r\n XVInstanceType,\r\n XVObjectType,\r\n XVCheckCallback,\r\n XVObjectValueType,\r\n} from \"./types\";\r\n\r\nexport type {\r\n XVEnumValues,\r\n XVInstanceType,\r\n XVObjectType,\r\n XVCheckCallback,\r\n XVObjectValueType,\r\n};\r\n\r\nexport {\r\n XanvType,\r\n XVAny,\r\n XVArray,\r\n XVBoolean,\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};\r\n\r\nconst _xv = {\r\n array: (type: XVInstanceType, length?: number) => new XVArray(type, length),\r\n boolean: () => new XVBoolean(),\r\n date: () => new XVDate(),\r\n enum: (values: XVEnumValues) => new XVEnum(values),\r\n map: (key: XVInstanceType, value: XVInstanceType) => new XVMap(key, value),\r\n number: (length?: number) => new XVNumber(length),\r\n object: (arg?: XVObjectType) => new XVObject(arg),\r\n record: (key: XVInstanceType, value: XVInstanceType) => new XVRecord(key, value),\r\n set: (type: XVInstanceType) => new XVSet(type),\r\n string: (length?: number) => new XVString(length),\r\n tuple: (type: XVInstanceType[]) => new XVTuple(type),\r\n union: (type: XVInstanceType[]) => new XVUnion(type),\r\n}\r\n\r\n// Strongly-typed factory signatures for compile-time only usage\r\nexport interface XVStatic {\r\n array<T>(type: XVInstanceOf<T>, length?: number): XVArray<T> & XVInstanceOf<T[]>;\r\n tuple<T extends any[]>(types: { [K in keyof T]: XVInstanceOf<T[K]> }): XVTuple<T> & XVInstanceOf<T>;\r\n union<T extends any[]>(types: { [K in keyof T]: XVInstanceOf<T[K]> }): XVUnion<T> & XVInstanceOf<T>;\r\n boolean(): XVBoolean<boolean> & XVInstanceOf<boolean>;\r\n date(): XVDate<Date> & XVInstanceOf<Date>;\r\n enum<T extends string | number = string | number>(values: XVEnumValues): XVEnum<T> & XVInstanceOf<T>;\r\n map<K, V>(key: XVInstanceOf<K>, value: XVInstanceOf<V>): XVMap<K, V> & XVInstanceOf<Map<K, V>>;\r\n number(): XVNumber<number> & XVInstanceOf<number>;\r\n object<S extends Record<string, any> = Record<string, any>>(arg?: { [K in keyof S]: XVInstanceOf<S[K]> }): XVObject<S> & XVInstanceOf<{ [K in keyof S]: S[K] }>;\r\n record<K extends string = string, V = any>(key: XVInstanceOf<K>, value: XVInstanceOf<V>): XVRecord<K, V> & XVInstanceOf<Record<K, V>>;\r\n set<T>(type: XVInstanceOf<T>): XVSet<T> & XVInstanceOf<Set<T>>;\r\n string(): XVString<string> & XVInstanceOf<string>;\r\n string(length: number): XVString<string> & XVInstanceOf<string>;\r\n any(): XVAny<any> & XVInstanceOf<any>;\r\n}\r\n\r\nexport const xv = _xv as unknown as XVStatic;\r\n\r\n// Type-level inference utility\r\n// Use: type T = Infer<typeof schema>\r\n// Phantom generic wrapper type for compile-time inference.\r\n// Factory helpers will annotate returned instances with this to carry type information.\r\nexport type XVInstanceOf<T = any> = XanvType<any, T> & {\r\n meta: {\r\n optional: false,\r\n nullable: false,\r\n default: undefined,\r\n transform: undefined,\r\n }\r\n};\r\n\r\nexport type Infer<T> =\r\n // If the value is an XVInstanceOf carrying a compile-time type, extract it\r\n T extends XVInstanceOf<infer U> ? U :\r\n // direct XV class instances without phantom info (fallbacks)\r\n T extends XVString ? string :\r\n T extends XVNumber ? number :\r\n T extends XVBoolean ? boolean :\r\n T extends XVDate ? Date :\r\n T extends XVAny ? any :\r\n T extends XVFile ? File | Blob :\r\n T extends XVEnum ? (string | number) :\r\n T extends XVArray ? any[] :\r\n T extends XVTuple ? any[] :\r\n T extends XVUnion ? any :\r\n T extends XVMap ? Map<any, any> :\r\n T extends XVSet ? Set<any> :\r\n T extends XVRecord ? Record<string, any> :\r\n // XVObject with an `arg` schema\r\n T extends XVObject ? (T extends { arg?: infer O } ? { [K in keyof O]: Infer<O[K]> } : any) :\r\n // Plain schema object (e.g. { a: xv.string(), b: xv.number() }) — recurse\r\n T extends object ? { [K in keyof T]: Infer<T[K]> } :\r\n any;\r\n\r\n// Merge types onto the runtime `xv` export so users can write `type T = xv.infer<typeof schema>`\r\nexport namespace xv {\r\n export type infer<T> = Infer<T>;\r\n}\r\n\r\n"],"names":[],"mappings":"kmBAkDA,MAAM,GAAG,GAAG;AACT,IAAA,KAAK,EAAE,CAAC,IAAoB,EAAE,MAAe,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3E,IAAA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE;AAC9B,IAAA,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE;IACxB,IAAI,EAAE,CAAC,MAAoB,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;AAClD,IAAA,GAAG,EAAE,CAAC,GAAmB,EAAE,KAAqB,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1E,MAAM,EAAE,CAAC,MAAe,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,GAAkB,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC;AACjD,IAAA,MAAM,EAAE,CAAC,GAAmB,EAAE,KAAqB,KAAK,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IAChF,GAAG,EAAE,CAAC,IAAoB,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;IAC9C,MAAM,EAAE,CAAC,MAAe,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAAC,IAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,KAAK,EAAE,CAAC,IAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CACtD,CAAA;AAoBM,MAAM,EAAE,GAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xanv",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "types": "./index.d.ts",
5
5
  "main": "./index.js",
6
6
  "module": "./index.mjs",