typia 4.0.0-dev.20230517 → 4.0.0-dev.20230519

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 (472) hide show
  1. package/lib/TypeGuardError.js +6 -2
  2. package/lib/TypeGuardError.js.map +1 -1
  3. package/lib/executable/TypiaGenerateWizard.js +24 -23
  4. package/lib/executable/TypiaGenerateWizard.js.map +1 -1
  5. package/lib/executable/TypiaSetupWizard.js +27 -20
  6. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  7. package/lib/executable/setup/ArgumentParser.js +5 -5
  8. package/lib/executable/setup/ArgumentParser.js.map +1 -1
  9. package/lib/executable/setup/PackageManager.js +8 -8
  10. package/lib/executable/setup/PackageManager.js.map +1 -1
  11. package/lib/executable/setup/PluginConfigurator.js +5 -4
  12. package/lib/executable/setup/PluginConfigurator.js.map +1 -1
  13. package/lib/executable/typia.js +17 -17
  14. package/lib/executable/typia.js.map +1 -1
  15. package/lib/factories/CommentFactory.js +3 -0
  16. package/lib/factories/CommentFactory.js.map +1 -1
  17. package/lib/factories/ExpressionFactory.d.ts +6 -6
  18. package/lib/factories/ExpressionFactory.js +34 -28
  19. package/lib/factories/ExpressionFactory.js.map +1 -1
  20. package/lib/factories/IdentifierFactory.d.ts +4 -8
  21. package/lib/factories/IdentifierFactory.js +23 -26
  22. package/lib/factories/IdentifierFactory.js.map +1 -1
  23. package/lib/factories/LiteralFactory.d.ts +2 -2
  24. package/lib/factories/LiteralFactory.js +42 -36
  25. package/lib/factories/LiteralFactory.js.map +1 -1
  26. package/lib/factories/MetadataCollection.d.ts +3 -2
  27. package/lib/factories/MetadataCollection.js +10 -7
  28. package/lib/factories/MetadataCollection.js.map +1 -1
  29. package/lib/factories/MetadataFactory.d.ts +3 -6
  30. package/lib/factories/MetadataFactory.js +5 -3
  31. package/lib/factories/MetadataFactory.js.map +1 -1
  32. package/lib/factories/MetadataTagFactory.js +19 -2
  33. package/lib/factories/MetadataTagFactory.js.map +1 -1
  34. package/lib/factories/StatementFactory.d.ts +2 -3
  35. package/lib/factories/StatementFactory.js +5 -13
  36. package/lib/factories/StatementFactory.js.map +1 -1
  37. package/lib/factories/TemplateFactory.d.ts +2 -2
  38. package/lib/factories/TemplateFactory.js +37 -35
  39. package/lib/factories/TemplateFactory.js.map +1 -1
  40. package/lib/factories/TypeFactory.d.ts +7 -6
  41. package/lib/factories/TypeFactory.js +65 -51
  42. package/lib/factories/TypeFactory.js.map +1 -1
  43. package/lib/factories/ValueFactory.d.ts +6 -6
  44. package/lib/factories/ValueFactory.js +14 -14
  45. package/lib/factories/ValueFactory.js.map +1 -1
  46. package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +3 -2
  47. package/lib/factories/internal/metadata/emplace_metadata_object.js +40 -27
  48. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  49. package/lib/factories/internal/metadata/explore_metadata.d.ts +3 -2
  50. package/lib/factories/internal/metadata/explore_metadata.js +69 -60
  51. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  52. package/lib/factories/internal/metadata/iterate_metadata.d.ts +3 -2
  53. package/lib/factories/internal/metadata/iterate_metadata.js +23 -17
  54. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  55. package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +3 -2
  56. package/lib/factories/internal/metadata/iterate_metadata_array.js +11 -13
  57. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  58. package/lib/factories/internal/metadata/iterate_metadata_atomic.d.ts +2 -2
  59. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +25 -23
  60. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  61. package/lib/factories/internal/metadata/iterate_metadata_coalesce.d.ts +2 -2
  62. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js +26 -26
  63. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
  64. package/lib/factories/internal/metadata/iterate_metadata_constant.d.ts +3 -2
  65. package/lib/factories/internal/metadata/iterate_metadata_constant.js +28 -29
  66. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  67. package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +3 -2
  68. package/lib/factories/internal/metadata/iterate_metadata_map.js +18 -16
  69. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  70. package/lib/factories/internal/metadata/iterate_metadata_native.d.ts +3 -2
  71. package/lib/factories/internal/metadata/iterate_metadata_native.js +39 -37
  72. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  73. package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +3 -2
  74. package/lib/factories/internal/metadata/iterate_metadata_object.js +24 -23
  75. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  76. package/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts +3 -2
  77. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +15 -10
  78. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  79. package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +3 -2
  80. package/lib/factories/internal/metadata/iterate_metadata_set.js +14 -12
  81. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  82. package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +3 -2
  83. package/lib/factories/internal/metadata/iterate_metadata_template.js +21 -20
  84. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  85. package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +3 -2
  86. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +26 -25
  87. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  88. package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +3 -2
  89. package/lib/factories/internal/metadata/iterate_metadata_union.js +54 -54
  90. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  91. package/lib/functional/$dictionary.js +3 -0
  92. package/lib/functional/$dictionary.js.map +1 -1
  93. package/lib/functional/$guard.js +20 -0
  94. package/lib/functional/$guard.js.map +1 -1
  95. package/lib/functional/$string.js +5 -0
  96. package/lib/functional/$string.js.map +1 -1
  97. package/lib/functional/$tail.js +3 -0
  98. package/lib/functional/$tail.js.map +1 -1
  99. package/lib/functional/Namespace.js +5 -0
  100. package/lib/functional/Namespace.js.map +1 -1
  101. package/lib/metadata/Metadata.js +71 -1
  102. package/lib/metadata/Metadata.js.map +1 -1
  103. package/lib/metadata/MetadataObject.js +22 -1
  104. package/lib/metadata/MetadataObject.js.map +1 -1
  105. package/lib/metadata/MetadataProperty.js +13 -1
  106. package/lib/metadata/MetadataProperty.js.map +1 -1
  107. package/lib/module.js +186 -0
  108. package/lib/module.js.map +1 -1
  109. package/lib/programmers/ApplicationProgrammer.d.ts +0 -4
  110. package/lib/programmers/ApplicationProgrammer.js +3 -1
  111. package/lib/programmers/ApplicationProgrammer.js.map +1 -1
  112. package/lib/programmers/AssertCloneProgrammer.d.ts +2 -6
  113. package/lib/programmers/AssertCloneProgrammer.js +9 -18
  114. package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
  115. package/lib/programmers/AssertParseProgrammer.d.ts +2 -6
  116. package/lib/programmers/AssertParseProgrammer.js +7 -16
  117. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  118. package/lib/programmers/AssertProgrammer.d.ts +2 -6
  119. package/lib/programmers/AssertProgrammer.js +102 -106
  120. package/lib/programmers/AssertProgrammer.js.map +1 -1
  121. package/lib/programmers/AssertPruneProgrammer.d.ts +2 -2
  122. package/lib/programmers/AssertPruneProgrammer.js +12 -13
  123. package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
  124. package/lib/programmers/AssertStringifyProgrammer.d.ts +2 -6
  125. package/lib/programmers/AssertStringifyProgrammer.js +8 -17
  126. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  127. package/lib/programmers/CheckerProgrammer.d.ts +5 -5
  128. package/lib/programmers/CheckerProgrammer.js +202 -186
  129. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  130. package/lib/programmers/CloneProgrammer.d.ts +2 -6
  131. package/lib/programmers/CloneProgrammer.js +233 -209
  132. package/lib/programmers/CloneProgrammer.js.map +1 -1
  133. package/lib/programmers/FeatureProgrammer.d.ts +7 -7
  134. package/lib/programmers/FeatureProgrammer.js +114 -96
  135. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  136. package/lib/programmers/IsCloneProgrammer.d.ts +2 -6
  137. package/lib/programmers/IsCloneProgrammer.js +12 -21
  138. package/lib/programmers/IsCloneProgrammer.js.map +1 -1
  139. package/lib/programmers/IsParseProgrammer.d.ts +2 -6
  140. package/lib/programmers/IsParseProgrammer.js +7 -16
  141. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  142. package/lib/programmers/IsProgrammer.d.ts +9 -9
  143. package/lib/programmers/IsProgrammer.js +98 -87
  144. package/lib/programmers/IsProgrammer.js.map +1 -1
  145. package/lib/programmers/IsPruneProgrammer.d.ts +2 -2
  146. package/lib/programmers/IsPruneProgrammer.js +12 -13
  147. package/lib/programmers/IsPruneProgrammer.js.map +1 -1
  148. package/lib/programmers/IsStringifyProgrammer.d.ts +2 -6
  149. package/lib/programmers/IsStringifyProgrammer.js +10 -19
  150. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  151. package/lib/programmers/LiteralsProgrammer.d.ts +2 -2
  152. package/lib/programmers/LiteralsProgrammer.js +12 -13
  153. package/lib/programmers/LiteralsProgrammer.js.map +1 -1
  154. package/lib/programmers/PruneProgrammer.d.ts +2 -2
  155. package/lib/programmers/PruneProgrammer.js +99 -80
  156. package/lib/programmers/PruneProgrammer.js.map +1 -1
  157. package/lib/programmers/RandomProgrammer.d.ts +2 -6
  158. package/lib/programmers/RandomProgrammer.js +271 -253
  159. package/lib/programmers/RandomProgrammer.js.map +1 -1
  160. package/lib/programmers/StringifyProgrammer.d.ts +2 -6
  161. package/lib/programmers/StringifyProgrammer.js +397 -355
  162. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  163. package/lib/programmers/TypiaProgrammer.js +45 -41
  164. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  165. package/lib/programmers/ValidateCloneProgrammer.d.ts +2 -2
  166. package/lib/programmers/ValidateCloneProgrammer.js +12 -13
  167. package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
  168. package/lib/programmers/ValidateParseProgrammer.d.ts +2 -2
  169. package/lib/programmers/ValidateParseProgrammer.js +11 -12
  170. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  171. package/lib/programmers/ValidateProgrammer.d.ts +2 -2
  172. package/lib/programmers/ValidateProgrammer.js +97 -92
  173. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  174. package/lib/programmers/ValidatePruneProgrammer.d.ts +2 -2
  175. package/lib/programmers/ValidatePruneProgrammer.js +12 -13
  176. package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
  177. package/lib/programmers/ValidateStringifyProgrammer.d.ts +2 -2
  178. package/lib/programmers/ValidateStringifyProgrammer.js +12 -13
  179. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  180. package/lib/programmers/helpers/CloneJoiner.d.ts +4 -4
  181. package/lib/programmers/helpers/CloneJoiner.js +43 -43
  182. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  183. package/lib/programmers/helpers/FunctionImporeter.d.ts +3 -1
  184. package/lib/programmers/helpers/FunctionImporeter.js +6 -8
  185. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  186. package/lib/programmers/helpers/ICheckEntry.d.ts +1 -1
  187. package/lib/programmers/helpers/IExpressionEntry.d.ts +1 -1
  188. package/lib/programmers/helpers/PruneJoiner.d.ts +4 -4
  189. package/lib/programmers/helpers/PruneJoiner.js +54 -47
  190. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  191. package/lib/programmers/helpers/RandomJoiner.d.ts +4 -4
  192. package/lib/programmers/helpers/RandomJoiner.js +65 -59
  193. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  194. package/lib/programmers/helpers/RandomRanger.d.ts +3 -3
  195. package/lib/programmers/helpers/RandomRanger.js +91 -81
  196. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  197. package/lib/programmers/helpers/StringifyJoinder.d.ts +4 -4
  198. package/lib/programmers/helpers/StringifyJoinder.js +62 -54
  199. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  200. package/lib/programmers/helpers/UnionExplorer.d.ts +7 -7
  201. package/lib/programmers/helpers/UnionExplorer.js +103 -64
  202. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  203. package/lib/programmers/helpers/UnionPredicator.js +5 -0
  204. package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
  205. package/lib/programmers/internal/application_array.js +5 -0
  206. package/lib/programmers/internal/application_array.js.map +1 -1
  207. package/lib/programmers/internal/application_boolean.js +3 -0
  208. package/lib/programmers/internal/application_boolean.js.map +1 -1
  209. package/lib/programmers/internal/application_constant.js +3 -0
  210. package/lib/programmers/internal/application_constant.js.map +1 -1
  211. package/lib/programmers/internal/application_default.js +3 -0
  212. package/lib/programmers/internal/application_default.js.map +1 -1
  213. package/lib/programmers/internal/application_default_string.js +5 -0
  214. package/lib/programmers/internal/application_default_string.js.map +1 -1
  215. package/lib/programmers/internal/application_native.js +3 -0
  216. package/lib/programmers/internal/application_native.js.map +1 -1
  217. package/lib/programmers/internal/application_number.js +9 -0
  218. package/lib/programmers/internal/application_number.js.map +1 -1
  219. package/lib/programmers/internal/application_object.js +9 -0
  220. package/lib/programmers/internal/application_object.js.map +1 -1
  221. package/lib/programmers/internal/application_schema.js +23 -0
  222. package/lib/programmers/internal/application_schema.js.map +1 -1
  223. package/lib/programmers/internal/application_string.js +9 -0
  224. package/lib/programmers/internal/application_string.js.map +1 -1
  225. package/lib/programmers/internal/application_templates.js +6 -0
  226. package/lib/programmers/internal/application_templates.js.map +1 -1
  227. package/lib/programmers/internal/application_tuple.js +3 -0
  228. package/lib/programmers/internal/application_tuple.js.map +1 -1
  229. package/lib/programmers/internal/check_array.js +12 -7
  230. package/lib/programmers/internal/check_array.js.map +1 -1
  231. package/lib/programmers/internal/check_array_length.js +8 -9
  232. package/lib/programmers/internal/check_array_length.js.map +1 -1
  233. package/lib/programmers/internal/check_bigint.js +71 -70
  234. package/lib/programmers/internal/check_bigint.js.map +1 -1
  235. package/lib/programmers/internal/check_custom.js +20 -19
  236. package/lib/programmers/internal/check_custom.js.map +1 -1
  237. package/lib/programmers/internal/check_dynamic_properties.js +82 -69
  238. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  239. package/lib/programmers/internal/check_everything.js +9 -10
  240. package/lib/programmers/internal/check_everything.js.map +1 -1
  241. package/lib/programmers/internal/check_native.js +7 -8
  242. package/lib/programmers/internal/check_native.js.map +1 -1
  243. package/lib/programmers/internal/check_number.js +27 -22
  244. package/lib/programmers/internal/check_number.js.map +1 -1
  245. package/lib/programmers/internal/check_object.js +32 -19
  246. package/lib/programmers/internal/check_object.js.map +1 -1
  247. package/lib/programmers/internal/check_string.js +12 -11
  248. package/lib/programmers/internal/check_string.js.map +1 -1
  249. package/lib/programmers/internal/check_string_tags.js +51 -50
  250. package/lib/programmers/internal/check_string_tags.js.map +1 -1
  251. package/lib/programmers/internal/check_template.js +27 -23
  252. package/lib/programmers/internal/check_template.js.map +1 -1
  253. package/lib/programmers/internal/check_union_array_like.js +61 -45
  254. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  255. package/lib/programmers/internal/check_union_tuple.js +4 -0
  256. package/lib/programmers/internal/check_union_tuple.js.map +1 -1
  257. package/lib/programmers/internal/decode_union_object.js +24 -21
  258. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  259. package/lib/programmers/internal/feature_object_entries.js +33 -32
  260. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  261. package/lib/programmers/internal/get_comment_tags.js +3 -0
  262. package/lib/programmers/internal/get_comment_tags.js.map +1 -1
  263. package/lib/programmers/internal/metadata_to_pattern.js +3 -0
  264. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  265. package/lib/programmers/internal/prune_object_properties.js +15 -14
  266. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  267. package/lib/programmers/internal/random_custom.js +10 -9
  268. package/lib/programmers/internal/random_custom.js.map +1 -1
  269. package/lib/programmers/internal/stringify_dynamic_properties.js +65 -54
  270. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  271. package/lib/programmers/internal/stringify_native.js +5 -6
  272. package/lib/programmers/internal/stringify_native.js.map +1 -1
  273. package/lib/programmers/internal/stringify_regular_properties.js +46 -41
  274. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  275. package/lib/programmers/internal/template_to_pattern.js +3 -0
  276. package/lib/programmers/internal/template_to_pattern.js.map +1 -1
  277. package/lib/schemas/IJsonSchema.d.ts +1 -1
  278. package/lib/transform.d.ts +1 -1
  279. package/lib/transform.js +1 -0
  280. package/lib/transform.js.map +1 -1
  281. package/lib/transformers/CallExpressionTransformer.d.ts +1 -1
  282. package/lib/transformers/CallExpressionTransformer.js +29 -2
  283. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  284. package/lib/transformers/FileTransformer.d.ts +1 -1
  285. package/lib/transformers/FileTransformer.js +4 -8
  286. package/lib/transformers/FileTransformer.js.map +1 -1
  287. package/lib/transformers/IProject.d.ts +8 -1
  288. package/lib/transformers/ImportTransformer.d.ts +2 -2
  289. package/lib/transformers/ImportTransformer.js +45 -34
  290. package/lib/transformers/ImportTransformer.js.map +1 -1
  291. package/lib/transformers/NodeTransformer.d.ts +1 -1
  292. package/lib/transformers/NodeTransformer.js +1 -5
  293. package/lib/transformers/NodeTransformer.js.map +1 -1
  294. package/lib/transformers/features/miscellaneous/ApplicationTransformer.d.ts +2 -2
  295. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +27 -18
  296. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
  297. package/lib/transformers/features/miscellaneous/AssertCloneTransformer.d.ts +1 -1
  298. package/lib/transformers/features/miscellaneous/AssertPruneTransformer.d.ts +1 -1
  299. package/lib/transformers/features/miscellaneous/CloneTransformer.d.ts +1 -1
  300. package/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.d.ts +1 -1
  301. package/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.d.ts +1 -1
  302. package/lib/transformers/features/miscellaneous/CreateCloneTransformer.d.ts +1 -1
  303. package/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.d.ts +1 -1
  304. package/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.d.ts +1 -1
  305. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.d.ts +1 -1
  306. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.d.ts +2 -2
  307. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.js +7 -4
  308. package/lib/transformers/features/miscellaneous/CreateRandomTransformer.js.map +1 -1
  309. package/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.d.ts +1 -1
  310. package/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.d.ts +1 -1
  311. package/lib/transformers/features/miscellaneous/IsCloneTransformer.d.ts +1 -1
  312. package/lib/transformers/features/miscellaneous/IsPruneTransformer.d.ts +1 -1
  313. package/lib/transformers/features/miscellaneous/LiteralsTransformer.d.ts +2 -2
  314. package/lib/transformers/features/miscellaneous/LiteralsTransformer.js +7 -4
  315. package/lib/transformers/features/miscellaneous/LiteralsTransformer.js.map +1 -1
  316. package/lib/transformers/features/miscellaneous/MetadataTransformer.d.ts +2 -2
  317. package/lib/transformers/features/miscellaneous/MetadataTransformer.js +13 -14
  318. package/lib/transformers/features/miscellaneous/MetadataTransformer.js.map +1 -1
  319. package/lib/transformers/features/miscellaneous/PruneTransformer.d.ts +1 -1
  320. package/lib/transformers/features/miscellaneous/RandomTransformer.d.ts +2 -2
  321. package/lib/transformers/features/miscellaneous/RandomTransformer.js +7 -8
  322. package/lib/transformers/features/miscellaneous/RandomTransformer.js.map +1 -1
  323. package/lib/transformers/features/miscellaneous/ValidateCloneTransformer.d.ts +1 -1
  324. package/lib/transformers/features/miscellaneous/ValidatePruneTransformer.d.ts +1 -1
  325. package/lib/transformers/features/parsers/AssertParseTransformer.d.ts +1 -1
  326. package/lib/transformers/features/parsers/CreateAssertParseTransformer.d.ts +1 -1
  327. package/lib/transformers/features/parsers/CreateIsParseTransformer.d.ts +1 -1
  328. package/lib/transformers/features/parsers/CreateValidateParseTransformer.d.ts +1 -1
  329. package/lib/transformers/features/parsers/IsParseTransformer.d.ts +1 -1
  330. package/lib/transformers/features/parsers/ValidateParseTransformer.d.ts +1 -1
  331. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.d.ts +1 -1
  332. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.d.ts +1 -1
  333. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.d.ts +1 -1
  334. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.d.ts +1 -1
  335. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.d.ts +1 -1
  336. package/lib/transformers/features/stringifiers/IsStringifyTransformer.d.ts +1 -1
  337. package/lib/transformers/features/stringifiers/StringifyTransformer.d.ts +1 -1
  338. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.d.ts +1 -1
  339. package/lib/transformers/features/validators/AssertTransformer.d.ts +1 -1
  340. package/lib/transformers/features/validators/CreateAssertTransformer.d.ts +1 -1
  341. package/lib/transformers/features/validators/CreateIsTransformer.d.ts +1 -1
  342. package/lib/transformers/features/validators/CreateValidateTransformer.d.ts +1 -1
  343. package/lib/transformers/features/validators/IsTransformer.d.ts +1 -1
  344. package/lib/transformers/features/validators/ValidateTransformer.d.ts +1 -1
  345. package/lib/transformers/internal/GenericTransformer.d.ts +3 -3
  346. package/lib/transformers/internal/GenericTransformer.js +19 -17
  347. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  348. package/lib/utils/RandomGenerator.js +9 -0
  349. package/lib/utils/RandomGenerator.js.map +1 -1
  350. package/lib/utils/Singleton.js +1 -1
  351. package/lib/utils/TsNodeUtil.d.ts +3 -3
  352. package/lib/utils/TsNodeUtil.js +7 -9
  353. package/lib/utils/TsNodeUtil.js.map +1 -1
  354. package/lib/utils/TsSymbolUtil.d.ts +3 -3
  355. package/lib/utils/TsSymbolUtil.js +137 -33
  356. package/lib/utils/TsSymbolUtil.js.map +1 -1
  357. package/lib/utils/TsTypeUtil.d.ts +7 -7
  358. package/lib/utils/TsTypeUtil.js +27 -19
  359. package/lib/utils/TsTypeUtil.js.map +1 -1
  360. package/package.json +128 -129
  361. package/src/factories/CommentFactory.ts +14 -14
  362. package/src/factories/ExpressionFactory.ts +77 -70
  363. package/src/factories/IdentifierFactory.ts +62 -63
  364. package/src/factories/LiteralFactory.ts +57 -39
  365. package/src/factories/MetadataCollection.ts +123 -121
  366. package/src/factories/MetadataFactory.ts +53 -62
  367. package/src/factories/MetadataTagFactory.ts +295 -295
  368. package/src/factories/StatementFactory.ts +20 -25
  369. package/src/factories/TemplateFactory.ts +64 -58
  370. package/src/factories/TypeFactory.ts +145 -136
  371. package/src/factories/ValueFactory.ts +15 -12
  372. package/src/factories/internal/metadata/emplace_metadata_object.ts +152 -148
  373. package/src/factories/internal/metadata/explore_metadata.ts +93 -92
  374. package/src/factories/internal/metadata/iterate_metadata.ts +63 -69
  375. package/src/factories/internal/metadata/iterate_metadata_array.ts +32 -30
  376. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  377. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  378. package/src/factories/internal/metadata/iterate_metadata_constant.ts +62 -59
  379. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  380. package/src/factories/internal/metadata/iterate_metadata_native.ts +217 -219
  381. package/src/factories/internal/metadata/iterate_metadata_object.ts +51 -49
  382. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +30 -27
  383. package/src/factories/internal/metadata/iterate_metadata_set.ts +36 -33
  384. package/src/factories/internal/metadata/iterate_metadata_template.ts +40 -38
  385. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +51 -48
  386. package/src/factories/internal/metadata/iterate_metadata_union.ts +59 -59
  387. package/src/module.ts +2038 -2038
  388. package/src/programmers/ApplicationProgrammer.ts +48 -56
  389. package/src/programmers/AssertCloneProgrammer.ts +68 -79
  390. package/src/programmers/AssertParseProgrammer.ts +66 -74
  391. package/src/programmers/AssertProgrammer.ts +274 -285
  392. package/src/programmers/AssertPruneProgrammer.ts +73 -76
  393. package/src/programmers/AssertStringifyProgrammer.ts +66 -74
  394. package/src/programmers/CheckerProgrammer.ts +897 -902
  395. package/src/programmers/CloneProgrammer.ts +387 -389
  396. package/src/programmers/FeatureProgrammer.ts +510 -501
  397. package/src/programmers/IsCloneProgrammer.ts +79 -86
  398. package/src/programmers/IsParseProgrammer.ts +72 -80
  399. package/src/programmers/IsProgrammer.ts +223 -216
  400. package/src/programmers/IsPruneProgrammer.ts +83 -81
  401. package/src/programmers/IsStringifyProgrammer.ts +77 -84
  402. package/src/programmers/LiteralsProgrammer.ts +65 -65
  403. package/src/programmers/PruneProgrammer.ts +348 -347
  404. package/src/programmers/RandomProgrammer.ts +444 -423
  405. package/src/programmers/StringifyProgrammer.ts +758 -798
  406. package/src/programmers/TypiaProgrammer.ts +141 -136
  407. package/src/programmers/ValidateCloneProgrammer.ts +93 -93
  408. package/src/programmers/ValidateParseProgrammer.ts +78 -78
  409. package/src/programmers/ValidateProgrammer.ts +317 -316
  410. package/src/programmers/ValidatePruneProgrammer.ts +86 -86
  411. package/src/programmers/ValidateStringifyProgrammer.ts +93 -92
  412. package/src/programmers/helpers/CloneJoiner.ts +138 -131
  413. package/src/programmers/helpers/FunctionImporeter.ts +56 -54
  414. package/src/programmers/helpers/ICheckEntry.ts +12 -12
  415. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  416. package/src/programmers/helpers/PruneJoiner.ts +156 -144
  417. package/src/programmers/helpers/RandomJoiner.ts +165 -161
  418. package/src/programmers/helpers/RandomRanger.ts +218 -216
  419. package/src/programmers/helpers/StringifyJoinder.ts +118 -113
  420. package/src/programmers/helpers/UnionExplorer.ts +281 -276
  421. package/src/programmers/helpers/disable_function_importer_declare.ts +21 -21
  422. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  423. package/src/programmers/internal/application_array.ts +32 -32
  424. package/src/programmers/internal/application_boolean.ts +15 -15
  425. package/src/programmers/internal/application_constant.ts +26 -26
  426. package/src/programmers/internal/application_default.ts +17 -17
  427. package/src/programmers/internal/application_native.ts +36 -36
  428. package/src/programmers/internal/application_number.ts +71 -71
  429. package/src/programmers/internal/application_object.ts +162 -162
  430. package/src/programmers/internal/application_schema.ts +198 -198
  431. package/src/programmers/internal/application_string.ts +44 -44
  432. package/src/programmers/internal/application_templates.ts +25 -25
  433. package/src/programmers/internal/application_tuple.ts +27 -27
  434. package/src/programmers/internal/check_array.ts +31 -30
  435. package/src/programmers/internal/check_array_length.ts +35 -35
  436. package/src/programmers/internal/check_bigint.ts +95 -82
  437. package/src/programmers/internal/check_custom.ts +32 -31
  438. package/src/programmers/internal/check_dynamic_properties.ts +198 -194
  439. package/src/programmers/internal/check_everything.ts +28 -28
  440. package/src/programmers/internal/check_native.ts +22 -21
  441. package/src/programmers/internal/check_number.ts +177 -177
  442. package/src/programmers/internal/check_object.ts +65 -55
  443. package/src/programmers/internal/check_string.ts +27 -26
  444. package/src/programmers/internal/check_string_tags.ts +68 -67
  445. package/src/programmers/internal/check_template.ts +57 -56
  446. package/src/programmers/internal/check_union_array_like.ts +273 -272
  447. package/src/programmers/internal/check_union_tuple.ts +34 -34
  448. package/src/programmers/internal/decode_union_object.ts +75 -73
  449. package/src/programmers/internal/feature_object_entries.ts +64 -63
  450. package/src/programmers/internal/prune_object_properties.ts +63 -60
  451. package/src/programmers/internal/random_custom.ts +30 -29
  452. package/src/programmers/internal/stringify_dynamic_properties.ts +173 -167
  453. package/src/programmers/internal/stringify_native.ts +7 -7
  454. package/src/programmers/internal/stringify_regular_properties.ts +89 -83
  455. package/src/schemas/IJsonApplication.ts +13 -13
  456. package/src/schemas/IJsonComponents.ts +33 -33
  457. package/src/schemas/IJsonSchema.ts +134 -134
  458. package/src/transform.ts +4 -5
  459. package/src/transformers/CallExpressionTransformer.ts +183 -180
  460. package/src/transformers/FileTransformer.ts +50 -50
  461. package/src/transformers/IProject.ts +18 -11
  462. package/src/transformers/ImportTransformer.ts +74 -68
  463. package/src/transformers/NodeTransformer.ts +13 -13
  464. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +107 -105
  465. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +43 -43
  466. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +31 -31
  467. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +56 -54
  468. package/src/transformers/features/miscellaneous/RandomTransformer.ts +46 -46
  469. package/src/transformers/internal/GenericTransformer.ts +101 -103
  470. package/src/utils/TsNodeUtil.ts +17 -12
  471. package/src/utils/TsSymbolUtil.ts +146 -41
  472. package/src/utils/TsTypeUtil.ts +38 -30
@@ -46,12 +46,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
46
46
  }
47
47
  return to.concat(ar || Array.prototype.slice.call(from));
48
48
  };
49
- var __importDefault = (this && this.__importDefault) || function (mod) {
50
- return (mod && mod.__esModule) ? mod : { "default": mod };
51
- };
52
49
  Object.defineProperty(exports, "__esModule", { value: true });
53
50
  exports.CheckerProgrammer = void 0;
54
- var tsclibrary_1 = __importDefault(require("typescript/lib/tsclibrary"));
55
51
  var ExpressionFactory_1 = require("../factories/ExpressionFactory");
56
52
  var IdentifierFactory_1 = require("../factories/IdentifierFactory");
57
53
  var MetadataCollection_1 = require("../factories/MetadataCollection");
@@ -74,6 +70,9 @@ var check_union_tuple_1 = require("./internal/check_union_tuple");
74
70
  var decode_union_object_1 = require("./internal/decode_union_object");
75
71
  var CheckerProgrammer;
76
72
  (function (CheckerProgrammer) {
73
+ /* -----------------------------------------------------------
74
+ WRITERS
75
+ ----------------------------------------------------------- */
77
76
  CheckerProgrammer.write = function (project) {
78
77
  return function (config) {
79
78
  return function (importer) {
@@ -81,78 +80,77 @@ var CheckerProgrammer;
81
80
  };
82
81
  };
83
82
  };
84
- CheckerProgrammer.write_functors = function (project) {
85
- return function (config) {
86
- return function (importer) {
87
- return FeatureProgrammer_1.FeatureProgrammer.write_functors(configure(project)(config)(importer))(importer);
88
- };
89
- };
90
- };
91
- CheckerProgrammer.write_unioners = function (project, config, importer) {
92
- return FeatureProgrammer_1.FeatureProgrammer.write_unioners(configure(project)(__assign(__assign({}, config), { numeric: false }))(importer))(importer);
83
+ CheckerProgrammer.write_functors = function (p) { return function (config) { return function (importer) {
84
+ return FeatureProgrammer_1.FeatureProgrammer.write_functors(p.tsc)(configure(p)(config)(importer))(importer);
85
+ }; }; };
86
+ CheckerProgrammer.write_unioners = function (p, config, importer) {
87
+ return FeatureProgrammer_1.FeatureProgrammer.write_unioners(p.tsc)(configure(p)(__assign(__assign({}, config), { numeric: false }))(importer))(importer);
93
88
  };
94
- var configure = function (project) {
89
+ var configure = function (p) {
95
90
  return function (config) {
96
91
  return function (importer) {
97
92
  var _a, _b, _c;
98
93
  var output = {
99
94
  types: {
100
- input: function () { return TypeFactory_1.TypeFactory.keyword("any"); },
95
+ input: function () { return TypeFactory_1.TypeFactory.keyword(p.tsc)("any"); },
101
96
  output: function (type, name) {
102
- return tsclibrary_1.default.factory.createTypePredicateNode(undefined, "input", tsclibrary_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type)));
97
+ return p.tsc.factory.createTypePredicateNode(undefined, "input", p.tsc.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(p)(type)));
103
98
  },
104
99
  },
105
100
  trace: config.trace,
106
101
  path: config.path,
107
102
  functors: config.functors,
108
103
  unioners: config.unioners,
109
- initializer: function (_a) {
110
- var checker = _a.checker;
111
- return function (type) {
112
- var collection = new MetadataCollection_1.MetadataCollection();
113
- var meta = MetadataFactory_1.MetadataFactory.analyze(checker)({
114
- resolve: false,
115
- constant: true,
116
- })(collection)(type);
117
- return [collection, meta];
118
- };
119
- },
104
+ initializer: function (p) { return function (type) {
105
+ var collection = new MetadataCollection_1.MetadataCollection();
106
+ var meta = MetadataFactory_1.MetadataFactory.analyze(p)({
107
+ resolve: false,
108
+ constant: true,
109
+ })(collection)(type);
110
+ return [collection, meta];
111
+ }; },
120
112
  addition: config.addition,
121
- decoder: (_a = config.decoder) !== null && _a !== void 0 ? _a : CheckerProgrammer.decode(project)(config)(importer),
113
+ decoder: (_a = config.decoder) !== null && _a !== void 0 ? _a : CheckerProgrammer.decode(p)(config)(importer),
122
114
  objector: {
123
- checker: (_b = config.decoder) !== null && _b !== void 0 ? _b : CheckerProgrammer.decode(project)(config)(importer),
124
- decoder: CheckerProgrammer.decode_object(config)(importer),
115
+ checker: (_b = config.decoder) !== null && _b !== void 0 ? _b : CheckerProgrammer.decode(p)(config)(importer),
116
+ decoder: CheckerProgrammer.decode_object(p.tsc)(config)(importer),
125
117
  joiner: config.joiner.object,
126
118
  unionizer: config.equals
127
- ? (0, decode_union_object_1.decode_union_object)(CheckerProgrammer.decode_object(config)(importer))(function (input, obj, explore) {
128
- return CheckerProgrammer.decode_object(config)(importer)(input, obj, __assign(__assign({}, explore), { tracable: true }));
119
+ ? (0, decode_union_object_1.decode_union_object)(p.tsc)(CheckerProgrammer.decode_object(p.tsc)(config)(importer))(function (input, obj, explore) {
120
+ return CheckerProgrammer.decode_object(p.tsc)(config)(importer)(input, obj, __assign(__assign({}, explore), { tracable: true }));
129
121
  })((_c = config.joiner.is) !== null && _c !== void 0 ? _c : (function (expr) { return expr; }))(function (value, expected) {
130
- return tsclibrary_1.default.factory.createReturnStatement(config.joiner.failure(value, expected));
122
+ return p.tsc.factory.createReturnStatement(config.joiner.failure(value, expected));
131
123
  })
132
124
  : function (input, targets, explore) {
133
125
  return config.combiner(explore)("or")(input, targets.map(function (obj) { return ({
134
- expression: CheckerProgrammer.decode_object(config)(importer)(input, obj, explore),
126
+ expression: CheckerProgrammer.decode_object(p.tsc)(config)(importer)(input, obj, explore),
135
127
  combined: true,
136
128
  }); }), "(".concat(targets.map(function (t) { return t.name; }).join(" | "), ")"));
137
129
  },
138
130
  failure: function (value, expected) {
139
- return tsclibrary_1.default.factory.createReturnStatement(config.joiner.failure(value, expected));
131
+ return p.tsc.factory.createReturnStatement(config.joiner.failure(value, expected));
140
132
  },
141
133
  is: config.joiner.is,
142
134
  required: config.joiner.required,
143
135
  full: config.joiner.full,
144
- type: TypeFactory_1.TypeFactory.keyword("boolean"),
136
+ type: TypeFactory_1.TypeFactory.keyword(p.tsc)("boolean"),
145
137
  },
146
138
  };
147
139
  if (config.numeric === true)
148
140
  output.generator = {
149
- unioners: FeatureProgrammer_1.FeatureProgrammer.write_unioners(configure(project)(__assign(__assign({}, config), { numeric: false }))(importer))(importer),
141
+ unioners: FeatureProgrammer_1.FeatureProgrammer.write_unioners(p.tsc)(configure(p)(__assign(__assign({}, config), { numeric: false }))(importer))(importer),
150
142
  };
151
143
  return output;
152
144
  };
153
145
  };
154
146
  };
155
- CheckerProgrammer.decode = function (project) {
147
+ /* -----------------------------------------------------------
148
+ DECODERS
149
+ ----------------------------------------------------------- */
150
+ /**
151
+ * @internal
152
+ */
153
+ CheckerProgrammer.decode = function (p) {
156
154
  return function (config) {
157
155
  return function (importer) {
158
156
  return function (input, meta, explore, metaTags, jsDocTags) {
@@ -161,28 +159,40 @@ var CheckerProgrammer;
161
159
  return config.success;
162
160
  var top = [];
163
161
  var binaries = [];
164
- var add = create_add(binaries)(input);
162
+ var add = create_add(p.tsc)(binaries)(input);
165
163
  var getConstantValue = function (value) {
166
164
  return typeof value === "string"
167
- ? tsclibrary_1.default.factory.createStringLiteral(value)
168
- : tsclibrary_1.default.factory.createIdentifier(value.toString());
165
+ ? p.tsc.factory.createStringLiteral(value)
166
+ : p.tsc.factory.createIdentifier(value.toString());
169
167
  };
168
+ //----
169
+ // CHECK OPTIONAL
170
+ //----
171
+ // @todo -> should be elaborated
170
172
  var checkOptional = meta.empty() || meta.isUnionBucket();
173
+ // NULLABLE
171
174
  if (checkOptional ||
172
- meta.nullable)
173
- (meta.nullable ? add : create_add(top)(input))(meta.nullable, ValueFactory_1.ValueFactory.NULL());
175
+ meta.nullable
176
+ // || (meta.objects.length && meta.size() !== meta.objects.length)
177
+ )
178
+ (meta.nullable ? add : create_add(p.tsc)(top)(input))(meta.nullable, ValueFactory_1.ValueFactory.NULL(p.tsc));
179
+ // UNDEFINDABLE
174
180
  if (checkOptional || !meta.required)
175
- (meta.required ? create_add(top)(input) : add)(!meta.required, ValueFactory_1.ValueFactory.UNDEFINED());
181
+ (meta.required ? create_add(p.tsc)(top)(input) : add)(!meta.required, ValueFactory_1.ValueFactory.UNDEFINED(p.tsc));
182
+ // FUNCTIONAL
176
183
  if (meta.functional === true)
177
- if (OptionPredicator_1.OptionPredicator.functional(project.options) ||
178
- meta.size() !== 1)
179
- add(true, tsclibrary_1.default.factory.createStringLiteral("function"), ValueFactory_1.ValueFactory.TYPEOF(input));
184
+ if (OptionPredicator_1.OptionPredicator.functional(p.options) || meta.size() !== 1)
185
+ add(true, p.tsc.factory.createStringLiteral("function"), ValueFactory_1.ValueFactory.TYPEOF(p.tsc)(input));
180
186
  else
181
187
  binaries.push({
182
188
  combined: false,
183
189
  expression: config.success,
184
190
  });
185
191
  try {
192
+ //----
193
+ // VALUES
194
+ //----
195
+ // CONSTANT VALUES
186
196
  for (var _e = __values(meta.constants), _f = _e.next(); !_f.done; _f = _e.next()) {
187
197
  var constant = _f.value;
188
198
  if (AtomicPredicator_1.AtomicPredicator.constant(meta)(constant.type))
@@ -209,27 +219,28 @@ var CheckerProgrammer;
209
219
  finally { if (e_1) throw e_1.error; }
210
220
  }
211
221
  try {
222
+ // ATOMIC VALUES
212
223
  for (var _j = __values(meta.atomics), _k = _j.next(); !_k.done; _k = _j.next()) {
213
224
  var type = _k.value;
214
225
  if (AtomicPredicator_1.AtomicPredicator.atomic(meta)(type) === false)
215
226
  continue;
216
227
  else if (type === "number")
217
228
  binaries.push({
218
- expression: config.atomist(explore)((0, check_number_1.check_number)(project, config.numeric)(importer)(metaTags)(jsDocTags)(input))(input),
229
+ expression: config.atomist(explore)((0, check_number_1.check_number)(p, config.numeric)(importer)(metaTags)(jsDocTags)(input))(input),
219
230
  combined: false,
220
231
  });
221
232
  else if (type === "bigint")
222
233
  binaries.push({
223
- expression: config.atomist(explore)((0, check_bigint_1.check_bigint)(importer)(metaTags)(jsDocTags)(input))(input),
234
+ expression: config.atomist(explore)((0, check_bigint_1.check_bigint)(p.tsc)(importer)(metaTags)(jsDocTags)(input))(input),
224
235
  combined: false,
225
236
  });
226
237
  else if (type === "string")
227
238
  binaries.push({
228
- expression: config.atomist(explore)((0, check_string_1.check_string)(importer)(metaTags)(jsDocTags)(input))(input),
239
+ expression: config.atomist(explore)((0, check_string_1.check_string)(p.tsc)(importer)(metaTags)(jsDocTags)(input))(input),
229
240
  combined: false,
230
241
  });
231
242
  else
232
- add(true, tsclibrary_1.default.factory.createStringLiteral(type), ValueFactory_1.ValueFactory.TYPEOF(input));
243
+ add(true, p.tsc.factory.createStringLiteral(type), ValueFactory_1.ValueFactory.TYPEOF(p.tsc)(input));
233
244
  }
234
245
  }
235
246
  catch (e_3_1) { e_3 = { error: e_3_1 }; }
@@ -239,17 +250,19 @@ var CheckerProgrammer;
239
250
  }
240
251
  finally { if (e_3) throw e_3.error; }
241
252
  }
253
+ // TEMPLATE LITERAL VALUES
242
254
  if (meta.templates.length)
243
255
  if (AtomicPredicator_1.AtomicPredicator.template(meta))
244
256
  binaries.push({
245
- expression: config.atomist(explore)((0, check_template_1.check_template)(importer)(metaTags)(jsDocTags)(meta.templates)(input))(input),
257
+ expression: config.atomist(explore)((0, check_template_1.check_template)(p.tsc)(importer)(metaTags)(jsDocTags)(meta.templates)(input))(input),
246
258
  combined: false,
247
259
  });
248
260
  try {
261
+ // NATIVE CLASSES
249
262
  for (var _l = __values(meta.natives), _m = _l.next(); !_m.done; _m = _l.next()) {
250
263
  var native = _m.value;
251
264
  binaries.push({
252
- expression: (0, check_native_1.check_native)(native)(input),
265
+ expression: (0, check_native_1.check_native)(p.tsc)(native)(input),
253
266
  combined: false,
254
267
  });
255
268
  }
@@ -271,17 +284,19 @@ var CheckerProgrammer;
271
284
  });
272
285
  };
273
286
  };
287
+ // SETS
274
288
  if (meta.sets.length) {
275
- var install = prepare((0, check_native_1.check_native)("Set")(input), meta.sets
289
+ var install = prepare((0, check_native_1.check_native)(p.tsc)("Set")(input), meta.sets
276
290
  .map(function (elem) { return "Set<".concat(elem.getName(), ">"); })
277
291
  .join(" | "));
278
292
  if (meta.sets.some(function (elem) { return elem.any; }))
279
293
  install(null);
280
294
  else
281
- install(explore_sets(project)(config)(importer)(input, meta.sets, __assign(__assign({}, explore), { from: "array" }), [], []));
295
+ install(explore_sets(p)(config)(importer)(input, meta.sets, __assign(__assign({}, explore), { from: "array" }), [], []));
282
296
  }
297
+ // MAPS
283
298
  if (meta.maps.length) {
284
- var install = prepare((0, check_native_1.check_native)("Map")(input), meta.maps
299
+ var install = prepare((0, check_native_1.check_native)(p.tsc)("Map")(input), meta.maps
285
300
  .map(function (_a) {
286
301
  var key = _a.key, value = _a.value;
287
302
  return "Map<".concat(key, ", ").concat(value, ">");
@@ -290,10 +305,11 @@ var CheckerProgrammer;
290
305
  if (meta.maps.some(function (elem) { return elem.key.any && elem.value.any; }))
291
306
  install(null);
292
307
  else
293
- install(explore_maps(project)(config)(importer)(input, meta.maps.map(function (m) { return [m.key, m.value]; }), __assign(__assign({}, explore), { from: "array" }), [], []));
308
+ install(explore_maps(p)(config)(importer)(input, meta.maps.map(function (m) { return [m.key, m.value]; }), __assign(__assign({}, explore), { from: "array" }), [], []));
294
309
  }
310
+ // ARRAYS AND TUPLES
295
311
  if (meta.tuples.length + meta.arrays.length > 0) {
296
- var install = prepare(config.atomist(explore)((0, check_array_1.check_array)(importer)(meta.tuples.length === 0 ? metaTags : [])(jsDocTags)(input))(input), __spreadArray(__spreadArray([], __read(meta.tuples), false), __read(meta.arrays), false).map(function (elem) {
312
+ var install = prepare(config.atomist(explore)((0, check_array_1.check_array)(p.tsc)(importer)(meta.tuples.length === 0 ? metaTags : [])(jsDocTags)(input))(input), __spreadArray(__spreadArray([], __read(meta.tuples), false), __read(meta.arrays), false).map(function (elem) {
297
313
  return Array.isArray(elem)
298
314
  ? "[".concat(elem
299
315
  .map(function (elem) { return elem.getName(); })
@@ -302,16 +318,18 @@ var CheckerProgrammer;
302
318
  })
303
319
  .join(" | "));
304
320
  if (meta.arrays.length === 0)
305
- install(explore_tuples(project)(config)(importer)(input, meta.tuples, __assign(__assign({}, explore), { from: "array" }), metaTags, jsDocTags));
321
+ install(explore_tuples(p)(config)(importer)(input, meta.tuples, __assign(__assign({}, explore), { from: "array" }), metaTags, jsDocTags));
306
322
  else if (meta.arrays.some(function (elem) { return elem.any; }))
307
323
  install(null);
308
324
  else if (meta.tuples.length === 0)
309
- install(explore_arrays(project, config, importer)(input, meta.arrays, __assign(__assign({}, explore), { from: "array" }), metaTags, jsDocTags));
325
+ // ARRAY ONLY
326
+ install(explore_arrays(p)(config)(importer)(input, meta.arrays, __assign(__assign({}, explore), { from: "array" }), metaTags, jsDocTags));
310
327
  else
311
- install(explore_arrays_and_tuples(project, config, importer)(input, __spreadArray(__spreadArray([], __read(meta.tuples), false), __read(meta.arrays), false), explore, metaTags, jsDocTags));
328
+ install(explore_arrays_and_tuples(p)(config)(importer)(input, __spreadArray(__spreadArray([], __read(meta.tuples), false), __read(meta.arrays), false), explore, metaTags, jsDocTags));
312
329
  }
330
+ // OBJECT
313
331
  if (meta.objects.length > 0)
314
- prepare(ExpressionFactory_1.ExpressionFactory.isObject({
332
+ prepare(ExpressionFactory_1.ExpressionFactory.isObject(p.tsc)({
315
333
  checkNull: true,
316
334
  checkArray: meta.objects.some(function (obj) {
317
335
  return obj.properties.every(function (prop) {
@@ -319,7 +337,7 @@ var CheckerProgrammer;
319
337
  !prop.value.required;
320
338
  });
321
339
  }),
322
- })(input), meta.objects.map(function (obj) { return obj.name; }).join(" | "))(explore_objects(config)(importer)(input, meta, __assign(__assign({}, explore), { from: "object" })));
340
+ })(input), meta.objects.map(function (obj) { return obj.name; }).join(" | "))(explore_objects(p.tsc)(config)(importer)(input, meta, __assign(__assign({}, explore), { from: "object" })));
323
341
  if (instances.length) {
324
342
  var transformer = function (merger) {
325
343
  return function (ins) {
@@ -343,10 +361,13 @@ var CheckerProgrammer;
343
361
  })(instances[0]));
344
362
  else
345
363
  binaries.push({
346
- expression: config.combiner(explore)("or")(input, instances.map(transformer(tsclibrary_1.default.factory.createLogicalAnd)), meta.getName()),
364
+ expression: config.combiner(explore)("or")(input, instances.map(transformer(p.tsc.factory.createLogicalAnd)), meta.getName()),
347
365
  combined: true,
348
366
  });
349
367
  }
368
+ //----
369
+ // COMBINE CONDITIONS
370
+ //----
350
371
  return top.length && binaries.length
351
372
  ? config.combiner(explore)("and")(input, __spreadArray(__spreadArray([], __read(top), false), [
352
373
  {
@@ -361,7 +382,7 @@ var CheckerProgrammer;
361
382
  };
362
383
  };
363
384
  };
364
- CheckerProgrammer.decode_tuple = function (project) {
385
+ CheckerProgrammer.decode_tuple = function (p) {
365
386
  return function (config) {
366
387
  return function (importer) {
367
388
  return function (checkLength) {
@@ -369,34 +390,35 @@ var CheckerProgrammer;
369
390
  var binaries = tuple
370
391
  .filter(function (meta) { return meta.rest === null; })
371
392
  .map(function (meta, index) {
372
- return CheckerProgrammer.decode(project)(config)(importer)(tsclibrary_1.default.factory.createElementAccessExpression(input, index), meta, __assign(__assign({}, explore), { from: "array", postfix: explore.postfix.length
393
+ return CheckerProgrammer.decode(p)(config)(importer)(p.tsc.factory.createElementAccessExpression(input, index), meta, __assign(__assign({}, explore), { from: "array", postfix: explore.postfix.length
373
394
  ? "".concat(explore.postfix.slice(0, -1), "[").concat(index, "]\"")
374
395
  : "[".concat(index, "]") }), tagList, jsDocTags);
375
396
  });
376
397
  var rest = tuple.length && tuple[tuple.length - 1].rest !== null
377
- ? CheckerProgrammer.decode(project)(config)(importer)(tsclibrary_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(input)("slice"), undefined, [
378
- tsclibrary_1.default.factory.createNumericLiteral(tuple.length - 1),
398
+ ? CheckerProgrammer.decode(p)(config)(importer)(p.tsc.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(p.tsc)(input)("slice"), undefined, [
399
+ p.tsc.factory.createNumericLiteral(tuple.length - 1),
379
400
  ]), (function () {
380
401
  var wrapper = Metadata_1.Metadata.initialize();
381
402
  wrapper.arrays.push(tuple[tuple.length - 1].rest);
382
403
  return wrapper;
383
404
  })(), __assign(__assign({}, explore), { start: tuple.length - 1 }), tagList, jsDocTags)
384
405
  : null;
385
- var arrayLength = tsclibrary_1.default.factory.createPropertyAccessExpression(input, "length");
406
+ var arrayLength = p.tsc.factory.createPropertyAccessExpression(input, "length");
386
407
  return config.combiner(explore)("and")(input, __spreadArray(__spreadArray(__spreadArray([], __read((checkLength && rest === null
387
408
  ? tuple.every(function (t) { return t.optional === false; })
388
409
  ? [
389
410
  {
390
411
  combined: false,
391
- expression: tsclibrary_1.default.factory.createStrictEquality(arrayLength, tsclibrary_1.default.factory.createNumericLiteral(tuple.length)),
412
+ expression: p.tsc.factory.createStrictEquality(arrayLength, p.tsc.factory.createNumericLiteral(tuple.length)),
392
413
  },
393
414
  ]
394
415
  : [
395
416
  {
396
417
  combined: false,
397
- expression: tsclibrary_1.default.factory.createLogicalAnd(tsclibrary_1.default.factory.createLessThanEquals(tsclibrary_1.default.factory.createNumericLiteral(tuple.filter(function (t) {
398
- return t.optional === false;
399
- }).length), arrayLength), tsclibrary_1.default.factory.createGreaterThanEquals(tsclibrary_1.default.factory.createNumericLiteral(tuple.length), arrayLength)),
418
+ expression: p.tsc.factory.createLogicalAnd(p.tsc.factory.createLessThanEquals(p.tsc.factory.createNumericLiteral(tuple.filter(function (t) {
419
+ return t.optional ===
420
+ false;
421
+ }).length), arrayLength), p.tsc.factory.createGreaterThanEquals(p.tsc.factory.createNumericLiteral(tuple.length), arrayLength)),
400
422
  },
401
423
  ]
402
424
  : [])), false), __read((config.joiner.tuple
@@ -422,144 +444,138 @@ var CheckerProgrammer;
422
444
  };
423
445
  };
424
446
  };
425
- var decode_array = function (project) {
426
- return function (config) {
427
- return function (importer) {
428
- return FeatureProgrammer_1.FeatureProgrammer.decode_array({
429
- trace: config.trace,
430
- path: config.path,
431
- decoder: CheckerProgrammer.decode(project)(config)(importer),
432
- })(importer)(config.joiner.array);
433
- };
434
- };
435
- };
436
- CheckerProgrammer.decode_object = function (config) { return function (importer) {
437
- var func = FeatureProgrammer_1.FeatureProgrammer.decode_object(config)(importer);
438
- return function (input, obj, explore) {
439
- obj.validated = true;
440
- return func(input, obj, explore);
441
- };
442
- }; };
443
- var explore_sets = function (project) {
447
+ var decode_array = function (p) { return function (config) { return function (importer) {
448
+ return FeatureProgrammer_1.FeatureProgrammer.decode_array(p.tsc)({
449
+ trace: config.trace,
450
+ path: config.path,
451
+ decoder: CheckerProgrammer.decode(p)(config)(importer),
452
+ })(importer)(config.joiner.array);
453
+ }; }; };
454
+ CheckerProgrammer.decode_object = function (tsc) {
444
455
  return function (config) {
445
456
  return function (importer) {
446
- return UnionExplorer_1.UnionExplorer.set({
447
- checker: CheckerProgrammer.decode(project)(config)(importer),
448
- decoder: decode_array(project)(config)(importer),
449
- empty: config.success,
450
- success: config.success,
451
- failure: function (input, expected, explore) {
452
- return tsclibrary_1.default.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
453
- },
454
- });
455
- };
456
- };
457
- };
458
- var explore_maps = function (project) {
459
- return function (config) {
460
- return function (importer) {
461
- return UnionExplorer_1.UnionExplorer.map({
462
- checker: function (input, entry, explore) {
463
- var func = CheckerProgrammer.decode(project)(config)(importer);
464
- return tsclibrary_1.default.factory.createLogicalAnd(func(tsclibrary_1.default.factory.createElementAccessExpression(input, 0), entry[0], __assign(__assign({}, explore), { postfix: "".concat(explore.postfix, "[0]") }), [], []), func(tsclibrary_1.default.factory.createElementAccessExpression(input, 1), entry[1], __assign(__assign({}, explore), { postfix: "".concat(explore.postfix, "[1]") }), [], []));
465
- },
466
- decoder: function (input, target, explore) {
467
- return decode_array(project)(config)(importer)(input, Metadata_1.Metadata.create({
468
- any: false,
469
- nullable: false,
470
- required: true,
471
- optional: false,
472
- functional: false,
473
- resolved: null,
474
- constants: [],
475
- atomics: [],
476
- templates: [],
477
- rest: null,
478
- arrays: [],
479
- tuples: [target],
480
- objects: [],
481
- natives: [],
482
- sets: [],
483
- maps: [],
484
- }), explore, [], []);
485
- },
486
- empty: config.success,
487
- success: config.success,
488
- failure: function (input, expected, explore) {
489
- return tsclibrary_1.default.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
490
- },
491
- });
492
- };
493
- };
494
- };
495
- var explore_tuples = function (project) {
496
- return function (config) {
497
- return function (importer) {
498
- return UnionExplorer_1.UnionExplorer.tuple({
499
- checker: (0, check_union_tuple_1.check_union_tuple)(project)(config)(importer),
500
- decoder: CheckerProgrammer.decode_tuple(project)(config)(importer)(true),
501
- empty: config.success,
502
- success: config.success,
503
- failure: function (input, expected, explore) {
504
- return tsclibrary_1.default.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
505
- },
506
- });
457
+ var func = FeatureProgrammer_1.FeatureProgrammer.decode_object(tsc)(config)(importer);
458
+ return function (input, obj, explore) {
459
+ obj.validated = true;
460
+ return func(input, obj, explore);
461
+ };
507
462
  };
508
463
  };
509
464
  };
510
- var explore_arrays = function (project, config, importer) {
511
- return UnionExplorer_1.UnionExplorer.array({
512
- checker: CheckerProgrammer.decode(project)(config)(importer),
513
- decoder: decode_array(project)(config)(importer),
465
+ var explore_sets = function (p) { return function (config) { return function (importer) {
466
+ return UnionExplorer_1.UnionExplorer.set(p.tsc)({
467
+ checker: CheckerProgrammer.decode(p)(config)(importer),
468
+ decoder: decode_array(p)(config)(importer),
514
469
  empty: config.success,
515
470
  success: config.success,
516
471
  failure: function (input, expected, explore) {
517
- return tsclibrary_1.default.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
472
+ return p.tsc.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
518
473
  },
519
474
  });
520
- };
521
- var explore_arrays_and_tuples = function (project, config, importer) {
522
- return UnionExplorer_1.UnionExplorer.array_or_tuple({
475
+ }; }; };
476
+ var explore_maps = function (p) { return function (config) { return function (importer) {
477
+ return UnionExplorer_1.UnionExplorer.map(p.tsc)({
478
+ checker: function (input, entry, explore) {
479
+ var func = CheckerProgrammer.decode(p)(config)(importer);
480
+ return p.tsc.factory.createLogicalAnd(func(p.tsc.factory.createElementAccessExpression(input, 0), entry[0], __assign(__assign({}, explore), { postfix: "".concat(explore.postfix, "[0]") }), [], []), func(p.tsc.factory.createElementAccessExpression(input, 1), entry[1], __assign(__assign({}, explore), { postfix: "".concat(explore.postfix, "[1]") }), [], []));
481
+ },
482
+ decoder: function (input, target, explore) {
483
+ return decode_array(p)(config)(importer)(input, Metadata_1.Metadata.create({
484
+ any: false,
485
+ nullable: false,
486
+ required: true,
487
+ optional: false,
488
+ functional: false,
489
+ resolved: null,
490
+ constants: [],
491
+ atomics: [],
492
+ templates: [],
493
+ rest: null,
494
+ arrays: [],
495
+ tuples: [target],
496
+ objects: [],
497
+ natives: [],
498
+ sets: [],
499
+ maps: [],
500
+ }), explore, [], []);
501
+ },
502
+ empty: config.success,
503
+ success: config.success,
504
+ failure: function (input, expected, explore) {
505
+ return p.tsc.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
506
+ },
507
+ });
508
+ }; }; };
509
+ var explore_tuples = function (p) { return function (config) { return function (importer) {
510
+ return UnionExplorer_1.UnionExplorer.tuple(p.tsc)({
511
+ checker: (0, check_union_tuple_1.check_union_tuple)(p)(config)(importer),
512
+ decoder: CheckerProgrammer.decode_tuple(p)(config)(importer)(true),
513
+ empty: config.success,
514
+ success: config.success,
515
+ failure: function (input, expected, explore) {
516
+ return p.tsc.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
517
+ },
518
+ });
519
+ }; }; };
520
+ var explore_arrays = function (p) { return function (config) { return function (importer) {
521
+ return UnionExplorer_1.UnionExplorer.array(p.tsc)({
522
+ checker: CheckerProgrammer.decode(p)(config)(importer),
523
+ decoder: decode_array(p)(config)(importer),
524
+ empty: config.success,
525
+ success: config.success,
526
+ failure: function (input, expected, explore) {
527
+ return p.tsc.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
528
+ },
529
+ });
530
+ }; }; };
531
+ var explore_arrays_and_tuples = function (p) { return function (config) { return function (importer) {
532
+ return UnionExplorer_1.UnionExplorer.array_or_tuple(p.tsc)({
523
533
  checker: function (front, target, explore, tags, jsDocTags, array) {
524
534
  return Array.isArray(target)
525
- ? (0, check_union_tuple_1.check_union_tuple)(project)(config)(importer)(front, target, explore, tags, jsDocTags, array)
535
+ ? (0, check_union_tuple_1.check_union_tuple)(p)(config)(importer)(front, target, explore, tags, jsDocTags, array)
526
536
  : config.atomist(explore)({
527
- expression: CheckerProgrammer.decode(project)(config)(importer)(front, target, explore, tags, jsDocTags),
528
- tags: (0, check_array_length_1.check_array_length)(tags)(array),
537
+ expression: CheckerProgrammer.decode(p)(config)(importer)(front, target, explore, tags, jsDocTags),
538
+ tags: (0, check_array_length_1.check_array_length)(p.tsc)(tags)(array),
529
539
  })(array);
530
540
  },
531
541
  decoder: function (input, target, explore, tags, jsDocTags) {
532
542
  return Array.isArray(target)
533
- ? CheckerProgrammer.decode_tuple(project)(config)(importer)(true)(input, target, explore, tags, jsDocTags)
534
- : decode_array(project)(config)(importer)(input, target, explore, tags, jsDocTags);
543
+ ? CheckerProgrammer.decode_tuple(p)(config)(importer)(true)(input, target, explore, tags, jsDocTags)
544
+ : decode_array(p)(config)(importer)(input, target, explore, tags, jsDocTags);
535
545
  },
536
546
  empty: config.success,
537
547
  success: config.success,
538
548
  failure: function (input, expected, explore) {
539
- return tsclibrary_1.default.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
549
+ return p.tsc.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
540
550
  },
541
551
  });
542
- };
543
- var explore_objects = function (config) { return function (importer) {
544
- var objector = CheckerProgrammer.decode_object(config)(importer);
545
- return function (input, meta, explore) {
546
- if (meta.objects.length === 1)
547
- return objector(input, meta.objects[0], explore);
548
- return tsclibrary_1.default.factory.createCallExpression(tsclibrary_1.default.factory.createIdentifier(importer.useLocal("".concat(config.unioners).concat(meta.union_index))), undefined, FeatureProgrammer_1.FeatureProgrammer.get_object_arguments(config)(explore)(input));
552
+ }; }; };
553
+ var explore_objects = function (tsc) {
554
+ return function (config) {
555
+ return function (importer) {
556
+ var objector = CheckerProgrammer.decode_object(tsc)(config)(importer);
557
+ return function (input, meta, explore) {
558
+ if (meta.objects.length === 1)
559
+ return objector(input, meta.objects[0], explore);
560
+ return tsc.factory.createCallExpression(tsc.factory.createIdentifier(importer.useLocal("".concat(config.unioners).concat(meta.union_index))), undefined, FeatureProgrammer_1.FeatureProgrammer.get_object_arguments(tsc)(config)(explore)(input));
561
+ };
562
+ };
549
563
  };
550
- }; };
564
+ };
551
565
  })(CheckerProgrammer || (exports.CheckerProgrammer = CheckerProgrammer = {}));
552
- var create_add = function (binaries) {
553
- return function (defaultInput) {
554
- return function (exact, left, right) {
555
- if (right === void 0) { right = defaultInput; }
556
- var factory = exact
557
- ? tsclibrary_1.default.factory.createStrictEquality
558
- : tsclibrary_1.default.factory.createStrictInequality;
559
- binaries.push({
560
- expression: factory(left, right),
561
- combined: false,
562
- });
566
+ var create_add = function (tsc) {
567
+ return function (binaries) {
568
+ return function (defaultInput) {
569
+ return function (exact, left, right) {
570
+ if (right === void 0) { right = defaultInput; }
571
+ var factory = exact
572
+ ? tsc.factory.createStrictEquality
573
+ : tsc.factory.createStrictInequality;
574
+ binaries.push({
575
+ expression: factory(left, right),
576
+ combined: false,
577
+ });
578
+ };
563
579
  };
564
580
  };
565
581
  };