typia 5.3.0-dev.20231119 → 5.3.0-dev.20231120

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 (348) hide show
  1. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +7 -2
  2. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AssertionGuard.ts +1 -1
  5. package/src/CamelCase.ts +114 -114
  6. package/src/IRandomGenerator.ts +35 -35
  7. package/src/IValidation.ts +21 -21
  8. package/src/PascalCase.ts +114 -114
  9. package/src/Primitive.ts +135 -135
  10. package/src/Resolved.ts +116 -116
  11. package/src/SnakeCase.ts +156 -156
  12. package/src/TypeGuardError.ts +36 -36
  13. package/src/executable/TypiaGenerateWizard.ts +83 -83
  14. package/src/executable/TypiaSetupWizard.ts +140 -140
  15. package/src/executable/setup/ArgumentParser.ts +43 -43
  16. package/src/executable/setup/CommandExecutor.ts +8 -8
  17. package/src/executable/setup/FileRetriever.ts +22 -22
  18. package/src/executable/setup/PackageManager.ts +71 -71
  19. package/src/executable/setup/PluginConfigurator.ts +69 -69
  20. package/src/executable/typia.ts +52 -52
  21. package/src/factories/CommentFactory.ts +79 -79
  22. package/src/factories/ExpressionFactory.ts +150 -150
  23. package/src/factories/IdentifierFactory.ts +70 -70
  24. package/src/factories/JsonMetadataFactory.ts +53 -53
  25. package/src/factories/LiteralFactory.ts +47 -47
  26. package/src/factories/MetadataCollection.ts +269 -269
  27. package/src/factories/MetadataCommentTagFactory.ts +601 -601
  28. package/src/factories/MetadataFactory.ts +267 -267
  29. package/src/factories/MetadataTypeTagFactory.ts +313 -313
  30. package/src/factories/NumericRangeFactory.ts +72 -72
  31. package/src/factories/ProtobufFactory.ts +259 -259
  32. package/src/factories/StatementFactory.ts +72 -72
  33. package/src/factories/TemplateFactory.ts +56 -56
  34. package/src/factories/TypeFactory.ts +118 -118
  35. package/src/factories/ValueFactory.ts +12 -12
  36. package/src/factories/internal/metadata/MetadataHelper.ts +15 -15
  37. package/src/factories/internal/metadata/emend_metadata_atomics.ts +37 -37
  38. package/src/factories/internal/metadata/emplace_metadata_alias.ts +41 -41
  39. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +38 -38
  40. package/src/factories/internal/metadata/emplace_metadata_object.ts +175 -175
  41. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  42. package/src/factories/internal/metadata/explore_metadata.ts +28 -28
  43. package/src/factories/internal/metadata/iterate_metadata.ts +94 -94
  44. package/src/factories/internal/metadata/iterate_metadata_alias.ts +34 -34
  45. package/src/factories/internal/metadata/iterate_metadata_array.ts +37 -37
  46. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  47. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  48. package/src/factories/internal/metadata/iterate_metadata_collection.ts +131 -131
  49. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -26
  50. package/src/factories/internal/metadata/iterate_metadata_constant.ts +48 -48
  51. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +233 -233
  52. package/src/factories/internal/metadata/iterate_metadata_map.ts +50 -50
  53. package/src/factories/internal/metadata/iterate_metadata_native.ts +208 -208
  54. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  55. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -52
  56. package/src/factories/internal/metadata/iterate_metadata_set.ts +41 -41
  57. package/src/factories/internal/metadata/iterate_metadata_sort.ts +61 -61
  58. package/src/factories/internal/metadata/iterate_metadata_template.ts +44 -44
  59. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +37 -37
  60. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -27
  61. package/src/functional/$HeadersReader.ts +28 -28
  62. package/src/functional/$ParameterReader.ts +31 -31
  63. package/src/functional/$ProtobufReader.ts +195 -195
  64. package/src/functional/$ProtobufSizer.ts +147 -147
  65. package/src/functional/$ProtobufWriter.ts +150 -150
  66. package/src/functional/$QueryReader.ts +56 -56
  67. package/src/functional/$any.ts +4 -4
  68. package/src/functional/$clone.ts +4 -4
  69. package/src/functional/$convention.ts +37 -37
  70. package/src/functional/$dictionary.ts +22 -22
  71. package/src/functional/$every.ts +11 -11
  72. package/src/functional/$from.ts +5 -5
  73. package/src/functional/$guard.ts +35 -35
  74. package/src/functional/$is_between.ts +2 -2
  75. package/src/functional/$join.ts +46 -46
  76. package/src/functional/$number.ts +12 -12
  77. package/src/functional/$report.ts +13 -13
  78. package/src/functional/$rest.ts +3 -3
  79. package/src/functional/$stoll.ts +8 -8
  80. package/src/functional/$string.ts +50 -50
  81. package/src/functional/$strlen.ts +7 -7
  82. package/src/functional/$tail.ts +5 -5
  83. package/src/functional/$varint.ts +130 -130
  84. package/src/functional/$zigzag.ts +39 -39
  85. package/src/functional/IProtobufWriter.ts +18 -18
  86. package/src/functional/Namespace.ts +174 -174
  87. package/src/http.ts +1149 -1149
  88. package/src/json.ts +648 -648
  89. package/src/misc.ts +651 -651
  90. package/src/module.ts +896 -896
  91. package/src/notations.ts +855 -855
  92. package/src/programmers/AssertProgrammer.ts +293 -293
  93. package/src/programmers/CheckerProgrammer.ts +1025 -1025
  94. package/src/programmers/FeatureProgrammer.ts +460 -460
  95. package/src/programmers/IsProgrammer.ts +232 -232
  96. package/src/programmers/RandomProgrammer.ts +825 -825
  97. package/src/programmers/TypiaProgrammer.ts +167 -167
  98. package/src/programmers/ValidateProgrammer.ts +307 -307
  99. package/src/programmers/helpers/AtomicPredicator.ts +25 -25
  100. package/src/programmers/helpers/CloneJoiner.ts +130 -130
  101. package/src/programmers/helpers/FunctionImporeter.ts +87 -87
  102. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  103. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  104. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  105. package/src/programmers/helpers/NotationJoiner.ts +132 -132
  106. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  107. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  108. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  109. package/src/programmers/helpers/PruneJoiner.ts +141 -141
  110. package/src/programmers/helpers/RandomJoiner.ts +140 -140
  111. package/src/programmers/helpers/RandomRanger.ts +164 -164
  112. package/src/programmers/helpers/StringifyJoinder.ts +105 -105
  113. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  114. package/src/programmers/helpers/UnionExplorer.ts +269 -269
  115. package/src/programmers/helpers/UnionPredicator.ts +77 -77
  116. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
  117. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +77 -77
  118. package/src/programmers/http/HttpAssertQueryProgrammer.ts +75 -75
  119. package/src/programmers/http/HttpHeadersProgrammer.ts +314 -314
  120. package/src/programmers/http/HttpIsHeadersProgrammer.ts +84 -84
  121. package/src/programmers/http/HttpIsQueryProgrammer.ts +82 -82
  122. package/src/programmers/http/HttpParameterProgrammer.ts +97 -97
  123. package/src/programmers/http/HttpQueryProgrammer.ts +252 -252
  124. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +77 -77
  125. package/src/programmers/http/HttpValidateQueryProgrammer.ts +75 -75
  126. package/src/programmers/internal/application_alias.ts +65 -65
  127. package/src/programmers/internal/application_array.ts +59 -59
  128. package/src/programmers/internal/application_boolean.ts +30 -30
  129. package/src/programmers/internal/application_constant.ts +26 -26
  130. package/src/programmers/internal/application_default.ts +17 -17
  131. package/src/programmers/internal/application_default_string.ts +33 -33
  132. package/src/programmers/internal/application_escaped.ts +53 -53
  133. package/src/programmers/internal/application_native.ts +38 -38
  134. package/src/programmers/internal/application_number.ts +94 -94
  135. package/src/programmers/internal/application_object.ts +153 -153
  136. package/src/programmers/internal/application_schema.ts +180 -180
  137. package/src/programmers/internal/application_string.ts +58 -58
  138. package/src/programmers/internal/application_templates.ts +25 -25
  139. package/src/programmers/internal/application_tuple.ts +55 -55
  140. package/src/programmers/internal/check_array_length.ts +45 -45
  141. package/src/programmers/internal/check_bigint.ts +49 -49
  142. package/src/programmers/internal/check_dynamic_key.ts +175 -175
  143. package/src/programmers/internal/check_dynamic_properties.ts +198 -198
  144. package/src/programmers/internal/check_everything.ts +23 -23
  145. package/src/programmers/internal/check_native.ts +21 -21
  146. package/src/programmers/internal/check_number.ts +106 -106
  147. package/src/programmers/internal/check_object.ts +60 -60
  148. package/src/programmers/internal/check_string.ts +48 -48
  149. package/src/programmers/internal/check_template.ts +61 -61
  150. package/src/programmers/internal/check_union_array_like.ts +307 -307
  151. package/src/programmers/internal/decode_union_object.ts +78 -78
  152. package/src/programmers/internal/feature_object_entries.ts +58 -58
  153. package/src/programmers/internal/metadata_to_pattern.ts +33 -33
  154. package/src/programmers/internal/prune_object_properties.ts +60 -60
  155. package/src/programmers/internal/random_custom.ts +37 -37
  156. package/src/programmers/internal/stringify_dynamic_properties.ts +157 -157
  157. package/src/programmers/internal/stringify_native.ts +7 -7
  158. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  159. package/src/programmers/internal/template_to_pattern.ts +15 -15
  160. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +20 -20
  161. package/src/programmers/json/JsonApplicationProgrammer.ts +50 -50
  162. package/src/programmers/json/JsonAssertParseProgrammer.ts +67 -67
  163. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +61 -61
  164. package/src/programmers/json/JsonIsParseProgrammer.ts +73 -73
  165. package/src/programmers/json/JsonIsStringifyProgrammer.ts +75 -75
  166. package/src/programmers/json/JsonStringifyProgrammer.ts +893 -893
  167. package/src/programmers/json/JsonValidateParseProgrammer.ts +64 -64
  168. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +83 -83
  169. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +63 -63
  170. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +60 -60
  171. package/src/programmers/misc/MiscCloneProgrammer.ts +713 -713
  172. package/src/programmers/misc/MiscIsCloneProgrammer.ts +70 -70
  173. package/src/programmers/misc/MiscIsPruneProgrammer.ts +66 -66
  174. package/src/programmers/misc/MiscLiteralsProgrammer.ts +72 -72
  175. package/src/programmers/misc/MiscPruneProgrammer.ts +523 -523
  176. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +80 -80
  177. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +73 -73
  178. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +64 -64
  179. package/src/programmers/notations/NotationGeneralProgrammer.ts +647 -647
  180. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +71 -71
  181. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +81 -81
  182. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
  183. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +61 -61
  184. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +607 -596
  185. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +819 -819
  186. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +82 -82
  187. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +75 -75
  188. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +160 -160
  189. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  190. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +83 -83
  191. package/src/protobuf.ts +887 -887
  192. package/src/reflect.ts +24 -24
  193. package/src/schemas/json/IJsonApplication.ts +8 -8
  194. package/src/schemas/json/IJsonComponents.ts +36 -36
  195. package/src/schemas/json/IJsonSchema.ts +113 -113
  196. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  197. package/src/schemas/metadata/IMetadata.ts +34 -34
  198. package/src/schemas/metadata/IMetadataAlias.ts +12 -12
  199. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  200. package/src/schemas/metadata/IMetadataArray.ts +7 -7
  201. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  202. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  203. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  204. package/src/schemas/metadata/IMetadataConstant.ts +23 -23
  205. package/src/schemas/metadata/IMetadataDictionary.ts +14 -14
  206. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  207. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  208. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  209. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  210. package/src/schemas/metadata/IMetadataTuple.ts +7 -7
  211. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  212. package/src/schemas/metadata/IMetadataTypeTag.ts +15 -15
  213. package/src/schemas/metadata/Metadata.ts +596 -596
  214. package/src/schemas/metadata/MetadataAlias.ts +61 -61
  215. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  216. package/src/schemas/metadata/MetadataArray.ts +49 -49
  217. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  218. package/src/schemas/metadata/MetadataAtomic.ts +84 -84
  219. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  220. package/src/schemas/metadata/MetadataConstant.ts +46 -46
  221. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  222. package/src/schemas/metadata/MetadataObject.ts +135 -135
  223. package/src/schemas/metadata/MetadataProperty.ts +56 -56
  224. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  225. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  226. package/src/tags/Default.ts +15 -15
  227. package/src/tags/ExclusiveMaximum.ts +13 -13
  228. package/src/tags/ExclusiveMinimum.ts +13 -13
  229. package/src/tags/Format.ts +30 -30
  230. package/src/tags/MaxItems.ts +9 -9
  231. package/src/tags/MaxLength.ts +9 -9
  232. package/src/tags/Maximum.ts +13 -13
  233. package/src/tags/MinItems.ts +9 -9
  234. package/src/tags/MinLength.ts +9 -9
  235. package/src/tags/Minimum.ts +13 -13
  236. package/src/tags/MultipleOf.ts +15 -15
  237. package/src/tags/Pattern.ts +9 -9
  238. package/src/tags/TagBase.ts +68 -68
  239. package/src/tags/Type.ts +27 -27
  240. package/src/transform.ts +35 -35
  241. package/src/transformers/CallExpressionTransformer.ts +359 -359
  242. package/src/transformers/FileTransformer.ts +57 -57
  243. package/src/transformers/IProject.ts +15 -15
  244. package/src/transformers/ITransformOptions.ts +62 -62
  245. package/src/transformers/ImportTransformer.ts +66 -66
  246. package/src/transformers/NodeTransformer.ts +13 -13
  247. package/src/transformers/TransformerError.ts +55 -55
  248. package/src/transformers/features/AssertTransformer.ts +16 -16
  249. package/src/transformers/features/CreateAssertTransformer.ts +16 -16
  250. package/src/transformers/features/CreateIsTransformer.ts +10 -10
  251. package/src/transformers/features/CreateRandomTransformer.ts +40 -40
  252. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  253. package/src/transformers/features/IsTransformer.ts +10 -10
  254. package/src/transformers/features/RandomTransformer.ts +44 -44
  255. package/src/transformers/features/ValidateTransformer.ts +11 -11
  256. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +11 -11
  257. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +9 -9
  258. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +9 -9
  259. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +9 -9
  260. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +9 -9
  261. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +9 -9
  262. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +9 -9
  263. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +12 -12
  264. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +11 -11
  265. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +9 -9
  266. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +9 -9
  267. package/src/transformers/features/http/HttpHeadersTransformer.ts +9 -9
  268. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +9 -9
  269. package/src/transformers/features/http/HttpIsQueryTransformer.ts +9 -9
  270. package/src/transformers/features/http/HttpParameterTransformer.ts +9 -9
  271. package/src/transformers/features/http/HttpQueryTransformer.ts +9 -9
  272. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +10 -10
  273. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +9 -9
  274. package/src/transformers/features/json/JsonApplicationTransformer.ts +121 -121
  275. package/src/transformers/features/json/JsonAssertParseTransformer.ts +9 -9
  276. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  277. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +9 -9
  278. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  279. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  280. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +9 -9
  281. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  282. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +11 -11
  283. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  284. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  285. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +9 -9
  286. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  287. package/src/transformers/features/json/JsonValidateParseTransformer.ts +9 -9
  288. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  289. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +9 -9
  290. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +9 -9
  291. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  292. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +9 -9
  293. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +9 -9
  294. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  295. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  296. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  297. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  298. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +11 -11
  299. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +11 -11
  300. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  301. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  302. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -32
  303. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  304. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +9 -9
  305. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +9 -9
  306. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +15 -15
  307. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +15 -15
  308. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +15 -15
  309. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +15 -15
  310. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +15 -15
  311. package/src/transformers/features/notations/NotationGeneralTransformer.ts +11 -11
  312. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +15 -15
  313. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +15 -15
  314. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  315. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  316. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +12 -12
  317. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +12 -12
  318. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +9 -9
  319. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +9 -9
  320. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +9 -9
  321. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +9 -9
  322. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +12 -12
  323. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +12 -12
  324. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +9 -9
  325. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +9 -9
  326. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +9 -9
  327. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +9 -9
  328. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -33
  329. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +10 -10
  330. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +10 -10
  331. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +73 -73
  332. package/src/transformers/internal/GenericTransformer.ts +96 -96
  333. package/src/typings/Atomic.ts +13 -13
  334. package/src/typings/ClassProperties.ts +5 -5
  335. package/src/typings/Customizable.ts +5 -5
  336. package/src/typings/ProtobufAtomic.ts +19 -19
  337. package/src/typings/SpecialFields.ts +3 -3
  338. package/src/typings/ValidationPipe.ts +9 -9
  339. package/src/typings/Writable.ts +11 -11
  340. package/src/utils/ArrayUtil.ts +43 -43
  341. package/src/utils/Escaper.ts +46 -46
  342. package/src/utils/MapUtil.ts +12 -12
  343. package/src/utils/NameEncoder.ts +32 -32
  344. package/src/utils/NamingConvention.ts +87 -87
  345. package/src/utils/PatternUtil.ts +29 -29
  346. package/src/utils/RandomGenerator.ts +83 -83
  347. package/src/utils/Singleton.ts +16 -16
  348. package/src/utils/StringUtil.ts +4 -4
@@ -1,164 +1,164 @@
1
- import ts from "typescript";
2
-
3
- import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
-
5
- import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
6
-
7
- export namespace RandomRanger {
8
- export interface IDefaults {
9
- minimum: number;
10
- maximum: number;
11
- gap: number;
12
- }
13
-
14
- export const length =
15
- (coalesce: (method: string) => ts.Expression) =>
16
- (defs: IDefaults) =>
17
- (acc: length.IAccessors) =>
18
- (tags: IMetadataTypeTag[]): ts.Expression | undefined => {
19
- const props = {
20
- minimum: getter(tags)(acc.minimum),
21
- maximum: getter(tags)(acc.maximum),
22
- };
23
- if (props.minimum === undefined && props.maximum === undefined)
24
- return undefined;
25
-
26
- props.minimum ??= defs.minimum;
27
- props.maximum ??= defs.maximum;
28
- if (props.maximum < props.minimum) (props.maximum as number) += defs.gap;
29
-
30
- return ts.factory.createCallExpression(coalesce("integer"), undefined, [
31
- ExpressionFactory.number(props.minimum),
32
- ExpressionFactory.number(props.maximum),
33
- ]);
34
- };
35
- export namespace length {
36
- export interface IAccessors {
37
- minimum: string;
38
- maximum: string;
39
- }
40
- }
41
-
42
- export const number =
43
- (config: number.IConfig) =>
44
- (defs: IDefaults) =>
45
- (tags: IMetadataTypeTag[]): ts.Expression => {
46
- const range = {
47
- minimum: {
48
- value: getter(tags)("minimum") ?? getter(tags)("exclusiveMinimum"),
49
- exclusive: getter(tags)("exclusiveMinimum") !== undefined,
50
- },
51
- maximum: {
52
- value: getter(tags)("maximum") ?? getter(tags)("exclusiveMaximum"),
53
- exclusive: getter(tags)("exclusiveMaximum") !== undefined,
54
- },
55
- stepper: undefined,
56
- multiply: getter(tags)("multipleOf"),
57
- };
58
-
59
- //----
60
- // MULTIPLIERS
61
- //----
62
- if (range.multiply !== undefined) {
63
- const { minimum, maximum } = multiplier(defs.gap)(range)(
64
- range.multiply,
65
- );
66
- return ts.factory.createMultiply(
67
- config.transform(range.multiply),
68
- config.setter([minimum, maximum]),
69
- );
70
- }
71
-
72
- //----
73
- // RANGE
74
- //----
75
- // INT
76
- const integer = (value: number) => value === Math.floor(value);
77
- if (config.type === "int") {
78
- if (range.minimum.value !== undefined) {
79
- if (range.minimum.exclusive) {
80
- range.minimum.exclusive = false;
81
- if (integer(range.minimum.value)) range.minimum.value += 1;
82
- }
83
- range.minimum.value = Math.ceil(range.minimum.value);
84
- }
85
- if (range.maximum.value !== undefined) {
86
- if (range.maximum.exclusive) {
87
- range.maximum.exclusive = false;
88
- if (integer(range.maximum.value)) range.maximum.value -= 1;
89
- }
90
- range.maximum.value = Math.floor(range.maximum.value);
91
- }
92
- }
93
-
94
- // UNSIGNED INT
95
- if (config.type === "uint") {
96
- if (range.minimum.value === undefined) range.minimum.value = 0;
97
- else if (range.minimum.value <= 0) {
98
- range.minimum.value = 0;
99
- range.minimum.exclusive = false;
100
- }
101
- }
102
-
103
- const minimum =
104
- range.minimum.value ??
105
- (range.maximum.value !== undefined
106
- ? range.maximum.value - defs.gap
107
- : defs.minimum);
108
- const maximum =
109
- range.maximum.value ??
110
- (range.minimum.value !== undefined
111
- ? range.minimum.value + defs.gap
112
- : defs.maximum);
113
- return config.setter([minimum, maximum]);
114
- };
115
- export namespace number {
116
- export interface IConfig {
117
- setter: (args: number[]) => ts.Expression;
118
- transform: (value: number) => ts.Expression;
119
- type: "int" | "uint" | "double";
120
- }
121
- }
122
- }
123
-
124
- const getter =
125
- (tags: IMetadataTypeTag[]) =>
126
- (kind: string): number | undefined => {
127
- const value: bigint | number | undefined = tags.find(
128
- (t) =>
129
- t.kind === kind &&
130
- (typeof t.value === "number" || typeof t.value === "bigint"),
131
- )?.value;
132
- return value !== undefined ? Number(value) : undefined;
133
- };
134
-
135
- const multiplier = (gap: number) => (range: IRange) => (m: number) => {
136
- const minimum: number =
137
- range.minimum.value === undefined
138
- ? 0
139
- : (() => {
140
- const x: number = m * Math.ceil(range.minimum.value / m);
141
- return range.minimum.exclusive && x === range.minimum.value
142
- ? x + m
143
- : x;
144
- })() / m;
145
- const maximum: number =
146
- range.maximum.value === undefined
147
- ? gap
148
- : (() => {
149
- const y: number = m * Math.floor(range.maximum.value / m);
150
- return range.maximum.exclusive && y === range.maximum.value
151
- ? y - m
152
- : y;
153
- })() / m;
154
- return { minimum, maximum };
155
- };
156
-
157
- interface IRange {
158
- minimum: IScalar;
159
- maximum: IScalar;
160
- }
161
- interface IScalar {
162
- value?: undefined | number;
163
- exclusive: boolean;
164
- }
1
+ import ts from "typescript";
2
+
3
+ import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
+
5
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
6
+
7
+ export namespace RandomRanger {
8
+ export interface IDefaults {
9
+ minimum: number;
10
+ maximum: number;
11
+ gap: number;
12
+ }
13
+
14
+ export const length =
15
+ (coalesce: (method: string) => ts.Expression) =>
16
+ (defs: IDefaults) =>
17
+ (acc: length.IAccessors) =>
18
+ (tags: IMetadataTypeTag[]): ts.Expression | undefined => {
19
+ const props = {
20
+ minimum: getter(tags)(acc.minimum),
21
+ maximum: getter(tags)(acc.maximum),
22
+ };
23
+ if (props.minimum === undefined && props.maximum === undefined)
24
+ return undefined;
25
+
26
+ props.minimum ??= defs.minimum;
27
+ props.maximum ??= defs.maximum;
28
+ if (props.maximum < props.minimum) (props.maximum as number) += defs.gap;
29
+
30
+ return ts.factory.createCallExpression(coalesce("integer"), undefined, [
31
+ ExpressionFactory.number(props.minimum),
32
+ ExpressionFactory.number(props.maximum),
33
+ ]);
34
+ };
35
+ export namespace length {
36
+ export interface IAccessors {
37
+ minimum: string;
38
+ maximum: string;
39
+ }
40
+ }
41
+
42
+ export const number =
43
+ (config: number.IConfig) =>
44
+ (defs: IDefaults) =>
45
+ (tags: IMetadataTypeTag[]): ts.Expression => {
46
+ const range = {
47
+ minimum: {
48
+ value: getter(tags)("minimum") ?? getter(tags)("exclusiveMinimum"),
49
+ exclusive: getter(tags)("exclusiveMinimum") !== undefined,
50
+ },
51
+ maximum: {
52
+ value: getter(tags)("maximum") ?? getter(tags)("exclusiveMaximum"),
53
+ exclusive: getter(tags)("exclusiveMaximum") !== undefined,
54
+ },
55
+ stepper: undefined,
56
+ multiply: getter(tags)("multipleOf"),
57
+ };
58
+
59
+ //----
60
+ // MULTIPLIERS
61
+ //----
62
+ if (range.multiply !== undefined) {
63
+ const { minimum, maximum } = multiplier(defs.gap)(range)(
64
+ range.multiply,
65
+ );
66
+ return ts.factory.createMultiply(
67
+ config.transform(range.multiply),
68
+ config.setter([minimum, maximum]),
69
+ );
70
+ }
71
+
72
+ //----
73
+ // RANGE
74
+ //----
75
+ // INT
76
+ const integer = (value: number) => value === Math.floor(value);
77
+ if (config.type === "int") {
78
+ if (range.minimum.value !== undefined) {
79
+ if (range.minimum.exclusive) {
80
+ range.minimum.exclusive = false;
81
+ if (integer(range.minimum.value)) range.minimum.value += 1;
82
+ }
83
+ range.minimum.value = Math.ceil(range.minimum.value);
84
+ }
85
+ if (range.maximum.value !== undefined) {
86
+ if (range.maximum.exclusive) {
87
+ range.maximum.exclusive = false;
88
+ if (integer(range.maximum.value)) range.maximum.value -= 1;
89
+ }
90
+ range.maximum.value = Math.floor(range.maximum.value);
91
+ }
92
+ }
93
+
94
+ // UNSIGNED INT
95
+ if (config.type === "uint") {
96
+ if (range.minimum.value === undefined) range.minimum.value = 0;
97
+ else if (range.minimum.value <= 0) {
98
+ range.minimum.value = 0;
99
+ range.minimum.exclusive = false;
100
+ }
101
+ }
102
+
103
+ const minimum =
104
+ range.minimum.value ??
105
+ (range.maximum.value !== undefined
106
+ ? range.maximum.value - defs.gap
107
+ : defs.minimum);
108
+ const maximum =
109
+ range.maximum.value ??
110
+ (range.minimum.value !== undefined
111
+ ? range.minimum.value + defs.gap
112
+ : defs.maximum);
113
+ return config.setter([minimum, maximum]);
114
+ };
115
+ export namespace number {
116
+ export interface IConfig {
117
+ setter: (args: number[]) => ts.Expression;
118
+ transform: (value: number) => ts.Expression;
119
+ type: "int" | "uint" | "double";
120
+ }
121
+ }
122
+ }
123
+
124
+ const getter =
125
+ (tags: IMetadataTypeTag[]) =>
126
+ (kind: string): number | undefined => {
127
+ const value: bigint | number | undefined = tags.find(
128
+ (t) =>
129
+ t.kind === kind &&
130
+ (typeof t.value === "number" || typeof t.value === "bigint"),
131
+ )?.value;
132
+ return value !== undefined ? Number(value) : undefined;
133
+ };
134
+
135
+ const multiplier = (gap: number) => (range: IRange) => (m: number) => {
136
+ const minimum: number =
137
+ range.minimum.value === undefined
138
+ ? 0
139
+ : (() => {
140
+ const x: number = m * Math.ceil(range.minimum.value / m);
141
+ return range.minimum.exclusive && x === range.minimum.value
142
+ ? x + m
143
+ : x;
144
+ })() / m;
145
+ const maximum: number =
146
+ range.maximum.value === undefined
147
+ ? gap
148
+ : (() => {
149
+ const y: number = m * Math.floor(range.maximum.value / m);
150
+ return range.maximum.exclusive && y === range.maximum.value
151
+ ? y - m
152
+ : y;
153
+ })() / m;
154
+ return { minimum, maximum };
155
+ };
156
+
157
+ interface IRange {
158
+ minimum: IScalar;
159
+ maximum: IScalar;
160
+ }
161
+ interface IScalar {
162
+ value?: undefined | number;
163
+ exclusive: boolean;
164
+ }
@@ -1,105 +1,105 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
- import { TemplateFactory } from "../../factories/TemplateFactory";
5
-
6
- import { stringify_dynamic_properties } from "../internal/stringify_dynamic_properties";
7
- import { stringify_regular_properties } from "../internal/stringify_regular_properties";
8
- import { FunctionImporter } from "./FunctionImporeter";
9
- import { IExpressionEntry } from "./IExpressionEntry";
10
-
11
- export namespace StringifyJoiner {
12
- export const object =
13
- (importer: FunctionImporter) =>
14
- (
15
- _input: ts.Expression,
16
- entries: IExpressionEntry<ts.Expression>[],
17
- ): ts.Expression => {
18
- // CHECK AND SORT ENTRIES
19
- if (entries.length === 0) return ts.factory.createStringLiteral("{}");
20
-
21
- // PROPERTIES
22
- const regular: IExpressionEntry<ts.Expression>[] = entries.filter(
23
- (entry) => entry.key.isSoleLiteral(),
24
- );
25
- const dynamic: IExpressionEntry<ts.Expression>[] = entries.filter(
26
- (entry) => !entry.key.isSoleLiteral(),
27
- );
28
- const expressions: ts.Expression[] = [
29
- ...stringify_regular_properties(regular, dynamic),
30
- ...(dynamic.length
31
- ? [
32
- stringify_dynamic_properties(
33
- dynamic,
34
- regular.map((r) => r.key.getSoleLiteral()!),
35
- ),
36
- ]
37
- : []),
38
- ];
39
-
40
- // POP LAST COMMA, IF REQUIRED
41
- const filtered: ts.Expression[] =
42
- (regular.length &&
43
- regular[regular.length - 1]!.meta.isRequired() &&
44
- dynamic.length === 0) ||
45
- (regular.length === 0 && dynamic.length)
46
- ? expressions
47
- : [
48
- ts.factory.createCallExpression(importer.use("tail"), undefined, [
49
- TemplateFactory.generate(expressions),
50
- ]),
51
- ];
52
-
53
- // RETURNS WITH OBJECT BRACKET
54
- return TemplateFactory.generate([
55
- ts.factory.createStringLiteral(`{`),
56
- ...filtered,
57
- ts.factory.createStringLiteral(`}`),
58
- ]);
59
- };
60
-
61
- export const array = (
62
- input: ts.Expression,
63
- arrow: ts.ArrowFunction,
64
- ): ts.Expression =>
65
- TemplateFactory.generate([
66
- ts.factory.createStringLiteral(`[`),
67
- ts.factory.createCallExpression(
68
- ts.factory.createPropertyAccessExpression(
69
- ts.factory.createCallExpression(
70
- IdentifierFactory.access(input)("map"),
71
- undefined,
72
- [arrow],
73
- ),
74
- ts.factory.createIdentifier("join"),
75
- ),
76
- undefined,
77
- [ts.factory.createStringLiteral(`,`)],
78
- ),
79
- ts.factory.createStringLiteral(`]`),
80
- ]);
81
-
82
- export const tuple = (
83
- children: ts.Expression[],
84
- rest: ts.Expression | null,
85
- ): ts.Expression => {
86
- if (children.length === 0) return ts.factory.createStringLiteral("[]");
87
- if (rest === null && children.every((child) => ts.isStringLiteral(child)))
88
- return ts.factory.createStringLiteral(
89
- "[" +
90
- children.map((child) => (child as ts.StringLiteral).text).join(",") +
91
- "]",
92
- );
93
-
94
- const elements: ts.Expression[] = [ts.factory.createStringLiteral(`[`)];
95
- children.forEach((child, i) => {
96
- elements.push(child);
97
- if (i !== children.length - 1)
98
- elements.push(ts.factory.createStringLiteral(`,`));
99
- });
100
- if (rest !== null) elements.push(rest);
101
-
102
- elements.push(ts.factory.createStringLiteral(`]`));
103
- return TemplateFactory.generate(elements);
104
- };
105
- }
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { TemplateFactory } from "../../factories/TemplateFactory";
5
+
6
+ import { stringify_dynamic_properties } from "../internal/stringify_dynamic_properties";
7
+ import { stringify_regular_properties } from "../internal/stringify_regular_properties";
8
+ import { FunctionImporter } from "./FunctionImporeter";
9
+ import { IExpressionEntry } from "./IExpressionEntry";
10
+
11
+ export namespace StringifyJoiner {
12
+ export const object =
13
+ (importer: FunctionImporter) =>
14
+ (
15
+ _input: ts.Expression,
16
+ entries: IExpressionEntry<ts.Expression>[],
17
+ ): ts.Expression => {
18
+ // CHECK AND SORT ENTRIES
19
+ if (entries.length === 0) return ts.factory.createStringLiteral("{}");
20
+
21
+ // PROPERTIES
22
+ const regular: IExpressionEntry<ts.Expression>[] = entries.filter(
23
+ (entry) => entry.key.isSoleLiteral(),
24
+ );
25
+ const dynamic: IExpressionEntry<ts.Expression>[] = entries.filter(
26
+ (entry) => !entry.key.isSoleLiteral(),
27
+ );
28
+ const expressions: ts.Expression[] = [
29
+ ...stringify_regular_properties(regular, dynamic),
30
+ ...(dynamic.length
31
+ ? [
32
+ stringify_dynamic_properties(
33
+ dynamic,
34
+ regular.map((r) => r.key.getSoleLiteral()!),
35
+ ),
36
+ ]
37
+ : []),
38
+ ];
39
+
40
+ // POP LAST COMMA, IF REQUIRED
41
+ const filtered: ts.Expression[] =
42
+ (regular.length &&
43
+ regular[regular.length - 1]!.meta.isRequired() &&
44
+ dynamic.length === 0) ||
45
+ (regular.length === 0 && dynamic.length)
46
+ ? expressions
47
+ : [
48
+ ts.factory.createCallExpression(importer.use("tail"), undefined, [
49
+ TemplateFactory.generate(expressions),
50
+ ]),
51
+ ];
52
+
53
+ // RETURNS WITH OBJECT BRACKET
54
+ return TemplateFactory.generate([
55
+ ts.factory.createStringLiteral(`{`),
56
+ ...filtered,
57
+ ts.factory.createStringLiteral(`}`),
58
+ ]);
59
+ };
60
+
61
+ export const array = (
62
+ input: ts.Expression,
63
+ arrow: ts.ArrowFunction,
64
+ ): ts.Expression =>
65
+ TemplateFactory.generate([
66
+ ts.factory.createStringLiteral(`[`),
67
+ ts.factory.createCallExpression(
68
+ ts.factory.createPropertyAccessExpression(
69
+ ts.factory.createCallExpression(
70
+ IdentifierFactory.access(input)("map"),
71
+ undefined,
72
+ [arrow],
73
+ ),
74
+ ts.factory.createIdentifier("join"),
75
+ ),
76
+ undefined,
77
+ [ts.factory.createStringLiteral(`,`)],
78
+ ),
79
+ ts.factory.createStringLiteral(`]`),
80
+ ]);
81
+
82
+ export const tuple = (
83
+ children: ts.Expression[],
84
+ rest: ts.Expression | null,
85
+ ): ts.Expression => {
86
+ if (children.length === 0) return ts.factory.createStringLiteral("[]");
87
+ if (rest === null && children.every((child) => ts.isStringLiteral(child)))
88
+ return ts.factory.createStringLiteral(
89
+ "[" +
90
+ children.map((child) => (child as ts.StringLiteral).text).join(",") +
91
+ "]",
92
+ );
93
+
94
+ const elements: ts.Expression[] = [ts.factory.createStringLiteral(`[`)];
95
+ children.forEach((child, i) => {
96
+ elements.push(child);
97
+ if (i !== children.length - 1)
98
+ elements.push(ts.factory.createStringLiteral(`,`));
99
+ });
100
+ if (rest !== null) elements.push(rest);
101
+
102
+ elements.push(ts.factory.createStringLiteral(`]`));
103
+ return TemplateFactory.generate(elements);
104
+ };
105
+ }
@@ -1,12 +1,12 @@
1
- import { Metadata } from "../../schemas/metadata/Metadata";
2
-
3
- export namespace StringifyPredicator {
4
- export const require_escape = (value: string): boolean =>
5
- value.split("").some((ch) => ESCAPED.some((escaped) => escaped === ch));
6
-
7
- export const undefindable = (meta: Metadata): boolean =>
8
- meta.isRequired() === false ||
9
- (meta.escaped !== null && meta.escaped.returns.isRequired() === false);
10
-
11
- const ESCAPED = ['"', "\\", "\b", "\f", "\n", "\n", "\r", "\t"];
12
- }
1
+ import { Metadata } from "../../schemas/metadata/Metadata";
2
+
3
+ export namespace StringifyPredicator {
4
+ export const require_escape = (value: string): boolean =>
5
+ value.split("").some((ch) => ESCAPED.some((escaped) => escaped === ch));
6
+
7
+ export const undefindable = (meta: Metadata): boolean =>
8
+ meta.isRequired() === false ||
9
+ (meta.escaped !== null && meta.escaped.returns.isRequired() === false);
10
+
11
+ const ESCAPED = ['"', "\\", "\b", "\f", "\n", "\n", "\r", "\t"];
12
+ }