xanv 1.1.12 → 1.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{XanvType.cjs → XVType.cjs} +58 -58
- package/XVType.cjs.map +1 -0
- package/XVType.d.ts +18 -0
- package/{XanvType.js → XVType.js} +58 -58
- package/XVType.js.map +1 -0
- package/index.cjs +23 -20
- package/index.cjs.map +1 -1
- package/index.d.ts +23 -22
- package/index.js +21 -19
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +199 -199
- package/types/Any.cjs +5 -9
- package/types/Any.cjs.map +1 -1
- package/types/Any.d.ts +3 -4
- package/types/Any.js +5 -9
- package/types/Any.js.map +1 -1
- package/types/Array.cjs +41 -59
- package/types/Array.cjs.map +1 -1
- package/types/Array.d.ts +9 -10
- package/types/Array.js +41 -59
- package/types/Array.js.map +1 -1
- package/types/Boolean.cjs +8 -8
- package/types/Boolean.cjs.map +1 -1
- package/types/Boolean.d.ts +3 -3
- package/types/Boolean.js +8 -8
- package/types/Boolean.js.map +1 -1
- package/types/Date.cjs +8 -8
- package/types/Date.cjs.map +1 -1
- package/types/Date.d.ts +3 -3
- package/types/Date.js +8 -8
- package/types/Date.js.map +1 -1
- package/types/Enum.cjs +17 -21
- package/types/Enum.cjs.map +1 -1
- package/types/Enum.d.ts +7 -5
- package/types/Enum.js +17 -21
- package/types/Enum.js.map +1 -1
- package/types/File.cjs +56 -55
- package/types/File.cjs.map +1 -1
- package/types/File.d.ts +9 -9
- package/types/File.js +56 -55
- package/types/File.js.map +1 -1
- package/types/Function.cjs +34 -0
- package/types/Function.cjs.map +1 -0
- package/types/Function.d.ts +17 -0
- package/types/Function.js +32 -0
- package/types/Function.js.map +1 -0
- package/types/Map.cjs +24 -24
- package/types/Map.cjs.map +1 -1
- package/types/Map.d.ts +7 -7
- package/types/Map.js +24 -24
- package/types/Map.js.map +1 -1
- package/types/Number.cjs +70 -70
- package/types/Number.cjs.map +1 -1
- package/types/Number.d.ts +11 -11
- package/types/Number.js +70 -70
- package/types/Number.js.map +1 -1
- package/types/Object.cjs +17 -15
- package/types/Object.cjs.map +1 -1
- package/types/Object.d.ts +11 -11
- package/types/Object.js +17 -15
- package/types/Object.js.map +1 -1
- package/types/Promise.cjs +29 -0
- package/types/Promise.cjs.map +1 -0
- package/types/Promise.d.ts +11 -0
- package/types/Promise.js +27 -0
- package/types/Promise.js.map +1 -0
- package/types/Record.cjs +23 -24
- package/types/Record.cjs.map +1 -1
- package/types/Record.d.ts +7 -8
- package/types/Record.js +23 -24
- package/types/Record.js.map +1 -1
- package/types/Set.cjs +34 -34
- package/types/Set.cjs.map +1 -1
- package/types/Set.d.ts +8 -8
- package/types/Set.js +34 -34
- package/types/Set.js.map +1 -1
- package/types/String.cjs +88 -88
- package/types/String.cjs.map +1 -1
- package/types/String.d.ts +13 -13
- package/types/String.js +88 -88
- package/types/String.js.map +1 -1
- package/types/Tuple.cjs +24 -24
- package/types/Tuple.cjs.map +1 -1
- package/types/Tuple.d.ts +10 -10
- package/types/Tuple.js +24 -24
- package/types/Tuple.js.map +1 -1
- package/types/Union.cjs +23 -27
- package/types/Union.cjs.map +1 -1
- package/types/Union.d.ts +6 -7
- package/types/Union.js +23 -27
- package/types/Union.js.map +1 -1
- package/types.d.ts +13 -39
- package/XanvType.cjs.map +0 -1
- package/XanvType.d.ts +0 -23
- package/XanvType.js.map +0 -1
- package/types/Json.cjs +0 -19
- package/types/Json.cjs.map +0 -1
- package/types/Json.d.ts +0 -8
- package/types/Json.js +0 -17
- package/types/Json.js.map +0 -1
|
@@ -1,62 +1,62 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
class
|
|
4
|
-
constructor() {
|
|
5
|
-
this.checks = [];
|
|
6
|
-
this.transforms = [];
|
|
7
|
-
this.meta = {};
|
|
8
|
-
}
|
|
9
|
-
set(
|
|
10
|
-
if (!(
|
|
11
|
-
throw new Error(`Method ${
|
|
12
|
-
}
|
|
13
|
-
this.checks.push(check);
|
|
14
|
-
this.meta[
|
|
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
|
-
}
|
|
3
|
+
class XVType {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.checks = [];
|
|
6
|
+
this.transforms = [];
|
|
7
|
+
this.meta = {};
|
|
8
|
+
}
|
|
9
|
+
set(method, check, args = true) {
|
|
10
|
+
if (!(method in this)) {
|
|
11
|
+
throw new Error(`Method ${method} does not exist on ${this.constructor.name}`);
|
|
12
|
+
}
|
|
13
|
+
this.checks.push(check);
|
|
14
|
+
this.meta[method] = 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
59
|
}
|
|
60
60
|
|
|
61
|
-
module.exports =
|
|
62
|
-
//# sourceMappingURL=
|
|
61
|
+
module.exports = XVType;
|
|
62
|
+
//# sourceMappingURL=XVType.cjs.map
|
package/XVType.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XVType.cjs","sources":["../src/XVType.ts"],"sourcesContent":["import { XVCheckCallback, XVDefaultValue, XVMeta, XVTransformCallback } from \"./types\";\n\nabstract class XVType<T> {\n readonly _type!: T\n private checks: XVCheckCallback<T>[] = [];\n private transforms: XVTransformCallback<T>[] = [];\n readonly meta: XVMeta<T> = {};\n protected abstract check(value: unknown): T;\n\n protected set(method: string, check: XVCheckCallback<T>, args: any = true): this {\n if (!(method in this)) {\n throw new Error(`Method ${method} does not exist on ${this.constructor.name}`);\n }\n this.checks.push(check);\n this.meta[method] = args;\n return this;\n }\n\n clone(): this {\n const cloned = Object.create(this);\n cloned.checks = [...this.checks];\n cloned.meta = { ...this.meta };\n cloned.transforms = [...this.transforms];\n return cloned;\n }\n\n optional(): this {\n return this.set(\"optional\", () => { })\n }\n\n nullable(): this {\n return this.set(\"nullable\", () => { })\n }\n\n default(value: XVDefaultValue<T>): this {\n return this.set(\"default\", () => { }, value)\n }\n\n transform(cb: XVTransformCallback<T>): this {\n this.transforms.push(cb);\n return this\n }\n\n parse(value: unknown): T | undefined | null {\n // default\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\n value = typeof this.meta.default === \"function\" ? (this.meta.default as () => T)() : this.meta.default;\n }\n\n // optional / nullable\n if (this.meta.optional && value === undefined) return undefined;\n if (this.meta.nullable && value === null) return null;\n\n // run internal check\n let result = this.check(value)\n\n // run user checks\n for (const check of this.checks) {\n check(result);\n }\n\n // run transforms\n for (const transform of this.transforms) {\n result = transform(result);\n }\n\n return result;\n }\n}\n\nexport default XVType;\n"],"names":[],"mappings":";;AAEA,MAAe,MAAM,CAAA;AAArB,IAAA,WAAA,GAAA;QAEW,IAAA,CAAA,MAAM,GAAyB,EAAE;QACjC,IAAA,CAAA,UAAU,GAA6B,EAAE;QACxC,IAAA,CAAA,IAAI,GAAc,EAAE;IA8DhC;AA3Da,IAAA,GAAG,CAAC,MAAc,EAAE,KAAyB,EAAE,OAAY,IAAI,EAAA;AACtE,QAAA,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,OAAA,EAAU,MAAM,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;QACjF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;AACxB,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,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;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,CAAC;IACzC;IAEA,QAAQ,GAAA;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,CAAC;IACzC;AAEA,IAAA,OAAO,CAAC,KAAwB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAK,EAAG,CAAC,EAAE,KAAK,CAAC;IAC/C;AAEA,IAAA,SAAS,CAAC,EAA0B,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;;AAEjB,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,GAAI,IAAI,CAAC,IAAI,CAAC,OAAmB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;QACzG;;QAGA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;QAC/D,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;;QAGrD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;AAG9B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9B,KAAK,CAAC,MAAM,CAAC;QAChB;;AAGA,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC7B;AAEA,QAAA,OAAO,MAAM;IAChB;AACF;;;;"}
|
package/XVType.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { XVMeta, XVCheckCallback, XVDefaultValue, XVTransformCallback } from './types.js';
|
|
2
|
+
|
|
3
|
+
declare abstract class XVType<T> {
|
|
4
|
+
readonly _type: T;
|
|
5
|
+
private checks;
|
|
6
|
+
private transforms;
|
|
7
|
+
readonly meta: XVMeta<T>;
|
|
8
|
+
protected abstract check(value: unknown): T;
|
|
9
|
+
protected set(method: string, check: XVCheckCallback<T>, args?: any): this;
|
|
10
|
+
clone(): this;
|
|
11
|
+
optional(): this;
|
|
12
|
+
nullable(): this;
|
|
13
|
+
default(value: XVDefaultValue<T>): this;
|
|
14
|
+
transform(cb: XVTransformCallback<T>): this;
|
|
15
|
+
parse(value: unknown): T | undefined | null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { XVType as default };
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
class
|
|
2
|
-
constructor() {
|
|
3
|
-
this.checks = [];
|
|
4
|
-
this.transforms = [];
|
|
5
|
-
this.meta = {};
|
|
6
|
-
}
|
|
7
|
-
set(
|
|
8
|
-
if (!(
|
|
9
|
-
throw new Error(`Method ${
|
|
10
|
-
}
|
|
11
|
-
this.checks.push(check);
|
|
12
|
-
this.meta[
|
|
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
|
-
}
|
|
1
|
+
class XVType {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.checks = [];
|
|
4
|
+
this.transforms = [];
|
|
5
|
+
this.meta = {};
|
|
6
|
+
}
|
|
7
|
+
set(method, check, args = true) {
|
|
8
|
+
if (!(method in this)) {
|
|
9
|
+
throw new Error(`Method ${method} does not exist on ${this.constructor.name}`);
|
|
10
|
+
}
|
|
11
|
+
this.checks.push(check);
|
|
12
|
+
this.meta[method] = 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
57
|
}
|
|
58
58
|
|
|
59
|
-
export {
|
|
60
|
-
//# sourceMappingURL=
|
|
59
|
+
export { XVType as default };
|
|
60
|
+
//# sourceMappingURL=XVType.js.map
|
package/XVType.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XVType.js","sources":["../src/XVType.ts"],"sourcesContent":["import { XVCheckCallback, XVDefaultValue, XVMeta, XVTransformCallback } from \"./types\";\n\nabstract class XVType<T> {\n readonly _type!: T\n private checks: XVCheckCallback<T>[] = [];\n private transforms: XVTransformCallback<T>[] = [];\n readonly meta: XVMeta<T> = {};\n protected abstract check(value: unknown): T;\n\n protected set(method: string, check: XVCheckCallback<T>, args: any = true): this {\n if (!(method in this)) {\n throw new Error(`Method ${method} does not exist on ${this.constructor.name}`);\n }\n this.checks.push(check);\n this.meta[method] = args;\n return this;\n }\n\n clone(): this {\n const cloned = Object.create(this);\n cloned.checks = [...this.checks];\n cloned.meta = { ...this.meta };\n cloned.transforms = [...this.transforms];\n return cloned;\n }\n\n optional(): this {\n return this.set(\"optional\", () => { })\n }\n\n nullable(): this {\n return this.set(\"nullable\", () => { })\n }\n\n default(value: XVDefaultValue<T>): this {\n return this.set(\"default\", () => { }, value)\n }\n\n transform(cb: XVTransformCallback<T>): this {\n this.transforms.push(cb);\n return this\n }\n\n parse(value: unknown): T | undefined | null {\n // default\n if (this.meta.default !== undefined && (value === undefined || value === null)) {\n value = typeof this.meta.default === \"function\" ? (this.meta.default as () => T)() : this.meta.default;\n }\n\n // optional / nullable\n if (this.meta.optional && value === undefined) return undefined;\n if (this.meta.nullable && value === null) return null;\n\n // run internal check\n let result = this.check(value)\n\n // run user checks\n for (const check of this.checks) {\n check(result);\n }\n\n // run transforms\n for (const transform of this.transforms) {\n result = transform(result);\n }\n\n return result;\n }\n}\n\nexport default XVType;\n"],"names":[],"mappings":"AAEA,MAAe,MAAM,CAAA;AAArB,IAAA,WAAA,GAAA;QAEW,IAAA,CAAA,MAAM,GAAyB,EAAE;QACjC,IAAA,CAAA,UAAU,GAA6B,EAAE;QACxC,IAAA,CAAA,IAAI,GAAc,EAAE;IA8DhC;AA3Da,IAAA,GAAG,CAAC,MAAc,EAAE,KAAyB,EAAE,OAAY,IAAI,EAAA;AACtE,QAAA,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,OAAA,EAAU,MAAM,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;QACjF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;AACxB,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,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;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,CAAC;IACzC;IAEA,QAAQ,GAAA;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,CAAC;IACzC;AAEA,IAAA,OAAO,CAAC,KAAwB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAK,EAAG,CAAC,EAAE,KAAK,CAAC;IAC/C;AAEA,IAAA,SAAS,CAAC,EAA0B,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,KAAK,CAAC,KAAc,EAAA;;AAEjB,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,GAAI,IAAI,CAAC,IAAI,CAAC,OAAmB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;QACzG;;QAGA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;QAC/D,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;;QAGrD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;AAG9B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9B,KAAK,CAAC,MAAM,CAAC;QAChB;;AAGA,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC7B;AAEA,QAAA,OAAO,MAAM;IAChB;AACF;;;;"}
|
package/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var XVType = require('./XVType.cjs');
|
|
4
4
|
var Any = require('./types/Any.cjs');
|
|
5
5
|
var Array = require('./types/Array.cjs');
|
|
6
6
|
var Boolean = require('./types/Boolean.cjs');
|
|
@@ -15,27 +15,29 @@ var Set = require('./types/Set.cjs');
|
|
|
15
15
|
var String = require('./types/String.cjs');
|
|
16
16
|
var Tuple = require('./types/Tuple.cjs');
|
|
17
17
|
var Union = require('./types/Union.cjs');
|
|
18
|
-
var
|
|
18
|
+
var Function = require('./types/Function.cjs');
|
|
19
|
+
var Promise$1 = require('./types/Promise.cjs');
|
|
19
20
|
|
|
20
|
-
const xv = {
|
|
21
|
-
any: () => new Any(),
|
|
22
|
-
array: (type
|
|
23
|
-
boolean: () => new Boolean(),
|
|
24
|
-
date: () => new Date(),
|
|
25
|
-
enum: (
|
|
26
|
-
file: () => new File(),
|
|
27
|
-
number: (length) => new Number(length),
|
|
28
|
-
object: (
|
|
29
|
-
record: (key, value) => new Record(key, value),
|
|
30
|
-
map: (key, value) => new Map(key, value),
|
|
31
|
-
set: (type) => new Set(type),
|
|
32
|
-
string: (length) => new String(length),
|
|
33
|
-
tuple: (type) => new Tuple(type),
|
|
34
|
-
union: (types) => new Union(types),
|
|
35
|
-
|
|
21
|
+
const xv = {
|
|
22
|
+
any: () => new Any(),
|
|
23
|
+
array: (type) => new Array(type),
|
|
24
|
+
boolean: () => new Boolean(),
|
|
25
|
+
date: () => new Date(),
|
|
26
|
+
enum: (input) => new Enum(input),
|
|
27
|
+
file: () => new File(),
|
|
28
|
+
number: (length) => new Number(length),
|
|
29
|
+
object: (shape) => new Object$1(shape),
|
|
30
|
+
record: (key, value) => new Record(key, value),
|
|
31
|
+
map: (key, value) => new Map(key, value),
|
|
32
|
+
set: (type) => new Set(type),
|
|
33
|
+
string: (length) => new String(length),
|
|
34
|
+
tuple: (type) => new Tuple(type),
|
|
35
|
+
union: (types) => new Union(types),
|
|
36
|
+
function: (args, ret) => new Function(args, ret),
|
|
37
|
+
promise: (type) => new Promise$1(type),
|
|
36
38
|
};
|
|
37
39
|
|
|
38
|
-
exports.
|
|
40
|
+
exports.XVType = XVType;
|
|
39
41
|
exports.XVAny = Any;
|
|
40
42
|
exports.XVArray = Array;
|
|
41
43
|
exports.XVBoolean = Boolean;
|
|
@@ -50,6 +52,7 @@ exports.XVSet = Set;
|
|
|
50
52
|
exports.XVString = String;
|
|
51
53
|
exports.XVTuple = Tuple;
|
|
52
54
|
exports.XVUnion = Union;
|
|
53
|
-
exports.
|
|
55
|
+
exports.XVFunction = Function;
|
|
56
|
+
exports.XVPromise = Promise$1;
|
|
54
57
|
exports.xv = xv;
|
|
55
58
|
//# sourceMappingURL=index.cjs.map
|
package/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import XVType from \"./XVType\";\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 XVFunction from \"./types/Function\";\nimport XVPromise from \"./types/Promise\";\n\nexport * from \"./types\";\n\nexport {\n XVType,\n XVAny,\n XVArray,\n XVBoolean,\n XVFunction,\n XVPromise,\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 any: () => new XVAny(),\n array: <T extends XVType<any>>(type: T) => new XVArray<T>(type),\n boolean: () => new XVBoolean(),\n date: () => new XVDate(),\n enum: <const T extends string | number>(input: readonly T[] | Record<string, T>): XVEnum<T> => new XVEnum<T>(input),\n file: () => new XVFile(),\n number: (length?: number) => new XVNumber(length),\n object: <T extends Record<string, XVType<any>>>(shape: T) => new XVObject(shape),\n record: <K extends XVType<any>, V extends XVType<any>>(key: K, value: V) => new XVRecord<K, V>(key, value),\n map: <K extends XVType<any>, V extends XVType<any>>(key: K, value: V) => new XVMap<K, V>(key, value),\n set: <T extends XVType<any>>(type: T) => new XVSet(type),\n string: (length?: number) => new XVString(length),\n tuple: <T extends XVType<any>[]>(type: T) => new XVTuple<T>(type),\n union: <T extends XVType<any>[]>(types: T) => new XVUnion<T>(types),\n function: <const A extends XVType<any>[], R extends XVType<any>>(args: A, ret: R) => new XVFunction<A, R>(args, ret),\n promise: <T extends XVType<any>>(type: T) => new XVPromise(type),\n};\n\n"],"names":["XVAny","XVArray","XVBoolean","XVDate","XVEnum","XVFile","XVNumber","XVObject","XVRecord","XVMap","XVSet","XVString","XVTuple","XVUnion","XVFunction","XVPromise"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwCO,MAAM,EAAE,GAAG;AACf,IAAA,GAAG,EAAE,MAAM,IAAIA,GAAK,EAAE;IACtB,KAAK,EAAE,CAAwB,IAAO,KAAK,IAAIC,KAAO,CAAI,IAAI,CAAC;AAC/D,IAAA,OAAO,EAAE,MAAM,IAAIC,OAAS,EAAE;AAC9B,IAAA,IAAI,EAAE,MAAM,IAAIC,IAAM,EAAE;IACxB,IAAI,EAAE,CAAkC,KAAuC,KAAgB,IAAIC,IAAM,CAAI,KAAK,CAAC;AACnH,IAAA,IAAI,EAAE,MAAM,IAAIC,IAAM,EAAE;IACxB,MAAM,EAAE,CAAC,MAAe,KAAK,IAAIC,MAAQ,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAwC,KAAQ,KAAK,IAAIC,QAAQ,CAAC,KAAK,CAAC;AAChF,IAAA,MAAM,EAAE,CAA+C,GAAM,EAAE,KAAQ,KAAK,IAAIC,MAAQ,CAAO,GAAG,EAAE,KAAK,CAAC;AAC1G,IAAA,GAAG,EAAE,CAA+C,GAAM,EAAE,KAAQ,KAAK,IAAIC,GAAK,CAAO,GAAG,EAAE,KAAK,CAAC;IACpG,GAAG,EAAE,CAAwB,IAAO,KAAK,IAAIC,GAAK,CAAC,IAAI,CAAC;IACxD,MAAM,EAAE,CAAC,MAAe,KAAK,IAAIC,MAAQ,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAA0B,IAAO,KAAK,IAAIC,KAAO,CAAI,IAAI,CAAC;IACjE,KAAK,EAAE,CAA0B,KAAQ,KAAK,IAAIC,KAAO,CAAI,KAAK,CAAC;AACnE,IAAA,QAAQ,EAAE,CAAuD,IAAO,EAAE,GAAM,KAAK,IAAIC,QAAU,CAAO,IAAI,EAAE,GAAG,CAAC;IACpH,OAAO,EAAE,CAAwB,IAAO,KAAK,IAAIC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;"}
|
package/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import XVType from './XVType.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,32 +7,33 @@ 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
|
|
10
|
+
import XVObject 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
|
-
import
|
|
17
|
-
import
|
|
18
|
-
export { Infer, XVCheckCallback } from './types.js';
|
|
16
|
+
import XVFunction from './types/Function.js';
|
|
17
|
+
import XVPromise from './types/Promise.js';
|
|
18
|
+
export { Infer, XVCheckCallback, XVDefaultValue, XVMeta, XVTransformCallback } from './types.js';
|
|
19
19
|
|
|
20
|
-
declare const xv: {
|
|
21
|
-
any: () => XVAny
|
|
22
|
-
array: <T extends
|
|
23
|
-
boolean: () => XVBoolean;
|
|
24
|
-
date: () => XVDate;
|
|
25
|
-
enum: <
|
|
26
|
-
file: () => XVFile;
|
|
27
|
-
number: (length?: number) => XVNumber<number>;
|
|
28
|
-
object: <
|
|
29
|
-
record: <K extends
|
|
30
|
-
map: <
|
|
31
|
-
set: <
|
|
32
|
-
string: (length?: number) => XVString;
|
|
33
|
-
tuple: <
|
|
34
|
-
union: <
|
|
35
|
-
|
|
20
|
+
declare const xv: {
|
|
21
|
+
any: () => XVAny<any>;
|
|
22
|
+
array: <T extends XVType<any>>(type: T) => XVArray<T>;
|
|
23
|
+
boolean: () => XVBoolean;
|
|
24
|
+
date: () => XVDate;
|
|
25
|
+
enum: <const T extends string | number>(input: readonly T[] | Record<string, T>) => XVEnum<T>;
|
|
26
|
+
file: () => XVFile;
|
|
27
|
+
number: (length?: number) => XVNumber<number>;
|
|
28
|
+
object: <T extends Record<string, XVType<any>>>(shape: T) => XVObject<T>;
|
|
29
|
+
record: <K extends XVType<any>, V extends XVType<any>>(key: K, value: V) => XVRecord<K, V>;
|
|
30
|
+
map: <K extends XVType<any>, V extends XVType<any>>(key: K, value: V) => XVMap<K, V>;
|
|
31
|
+
set: <T extends XVType<any>>(type: T) => XVSet<T>;
|
|
32
|
+
string: (length?: number) => XVString;
|
|
33
|
+
tuple: <T extends XVType<any>[]>(type: T) => XVTuple<T>;
|
|
34
|
+
union: <T extends XVType<any>[]>(types: T) => XVUnion<T>;
|
|
35
|
+
function: <const A extends XVType<any>[], R extends XVType<any>>(args: A, ret: R) => XVFunction<A, R>;
|
|
36
|
+
promise: <T extends XVType<any>>(type: T) => XVPromise<T>;
|
|
36
37
|
};
|
|
37
38
|
|
|
38
|
-
export { XVAny, XVArray, XVBoolean, XVDate, XVEnum, XVFile,
|
|
39
|
+
export { XVAny, XVArray, XVBoolean, XVDate, XVEnum, XVFile, XVFunction, XVMap, XVNumber, XVObject, XVPromise, XVRecord, XVSet, XVString, XVTuple, XVType, XVUnion, xv };
|
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as
|
|
1
|
+
export { default as XVType } from './XVType.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';
|
|
@@ -13,25 +13,27 @@ 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
|
|
16
|
+
import XVFunction from './types/Function.js';
|
|
17
|
+
import XVPromise from './types/Promise.js';
|
|
17
18
|
|
|
18
|
-
const xv = {
|
|
19
|
-
any: () => new XVAny(),
|
|
20
|
-
array: (type
|
|
21
|
-
boolean: () => new XVBoolean(),
|
|
22
|
-
date: () => new XVDate(),
|
|
23
|
-
enum: (
|
|
24
|
-
file: () => new XVFile(),
|
|
25
|
-
number: (length) => new XVNumber(length),
|
|
26
|
-
object: (
|
|
27
|
-
record: (key, value) => new XVRecord(key, value),
|
|
28
|
-
map: (key, value) => new XVMap(key, value),
|
|
29
|
-
set: (type) => new XVSet(type),
|
|
30
|
-
string: (length) => new XVString(length),
|
|
31
|
-
tuple: (type) => new XVTuple(type),
|
|
32
|
-
union: (types) => new XVUnion(types),
|
|
33
|
-
|
|
19
|
+
const xv = {
|
|
20
|
+
any: () => new XVAny(),
|
|
21
|
+
array: (type) => new XVArray(type),
|
|
22
|
+
boolean: () => new XVBoolean(),
|
|
23
|
+
date: () => new XVDate(),
|
|
24
|
+
enum: (input) => new XVEnum(input),
|
|
25
|
+
file: () => new XVFile(),
|
|
26
|
+
number: (length) => new XVNumber(length),
|
|
27
|
+
object: (shape) => new XVObject(shape),
|
|
28
|
+
record: (key, value) => new XVRecord(key, value),
|
|
29
|
+
map: (key, value) => new XVMap(key, value),
|
|
30
|
+
set: (type) => new XVSet(type),
|
|
31
|
+
string: (length) => new XVString(length),
|
|
32
|
+
tuple: (type) => new XVTuple(type),
|
|
33
|
+
union: (types) => new XVUnion(types),
|
|
34
|
+
function: (args, ret) => new XVFunction(args, ret),
|
|
35
|
+
promise: (type) => new XVPromise(type),
|
|
34
36
|
};
|
|
35
37
|
|
|
36
|
-
export { XVAny, XVArray, XVBoolean, XVDate, XVEnum, XVFile,
|
|
38
|
+
export { XVAny, XVArray, XVBoolean, XVDate, XVEnum, XVFile, XVFunction, XVMap, XVNumber, XVObject, XVPromise, XVRecord, XVSet, XVString, XVTuple, XVUnion, xv };
|
|
37
39
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import XVType from \"./XVType\";\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 XVFunction from \"./types/Function\";\nimport XVPromise from \"./types/Promise\";\n\nexport * from \"./types\";\n\nexport {\n XVType,\n XVAny,\n XVArray,\n XVBoolean,\n XVFunction,\n XVPromise,\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 any: () => new XVAny(),\n array: <T extends XVType<any>>(type: T) => new XVArray<T>(type),\n boolean: () => new XVBoolean(),\n date: () => new XVDate(),\n enum: <const T extends string | number>(input: readonly T[] | Record<string, T>): XVEnum<T> => new XVEnum<T>(input),\n file: () => new XVFile(),\n number: (length?: number) => new XVNumber(length),\n object: <T extends Record<string, XVType<any>>>(shape: T) => new XVObject(shape),\n record: <K extends XVType<any>, V extends XVType<any>>(key: K, value: V) => new XVRecord<K, V>(key, value),\n map: <K extends XVType<any>, V extends XVType<any>>(key: K, value: V) => new XVMap<K, V>(key, value),\n set: <T extends XVType<any>>(type: T) => new XVSet(type),\n string: (length?: number) => new XVString(length),\n tuple: <T extends XVType<any>[]>(type: T) => new XVTuple<T>(type),\n union: <T extends XVType<any>[]>(types: T) => new XVUnion<T>(types),\n function: <const A extends XVType<any>[], R extends XVType<any>>(args: A, ret: R) => new XVFunction<A, R>(args, ret),\n promise: <T extends XVType<any>>(type: T) => new XVPromise(type),\n};\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAwCO,MAAM,EAAE,GAAG;AACf,IAAA,GAAG,EAAE,MAAM,IAAI,KAAK,EAAE;IACtB,KAAK,EAAE,CAAwB,IAAO,KAAK,IAAI,OAAO,CAAI,IAAI,CAAC;AAC/D,IAAA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE;AAC9B,IAAA,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE;IACxB,IAAI,EAAE,CAAkC,KAAuC,KAAgB,IAAI,MAAM,CAAI,KAAK,CAAC;AACnH,IAAA,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE;IACxB,MAAM,EAAE,CAAC,MAAe,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAwC,KAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;AAChF,IAAA,MAAM,EAAE,CAA+C,GAAM,EAAE,KAAQ,KAAK,IAAI,QAAQ,CAAO,GAAG,EAAE,KAAK,CAAC;AAC1G,IAAA,GAAG,EAAE,CAA+C,GAAM,EAAE,KAAQ,KAAK,IAAI,KAAK,CAAO,GAAG,EAAE,KAAK,CAAC;IACpG,GAAG,EAAE,CAAwB,IAAO,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;IACxD,MAAM,EAAE,CAAC,MAAe,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAA0B,IAAO,KAAK,IAAI,OAAO,CAAI,IAAI,CAAC;IACjE,KAAK,EAAE,CAA0B,KAAQ,KAAK,IAAI,OAAO,CAAI,KAAK,CAAC;AACnE,IAAA,QAAQ,EAAE,CAAuD,IAAO,EAAE,GAAM,KAAK,IAAI,UAAU,CAAO,IAAI,EAAE,GAAG,CAAC;IACpH,OAAO,EAAE,CAAwB,IAAO,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC;;;;;"}
|