typia 7.0.0-dev.20241012 → 7.0.0-dev.20241018
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 +829 -156
- 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 +5 -4
- package/lib/programmers/helpers/ProtobufUtil.js +215 -92
- 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 +15 -12
- 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.js +51 -34
- 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/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/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/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 +494 -176
- 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 +146 -43
- 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 +14 -7
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +11 -8
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +45 -20
- 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 +5 -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/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/lib/schemas/metadata/IMetadataEntry.d.ts +0 -5
- package/lib/schemas/metadata/IMetadataEntry.js.map +0 -1
- package/src/schemas/metadata/IMetadataEntry.ts +0 -6
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
-
|
|
3
|
-
import { IMetadataArray } from "./IMetadataArray";
|
|
4
|
-
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
5
|
-
import { MetadataArrayType } from "./MetadataArrayType";
|
|
6
|
-
|
|
7
|
-
export class MetadataArray {
|
|
8
|
-
public readonly type: MetadataArrayType;
|
|
9
|
-
public readonly tags: IMetadataTypeTag[][];
|
|
10
|
-
|
|
11
|
-
private name_?: string;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @hidden
|
|
15
|
-
*/
|
|
16
|
-
private constructor(props: ClassProperties<MetadataArray>) {
|
|
17
|
-
this.type = props.type;
|
|
18
|
-
this.tags = props.tags;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public static create(props: ClassProperties<MetadataArray>): MetadataArray {
|
|
22
|
-
return new MetadataArray(props);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public getName(): string {
|
|
26
|
-
return (this.name_ ??= (() => {
|
|
27
|
-
if (this.tags.length === 0) return this.type.name;
|
|
28
|
-
else if (this.tags.length === 1) {
|
|
29
|
-
const str: string = [
|
|
30
|
-
this.type.name,
|
|
31
|
-
...this.tags[0]!.map((t) => t.name),
|
|
32
|
-
].join(" & ");
|
|
33
|
-
return `(${str})`;
|
|
34
|
-
}
|
|
35
|
-
const rows: string[] = this.tags.map((row) => {
|
|
36
|
-
const str: string = row.map((t) => t.name).join(" & ");
|
|
37
|
-
return row.length === 1 ? str : `(${str})`;
|
|
38
|
-
});
|
|
39
|
-
return `(${this.type.name} & (${rows.join(" | ")}))`;
|
|
40
|
-
})());
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public toJSON(): IMetadataArray {
|
|
44
|
-
return {
|
|
45
|
-
name: this.type.name,
|
|
46
|
-
tags: this.tags.map((row) => row.slice()),
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
}
|
|
1
|
+
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
+
|
|
3
|
+
import { IMetadataArray } from "./IMetadataArray";
|
|
4
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
5
|
+
import { MetadataArrayType } from "./MetadataArrayType";
|
|
6
|
+
|
|
7
|
+
export class MetadataArray {
|
|
8
|
+
public readonly type: MetadataArrayType;
|
|
9
|
+
public readonly tags: IMetadataTypeTag[][];
|
|
10
|
+
|
|
11
|
+
private name_?: string;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
private constructor(props: ClassProperties<MetadataArray>) {
|
|
17
|
+
this.type = props.type;
|
|
18
|
+
this.tags = props.tags;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public static create(props: ClassProperties<MetadataArray>): MetadataArray {
|
|
22
|
+
return new MetadataArray(props);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public getName(): string {
|
|
26
|
+
return (this.name_ ??= (() => {
|
|
27
|
+
if (this.tags.length === 0) return this.type.name;
|
|
28
|
+
else if (this.tags.length === 1) {
|
|
29
|
+
const str: string = [
|
|
30
|
+
this.type.name,
|
|
31
|
+
...this.tags[0]!.map((t) => t.name),
|
|
32
|
+
].join(" & ");
|
|
33
|
+
return `(${str})`;
|
|
34
|
+
}
|
|
35
|
+
const rows: string[] = this.tags.map((row) => {
|
|
36
|
+
const str: string = row.map((t) => t.name).join(" & ");
|
|
37
|
+
return row.length === 1 ? str : `(${str})`;
|
|
38
|
+
});
|
|
39
|
+
return `(${this.type.name} & (${rows.join(" | ")}))`;
|
|
40
|
+
})());
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public toJSON(): IMetadataArray {
|
|
44
|
+
return {
|
|
45
|
+
name: this.type.name,
|
|
46
|
+
tags: this.tags.map((row) => row.slice()),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -4,14 +4,14 @@ import { Writable } from "../../typings/Writable";
|
|
|
4
4
|
import { IMetadataComponents } from "./IMetadataComponents";
|
|
5
5
|
import { IMetadataDictionary } from "./IMetadataDictionary";
|
|
6
6
|
import { Metadata } from "./Metadata";
|
|
7
|
-
import {
|
|
7
|
+
import { MetadataAliasType } from "./MetadataAliasType";
|
|
8
8
|
import { MetadataArrayType } from "./MetadataArrayType";
|
|
9
9
|
import { MetadataObjectType } from "./MetadataObjectType";
|
|
10
10
|
import { MetadataProperty } from "./MetadataProperty";
|
|
11
11
|
import { MetadataTupleType } from "./MetadataTupleType";
|
|
12
12
|
|
|
13
13
|
export class MetadataComponents {
|
|
14
|
-
public readonly aliases:
|
|
14
|
+
public readonly aliases: MetadataAliasType[];
|
|
15
15
|
public readonly objects: MetadataObjectType[];
|
|
16
16
|
public readonly arrays: MetadataArrayType[];
|
|
17
17
|
public readonly tuples: MetadataTupleType[];
|
|
@@ -37,7 +37,7 @@ export class MetadataComponents {
|
|
|
37
37
|
aliases: new Map(
|
|
38
38
|
json.aliases.map((alias) => [
|
|
39
39
|
alias.name,
|
|
40
|
-
|
|
40
|
+
MetadataAliasType._From_without_value(alias),
|
|
41
41
|
]),
|
|
42
42
|
),
|
|
43
43
|
arrays: new Map(
|
|
@@ -6,7 +6,7 @@ import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
|
6
6
|
|
|
7
7
|
export class MetadataConstantValue {
|
|
8
8
|
public readonly value: boolean | bigint | number | string;
|
|
9
|
-
public tags: IMetadataTypeTag[][]
|
|
9
|
+
public tags: IMetadataTypeTag[][];
|
|
10
10
|
public readonly description?: string | null;
|
|
11
11
|
public readonly jsDocTags?: IJsDocTagInfo[];
|
|
12
12
|
private name_?: string;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
+
|
|
3
|
+
import { IMetadataMap } from "./IMetadataMap";
|
|
4
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
5
|
+
import { Metadata } from "./Metadata";
|
|
6
|
+
|
|
7
|
+
export class MetadataMap {
|
|
8
|
+
public readonly key: Metadata;
|
|
9
|
+
public readonly value: Metadata;
|
|
10
|
+
public readonly tags: IMetadataTypeTag[][];
|
|
11
|
+
private name_?: string;
|
|
12
|
+
|
|
13
|
+
private constructor(props: ClassProperties<MetadataMap>) {
|
|
14
|
+
this.key = props.key;
|
|
15
|
+
this.value = props.value;
|
|
16
|
+
this.tags = props.tags;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public static create(props: ClassProperties<MetadataMap>): MetadataMap {
|
|
20
|
+
return new MetadataMap(props);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public getName(): string {
|
|
24
|
+
return (this.name_ ??= (() => {
|
|
25
|
+
const symbol: string = `Map<${this.key.getName()}, ${this.value.getName()}>`;
|
|
26
|
+
if (this.tags.length === 0) return symbol;
|
|
27
|
+
else if (this.tags.length === 1) {
|
|
28
|
+
const str: string = [symbol, ...this.tags[0]!.map((t) => t.name)].join(
|
|
29
|
+
" & ",
|
|
30
|
+
);
|
|
31
|
+
return `(${str})`;
|
|
32
|
+
}
|
|
33
|
+
const rows: string[] = this.tags.map((row) => {
|
|
34
|
+
const str: string = row.map((t) => t.name).join(" & ");
|
|
35
|
+
return row.length === 1 ? str : `(${str})`;
|
|
36
|
+
});
|
|
37
|
+
return `(${symbol} & (${rows.join(" | ")}))`;
|
|
38
|
+
})());
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public toJSON(): IMetadataMap {
|
|
42
|
+
return {
|
|
43
|
+
key: this.key.toJSON(),
|
|
44
|
+
value: this.value.toJSON(),
|
|
45
|
+
tags: this.tags,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ClassProperties } from "../../typings/ClassProperties";
|
|
2
|
+
|
|
3
|
+
import { IMetadataNative } from "./IMetadataNative";
|
|
4
|
+
import { IMetadataTypeTag } from "./IMetadataTypeTag";
|
|
5
|
+
|
|
6
|
+
export class MetadataNative {
|
|
7
|
+
public readonly name: string;
|
|
8
|
+
public readonly tags: IMetadataTypeTag[][];
|
|
9
|
+
private typeName_?: string;
|
|
10
|
+
|
|
11
|
+
private constructor(props: ClassProperties<MetadataNative>) {
|
|
12
|
+
this.name = props.name;
|
|
13
|
+
this.tags = props.tags;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public static create(props: ClassProperties<MetadataNative>): MetadataNative {
|
|
17
|
+
return new MetadataNative(props);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public getName(): string {
|
|
21
|
+
return (this.typeName_ ??= (() => {
|
|
22
|
+
if (this.tags.length === 0) return this.name;
|
|
23
|
+
else if (this.tags.length === 1) {
|
|
24
|
+
const str: string = [
|
|
25
|
+
this.name,
|
|
26
|
+
...this.tags[0]!.map((t) => t.name),
|
|
27
|
+
].join(" & ");
|
|
28
|
+
return `(${str})`;
|
|
29
|
+
}
|
|
30
|
+
const rows: string[] = this.tags.map((row) => {
|
|
31
|
+
const str: string = row.map((t) => t.name).join(" & ");
|
|
32
|
+
return row.length === 1 ? str : `(${str})`;
|
|
33
|
+
});
|
|
34
|
+
return `(${this.name} & (${rows.join(" | ")}))`;
|
|
35
|
+
})());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public toJSON(): IMetadataNative {
|
|
39
|
+
return {
|
|
40
|
+
name: this.name,
|
|
41
|
+
tags: this.tags,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -11,6 +11,11 @@ export class MetadataProperty {
|
|
|
11
11
|
public readonly description: string | null;
|
|
12
12
|
public readonly jsDocTags: IJsDocTagInfo[];
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
public readonly sequences_?: Set<number>;
|
|
18
|
+
|
|
14
19
|
/* -----------------------------------------------------------
|
|
15
20
|
CONSTRUCTORS
|
|
16
21
|
----------------------------------------------------------- */
|
|
@@ -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
|
+
}
|
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
|
+
}>;
|