typia 7.0.0-dev.20241012 → 7.0.0-dev.20241019

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 (256) 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 +1266 -160
  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 +6 -3
  47. package/lib/programmers/helpers/ProtobufUtil.js +216 -93
  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 +169 -220
  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.d.ts +1 -1
  99. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +53 -128
  100. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  101. package/lib/schemas/metadata/IMetadata.d.ts +14 -18
  102. package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -7
  103. package/lib/schemas/metadata/IMetadataAliasType.d.ts +10 -0
  104. package/lib/schemas/metadata/IMetadataAliasType.js +3 -0
  105. package/lib/schemas/metadata/IMetadataAliasType.js.map +1 -0
  106. package/lib/schemas/metadata/IMetadataComponents.d.ts +2 -2
  107. package/lib/schemas/metadata/IMetadataConstantValue.d.ts +1 -1
  108. package/lib/schemas/metadata/IMetadataDictionary.d.ts +2 -2
  109. package/lib/schemas/metadata/IMetadataMap.d.ts +7 -0
  110. package/lib/schemas/metadata/{IMetadataEntry.js → IMetadataMap.js} +1 -1
  111. package/lib/schemas/metadata/IMetadataMap.js.map +1 -0
  112. package/lib/schemas/metadata/IMetadataNative.d.ts +5 -0
  113. package/lib/schemas/metadata/IMetadataNative.js +3 -0
  114. package/lib/schemas/metadata/IMetadataNative.js.map +1 -0
  115. package/lib/schemas/metadata/IMetadataSet.d.ts +6 -0
  116. package/lib/schemas/metadata/IMetadataSet.js +3 -0
  117. package/lib/schemas/metadata/IMetadataSet.js.map +1 -0
  118. package/lib/schemas/metadata/IMetadataTemplate.d.ts +1 -1
  119. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +1 -1
  120. package/lib/schemas/metadata/Metadata.d.ts +6 -9
  121. package/lib/schemas/metadata/Metadata.js +136 -98
  122. package/lib/schemas/metadata/Metadata.js.map +1 -1
  123. package/lib/schemas/metadata/MetadataAlias.d.ts +8 -11
  124. package/lib/schemas/metadata/MetadataAlias.js +48 -33
  125. package/lib/schemas/metadata/MetadataAlias.js.map +1 -1
  126. package/lib/schemas/metadata/MetadataAliasType.d.ts +16 -0
  127. package/lib/schemas/metadata/MetadataAliasType.js +51 -0
  128. package/lib/schemas/metadata/MetadataAliasType.js.map +1 -0
  129. package/lib/schemas/metadata/MetadataComponents.d.ts +2 -2
  130. package/lib/schemas/metadata/MetadataComponents.js +2 -2
  131. package/lib/schemas/metadata/MetadataComponents.js.map +1 -1
  132. package/lib/schemas/metadata/MetadataConstantValue.d.ts +1 -1
  133. package/lib/schemas/metadata/MetadataMap.d.ts +14 -0
  134. package/lib/schemas/metadata/MetadataMap.js +66 -0
  135. package/lib/schemas/metadata/MetadataMap.js.map +1 -0
  136. package/lib/schemas/metadata/MetadataNative.d.ts +12 -0
  137. package/lib/schemas/metadata/MetadataNative.js +65 -0
  138. package/lib/schemas/metadata/MetadataNative.js.map +1 -0
  139. package/lib/schemas/metadata/MetadataProperty.d.ts +2 -0
  140. package/lib/schemas/metadata/MetadataProperty.js.map +1 -1
  141. package/lib/schemas/metadata/MetadataSet.d.ts +13 -0
  142. package/lib/schemas/metadata/MetadataSet.js +64 -0
  143. package/lib/schemas/metadata/MetadataSet.js.map +1 -0
  144. package/lib/schemas/metadata/MetadataTemplate.d.ts +1 -1
  145. package/lib/schemas/protobuf/IProtobufProperty.d.ts +5 -0
  146. package/lib/schemas/protobuf/IProtobufProperty.js +3 -0
  147. package/lib/schemas/protobuf/IProtobufProperty.js.map +1 -0
  148. package/lib/schemas/protobuf/IProtobufPropertyType.d.ts +28 -0
  149. package/lib/schemas/protobuf/IProtobufPropertyType.js +3 -0
  150. package/lib/schemas/protobuf/IProtobufPropertyType.js.map +1 -0
  151. package/lib/schemas/protobuf/IProtobufSchema.d.ts +38 -0
  152. package/lib/schemas/protobuf/IProtobufSchema.js +3 -0
  153. package/lib/schemas/protobuf/IProtobufSchema.js.map +1 -0
  154. package/lib/tags/Example.d.ts +2 -2
  155. package/lib/tags/Examples.d.ts +2 -2
  156. package/lib/tags/JsonSchemaPlugin.d.ts +1 -1
  157. package/lib/tags/Sequence.d.ts +9 -0
  158. package/lib/tags/Sequence.js +3 -0
  159. package/lib/tags/Sequence.js.map +1 -0
  160. package/lib/tags/TagBase.d.ts +1 -1
  161. package/lib/tags/index.d.ts +1 -0
  162. package/lib/tags/index.js +1 -0
  163. package/lib/tags/index.js.map +1 -1
  164. package/lib/utils/{NameEncoder.d.ts → ProtobufNameEncoder.d.ts} +1 -1
  165. package/lib/utils/{NameEncoder.js → ProtobufNameEncoder.js} +7 -7
  166. package/lib/utils/ProtobufNameEncoder.js.map +1 -0
  167. package/package.json +1 -1
  168. package/src/factories/JsonMetadataFactory.ts +5 -2
  169. package/src/factories/MetadataCollection.ts +6 -6
  170. package/src/factories/MetadataFactory.ts +7 -7
  171. package/src/factories/MetadataTypeTagFactory.ts +31 -6
  172. package/src/factories/ProtobufFactory.ts +794 -177
  173. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +1 -0
  174. package/src/factories/internal/metadata/MetadataHelper.ts +1 -1
  175. package/src/factories/internal/metadata/emplace_metadata_alias.ts +2 -2
  176. package/src/factories/internal/metadata/emplace_metadata_object.ts +5 -5
  177. package/src/factories/internal/metadata/explore_metadata.ts +1 -0
  178. package/src/factories/internal/metadata/iterate_metadata.ts +1 -1
  179. package/src/factories/internal/metadata/iterate_metadata_alias.ts +9 -4
  180. package/src/factories/internal/metadata/iterate_metadata_collection.ts +6 -6
  181. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +163 -181
  182. package/src/factories/internal/metadata/iterate_metadata_map.ts +5 -2
  183. package/src/factories/internal/metadata/iterate_metadata_native.ts +20 -2
  184. package/src/factories/internal/metadata/iterate_metadata_set.ts +27 -11
  185. package/src/factories/internal/metadata/iterate_metadata_sort.ts +1 -1
  186. package/src/factories/internal/metadata/iterate_metadata_template.ts +1 -3
  187. package/src/programmers/CheckerProgrammer.ts +9 -7
  188. package/src/programmers/RandomProgrammer.ts +16 -14
  189. package/src/programmers/helpers/AtomicPredicator.ts +3 -3
  190. package/src/programmers/helpers/ProtobufUtil.ts +147 -44
  191. package/src/programmers/helpers/UnionExplorer.ts +62 -62
  192. package/src/programmers/http/HttpFormDataProgrammer.ts +10 -6
  193. package/src/programmers/internal/application_escaped.ts +2 -2
  194. package/src/programmers/internal/application_v30_alias.ts +18 -12
  195. package/src/programmers/internal/application_v30_native.ts +22 -12
  196. package/src/programmers/internal/application_v30_object.ts +23 -8
  197. package/src/programmers/internal/application_v30_schema.ts +31 -34
  198. package/src/programmers/internal/application_v31_alias.ts +16 -13
  199. package/src/programmers/internal/application_v31_native.ts +22 -12
  200. package/src/programmers/internal/application_v31_object.ts +19 -8
  201. package/src/programmers/internal/application_v31_schema.ts +26 -29
  202. package/src/programmers/internal/check_dynamic_key.ts +4 -4
  203. package/src/programmers/internal/check_native.ts +4 -4
  204. package/src/programmers/internal/check_union_array_like.ts +2 -1
  205. package/src/programmers/internal/llm_schema_escaped.ts +2 -2
  206. package/src/programmers/internal/llm_schema_object.ts +21 -18
  207. package/src/programmers/internal/llm_schema_station.ts +9 -11
  208. package/src/programmers/json/JsonSchemasProgrammer.ts +5 -5
  209. package/src/programmers/json/JsonStringifyProgrammer.ts +5 -5
  210. package/src/programmers/llm/LlmSchemaProgrammer.ts +6 -6
  211. package/src/programmers/misc/MiscCloneProgrammer.ts +11 -7
  212. package/src/programmers/misc/MiscPruneProgrammer.ts +1 -1
  213. package/src/programmers/notations/NotationGeneralProgrammer.ts +10 -6
  214. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +254 -308
  215. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +11 -8
  216. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +73 -95
  217. package/src/schemas/metadata/IMetadata.ts +35 -39
  218. package/src/schemas/metadata/IMetadataAlias.ts +6 -12
  219. package/src/schemas/metadata/IMetadataAliasType.ts +12 -0
  220. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  221. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  222. package/src/schemas/metadata/IMetadataConstantValue.ts +1 -1
  223. package/src/schemas/metadata/IMetadataDictionary.ts +2 -2
  224. package/src/schemas/metadata/IMetadataMap.ts +8 -0
  225. package/src/schemas/metadata/IMetadataNative.ts +6 -0
  226. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  227. package/src/schemas/metadata/IMetadataSet.ts +7 -0
  228. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  229. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  230. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  231. package/src/schemas/metadata/Metadata.ts +100 -47
  232. package/src/schemas/metadata/MetadataAlias.ts +46 -61
  233. package/src/schemas/metadata/MetadataAliasType.ts +63 -0
  234. package/src/schemas/metadata/MetadataArray.ts +49 -49
  235. package/src/schemas/metadata/MetadataComponents.ts +3 -3
  236. package/src/schemas/metadata/MetadataConstantValue.ts +1 -1
  237. package/src/schemas/metadata/MetadataMap.ts +48 -0
  238. package/src/schemas/metadata/MetadataNative.ts +44 -0
  239. package/src/schemas/metadata/MetadataProperty.ts +3 -0
  240. package/src/schemas/metadata/MetadataSet.ts +45 -0
  241. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  242. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  243. package/src/schemas/protobuf/IProtobufProperty.ts +6 -0
  244. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -0
  245. package/src/schemas/protobuf/IProtobufSchema.ts +50 -0
  246. package/src/tags/Example.ts +24 -17
  247. package/src/tags/Examples.ts +16 -16
  248. package/src/tags/JsonSchemaPlugin.ts +8 -8
  249. package/src/tags/Sequence.ts +10 -0
  250. package/src/tags/TagBase.ts +82 -76
  251. package/src/tags/index.ts +1 -0
  252. package/src/utils/{NameEncoder.ts → ProtobufNameEncoder.ts} +1 -1
  253. package/lib/schemas/metadata/IMetadataEntry.d.ts +0 -5
  254. package/lib/schemas/metadata/IMetadataEntry.js.map +0 -1
  255. package/lib/utils/NameEncoder.js.map +0 -1
  256. 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,1270 @@ 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)
102
- 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"));
74
+ /**
75
+ * @internal
76
+ */
77
+ ProtobufFactory.emplaceObject = function (object) {
78
+ var e_1, _a;
79
+ try {
80
+ for (var _b = __values(object.properties), _c = _b.next(); !_c.done; _c = _b.next()) {
81
+ var p = _c.value;
82
+ emplaceProperty(p);
83
+ }
84
+ }
85
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
86
+ finally {
87
+ try {
88
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
89
+ }
90
+ finally { if (e_1) throw e_1.error; }
91
+ }
92
+ var properties = object.properties
93
+ .map(function (p) { return p.of_protobuf_; })
94
+ .filter(function (p) { return p !== undefined; });
95
+ var unique = new Set(properties
96
+ .filter(function (p) { return p !== undefined; })
97
+ .filter(function (p) { return p.fixed === true; })
98
+ .map(function (p) { return p.union.map(function (u) { return u.index; }); })
99
+ .flat());
100
+ var index = 1;
101
+ properties.forEach(function (schema) {
102
+ var e_2, _a;
103
+ if (schema.fixed === true)
104
+ index = Math.max(index, Math.max.apply(Math, __spreadArray([], __read(schema.union.map(function (u) { return u.index; })), false)) + 1);
105
+ else {
106
+ try {
107
+ for (var _b = __values(schema.union), _c = _b.next(); !_c.done; _c = _b.next()) {
108
+ var u = _c.value;
109
+ while (unique.has(index) === true)
110
+ ++index;
111
+ u.index = index;
112
+ unique.add(index);
113
+ }
114
+ }
115
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
116
+ finally {
117
+ try {
118
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
119
+ }
120
+ finally { if (e_2) throw e_2.error; }
121
+ }
122
+ ++index;
123
+ }
124
+ });
125
+ };
126
+ var emplaceProperty = function (prop) {
127
+ var e_3, _a, e_4, _b, e_5, _c, e_6, _d;
128
+ var _e, _f, _g, _h, _j;
129
+ var union = [];
130
+ try {
131
+ for (var _k = __values(prop.value.natives), _l = _k.next(); !_l.done; _l = _k.next()) {
132
+ var native = _l.value;
133
+ if (native.name === "Uint8Array")
134
+ union.push({
135
+ type: "bytes",
136
+ index: ProtobufUtil_1.ProtobufUtil.getSequence((_e = native.tags[0]) !== null && _e !== void 0 ? _e : []),
137
+ });
138
+ }
139
+ }
140
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
141
+ finally {
142
+ try {
143
+ if (_l && !_l.done && (_a = _k.return)) _a.call(_k);
144
+ }
145
+ finally { if (e_3) throw e_3.error; }
146
+ }
147
+ union.push.apply(union, __spreadArray([], __read(emplaceAtomic(prop.value).values()), false));
148
+ try {
149
+ for (var _m = __values(prop.value.arrays), _o = _m.next(); !_o.done; _o = _m.next()) {
150
+ var array = _o.value;
151
+ union.push({
152
+ type: "array",
153
+ array: array.type,
154
+ value: emplaceSchema(array.type.value),
155
+ index: ProtobufUtil_1.ProtobufUtil.getSequence((_f = array.tags[0]) !== null && _f !== void 0 ? _f : []),
156
+ });
157
+ }
158
+ }
159
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
160
+ finally {
161
+ try {
162
+ if (_o && !_o.done && (_b = _m.return)) _b.call(_m);
163
+ }
164
+ finally { if (e_4) throw e_4.error; }
165
+ }
166
+ try {
167
+ for (var _p = __values(prop.value.objects), _q = _p.next(); !_q.done; _q = _p.next()) {
168
+ var obj = _q.value;
169
+ if (isDynamicObject(obj.type))
170
+ union.push({
171
+ type: "map",
172
+ map: obj.type,
173
+ key: emplaceSchema(obj.type.properties[0].key),
174
+ value: emplaceSchema(obj.type.properties[0].value),
175
+ index: ProtobufUtil_1.ProtobufUtil.getSequence((_g = obj.tags[0]) !== null && _g !== void 0 ? _g : []),
176
+ });
177
+ else
178
+ union.push({
179
+ type: "object",
180
+ object: obj.type,
181
+ index: ProtobufUtil_1.ProtobufUtil.getSequence((_h = obj.tags[0]) !== null && _h !== void 0 ? _h : []),
182
+ });
183
+ }
184
+ }
185
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
186
+ finally {
187
+ try {
188
+ if (_q && !_q.done && (_c = _p.return)) _c.call(_p);
189
+ }
190
+ finally { if (e_5) throw e_5.error; }
191
+ }
192
+ try {
193
+ for (var _r = __values(prop.value.maps), _s = _r.next(); !_s.done; _s = _r.next()) {
194
+ var map = _s.value;
195
+ union.push({
196
+ type: "map",
197
+ map: map,
198
+ key: emplaceSchema(map.key),
199
+ value: emplaceSchema(map.value),
200
+ index: ProtobufUtil_1.ProtobufUtil.getSequence((_j = map.tags[0]) !== null && _j !== void 0 ? _j : []),
201
+ });
202
+ }
203
+ }
204
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
205
+ finally {
206
+ try {
207
+ if (_s && !_s.done && (_d = _r.return)) _d.call(_r);
208
+ }
209
+ finally { if (e_6) throw e_6.error; }
210
+ }
211
+ prop.of_protobuf_ = {
212
+ union: union,
213
+ fixed: union.every(function (p) { return p.index !== null; }),
214
+ };
215
+ };
216
+ var emplaceSchema = function (metadata) {
217
+ var e_7, _a, e_8, _b, e_9, _c, e_10, _d;
218
+ try {
219
+ for (var _e = __values(metadata.natives), _f = _e.next(); !_f.done; _f = _e.next()) {
220
+ var native = _f.value;
221
+ if (native.name === "Uint8Array")
222
+ return {
223
+ type: "bytes",
224
+ };
225
+ }
226
+ }
227
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
228
+ finally {
229
+ try {
230
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
231
+ }
232
+ finally { if (e_7) throw e_7.error; }
233
+ }
234
+ var atomic = emplaceAtomic(metadata);
235
+ if (atomic.size)
236
+ return atomic.values().next().value;
237
+ try {
238
+ for (var _g = __values(metadata.arrays), _h = _g.next(); !_h.done; _h = _g.next()) {
239
+ var array = _h.value;
240
+ return {
241
+ type: "array",
242
+ array: array.type,
243
+ value: emplaceSchema(array.type.value),
244
+ };
245
+ }
246
+ }
247
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
248
+ finally {
249
+ try {
250
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
251
+ }
252
+ finally { if (e_8) throw e_8.error; }
253
+ }
254
+ try {
255
+ for (var _j = __values(metadata.objects), _k = _j.next(); !_k.done; _k = _j.next()) {
256
+ var obj = _k.value;
257
+ if (isDynamicObject(obj.type))
258
+ return {
259
+ type: "map",
260
+ map: obj.type,
261
+ key: emplaceSchema(obj.type.properties[0].key),
262
+ value: emplaceSchema(obj.type.properties[0].value),
263
+ };
264
+ else
265
+ return {
266
+ type: "object",
267
+ object: obj.type,
268
+ };
269
+ }
270
+ }
271
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
272
+ finally {
273
+ try {
274
+ if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
275
+ }
276
+ finally { if (e_9) throw e_9.error; }
277
+ }
278
+ try {
279
+ for (var _l = __values(metadata.maps), _m = _l.next(); !_m.done; _m = _l.next()) {
280
+ var map = _m.value;
281
+ return {
282
+ type: "map",
283
+ map: map,
284
+ key: emplaceSchema(map.key),
285
+ value: emplaceSchema(map.value),
286
+ };
287
+ }
288
+ }
289
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
290
+ finally {
291
+ try {
292
+ if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
293
+ }
294
+ finally { if (e_10) throw e_10.error; }
295
+ }
296
+ throw new Error("Error on ProtobufFactory.emplaceSchema(): any type detected.");
297
+ };
298
+ var emplaceAtomic = function (meta) {
299
+ var e_11, _a, e_12, _b, e_13, _c, e_14, _d;
300
+ var _e, _f, _g, _h, _j, _k, _l, _m;
301
+ var map = new Map();
302
+ try {
303
+ // CONSTANTS
304
+ for (var _o = __values(meta.constants), _p = _o.next(); !_p.done; _p = _o.next()) {
305
+ var c = _p.value;
306
+ if (c.type === "boolean")
307
+ map.set("bool", {
308
+ type: "bool",
309
+ index: getSequence((_f = (_e = c.values[0]) === null || _e === void 0 ? void 0 : _e.tags[0]) !== null && _f !== void 0 ? _f : []),
310
+ });
311
+ else if (c.type === "bigint") {
312
+ var init = getBigintType(c.values.map(function (v) { return BigInt(v.value); }));
313
+ try {
314
+ for (var _q = (e_12 = void 0, __values(c.values)), _r = _q.next(); !_r.done; _r = _q.next()) {
315
+ var value = _r.value;
316
+ emplaceBigint({
317
+ map: map,
318
+ tags: value.tags,
319
+ init: init,
320
+ });
321
+ }
322
+ }
323
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
324
+ finally {
325
+ try {
326
+ if (_r && !_r.done && (_b = _q.return)) _b.call(_q);
327
+ }
328
+ finally { if (e_12) throw e_12.error; }
329
+ }
330
+ }
331
+ else if (c.type === "number") {
332
+ var init = getNumberType(c.values.map(function (v) { return v.value; }));
333
+ try {
334
+ for (var _s = (e_13 = void 0, __values(c.values)), _t = _s.next(); !_t.done; _t = _s.next()) {
335
+ var value = _t.value;
336
+ emplaceNumber({
337
+ map: map,
338
+ tags: value.tags,
339
+ init: init,
340
+ });
341
+ }
342
+ }
343
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
344
+ finally {
345
+ try {
346
+ if (_t && !_t.done && (_c = _s.return)) _c.call(_s);
347
+ }
348
+ finally { if (e_13) throw e_13.error; }
349
+ }
350
+ }
351
+ else if (c.type === "string")
352
+ map.set("string", {
353
+ type: "string",
354
+ index: getSequence((_h = (_g = c.values[0]) === null || _g === void 0 ? void 0 : _g.tags[0]) !== null && _h !== void 0 ? _h : []),
355
+ });
356
+ }
357
+ }
358
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
359
+ finally {
360
+ try {
361
+ if (_p && !_p.done && (_a = _o.return)) _a.call(_o);
362
+ }
363
+ finally { if (e_11) throw e_11.error; }
364
+ }
365
+ // TEMPLATE
366
+ if (meta.templates.length)
367
+ map.set("string", {
368
+ type: "string",
369
+ index: getSequence((_k = (_j = meta.templates[0]) === null || _j === void 0 ? void 0 : _j.tags[0]) !== null && _k !== void 0 ? _k : []),
370
+ });
371
+ try {
372
+ // ATOMICS
373
+ for (var _u = __values(meta.atomics), _v = _u.next(); !_v.done; _v = _u.next()) {
374
+ var atomic = _v.value;
375
+ if (atomic.type === "boolean")
376
+ map.set("bool", {
377
+ type: "bool",
378
+ index: getSequence((_l = atomic.tags[0]) !== null && _l !== void 0 ? _l : []),
379
+ });
380
+ else if (atomic.type === "bigint")
381
+ emplaceBigint({
382
+ map: map,
383
+ tags: atomic.tags,
384
+ init: "int64",
385
+ });
386
+ else if (atomic.type === "number")
387
+ emplaceNumber({
388
+ map: map,
389
+ tags: atomic.tags,
390
+ init: "double",
391
+ });
392
+ else if (atomic.type === "string")
393
+ map.set("string", {
394
+ type: "string",
395
+ index: getSequence((_m = atomic.tags[0]) !== null && _m !== void 0 ? _m : []),
396
+ });
397
+ }
398
+ }
399
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
400
+ finally {
401
+ try {
402
+ if (_v && !_v.done && (_d = _u.return)) _d.call(_u);
403
+ }
404
+ finally { if (e_14) throw e_14.error; }
405
+ }
406
+ // SORTING IF REQUIRED
407
+ if (map.size && map.values().next().value.index === null)
408
+ return new Map(Array.from(map).sort(function (x, y) { return ProtobufUtil_1.ProtobufUtil.compare(x[0], y[0]); }));
409
+ return map;
410
+ };
411
+ var emplaceBigint = function (next) {
412
+ var e_15, _a;
413
+ var _b, _c;
414
+ if (next.tags.length === 0) {
415
+ next.map.set(next.init, {
416
+ type: "bigint",
417
+ name: next.init,
418
+ index: null,
419
+ });
420
+ return;
421
+ }
422
+ try {
423
+ for (var _d = __values(next.tags), _e = _d.next(); !_e.done; _e = _d.next()) {
424
+ var row = _e.value;
425
+ var value = (_c = (_b = row.find(function (tag) {
426
+ return tag.kind === "type" &&
427
+ (tag.value === "int64" || tag.value === "uint64");
428
+ })) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : next.init;
429
+ next.map.set(next.init, {
430
+ type: "bigint",
431
+ name: value,
432
+ index: ProtobufUtil_1.ProtobufUtil.getSequence(row),
433
+ });
434
+ }
435
+ }
436
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
437
+ finally {
438
+ try {
439
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
440
+ }
441
+ finally { if (e_15) throw e_15.error; }
442
+ }
443
+ };
444
+ var emplaceNumber = function (next) {
445
+ var e_16, _a;
446
+ var _b, _c;
447
+ if (next.tags.length === 0) {
448
+ next.map.set(next.init, {
449
+ type: "number",
450
+ name: next.init,
451
+ index: null,
452
+ });
453
+ return;
454
+ }
455
+ try {
456
+ for (var _d = __values(next.tags), _e = _d.next(); !_e.done; _e = _d.next()) {
457
+ var row = _e.value;
458
+ var value = (_c = (_b = row.find(function (tag) {
459
+ return tag.kind === "type" &&
460
+ (tag.value === "int32" ||
461
+ tag.value === "uint32" ||
462
+ tag.value === "int64" ||
463
+ tag.value === "uint64" ||
464
+ tag.value === "float" ||
465
+ tag.value === "double");
466
+ })) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : next.init;
467
+ next.map.set(value, {
468
+ type: "number",
469
+ name: value,
470
+ index: ProtobufUtil_1.ProtobufUtil.getSequence(row),
471
+ });
472
+ }
473
+ }
474
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
475
+ finally {
476
+ try {
477
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
478
+ }
479
+ finally { if (e_16) throw e_16.error; }
480
+ }
481
+ };
482
+ var getBigintType = function (values) {
483
+ return values.some(function (v) { return v < 0; }) ? "int64" : "uint64";
484
+ };
485
+ var getNumberType = function (values) {
486
+ return values.every(function (v) { return Math.floor(v) === v; })
487
+ ? values.every(function (v) { return -2147483648 <= v && v <= 2147483647; })
488
+ ? "int32"
489
+ : "int64"
490
+ : "double";
491
+ };
492
+ var getSequence = function (tags) {
493
+ var sequence = tags.find(function (t) {
494
+ var _a;
495
+ return t.kind === "sequence" &&
496
+ typeof ((_a = t.schema) === null || _a === void 0 ? void 0 : _a["x-protobuf-sequence"]) === "number";
497
+ });
498
+ if (sequence === undefined)
499
+ return null;
500
+ var value = Number(sequence.schema["x-protobuf-sequence"]);
501
+ return Number.isNaN(value) ? null : value;
502
+ };
503
+ /* -----------------------------------------------------------
504
+ VALIDATORS
505
+ ----------------------------------------------------------- */
506
+ var validate = function () {
507
+ var visited = new WeakSet();
508
+ return function (meta, explore) {
509
+ var e_17, _a, e_18, _b;
510
+ var errors = [];
511
+ var insert = function (msg) { return errors.push(msg); };
512
+ if (explore.top === true) {
513
+ var onlyObject = meta.size() === 1 &&
514
+ meta.objects.length === 1 &&
515
+ meta.objects[0].type.properties.every(function (p) {
516
+ return p.key.isSoleLiteral();
517
+ }) &&
518
+ meta.isRequired() === true &&
519
+ meta.nullable === false;
520
+ if (onlyObject === false)
521
+ insert("target type must be a sole and static object type");
522
+ }
523
+ if (explore.object !== null && visited.has(explore.object) === false) {
524
+ visited.add(explore.object);
525
+ validateObject({
526
+ object: explore.object,
527
+ errors: errors,
528
+ });
529
+ try {
530
+ ProtobufFactory.emplaceObject(explore.object);
531
+ }
532
+ catch (_c) { }
533
+ }
534
+ //----
535
+ // NOT SUPPORTED TYPES
536
+ //----
537
+ var noSupport = function (msg) { return insert("does not support ".concat(msg)); };
538
+ // PROHIBIT ANY TYPE
539
+ if (meta.any)
540
+ noSupport("any type");
541
+ // PROHIBIT FUNCTIONAL TYPE
542
+ if (meta.functions.length)
543
+ noSupport("functional type");
544
+ // PROHIBIT TUPLE TYPE
545
+ if (meta.tuples.length)
546
+ noSupport("tuple type");
547
+ // PROHIBIT SET TYPE
548
+ if (meta.sets.length)
549
+ noSupport("Set type");
550
+ // NATIVE TYPE, BUT NOT Uint8Array
551
+ if (meta.natives.length)
552
+ try {
553
+ for (var _d = __values(meta.natives), _e = _d.next(); !_e.done; _e = _d.next()) {
554
+ var native = _e.value;
555
+ if (native.name === "Uint8Array")
556
+ continue;
557
+ var instead = BANNED_NATIVE_TYPES.get(native.name);
558
+ if (instead === undefined)
559
+ noSupport("".concat(native.name, " type"));
560
+ else
561
+ noSupport("".concat(native.name, " type. Use ").concat(instead, " type instead."));
562
+ }
563
+ }
564
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
565
+ finally {
566
+ try {
567
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
568
+ }
569
+ finally { if (e_17) throw e_17.error; }
570
+ }
571
+ //----
572
+ // ATOMIC CASES
573
+ //----
574
+ if (meta.atomics.length) {
575
+ var numbers = ProtobufUtil_1.ProtobufUtil.getNumbers(meta);
576
+ var bigints = ProtobufUtil_1.ProtobufUtil.getBigints(meta);
577
+ try {
578
+ for (var _f = __values(["int64", "uint64"]), _g = _f.next(); !_g.done; _g = _f.next()) {
579
+ var type = _g.value;
580
+ if (numbers.has(type) && bigints.has(type))
581
+ insert("tags.Type<\"".concat(type, "\"> cannot be used in both number and bigint types. Recommend to remove from number type"));
582
+ }
583
+ }
584
+ catch (e_18_1) { e_18 = { error: e_18_1 }; }
585
+ finally {
586
+ try {
587
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
588
+ }
589
+ finally { if (e_18) throw e_18.error; }
590
+ }
591
+ }
592
+ //----
593
+ // ARRRAY CASES
594
+ //----
595
+ // DO NOT ALLOW MULTI-DIMENTIONAL ARRAY
596
+ if (meta.arrays.length &&
597
+ meta.arrays.some(function (array) { return !!array.type.value.arrays.length; }))
598
+ noSupport("over two dimenstional array type");
599
+ // CHILD OF ARRAY TYPE MUST BE REQUIRED
600
+ if (meta.arrays.length &&
601
+ meta.arrays.some(function (array) {
602
+ return array.type.value.isRequired() === false ||
603
+ array.type.value.nullable === true;
604
+ }))
605
+ noSupport("optional type in array");
606
+ // UNION IN ARRAY
607
+ if (meta.arrays.length &&
608
+ meta.arrays.some(function (a) {
609
+ var _a;
610
+ return a.type.value.size() > 1 &&
611
+ a.type.value.constants.length !== 1 &&
612
+ ((_a = a.type.value.constants[0]) === null || _a === void 0 ? void 0 : _a.values.length) !== a.type.value.size();
613
+ }))
614
+ noSupport("union type in array");
615
+ // DO DYNAMIC OBJECT IN ARRAY
616
+ if (meta.arrays.length &&
617
+ meta.arrays.some(function (a) {
618
+ return a.type.value.maps.length ||
619
+ (a.type.value.objects.length &&
620
+ a.type.value.objects.some(function (o) { return ProtobufUtil_1.ProtobufUtil.isStaticObject(o.type) === false; }));
621
+ }))
622
+ noSupport("dynamic object in array");
623
+ // UNION WITH ARRAY
624
+ if (meta.size() > 1 && meta.arrays.length)
625
+ noSupport("union type with array type");
626
+ //----
627
+ // OBJECT CASES
628
+ //----
629
+ // EMPTY PROPERTY
630
+ if (meta.objects.length &&
631
+ meta.objects.some(function (obj) { return obj.type.properties.length === 0; }))
632
+ noSupport("empty object type");
633
+ // MULTIPLE DYNAMIC KEY TYPED PROPERTIES
634
+ if (meta.objects.length &&
635
+ meta.objects.some(function (obj) {
636
+ return obj.type.properties.filter(function (p) { return !p.key.isSoleLiteral(); }).length >
637
+ 1;
638
+ }))
639
+ noSupport("object type with multiple dynamic key typed properties. Keep only one.");
640
+ // STATIC AND DYNAMIC PROPERTIES ARE COMPATIBLE
641
+ if (meta.objects.length &&
642
+ meta.objects.some(function (obj) {
643
+ return obj.type.properties.some(function (p) { return p.key.isSoleLiteral(); }) &&
644
+ obj.type.properties.some(function (p) { return !p.key.isSoleLiteral(); });
645
+ }))
646
+ noSupport("object type with mixed static and dynamic key typed properties. Keep statics or dynamic only.");
647
+ // DYNAMIC OBJECT, BUT PROPERTY VALUE TYPE IS ARRAY
648
+ if (meta.objects.length &&
649
+ isDynamicObject(meta.objects[0].type) &&
650
+ meta.objects[0].type.properties.some(function (p) { return !!p.value.arrays.length; }))
651
+ noSupport("dynamic object with array value type");
652
+ // UNION WITH DYNAMIC OBJECTa
653
+ if (meta.size() > 1 &&
654
+ meta.objects.length &&
655
+ isDynamicObject(meta.objects[0].type))
656
+ noSupport("union type with dynamic object type");
657
+ // UNION IN DYNAMIC PROPERTY VALUE
658
+ if (meta.objects.length &&
659
+ meta.objects.some(function (obj) {
660
+ return isDynamicObject(obj.type) &&
661
+ obj.type.properties.some(function (p) { return ProtobufUtil_1.ProtobufUtil.isUnion(p.value); });
662
+ }))
663
+ noSupport("union type in dynamic property");
664
+ //----
665
+ // MAP CASES
666
+ //----
667
+ // KEY TYPE IS UNION
668
+ if (meta.maps.length &&
669
+ meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.isUnion(m.key); }))
670
+ noSupport("union key typed map");
671
+ // KEY TYPE IS NOT ATOMIC
672
+ if (meta.maps.length &&
673
+ meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.getAtomics(m.key).size !== 1; }))
674
+ noSupport("non-atomic key typed map");
675
+ // MAP TYPE, BUT PROPERTY KEY TYPE IS OPTIONAL
676
+ if (meta.maps.length &&
677
+ meta.maps.some(function (m) { return m.key.isRequired() === false || m.key.nullable; }))
678
+ noSupport("optional key typed map");
679
+ // MAP TYPE, BUT VALUE TYPE IS ARRAY
680
+ if (meta.maps.length && meta.maps.some(function (m) { return !!m.value.arrays.length; }))
681
+ noSupport("map type with array value type");
682
+ // UNION WITH MAP
683
+ if (meta.size() > 1 && meta.maps.length)
684
+ noSupport("union type with map type");
685
+ // UNION IN MAP
686
+ if (meta.maps.length &&
687
+ meta.maps.some(function (m) { return ProtobufUtil_1.ProtobufUtil.isUnion(m.value); }))
688
+ noSupport("union type in map value type");
689
+ return errors;
690
+ };
691
+ };
692
+ /* -----------------------------------------------------------
693
+ SEQUENE VALIDATOR
694
+ ----------------------------------------------------------- */
695
+ var validateObject = function (next) {
696
+ var e_19, _a, e_20, _b;
697
+ try {
698
+ for (var _c = __values(next.object.properties), _d = _c.next(); !_d.done; _d = _c.next()) {
699
+ var property = _d.value;
700
+ validateProperty({
701
+ metadata: property.value,
702
+ errors: next.errors,
703
+ });
704
+ }
705
+ }
706
+ catch (e_19_1) { e_19 = { error: e_19_1 }; }
707
+ finally {
708
+ try {
709
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
710
+ }
711
+ finally { if (e_19) throw e_19.error; }
712
+ }
713
+ var entire = new Map();
714
+ var visitProperty = function (p) {
715
+ var e_21, _a, e_22, _b, e_23, _c, e_24, _d, e_25, _e, e_26, _f, e_27, _g;
716
+ var local = new Set();
717
+ var tagger = function (matrix) {
718
+ matrix.forEach(function (tags) {
719
+ var value = ProtobufUtil_1.ProtobufUtil.getSequence(tags);
720
+ if (value !== null)
721
+ local.add(value);
722
+ });
723
+ };
724
+ try {
725
+ for (var _h = __values(p.value.constants), _j = _h.next(); !_j.done; _j = _h.next()) {
726
+ var c = _j.value;
727
+ try {
728
+ for (var _k = (e_22 = void 0, __values(c.values)), _l = _k.next(); !_l.done; _l = _k.next()) {
729
+ var v = _l.value;
730
+ tagger(v.tags);
731
+ }
732
+ }
733
+ catch (e_22_1) { e_22 = { error: e_22_1 }; }
734
+ finally {
735
+ try {
736
+ if (_l && !_l.done && (_b = _k.return)) _b.call(_k);
737
+ }
738
+ finally { if (e_22) throw e_22.error; }
739
+ }
740
+ }
741
+ }
742
+ catch (e_21_1) { e_21 = { error: e_21_1 }; }
743
+ finally {
744
+ try {
745
+ if (_j && !_j.done && (_a = _h.return)) _a.call(_h);
746
+ }
747
+ finally { if (e_21) throw e_21.error; }
748
+ }
749
+ try {
750
+ for (var _m = __values(p.value.atomics), _o = _m.next(); !_o.done; _o = _m.next()) {
751
+ var a = _o.value;
752
+ tagger(a.tags);
753
+ }
754
+ }
755
+ catch (e_23_1) { e_23 = { error: e_23_1 }; }
756
+ finally {
757
+ try {
758
+ if (_o && !_o.done && (_c = _m.return)) _c.call(_m);
759
+ }
760
+ finally { if (e_23) throw e_23.error; }
761
+ }
762
+ try {
763
+ for (var _p = __values(p.value.templates), _q = _p.next(); !_q.done; _q = _p.next()) {
764
+ var t = _q.value;
765
+ tagger(t.tags);
766
+ }
767
+ }
768
+ catch (e_24_1) { e_24 = { error: e_24_1 }; }
769
+ finally {
770
+ try {
771
+ if (_q && !_q.done && (_d = _p.return)) _d.call(_p);
772
+ }
773
+ finally { if (e_24) throw e_24.error; }
774
+ }
775
+ try {
776
+ for (var _r = __values(p.value.objects), _s = _r.next(); !_s.done; _s = _r.next()) {
777
+ var o = _s.value;
778
+ tagger(o.tags);
779
+ }
780
+ }
781
+ catch (e_25_1) { e_25 = { error: e_25_1 }; }
782
+ finally {
783
+ try {
784
+ if (_s && !_s.done && (_e = _r.return)) _e.call(_r);
785
+ }
786
+ finally { if (e_25) throw e_25.error; }
787
+ }
788
+ try {
789
+ for (var _t = __values(p.value.arrays), _u = _t.next(); !_u.done; _u = _t.next()) {
790
+ var a = _u.value;
791
+ tagger(a.tags);
792
+ }
793
+ }
794
+ catch (e_26_1) { e_26 = { error: e_26_1 }; }
795
+ finally {
796
+ try {
797
+ if (_u && !_u.done && (_f = _t.return)) _f.call(_t);
798
+ }
799
+ finally { if (e_26) throw e_26.error; }
800
+ }
801
+ try {
802
+ for (var local_1 = __values(local), local_1_1 = local_1.next(); !local_1_1.done; local_1_1 = local_1.next()) {
803
+ var s = local_1_1.value;
804
+ if (entire.has(s))
805
+ 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
806
  else
111
- noSupport("".concat(native, " type. Use ").concat(instead, " type instead."));
807
+ entire.set(s, p.key.getSoleLiteral());
112
808
  }
113
809
  }
114
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
810
+ catch (e_27_1) { e_27 = { error: e_27_1 }; }
115
811
  finally {
116
812
  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
- };
813
+ if (local_1_1 && !local_1_1.done && (_g = local_1.return)) _g.call(local_1);
814
+ }
815
+ finally { if (e_27) throw e_27.error; }
816
+ }
817
+ };
818
+ try {
819
+ for (var _e = __values(next.object.properties), _f = _e.next(); !_f.done; _f = _e.next()) {
820
+ var p = _f.value;
821
+ visitProperty(p);
822
+ }
823
+ }
824
+ catch (e_20_1) { e_20 = { error: e_20_1 }; }
825
+ finally {
826
+ try {
827
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
828
+ }
829
+ finally { if (e_20) throw e_20.error; }
830
+ }
831
+ };
832
+ var validateProperty = function (next) {
833
+ var e_28, _a, e_29, _b, e_30, _c, e_31, _d, e_32, _e;
834
+ var expected = 0;
835
+ var sequences = new Set();
836
+ var add = function (value) {
837
+ if (sequences.has(value))
838
+ return false;
839
+ sequences.add(value);
840
+ ++expected;
841
+ return true;
842
+ };
843
+ try {
844
+ for (var _f = __values([
845
+ validateBooleanSequence,
846
+ validateNumericSequences({
847
+ type: "bigint",
848
+ default: "int64",
849
+ categories: BIGINT_TYPES,
850
+ }),
851
+ validateNumericSequences({
852
+ type: "number",
853
+ default: "double",
854
+ categories: NUMBER_TYPES,
855
+ }),
856
+ validateStringSequence,
857
+ ]), _g = _f.next(); !_g.done; _g = _f.next()) {
858
+ var validator = _g.value;
859
+ validator({ metadata: next.metadata, errors: next.errors, add: add });
860
+ }
861
+ }
862
+ catch (e_28_1) { e_28 = { error: e_28_1 }; }
863
+ finally {
864
+ try {
865
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
866
+ }
867
+ finally { if (e_28) throw e_28.error; }
868
+ }
869
+ try {
870
+ for (var _h = __values(next.metadata.arrays), _j = _h.next(); !_j.done; _j = _h.next()) {
871
+ var array = _j.value;
872
+ validateInstanceSequence({
873
+ type: "array",
874
+ tags: array.tags,
875
+ errors: next.errors,
876
+ add: add,
877
+ });
878
+ }
879
+ }
880
+ catch (e_29_1) { e_29 = { error: e_29_1 }; }
881
+ finally {
882
+ try {
883
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
884
+ }
885
+ finally { if (e_29) throw e_29.error; }
886
+ }
887
+ try {
888
+ for (var _k = __values(next.metadata.objects), _l = _k.next(); !_l.done; _l = _k.next()) {
889
+ var object = _l.value;
890
+ validateInstanceSequence({
891
+ type: "object",
892
+ tags: object.tags,
893
+ errors: next.errors,
894
+ add: add,
895
+ });
896
+ }
897
+ }
898
+ catch (e_30_1) { e_30 = { error: e_30_1 }; }
899
+ finally {
900
+ try {
901
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
902
+ }
903
+ finally { if (e_30) throw e_30.error; }
904
+ }
905
+ try {
906
+ for (var _m = __values(next.metadata.maps), _o = _m.next(); !_o.done; _o = _m.next()) {
907
+ var map = _o.value;
908
+ validateInstanceSequence({
909
+ type: "map",
910
+ tags: map.tags,
911
+ errors: next.errors,
912
+ add: add,
913
+ });
914
+ }
915
+ }
916
+ catch (e_31_1) { e_31 = { error: e_31_1 }; }
917
+ finally {
131
918
  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);
919
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
920
+ }
921
+ finally { if (e_31) throw e_31.error; }
922
+ }
923
+ try {
924
+ for (var _p = __values(next.metadata.natives), _q = _p.next(); !_q.done; _q = _p.next()) {
925
+ var native = _q.value;
926
+ if (native.name === "Uint8Array")
927
+ validateInstanceSequence({
928
+ type: "Uint8Array",
929
+ tags: native.tags,
930
+ errors: next.errors,
931
+ add: add,
932
+ });
933
+ }
934
+ }
935
+ catch (e_32_1) { e_32 = { error: e_32_1 }; }
936
+ finally {
937
+ try {
938
+ if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
939
+ }
940
+ finally { if (e_32) throw e_32.error; }
941
+ }
942
+ };
943
+ var validateBooleanSequence = function (next) {
944
+ var e_33, _a, e_34, _b, e_35, _c;
945
+ // PREPARE EMPLACER
946
+ var unique = new Set();
947
+ var expected = 0;
948
+ var actual = 0;
949
+ var emplace = function (matrix) {
950
+ var e_36, _a, e_37, _b;
951
+ try {
952
+ for (var matrix_1 = __values(matrix), matrix_1_1 = matrix_1.next(); !matrix_1_1.done; matrix_1_1 = matrix_1.next()) {
953
+ var tags = matrix_1_1.value;
954
+ try {
955
+ for (var tags_1 = (e_37 = void 0, __values(tags)), tags_1_1 = tags_1.next(); !tags_1_1.done; tags_1_1 = tags_1.next()) {
956
+ var tag = tags_1_1.value;
957
+ var sequence = ProtobufUtil_1.ProtobufUtil.getSequence([tag]);
958
+ if (sequence !== null) {
959
+ unique.add(sequence);
960
+ ++actual;
961
+ }
962
+ ++expected;
963
+ }
964
+ }
965
+ catch (e_37_1) { e_37 = { error: e_37_1 }; }
966
+ finally {
967
+ try {
968
+ if (tags_1_1 && !tags_1_1.done && (_b = tags_1.return)) _b.call(tags_1);
969
+ }
970
+ finally { if (e_37) throw e_37.error; }
971
+ }
135
972
  }
136
973
  }
137
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
974
+ catch (e_36_1) { e_36 = { error: e_36_1 }; }
138
975
  finally {
139
976
  try {
140
- if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
141
- }
142
- finally { if (e_2) throw e_2.error; }
143
- }
144
- }
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) {
977
+ if (matrix_1_1 && !matrix_1_1.done && (_a = matrix_1.return)) _a.call(matrix_1);
978
+ }
979
+ finally { if (e_36) throw e_36.error; }
980
+ }
981
+ };
982
+ try {
983
+ // GATHER SEQUENCE TAGS
984
+ for (var _d = __values(next.metadata.atomics), _e = _d.next(); !_e.done; _e = _d.next()) {
985
+ var atomic = _e.value;
986
+ if (atomic.type === "boolean")
987
+ emplace(atomic.tags);
988
+ }
989
+ }
990
+ catch (e_33_1) { e_33 = { error: e_33_1 }; }
991
+ finally {
992
+ try {
993
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
994
+ }
995
+ finally { if (e_33) throw e_33.error; }
996
+ }
997
+ try {
998
+ for (var _f = __values(next.metadata.constants), _g = _f.next(); !_g.done; _g = _f.next()) {
999
+ var constant = _g.value;
1000
+ if (constant.type === "boolean")
1001
+ try {
1002
+ for (var _h = (e_35 = void 0, __values(constant.values)), _j = _h.next(); !_j.done; _j = _h.next()) {
1003
+ var value = _j.value;
1004
+ emplace(value.tags);
1005
+ }
1006
+ }
1007
+ catch (e_35_1) { e_35 = { error: e_35_1 }; }
1008
+ finally {
1009
+ try {
1010
+ if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
1011
+ }
1012
+ finally { if (e_35) throw e_35.error; }
1013
+ }
1014
+ }
1015
+ }
1016
+ catch (e_34_1) { e_34 = { error: e_34_1 }; }
1017
+ finally {
1018
+ try {
1019
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
1020
+ }
1021
+ finally { if (e_34) throw e_34.error; }
1022
+ }
1023
+ // PREDICATE
1024
+ if (unique.size && actual !== expected)
1025
+ next.errors.push("The sequence tag must be declared in every union type members");
1026
+ else if (unique.size > 1)
1027
+ next.errors.push("The sequence tag value must be the same in boolean type (including literal types)");
1028
+ else if (unique.size === 1) {
1029
+ var value = unique.values().next().value;
1030
+ if (next.add(value) === false)
1031
+ next.errors.push("The sequence tag value ".concat(value, " in boolean type is duplicated with other types"));
1032
+ }
1033
+ };
1034
+ var validateNumericSequences = function (config) {
1035
+ return function (next) {
1036
+ var e_38, _a, e_39, _b, e_40, _c, e_41, _d;
1037
+ // FIND TYPE CATEGORIES
1038
+ var categories = new Set();
1039
+ var getType = function (tags) {
162
1040
  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;
1041
+ var found = tags.find(function (t) { return t.kind === "type" && config.categories.has(t.value); });
1042
+ return (_a = found === null || found === void 0 ? void 0 : found.value) !== null && _a !== void 0 ? _a : config.default;
1043
+ };
1044
+ var exploreCategory = function (matrix) {
1045
+ var e_42, _a;
1046
+ try {
1047
+ for (var matrix_2 = __values(matrix), matrix_2_1 = matrix_2.next(); !matrix_2_1.done; matrix_2_1 = matrix_2.next()) {
1048
+ var tags = matrix_2_1.value;
1049
+ categories.add(getType(tags));
1050
+ }
1051
+ }
1052
+ catch (e_42_1) { e_42 = { error: e_42_1 }; }
1053
+ finally {
1054
+ try {
1055
+ if (matrix_2_1 && !matrix_2_1.done && (_a = matrix_2.return)) _a.call(matrix_2);
1056
+ }
1057
+ finally { if (e_42) throw e_42.error; }
1058
+ }
1059
+ };
1060
+ try {
1061
+ for (var _e = __values(next.metadata.atomics), _f = _e.next(); !_f.done; _f = _e.next()) {
1062
+ var atomic = _f.value;
1063
+ if (atomic.type === config.type)
1064
+ exploreCategory(atomic.tags);
1065
+ }
1066
+ }
1067
+ catch (e_38_1) { e_38 = { error: e_38_1 }; }
1068
+ finally {
1069
+ try {
1070
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
1071
+ }
1072
+ finally { if (e_38) throw e_38.error; }
1073
+ }
1074
+ try {
1075
+ for (var _g = __values(next.metadata.constants), _h = _g.next(); !_h.done; _h = _g.next()) {
1076
+ var constant = _h.value;
1077
+ if (constant.type === config.type)
1078
+ try {
1079
+ for (var _j = (e_40 = void 0, __values(constant.values)), _k = _j.next(); !_k.done; _k = _j.next()) {
1080
+ var value = _k.value;
1081
+ exploreCategory(value.tags);
1082
+ }
1083
+ }
1084
+ catch (e_40_1) { e_40 = { error: e_40_1 }; }
1085
+ finally {
1086
+ try {
1087
+ if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
1088
+ }
1089
+ finally { if (e_40) throw e_40.error; }
1090
+ }
1091
+ }
1092
+ }
1093
+ catch (e_39_1) { e_39 = { error: e_39_1 }; }
1094
+ finally {
1095
+ try {
1096
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
1097
+ }
1098
+ finally { if (e_39) throw e_39.error; }
1099
+ }
1100
+ var _loop_1 = function (category) {
1101
+ var e_43, _l, e_44, _m, e_45, _o, e_46, _p, e_47, _q;
1102
+ var unique = new Set();
1103
+ var expected = 0;
1104
+ var actual = 0;
1105
+ var emplace = function (tags) {
1106
+ var sequence = ProtobufUtil_1.ProtobufUtil.getSequence(tags);
1107
+ if (sequence !== null) {
1108
+ unique.add(sequence);
1109
+ ++actual;
1110
+ }
1111
+ ++expected;
1112
+ };
1113
+ try {
1114
+ for (var _r = (e_43 = void 0, __values(next.metadata.atomics)), _s = _r.next(); !_s.done; _s = _r.next()) {
1115
+ var atomic = _s.value;
1116
+ if (atomic.type === config.type)
1117
+ try {
1118
+ for (var _t = (e_44 = void 0, __values(atomic.tags)), _u = _t.next(); !_u.done; _u = _t.next()) {
1119
+ var tags = _u.value;
1120
+ if (getType(tags) === category)
1121
+ emplace(tags);
1122
+ }
1123
+ }
1124
+ catch (e_44_1) { e_44 = { error: e_44_1 }; }
1125
+ finally {
1126
+ try {
1127
+ if (_u && !_u.done && (_m = _t.return)) _m.call(_t);
1128
+ }
1129
+ finally { if (e_44) throw e_44.error; }
1130
+ }
1131
+ }
1132
+ }
1133
+ catch (e_43_1) { e_43 = { error: e_43_1 }; }
1134
+ finally {
1135
+ try {
1136
+ if (_s && !_s.done && (_l = _r.return)) _l.call(_r);
1137
+ }
1138
+ finally { if (e_43) throw e_43.error; }
1139
+ }
1140
+ try {
1141
+ for (var _v = (e_45 = void 0, __values(next.metadata.constants)), _w = _v.next(); !_w.done; _w = _v.next()) {
1142
+ var constant = _w.value;
1143
+ if (constant.type === config.type)
1144
+ try {
1145
+ for (var _x = (e_46 = void 0, __values(constant.values)), _y = _x.next(); !_y.done; _y = _x.next()) {
1146
+ var value = _y.value;
1147
+ try {
1148
+ for (var _z = (e_47 = void 0, __values(value.tags)), _0 = _z.next(); !_0.done; _0 = _z.next()) {
1149
+ var tags = _0.value;
1150
+ if (getType(tags) === category)
1151
+ emplace(tags);
1152
+ }
1153
+ }
1154
+ catch (e_47_1) { e_47 = { error: e_47_1 }; }
1155
+ finally {
1156
+ try {
1157
+ if (_0 && !_0.done && (_q = _z.return)) _q.call(_z);
1158
+ }
1159
+ finally { if (e_47) throw e_47.error; }
1160
+ }
1161
+ }
1162
+ }
1163
+ catch (e_46_1) { e_46 = { error: e_46_1 }; }
1164
+ finally {
1165
+ try {
1166
+ if (_y && !_y.done && (_p = _x.return)) _p.call(_x);
1167
+ }
1168
+ finally { if (e_46) throw e_46.error; }
1169
+ }
1170
+ }
1171
+ }
1172
+ catch (e_45_1) { e_45 = { error: e_45_1 }; }
1173
+ finally {
1174
+ try {
1175
+ if (_w && !_w.done && (_o = _v.return)) _o.call(_v);
1176
+ }
1177
+ finally { if (e_45) throw e_45.error; }
1178
+ }
1179
+ if (unique.size && actual !== expected) {
1180
+ console.log(category, actual, expected, unique);
1181
+ next.errors.push("The sequence tag must be declared in every union type members");
1182
+ }
1183
+ else if (unique.size > 1)
1184
+ next.errors.push("The sequence tag value must be the same in ".concat(config.type, " type (including literal types)"));
1185
+ else if (unique.size === 1) {
1186
+ var value = unique.values().next().value;
1187
+ if (next.add(value) === false)
1188
+ next.errors.push("The sequence tag value ".concat(value, " in ").concat(config.type, " type is duplicated with other types"));
1189
+ }
1190
+ };
1191
+ try {
1192
+ // ITERATE TYPE CATEGORIES
1193
+ for (var categories_1 = __values(categories), categories_1_1 = categories_1.next(); !categories_1_1.done; categories_1_1 = categories_1.next()) {
1194
+ var category = categories_1_1.value;
1195
+ _loop_1(category);
1196
+ }
1197
+ }
1198
+ catch (e_41_1) { e_41 = { error: e_41_1 }; }
1199
+ finally {
1200
+ try {
1201
+ if (categories_1_1 && !categories_1_1.done && (_d = categories_1.return)) _d.call(categories_1);
1202
+ }
1203
+ finally { if (e_41) throw e_41.error; }
1204
+ }
1205
+ };
1206
+ };
1207
+ var validateStringSequence = function (next) {
1208
+ var e_48, _a, e_49, _b, e_50, _c, e_51, _d;
1209
+ var unique = new Set();
1210
+ var expected = 0;
1211
+ var actual = 0;
1212
+ var emplace = function (matrix) {
1213
+ var e_52, _a, e_53, _b;
1214
+ try {
1215
+ for (var matrix_3 = __values(matrix), matrix_3_1 = matrix_3.next(); !matrix_3_1.done; matrix_3_1 = matrix_3.next()) {
1216
+ var tags = matrix_3_1.value;
1217
+ try {
1218
+ for (var tags_2 = (e_53 = void 0, __values(tags)), tags_2_1 = tags_2.next(); !tags_2_1.done; tags_2_1 = tags_2.next()) {
1219
+ var tag = tags_2_1.value;
1220
+ var sequence = ProtobufUtil_1.ProtobufUtil.getSequence([tag]);
1221
+ if (sequence !== null) {
1222
+ unique.add(sequence);
1223
+ ++actual;
1224
+ }
1225
+ ++expected;
1226
+ }
1227
+ }
1228
+ catch (e_53_1) { e_53 = { error: e_53_1 }; }
1229
+ finally {
1230
+ try {
1231
+ if (tags_2_1 && !tags_2_1.done && (_b = tags_2.return)) _b.call(tags_2);
1232
+ }
1233
+ finally { if (e_53) throw e_53.error; }
1234
+ }
1235
+ }
1236
+ }
1237
+ catch (e_52_1) { e_52 = { error: e_52_1 }; }
1238
+ finally {
1239
+ try {
1240
+ if (matrix_3_1 && !matrix_3_1.done && (_a = matrix_3.return)) _a.call(matrix_3);
1241
+ }
1242
+ finally { if (e_52) throw e_52.error; }
1243
+ }
1244
+ };
1245
+ try {
1246
+ for (var _e = __values(next.metadata.atomics), _f = _e.next(); !_f.done; _f = _e.next()) {
1247
+ var atomic = _f.value;
1248
+ if (atomic.type === "string")
1249
+ emplace(atomic.tags);
1250
+ }
1251
+ }
1252
+ catch (e_48_1) { e_48 = { error: e_48_1 }; }
1253
+ finally {
1254
+ try {
1255
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
1256
+ }
1257
+ finally { if (e_48) throw e_48.error; }
1258
+ }
1259
+ try {
1260
+ for (var _g = __values(next.metadata.constants), _h = _g.next(); !_h.done; _h = _g.next()) {
1261
+ var constant = _h.value;
1262
+ if (constant.type === "string")
1263
+ try {
1264
+ for (var _j = (e_50 = void 0, __values(constant.values)), _k = _j.next(); !_k.done; _k = _j.next()) {
1265
+ var value = _k.value;
1266
+ emplace(value.tags);
1267
+ }
1268
+ }
1269
+ catch (e_50_1) { e_50 = { error: e_50_1 }; }
1270
+ finally {
1271
+ try {
1272
+ if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
1273
+ }
1274
+ finally { if (e_50) throw e_50.error; }
1275
+ }
1276
+ }
1277
+ }
1278
+ catch (e_49_1) { e_49 = { error: e_49_1 }; }
1279
+ finally {
1280
+ try {
1281
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
1282
+ }
1283
+ finally { if (e_49) throw e_49.error; }
1284
+ }
1285
+ try {
1286
+ for (var _l = __values(next.metadata.templates), _m = _l.next(); !_m.done; _m = _l.next()) {
1287
+ var template = _m.value;
1288
+ emplace(template.tags);
1289
+ }
1290
+ }
1291
+ catch (e_51_1) { e_51 = { error: e_51_1 }; }
1292
+ finally {
1293
+ try {
1294
+ if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
1295
+ }
1296
+ finally { if (e_51) throw e_51.error; }
1297
+ }
1298
+ if (unique.size && actual !== expected)
1299
+ next.errors.push("The sequence tag must be declared in every union type members");
1300
+ else if (unique.size > 1)
1301
+ next.errors.push("The sequence tag value must be the same in string types including literal and template types");
1302
+ else if (unique.size === 1) {
1303
+ var value = unique.values().next().value;
1304
+ if (next.add(value) === false)
1305
+ next.errors.push("The sequence tag value ".concat(value, " in string type is duplicated with other types"));
1306
+ }
1307
+ };
1308
+ var validateInstanceSequence = function (next) {
1309
+ var e_54, _a;
1310
+ var unique = new Set();
1311
+ var count = 0;
1312
+ try {
1313
+ for (var _b = __values(next.tags), _c = _b.next(); !_c.done; _c = _b.next()) {
1314
+ var tags = _c.value;
1315
+ var value = ProtobufUtil_1.ProtobufUtil.getSequence(tags);
1316
+ if (value === null)
1317
+ continue;
1318
+ unique.add(value);
1319
+ ++count;
1320
+ }
1321
+ }
1322
+ catch (e_54_1) { e_54 = { error: e_54_1 }; }
1323
+ finally {
1324
+ try {
1325
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1326
+ }
1327
+ finally { if (e_54) throw e_54.error; }
1328
+ }
1329
+ if (unique.size && count !== next.tags.length)
1330
+ next.errors.push("The sequence tag must be declared in every union type members");
1331
+ else if (unique.size > 1)
1332
+ next.errors.push("The sequence tag value must be the same in ".concat(next.type === "array" ? "an array" : "object", " type."));
1333
+ else if (unique.size === 1) {
1334
+ var value = unique.values().next().value;
1335
+ if (next.add(value) === false)
1336
+ next.errors.push("The sequence tag value ".concat(value, " in ").concat(next.type, " type is duplicated with other types"));
1337
+ }
241
1338
  };
242
1339
  })(ProtobufFactory || (exports.ProtobufFactory = ProtobufFactory = {}));
243
1340
  var isDynamicObject = function (obj) {
@@ -268,4 +1365,13 @@ var BANNED_NATIVE_TYPES = new Map(__spreadArray(__spreadArray([
268
1365
  ["WeakSet", "Array"],
269
1366
  ["WeakMap", "Map"],
270
1367
  ], false));
1368
+ var NUMBER_TYPES = new Set([
1369
+ "int32",
1370
+ "uint32",
1371
+ "int64",
1372
+ "uint64",
1373
+ "float",
1374
+ "double",
1375
+ ]);
1376
+ var BIGINT_TYPES = new Set(["int64", "uint64"]);
271
1377
  //# sourceMappingURL=ProtobufFactory.js.map