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.
Files changed (236) hide show
  1. package/lib/factories/JsonMetadataFactory.js +3 -2
  2. package/lib/factories/JsonMetadataFactory.js.map +1 -1
  3. package/lib/factories/MetadataCollection.d.ts +3 -3
  4. package/lib/factories/MetadataCollection.js +2 -2
  5. package/lib/factories/MetadataCollection.js.map +1 -1
  6. package/lib/factories/MetadataFactory.d.ts +2 -2
  7. package/lib/factories/MetadataFactory.js +3 -3
  8. package/lib/factories/MetadataFactory.js.map +1 -1
  9. package/lib/factories/MetadataTypeTagFactory.d.ts +3 -2
  10. package/lib/factories/MetadataTypeTagFactory.js +26 -3
  11. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  12. package/lib/factories/ProtobufFactory.js +829 -156
  13. package/lib/factories/ProtobufFactory.js.map +1 -1
  14. package/lib/factories/internal/metadata/IMetadataIteratorProps.d.ts +1 -0
  15. package/lib/factories/internal/metadata/MetadataHelper.js +1 -1
  16. package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
  17. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +2 -2
  18. package/lib/factories/internal/metadata/emplace_metadata_object.js +5 -5
  19. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  20. package/lib/factories/internal/metadata/explore_metadata.js +2 -0
  21. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  22. package/lib/factories/internal/metadata/iterate_metadata.js +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  24. package/lib/factories/internal/metadata/iterate_metadata_alias.js +8 -2
  25. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  26. package/lib/factories/internal/metadata/iterate_metadata_collection.js +6 -6
  27. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +262 -137
  29. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_map.js +4 -2
  31. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata_native.js +27 -11
  33. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_set.js +8 -1
  35. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  36. package/lib/factories/internal/metadata/iterate_metadata_sort.js +1 -1
  37. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_template.js +1 -1
  39. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  40. package/lib/programmers/CheckerProgrammer.js +5 -5
  41. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  42. package/lib/programmers/RandomProgrammer.js +12 -12
  43. package/lib/programmers/RandomProgrammer.js.map +1 -1
  44. package/lib/programmers/helpers/AtomicPredicator.js +3 -3
  45. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  46. package/lib/programmers/helpers/ProtobufUtil.d.ts +5 -4
  47. package/lib/programmers/helpers/ProtobufUtil.js +215 -92
  48. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  49. package/lib/programmers/helpers/UnionExplorer.d.ts +4 -2
  50. package/lib/programmers/helpers/UnionExplorer.js +1 -1
  51. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  52. package/lib/programmers/http/HttpFormDataProgrammer.js +6 -6
  53. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  54. package/lib/programmers/internal/application_escaped.js +2 -2
  55. package/lib/programmers/internal/application_escaped.js.map +1 -1
  56. package/lib/programmers/internal/application_v30_alias.js +13 -8
  57. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  58. package/lib/programmers/internal/application_v30_native.js +17 -10
  59. package/lib/programmers/internal/application_v30_native.js.map +1 -1
  60. package/lib/programmers/internal/application_v30_object.js +16 -6
  61. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  62. package/lib/programmers/internal/application_v30_schema.js +24 -17
  63. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  64. package/lib/programmers/internal/application_v31_alias.js +12 -11
  65. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  66. package/lib/programmers/internal/application_v31_native.js +17 -10
  67. package/lib/programmers/internal/application_v31_native.js.map +1 -1
  68. package/lib/programmers/internal/application_v31_object.js +13 -6
  69. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  70. package/lib/programmers/internal/application_v31_schema.js +23 -16
  71. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  72. package/lib/programmers/internal/check_dynamic_key.js +4 -4
  73. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  74. package/lib/programmers/internal/check_native.js +3 -3
  75. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  76. package/lib/programmers/internal/llm_schema_escaped.js +2 -2
  77. package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
  78. package/lib/programmers/internal/llm_schema_object.js +18 -14
  79. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  80. package/lib/programmers/internal/llm_schema_station.js +8 -8
  81. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  82. package/lib/programmers/json/JsonSchemasProgrammer.js +5 -5
  83. package/lib/programmers/json/JsonSchemasProgrammer.js.map +1 -1
  84. package/lib/programmers/json/JsonStringifyProgrammer.js +18 -17
  85. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  86. package/lib/programmers/llm/LlmSchemaProgrammer.js +6 -6
  87. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  88. package/lib/programmers/misc/MiscCloneProgrammer.js +7 -5
  89. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  90. package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
  91. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  92. package/lib/programmers/notations/NotationGeneralProgrammer.js +6 -4
  93. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  94. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +15 -12
  95. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  96. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +6 -4
  97. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  98. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +51 -34
  99. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  100. package/lib/schemas/metadata/IMetadata.d.ts +14 -18
  101. package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -7
  102. package/lib/schemas/metadata/IMetadataAliasType.d.ts +10 -0
  103. package/lib/schemas/metadata/IMetadataAliasType.js +3 -0
  104. package/lib/schemas/metadata/IMetadataAliasType.js.map +1 -0
  105. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  106. package/lib/schemas/metadata/IMetadataConstantValue.d.ts +1 -1
  107. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  108. package/lib/schemas/metadata/IMetadataMap.d.ts +7 -0
  109. package/lib/schemas/metadata/{IMetadataEntry.js → IMetadataMap.js} +1 -1
  110. package/lib/schemas/metadata/IMetadataMap.js.map +1 -0
  111. package/lib/schemas/metadata/IMetadataNative.d.ts +5 -0
  112. package/lib/schemas/metadata/IMetadataNative.js +3 -0
  113. package/lib/schemas/metadata/IMetadataNative.js.map +1 -0
  114. package/lib/schemas/metadata/IMetadataSet.d.ts +6 -0
  115. package/lib/schemas/metadata/IMetadataSet.js +3 -0
  116. package/lib/schemas/metadata/IMetadataSet.js.map +1 -0
  117. package/lib/schemas/metadata/IMetadataTemplate.d.ts +1 -1
  118. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +1 -1
  119. package/lib/schemas/metadata/Metadata.d.ts +6 -9
  120. package/lib/schemas/metadata/Metadata.js +136 -98
  121. package/lib/schemas/metadata/Metadata.js.map +1 -1
  122. package/lib/schemas/metadata/MetadataAlias.d.ts +8 -11
  123. package/lib/schemas/metadata/MetadataAlias.js +48 -33
  124. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  125. package/lib/schemas/metadata/MetadataAliasType.d.ts +16 -0
  126. package/lib/schemas/metadata/MetadataAliasType.js +51 -0
  127. package/lib/schemas/metadata/MetadataAliasType.js.map +1 -0
  128. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  129. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  130. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  131. package/lib/schemas/metadata/MetadataConstantValue.d.ts +1 -1
  132. package/lib/schemas/metadata/MetadataMap.d.ts +14 -0
  133. package/lib/schemas/metadata/MetadataMap.js +66 -0
  134. package/lib/schemas/metadata/MetadataMap.js.map +1 -0
  135. package/lib/schemas/metadata/MetadataNative.d.ts +12 -0
  136. package/lib/schemas/metadata/MetadataNative.js +65 -0
  137. package/lib/schemas/metadata/MetadataNative.js.map +1 -0
  138. package/lib/schemas/metadata/MetadataSet.d.ts +13 -0
  139. package/lib/schemas/metadata/MetadataSet.js +64 -0
  140. package/lib/schemas/metadata/MetadataSet.js.map +1 -0
  141. package/lib/schemas/metadata/MetadataTemplate.d.ts +1 -1
  142. package/lib/tags/Example.d.ts +2 -2
  143. package/lib/tags/Examples.d.ts +2 -2
  144. package/lib/tags/JsonSchemaPlugin.d.ts +1 -1
  145. package/lib/tags/Sequence.d.ts +9 -0
  146. package/lib/tags/Sequence.js +3 -0
  147. package/lib/tags/Sequence.js.map +1 -0
  148. package/lib/tags/TagBase.d.ts +1 -1
  149. package/lib/tags/index.d.ts +1 -0
  150. package/lib/tags/index.js +1 -0
  151. package/lib/tags/index.js.map +1 -1
  152. package/package.json +1 -1
  153. package/src/factories/JsonMetadataFactory.ts +5 -2
  154. package/src/factories/MetadataCollection.ts +6 -6
  155. package/src/factories/MetadataFactory.ts +7 -7
  156. package/src/factories/MetadataTypeTagFactory.ts +31 -6
  157. package/src/factories/ProtobufFactory.ts +494 -176
  158. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +1 -0
  159. package/src/factories/internal/metadata/MetadataHelper.ts +1 -1
  160. package/src/factories/internal/metadata/emplace_metadata_alias.ts +2 -2
  161. package/src/factories/internal/metadata/emplace_metadata_object.ts +5 -5
  162. package/src/factories/internal/metadata/explore_metadata.ts +1 -0
  163. package/src/factories/internal/metadata/iterate_metadata.ts +1 -1
  164. package/src/factories/internal/metadata/iterate_metadata_alias.ts +9 -4
  165. package/src/factories/internal/metadata/iterate_metadata_collection.ts +6 -6
  166. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +163 -181
  167. package/src/factories/internal/metadata/iterate_metadata_map.ts +5 -2
  168. package/src/factories/internal/metadata/iterate_metadata_native.ts +20 -2
  169. package/src/factories/internal/metadata/iterate_metadata_set.ts +27 -11
  170. package/src/factories/internal/metadata/iterate_metadata_sort.ts +1 -1
  171. package/src/factories/internal/metadata/iterate_metadata_template.ts +1 -3
  172. package/src/programmers/CheckerProgrammer.ts +9 -7
  173. package/src/programmers/RandomProgrammer.ts +16 -14
  174. package/src/programmers/helpers/AtomicPredicator.ts +3 -3
  175. package/src/programmers/helpers/ProtobufUtil.ts +146 -43
  176. package/src/programmers/helpers/UnionExplorer.ts +62 -62
  177. package/src/programmers/http/HttpFormDataProgrammer.ts +10 -6
  178. package/src/programmers/internal/application_escaped.ts +2 -2
  179. package/src/programmers/internal/application_v30_alias.ts +18 -12
  180. package/src/programmers/internal/application_v30_native.ts +22 -12
  181. package/src/programmers/internal/application_v30_object.ts +23 -8
  182. package/src/programmers/internal/application_v30_schema.ts +31 -34
  183. package/src/programmers/internal/application_v31_alias.ts +16 -13
  184. package/src/programmers/internal/application_v31_native.ts +22 -12
  185. package/src/programmers/internal/application_v31_object.ts +19 -8
  186. package/src/programmers/internal/application_v31_schema.ts +26 -29
  187. package/src/programmers/internal/check_dynamic_key.ts +4 -4
  188. package/src/programmers/internal/check_native.ts +4 -4
  189. package/src/programmers/internal/check_union_array_like.ts +2 -1
  190. package/src/programmers/internal/llm_schema_escaped.ts +2 -2
  191. package/src/programmers/internal/llm_schema_object.ts +21 -18
  192. package/src/programmers/internal/llm_schema_station.ts +9 -11
  193. package/src/programmers/json/JsonSchemasProgrammer.ts +5 -5
  194. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  195. package/src/programmers/llm/LlmSchemaProgrammer.ts +6 -6
  196. package/src/programmers/misc/MiscCloneProgrammer.ts +11 -7
  197. package/src/programmers/misc/MiscPruneProgrammer.ts +1 -1
  198. package/src/programmers/notations/NotationGeneralProgrammer.ts +10 -6
  199. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +14 -7
  200. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +11 -8
  201. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +45 -20
  202. package/src/schemas/metadata/IMetadata.ts +35 -39
  203. package/src/schemas/metadata/IMetadataAlias.ts +6 -12
  204. package/src/schemas/metadata/IMetadataAliasType.ts +12 -0
  205. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  206. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  207. package/src/schemas/metadata/IMetadataConstantValue.ts +1 -1
  208. package/src/schemas/metadata/IMetadataDictionary.ts +2 -2
  209. package/src/schemas/metadata/IMetadataMap.ts +8 -0
  210. package/src/schemas/metadata/IMetadataNative.ts +6 -0
  211. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  212. package/src/schemas/metadata/IMetadataSet.ts +7 -0
  213. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  214. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  215. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  216. package/src/schemas/metadata/Metadata.ts +100 -47
  217. package/src/schemas/metadata/MetadataAlias.ts +46 -61
  218. package/src/schemas/metadata/MetadataAliasType.ts +63 -0
  219. package/src/schemas/metadata/MetadataArray.ts +49 -49
  220. package/src/schemas/metadata/MetadataComponents.ts +3 -3
  221. package/src/schemas/metadata/MetadataConstantValue.ts +1 -1
  222. package/src/schemas/metadata/MetadataMap.ts +48 -0
  223. package/src/schemas/metadata/MetadataNative.ts +44 -0
  224. package/src/schemas/metadata/MetadataProperty.ts +5 -0
  225. package/src/schemas/metadata/MetadataSet.ts +45 -0
  226. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  227. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  228. package/src/tags/Example.ts +24 -17
  229. package/src/tags/Examples.ts +16 -16
  230. package/src/tags/JsonSchemaPlugin.ts +8 -8
  231. package/src/tags/Sequence.ts +10 -0
  232. package/src/tags/TagBase.ts +82 -76
  233. package/src/tags/index.ts +1 -0
  234. package/lib/schemas/metadata/IMetadataEntry.d.ts +0 -5
  235. package/lib/schemas/metadata/IMetadataEntry.js.map +0 -1
  236. 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 { MetadataAlias } from "./MetadataAlias";
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: MetadataAlias[];
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
- MetadataAlias._From_without_value(alias),
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[][] | undefined;
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[][] | undefined;
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
+ }
@@ -1,17 +1,24 @@
1
- import { TagBase } from "./TagBase";
2
-
3
- export type Example<
4
- Value extends boolean | bigint | number | string | Array<unknown> | null,
5
- > = TagBase<{
6
- target: "boolean" | "bigint" | "number" | "string" | "array";
7
- kind: "example";
8
- value: Value;
9
- exclusive: true;
10
- schema: Value extends bigint
11
- ? { example: Numeric<Value> }
12
- : { example: Value };
13
- }>;
14
-
15
- type Numeric<T extends bigint> = `${T}` extends `${infer N extends number}`
16
- ? N
17
- : never;
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;
@@ -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
+ }>;
@@ -0,0 +1,10 @@
1
+ import { TagBase } from "./TagBase";
2
+
3
+ export type Sequence<N extends number> = TagBase<{
4
+ target: "boolean" | "bigint" | "number" | "string" | "array" | "object";
5
+ kind: "sequence";
6
+ value: N;
7
+ schema: {
8
+ "x-protobuf-sequence": N;
9
+ };
10
+ }>;