typia 7.0.0-dev.20241012 → 7.0.0-dev.20241018

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/lib/factories/JsonMetadataFactory.js +3 -2
  2. package/lib/factories/JsonMetadataFactory.js.map +1 -1
  3. package/lib/factories/MetadataCollection.d.ts +3 -3
  4. package/lib/factories/MetadataCollection.js +2 -2
  5. package/lib/factories/MetadataCollection.js.map +1 -1
  6. package/lib/factories/MetadataFactory.d.ts +2 -2
  7. package/lib/factories/MetadataFactory.js +3 -3
  8. package/lib/factories/MetadataFactory.js.map +1 -1
  9. package/lib/factories/MetadataTypeTagFactory.d.ts +3 -2
  10. package/lib/factories/MetadataTypeTagFactory.js +26 -3
  11. package/lib/factories/MetadataTypeTagFactory.js.map +1 -1
  12. package/lib/factories/ProtobufFactory.js +829 -156
  13. package/lib/factories/ProtobufFactory.js.map +1 -1
  14. package/lib/factories/internal/metadata/IMetadataIteratorProps.d.ts +1 -0
  15. package/lib/factories/internal/metadata/MetadataHelper.js +1 -1
  16. package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
  17. package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +2 -2
  18. package/lib/factories/internal/metadata/emplace_metadata_object.js +5 -5
  19. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  20. package/lib/factories/internal/metadata/explore_metadata.js +2 -0
  21. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  22. package/lib/factories/internal/metadata/iterate_metadata.js +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  24. package/lib/factories/internal/metadata/iterate_metadata_alias.js +8 -2
  25. package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
  26. package/lib/factories/internal/metadata/iterate_metadata_collection.js +6 -6
  27. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +262 -137
  29. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_map.js +4 -2
  31. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata_native.js +27 -11
  33. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_set.js +8 -1
  35. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  36. package/lib/factories/internal/metadata/iterate_metadata_sort.js +1 -1
  37. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  38. package/lib/factories/internal/metadata/iterate_metadata_template.js +1 -1
  39. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  40. package/lib/programmers/CheckerProgrammer.js +5 -5
  41. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  42. package/lib/programmers/RandomProgrammer.js +12 -12
  43. package/lib/programmers/RandomProgrammer.js.map +1 -1
  44. package/lib/programmers/helpers/AtomicPredicator.js +3 -3
  45. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  46. package/lib/programmers/helpers/ProtobufUtil.d.ts +5 -4
  47. package/lib/programmers/helpers/ProtobufUtil.js +215 -92
  48. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  49. package/lib/programmers/helpers/UnionExplorer.d.ts +4 -2
  50. package/lib/programmers/helpers/UnionExplorer.js +1 -1
  51. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  52. package/lib/programmers/http/HttpFormDataProgrammer.js +6 -6
  53. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  54. package/lib/programmers/internal/application_escaped.js +2 -2
  55. package/lib/programmers/internal/application_escaped.js.map +1 -1
  56. package/lib/programmers/internal/application_v30_alias.js +13 -8
  57. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  58. package/lib/programmers/internal/application_v30_native.js +17 -10
  59. package/lib/programmers/internal/application_v30_native.js.map +1 -1
  60. package/lib/programmers/internal/application_v30_object.js +16 -6
  61. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  62. package/lib/programmers/internal/application_v30_schema.js +24 -17
  63. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  64. package/lib/programmers/internal/application_v31_alias.js +12 -11
  65. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  66. package/lib/programmers/internal/application_v31_native.js +17 -10
  67. package/lib/programmers/internal/application_v31_native.js.map +1 -1
  68. package/lib/programmers/internal/application_v31_object.js +13 -6
  69. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  70. package/lib/programmers/internal/application_v31_schema.js +23 -16
  71. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  72. package/lib/programmers/internal/check_dynamic_key.js +4 -4
  73. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  74. package/lib/programmers/internal/check_native.js +3 -3
  75. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  76. package/lib/programmers/internal/llm_schema_escaped.js +2 -2
  77. package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
  78. package/lib/programmers/internal/llm_schema_object.js +18 -14
  79. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  80. package/lib/programmers/internal/llm_schema_station.js +8 -8
  81. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  82. package/lib/programmers/json/JsonSchemasProgrammer.js +5 -5
  83. package/lib/programmers/json/JsonSchemasProgrammer.js.map +1 -1
  84. package/lib/programmers/json/JsonStringifyProgrammer.js +18 -17
  85. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  86. package/lib/programmers/llm/LlmSchemaProgrammer.js +6 -6
  87. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  88. package/lib/programmers/misc/MiscCloneProgrammer.js +7 -5
  89. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  90. package/lib/programmers/misc/MiscPruneProgrammer.js +1 -1
  91. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  92. package/lib/programmers/notations/NotationGeneralProgrammer.js +6 -4
  93. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  94. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +15 -12
  95. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  96. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +6 -4
  97. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  98. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +51 -34
  99. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  100. package/lib/schemas/metadata/IMetadata.d.ts +14 -18
  101. package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -7
  102. package/lib/schemas/metadata/IMetadataAliasType.d.ts +10 -0
  103. package/lib/schemas/metadata/IMetadataAliasType.js +3 -0
  104. package/lib/schemas/metadata/IMetadataAliasType.js.map +1 -0
  105. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  106. package/lib/schemas/metadata/IMetadataConstantValue.d.ts +1 -1
  107. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  108. package/lib/schemas/metadata/IMetadataMap.d.ts +7 -0
  109. package/lib/schemas/metadata/{IMetadataEntry.js → IMetadataMap.js} +1 -1
  110. package/lib/schemas/metadata/IMetadataMap.js.map +1 -0
  111. package/lib/schemas/metadata/IMetadataNative.d.ts +5 -0
  112. package/lib/schemas/metadata/IMetadataNative.js +3 -0
  113. package/lib/schemas/metadata/IMetadataNative.js.map +1 -0
  114. package/lib/schemas/metadata/IMetadataSet.d.ts +6 -0
  115. package/lib/schemas/metadata/IMetadataSet.js +3 -0
  116. package/lib/schemas/metadata/IMetadataSet.js.map +1 -0
  117. package/lib/schemas/metadata/IMetadataTemplate.d.ts +1 -1
  118. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +1 -1
  119. package/lib/schemas/metadata/Metadata.d.ts +6 -9
  120. package/lib/schemas/metadata/Metadata.js +136 -98
  121. package/lib/schemas/metadata/Metadata.js.map +1 -1
  122. package/lib/schemas/metadata/MetadataAlias.d.ts +8 -11
  123. package/lib/schemas/metadata/MetadataAlias.js +48 -33
  124. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  125. package/lib/schemas/metadata/MetadataAliasType.d.ts +16 -0
  126. package/lib/schemas/metadata/MetadataAliasType.js +51 -0
  127. package/lib/schemas/metadata/MetadataAliasType.js.map +1 -0
  128. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  129. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  130. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  131. package/lib/schemas/metadata/MetadataConstantValue.d.ts +1 -1
  132. package/lib/schemas/metadata/MetadataMap.d.ts +14 -0
  133. package/lib/schemas/metadata/MetadataMap.js +66 -0
  134. package/lib/schemas/metadata/MetadataMap.js.map +1 -0
  135. package/lib/schemas/metadata/MetadataNative.d.ts +12 -0
  136. package/lib/schemas/metadata/MetadataNative.js +65 -0
  137. package/lib/schemas/metadata/MetadataNative.js.map +1 -0
  138. package/lib/schemas/metadata/MetadataSet.d.ts +13 -0
  139. package/lib/schemas/metadata/MetadataSet.js +64 -0
  140. package/lib/schemas/metadata/MetadataSet.js.map +1 -0
  141. package/lib/schemas/metadata/MetadataTemplate.d.ts +1 -1
  142. package/lib/tags/Example.d.ts +2 -2
  143. package/lib/tags/Examples.d.ts +2 -2
  144. package/lib/tags/JsonSchemaPlugin.d.ts +1 -1
  145. package/lib/tags/Sequence.d.ts +9 -0
  146. package/lib/tags/Sequence.js +3 -0
  147. package/lib/tags/Sequence.js.map +1 -0
  148. package/lib/tags/TagBase.d.ts +1 -1
  149. package/lib/tags/index.d.ts +1 -0
  150. package/lib/tags/index.js +1 -0
  151. package/lib/tags/index.js.map +1 -1
  152. package/package.json +1 -1
  153. package/src/factories/JsonMetadataFactory.ts +5 -2
  154. package/src/factories/MetadataCollection.ts +6 -6
  155. package/src/factories/MetadataFactory.ts +7 -7
  156. package/src/factories/MetadataTypeTagFactory.ts +31 -6
  157. package/src/factories/ProtobufFactory.ts +494 -176
  158. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +1 -0
  159. package/src/factories/internal/metadata/MetadataHelper.ts +1 -1
  160. package/src/factories/internal/metadata/emplace_metadata_alias.ts +2 -2
  161. package/src/factories/internal/metadata/emplace_metadata_object.ts +5 -5
  162. package/src/factories/internal/metadata/explore_metadata.ts +1 -0
  163. package/src/factories/internal/metadata/iterate_metadata.ts +1 -1
  164. package/src/factories/internal/metadata/iterate_metadata_alias.ts +9 -4
  165. package/src/factories/internal/metadata/iterate_metadata_collection.ts +6 -6
  166. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +163 -181
  167. package/src/factories/internal/metadata/iterate_metadata_map.ts +5 -2
  168. package/src/factories/internal/metadata/iterate_metadata_native.ts +20 -2
  169. package/src/factories/internal/metadata/iterate_metadata_set.ts +27 -11
  170. package/src/factories/internal/metadata/iterate_metadata_sort.ts +1 -1
  171. package/src/factories/internal/metadata/iterate_metadata_template.ts +1 -3
  172. package/src/programmers/CheckerProgrammer.ts +9 -7
  173. package/src/programmers/RandomProgrammer.ts +16 -14
  174. package/src/programmers/helpers/AtomicPredicator.ts +3 -3
  175. package/src/programmers/helpers/ProtobufUtil.ts +146 -43
  176. package/src/programmers/helpers/UnionExplorer.ts +62 -62
  177. package/src/programmers/http/HttpFormDataProgrammer.ts +10 -6
  178. package/src/programmers/internal/application_escaped.ts +2 -2
  179. package/src/programmers/internal/application_v30_alias.ts +18 -12
  180. package/src/programmers/internal/application_v30_native.ts +22 -12
  181. package/src/programmers/internal/application_v30_object.ts +23 -8
  182. package/src/programmers/internal/application_v30_schema.ts +31 -34
  183. package/src/programmers/internal/application_v31_alias.ts +16 -13
  184. package/src/programmers/internal/application_v31_native.ts +22 -12
  185. package/src/programmers/internal/application_v31_object.ts +19 -8
  186. package/src/programmers/internal/application_v31_schema.ts +26 -29
  187. package/src/programmers/internal/check_dynamic_key.ts +4 -4
  188. package/src/programmers/internal/check_native.ts +4 -4
  189. package/src/programmers/internal/check_union_array_like.ts +2 -1
  190. package/src/programmers/internal/llm_schema_escaped.ts +2 -2
  191. package/src/programmers/internal/llm_schema_object.ts +21 -18
  192. package/src/programmers/internal/llm_schema_station.ts +9 -11
  193. package/src/programmers/json/JsonSchemasProgrammer.ts +5 -5
  194. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  195. package/src/programmers/llm/LlmSchemaProgrammer.ts +6 -6
  196. package/src/programmers/misc/MiscCloneProgrammer.ts +11 -7
  197. package/src/programmers/misc/MiscPruneProgrammer.ts +1 -1
  198. package/src/programmers/notations/NotationGeneralProgrammer.ts +10 -6
  199. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +14 -7
  200. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +11 -8
  201. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +45 -20
  202. package/src/schemas/metadata/IMetadata.ts +35 -39
  203. package/src/schemas/metadata/IMetadataAlias.ts +6 -12
  204. package/src/schemas/metadata/IMetadataAliasType.ts +12 -0
  205. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  206. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  207. package/src/schemas/metadata/IMetadataConstantValue.ts +1 -1
  208. package/src/schemas/metadata/IMetadataDictionary.ts +2 -2
  209. package/src/schemas/metadata/IMetadataMap.ts +8 -0
  210. package/src/schemas/metadata/IMetadataNative.ts +6 -0
  211. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  212. package/src/schemas/metadata/IMetadataSet.ts +7 -0
  213. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  214. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  215. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  216. package/src/schemas/metadata/Metadata.ts +100 -47
  217. package/src/schemas/metadata/MetadataAlias.ts +46 -61
  218. package/src/schemas/metadata/MetadataAliasType.ts +63 -0
  219. package/src/schemas/metadata/MetadataArray.ts +49 -49
  220. package/src/schemas/metadata/MetadataComponents.ts +3 -3
  221. package/src/schemas/metadata/MetadataConstantValue.ts +1 -1
  222. package/src/schemas/metadata/MetadataMap.ts +48 -0
  223. package/src/schemas/metadata/MetadataNative.ts +44 -0
  224. package/src/schemas/metadata/MetadataProperty.ts +5 -0
  225. package/src/schemas/metadata/MetadataSet.ts +45 -0
  226. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  227. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  228. package/src/tags/Example.ts +24 -17
  229. package/src/tags/Examples.ts +16 -16
  230. package/src/tags/JsonSchemaPlugin.ts +8 -8
  231. package/src/tags/Sequence.ts +10 -0
  232. package/src/tags/TagBase.ts +82 -76
  233. package/src/tags/index.ts +1 -0
  234. package/lib/schemas/metadata/IMetadataEntry.d.ts +0 -5
  235. package/lib/schemas/metadata/IMetadataEntry.js.map +0 -1
  236. package/src/schemas/metadata/IMetadataEntry.ts +0 -6
@@ -53,13 +53,16 @@ var TransformerError_1 = require("../transformers/TransformerError");
53
53
  var MetadataFactory_1 = require("./MetadataFactory");
54
54
  var ProtobufFactory;
55
55
  (function (ProtobufFactory) {
56
+ /* -----------------------------------------------------------
57
+ METADATA COMPOSER
58
+ ----------------------------------------------------------- */
56
59
  ProtobufFactory.metadata = function (props) {
57
60
  // COMPOSE METADATA WITH INDIVIDUAL VALIDATIONS
58
61
  var result = MetadataFactory_1.MetadataFactory.analyze(__assign(__assign({}, props), { transformer: props.transformer, options: {
59
62
  escape: false,
60
63
  constant: true,
61
64
  absorb: true,
62
- validate: validate,
65
+ validate: validate(),
63
66
  } }));
64
67
  if (result.success === false)
65
68
  throw TransformerError_1.TransformerError.from({
@@ -68,176 +71,837 @@ var ProtobufFactory;
68
71
  });
69
72
  return result.data;
70
73
  };
71
- var validate = function (meta, explore) {
72
- var e_1, _a, e_2, _b;
73
- var errors = [];
74
- var insert = function (msg) { return errors.push(msg); };
75
- if (explore.top === true) {
76
- var onlyObject = meta.size() === 1 &&
77
- meta.objects.length === 1 &&
78
- meta.objects[0].type.properties.every(function (p) { return p.key.isSoleLiteral(); }) &&
79
- meta.isRequired() === true &&
80
- meta.nullable === false;
81
- if (onlyObject === false)
82
- insert("target type must be a sole and static object type");
83
- }
84
- //----
85
- // NOT SUPPORTED TYPES
86
- //----
87
- var noSupport = function (msg) { return insert("does not support ".concat(msg)); };
88
- // PROHIBIT ANY TYPE
89
- if (meta.any)
90
- noSupport("any type");
91
- // PROHIBIT FUNCTIONAL TYPE
92
- if (meta.functions.length)
93
- noSupport("functional type");
94
- // PROHIBIT TUPLE TYPE
95
- if (meta.tuples.length)
96
- noSupport("tuple type");
97
- // PROHIBIT SET TYPE
98
- if (meta.sets.length)
99
- noSupport("Set type");
100
- // NATIVE TYPE, BUT NOT Uint8Array
101
- if (meta.natives.length)
74
+ /* -----------------------------------------------------------
75
+ VALIDATORS
76
+ ----------------------------------------------------------- */
77
+ var validate = function () {
78
+ var visited = new WeakSet();
79
+ return function (meta, explore) {
80
+ var e_1, _a, e_2, _b, e_3, _c;
81
+ var errors = [];
82
+ var insert = function (msg) { return errors.push(msg); };
83
+ if (explore.top === true) {
84
+ var onlyObject = meta.size() === 1 &&
85
+ meta.objects.length === 1 &&
86
+ meta.objects[0].type.properties.every(function (p) {
87
+ return p.key.isSoleLiteral();
88
+ }) &&
89
+ meta.isRequired() === true &&
90
+ meta.nullable === false;
91
+ if (onlyObject === false)
92
+ insert("target type must be a sole and static object type");
93
+ }
94
+ if (explore.object !== null && visited.has(explore.object) === false) {
95
+ visited.add(explore.object);
96
+ validateRegularObject({
97
+ object: explore.object,
98
+ errors: errors,
99
+ });
100
+ try {
101
+ for (var _d = __values(explore.object.properties), _e = _d.next(); !_e.done; _e = _d.next()) {
102
+ var p = _e.value;
103
+ validateRegularProperty({
104
+ value: p.value,
105
+ errors: errors,
106
+ });
107
+ }
108
+ }
109
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
110
+ finally {
111
+ try {
112
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
113
+ }
114
+ finally { if (e_1) throw e_1.error; }
115
+ }
116
+ }
117
+ //----
118
+ // NOT SUPPORTED TYPES
119
+ //----
120
+ var noSupport = function (msg) { return insert("does not support ".concat(msg)); };
121
+ // PROHIBIT ANY TYPE
122
+ if (meta.any)
123
+ noSupport("any type");
124
+ // PROHIBIT FUNCTIONAL TYPE
125
+ if (meta.functions.length)
126
+ noSupport("functional type");
127
+ // PROHIBIT TUPLE TYPE
128
+ if (meta.tuples.length)
129
+ noSupport("tuple type");
130
+ // PROHIBIT SET TYPE
131
+ if (meta.sets.length)
132
+ noSupport("Set type");
133
+ // NATIVE TYPE, BUT NOT Uint8Array
134
+ if (meta.natives.length)
135
+ try {
136
+ for (var _f = __values(meta.natives), _g = _f.next(); !_g.done; _g = _f.next()) {
137
+ var native = _g.value;
138
+ if (native.name === "Uint8Array")
139
+ continue;
140
+ var instead = BANNED_NATIVE_TYPES.get(native.name);
141
+ if (instead === undefined)
142
+ noSupport("".concat(native.name, " type"));
143
+ else
144
+ noSupport("".concat(native.name, " type. Use ").concat(instead, " type instead."));
145
+ }
146
+ }
147
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
148
+ finally {
149
+ try {
150
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
151
+ }
152
+ finally { if (e_2) throw e_2.error; }
153
+ }
154
+ //----
155
+ // ATOMIC CASES
156
+ //----
157
+ if (meta.atomics.length) {
158
+ var numbers = ProtobufUtil_1.ProtobufUtil.getNumbers(meta);
159
+ var bigints = ProtobufUtil_1.ProtobufUtil.getBigints(meta);
160
+ try {
161
+ for (var _h = __values(["int64", "uint64"]), _j = _h.next(); !_j.done; _j = _h.next()) {
162
+ var type = _j.value;
163
+ if (numbers.has(type) && bigints.has(type))
164
+ insert("tags.Type<\"".concat(type, "\"> cannot be used in both number and bigint types. Recommend to remove from number type"));
165
+ }
166
+ }
167
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
168
+ finally {
169
+ try {
170
+ if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
171
+ }
172
+ finally { if (e_3) throw e_3.error; }
173
+ }
174
+ }
175
+ //----
176
+ // ARRRAY CASES
177
+ //----
178
+ // DO NOT ALLOW MULTI-DIMENTIONAL ARRAY
179
+ if (meta.arrays.length &&
180
+ meta.arrays.some(function (array) { return !!array.type.value.arrays.length; }))
181
+ noSupport("over two dimenstional array type");
182
+ // CHILD OF ARRAY TYPE MUST BE REQUIRED
183
+ if (meta.arrays.length &&
184
+ meta.arrays.some(function (array) {
185
+ return array.type.value.isRequired() === false ||
186
+ array.type.value.nullable === true;
187
+ }))
188
+ noSupport("optional type in array");
189
+ // UNION IN ARRAY
190
+ if (meta.arrays.length &&
191
+ meta.arrays.some(function (a) {
192
+ var _a;
193
+ return a.type.value.size() > 1 &&
194
+ a.type.value.constants.length !== 1 &&
195
+ ((_a = a.type.value.constants[0]) === null || _a === void 0 ? void 0 : _a.values.length) !== a.type.value.size();
196
+ }))
197
+ noSupport("union type in array");
198
+ // DO DYNAMIC OBJECT IN ARRAY
199
+ if (meta.arrays.length &&
200
+ meta.arrays.some(function (a) {
201
+ return a.type.value.maps.length ||
202
+ (a.type.value.objects.length &&
203
+ a.type.value.objects.some(function (o) { return ProtobufUtil_1.ProtobufUtil.isStaticObject(o.type) === false; }));
204
+ }))
205
+ noSupport("dynamic object in array");
206
+ // UNION WITH ARRAY
207
+ if (meta.size() > 1 && meta.arrays.length)
208
+ noSupport("union type with array type");
209
+ //----
210
+ // OBJECT CASES
211
+ //----
212
+ // EMPTY PROPERTY
213
+ if (meta.objects.length &&
214
+ meta.objects.some(function (obj) { return obj.type.properties.length === 0; }))
215
+ noSupport("empty object type");
216
+ // MULTIPLE DYNAMIC KEY TYPED PROPERTIES
217
+ if (meta.objects.length &&
218
+ meta.objects.some(function (obj) {
219
+ return obj.type.properties.filter(function (p) { return !p.key.isSoleLiteral(); }).length >
220
+ 1;
221
+ }))
222
+ noSupport("object type with multiple dynamic key typed properties. Keep only one.");
223
+ // STATIC AND DYNAMIC PROPERTIES ARE COMPATIBLE
224
+ if (meta.objects.length &&
225
+ meta.objects.some(function (obj) {
226
+ return obj.type.properties.some(function (p) { return p.key.isSoleLiteral(); }) &&
227
+ obj.type.properties.some(function (p) { return !p.key.isSoleLiteral(); });
228
+ }))
229
+ noSupport("object type with mixed static and dynamic key typed properties. Keep statics or dynamic only.");
230
+ // DYNAMIC OBJECT, BUT PROPERTY VALUE TYPE IS ARRAY
231
+ if (meta.objects.length &&
232
+ isDynamicObject(meta.objects[0].type) &&
233
+ meta.objects[0].type.properties.some(function (p) { return !!p.value.arrays.length; }))
234
+ noSupport("dynamic object with array value type");
235
+ // UNION WITH DYNAMIC OBJECTa
236
+ if (meta.size() > 1 &&
237
+ meta.objects.length &&
238
+ isDynamicObject(meta.objects[0].type))
239
+ noSupport("union type with dynamic object type");
240
+ // UNION IN DYNAMIC PROPERTY VALUE
241
+ if (meta.objects.length &&
242
+ meta.objects.some(function (obj) {
243
+ return isDynamicObject(obj.type) &&
244
+ obj.type.properties.some(function (p) { return ProtobufUtil_1.ProtobufUtil.isUnion(p.value); });
245
+ }))
246
+ noSupport("union type in dynamic property");
247
+ //----
248
+ // MAP CASES
249
+ //----
250
+ // KEY TYPE IS UNION
251
+ if (meta.maps.length &&
252
+ meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.isUnion(m.key); }))
253
+ noSupport("union key typed map");
254
+ // KEY TYPE IS NOT ATOMIC
255
+ if (meta.maps.length &&
256
+ meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.getAtomics(m.key).size !== 1; }))
257
+ noSupport("non-atomic key typed map");
258
+ // MAP TYPE, BUT PROPERTY KEY TYPE IS OPTIONAL
259
+ if (meta.maps.length &&
260
+ meta.maps.some(function (m) { return m.key.isRequired() === false || m.key.nullable; }))
261
+ noSupport("optional key typed map");
262
+ // MAP TYPE, BUT VALUE TYPE IS ARRAY
263
+ if (meta.maps.length && meta.maps.some(function (m) { return !!m.value.arrays.length; }))
264
+ noSupport("map type with array value type");
265
+ // UNION WITH MAP
266
+ if (meta.size() > 1 && meta.maps.length)
267
+ noSupport("union type with map type");
268
+ // UNION IN MAP
269
+ if (meta.maps.length &&
270
+ meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.isUnion(m.value); }))
271
+ noSupport("union type in map value type");
272
+ return errors;
273
+ };
274
+ };
275
+ /* -----------------------------------------------------------
276
+ SEQUENE VALIDATOR
277
+ ----------------------------------------------------------- */
278
+ var validateRegularObject = function (next) {
279
+ var e_4, _a;
280
+ var entire = new Map();
281
+ var visitProperty = function (p) {
282
+ var e_5, _a, e_6, _b, e_7, _c, e_8, _d, e_9, _e, e_10, _f, e_11, _g;
283
+ var local = new Set();
284
+ var tagger = function (matrix) {
285
+ matrix.forEach(function (tags) {
286
+ var value = ProtobufUtil_1.ProtobufUtil.getSequence(tags);
287
+ if (value !== null)
288
+ local.add(value);
289
+ });
290
+ };
291
+ try {
292
+ for (var _h = __values(p.value.constants), _j = _h.next(); !_j.done; _j = _h.next()) {
293
+ var c = _j.value;
294
+ try {
295
+ for (var _k = (e_6 = void 0, __values(c.values)), _l = _k.next(); !_l.done; _l = _k.next()) {
296
+ var v = _l.value;
297
+ tagger(v.tags);
298
+ }
299
+ }
300
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
301
+ finally {
302
+ try {
303
+ if (_l && !_l.done && (_b = _k.return)) _b.call(_k);
304
+ }
305
+ finally { if (e_6) throw e_6.error; }
306
+ }
307
+ }
308
+ }
309
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
310
+ finally {
311
+ try {
312
+ if (_j && !_j.done && (_a = _h.return)) _a.call(_h);
313
+ }
314
+ finally { if (e_5) throw e_5.error; }
315
+ }
102
316
  try {
103
- for (var _c = __values(meta.natives), _d = _c.next(); !_d.done; _d = _c.next()) {
104
- var native = _d.value;
105
- if (native === "Uint8Array")
106
- continue;
107
- var instead = BANNED_NATIVE_TYPES.get(native);
108
- if (instead === undefined)
109
- noSupport("".concat(native, " type"));
317
+ for (var _m = __values(p.value.atomics), _o = _m.next(); !_o.done; _o = _m.next()) {
318
+ var a = _o.value;
319
+ tagger(a.tags);
320
+ }
321
+ }
322
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
323
+ finally {
324
+ try {
325
+ if (_o && !_o.done && (_c = _m.return)) _c.call(_m);
326
+ }
327
+ finally { if (e_7) throw e_7.error; }
328
+ }
329
+ try {
330
+ for (var _p = __values(p.value.templates), _q = _p.next(); !_q.done; _q = _p.next()) {
331
+ var t = _q.value;
332
+ tagger(t.tags);
333
+ }
334
+ }
335
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
336
+ finally {
337
+ try {
338
+ if (_q && !_q.done && (_d = _p.return)) _d.call(_p);
339
+ }
340
+ finally { if (e_8) throw e_8.error; }
341
+ }
342
+ try {
343
+ for (var _r = __values(p.value.objects), _s = _r.next(); !_s.done; _s = _r.next()) {
344
+ var o = _s.value;
345
+ tagger(o.tags);
346
+ }
347
+ }
348
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
349
+ finally {
350
+ try {
351
+ if (_s && !_s.done && (_e = _r.return)) _e.call(_r);
352
+ }
353
+ finally { if (e_9) throw e_9.error; }
354
+ }
355
+ try {
356
+ for (var _t = __values(p.value.arrays), _u = _t.next(); !_u.done; _u = _t.next()) {
357
+ var a = _u.value;
358
+ tagger(a.tags);
359
+ }
360
+ }
361
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
362
+ finally {
363
+ try {
364
+ if (_u && !_u.done && (_f = _t.return)) _f.call(_t);
365
+ }
366
+ finally { if (e_10) throw e_10.error; }
367
+ }
368
+ try {
369
+ for (var local_1 = __values(local), local_1_1 = local_1.next(); !local_1_1.done; local_1_1 = local_1.next()) {
370
+ var s = local_1_1.value;
371
+ if (entire.has(s))
372
+ next.errors.push("The Sequence<".concat(s, "> tag is duplicated in two properties (").concat(JSON.stringify(entire.get(s)), " and ").concat(JSON.stringify(p.key.getSoleLiteral()), ")"));
110
373
  else
111
- noSupport("".concat(native, " type. Use ").concat(instead, " type instead."));
374
+ entire.set(s, p.key.getSoleLiteral());
112
375
  }
113
376
  }
114
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
377
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
115
378
  finally {
116
379
  try {
117
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
118
- }
119
- finally { if (e_1) throw e_1.error; }
120
- }
121
- //----
122
- // ATOMIC CASES
123
- //----
124
- if (meta.atomics.length) {
125
- var numbers = ProtobufUtil_1.ProtobufUtil.getNumbers(meta);
126
- var bigints = ProtobufUtil_1.ProtobufUtil.getBigints(meta);
127
- var _loop_1 = function (type) {
128
- if (numbers.some(function (n) { return n === type; }) && bigints.some(function (b) { return b === type; }))
129
- insert("tags.Type<\"".concat(type, "\"> cannot be used in both number and bigint types. Recommend to remove from number type"));
130
- };
380
+ if (local_1_1 && !local_1_1.done && (_g = local_1.return)) _g.call(local_1);
381
+ }
382
+ finally { if (e_11) throw e_11.error; }
383
+ }
384
+ };
385
+ try {
386
+ for (var _b = __values(next.object.properties), _c = _b.next(); !_c.done; _c = _b.next()) {
387
+ var p = _c.value;
388
+ visitProperty(p);
389
+ }
390
+ }
391
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
392
+ finally {
393
+ try {
394
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
395
+ }
396
+ finally { if (e_4) throw e_4.error; }
397
+ }
398
+ };
399
+ var validateRegularProperty = function (next) {
400
+ var e_12, _a, e_13, _b, e_14, _c, e_15, _d, e_16, _e;
401
+ var expected = 0;
402
+ var sequences = new Set();
403
+ var add = function (value) {
404
+ if (sequences.has(value))
405
+ return false;
406
+ sequences.add(value);
407
+ ++expected;
408
+ return true;
409
+ };
410
+ try {
411
+ for (var _f = __values([
412
+ validateBooleanSequence,
413
+ validateNumericSequences({
414
+ type: "bigint",
415
+ default: "int64",
416
+ categories: BIGINT_TYPES,
417
+ }),
418
+ validateNumericSequences({
419
+ type: "number",
420
+ default: "double",
421
+ categories: NUMBER_TYPES,
422
+ }),
423
+ validateStringSequence,
424
+ ]), _g = _f.next(); !_g.done; _g = _f.next()) {
425
+ var validator = _g.value;
426
+ validator({ metadata: next.value, errors: next.errors, add: add });
427
+ }
428
+ }
429
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
430
+ finally {
431
+ try {
432
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
433
+ }
434
+ finally { if (e_12) throw e_12.error; }
435
+ }
436
+ try {
437
+ for (var _h = __values(next.value.arrays), _j = _h.next(); !_j.done; _j = _h.next()) {
438
+ var array = _j.value;
439
+ validateInstanceSequence({
440
+ type: "array",
441
+ tags: array.tags,
442
+ errors: next.errors,
443
+ add: add,
444
+ });
445
+ }
446
+ }
447
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
448
+ finally {
449
+ try {
450
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
451
+ }
452
+ finally { if (e_13) throw e_13.error; }
453
+ }
454
+ try {
455
+ for (var _k = __values(next.value.objects), _l = _k.next(); !_l.done; _l = _k.next()) {
456
+ var object = _l.value;
457
+ validateInstanceSequence({
458
+ type: "object",
459
+ tags: object.tags,
460
+ errors: next.errors,
461
+ add: add,
462
+ });
463
+ }
464
+ }
465
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
466
+ finally {
467
+ try {
468
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
469
+ }
470
+ finally { if (e_14) throw e_14.error; }
471
+ }
472
+ try {
473
+ for (var _m = __values(next.value.maps), _o = _m.next(); !_o.done; _o = _m.next()) {
474
+ var map = _o.value;
475
+ validateInstanceSequence({
476
+ type: "map",
477
+ tags: map.tags,
478
+ errors: next.errors,
479
+ add: add,
480
+ });
481
+ }
482
+ }
483
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
484
+ finally {
485
+ try {
486
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
487
+ }
488
+ finally { if (e_15) throw e_15.error; }
489
+ }
490
+ try {
491
+ for (var _p = __values(next.value.natives), _q = _p.next(); !_q.done; _q = _p.next()) {
492
+ var native = _q.value;
493
+ if (native.name === "Uint8Array")
494
+ validateInstanceSequence({
495
+ type: "Uint8Array",
496
+ tags: native.tags,
497
+ errors: next.errors,
498
+ add: add,
499
+ });
500
+ }
501
+ }
502
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
503
+ finally {
131
504
  try {
132
- for (var _e = __values(["int64", "uint64"]), _f = _e.next(); !_f.done; _f = _e.next()) {
133
- var type = _f.value;
134
- _loop_1(type);
505
+ if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
506
+ }
507
+ finally { if (e_16) throw e_16.error; }
508
+ }
509
+ };
510
+ var validateBooleanSequence = function (next) {
511
+ var e_17, _a, e_18, _b, e_19, _c;
512
+ // PREPARE EMPLACER
513
+ var unique = new Set();
514
+ var expected = 0;
515
+ var actual = 0;
516
+ var emplace = function (matrix) {
517
+ var e_20, _a, e_21, _b;
518
+ try {
519
+ for (var matrix_1 = __values(matrix), matrix_1_1 = matrix_1.next(); !matrix_1_1.done; matrix_1_1 = matrix_1.next()) {
520
+ var tags = matrix_1_1.value;
521
+ try {
522
+ for (var tags_1 = (e_21 = void 0, __values(tags)), tags_1_1 = tags_1.next(); !tags_1_1.done; tags_1_1 = tags_1.next()) {
523
+ var tag = tags_1_1.value;
524
+ var sequence = ProtobufUtil_1.ProtobufUtil.getSequence([tag]);
525
+ if (sequence !== null) {
526
+ unique.add(sequence);
527
+ ++actual;
528
+ }
529
+ ++expected;
530
+ }
531
+ }
532
+ catch (e_21_1) { e_21 = { error: e_21_1 }; }
533
+ finally {
534
+ try {
535
+ if (tags_1_1 && !tags_1_1.done && (_b = tags_1.return)) _b.call(tags_1);
536
+ }
537
+ finally { if (e_21) throw e_21.error; }
538
+ }
135
539
  }
136
540
  }
137
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
541
+ catch (e_20_1) { e_20 = { error: e_20_1 }; }
138
542
  finally {
139
543
  try {
140
- if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
544
+ if (matrix_1_1 && !matrix_1_1.done && (_a = matrix_1.return)) _a.call(matrix_1);
141
545
  }
142
- finally { if (e_2) throw e_2.error; }
546
+ finally { if (e_20) throw e_20.error; }
547
+ }
548
+ };
549
+ try {
550
+ // GATHER SEQUENCE TAGS
551
+ for (var _d = __values(next.metadata.atomics), _e = _d.next(); !_e.done; _e = _d.next()) {
552
+ var atomic = _e.value;
553
+ if (atomic.type === "boolean")
554
+ emplace(atomic.tags);
555
+ }
556
+ }
557
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
558
+ finally {
559
+ try {
560
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
561
+ }
562
+ finally { if (e_17) throw e_17.error; }
563
+ }
564
+ try {
565
+ for (var _f = __values(next.metadata.constants), _g = _f.next(); !_g.done; _g = _f.next()) {
566
+ var constant = _g.value;
567
+ if (constant.type === "boolean")
568
+ try {
569
+ for (var _h = (e_19 = void 0, __values(constant.values)), _j = _h.next(); !_j.done; _j = _h.next()) {
570
+ var value = _j.value;
571
+ emplace(value.tags);
572
+ }
573
+ }
574
+ catch (e_19_1) { e_19 = { error: e_19_1 }; }
575
+ finally {
576
+ try {
577
+ if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
578
+ }
579
+ finally { if (e_19) throw e_19.error; }
580
+ }
581
+ }
582
+ }
583
+ catch (e_18_1) { e_18 = { error: e_18_1 }; }
584
+ finally {
585
+ try {
586
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
143
587
  }
588
+ finally { if (e_18) throw e_18.error; }
589
+ }
590
+ // PREDICATE
591
+ if (unique.size && actual !== expected)
592
+ next.errors.push("The sequence tag must be declared in every union type members");
593
+ else if (unique.size > 1)
594
+ next.errors.push("The sequence tag value must be the same in boolean type (including literal types)");
595
+ else if (unique.size === 1) {
596
+ var value = unique.values().next().value;
597
+ if (next.add(value) === false)
598
+ next.errors.push("The sequence tag value ".concat(value, " in boolean type is duplicated with other types"));
144
599
  }
145
- //----
146
- // ARRRAY CASES
147
- //----
148
- // DO NOT ALLOW MULTI-DIMENTIONAL ARRAY
149
- if (meta.arrays.length &&
150
- meta.arrays.some(function (array) { return !!array.type.value.arrays.length; }))
151
- noSupport("over two dimenstional array type");
152
- // CHILD OF ARRAY TYPE MUST BE REQUIRED
153
- if (meta.arrays.length &&
154
- meta.arrays.some(function (array) {
155
- return array.type.value.isRequired() === false ||
156
- array.type.value.nullable === true;
157
- }))
158
- noSupport("optional type in array");
159
- // UNION IN ARRAY
160
- if (meta.arrays.length &&
161
- meta.arrays.some(function (a) {
600
+ };
601
+ var validateNumericSequences = function (config) {
602
+ return function (next) {
603
+ var e_22, _a, e_23, _b, e_24, _c, e_25, _d;
604
+ // FIND TYPE CATEGORIES
605
+ var categories = new Set();
606
+ var getType = function (tags) {
162
607
  var _a;
163
- return a.type.value.size() > 1 &&
164
- a.type.value.constants.length !== 1 &&
165
- ((_a = a.type.value.constants[0]) === null || _a === void 0 ? void 0 : _a.values.length) !== a.type.value.size();
166
- }))
167
- noSupport("union type in array");
168
- // DO DYNAMIC OBJECT IN ARRAY
169
- if (meta.arrays.length &&
170
- meta.arrays.some(function (a) {
171
- return a.type.value.maps.length ||
172
- (a.type.value.objects.length &&
173
- a.type.value.objects.some(function (o) { return ProtobufUtil_1.ProtobufUtil.isStaticObject(o.type) === false; }));
174
- }))
175
- noSupport("dynamic object in array");
176
- // UNION WITH ARRAY
177
- if (meta.size() > 1 && meta.arrays.length)
178
- noSupport("union type with array type");
179
- //----
180
- // OBJECT CASES
181
- //----
182
- // EMPTY PROPERTY
183
- if (meta.objects.length &&
184
- meta.objects.some(function (obj) { return obj.type.properties.length === 0; }))
185
- noSupport("empty object type");
186
- // MULTIPLE DYNAMIC KEY TYPED PROPERTIES
187
- if (meta.objects.length &&
188
- meta.objects.some(function (obj) {
189
- return obj.type.properties.filter(function (p) { return !p.key.isSoleLiteral(); }).length > 1;
190
- }))
191
- noSupport("object type with multiple dynamic key typed properties. Keep only one.");
192
- // STATIC AND DYNAMIC PROPERTIES ARE COMPATIBLE
193
- if (meta.objects.length &&
194
- meta.objects.some(function (obj) {
195
- return obj.type.properties.some(function (p) { return p.key.isSoleLiteral(); }) &&
196
- obj.type.properties.some(function (p) { return !p.key.isSoleLiteral(); });
197
- }))
198
- noSupport("object type with mixed static and dynamic key typed properties. Keep statics or dynamic only.");
199
- // DYNAMIC OBJECT, BUT PROPERTY VALUE TYPE IS ARRAY
200
- if (meta.objects.length &&
201
- isDynamicObject(meta.objects[0].type) &&
202
- meta.objects[0].type.properties.some(function (p) { return !!p.value.arrays.length; }))
203
- noSupport("dynamic object with array value type");
204
- // UNION WITH DYNAMIC OBJECTa
205
- if (meta.size() > 1 &&
206
- meta.objects.length &&
207
- isDynamicObject(meta.objects[0].type))
208
- noSupport("union type with dynamic object type");
209
- // UNION IN DYNAMIC PROPERTY VALUE
210
- if (meta.objects.length &&
211
- meta.objects.some(function (obj) {
212
- return isDynamicObject(obj.type) &&
213
- obj.type.properties.some(function (p) { return ProtobufUtil_1.ProtobufUtil.isUnion(p.value); });
214
- }))
215
- noSupport("union type in dynamic property");
216
- //----
217
- // MAP CASES
218
- //----
219
- // KEY TYPE IS UNION
220
- if (meta.maps.length && meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.isUnion(m.key); }))
221
- noSupport("union key typed map");
222
- // KEY TYPE IS NOT ATOMIC
223
- if (meta.maps.length &&
224
- meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.getAtomics(m.key).length !== 1; }))
225
- noSupport("non-atomic key typed map");
226
- // MAP TYPE, BUT PROPERTY KEY TYPE IS OPTIONAL
227
- if (meta.maps.length &&
228
- meta.maps.some(function (m) { return m.key.isRequired() === false || m.key.nullable; }))
229
- noSupport("optional key typed map");
230
- // MAP TYPE, BUT VALUE TYPE IS ARRAY
231
- if (meta.maps.length && meta.maps.some(function (m) { return !!m.value.arrays.length; }))
232
- noSupport("map type with array value type");
233
- // UNION WITH MAP
234
- if (meta.size() > 1 && meta.maps.length)
235
- noSupport("union type with map type");
236
- // UNION IN MAP
237
- if (meta.maps.length &&
238
- meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.isUnion(m.value); }))
239
- noSupport("union type in map value type");
240
- return errors;
608
+ var found = tags.find(function (t) { return t.kind === "type" && config.categories.has(t.value); });
609
+ return (_a = found === null || found === void 0 ? void 0 : found.value) !== null && _a !== void 0 ? _a : config.default;
610
+ };
611
+ var exploreCategory = function (matrix) {
612
+ var e_26, _a;
613
+ try {
614
+ for (var matrix_2 = __values(matrix), matrix_2_1 = matrix_2.next(); !matrix_2_1.done; matrix_2_1 = matrix_2.next()) {
615
+ var tags = matrix_2_1.value;
616
+ categories.add(getType(tags));
617
+ }
618
+ }
619
+ catch (e_26_1) { e_26 = { error: e_26_1 }; }
620
+ finally {
621
+ try {
622
+ if (matrix_2_1 && !matrix_2_1.done && (_a = matrix_2.return)) _a.call(matrix_2);
623
+ }
624
+ finally { if (e_26) throw e_26.error; }
625
+ }
626
+ };
627
+ try {
628
+ for (var _e = __values(next.metadata.atomics), _f = _e.next(); !_f.done; _f = _e.next()) {
629
+ var atomic = _f.value;
630
+ if (atomic.type === config.type)
631
+ exploreCategory(atomic.tags);
632
+ }
633
+ }
634
+ catch (e_22_1) { e_22 = { error: e_22_1 }; }
635
+ finally {
636
+ try {
637
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
638
+ }
639
+ finally { if (e_22) throw e_22.error; }
640
+ }
641
+ try {
642
+ for (var _g = __values(next.metadata.constants), _h = _g.next(); !_h.done; _h = _g.next()) {
643
+ var constant = _h.value;
644
+ if (constant.type === config.type)
645
+ try {
646
+ for (var _j = (e_24 = void 0, __values(constant.values)), _k = _j.next(); !_k.done; _k = _j.next()) {
647
+ var value = _k.value;
648
+ exploreCategory(value.tags);
649
+ }
650
+ }
651
+ catch (e_24_1) { e_24 = { error: e_24_1 }; }
652
+ finally {
653
+ try {
654
+ if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
655
+ }
656
+ finally { if (e_24) throw e_24.error; }
657
+ }
658
+ }
659
+ }
660
+ catch (e_23_1) { e_23 = { error: e_23_1 }; }
661
+ finally {
662
+ try {
663
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
664
+ }
665
+ finally { if (e_23) throw e_23.error; }
666
+ }
667
+ var _loop_1 = function (category) {
668
+ var e_27, _l, e_28, _m, e_29, _o, e_30, _p, e_31, _q;
669
+ var unique = new Set();
670
+ var expected = 0;
671
+ var actual = 0;
672
+ var emplace = function (tags) {
673
+ var sequence = ProtobufUtil_1.ProtobufUtil.getSequence(tags);
674
+ if (sequence !== null) {
675
+ unique.add(sequence);
676
+ ++actual;
677
+ }
678
+ ++expected;
679
+ };
680
+ try {
681
+ for (var _r = (e_27 = void 0, __values(next.metadata.atomics)), _s = _r.next(); !_s.done; _s = _r.next()) {
682
+ var atomic = _s.value;
683
+ if (atomic.type === config.type)
684
+ try {
685
+ for (var _t = (e_28 = void 0, __values(atomic.tags)), _u = _t.next(); !_u.done; _u = _t.next()) {
686
+ var tags = _u.value;
687
+ if (getType(tags) === category)
688
+ emplace(tags);
689
+ }
690
+ }
691
+ catch (e_28_1) { e_28 = { error: e_28_1 }; }
692
+ finally {
693
+ try {
694
+ if (_u && !_u.done && (_m = _t.return)) _m.call(_t);
695
+ }
696
+ finally { if (e_28) throw e_28.error; }
697
+ }
698
+ }
699
+ }
700
+ catch (e_27_1) { e_27 = { error: e_27_1 }; }
701
+ finally {
702
+ try {
703
+ if (_s && !_s.done && (_l = _r.return)) _l.call(_r);
704
+ }
705
+ finally { if (e_27) throw e_27.error; }
706
+ }
707
+ try {
708
+ for (var _v = (e_29 = void 0, __values(next.metadata.constants)), _w = _v.next(); !_w.done; _w = _v.next()) {
709
+ var constant = _w.value;
710
+ if (constant.type === config.type)
711
+ try {
712
+ for (var _x = (e_30 = void 0, __values(constant.values)), _y = _x.next(); !_y.done; _y = _x.next()) {
713
+ var value = _y.value;
714
+ try {
715
+ for (var _z = (e_31 = void 0, __values(value.tags)), _0 = _z.next(); !_0.done; _0 = _z.next()) {
716
+ var tags = _0.value;
717
+ if (getType(tags) === category)
718
+ emplace(tags);
719
+ }
720
+ }
721
+ catch (e_31_1) { e_31 = { error: e_31_1 }; }
722
+ finally {
723
+ try {
724
+ if (_0 && !_0.done && (_q = _z.return)) _q.call(_z);
725
+ }
726
+ finally { if (e_31) throw e_31.error; }
727
+ }
728
+ }
729
+ }
730
+ catch (e_30_1) { e_30 = { error: e_30_1 }; }
731
+ finally {
732
+ try {
733
+ if (_y && !_y.done && (_p = _x.return)) _p.call(_x);
734
+ }
735
+ finally { if (e_30) throw e_30.error; }
736
+ }
737
+ }
738
+ }
739
+ catch (e_29_1) { e_29 = { error: e_29_1 }; }
740
+ finally {
741
+ try {
742
+ if (_w && !_w.done && (_o = _v.return)) _o.call(_v);
743
+ }
744
+ finally { if (e_29) throw e_29.error; }
745
+ }
746
+ if (unique.size && actual !== expected) {
747
+ console.log(category, actual, expected, unique);
748
+ next.errors.push("The sequence tag must be declared in every union type members");
749
+ }
750
+ else if (unique.size > 1)
751
+ next.errors.push("The sequence tag value must be the same in ".concat(config.type, " type (including literal types)"));
752
+ else if (unique.size === 1) {
753
+ var value = unique.values().next().value;
754
+ if (next.add(value) === false)
755
+ next.errors.push("The sequence tag value ".concat(value, " in ").concat(config.type, " type is duplicated with other types"));
756
+ }
757
+ };
758
+ try {
759
+ // ITERATE TYPE CATEGORIES
760
+ for (var categories_1 = __values(categories), categories_1_1 = categories_1.next(); !categories_1_1.done; categories_1_1 = categories_1.next()) {
761
+ var category = categories_1_1.value;
762
+ _loop_1(category);
763
+ }
764
+ }
765
+ catch (e_25_1) { e_25 = { error: e_25_1 }; }
766
+ finally {
767
+ try {
768
+ if (categories_1_1 && !categories_1_1.done && (_d = categories_1.return)) _d.call(categories_1);
769
+ }
770
+ finally { if (e_25) throw e_25.error; }
771
+ }
772
+ };
773
+ };
774
+ var validateStringSequence = function (next) {
775
+ var e_32, _a, e_33, _b, e_34, _c, e_35, _d;
776
+ var unique = new Set();
777
+ var expected = 0;
778
+ var actual = 0;
779
+ var emplace = function (matrix) {
780
+ var e_36, _a, e_37, _b;
781
+ try {
782
+ for (var matrix_3 = __values(matrix), matrix_3_1 = matrix_3.next(); !matrix_3_1.done; matrix_3_1 = matrix_3.next()) {
783
+ var tags = matrix_3_1.value;
784
+ try {
785
+ for (var tags_2 = (e_37 = void 0, __values(tags)), tags_2_1 = tags_2.next(); !tags_2_1.done; tags_2_1 = tags_2.next()) {
786
+ var tag = tags_2_1.value;
787
+ var sequence = ProtobufUtil_1.ProtobufUtil.getSequence([tag]);
788
+ if (sequence !== null) {
789
+ unique.add(sequence);
790
+ ++actual;
791
+ }
792
+ ++expected;
793
+ }
794
+ }
795
+ catch (e_37_1) { e_37 = { error: e_37_1 }; }
796
+ finally {
797
+ try {
798
+ if (tags_2_1 && !tags_2_1.done && (_b = tags_2.return)) _b.call(tags_2);
799
+ }
800
+ finally { if (e_37) throw e_37.error; }
801
+ }
802
+ }
803
+ }
804
+ catch (e_36_1) { e_36 = { error: e_36_1 }; }
805
+ finally {
806
+ try {
807
+ if (matrix_3_1 && !matrix_3_1.done && (_a = matrix_3.return)) _a.call(matrix_3);
808
+ }
809
+ finally { if (e_36) throw e_36.error; }
810
+ }
811
+ };
812
+ try {
813
+ for (var _e = __values(next.metadata.atomics), _f = _e.next(); !_f.done; _f = _e.next()) {
814
+ var atomic = _f.value;
815
+ if (atomic.type === "string")
816
+ emplace(atomic.tags);
817
+ }
818
+ }
819
+ catch (e_32_1) { e_32 = { error: e_32_1 }; }
820
+ finally {
821
+ try {
822
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
823
+ }
824
+ finally { if (e_32) throw e_32.error; }
825
+ }
826
+ try {
827
+ for (var _g = __values(next.metadata.constants), _h = _g.next(); !_h.done; _h = _g.next()) {
828
+ var constant = _h.value;
829
+ if (constant.type === "string")
830
+ try {
831
+ for (var _j = (e_34 = void 0, __values(constant.values)), _k = _j.next(); !_k.done; _k = _j.next()) {
832
+ var value = _k.value;
833
+ emplace(value.tags);
834
+ }
835
+ }
836
+ catch (e_34_1) { e_34 = { error: e_34_1 }; }
837
+ finally {
838
+ try {
839
+ if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
840
+ }
841
+ finally { if (e_34) throw e_34.error; }
842
+ }
843
+ }
844
+ }
845
+ catch (e_33_1) { e_33 = { error: e_33_1 }; }
846
+ finally {
847
+ try {
848
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
849
+ }
850
+ finally { if (e_33) throw e_33.error; }
851
+ }
852
+ try {
853
+ for (var _l = __values(next.metadata.templates), _m = _l.next(); !_m.done; _m = _l.next()) {
854
+ var template = _m.value;
855
+ emplace(template.tags);
856
+ }
857
+ }
858
+ catch (e_35_1) { e_35 = { error: e_35_1 }; }
859
+ finally {
860
+ try {
861
+ if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
862
+ }
863
+ finally { if (e_35) throw e_35.error; }
864
+ }
865
+ if (unique.size && actual !== expected)
866
+ next.errors.push("The sequence tag must be declared in every union type members");
867
+ else if (unique.size > 1)
868
+ next.errors.push("The sequence tag value must be the same in string types including literal and template types");
869
+ else if (unique.size === 1) {
870
+ var value = unique.values().next().value;
871
+ if (next.add(value) === false)
872
+ next.errors.push("The sequence tag value ".concat(value, " in string type is duplicated with other types"));
873
+ }
874
+ };
875
+ var validateInstanceSequence = function (next) {
876
+ var e_38, _a;
877
+ var unique = new Set();
878
+ var count = 0;
879
+ try {
880
+ for (var _b = __values(next.tags), _c = _b.next(); !_c.done; _c = _b.next()) {
881
+ var tags = _c.value;
882
+ var value = ProtobufUtil_1.ProtobufUtil.getSequence(tags);
883
+ if (value === null)
884
+ continue;
885
+ unique.add(value);
886
+ ++count;
887
+ }
888
+ }
889
+ catch (e_38_1) { e_38 = { error: e_38_1 }; }
890
+ finally {
891
+ try {
892
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
893
+ }
894
+ finally { if (e_38) throw e_38.error; }
895
+ }
896
+ if (unique.size && count !== next.tags.length)
897
+ next.errors.push("The sequence tag must be declared in every union type members");
898
+ else if (unique.size > 1)
899
+ next.errors.push("The sequence tag value must be the same in ".concat(next.type === "array" ? "an array" : "object", " type."));
900
+ else if (unique.size === 1) {
901
+ var value = unique.values().next().value;
902
+ if (next.add(value) === false)
903
+ next.errors.push("The sequence tag value ".concat(value, " in ").concat(next.type, " type is duplicated with other types"));
904
+ }
241
905
  };
242
906
  })(ProtobufFactory || (exports.ProtobufFactory = ProtobufFactory = {}));
243
907
  var isDynamicObject = function (obj) {
@@ -268,4 +932,13 @@ var BANNED_NATIVE_TYPES = new Map(__spreadArray(__spreadArray([
268
932
  ["WeakSet", "Array"],
269
933
  ["WeakMap", "Map"],
270
934
  ], false));
935
+ var NUMBER_TYPES = new Set([
936
+ "int32",
937
+ "uint32",
938
+ "int64",
939
+ "uint64",
940
+ "float",
941
+ "double",
942
+ ]);
943
+ var BIGINT_TYPES = new Set(["int64", "uint64"]);
271
944
  //# sourceMappingURL=ProtobufFactory.js.map