typia 3.3.12

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 (341) hide show
  1. package/CODE_OF_CONDUCT.md +133 -0
  2. package/CONTRIBUTING.md +104 -0
  3. package/LICENSE +21 -0
  4. package/README.md +572 -0
  5. package/lib/IValidation.d.ts +11 -0
  6. package/lib/IValidation.js +3 -0
  7. package/lib/IValidation.js.map +1 -0
  8. package/lib/TypeGuardError.d.ts +16 -0
  9. package/lib/TypeGuardError.js +39 -0
  10. package/lib/TypeGuardError.js.map +1 -0
  11. package/lib/factories/CommentFactory.d.ts +4 -0
  12. package/lib/factories/CommentFactory.js +14 -0
  13. package/lib/factories/CommentFactory.js.map +1 -0
  14. package/lib/factories/ExpressionFactory.d.ts +6 -0
  15. package/lib/factories/ExpressionFactory.js +30 -0
  16. package/lib/factories/ExpressionFactory.js.map +1 -0
  17. package/lib/factories/IdentifierFactory.d.ts +7 -0
  18. package/lib/factories/IdentifierFactory.js +35 -0
  19. package/lib/factories/IdentifierFactory.js.map +1 -0
  20. package/lib/factories/LiteralFactory.d.ts +4 -0
  21. package/lib/factories/LiteralFactory.js +67 -0
  22. package/lib/factories/LiteralFactory.js.map +1 -0
  23. package/lib/factories/MetadataCollection.d.ts +20 -0
  24. package/lib/factories/MetadataCollection.js +141 -0
  25. package/lib/factories/MetadataCollection.js.map +1 -0
  26. package/lib/factories/MetadataFactory.d.ts +10 -0
  27. package/lib/factories/MetadataFactory.js +47 -0
  28. package/lib/factories/MetadataFactory.js.map +1 -0
  29. package/lib/factories/MetadataTagFactory.d.ts +6 -0
  30. package/lib/factories/MetadataTagFactory.js +317 -0
  31. package/lib/factories/MetadataTagFactory.js.map +1 -0
  32. package/lib/factories/StatementFactory.d.ts +7 -0
  33. package/lib/factories/StatementFactory.js +31 -0
  34. package/lib/factories/StatementFactory.js.map +1 -0
  35. package/lib/factories/TemplateFactory.d.ts +4 -0
  36. package/lib/factories/TemplateFactory.js +41 -0
  37. package/lib/factories/TemplateFactory.js.map +1 -0
  38. package/lib/factories/TypeFactory.d.ts +6 -0
  39. package/lib/factories/TypeFactory.js +71 -0
  40. package/lib/factories/TypeFactory.js.map +1 -0
  41. package/lib/factories/ValueFactory.d.ts +8 -0
  42. package/lib/factories/ValueFactory.js +23 -0
  43. package/lib/factories/ValueFactory.js.map +1 -0
  44. package/lib/factories/internal/MetadataHelper.d.ts +4 -0
  45. package/lib/factories/internal/MetadataHelper.js +17 -0
  46. package/lib/factories/internal/MetadataHelper.js.map +1 -0
  47. package/lib/factories/internal/emplace_metadata_object.d.ts +5 -0
  48. package/lib/factories/internal/emplace_metadata_object.js +149 -0
  49. package/lib/factories/internal/emplace_metadata_object.js.map +1 -0
  50. package/lib/factories/internal/explore_metadata.d.ts +5 -0
  51. package/lib/factories/internal/explore_metadata.js +88 -0
  52. package/lib/factories/internal/explore_metadata.js.map +1 -0
  53. package/lib/factories/internal/iterate_metadata.d.ts +5 -0
  54. package/lib/factories/internal/iterate_metadata.js +37 -0
  55. package/lib/factories/internal/iterate_metadata.js.map +1 -0
  56. package/lib/factories/internal/iterate_metadata_array.d.ts +5 -0
  57. package/lib/factories/internal/iterate_metadata_array.js +22 -0
  58. package/lib/factories/internal/iterate_metadata_array.js.map +1 -0
  59. package/lib/factories/internal/iterate_metadata_atomic.d.ts +3 -0
  60. package/lib/factories/internal/iterate_metadata_atomic.js +73 -0
  61. package/lib/factories/internal/iterate_metadata_atomic.js.map +1 -0
  62. package/lib/factories/internal/iterate_metadata_coalesce.d.ts +3 -0
  63. package/lib/factories/internal/iterate_metadata_coalesce.js +35 -0
  64. package/lib/factories/internal/iterate_metadata_coalesce.js.map +1 -0
  65. package/lib/factories/internal/iterate_metadata_constant.d.ts +4 -0
  66. package/lib/factories/internal/iterate_metadata_constant.js +40 -0
  67. package/lib/factories/internal/iterate_metadata_constant.js.map +1 -0
  68. package/lib/factories/internal/iterate_metadata_object.d.ts +5 -0
  69. package/lib/factories/internal/iterate_metadata_object.js +38 -0
  70. package/lib/factories/internal/iterate_metadata_object.js.map +1 -0
  71. package/lib/factories/internal/iterate_metadata_resolve.d.ts +5 -0
  72. package/lib/factories/internal/iterate_metadata_resolve.js +24 -0
  73. package/lib/factories/internal/iterate_metadata_resolve.js.map +1 -0
  74. package/lib/factories/internal/iterate_metadata_template.d.ts +5 -0
  75. package/lib/factories/internal/iterate_metadata_template.js +33 -0
  76. package/lib/factories/internal/iterate_metadata_template.js.map +1 -0
  77. package/lib/factories/internal/iterate_metadata_tuple.d.ts +5 -0
  78. package/lib/factories/internal/iterate_metadata_tuple.js +27 -0
  79. package/lib/factories/internal/iterate_metadata_tuple.js.map +1 -0
  80. package/lib/factories/internal/iterate_metadata_union.d.ts +5 -0
  81. package/lib/factories/internal/iterate_metadata_union.js +82 -0
  82. package/lib/factories/internal/iterate_metadata_union.js.map +1 -0
  83. package/lib/functional/$is_email.d.ts +1 -0
  84. package/lib/functional/$is_email.js +9 -0
  85. package/lib/functional/$is_email.js.map +1 -0
  86. package/lib/functional/$is_ipv4.d.ts +1 -0
  87. package/lib/functional/$is_ipv4.js +9 -0
  88. package/lib/functional/$is_ipv4.js.map +1 -0
  89. package/lib/functional/$is_ipv6.d.ts +1 -0
  90. package/lib/functional/$is_ipv6.js +9 -0
  91. package/lib/functional/$is_ipv6.js.map +1 -0
  92. package/lib/functional/$is_url.d.ts +1 -0
  93. package/lib/functional/$is_url.js +9 -0
  94. package/lib/functional/$is_url.js.map +1 -0
  95. package/lib/functional/$is_uuid.d.ts +1 -0
  96. package/lib/functional/$is_uuid.js +9 -0
  97. package/lib/functional/$is_uuid.js.map +1 -0
  98. package/lib/functional/$join.d.ts +1 -0
  99. package/lib/functional/$join.js +52 -0
  100. package/lib/functional/$join.js.map +1 -0
  101. package/lib/functional/$number.d.ts +1 -0
  102. package/lib/functional/$number.js +23 -0
  103. package/lib/functional/$number.js.map +1 -0
  104. package/lib/functional/$string.d.ts +1 -0
  105. package/lib/functional/$string.js +36 -0
  106. package/lib/functional/$string.js.map +1 -0
  107. package/lib/functional/$tail.d.ts +1 -0
  108. package/lib/functional/$tail.js +8 -0
  109. package/lib/functional/$tail.js.map +1 -0
  110. package/lib/index.d.ts +3 -0
  111. package/lib/index.js +32 -0
  112. package/lib/index.js.map +1 -0
  113. package/lib/metadata/IJsDocTagInfo.d.ts +10 -0
  114. package/lib/metadata/IJsDocTagInfo.js +3 -0
  115. package/lib/metadata/IJsDocTagInfo.js.map +1 -0
  116. package/lib/metadata/IMetadata.d.ts +15 -0
  117. package/lib/metadata/IMetadata.js +3 -0
  118. package/lib/metadata/IMetadata.js.map +1 -0
  119. package/lib/metadata/IMetadataConstant.d.ts +8 -0
  120. package/lib/metadata/IMetadataConstant.js +3 -0
  121. package/lib/metadata/IMetadataConstant.js.map +1 -0
  122. package/lib/metadata/IMetadataObject.d.ts +8 -0
  123. package/lib/metadata/IMetadataObject.js +3 -0
  124. package/lib/metadata/IMetadataObject.js.map +1 -0
  125. package/lib/metadata/IMetadataProperty.d.ts +10 -0
  126. package/lib/metadata/IMetadataProperty.js +3 -0
  127. package/lib/metadata/IMetadataProperty.js.map +1 -0
  128. package/lib/metadata/IMetadataTag.d.ts +74 -0
  129. package/lib/metadata/IMetadataTag.js +3 -0
  130. package/lib/metadata/IMetadataTag.js.map +1 -0
  131. package/lib/metadata/Metadata.d.ts +33 -0
  132. package/lib/metadata/Metadata.js +568 -0
  133. package/lib/metadata/Metadata.js.map +1 -0
  134. package/lib/metadata/MetadataConstant.d.ts +2 -0
  135. package/lib/metadata/MetadataConstant.js +3 -0
  136. package/lib/metadata/MetadataConstant.js.map +1 -0
  137. package/lib/metadata/MetadataObject.d.ts +15 -0
  138. package/lib/metadata/MetadataObject.js +64 -0
  139. package/lib/metadata/MetadataObject.js.map +1 -0
  140. package/lib/metadata/MetadataProperty.d.ts +16 -0
  141. package/lib/metadata/MetadataProperty.js +37 -0
  142. package/lib/metadata/MetadataProperty.js.map +1 -0
  143. package/lib/module.d.ts +382 -0
  144. package/lib/module.js +187 -0
  145. package/lib/module.js.map +1 -0
  146. package/lib/programmers/ApplicationProgrammer.d.ts +11 -0
  147. package/lib/programmers/ApplicationProgrammer.js +48 -0
  148. package/lib/programmers/ApplicationProgrammer.js.map +1 -0
  149. package/lib/programmers/AssertProgrammer.d.ts +5 -0
  150. package/lib/programmers/AssertProgrammer.js +79 -0
  151. package/lib/programmers/AssertProgrammer.js.map +1 -0
  152. package/lib/programmers/CheckerProgrammer.d.ts +41 -0
  153. package/lib/programmers/CheckerProgrammer.js +279 -0
  154. package/lib/programmers/CheckerProgrammer.js.map +1 -0
  155. package/lib/programmers/FeatureProgrammer.d.ts +53 -0
  156. package/lib/programmers/FeatureProgrammer.js +211 -0
  157. package/lib/programmers/FeatureProgrammer.js.map +1 -0
  158. package/lib/programmers/IsProgrammer.d.ts +21 -0
  159. package/lib/programmers/IsProgrammer.js +78 -0
  160. package/lib/programmers/IsProgrammer.js.map +1 -0
  161. package/lib/programmers/StringifyProgrammer.d.ts +5 -0
  162. package/lib/programmers/StringifyProgrammer.js +433 -0
  163. package/lib/programmers/StringifyProgrammer.js.map +1 -0
  164. package/lib/programmers/ValidateProgrammer.d.ts +5 -0
  165. package/lib/programmers/ValidateProgrammer.js +96 -0
  166. package/lib/programmers/ValidateProgrammer.js.map +1 -0
  167. package/lib/programmers/helpers/FunctionImporeter.d.ts +9 -0
  168. package/lib/programmers/helpers/FunctionImporeter.js +58 -0
  169. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -0
  170. package/lib/programmers/helpers/IExpressionEntry.d.ts +8 -0
  171. package/lib/programmers/helpers/IExpressionEntry.js +3 -0
  172. package/lib/programmers/helpers/IExpressionEntry.js.map +1 -0
  173. package/lib/programmers/helpers/OptionPredicator.d.ts +5 -0
  174. package/lib/programmers/helpers/OptionPredicator.js +17 -0
  175. package/lib/programmers/helpers/OptionPredicator.js.map +1 -0
  176. package/lib/programmers/helpers/StringifyJoinder.d.ts +8 -0
  177. package/lib/programmers/helpers/StringifyJoinder.js +95 -0
  178. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -0
  179. package/lib/programmers/helpers/StringifyPredicator.d.ts +5 -0
  180. package/lib/programmers/helpers/StringifyPredicator.js +19 -0
  181. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -0
  182. package/lib/programmers/helpers/UnionExplorer.d.ts +13 -0
  183. package/lib/programmers/helpers/UnionExplorer.js +117 -0
  184. package/lib/programmers/helpers/UnionExplorer.js.map +1 -0
  185. package/lib/programmers/helpers/UnionPredicator.d.ts +11 -0
  186. package/lib/programmers/helpers/UnionPredicator.js +111 -0
  187. package/lib/programmers/helpers/UnionPredicator.js.map +1 -0
  188. package/lib/programmers/internal/application_array.d.ts +1 -0
  189. package/lib/programmers/internal/application_array.js +63 -0
  190. package/lib/programmers/internal/application_array.js.map +1 -0
  191. package/lib/programmers/internal/application_boolean.d.ts +1 -0
  192. package/lib/programmers/internal/application_boolean.js +18 -0
  193. package/lib/programmers/internal/application_boolean.js.map +1 -0
  194. package/lib/programmers/internal/application_constant.d.ts +1 -0
  195. package/lib/programmers/internal/application_constant.js +26 -0
  196. package/lib/programmers/internal/application_constant.js.map +1 -0
  197. package/lib/programmers/internal/application_default.d.ts +1 -0
  198. package/lib/programmers/internal/application_default.js +40 -0
  199. package/lib/programmers/internal/application_default.js.map +1 -0
  200. package/lib/programmers/internal/application_default_string.d.ts +1 -0
  201. package/lib/programmers/internal/application_default_string.js +61 -0
  202. package/lib/programmers/internal/application_default_string.js.map +1 -0
  203. package/lib/programmers/internal/application_number.d.ts +1 -0
  204. package/lib/programmers/internal/application_number.js +86 -0
  205. package/lib/programmers/internal/application_number.js.map +1 -0
  206. package/lib/programmers/internal/application_object.d.ts +1 -0
  207. package/lib/programmers/internal/application_object.js +96 -0
  208. package/lib/programmers/internal/application_object.js.map +1 -0
  209. package/lib/programmers/internal/application_schema.d.ts +1 -0
  210. package/lib/programmers/internal/application_schema.js +246 -0
  211. package/lib/programmers/internal/application_schema.js.map +1 -0
  212. package/lib/programmers/internal/application_string.d.ts +1 -0
  213. package/lib/programmers/internal/application_string.js +66 -0
  214. package/lib/programmers/internal/application_string.js.map +1 -0
  215. package/lib/programmers/internal/application_templates.d.ts +1 -0
  216. package/lib/programmers/internal/application_templates.js +24 -0
  217. package/lib/programmers/internal/application_templates.js.map +1 -0
  218. package/lib/programmers/internal/application_tuple.d.ts +1 -0
  219. package/lib/programmers/internal/application_tuple.js +24 -0
  220. package/lib/programmers/internal/application_tuple.js.map +1 -0
  221. package/lib/programmers/internal/check_array.d.ts +1 -0
  222. package/lib/programmers/internal/check_array.js +52 -0
  223. package/lib/programmers/internal/check_array.js.map +1 -0
  224. package/lib/programmers/internal/check_dynamic_properties.d.ts +1 -0
  225. package/lib/programmers/internal/check_dynamic_properties.js +111 -0
  226. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -0
  227. package/lib/programmers/internal/check_everything.d.ts +1 -0
  228. package/lib/programmers/internal/check_everything.js +17 -0
  229. package/lib/programmers/internal/check_everything.js.map +1 -0
  230. package/lib/programmers/internal/check_length.d.ts +1 -0
  231. package/lib/programmers/internal/check_length.js +28 -0
  232. package/lib/programmers/internal/check_length.js.map +1 -0
  233. package/lib/programmers/internal/check_number.d.ts +1 -0
  234. package/lib/programmers/internal/check_number.js +124 -0
  235. package/lib/programmers/internal/check_number.js.map +1 -0
  236. package/lib/programmers/internal/check_object.d.ts +1 -0
  237. package/lib/programmers/internal/check_object.js +35 -0
  238. package/lib/programmers/internal/check_object.js.map +1 -0
  239. package/lib/programmers/internal/check_string.d.ts +1 -0
  240. package/lib/programmers/internal/check_string.js +45 -0
  241. package/lib/programmers/internal/check_string.js.map +1 -0
  242. package/lib/programmers/internal/check_string_tags.d.ts +1 -0
  243. package/lib/programmers/internal/check_string_tags.js +51 -0
  244. package/lib/programmers/internal/check_string_tags.js.map +1 -0
  245. package/lib/programmers/internal/check_template.d.ts +1 -0
  246. package/lib/programmers/internal/check_template.js +50 -0
  247. package/lib/programmers/internal/check_template.js.map +1 -0
  248. package/lib/programmers/internal/decode_union_object.d.ts +1 -0
  249. package/lib/programmers/internal/decode_union_object.js +56 -0
  250. package/lib/programmers/internal/decode_union_object.js.map +1 -0
  251. package/lib/programmers/internal/metadata_to_pattern.d.ts +2 -0
  252. package/lib/programmers/internal/metadata_to_pattern.js +62 -0
  253. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -0
  254. package/lib/programmers/internal/stringify_dynamic_properties.d.ts +1 -0
  255. package/lib/programmers/internal/stringify_dynamic_properties.js +76 -0
  256. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -0
  257. package/lib/programmers/internal/stringify_regular_properties.d.ts +1 -0
  258. package/lib/programmers/internal/stringify_regular_properties.js +78 -0
  259. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -0
  260. package/lib/programmers/internal/template_to_pattern.d.ts +1 -0
  261. package/lib/programmers/internal/template_to_pattern.js +13 -0
  262. package/lib/programmers/internal/template_to_pattern.js.map +1 -0
  263. package/lib/schemas/IJsonApplication.d.ts +8 -0
  264. package/lib/schemas/IJsonApplication.js +3 -0
  265. package/lib/schemas/IJsonApplication.js.map +1 -0
  266. package/lib/schemas/IJsonComponents.d.ts +19 -0
  267. package/lib/schemas/IJsonComponents.js +3 -0
  268. package/lib/schemas/IJsonComponents.js.map +1 -0
  269. package/lib/schemas/IJsonSchema.d.ts +62 -0
  270. package/lib/schemas/IJsonSchema.js +3 -0
  271. package/lib/schemas/IJsonSchema.js.map +1 -0
  272. package/lib/transform.d.ts +3 -0
  273. package/lib/transform.js +21 -0
  274. package/lib/transform.js.map +1 -0
  275. package/lib/transformers/CallExpressionTransformer.d.ts +5 -0
  276. package/lib/transformers/CallExpressionTransformer.js +45 -0
  277. package/lib/transformers/CallExpressionTransformer.js.map +1 -0
  278. package/lib/transformers/ExpressionWithArgumentTransformer.d.ts +0 -0
  279. package/lib/transformers/ExpressionWithArgumentTransformer.js +2 -0
  280. package/lib/transformers/ExpressionWithArgumentTransformer.js.map +1 -0
  281. package/lib/transformers/FileTransformer.d.ts +5 -0
  282. package/lib/transformers/FileTransformer.js +34 -0
  283. package/lib/transformers/FileTransformer.js.map +1 -0
  284. package/lib/transformers/IProject.d.ts +9 -0
  285. package/lib/transformers/IProject.js +3 -0
  286. package/lib/transformers/IProject.js.map +1 -0
  287. package/lib/transformers/ITransformOptions.d.ts +4 -0
  288. package/lib/transformers/ITransformOptions.js +3 -0
  289. package/lib/transformers/ITransformOptions.js.map +1 -0
  290. package/lib/transformers/NodeTransformer.d.ts +5 -0
  291. package/lib/transformers/NodeTransformer.js +18 -0
  292. package/lib/transformers/NodeTransformer.js.map +1 -0
  293. package/lib/transformers/features/ApplicationTransformer.d.ts +5 -0
  294. package/lib/transformers/features/ApplicationTransformer.js +63 -0
  295. package/lib/transformers/features/ApplicationTransformer.js.map +1 -0
  296. package/lib/transformers/features/AssertTransformer.d.ts +5 -0
  297. package/lib/transformers/features/AssertTransformer.js +30 -0
  298. package/lib/transformers/features/AssertTransformer.js.map +1 -0
  299. package/lib/transformers/features/CreateTransformer.d.ts +5 -0
  300. package/lib/transformers/features/CreateTransformer.js +29 -0
  301. package/lib/transformers/features/CreateTransformer.js.map +1 -0
  302. package/lib/transformers/features/IsTransformer.d.ts +5 -0
  303. package/lib/transformers/features/IsTransformer.js +30 -0
  304. package/lib/transformers/features/IsTransformer.js.map +1 -0
  305. package/lib/transformers/features/StringifyTransformer.d.ts +5 -0
  306. package/lib/transformers/features/StringifyTransformer.js +23 -0
  307. package/lib/transformers/features/StringifyTransformer.js.map +1 -0
  308. package/lib/transformers/features/ValidateTransformer.d.ts +5 -0
  309. package/lib/transformers/features/ValidateTransformer.js +30 -0
  310. package/lib/transformers/features/ValidateTransformer.js.map +1 -0
  311. package/lib/typings/Atomic.d.ts +11 -0
  312. package/lib/typings/Atomic.js +3 -0
  313. package/lib/typings/Atomic.js.map +1 -0
  314. package/lib/typings/ClassProperties.d.ts +4 -0
  315. package/lib/typings/ClassProperties.js +3 -0
  316. package/lib/typings/ClassProperties.js.map +1 -0
  317. package/lib/typings/OmitNever.d.ts +2 -0
  318. package/lib/typings/OmitNever.js +3 -0
  319. package/lib/typings/OmitNever.js.map +1 -0
  320. package/lib/typings/SpecialFields.d.ts +3 -0
  321. package/lib/typings/SpecialFields.js +3 -0
  322. package/lib/typings/SpecialFields.js.map +1 -0
  323. package/lib/typings/Writable.d.ts +5 -0
  324. package/lib/typings/Writable.js +8 -0
  325. package/lib/typings/Writable.js.map +1 -0
  326. package/lib/utils/ArrayUtil.d.ts +8 -0
  327. package/lib/utils/ArrayUtil.js +69 -0
  328. package/lib/utils/ArrayUtil.js.map +1 -0
  329. package/lib/utils/Escaper.d.ts +3 -0
  330. package/lib/utils/Escaper.js +52 -0
  331. package/lib/utils/Escaper.js.map +1 -0
  332. package/lib/utils/MapUtil.d.ts +3 -0
  333. package/lib/utils/MapUtil.js +16 -0
  334. package/lib/utils/MapUtil.js.map +1 -0
  335. package/lib/utils/PatternUtil.d.ts +7 -0
  336. package/lib/utils/PatternUtil.js +59 -0
  337. package/lib/utils/PatternUtil.js.map +1 -0
  338. package/lib/utils/Singleton.d.ts +6 -0
  339. package/lib/utils/Singleton.js +47 -0
  340. package/lib/utils/Singleton.js.map +1 -0
  341. package/package.json +78 -0
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
37
+ };
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.CheckerProgrammer = void 0;
54
+ var typescript_1 = __importDefault(require("typescript"));
55
+ var ExpressionFactory_1 = require("../factories/ExpressionFactory");
56
+ var MetadataCollection_1 = require("../factories/MetadataCollection");
57
+ var MetadataFactory_1 = require("../factories/MetadataFactory");
58
+ var ValueFactory_1 = require("../factories/ValueFactory");
59
+ var FeatureProgrammer_1 = require("./FeatureProgrammer");
60
+ var OptionPredicator_1 = require("./helpers/OptionPredicator");
61
+ var UnionExplorer_1 = require("./helpers/UnionExplorer");
62
+ var check_array_1 = require("./internal/check_array");
63
+ var check_number_1 = require("./internal/check_number");
64
+ var check_string_1 = require("./internal/check_string");
65
+ var check_template_1 = require("./internal/check_template");
66
+ var decode_union_object_1 = require("./internal/decode_union_object");
67
+ var CheckerProgrammer;
68
+ (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
+ });
74
+ }
75
+ CheckerProgrammer.generate = generate;
76
+ CheckerProgrammer.generate_functors = function (project, config, importer) { return FeatureProgrammer_1.FeatureProgrammer.generate_functors(CONFIG(project, config, importer)); };
77
+ CheckerProgrammer.generate_unioners = function (project, config, importer) {
78
+ return FeatureProgrammer_1.FeatureProgrammer.generate_unioners(CONFIG(project, __assign(__assign({}, config), { numeric: false }), importer));
79
+ };
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
+ function CONFIG(project, config, importer) {
88
+ var output = {
89
+ trace: config.trace,
90
+ functors: config.functors,
91
+ unioners: config.unioners,
92
+ initializer: function (_a, type) {
93
+ var checker = _a.checker;
94
+ var collection = new MetadataCollection_1.MetadataCollection();
95
+ var meta = MetadataFactory_1.MetadataFactory.generate(checker, collection, type, {
96
+ resolve: false,
97
+ constant: true,
98
+ });
99
+ return [collection, meta];
100
+ },
101
+ decoder: decode(project, config, importer),
102
+ objector: {
103
+ checker: decode(project, config, importer),
104
+ decoder: decode_object(config),
105
+ joiner: config.joiner.object,
106
+ unionizer: config.equals
107
+ ? (0, decode_union_object_1.decode_union_object)(decode_object(config))(function (input, obj, explore) {
108
+ 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());
111
+ })
112
+ : 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(" | "), ")"));
116
+ },
117
+ failure: function () {
118
+ return typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createFalse());
119
+ },
120
+ },
121
+ };
122
+ if (config.numeric === true)
123
+ output.generator = {
124
+ unioners: FeatureProgrammer_1.FeatureProgrammer.generate_unioners(CONFIG(project, __assign(__assign({}, config), { numeric: false }), importer)),
125
+ };
126
+ return output;
127
+ }
128
+ function decode(project, config, importer) {
129
+ return function (input, meta, explore, tags) {
130
+ var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
131
+ if (meta.any)
132
+ return ValueFactory_1.ValueFactory.BOOLEAN(true);
133
+ var top = [];
134
+ var binaries = [];
135
+ var add = create_add(binaries)(input);
136
+ var getConstantValue = function (value) {
137
+ return typeof value === "string"
138
+ ? typescript_1.default.factory.createStringLiteral(value)
139
+ : typescript_1.default.factory.createIdentifier(value.toString());
140
+ };
141
+ var checkOptional = meta.empty() || meta.isUnionBucket();
142
+ if (checkOptional || meta.nullable || meta.objects.length)
143
+ (meta.nullable ? add : create_add(top)(input))(meta.nullable, ValueFactory_1.ValueFactory.NULL());
144
+ if (checkOptional || !meta.required)
145
+ (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));
150
+ try {
151
+ for (var _e = __values(meta.constants), _f = _e.next(); !_f.done; _f = _e.next()) {
152
+ var constant = _f.value;
153
+ 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;
156
+ add(true, getConstantValue(val));
157
+ }
158
+ }
159
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
160
+ finally {
161
+ try {
162
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
163
+ }
164
+ finally { if (e_2) throw e_2.error; }
165
+ }
166
+ }
167
+ }
168
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
169
+ finally {
170
+ try {
171
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
172
+ }
173
+ finally { if (e_1) throw e_1.error; }
174
+ }
175
+ try {
176
+ for (var _j = __values(meta.atomics), _k = _j.next(); !_k.done; _k = _j.next()) {
177
+ var type = _k.value;
178
+ if (type === "number")
179
+ binaries.push((0, check_number_1.check_number)(project, config.numeric)(input, tags));
180
+ else if (type === "string")
181
+ binaries.push((0, check_string_1.check_string)(importer)(input, tags));
182
+ else
183
+ add(true, typescript_1.default.factory.createStringLiteral(type), ValueFactory_1.ValueFactory.TYPEOF(input));
184
+ }
185
+ }
186
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
187
+ finally {
188
+ try {
189
+ if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
190
+ }
191
+ finally { if (e_3) throw e_3.error; }
192
+ }
193
+ if (meta.templates.length)
194
+ binaries.push((0, check_template_1.check_template)(importer)(input, meta.templates, tags));
195
+ if (meta.tuples.length > 0) {
196
+ var inner = [];
197
+ 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));
201
+ }
202
+ }
203
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
204
+ finally {
205
+ try {
206
+ if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
207
+ }
208
+ finally { if (e_4) throw e_4.error; }
209
+ }
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
+ })));
215
+ }
216
+ 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)));
218
+ 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
221
+ ? config.combiner(explore)("and")(input, __spreadArray(__spreadArray([], __read(top), false), [
222
+ config.combiner(explore)("or")(input, binaries, meta.getName()),
223
+ ], false), meta.getName())
224
+ : config.combiner(explore)("or")(input, binaries, meta.getName());
225
+ };
226
+ }
227
+ CheckerProgrammer.decode = decode;
228
+ function decode_tuple(project, config, importer) {
229
+ 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) {
232
+ return decode(project, config, importer)(typescript_1.default.factory.createElementAccessExpression(input, index), meta, __assign(__assign({}, explore), { from: "array", postfix: explore.postfix.length
233
+ ? "".concat(explore.postfix.slice(0, -1), "[").concat(index, "]\"")
234
+ : "[".concat(index, "]") }), tagList);
235
+ });
236
+ if (binaries.length === 0)
237
+ return length;
238
+ else
239
+ return typescript_1.default.factory.createLogicalAnd(length, config.joiner.tuple(binaries));
240
+ };
241
+ }
242
+ function decode_array(project, config, importer) {
243
+ return FeatureProgrammer_1.FeatureProgrammer.decode_array({
244
+ trace: config.trace,
245
+ decoder: decode(project, config, importer),
246
+ }, importer, config.joiner.array);
247
+ }
248
+ function decode_object(config) {
249
+ var func = FeatureProgrammer_1.FeatureProgrammer.decode_object(config);
250
+ return function (input, obj, explore) {
251
+ obj.validated = true;
252
+ return func(input, obj, explore);
253
+ };
254
+ }
255
+ CheckerProgrammer.decode_object = decode_object;
256
+ 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()); });
258
+ };
259
+ var explore_objects = function (config) {
260
+ var objector = decode_object(config);
261
+ return function (input, meta, explore) {
262
+ if (meta.objects.length === 1)
263
+ 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));
265
+ };
266
+ };
267
+ })(CheckerProgrammer = exports.CheckerProgrammer || (exports.CheckerProgrammer = {}));
268
+ var create_add = function (binaries) {
269
+ return function (defaultInput) {
270
+ return function (exact, left, right) {
271
+ if (right === void 0) { right = defaultInput; }
272
+ var factory = exact
273
+ ? typescript_1.default.factory.createStrictEquality
274
+ : typescript_1.default.factory.createStrictInequality;
275
+ binaries.push(factory(left, right));
276
+ };
277
+ };
278
+ };
279
+ //# sourceMappingURL=CheckerProgrammer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckerProgrammer.js","sourceRoot":"","sources":["../../src/programmers/CheckerProgrammer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import ts from "typescript";
2
+ import { MetadataCollection } from "../factories/MetadataCollection";
3
+ import { IMetadataTag } from "../metadata/IMetadataTag";
4
+ import { Metadata } from "../metadata/Metadata";
5
+ import { MetadataObject } from "../metadata/MetadataObject";
6
+ import { IProject } from "../transformers/IProject";
7
+ import { FunctionImporter } from "./helpers/FunctionImporeter";
8
+ import { IExpressionEntry } from "./helpers/IExpressionEntry";
9
+ export declare namespace FeatureProgrammer {
10
+ interface IConfig {
11
+ functors: string;
12
+ unioners: string;
13
+ trace: boolean;
14
+ initializer: Initializer;
15
+ decoder: Decoder<Metadata>;
16
+ objector: IConfig.IObjector;
17
+ generator?: Partial<IConfig.IGenerator>;
18
+ }
19
+ namespace IConfig {
20
+ interface IObjector {
21
+ checker: Decoder<Metadata>;
22
+ decoder: Decoder<MetadataObject>;
23
+ joiner: ObjectJoiner;
24
+ unionizer: Decoder<MetadataObject[]>;
25
+ failure: (expression: ts.Expression, targets: MetadataObject[]) => ts.Statement;
26
+ }
27
+ interface IGenerator {
28
+ functors(col: MetadataCollection): ts.VariableDeclaration | null;
29
+ unioners(col: MetadataCollection): ts.VariableDeclaration | null;
30
+ }
31
+ }
32
+ interface IExplore {
33
+ tracable: boolean;
34
+ source: "top" | "object";
35
+ from: "top" | "array" | "object";
36
+ postfix: string;
37
+ }
38
+ interface Initializer {
39
+ (project: IProject, type: ts.Type): [MetadataCollection, Metadata];
40
+ }
41
+ interface Decoder<T> {
42
+ (input: ts.Expression, target: T, explore: IExplore, tags: IMetadataTag[]): ts.Expression;
43
+ }
44
+ interface ObjectJoiner {
45
+ (entries: IExpressionEntry[], parent: MetadataObject): ts.ConciseBody;
46
+ }
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[];
53
+ }
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ var __values = (this && this.__values) || function(o) {
28
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
29
+ if (m) return m.call(o);
30
+ if (o && typeof o.length === "number") return {
31
+ next: function () {
32
+ if (o && i >= o.length) o = void 0;
33
+ return { value: o && o[i++], done: !o };
34
+ }
35
+ };
36
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.FeatureProgrammer = void 0;
43
+ var typescript_1 = __importDefault(require("typescript"));
44
+ var IdentifierFactory_1 = require("../factories/IdentifierFactory");
45
+ var ValueFactory_1 = require("../factories/ValueFactory");
46
+ var Escaper_1 = require("../utils/Escaper");
47
+ var UnionExplorer_1 = require("./helpers/UnionExplorer");
48
+ var FeatureProgrammer;
49
+ (function (FeatureProgrammer) {
50
+ FeatureProgrammer.generate = function (project, config, addition) {
51
+ return function (type) {
52
+ var _a, _b;
53
+ var _c = __read(config.initializer(project, type), 2), collection = _c[0], meta = _c[1];
54
+ var output = config.decoder(ValueFactory_1.ValueFactory.INPUT(), meta, {
55
+ tracable: config.trace,
56
+ source: "top",
57
+ from: "top",
58
+ postfix: '""',
59
+ }, []);
60
+ var functors = ((_a = config.generator) === null || _a === void 0 ? void 0 : _a.functors) !== undefined
61
+ ? config.generator.functors(collection)
62
+ : generate_functors(config)(collection);
63
+ var unioners = ((_b = config.generator) === null || _b === void 0 ? void 0 : _b.unioners) !== undefined
64
+ ? config.generator.unioners(collection)
65
+ : generate_unioners(config)(collection);
66
+ var added = addition(collection);
67
+ return typescript_1.default.factory.createArrowFunction(undefined, undefined, PARAMETERS(config.trace ? true : null)(ValueFactory_1.ValueFactory.INPUT()), undefined, undefined, typescript_1.default.factory.createBlock(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read((added || [])), false), __read((functors !== null
68
+ ? [
69
+ typescript_1.default.factory.createVariableStatement(undefined, typescript_1.default.factory.createVariableDeclarationList([functors], typescript_1.default.NodeFlags.Const)),
70
+ ]
71
+ : [])), false), __read((unioners !== null
72
+ ? [
73
+ typescript_1.default.factory.createVariableStatement(undefined, typescript_1.default.factory.createVariableDeclarationList([unioners], typescript_1.default.NodeFlags.Const)),
74
+ ]
75
+ : [])), false), [
76
+ typescript_1.default.factory.createReturnStatement(output),
77
+ ], false), true));
78
+ };
79
+ };
80
+ function generate_functors(config) {
81
+ return function (collection) {
82
+ var objects = collection.objects();
83
+ if (objects.length === 0)
84
+ return null;
85
+ return typescript_1.default.factory.createVariableDeclaration(config.functors, undefined, undefined, typescript_1.default.factory.createArrayLiteralExpression(objects.map(function (obj) { return generate_object(config)(obj); }), true));
86
+ };
87
+ }
88
+ FeatureProgrammer.generate_functors = generate_functors;
89
+ function generate_unioners(config) {
90
+ return function (collection) {
91
+ var unions = collection.unions();
92
+ if (unions.length === 0)
93
+ return null;
94
+ return typescript_1.default.factory.createVariableDeclaration(config.unioners, undefined, undefined, typescript_1.default.factory.createArrayLiteralExpression(unions.map(function (meta) { return generate_union(config)(meta); }), true));
95
+ };
96
+ }
97
+ FeatureProgrammer.generate_unioners = generate_unioners;
98
+ function generate_object(config) {
99
+ return function (obj) {
100
+ var e_1, _a;
101
+ var entries = [];
102
+ try {
103
+ for (var _b = __values(obj.properties), _c = _b.next(); !_c.done; _c = _b.next()) {
104
+ var prop = _c.value;
105
+ var key = prop.key.getSoleLiteral();
106
+ var input = key === null
107
+ ? typescript_1.default.factory.createIdentifier("value")
108
+ : Escaper_1.Escaper.variable(key)
109
+ ? typescript_1.default.factory.createPropertyAccessExpression(ValueFactory_1.ValueFactory.INPUT(), typescript_1.default.factory.createIdentifier(key))
110
+ : typescript_1.default.factory.createElementAccessExpression(ValueFactory_1.ValueFactory.INPUT(), typescript_1.default.factory.createStringLiteral(key));
111
+ entries.push({
112
+ input: input,
113
+ key: prop.key,
114
+ meta: prop.value,
115
+ expression: config.decoder(input, prop.value, {
116
+ tracable: config.trace,
117
+ source: "object",
118
+ from: "object",
119
+ postfix: key !== null
120
+ ? IdentifierFactory_1.IdentifierFactory.postfix(key)
121
+ : "$join(key)",
122
+ }, prop.tags),
123
+ });
124
+ }
125
+ }
126
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
127
+ finally {
128
+ try {
129
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
130
+ }
131
+ finally { if (e_1) throw e_1.error; }
132
+ }
133
+ return typescript_1.default.factory.createArrowFunction(undefined, undefined, PARAMETERS(config.trace ? false : null)(ValueFactory_1.ValueFactory.INPUT()), undefined, undefined, config.objector.joiner(entries, obj));
134
+ };
135
+ }
136
+ function generate_union(config) {
137
+ var explorer = UnionExplorer_1.UnionExplorer.object(config, config.objector.checker, config.objector.decoder, config.objector.unionizer, config.objector.failure);
138
+ var input = ValueFactory_1.ValueFactory.INPUT();
139
+ return function (meta) {
140
+ return typescript_1.default.factory.createArrowFunction(undefined, undefined, PARAMETERS(config.trace ? false : null)(ValueFactory_1.ValueFactory.INPUT()), undefined, undefined, explorer(input, meta, {
141
+ tracable: config.trace,
142
+ source: "object",
143
+ from: "object",
144
+ postfix: "",
145
+ }, []));
146
+ };
147
+ }
148
+ function decode_array(config, importer, combiner) {
149
+ var rand = importer.increment().toString();
150
+ var tail = config.trace
151
+ ? [
152
+ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, undefined, ValueFactory_1.ValueFactory.INPUT("index" + rand)),
153
+ ]
154
+ : [];
155
+ return function (input, meta, explore, tags) {
156
+ var arrow = typescript_1.default.factory.createArrowFunction(undefined, undefined, __spreadArray([
157
+ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, undefined, ValueFactory_1.ValueFactory.INPUT("elem"))
158
+ ], __read(tail), false), undefined, undefined, config.decoder(ValueFactory_1.ValueFactory.INPUT("elem"), meta, {
159
+ tracable: explore.tracable,
160
+ source: explore.source,
161
+ from: "array",
162
+ postfix: INDEX_SYMBOL(explore.postfix)(rand),
163
+ }, tags));
164
+ return combiner(input, arrow, tags);
165
+ };
166
+ }
167
+ FeatureProgrammer.decode_array = decode_array;
168
+ FeatureProgrammer.decode_object = function (config) {
169
+ return function (input, obj, explore) {
170
+ return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createElementAccessExpression(typescript_1.default.factory.createIdentifier(config.functors), obj.index), undefined, FeatureProgrammer.get_object_arguments(config.trace, explore)(input));
171
+ };
172
+ };
173
+ FeatureProgrammer.get_object_arguments = function (trace, explore) {
174
+ var tail = trace === false
175
+ ? []
176
+ : [
177
+ typescript_1.default.factory.createIdentifier(explore.postfix
178
+ ? "path + ".concat(explore.postfix)
179
+ : "path"),
180
+ explore.source === "object"
181
+ ? typescript_1.default.factory.createIdentifier("".concat(explore.tracable, " && exceptionable"))
182
+ : explore.tracable
183
+ ? typescript_1.default.factory.createTrue()
184
+ : typescript_1.default.factory.createFalse(),
185
+ ];
186
+ return function (input) { return __spreadArray([input], __read(tail), false); };
187
+ };
188
+ })(FeatureProgrammer = exports.FeatureProgrammer || (exports.FeatureProgrammer = {}));
189
+ var INDEX_SYMBOL = function (prev) { return function (rand) {
190
+ var tail = "\"[\" + index".concat(rand, " + \"]\"");
191
+ if (prev === "")
192
+ return tail;
193
+ else if (prev[prev.length - 1] === "\"")
194
+ return prev.substring(0, prev.length - 1) + tail.substring(1);
195
+ return prev + " + ".concat(tail);
196
+ }; };
197
+ var PARAMETERS = function (initialize) {
198
+ var tail = initialize === null
199
+ ? []
200
+ : [
201
+ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, undefined, "path", undefined, undefined, initialize
202
+ ? typescript_1.default.factory.createStringLiteral("$input")
203
+ : undefined),
204
+ ];
205
+ if (initialize === false)
206
+ tail.push(typescript_1.default.factory.createParameterDeclaration(undefined, undefined, undefined, "exceptionable"));
207
+ return function (input) { return __spreadArray([
208
+ typescript_1.default.factory.createParameterDeclaration(undefined, undefined, undefined, input)
209
+ ], __read(tail), false); };
210
+ };
211
+ //# sourceMappingURL=FeatureProgrammer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureProgrammer.js","sourceRoot":"","sources":["../../src/programmers/FeatureProgrammer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import ts from "typescript";
2
+ import { IProject } from "../transformers/IProject";
3
+ import { CheckerProgrammer } from "./CheckerProgrammer";
4
+ import { FunctionImporter } from "./helpers/FunctionImporeter";
5
+ import { IExpressionEntry } from "./helpers/IExpressionEntry";
6
+ export declare namespace IsProgrammer {
7
+ function CONFIG(options?: Partial<CONFIG.IOptions>): CheckerProgrammer.IConfig;
8
+ namespace CONFIG {
9
+ interface IOptions {
10
+ numeric: boolean;
11
+ object: (entries: IExpressionEntry[]) => ts.Expression;
12
+ }
13
+ }
14
+ function generate(project: IProject, modulo: ts.LeftHandSideExpression, equals?: boolean): (type: ts.Type) => ts.ArrowFunction;
15
+ const generate_functors: (project: IProject, importer: FunctionImporter) => (collection: import("../factories/MetadataCollection").MetadataCollection) => ts.VariableDeclaration | null;
16
+ const generate_unioners: (project: IProject, importer: FunctionImporter) => (collection: import("../factories/MetadataCollection").MetadataCollection) => ts.VariableDeclaration | null;
17
+ const decode: (project: IProject, importer: FunctionImporter) => (input: ts.Expression, meta: import("../metadata/Metadata").Metadata, explore: CheckerProgrammer.IExplore, tags: import("../metadata/IMetadataTag").IMetadataTag[]) => ts.Expression;
18
+ const decode_object: () => (input: ts.Expression, obj: import("../metadata/MetadataObject").MetadataObject, explore: CheckerProgrammer.IExplore) => ts.CallExpression;
19
+ function decode_to_json(input: ts.Expression): ts.Expression;
20
+ function decode_functional(input: ts.Expression): ts.BinaryExpression;
21
+ }