typia 5.0.0-dev.20230726 → 5.0.0-dev.20230805

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 (228) hide show
  1. package/lib/factories/CommentFactory.d.ts +1 -1
  2. package/lib/factories/CommentFactory.js +113 -50
  3. package/lib/factories/CommentFactory.js.map +1 -1
  4. package/lib/factories/MetadataCollection.js.map +1 -1
  5. package/lib/functional/$string.js +16 -20
  6. package/lib/functional/$string.js.map +1 -1
  7. package/lib/programmers/internal/application_object.js +2 -0
  8. package/lib/programmers/internal/application_object.js.map +1 -1
  9. package/lib/schemas/metadata/Metadata.d.ts +1 -0
  10. package/lib/schemas/metadata/Metadata.js +3 -0
  11. package/lib/schemas/metadata/Metadata.js.map +1 -1
  12. package/package.json +3 -4
  13. package/src/factories/CommentFactory.ts +67 -47
  14. package/src/factories/MetadataCollection.ts +264 -255
  15. package/src/factories/MetadataFactory.ts +30 -30
  16. package/src/factories/MetadataTagFactory.ts +362 -362
  17. package/src/factories/ProtocolFactory.ts +80 -80
  18. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  19. package/src/factories/internal/metadata/emend_metadata_atomics.ts +33 -33
  20. package/src/factories/internal/metadata/emplace_metadata_alias.ts +40 -40
  21. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  22. package/src/factories/internal/metadata/emplace_metadata_object.ts +136 -136
  23. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  24. package/src/factories/internal/metadata/explore_metadata.ts +40 -40
  25. package/src/factories/internal/metadata/iterate_metadata.ts +81 -81
  26. package/src/factories/internal/metadata/iterate_metadata_alias.ts +30 -30
  27. package/src/factories/internal/metadata/iterate_metadata_array.ts +24 -24
  28. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  29. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  30. package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
  31. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  32. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +83 -83
  33. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  34. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  35. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  36. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +49 -49
  37. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  38. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  39. package/src/factories/internal/metadata/iterate_metadata_tag.ts +31 -31
  40. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  41. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -24
  42. package/src/factories/internal/metadata/iterate_metadata_union.ts +24 -24
  43. package/src/factories/internal/protocols/ProtocolMetadataUtil.ts +180 -180
  44. package/src/factories/internal/protocols/emplace_protocol_object.ts +25 -25
  45. package/src/factories/internal/protocols/emplace_protocol_property.ts +12 -12
  46. package/src/factories/internal/protocols/iterate_protocol_atomic.ts +34 -34
  47. package/src/factories/internal/protocols/iterate_protocol_constant.ts +27 -27
  48. package/src/factories/internal/protocols/iterate_protocol_main.ts +19 -19
  49. package/src/factories/internal/protocols/iterate_protocol_map.ts +58 -58
  50. package/src/factories/internal/protocols/iterate_protocol_metadata.ts +96 -96
  51. package/src/factories/internal/protocols/iterate_protocol_native.ts +34 -34
  52. package/src/factories/internal/protocols/iterate_protocol_never.ts +1 -1
  53. package/src/factories/internal/protocols/iterate_protocol_object.ts +110 -110
  54. package/src/factories/internal/protocols/iterate_protocol_repeated.ts +34 -34
  55. package/src/factories/internal/protocols/iterate_protocol_tuple.ts +29 -29
  56. package/src/functional/$number.ts +13 -13
  57. package/src/functional/$proto_bytes.ts +25 -25
  58. package/src/functional/$proto_field.ts +30 -30
  59. package/src/functional/$proto_float.ts +37 -37
  60. package/src/functional/$proto_i32.ts +29 -29
  61. package/src/functional/$proto_i64.ts +37 -37
  62. package/src/functional/$proto_size.ts +82 -82
  63. package/src/functional/$proto_string.ts +24 -24
  64. package/src/functional/$string.ts +32 -19
  65. package/src/functional/$varint.ts +130 -130
  66. package/src/functional/$zigzag.ts +39 -39
  67. package/src/json.ts +648 -648
  68. package/src/misc.ts +651 -651
  69. package/src/module.ts +781 -781
  70. package/src/programmers/CheckerProgrammer.ts +1182 -1182
  71. package/src/programmers/FeatureProgrammer.ts +495 -495
  72. package/src/programmers/IsProgrammer.ts +239 -239
  73. package/src/programmers/IsPruneProgrammer.ts +73 -73
  74. package/src/programmers/RandomProgrammer.ts +581 -581
  75. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  76. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  77. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  78. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  79. package/src/programmers/helpers/RandomRanger.ts +216 -216
  80. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  81. package/src/programmers/helpers/UnionExplorer.ts +301 -301
  82. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  83. package/src/programmers/internal/application_alias.ts +66 -66
  84. package/src/programmers/internal/application_array.ts +30 -30
  85. package/src/programmers/internal/application_constant.ts +26 -26
  86. package/src/programmers/internal/application_default.ts +17 -17
  87. package/src/programmers/internal/application_default_string.ts +33 -33
  88. package/src/programmers/internal/application_native.ts +39 -39
  89. package/src/programmers/internal/application_number.ts +77 -77
  90. package/src/programmers/internal/application_object.ts +165 -162
  91. package/src/programmers/internal/application_resolved.ts +55 -55
  92. package/src/programmers/internal/application_schema.ts +157 -157
  93. package/src/programmers/internal/application_string.ts +44 -44
  94. package/src/programmers/internal/application_templates.ts +25 -25
  95. package/src/programmers/internal/application_tuple.ts +57 -57
  96. package/src/programmers/internal/check_array.ts +30 -30
  97. package/src/programmers/internal/check_array_length.ts +35 -35
  98. package/src/programmers/internal/check_bigint.ts +82 -82
  99. package/src/programmers/internal/check_custom.ts +31 -31
  100. package/src/programmers/internal/check_number.ts +177 -177
  101. package/src/programmers/internal/check_string.ts +25 -25
  102. package/src/programmers/internal/check_string_tags.ts +67 -67
  103. package/src/programmers/internal/check_template.ts +56 -56
  104. package/src/programmers/internal/check_union_array_like.ts +329 -329
  105. package/src/programmers/internal/decode_union_object.ts +73 -73
  106. package/src/programmers/internal/feature_object_entries.ts +63 -63
  107. package/src/programmers/internal/get_comment_tags.ts +23 -23
  108. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  109. package/src/programmers/internal/prune_object_properties.ts +60 -60
  110. package/src/programmers/internal/random_custom.ts +29 -29
  111. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  112. package/src/programmers/internal/template_to_pattern.ts +15 -15
  113. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  114. package/src/programmers/json/JsonApplicationProgrammer.ts +47 -47
  115. package/src/programmers/json/JsonAssertParseProgrammer.ts +66 -66
  116. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +66 -66
  117. package/src/programmers/json/JsonIsParseProgrammer.ts +72 -72
  118. package/src/programmers/json/JsonIsStringifyProgrammer.ts +76 -76
  119. package/src/programmers/json/JsonStringifyProgrammer.ts +979 -979
  120. package/src/programmers/json/JsonValidateParseProgrammer.ts +70 -70
  121. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +84 -84
  122. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +71 -71
  123. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +68 -68
  124. package/src/programmers/misc/MiscCloneProgrammer.ts +587 -587
  125. package/src/programmers/misc/MiscIsCloneProgrammer.ts +78 -78
  126. package/src/programmers/misc/MiscLiteralsProgrammer.ts +63 -63
  127. package/src/programmers/misc/MiscPruneProgrammer.ts +542 -542
  128. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +85 -85
  129. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +78 -78
  130. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +69 -69
  131. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +66 -66
  132. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +38 -38
  133. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +36 -36
  134. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +75 -75
  135. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +76 -76
  136. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +125 -125
  137. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +83 -83
  138. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +86 -86
  139. package/src/protobuf.ts +210 -210
  140. package/src/schemas/json/IJsonApplication.ts +8 -8
  141. package/src/schemas/json/IJsonComponents.ts +33 -33
  142. package/src/schemas/json/IJsonSchema.ts +133 -133
  143. package/src/schemas/metadata/ICommentTag.ts +4 -4
  144. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  145. package/src/schemas/metadata/IMetadata.ts +28 -28
  146. package/src/schemas/metadata/IMetadataAlias.ts +14 -14
  147. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  148. package/src/schemas/metadata/IMetadataArray.ts +10 -10
  149. package/src/schemas/metadata/IMetadataCollection.ts +11 -11
  150. package/src/schemas/metadata/IMetadataConstant.ts +16 -16
  151. package/src/schemas/metadata/IMetadataDictionary.ts +14 -14
  152. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  153. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  154. package/src/schemas/metadata/IMetadataProperty.ts +11 -11
  155. package/src/schemas/metadata/IMetadataResolved.ts +6 -6
  156. package/src/schemas/metadata/IMetadataTag.ts +113 -113
  157. package/src/schemas/metadata/IMetadataTuple.ts +10 -10
  158. package/src/schemas/metadata/Metadata.ts +610 -608
  159. package/src/schemas/metadata/MetadataAlias.ts +66 -66
  160. package/src/schemas/metadata/MetadataArray.ts +55 -55
  161. package/src/schemas/metadata/MetadataConstant.ts +3 -3
  162. package/src/schemas/metadata/MetadataObject.ts +129 -129
  163. package/src/schemas/metadata/MetadataProperty.ts +64 -64
  164. package/src/schemas/metadata/MetadataResolved.ts +51 -51
  165. package/src/schemas/metadata/MetadataTuple.ts +53 -53
  166. package/src/schemas/protobuf/IProtocolMap.ts +5 -5
  167. package/src/schemas/protobuf/IProtocolMessage.ts +6 -6
  168. package/src/schemas/protobuf/IProtocolProperty.ts +13 -13
  169. package/src/transformers/CallExpressionTransformer.ts +240 -240
  170. package/src/transformers/features/AssertTransformer.ts +11 -11
  171. package/src/transformers/features/CreateAssertTransformer.ts +13 -13
  172. package/src/transformers/features/CreateIsTransformer.ts +11 -11
  173. package/src/transformers/features/CreateRandomTransformer.ts +39 -39
  174. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  175. package/src/transformers/features/IsTransformer.ts +11 -11
  176. package/src/transformers/features/RandomTransformer.ts +42 -42
  177. package/src/transformers/features/ValidateTransformer.ts +11 -11
  178. package/src/transformers/features/json/JsonApplicationTransformer.ts +102 -102
  179. package/src/transformers/features/json/JsonAssertParseTransformer.ts +10 -10
  180. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  181. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +10 -10
  182. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  183. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  184. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +10 -10
  185. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  186. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +10 -10
  187. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  188. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  189. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +10 -10
  190. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  191. package/src/transformers/features/json/JsonValidateParseTransformer.ts +10 -10
  192. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  193. package/src/transformers/features/misc/MetadataTransformer.ts +53 -53
  194. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +10 -10
  195. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +10 -10
  196. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  197. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +10 -10
  198. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +10 -10
  199. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  200. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  201. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  202. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  203. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +10 -10
  204. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +10 -10
  205. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  206. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  207. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +28 -28
  208. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  209. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +10 -10
  210. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +10 -10
  211. package/src/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.ts +10 -10
  212. package/src/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.ts +10 -10
  213. package/src/transformers/features/protobuf/CreateProtobufDecodeTransformer.ts +10 -10
  214. package/src/transformers/features/protobuf/CreateProtobufEncodeTransformer.ts +10 -10
  215. package/src/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.ts +10 -10
  216. package/src/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.ts +10 -10
  217. package/src/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.ts +10 -10
  218. package/src/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.ts +10 -10
  219. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  220. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  221. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +10 -10
  222. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +10 -10
  223. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +10 -10
  224. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +10 -10
  225. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +31 -31
  226. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +10 -10
  227. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +10 -10
  228. package/src/utils/NameEncoder.ts +32 -32
@@ -1,180 +1,180 @@
1
- import { IMetadataTag } from "../../../schemas/metadata/IMetadataTag";
2
- import { Metadata } from "../../../schemas/metadata/Metadata";
3
- import { MetadataArray } from "../../../schemas/metadata/MetadataArray";
4
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
5
- import { MetadataProperty } from "../../../schemas/metadata/MetadataProperty";
6
-
7
- import { Atomic } from "../../../typings/Atomic";
8
-
9
- export namespace ProtocolMetadataUtil {
10
- export function size(meta: Metadata): number {
11
- return (
12
- meta.atomics.length +
13
- meta.constants.filter(
14
- (c) =>
15
- meta.atomics.find((type) => c.type === type) === undefined,
16
- ).length +
17
- (meta.templates.length !== 0 &&
18
- meta.atomics.find((type) => type === "string") === undefined &&
19
- meta.constants.find((c) => c.type === "string") === undefined
20
- ? 1
21
- : 0) +
22
- meta.tuples.length +
23
- meta.arrays.length +
24
- meta.sets.length +
25
- meta.maps.length +
26
- meta.objects.length +
27
- meta.natives.filter((n) => n === "Date").length +
28
- (meta.natives.filter((n) => n !== "Date").length ? 1 : 0)
29
- );
30
- }
31
-
32
- export function standalone(meta: Metadata): boolean {
33
- return (
34
- size(meta) === 1 &&
35
- meta.required === true &&
36
- meta.nullable === false &&
37
- meta.tuples.length === 0 &&
38
- meta.arrays.length === 0 &&
39
- meta.sets.length === 0 &&
40
- meta.maps.length === 0 &&
41
- meta.objects.every((obj) =>
42
- obj.properties.every((p) => p.key.isSoleLiteral()),
43
- )
44
- );
45
- }
46
-
47
- export function regular(obj: MetadataObject): boolean {
48
- return obj.properties.every((p) => p.key.isSoleLiteral());
49
- }
50
-
51
- export function object(name: string, index: number): MetadataObject {
52
- return MetadataObject.create({
53
- name,
54
- index,
55
- properties: [],
56
- description: undefined,
57
- jsDocTags: [],
58
- validated: false,
59
- recursive: false,
60
- nullables: [false],
61
- });
62
- }
63
-
64
- export function property(
65
- key: string,
66
- value: Metadata,
67
- tags: IMetadataTag[],
68
- ): MetadataProperty {
69
- return MetadataProperty.create({
70
- key: (() => {
71
- const meta: Metadata = Metadata.initialize();
72
- meta.constants.push({
73
- type: "string",
74
- values: [key],
75
- });
76
- return meta;
77
- })(),
78
- value: value,
79
- description: null,
80
- tags,
81
- jsDocTags: [],
82
- });
83
- }
84
-
85
- export function array(meta: Metadata): Metadata {
86
- return Metadata.create({
87
- any: false,
88
- required: true,
89
- optional: false,
90
- nullable: false,
91
- functional: false,
92
- resolved: null,
93
- aliases: [],
94
- atomics: [],
95
- constants: [],
96
- templates: [],
97
- rest: null,
98
- arrays: [
99
- MetadataArray.create({
100
- name: meta.getName(),
101
- value: meta,
102
- nullables: [false],
103
- recursive: false,
104
- index: null,
105
- }),
106
- ],
107
- tuples: [],
108
- objects: [],
109
- natives: [],
110
- sets: [],
111
- maps: [],
112
- });
113
- }
114
-
115
- export function atomic(type: Atomic.Literal): Metadata {
116
- return Metadata.create({
117
- any: false,
118
- required: true,
119
- optional: false,
120
- nullable: false,
121
- functional: false,
122
- resolved: null,
123
- aliases: [],
124
- atomics: [type],
125
- constants: [],
126
- templates: [],
127
- rest: null,
128
- arrays: [],
129
- tuples: [],
130
- objects: [],
131
- natives: [],
132
- sets: [],
133
- maps: [],
134
- });
135
- }
136
-
137
- export function reference(obj: MetadataObject): Metadata {
138
- return Metadata.create({
139
- any: false,
140
- required: true,
141
- optional: false,
142
- nullable: false,
143
- functional: false,
144
- resolved: null,
145
- aliases: [],
146
- atomics: [],
147
- constants: [],
148
- templates: [],
149
- rest: null,
150
- arrays: [],
151
- tuples: [],
152
- objects: [obj],
153
- natives: [],
154
- sets: [],
155
- maps: [],
156
- });
157
- }
158
-
159
- export function map(elem: Metadata.Entry): Metadata {
160
- return Metadata.create({
161
- any: false,
162
- required: true,
163
- optional: false,
164
- nullable: false,
165
- functional: false,
166
- resolved: null,
167
- aliases: [],
168
- atomics: [],
169
- constants: [],
170
- templates: [],
171
- rest: null,
172
- arrays: [],
173
- tuples: [],
174
- objects: [],
175
- natives: [],
176
- sets: [],
177
- maps: [elem],
178
- });
179
- }
180
- }
1
+ import { IMetadataTag } from "../../../schemas/metadata/IMetadataTag";
2
+ import { Metadata } from "../../../schemas/metadata/Metadata";
3
+ import { MetadataArray } from "../../../schemas/metadata/MetadataArray";
4
+ import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
5
+ import { MetadataProperty } from "../../../schemas/metadata/MetadataProperty";
6
+
7
+ import { Atomic } from "../../../typings/Atomic";
8
+
9
+ export namespace ProtocolMetadataUtil {
10
+ export function size(meta: Metadata): number {
11
+ return (
12
+ meta.atomics.length +
13
+ meta.constants.filter(
14
+ (c) =>
15
+ meta.atomics.find((type) => c.type === type) === undefined,
16
+ ).length +
17
+ (meta.templates.length !== 0 &&
18
+ meta.atomics.find((type) => type === "string") === undefined &&
19
+ meta.constants.find((c) => c.type === "string") === undefined
20
+ ? 1
21
+ : 0) +
22
+ meta.tuples.length +
23
+ meta.arrays.length +
24
+ meta.sets.length +
25
+ meta.maps.length +
26
+ meta.objects.length +
27
+ meta.natives.filter((n) => n === "Date").length +
28
+ (meta.natives.filter((n) => n !== "Date").length ? 1 : 0)
29
+ );
30
+ }
31
+
32
+ export function standalone(meta: Metadata): boolean {
33
+ return (
34
+ size(meta) === 1 &&
35
+ meta.required === true &&
36
+ meta.nullable === false &&
37
+ meta.tuples.length === 0 &&
38
+ meta.arrays.length === 0 &&
39
+ meta.sets.length === 0 &&
40
+ meta.maps.length === 0 &&
41
+ meta.objects.every((obj) =>
42
+ obj.properties.every((p) => p.key.isSoleLiteral()),
43
+ )
44
+ );
45
+ }
46
+
47
+ export function regular(obj: MetadataObject): boolean {
48
+ return obj.properties.every((p) => p.key.isSoleLiteral());
49
+ }
50
+
51
+ export function object(name: string, index: number): MetadataObject {
52
+ return MetadataObject.create({
53
+ name,
54
+ index,
55
+ properties: [],
56
+ description: undefined,
57
+ jsDocTags: [],
58
+ validated: false,
59
+ recursive: false,
60
+ nullables: [false],
61
+ });
62
+ }
63
+
64
+ export function property(
65
+ key: string,
66
+ value: Metadata,
67
+ tags: IMetadataTag[],
68
+ ): MetadataProperty {
69
+ return MetadataProperty.create({
70
+ key: (() => {
71
+ const meta: Metadata = Metadata.initialize();
72
+ meta.constants.push({
73
+ type: "string",
74
+ values: [key],
75
+ });
76
+ return meta;
77
+ })(),
78
+ value: value,
79
+ description: null,
80
+ tags,
81
+ jsDocTags: [],
82
+ });
83
+ }
84
+
85
+ export function array(meta: Metadata): Metadata {
86
+ return Metadata.create({
87
+ any: false,
88
+ required: true,
89
+ optional: false,
90
+ nullable: false,
91
+ functional: false,
92
+ resolved: null,
93
+ aliases: [],
94
+ atomics: [],
95
+ constants: [],
96
+ templates: [],
97
+ rest: null,
98
+ arrays: [
99
+ MetadataArray.create({
100
+ name: meta.getName(),
101
+ value: meta,
102
+ nullables: [false],
103
+ recursive: false,
104
+ index: null,
105
+ }),
106
+ ],
107
+ tuples: [],
108
+ objects: [],
109
+ natives: [],
110
+ sets: [],
111
+ maps: [],
112
+ });
113
+ }
114
+
115
+ export function atomic(type: Atomic.Literal): Metadata {
116
+ return Metadata.create({
117
+ any: false,
118
+ required: true,
119
+ optional: false,
120
+ nullable: false,
121
+ functional: false,
122
+ resolved: null,
123
+ aliases: [],
124
+ atomics: [type],
125
+ constants: [],
126
+ templates: [],
127
+ rest: null,
128
+ arrays: [],
129
+ tuples: [],
130
+ objects: [],
131
+ natives: [],
132
+ sets: [],
133
+ maps: [],
134
+ });
135
+ }
136
+
137
+ export function reference(obj: MetadataObject): Metadata {
138
+ return Metadata.create({
139
+ any: false,
140
+ required: true,
141
+ optional: false,
142
+ nullable: false,
143
+ functional: false,
144
+ resolved: null,
145
+ aliases: [],
146
+ atomics: [],
147
+ constants: [],
148
+ templates: [],
149
+ rest: null,
150
+ arrays: [],
151
+ tuples: [],
152
+ objects: [obj],
153
+ natives: [],
154
+ sets: [],
155
+ maps: [],
156
+ });
157
+ }
158
+
159
+ export function map(elem: Metadata.Entry): Metadata {
160
+ return Metadata.create({
161
+ any: false,
162
+ required: true,
163
+ optional: false,
164
+ nullable: false,
165
+ functional: false,
166
+ resolved: null,
167
+ aliases: [],
168
+ atomics: [],
169
+ constants: [],
170
+ templates: [],
171
+ rest: null,
172
+ arrays: [],
173
+ tuples: [],
174
+ objects: [],
175
+ natives: [],
176
+ sets: [],
177
+ maps: [elem],
178
+ });
179
+ }
180
+ }
@@ -1,25 +1,25 @@
1
- import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
2
- import { IProtocolMessage } from "../../../schemas/protobuf/IProtocolMessage";
3
-
4
- import { emplace_protocol_property } from "./emplace_protocol_property";
5
-
6
- export const emplace_protocol_object =
7
- (dict: Map<string, IProtocolMessage>) => (object: MetadataObject) => {
8
- if (dict.has(object.name)) return;
9
-
10
- const regular = object.properties.filter((p) => p.key.isSoleLiteral());
11
- const dynamic = object.properties.filter((p) => !p.key.isSoleLiteral());
12
-
13
- if (dynamic.length) return;
14
-
15
- const output: IProtocolMessage = {
16
- name: object.name,
17
- properties: [],
18
- };
19
- dict.set(object.name, output);
20
-
21
- output.properties.push(
22
- ...regular.map((prop) => emplace_protocol_property(dict)(prop)),
23
- );
24
- return output;
25
- };
1
+ import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
2
+ import { IProtocolMessage } from "../../../schemas/protobuf/IProtocolMessage";
3
+
4
+ import { emplace_protocol_property } from "./emplace_protocol_property";
5
+
6
+ export const emplace_protocol_object =
7
+ (dict: Map<string, IProtocolMessage>) => (object: MetadataObject) => {
8
+ if (dict.has(object.name)) return;
9
+
10
+ const regular = object.properties.filter((p) => p.key.isSoleLiteral());
11
+ const dynamic = object.properties.filter((p) => !p.key.isSoleLiteral());
12
+
13
+ if (dynamic.length) return;
14
+
15
+ const output: IProtocolMessage = {
16
+ name: object.name,
17
+ properties: [],
18
+ };
19
+ dict.set(object.name, output);
20
+
21
+ output.properties.push(
22
+ ...regular.map((prop) => emplace_protocol_property(dict)(prop)),
23
+ );
24
+ return output;
25
+ };
@@ -1,12 +1,12 @@
1
- import { MetadataProperty } from "../../../schemas/metadata/MetadataProperty";
2
- import { IProtocolMessage } from "../../../schemas/protobuf/IProtocolMessage";
3
- import { IProtocolProperty } from "../../../schemas/protobuf/IProtocolProperty";
4
-
5
- import { iterate_protocol_metadata } from "./iterate_protocol_metadata";
6
-
7
- export const emplace_protocol_property =
8
- (dict: Map<string, IProtocolMessage>) =>
9
- (property: MetadataProperty): IProtocolProperty => ({
10
- key: property.key.getSoleLiteral()!,
11
- ...iterate_protocol_metadata(dict)(property.value)(property.tags),
12
- });
1
+ import { MetadataProperty } from "../../../schemas/metadata/MetadataProperty";
2
+ import { IProtocolMessage } from "../../../schemas/protobuf/IProtocolMessage";
3
+ import { IProtocolProperty } from "../../../schemas/protobuf/IProtocolProperty";
4
+
5
+ import { iterate_protocol_metadata } from "./iterate_protocol_metadata";
6
+
7
+ export const emplace_protocol_property =
8
+ (dict: Map<string, IProtocolMessage>) =>
9
+ (property: MetadataProperty): IProtocolProperty => ({
10
+ key: property.key.getSoleLiteral()!,
11
+ ...iterate_protocol_metadata(dict)(property.value)(property.tags),
12
+ });
@@ -1,34 +1,34 @@
1
- import { IMetadataTag } from "../../../schemas/metadata/IMetadataTag";
2
-
3
- import { Atomic } from "../../../typings/Atomic";
4
-
5
- export const iterate_protocol_atomic =
6
- (tags: IMetadataTag[]) => (type: Atomic.Literal) => {
7
- if (type === "boolean") return "bool";
8
- else if (type === "number") return number(tags);
9
- else if (type === "bigint") return bigint(tags);
10
- else return "string";
11
- };
12
-
13
- const number = (tagList: IMetadataTag[]) => {
14
- const filtered: IMetadataTag.INumberType[] = tagList.filter(
15
- (tag) => tag.kind === "type",
16
- ) as IMetadataTag.INumberType[];
17
-
18
- for (const { value } of filtered)
19
- if (value === "int") return "int32";
20
- else if (value === "uint") return "uint32";
21
- return "double";
22
- };
23
-
24
- const bigint = (tagList: IMetadataTag[]) => {
25
- const filtered: IMetadataTag.INumberType[] = tagList.filter(
26
- (tag) =>
27
- tag.kind === "type" &&
28
- (tag.value === "int64" || tag.value === "uint64"),
29
- ) as IMetadataTag.INumberType[];
30
-
31
- for (const { value } of filtered)
32
- if (value === "int64" || value === "uint64") return value;
33
- return "int64";
34
- };
1
+ import { IMetadataTag } from "../../../schemas/metadata/IMetadataTag";
2
+
3
+ import { Atomic } from "../../../typings/Atomic";
4
+
5
+ export const iterate_protocol_atomic =
6
+ (tags: IMetadataTag[]) => (type: Atomic.Literal) => {
7
+ if (type === "boolean") return "bool";
8
+ else if (type === "number") return number(tags);
9
+ else if (type === "bigint") return bigint(tags);
10
+ else return "string";
11
+ };
12
+
13
+ const number = (tagList: IMetadataTag[]) => {
14
+ const filtered: IMetadataTag.INumberType[] = tagList.filter(
15
+ (tag) => tag.kind === "type",
16
+ ) as IMetadataTag.INumberType[];
17
+
18
+ for (const { value } of filtered)
19
+ if (value === "int") return "int32";
20
+ else if (value === "uint") return "uint32";
21
+ return "double";
22
+ };
23
+
24
+ const bigint = (tagList: IMetadataTag[]) => {
25
+ const filtered: IMetadataTag.INumberType[] = tagList.filter(
26
+ (tag) =>
27
+ tag.kind === "type" &&
28
+ (tag.value === "int64" || tag.value === "uint64"),
29
+ ) as IMetadataTag.INumberType[];
30
+
31
+ for (const { value } of filtered)
32
+ if (value === "int64" || value === "uint64") return value;
33
+ return "int64";
34
+ };
@@ -1,27 +1,27 @@
1
- import { MetadataConstant } from "../../../schemas/metadata/MetadataConstant";
2
-
3
- export const iterate_protocol_constant = ({
4
- type,
5
- values,
6
- }: MetadataConstant) => {
7
- if (type === "boolean") return "bool";
8
- else if (type === "number") return number(values);
9
- else if (type === "bigint") return bigint(values);
10
- else return "string";
11
- };
12
-
13
- const bigint = (values: bigint[]): string => {
14
- return values.every((v) => v >= BigInt(0)) ? "uint64" : "int64";
15
- };
16
-
17
- const number = (values: number[]): string => {
18
- return values.some((v) => Math.floor(v) !== v)
19
- ? "double"
20
- : values.every((v) => v >= 0)
21
- ? values.every((v) => v <= 2 ** 64 - 1)
22
- ? "uint32"
23
- : "uint64"
24
- : values.every((v) => -(2 ** 31) <= v && v <= 2 ** 31 - 1)
25
- ? "int32"
26
- : "int64";
27
- };
1
+ import { MetadataConstant } from "../../../schemas/metadata/MetadataConstant";
2
+
3
+ export const iterate_protocol_constant = ({
4
+ type,
5
+ values,
6
+ }: MetadataConstant) => {
7
+ if (type === "boolean") return "bool";
8
+ else if (type === "number") return number(values);
9
+ else if (type === "bigint") return bigint(values);
10
+ else return "string";
11
+ };
12
+
13
+ const bigint = (values: bigint[]): string => {
14
+ return values.every((v) => v >= BigInt(0)) ? "uint64" : "int64";
15
+ };
16
+
17
+ const number = (values: number[]): string => {
18
+ return values.some((v) => Math.floor(v) !== v)
19
+ ? "double"
20
+ : values.every((v) => v >= 0)
21
+ ? values.every((v) => v <= 2 ** 64 - 1)
22
+ ? "uint32"
23
+ : "uint64"
24
+ : values.every((v) => -(2 ** 31) <= v && v <= 2 ** 31 - 1)
25
+ ? "int32"
26
+ : "int64";
27
+ };
@@ -1,19 +1,19 @@
1
- import { Metadata } from "../../../schemas/metadata/Metadata";
2
- import { IProtocolMessage } from "../../../schemas/protobuf/IProtocolMessage";
3
-
4
- import { ProtocolMetadataUtil } from "./ProtocolMetadataUtil";
5
- import { emplace_protocol_object } from "./emplace_protocol_object";
6
-
7
- export const iterate_protocol_main =
8
- (dict: Map<string, IProtocolMessage>) =>
9
- (meta: Metadata): string => {
10
- // ONLY ONE OBJECT TYPE
11
- if (ProtocolMetadataUtil.standalone(meta) && meta.objects.length === 1)
12
- return meta.getName();
13
-
14
- const obj = ProtocolMetadataUtil.object("__Main", dict.size);
15
- obj.properties.push(ProtocolMetadataUtil.property("value", meta, []));
16
- emplace_protocol_object(dict)(obj);
17
-
18
- return obj.name;
19
- };
1
+ import { Metadata } from "../../../schemas/metadata/Metadata";
2
+ import { IProtocolMessage } from "../../../schemas/protobuf/IProtocolMessage";
3
+
4
+ import { ProtocolMetadataUtil } from "./ProtocolMetadataUtil";
5
+ import { emplace_protocol_object } from "./emplace_protocol_object";
6
+
7
+ export const iterate_protocol_main =
8
+ (dict: Map<string, IProtocolMessage>) =>
9
+ (meta: Metadata): string => {
10
+ // ONLY ONE OBJECT TYPE
11
+ if (ProtocolMetadataUtil.standalone(meta) && meta.objects.length === 1)
12
+ return meta.getName();
13
+
14
+ const obj = ProtocolMetadataUtil.object("__Main", dict.size);
15
+ obj.properties.push(ProtocolMetadataUtil.property("value", meta, []));
16
+ emplace_protocol_object(dict)(obj);
17
+
18
+ return obj.name;
19
+ };