typia 7.0.0-dev.20241012 → 7.0.0-dev.20241019
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/lib/factories/JsonMetadataFactory.js +3 -2
- package/lib/factories/JsonMetadataFactory.js.map +1 -1
- package/lib/factories/MetadataCollection.d.ts +3 -3
- package/lib/factories/MetadataCollection.js +2 -2
- package/lib/factories/MetadataCollection.js.map +1 -1
- package/lib/factories/MetadataFactory.d.ts +2 -2
- package/lib/factories/MetadataFactory.js +3 -3
- package/lib/factories/MetadataFactory.js.map +1 -1
- package/lib/factories/MetadataTypeTagFactory.d.ts +3 -2
- package/lib/factories/MetadataTypeTagFactory.js +26 -3
- package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.js +1266 -160
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/factories/internal/metadata/IMetadataIteratorProps.d.ts +1 -0
- package/lib/factories/internal/metadata/MetadataHelper.js +1 -1
- package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +2 -2
- package/lib/factories/internal/metadata/emplace_metadata_object.js +5 -5
- package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
- package/lib/factories/internal/metadata/explore_metadata.js +2 -0
- package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata.js +1 -1
- package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_alias.js +8 -2
- package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_collection.js +6 -6
- package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js +262 -137
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_map.js +4 -2
- package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_native.js +27 -11
- package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_set.js +8 -1
- package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_sort.js +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_template.js +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +5 -5
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +12 -12
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/helpers/AtomicPredicator.js +3 -3
- package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
- package/lib/programmers/helpers/ProtobufUtil.d.ts +6 -3
- package/lib/programmers/helpers/ProtobufUtil.js +216 -93
- package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
- package/lib/programmers/helpers/UnionExplorer.d.ts +4 -2
- package/lib/programmers/helpers/UnionExplorer.js +1 -1
- package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
- package/lib/programmers/http/HttpFormDataProgrammer.js +6 -6
- package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
- package/lib/programmers/internal/application_escaped.js +2 -2
- package/lib/programmers/internal/application_escaped.js.map +1 -1
- package/lib/programmers/internal/application_v30_alias.js +13 -8
- package/lib/programmers/internal/application_v30_alias.js.map +1 -1
- package/lib/programmers/internal/application_v30_native.js +17 -10
- package/lib/programmers/internal/application_v30_native.js.map +1 -1
- package/lib/programmers/internal/application_v30_object.js +16 -6
- package/lib/programmers/internal/application_v30_object.js.map +1 -1
- package/lib/programmers/internal/application_v30_schema.js +24 -17
- package/lib/programmers/internal/application_v30_schema.js.map +1 -1
- package/lib/programmers/internal/application_v31_alias.js +12 -11
- package/lib/programmers/internal/application_v31_alias.js.map +1 -1
- package/lib/programmers/internal/application_v31_native.js +17 -10
- package/lib/programmers/internal/application_v31_native.js.map +1 -1
- package/lib/programmers/internal/application_v31_object.js +13 -6
- package/lib/programmers/internal/application_v31_object.js.map +1 -1
- package/lib/programmers/internal/application_v31_schema.js +23 -16
- package/lib/programmers/internal/application_v31_schema.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_key.js +4 -4
- package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
- package/lib/programmers/internal/check_native.js +3 -3
- package/lib/programmers/internal/check_union_array_like.js.map +1 -1
- package/lib/programmers/internal/llm_schema_escaped.js +2 -2
- package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
- package/lib/programmers/internal/llm_schema_object.js +18 -14
- package/lib/programmers/internal/llm_schema_object.js.map +1 -1
- package/lib/programmers/internal/llm_schema_station.js +8 -8
- package/lib/programmers/internal/llm_schema_station.js.map +1 -1
- package/lib/programmers/json/JsonSchemasProgrammer.js +5 -5
- package/lib/programmers/json/JsonSchemasProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.js +18 -17
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmSchemaProgrammer.js +6 -6
- package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +7 -5
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.js +6 -4
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +169 -220
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +6 -4
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.d.ts +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +53 -128
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
- package/lib/schemas/metadata/IMetadata.d.ts +14 -18
- package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -7
- package/lib/schemas/metadata/IMetadataAliasType.d.ts +10 -0
- package/lib/schemas/metadata/IMetadataAliasType.js +3 -0
- package/lib/schemas/metadata/IMetadataAliasType.js.map +1 -0
- package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
- package/lib/schemas/metadata/IMetadataConstantValue.d.ts +1 -1
- package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
- package/lib/schemas/metadata/IMetadataMap.d.ts +7 -0
- package/lib/schemas/metadata/{IMetadataEntry.js → IMetadataMap.js} +1 -1
- package/lib/schemas/metadata/IMetadataMap.js.map +1 -0
- package/lib/schemas/metadata/IMetadataNative.d.ts +5 -0
- package/lib/schemas/metadata/IMetadataNative.js +3 -0
- package/lib/schemas/metadata/IMetadataNative.js.map +1 -0
- package/lib/schemas/metadata/IMetadataSet.d.ts +6 -0
- package/lib/schemas/metadata/IMetadataSet.js +3 -0
- package/lib/schemas/metadata/IMetadataSet.js.map +1 -0
- package/lib/schemas/metadata/IMetadataTemplate.d.ts +1 -1
- package/lib/schemas/metadata/IMetadataTypeTag.d.ts +1 -1
- package/lib/schemas/metadata/Metadata.d.ts +6 -9
- package/lib/schemas/metadata/Metadata.js +136 -98
- package/lib/schemas/metadata/Metadata.js.map +1 -1
- package/lib/schemas/metadata/MetadataAlias.d.ts +8 -11
- package/lib/schemas/metadata/MetadataAlias.js +48 -33
- package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
- package/lib/schemas/metadata/MetadataAliasType.d.ts +16 -0
- package/lib/schemas/metadata/MetadataAliasType.js +51 -0
- package/lib/schemas/metadata/MetadataAliasType.js.map +1 -0
- package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
- package/lib/schemas/metadata/MetadataComponents.js +2 -2
- package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
- package/lib/schemas/metadata/MetadataConstantValue.d.ts +1 -1
- package/lib/schemas/metadata/MetadataMap.d.ts +14 -0
- package/lib/schemas/metadata/MetadataMap.js +66 -0
- package/lib/schemas/metadata/MetadataMap.js.map +1 -0
- package/lib/schemas/metadata/MetadataNative.d.ts +12 -0
- package/lib/schemas/metadata/MetadataNative.js +65 -0
- package/lib/schemas/metadata/MetadataNative.js.map +1 -0
- package/lib/schemas/metadata/MetadataProperty.d.ts +2 -0
- package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
- package/lib/schemas/metadata/MetadataSet.d.ts +13 -0
- package/lib/schemas/metadata/MetadataSet.js +64 -0
- package/lib/schemas/metadata/MetadataSet.js.map +1 -0
- package/lib/schemas/metadata/MetadataTemplate.d.ts +1 -1
- package/lib/schemas/protobuf/IProtobufProperty.d.ts +5 -0
- package/lib/schemas/protobuf/IProtobufProperty.js +3 -0
- package/lib/schemas/protobuf/IProtobufProperty.js.map +1 -0
- package/lib/schemas/protobuf/IProtobufPropertyType.d.ts +28 -0
- package/lib/schemas/protobuf/IProtobufPropertyType.js +3 -0
- package/lib/schemas/protobuf/IProtobufPropertyType.js.map +1 -0
- package/lib/schemas/protobuf/IProtobufSchema.d.ts +38 -0
- package/lib/schemas/protobuf/IProtobufSchema.js +3 -0
- package/lib/schemas/protobuf/IProtobufSchema.js.map +1 -0
- package/lib/tags/Example.d.ts +2 -2
- package/lib/tags/Examples.d.ts +2 -2
- package/lib/tags/JsonSchemaPlugin.d.ts +1 -1
- package/lib/tags/Sequence.d.ts +9 -0
- package/lib/tags/Sequence.js +3 -0
- package/lib/tags/Sequence.js.map +1 -0
- package/lib/tags/TagBase.d.ts +1 -1
- package/lib/tags/index.d.ts +1 -0
- package/lib/tags/index.js +1 -0
- package/lib/tags/index.js.map +1 -1
- package/lib/utils/{NameEncoder.d.ts → ProtobufNameEncoder.d.ts} +1 -1
- package/lib/utils/{NameEncoder.js → ProtobufNameEncoder.js} +7 -7
- package/lib/utils/ProtobufNameEncoder.js.map +1 -0
- package/package.json +1 -1
- package/src/factories/JsonMetadataFactory.ts +5 -2
- package/src/factories/MetadataCollection.ts +6 -6
- package/src/factories/MetadataFactory.ts +7 -7
- package/src/factories/MetadataTypeTagFactory.ts +31 -6
- package/src/factories/ProtobufFactory.ts +794 -177
- package/src/factories/internal/metadata/IMetadataIteratorProps.ts +1 -0
- package/src/factories/internal/metadata/MetadataHelper.ts +1 -1
- package/src/factories/internal/metadata/emplace_metadata_alias.ts +2 -2
- package/src/factories/internal/metadata/emplace_metadata_object.ts +5 -5
- package/src/factories/internal/metadata/explore_metadata.ts +1 -0
- package/src/factories/internal/metadata/iterate_metadata.ts +1 -1
- package/src/factories/internal/metadata/iterate_metadata_alias.ts +9 -4
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +6 -6
- package/src/factories/internal/metadata/iterate_metadata_intersection.ts +163 -181
- package/src/factories/internal/metadata/iterate_metadata_map.ts +5 -2
- package/src/factories/internal/metadata/iterate_metadata_native.ts +20 -2
- package/src/factories/internal/metadata/iterate_metadata_set.ts +27 -11
- package/src/factories/internal/metadata/iterate_metadata_sort.ts +1 -1
- package/src/factories/internal/metadata/iterate_metadata_template.ts +1 -3
- package/src/programmers/CheckerProgrammer.ts +9 -7
- package/src/programmers/RandomProgrammer.ts +16 -14
- package/src/programmers/helpers/AtomicPredicator.ts +3 -3
- package/src/programmers/helpers/ProtobufUtil.ts +147 -44
- package/src/programmers/helpers/UnionExplorer.ts +62 -62
- package/src/programmers/http/HttpFormDataProgrammer.ts +10 -6
- package/src/programmers/internal/application_escaped.ts +2 -2
- package/src/programmers/internal/application_v30_alias.ts +18 -12
- package/src/programmers/internal/application_v30_native.ts +22 -12
- package/src/programmers/internal/application_v30_object.ts +23 -8
- package/src/programmers/internal/application_v30_schema.ts +31 -34
- package/src/programmers/internal/application_v31_alias.ts +16 -13
- package/src/programmers/internal/application_v31_native.ts +22 -12
- package/src/programmers/internal/application_v31_object.ts +19 -8
- package/src/programmers/internal/application_v31_schema.ts +26 -29
- package/src/programmers/internal/check_dynamic_key.ts +4 -4
- package/src/programmers/internal/check_native.ts +4 -4
- package/src/programmers/internal/check_union_array_like.ts +2 -1
- package/src/programmers/internal/llm_schema_escaped.ts +2 -2
- package/src/programmers/internal/llm_schema_object.ts +21 -18
- package/src/programmers/internal/llm_schema_station.ts +9 -11
- package/src/programmers/json/JsonSchemasProgrammer.ts +5 -5
- package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
- package/src/programmers/llm/LlmSchemaProgrammer.ts +6 -6
- package/src/programmers/misc/MiscCloneProgrammer.ts +11 -7
- package/src/programmers/misc/MiscPruneProgrammer.ts +1 -1
- package/src/programmers/notations/NotationGeneralProgrammer.ts +10 -6
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +254 -308
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +11 -8
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +73 -95
- package/src/schemas/metadata/IMetadata.ts +35 -39
- package/src/schemas/metadata/IMetadataAlias.ts +6 -12
- package/src/schemas/metadata/IMetadataAliasType.ts +12 -0
- package/src/schemas/metadata/IMetadataArray.ts +6 -6
- package/src/schemas/metadata/IMetadataComponents.ts +11 -11
- package/src/schemas/metadata/IMetadataConstantValue.ts +1 -1
- package/src/schemas/metadata/IMetadataDictionary.ts +2 -2
- package/src/schemas/metadata/IMetadataMap.ts +8 -0
- package/src/schemas/metadata/IMetadataNative.ts +6 -0
- package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
- package/src/schemas/metadata/IMetadataSet.ts +7 -0
- package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
- package/src/schemas/metadata/IMetadataTuple.ts +6 -6
- package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
- package/src/schemas/metadata/Metadata.ts +100 -47
- package/src/schemas/metadata/MetadataAlias.ts +46 -61
- package/src/schemas/metadata/MetadataAliasType.ts +63 -0
- package/src/schemas/metadata/MetadataArray.ts +49 -49
- package/src/schemas/metadata/MetadataComponents.ts +3 -3
- package/src/schemas/metadata/MetadataConstantValue.ts +1 -1
- package/src/schemas/metadata/MetadataMap.ts +48 -0
- package/src/schemas/metadata/MetadataNative.ts +44 -0
- package/src/schemas/metadata/MetadataProperty.ts +3 -0
- package/src/schemas/metadata/MetadataSet.ts +45 -0
- package/src/schemas/metadata/MetadataTemplate.ts +80 -80
- package/src/schemas/metadata/MetadataTuple.ts +32 -32
- package/src/schemas/protobuf/IProtobufProperty.ts +6 -0
- package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -0
- package/src/schemas/protobuf/IProtobufSchema.ts +50 -0
- package/src/tags/Example.ts +24 -17
- package/src/tags/Examples.ts +16 -16
- package/src/tags/JsonSchemaPlugin.ts +8 -8
- package/src/tags/Sequence.ts +10 -0
- package/src/tags/TagBase.ts +82 -76
- package/src/tags/index.ts +1 -0
- package/src/utils/{NameEncoder.ts → ProtobufNameEncoder.ts} +1 -1
- package/lib/schemas/metadata/IMetadataEntry.d.ts +0 -5
- package/lib/schemas/metadata/IMetadataEntry.js.map +0 -1
- package/lib/utils/NameEncoder.js.map +0 -1
- package/src/schemas/metadata/IMetadataEntry.ts +0 -6
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
+
|
|
3
|
+
import { IMetadataSet } from "./IMetadataSet";
|
|
4
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
5
|
+
import { Metadata } from "./Metadata";
|
|
6
|
+
|
|
7
|
+
export class MetadataSet {
|
|
8
|
+
public readonly value: Metadata;
|
|
9
|
+
public readonly tags: IMetadataTypeTag[][];
|
|
10
|
+
private name_?: string;
|
|
11
|
+
|
|
12
|
+
private constructor(props: ClassProperties<MetadataSet>) {
|
|
13
|
+
this.value = props.value;
|
|
14
|
+
this.tags = props.tags;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public static create(props: ClassProperties<MetadataSet>): MetadataSet {
|
|
18
|
+
return new MetadataSet(props);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public getName(): string {
|
|
22
|
+
return (this.name_ ??= (() => {
|
|
23
|
+
const symbol: string = `Set<${this.value.getName()}>`;
|
|
24
|
+
if (this.tags.length === 0) return symbol;
|
|
25
|
+
else if (this.tags.length === 1) {
|
|
26
|
+
const str: string = [symbol, ...this.tags[0]!.map((t) => t.name)].join(
|
|
27
|
+
" & ",
|
|
28
|
+
);
|
|
29
|
+
return `(${str})`;
|
|
30
|
+
}
|
|
31
|
+
const rows: string[] = this.tags.map((row) => {
|
|
32
|
+
const str: string = row.map((t) => t.name).join(" & ");
|
|
33
|
+
return row.length === 1 ? str : `(${str})`;
|
|
34
|
+
});
|
|
35
|
+
return `(${symbol} & (${rows.join(" | ")}))`;
|
|
36
|
+
})());
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public toJSON(): IMetadataSet {
|
|
40
|
+
return {
|
|
41
|
+
value: this.value.toJSON(),
|
|
42
|
+
tags: this.tags,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
-
|
|
3
|
-
import { IMetadataDictionary } from "./IMetadataDictionary";
|
|
4
|
-
import { IMetadataTemplate } from "./IMetadataTemplate";
|
|
5
|
-
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
6
|
-
import { Metadata } from "./Metadata";
|
|
7
|
-
|
|
8
|
-
export class MetadataTemplate {
|
|
9
|
-
public readonly row: Metadata[];
|
|
10
|
-
public tags: IMetadataTypeTag[][]
|
|
11
|
-
|
|
12
|
-
private name_?: string;
|
|
13
|
-
|
|
14
|
-
private constructor(props: ClassProperties<MetadataTemplate>) {
|
|
15
|
-
this.row = props.row.map(Metadata.create);
|
|
16
|
-
this.tags = props.tags;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public static create(
|
|
20
|
-
props: ClassProperties<MetadataTemplate>,
|
|
21
|
-
): MetadataTemplate {
|
|
22
|
-
return new MetadataTemplate(props);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public static from(
|
|
26
|
-
json: IMetadataTemplate,
|
|
27
|
-
dict: IMetadataDictionary,
|
|
28
|
-
): MetadataTemplate {
|
|
29
|
-
return new MetadataTemplate({
|
|
30
|
-
row: json.row.map((m) => Metadata.from(m, dict)),
|
|
31
|
-
tags: json.tags,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public getName(): string {
|
|
36
|
-
return (this.name_ ??= getName(this));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* @internal
|
|
41
|
-
*/
|
|
42
|
-
public getBaseName(): string {
|
|
43
|
-
return (
|
|
44
|
-
"`" +
|
|
45
|
-
this.row
|
|
46
|
-
.map((child) =>
|
|
47
|
-
child.isConstant() && child.size() === 1
|
|
48
|
-
? child.constants[0]!.values[0]!.value
|
|
49
|
-
: `$\{${child.getName()}\}`,
|
|
50
|
-
)
|
|
51
|
-
.join("")
|
|
52
|
-
.split("`")
|
|
53
|
-
.join("\\`") +
|
|
54
|
-
"`"
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public toJSON(): IMetadataTemplate {
|
|
59
|
-
return {
|
|
60
|
-
row: this.row.map((m) => m.toJSON()),
|
|
61
|
-
tags: this.tags,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const getName = (template: MetadataTemplate): string => {
|
|
67
|
-
const base: string = template.getBaseName();
|
|
68
|
-
if (!template.tags?.length) return base;
|
|
69
|
-
else if (template.tags.length === 1) {
|
|
70
|
-
const str: string = [base, ...template.tags[0]!.map((t) => t.name)].join(
|
|
71
|
-
" & ",
|
|
72
|
-
);
|
|
73
|
-
return `(${str})`;
|
|
74
|
-
}
|
|
75
|
-
const rows: string[] = template.tags.map((row) => {
|
|
76
|
-
const str: string = row.map((t) => t.name).join(" & ");
|
|
77
|
-
return row.length === 1 ? str : `(${str})`;
|
|
78
|
-
});
|
|
79
|
-
return `(${base} & (${rows.join(" | ")}))`;
|
|
80
|
-
};
|
|
1
|
+
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
+
|
|
3
|
+
import { IMetadataDictionary } from "./IMetadataDictionary";
|
|
4
|
+
import { IMetadataTemplate } from "./IMetadataTemplate";
|
|
5
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
6
|
+
import { Metadata } from "./Metadata";
|
|
7
|
+
|
|
8
|
+
export class MetadataTemplate {
|
|
9
|
+
public readonly row: Metadata[];
|
|
10
|
+
public readonly tags: IMetadataTypeTag[][];
|
|
11
|
+
|
|
12
|
+
private name_?: string;
|
|
13
|
+
|
|
14
|
+
private constructor(props: ClassProperties<MetadataTemplate>) {
|
|
15
|
+
this.row = props.row.map(Metadata.create);
|
|
16
|
+
this.tags = props.tags;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public static create(
|
|
20
|
+
props: ClassProperties<MetadataTemplate>,
|
|
21
|
+
): MetadataTemplate {
|
|
22
|
+
return new MetadataTemplate(props);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public static from(
|
|
26
|
+
json: IMetadataTemplate,
|
|
27
|
+
dict: IMetadataDictionary,
|
|
28
|
+
): MetadataTemplate {
|
|
29
|
+
return new MetadataTemplate({
|
|
30
|
+
row: json.row.map((m) => Metadata.from(m, dict)),
|
|
31
|
+
tags: json.tags,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public getName(): string {
|
|
36
|
+
return (this.name_ ??= getName(this));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
public getBaseName(): string {
|
|
43
|
+
return (
|
|
44
|
+
"`" +
|
|
45
|
+
this.row
|
|
46
|
+
.map((child) =>
|
|
47
|
+
child.isConstant() && child.size() === 1
|
|
48
|
+
? child.constants[0]!.values[0]!.value
|
|
49
|
+
: `$\{${child.getName()}\}`,
|
|
50
|
+
)
|
|
51
|
+
.join("")
|
|
52
|
+
.split("`")
|
|
53
|
+
.join("\\`") +
|
|
54
|
+
"`"
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public toJSON(): IMetadataTemplate {
|
|
59
|
+
return {
|
|
60
|
+
row: this.row.map((m) => m.toJSON()),
|
|
61
|
+
tags: this.tags,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const getName = (template: MetadataTemplate): string => {
|
|
67
|
+
const base: string = template.getBaseName();
|
|
68
|
+
if (!template.tags?.length) return base;
|
|
69
|
+
else if (template.tags.length === 1) {
|
|
70
|
+
const str: string = [base, ...template.tags[0]!.map((t) => t.name)].join(
|
|
71
|
+
" & ",
|
|
72
|
+
);
|
|
73
|
+
return `(${str})`;
|
|
74
|
+
}
|
|
75
|
+
const rows: string[] = template.tags.map((row) => {
|
|
76
|
+
const str: string = row.map((t) => t.name).join(" & ");
|
|
77
|
+
return row.length === 1 ? str : `(${str})`;
|
|
78
|
+
});
|
|
79
|
+
return `(${base} & (${rows.join(" | ")}))`;
|
|
80
|
+
};
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
-
|
|
3
|
-
import { IMetadataTuple } from "./IMetadataTuple";
|
|
4
|
-
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
5
|
-
import { MetadataTupleType } from "./MetadataTupleType";
|
|
6
|
-
|
|
7
|
-
export class MetadataTuple {
|
|
8
|
-
public readonly type: MetadataTupleType;
|
|
9
|
-
public readonly tags: IMetadataTypeTag[][];
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @hidden
|
|
13
|
-
*/
|
|
14
|
-
private constructor(props: ClassProperties<MetadataTuple>) {
|
|
15
|
-
this.type = props.type;
|
|
16
|
-
this.tags = props.tags;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @internal
|
|
21
|
-
*/
|
|
22
|
-
public static create(props: ClassProperties<MetadataTuple>): MetadataTuple {
|
|
23
|
-
return new MetadataTuple(props);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
public toJSON(): IMetadataTuple {
|
|
27
|
-
return {
|
|
28
|
-
name: this.type.name,
|
|
29
|
-
tags: this.tags.map((row) => row.slice()),
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
+
|
|
3
|
+
import { IMetadataTuple } from "./IMetadataTuple";
|
|
4
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
5
|
+
import { MetadataTupleType } from "./MetadataTupleType";
|
|
6
|
+
|
|
7
|
+
export class MetadataTuple {
|
|
8
|
+
public readonly type: MetadataTupleType;
|
|
9
|
+
public readonly tags: IMetadataTypeTag[][];
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
private constructor(props: ClassProperties<MetadataTuple>) {
|
|
15
|
+
this.type = props.type;
|
|
16
|
+
this.tags = props.tags;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
public static create(props: ClassProperties<MetadataTuple>): MetadataTuple {
|
|
23
|
+
return new MetadataTuple(props);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public toJSON(): IMetadataTuple {
|
|
27
|
+
return {
|
|
28
|
+
name: this.type.name,
|
|
29
|
+
tags: this.tags.map((row) => row.slice()),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IProtobufSchema } from "./IProtobufSchema";
|
|
2
|
+
|
|
3
|
+
export type IProtobufPropertyType =
|
|
4
|
+
| IProtobufPropertyType.IByte
|
|
5
|
+
| IProtobufPropertyType.IBoolean
|
|
6
|
+
| IProtobufPropertyType.IBigint
|
|
7
|
+
| IProtobufPropertyType.INumber
|
|
8
|
+
| IProtobufPropertyType.IString
|
|
9
|
+
| IProtobufPropertyType.IArray
|
|
10
|
+
| IProtobufPropertyType.IObject
|
|
11
|
+
| IProtobufPropertyType.IMap;
|
|
12
|
+
export namespace IProtobufPropertyType {
|
|
13
|
+
export interface IByte extends IProtobufSchema.IByte {
|
|
14
|
+
index: number;
|
|
15
|
+
}
|
|
16
|
+
export interface IBoolean extends IProtobufSchema.IBoolean {
|
|
17
|
+
index: number;
|
|
18
|
+
}
|
|
19
|
+
export interface IBigint extends IProtobufSchema.IBigint {
|
|
20
|
+
index: number;
|
|
21
|
+
}
|
|
22
|
+
export interface INumber extends IProtobufSchema.INumber {
|
|
23
|
+
index: number;
|
|
24
|
+
}
|
|
25
|
+
export interface IString extends IProtobufSchema.IString {
|
|
26
|
+
index: number;
|
|
27
|
+
}
|
|
28
|
+
export interface IArray extends IProtobufSchema.IArray {
|
|
29
|
+
index: number;
|
|
30
|
+
}
|
|
31
|
+
export interface IObject extends IProtobufSchema.IObject {
|
|
32
|
+
index: number;
|
|
33
|
+
}
|
|
34
|
+
export interface IMap extends IProtobufSchema.IMap {
|
|
35
|
+
index: number;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { MetadataArrayType } from "../metadata/MetadataArrayType";
|
|
2
|
+
import { MetadataMap } from "../metadata/MetadataMap";
|
|
3
|
+
import { MetadataObjectType } from "../metadata/MetadataObjectType";
|
|
4
|
+
|
|
5
|
+
export type IProtobufSchema =
|
|
6
|
+
| IProtobufSchema.IByte
|
|
7
|
+
| IProtobufSchema.IBoolean
|
|
8
|
+
| IProtobufSchema.IBigint
|
|
9
|
+
| IProtobufSchema.INumber
|
|
10
|
+
| IProtobufSchema.IString
|
|
11
|
+
| IProtobufSchema.IArray
|
|
12
|
+
| IProtobufSchema.IObject
|
|
13
|
+
| IProtobufSchema.IMap;
|
|
14
|
+
export namespace IProtobufSchema {
|
|
15
|
+
export interface IByte {
|
|
16
|
+
type: "bytes";
|
|
17
|
+
}
|
|
18
|
+
export interface IBoolean {
|
|
19
|
+
type: "bool";
|
|
20
|
+
}
|
|
21
|
+
export interface IBigint {
|
|
22
|
+
type: "bigint";
|
|
23
|
+
name: "int64" | "uint64";
|
|
24
|
+
}
|
|
25
|
+
export interface INumber {
|
|
26
|
+
type: "number";
|
|
27
|
+
name: "int32" | "int64" | "uint32" | "uint64" | "float" | "double";
|
|
28
|
+
}
|
|
29
|
+
export interface IString {
|
|
30
|
+
type: "string";
|
|
31
|
+
}
|
|
32
|
+
export interface IArray {
|
|
33
|
+
type: "array";
|
|
34
|
+
array: MetadataArrayType;
|
|
35
|
+
value: Exclude<IProtobufSchema, IArray | IMap>;
|
|
36
|
+
}
|
|
37
|
+
export interface IObject {
|
|
38
|
+
type: "object";
|
|
39
|
+
object: MetadataObjectType;
|
|
40
|
+
}
|
|
41
|
+
export interface IMap {
|
|
42
|
+
type: "map";
|
|
43
|
+
map: MetadataMap | MetadataObjectType;
|
|
44
|
+
key:
|
|
45
|
+
| IProtobufSchema.IBoolean
|
|
46
|
+
| IProtobufSchema.INumber
|
|
47
|
+
| IProtobufSchema.IString;
|
|
48
|
+
value: Exclude<IProtobufSchema, IArray | IMap>;
|
|
49
|
+
}
|
|
50
|
+
}
|
package/src/tags/Example.ts
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
export type Example<
|
|
4
|
-
Value extends
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
:
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type Example<
|
|
4
|
+
Value extends
|
|
5
|
+
| boolean
|
|
6
|
+
| bigint
|
|
7
|
+
| number
|
|
8
|
+
| string
|
|
9
|
+
| object
|
|
10
|
+
| Array<unknown>
|
|
11
|
+
| null,
|
|
12
|
+
> = TagBase<{
|
|
13
|
+
target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
|
|
14
|
+
kind: "example";
|
|
15
|
+
value: Value;
|
|
16
|
+
exclusive: true;
|
|
17
|
+
schema: Value extends bigint
|
|
18
|
+
? { example: Numeric<Value> }
|
|
19
|
+
: { example: Value };
|
|
20
|
+
}>;
|
|
21
|
+
|
|
22
|
+
type Numeric<T extends bigint> = `${T}` extends `${infer N extends number}`
|
|
23
|
+
? N
|
|
24
|
+
: never;
|
package/src/tags/Examples.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
export type Examples<
|
|
4
|
-
Dict extends Record<
|
|
5
|
-
string,
|
|
6
|
-
boolean | bigint | number | string | Array<unknown> | null
|
|
7
|
-
>,
|
|
8
|
-
> = TagBase<{
|
|
9
|
-
target: "boolean" | "bigint" | "number" | "string" | "array";
|
|
10
|
-
kind: "examples";
|
|
11
|
-
value: Dict;
|
|
12
|
-
exclusive: true;
|
|
13
|
-
schema: {
|
|
14
|
-
examples: Dict;
|
|
15
|
-
};
|
|
16
|
-
}>;
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type Examples<
|
|
4
|
+
Dict extends Record<
|
|
5
|
+
string,
|
|
6
|
+
boolean | bigint | number | string | object | Array<unknown> | null
|
|
7
|
+
>,
|
|
8
|
+
> = TagBase<{
|
|
9
|
+
target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
|
|
10
|
+
kind: "examples";
|
|
11
|
+
value: Dict;
|
|
12
|
+
exclusive: true;
|
|
13
|
+
schema: {
|
|
14
|
+
examples: Dict;
|
|
15
|
+
};
|
|
16
|
+
}>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { TagBase } from "./TagBase";
|
|
2
|
-
|
|
3
|
-
export type JsonSchemaPlugin<Schema extends object> = TagBase<{
|
|
4
|
-
target: "string" | "boolean" | "bigint" | "number" | "array";
|
|
5
|
-
kind: "jsonPlugin";
|
|
6
|
-
value: undefined;
|
|
7
|
-
schema: Schema;
|
|
8
|
-
}>;
|
|
1
|
+
import { TagBase } from "./TagBase";
|
|
2
|
+
|
|
3
|
+
export type JsonSchemaPlugin<Schema extends object> = TagBase<{
|
|
4
|
+
target: "string" | "boolean" | "bigint" | "number" | "array" | "object";
|
|
5
|
+
kind: "jsonPlugin";
|
|
6
|
+
value: undefined;
|
|
7
|
+
schema: Schema;
|
|
8
|
+
}>;
|
package/src/tags/TagBase.ts
CHANGED
|
@@ -1,76 +1,82 @@
|
|
|
1
|
-
export type TagBase<
|
|
2
|
-
Props extends TagBase.IProps<any, any, any, any, any, any>,
|
|
3
|
-
> = {
|
|
4
|
-
/**
|
|
5
|
-
* This is a dummy property for compilation.
|
|
6
|
-
*
|
|
7
|
-
* It does not mean anything in runtime.
|
|
8
|
-
*/
|
|
9
|
-
"typia.tag"?: Props;
|
|
10
|
-
};
|
|
11
|
-
export namespace TagBase {
|
|
12
|
-
export interface IProps<
|
|
13
|
-
Target extends
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
| string
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
*
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
*
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
1
|
+
export type TagBase<
|
|
2
|
+
Props extends TagBase.IProps<any, any, any, any, any, any>,
|
|
3
|
+
> = {
|
|
4
|
+
/**
|
|
5
|
+
* This is a dummy property for compilation.
|
|
6
|
+
*
|
|
7
|
+
* It does not mean anything in runtime.
|
|
8
|
+
*/
|
|
9
|
+
"typia.tag"?: Props;
|
|
10
|
+
};
|
|
11
|
+
export namespace TagBase {
|
|
12
|
+
export interface IProps<
|
|
13
|
+
Target extends
|
|
14
|
+
| "boolean"
|
|
15
|
+
| "bigint"
|
|
16
|
+
| "number"
|
|
17
|
+
| "string"
|
|
18
|
+
| "array"
|
|
19
|
+
| "object",
|
|
20
|
+
Kind extends string,
|
|
21
|
+
Value extends boolean | bigint | number | string | undefined,
|
|
22
|
+
Validate extends
|
|
23
|
+
| string
|
|
24
|
+
| {
|
|
25
|
+
[key in Target]?: string;
|
|
26
|
+
},
|
|
27
|
+
Exclusive extends boolean | string[],
|
|
28
|
+
Schema extends object | undefined,
|
|
29
|
+
> {
|
|
30
|
+
/**
|
|
31
|
+
* Target type.
|
|
32
|
+
*
|
|
33
|
+
* If user tries to adapt this tag to a different type, it would be a compile
|
|
34
|
+
* error.
|
|
35
|
+
*
|
|
36
|
+
* For example, you've configured target type as `string`, but user adapted it
|
|
37
|
+
* onto a `number` type (`number & YourCustomTag<Value>`), then it would be
|
|
38
|
+
* blocked by TypeScript compiler.
|
|
39
|
+
*/
|
|
40
|
+
target: Target;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* What kind of tag is this?
|
|
44
|
+
*/
|
|
45
|
+
kind: Kind;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Value to be configured by user.
|
|
49
|
+
*/
|
|
50
|
+
value: Value;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Validation script.
|
|
54
|
+
*
|
|
55
|
+
* This script would be inserted into the generated validation function.
|
|
56
|
+
* In here script, target variable name must be `$input`. The variable name
|
|
57
|
+
* `$input` would be transformed to the suitable when compilation.
|
|
58
|
+
*
|
|
59
|
+
* Also, If you've take a mistake on this script, compile error would be
|
|
60
|
+
* occured. So, define it with confidence. Compiler will block all your
|
|
61
|
+
* mistakes.
|
|
62
|
+
*/
|
|
63
|
+
validate?: Validate;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Exclusive option.
|
|
67
|
+
*
|
|
68
|
+
* If this property configured as `true`, same {@link kind} tag cannot be
|
|
69
|
+
* duplicated in the target type. Otherwise, if you've configured this
|
|
70
|
+
* property as string array, all of the {@link kind} value assigned
|
|
71
|
+
* tags cannot be compatible in the target type.
|
|
72
|
+
*
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
exclusive?: Exclusive | string[];
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Additional schema info assigned to the {@link IJsonSchema} object.
|
|
79
|
+
*/
|
|
80
|
+
schema?: Schema;
|
|
81
|
+
}
|
|
82
|
+
}
|
package/src/tags/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IMetadataEntry.js","sourceRoot":"","sources":["../../../src/schemas/metadata/IMetadataEntry.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NameEncoder.js","sourceRoot":"","sources":["../../src/utils/NameEncoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAiB,WAAW,CAY3B;AAZD,WAAiB,WAAW;IACb,kBAAM,GAAG,UAAC,GAAW;;;YAChC,KAA8B,IAAA,cAAA,SAAA,SAAS,CAAA,oCAAA;gBAA5B,IAAA,KAAA,8BAAe,EAAd,MAAM,QAAA,EAAE,KAAK,QAAA;gBACvB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAAA;;;;;;;;;QACtC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEW,kBAAM,GAAG,UAAC,GAAW;;;YAChC,KAA8B,IAAA,cAAA,SAAA,SAAS,CAAA,oCAAA;gBAA5B,IAAA,KAAA,8BAAe,EAAd,MAAM,QAAA,EAAE,KAAK,QAAA;gBACvB,IAAI,KAAK,KAAK,EAAE;oBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAA;;;;;;;;;QACxD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC,EAZgB,WAAW,2BAAX,WAAW,QAY3B;AAED,IAAM,SAAS,GAAuB;IACpC,CAAC,GAAG,EAAE,UAAU,CAAC;IACjB,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,SAAS,CAAC;IAChB,CAAC,GAAG,EAAE,aAAa,CAAC;IACpB,CAAC,GAAG,EAAE,eAAe,CAAC;IACtB,CAAC,GAAG,EAAE,eAAe,CAAC;IACtB,CAAC,GAAG,EAAE,SAAS,CAAC;CACjB,CAAC"}
|