typia 7.0.0-dev.20241011 → 7.0.0-dev.20241012

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 (250) hide show
  1. package/lib/factories/MetadataCollection.d.ts +4 -4
  2. package/lib/factories/MetadataCollection.js +6 -4
  3. package/lib/factories/MetadataCollection.js.map +1 -1
  4. package/lib/factories/MetadataFactory.d.ts +2 -2
  5. package/lib/factories/MetadataFactory.js +8 -2
  6. package/lib/factories/MetadataFactory.js.map +1 -1
  7. package/lib/factories/MetadataTypeTagFactory.d.ts +2 -2
  8. package/lib/factories/MetadataTypeTagFactory.js +6 -6
  9. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  10. package/lib/factories/MetadataTypeTagSchemaFactory.d.ts +2 -2
  11. package/lib/factories/MetadataTypeTagSchemaFactory.js +1 -1
  12. package/lib/factories/MetadataTypeTagSchemaFactory.js.map +1 -1
  13. package/lib/factories/ProtobufFactory.js +12 -22
  14. package/lib/factories/ProtobufFactory.js.map +1 -1
  15. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +2 -2
  16. package/lib/factories/internal/metadata/iterate_metadata_collection.js +2 -1
  17. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  18. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -2
  19. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +5 -2
  20. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  21. package/lib/factories/internal/metadata/iterate_metadata_object.js +5 -1
  22. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata_sort.js +6 -2
  24. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  25. package/lib/internal/$ProtobufSizer.js +1 -8
  26. package/lib/internal/$ProtobufSizer.js.map +1 -1
  27. package/lib/json.d.ts +1 -1
  28. package/lib/module.d.ts +1 -1
  29. package/lib/module.js +1 -1
  30. package/lib/module.js.map +1 -1
  31. package/lib/programmers/CheckerProgrammer.d.ts +2 -2
  32. package/lib/programmers/CheckerProgrammer.js +5 -3
  33. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  34. package/lib/programmers/FeatureProgrammer.d.ts +5 -5
  35. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  36. package/lib/programmers/IsProgrammer.d.ts +2 -2
  37. package/lib/programmers/RandomProgrammer.js +1 -1
  38. package/lib/programmers/RandomProgrammer.js.map +1 -1
  39. package/lib/programmers/helpers/ProtobufUtil.d.ts +2 -2
  40. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  41. package/lib/programmers/helpers/PruneJoiner.d.ts +2 -2
  42. package/lib/programmers/helpers/RandomJoiner.d.ts +2 -2
  43. package/lib/programmers/helpers/UnionExplorer.d.ts +3 -3
  44. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  45. package/lib/programmers/helpers/UnionPredicator.d.ts +3 -3
  46. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  47. package/lib/programmers/http/HttpFormDataProgrammer.js +1 -1
  48. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  49. package/lib/programmers/http/HttpHeadersProgrammer.js +1 -1
  50. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  51. package/lib/programmers/http/HttpQueryProgrammer.js +2 -2
  52. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  53. package/lib/programmers/internal/application_union_discriminator.js +2 -2
  54. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  55. package/lib/programmers/internal/application_v30_alias.js +1 -1
  56. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  57. package/lib/programmers/internal/application_v30_schema.js +1 -1
  58. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  59. package/lib/programmers/internal/application_v31_alias.js +1 -1
  60. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  61. package/lib/programmers/internal/application_v31_schema.js +1 -1
  62. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  63. package/lib/programmers/internal/llm_schema_object.js +1 -1
  64. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  65. package/lib/programmers/internal/llm_schema_station.js +2 -2
  66. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  67. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  68. package/lib/programmers/json/JsonApplicationProgrammer.js +6 -5
  69. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  70. package/lib/programmers/json/JsonSchemasProgrammer.d.ts +1 -1
  71. package/lib/programmers/json/JsonStringifyProgrammer.js +3 -3
  72. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  73. package/lib/programmers/llm/LlmApplicationProgrammer.js +7 -6
  74. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  75. package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -1
  76. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  77. package/lib/programmers/misc/MiscCloneProgrammer.js +1 -1
  78. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  79. package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
  80. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  81. package/lib/programmers/notations/NotationGeneralProgrammer.js +1 -1
  82. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  83. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +6 -6
  84. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  85. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +1 -1
  86. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  87. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +3 -3
  88. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  89. package/lib/schemas/json/IJsonSchemaCollection.js +3 -0
  90. package/lib/schemas/json/IJsonSchemaCollection.js.map +1 -0
  91. package/lib/schemas/metadata/IMetadata.d.ts +4 -1
  92. package/lib/schemas/metadata/IMetadataArray.d.ts +1 -2
  93. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  94. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  95. package/lib/schemas/metadata/IMetadataObject.d.ts +2 -8
  96. package/lib/schemas/metadata/IMetadataObjectType.d.ts +11 -0
  97. package/lib/schemas/{json/IJsonSchemaList.js → metadata/IMetadataObjectType.js} +1 -1
  98. package/lib/schemas/metadata/IMetadataObjectType.js.map +1 -0
  99. package/lib/schemas/metadata/IMetadataTuple.d.ts +1 -2
  100. package/lib/schemas/metadata/Metadata.js +14 -15
  101. package/lib/schemas/metadata/Metadata.js.map +1 -1
  102. package/lib/schemas/metadata/MetadataArray.js +1 -1
  103. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  104. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  105. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  106. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  107. package/lib/schemas/metadata/MetadataObject.d.ts +8 -12
  108. package/lib/schemas/metadata/MetadataObject.js +44 -82
  109. package/lib/schemas/metadata/MetadataObject.js.map +1 -1
  110. package/lib/schemas/metadata/MetadataObjectType.d.ts +20 -0
  111. package/lib/schemas/metadata/MetadataObjectType.js +106 -0
  112. package/lib/schemas/metadata/MetadataObjectType.js.map +1 -0
  113. package/lib/schemas/metadata/MetadataTuple.js +1 -1
  114. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  115. package/lib/transformers/TransformerError.js.map +1 -1
  116. package/package.json +2 -2
  117. package/src/executable/TypiaGenerateWizard.ts +83 -83
  118. package/src/executable/TypiaSetupWizard.ts +174 -174
  119. package/src/executable/setup/ArgumentParser.ts +42 -42
  120. package/src/executable/setup/FileRetriever.ts +19 -19
  121. package/src/executable/setup/PackageManager.ts +87 -87
  122. package/src/factories/IdentifierFactory.ts +89 -89
  123. package/src/factories/MetadataCollection.ts +280 -278
  124. package/src/factories/MetadataFactory.ts +11 -5
  125. package/src/factories/MetadataTypeTagFactory.ts +386 -385
  126. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  127. package/src/factories/NumericRangeFactory.ts +72 -72
  128. package/src/factories/ProtobufFactory.ts +14 -28
  129. package/src/factories/StatementFactory.ts +90 -90
  130. package/src/factories/TemplateFactory.ts +64 -64
  131. package/src/factories/TypeFactory.ts +140 -140
  132. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  133. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  134. package/src/factories/internal/metadata/emplace_metadata_object.ts +2 -2
  135. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  136. package/src/factories/internal/metadata/explore_metadata.ts +30 -30
  137. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  138. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  139. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  140. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  141. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  142. package/src/factories/internal/metadata/iterate_metadata_collection.ts +4 -3
  143. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +2 -2
  144. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  145. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  146. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +219 -216
  147. package/src/factories/internal/metadata/iterate_metadata_map.ts +52 -52
  148. package/src/factories/internal/metadata/iterate_metadata_native.ts +236 -236
  149. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -27
  150. package/src/factories/internal/metadata/iterate_metadata_set.ts +39 -39
  151. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -83
  152. package/src/factories/internal/metadata/iterate_metadata_template.ts +42 -42
  153. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  154. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  155. package/src/internal/$ProtobufSizer.ts +1 -7
  156. package/src/json.ts +1 -1
  157. package/src/module.ts +1 -1
  158. package/src/programmers/CheckerProgrammer.ts +7 -5
  159. package/src/programmers/FeatureProgrammer.ts +9 -6
  160. package/src/programmers/IsProgrammer.ts +2 -2
  161. package/src/programmers/RandomProgrammer.ts +3 -3
  162. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  163. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  164. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  165. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  166. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  167. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  168. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  169. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  170. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  171. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  172. package/src/programmers/helpers/RandomJoiner.ts +2 -2
  173. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  174. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  175. package/src/programmers/helpers/UnionPredicator.ts +79 -77
  176. package/src/programmers/http/HttpFormDataProgrammer.ts +3 -3
  177. package/src/programmers/http/HttpHeadersProgrammer.ts +3 -3
  178. package/src/programmers/http/HttpQueryProgrammer.ts +4 -4
  179. package/src/programmers/internal/application_array.ts +56 -56
  180. package/src/programmers/internal/application_bigint.ts +25 -25
  181. package/src/programmers/internal/application_boolean.ts +25 -25
  182. package/src/programmers/internal/application_escaped.ts +96 -96
  183. package/src/programmers/internal/application_number.ts +25 -25
  184. package/src/programmers/internal/application_plugin.ts +19 -19
  185. package/src/programmers/internal/application_string.ts +25 -25
  186. package/src/programmers/internal/application_templates.ts +64 -64
  187. package/src/programmers/internal/application_union_discriminator.ts +35 -35
  188. package/src/programmers/internal/application_v30_alias.ts +59 -59
  189. package/src/programmers/internal/application_v30_native.ts +29 -29
  190. package/src/programmers/internal/application_v30_object.ts +165 -165
  191. package/src/programmers/internal/application_v30_schema.ts +220 -220
  192. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  193. package/src/programmers/internal/application_v31_alias.ts +47 -47
  194. package/src/programmers/internal/application_v31_constant.ts +29 -29
  195. package/src/programmers/internal/application_v31_native.ts +25 -25
  196. package/src/programmers/internal/application_v31_object.ts +147 -147
  197. package/src/programmers/internal/application_v31_schema.ts +215 -215
  198. package/src/programmers/internal/application_v31_tuple.ts +22 -22
  199. package/src/programmers/internal/check_array_length.ts +46 -46
  200. package/src/programmers/internal/check_bigint.ts +49 -49
  201. package/src/programmers/internal/check_everything.ts +23 -23
  202. package/src/programmers/internal/check_native.ts +27 -27
  203. package/src/programmers/internal/check_number.ts +111 -111
  204. package/src/programmers/internal/check_string.ts +49 -49
  205. package/src/programmers/internal/check_template.ts +48 -48
  206. package/src/programmers/internal/check_union_array_like.ts +334 -334
  207. package/src/programmers/internal/decode_union_object.ts +116 -116
  208. package/src/programmers/internal/feature_object_entries.ts +2 -2
  209. package/src/programmers/internal/llm_schema_array.ts +22 -22
  210. package/src/programmers/internal/llm_schema_escaped.ts +84 -84
  211. package/src/programmers/internal/llm_schema_object.ts +132 -132
  212. package/src/programmers/internal/llm_schema_station.ts +190 -190
  213. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  214. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  215. package/src/programmers/internal/prune_object_properties.ts +2 -2
  216. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  217. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  218. package/src/programmers/internal/template_to_pattern.ts +23 -23
  219. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  220. package/src/programmers/json/JsonApplicationProgrammer.ts +3 -3
  221. package/src/programmers/json/JsonSchemasProgrammer.ts +1 -1
  222. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  223. package/src/programmers/llm/LlmApplicationProgrammer.ts +4 -4
  224. package/src/programmers/llm/LlmSchemaProgrammer.ts +1 -1
  225. package/src/programmers/misc/MiscCloneProgrammer.ts +3 -3
  226. package/src/programmers/misc/MiscPruneProgrammer.ts +3 -3
  227. package/src/programmers/notations/NotationGeneralProgrammer.ts +3 -3
  228. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +11 -11
  229. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +8 -8
  230. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +201 -201
  231. package/src/schemas/json/{IJsonSchemaList.ts → IJsonSchemaCollection.ts} +22 -22
  232. package/src/schemas/metadata/IMetadata.ts +4 -1
  233. package/src/schemas/metadata/IMetadataArray.ts +1 -2
  234. package/src/schemas/metadata/IMetadataComponents.ts +2 -2
  235. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  236. package/src/schemas/metadata/IMetadataObject.ts +6 -13
  237. package/src/schemas/metadata/IMetadataObjectType.ts +13 -0
  238. package/src/schemas/metadata/IMetadataTuple.ts +1 -2
  239. package/src/schemas/metadata/Metadata.ts +616 -616
  240. package/src/schemas/metadata/MetadataArray.ts +1 -1
  241. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  242. package/src/schemas/metadata/MetadataObject.ts +48 -139
  243. package/src/schemas/metadata/MetadataObjectType.ts +149 -0
  244. package/src/schemas/metadata/MetadataTuple.ts +1 -1
  245. package/src/transformers/TransformerError.ts +8 -7
  246. package/src/transformers/features/json/JsonSchemasTransformer.ts +1 -1
  247. package/src/utils/MapUtil.ts +14 -14
  248. package/src/utils/NameEncoder.ts +32 -32
  249. package/lib/schemas/json/IJsonSchemaList.js.map +0 -1
  250. /package/lib/schemas/json/{IJsonSchemaList.d.ts → IJsonSchemaCollection.d.ts} +0 -0
@@ -1,83 +1,87 @@
1
- import { Metadata } from "../../../schemas/metadata/Metadata";
2
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
3
-
4
- import { MetadataCollection } from "../../MetadataCollection";
5
-
6
- export const iterate_metadata_sort = (props: {
7
- collection: MetadataCollection;
8
- metadata: Metadata;
9
- }) => {
10
- const visited: Set<Metadata> = new Set();
11
- const next = (metadata: Metadata) =>
12
- iterate({
13
- visited,
14
- collection: props.collection,
15
- metadata,
16
- });
17
- for (const array of props.collection.arrays()) next(array.value);
18
- for (const tuple of props.collection.tuples())
19
- for (const element of tuple.elements) next(element);
20
- for (const object of props.collection.objects())
21
- for (const property of object.properties) next(property.value);
22
- next(props.metadata);
23
- };
24
-
25
- const iterate = (props: {
26
- visited: Set<Metadata>;
27
- collection: MetadataCollection;
28
- metadata: Metadata;
29
- }) => {
30
- if (props.visited.has(props.metadata)) return;
31
- props.visited.add(props.metadata);
32
-
33
- const next = (metadata: Metadata) =>
34
- iterate({
35
- ...props,
36
- metadata,
37
- });
38
-
39
- // ITERATE CHILDREN
40
- for (const map of props.metadata.maps) next(map.value);
41
- for (const set of props.metadata.sets) next(set);
42
- if (props.metadata.escaped !== null) next(props.metadata.escaped.returns);
43
- if (props.metadata.rest !== null) next(props.metadata.rest);
44
-
45
- // SORT OBJECTS
46
- if (props.metadata.objects.length > 1) {
47
- props.metadata.objects.sort((x, y) =>
48
- MetadataObject.covers(x, y) ? -1 : MetadataObject.covers(y, x) ? 1 : 0,
49
- );
50
- props.metadata.union_index = props.collection.getUnionIndex(props.metadata);
51
- }
52
-
53
- // SORT ARRAYS AND TUPLES
54
- if (props.metadata.arrays.length > 1)
55
- props.metadata.arrays.sort((x, y) =>
56
- Metadata.covers(x.type.value, y.type.value)
57
- ? -1
58
- : Metadata.covers(y.type.value, x.type.value)
59
- ? 1
60
- : 0,
61
- );
62
- if (props.metadata.tuples.length > 1)
63
- props.metadata.tuples.sort((x, y) => {
64
- const xt = Metadata.initialize();
65
- const yt = Metadata.initialize();
66
-
67
- xt.tuples.push(x);
68
- yt.tuples.push(y);
69
-
70
- return Metadata.covers(xt, yt) ? -1 : Metadata.covers(yt, xt) ? 1 : 0;
71
- });
72
-
73
- // SORT CONSTANT VALUES
74
- for (const constant of props.metadata.constants)
75
- if (constant.type === "string") constant.values.sort();
76
- else if (constant.type === "number")
77
- constant.values.sort((a, b) => (a.value as number) - (b.value as number));
78
- else if (constant.type === "bigint")
79
- constant.values.sort((a, b) =>
80
- (a.value as bigint) < (b.value as bigint) ? -1 : 1,
81
- );
82
- else constant.values.sort((a, _b) => (a.value === false ? -1 : 1));
83
- };
1
+ import { Metadata } from "../../../schemas/metadata/Metadata";
2
+ import { MetadataObjectType } from "../../../schemas/metadata/MetadataObjectType";
3
+
4
+ import { MetadataCollection } from "../../MetadataCollection";
5
+
6
+ export const iterate_metadata_sort = (props: {
7
+ collection: MetadataCollection;
8
+ metadata: Metadata;
9
+ }) => {
10
+ const visited: Set<Metadata> = new Set();
11
+ const next = (metadata: Metadata) =>
12
+ iterate({
13
+ visited,
14
+ collection: props.collection,
15
+ metadata,
16
+ });
17
+ for (const array of props.collection.arrays()) next(array.value);
18
+ for (const tuple of props.collection.tuples())
19
+ for (const element of tuple.elements) next(element);
20
+ for (const object of props.collection.objects())
21
+ for (const property of object.properties) next(property.value);
22
+ next(props.metadata);
23
+ };
24
+
25
+ const iterate = (props: {
26
+ visited: Set<Metadata>;
27
+ collection: MetadataCollection;
28
+ metadata: Metadata;
29
+ }) => {
30
+ if (props.visited.has(props.metadata)) return;
31
+ props.visited.add(props.metadata);
32
+
33
+ const next = (metadata: Metadata) =>
34
+ iterate({
35
+ ...props,
36
+ metadata,
37
+ });
38
+
39
+ // ITERATE CHILDREN
40
+ for (const map of props.metadata.maps) next(map.value);
41
+ for (const set of props.metadata.sets) next(set);
42
+ if (props.metadata.escaped !== null) next(props.metadata.escaped.returns);
43
+ if (props.metadata.rest !== null) next(props.metadata.rest);
44
+
45
+ // SORT OBJECTS
46
+ if (props.metadata.objects.length > 1) {
47
+ props.metadata.objects.sort((x, y) =>
48
+ MetadataObjectType.covers(x.type, y.type)
49
+ ? -1
50
+ : MetadataObjectType.covers(y.type, x.type)
51
+ ? 1
52
+ : 0,
53
+ );
54
+ props.metadata.union_index = props.collection.getUnionIndex(props.metadata);
55
+ }
56
+
57
+ // SORT ARRAYS AND TUPLES
58
+ if (props.metadata.arrays.length > 1)
59
+ props.metadata.arrays.sort((x, y) =>
60
+ Metadata.covers(x.type.value, y.type.value)
61
+ ? -1
62
+ : Metadata.covers(y.type.value, x.type.value)
63
+ ? 1
64
+ : 0,
65
+ );
66
+ if (props.metadata.tuples.length > 1)
67
+ props.metadata.tuples.sort((x, y) => {
68
+ const xt = Metadata.initialize();
69
+ const yt = Metadata.initialize();
70
+
71
+ xt.tuples.push(x);
72
+ yt.tuples.push(y);
73
+
74
+ return Metadata.covers(xt, yt) ? -1 : Metadata.covers(yt, xt) ? 1 : 0;
75
+ });
76
+
77
+ // SORT CONSTANT VALUES
78
+ for (const constant of props.metadata.constants)
79
+ if (constant.type === "string") constant.values.sort();
80
+ else if (constant.type === "number")
81
+ constant.values.sort((a, b) => (a.value as number) - (b.value as number));
82
+ else if (constant.type === "bigint")
83
+ constant.values.sort((a, b) =>
84
+ (a.value as bigint) < (b.value as bigint) ? -1 : 1,
85
+ );
86
+ else constant.values.sort((a, _b) => (a.value === false ? -1 : 1));
87
+ };
@@ -1,42 +1,42 @@
1
- import ts from "typescript";
2
-
3
- import { Metadata } from "../../../schemas/metadata/Metadata";
4
- import { MetadataTemplate } from "../../../schemas/metadata/MetadataTemplate";
5
-
6
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
7
- import { MetadataHelper } from "./MetadataHelper";
8
- import { explore_metadata } from "./explore_metadata";
9
-
10
- export const iterate_metadata_template = (
11
- props: IMetadataIteratorProps,
12
- ): boolean => {
13
- const filter = (flag: ts.TypeFlags) => (props.type.getFlags() & flag) !== 0;
14
- if (!filter(ts.TypeFlags.TemplateLiteral)) return false;
15
-
16
- const template: ts.TemplateLiteralType = props.type as ts.TemplateLiteralType;
17
- const row: Metadata[] = [];
18
-
19
- template.texts.forEach((text, i) => {
20
- // TEXT LITERAL TYPE
21
- if (text !== "") row.push(MetadataHelper.literal_to_metadata(text));
22
-
23
- // BINDED TEMPLATE TYPE
24
- const binded: ts.Type | undefined = template.types[i];
25
- if (binded)
26
- row.push(
27
- explore_metadata({
28
- ...props,
29
- type: binded,
30
- explore: {
31
- ...props.explore,
32
- escaped: false,
33
- aliased: false,
34
- },
35
- }),
36
- );
37
- });
38
- props.metadata.templates.push(
39
- MetadataTemplate.create({ row, tags: undefined }),
40
- );
41
- return true;
42
- };
1
+ import ts from "typescript";
2
+
3
+ import { Metadata } from "../../../schemas/metadata/Metadata";
4
+ import { MetadataTemplate } from "../../../schemas/metadata/MetadataTemplate";
5
+
6
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
7
+ import { MetadataHelper } from "./MetadataHelper";
8
+ import { explore_metadata } from "./explore_metadata";
9
+
10
+ export const iterate_metadata_template = (
11
+ props: IMetadataIteratorProps,
12
+ ): boolean => {
13
+ const filter = (flag: ts.TypeFlags) => (props.type.getFlags() & flag) !== 0;
14
+ if (!filter(ts.TypeFlags.TemplateLiteral)) return false;
15
+
16
+ const template: ts.TemplateLiteralType = props.type as ts.TemplateLiteralType;
17
+ const row: Metadata[] = [];
18
+
19
+ template.texts.forEach((text, i) => {
20
+ // TEXT LITERAL TYPE
21
+ if (text !== "") row.push(MetadataHelper.literal_to_metadata(text));
22
+
23
+ // BINDED TEMPLATE TYPE
24
+ const binded: ts.Type | undefined = template.types[i];
25
+ if (binded)
26
+ row.push(
27
+ explore_metadata({
28
+ ...props,
29
+ type: binded,
30
+ explore: {
31
+ ...props.explore,
32
+ escaped: false,
33
+ aliased: false,
34
+ },
35
+ }),
36
+ );
37
+ });
38
+ props.metadata.templates.push(
39
+ MetadataTemplate.create({ row, tags: undefined }),
40
+ );
41
+ return true;
42
+ };
@@ -1,26 +1,26 @@
1
- import ts from "typescript";
2
-
3
- import { MetadataTuple } from "../../../schemas/metadata/MetadataTuple";
4
- import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
-
6
- import { ArrayUtil } from "../../../utils/ArrayUtil";
7
-
8
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
9
- import { emplace_metadata_tuple } from "./emplace_metadata_tuple";
10
-
11
- export const iterate_metadata_tuple = (
12
- props: IMetadataIteratorProps<ts.TupleType>,
13
- ): boolean => {
14
- if (!props.checker.isTupleType(props.type)) return false;
15
-
16
- const tupleType: MetadataTupleType = emplace_metadata_tuple(props);
17
- ArrayUtil.add(
18
- props.metadata.tuples,
19
- MetadataTuple.create({
20
- type: tupleType,
21
- tags: [],
22
- }),
23
- (elem) => elem.type.name === tupleType.name,
24
- );
25
- return true;
26
- };
1
+ import ts from "typescript";
2
+
3
+ import { MetadataTuple } from "../../../schemas/metadata/MetadataTuple";
4
+ import { MetadataTupleType } from "../../../schemas/metadata/MetadataTupleType";
5
+
6
+ import { ArrayUtil } from "../../../utils/ArrayUtil";
7
+
8
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
9
+ import { emplace_metadata_tuple } from "./emplace_metadata_tuple";
10
+
11
+ export const iterate_metadata_tuple = (
12
+ props: IMetadataIteratorProps<ts.TupleType>,
13
+ ): boolean => {
14
+ if (!props.checker.isTupleType(props.type)) return false;
15
+
16
+ const tupleType: MetadataTupleType = emplace_metadata_tuple(props);
17
+ ArrayUtil.add(
18
+ props.metadata.tuples,
19
+ MetadataTuple.create({
20
+ type: tupleType,
21
+ tags: [],
22
+ }),
23
+ (elem) => elem.type.name === tupleType.name,
24
+ );
25
+ return true;
26
+ };
@@ -1,19 +1,19 @@
1
- import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
2
- import { iterate_metadata } from "./iterate_metadata";
3
-
4
- export const iterate_metadata_union = (
5
- props: IMetadataIteratorProps,
6
- ): boolean => {
7
- if (!props.type.isUnion()) return false;
8
- props.type.types.forEach((t) =>
9
- iterate_metadata({
10
- ...props,
11
- type: t,
12
- explore: {
13
- ...props.explore,
14
- aliased: false,
15
- },
16
- }),
17
- );
18
- return true;
19
- };
1
+ import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
2
+ import { iterate_metadata } from "./iterate_metadata";
3
+
4
+ export const iterate_metadata_union = (
5
+ props: IMetadataIteratorProps,
6
+ ): boolean => {
7
+ if (!props.type.isUnion()) return false;
8
+ props.type.types.forEach((t) =>
9
+ iterate_metadata({
10
+ ...props,
11
+ type: t,
12
+ explore: {
13
+ ...props.explore,
14
+ aliased: false,
15
+ },
16
+ }),
17
+ );
18
+ return true;
19
+ };
@@ -142,10 +142,4 @@ export class $ProtobufSizer implements $IProtobufWriter {
142
142
  }
143
143
  }
144
144
 
145
- const strlen = (s: string): number => {
146
- let b: number;
147
- let i: number;
148
- let c: number;
149
- for (b = i = 0; (c = s.charCodeAt(i++)); b += c >> 11 ? 3 : c >> 7 ? 2 : 1);
150
- return b;
151
- };
145
+ const strlen = (str: string): number => new Blob([str]).size;
package/src/json.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { IJsonApplication } from "./schemas/json/IJsonApplication";
2
- import { IJsonSchemaCollection } from "./schemas/json/IJsonSchemaList";
2
+ import { IJsonSchemaCollection } from "./schemas/json/IJsonSchemaCollection";
3
3
 
4
4
  import { IValidation } from "./IValidation";
5
5
  import { Primitive } from "./Primitive";
package/src/module.ts CHANGED
@@ -16,7 +16,7 @@ export * as tags from "./tags";
16
16
 
17
17
  export * from "./schemas/metadata/IJsDocTagInfo";
18
18
  export * from "./schemas/json/IJsonApplication";
19
- export * from "./schemas/json/IJsonSchemaList";
19
+ export * from "./schemas/json/IJsonSchemaCollection";
20
20
  export * from "./AssertionGuard";
21
21
  export * from "./IRandomGenerator";
22
22
  export * from "./IValidation";
@@ -11,7 +11,7 @@ import { ValueFactory } from "../factories/ValueFactory";
11
11
  import { Metadata } from "../schemas/metadata/Metadata";
12
12
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
13
13
  import { MetadataConstant } from "../schemas/metadata/MetadataConstant";
14
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
14
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
15
15
  import { MetadataTuple } from "../schemas/metadata/MetadataTuple";
16
16
  import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
17
17
 
@@ -810,13 +810,15 @@ export namespace CheckerProgrammer {
810
810
  head: ExpressionFactory.isObject({
811
811
  checkNull: true,
812
812
  checkArray: props.metadata.objects.some((obj) =>
813
- obj.properties.every(
813
+ obj.type.properties.every(
814
814
  (prop) => !prop.key.isSoleLiteral() || !prop.value.isRequired(),
815
815
  ),
816
816
  ),
817
817
  input: props.input,
818
818
  }),
819
- expected: props.metadata.objects.map((obj) => obj.name).join(" | "),
819
+ expected: props.metadata.objects
820
+ .map((obj) => obj.type.name)
821
+ .join(" | "),
820
822
  body: explore_objects({
821
823
  config: props.config,
822
824
  functor: props.functor,
@@ -944,7 +946,7 @@ export namespace CheckerProgrammer {
944
946
  export const decode_object = (props: {
945
947
  config: IConfig;
946
948
  functor: FunctionProgrammer;
947
- object: MetadataObject;
949
+ object: MetadataObjectType;
948
950
  input: ts.Expression;
949
951
  explore: IExplore;
950
952
  }) => {
@@ -1581,7 +1583,7 @@ export namespace CheckerProgrammer {
1581
1583
  ? decode_object({
1582
1584
  config: props.config,
1583
1585
  functor: props.functor,
1584
- object: props.metadata.objects[0]!,
1586
+ object: props.metadata.objects[0]!.type,
1585
1587
  input: props.input,
1586
1588
  explore: props.explore,
1587
1589
  })
@@ -8,7 +8,7 @@ import { ValueFactory } from "../factories/ValueFactory";
8
8
 
9
9
  import { Metadata } from "../schemas/metadata/Metadata";
10
10
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
11
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
11
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
12
12
 
13
13
  import { ITypiaContext } from "../transformers/ITypiaContext";
14
14
 
@@ -94,7 +94,7 @@ export namespace FeatureProgrammer {
94
94
  */
95
95
  decoder: (props: {
96
96
  input: ts.Expression;
97
- object: MetadataObject;
97
+ object: MetadataObjectType;
98
98
  explore: IExplore;
99
99
  }) => ts.Expression;
100
100
 
@@ -104,7 +104,7 @@ export namespace FeatureProgrammer {
104
104
  joiner(props: {
105
105
  entries: IExpressionEntry<Output>[];
106
106
  input?: ts.Expression;
107
- object?: MetadataObject;
107
+ object?: MetadataObjectType;
108
108
  }): ts.ConciseBody;
109
109
 
110
110
  /**
@@ -114,7 +114,7 @@ export namespace FeatureProgrammer {
114
114
  * the `decoder` function of the specified object type.
115
115
  */
116
116
  unionizer: (props: {
117
- objects: MetadataObject[];
117
+ objects: MetadataObjectType[];
118
118
  input: ts.Expression;
119
119
  explore: IExplore;
120
120
  }) => ts.Expression;
@@ -440,7 +440,10 @@ export namespace FeatureProgrammer {
440
440
  }),
441
441
  );
442
442
 
443
- const write_union = (props: { config: IConfig; objects: MetadataObject[] }) =>
443
+ const write_union = (props: {
444
+ config: IConfig;
445
+ objects: MetadataObjectType[];
446
+ }) =>
444
447
  ts.factory.createArrowFunction(
445
448
  undefined,
446
449
  undefined,
@@ -521,7 +524,7 @@ export namespace FeatureProgrammer {
521
524
  export const decode_object = (props: {
522
525
  config: Pick<IConfig, "trace" | "path" | "prefix">;
523
526
  functor: FunctionProgrammer;
524
- object: MetadataObject;
527
+ object: MetadataObjectType;
525
528
  input: ts.Expression;
526
529
  explore: IExplore;
527
530
  }) =>
@@ -6,7 +6,7 @@ import { MetadataCollection } from "../factories/MetadataCollection";
6
6
  import { ValueFactory } from "../factories/ValueFactory";
7
7
 
8
8
  import { Metadata } from "../schemas/metadata/Metadata";
9
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
9
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
10
10
 
11
11
  import { IProgrammerProps } from "../transformers/IProgrammerProps";
12
12
  import { ITypiaContext } from "../transformers/ITypiaContext";
@@ -237,7 +237,7 @@ export namespace IsProgrammer {
237
237
  export const decode_object = (props: {
238
238
  context: ITypiaContext;
239
239
  functor: FunctionProgrammer;
240
- object: MetadataObject;
240
+ object: MetadataObjectType;
241
241
  input: ts.Expression;
242
242
  explore: FeatureProgrammer.IExplore;
243
243
  }) =>
@@ -15,7 +15,7 @@ import { Metadata } from "../schemas/metadata/Metadata";
15
15
  import { MetadataArray } from "../schemas/metadata/MetadataArray";
16
16
  import { MetadataArrayType } from "../schemas/metadata/MetadataArrayType";
17
17
  import { MetadataAtomic } from "../schemas/metadata/MetadataAtomic";
18
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
18
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
19
19
  import { MetadataTemplate } from "../schemas/metadata/MetadataTemplate";
20
20
  import { MetadataTuple } from "../schemas/metadata/MetadataTuple";
21
21
  import { MetadataTupleType } from "../schemas/metadata/MetadataTupleType";
@@ -408,7 +408,7 @@ export namespace RandomProgrammer {
408
408
  expressions.push(
409
409
  decode_object({
410
410
  ...props,
411
- object,
411
+ object: object.type,
412
412
  }),
413
413
  );
414
414
  for (const name of props.metadata.natives)
@@ -661,7 +661,7 @@ export namespace RandomProgrammer {
661
661
  const decode_object = (props: {
662
662
  functor: FunctionProgrammer;
663
663
  explore: IExplore;
664
- object: MetadataObject;
664
+ object: MetadataObjectType;
665
665
  }) =>
666
666
  ts.factory.createCallExpression(
667
667
  ts.factory.createIdentifier(