vscroll 1.6.3 → 1.8.0

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 (363) hide show
  1. package/dist/bundles/vscroll.esm5.js +5854 -5705
  2. package/dist/bundles/vscroll.esm5.js.map +1 -1
  3. package/dist/bundles/vscroll.esm5.min.js +2 -2
  4. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  5. package/dist/bundles/vscroll.esm6.js +5341 -5194
  6. package/dist/bundles/vscroll.esm6.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.min.js +2 -2
  8. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  9. package/dist/bundles/vscroll.umd.js +5858 -5710
  10. package/dist/bundles/vscroll.umd.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.min.js +2 -2
  12. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  13. package/dist/esm2015/classes/adapter/context.js +44 -43
  14. package/dist/esm2015/classes/adapter/context.js.map +1 -1
  15. package/dist/esm2015/classes/adapter/props.js +300 -300
  16. package/dist/esm2015/classes/adapter/props.js.map +1 -1
  17. package/dist/esm2015/classes/adapter/wanted.js +28 -28
  18. package/dist/esm2015/classes/adapter/wanted.js.map +1 -1
  19. package/dist/esm2015/classes/adapter.js +486 -487
  20. package/dist/esm2015/classes/adapter.js.map +1 -1
  21. package/dist/esm2015/classes/buffer/cache.js +249 -246
  22. package/dist/esm2015/classes/buffer/cache.js.map +1 -1
  23. package/dist/esm2015/classes/buffer/checkCall.js +47 -48
  24. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  25. package/dist/esm2015/classes/buffer/defaultSize.js +128 -127
  26. package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
  27. package/dist/esm2015/classes/buffer.js +343 -342
  28. package/dist/esm2015/classes/buffer.js.map +1 -1
  29. package/dist/esm2015/classes/datasource.js +36 -24
  30. package/dist/esm2015/classes/datasource.js.map +1 -1
  31. package/dist/esm2015/classes/domRoutines.js +160 -160
  32. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  33. package/dist/esm2015/classes/item.js +61 -61
  34. package/dist/esm2015/classes/item.js.map +1 -1
  35. package/dist/esm2015/classes/logger.js +229 -186
  36. package/dist/esm2015/classes/logger.js.map +1 -1
  37. package/dist/esm2015/classes/paddings.js +76 -72
  38. package/dist/esm2015/classes/paddings.js.map +1 -1
  39. package/dist/esm2015/classes/reactive.js +54 -54
  40. package/dist/esm2015/classes/reactive.js.map +1 -1
  41. package/dist/esm2015/classes/settings.js +39 -39
  42. package/dist/esm2015/classes/settings.js.map +1 -1
  43. package/dist/esm2015/classes/state/clip.js +16 -16
  44. package/dist/esm2015/classes/state/clip.js.map +1 -1
  45. package/dist/esm2015/classes/state/cycle.js +60 -60
  46. package/dist/esm2015/classes/state/cycle.js.map +1 -1
  47. package/dist/esm2015/classes/state/fetch.js +124 -122
  48. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  49. package/dist/esm2015/classes/state/render.js +14 -14
  50. package/dist/esm2015/classes/state/render.js.map +1 -1
  51. package/dist/esm2015/classes/state/scroll.js +30 -30
  52. package/dist/esm2015/classes/state/scroll.js.map +1 -1
  53. package/dist/esm2015/classes/state.js +64 -62
  54. package/dist/esm2015/classes/state.js.map +1 -1
  55. package/dist/esm2015/classes/viewport.js +74 -72
  56. package/dist/esm2015/classes/viewport.js.map +1 -1
  57. package/dist/esm2015/index.js +9 -9
  58. package/dist/esm2015/index.js.map +1 -1
  59. package/dist/esm2015/inputs/adapter.js +262 -242
  60. package/dist/esm2015/inputs/adapter.js.map +1 -1
  61. package/dist/esm2015/inputs/common.js +11 -11
  62. package/dist/esm2015/inputs/common.js.map +1 -1
  63. package/dist/esm2015/inputs/datasource.js +20 -20
  64. package/dist/esm2015/inputs/datasource.js.map +1 -1
  65. package/dist/esm2015/inputs/index.js +7 -7
  66. package/dist/esm2015/inputs/index.js.map +1 -1
  67. package/dist/esm2015/inputs/settings.js +151 -146
  68. package/dist/esm2015/inputs/settings.js.map +1 -1
  69. package/dist/esm2015/inputs/validation.js +365 -374
  70. package/dist/esm2015/inputs/validation.js.map +1 -1
  71. package/dist/esm2015/inputs/workflow.js +30 -30
  72. package/dist/esm2015/inputs/workflow.js.map +1 -1
  73. package/dist/esm2015/interfaces/adapter.js +1 -1
  74. package/dist/esm2015/interfaces/adapter.js.map +1 -1
  75. package/dist/esm2015/interfaces/datasource.js +1 -1
  76. package/dist/esm2015/interfaces/datasource.js.map +1 -1
  77. package/dist/esm2015/interfaces/index.js +1 -1
  78. package/dist/esm2015/interfaces/index.js.map +1 -1
  79. package/dist/esm2015/interfaces/item.js +1 -1
  80. package/dist/esm2015/interfaces/item.js.map +1 -1
  81. package/dist/esm2015/interfaces/process.js +1 -1
  82. package/dist/esm2015/interfaces/process.js.map +1 -1
  83. package/dist/esm2015/interfaces/routines.js +1 -1
  84. package/dist/esm2015/interfaces/routines.js.map +1 -1
  85. package/dist/esm2015/interfaces/settings.js +1 -1
  86. package/dist/esm2015/interfaces/settings.js.map +1 -1
  87. package/dist/esm2015/interfaces/state.js +1 -1
  88. package/dist/esm2015/interfaces/state.js.map +1 -1
  89. package/dist/esm2015/interfaces/validation.js +1 -1
  90. package/dist/esm2015/interfaces/validation.js.map +1 -1
  91. package/dist/esm2015/interfaces/workflow.js +1 -1
  92. package/dist/esm2015/interfaces/workflow.js.map +1 -1
  93. package/dist/esm2015/processes/adapter/append.js +37 -36
  94. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  95. package/dist/esm2015/processes/adapter/check.js +33 -32
  96. package/dist/esm2015/processes/adapter/check.js.map +1 -1
  97. package/dist/esm2015/processes/adapter/clip.js +12 -12
  98. package/dist/esm2015/processes/adapter/clip.js.map +1 -1
  99. package/dist/esm2015/processes/adapter/fix.js +79 -77
  100. package/dist/esm2015/processes/adapter/fix.js.map +1 -1
  101. package/dist/esm2015/processes/adapter/insert.js +74 -73
  102. package/dist/esm2015/processes/adapter/insert.js.map +1 -1
  103. package/dist/esm2015/processes/adapter/pause.js +22 -22
  104. package/dist/esm2015/processes/adapter/pause.js.map +1 -1
  105. package/dist/esm2015/processes/adapter/reload.js +19 -19
  106. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  107. package/dist/esm2015/processes/adapter/remove.js +105 -102
  108. package/dist/esm2015/processes/adapter/remove.js.map +1 -1
  109. package/dist/esm2015/processes/adapter/replace.js +39 -39
  110. package/dist/esm2015/processes/adapter/replace.js.map +1 -1
  111. package/dist/esm2015/processes/adapter/reset.js +35 -35
  112. package/dist/esm2015/processes/adapter/reset.js.map +1 -1
  113. package/dist/esm2015/processes/adapter/update.js +44 -43
  114. package/dist/esm2015/processes/adapter/update.js.map +1 -1
  115. package/dist/esm2015/processes/adjust.js +146 -141
  116. package/dist/esm2015/processes/adjust.js.map +1 -1
  117. package/dist/esm2015/processes/clip.js +49 -49
  118. package/dist/esm2015/processes/clip.js.map +1 -1
  119. package/dist/esm2015/processes/end.js +53 -52
  120. package/dist/esm2015/processes/end.js.map +1 -1
  121. package/dist/esm2015/processes/fetch.js +93 -91
  122. package/dist/esm2015/processes/fetch.js.map +1 -1
  123. package/dist/esm2015/processes/index.js +24 -24
  124. package/dist/esm2015/processes/index.js.map +1 -1
  125. package/dist/esm2015/processes/init.js +14 -14
  126. package/dist/esm2015/processes/init.js.map +1 -1
  127. package/dist/esm2015/processes/misc/base.js +29 -30
  128. package/dist/esm2015/processes/misc/base.js.map +1 -1
  129. package/dist/esm2015/processes/misc/enums.js +36 -36
  130. package/dist/esm2015/processes/misc/enums.js.map +1 -1
  131. package/dist/esm2015/processes/misc/index.js +2 -2
  132. package/dist/esm2015/processes/misc/index.js.map +1 -1
  133. package/dist/esm2015/processes/postFetch.js +66 -65
  134. package/dist/esm2015/processes/postFetch.js.map +1 -1
  135. package/dist/esm2015/processes/preClip.js +86 -85
  136. package/dist/esm2015/processes/preClip.js.map +1 -1
  137. package/dist/esm2015/processes/preFetch.js +253 -240
  138. package/dist/esm2015/processes/preFetch.js.map +1 -1
  139. package/dist/esm2015/processes/render.js +56 -54
  140. package/dist/esm2015/processes/render.js.map +1 -1
  141. package/dist/esm2015/processes/scroll.js +106 -97
  142. package/dist/esm2015/processes/scroll.js.map +1 -1
  143. package/dist/esm2015/processes/start.js +11 -11
  144. package/dist/esm2015/processes/start.js.map +1 -1
  145. package/dist/esm2015/scroller.js +91 -86
  146. package/dist/esm2015/scroller.js.map +1 -1
  147. package/dist/esm2015/version.js +4 -4
  148. package/dist/esm2015/version.js.map +1 -1
  149. package/dist/esm2015/workflow-transducer.js +219 -218
  150. package/dist/esm2015/workflow-transducer.js.map +1 -1
  151. package/dist/esm2015/workflow.js +185 -174
  152. package/dist/esm2015/workflow.js.map +1 -1
  153. package/dist/esm5/classes/adapter/context.js +51 -50
  154. package/dist/esm5/classes/adapter/context.js.map +1 -1
  155. package/dist/esm5/classes/adapter/props.js +300 -300
  156. package/dist/esm5/classes/adapter/props.js.map +1 -1
  157. package/dist/esm5/classes/adapter/wanted.js +29 -29
  158. package/dist/esm5/classes/adapter/wanted.js.map +1 -1
  159. package/dist/esm5/classes/adapter.js +538 -535
  160. package/dist/esm5/classes/adapter.js.map +1 -1
  161. package/dist/esm5/classes/buffer/cache.js +262 -260
  162. package/dist/esm5/classes/buffer/cache.js.map +1 -1
  163. package/dist/esm5/classes/buffer/checkCall.js +53 -56
  164. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  165. package/dist/esm5/classes/buffer/defaultSize.js +146 -145
  166. package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
  167. package/dist/esm5/classes/buffer.js +410 -409
  168. package/dist/esm5/classes/buffer.js.map +1 -1
  169. package/dist/esm5/classes/datasource.js +47 -31
  170. package/dist/esm5/classes/datasource.js.map +1 -1
  171. package/dist/esm5/classes/domRoutines.js +165 -165
  172. package/dist/esm5/classes/domRoutines.js.map +1 -1
  173. package/dist/esm5/classes/item.js +76 -76
  174. package/dist/esm5/classes/item.js.map +1 -1
  175. package/dist/esm5/classes/logger.js +251 -210
  176. package/dist/esm5/classes/logger.js.map +1 -1
  177. package/dist/esm5/classes/paddings.js +84 -80
  178. package/dist/esm5/classes/paddings.js.map +1 -1
  179. package/dist/esm5/classes/reactive.js +69 -69
  180. package/dist/esm5/classes/reactive.js.map +1 -1
  181. package/dist/esm5/classes/settings.js +47 -47
  182. package/dist/esm5/classes/settings.js.map +1 -1
  183. package/dist/esm5/classes/state/clip.js +22 -22
  184. package/dist/esm5/classes/state/clip.js.map +1 -1
  185. package/dist/esm5/classes/state/cycle.js +75 -75
  186. package/dist/esm5/classes/state/cycle.js.map +1 -1
  187. package/dist/esm5/classes/state/fetch.js +150 -148
  188. package/dist/esm5/classes/state/fetch.js.map +1 -1
  189. package/dist/esm5/classes/state/render.js +20 -20
  190. package/dist/esm5/classes/state/render.js.map +1 -1
  191. package/dist/esm5/classes/state/scroll.js +32 -32
  192. package/dist/esm5/classes/state/scroll.js.map +1 -1
  193. package/dist/esm5/classes/state.js +71 -69
  194. package/dist/esm5/classes/state.js.map +1 -1
  195. package/dist/esm5/classes/viewport.js +80 -79
  196. package/dist/esm5/classes/viewport.js.map +1 -1
  197. package/dist/esm5/index.js +9 -9
  198. package/dist/esm5/index.js.map +1 -1
  199. package/dist/esm5/inputs/adapter.js +263 -243
  200. package/dist/esm5/inputs/adapter.js.map +1 -1
  201. package/dist/esm5/inputs/common.js +11 -11
  202. package/dist/esm5/inputs/common.js.map +1 -1
  203. package/dist/esm5/inputs/datasource.js +21 -21
  204. package/dist/esm5/inputs/datasource.js.map +1 -1
  205. package/dist/esm5/inputs/index.js +7 -7
  206. package/dist/esm5/inputs/index.js.map +1 -1
  207. package/dist/esm5/inputs/settings.js +152 -147
  208. package/dist/esm5/inputs/settings.js.map +1 -1
  209. package/dist/esm5/inputs/validation.js +399 -396
  210. package/dist/esm5/inputs/validation.js.map +1 -1
  211. package/dist/esm5/inputs/workflow.js +31 -31
  212. package/dist/esm5/inputs/workflow.js.map +1 -1
  213. package/dist/esm5/interfaces/adapter.js +1 -1
  214. package/dist/esm5/interfaces/adapter.js.map +1 -1
  215. package/dist/esm5/interfaces/datasource.js +1 -1
  216. package/dist/esm5/interfaces/datasource.js.map +1 -1
  217. package/dist/esm5/interfaces/index.js +1 -1
  218. package/dist/esm5/interfaces/index.js.map +1 -1
  219. package/dist/esm5/interfaces/item.js +1 -1
  220. package/dist/esm5/interfaces/item.js.map +1 -1
  221. package/dist/esm5/interfaces/process.js +1 -1
  222. package/dist/esm5/interfaces/process.js.map +1 -1
  223. package/dist/esm5/interfaces/routines.js +1 -1
  224. package/dist/esm5/interfaces/routines.js.map +1 -1
  225. package/dist/esm5/interfaces/settings.js +1 -1
  226. package/dist/esm5/interfaces/settings.js.map +1 -1
  227. package/dist/esm5/interfaces/state.js +1 -1
  228. package/dist/esm5/interfaces/state.js.map +1 -1
  229. package/dist/esm5/interfaces/validation.js +1 -1
  230. package/dist/esm5/interfaces/validation.js.map +1 -1
  231. package/dist/esm5/interfaces/workflow.js +1 -1
  232. package/dist/esm5/interfaces/workflow.js.map +1 -1
  233. package/dist/esm5/processes/adapter/append.js +45 -44
  234. package/dist/esm5/processes/adapter/append.js.map +1 -1
  235. package/dist/esm5/processes/adapter/check.js +40 -39
  236. package/dist/esm5/processes/adapter/check.js.map +1 -1
  237. package/dist/esm5/processes/adapter/clip.js +19 -19
  238. package/dist/esm5/processes/adapter/clip.js.map +1 -1
  239. package/dist/esm5/processes/adapter/fix.js +91 -89
  240. package/dist/esm5/processes/adapter/fix.js.map +1 -1
  241. package/dist/esm5/processes/adapter/insert.js +82 -81
  242. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  243. package/dist/esm5/processes/adapter/pause.js +29 -29
  244. package/dist/esm5/processes/adapter/pause.js.map +1 -1
  245. package/dist/esm5/processes/adapter/reload.js +26 -26
  246. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  247. package/dist/esm5/processes/adapter/remove.js +116 -115
  248. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  249. package/dist/esm5/processes/adapter/replace.js +47 -47
  250. package/dist/esm5/processes/adapter/replace.js.map +1 -1
  251. package/dist/esm5/processes/adapter/reset.js +42 -42
  252. package/dist/esm5/processes/adapter/reset.js.map +1 -1
  253. package/dist/esm5/processes/adapter/update.js +64 -59
  254. package/dist/esm5/processes/adapter/update.js.map +1 -1
  255. package/dist/esm5/processes/adjust.js +157 -152
  256. package/dist/esm5/processes/adjust.js.map +1 -1
  257. package/dist/esm5/processes/clip.js +60 -60
  258. package/dist/esm5/processes/clip.js.map +1 -1
  259. package/dist/esm5/processes/end.js +64 -63
  260. package/dist/esm5/processes/end.js.map +1 -1
  261. package/dist/esm5/processes/fetch.js +104 -102
  262. package/dist/esm5/processes/fetch.js.map +1 -1
  263. package/dist/esm5/processes/index.js +24 -24
  264. package/dist/esm5/processes/index.js.map +1 -1
  265. package/dist/esm5/processes/init.js +21 -21
  266. package/dist/esm5/processes/init.js.map +1 -1
  267. package/dist/esm5/processes/misc/base.js +43 -44
  268. package/dist/esm5/processes/misc/base.js.map +1 -1
  269. package/dist/esm5/processes/misc/enums.js +36 -36
  270. package/dist/esm5/processes/misc/enums.js.map +1 -1
  271. package/dist/esm5/processes/misc/index.js +2 -2
  272. package/dist/esm5/processes/misc/index.js.map +1 -1
  273. package/dist/esm5/processes/postFetch.js +73 -74
  274. package/dist/esm5/processes/postFetch.js.map +1 -1
  275. package/dist/esm5/processes/preClip.js +95 -94
  276. package/dist/esm5/processes/preClip.js.map +1 -1
  277. package/dist/esm5/processes/preFetch.js +259 -247
  278. package/dist/esm5/processes/preFetch.js.map +1 -1
  279. package/dist/esm5/processes/render.js +63 -63
  280. package/dist/esm5/processes/render.js.map +1 -1
  281. package/dist/esm5/processes/scroll.js +113 -107
  282. package/dist/esm5/processes/scroll.js.map +1 -1
  283. package/dist/esm5/processes/start.js +18 -18
  284. package/dist/esm5/processes/start.js.map +1 -1
  285. package/dist/esm5/scroller.js +104 -100
  286. package/dist/esm5/scroller.js.map +1 -1
  287. package/dist/esm5/version.js +4 -4
  288. package/dist/esm5/version.js.map +1 -1
  289. package/dist/esm5/workflow-transducer.js +221 -220
  290. package/dist/esm5/workflow-transducer.js.map +1 -1
  291. package/dist/esm5/workflow.js +204 -198
  292. package/dist/esm5/workflow.js.map +1 -1
  293. package/dist/typings/classes/adapter/context.d.ts +4 -4
  294. package/dist/typings/classes/adapter/props.d.ts +52 -52
  295. package/dist/typings/classes/adapter/wanted.d.ts +14 -14
  296. package/dist/typings/classes/adapter.d.ts +79 -79
  297. package/dist/typings/classes/buffer/cache.d.ts +94 -95
  298. package/dist/typings/classes/buffer/checkCall.d.ts +12 -12
  299. package/dist/typings/classes/buffer/defaultSize.d.ts +32 -32
  300. package/dist/typings/classes/buffer.d.ts +64 -64
  301. package/dist/typings/classes/datasource.d.ts +11 -11
  302. package/dist/typings/classes/domRoutines.d.ts +36 -36
  303. package/dist/typings/classes/item.d.ts +28 -28
  304. package/dist/typings/classes/logger.d.ts +32 -28
  305. package/dist/typings/classes/paddings.d.ts +22 -22
  306. package/dist/typings/classes/reactive.d.ts +21 -21
  307. package/dist/typings/classes/settings.d.ts +126 -119
  308. package/dist/typings/classes/state/clip.d.ts +9 -9
  309. package/dist/typings/classes/state/cycle.d.ts +29 -29
  310. package/dist/typings/classes/state/fetch.d.ts +62 -62
  311. package/dist/typings/classes/state/render.d.ts +9 -9
  312. package/dist/typings/classes/state/scroll.d.ts +16 -16
  313. package/dist/typings/classes/state.d.ts +29 -29
  314. package/dist/typings/classes/viewport.d.ts +32 -32
  315. package/dist/typings/index.d.ts +10 -10
  316. package/dist/typings/inputs/adapter.d.ts +5 -5
  317. package/dist/typings/inputs/common.d.ts +9 -9
  318. package/dist/typings/inputs/datasource.d.ts +7 -7
  319. package/dist/typings/inputs/index.d.ts +7 -7
  320. package/dist/typings/inputs/settings.d.ts +42 -41
  321. package/dist/typings/inputs/validation.d.ts +82 -83
  322. package/dist/typings/inputs/workflow.d.ts +9 -9
  323. package/dist/typings/interfaces/adapter.d.ts +164 -164
  324. package/dist/typings/interfaces/datasource.d.ts +28 -28
  325. package/dist/typings/interfaces/index.d.ts +10 -10
  326. package/dist/typings/interfaces/item.d.ts +8 -8
  327. package/dist/typings/interfaces/process.d.ts +35 -35
  328. package/dist/typings/interfaces/routines.d.ts +166 -166
  329. package/dist/typings/interfaces/settings.d.ts +32 -31
  330. package/dist/typings/interfaces/state.d.ts +24 -24
  331. package/dist/typings/interfaces/validation.d.ts +33 -33
  332. package/dist/typings/interfaces/workflow.d.ts +53 -53
  333. package/dist/typings/processes/adapter/append.d.ts +14 -14
  334. package/dist/typings/processes/adapter/check.d.ts +6 -6
  335. package/dist/typings/processes/adapter/clip.d.ts +7 -7
  336. package/dist/typings/processes/adapter/fix.d.ts +13 -13
  337. package/dist/typings/processes/adapter/insert.d.ts +11 -11
  338. package/dist/typings/processes/adapter/pause.d.ts +8 -8
  339. package/dist/typings/processes/adapter/reload.d.ts +6 -6
  340. package/dist/typings/processes/adapter/remove.d.ts +11 -11
  341. package/dist/typings/processes/adapter/replace.d.ts +8 -8
  342. package/dist/typings/processes/adapter/reset.d.ts +7 -7
  343. package/dist/typings/processes/adapter/update.d.ts +8 -8
  344. package/dist/typings/processes/adjust.d.ts +10 -10
  345. package/dist/typings/processes/clip.d.ts +7 -7
  346. package/dist/typings/processes/end.d.ts +10 -10
  347. package/dist/typings/processes/fetch.d.ts +18 -18
  348. package/dist/typings/processes/index.d.ts +24 -24
  349. package/dist/typings/processes/init.d.ts +7 -7
  350. package/dist/typings/processes/misc/base.d.ts +4 -4
  351. package/dist/typings/processes/misc/enums.d.ts +33 -33
  352. package/dist/typings/processes/misc/index.d.ts +2 -2
  353. package/dist/typings/processes/postFetch.d.ts +8 -8
  354. package/dist/typings/processes/preClip.d.ts +12 -12
  355. package/dist/typings/processes/preFetch.d.ts +17 -17
  356. package/dist/typings/processes/render.d.ts +9 -9
  357. package/dist/typings/processes/scroll.d.ts +13 -13
  358. package/dist/typings/processes/start.d.ts +6 -6
  359. package/dist/typings/scroller.d.ts +26 -26
  360. package/dist/typings/version.d.ts +5 -5
  361. package/dist/typings/workflow-transducer.d.ts +2 -2
  362. package/dist/typings/workflow.d.ts +30 -29
  363. package/package.json +72 -69
@@ -1,397 +1,400 @@
1
- import { __read, __spreadArray, __values } from "tslib";
2
- export var ValidatorType;
3
- (function (ValidatorType) {
4
- ValidatorType["number"] = "must be a number";
5
- ValidatorType["integer"] = "must be an integer";
6
- ValidatorType["integerUnlimited"] = "must be an integer or infinity";
7
- ValidatorType["moreOrEqual"] = "must be a number greater than (or equal to) {arg1}";
8
- ValidatorType["itemList"] = "must be an array of items {arg1}";
9
- ValidatorType["boolean"] = "must be a boolean";
10
- ValidatorType["object"] = "must be an object";
11
- ValidatorType["element"] = "must be an html element";
12
- ValidatorType["function"] = "must be a function";
13
- ValidatorType["funcOfxArguments"] = "must have {arg1} argument(s)";
14
- ValidatorType["funcOfxAndMoreArguments"] = "must have at least {arg1} argument(s)";
15
- ValidatorType["funcOfXToYArguments"] = "must have {arg1} to {arg2} arguments";
16
- ValidatorType["oneOfCan"] = "can be present as only one item of {arg1} list";
17
- ValidatorType["oneOfMust"] = "must be present as only one item of {arg1} list";
18
- ValidatorType["or"] = "must satisfy at least 1 validator from {arg1} list";
19
- ValidatorType["enum"] = "must belong to {arg1} list";
20
- })(ValidatorType || (ValidatorType = {}));
21
- var getError = function (msg, args) {
22
- return (args || ['']).reduce(function (acc, arg, index) { return acc.replace("{arg".concat(index + 1, "}"), arg); }, msg);
23
- };
24
- var getNumber = function (value) {
25
- return typeof value === 'number' || (typeof value === 'string' && value !== '')
26
- ? Number(value)
27
- : NaN;
28
- };
29
- var onNumber = function (value) {
30
- var parsedValue = getNumber(value);
31
- var errors = [];
32
- if (Number.isNaN(parsedValue)) {
33
- errors.push(ValidatorType.number);
34
- }
35
- return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
36
- };
37
- var onInteger = function (value) {
38
- var errors = [];
39
- value = getNumber(value);
40
- var parsedValue = parseInt(String(value), 10);
41
- if (value !== parsedValue) {
42
- errors.push(ValidatorType.integer);
43
- }
44
- return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
45
- };
46
- var onIntegerUnlimited = function (value) {
47
- var parsedValue = value;
48
- var errors = [];
49
- value = getNumber(value);
50
- if (!Number.isFinite(value)) {
51
- parsedValue = value;
52
- }
53
- else {
54
- parsedValue = parseInt(String(value), 10);
55
- }
56
- if (value !== parsedValue) {
57
- errors.push(ValidatorType.integerUnlimited);
58
- }
59
- return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
60
- };
61
- var onMoreOrEqual = function (limit, fallback) { return function (value) {
62
- var result = onNumber(value);
63
- if (!result.isValid) {
64
- return result;
65
- }
66
- var parsedValue = result.value;
67
- var errors = [];
68
- if (parsedValue < limit) {
69
- if (!fallback) {
70
- errors.push(getError(ValidatorType.moreOrEqual, [String(limit)]));
71
- }
72
- else {
73
- parsedValue = limit;
74
- }
75
- }
76
- return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
77
- }; };
78
- var onBoolean = function (value) {
79
- var errors = [];
80
- var parsedValue = value;
81
- if (value === 'true') {
82
- parsedValue = true;
83
- }
84
- else if (value === 'false') {
85
- parsedValue = false;
86
- }
87
- if (typeof parsedValue !== 'boolean') {
88
- errors.push(ValidatorType.boolean);
89
- }
90
- return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
91
- };
92
- var onObject = function (value) {
93
- var errors = [];
94
- if (!value || Object.prototype.toString.call(value) !== '[object Object]') {
95
- errors.push(ValidatorType.object);
96
- }
97
- return { value: value, isSet: true, isValid: !errors.length, errors: errors };
98
- };
99
- var onHtmlElement = function (value) {
100
- var errors = [];
101
- if (!(value instanceof Element) && !(value instanceof Document)) {
102
- errors.push(ValidatorType.element);
103
- }
104
- return { value: value, isSet: true, isValid: !errors.length, errors: errors };
105
- };
106
- var onItemList = function (value) {
107
- var parsedValue = value;
108
- var errors = [];
109
- if (!Array.isArray(value)) {
110
- errors.push(ValidatorType.itemList);
111
- parsedValue = [];
112
- }
113
- else if (!value.length) {
114
- errors.push(getError(ValidatorType.itemList, ['with at least 1 item']));
115
- }
116
- else if (value.length > 1) {
117
- var type = typeof value[0];
118
- for (var i = value.length - 1; i >= 0; i--) {
119
- if (typeof value[i] !== type) {
120
- errors.push(getError(ValidatorType.itemList, ['of items of the same type']));
121
- break;
122
- }
123
- }
124
- }
125
- return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
126
- };
127
- var onFunction = function (value) {
128
- var errors = [];
129
- if (typeof value !== 'function') {
130
- errors.push(ValidatorType.function);
131
- }
132
- return { value: value, isSet: true, isValid: !errors.length, errors: errors };
133
- };
134
- var onFunctionWithXArguments = function (argsCount) { return function (value) {
135
- var result = onFunction(value);
136
- if (!result.isValid) {
137
- return result;
138
- }
139
- value = result.value;
140
- var errors = [];
141
- if (value.length !== argsCount) {
142
- errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));
143
- }
144
- return { value: value, isSet: true, isValid: !errors.length, errors: errors };
145
- }; };
146
- var onFunctionWithXAndMoreArguments = function (argsCount) { return function (value) {
147
- var result = onFunction(value);
148
- if (!result.isValid) {
149
- return result;
150
- }
151
- value = result.value;
152
- var errors = [];
153
- if (value.length < argsCount) {
154
- errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));
155
- }
156
- return { value: value, isSet: true, isValid: !errors.length, errors: errors };
157
- }; };
158
- var onFunctionWithXToYArguments = function (from, to) { return function (value) {
159
- var result = onFunction(value);
160
- if (!result.isValid) {
161
- return result;
162
- }
163
- value = result.value;
164
- var errors = [];
165
- if (value.length < from || value.length > to) {
166
- errors.push(getError(ValidatorType.funcOfXToYArguments, [String(from), String(to)]));
167
- }
168
- return { value: value, isSet: true, isValid: !errors.length, errors: errors };
169
- }; };
170
- var onOneOf = function (tokens, must) { return function (value, context) {
171
- var errors = [];
172
- var isSet = value !== void 0;
173
- var noOneIsPresent = !isSet;
174
- var err = must ? ValidatorType.oneOfMust : ValidatorType.oneOfCan;
175
- if (!Array.isArray(tokens) || !tokens.length) {
176
- errors.push(getError(err, ['undefined']));
177
- }
178
- else {
179
- for (var i = tokens.length - 1; i >= 0; i--) {
180
- var token = tokens[i];
181
- if (typeof token !== 'string') {
182
- errors.push(getError(err, [tokens.join('", "')]) + ' (non-string token)');
183
- break;
184
- }
185
- var isAnotherPresent = context && Object.prototype.hasOwnProperty.call(context, token);
186
- if (isSet && isAnotherPresent) {
187
- errors.push(getError(err, [tokens.join('", "')]) + " (".concat(token, " is present)"));
188
- break;
189
- }
190
- if (noOneIsPresent && isAnotherPresent) {
191
- noOneIsPresent = false;
192
- }
193
- }
194
- if (must && noOneIsPresent) {
195
- errors.push(getError(err, [tokens.join('", "')]));
196
- }
197
- }
198
- return { value: value, isSet: isSet, isValid: !errors.length, errors: errors };
199
- }; };
200
- var onOr = function (validators) { return function (value) {
201
- var errors = [];
202
- if (validators.every(function (validator) { return !validator.method(value).isValid; })) {
203
- errors.push(validators.map(function (v) { return v.type; }).join(' OR '));
204
- }
205
- return { value: value, isSet: true, isValid: !errors.length, errors: errors };
206
- }; };
207
- var AbstractEnum;
208
- (function (AbstractEnum) {
209
- })(AbstractEnum || (AbstractEnum = {}));
210
- var onEnum = function (list) { return function (value) {
211
- var errors = [];
212
- var values = Object.keys(list).filter(function (k) { return isNaN(Number(k)); }).map(function (k) { return list[k]; });
213
- if (!values.some(function (item) { return item === value; })) {
214
- errors.push(getError(ValidatorType.enum, ['[' + values.join(',') + ']']));
215
- }
216
- return { value: value, isSet: true, isValid: !errors.length, errors: errors };
217
- }; };
218
- export var VALIDATORS = {
219
- NUMBER: {
220
- type: ValidatorType.number,
221
- method: onNumber
222
- },
223
- INTEGER: {
224
- type: ValidatorType.integer,
225
- method: onInteger
226
- },
227
- INTEGER_UNLIMITED: {
228
- type: ValidatorType.integerUnlimited,
229
- method: onIntegerUnlimited
230
- },
231
- MORE_OR_EQUAL: function (limit, fallback) { return ({
232
- type: ValidatorType.moreOrEqual,
233
- method: onMoreOrEqual(limit, fallback)
234
- }); },
235
- BOOLEAN: {
236
- type: ValidatorType.boolean,
237
- method: onBoolean
238
- },
239
- OBJECT: {
240
- type: ValidatorType.object,
241
- method: onObject
242
- },
243
- ITEM_LIST: {
244
- type: ValidatorType.itemList,
245
- method: onItemList
246
- },
247
- ELEMENT: {
248
- type: ValidatorType.element,
249
- method: onHtmlElement
250
- },
251
- FUNC: {
252
- type: ValidatorType.function,
253
- method: onFunction
254
- },
255
- FUNC_WITH_X_ARGUMENTS: function (count) { return ({
256
- type: ValidatorType.funcOfxArguments,
257
- method: onFunctionWithXArguments(count)
258
- }); },
259
- FUNC_WITH_X_AND_MORE_ARGUMENTS: function (count) { return ({
260
- type: ValidatorType.funcOfxAndMoreArguments,
261
- method: onFunctionWithXAndMoreArguments(count)
262
- }); },
263
- FUNC_WITH_X_TO_Y_ARGUMENTS: function (from, to) { return ({
264
- type: ValidatorType.funcOfXToYArguments,
265
- method: onFunctionWithXToYArguments(from, to)
266
- }); },
267
- ONE_OF_CAN: function (list) { return ({
268
- type: ValidatorType.oneOfCan,
269
- method: onOneOf(list, false)
270
- }); },
271
- ONE_OF_MUST: function (list) { return ({
272
- type: ValidatorType.oneOfMust,
273
- method: onOneOf(list, true)
274
- }); },
275
- OR: function (list) { return ({
276
- type: ValidatorType.or,
277
- method: onOr(list)
278
- }); },
279
- ENUM: function (list) { return ({
280
- type: ValidatorType.enum,
281
- method: onEnum(list)
282
- }); }
283
- };
284
- var ValidatedData = /** @class */ (function () {
285
- function ValidatedData(context) {
286
- this.params = {};
287
- this.contextErrors = [];
288
- this.errors = [];
289
- this.isValid = true;
290
- this.setContext(context);
291
- }
292
- ValidatedData.prototype.setContext = function (context) {
293
- if (!context || Object.prototype.toString.call(context) !== '[object Object]') {
294
- this.setCommonError('context is not an object');
295
- this.isValidContext = false;
296
- }
297
- else {
298
- this.isValidContext = true;
299
- }
300
- this.context = context;
301
- };
302
- ValidatedData.prototype.setValidity = function () {
303
- var _this = this;
304
- this.errors = Object.keys(this.params).reduce(function (acc, key) { return __spreadArray(__spreadArray([], __read(acc), false), __read(_this.params[key].errors), false); }, []);
305
- this.isValid = !this.errors.length;
306
- };
307
- ValidatedData.prototype.setCommonError = function (error) {
308
- this.contextErrors.push(error);
309
- this.errors.push(error);
310
- this.isValid = false;
311
- };
312
- ValidatedData.prototype.setParam = function (token, value) {
313
- if (!value.isValid) {
314
- value.errors = !value.isSet
315
- ? ["\"".concat(token, "\" must be set")]
316
- : value.errors.map(function (err) {
317
- return "\"".concat(token, "\" ").concat(err);
318
- });
319
- }
320
- this.params[token] = value;
321
- this.setValidity();
322
- };
323
- ValidatedData.prototype.showErrors = function () {
324
- return this.errors.length
325
- ? 'validation failed: ' + this.errors.join(', ')
326
- : '';
327
- };
328
- return ValidatedData;
329
- }());
330
- export { ValidatedData };
331
- export var runValidator = function (current, validator, context) {
332
- var value = current.value, errors = current.errors;
333
- var result = validator.method(value, context);
334
- var _errors = __spreadArray(__spreadArray([], __read(errors), false), __read(result.errors), false);
335
- return {
336
- value: result.value,
337
- isSet: result.isSet,
338
- isValid: !_errors.length,
339
- errors: _errors
340
- };
341
- };
342
- var getDefault = function (value, prop) {
343
- var empty = value === void 0;
344
- var auto = !prop.mandatory && prop.defaultValue !== void 0;
345
- return {
346
- value: !empty ? value : (auto ? prop.defaultValue : void 0),
347
- isSet: !empty || auto,
348
- isValid: !empty || !prop.mandatory,
349
- errors: []
350
- };
351
- };
352
- export var validateOne = function (context, name, prop) {
353
- var e_1, _a;
354
- var result = getDefault(context[name], prop);
355
- if (!result.isSet) {
356
- var oneOfMust = prop.validators.find(function (v) { return v.type === ValidatorType.oneOfMust; });
357
- if (oneOfMust) {
358
- return runValidator(result, oneOfMust, context);
359
- }
360
- }
361
- else {
362
- try {
363
- for (var _b = __values(Object.values(prop.validators)), _c = _b.next(); !_c.done; _c = _b.next()) {
364
- var validator = _c.value;
365
- var current = runValidator(result, validator, context);
366
- if (!current.isValid && prop.defaultValue !== void 0) {
367
- return {
368
- value: prop.defaultValue,
369
- isSet: true,
370
- isValid: true,
371
- errors: []
372
- };
373
- }
374
- Object.assign(result, current);
375
- }
376
- }
377
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
378
- finally {
379
- try {
380
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
381
- }
382
- finally { if (e_1) throw e_1.error; }
383
- }
384
- }
385
- return result;
386
- };
387
- export var validate = function (context, params) {
388
- var data = new ValidatedData(context);
389
- Object.entries(params).forEach(function (_a) {
390
- var _b = __read(_a, 2), key = _b[0], prop = _b[1];
391
- return data.setParam(key, data.isValidContext
392
- ? validateOne(data.context, key, prop)
393
- : getDefault(void 0, prop));
394
- });
395
- return data;
396
- };
1
+ import { __read, __spreadArray, __values } from "tslib";
2
+ export var ValidatorType;
3
+ (function (ValidatorType) {
4
+ ValidatorType["number"] = "must be a number";
5
+ ValidatorType["integer"] = "must be an integer";
6
+ ValidatorType["integerUnlimited"] = "must be an integer or infinity";
7
+ ValidatorType["moreOrEqual"] = "must be a number greater than (or equal to) {arg1}";
8
+ ValidatorType["itemList"] = "must be an array of items {arg1}";
9
+ ValidatorType["boolean"] = "must be a boolean";
10
+ ValidatorType["object"] = "must be an object";
11
+ ValidatorType["element"] = "must be an html element";
12
+ ValidatorType["function"] = "must be a function";
13
+ ValidatorType["funcOfxArguments"] = "must have {arg1} argument(s)";
14
+ ValidatorType["funcOfxAndMoreArguments"] = "must have at least {arg1} argument(s)";
15
+ ValidatorType["funcOfXToYArguments"] = "must have {arg1} to {arg2} arguments";
16
+ ValidatorType["oneOfCan"] = "can be present as only one item of {arg1} list";
17
+ ValidatorType["oneOfMust"] = "must be present as only one item of {arg1} list";
18
+ ValidatorType["or"] = "must satisfy at least 1 validator from {arg1} list";
19
+ ValidatorType["enum"] = "must belong to {arg1} list";
20
+ })(ValidatorType || (ValidatorType = {}));
21
+ var getError = function (msg, args) {
22
+ return (args || ['']).reduce(function (acc, arg, index) { return acc.replace("{arg".concat(index + 1, "}"), arg); }, msg);
23
+ };
24
+ var getNumber = function (value) {
25
+ return typeof value === 'number' || (typeof value === 'string' && value !== '') ? Number(value) : NaN;
26
+ };
27
+ var onNumber = function (value) {
28
+ var parsedValue = getNumber(value);
29
+ var errors = [];
30
+ if (Number.isNaN(parsedValue)) {
31
+ errors.push(ValidatorType.number);
32
+ }
33
+ return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
34
+ };
35
+ var onInteger = function (value) {
36
+ var errors = [];
37
+ value = getNumber(value);
38
+ var parsedValue = parseInt(String(value), 10);
39
+ if (value !== parsedValue) {
40
+ errors.push(ValidatorType.integer);
41
+ }
42
+ return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
43
+ };
44
+ var onIntegerUnlimited = function (value) {
45
+ var parsedValue = value;
46
+ var errors = [];
47
+ value = getNumber(value);
48
+ if (!Number.isFinite(value)) {
49
+ parsedValue = value;
50
+ }
51
+ else {
52
+ parsedValue = parseInt(String(value), 10);
53
+ }
54
+ if (value !== parsedValue) {
55
+ errors.push(ValidatorType.integerUnlimited);
56
+ }
57
+ return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
58
+ };
59
+ var onMoreOrEqual = function (limit, fallback) {
60
+ return function (value) {
61
+ var result = onNumber(value);
62
+ if (!result.isValid) {
63
+ return result;
64
+ }
65
+ var parsedValue = result.value;
66
+ var errors = [];
67
+ if (parsedValue < limit) {
68
+ if (!fallback) {
69
+ errors.push(getError(ValidatorType.moreOrEqual, [String(limit)]));
70
+ }
71
+ else {
72
+ parsedValue = limit;
73
+ }
74
+ }
75
+ return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
76
+ };
77
+ };
78
+ var onBoolean = function (value) {
79
+ var errors = [];
80
+ var parsedValue = value;
81
+ if (value === 'true') {
82
+ parsedValue = true;
83
+ }
84
+ else if (value === 'false') {
85
+ parsedValue = false;
86
+ }
87
+ if (typeof parsedValue !== 'boolean') {
88
+ errors.push(ValidatorType.boolean);
89
+ }
90
+ return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
91
+ };
92
+ var onObject = function (value) {
93
+ var errors = [];
94
+ if (!value || Object.prototype.toString.call(value) !== '[object Object]') {
95
+ errors.push(ValidatorType.object);
96
+ }
97
+ return { value: value, isSet: true, isValid: !errors.length, errors: errors };
98
+ };
99
+ var onHtmlElement = function (value) {
100
+ var errors = [];
101
+ if (!(value instanceof Element) && !(value instanceof Document)) {
102
+ errors.push(ValidatorType.element);
103
+ }
104
+ return { value: value, isSet: true, isValid: !errors.length, errors: errors };
105
+ };
106
+ var onItemList = function (value) {
107
+ var parsedValue = value;
108
+ var errors = [];
109
+ if (!Array.isArray(value)) {
110
+ errors.push(ValidatorType.itemList);
111
+ parsedValue = [];
112
+ }
113
+ else if (!value.length) {
114
+ errors.push(getError(ValidatorType.itemList, ['with at least 1 item']));
115
+ }
116
+ else if (value.length > 1) {
117
+ var type = typeof value[0];
118
+ for (var i = value.length - 1; i >= 0; i--) {
119
+ if (typeof value[i] !== type) {
120
+ errors.push(getError(ValidatorType.itemList, ['of items of the same type']));
121
+ break;
122
+ }
123
+ }
124
+ }
125
+ return { value: parsedValue, isSet: true, isValid: !errors.length, errors: errors };
126
+ };
127
+ var onFunction = function (value) {
128
+ var errors = [];
129
+ if (typeof value !== 'function') {
130
+ errors.push(ValidatorType.function);
131
+ }
132
+ return { value: value, isSet: true, isValid: !errors.length, errors: errors };
133
+ };
134
+ var onFunctionWithXArguments = function (argsCount) { return function (value) {
135
+ var result = onFunction(value);
136
+ if (!result.isValid) {
137
+ return result;
138
+ }
139
+ value = result.value;
140
+ var errors = [];
141
+ if (value.length !== argsCount) {
142
+ errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));
143
+ }
144
+ return { value: value, isSet: true, isValid: !errors.length, errors: errors };
145
+ }; };
146
+ var onFunctionWithXAndMoreArguments = function (argsCount) {
147
+ return function (value) {
148
+ var result = onFunction(value);
149
+ if (!result.isValid) {
150
+ return result;
151
+ }
152
+ value = result.value;
153
+ var errors = [];
154
+ if (value.length < argsCount) {
155
+ errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));
156
+ }
157
+ return { value: value, isSet: true, isValid: !errors.length, errors: errors };
158
+ };
159
+ };
160
+ var onFunctionWithXToYArguments = function (from, to) {
161
+ return function (value) {
162
+ var result = onFunction(value);
163
+ if (!result.isValid) {
164
+ return result;
165
+ }
166
+ value = result.value;
167
+ var errors = [];
168
+ if (value.length < from || value.length > to) {
169
+ errors.push(getError(ValidatorType.funcOfXToYArguments, [String(from), String(to)]));
170
+ }
171
+ return { value: value, isSet: true, isValid: !errors.length, errors: errors };
172
+ };
173
+ };
174
+ var onOneOf = function (tokens, must) {
175
+ return function (value, context) {
176
+ var errors = [];
177
+ var isSet = value !== void 0;
178
+ var noOneIsPresent = !isSet;
179
+ var err = must ? ValidatorType.oneOfMust : ValidatorType.oneOfCan;
180
+ if (!Array.isArray(tokens) || !tokens.length) {
181
+ errors.push(getError(err, ['undefined']));
182
+ }
183
+ else {
184
+ for (var i = tokens.length - 1; i >= 0; i--) {
185
+ var token = tokens[i];
186
+ if (typeof token !== 'string') {
187
+ errors.push(getError(err, [tokens.join('", "')]) + ' (non-string token)');
188
+ break;
189
+ }
190
+ var isAnotherPresent = context && Object.prototype.hasOwnProperty.call(context, token);
191
+ if (isSet && isAnotherPresent) {
192
+ errors.push(getError(err, [tokens.join('", "')]) + " (".concat(token, " is present)"));
193
+ break;
194
+ }
195
+ if (noOneIsPresent && isAnotherPresent) {
196
+ noOneIsPresent = false;
197
+ }
198
+ }
199
+ if (must && noOneIsPresent) {
200
+ errors.push(getError(err, [tokens.join('", "')]));
201
+ }
202
+ }
203
+ return { value: value, isSet: isSet, isValid: !errors.length, errors: errors };
204
+ };
205
+ };
206
+ var onOr = function (validators) {
207
+ return function (value) {
208
+ var errors = [];
209
+ if (validators.every(function (validator) { return !validator.method(value).isValid; })) {
210
+ errors.push(validators.map(function (v) { return v.type; }).join(' OR '));
211
+ }
212
+ return { value: value, isSet: true, isValid: !errors.length, errors: errors };
213
+ };
214
+ };
215
+ var onEnum = function (list) {
216
+ return function (value) {
217
+ var errors = [];
218
+ var values = Object.keys(list)
219
+ .filter(function (k) { return isNaN(Number(k)); })
220
+ .map(function (k) { return list[k]; });
221
+ if (!values.some(function (item) { return item === value; })) {
222
+ errors.push(getError(ValidatorType.enum, ['[' + values.join(',') + ']']));
223
+ }
224
+ return { value: value, isSet: true, isValid: !errors.length, errors: errors };
225
+ };
226
+ };
227
+ export var VALIDATORS = {
228
+ NUMBER: {
229
+ type: ValidatorType.number,
230
+ method: onNumber
231
+ },
232
+ INTEGER: {
233
+ type: ValidatorType.integer,
234
+ method: onInteger
235
+ },
236
+ INTEGER_UNLIMITED: {
237
+ type: ValidatorType.integerUnlimited,
238
+ method: onIntegerUnlimited
239
+ },
240
+ MORE_OR_EQUAL: function (limit, fallback) { return ({
241
+ type: ValidatorType.moreOrEqual,
242
+ method: onMoreOrEqual(limit, fallback)
243
+ }); },
244
+ BOOLEAN: {
245
+ type: ValidatorType.boolean,
246
+ method: onBoolean
247
+ },
248
+ OBJECT: {
249
+ type: ValidatorType.object,
250
+ method: onObject
251
+ },
252
+ ITEM_LIST: {
253
+ type: ValidatorType.itemList,
254
+ method: onItemList
255
+ },
256
+ ELEMENT: {
257
+ type: ValidatorType.element,
258
+ method: onHtmlElement
259
+ },
260
+ FUNC: {
261
+ type: ValidatorType.function,
262
+ method: onFunction
263
+ },
264
+ FUNC_WITH_X_ARGUMENTS: function (count) { return ({
265
+ type: ValidatorType.funcOfxArguments,
266
+ method: onFunctionWithXArguments(count)
267
+ }); },
268
+ FUNC_WITH_X_AND_MORE_ARGUMENTS: function (count) { return ({
269
+ type: ValidatorType.funcOfxAndMoreArguments,
270
+ method: onFunctionWithXAndMoreArguments(count)
271
+ }); },
272
+ FUNC_WITH_X_TO_Y_ARGUMENTS: function (from, to) { return ({
273
+ type: ValidatorType.funcOfXToYArguments,
274
+ method: onFunctionWithXToYArguments(from, to)
275
+ }); },
276
+ ONE_OF_CAN: function (list) { return ({
277
+ type: ValidatorType.oneOfCan,
278
+ method: onOneOf(list, false)
279
+ }); },
280
+ ONE_OF_MUST: function (list) { return ({
281
+ type: ValidatorType.oneOfMust,
282
+ method: onOneOf(list, true)
283
+ }); },
284
+ OR: function (list) { return ({
285
+ type: ValidatorType.or,
286
+ method: onOr(list)
287
+ }); },
288
+ ENUM: function (list) { return ({
289
+ type: ValidatorType.enum,
290
+ method: onEnum(list)
291
+ }); }
292
+ };
293
+ var ValidatedData = /** @class */ (function () {
294
+ function ValidatedData(context) {
295
+ this.params = {};
296
+ this.contextErrors = [];
297
+ this.errors = [];
298
+ this.isValid = true;
299
+ this.setContext(context);
300
+ }
301
+ ValidatedData.prototype.setContext = function (context) {
302
+ if (!context || Object.prototype.toString.call(context) !== '[object Object]') {
303
+ this.setCommonError('context is not an object');
304
+ this.isValidContext = false;
305
+ }
306
+ else {
307
+ this.isValidContext = true;
308
+ }
309
+ this.context = context;
310
+ };
311
+ ValidatedData.prototype.setValidity = function () {
312
+ var _this = this;
313
+ this.errors = Object.keys(this.params).reduce(function (acc, key) { return __spreadArray(__spreadArray([], __read(acc), false), __read(_this.params[key].errors), false); }, []);
314
+ this.isValid = !this.errors.length;
315
+ };
316
+ ValidatedData.prototype.setCommonError = function (error) {
317
+ this.contextErrors.push(error);
318
+ this.errors.push(error);
319
+ this.isValid = false;
320
+ };
321
+ ValidatedData.prototype.setParam = function (token, value) {
322
+ if (!value.isValid) {
323
+ value.errors = !value.isSet
324
+ ? ["\"".concat(token, "\" must be set")]
325
+ : value.errors.map(function (err) { return "\"".concat(token, "\" ").concat(err); });
326
+ }
327
+ this.params[token] = value;
328
+ this.setValidity();
329
+ };
330
+ ValidatedData.prototype.showErrors = function () {
331
+ return this.errors.length ? 'validation failed: ' + this.errors.join(', ') : '';
332
+ };
333
+ return ValidatedData;
334
+ }());
335
+ export { ValidatedData };
336
+ export var runValidator = function (current, validator, context) {
337
+ var value = current.value, errors = current.errors;
338
+ var result = validator.method(value, context);
339
+ var _errors = __spreadArray(__spreadArray([], __read(errors), false), __read(result.errors), false);
340
+ return {
341
+ value: result.value,
342
+ isSet: result.isSet,
343
+ isValid: !_errors.length,
344
+ errors: _errors
345
+ };
346
+ };
347
+ var getDefault = function (value, prop) {
348
+ var empty = value === void 0;
349
+ var auto = !prop.mandatory && prop.defaultValue !== void 0;
350
+ return {
351
+ value: !empty ? value : auto ? prop.defaultValue : void 0,
352
+ isSet: !empty || auto,
353
+ isValid: !empty || !prop.mandatory,
354
+ errors: []
355
+ };
356
+ };
357
+ export var validateOne = function (context, name, prop) {
358
+ var e_1, _a;
359
+ var result = getDefault(context[name], prop);
360
+ if (!result.isSet) {
361
+ var oneOfMust = prop.validators.find(function (v) { return v.type === ValidatorType.oneOfMust; });
362
+ if (oneOfMust) {
363
+ return runValidator(result, oneOfMust, context);
364
+ }
365
+ }
366
+ else {
367
+ try {
368
+ for (var _b = __values(Object.values(prop.validators)), _c = _b.next(); !_c.done; _c = _b.next()) {
369
+ var validator = _c.value;
370
+ var current = runValidator(result, validator, context);
371
+ if (!current.isValid && prop.defaultValue !== void 0) {
372
+ return {
373
+ value: prop.defaultValue,
374
+ isSet: true,
375
+ isValid: true,
376
+ errors: []
377
+ };
378
+ }
379
+ Object.assign(result, current);
380
+ }
381
+ }
382
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
383
+ finally {
384
+ try {
385
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
386
+ }
387
+ finally { if (e_1) throw e_1.error; }
388
+ }
389
+ }
390
+ return result;
391
+ };
392
+ export var validate = function (context, params) {
393
+ var data = new ValidatedData(context);
394
+ Object.entries(params).forEach(function (_a) {
395
+ var _b = __read(_a, 2), key = _b[0], prop = _b[1];
396
+ return data.setParam(key, data.isValidContext ? validateOne(data.context, key, prop) : getDefault(void 0, prop));
397
+ });
398
+ return data;
399
+ };
397
400
  //# sourceMappingURL=validation.js.map