typia 4.0.0-dev.20230502 → 4.0.0-dev.20230517

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 (663) hide show
  1. package/README.md +2 -9
  2. package/lib/executable/TypiaGenerateWizard.js +1 -1
  3. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  4. package/lib/executable/TypiaSetupWizard.js +1 -1
  5. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  6. package/lib/executable/setup/ArgumentParser.js +1 -1
  7. package/lib/executable/setup/ArgumentParser.js.map +1 -1
  8. package/lib/executable/setup/CommandExecutor.js +1 -1
  9. package/lib/executable/setup/CommandExecutor.js.map +1 -1
  10. package/lib/executable/setup/FileRetriever.js +1 -1
  11. package/lib/executable/setup/FileRetriever.js.map +1 -1
  12. package/lib/executable/setup/PluginConfigurator.js +1 -1
  13. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  14. package/lib/factories/CommentFactory.d.ts +3 -3
  15. package/lib/factories/CommentFactory.js +1 -1
  16. package/lib/factories/CommentFactory.js.map +1 -1
  17. package/lib/factories/ExpressionFactory.d.ts +1 -1
  18. package/lib/factories/ExpressionFactory.js +10 -10
  19. package/lib/factories/ExpressionFactory.js.map +1 -1
  20. package/lib/factories/IdentifierFactory.d.ts +1 -1
  21. package/lib/factories/IdentifierFactory.js +14 -14
  22. package/lib/factories/IdentifierFactory.js.map +1 -1
  23. package/lib/factories/LiteralFactory.d.ts +1 -1
  24. package/lib/factories/LiteralFactory.js +9 -9
  25. package/lib/factories/LiteralFactory.js.map +1 -1
  26. package/lib/factories/MetadataCollection.d.ts +1 -1
  27. package/lib/factories/MetadataCollection.js +8 -7
  28. package/lib/factories/MetadataCollection.js.map +1 -1
  29. package/lib/factories/MetadataFactory.d.ts +1 -1
  30. package/lib/factories/MetadataFactory.js +1 -1
  31. package/lib/factories/MetadataFactory.js.map +1 -1
  32. package/lib/factories/MetadataTagFactory.d.ts +2 -2
  33. package/lib/factories/MetadataTagFactory.js +6 -6
  34. package/lib/factories/MetadataTagFactory.js.map +1 -1
  35. package/lib/factories/StatementFactory.d.ts +1 -1
  36. package/lib/factories/StatementFactory.js +7 -6
  37. package/lib/factories/StatementFactory.js.map +1 -1
  38. package/lib/factories/TemplateFactory.d.ts +1 -1
  39. package/lib/factories/TemplateFactory.js +10 -10
  40. package/lib/factories/TemplateFactory.js.map +1 -1
  41. package/lib/factories/TypeFactory.d.ts +1 -1
  42. package/lib/factories/TypeFactory.js +28 -22
  43. package/lib/factories/TypeFactory.js.map +1 -1
  44. package/lib/factories/ValueFactory.d.ts +1 -1
  45. package/lib/factories/ValueFactory.js +7 -7
  46. package/lib/factories/ValueFactory.js.map +1 -1
  47. package/lib/factories/internal/metadata/MetadataHelper.js +1 -1
  48. package/lib/factories/internal/metadata/MetadataHelper.js.map +1 -1
  49. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +1 -1
  50. package/lib/factories/internal/metadata/emplace_metadata_object.js +32 -23
  51. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  52. package/lib/factories/internal/metadata/explore_metadata.d.ts +1 -1
  53. package/lib/factories/internal/metadata/iterate_metadata.d.ts +1 -1
  54. package/lib/factories/internal/metadata/iterate_metadata.js +2 -1
  55. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  56. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +1 -1
  57. package/lib/factories/internal/metadata/iterate_metadata_array.js +6 -1
  58. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  59. package/lib/factories/internal/metadata/iterate_metadata_atomic.d.ts +1 -1
  60. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +10 -10
  61. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  62. package/lib/factories/internal/metadata/iterate_metadata_coalesce.d.ts +1 -1
  63. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js +8 -8
  64. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
  65. package/lib/factories/internal/metadata/iterate_metadata_constant.d.ts +1 -1
  66. package/lib/factories/internal/metadata/iterate_metadata_constant.js +5 -4
  67. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  68. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +1 -1
  69. package/lib/factories/internal/metadata/iterate_metadata_map.js +1 -1
  70. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  71. package/lib/factories/internal/metadata/iterate_metadata_native.d.ts +1 -1
  72. package/lib/factories/internal/metadata/iterate_metadata_native.js +1 -1
  73. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  74. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +1 -1
  75. package/lib/factories/internal/metadata/iterate_metadata_object.js +6 -5
  76. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  77. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +1 -1
  78. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +1 -1
  79. package/lib/factories/internal/metadata/iterate_metadata_set.js +1 -1
  80. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  81. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +1 -1
  82. package/lib/factories/internal/metadata/iterate_metadata_template.js +3 -3
  83. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  84. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +1 -1
  85. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +3 -3
  86. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  87. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +1 -1
  88. package/lib/factories/internal/metadata/iterate_metadata_union.js +5 -4
  89. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  90. package/lib/functional/Namespace.js +1 -1
  91. package/lib/functional/Namespace.js.map +1 -1
  92. package/lib/metadata/IMetadataTag.d.ts +3 -3
  93. package/lib/metadata/Metadata.js +2 -3
  94. package/lib/metadata/Metadata.js.map +1 -1
  95. package/lib/metadata/MetadataObject.js +1 -2
  96. package/lib/metadata/MetadataObject.js.map +1 -1
  97. package/lib/module.d.ts +1 -5
  98. package/lib/module.js +1 -6
  99. package/lib/module.js.map +1 -1
  100. package/lib/programmers/ApplicationProgrammer.d.ts +1 -4
  101. package/lib/programmers/ApplicationProgrammer.js +3 -7
  102. package/lib/programmers/ApplicationProgrammer.js.map +1 -1
  103. package/lib/programmers/AssertCloneProgrammer.d.ts +1 -1
  104. package/lib/programmers/AssertCloneProgrammer.js +7 -7
  105. package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
  106. package/lib/programmers/AssertParseProgrammer.d.ts +1 -1
  107. package/lib/programmers/AssertParseProgrammer.js +6 -6
  108. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  109. package/lib/programmers/AssertProgrammer.d.ts +1 -1
  110. package/lib/programmers/AssertProgrammer.js +38 -38
  111. package/lib/programmers/AssertProgrammer.js.map +1 -1
  112. package/lib/programmers/AssertPruneProgrammer.d.ts +1 -1
  113. package/lib/programmers/AssertPruneProgrammer.js +7 -7
  114. package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
  115. package/lib/programmers/AssertStringifyProgrammer.d.ts +1 -1
  116. package/lib/programmers/AssertStringifyProgrammer.js +6 -6
  117. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  118. package/lib/programmers/CheckerProgrammer.d.ts +3 -2
  119. package/lib/programmers/CheckerProgrammer.js +26 -26
  120. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  121. package/lib/programmers/CloneProgrammer.d.ts +1 -1
  122. package/lib/programmers/CloneProgrammer.js +21 -21
  123. package/lib/programmers/CloneProgrammer.js.map +1 -1
  124. package/lib/programmers/FeatureProgrammer.d.ts +4 -3
  125. package/lib/programmers/FeatureProgrammer.js +18 -18
  126. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  127. package/lib/programmers/IsCloneProgrammer.d.ts +1 -1
  128. package/lib/programmers/IsCloneProgrammer.js +10 -10
  129. package/lib/programmers/IsCloneProgrammer.js.map +1 -1
  130. package/lib/programmers/IsParseProgrammer.d.ts +1 -1
  131. package/lib/programmers/IsParseProgrammer.js +6 -6
  132. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  133. package/lib/programmers/IsProgrammer.d.ts +3 -3
  134. package/lib/programmers/IsProgrammer.js +25 -22
  135. package/lib/programmers/IsProgrammer.js.map +1 -1
  136. package/lib/programmers/IsPruneProgrammer.d.ts +1 -1
  137. package/lib/programmers/IsPruneProgrammer.js +7 -7
  138. package/lib/programmers/IsPruneProgrammer.js.map +1 -1
  139. package/lib/programmers/IsStringifyProgrammer.d.ts +1 -1
  140. package/lib/programmers/IsStringifyProgrammer.js +8 -8
  141. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  142. package/lib/programmers/LiteralsProgrammer.d.ts +1 -1
  143. package/lib/programmers/LiteralsProgrammer.js +9 -9
  144. package/lib/programmers/LiteralsProgrammer.js.map +1 -1
  145. package/lib/programmers/PruneProgrammer.d.ts +1 -1
  146. package/lib/programmers/PruneProgrammer.js +20 -20
  147. package/lib/programmers/PruneProgrammer.js.map +1 -1
  148. package/lib/programmers/RandomProgrammer.d.ts +1 -1
  149. package/lib/programmers/RandomProgrammer.js +38 -38
  150. package/lib/programmers/RandomProgrammer.js.map +1 -1
  151. package/lib/programmers/StringifyProgrammer.d.ts +1 -1
  152. package/lib/programmers/StringifyProgrammer.js +44 -44
  153. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  154. package/lib/programmers/TypiaProgrammer.js +16 -7
  155. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  156. package/lib/programmers/ValidateCloneProgrammer.d.ts +1 -1
  157. package/lib/programmers/ValidateCloneProgrammer.js +7 -7
  158. package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
  159. package/lib/programmers/ValidateParseProgrammer.d.ts +1 -1
  160. package/lib/programmers/ValidateParseProgrammer.js +7 -7
  161. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  162. package/lib/programmers/ValidateProgrammer.d.ts +1 -1
  163. package/lib/programmers/ValidateProgrammer.js +44 -44
  164. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  165. package/lib/programmers/ValidatePruneProgrammer.d.ts +1 -1
  166. package/lib/programmers/ValidatePruneProgrammer.js +7 -7
  167. package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
  168. package/lib/programmers/ValidateStringifyProgrammer.d.ts +1 -1
  169. package/lib/programmers/ValidateStringifyProgrammer.js +8 -8
  170. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  171. package/lib/programmers/helpers/AtomicPredicator.js +1 -1
  172. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  173. package/lib/programmers/helpers/CloneJoiner.d.ts +1 -1
  174. package/lib/programmers/helpers/CloneJoiner.js +23 -23
  175. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  176. package/lib/programmers/helpers/FunctionImporeter.d.ts +1 -1
  177. package/lib/programmers/helpers/FunctionImporeter.js +3 -3
  178. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  179. package/lib/programmers/helpers/ICheckEntry.d.ts +1 -1
  180. package/lib/programmers/helpers/IExpressionEntry.d.ts +1 -1
  181. package/lib/programmers/helpers/OptionPredicator.js +1 -1
  182. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  183. package/lib/programmers/helpers/PruneJoiner.d.ts +1 -1
  184. package/lib/programmers/helpers/PruneJoiner.js +20 -20
  185. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  186. package/lib/programmers/helpers/RandomJoiner.d.ts +1 -1
  187. package/lib/programmers/helpers/RandomJoiner.js +19 -19
  188. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  189. package/lib/programmers/helpers/RandomRanger.d.ts +1 -1
  190. package/lib/programmers/helpers/RandomRanger.js +8 -8
  191. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  192. package/lib/programmers/helpers/StringifyJoinder.d.ts +1 -1
  193. package/lib/programmers/helpers/StringifyJoinder.js +15 -15
  194. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  195. package/lib/programmers/helpers/StringifyPredicator.js +1 -1
  196. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  197. package/lib/programmers/helpers/UnionExplorer.d.ts +9 -8
  198. package/lib/programmers/helpers/UnionExplorer.js +11 -11
  199. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  200. package/lib/programmers/helpers/UnionPredicator.js +1 -1
  201. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  202. package/lib/programmers/helpers/disable_function_importer_declare.d.ts +2 -0
  203. package/lib/programmers/helpers/disable_function_importer_declare.js +15 -0
  204. package/lib/programmers/helpers/disable_function_importer_declare.js.map +1 -0
  205. package/lib/programmers/internal/JSON_SCHEMA_PREFIX.d.ts +1 -0
  206. package/lib/programmers/internal/JSON_SCHEMA_PREFIX.js +5 -0
  207. package/lib/programmers/internal/JSON_SCHEMA_PREFIX.js.map +1 -0
  208. package/lib/programmers/internal/application_array.js +6 -5
  209. package/lib/programmers/internal/application_array.js.map +1 -1
  210. package/lib/programmers/internal/application_boolean.js +1 -1
  211. package/lib/programmers/internal/application_boolean.js.map +1 -1
  212. package/lib/programmers/internal/application_constant.js +1 -1
  213. package/lib/programmers/internal/application_constant.js.map +1 -1
  214. package/lib/programmers/internal/application_default.js +3 -3
  215. package/lib/programmers/internal/application_default.js.map +1 -1
  216. package/lib/programmers/internal/application_native.js +15 -11
  217. package/lib/programmers/internal/application_native.js.map +1 -1
  218. package/lib/programmers/internal/application_number.js +8 -7
  219. package/lib/programmers/internal/application_number.js.map +1 -1
  220. package/lib/programmers/internal/application_object.js +18 -13
  221. package/lib/programmers/internal/application_object.js.map +1 -1
  222. package/lib/programmers/internal/application_schema.js +43 -63
  223. package/lib/programmers/internal/application_schema.js.map +1 -1
  224. package/lib/programmers/internal/application_string.js +29 -27
  225. package/lib/programmers/internal/application_string.js.map +1 -1
  226. package/lib/programmers/internal/application_templates.js +1 -1
  227. package/lib/programmers/internal/application_templates.js.map +1 -1
  228. package/lib/programmers/internal/application_tuple.js +3 -3
  229. package/lib/programmers/internal/application_tuple.js.map +1 -1
  230. package/lib/programmers/internal/check_array_length.js +4 -4
  231. package/lib/programmers/internal/check_array_length.js.map +1 -1
  232. package/lib/programmers/internal/check_bigint.js +11 -11
  233. package/lib/programmers/internal/check_bigint.js.map +1 -1
  234. package/lib/programmers/internal/check_custom.js +5 -5
  235. package/lib/programmers/internal/check_custom.js.map +1 -1
  236. package/lib/programmers/internal/check_dynamic_properties.js +23 -23
  237. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  238. package/lib/programmers/internal/check_everything.js +4 -4
  239. package/lib/programmers/internal/check_everything.js.map +1 -1
  240. package/lib/programmers/internal/check_native.js +2 -2
  241. package/lib/programmers/internal/check_native.js.map +1 -1
  242. package/lib/programmers/internal/check_number.js +15 -15
  243. package/lib/programmers/internal/check_number.js.map +1 -1
  244. package/lib/programmers/internal/check_object.js +2 -2
  245. package/lib/programmers/internal/check_object.js.map +1 -1
  246. package/lib/programmers/internal/check_string.js +2 -2
  247. package/lib/programmers/internal/check_string.js.map +1 -1
  248. package/lib/programmers/internal/check_string_tags.js +6 -6
  249. package/lib/programmers/internal/check_string_tags.js.map +1 -1
  250. package/lib/programmers/internal/check_template.js +5 -5
  251. package/lib/programmers/internal/check_template.js.map +1 -1
  252. package/lib/programmers/internal/check_union_array_like.js +18 -18
  253. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  254. package/lib/programmers/internal/check_union_tuple.js.map +1 -1
  255. package/lib/programmers/internal/decode_union_object.js +4 -4
  256. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  257. package/lib/programmers/internal/feature_object_entries.js +4 -4
  258. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  259. package/lib/programmers/internal/prune_object_properties.js +9 -9
  260. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  261. package/lib/programmers/internal/random_custom.js +2 -2
  262. package/lib/programmers/internal/random_custom.js.map +1 -1
  263. package/lib/programmers/internal/stringify_dynamic_properties.js +20 -20
  264. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  265. package/lib/programmers/internal/stringify_native.js +2 -2
  266. package/lib/programmers/internal/stringify_native.js.map +1 -1
  267. package/lib/programmers/internal/stringify_regular_properties.js +8 -8
  268. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  269. package/lib/schemas/IJsonApplication.d.ts +3 -0
  270. package/lib/schemas/IJsonComponents.d.ts +7 -1
  271. package/lib/schemas/IJsonSchema.d.ts +4 -1
  272. package/lib/transform.d.ts +3 -4
  273. package/lib/transform.js +18 -15
  274. package/lib/transform.js.map +1 -1
  275. package/lib/transformers/CallExpressionTransformer.d.ts +1 -1
  276. package/lib/transformers/CallExpressionTransformer.js +8 -9
  277. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  278. package/lib/transformers/FileTransformer.d.ts +1 -1
  279. package/lib/transformers/FileTransformer.js +7 -6
  280. package/lib/transformers/FileTransformer.js.map +1 -1
  281. package/lib/transformers/IProject.d.ts +1 -1
  282. package/lib/transformers/ImportTransformer.d.ts +1 -1
  283. package/lib/transformers/ImportTransformer.js +8 -7
  284. package/lib/transformers/ImportTransformer.js.map +1 -1
  285. package/lib/transformers/NodeTransformer.d.ts +1 -1
  286. package/lib/transformers/NodeTransformer.js +3 -3
  287. package/lib/transformers/NodeTransformer.js.map +1 -1
  288. package/lib/transformers/features/miscellaneous/ApplicationTransformer.d.ts +1 -1
  289. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +9 -12
  290. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
  291. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.d.ts +1 -1
  292. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js +1 -1
  293. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.js.map +1 -1
  294. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.d.ts +1 -1
  295. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js +1 -1
  296. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.js.map +1 -1
  297. package/lib/transformers/features/miscellaneous/CloneTransformer.d.ts +1 -1
  298. package/lib/transformers/features/miscellaneous/CloneTransformer.js +1 -1
  299. package/lib/transformers/features/miscellaneous/CloneTransformer.js.map +1 -1
  300. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.d.ts +1 -1
  301. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js +1 -1
  302. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js.map +1 -1
  303. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.d.ts +1 -1
  304. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js +1 -1
  305. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js.map +1 -1
  306. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.d.ts +1 -1
  307. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js +1 -1
  308. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.js.map +1 -1
  309. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.d.ts +1 -1
  310. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js +1 -1
  311. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js.map +1 -1
  312. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.d.ts +1 -1
  313. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js +1 -1
  314. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js.map +1 -1
  315. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.d.ts +1 -1
  316. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js +1 -1
  317. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js.map +1 -1
  318. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.d.ts +1 -1
  319. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.js +5 -3
  320. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.js.map +1 -1
  321. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.d.ts +1 -1
  322. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js +1 -1
  323. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js.map +1 -1
  324. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.d.ts +1 -1
  325. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js +1 -1
  326. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js.map +1 -1
  327. package/lib/transformers/features/miscellaneous/IsCloneTransformer.d.ts +1 -1
  328. package/lib/transformers/features/miscellaneous/IsCloneTransformer.js +1 -1
  329. package/lib/transformers/features/miscellaneous/IsCloneTransformer.js.map +1 -1
  330. package/lib/transformers/features/miscellaneous/IsPruneTransformer.d.ts +1 -1
  331. package/lib/transformers/features/miscellaneous/IsPruneTransformer.js +1 -1
  332. package/lib/transformers/features/miscellaneous/IsPruneTransformer.js.map +1 -1
  333. package/lib/transformers/features/miscellaneous/LiteralsTransformer.d.ts +1 -1
  334. package/lib/transformers/features/miscellaneous/LiteralsTransformer.js +3 -2
  335. package/lib/transformers/features/miscellaneous/LiteralsTransformer.js.map +1 -1
  336. package/lib/transformers/features/miscellaneous/MetadataTransformer.d.ts +1 -1
  337. package/lib/transformers/features/miscellaneous/MetadataTransformer.js +6 -5
  338. package/lib/transformers/features/miscellaneous/MetadataTransformer.js.map +1 -1
  339. package/lib/transformers/features/miscellaneous/PruneTransformer.d.ts +1 -1
  340. package/lib/transformers/features/miscellaneous/PruneTransformer.js +1 -1
  341. package/lib/transformers/features/miscellaneous/PruneTransformer.js.map +1 -1
  342. package/lib/transformers/features/miscellaneous/RandomTransformer.d.ts +1 -1
  343. package/lib/transformers/features/miscellaneous/RandomTransformer.js +6 -4
  344. package/lib/transformers/features/miscellaneous/RandomTransformer.js.map +1 -1
  345. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.d.ts +1 -1
  346. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js +1 -1
  347. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js.map +1 -1
  348. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.d.ts +1 -1
  349. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js +1 -1
  350. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js.map +1 -1
  351. package/lib/transformers/features/parsers/AssertParseTransformer.d.ts +1 -1
  352. package/lib/transformers/features/parsers/AssertParseTransformer.js +1 -1
  353. package/lib/transformers/features/parsers/AssertParseTransformer.js.map +1 -1
  354. package/lib/transformers/features/parsers/CreateAssertParseTransformer.d.ts +1 -1
  355. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js +1 -1
  356. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js.map +1 -1
  357. package/lib/transformers/features/parsers/CreateIsParseTransformer.d.ts +1 -1
  358. package/lib/transformers/features/parsers/CreateIsParseTransformer.js +1 -1
  359. package/lib/transformers/features/parsers/CreateIsParseTransformer.js.map +1 -1
  360. package/lib/transformers/features/parsers/CreateValidateParseTransformer.d.ts +1 -1
  361. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js +1 -1
  362. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js.map +1 -1
  363. package/lib/transformers/features/parsers/IsParseTransformer.d.ts +1 -1
  364. package/lib/transformers/features/parsers/IsParseTransformer.js +1 -1
  365. package/lib/transformers/features/parsers/IsParseTransformer.js.map +1 -1
  366. package/lib/transformers/features/parsers/ValidateParseTransformer.d.ts +1 -1
  367. package/lib/transformers/features/parsers/ValidateParseTransformer.js +1 -1
  368. package/lib/transformers/features/parsers/ValidateParseTransformer.js.map +1 -1
  369. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.d.ts +1 -1
  370. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js +1 -1
  371. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js.map +1 -1
  372. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.d.ts +1 -1
  373. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js +1 -1
  374. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js.map +1 -1
  375. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.d.ts +1 -1
  376. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js +1 -1
  377. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js.map +1 -1
  378. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.d.ts +1 -1
  379. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js +1 -1
  380. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js.map +1 -1
  381. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.d.ts +1 -1
  382. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js +1 -1
  383. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js.map +1 -1
  384. package/lib/transformers/features/stringifiers/IsStringifyTransformer.d.ts +1 -1
  385. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js +1 -1
  386. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js.map +1 -1
  387. package/lib/transformers/features/stringifiers/StringifyTransformer.d.ts +1 -1
  388. package/lib/transformers/features/stringifiers/StringifyTransformer.js +1 -1
  389. package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -1
  390. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.d.ts +1 -1
  391. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js +1 -1
  392. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js.map +1 -1
  393. package/lib/transformers/features/validators/AssertTransformer.d.ts +1 -1
  394. package/lib/transformers/features/validators/AssertTransformer.js +1 -1
  395. package/lib/transformers/features/validators/AssertTransformer.js.map +1 -1
  396. package/lib/transformers/features/validators/CreateAssertTransformer.d.ts +1 -1
  397. package/lib/transformers/features/validators/CreateAssertTransformer.js +1 -1
  398. package/lib/transformers/features/validators/CreateAssertTransformer.js.map +1 -1
  399. package/lib/transformers/features/validators/CreateIsTransformer.d.ts +1 -1
  400. package/lib/transformers/features/validators/CreateIsTransformer.js +1 -1
  401. package/lib/transformers/features/validators/CreateIsTransformer.js.map +1 -1
  402. package/lib/transformers/features/validators/CreateValidateTransformer.d.ts +1 -1
  403. package/lib/transformers/features/validators/CreateValidateTransformer.js +1 -1
  404. package/lib/transformers/features/validators/CreateValidateTransformer.js.map +1 -1
  405. package/lib/transformers/features/validators/IsTransformer.d.ts +1 -1
  406. package/lib/transformers/features/validators/IsTransformer.js +1 -1
  407. package/lib/transformers/features/validators/IsTransformer.js.map +1 -1
  408. package/lib/transformers/features/validators/ValidateTransformer.d.ts +1 -1
  409. package/lib/transformers/features/validators/ValidateTransformer.js +1 -1
  410. package/lib/transformers/features/validators/ValidateTransformer.js.map +1 -1
  411. package/lib/transformers/internal/GenericTransformer.d.ts +1 -1
  412. package/lib/transformers/internal/GenericTransformer.js +10 -8
  413. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  414. package/lib/utils/ArrayUtil.js +1 -1
  415. package/lib/utils/ArrayUtil.js.map +1 -1
  416. package/lib/utils/Escaper.js +1 -1
  417. package/lib/utils/Escaper.js.map +1 -1
  418. package/lib/utils/MapUtil.js +1 -1
  419. package/lib/utils/MapUtil.js.map +1 -1
  420. package/lib/utils/PatternUtil.js +1 -1
  421. package/lib/utils/PatternUtil.js.map +1 -1
  422. package/lib/utils/RandomGenerator.js +1 -1
  423. package/lib/utils/RandomGenerator.js.map +1 -1
  424. package/lib/utils/TsNodeUtil.d.ts +5 -0
  425. package/lib/utils/TsNodeUtil.js +19 -0
  426. package/lib/utils/TsNodeUtil.js.map +1 -0
  427. package/lib/utils/TsSymbolUtil.d.ts +6 -0
  428. package/lib/utils/TsSymbolUtil.js +43 -0
  429. package/lib/utils/TsSymbolUtil.js.map +1 -0
  430. package/lib/utils/TsTypeUtil.d.ts +9 -0
  431. package/lib/utils/TsTypeUtil.js +32 -0
  432. package/lib/utils/TsTypeUtil.js.map +1 -0
  433. package/package.json +129 -131
  434. package/src/factories/CommentFactory.ts +14 -14
  435. package/src/factories/ExpressionFactory.ts +70 -70
  436. package/src/factories/IdentifierFactory.ts +63 -63
  437. package/src/factories/LiteralFactory.ts +39 -39
  438. package/src/factories/MetadataCollection.ts +121 -121
  439. package/src/factories/MetadataFactory.ts +62 -62
  440. package/src/factories/MetadataTagFactory.ts +295 -297
  441. package/src/factories/StatementFactory.ts +25 -24
  442. package/src/factories/TemplateFactory.ts +58 -58
  443. package/src/factories/TypeFactory.ts +136 -124
  444. package/src/factories/ValueFactory.ts +12 -12
  445. package/src/factories/internal/metadata/emplace_metadata_object.ts +148 -143
  446. package/src/factories/internal/metadata/explore_metadata.ts +92 -92
  447. package/src/factories/internal/metadata/iterate_metadata.ts +69 -67
  448. package/src/factories/internal/metadata/iterate_metadata_array.ts +30 -29
  449. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  450. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  451. package/src/factories/internal/metadata/iterate_metadata_constant.ts +59 -58
  452. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  453. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  454. package/src/factories/internal/metadata/iterate_metadata_object.ts +49 -48
  455. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +27 -27
  456. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  457. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  458. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +48 -48
  459. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -57
  460. package/src/metadata/IMetadataTag.ts +3 -11
  461. package/src/metadata/Metadata.ts +1 -5
  462. package/src/module.ts +2038 -2054
  463. package/src/programmers/ApplicationProgrammer.ts +56 -62
  464. package/src/programmers/AssertCloneProgrammer.ts +79 -79
  465. package/src/programmers/AssertParseProgrammer.ts +74 -74
  466. package/src/programmers/AssertProgrammer.ts +285 -285
  467. package/src/programmers/AssertPruneProgrammer.ts +76 -76
  468. package/src/programmers/AssertStringifyProgrammer.ts +74 -74
  469. package/src/programmers/CheckerProgrammer.ts +902 -901
  470. package/src/programmers/CloneProgrammer.ts +389 -389
  471. package/src/programmers/FeatureProgrammer.ts +501 -500
  472. package/src/programmers/IsCloneProgrammer.ts +86 -86
  473. package/src/programmers/IsParseProgrammer.ts +80 -80
  474. package/src/programmers/IsProgrammer.ts +216 -212
  475. package/src/programmers/IsPruneProgrammer.ts +81 -81
  476. package/src/programmers/IsStringifyProgrammer.ts +84 -84
  477. package/src/programmers/LiteralsProgrammer.ts +65 -65
  478. package/src/programmers/PruneProgrammer.ts +347 -347
  479. package/src/programmers/RandomProgrammer.ts +423 -423
  480. package/src/programmers/StringifyProgrammer.ts +798 -798
  481. package/src/programmers/TypiaProgrammer.ts +136 -129
  482. package/src/programmers/ValidateCloneProgrammer.ts +93 -93
  483. package/src/programmers/ValidateParseProgrammer.ts +78 -78
  484. package/src/programmers/ValidateProgrammer.ts +316 -316
  485. package/src/programmers/ValidatePruneProgrammer.ts +86 -86
  486. package/src/programmers/ValidateStringifyProgrammer.ts +92 -92
  487. package/src/programmers/helpers/CloneJoiner.ts +131 -131
  488. package/src/programmers/helpers/FunctionImporeter.ts +54 -54
  489. package/src/programmers/helpers/ICheckEntry.ts +12 -12
  490. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  491. package/src/programmers/helpers/PruneJoiner.ts +144 -144
  492. package/src/programmers/helpers/RandomJoiner.ts +161 -161
  493. package/src/programmers/helpers/RandomRanger.ts +216 -216
  494. package/src/programmers/helpers/StringifyJoinder.ts +113 -113
  495. package/src/programmers/helpers/UnionExplorer.ts +276 -275
  496. package/src/programmers/helpers/disable_function_importer_declare.ts +21 -0
  497. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -0
  498. package/src/programmers/internal/application_array.ts +32 -36
  499. package/src/programmers/internal/application_boolean.ts +15 -17
  500. package/src/programmers/internal/application_constant.ts +26 -30
  501. package/src/programmers/internal/application_default.ts +17 -17
  502. package/src/programmers/internal/application_native.ts +36 -32
  503. package/src/programmers/internal/application_number.ts +71 -73
  504. package/src/programmers/internal/application_object.ts +162 -155
  505. package/src/programmers/internal/application_schema.ts +198 -213
  506. package/src/programmers/internal/application_string.ts +44 -45
  507. package/src/programmers/internal/application_templates.ts +25 -26
  508. package/src/programmers/internal/application_tuple.ts +27 -31
  509. package/src/programmers/internal/check_array.ts +30 -30
  510. package/src/programmers/internal/check_array_length.ts +35 -35
  511. package/src/programmers/internal/check_bigint.ts +82 -82
  512. package/src/programmers/internal/check_custom.ts +31 -31
  513. package/src/programmers/internal/check_dynamic_properties.ts +194 -194
  514. package/src/programmers/internal/check_everything.ts +28 -28
  515. package/src/programmers/internal/check_native.ts +21 -21
  516. package/src/programmers/internal/check_number.ts +177 -177
  517. package/src/programmers/internal/check_object.ts +55 -55
  518. package/src/programmers/internal/check_string.ts +26 -25
  519. package/src/programmers/internal/check_string_tags.ts +67 -67
  520. package/src/programmers/internal/check_template.ts +56 -56
  521. package/src/programmers/internal/check_union_array_like.ts +272 -271
  522. package/src/programmers/internal/check_union_tuple.ts +34 -33
  523. package/src/programmers/internal/decode_union_object.ts +73 -73
  524. package/src/programmers/internal/feature_object_entries.ts +63 -63
  525. package/src/programmers/internal/prune_object_properties.ts +60 -60
  526. package/src/programmers/internal/random_custom.ts +29 -29
  527. package/src/programmers/internal/stringify_dynamic_properties.ts +167 -167
  528. package/src/programmers/internal/stringify_native.ts +7 -7
  529. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  530. package/src/schemas/IJsonApplication.ts +13 -9
  531. package/src/schemas/IJsonComponents.ts +33 -26
  532. package/src/schemas/IJsonSchema.ts +134 -130
  533. package/src/transform.ts +17 -13
  534. package/src/transformers/CallExpressionTransformer.ts +180 -184
  535. package/src/transformers/FileTransformer.ts +50 -47
  536. package/src/transformers/IProject.ts +11 -11
  537. package/src/transformers/ImportTransformer.ts +68 -66
  538. package/src/transformers/NodeTransformer.ts +13 -13
  539. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +105 -112
  540. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +43 -39
  541. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +31 -28
  542. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +54 -52
  543. package/src/transformers/features/miscellaneous/RandomTransformer.ts +46 -42
  544. package/src/transformers/internal/GenericTransformer.ts +103 -97
  545. package/src/utils/TsNodeUtil.ts +12 -0
  546. package/src/utils/TsSymbolUtil.ts +41 -0
  547. package/src/utils/TsTypeUtil.ts +30 -0
  548. package/lib/factories/ProtocolFactory.d.ts +0 -8
  549. package/lib/factories/ProtocolFactory.js +0 -112
  550. package/lib/factories/ProtocolFactory.js.map +0 -1
  551. package/lib/factories/internal/protocols/ProtocolMetadataUtil.d.ts +0 -16
  552. package/lib/factories/internal/protocols/ProtocolMetadataUtil.js +0 -160
  553. package/lib/factories/internal/protocols/ProtocolMetadataUtil.js.map +0 -1
  554. package/lib/factories/internal/protocols/emplace_protocol_object.d.ts +0 -3
  555. package/lib/factories/internal/protocols/emplace_protocol_object.js +0 -47
  556. package/lib/factories/internal/protocols/emplace_protocol_object.js.map +0 -1
  557. package/lib/factories/internal/protocols/emplace_protocol_property.d.ts +0 -4
  558. package/lib/factories/internal/protocols/emplace_protocol_property.js +0 -20
  559. package/lib/factories/internal/protocols/emplace_protocol_property.js.map +0 -1
  560. package/lib/factories/internal/protocols/iterate_protocol_atomic.d.ts +0 -3
  561. package/lib/factories/internal/protocols/iterate_protocol_atomic.js +0 -69
  562. package/lib/factories/internal/protocols/iterate_protocol_atomic.js.map +0 -1
  563. package/lib/factories/internal/protocols/iterate_protocol_constant.d.ts +0 -2
  564. package/lib/factories/internal/protocols/iterate_protocol_constant.js +0 -30
  565. package/lib/factories/internal/protocols/iterate_protocol_constant.js.map +0 -1
  566. package/lib/factories/internal/protocols/iterate_protocol_main.d.ts +0 -3
  567. package/lib/factories/internal/protocols/iterate_protocol_main.js +0 -17
  568. package/lib/factories/internal/protocols/iterate_protocol_main.js.map +0 -1
  569. package/lib/factories/internal/protocols/iterate_protocol_map.d.ts +0 -4
  570. package/lib/factories/internal/protocols/iterate_protocol_map.js +0 -75
  571. package/lib/factories/internal/protocols/iterate_protocol_map.js.map +0 -1
  572. package/lib/factories/internal/protocols/iterate_protocol_metadata.d.ts +0 -5
  573. package/lib/factories/internal/protocols/iterate_protocol_metadata.js +0 -190
  574. package/lib/factories/internal/protocols/iterate_protocol_metadata.js.map +0 -1
  575. package/lib/factories/internal/protocols/iterate_protocol_native.d.ts +0 -2
  576. package/lib/factories/internal/protocols/iterate_protocol_native.js +0 -33
  577. package/lib/factories/internal/protocols/iterate_protocol_native.js.map +0 -1
  578. package/lib/factories/internal/protocols/iterate_protocol_never.d.ts +0 -1
  579. package/lib/factories/internal/protocols/iterate_protocol_never.js +0 -6
  580. package/lib/factories/internal/protocols/iterate_protocol_never.js.map +0 -1
  581. package/lib/factories/internal/protocols/iterate_protocol_object.d.ts +0 -4
  582. package/lib/factories/internal/protocols/iterate_protocol_object.js +0 -157
  583. package/lib/factories/internal/protocols/iterate_protocol_object.js.map +0 -1
  584. package/lib/factories/internal/protocols/iterate_protocol_repeated.d.ts +0 -5
  585. package/lib/factories/internal/protocols/iterate_protocol_repeated.js +0 -25
  586. package/lib/factories/internal/protocols/iterate_protocol_repeated.js.map +0 -1
  587. package/lib/factories/internal/protocols/iterate_protocol_tuple.d.ts +0 -3
  588. package/lib/factories/internal/protocols/iterate_protocol_tuple.js +0 -46
  589. package/lib/factories/internal/protocols/iterate_protocol_tuple.js.map +0 -1
  590. package/lib/functional/$proto_bytes.d.ts +0 -2
  591. package/lib/functional/$proto_bytes.js +0 -37
  592. package/lib/functional/$proto_bytes.js.map +0 -1
  593. package/lib/functional/$proto_field.d.ts +0 -10
  594. package/lib/functional/$proto_field.js +0 -42
  595. package/lib/functional/$proto_field.js.map +0 -1
  596. package/lib/functional/$proto_float.d.ts +0 -4
  597. package/lib/functional/$proto_float.js +0 -28
  598. package/lib/functional/$proto_float.js.map +0 -1
  599. package/lib/functional/$proto_i32.d.ts +0 -2
  600. package/lib/functional/$proto_i32.js +0 -23
  601. package/lib/functional/$proto_i32.js.map +0 -1
  602. package/lib/functional/$proto_i64.d.ts +0 -2
  603. package/lib/functional/$proto_i64.js +0 -31
  604. package/lib/functional/$proto_i64.js.map +0 -1
  605. package/lib/functional/$proto_size.d.ts +0 -6
  606. package/lib/functional/$proto_size.js +0 -76
  607. package/lib/functional/$proto_size.js.map +0 -1
  608. package/lib/functional/$proto_string.d.ts +0 -2
  609. package/lib/functional/$proto_string.js +0 -34
  610. package/lib/functional/$proto_string.js.map +0 -1
  611. package/lib/functional/$varint.d.ts +0 -6
  612. package/lib/functional/$varint.js +0 -99
  613. package/lib/functional/$varint.js.map +0 -1
  614. package/lib/functional/$zigzag.d.ts +0 -4
  615. package/lib/functional/$zigzag.js +0 -34
  616. package/lib/functional/$zigzag.js.map +0 -1
  617. package/lib/messages/IProtocolMap.d.ts +0 -5
  618. package/lib/messages/IProtocolMap.js +0 -3
  619. package/lib/messages/IProtocolMap.js.map +0 -1
  620. package/lib/messages/IProtocolMessage.d.ts +0 -5
  621. package/lib/messages/IProtocolMessage.js +0 -3
  622. package/lib/messages/IProtocolMessage.js.map +0 -1
  623. package/lib/messages/IProtocolProperty.d.ts +0 -12
  624. package/lib/messages/IProtocolProperty.js +0 -3
  625. package/lib/messages/IProtocolProperty.js.map +0 -1
  626. package/lib/programmers/MessageProgrammer.d.ts +0 -5
  627. package/lib/programmers/MessageProgrammer.js +0 -141
  628. package/lib/programmers/MessageProgrammer.js.map +0 -1
  629. package/lib/transformers/features/protocols/MessageTransformer.d.ts +0 -5
  630. package/lib/transformers/features/protocols/MessageTransformer.js +0 -20
  631. package/lib/transformers/features/protocols/MessageTransformer.js.map +0 -1
  632. package/lib/utils/NameEncoder.d.ts +0 -4
  633. package/lib/utils/NameEncoder.js +0 -89
  634. package/lib/utils/NameEncoder.js.map +0 -1
  635. package/src/factories/ProtocolFactory.ts +0 -79
  636. package/src/factories/internal/protocols/ProtocolMetadataUtil.ts +0 -167
  637. package/src/factories/internal/protocols/emplace_protocol_object.ts +0 -25
  638. package/src/factories/internal/protocols/emplace_protocol_property.ts +0 -12
  639. package/src/factories/internal/protocols/iterate_protocol_atomic.ts +0 -34
  640. package/src/factories/internal/protocols/iterate_protocol_constant.ts +0 -27
  641. package/src/factories/internal/protocols/iterate_protocol_main.ts +0 -19
  642. package/src/factories/internal/protocols/iterate_protocol_map.ts +0 -58
  643. package/src/factories/internal/protocols/iterate_protocol_metadata.ts +0 -96
  644. package/src/factories/internal/protocols/iterate_protocol_native.ts +0 -34
  645. package/src/factories/internal/protocols/iterate_protocol_never.ts +0 -1
  646. package/src/factories/internal/protocols/iterate_protocol_object.ts +0 -110
  647. package/src/factories/internal/protocols/iterate_protocol_repeated.ts +0 -34
  648. package/src/factories/internal/protocols/iterate_protocol_tuple.ts +0 -29
  649. package/src/functional/$proto_bytes.ts +0 -25
  650. package/src/functional/$proto_field.ts +0 -30
  651. package/src/functional/$proto_float.ts +0 -37
  652. package/src/functional/$proto_i32.ts +0 -29
  653. package/src/functional/$proto_i64.ts +0 -37
  654. package/src/functional/$proto_size.ts +0 -82
  655. package/src/functional/$proto_string.ts +0 -24
  656. package/src/functional/$varint.ts +0 -130
  657. package/src/functional/$zigzag.ts +0 -39
  658. package/src/messages/IProtocolMap.ts +0 -5
  659. package/src/messages/IProtocolMessage.ts +0 -6
  660. package/src/messages/IProtocolProperty.ts +0 -13
  661. package/src/programmers/MessageProgrammer.ts +0 -126
  662. package/src/transformers/features/protocols/MessageTransformer.ts +0 -31
  663. package/src/utils/NameEncoder.ts +0 -32
@@ -1,500 +1,501 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../factories/IdentifierFactory";
4
- import { MetadataCollection } from "../factories/MetadataCollection";
5
- import { StatementFactory } from "../factories/StatementFactory";
6
- import { TypeFactory } from "../factories/TypeFactory";
7
- import { ValueFactory } from "../factories/ValueFactory";
8
-
9
- import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
10
- import { IMetadataTag } from "../metadata/IMetadataTag";
11
- import { Metadata } from "../metadata/Metadata";
12
- import { MetadataObject } from "../metadata/MetadataObject";
13
-
14
- import { IProject } from "../transformers/IProject";
15
-
16
- import { CheckerProgrammer } from "./CheckerProgrammer";
17
- import { FunctionImporter } from "./helpers/FunctionImporeter";
18
- import { IExpressionEntry } from "./helpers/IExpressionEntry";
19
- import { UnionExplorer } from "./helpers/UnionExplorer";
20
- import { feature_object_entries } from "./internal/feature_object_entries";
21
-
22
- export namespace FeatureProgrammer {
23
- /* -----------------------------------------------------------
24
- PARAMETERS
25
- ----------------------------------------------------------- */
26
- export interface IConfig<Output extends ts.ConciseBody = ts.ConciseBody> {
27
- types: IConfig.ITypes;
28
-
29
- /**
30
- * Prefix name of functions for specific object types.
31
- */
32
- functors: string;
33
-
34
- /**
35
- * Prefix name of functions for union object types.
36
- */
37
- unioners: string;
38
-
39
- /**
40
- * Whether to archive access path or not.
41
- */
42
- path: boolean;
43
-
44
- /**
45
- * Whether to trace exception or not.
46
- */
47
- trace: boolean;
48
-
49
- addition?(collection: MetadataCollection): ts.Statement[];
50
-
51
- /**
52
- * Initializer of metadata.
53
- */
54
- initializer: (
55
- project: IProject,
56
- ) => (type: ts.Type) => [MetadataCollection, Metadata];
57
-
58
- /**
59
- * Decoder, station of every types.
60
- */
61
- decoder: Decoder<Metadata, Output>;
62
-
63
- /**
64
- * Object configurator.
65
- */
66
- objector: IConfig.IObjector;
67
-
68
- /**
69
- * Generator of functions for object types.
70
- */
71
- generator?: Partial<IConfig.IGenerator>;
72
- }
73
- export namespace IConfig {
74
- export interface ITypes {
75
- input: (type: ts.Type, name?: string) => ts.TypeNode;
76
- output: (type: ts.Type, name?: string) => ts.TypeNode;
77
- }
78
-
79
- export interface IObjector {
80
- /**
81
- * Type checker when union object type comes.
82
- */
83
- checker: Decoder<Metadata, ts.Expression>;
84
-
85
- /**
86
- * Decoder, function call expression generator of specific typed objects.
87
- */
88
- decoder: Decoder<MetadataObject, ts.Expression>;
89
-
90
- /**
91
- * Joiner of expressions from properties.
92
- */
93
- joiner(
94
- input: ts.Expression,
95
- entries: IExpressionEntry[],
96
- parent: MetadataObject,
97
- ): ts.ConciseBody;
98
-
99
- /**
100
- * Union type specificator.
101
- *
102
- * Expression of an algorithm specifying object type and calling
103
- * the `decoder` function of the specified object type.
104
- */
105
- unionizer: Decoder<MetadataObject[], ts.Expression>;
106
-
107
- /**
108
- * Handler of union type specification failure.
109
- *
110
- * @param value Expression of input parameter
111
- * @param expected Expected type name
112
- * @param explore Exploration info
113
- * @returns Statement of failure
114
- */
115
- failure(
116
- value: ts.Expression,
117
- expected: string,
118
- explore?: IExplore,
119
- ): ts.Statement;
120
-
121
- /**
122
- * Transformer of type checking expression by discrimination.
123
- *
124
- * When an object type has been specified by a discrimination without full
125
- * iteration, the `unionizer` will decode the object instance after
126
- * the last type checking.
127
- *
128
- * In such circumtance, you can transform the last type checking function.
129
- *
130
- * @param exp Current expression about type checking
131
- * @returns Transformed expression
132
- * @deprecated
133
- */
134
- is?(exp: ts.Expression): ts.Expression;
135
-
136
- /**
137
- * Transformer of non-undefined type checking by discrimination.
138
- *
139
- * When specifying an union type of objects, `typia` tries to find
140
- * descrimination way just by checking only one property type.
141
- * If succeeded to find the discrimination way, `typia` will check the target
142
- * property type and in the checking, non-undefined type checking would be
143
- * done.
144
- *
145
- * In such process, you can transform the non-undefined type checking.
146
- *
147
- * @param exp
148
- * @returns Transformed expression
149
- * @deprecated
150
- */
151
- required?(exp: ts.Expression): ts.Expression;
152
-
153
- /**
154
- * Conditon wrapper when unable to specify any object type.
155
- *
156
- * When failed to specify an object type through discrimination, full
157
- * iteration type checking would be happend. In such circumstance, you
158
- * can wrap the condition with additional function.
159
- *
160
- * @param condition Current condition
161
- * @returns A function wrapped current condition
162
- */
163
- full?: (
164
- condition: ts.Expression,
165
- ) => (
166
- input: ts.Expression,
167
- expected: string,
168
- explore: IExplore,
169
- ) => ts.Expression;
170
-
171
- /**
172
- * Return type.
173
- */
174
- type?: ts.TypeNode;
175
- }
176
- export interface IGenerator {
177
- /**
178
- *
179
- * @param col
180
- */
181
- functors(col: MetadataCollection): ts.VariableStatement[];
182
-
183
- /**
184
- *
185
- * @param col
186
- */
187
- unioners(col: MetadataCollection): ts.VariableStatement[];
188
- }
189
- }
190
-
191
- export interface IExplore {
192
- tracable: boolean;
193
- source: "top" | "object";
194
- from: "top" | "array" | "object";
195
- postfix: string;
196
- start?: number;
197
- }
198
-
199
- export interface Decoder<
200
- T,
201
- Output extends ts.ConciseBody = ts.ConciseBody,
202
- > {
203
- (
204
- input: ts.Expression,
205
- target: T,
206
- explore: IExplore,
207
- metaTags: IMetadataTag[],
208
- jsDocTags: ts.JSDocTagInfo[],
209
- ): Output;
210
- }
211
-
212
- /* -----------------------------------------------------------
213
- GENERATORS
214
- ----------------------------------------------------------- */
215
- export const analyze =
216
- (project: IProject) =>
217
- (config: IConfig) =>
218
- (importer: FunctionImporter) =>
219
- (type: ts.Type, name?: string) => {
220
- const [collection, meta] = config.initializer(project)(type);
221
-
222
- // ITERATE OVER ALL METADATA
223
- const output: ts.ConciseBody = config.decoder(
224
- ValueFactory.INPUT(),
225
- meta,
226
- {
227
- tracable: config.path || config.trace,
228
- source: "top",
229
- from: "top",
230
- postfix: '""',
231
- },
232
- [],
233
- [],
234
- );
235
-
236
- // RETURNS THE OPTIMAL ARROW FUNCTION
237
- const functors: ts.VariableStatement[] = (
238
- config.generator?.functors ?? write_functors(config)(importer)
239
- )(collection);
240
- const unioners: ts.VariableStatement[] = (
241
- config.generator?.unioners ?? write_unioners(config)(importer)
242
- )(collection);
243
- const added: ts.Statement[] = (config.addition ?? (() => []))(
244
- collection,
245
- );
246
-
247
- return ts.factory.createArrowFunction(
248
- undefined,
249
- undefined,
250
- PARAMETERS(config)(config.types.input(type, name))(
251
- ValueFactory.INPUT(),
252
- ),
253
- config.types.output(type, name),
254
- undefined,
255
- ts.factory.createBlock(
256
- [
257
- ...added,
258
- ...functors.filter((_, i) =>
259
- importer.hasLocal(`${config.functors}${i}`),
260
- ),
261
- ...unioners.filter((_, i) =>
262
- importer.hasLocal(`${config.unioners}${i}`),
263
- ),
264
- ...(ts.isBlock(output)
265
- ? output.statements
266
- : [ts.factory.createReturnStatement(output)]),
267
- ],
268
- true,
269
- ),
270
- );
271
- };
272
-
273
- export const write_functors =
274
- (config: IConfig) =>
275
- (importer: FunctionImporter) =>
276
- (collection: MetadataCollection) =>
277
- collection
278
- .objects()
279
- .map((obj, i) =>
280
- StatementFactory.constant(
281
- `${config.functors}${i}`,
282
- write_object(config)(importer)(obj),
283
- ),
284
- );
285
-
286
- export const write_unioners =
287
- (config: IConfig) =>
288
- (importer: FunctionImporter) =>
289
- (collection: MetadataCollection) =>
290
- collection
291
- .unions()
292
- .map((union, i) =>
293
- StatementFactory.constant(
294
- importer.useLocal(`${config.unioners}${i}`),
295
- write_union(config)(union),
296
- ),
297
- );
298
-
299
- const write_object =
300
- (config: IConfig) =>
301
- (importer: FunctionImporter) =>
302
- (obj: MetadataObject) =>
303
- ts.factory.createArrowFunction(
304
- undefined,
305
- undefined,
306
- PARAMETERS(config)(TypeFactory.keyword("any"))(
307
- ValueFactory.INPUT(),
308
- ),
309
- config.objector.type ?? TypeFactory.keyword("any"),
310
- undefined,
311
- config.objector.joiner(
312
- ts.factory.createIdentifier("input"),
313
- feature_object_entries(config)(importer)(obj)(
314
- ts.factory.createIdentifier("input"),
315
- ),
316
- obj,
317
- ),
318
- );
319
-
320
- const write_union = (config: IConfig) => {
321
- const explorer = UnionExplorer.object(config);
322
- const input = ValueFactory.INPUT();
323
-
324
- return (meta: MetadataObject[]) =>
325
- ts.factory.createArrowFunction(
326
- undefined,
327
- undefined,
328
- PARAMETERS(config)(TypeFactory.keyword("any"))(
329
- ValueFactory.INPUT(),
330
- ),
331
- TypeFactory.keyword("any"),
332
- undefined,
333
- explorer(
334
- input,
335
- meta,
336
- {
337
- tracable: config.path || config.trace,
338
- source: "object",
339
- from: "object",
340
- postfix: "",
341
- },
342
- [],
343
- [],
344
- ),
345
- );
346
- };
347
-
348
- /* -----------------------------------------------------------
349
- DECODERS
350
- ----------------------------------------------------------- */
351
- export const decode_array =
352
- (config: Pick<IConfig, "trace" | "path" | "decoder">) =>
353
- (importer: FunctionImporter) =>
354
- (
355
- combiner: (
356
- input: ts.Expression,
357
- arrow: ts.ArrowFunction,
358
- metaTags: IMetadataTag[],
359
- jsDocTags: ts.JSDocTagInfo[],
360
- ) => ts.Expression,
361
- ) => {
362
- const rand: string = importer.increment().toString();
363
- const tail =
364
- config.path || config.trace
365
- ? [
366
- IdentifierFactory.parameter(
367
- "_index" + rand,
368
- TypeFactory.keyword("number"),
369
- ),
370
- ]
371
- : [];
372
-
373
- return (
374
- input: ts.Expression,
375
- meta: Metadata,
376
- explore: IExplore,
377
- metaTags: IMetadataTag[],
378
- jsDocTags: IJsDocTagInfo[],
379
- ) => {
380
- const arrow: ts.ArrowFunction = ts.factory.createArrowFunction(
381
- undefined,
382
- undefined,
383
- [
384
- IdentifierFactory.parameter(
385
- "elem",
386
- TypeFactory.keyword("any"),
387
- ),
388
- ...tail,
389
- ],
390
- undefined,
391
- undefined,
392
- config.decoder(
393
- ValueFactory.INPUT("elem"),
394
- meta,
395
- {
396
- tracable: explore.tracable,
397
- source: explore.source,
398
- from: "array",
399
- postfix: INDEX_SYMBOL(explore.start ?? null)(
400
- explore.postfix,
401
- )(rand),
402
- },
403
- metaTags,
404
- jsDocTags,
405
- ),
406
- );
407
- return combiner(input, arrow, metaTags, jsDocTags);
408
- };
409
- };
410
-
411
- export const decode_object =
412
- (config: Pick<IConfig, "trace" | "path" | "functors">) =>
413
- (importer: FunctionImporter) =>
414
- (input: ts.Expression, obj: MetadataObject, explore: IExplore) =>
415
- ts.factory.createCallExpression(
416
- ts.factory.createIdentifier(
417
- importer.useLocal(`${config.functors}${obj.index}`),
418
- ),
419
- undefined,
420
- get_object_arguments(config)(explore)(input),
421
- );
422
-
423
- export const get_object_arguments =
424
- (config: Pick<IConfig, "path" | "trace">) =>
425
- (explore: FeatureProgrammer.IExplore) => {
426
- const tail: ts.Expression[] =
427
- config.path === false && config.trace === false
428
- ? []
429
- : config.path === true && config.trace === true
430
- ? [
431
- ts.factory.createIdentifier(
432
- explore.postfix
433
- ? `_path + ${explore.postfix}`
434
- : "_path",
435
- ),
436
- explore.source === "object"
437
- ? ts.factory.createIdentifier(
438
- `${explore.tracable} && _exceptionable`,
439
- )
440
- : explore.tracable
441
- ? ts.factory.createTrue()
442
- : ts.factory.createFalse(),
443
- ]
444
- : config.path === true
445
- ? [
446
- ts.factory.createIdentifier(
447
- explore.postfix
448
- ? `_path + ${explore.postfix}`
449
- : "_path",
450
- ),
451
- ]
452
- : [
453
- explore.source === "object"
454
- ? ts.factory.createIdentifier(
455
- `${explore.tracable} && _exceptionable`,
456
- )
457
- : explore.tracable
458
- ? ts.factory.createTrue()
459
- : ts.factory.createFalse(),
460
- ];
461
- return (input: ts.Expression) => [input, ...tail];
462
- };
463
- }
464
-
465
- const INDEX_SYMBOL =
466
- (start: number | null) => (prev: string) => (rand: string) => {
467
- const tail: string =
468
- start !== null
469
- ? `"[" + (${start} + _index${rand}) + "]"`
470
- : `"[" + _index${rand} + "]"`;
471
- if (prev === "") return tail;
472
- else if (prev[prev.length - 1] === `"`)
473
- return prev.substring(0, prev.length - 1) + tail.substring(1);
474
- return prev + ` + ${tail}`;
475
- };
476
-
477
- const PARAMETERS =
478
- (props: Pick<CheckerProgrammer.IConfig, "path" | "trace">) =>
479
- (type: ts.TypeNode) => {
480
- const tail: ts.ParameterDeclaration[] = [];
481
- if (props.path)
482
- tail.push(
483
- IdentifierFactory.parameter(
484
- "_path",
485
- TypeFactory.keyword("string"),
486
- ),
487
- );
488
- if (props.trace)
489
- tail.push(
490
- IdentifierFactory.parameter(
491
- "_exceptionable",
492
- TypeFactory.keyword("boolean"),
493
- ts.factory.createTrue(),
494
- ),
495
- );
496
- return (input: ts.Identifier) => [
497
- IdentifierFactory.parameter(input, type),
498
- ...tail,
499
- ];
500
- };
1
+ import { JSDocTagInfo } from "typescript";
2
+ import ts from "typescript/lib/tsclibrary";
3
+
4
+ import { IdentifierFactory } from "../factories/IdentifierFactory";
5
+ import { MetadataCollection } from "../factories/MetadataCollection";
6
+ import { StatementFactory } from "../factories/StatementFactory";
7
+ import { TypeFactory } from "../factories/TypeFactory";
8
+ import { ValueFactory } from "../factories/ValueFactory";
9
+
10
+ import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
11
+ import { IMetadataTag } from "../metadata/IMetadataTag";
12
+ import { Metadata } from "../metadata/Metadata";
13
+ import { MetadataObject } from "../metadata/MetadataObject";
14
+
15
+ import { IProject } from "../transformers/IProject";
16
+
17
+ import { CheckerProgrammer } from "./CheckerProgrammer";
18
+ import { FunctionImporter } from "./helpers/FunctionImporeter";
19
+ import { IExpressionEntry } from "./helpers/IExpressionEntry";
20
+ import { UnionExplorer } from "./helpers/UnionExplorer";
21
+ import { feature_object_entries } from "./internal/feature_object_entries";
22
+
23
+ export namespace FeatureProgrammer {
24
+ /* -----------------------------------------------------------
25
+ PARAMETERS
26
+ ----------------------------------------------------------- */
27
+ export interface IConfig<Output extends ts.ConciseBody = ts.ConciseBody> {
28
+ types: IConfig.ITypes;
29
+
30
+ /**
31
+ * Prefix name of functions for specific object types.
32
+ */
33
+ functors: string;
34
+
35
+ /**
36
+ * Prefix name of functions for union object types.
37
+ */
38
+ unioners: string;
39
+
40
+ /**
41
+ * Whether to archive access path or not.
42
+ */
43
+ path: boolean;
44
+
45
+ /**
46
+ * Whether to trace exception or not.
47
+ */
48
+ trace: boolean;
49
+
50
+ addition?(collection: MetadataCollection): ts.Statement[];
51
+
52
+ /**
53
+ * Initializer of metadata.
54
+ */
55
+ initializer: (
56
+ project: IProject,
57
+ ) => (type: ts.Type) => [MetadataCollection, Metadata];
58
+
59
+ /**
60
+ * Decoder, station of every types.
61
+ */
62
+ decoder: Decoder<Metadata, Output>;
63
+
64
+ /**
65
+ * Object configurator.
66
+ */
67
+ objector: IConfig.IObjector;
68
+
69
+ /**
70
+ * Generator of functions for object types.
71
+ */
72
+ generator?: Partial<IConfig.IGenerator>;
73
+ }
74
+ export namespace IConfig {
75
+ export interface ITypes {
76
+ input: (type: ts.Type, name?: string) => ts.TypeNode;
77
+ output: (type: ts.Type, name?: string) => ts.TypeNode;
78
+ }
79
+
80
+ export interface IObjector {
81
+ /**
82
+ * Type checker when union object type comes.
83
+ */
84
+ checker: Decoder<Metadata, ts.Expression>;
85
+
86
+ /**
87
+ * Decoder, function call expression generator of specific typed objects.
88
+ */
89
+ decoder: Decoder<MetadataObject, ts.Expression>;
90
+
91
+ /**
92
+ * Joiner of expressions from properties.
93
+ */
94
+ joiner(
95
+ input: ts.Expression,
96
+ entries: IExpressionEntry[],
97
+ parent: MetadataObject,
98
+ ): ts.ConciseBody;
99
+
100
+ /**
101
+ * Union type specificator.
102
+ *
103
+ * Expression of an algorithm specifying object type and calling
104
+ * the `decoder` function of the specified object type.
105
+ */
106
+ unionizer: Decoder<MetadataObject[], ts.Expression>;
107
+
108
+ /**
109
+ * Handler of union type specification failure.
110
+ *
111
+ * @param value Expression of input parameter
112
+ * @param expected Expected type name
113
+ * @param explore Exploration info
114
+ * @returns Statement of failure
115
+ */
116
+ failure(
117
+ value: ts.Expression,
118
+ expected: string,
119
+ explore?: IExplore,
120
+ ): ts.Statement;
121
+
122
+ /**
123
+ * Transformer of type checking expression by discrimination.
124
+ *
125
+ * When an object type has been specified by a discrimination without full
126
+ * iteration, the `unionizer` will decode the object instance after
127
+ * the last type checking.
128
+ *
129
+ * In such circumtance, you can transform the last type checking function.
130
+ *
131
+ * @param exp Current expression about type checking
132
+ * @returns Transformed expression
133
+ * @deprecated
134
+ */
135
+ is?(exp: ts.Expression): ts.Expression;
136
+
137
+ /**
138
+ * Transformer of non-undefined type checking by discrimination.
139
+ *
140
+ * When specifying an union type of objects, `typia` tries to find
141
+ * descrimination way just by checking only one property type.
142
+ * If succeeded to find the discrimination way, `typia` will check the target
143
+ * property type and in the checking, non-undefined type checking would be
144
+ * done.
145
+ *
146
+ * In such process, you can transform the non-undefined type checking.
147
+ *
148
+ * @param exp
149
+ * @returns Transformed expression
150
+ * @deprecated
151
+ */
152
+ required?(exp: ts.Expression): ts.Expression;
153
+
154
+ /**
155
+ * Conditon wrapper when unable to specify any object type.
156
+ *
157
+ * When failed to specify an object type through discrimination, full
158
+ * iteration type checking would be happend. In such circumstance, you
159
+ * can wrap the condition with additional function.
160
+ *
161
+ * @param condition Current condition
162
+ * @returns A function wrapped current condition
163
+ */
164
+ full?: (
165
+ condition: ts.Expression,
166
+ ) => (
167
+ input: ts.Expression,
168
+ expected: string,
169
+ explore: IExplore,
170
+ ) => ts.Expression;
171
+
172
+ /**
173
+ * Return type.
174
+ */
175
+ type?: ts.TypeNode;
176
+ }
177
+ export interface IGenerator {
178
+ /**
179
+ *
180
+ * @param col
181
+ */
182
+ functors(col: MetadataCollection): ts.VariableStatement[];
183
+
184
+ /**
185
+ *
186
+ * @param col
187
+ */
188
+ unioners(col: MetadataCollection): ts.VariableStatement[];
189
+ }
190
+ }
191
+
192
+ export interface IExplore {
193
+ tracable: boolean;
194
+ source: "top" | "object";
195
+ from: "top" | "array" | "object";
196
+ postfix: string;
197
+ start?: number;
198
+ }
199
+
200
+ export interface Decoder<
201
+ T,
202
+ Output extends ts.ConciseBody = ts.ConciseBody,
203
+ > {
204
+ (
205
+ input: ts.Expression,
206
+ target: T,
207
+ explore: IExplore,
208
+ metaTags: IMetadataTag[],
209
+ jsDocTags: JSDocTagInfo[],
210
+ ): Output;
211
+ }
212
+
213
+ /* -----------------------------------------------------------
214
+ GENERATORS
215
+ ----------------------------------------------------------- */
216
+ export const analyze =
217
+ (project: IProject) =>
218
+ (config: IConfig) =>
219
+ (importer: FunctionImporter) =>
220
+ (type: ts.Type, name?: string) => {
221
+ const [collection, meta] = config.initializer(project)(type);
222
+
223
+ // ITERATE OVER ALL METADATA
224
+ const output: ts.ConciseBody = config.decoder(
225
+ ValueFactory.INPUT(),
226
+ meta,
227
+ {
228
+ tracable: config.path || config.trace,
229
+ source: "top",
230
+ from: "top",
231
+ postfix: '""',
232
+ },
233
+ [],
234
+ [],
235
+ );
236
+
237
+ // RETURNS THE OPTIMAL ARROW FUNCTION
238
+ const functors: ts.VariableStatement[] = (
239
+ config.generator?.functors ?? write_functors(config)(importer)
240
+ )(collection);
241
+ const unioners: ts.VariableStatement[] = (
242
+ config.generator?.unioners ?? write_unioners(config)(importer)
243
+ )(collection);
244
+ const added: ts.Statement[] = (config.addition ?? (() => []))(
245
+ collection,
246
+ );
247
+
248
+ return ts.factory.createArrowFunction(
249
+ undefined,
250
+ undefined,
251
+ PARAMETERS(config)(config.types.input(type, name))(
252
+ ValueFactory.INPUT(),
253
+ ),
254
+ config.types.output(type, name),
255
+ undefined,
256
+ ts.factory.createBlock(
257
+ [
258
+ ...added,
259
+ ...functors.filter((_, i) =>
260
+ importer.hasLocal(`${config.functors}${i}`),
261
+ ),
262
+ ...unioners.filter((_, i) =>
263
+ importer.hasLocal(`${config.unioners}${i}`),
264
+ ),
265
+ ...(ts.isBlock(output)
266
+ ? output.statements
267
+ : [ts.factory.createReturnStatement(output)]),
268
+ ],
269
+ true,
270
+ ),
271
+ );
272
+ };
273
+
274
+ export const write_functors =
275
+ (config: IConfig) =>
276
+ (importer: FunctionImporter) =>
277
+ (collection: MetadataCollection) =>
278
+ collection
279
+ .objects()
280
+ .map((obj, i) =>
281
+ StatementFactory.constant(
282
+ `${config.functors}${i}`,
283
+ write_object(config)(importer)(obj),
284
+ ),
285
+ );
286
+
287
+ export const write_unioners =
288
+ (config: IConfig) =>
289
+ (importer: FunctionImporter) =>
290
+ (collection: MetadataCollection) =>
291
+ collection
292
+ .unions()
293
+ .map((union, i) =>
294
+ StatementFactory.constant(
295
+ importer.useLocal(`${config.unioners}${i}`),
296
+ write_union(config)(union),
297
+ ),
298
+ );
299
+
300
+ const write_object =
301
+ (config: IConfig) =>
302
+ (importer: FunctionImporter) =>
303
+ (obj: MetadataObject) =>
304
+ ts.factory.createArrowFunction(
305
+ undefined,
306
+ undefined,
307
+ PARAMETERS(config)(TypeFactory.keyword("any"))(
308
+ ValueFactory.INPUT(),
309
+ ),
310
+ config.objector.type ?? TypeFactory.keyword("any"),
311
+ undefined,
312
+ config.objector.joiner(
313
+ ts.factory.createIdentifier("input"),
314
+ feature_object_entries(config)(importer)(obj)(
315
+ ts.factory.createIdentifier("input"),
316
+ ),
317
+ obj,
318
+ ),
319
+ );
320
+
321
+ const write_union = (config: IConfig) => {
322
+ const explorer = UnionExplorer.object(config);
323
+ const input = ValueFactory.INPUT();
324
+
325
+ return (meta: MetadataObject[]) =>
326
+ ts.factory.createArrowFunction(
327
+ undefined,
328
+ undefined,
329
+ PARAMETERS(config)(TypeFactory.keyword("any"))(
330
+ ValueFactory.INPUT(),
331
+ ),
332
+ TypeFactory.keyword("any"),
333
+ undefined,
334
+ explorer(
335
+ input,
336
+ meta,
337
+ {
338
+ tracable: config.path || config.trace,
339
+ source: "object",
340
+ from: "object",
341
+ postfix: "",
342
+ },
343
+ [],
344
+ [],
345
+ ),
346
+ );
347
+ };
348
+
349
+ /* -----------------------------------------------------------
350
+ DECODERS
351
+ ----------------------------------------------------------- */
352
+ export const decode_array =
353
+ (config: Pick<IConfig, "trace" | "path" | "decoder">) =>
354
+ (importer: FunctionImporter) =>
355
+ (
356
+ combiner: (
357
+ input: ts.Expression,
358
+ arrow: ts.ArrowFunction,
359
+ metaTags: IMetadataTag[],
360
+ jsDocTags: JSDocTagInfo[],
361
+ ) => ts.Expression,
362
+ ) => {
363
+ const rand: string = importer.increment().toString();
364
+ const tail =
365
+ config.path || config.trace
366
+ ? [
367
+ IdentifierFactory.parameter(
368
+ "_index" + rand,
369
+ TypeFactory.keyword("number"),
370
+ ),
371
+ ]
372
+ : [];
373
+
374
+ return (
375
+ input: ts.Expression,
376
+ meta: Metadata,
377
+ explore: IExplore,
378
+ metaTags: IMetadataTag[],
379
+ jsDocTags: IJsDocTagInfo[],
380
+ ) => {
381
+ const arrow: ts.ArrowFunction = ts.factory.createArrowFunction(
382
+ undefined,
383
+ undefined,
384
+ [
385
+ IdentifierFactory.parameter(
386
+ "elem",
387
+ TypeFactory.keyword("any"),
388
+ ),
389
+ ...tail,
390
+ ],
391
+ undefined,
392
+ undefined,
393
+ config.decoder(
394
+ ValueFactory.INPUT("elem"),
395
+ meta,
396
+ {
397
+ tracable: explore.tracable,
398
+ source: explore.source,
399
+ from: "array",
400
+ postfix: INDEX_SYMBOL(explore.start ?? null)(
401
+ explore.postfix,
402
+ )(rand),
403
+ },
404
+ metaTags,
405
+ jsDocTags,
406
+ ),
407
+ );
408
+ return combiner(input, arrow, metaTags, jsDocTags);
409
+ };
410
+ };
411
+
412
+ export const decode_object =
413
+ (config: Pick<IConfig, "trace" | "path" | "functors">) =>
414
+ (importer: FunctionImporter) =>
415
+ (input: ts.Expression, obj: MetadataObject, explore: IExplore) =>
416
+ ts.factory.createCallExpression(
417
+ ts.factory.createIdentifier(
418
+ importer.useLocal(`${config.functors}${obj.index}`),
419
+ ),
420
+ undefined,
421
+ get_object_arguments(config)(explore)(input),
422
+ );
423
+
424
+ export const get_object_arguments =
425
+ (config: Pick<IConfig, "path" | "trace">) =>
426
+ (explore: FeatureProgrammer.IExplore) => {
427
+ const tail: ts.Expression[] =
428
+ config.path === false && config.trace === false
429
+ ? []
430
+ : config.path === true && config.trace === true
431
+ ? [
432
+ ts.factory.createIdentifier(
433
+ explore.postfix
434
+ ? `_path + ${explore.postfix}`
435
+ : "_path",
436
+ ),
437
+ explore.source === "object"
438
+ ? ts.factory.createIdentifier(
439
+ `${explore.tracable} && _exceptionable`,
440
+ )
441
+ : explore.tracable
442
+ ? ts.factory.createTrue()
443
+ : ts.factory.createFalse(),
444
+ ]
445
+ : config.path === true
446
+ ? [
447
+ ts.factory.createIdentifier(
448
+ explore.postfix
449
+ ? `_path + ${explore.postfix}`
450
+ : "_path",
451
+ ),
452
+ ]
453
+ : [
454
+ explore.source === "object"
455
+ ? ts.factory.createIdentifier(
456
+ `${explore.tracable} && _exceptionable`,
457
+ )
458
+ : explore.tracable
459
+ ? ts.factory.createTrue()
460
+ : ts.factory.createFalse(),
461
+ ];
462
+ return (input: ts.Expression) => [input, ...tail];
463
+ };
464
+ }
465
+
466
+ const INDEX_SYMBOL =
467
+ (start: number | null) => (prev: string) => (rand: string) => {
468
+ const tail: string =
469
+ start !== null
470
+ ? `"[" + (${start} + _index${rand}) + "]"`
471
+ : `"[" + _index${rand} + "]"`;
472
+ if (prev === "") return tail;
473
+ else if (prev[prev.length - 1] === `"`)
474
+ return prev.substring(0, prev.length - 1) + tail.substring(1);
475
+ return prev + ` + ${tail}`;
476
+ };
477
+
478
+ const PARAMETERS =
479
+ (props: Pick<CheckerProgrammer.IConfig, "path" | "trace">) =>
480
+ (type: ts.TypeNode) => {
481
+ const tail: ts.ParameterDeclaration[] = [];
482
+ if (props.path)
483
+ tail.push(
484
+ IdentifierFactory.parameter(
485
+ "_path",
486
+ TypeFactory.keyword("string"),
487
+ ),
488
+ );
489
+ if (props.trace)
490
+ tail.push(
491
+ IdentifierFactory.parameter(
492
+ "_exceptionable",
493
+ TypeFactory.keyword("boolean"),
494
+ ts.factory.createTrue(),
495
+ ),
496
+ );
497
+ return (input: ts.Identifier) => [
498
+ IdentifierFactory.parameter(input, type),
499
+ ...tail,
500
+ ];
501
+ };