typia 3.3.12 → 3.4.0-dev.20221212

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 (422) hide show
  1. package/README.md +169 -403
  2. package/lib/IValidation.d.ts +10 -4
  3. package/lib/Primitive.d.ts +45 -0
  4. package/lib/Primitive.js +3 -0
  5. package/lib/Primitive.js.map +1 -0
  6. package/lib/executable/internal/TypiaSetupWizard.d.ts +4 -0
  7. package/lib/executable/internal/TypiaSetupWizard.js +200 -0
  8. package/lib/executable/internal/TypiaSetupWizard.js.map +1 -0
  9. package/lib/executable/typia.d.ts +1 -0
  10. package/lib/executable/typia.js +98 -0
  11. package/lib/executable/typia.js.map +1 -0
  12. package/lib/factories/CommentFactory.js +1 -1
  13. package/lib/factories/CommentFactory.js.map +1 -1
  14. package/lib/factories/ExpressionFactory.d.ts +1 -0
  15. package/lib/factories/ExpressionFactory.js +4 -0
  16. package/lib/factories/ExpressionFactory.js.map +1 -1
  17. package/lib/factories/IdentifierFactory.d.ts +1 -1
  18. package/lib/factories/IdentifierFactory.js +4 -2
  19. package/lib/factories/IdentifierFactory.js.map +1 -1
  20. package/lib/factories/MetadataCollection.d.ts +2 -1
  21. package/lib/factories/MetadataCollection.js +24 -5
  22. package/lib/factories/MetadataCollection.js.map +1 -1
  23. package/lib/factories/MetadataTagFactory.js +1 -1
  24. package/lib/factories/MetadataTagFactory.js.map +1 -1
  25. package/lib/factories/StatementFactory.d.ts +1 -3
  26. package/lib/factories/StatementFactory.js +3 -13
  27. package/lib/factories/StatementFactory.js.map +1 -1
  28. package/lib/factories/TemplateFactory.js +4 -0
  29. package/lib/factories/TemplateFactory.js.map +1 -1
  30. package/lib/factories/TypeFactory.d.ts +2 -1
  31. package/lib/factories/TypeFactory.js +14 -7
  32. package/lib/factories/TypeFactory.js.map +1 -1
  33. package/lib/factories/internal/explore_metadata.js +1 -1
  34. package/lib/factories/internal/explore_metadata.js.map +1 -1
  35. package/lib/factories/internal/iterate_metadata.js +12 -3
  36. package/lib/factories/internal/iterate_metadata.js.map +1 -1
  37. package/lib/factories/internal/iterate_metadata_array.js +2 -3
  38. package/lib/factories/internal/iterate_metadata_array.js.map +1 -1
  39. package/lib/factories/internal/iterate_metadata_atomic.js +30 -55
  40. package/lib/factories/internal/iterate_metadata_atomic.js.map +1 -1
  41. package/lib/factories/internal/iterate_metadata_coalesce.js +2 -3
  42. package/lib/factories/internal/iterate_metadata_coalesce.js.map +1 -1
  43. package/lib/factories/internal/iterate_metadata_map.d.ts +5 -0
  44. package/lib/factories/internal/iterate_metadata_map.js +30 -0
  45. package/lib/factories/internal/iterate_metadata_map.js.map +1 -0
  46. package/lib/factories/internal/iterate_metadata_native.d.ts +3 -0
  47. package/lib/factories/internal/iterate_metadata_native.js +230 -0
  48. package/lib/factories/internal/iterate_metadata_native.js.map +1 -0
  49. package/lib/factories/internal/iterate_metadata_set.d.ts +5 -0
  50. package/lib/factories/internal/iterate_metadata_set.js +26 -0
  51. package/lib/factories/internal/iterate_metadata_set.js.map +1 -0
  52. package/lib/factories/internal/iterate_metadata_tuple.d.ts +1 -1
  53. package/lib/factories/internal/iterate_metadata_tuple.js +25 -3
  54. package/lib/factories/internal/iterate_metadata_tuple.js.map +1 -1
  55. package/lib/functional/$every.d.ts +2 -0
  56. package/lib/functional/$every.js +12 -0
  57. package/lib/functional/$every.js.map +1 -0
  58. package/lib/functional/$guard.d.ts +1 -0
  59. package/lib/functional/$guard.js +18 -0
  60. package/lib/functional/$guard.js.map +1 -0
  61. package/lib/functional/$number.js +4 -4
  62. package/lib/functional/$number.js.map +1 -1
  63. package/lib/functional/$report.d.ts +2 -0
  64. package/lib/functional/$report.js +18 -0
  65. package/lib/functional/$report.js.map +1 -0
  66. package/lib/functional/$rest.d.ts +1 -0
  67. package/lib/functional/$rest.js +8 -0
  68. package/lib/functional/$rest.js.map +1 -0
  69. package/lib/index.d.ts +2 -2
  70. package/lib/index.js +2 -2
  71. package/lib/index.js.map +1 -1
  72. package/lib/metadata/IMetadata.d.ts +5 -0
  73. package/lib/metadata/IMetadataApplication.d.ts +6 -0
  74. package/lib/metadata/IMetadataApplication.js +3 -0
  75. package/lib/metadata/IMetadataApplication.js.map +1 -0
  76. package/lib/metadata/IMetadataConstant.d.ts +1 -1
  77. package/lib/metadata/IMetadataEntry.d.ts +5 -0
  78. package/lib/metadata/IMetadataEntry.js +3 -0
  79. package/lib/metadata/IMetadataEntry.js.map +1 -0
  80. package/lib/metadata/IMetadataTag.d.ts +1 -1
  81. package/lib/metadata/Metadata.d.ts +10 -0
  82. package/lib/metadata/Metadata.js +156 -59
  83. package/lib/metadata/Metadata.js.map +1 -1
  84. package/lib/metadata/MetadataObject.d.ts +0 -1
  85. package/lib/metadata/MetadataObject.js +10 -0
  86. package/lib/metadata/MetadataObject.js.map +1 -1
  87. package/lib/module.d.ts +603 -72
  88. package/lib/module.js +185 -23
  89. package/lib/module.js.map +1 -1
  90. package/lib/programmers/ApplicationProgrammer.js +2 -2
  91. package/lib/programmers/ApplicationProgrammer.js.map +1 -1
  92. package/lib/programmers/AssertParseProgrammer.d.ts +5 -0
  93. package/lib/programmers/AssertParseProgrammer.js +23 -0
  94. package/lib/programmers/AssertParseProgrammer.js.map +1 -0
  95. package/lib/programmers/AssertProgrammer.d.ts +1 -1
  96. package/lib/programmers/AssertProgrammer.js +133 -58
  97. package/lib/programmers/AssertProgrammer.js.map +1 -1
  98. package/lib/programmers/AssertStringifyProgrammer.d.ts +5 -0
  99. package/lib/programmers/AssertStringifyProgrammer.js +26 -0
  100. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -0
  101. package/lib/programmers/CheckerProgrammer.d.ts +17 -7
  102. package/lib/programmers/CheckerProgrammer.js +284 -79
  103. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  104. package/lib/programmers/FeatureProgrammer.d.ts +14 -9
  105. package/lib/programmers/FeatureProgrammer.js +76 -116
  106. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  107. package/lib/programmers/IsParseProgrammer.d.ts +5 -0
  108. package/lib/programmers/IsParseProgrammer.js +23 -0
  109. package/lib/programmers/IsParseProgrammer.js.map +1 -0
  110. package/lib/programmers/IsProgrammer.d.ts +5 -4
  111. package/lib/programmers/IsProgrammer.js +69 -44
  112. package/lib/programmers/IsProgrammer.js.map +1 -1
  113. package/lib/programmers/IsStringifyProgrammer.d.ts +5 -0
  114. package/lib/programmers/IsStringifyProgrammer.js +24 -0
  115. package/lib/programmers/IsStringifyProgrammer.js.map +1 -0
  116. package/lib/programmers/StringifyProgrammer.js +118 -47
  117. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  118. package/lib/programmers/ValidateParseProgrammer.d.ts +5 -0
  119. package/lib/programmers/ValidateParseProgrammer.js +24 -0
  120. package/lib/programmers/ValidateParseProgrammer.js.map +1 -0
  121. package/lib/programmers/ValidateProgrammer.d.ts +1 -1
  122. package/lib/programmers/ValidateProgrammer.js +124 -68
  123. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  124. package/lib/programmers/ValidateStringifyProgrammer.d.ts +5 -0
  125. package/lib/programmers/ValidateStringifyProgrammer.js +26 -0
  126. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -0
  127. package/lib/programmers/helpers/AtomicPredicator.d.ts +6 -0
  128. package/lib/programmers/helpers/AtomicPredicator.js +16 -0
  129. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -0
  130. package/lib/programmers/helpers/FunctionImporeter.js +1 -1
  131. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  132. package/lib/programmers/helpers/OptionPredicator.d.ts +1 -1
  133. package/lib/programmers/helpers/OptionPredicator.js +7 -7
  134. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  135. package/lib/programmers/helpers/StringifyJoinder.d.ts +2 -2
  136. package/lib/programmers/helpers/StringifyJoinder.js +5 -2
  137. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  138. package/lib/programmers/helpers/UnionExplorer.d.ts +33 -4
  139. package/lib/programmers/helpers/UnionExplorer.js +85 -47
  140. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  141. package/lib/programmers/internal/application_array.js +1 -1
  142. package/lib/programmers/internal/application_array.js.map +1 -1
  143. package/lib/programmers/internal/application_default.js +1 -1
  144. package/lib/programmers/internal/application_default.js.map +1 -1
  145. package/lib/programmers/internal/application_native.d.ts +4 -0
  146. package/lib/programmers/internal/application_native.js +35 -0
  147. package/lib/programmers/internal/application_native.js.map +1 -0
  148. package/lib/programmers/internal/application_number.js +6 -2
  149. package/lib/programmers/internal/application_number.js.map +1 -1
  150. package/lib/programmers/internal/application_object.js +44 -31
  151. package/lib/programmers/internal/application_object.js.map +1 -1
  152. package/lib/programmers/internal/application_schema.js +70 -36
  153. package/lib/programmers/internal/application_schema.js.map +1 -1
  154. package/lib/programmers/internal/application_string.js +2 -2
  155. package/lib/programmers/internal/application_string.js.map +1 -1
  156. package/lib/programmers/internal/check_array.js +4 -10
  157. package/lib/programmers/internal/check_array.js.map +1 -1
  158. package/lib/programmers/internal/check_dynamic_properties.js +40 -50
  159. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  160. package/lib/programmers/internal/check_everything.js +1 -3
  161. package/lib/programmers/internal/check_everything.js.map +1 -1
  162. package/lib/programmers/internal/check_length.js +2 -2
  163. package/lib/programmers/internal/check_length.js.map +1 -1
  164. package/lib/programmers/internal/check_native.d.ts +1 -0
  165. package/lib/programmers/internal/check_native.js +9 -0
  166. package/lib/programmers/internal/check_native.js.map +1 -0
  167. package/lib/programmers/internal/check_number.js +1 -1
  168. package/lib/programmers/internal/check_number.js.map +1 -1
  169. package/lib/programmers/internal/check_object.d.ts +12 -1
  170. package/lib/programmers/internal/check_object.js +12 -22
  171. package/lib/programmers/internal/check_object.js.map +1 -1
  172. package/lib/programmers/internal/decode_union_object.js +9 -7
  173. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  174. package/lib/programmers/internal/feature_object_entries.d.ts +9 -0
  175. package/lib/programmers/internal/feature_object_entries.js +38 -0
  176. package/lib/programmers/internal/feature_object_entries.js.map +1 -0
  177. package/lib/programmers/internal/stringify_dynamic_properties.js +4 -2
  178. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  179. package/lib/programmers/internal/stringify_native.d.ts +1 -0
  180. package/lib/programmers/internal/stringify_native.js +12 -0
  181. package/lib/programmers/internal/stringify_native.js.map +1 -0
  182. package/lib/schemas/IJsonComponents.d.ts +1 -1
  183. package/lib/schemas/IJsonSchema.d.ts +10 -8
  184. package/lib/transformers/CallExpressionTransformer.js +47 -10
  185. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  186. package/lib/transformers/FileTransformer.js +1 -1
  187. package/lib/transformers/features/{ApplicationTransformer.d.ts → miscellaneous/ApplicationTransformer.d.ts} +1 -1
  188. package/lib/transformers/features/{ApplicationTransformer.js → miscellaneous/ApplicationTransformer.js} +8 -8
  189. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -0
  190. package/lib/transformers/features/{CreateTransformer.d.ts → miscellaneous/CreateInstanceTransformer.d.ts} +2 -2
  191. package/lib/transformers/features/{CreateTransformer.js → miscellaneous/CreateInstanceTransformer.js} +8 -8
  192. package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.js.map +1 -0
  193. package/lib/transformers/features/miscellaneous/MetadataTransformer.d.ts +5 -0
  194. package/lib/transformers/features/miscellaneous/MetadataTransformer.js +43 -0
  195. package/lib/transformers/features/miscellaneous/MetadataTransformer.js.map +1 -0
  196. package/lib/transformers/features/parsers/AssertParseTransformer.d.ts +5 -0
  197. package/lib/transformers/features/parsers/AssertParseTransformer.js +21 -0
  198. package/lib/transformers/features/parsers/AssertParseTransformer.js.map +1 -0
  199. package/lib/transformers/features/parsers/CreateAssertParseTransformer.d.ts +5 -0
  200. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js +17 -0
  201. package/lib/transformers/features/parsers/CreateAssertParseTransformer.js.map +1 -0
  202. package/lib/transformers/features/parsers/CreateIsParseTransformer.d.ts +5 -0
  203. package/lib/transformers/features/parsers/CreateIsParseTransformer.js +17 -0
  204. package/lib/transformers/features/parsers/CreateIsParseTransformer.js.map +1 -0
  205. package/lib/transformers/features/parsers/CreateValidateParseTransformer.d.ts +5 -0
  206. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js +17 -0
  207. package/lib/transformers/features/parsers/CreateValidateParseTransformer.js.map +1 -0
  208. package/lib/transformers/features/parsers/IsParseTransformer.d.ts +5 -0
  209. package/lib/transformers/features/parsers/IsParseTransformer.js +21 -0
  210. package/lib/transformers/features/parsers/IsParseTransformer.js.map +1 -0
  211. package/lib/transformers/features/parsers/ValidateParseTransformer.d.ts +5 -0
  212. package/lib/transformers/features/parsers/ValidateParseTransformer.js +21 -0
  213. package/lib/transformers/features/parsers/ValidateParseTransformer.js.map +1 -0
  214. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.d.ts +5 -0
  215. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js +23 -0
  216. package/lib/transformers/features/stringifiers/AssertStringifyTransformer.js.map +1 -0
  217. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.d.ts +5 -0
  218. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js +17 -0
  219. package/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js.map +1 -0
  220. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.d.ts +5 -0
  221. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js +17 -0
  222. package/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js.map +1 -0
  223. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.d.ts +5 -0
  224. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js +17 -0
  225. package/lib/transformers/features/stringifiers/CreateStringifyTransformer.js.map +1 -0
  226. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.d.ts +5 -0
  227. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js +17 -0
  228. package/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js.map +1 -0
  229. package/lib/transformers/features/stringifiers/IsStringifyTransformer.d.ts +5 -0
  230. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js +23 -0
  231. package/lib/transformers/features/stringifiers/IsStringifyTransformer.js.map +1 -0
  232. package/lib/transformers/features/{StringifyTransformer.d.ts → stringifiers/StringifyTransformer.d.ts} +1 -1
  233. package/lib/transformers/features/{StringifyTransformer.js → stringifiers/StringifyTransformer.js} +3 -3
  234. package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -0
  235. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.d.ts +5 -0
  236. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js +23 -0
  237. package/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js.map +1 -0
  238. package/lib/transformers/features/{AssertTransformer.d.ts → validators/AssertTransformer.d.ts} +1 -1
  239. package/lib/transformers/features/{AssertTransformer.js → validators/AssertTransformer.js} +4 -4
  240. package/lib/transformers/features/validators/AssertTransformer.js.map +1 -0
  241. package/lib/transformers/features/validators/CreateAssertTransformer.d.ts +5 -0
  242. package/lib/transformers/features/validators/CreateAssertTransformer.js +24 -0
  243. package/lib/transformers/features/validators/CreateAssertTransformer.js.map +1 -0
  244. package/lib/transformers/features/validators/CreateIsTransformer.d.ts +5 -0
  245. package/lib/transformers/features/validators/CreateIsTransformer.js +24 -0
  246. package/lib/transformers/features/validators/CreateIsTransformer.js.map +1 -0
  247. package/lib/transformers/features/validators/CreateValidateTransformer.d.ts +5 -0
  248. package/lib/transformers/features/validators/CreateValidateTransformer.js +24 -0
  249. package/lib/transformers/features/validators/CreateValidateTransformer.js.map +1 -0
  250. package/lib/transformers/features/{IsTransformer.d.ts → validators/IsTransformer.d.ts} +1 -1
  251. package/lib/transformers/features/{IsTransformer.js → validators/IsTransformer.js} +3 -3
  252. package/lib/transformers/features/validators/IsTransformer.js.map +1 -0
  253. package/lib/transformers/features/{ValidateTransformer.d.ts → validators/ValidateTransformer.d.ts} +1 -1
  254. package/lib/transformers/features/{ValidateTransformer.js → validators/ValidateTransformer.js} +3 -3
  255. package/lib/transformers/features/validators/ValidateTransformer.js.map +1 -0
  256. package/lib/typings/ClassProperties.d.ts +1 -1
  257. package/lib/typings/OmitNever.d.ts +1 -1
  258. package/lib/typings/SpecialFields.d.ts +1 -1
  259. package/lib/typings/Writable.d.ts +1 -1
  260. package/lib/utils/PatternUtil.js +1 -1
  261. package/lib/utils/PatternUtil.js.map +1 -1
  262. package/package.json +114 -78
  263. package/src/IValidation.ts +21 -0
  264. package/src/Primitive.ts +82 -0
  265. package/src/TypeGuardError.ts +36 -0
  266. package/src/executable/internal/TypiaSetupWizard.ts +130 -0
  267. package/src/executable/typia.ts +34 -0
  268. package/src/factories/CommentFactory.ts +10 -0
  269. package/src/factories/ExpressionFactory.ts +52 -0
  270. package/src/factories/IdentifierFactory.ts +72 -0
  271. package/src/factories/LiteralFactory.ts +44 -0
  272. package/src/factories/MetadataCollection.ts +122 -0
  273. package/src/factories/MetadataFactory.ts +46 -0
  274. package/src/factories/MetadataTagFactory.ts +347 -0
  275. package/src/factories/StatementFactory.ts +60 -0
  276. package/src/factories/TemplateFactory.ts +56 -0
  277. package/src/factories/TypeFactory.ts +101 -0
  278. package/src/factories/ValueFactory.ts +12 -0
  279. package/src/factories/internal/MetadataHelper.ts +12 -0
  280. package/src/factories/internal/emplace_metadata_object.ts +140 -0
  281. package/src/factories/internal/explore_metadata.ts +91 -0
  282. package/src/factories/internal/iterate_metadata.ts +81 -0
  283. package/src/factories/internal/iterate_metadata_array.ts +29 -0
  284. package/src/factories/internal/iterate_metadata_atomic.ts +59 -0
  285. package/src/factories/internal/iterate_metadata_coalesce.ts +33 -0
  286. package/src/factories/internal/iterate_metadata_constant.ts +58 -0
  287. package/src/factories/internal/iterate_metadata_map.ts +41 -0
  288. package/src/factories/internal/iterate_metadata_native.ts +227 -0
  289. package/src/factories/internal/iterate_metadata_object.ts +45 -0
  290. package/src/factories/internal/iterate_metadata_resolve.ts +27 -0
  291. package/src/factories/internal/iterate_metadata_set.ts +33 -0
  292. package/src/factories/internal/iterate_metadata_template.ts +38 -0
  293. package/src/factories/internal/iterate_metadata_tuple.ts +51 -0
  294. package/src/factories/internal/iterate_metadata_union.ts +59 -0
  295. package/src/functional/$every.ts +11 -0
  296. package/src/functional/$guard.ts +35 -0
  297. package/src/functional/$is_email.ts +5 -0
  298. package/src/functional/$is_ipv4.ts +5 -0
  299. package/src/functional/$is_ipv6.ts +5 -0
  300. package/src/functional/$is_url.ts +5 -0
  301. package/src/functional/$is_uuid.ts +5 -0
  302. package/src/functional/$join.ts +50 -0
  303. package/src/functional/$number.ts +19 -0
  304. package/src/functional/$report.ts +15 -0
  305. package/src/functional/$rest.ts +3 -0
  306. package/src/functional/$string.ts +37 -0
  307. package/src/functional/$tail.ts +6 -0
  308. package/src/index.ts +4 -0
  309. package/src/metadata/IJsDocTagInfo.ts +10 -0
  310. package/src/metadata/IMetadata.ts +25 -0
  311. package/src/metadata/IMetadataApplication.ts +7 -0
  312. package/src/metadata/IMetadataConstant.ts +16 -0
  313. package/src/metadata/IMetadataEntry.ts +6 -0
  314. package/src/metadata/IMetadataObject.ts +29 -0
  315. package/src/metadata/IMetadataProperty.ts +11 -0
  316. package/src/metadata/IMetadataTag.ts +122 -0
  317. package/src/metadata/Metadata.ts +477 -0
  318. package/src/metadata/MetadataConstant.ts +3 -0
  319. package/src/metadata/MetadataObject.ts +131 -0
  320. package/src/metadata/MetadataProperty.ts +64 -0
  321. package/src/module.ts +1535 -0
  322. package/src/programmers/ApplicationProgrammer.ts +55 -0
  323. package/src/programmers/AssertParseProgrammer.ts +45 -0
  324. package/src/programmers/AssertProgrammer.ts +444 -0
  325. package/src/programmers/AssertStringifyProgrammer.ts +45 -0
  326. package/src/programmers/CheckerProgrammer.ts +798 -0
  327. package/src/programmers/FeatureProgrammer.ts +327 -0
  328. package/src/programmers/IsParseProgrammer.ts +51 -0
  329. package/src/programmers/IsProgrammer.ts +169 -0
  330. package/src/programmers/IsStringifyProgrammer.ts +49 -0
  331. package/src/programmers/StringifyProgrammer.ts +746 -0
  332. package/src/programmers/ValidateParseProgrammer.ts +49 -0
  333. package/src/programmers/ValidateProgrammer.ts +236 -0
  334. package/src/programmers/ValidateStringifyProgrammer.ts +60 -0
  335. package/src/programmers/helpers/AtomicPredicator.ts +15 -0
  336. package/src/programmers/helpers/FunctionImporeter.ts +31 -0
  337. package/src/programmers/helpers/IExpressionEntry.ts +10 -0
  338. package/src/programmers/helpers/OptionPredicator.ts +18 -0
  339. package/src/programmers/helpers/StringifyJoinder.ts +111 -0
  340. package/src/programmers/helpers/StringifyPredicator.ts +18 -0
  341. package/src/programmers/helpers/UnionExplorer.ts +437 -0
  342. package/src/programmers/helpers/UnionPredicator.ts +81 -0
  343. package/src/programmers/internal/application_array.ts +45 -0
  344. package/src/programmers/internal/application_boolean.ts +17 -0
  345. package/src/programmers/internal/application_constant.ts +29 -0
  346. package/src/programmers/internal/application_default.ts +17 -0
  347. package/src/programmers/internal/application_default_string.ts +32 -0
  348. package/src/programmers/internal/application_native.ts +29 -0
  349. package/src/programmers/internal/application_number.ts +76 -0
  350. package/src/programmers/internal/application_object.ts +103 -0
  351. package/src/programmers/internal/application_schema.ts +221 -0
  352. package/src/programmers/internal/application_string.ts +49 -0
  353. package/src/programmers/internal/application_templates.ts +27 -0
  354. package/src/programmers/internal/application_tuple.ts +25 -0
  355. package/src/programmers/internal/check_array.ts +44 -0
  356. package/src/programmers/internal/check_dynamic_properties.ts +146 -0
  357. package/src/programmers/internal/check_everything.ts +25 -0
  358. package/src/programmers/internal/check_length.ts +46 -0
  359. package/src/programmers/internal/check_native.ts +9 -0
  360. package/src/programmers/internal/check_number.ts +181 -0
  361. package/src/programmers/internal/check_object.ts +42 -0
  362. package/src/programmers/internal/check_string.ts +24 -0
  363. package/src/programmers/internal/check_string_tags.ts +63 -0
  364. package/src/programmers/internal/check_template.ts +50 -0
  365. package/src/programmers/internal/decode_union_object.ts +73 -0
  366. package/src/programmers/internal/feature_object_entries.ts +49 -0
  367. package/src/programmers/internal/metadata_to_pattern.ts +31 -0
  368. package/src/programmers/internal/stringify_dynamic_properties.ts +164 -0
  369. package/src/programmers/internal/stringify_native.ts +8 -0
  370. package/src/programmers/internal/stringify_regular_properties.ts +81 -0
  371. package/src/programmers/internal/template_to_pattern.ts +15 -0
  372. package/src/schemas/IJsonApplication.ts +9 -0
  373. package/src/schemas/IJsonComponents.ts +24 -0
  374. package/src/schemas/IJsonSchema.ts +92 -0
  375. package/src/transform.ts +20 -0
  376. package/src/transformers/CallExpressionTransformer.ts +124 -0
  377. package/src/transformers/ExpressionWithArgumentTransformer.ts +66 -0
  378. package/src/transformers/FileTransformer.ts +49 -0
  379. package/src/transformers/IProject.ts +11 -0
  380. package/src/transformers/ITransformOptions.ts +4 -0
  381. package/src/transformers/NodeTransformer.ts +19 -0
  382. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +114 -0
  383. package/src/transformers/features/miscellaneous/CreateInstanceTransformer.ts +41 -0
  384. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +55 -0
  385. package/src/transformers/features/parsers/AssertParseTransformer.ts +36 -0
  386. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +32 -0
  387. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +32 -0
  388. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +32 -0
  389. package/src/transformers/features/parsers/IsParseTransformer.ts +36 -0
  390. package/src/transformers/features/parsers/ValidateParseTransformer.ts +36 -0
  391. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +38 -0
  392. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +32 -0
  393. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +32 -0
  394. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +31 -0
  395. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +32 -0
  396. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +38 -0
  397. package/src/transformers/features/stringifiers/StringifyTransformer.ts +36 -0
  398. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +38 -0
  399. package/src/transformers/features/validators/AssertTransformer.ts +43 -0
  400. package/src/transformers/features/validators/CreateAssertTransformer.ts +35 -0
  401. package/src/transformers/features/validators/CreateIsTransformer.ts +35 -0
  402. package/src/transformers/features/validators/CreateValidateTransformer.ts +35 -0
  403. package/src/transformers/features/validators/IsTransformer.ts +43 -0
  404. package/src/transformers/features/validators/ValidateTransformer.ts +43 -0
  405. package/src/typings/Atomic.ts +17 -0
  406. package/src/typings/ClassProperties.ts +5 -0
  407. package/src/typings/OmitNever.ts +3 -0
  408. package/src/typings/SpecialFields.ts +3 -0
  409. package/src/typings/Writable.ts +11 -0
  410. package/src/utils/ArrayUtil.ts +49 -0
  411. package/src/utils/Escaper.ts +50 -0
  412. package/src/utils/MapUtil.ts +14 -0
  413. package/src/utils/PatternUtil.ts +30 -0
  414. package/src/utils/Singleton.ts +17 -0
  415. package/CODE_OF_CONDUCT.md +0 -133
  416. package/CONTRIBUTING.md +0 -104
  417. package/lib/transformers/features/ApplicationTransformer.js.map +0 -1
  418. package/lib/transformers/features/AssertTransformer.js.map +0 -1
  419. package/lib/transformers/features/CreateTransformer.js.map +0 -1
  420. package/lib/transformers/features/IsTransformer.js.map +0 -1
  421. package/lib/transformers/features/StringifyTransformer.js.map +0 -1
  422. package/lib/transformers/features/ValidateTransformer.js.map +0 -1
@@ -10,6 +10,17 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __values = (this && this.__values) || function(o) {
14
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15
+ if (m) return m.call(o);
16
+ if (o && typeof o.length === "number") return {
17
+ next: function () {
18
+ if (o && i >= o.length) o = void 0;
19
+ return { value: o && o[i++], done: !o };
20
+ }
21
+ };
22
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
+ };
13
24
  var __read = (this && this.__read) || function (o, n) {
14
25
  var m = typeof Symbol === "function" && o[Symbol.iterator];
15
26
  if (!m) return o;
@@ -35,17 +46,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
35
46
  }
36
47
  return to.concat(ar || Array.prototype.slice.call(from));
37
48
  };
38
- var __values = (this && this.__values) || function(o) {
39
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
40
- if (m) return m.call(o);
41
- if (o && typeof o.length === "number") return {
42
- next: function () {
43
- if (o && i >= o.length) o = void 0;
44
- return { value: o && o[i++], done: !o };
45
- }
46
- };
47
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
48
- };
49
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
50
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
51
  };
@@ -53,40 +53,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.CheckerProgrammer = void 0;
54
54
  var typescript_1 = __importDefault(require("typescript"));
55
55
  var ExpressionFactory_1 = require("../factories/ExpressionFactory");
56
+ var IdentifierFactory_1 = require("../factories/IdentifierFactory");
56
57
  var MetadataCollection_1 = require("../factories/MetadataCollection");
57
58
  var MetadataFactory_1 = require("../factories/MetadataFactory");
58
59
  var ValueFactory_1 = require("../factories/ValueFactory");
60
+ var Metadata_1 = require("../metadata/Metadata");
59
61
  var FeatureProgrammer_1 = require("./FeatureProgrammer");
60
62
  var OptionPredicator_1 = require("./helpers/OptionPredicator");
61
63
  var UnionExplorer_1 = require("./helpers/UnionExplorer");
62
64
  var check_array_1 = require("./internal/check_array");
65
+ var check_native_1 = require("./internal/check_native");
63
66
  var check_number_1 = require("./internal/check_number");
64
67
  var check_string_1 = require("./internal/check_string");
65
68
  var check_template_1 = require("./internal/check_template");
66
69
  var decode_union_object_1 = require("./internal/decode_union_object");
67
70
  var CheckerProgrammer;
68
71
  (function (CheckerProgrammer) {
69
- function generate(project, config, modulo, importer, addition) {
70
- return FeatureProgrammer_1.FeatureProgrammer.generate(project, CONFIG(project, config, importer), function () {
71
- return !importer.empty() || addition
72
- ? __spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read((addition ? addition() : [])), false) : undefined;
73
- });
72
+ function generate(project, config, importer, addition) {
73
+ return FeatureProgrammer_1.FeatureProgrammer.generate(project, CONFIG(project, config, importer), importer, function () { return (addition ? (addition ? addition() : []) : undefined); });
74
74
  }
75
75
  CheckerProgrammer.generate = generate;
76
- CheckerProgrammer.generate_functors = function (project, config, importer) { return FeatureProgrammer_1.FeatureProgrammer.generate_functors(CONFIG(project, config, importer)); };
76
+ CheckerProgrammer.generate_functors = function (project, config, importer) {
77
+ return FeatureProgrammer_1.FeatureProgrammer.generate_functors(CONFIG(project, config, importer), importer);
78
+ };
77
79
  CheckerProgrammer.generate_unioners = function (project, config, importer) {
78
80
  return FeatureProgrammer_1.FeatureProgrammer.generate_unioners(CONFIG(project, __assign(__assign({}, config), { numeric: false }), importer));
79
81
  };
80
- CheckerProgrammer.DEFAULT_JOINER = function (object) { return ({
81
- object: object,
82
- array: check_array_1.check_array,
83
- tuple: function (binaries) {
84
- return binaries.reduce(function (x, y) { return typescript_1.default.factory.createLogicalAnd(x, y); });
85
- },
86
- }); };
87
82
  function CONFIG(project, config, importer) {
88
83
  var output = {
89
84
  trace: config.trace,
85
+ path: config.path,
90
86
  functors: config.functors,
91
87
  unioners: config.unioners,
92
88
  initializer: function (_a, type) {
@@ -98,25 +94,29 @@ var CheckerProgrammer;
98
94
  });
99
95
  return [collection, meta];
100
96
  },
101
- decoder: decode(project, config, importer),
97
+ decoder: config.decoder || decode(project, config, importer),
102
98
  objector: {
103
- checker: decode(project, config, importer),
99
+ checker: config.decoder || decode(project, config, importer),
104
100
  decoder: decode_object(config),
105
101
  joiner: config.joiner.object,
106
102
  unionizer: config.equals
107
103
  ? (0, decode_union_object_1.decode_union_object)(decode_object(config))(function (input, obj, explore) {
108
104
  return decode_object(config)(input, obj, __assign(__assign({}, explore), { tracable: true }));
109
- })(function () {
110
- return typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createFalse());
105
+ })(config.joiner.is || (function (expr) { return expr; }))(function (value, expected) {
106
+ return typescript_1.default.factory.createReturnStatement(config.joiner.failure(value, expected));
111
107
  })
112
108
  : function (input, targets, explore) {
113
- return config.combiner(explore)("or")(input, targets.map(function (obj) {
114
- return decode_object(config)(input, obj, explore);
115
- }), "(".concat(targets.map(function (t) { return t.name; }).join(" | "), ")"));
109
+ return config.combiner(explore)("or")(input, targets.map(function (obj) { return ({
110
+ expression: decode_object(config)(input, obj, explore),
111
+ combined: true,
112
+ }); }), "(".concat(targets.map(function (t) { return t.name; }).join(" | "), ")"));
116
113
  },
117
- failure: function () {
118
- return typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createFalse());
114
+ failure: function (value, expected) {
115
+ return typescript_1.default.factory.createReturnStatement(config.joiner.failure(value, expected));
119
116
  },
117
+ is: config.joiner.is,
118
+ required: config.joiner.required,
119
+ full: config.joiner.full,
120
120
  },
121
121
  };
122
122
  if (config.numeric === true)
@@ -125,11 +125,12 @@ var CheckerProgrammer;
125
125
  };
126
126
  return output;
127
127
  }
128
- function decode(project, config, importer) {
128
+ function decode(project, config, importer, checkTupleLength) {
129
+ if (checkTupleLength === void 0) { checkTupleLength = true; }
129
130
  return function (input, meta, explore, tags) {
130
- var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
131
+ var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e;
131
132
  if (meta.any)
132
- return ValueFactory_1.ValueFactory.BOOLEAN(true);
133
+ return config.success;
133
134
  var top = [];
134
135
  var binaries = [];
135
136
  var add = create_add(binaries)(input);
@@ -139,27 +140,33 @@ var CheckerProgrammer;
139
140
  : typescript_1.default.factory.createIdentifier(value.toString());
140
141
  };
141
142
  var checkOptional = meta.empty() || meta.isUnionBucket();
142
- if (checkOptional || meta.nullable || meta.objects.length)
143
+ if (checkOptional ||
144
+ meta.nullable)
143
145
  (meta.nullable ? add : create_add(top)(input))(meta.nullable, ValueFactory_1.ValueFactory.NULL());
144
146
  if (checkOptional || !meta.required)
145
147
  (meta.required ? create_add(top)(input) : add)(!meta.required, ValueFactory_1.ValueFactory.UNDEFINED());
146
- if (meta.functional === true &&
147
- (OptionPredicator_1.OptionPreditor.functional(project.options) ||
148
- meta.size() !== 1))
149
- add(true, typescript_1.default.factory.createStringLiteral("function"), ValueFactory_1.ValueFactory.TYPEOF(input));
148
+ if (meta.functional === true)
149
+ if (OptionPredicator_1.OptionPredicator.functional(project.options) ||
150
+ meta.size() !== 1)
151
+ add(true, typescript_1.default.factory.createStringLiteral("function"), ValueFactory_1.ValueFactory.TYPEOF(input));
152
+ else
153
+ binaries.push({
154
+ combined: false,
155
+ expression: config.success,
156
+ });
150
157
  try {
151
- for (var _e = __values(meta.constants), _f = _e.next(); !_f.done; _f = _e.next()) {
152
- var constant = _f.value;
158
+ for (var _f = __values(meta.constants), _g = _f.next(); !_g.done; _g = _f.next()) {
159
+ var constant = _g.value;
153
160
  try {
154
- for (var _g = (e_2 = void 0, __values(constant.values)), _h = _g.next(); !_h.done; _h = _g.next()) {
155
- var val = _h.value;
161
+ for (var _h = (e_2 = void 0, __values(constant.values)), _j = _h.next(); !_j.done; _j = _h.next()) {
162
+ var val = _j.value;
156
163
  add(true, getConstantValue(val));
157
164
  }
158
165
  }
159
166
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
160
167
  finally {
161
168
  try {
162
- if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
169
+ if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
163
170
  }
164
171
  finally { if (e_2) throw e_2.error; }
165
172
  }
@@ -168,17 +175,23 @@ var CheckerProgrammer;
168
175
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
169
176
  finally {
170
177
  try {
171
- if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
178
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
172
179
  }
173
180
  finally { if (e_1) throw e_1.error; }
174
181
  }
175
182
  try {
176
- for (var _j = __values(meta.atomics), _k = _j.next(); !_k.done; _k = _j.next()) {
177
- var type = _k.value;
183
+ for (var _k = __values(meta.atomics), _l = _k.next(); !_l.done; _l = _k.next()) {
184
+ var type = _l.value;
178
185
  if (type === "number")
179
- binaries.push((0, check_number_1.check_number)(project, config.numeric)(input, tags));
186
+ binaries.push({
187
+ expression: (0, check_number_1.check_number)(project, config.numeric)(input, tags),
188
+ combined: false,
189
+ });
180
190
  else if (type === "string")
181
- binaries.push((0, check_string_1.check_string)(importer)(input, tags));
191
+ binaries.push({
192
+ expression: (0, check_string_1.check_string)(importer)(input, tags),
193
+ combined: false,
194
+ });
182
195
  else
183
196
  add(true, typescript_1.default.factory.createStringLiteral(type), ValueFactory_1.ValueFactory.TYPEOF(input));
184
197
  }
@@ -186,63 +199,201 @@ var CheckerProgrammer;
186
199
  catch (e_3_1) { e_3 = { error: e_3_1 }; }
187
200
  finally {
188
201
  try {
189
- if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
202
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
190
203
  }
191
204
  finally { if (e_3) throw e_3.error; }
192
205
  }
193
206
  if (meta.templates.length)
194
- binaries.push((0, check_template_1.check_template)(importer)(input, meta.templates, tags));
207
+ binaries.push({
208
+ expression: (0, check_template_1.check_template)(importer)(input, meta.templates, tags),
209
+ combined: false,
210
+ });
195
211
  if (meta.tuples.length > 0) {
196
212
  var inner = [];
197
213
  try {
198
- for (var _l = __values(meta.tuples), _m = _l.next(); !_m.done; _m = _l.next()) {
199
- var tuple = _m.value;
200
- inner.push(decode_tuple(project, config, importer)(input, tuple, explore, tags));
214
+ for (var _m = __values(meta.tuples), _o = _m.next(); !_o.done; _o = _m.next()) {
215
+ var tuple = _o.value;
216
+ inner.push(decode_tuple(project, config, importer, checkTupleLength)(input, tuple, explore, tags));
201
217
  }
202
218
  }
203
219
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
204
220
  finally {
205
221
  try {
206
- if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
222
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
207
223
  }
208
224
  finally { if (e_4) throw e_4.error; }
209
225
  }
210
- binaries.push(typescript_1.default.factory.createLogicalAnd(ExpressionFactory_1.ExpressionFactory.isArray(input), inner.length === 1
211
- ? inner[0]
212
- : inner.reduce(function (x, y) {
213
- return typescript_1.default.factory.createLogicalOr(x, y);
214
- })));
226
+ binaries.push({
227
+ expression: config.combiner(explore)("and")(input, __spreadArray(__spreadArray([], __read((checkTupleLength
228
+ ? [
229
+ {
230
+ expression: ExpressionFactory_1.ExpressionFactory.isArray(input),
231
+ combined: false,
232
+ },
233
+ ]
234
+ : [])), false), __read(inner.map(function (expression) { return ({
235
+ expression: expression,
236
+ combined: true,
237
+ }); })), false), meta.getName()),
238
+ combined: true,
239
+ });
215
240
  }
216
241
  if (meta.arrays.length > 0)
217
- binaries.push(typescript_1.default.factory.createLogicalAnd(ExpressionFactory_1.ExpressionFactory.isArray(input), explore_array(project, config, importer)(input, meta.arrays, __assign(__assign({}, explore), { from: "array" }), tags)));
242
+ if (meta.arrays.every(function (elem) { return elem.any; }))
243
+ binaries.push({
244
+ expression: (0, check_array_1.check_array)(input, tags),
245
+ combined: false,
246
+ });
247
+ else
248
+ binaries.push({
249
+ expression: config.combiner(explore)("and")(input, __spreadArray(__spreadArray([], __read((checkTupleLength
250
+ ? [
251
+ {
252
+ expression: (0, check_array_1.check_array)(input, tags),
253
+ combined: false,
254
+ },
255
+ ]
256
+ : [])), false), [
257
+ {
258
+ expression: explore_array(project, config, importer)(input, meta.arrays, __assign(__assign({}, explore), { from: "array" }), tags),
259
+ combined: true,
260
+ },
261
+ ], false), meta.getName()),
262
+ combined: true,
263
+ });
218
264
  if (meta.objects.length > 0)
219
- binaries.push(typescript_1.default.factory.createLogicalAnd(ExpressionFactory_1.ExpressionFactory.isObject(input, true), explore_objects(config)(input, meta, __assign(__assign({}, explore), { from: "object" }))));
220
- return top.length !== 0
265
+ binaries.push({
266
+ expression: config.combiner(explore)("and")(input, [
267
+ {
268
+ expression: ExpressionFactory_1.ExpressionFactory.isObject(input, true),
269
+ combined: false,
270
+ },
271
+ {
272
+ expression: explore_objects(config)(input, meta, __assign(__assign({}, explore), { from: "object" })),
273
+ combined: true,
274
+ },
275
+ ], meta.getName()),
276
+ combined: true,
277
+ });
278
+ try {
279
+ for (var _p = __values(meta.natives), _q = _p.next(); !_q.done; _q = _p.next()) {
280
+ var native = _q.value;
281
+ binaries.push({
282
+ expression: (0, check_native_1.check_native)(native)(input),
283
+ combined: false,
284
+ });
285
+ }
286
+ }
287
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
288
+ finally {
289
+ try {
290
+ if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
291
+ }
292
+ finally { if (e_5) throw e_5.error; }
293
+ }
294
+ if (meta.sets.length)
295
+ if (meta.sets.every(function (elem) { return elem.any; }))
296
+ binaries.push({
297
+ combined: false,
298
+ expression: (0, check_native_1.check_native)("Set")(input),
299
+ });
300
+ else
301
+ binaries.push({
302
+ combined: true,
303
+ expression: config.combiner(explore)("and")(input, [
304
+ {
305
+ combined: false,
306
+ expression: (0, check_native_1.check_native)("Set")(input),
307
+ },
308
+ {
309
+ combined: true,
310
+ expression: explore_set(project, config, importer)(input, meta.sets, __assign(__assign({}, explore), { from: "array" }), []),
311
+ },
312
+ ], meta.getName()),
313
+ });
314
+ if (meta.maps.length)
315
+ if (meta.maps.every(function (elem) { return elem.key.any && elem.value.any; }))
316
+ binaries.push({
317
+ expression: (0, check_native_1.check_native)("Map")(input),
318
+ combined: false,
319
+ });
320
+ else
321
+ binaries.push({
322
+ combined: true,
323
+ expression: config.combiner(explore)("and")(input, [
324
+ {
325
+ combined: false,
326
+ expression: (0, check_native_1.check_native)("Map")(input),
327
+ },
328
+ {
329
+ combined: true,
330
+ expression: explore_map(project, config, importer)(input, meta.maps.map(function (m) { return [m.key, m.value]; }), __assign(__assign({}, explore), { from: "array" }), []),
331
+ },
332
+ ], meta.getName()),
333
+ });
334
+ return top.length && binaries.length
221
335
  ? config.combiner(explore)("and")(input, __spreadArray(__spreadArray([], __read(top), false), [
222
- config.combiner(explore)("or")(input, binaries, meta.getName()),
336
+ {
337
+ expression: config.combiner(explore)("or")(input, binaries, meta.getName()),
338
+ combined: true,
339
+ },
223
340
  ], false), meta.getName())
224
- : config.combiner(explore)("or")(input, binaries, meta.getName());
341
+ : binaries.length
342
+ ? config.combiner(explore)("or")(input, binaries, meta.getName())
343
+ : config.success;
225
344
  };
226
345
  }
227
346
  CheckerProgrammer.decode = decode;
228
- function decode_tuple(project, config, importer) {
347
+ function decode_tuple(project, config, importer, checkLength) {
229
348
  return function (input, tuple, explore, tagList) {
230
- var length = typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createPropertyAccessExpression(input, "length"), typescript_1.default.factory.createNumericLiteral(tuple.length));
231
- var binaries = tuple.map(function (meta, index) {
349
+ var binaries = tuple
350
+ .filter(function (meta) { return meta.rest === null; })
351
+ .map(function (meta, index) {
232
352
  return decode(project, config, importer)(typescript_1.default.factory.createElementAccessExpression(input, index), meta, __assign(__assign({}, explore), { from: "array", postfix: explore.postfix.length
233
353
  ? "".concat(explore.postfix.slice(0, -1), "[").concat(index, "]\"")
234
354
  : "[".concat(index, "]") }), tagList);
235
355
  });
236
- if (binaries.length === 0)
237
- return length;
238
- else
239
- return typescript_1.default.factory.createLogicalAnd(length, config.joiner.tuple(binaries));
356
+ var rest = tuple.length && tuple[tuple.length - 1].rest !== null
357
+ ? decode(project, config, importer, false)(typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.join(input, "slice"), undefined, [
358
+ typescript_1.default.factory.createNumericLiteral(tuple.length - 1),
359
+ ]), (function () {
360
+ var wrapper = Metadata_1.Metadata.initialize();
361
+ wrapper.arrays.push(tuple[tuple.length - 1].rest);
362
+ return wrapper;
363
+ })(), __assign(__assign({}, explore), { start: tuple.length - 1 }), tagList)
364
+ : null;
365
+ return config.combiner(explore)("and")(input, __spreadArray(__spreadArray(__spreadArray([], __read((checkLength && rest === null
366
+ ? [
367
+ {
368
+ combined: false,
369
+ expression: typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createPropertyAccessExpression(input, "length"), typescript_1.default.factory.createNumericLiteral(tuple.length)),
370
+ },
371
+ ]
372
+ : [])), false), __read((config.joiner.tuple
373
+ ? [
374
+ {
375
+ expression: config.joiner.tuple(binaries),
376
+ combined: true,
377
+ },
378
+ ]
379
+ : binaries.map(function (expression) { return ({
380
+ expression: expression,
381
+ combined: true,
382
+ }); }))), false), __read((rest !== null
383
+ ? [
384
+ {
385
+ expression: rest,
386
+ combined: true,
387
+ },
388
+ ]
389
+ : [])), false), "[".concat(tuple.map(function (t) { return t.getName(); }).join(", "), "]"));
240
390
  };
241
391
  }
242
- function decode_array(project, config, importer) {
392
+ function decode_array(project, config, importer, checkTupleLength) {
243
393
  return FeatureProgrammer_1.FeatureProgrammer.decode_array({
244
394
  trace: config.trace,
245
- decoder: decode(project, config, importer),
395
+ path: config.path,
396
+ decoder: decode(project, config, importer, checkTupleLength),
246
397
  }, importer, config.joiner.array);
247
398
  }
248
399
  function decode_object(config) {
@@ -254,14 +405,65 @@ var CheckerProgrammer;
254
405
  }
255
406
  CheckerProgrammer.decode_object = decode_object;
256
407
  var explore_array = function (project, config, importer) {
257
- return UnionExplorer_1.UnionExplorer.array(decode(project, config, importer), decode_array(project, config, importer), function () { return typescript_1.default.factory.createTrue(); }, function () { return typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createFalse()); });
408
+ return UnionExplorer_1.UnionExplorer.array({
409
+ checker: decode(project, config, importer),
410
+ decoder: decode_array(project, config, importer, true),
411
+ empty: config.success,
412
+ success: config.success,
413
+ failure: function (input, expected, explore) {
414
+ return typescript_1.default.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
415
+ },
416
+ });
417
+ };
418
+ var explore_set = function (project, config, importer) {
419
+ return UnionExplorer_1.UnionExplorer.set({
420
+ checker: decode(project, config, importer),
421
+ decoder: decode_array(project, config, importer, true),
422
+ empty: config.success,
423
+ success: config.success,
424
+ failure: function (input, expected, explore) {
425
+ return typescript_1.default.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
426
+ },
427
+ });
428
+ };
429
+ var explore_map = function (project, config, importer) {
430
+ return UnionExplorer_1.UnionExplorer.map({
431
+ checker: function (input, entry, explore) {
432
+ var func = decode(project, config, importer);
433
+ return typescript_1.default.factory.createLogicalAnd(func(typescript_1.default.factory.createElementAccessExpression(input, 0), entry[0], __assign(__assign({}, explore), { postfix: "".concat(explore.postfix, "[0]") }), []), func(typescript_1.default.factory.createElementAccessExpression(input, 1), entry[1], __assign(__assign({}, explore), { postfix: "".concat(explore.postfix, "[1]") }), []));
434
+ },
435
+ decoder: function (input, target, explore) {
436
+ return decode_array(project, config, importer, false)(input, Metadata_1.Metadata.create({
437
+ any: false,
438
+ nullable: false,
439
+ required: true,
440
+ functional: false,
441
+ resolved: null,
442
+ constants: [],
443
+ atomics: [],
444
+ templates: [],
445
+ rest: null,
446
+ arrays: [],
447
+ tuples: [target],
448
+ objects: [],
449
+ natives: [],
450
+ sets: [],
451
+ maps: [],
452
+ }), explore, []);
453
+ },
454
+ empty: config.success,
455
+ success: config.success,
456
+ failure: function (input, expected, explore) {
457
+ return typescript_1.default.factory.createReturnStatement(config.joiner.failure(input, expected, explore));
458
+ },
459
+ });
258
460
  };
259
461
  var explore_objects = function (config) {
260
462
  var objector = decode_object(config);
261
463
  return function (input, meta, explore) {
262
464
  if (meta.objects.length === 1)
263
465
  return objector(input, meta.objects[0], explore);
264
- return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("".concat(config.unioners, "[").concat(meta.union_index, "]")), undefined, FeatureProgrammer_1.FeatureProgrammer.get_object_arguments(config.trace, explore)(input));
466
+ return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("".concat(config.unioners).concat(meta.union_index)), undefined, FeatureProgrammer_1.FeatureProgrammer.get_object_arguments(config)(explore)(input));
265
467
  };
266
468
  };
267
469
  })(CheckerProgrammer = exports.CheckerProgrammer || (exports.CheckerProgrammer = {}));
@@ -272,7 +474,10 @@ var create_add = function (binaries) {
272
474
  var factory = exact
273
475
  ? typescript_1.default.factory.createStrictEquality
274
476
  : typescript_1.default.factory.createStrictInequality;
275
- binaries.push(factory(left, right));
477
+ binaries.push({
478
+ expression: factory(left, right),
479
+ combined: false,
480
+ });
276
481
  };
277
482
  };
278
483
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CheckerProgrammer.js","sourceRoot":"","sources":["../../src/programmers/CheckerProgrammer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CheckerProgrammer.js","sourceRoot":"","sources":["../../src/programmers/CheckerProgrammer.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export declare namespace FeatureProgrammer {
10
10
  interface IConfig {
11
11
  functors: string;
12
12
  unioners: string;
13
+ path: boolean;
13
14
  trace: boolean;
14
15
  initializer: Initializer;
15
16
  decoder: Decoder<Metadata>;
@@ -22,11 +23,14 @@ export declare namespace FeatureProgrammer {
22
23
  decoder: Decoder<MetadataObject>;
23
24
  joiner: ObjectJoiner;
24
25
  unionizer: Decoder<MetadataObject[]>;
25
- failure: (expression: ts.Expression, targets: MetadataObject[]) => ts.Statement;
26
+ failure: (value: ts.Expression, expected: string, explore?: IExplore) => ts.Statement;
27
+ is?: (exp: ts.Expression) => ts.Expression;
28
+ required?: (exp: ts.Expression) => ts.Expression;
29
+ full?: (condition: ts.Expression) => (input: ts.Expression, expected: string, explore: IExplore) => ts.Expression;
26
30
  }
27
31
  interface IGenerator {
28
- functors(col: MetadataCollection): ts.VariableDeclaration | null;
29
- unioners(col: MetadataCollection): ts.VariableDeclaration | null;
32
+ functors(col: MetadataCollection): ts.VariableStatement[];
33
+ unioners(col: MetadataCollection): ts.VariableStatement[];
30
34
  }
31
35
  }
32
36
  interface IExplore {
@@ -34,6 +38,7 @@ export declare namespace FeatureProgrammer {
34
38
  source: "top" | "object";
35
39
  from: "top" | "array" | "object";
36
40
  postfix: string;
41
+ start?: number;
37
42
  }
38
43
  interface Initializer {
39
44
  (project: IProject, type: ts.Type): [MetadataCollection, Metadata];
@@ -44,10 +49,10 @@ export declare namespace FeatureProgrammer {
44
49
  interface ObjectJoiner {
45
50
  (entries: IExpressionEntry[], parent: MetadataObject): ts.ConciseBody;
46
51
  }
47
- const generate: (project: IProject, config: IConfig, addition: (collection: MetadataCollection) => ts.Statement[] | undefined) => (type: ts.Type) => ts.ArrowFunction;
48
- function generate_functors(config: IConfig): (collection: MetadataCollection) => ts.VariableDeclaration | null;
49
- function generate_unioners(config: IConfig): (collection: MetadataCollection) => ts.VariableDeclaration | null;
50
- function decode_array(config: Pick<IConfig, "trace" | "decoder">, importer: FunctionImporter, combiner: (input: ts.Expression, arrow: ts.ArrowFunction, tags: IMetadataTag[]) => ts.Expression): (input: ts.Expression, meta: Metadata, explore: IExplore, tags: IMetadataTag[]) => ts.Expression;
51
- const decode_object: (config: Pick<IConfig, "trace" | "functors">) => (input: ts.Expression, obj: MetadataObject, explore: IExplore) => ts.CallExpression;
52
- const get_object_arguments: (trace: boolean, explore: FeatureProgrammer.IExplore) => (input: ts.Expression) => ts.Expression[];
52
+ const generate: (project: IProject, config: IConfig, importer: FunctionImporter, addition: (collection: MetadataCollection) => ts.Statement[] | undefined) => (type: ts.Type) => ts.ArrowFunction;
53
+ const generate_functors: (config: IConfig, importer: FunctionImporter) => (collection: MetadataCollection) => ts.VariableStatement[];
54
+ const generate_unioners: (config: IConfig) => (collection: MetadataCollection) => ts.VariableStatement[];
55
+ function decode_array(config: Pick<IConfig, "trace" | "path" | "decoder">, importer: FunctionImporter, combiner: (input: ts.Expression, arrow: ts.ArrowFunction, tags: IMetadataTag[]) => ts.Expression): (input: ts.Expression, meta: Metadata, explore: IExplore, tags: IMetadataTag[]) => ts.Expression;
56
+ const decode_object: (config: Pick<IConfig, "trace" | "path" | "functors">) => (input: ts.Expression, obj: MetadataObject, explore: IExplore) => ts.CallExpression;
57
+ const get_object_arguments: (config: Pick<IConfig, "path" | "trace">) => (explore: FeatureProgrammer.IExplore) => (input: ts.Expression) => ts.Expression[];
53
58
  }