@nmtjs/type 0.2.1 → 0.3.1
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/dist/compiler.js +2 -2
- package/dist/compiler.js.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/temporal.js +3 -1
- package/dist/temporal.js.map +1 -1
- package/dist/types/any.js +37 -5
- package/dist/types/any.js.map +1 -1
- package/dist/types/array.js +55 -24
- package/dist/types/array.js.map +1 -1
- package/dist/types/base.js +31 -62
- package/dist/types/base.js.map +1 -1
- package/dist/types/boolean.js +37 -5
- package/dist/types/boolean.js.map +1 -1
- package/dist/types/custom.js +37 -8
- package/dist/types/custom.js.map +1 -1
- package/dist/types/datetime.js +41 -22
- package/dist/types/datetime.js.map +1 -1
- package/dist/types/enum.js +74 -16
- package/dist/types/enum.js.map +1 -1
- package/dist/types/literal.js +35 -8
- package/dist/types/literal.js.map +1 -1
- package/dist/types/never.js +17 -2
- package/dist/types/never.js.map +1 -1
- package/dist/types/number.js +116 -62
- package/dist/types/number.js.map +1 -1
- package/dist/types/object.js +58 -17
- package/dist/types/object.js.map +1 -1
- package/dist/types/string.js +57 -21
- package/dist/types/string.js.map +1 -1
- package/dist/types/temporal.js +292 -74
- package/dist/types/temporal.js.map +1 -1
- package/dist/types/union.js +75 -17
- package/dist/types/union.js.map +1 -1
- package/package.json +3 -3
- package/src/compiler.ts +2 -2
- package/src/constants.ts +5 -0
- package/src/index.ts +5 -6
- package/src/temporal.ts +4 -2
- package/src/types/any.ts +32 -9
- package/src/types/array.ts +59 -28
- package/src/types/base.ts +59 -112
- package/src/types/boolean.ts +31 -9
- package/src/types/custom.ts +61 -24
- package/src/types/datetime.ts +40 -35
- package/src/types/enum.ts +78 -21
- package/src/types/literal.ts +42 -12
- package/src/types/never.ts +24 -11
- package/src/types/number.ts +103 -67
- package/src/types/object.ts +87 -32
- package/src/types/string.ts +38 -30
- package/src/types/temporal.ts +378 -118
- package/src/types/union.ts +103 -31
package/dist/types/object.js
CHANGED
|
@@ -1,47 +1,88 @@
|
|
|
1
1
|
import { Type } from '@sinclair/typebox';
|
|
2
|
-
import { BaseType,
|
|
2
|
+
import { BaseType, getTypeSchema } from "./base.js";
|
|
3
3
|
import { EnumType } from "./enum.js";
|
|
4
4
|
export class ObjectType extends BaseType {
|
|
5
5
|
properties;
|
|
6
|
-
constructor(properties = {},
|
|
7
|
-
|
|
8
|
-
key,
|
|
9
|
-
value[typeFinalSchema]
|
|
10
|
-
]));
|
|
11
|
-
super(Type.Object(schemaProperties), nullable, optional);
|
|
6
|
+
constructor(properties = {}, options = {}, isNullable = false, isOptional = false, hasDefault = false){
|
|
7
|
+
super(options, isNullable, isOptional, hasDefault, properties);
|
|
12
8
|
this.properties = properties;
|
|
13
9
|
}
|
|
10
|
+
_constructSchema(options, properties) {
|
|
11
|
+
const schemaProperties = {};
|
|
12
|
+
for (const [key, value] of Object.entries(properties)){
|
|
13
|
+
schemaProperties[key] = getTypeSchema(value);
|
|
14
|
+
}
|
|
15
|
+
return Type.Object(schemaProperties, options);
|
|
16
|
+
}
|
|
14
17
|
nullable() {
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
return new ObjectType(this.properties, ...this._with({
|
|
19
|
+
isNullable: true
|
|
20
|
+
}));
|
|
17
21
|
}
|
|
18
22
|
optional() {
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
return new ObjectType(this.properties, ...this._with({
|
|
24
|
+
isOptional: true
|
|
25
|
+
}));
|
|
21
26
|
}
|
|
22
27
|
nullish() {
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
return new ObjectType(this.properties, ...this._with({
|
|
29
|
+
isNullable: true,
|
|
30
|
+
isOptional: true
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
default(value) {
|
|
34
|
+
return new ObjectType(this.properties, ...this._with({
|
|
35
|
+
options: {
|
|
36
|
+
default: value
|
|
37
|
+
},
|
|
38
|
+
hasDefault: true
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
description(description) {
|
|
42
|
+
return new ObjectType(this.properties, ...this._with({
|
|
43
|
+
options: {
|
|
44
|
+
description
|
|
45
|
+
}
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
examples(...examples) {
|
|
49
|
+
return new ObjectType(this.properties, ...this._with({
|
|
50
|
+
options: {
|
|
51
|
+
examples
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
25
54
|
}
|
|
26
55
|
pick(pick) {
|
|
27
56
|
const properties = Object.fromEntries(Object.entries(this.properties).filter(([key])=>pick[key]));
|
|
28
|
-
|
|
57
|
+
const [_, ...args] = this._with();
|
|
58
|
+
return new ObjectType(properties, {}, ...args);
|
|
29
59
|
}
|
|
30
60
|
omit(omit) {
|
|
31
61
|
const properties = Object.fromEntries(Object.entries(this.properties).filter(([key])=>!omit[key]));
|
|
32
|
-
|
|
62
|
+
const [_, ...args] = this._with();
|
|
63
|
+
return new ObjectType(properties, {}, ...args);
|
|
33
64
|
}
|
|
34
65
|
extend(properties) {
|
|
66
|
+
const [_, ...args] = this._with();
|
|
35
67
|
return new ObjectType({
|
|
36
68
|
...this.properties,
|
|
37
69
|
...properties
|
|
38
|
-
}, ...
|
|
70
|
+
}, {}, ...args);
|
|
39
71
|
}
|
|
40
72
|
merge(object) {
|
|
73
|
+
const [_, ...args] = this._with();
|
|
41
74
|
return new ObjectType({
|
|
42
75
|
...this.properties,
|
|
43
76
|
...object.properties
|
|
44
|
-
}, ...
|
|
77
|
+
}, {}, ...args);
|
|
78
|
+
}
|
|
79
|
+
partial() {
|
|
80
|
+
const properties = {};
|
|
81
|
+
for (const [key, value] of Object.entries(this.properties)){
|
|
82
|
+
properties[key] = value.optional();
|
|
83
|
+
}
|
|
84
|
+
const [_, ...args] = this._with();
|
|
85
|
+
return new ObjectType(properties, {}, ...args);
|
|
45
86
|
}
|
|
46
87
|
keyof() {
|
|
47
88
|
return new EnumType(Object.keys(this.properties));
|
package/dist/types/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/types/object.ts"],"sourcesContent":["import { type TObject
|
|
1
|
+
{"version":3,"sources":["../../../src/types/object.ts"],"sourcesContent":["import {\n type ObjectOptions,\n type StaticEncode,\n type TObject,\n Type,\n} from '@sinclair/typebox'\nimport type { typeStatic } from '../constants.ts'\nimport type { UnionToTupleString } from '../utils.ts'\nimport { BaseType, getTypeSchema } from './base.ts'\nimport { EnumType } from './enum.ts'\n\nexport class ObjectType<\n T extends Record<string, BaseType> = Record<string, BaseType>,\n N extends boolean = false,\n O extends boolean = false,\n D extends boolean = false,\n> extends BaseType<\n TObject<{ [K in keyof T]: T[K][typeStatic]['schema'] }>,\n N,\n O,\n D\n> {\n constructor(\n protected readonly properties: T = {} as T,\n options: ObjectOptions = {},\n isNullable: N = false as N,\n isOptional: O = false as O,\n hasDefault: D = false as D,\n ) {\n super(options, isNullable, isOptional, hasDefault, properties)\n }\n\n protected _constructSchema(\n options: ObjectOptions,\n properties: T,\n ): TObject<{ [K in keyof T]: T[K][typeStatic]['schema'] }> {\n const schemaProperties = {} as {\n [K in keyof T]: T[K][typeStatic]['schema']\n }\n\n for (const [key, value] of Object.entries(properties)) {\n // @ts-expect-error\n schemaProperties[key] = getTypeSchema(value)\n }\n return Type.Object(schemaProperties, options)\n }\n\n nullable() {\n return new ObjectType(this.properties, ...this._with({ isNullable: true }))\n }\n\n optional() {\n return new ObjectType(this.properties, ...this._with({ isOptional: true }))\n }\n\n nullish() {\n return new ObjectType(\n this.properties,\n ...this._with({ isNullable: true, isOptional: true }),\n )\n }\n\n default(value: this[typeStatic]['encoded']) {\n return new ObjectType(\n this.properties,\n ...this._with({ options: { default: value }, hasDefault: true }),\n )\n }\n\n description(description: string) {\n return new ObjectType(\n this.properties,\n ...this._with({ options: { description } }),\n )\n }\n\n examples(\n ...examples: [this[typeStatic]['encoded'], ...this[typeStatic]['encoded'][]]\n ) {\n return new ObjectType(\n this.properties,\n ...this._with({ options: { examples } }),\n )\n }\n\n pick<P extends { [K in keyof T]?: true }>(pick: P) {\n const properties = Object.fromEntries(\n Object.entries(this.properties).filter(([key]) => pick[key]),\n )\n const [_, ...args] = this._with()\n return new ObjectType(\n properties as Pick<T, Extract<keyof P, keyof T>>,\n {},\n ...args,\n )\n }\n\n omit<P extends { [K in keyof T]?: true }>(omit: P) {\n const properties = Object.fromEntries(\n Object.entries(this.properties).filter(([key]) => !omit[key]),\n )\n const [_, ...args] = this._with()\n return new ObjectType(\n properties as Omit<T, Extract<keyof P, keyof T>>,\n {},\n ...args,\n )\n }\n\n extend<P extends Record<string, BaseType>>(properties: P) {\n const [_, ...args] = this._with()\n return new ObjectType({ ...this.properties, ...properties }, {}, ...args)\n }\n\n merge<T extends ObjectType>(object: T) {\n const [_, ...args] = this._with()\n return new ObjectType(\n { ...this.properties, ...object.properties },\n {},\n ...args,\n )\n }\n\n partial() {\n const properties: { [K in keyof T]: ReturnType<T[K]['optional']> } =\n {} as any\n for (const [key, value] of Object.entries(this.properties)) {\n // @ts-expect-error\n properties[key] = value.optional()\n }\n const [_, ...args] = this._with()\n return new ObjectType(properties, {}, ...args)\n }\n\n keyof(): EnumType<UnionToTupleString<keyof T>> {\n return new EnumType(Object.keys(this.properties) as any)\n }\n}\n"],"names":["Type","BaseType","getTypeSchema","EnumType","ObjectType","constructor","properties","options","isNullable","isOptional","hasDefault","_constructSchema","schemaProperties","key","value","Object","entries","nullable","_with","optional","nullish","default","description","examples","pick","fromEntries","filter","_","args","omit","extend","merge","object","partial","keyof","keys"],"mappings":"AAAA,SAIEA,IAAI,QACC,oBAAmB;AAG1B,SAASC,QAAQ,EAAEC,aAAa,QAAQ,YAAW;AACnD,SAASC,QAAQ,QAAQ,YAAW;AAEpC,OAAO,MAAMC,mBAKHH;;IAMRI,YACE,AAAmBC,aAAgB,CAAC,CAAM,EAC1CC,UAAyB,CAAC,CAAC,EAC3BC,aAAgB,KAAU,EAC1BC,aAAgB,KAAU,EAC1BC,aAAgB,KAAU,CAC1B;QACA,KAAK,CAACH,SAASC,YAAYC,YAAYC,YAAYJ;aANhCA,aAAAA;IAOrB;IAEUK,iBACRJ,OAAsB,EACtBD,UAAa,EAC4C;QACzD,MAAMM,mBAAmB,CAAC;QAI1B,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAACV,YAAa;YAErDM,gBAAgB,CAACC,IAAI,GAAGX,cAAcY;QACxC;QACA,OAAOd,KAAKe,MAAM,CAACH,kBAAkBL;IACvC;IAEAU,WAAW;QACT,OAAO,IAAIb,WAAW,IAAI,CAACE,UAAU,KAAK,IAAI,CAACY,KAAK,CAAC;YAAEV,YAAY;QAAK;IAC1E;IAEAW,WAAW;QACT,OAAO,IAAIf,WAAW,IAAI,CAACE,UAAU,KAAK,IAAI,CAACY,KAAK,CAAC;YAAET,YAAY;QAAK;IAC1E;IAEAW,UAAU;QACR,OAAO,IAAIhB,WACT,IAAI,CAACE,UAAU,KACZ,IAAI,CAACY,KAAK,CAAC;YAAEV,YAAY;YAAMC,YAAY;QAAK;IAEvD;IAEAY,QAAQP,KAAkC,EAAE;QAC1C,OAAO,IAAIV,WACT,IAAI,CAACE,UAAU,KACZ,IAAI,CAACY,KAAK,CAAC;YAAEX,SAAS;gBAAEc,SAASP;YAAM;YAAGJ,YAAY;QAAK;IAElE;IAEAY,YAAYA,WAAmB,EAAE;QAC/B,OAAO,IAAIlB,WACT,IAAI,CAACE,UAAU,KACZ,IAAI,CAACY,KAAK,CAAC;YAAEX,SAAS;gBAAEe;YAAY;QAAE;IAE7C;IAEAC,SACE,GAAGA,QAAyE,EAC5E;QACA,OAAO,IAAInB,WACT,IAAI,CAACE,UAAU,KACZ,IAAI,CAACY,KAAK,CAAC;YAAEX,SAAS;gBAAEgB;YAAS;QAAE;IAE1C;IAEAC,KAA0CA,IAAO,EAAE;QACjD,MAAMlB,aAAaS,OAAOU,WAAW,CACnCV,OAAOC,OAAO,CAAC,IAAI,CAACV,UAAU,EAAEoB,MAAM,CAAC,CAAC,CAACb,IAAI,GAAKW,IAAI,CAACX,IAAI;QAE7D,MAAM,CAACc,GAAG,GAAGC,KAAK,GAAG,IAAI,CAACV,KAAK;QAC/B,OAAO,IAAId,WACTE,YACA,CAAC,MACEsB;IAEP;IAEAC,KAA0CA,IAAO,EAAE;QACjD,MAAMvB,aAAaS,OAAOU,WAAW,CACnCV,OAAOC,OAAO,CAAC,IAAI,CAACV,UAAU,EAAEoB,MAAM,CAAC,CAAC,CAACb,IAAI,GAAK,CAACgB,IAAI,CAAChB,IAAI;QAE9D,MAAM,CAACc,GAAG,GAAGC,KAAK,GAAG,IAAI,CAACV,KAAK;QAC/B,OAAO,IAAId,WACTE,YACA,CAAC,MACEsB;IAEP;IAEAE,OAA2CxB,UAAa,EAAE;QACxD,MAAM,CAACqB,GAAG,GAAGC,KAAK,GAAG,IAAI,CAACV,KAAK;QAC/B,OAAO,IAAId,WAAW;YAAE,GAAG,IAAI,CAACE,UAAU;YAAE,GAAGA,UAAU;QAAC,GAAG,CAAC,MAAMsB;IACtE;IAEAG,MAA4BC,MAAS,EAAE;QACrC,MAAM,CAACL,GAAG,GAAGC,KAAK,GAAG,IAAI,CAACV,KAAK;QAC/B,OAAO,IAAId,WACT;YAAE,GAAG,IAAI,CAACE,UAAU;YAAE,GAAG0B,OAAO1B,UAAU;QAAC,GAC3C,CAAC,MACEsB;IAEP;IAEAK,UAAU;QACR,MAAM3B,aACJ,CAAC;QACH,KAAK,MAAM,CAACO,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAAC,IAAI,CAACV,UAAU,EAAG;YAE1DA,UAAU,CAACO,IAAI,GAAGC,MAAMK,QAAQ;QAClC;QACA,MAAM,CAACQ,GAAG,GAAGC,KAAK,GAAG,IAAI,CAACV,KAAK;QAC/B,OAAO,IAAId,WAAWE,YAAY,CAAC,MAAMsB;IAC3C;IAEAM,QAA+C;QAC7C,OAAO,IAAI/B,SAASY,OAAOoB,IAAI,CAAC,IAAI,CAAC7B,UAAU;IACjD;AACF"}
|
package/dist/types/string.js
CHANGED
|
@@ -1,41 +1,77 @@
|
|
|
1
1
|
import { Type } from '@sinclair/typebox';
|
|
2
2
|
import { BaseType } from "./base.js";
|
|
3
3
|
export class StringType extends BaseType {
|
|
4
|
-
constructor(
|
|
5
|
-
super(
|
|
4
|
+
constructor(options = {}, isNullable = false, isOptional = false, hasDefault = false){
|
|
5
|
+
super(options, isNullable, isOptional, hasDefault);
|
|
6
|
+
}
|
|
7
|
+
_constructSchema(options) {
|
|
8
|
+
return Type.String(options);
|
|
6
9
|
}
|
|
7
10
|
nullable() {
|
|
8
|
-
return new StringType(...this.
|
|
11
|
+
return new StringType(...this._with({
|
|
12
|
+
isNullable: true
|
|
13
|
+
}));
|
|
9
14
|
}
|
|
10
15
|
optional() {
|
|
11
|
-
return new StringType(...this.
|
|
16
|
+
return new StringType(...this._with({
|
|
17
|
+
isOptional: true
|
|
18
|
+
}));
|
|
12
19
|
}
|
|
13
20
|
nullish() {
|
|
14
|
-
return new StringType(...this.
|
|
21
|
+
return new StringType(...this._with({
|
|
22
|
+
isNullable: true,
|
|
23
|
+
isOptional: true
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
default(value) {
|
|
27
|
+
return new StringType(...this._with({
|
|
28
|
+
options: {
|
|
29
|
+
default: value
|
|
30
|
+
},
|
|
31
|
+
hasDefault: true
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
description(description) {
|
|
35
|
+
return new StringType(...this._with({
|
|
36
|
+
options: {
|
|
37
|
+
description
|
|
38
|
+
}
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
examples(...examples) {
|
|
42
|
+
return new StringType(...this._with({
|
|
43
|
+
options: {
|
|
44
|
+
examples
|
|
45
|
+
}
|
|
46
|
+
}));
|
|
15
47
|
}
|
|
16
48
|
format(format) {
|
|
17
|
-
return new StringType({
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
49
|
+
return new StringType(...this._with({
|
|
50
|
+
options: {
|
|
51
|
+
format
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
21
54
|
}
|
|
22
55
|
max(value) {
|
|
23
|
-
return new StringType({
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
56
|
+
return new StringType(...this._with({
|
|
57
|
+
options: {
|
|
58
|
+
maxLength: value
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
27
61
|
}
|
|
28
62
|
min(value) {
|
|
29
|
-
return new StringType({
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
63
|
+
return new StringType(...this._with({
|
|
64
|
+
options: {
|
|
65
|
+
minLength: value
|
|
66
|
+
}
|
|
67
|
+
}));
|
|
33
68
|
}
|
|
34
69
|
pattern(pattern) {
|
|
35
|
-
return new StringType({
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
70
|
+
return new StringType(...this._with({
|
|
71
|
+
options: {
|
|
72
|
+
pattern
|
|
73
|
+
}
|
|
74
|
+
}));
|
|
39
75
|
}
|
|
40
76
|
email() {
|
|
41
77
|
return this.format('email');
|
package/dist/types/string.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/types/string.ts"],"sourcesContent":["import { type TString, Type } from '@sinclair/typebox'\nimport { BaseType } from './base.ts'\n\nexport class StringType<\n N extends boolean = false,\n O extends boolean = false,\n> extends BaseType<TString, N, O> {\n constructor(\n
|
|
1
|
+
{"version":3,"sources":["../../../src/types/string.ts"],"sourcesContent":["import { type StringOptions, type TString, Type } from '@sinclair/typebox'\nimport { BaseType } from './base.ts'\n\nexport class StringType<\n N extends boolean = false,\n O extends boolean = false,\n D extends boolean = false,\n> extends BaseType<TString, N, O, D, StringOptions> {\n constructor(\n options: StringOptions = {},\n isNullable: N = false as N,\n isOptional: O = false as O,\n hasDefault: D = false as D,\n ) {\n super(options, isNullable, isOptional, hasDefault)\n }\n\n protected _constructSchema(options: StringOptions): TString {\n return Type.String(options)\n }\n\n nullable() {\n return new StringType(...this._with({ isNullable: true }))\n }\n\n optional() {\n return new StringType(...this._with({ isOptional: true }))\n }\n\n nullish() {\n return new StringType(...this._with({ isNullable: true, isOptional: true }))\n }\n\n default(value: string) {\n return new StringType(\n ...this._with({ options: { default: value }, hasDefault: true }),\n )\n }\n\n description(description: string) {\n return new StringType(...this._with({ options: { description } }))\n }\n\n examples(...examples: string[]) {\n return new StringType(...this._with({ options: { examples } }))\n }\n\n format(format: TString['format']) {\n return new StringType(...this._with({ options: { format } }))\n }\n\n max(value: number) {\n return new StringType(\n ...this._with({\n options: { maxLength: value },\n }),\n )\n }\n\n min(value: number) {\n return new StringType(\n ...this._with({\n options: { minLength: value },\n }),\n )\n }\n\n pattern(pattern: string) {\n return new StringType(\n ...this._with({\n options: { pattern },\n }),\n )\n }\n\n email() {\n return this.format('email')\n }\n\n url() {\n return this.format('uri')\n }\n\n ipv4() {\n return this.format('ipv4')\n }\n\n ipv6() {\n return this.format('ipv6')\n }\n\n uuid() {\n return this.format('uuid')\n }\n}\n"],"names":["Type","BaseType","StringType","constructor","options","isNullable","isOptional","hasDefault","_constructSchema","String","nullable","_with","optional","nullish","default","value","description","examples","format","max","maxLength","min","minLength","pattern","email","url","ipv4","ipv6","uuid"],"mappings":"AAAA,SAA2CA,IAAI,QAAQ,oBAAmB;AAC1E,SAASC,QAAQ,QAAQ,YAAW;AAEpC,OAAO,MAAMC,mBAIHD;IACRE,YACEC,UAAyB,CAAC,CAAC,EAC3BC,aAAgB,KAAU,EAC1BC,aAAgB,KAAU,EAC1BC,aAAgB,KAAU,CAC1B;QACA,KAAK,CAACH,SAASC,YAAYC,YAAYC;IACzC;IAEUC,iBAAiBJ,OAAsB,EAAW;QAC1D,OAAOJ,KAAKS,MAAM,CAACL;IACrB;IAEAM,WAAW;QACT,OAAO,IAAIR,cAAc,IAAI,CAACS,KAAK,CAAC;YAAEN,YAAY;QAAK;IACzD;IAEAO,WAAW;QACT,OAAO,IAAIV,cAAc,IAAI,CAACS,KAAK,CAAC;YAAEL,YAAY;QAAK;IACzD;IAEAO,UAAU;QACR,OAAO,IAAIX,cAAc,IAAI,CAACS,KAAK,CAAC;YAAEN,YAAY;YAAMC,YAAY;QAAK;IAC3E;IAEAQ,QAAQC,KAAa,EAAE;QACrB,OAAO,IAAIb,cACN,IAAI,CAACS,KAAK,CAAC;YAAEP,SAAS;gBAAEU,SAASC;YAAM;YAAGR,YAAY;QAAK;IAElE;IAEAS,YAAYA,WAAmB,EAAE;QAC/B,OAAO,IAAId,cAAc,IAAI,CAACS,KAAK,CAAC;YAAEP,SAAS;gBAAEY;YAAY;QAAE;IACjE;IAEAC,SAAS,GAAGA,QAAkB,EAAE;QAC9B,OAAO,IAAIf,cAAc,IAAI,CAACS,KAAK,CAAC;YAAEP,SAAS;gBAAEa;YAAS;QAAE;IAC9D;IAEAC,OAAOA,MAAyB,EAAE;QAChC,OAAO,IAAIhB,cAAc,IAAI,CAACS,KAAK,CAAC;YAAEP,SAAS;gBAAEc;YAAO;QAAE;IAC5D;IAEAC,IAAIJ,KAAa,EAAE;QACjB,OAAO,IAAIb,cACN,IAAI,CAACS,KAAK,CAAC;YACZP,SAAS;gBAAEgB,WAAWL;YAAM;QAC9B;IAEJ;IAEAM,IAAIN,KAAa,EAAE;QACjB,OAAO,IAAIb,cACN,IAAI,CAACS,KAAK,CAAC;YACZP,SAAS;gBAAEkB,WAAWP;YAAM;QAC9B;IAEJ;IAEAQ,QAAQA,OAAe,EAAE;QACvB,OAAO,IAAIrB,cACN,IAAI,CAACS,KAAK,CAAC;YACZP,SAAS;gBAAEmB;YAAQ;QACrB;IAEJ;IAEAC,QAAQ;QACN,OAAO,IAAI,CAACN,MAAM,CAAC;IACrB;IAEAO,MAAM;QACJ,OAAO,IAAI,CAACP,MAAM,CAAC;IACrB;IAEAQ,OAAO;QACL,OAAO,IAAI,CAACR,MAAM,CAAC;IACrB;IAEAS,OAAO;QACL,OAAO,IAAI,CAACT,MAAM,CAAC;IACrB;IAEAU,OAAO;QACL,OAAO,IAAI,CAACV,MAAM,CAAC;IACrB;AACF"}
|