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,82 +1,82 @@
1
- import { Metadata } from "../schemas/metadata/Metadata";
2
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
3
-
4
- export namespace MetadataTypeTagSchemaFactory {
5
- export const object = (props: {
6
- report: (msg: string) => false;
7
- object: MetadataObject;
8
- }): object | undefined => {
9
- if (props.object.recursive) {
10
- props.report(`${props.object.name} has recursive type`);
11
- return undefined;
12
- }
13
- const output: any = {};
14
- for (const p of props.object.properties) {
15
- const key: string | null = p.key.getSoleLiteral()!;
16
- if (key === null) {
17
- props.report(
18
- `${props.object.name} has non-literal key type: ${p.key.getName()}`,
19
- );
20
- continue;
21
- }
22
- output[key] = iterate({
23
- report: props.report,
24
- object: props.object,
25
- key,
26
- metadata: p.value,
27
- });
28
- }
29
- return output;
30
- };
31
-
32
- const iterate = (props: {
33
- report: (message: string) => false;
34
- object: MetadataObject;
35
- key: string;
36
- metadata: Metadata;
37
- }): any => {
38
- if (
39
- props.metadata.any ||
40
- props.metadata.atomics.length ||
41
- props.metadata.arrays.length ||
42
- props.metadata.natives.length ||
43
- props.metadata.functions.length
44
- )
45
- props.report(`${props.object.name}.${props.key} has non-literal type`);
46
- else if (props.metadata.size() > 1)
47
- props.report(`${props.object.name}.${props.key} has union type`);
48
- else if (props.metadata.size() === 0)
49
- if (props.metadata.nullable) return null;
50
- else if (props.metadata.isRequired() === true)
51
- props.report(`${props.object.name}.${props.key} has non-literal type`);
52
- else return undefined;
53
- else if (props.metadata.constants.length)
54
- return props.metadata.constants[0]!.values[0]!.value;
55
- else if (props.metadata.tuples.length) {
56
- const tuple = props.metadata.tuples[0]!;
57
- if (tuple.type.isRest())
58
- props.report(`${props.object.name}.${props.key} has rest tuple type`);
59
- else if (tuple.type.recursive)
60
- props.report(
61
- `${props.object.name}.${props.key} has recursive tuple type`,
62
- );
63
- else if (tuple.type.elements.some((e) => e.required === false))
64
- props.report(
65
- `${props.object.name}.${props.key} has optional tuple type`,
66
- );
67
- return tuple.type.elements.map((elem) =>
68
- iterate({
69
- report: props.report,
70
- object: props.object,
71
- key: props.key,
72
- metadata: elem,
73
- }),
74
- );
75
- } else if (props.metadata.objects.length)
76
- return object({
77
- report: props.report,
78
- object: props.metadata.objects[0]!,
79
- });
80
- else props.report(`${props.object.name}.${props.key} has non-literal type`);
81
- };
82
- }
1
+ import { Metadata } from "../schemas/metadata/Metadata";
2
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
3
+
4
+ export namespace MetadataTypeTagSchemaFactory {
5
+ export const object = (props: {
6
+ report: (msg: string) => false;
7
+ object: MetadataObjectType;
8
+ }): object | undefined => {
9
+ if (props.object.recursive) {
10
+ props.report(`${props.object.name} has recursive type`);
11
+ return undefined;
12
+ }
13
+ const output: any = {};
14
+ for (const p of props.object.properties) {
15
+ const key: string | null = p.key.getSoleLiteral()!;
16
+ if (key === null) {
17
+ props.report(
18
+ `${props.object.name} has non-literal key type: ${p.key.getName()}`,
19
+ );
20
+ continue;
21
+ }
22
+ output[key] = iterate({
23
+ report: props.report,
24
+ object: props.object,
25
+ key,
26
+ metadata: p.value,
27
+ });
28
+ }
29
+ return output;
30
+ };
31
+
32
+ const iterate = (props: {
33
+ report: (message: string) => false;
34
+ object: MetadataObjectType;
35
+ key: string;
36
+ metadata: Metadata;
37
+ }): any => {
38
+ if (
39
+ props.metadata.any ||
40
+ props.metadata.atomics.length ||
41
+ props.metadata.arrays.length ||
42
+ props.metadata.natives.length ||
43
+ props.metadata.functions.length
44
+ )
45
+ props.report(`${props.object.name}.${props.key} has non-literal type`);
46
+ else if (props.metadata.size() > 1)
47
+ props.report(`${props.object.name}.${props.key} has union type`);
48
+ else if (props.metadata.size() === 0)
49
+ if (props.metadata.nullable) return null;
50
+ else if (props.metadata.isRequired() === true)
51
+ props.report(`${props.object.name}.${props.key} has non-literal type`);
52
+ else return undefined;
53
+ else if (props.metadata.constants.length)
54
+ return props.metadata.constants[0]!.values[0]!.value;
55
+ else if (props.metadata.tuples.length) {
56
+ const tuple = props.metadata.tuples[0]!;
57
+ if (tuple.type.isRest())
58
+ props.report(`${props.object.name}.${props.key} has rest tuple type`);
59
+ else if (tuple.type.recursive)
60
+ props.report(
61
+ `${props.object.name}.${props.key} has recursive tuple type`,
62
+ );
63
+ else if (tuple.type.elements.some((e) => e.required === false))
64
+ props.report(
65
+ `${props.object.name}.${props.key} has optional tuple type`,
66
+ );
67
+ return tuple.type.elements.map((elem) =>
68
+ iterate({
69
+ report: props.report,
70
+ object: props.object,
71
+ key: props.key,
72
+ metadata: elem,
73
+ }),
74
+ );
75
+ } else if (props.metadata.objects.length)
76
+ return object({
77
+ report: props.report,
78
+ object: props.metadata.objects[0]!.type,
79
+ });
80
+ else props.report(`${props.object.name}.${props.key} has non-literal type`);
81
+ };
82
+ }
@@ -1,72 +1,72 @@
1
- import ts from "typescript";
2
-
3
- import { ProtobufAtomic } from "../typings/ProtobufAtomic";
4
-
5
- import { ExpressionFactory } from "./ExpressionFactory";
6
-
7
- export namespace NumericRangeFactory {
8
- export const number = (
9
- type: ProtobufAtomic.Numeric,
10
- input: ts.Expression,
11
- ): ts.Expression => NumberPredicator[type](input);
12
-
13
- export const bigint = (
14
- type: ProtobufAtomic.BigNumeric,
15
- input: ts.Expression,
16
- ): ts.Expression => BigIntPredicator[type](input);
17
- }
18
-
19
- namespace NumberPredicator {
20
- export const int32 = (input: ts.Expression) =>
21
- ts.factory.createLogicalAnd(
22
- integer(input),
23
- between("-2147483648", "2147483647")(input),
24
- );
25
- export const uint32 = (input: ts.Expression) =>
26
- ts.factory.createLogicalAnd(
27
- integer(input),
28
- between("0", "4294967295")(input),
29
- );
30
- export const int64 = (input: ts.Expression) =>
31
- ts.factory.createLogicalAnd(
32
- integer(input),
33
- between("-9223372036854775808", "9223372036854775807")(input),
34
- );
35
- export const uint64 = (input: ts.Expression) =>
36
- ts.factory.createLogicalAnd(
37
- integer(input),
38
- between("0", "18446744073709551615")(input),
39
- );
40
- export const float = (input: ts.Expression) =>
41
- between("-1.175494351e38", "3.4028235e38")(input);
42
- export const double = () => ts.factory.createTrue();
43
- }
44
-
45
- namespace BigIntPredicator {
46
- export const int64 = () => ts.factory.createTrue();
47
- export const uint64 = (input: ts.Expression) =>
48
- ts.factory.createLessThanEquals(
49
- ts.factory.createCallExpression(
50
- ts.factory.createIdentifier("BigInt"),
51
- undefined,
52
- [ExpressionFactory.number(0)],
53
- ),
54
- input,
55
- );
56
- }
57
-
58
- const integer = (input: ts.Expression) =>
59
- ts.factory.createStrictEquality(
60
- ts.factory.createCallExpression(
61
- ts.factory.createIdentifier("Math.floor"),
62
- undefined,
63
- [input],
64
- ),
65
- input,
66
- );
67
-
68
- const between = (x: string, y: string) => (input: ts.Expression) =>
69
- ts.factory.createLogicalAnd(
70
- ts.factory.createLessThanEquals(ts.factory.createIdentifier(x), input),
71
- ts.factory.createLessThanEquals(input, ts.factory.createIdentifier(y)),
72
- );
1
+ import ts from "typescript";
2
+
3
+ import { ProtobufAtomic } from "../typings/ProtobufAtomic";
4
+
5
+ import { ExpressionFactory } from "./ExpressionFactory";
6
+
7
+ export namespace NumericRangeFactory {
8
+ export const number = (
9
+ type: ProtobufAtomic.Numeric,
10
+ input: ts.Expression,
11
+ ): ts.Expression => NumberPredicator[type](input);
12
+
13
+ export const bigint = (
14
+ type: ProtobufAtomic.BigNumeric,
15
+ input: ts.Expression,
16
+ ): ts.Expression => BigIntPredicator[type](input);
17
+ }
18
+
19
+ namespace NumberPredicator {
20
+ export const int32 = (input: ts.Expression) =>
21
+ ts.factory.createLogicalAnd(
22
+ integer(input),
23
+ between("-2147483648", "2147483647")(input),
24
+ );
25
+ export const uint32 = (input: ts.Expression) =>
26
+ ts.factory.createLogicalAnd(
27
+ integer(input),
28
+ between("0", "4294967295")(input),
29
+ );
30
+ export const int64 = (input: ts.Expression) =>
31
+ ts.factory.createLogicalAnd(
32
+ integer(input),
33
+ between("-9223372036854775808", "9223372036854775807")(input),
34
+ );
35
+ export const uint64 = (input: ts.Expression) =>
36
+ ts.factory.createLogicalAnd(
37
+ integer(input),
38
+ between("0", "18446744073709551615")(input),
39
+ );
40
+ export const float = (input: ts.Expression) =>
41
+ between("-1.175494351e38", "3.4028235e38")(input);
42
+ export const double = () => ts.factory.createTrue();
43
+ }
44
+
45
+ namespace BigIntPredicator {
46
+ export const int64 = () => ts.factory.createTrue();
47
+ export const uint64 = (input: ts.Expression) =>
48
+ ts.factory.createLessThanEquals(
49
+ ts.factory.createCallExpression(
50
+ ts.factory.createIdentifier("BigInt"),
51
+ undefined,
52
+ [ExpressionFactory.number(0)],
53
+ ),
54
+ input,
55
+ );
56
+ }
57
+
58
+ const integer = (input: ts.Expression) =>
59
+ ts.factory.createStrictEquality(
60
+ ts.factory.createCallExpression(
61
+ ts.factory.createIdentifier("Math.floor"),
62
+ undefined,
63
+ [input],
64
+ ),
65
+ input,
66
+ );
67
+
68
+ const between = (x: string, y: string) => (input: ts.Expression) =>
69
+ ts.factory.createLogicalAnd(
70
+ ts.factory.createLessThanEquals(ts.factory.createIdentifier(x), input),
71
+ ts.factory.createLessThanEquals(input, ts.factory.createIdentifier(y)),
72
+ );
@@ -1,7 +1,7 @@
1
1
  import ts from "typescript";
2
2
 
3
3
  import { Metadata } from "../schemas/metadata/Metadata";
4
- import { MetadataObject } from "../schemas/metadata/MetadataObject";
4
+ import { MetadataObjectType } from "../schemas/metadata/MetadataObjectType";
5
5
 
6
6
  import { ProtobufUtil } from "../programmers/helpers/ProtobufUtil";
7
7
 
@@ -9,8 +9,6 @@ import { TransformerError } from "../transformers/TransformerError";
9
9
 
10
10
  import { ValidationPipe } from "../typings/ValidationPipe";
11
11
 
12
- import { Escaper } from "../utils/Escaper";
13
-
14
12
  import { MetadataCollection } from "./MetadataCollection";
15
13
  import { MetadataFactory } from "./MetadataFactory";
16
14
 
@@ -55,7 +53,7 @@ export namespace ProtobufFactory {
55
53
  const onlyObject: boolean =
56
54
  meta.size() === 1 &&
57
55
  meta.objects.length === 1 &&
58
- meta.objects[0]!.properties.every((p) => p.key.isSoleLiteral()) &&
56
+ meta.objects[0]!.type.properties.every((p) => p.key.isSoleLiteral()) &&
59
57
  meta.isRequired() === true &&
60
58
  meta.nullable === false;
61
59
  if (onlyObject === false)
@@ -135,7 +133,7 @@ export namespace ProtobufFactory {
135
133
  a.type.value.maps.length ||
136
134
  (a.type.value.objects.length &&
137
135
  a.type.value.objects.some(
138
- (o) => ProtobufUtil.isStaticObject(o) === false,
136
+ (o) => ProtobufUtil.isStaticObject(o.type) === false,
139
137
  )),
140
138
  )
141
139
  )
@@ -149,7 +147,7 @@ export namespace ProtobufFactory {
149
147
  // EMPTY PROPERTY
150
148
  if (
151
149
  meta.objects.length &&
152
- meta.objects.some((obj) => obj.properties.length === 0)
150
+ meta.objects.some((obj) => obj.type.properties.length === 0)
153
151
  )
154
152
  noSupport("empty object type");
155
153
  // MULTIPLE DYNAMIC KEY TYPED PROPERTIES
@@ -157,7 +155,7 @@ export namespace ProtobufFactory {
157
155
  meta.objects.length &&
158
156
  meta.objects.some(
159
157
  (obj) =>
160
- obj.properties.filter((p) => !p.key.isSoleLiteral()).length > 1,
158
+ obj.type.properties.filter((p) => !p.key.isSoleLiteral()).length > 1,
161
159
  )
162
160
  )
163
161
  noSupport(
@@ -168,37 +166,25 @@ export namespace ProtobufFactory {
168
166
  meta.objects.length &&
169
167
  meta.objects.some(
170
168
  (obj) =>
171
- obj.properties.some((p) => p.key.isSoleLiteral()) &&
172
- obj.properties.some((p) => !p.key.isSoleLiteral()),
169
+ obj.type.properties.some((p) => p.key.isSoleLiteral()) &&
170
+ obj.type.properties.some((p) => !p.key.isSoleLiteral()),
173
171
  )
174
172
  )
175
173
  noSupport(
176
174
  "object type with mixed static and dynamic key typed properties. Keep statics or dynamic only.",
177
175
  );
178
- // STATIC PROPERTY, BUT INVALID KEY NAME
179
- if (
180
- meta.objects.length &&
181
- meta.objects.some((obj) =>
182
- obj.properties.some(
183
- (p) =>
184
- p.key.isSoleLiteral() === true &&
185
- Escaper.variable(p.key.getSoleLiteral()!) === false,
186
- ),
187
- )
188
- )
189
- noSupport(`object type with invalid static key name.`);
190
176
  // DYNAMIC OBJECT, BUT PROPERTY VALUE TYPE IS ARRAY
191
177
  if (
192
178
  meta.objects.length &&
193
- isDynamicObject(meta.objects[0]!) &&
194
- meta.objects[0]!.properties.some((p) => !!p.value.arrays.length)
179
+ isDynamicObject(meta.objects[0]!.type) &&
180
+ meta.objects[0]!.type.properties.some((p) => !!p.value.arrays.length)
195
181
  )
196
182
  noSupport("dynamic object with array value type");
197
- // UNION WITH DYNAMIC OBJECT
183
+ // UNION WITH DYNAMIC OBJECTa
198
184
  if (
199
185
  meta.size() > 1 &&
200
186
  meta.objects.length &&
201
- isDynamicObject(meta.objects[0]!)
187
+ isDynamicObject(meta.objects[0]!.type)
202
188
  )
203
189
  noSupport("union type with dynamic object type");
204
190
  // UNION IN DYNAMIC PROPERTY VALUE
@@ -206,8 +192,8 @@ export namespace ProtobufFactory {
206
192
  meta.objects.length &&
207
193
  meta.objects.some(
208
194
  (obj) =>
209
- isDynamicObject(obj) &&
210
- obj.properties.some((p) => ProtobufUtil.isUnion(p.value)),
195
+ isDynamicObject(obj.type) &&
196
+ obj.type.properties.some((p) => ProtobufUtil.isUnion(p.value)),
211
197
  )
212
198
  )
213
199
  noSupport("union type in dynamic property");
@@ -245,7 +231,7 @@ export namespace ProtobufFactory {
245
231
  };
246
232
  }
247
233
 
248
- const isDynamicObject = (obj: MetadataObject): boolean =>
234
+ const isDynamicObject = (obj: MetadataObjectType): boolean =>
249
235
  obj.properties[0]!.key.isSoleLiteral() === false;
250
236
 
251
237
  const BANNED_NATIVE_TYPES: Map<string, string | null> = new Map([
@@ -1,90 +1,90 @@
1
- import ts from "typescript";
2
-
3
- import { TypeFactory } from "./TypeFactory";
4
-
5
- export namespace StatementFactory {
6
- export const mut = (props: {
7
- name: string;
8
- type?: ts.TypeNode | undefined;
9
- initializer?: ts.Expression | undefined;
10
- }) =>
11
- ts.factory.createVariableStatement(
12
- undefined,
13
- ts.factory.createVariableDeclarationList(
14
- [
15
- ts.factory.createVariableDeclaration(
16
- props.name,
17
- undefined,
18
- props.type !== undefined
19
- ? props.type
20
- : props.initializer === undefined
21
- ? TypeFactory.keyword("any")
22
- : undefined,
23
- props.initializer,
24
- ),
25
- ],
26
- ts.NodeFlags.Let,
27
- ),
28
- );
29
-
30
- export const constant = (props: {
31
- name: string;
32
- type?: ts.TypeNode | undefined;
33
- value?: ts.Expression | undefined;
34
- }) =>
35
- ts.factory.createVariableStatement(
36
- undefined,
37
- ts.factory.createVariableDeclarationList(
38
- [
39
- ts.factory.createVariableDeclaration(
40
- props.name,
41
- undefined,
42
- props.type !== undefined
43
- ? props.type
44
- : props.value === undefined
45
- ? TypeFactory.keyword("any")
46
- : undefined,
47
- props.value,
48
- ),
49
- ],
50
- ts.NodeFlags.Const,
51
- ),
52
- );
53
-
54
- export const entry = (props: { key: string; value: string }) =>
55
- ts.factory.createVariableDeclarationList(
56
- [
57
- ts.factory.createVariableDeclaration(
58
- ts.factory.createArrayBindingPattern([
59
- ts.factory.createBindingElement(
60
- undefined,
61
- undefined,
62
- ts.factory.createIdentifier(props.key),
63
- undefined,
64
- ),
65
- ts.factory.createBindingElement(
66
- undefined,
67
- undefined,
68
- ts.factory.createIdentifier(props.value),
69
- undefined,
70
- ),
71
- ]),
72
- undefined,
73
- undefined,
74
- undefined,
75
- ),
76
- ],
77
- ts.NodeFlags.Const,
78
- );
79
-
80
- export const transpile = (script: string) =>
81
- ts.factory.createExpressionStatement(
82
- ts.factory.createIdentifier(ts.transpile(script)),
83
- );
84
-
85
- export const block = (expression: ts.Expression) =>
86
- ts.factory.createBlock(
87
- [ts.factory.createExpressionStatement(expression)],
88
- true,
89
- );
90
- }
1
+ import ts from "typescript";
2
+
3
+ import { TypeFactory } from "./TypeFactory";
4
+
5
+ export namespace StatementFactory {
6
+ export const mut = (props: {
7
+ name: string;
8
+ type?: ts.TypeNode | undefined;
9
+ initializer?: ts.Expression | undefined;
10
+ }) =>
11
+ ts.factory.createVariableStatement(
12
+ undefined,
13
+ ts.factory.createVariableDeclarationList(
14
+ [
15
+ ts.factory.createVariableDeclaration(
16
+ props.name,
17
+ undefined,
18
+ props.type !== undefined
19
+ ? props.type
20
+ : props.initializer === undefined
21
+ ? TypeFactory.keyword("any")
22
+ : undefined,
23
+ props.initializer,
24
+ ),
25
+ ],
26
+ ts.NodeFlags.Let,
27
+ ),
28
+ );
29
+
30
+ export const constant = (props: {
31
+ name: string;
32
+ type?: ts.TypeNode | undefined;
33
+ value?: ts.Expression | undefined;
34
+ }) =>
35
+ ts.factory.createVariableStatement(
36
+ undefined,
37
+ ts.factory.createVariableDeclarationList(
38
+ [
39
+ ts.factory.createVariableDeclaration(
40
+ props.name,
41
+ undefined,
42
+ props.type !== undefined
43
+ ? props.type
44
+ : props.value === undefined
45
+ ? TypeFactory.keyword("any")
46
+ : undefined,
47
+ props.value,
48
+ ),
49
+ ],
50
+ ts.NodeFlags.Const,
51
+ ),
52
+ );
53
+
54
+ export const entry = (props: { key: string; value: string }) =>
55
+ ts.factory.createVariableDeclarationList(
56
+ [
57
+ ts.factory.createVariableDeclaration(
58
+ ts.factory.createArrayBindingPattern([
59
+ ts.factory.createBindingElement(
60
+ undefined,
61
+ undefined,
62
+ ts.factory.createIdentifier(props.key),
63
+ undefined,
64
+ ),
65
+ ts.factory.createBindingElement(
66
+ undefined,
67
+ undefined,
68
+ ts.factory.createIdentifier(props.value),
69
+ undefined,
70
+ ),
71
+ ]),
72
+ undefined,
73
+ undefined,
74
+ undefined,
75
+ ),
76
+ ],
77
+ ts.NodeFlags.Const,
78
+ );
79
+
80
+ export const transpile = (script: string) =>
81
+ ts.factory.createExpressionStatement(
82
+ ts.factory.createIdentifier(ts.transpile(script)),
83
+ );
84
+
85
+ export const block = (expression: ts.Expression) =>
86
+ ts.factory.createBlock(
87
+ [ts.factory.createExpressionStatement(expression)],
88
+ true,
89
+ );
90
+ }