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 __values = (this && this.__values) || function(o) {
46
46
  };
47
47
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
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.StringifyProgrammer = 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");
@@ -73,16 +69,14 @@ var decode_union_object_1 = require("./internal/decode_union_object");
73
69
  var feature_object_entries_1 = require("./internal/feature_object_entries");
74
70
  var StringifyProgrammer;
75
71
  (function (StringifyProgrammer) {
76
- StringifyProgrammer.generate = function (project, modulo) {
77
- return function (type, name) {
78
- return StringifyProgrammer.write(project)(modulo)(type, name);
79
- };
80
- };
81
- StringifyProgrammer.write = function (project) { return function (modulo) {
82
- var importer = new FunctionImporeter_1.FunctionImporter();
83
- return FeatureProgrammer_1.FeatureProgrammer.analyze(project)(__assign(__assign({}, configure(project)(importer)), { addition: function (collection) {
84
- var isFunctors = IsProgrammer_1.IsProgrammer.write_functors(project)(importer)(collection);
85
- var isUnioners = IsProgrammer_1.IsProgrammer.write_unioners(project)(importer)(collection);
72
+ /* -----------------------------------------------------------
73
+ WRITER
74
+ ----------------------------------------------------------- */
75
+ StringifyProgrammer.write = function (p) { return function (modulo) {
76
+ var importer = new FunctionImporeter_1.FunctionImporter(p.tsc);
77
+ return FeatureProgrammer_1.FeatureProgrammer.analyze(p)(__assign(__assign({}, configure(p)(importer)), { addition: function (collection) {
78
+ var isFunctors = IsProgrammer_1.IsProgrammer.write_functors(p)(importer)(collection);
79
+ var isUnioners = IsProgrammer_1.IsProgrammer.write_unioners(p)(importer)(collection);
86
80
  return __spreadArray(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(isFunctors.filter(function (_, i) {
87
81
  return importer.hasLocal("$io".concat(i));
88
82
  })), false), __read(isUnioners.filter(function (_, i) {
@@ -90,298 +84,330 @@ var StringifyProgrammer;
90
84
  })), false);
91
85
  } }))(importer);
92
86
  }; };
93
- var decode = function (project, importer) {
94
- return function (input, meta, explore, tags) {
95
- var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e;
96
- if (meta.any === true)
97
- return wrap_required(input, meta, explore)(wrap_functional(input, meta, explore)(tsclibrary_1.default.factory.createCallExpression(tsclibrary_1.default.factory.createIdentifier("JSON.stringify"), undefined, [input])));
98
- var size = meta.size();
99
- if (size === 0 &&
100
- (meta.required === false || meta.nullable === true)) {
101
- if (meta.required === false && meta.nullable === true)
102
- return explore.from === "array"
103
- ? tsclibrary_1.default.factory.createStringLiteral("null")
104
- : tsclibrary_1.default.factory.createConditionalExpression(tsclibrary_1.default.factory.createStrictEquality(tsclibrary_1.default.factory.createNull(), input), undefined, tsclibrary_1.default.factory.createStringLiteral("null"), undefined, tsclibrary_1.default.factory.createIdentifier("undefined"));
105
- else if (meta.required === false)
106
- return explore.from === "array"
107
- ? tsclibrary_1.default.factory.createStringLiteral("null")
108
- : tsclibrary_1.default.factory.createIdentifier("undefined");
109
- else
110
- return tsclibrary_1.default.factory.createStringLiteral("null");
111
- }
112
- var unions = [];
113
- if (meta.resolved !== null)
114
- if (size === 1)
115
- return decode_to_json(project, importer)(input, meta.resolved, explore, tags);
116
- else
87
+ /* -----------------------------------------------------------
88
+ DECODERS
89
+ ----------------------------------------------------------- */
90
+ var decode = function (p) {
91
+ return function (importer) {
92
+ return function (input, meta, explore, tags) {
93
+ var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e;
94
+ // ANY TYPE
95
+ if (meta.any === true)
96
+ return wrap_required(p.tsc)(input, meta, explore)(wrap_functional(p.tsc)(input, meta, explore)(p.tsc.factory.createCallExpression(p.tsc.factory.createIdentifier("JSON.stringify"), undefined, [input])));
97
+ // ONLY NULL OR UNDEFINED
98
+ var size = meta.size();
99
+ if (size === 0 &&
100
+ (meta.required === false || meta.nullable === true)) {
101
+ if (meta.required === false && meta.nullable === true)
102
+ return explore.from === "array"
103
+ ? p.tsc.factory.createStringLiteral("null")
104
+ : p.tsc.factory.createConditionalExpression(p.tsc.factory.createStrictEquality(p.tsc.factory.createNull(), input), undefined, p.tsc.factory.createStringLiteral("null"), undefined, p.tsc.factory.createIdentifier("undefined"));
105
+ else if (meta.required === false)
106
+ return explore.from === "array"
107
+ ? p.tsc.factory.createStringLiteral("null")
108
+ : p.tsc.factory.createIdentifier("undefined");
109
+ else
110
+ return p.tsc.factory.createStringLiteral("null");
111
+ }
112
+ //----
113
+ // LIST UP UNION TYPES
114
+ //----
115
+ var unions = [];
116
+ // toJSON() METHOD
117
+ if (meta.resolved !== null)
118
+ if (size === 1)
119
+ return decode_to_json(p)(importer)(input, meta.resolved, explore, tags);
120
+ else
121
+ unions.push({
122
+ type: "resolved",
123
+ is: function () {
124
+ return IsProgrammer_1.IsProgrammer.decode_to_json(p.tsc)(false)(input);
125
+ },
126
+ value: function () {
127
+ return decode_to_json(p)(importer)(input, meta.resolved, explore, tags);
128
+ },
129
+ });
130
+ else if (meta.functional === true)
117
131
  unions.push({
118
- type: "resolved",
119
- is: function () { return IsProgrammer_1.IsProgrammer.decode_to_json(false)(input); },
120
- value: function () {
121
- return decode_to_json(project, importer)(input, meta.resolved, explore, tags);
122
- },
132
+ type: "functional",
133
+ is: function () { return IsProgrammer_1.IsProgrammer.decode_functional(p.tsc)(input); },
134
+ value: function () { return decode_functional(p.tsc)(explore); },
123
135
  });
124
- else if (meta.functional === true)
125
- unions.push({
126
- type: "functional",
127
- is: function () { return IsProgrammer_1.IsProgrammer.decode_functional(input); },
128
- value: function () { return decode_functional(explore); },
129
- });
130
- if (meta.templates.length ||
131
- ArrayUtil_1.ArrayUtil.has(meta.constants, function (c) { return c.type === "string"; }))
132
- if (AtomicPredicator_1.AtomicPredicator.template(meta)) {
133
- var partial_1 = Metadata_1.Metadata.initialize();
134
- partial_1.atomics.push("string"),
136
+ // TEMPLATES
137
+ if (meta.templates.length ||
138
+ ArrayUtil_1.ArrayUtil.has(meta.constants, function (c) { return c.type === "string"; }))
139
+ if (AtomicPredicator_1.AtomicPredicator.template(meta)) {
140
+ var partial_1 = Metadata_1.Metadata.initialize();
141
+ partial_1.atomics.push("string"),
142
+ unions.push({
143
+ type: "template literal",
144
+ is: function () {
145
+ return IsProgrammer_1.IsProgrammer.decode(p)(importer)(input, partial_1, explore, [], []);
146
+ },
147
+ value: function () {
148
+ return decode_atomic(p)(importer)(input, "string", explore);
149
+ },
150
+ });
151
+ }
152
+ var _loop_1 = function (constant) {
153
+ if (AtomicPredicator_1.AtomicPredicator.constant(meta)(constant.type) === false)
154
+ return "continue";
155
+ else if (constant.type !== "string")
135
156
  unions.push({
136
- type: "template literal",
157
+ type: "atomic",
137
158
  is: function () {
138
- return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, partial_1, explore, [], []);
159
+ return IsProgrammer_1.IsProgrammer.decode(p)(importer)(input, (function () {
160
+ var partial = Metadata_1.Metadata.initialize();
161
+ partial.atomics.push(constant.type);
162
+ return partial;
163
+ })(), explore, [], []);
139
164
  },
140
165
  value: function () {
141
- return decode_atomic(project)(importer)(input, "string", explore, tags);
166
+ return decode_atomic(p)(importer)(input, constant.type, explore);
142
167
  },
143
168
  });
169
+ else if (meta.templates.length === 0)
170
+ unions.push({
171
+ type: "const string",
172
+ is: function () {
173
+ return IsProgrammer_1.IsProgrammer.decode(p)(importer)(input, (function () {
174
+ var partial = Metadata_1.Metadata.initialize();
175
+ partial.atomics.push("string");
176
+ return partial;
177
+ })(), explore, [], []);
178
+ },
179
+ value: function () {
180
+ return decode_constant_string(p)(importer)(input, __spreadArray([], __read(constant.values), false), explore);
181
+ },
182
+ });
183
+ };
184
+ try {
185
+ // CONSTANTS
186
+ for (var _f = __values(meta.constants), _g = _f.next(); !_g.done; _g = _f.next()) {
187
+ var constant = _g.value;
188
+ _loop_1(constant);
189
+ }
144
190
  }
145
- var _loop_1 = function (constant) {
146
- if (AtomicPredicator_1.AtomicPredicator.constant(meta)(constant.type) === false)
147
- return "continue";
148
- else if (constant.type !== "string")
149
- unions.push({
150
- type: "atomic",
151
- is: function () {
152
- return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
153
- var partial = Metadata_1.Metadata.initialize();
154
- partial.atomics.push(constant.type);
155
- return partial;
156
- })(), explore, [], []);
157
- },
158
- value: function () {
159
- return decode_atomic(project)(importer)(input, constant.type, explore, tags);
160
- },
161
- });
162
- else if (meta.templates.length === 0)
163
- unions.push({
164
- type: "const string",
165
- is: function () {
166
- return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
167
- var partial = Metadata_1.Metadata.initialize();
168
- partial.atomics.push("string");
169
- return partial;
170
- })(), explore, [], []);
171
- },
172
- value: function () {
173
- return decode_constant_string(project)(importer)(input, __spreadArray([], __read(constant.values), false), explore);
174
- },
175
- });
176
- };
177
- try {
178
- for (var _f = __values(meta.constants), _g = _f.next(); !_g.done; _g = _f.next()) {
179
- var constant = _g.value;
180
- _loop_1(constant);
191
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
192
+ finally {
193
+ try {
194
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
195
+ }
196
+ finally { if (e_1) throw e_1.error; }
181
197
  }
182
- }
183
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
184
- finally {
198
+ var _loop_2 = function (type) {
199
+ if (AtomicPredicator_1.AtomicPredicator.atomic(meta)(type))
200
+ unions.push({
201
+ type: "atomic",
202
+ is: function () {
203
+ return IsProgrammer_1.IsProgrammer.decode(p)(importer)(input, (function () {
204
+ var partial = Metadata_1.Metadata.initialize();
205
+ partial.atomics.push(type);
206
+ return partial;
207
+ })(), explore, [], []);
208
+ },
209
+ value: function () {
210
+ return decode_atomic(p)(importer)(input, type, explore);
211
+ },
212
+ });
213
+ };
185
214
  try {
186
- if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
215
+ /// ATOMICS
216
+ for (var _h = __values(meta.atomics), _j = _h.next(); !_j.done; _j = _h.next()) {
217
+ var type = _j.value;
218
+ _loop_2(type);
219
+ }
220
+ }
221
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
222
+ finally {
223
+ try {
224
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
225
+ }
226
+ finally { if (e_2) throw e_2.error; }
187
227
  }
188
- finally { if (e_1) throw e_1.error; }
189
- }
190
- var _loop_2 = function (type) {
191
- if (AtomicPredicator_1.AtomicPredicator.atomic(meta)(type))
228
+ var _loop_3 = function (tuple) {
229
+ var e_6, _r;
230
+ try {
231
+ for (var tuple_1 = (e_6 = void 0, __values(tuple)), tuple_1_1 = tuple_1.next(); !tuple_1_1.done; tuple_1_1 = tuple_1.next()) {
232
+ var child = tuple_1_1.value;
233
+ if (StringifyPredicator_1.StringifyPredicator.undefindable(meta))
234
+ throw new Error("Error on typia.stringify(): tuple cannot contain undefined value - (".concat(child.getName(), ")."));
235
+ }
236
+ }
237
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
238
+ finally {
239
+ try {
240
+ if (tuple_1_1 && !tuple_1_1.done && (_r = tuple_1.return)) _r.call(tuple_1);
241
+ }
242
+ finally { if (e_6) throw e_6.error; }
243
+ }
192
244
  unions.push({
193
- type: "atomic",
245
+ type: "tuple",
194
246
  is: function () {
195
- return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
247
+ return IsProgrammer_1.IsProgrammer.decode(p)(importer)(input, (function () {
196
248
  var partial = Metadata_1.Metadata.initialize();
197
- partial.atomics.push(type);
249
+ partial.tuples.push(tuple);
198
250
  return partial;
199
251
  })(), explore, [], []);
200
252
  },
201
253
  value: function () {
202
- return decode_atomic(project)(importer)(input, type, explore, tags);
254
+ return decode_tuple(p)(importer)(input, tuple, explore, tags);
203
255
  },
204
256
  });
205
- };
206
- try {
207
- for (var _h = __values(meta.atomics), _j = _h.next(); !_j.done; _j = _h.next()) {
208
- var type = _j.value;
209
- _loop_2(type);
210
- }
211
- }
212
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
213
- finally {
214
- try {
215
- if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
216
- }
217
- finally { if (e_2) throw e_2.error; }
218
- }
219
- var _loop_3 = function (tuple) {
220
- var e_6, _r;
257
+ };
221
258
  try {
222
- for (var tuple_1 = (e_6 = void 0, __values(tuple)), tuple_1_1 = tuple_1.next(); !tuple_1_1.done; tuple_1_1 = tuple_1.next()) {
223
- var child = tuple_1_1.value;
224
- if (StringifyPredicator_1.StringifyPredicator.undefindable(meta))
225
- throw new Error("Error on typia.stringify(): tuple cannot contain undefined value - (".concat(child.getName(), ")."));
259
+ // TUPLES
260
+ for (var _k = __values(meta.tuples), _l = _k.next(); !_l.done; _l = _k.next()) {
261
+ var tuple = _l.value;
262
+ _loop_3(tuple);
226
263
  }
227
264
  }
228
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
265
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
229
266
  finally {
230
267
  try {
231
- if (tuple_1_1 && !tuple_1_1.done && (_r = tuple_1.return)) _r.call(tuple_1);
268
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
232
269
  }
233
- finally { if (e_6) throw e_6.error; }
270
+ finally { if (e_3) throw e_3.error; }
234
271
  }
235
- unions.push({
236
- type: "tuple",
237
- is: function () {
238
- return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
239
- var partial = Metadata_1.Metadata.initialize();
240
- partial.tuples.push(tuple);
241
- return partial;
242
- })(), explore, [], []);
243
- },
244
- value: function () {
245
- return decode_tuple(project)(importer)(input, tuple, explore, tags);
246
- },
247
- });
248
- };
249
- try {
250
- for (var _k = __values(meta.tuples), _l = _k.next(); !_l.done; _l = _k.next()) {
251
- var tuple = _l.value;
252
- _loop_3(tuple);
253
- }
254
- }
255
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
256
- finally {
257
- try {
258
- if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
259
- }
260
- finally { if (e_3) throw e_3.error; }
261
- }
262
- if (meta.arrays.length) {
263
- try {
264
- for (var _m = __values(meta.arrays), _o = _m.next(); !_o.done; _o = _m.next()) {
265
- var child = _o.value;
266
- if (StringifyPredicator_1.StringifyPredicator.undefindable(child))
267
- throw new Error("Error on typia.stringify(): array cannot contain undefined value (".concat(child.getName(), ")."));
272
+ // ARRAYS
273
+ if (meta.arrays.length) {
274
+ try {
275
+ for (var _m = __values(meta.arrays), _o = _m.next(); !_o.done; _o = _m.next()) {
276
+ var child = _o.value;
277
+ if (StringifyPredicator_1.StringifyPredicator.undefindable(child))
278
+ throw new Error("Error on typia.stringify(): array cannot contain undefined value (".concat(child.getName(), ")."));
279
+ }
268
280
  }
281
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
282
+ finally {
283
+ try {
284
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
285
+ }
286
+ finally { if (e_4) throw e_4.error; }
287
+ }
288
+ var value = meta.arrays.some(function (elem) { return elem.any; })
289
+ ? function () {
290
+ return p.tsc.factory.createCallExpression(p.tsc.factory.createIdentifier("JSON.stringify"), undefined, [input]);
291
+ }
292
+ : function () {
293
+ return explore_arrays(p)(importer)(input, meta.arrays, __assign(__assign({}, explore), { from: "array" }), [], []);
294
+ };
295
+ unions.push({
296
+ type: "array",
297
+ is: function () { return ExpressionFactory_1.ExpressionFactory.isArray(p.tsc)(input); },
298
+ value: value,
299
+ });
269
300
  }
270
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
271
- finally {
301
+ // BUILT-IN CLASSES
302
+ if (meta.natives.length) {
303
+ var _loop_4 = function (native) {
304
+ unions.push({
305
+ type: "object",
306
+ is: function () { return (0, check_native_1.check_native)(p.tsc)(native)(input); },
307
+ value: function () {
308
+ return AtomicPredicator_1.AtomicPredicator.native(native)
309
+ ? decode_atomic(p)(importer)(input, native.toLowerCase(), explore)
310
+ : p.tsc.factory.createStringLiteral("{}");
311
+ },
312
+ });
313
+ };
272
314
  try {
273
- if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
315
+ for (var _p = __values(meta.natives), _q = _p.next(); !_q.done; _q = _p.next()) {
316
+ var native = _q.value;
317
+ _loop_4(native);
318
+ }
274
319
  }
275
- finally { if (e_4) throw e_4.error; }
276
- }
277
- var value = meta.arrays.some(function (elem) { return elem.any; })
278
- ? function () {
279
- return tsclibrary_1.default.factory.createCallExpression(tsclibrary_1.default.factory.createIdentifier("JSON.stringify"), undefined, [input]);
320
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
321
+ finally {
322
+ try {
323
+ if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
324
+ }
325
+ finally { if (e_5) throw e_5.error; }
280
326
  }
281
- : function () {
282
- return explore_arrays(project)(importer)(input, meta.arrays, __assign(__assign({}, explore), { from: "array" }), [], []);
283
- };
284
- unions.push({
285
- type: "array",
286
- is: function () { return ExpressionFactory_1.ExpressionFactory.isArray(input); },
287
- value: value,
288
- });
289
- }
290
- if (meta.natives.length) {
291
- var _loop_4 = function (native) {
327
+ }
328
+ // SETS
329
+ if (meta.sets.length)
292
330
  unions.push({
293
331
  type: "object",
294
- is: function () { return (0, check_native_1.check_native)(native)(input); },
332
+ is: function () {
333
+ return ExpressionFactory_1.ExpressionFactory.isInstanceOf(p.tsc)("Set")(input);
334
+ },
335
+ value: function () { return p.tsc.factory.createStringLiteral("{}"); },
336
+ });
337
+ // MAPS
338
+ if (meta.maps.length)
339
+ unions.push({
340
+ type: "object",
341
+ is: function () {
342
+ return ExpressionFactory_1.ExpressionFactory.isInstanceOf(p.tsc)("Map")(input);
343
+ },
344
+ value: function () { return p.tsc.factory.createStringLiteral("{}"); },
345
+ });
346
+ // OBJECTS
347
+ if (meta.objects.length)
348
+ unions.push({
349
+ type: "object",
350
+ is: function () {
351
+ return ExpressionFactory_1.ExpressionFactory.isObject(p.tsc)({
352
+ checkNull: true,
353
+ checkArray: meta.objects.some(function (obj) {
354
+ return obj.properties.every(function (prop) {
355
+ return !prop.key.isSoleLiteral() ||
356
+ !prop.value.required;
357
+ });
358
+ }),
359
+ })(input);
360
+ },
295
361
  value: function () {
296
- return AtomicPredicator_1.AtomicPredicator.native(native)
297
- ? decode_atomic(project)(importer)(input, native.toLowerCase(), explore, tags)
298
- : tsclibrary_1.default.factory.createStringLiteral("{}");
362
+ return meta.isParentResolved() === false &&
363
+ meta.objects.length === 1 &&
364
+ meta.objects[0]._Is_simple()
365
+ ? (function () {
366
+ var obj = meta.objects[0];
367
+ var entries = (0, feature_object_entries_1.feature_object_entries)(p.tsc)({
368
+ decoder: decode(p)(importer),
369
+ trace: false,
370
+ path: false,
371
+ })(importer)(obj)(input);
372
+ return StringifyJoinder_1.StringifyJoiner.object(p.tsc)(importer)(input, entries);
373
+ })()
374
+ : explore_objects(p.tsc)(importer)(input, meta, __assign(__assign({}, explore), { from: "object" }));
299
375
  },
300
376
  });
377
+ //----
378
+ // RETURNS
379
+ //----
380
+ // CHECK NULL AND UNDEFINED
381
+ var wrapper = function (output) {
382
+ return wrap_required(p.tsc)(input, meta, explore)(wrap_nullable(p.tsc)(input, meta)(output));
301
383
  };
302
- try {
303
- for (var _p = __values(meta.natives), _q = _p.next(); !_q.done; _q = _p.next()) {
304
- var native = _q.value;
305
- _loop_4(native);
306
- }
307
- }
308
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
309
- finally {
310
- try {
311
- if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
312
- }
313
- finally { if (e_5) throw e_5.error; }
314
- }
315
- }
316
- if (meta.sets.length)
317
- unions.push({
318
- type: "object",
319
- is: function () { return ExpressionFactory_1.ExpressionFactory.isInstanceOf("Set")(input); },
320
- value: function () { return tsclibrary_1.default.factory.createStringLiteral("{}"); },
321
- });
322
- if (meta.maps.length)
323
- unions.push({
324
- type: "object",
325
- is: function () { return ExpressionFactory_1.ExpressionFactory.isInstanceOf("Map")(input); },
326
- value: function () { return tsclibrary_1.default.factory.createStringLiteral("{}"); },
327
- });
328
- if (meta.objects.length)
329
- unions.push({
330
- type: "object",
331
- is: function () {
332
- return ExpressionFactory_1.ExpressionFactory.isObject({
333
- checkNull: true,
334
- checkArray: meta.objects.some(function (obj) {
335
- return obj.properties.every(function (prop) {
336
- return !prop.key.isSoleLiteral() ||
337
- !prop.value.required;
338
- });
339
- }),
340
- })(input);
341
- },
342
- value: function () {
343
- return meta.isParentResolved() === false &&
344
- meta.objects.length === 1 &&
345
- meta.objects[0]._Is_simple()
346
- ? (function () {
347
- var obj = meta.objects[0];
348
- var entries = (0, feature_object_entries_1.feature_object_entries)({
349
- decoder: decode(project, importer),
350
- trace: false,
351
- path: false,
352
- })(importer)(obj)(input);
353
- return StringifyJoinder_1.StringifyJoiner.object(importer)(input, entries);
354
- })()
355
- : explore_objects(importer)(input, meta, __assign(__assign({}, explore), { from: "object" }));
356
- },
357
- });
358
- var wrapper = function (output) {
359
- return wrap_required(input, meta, explore)(wrap_nullable(input, meta)(output));
384
+ // DIRECT RETURN
385
+ if (unions.length === 0)
386
+ return p.tsc.factory.createCallExpression(p.tsc.factory.createIdentifier("JSON.stringify"), undefined, [input]);
387
+ else if (unions.length === 1)
388
+ return wrapper(unions[0].value());
389
+ // RETURN WITH TYPE CHECKING
390
+ return wrapper(p.tsc.factory.createCallExpression(p.tsc.factory.createArrowFunction(undefined, undefined, [], undefined, undefined, iterate(p.tsc)(importer)(input, unions, meta.getName())), undefined, undefined));
360
391
  };
361
- if (unions.length === 0)
362
- return tsclibrary_1.default.factory.createCallExpression(tsclibrary_1.default.factory.createIdentifier("JSON.stringify"), undefined, [input]);
363
- else if (unions.length === 1)
364
- return wrapper(unions[0].value());
365
- return wrapper(tsclibrary_1.default.factory.createCallExpression(tsclibrary_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, undefined, iterate(importer, input, unions, meta.getName())), undefined, undefined));
366
392
  };
367
393
  };
368
- var decode_array = function (project) { return function (importer) {
369
- return FeatureProgrammer_1.FeatureProgrammer.decode_array(configure(project)(importer))(importer)(StringifyJoinder_1.StringifyJoiner.array);
394
+ var decode_array = function (p) { return function (importer) {
395
+ return FeatureProgrammer_1.FeatureProgrammer.decode_array(p.tsc)(configure(p)(importer))(importer)(StringifyJoinder_1.StringifyJoiner.array(p.tsc));
370
396
  }; };
371
- var decode_object = function (importer) {
372
- return FeatureProgrammer_1.FeatureProgrammer.decode_object({
397
+ var decode_object = function (tsc) { return function (importer) {
398
+ return FeatureProgrammer_1.FeatureProgrammer.decode_object(tsc)({
373
399
  trace: false,
374
400
  path: false,
375
401
  functors: FUNCTORS,
376
402
  })(importer);
377
- };
378
- var decode_tuple = function (project) {
403
+ }; };
404
+ var decode_tuple = function (p) {
379
405
  return function (importer) {
380
406
  return function (input, tuple, explore, tags) {
381
407
  var children = tuple
382
408
  .filter(function (elem) { return elem.rest === null; })
383
409
  .map(function (elem, index) {
384
- return decode(project, importer)(tsclibrary_1.default.factory.createElementAccessExpression(input, index), elem, __assign(__assign({}, explore), { from: "array" }), tags);
410
+ return decode(p)(importer)(p.tsc.factory.createElementAccessExpression(input, index), elem, __assign(__assign({}, explore), { from: "array" }), tags);
385
411
  });
386
412
  var rest = (function () {
387
413
  if (tuple.length === 0)
@@ -389,162 +415,178 @@ var StringifyProgrammer;
389
415
  var last = tuple[tuple.length - 1];
390
416
  if (last.rest === null)
391
417
  return null;
392
- var code = decode(project, importer)(tsclibrary_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(input)("slice"), undefined, [tsclibrary_1.default.factory.createNumericLiteral(tuple.length - 1)]), (function () {
418
+ var code = decode(p)(importer)(p.tsc.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(p.tsc)(input)("slice"), undefined, [p.tsc.factory.createNumericLiteral(tuple.length - 1)]), (function () {
393
419
  var wrapper = Metadata_1.Metadata.initialize();
394
420
  wrapper.arrays.push(tuple[tuple.length - 1].rest);
395
421
  return wrapper;
396
422
  })(), __assign(__assign({}, explore), { start: tuple.length - 1 }), tags);
397
- return tsclibrary_1.default.factory.createCallExpression(importer.use("rest"), undefined, [code]);
423
+ return p.tsc.factory.createCallExpression(importer.use("rest"), undefined, [code]);
398
424
  })();
399
- return StringifyJoinder_1.StringifyJoiner.tuple(children, rest);
425
+ return StringifyJoinder_1.StringifyJoiner.tuple(p.tsc)(children, rest);
400
426
  };
401
427
  };
402
428
  };
403
- var decode_atomic = function (project) {
429
+ var decode_atomic = function (p) {
404
430
  return function (importer) {
405
- return function (input, type, explore, tagList) {
431
+ return function (input, type, explore) {
406
432
  if (type === "string")
407
- if (tagList.find(function (tag) { return tag.kind === "format"; }) !== undefined)
408
- return [
409
- tsclibrary_1.default.factory.createStringLiteral('"'),
410
- input,
411
- tsclibrary_1.default.factory.createStringLiteral('"'),
412
- ].reduce(function (x, y) { return tsclibrary_1.default.factory.createAdd(x, y); });
413
- else
414
- return tsclibrary_1.default.factory.createCallExpression(importer.use("string"), undefined, [input]);
415
- else if (type === "number" &&
416
- OptionPredicator_1.OptionPredicator.numeric(project.options))
417
- input = tsclibrary_1.default.factory.createCallExpression(importer.use("number"), undefined, [input]);
433
+ return p.tsc.factory.createCallExpression(importer.use("string"), undefined, [input]);
434
+ else if (type === "number" && OptionPredicator_1.OptionPredicator.numeric(p.options))
435
+ input = p.tsc.factory.createCallExpression(importer.use("number"), undefined, [input]);
418
436
  return explore.from !== "top"
419
437
  ? input
420
- : tsclibrary_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(input)("toString"), undefined, undefined);
438
+ : p.tsc.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(p.tsc)(input)("toString"), undefined, undefined);
421
439
  };
422
440
  };
423
441
  };
424
- var decode_constant_string = function (project) {
442
+ var decode_constant_string = function (p) {
425
443
  return function (importer) {
426
444
  return function (input, values, explore) {
427
445
  if (values.every(function (v) { return !StringifyPredicator_1.StringifyPredicator.require_escape(v); }))
428
446
  return [
429
- tsclibrary_1.default.factory.createStringLiteral('"'),
447
+ p.tsc.factory.createStringLiteral('"'),
430
448
  input,
431
- tsclibrary_1.default.factory.createStringLiteral('"'),
432
- ].reduce(function (x, y) { return tsclibrary_1.default.factory.createAdd(x, y); });
449
+ p.tsc.factory.createStringLiteral('"'),
450
+ ].reduce(function (x, y) { return p.tsc.factory.createAdd(x, y); });
433
451
  else
434
- return decode_atomic(project)(importer)(input, "string", explore, []);
452
+ return decode_atomic(p)(importer)(input, "string", explore);
435
453
  };
436
454
  };
437
455
  };
438
- var decode_to_json = function (project, importer) {
439
- return function (input, resolved, explore, tags) {
440
- return decode(project, importer)(tsclibrary_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(input)("toJSON"), undefined, []), resolved, explore, tags);
456
+ var decode_to_json = function (p) {
457
+ return function (importer) {
458
+ return function (input, resolved, explore, tags) {
459
+ return decode(p)(importer)(p.tsc.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(p.tsc)(input)("toJSON"), undefined, []), resolved, explore, tags);
460
+ };
441
461
  };
442
462
  };
443
- var decode_functional = function (explore) {
463
+ var decode_functional = function (tsc) { return function (explore) {
444
464
  return explore.from === "array"
445
- ? tsclibrary_1.default.factory.createStringLiteral("null")
446
- : tsclibrary_1.default.factory.createIdentifier("undefined");
447
- };
448
- var explore_arrays = function (project) { return function (importer) {
449
- return UnionExplorer_1.UnionExplorer.array({
450
- checker: IsProgrammer_1.IsProgrammer.decode(project, importer),
451
- decoder: decode_array(project)(importer),
452
- empty: tsclibrary_1.default.factory.createStringLiteral("[]"),
453
- success: tsclibrary_1.default.factory.createTrue(),
465
+ ? tsc.factory.createStringLiteral("null")
466
+ : tsc.factory.createIdentifier("undefined");
467
+ }; };
468
+ /* -----------------------------------------------------------
469
+ EXPLORERS
470
+ ----------------------------------------------------------- */
471
+ var explore_arrays = function (p) { return function (importer) {
472
+ return UnionExplorer_1.UnionExplorer.array(p.tsc)({
473
+ checker: IsProgrammer_1.IsProgrammer.decode(p)(importer),
474
+ decoder: decode_array(p)(importer),
475
+ empty: p.tsc.factory.createStringLiteral("[]"),
476
+ success: p.tsc.factory.createTrue(),
454
477
  failure: function (input, expected) {
455
- return create_throw_error(importer, input, expected);
478
+ return create_throw_error(p.tsc)(importer, input, expected);
456
479
  },
457
480
  });
458
481
  }; };
459
- var explore_objects = function (importer) {
460
- return function (input, meta, explore) {
461
- if (meta.objects.length === 1)
462
- return decode_object(importer)(input, meta.objects[0], explore);
463
- return tsclibrary_1.default.factory.createCallExpression(tsclibrary_1.default.factory.createIdentifier("".concat(UNIONERS).concat(meta.union_index)), undefined, [input]);
482
+ var explore_objects = function (tsc) {
483
+ return function (importer) {
484
+ return function (input, meta, explore) {
485
+ if (meta.objects.length === 1)
486
+ return decode_object(tsc)(importer)(input, meta.objects[0], explore);
487
+ return tsc.factory.createCallExpression(tsc.factory.createIdentifier("".concat(UNIONERS).concat(meta.union_index)), undefined, [input]);
488
+ };
464
489
  };
465
490
  };
466
- var wrap_required = function (input, meta, explore) {
467
- if (meta.required === true && meta.any === false)
468
- return function (expression) { return expression; };
469
- return function (expression) {
470
- return tsclibrary_1.default.factory.createConditionalExpression(tsclibrary_1.default.factory.createStrictInequality(tsclibrary_1.default.factory.createIdentifier("undefined"), input), undefined, expression, undefined, explore.from === "array"
471
- ? tsclibrary_1.default.factory.createStringLiteral("null")
472
- : tsclibrary_1.default.factory.createIdentifier("undefined"));
491
+ /* -----------------------------------------------------------
492
+ RETURN SCRIPTS
493
+ ----------------------------------------------------------- */
494
+ var wrap_required = function (tsc) {
495
+ return function (input, meta, explore) {
496
+ if (meta.required === true && meta.any === false)
497
+ return function (expression) { return expression; };
498
+ return function (expression) {
499
+ return tsc.factory.createConditionalExpression(tsc.factory.createStrictInequality(tsc.factory.createIdentifier("undefined"), input), undefined, expression, undefined, explore.from === "array"
500
+ ? tsc.factory.createStringLiteral("null")
501
+ : tsc.factory.createIdentifier("undefined"));
502
+ };
473
503
  };
474
504
  };
475
- var wrap_nullable = function (input, meta) {
476
- if (meta.nullable === false)
477
- return function (expression) { return expression; };
478
- return function (expression) {
479
- return tsclibrary_1.default.factory.createConditionalExpression(tsclibrary_1.default.factory.createStrictInequality(tsclibrary_1.default.factory.createNull(), input), undefined, expression, undefined, tsclibrary_1.default.factory.createStringLiteral("null"));
505
+ var wrap_nullable = function (tsc) {
506
+ return function (input, meta) {
507
+ if (meta.nullable === false)
508
+ return function (expression) { return expression; };
509
+ return function (expression) {
510
+ return tsc.factory.createConditionalExpression(tsc.factory.createStrictInequality(tsc.factory.createNull(), input), undefined, expression, undefined, tsc.factory.createStringLiteral("null"));
511
+ };
480
512
  };
481
513
  };
482
- var wrap_functional = function (input, meta, explore) {
483
- if (meta.functional === false)
484
- return function (expression) { return expression; };
485
- return function (expression) {
486
- return tsclibrary_1.default.factory.createConditionalExpression(tsclibrary_1.default.factory.createStrictInequality(tsclibrary_1.default.factory.createStringLiteral("function"), ValueFactory_1.ValueFactory.TYPEOF(input)), undefined, expression, undefined, decode_functional(explore));
514
+ var wrap_functional = function (tsc) {
515
+ return function (input, meta, explore) {
516
+ if (meta.functional === false)
517
+ return function (expression) { return expression; };
518
+ return function (expression) {
519
+ return tsc.factory.createConditionalExpression(tsc.factory.createStrictInequality(tsc.factory.createStringLiteral("function"), ValueFactory_1.ValueFactory.TYPEOF(tsc)(input)), undefined, expression, undefined, decode_functional(tsc)(explore));
520
+ };
487
521
  };
488
522
  };
489
- var iterate = function (importer, input, unions, expected) {
490
- return tsclibrary_1.default.factory.createBlock(__spreadArray(__spreadArray([], __read(unions.map(function (u) {
491
- return tsclibrary_1.default.factory.createIfStatement(u.is(), tsclibrary_1.default.factory.createReturnStatement(u.value()));
492
- })), false), [
493
- create_throw_error(importer, input, expected),
494
- ], false), true);
523
+ var iterate = function (tsc) {
524
+ return function (importer) {
525
+ return function (input, unions, expected) {
526
+ return tsc.factory.createBlock(__spreadArray(__spreadArray([], __read(unions.map(function (u) {
527
+ return tsc.factory.createIfStatement(u.is(), tsc.factory.createReturnStatement(u.value()));
528
+ })), false), [
529
+ create_throw_error(tsc)(importer, input, expected),
530
+ ], false), true);
531
+ };
532
+ };
495
533
  };
534
+ /* -----------------------------------------------------------
535
+ CONFIGURATIONS
536
+ ----------------------------------------------------------- */
496
537
  var FUNCTORS = "$so";
497
538
  var UNIONERS = "$su";
498
- var configure = function (project) {
539
+ var configure = function (p) {
499
540
  return function (importer) { return ({
500
541
  types: {
501
542
  input: function (type, name) {
502
- return tsclibrary_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type));
543
+ return p.tsc.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(p)(type));
503
544
  },
504
- output: function () { return TypeFactory_1.TypeFactory.keyword("string"); },
545
+ output: function () { return TypeFactory_1.TypeFactory.keyword(p.tsc)("string"); },
505
546
  },
506
547
  functors: FUNCTORS,
507
548
  unioners: UNIONERS,
508
549
  trace: false,
509
550
  path: false,
510
551
  initializer: initializer,
511
- decoder: decode(project, importer),
512
- objector: OBJECTOR(project, importer),
552
+ decoder: decode(p)(importer),
553
+ objector: OBJECTOR(p)(importer),
513
554
  }); };
514
555
  };
515
- var initializer = function (_a) {
516
- var checker = _a.checker;
517
- return function (type) {
518
- var collection = new MetadataCollection_1.MetadataCollection();
519
- var meta = MetadataFactory_1.MetadataFactory.analyze(checker)({
520
- resolve: true,
521
- constant: true,
522
- validate: function (meta) {
523
- if (meta.atomics.find(function (str) { return str === "bigint"; }))
524
- throw new Error(NO_BIGINT);
525
- },
526
- })(collection)(type);
527
- return [collection, meta];
528
- };
556
+ var initializer = function (p) { return function (type) {
557
+ var collection = new MetadataCollection_1.MetadataCollection();
558
+ var meta = MetadataFactory_1.MetadataFactory.analyze(p)({
559
+ resolve: true,
560
+ constant: true,
561
+ validate: function (meta) {
562
+ if (meta.atomics.find(function (str) { return str === "bigint"; }))
563
+ throw new Error(NO_BIGINT);
564
+ },
565
+ })(collection)(type);
566
+ return [collection, meta];
567
+ }; };
568
+ var OBJECTOR = function (p) {
569
+ return function (importer) { return ({
570
+ checker: IsProgrammer_1.IsProgrammer.decode(p)(importer),
571
+ decoder: decode_object(p.tsc)(importer),
572
+ joiner: StringifyJoinder_1.StringifyJoiner.object(p.tsc)(importer),
573
+ unionizer: (0, decode_union_object_1.decode_union_object)(p.tsc)(IsProgrammer_1.IsProgrammer.decode_object(p.tsc)(importer))(decode_object(p.tsc)(importer))(function (exp) { return exp; })(function (value, expected) {
574
+ return create_throw_error(p.tsc)(importer, value, expected);
575
+ }),
576
+ failure: function (input, expected) {
577
+ return create_throw_error(p.tsc)(importer, input, expected);
578
+ },
579
+ }); };
529
580
  };
530
- var OBJECTOR = function (project, importer) { return ({
531
- checker: IsProgrammer_1.IsProgrammer.decode(project, importer),
532
- decoder: decode_object(importer),
533
- joiner: StringifyJoinder_1.StringifyJoiner.object(importer),
534
- unionizer: (0, decode_union_object_1.decode_union_object)(IsProgrammer_1.IsProgrammer.decode_object(importer))(decode_object(importer))(function (exp) { return exp; })(function (value, expected) {
535
- return create_throw_error(importer, value, expected);
536
- }),
537
- failure: function (input, expected) {
538
- return create_throw_error(importer, input, expected);
539
- },
540
- }); };
541
- var create_throw_error = function (importer, value, expected) {
542
- return tsclibrary_1.default.factory.createExpressionStatement(tsclibrary_1.default.factory.createCallExpression(importer.use("throws"), [], [
543
- tsclibrary_1.default.factory.createObjectLiteralExpression([
544
- tsclibrary_1.default.factory.createPropertyAssignment("expected", tsclibrary_1.default.factory.createStringLiteral(expected)),
545
- tsclibrary_1.default.factory.createPropertyAssignment("value", value),
546
- ], true),
547
- ]));
581
+ var create_throw_error = function (tsc) {
582
+ return function (importer, value, expected) {
583
+ return tsc.factory.createExpressionStatement(tsc.factory.createCallExpression(importer.use("throws"), [], [
584
+ tsc.factory.createObjectLiteralExpression([
585
+ tsc.factory.createPropertyAssignment("expected", tsc.factory.createStringLiteral(expected)),
586
+ tsc.factory.createPropertyAssignment("value", value),
587
+ ], true),
588
+ ]));
589
+ };
548
590
  };
549
591
  })(StringifyProgrammer || (exports.StringifyProgrammer = StringifyProgrammer = {}));
550
592
  var NO_BIGINT = "Error on typia.stringify(): does not allow bigint type.";