rubico 2.12.1 → 2.13.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/Transducer.js +57 -21
  2. package/_internal/functionArrayAllSeries.js +4 -3
  3. package/_internal/functionObjectAllSeries.js +65 -0
  4. package/_internal/genericTransform.js +0 -1
  5. package/all.js +36 -16
  6. package/and.js +3 -3
  7. package/assign.js +3 -3
  8. package/compose.js +6 -6
  9. package/dist/Transducer.es.js +1 -1
  10. package/dist/Transducer.es.min.js +1 -1
  11. package/dist/Transducer.js +1 -1
  12. package/dist/Transducer.min.js +1 -1
  13. package/dist/Transducer.mjs +1 -1
  14. package/dist/__.es.js +1 -1
  15. package/dist/__.es.min.js +1 -1
  16. package/dist/__.js +1 -1
  17. package/dist/__.min.js +1 -1
  18. package/dist/__.mjs +1 -1
  19. package/dist/all.es.js +112 -8
  20. package/dist/all.es.min.js +2 -2
  21. package/dist/all.js +112 -8
  22. package/dist/all.min.js +2 -2
  23. package/dist/all.mjs +112 -8
  24. package/dist/always.es.js +1 -1
  25. package/dist/always.es.min.js +1 -1
  26. package/dist/always.js +1 -1
  27. package/dist/always.min.js +1 -1
  28. package/dist/always.mjs +1 -1
  29. package/dist/and.es.js +1 -1
  30. package/dist/and.es.min.js +1 -1
  31. package/dist/and.js +1 -1
  32. package/dist/and.min.js +1 -1
  33. package/dist/and.mjs +1 -1
  34. package/dist/assign.es.js +1 -1
  35. package/dist/assign.es.min.js +1 -1
  36. package/dist/assign.js +1 -1
  37. package/dist/assign.min.js +1 -1
  38. package/dist/assign.mjs +1 -1
  39. package/dist/compose.es.js +1 -1
  40. package/dist/compose.es.min.js +1 -1
  41. package/dist/compose.js +1 -1
  42. package/dist/compose.min.js +1 -1
  43. package/dist/compose.mjs +1 -1
  44. package/dist/curry.es.js +1 -1
  45. package/dist/curry.es.min.js +1 -1
  46. package/dist/curry.js +1 -1
  47. package/dist/curry.min.js +1 -1
  48. package/dist/curry.mjs +1 -1
  49. package/dist/eq.es.js +1 -1
  50. package/dist/eq.es.min.js +1 -1
  51. package/dist/eq.js +1 -1
  52. package/dist/eq.min.js +1 -1
  53. package/dist/eq.mjs +1 -1
  54. package/dist/every.es.js +1 -1
  55. package/dist/every.es.min.js +1 -1
  56. package/dist/every.js +1 -1
  57. package/dist/every.min.js +1 -1
  58. package/dist/every.mjs +1 -1
  59. package/dist/filter.es.js +1 -1
  60. package/dist/filter.es.min.js +1 -1
  61. package/dist/filter.js +1 -1
  62. package/dist/filter.min.js +1 -1
  63. package/dist/filter.mjs +1 -1
  64. package/dist/flatMap.es.js +1 -1
  65. package/dist/flatMap.es.min.js +1 -1
  66. package/dist/flatMap.js +1 -1
  67. package/dist/flatMap.min.js +1 -1
  68. package/dist/flatMap.mjs +1 -1
  69. package/dist/forEach.es.js +1 -1
  70. package/dist/forEach.es.min.js +1 -1
  71. package/dist/forEach.js +1 -1
  72. package/dist/forEach.min.js +1 -1
  73. package/dist/forEach.mjs +1 -1
  74. package/dist/get.es.js +1 -1
  75. package/dist/get.es.min.js +1 -1
  76. package/dist/get.js +1 -1
  77. package/dist/get.min.js +1 -1
  78. package/dist/get.mjs +1 -1
  79. package/dist/gt.es.js +1 -1
  80. package/dist/gt.es.min.js +1 -1
  81. package/dist/gt.js +1 -1
  82. package/dist/gt.min.js +1 -1
  83. package/dist/gt.mjs +1 -1
  84. package/dist/gte.es.js +1 -1
  85. package/dist/gte.es.min.js +1 -1
  86. package/dist/gte.js +1 -1
  87. package/dist/gte.min.js +1 -1
  88. package/dist/gte.mjs +1 -1
  89. package/dist/lt.es.js +1 -1
  90. package/dist/lt.es.min.js +1 -1
  91. package/dist/lt.js +1 -1
  92. package/dist/lt.min.js +1 -1
  93. package/dist/lt.mjs +1 -1
  94. package/dist/lte.es.js +1 -1
  95. package/dist/lte.es.min.js +1 -1
  96. package/dist/lte.js +1 -1
  97. package/dist/lte.min.js +1 -1
  98. package/dist/lte.mjs +1 -1
  99. package/dist/map.es.js +1 -1
  100. package/dist/map.es.min.js +1 -1
  101. package/dist/map.js +1 -1
  102. package/dist/map.min.js +1 -1
  103. package/dist/map.mjs +1 -1
  104. package/dist/not.es.js +1 -1
  105. package/dist/not.es.min.js +1 -1
  106. package/dist/not.js +1 -1
  107. package/dist/not.min.js +1 -1
  108. package/dist/not.mjs +1 -1
  109. package/dist/omit.es.js +1 -1
  110. package/dist/omit.es.min.js +1 -1
  111. package/dist/omit.js +1 -1
  112. package/dist/omit.min.js +1 -1
  113. package/dist/omit.mjs +1 -1
  114. package/dist/or.es.js +1 -1
  115. package/dist/or.es.min.js +1 -1
  116. package/dist/or.js +1 -1
  117. package/dist/or.min.js +1 -1
  118. package/dist/or.mjs +1 -1
  119. package/dist/pick.es.js +1 -1
  120. package/dist/pick.es.min.js +1 -1
  121. package/dist/pick.js +1 -1
  122. package/dist/pick.min.js +1 -1
  123. package/dist/pick.mjs +1 -1
  124. package/dist/pipe.es.js +1 -1
  125. package/dist/pipe.es.min.js +1 -1
  126. package/dist/pipe.js +1 -1
  127. package/dist/pipe.min.js +1 -1
  128. package/dist/pipe.mjs +1 -1
  129. package/dist/reduce.es.js +1 -1
  130. package/dist/reduce.es.min.js +1 -1
  131. package/dist/reduce.js +1 -1
  132. package/dist/reduce.min.js +1 -1
  133. package/dist/reduce.mjs +1 -1
  134. package/dist/rubico.es.js +112 -61
  135. package/dist/rubico.es.min.js +2 -2
  136. package/dist/rubico.global.js +112 -61
  137. package/dist/rubico.global.min.js +2 -2
  138. package/dist/rubico.js +112 -61
  139. package/dist/rubico.min.js +2 -2
  140. package/dist/rubico.mjs +112 -61
  141. package/dist/set.es.js +1 -1
  142. package/dist/set.es.min.js +1 -1
  143. package/dist/set.js +1 -1
  144. package/dist/set.min.js +1 -1
  145. package/dist/set.mjs +1 -1
  146. package/dist/some.es.js +1 -1
  147. package/dist/some.es.min.js +1 -1
  148. package/dist/some.js +1 -1
  149. package/dist/some.min.js +1 -1
  150. package/dist/some.mjs +1 -1
  151. package/dist/switchCase.es.js +1 -1
  152. package/dist/switchCase.es.min.js +1 -1
  153. package/dist/switchCase.js +1 -1
  154. package/dist/switchCase.min.js +1 -1
  155. package/dist/switchCase.mjs +1 -1
  156. package/dist/tap.es.js +1 -1
  157. package/dist/tap.es.min.js +1 -1
  158. package/dist/tap.js +1 -1
  159. package/dist/tap.min.js +1 -1
  160. package/dist/tap.mjs +1 -1
  161. package/dist/thunkify.es.js +1 -1
  162. package/dist/thunkify.es.min.js +1 -1
  163. package/dist/thunkify.js +1 -1
  164. package/dist/thunkify.min.js +1 -1
  165. package/dist/thunkify.mjs +1 -1
  166. package/dist/transform.es.js +1 -3
  167. package/dist/transform.es.min.js +2 -2
  168. package/dist/transform.js +1 -3
  169. package/dist/transform.min.js +1 -1
  170. package/dist/transform.mjs +1 -3
  171. package/dist/tryCatch.es.js +1 -1
  172. package/dist/tryCatch.es.min.js +1 -1
  173. package/dist/tryCatch.js +1 -1
  174. package/dist/tryCatch.min.js +1 -1
  175. package/dist/tryCatch.mjs +1 -1
  176. package/dist/x/append.es.js +1 -1
  177. package/dist/x/append.es.min.js +1 -1
  178. package/dist/x/append.js +1 -1
  179. package/dist/x/append.min.js +1 -1
  180. package/dist/x/append.mjs +1 -1
  181. package/dist/x/callProp.es.js +1 -1
  182. package/dist/x/callProp.es.min.js +1 -1
  183. package/dist/x/callProp.js +1 -1
  184. package/dist/x/callProp.min.js +1 -1
  185. package/dist/x/callProp.mjs +1 -1
  186. package/dist/x/defaultsDeep.es.js +1 -1
  187. package/dist/x/defaultsDeep.es.min.js +1 -1
  188. package/dist/x/defaultsDeep.js +1 -1
  189. package/dist/x/defaultsDeep.min.js +1 -1
  190. package/dist/x/defaultsDeep.mjs +1 -1
  191. package/dist/x/differenceWith.es.js +1 -1
  192. package/dist/x/differenceWith.es.min.js +1 -1
  193. package/dist/x/differenceWith.js +1 -1
  194. package/dist/x/differenceWith.min.js +1 -1
  195. package/dist/x/differenceWith.mjs +1 -1
  196. package/dist/x/filterOut.es.js +1 -1
  197. package/dist/x/filterOut.es.min.js +1 -1
  198. package/dist/x/filterOut.js +1 -1
  199. package/dist/x/filterOut.min.js +1 -1
  200. package/dist/x/filterOut.mjs +1 -1
  201. package/dist/x/find.es.js +1 -1
  202. package/dist/x/find.es.min.js +1 -1
  203. package/dist/x/find.js +1 -1
  204. package/dist/x/find.min.js +1 -1
  205. package/dist/x/find.mjs +1 -1
  206. package/dist/x/findIndex.es.js +1 -1
  207. package/dist/x/findIndex.es.min.js +1 -1
  208. package/dist/x/findIndex.js +1 -1
  209. package/dist/x/findIndex.min.js +1 -1
  210. package/dist/x/findIndex.mjs +1 -1
  211. package/dist/x/first.es.js +1 -1
  212. package/dist/x/first.es.min.js +1 -1
  213. package/dist/x/first.js +1 -1
  214. package/dist/x/first.min.js +1 -1
  215. package/dist/x/first.mjs +1 -1
  216. package/dist/x/flatten.es.js +1 -1
  217. package/dist/x/flatten.es.min.js +1 -1
  218. package/dist/x/flatten.js +1 -1
  219. package/dist/x/flatten.min.js +1 -1
  220. package/dist/x/flatten.mjs +1 -1
  221. package/dist/x/groupBy.es.js +1 -1
  222. package/dist/x/groupBy.es.min.js +1 -1
  223. package/dist/x/groupBy.js +1 -1
  224. package/dist/x/groupBy.min.js +1 -1
  225. package/dist/x/groupBy.mjs +1 -1
  226. package/dist/x/has.es.js +1 -1
  227. package/dist/x/has.es.min.js +1 -1
  228. package/dist/x/has.js +1 -1
  229. package/dist/x/has.min.js +1 -1
  230. package/dist/x/has.mjs +1 -1
  231. package/dist/x/identity.es.js +1 -1
  232. package/dist/x/identity.es.min.js +1 -1
  233. package/dist/x/identity.js +1 -1
  234. package/dist/x/identity.min.js +1 -1
  235. package/dist/x/identity.mjs +1 -1
  236. package/dist/x/includes.es.js +1 -1
  237. package/dist/x/includes.es.min.js +1 -1
  238. package/dist/x/includes.js +1 -1
  239. package/dist/x/includes.min.js +1 -1
  240. package/dist/x/includes.mjs +1 -1
  241. package/dist/x/isDeepEqual.es.js +1 -1
  242. package/dist/x/isDeepEqual.es.min.js +1 -1
  243. package/dist/x/isDeepEqual.js +1 -1
  244. package/dist/x/isDeepEqual.min.js +1 -1
  245. package/dist/x/isDeepEqual.mjs +1 -1
  246. package/dist/x/isEmpty.es.js +1 -1
  247. package/dist/x/isEmpty.es.min.js +1 -1
  248. package/dist/x/isEmpty.js +1 -1
  249. package/dist/x/isEmpty.min.js +1 -1
  250. package/dist/x/isEmpty.mjs +1 -1
  251. package/dist/x/isEqual.es.js +1 -1
  252. package/dist/x/isEqual.es.min.js +1 -1
  253. package/dist/x/isEqual.js +1 -1
  254. package/dist/x/isEqual.min.js +1 -1
  255. package/dist/x/isEqual.mjs +1 -1
  256. package/dist/x/isFunction.es.js +1 -1
  257. package/dist/x/isFunction.es.min.js +1 -1
  258. package/dist/x/isFunction.js +1 -1
  259. package/dist/x/isFunction.min.js +1 -1
  260. package/dist/x/isFunction.mjs +1 -1
  261. package/dist/x/isIn.es.js +1 -1
  262. package/dist/x/isIn.es.min.js +1 -1
  263. package/dist/x/isIn.js +1 -1
  264. package/dist/x/isIn.min.js +1 -1
  265. package/dist/x/isIn.mjs +1 -1
  266. package/dist/x/isObject.es.js +1 -1
  267. package/dist/x/isObject.es.min.js +1 -1
  268. package/dist/x/isObject.js +1 -1
  269. package/dist/x/isObject.min.js +1 -1
  270. package/dist/x/isObject.mjs +1 -1
  271. package/dist/x/isString.es.js +1 -1
  272. package/dist/x/isString.es.min.js +1 -1
  273. package/dist/x/isString.js +1 -1
  274. package/dist/x/isString.min.js +1 -1
  275. package/dist/x/isString.mjs +1 -1
  276. package/dist/x/keys.es.js +1 -1
  277. package/dist/x/keys.es.min.js +1 -1
  278. package/dist/x/keys.js +1 -1
  279. package/dist/x/keys.min.js +1 -1
  280. package/dist/x/keys.mjs +1 -1
  281. package/dist/x/last.es.js +1 -1
  282. package/dist/x/last.es.min.js +1 -1
  283. package/dist/x/last.js +1 -1
  284. package/dist/x/last.min.js +1 -1
  285. package/dist/x/last.mjs +1 -1
  286. package/dist/x/maxBy.es.js +1 -1
  287. package/dist/x/maxBy.es.min.js +1 -1
  288. package/dist/x/maxBy.js +1 -1
  289. package/dist/x/maxBy.min.js +1 -1
  290. package/dist/x/maxBy.mjs +1 -1
  291. package/dist/x/noop.es.js +1 -1
  292. package/dist/x/noop.es.min.js +1 -1
  293. package/dist/x/noop.js +1 -1
  294. package/dist/x/noop.min.js +1 -1
  295. package/dist/x/noop.mjs +1 -1
  296. package/dist/x/pluck.es.js +1 -1
  297. package/dist/x/pluck.es.min.js +1 -1
  298. package/dist/x/pluck.js +1 -1
  299. package/dist/x/pluck.min.js +1 -1
  300. package/dist/x/pluck.mjs +1 -1
  301. package/dist/x/prepend.es.js +1 -1
  302. package/dist/x/prepend.es.min.js +1 -1
  303. package/dist/x/prepend.js +1 -1
  304. package/dist/x/prepend.min.js +1 -1
  305. package/dist/x/prepend.mjs +1 -1
  306. package/dist/x/size.es.js +1 -1
  307. package/dist/x/size.es.min.js +1 -1
  308. package/dist/x/size.js +1 -1
  309. package/dist/x/size.min.js +1 -1
  310. package/dist/x/size.mjs +1 -1
  311. package/dist/x/trace.es.js +1 -1
  312. package/dist/x/trace.es.min.js +1 -1
  313. package/dist/x/trace.js +1 -1
  314. package/dist/x/trace.min.js +1 -1
  315. package/dist/x/trace.mjs +1 -1
  316. package/dist/x/unionWith.es.js +1 -1
  317. package/dist/x/unionWith.es.min.js +1 -1
  318. package/dist/x/unionWith.js +1 -1
  319. package/dist/x/unionWith.min.js +1 -1
  320. package/dist/x/unionWith.mjs +1 -1
  321. package/dist/x/uniq.es.js +1 -1
  322. package/dist/x/uniq.es.min.js +1 -1
  323. package/dist/x/uniq.js +1 -1
  324. package/dist/x/uniq.min.js +1 -1
  325. package/dist/x/uniq.mjs +1 -1
  326. package/dist/x/unless.es.js +1 -1
  327. package/dist/x/unless.es.min.js +1 -1
  328. package/dist/x/unless.js +1 -1
  329. package/dist/x/unless.min.js +1 -1
  330. package/dist/x/unless.mjs +1 -1
  331. package/dist/x/values.es.js +1 -1
  332. package/dist/x/values.es.min.js +1 -1
  333. package/dist/x/values.js +1 -1
  334. package/dist/x/values.min.js +1 -1
  335. package/dist/x/values.mjs +1 -1
  336. package/dist/x/when.es.js +1 -1
  337. package/dist/x/when.es.min.js +1 -1
  338. package/dist/x/when.js +1 -1
  339. package/dist/x/when.min.js +1 -1
  340. package/dist/x/when.mjs +1 -1
  341. package/eq.js +7 -7
  342. package/es.js +112 -61
  343. package/every.js +2 -2
  344. package/filter.js +3 -3
  345. package/flatMap.js +3 -3
  346. package/forEach.js +6 -6
  347. package/gt.js +7 -7
  348. package/gte.js +7 -7
  349. package/index.js +112 -61
  350. package/lt.js +7 -7
  351. package/lte.js +7 -7
  352. package/map.js +11 -11
  353. package/not.js +3 -3
  354. package/or.js +3 -3
  355. package/package.json +1 -1
  356. package/pipe.js +6 -6
  357. package/reduce.js +8 -8
  358. package/some.js +2 -2
  359. package/switchCase.js +6 -6
  360. package/tap.js +7 -12
  361. package/transform.js +7 -7
  362. package/tryCatch.js +4 -7
  363. package/_internal/add.js +0 -12
package/Transducer.js CHANGED
@@ -11,8 +11,44 @@ const __ = require('./_internal/placeholder')
11
11
  /**
12
12
  * @name Transducer
13
13
  *
14
+ * @synopsis
15
+ * ```coffeescript [specscript]
16
+ * type Reducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
17
+ *
18
+ * type Transducer = Reducer=>Reducer
19
+ * ```
20
+ *
14
21
  * @description
15
- * Temporary repository of transducer functionality throughout rubico v1
22
+ * A transducer is a function that takes a `Reducer` and returns another `Reducer`. Transducers enable function chains with reducers - pass a reducer to a transducer to create a reducer with chained functionality. A `Reducer` is a function that defines a relationship between an accumulator and an item in a transformation, and can be used in a reducing operation, such as with Rubico's [reduce](/docs/reduce) or vanilla JavaScript [Array.prototype.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce).
23
+ *
24
+ * ```javascript [playground]
25
+ * const isOdd = number => number % 2 == 1
26
+ *
27
+ * const asyncSquare = async number => number ** 2
28
+ *
29
+ * const numbers = [1, 2, 3, 4, 5]
30
+ *
31
+ * const transducer = compose(
32
+ * Transducer.filter(isOdd),
33
+ * Transducer.map(asyncSquare)
34
+ * )
35
+ *
36
+ * const transformed = await transform(numbers, transducer, [])
37
+ *
38
+ * console.log(transformed)
39
+ * ```
40
+ *
41
+ * The following are the core building blocks for creating transducers with Rubico, and are offered through this [Transducer](/docs/Transducer) module.
42
+ *
43
+ * * [Transducer.map](/docs/Transducer.map)
44
+ * * [Transducer.filter](/docs/Transducer.filter)
45
+ * * [Transducer.flatMap](/docs/Transducer.flatMap)
46
+ * * [Transducer.forEach](/docs/Transducer.forEach)
47
+ * * [Transducer.passthrough](/docs/Transducer.passthrough)
48
+ * * [Transducer.tryCatch](/docs/Transducer.tryCatch)
49
+ *
50
+ * See also:
51
+ * * [Transducers Crash Course](/blog/transducers-crash-course)
16
52
  */
17
53
  const Transducer = {}
18
54
 
@@ -21,11 +57,11 @@ const Transducer = {}
21
57
  *
22
58
  * @synopsis
23
59
  * ```coffeescript [specscript]
24
- * type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
25
- * type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
26
- * type UnarySyncOrAsyncMapper = (item any)=>(mappedItem Promise|any)
60
+ * type Reducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
61
+ * type Transducer = Reducer=>Reducer
62
+ * type Mapper = (item any)=>(mappedItem Promise|any)
27
63
  *
28
- * Transducer.map(mapper UnarySyncOrAsyncMapper) -> mappingTransducer Transducer
64
+ * Transducer.map(mapper Mapper) -> mappingTransducer Transducer
29
65
  * ```
30
66
  *
31
67
  * @description
@@ -73,11 +109,11 @@ Transducer.map = function transducerMap(mapper) {
73
109
  *
74
110
  * @synopsis
75
111
  * ```coffeescript [specscript]
76
- * type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
77
- * type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
78
- * type UnarySyncOrAsyncPredicate = any=>Promise|boolean|any
112
+ * type Reducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
113
+ * type Transducer = Reducer=>Reducer
114
+ * type Predicate = any=>Promise|boolean|any
79
115
  *
80
- * Transducer.filter(predicate UnarySyncOrAsyncPredicate) -> filteringTransducer Transducer
116
+ * Transducer.filter(predicate Predicate) -> filteringTransducer Transducer
81
117
  * ```
82
118
  *
83
119
  * @description
@@ -117,12 +153,12 @@ Transducer.filter = function transducerFilter(predicate) {
117
153
  *
118
154
  * @synopsis
119
155
  * ```coffeescript [specscript]
120
- * type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
121
- * type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
156
+ * type Reducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
157
+ * type Transducer = Reducer=>Reducer
122
158
  * type Monad = Array|String|Set|Generator|AsyncGenerator|{ flatMap: string }|{ chain: string }|Object
123
- * type UnarySyncOrAsyncFlatMapper = (item any)=>(monad Promise|Monad|any)
159
+ * type FlatMapper = (item any)=>(monad Promise|Monad|any)
124
160
  *
125
- * Transducer.flatMap(flatMapper UnarySyncOrAsyncFlatMapper) -> flatMappingTransducer Transducer
161
+ * Transducer.flatMap(flatMapper FlatMapper) -> flatMappingTransducer Transducer
126
162
  * ```
127
163
  *
128
164
  * @description
@@ -156,11 +192,11 @@ Transducer.flatMap = function transducerFlatMap(flatMapper) {
156
192
  *
157
193
  * @synopsis
158
194
  * ```coffeescript [specscript]
159
- * type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
160
- * type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
161
- * type UnarySyncOrAsyncCallback = (item any)=>Promise|undefined
195
+ * type Reducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
196
+ * type Transducer = Reducer=>Reducer
197
+ * type Callback = (item any)=>Promise|undefined
162
198
  *
163
- * Transducer.forEach(callback UnarySyncOrAsyncCallback) -> forEachTransducer Transducer
199
+ * Transducer.forEach(callback Callback) -> forEachTransducer Transducer
164
200
  * ```
165
201
  *
166
202
  * @description
@@ -193,8 +229,8 @@ Transducer.forEach = function transducerForEach(func) {
193
229
  *
194
230
  * @synopsis
195
231
  * ```coffeescript [specscript]
196
- * type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
197
- * type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
232
+ * type Reducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
233
+ * type Transducer = Reducer=>Reducer
198
234
  *
199
235
  * Transducer.passthrough -> Transducer
200
236
  * ```
@@ -234,8 +270,8 @@ Transducer.passthrough = function transducerPassthrough(reducer) {
234
270
  *
235
271
  * @synopsis
236
272
  * ```coffeescript [specscript]
237
- * type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
238
- * type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
273
+ * type Reducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
274
+ * type Transducer = Reducer=>Reducer
239
275
  *
240
276
  * Transducer.tryCatch(
241
277
  * transducerTryer Transducer,
@@ -11,7 +11,7 @@ const objectSet = require('./objectSet')
11
11
  * @synopsis
12
12
  * ```coffeescript [specscript]
13
13
  * asyncFunctionArrayAllSeries(
14
- * funcs Array<function>,
14
+ * funcs Array<function|any>,
15
15
  * args Array,
16
16
  * result Array,
17
17
  * funcsIndex number
@@ -34,14 +34,15 @@ const asyncFunctionArrayAllSeries = async function (funcs, args, result, funcsIn
34
34
  *
35
35
  * @synopsis
36
36
  * ```coffeescript [specscript]
37
- * functionArrayAllSeries(funcs Array<function>, args Array) -> Promise|Array
37
+ * functionArrayAllSeries(funcs Array<function|any>, args Array) -> Promise|Array
38
38
  * ```
39
39
  */
40
40
  const functionArrayAllSeries = function (funcs, args) {
41
41
  const funcsLength = funcs.length, result = []
42
42
  let funcsIndex = -1
43
43
  while (++funcsIndex < funcsLength) {
44
- const resultElement = funcs[funcsIndex](...args)
44
+ const f = funcs[funcsIndex]
45
+ const resultElement = typeof f == 'function' ? f(...args) : f
45
46
  if (isPromise(resultElement)) {
46
47
  return resultElement.then(funcConcat(
47
48
  curry3(objectSet, result, funcsIndex, __),
@@ -0,0 +1,65 @@
1
+ const funcConcat = require('./funcConcat')
2
+ const isPromise = require('./isPromise')
3
+ const __ = require('./placeholder')
4
+ const curry3 = require('./curry3')
5
+ const curry5 = require('./curry5')
6
+ const objectSet = require('./objectSet')
7
+
8
+ /**
9
+ * @name asyncFunctionObjectAllSeries
10
+ *
11
+ * @synopsis
12
+ * ```coffeescript [specscript]
13
+ * asyncFunctionObjectAllSeries(
14
+ * funcs Array<function>,
15
+ * args Array,
16
+ * result Array,
17
+ * keys Array<string>,
18
+ * keysIndex number
19
+ * ) -> Promise|Array
20
+ * ```
21
+ *
22
+ * @TODO benchmark vs regular promise handling
23
+ */
24
+ const asyncFunctionObjectAllSeries = async function (funcs, args, result, keys, keysIndex) {
25
+ const keysLength = keys.length
26
+ while (++keysIndex < keysLength) {
27
+ const key = keys[keysIndex]
28
+ const f = funcs[key]
29
+ let resultElement = typeof f == 'function' ? f(...args) : f
30
+ if (isPromise(resultElement)) {
31
+ resultElement = await resultElement
32
+ }
33
+ result[key] = resultElement
34
+ }
35
+ return result
36
+ }
37
+
38
+ /**
39
+ * @name functionObjectAllSeries
40
+ *
41
+ * @synopsis
42
+ * ```coffeescript [specscript]
43
+ * functionObjectAllSeries(funcs Object<function|any>, args Array) -> Promise|Array
44
+ * ```
45
+ */
46
+ const functionObjectAllSeries = function (funcs, args) {
47
+ const result = {}
48
+ const keys = Object.keys(funcs)
49
+ const keysLength = keys.length
50
+ let keysIndex = -1
51
+ while (++keysIndex < keysLength) {
52
+ const key = keys[keysIndex]
53
+ const f = funcs[key]
54
+ const resultElement = typeof f == 'function' ? f(...args) : f
55
+ if (isPromise(resultElement)) {
56
+ return resultElement.then(funcConcat(
57
+ curry3(objectSet, result, key, __),
58
+ curry5(asyncFunctionObjectAllSeries, funcs, args, __, keys, keysIndex)))
59
+ }
60
+ result[key] = resultElement
61
+ }
62
+ return result
63
+ }
64
+
65
+ module.exports = functionObjectAllSeries
@@ -7,7 +7,6 @@ const curry2 = require('./curry2')
7
7
  const curry3 = require('./curry3')
8
8
  const always = require('./always')
9
9
  const noop = require('./noop')
10
- const add = require('./add')
11
10
  const genericReduce = require('./genericReduce')
12
11
  const objectAssign = require('./objectAssign')
13
12
  const arrayExtend = require('./arrayExtend')
package/all.js CHANGED
@@ -9,6 +9,7 @@ const curry2 = require('./_internal/curry2')
9
9
  const curryArgs2 = require('./_internal/curryArgs2')
10
10
  const functionArrayAll = require('./_internal/functionArrayAll')
11
11
  const functionArrayAllSeries = require('./_internal/functionArrayAllSeries')
12
+ const functionObjectAllSeries = require('./_internal/functionObjectAllSeries')
12
13
  const functionObjectAll = require('./_internal/functionObjectAll')
13
14
 
14
15
  /**
@@ -36,16 +37,16 @@ const _allValues = function (values) {
36
37
  *
37
38
  * @synopsis
38
39
  * ```coffeescript [specscript]
39
- * type SyncOrAsyncResolver = (...arguments)=>Promise|any
40
- * type ResolverOrValue = SyncOrAsyncResolver|Promise|any
40
+ * type Resolver = (...arguments)=>Promise|any
41
+ * type ResolverOrValue = Resolver|Promise|any
41
42
  *
42
- * all(Promise|Array<Promise|any>) -> Promise|Array
43
- * all(...arguments, Array<ResolverOrValue>) -> Promise|Array
44
- * all(Array<ResolverOrValue>)(...arguments) -> Promise|Array
43
+ * all(values Promise|Array<Promise|any>) -> result Promise|Array
44
+ * all(...arguments, valuesOrFuncs Array<ResolverOrValue>) -> result Promise|Array
45
+ * all(valuesOrFuncs Array<ResolverOrValue>)(...arguments) -> result Promise|Array
45
46
  *
46
- * all(Promise|Object<Promise|any>) -> Promise|Object
47
- * all(...arguments, Object<ResolverOrValue>) -> Promise|Object
48
- * all(Object<ResolverOrValue>)(...arguments) -> Promise|Object
47
+ * all(values Promise|Object<Promise|any>) -> result Promise|Object
48
+ * all(...arguments, valuesOrFuncs Object<ResolverOrValue>) -> result Promise|Object
49
+ * all(valuesOrFuncs Object<ResolverOrValue>)(...arguments) -> result Promise|Object
49
50
  * ```
50
51
  *
51
52
  * @description
@@ -162,9 +163,9 @@ const all = function (...args) {
162
163
  *
163
164
  * @synopsis
164
165
  * ```coffeescript [specscript]
165
- * all.series(...arguments, Array<function>) -> Promise|Array
166
+ * all.series(...arguments, funcs Array<function>) -> result Promise|Array
166
167
  *
167
- * all.series(Array<function>)(...arguments) -> Promise|Array
168
+ * all.series(funcs Array<function>)(...arguments) -> result Promise|Array
168
169
  * ```
169
170
  *
170
171
  * @description
@@ -186,14 +187,33 @@ const all = function (...args) {
186
187
  */
187
188
 
188
189
  all.series = function allSeries(...args) {
189
- const funcs = args.pop()
190
- if (args.length == 0) {
191
- return curryArgs2(functionArrayAllSeries, funcs, __)
190
+ if (args.length == 1) {
191
+ const resolversOrValues = args[0]
192
+ if (isPromise(resolversOrValues)) {
193
+ return resolversOrValues.then(_allValues)
194
+ }
195
+ if (areAllValuesNonfunctions(resolversOrValues)) {
196
+ return _allValues(resolversOrValues)
197
+ }
198
+ return isArray(resolversOrValues)
199
+ ? curryArgs2(functionArrayAllSeries, resolversOrValues, __)
200
+ : curryArgs2(functionObjectAllSeries, resolversOrValues, __)
192
201
  }
193
- if (areAnyValuesPromises(args)) {
194
- return promiseAll(args).then(curry2(functionArrayAllSeries, funcs, __))
202
+
203
+ const resolversOrValues = args[args.length - 1]
204
+ const argValues = args.slice(0, -1)
205
+
206
+ if (areAnyValuesPromises(argValues)) {
207
+ return isArray(resolversOrValues)
208
+ ? promiseAll(argValues)
209
+ .then(curry2(functionArrayAllSeries, resolversOrValues, __))
210
+ : promiseAll(argValues)
211
+ .then(curry2(functionObjectAllSeries, resolversOrValues, __))
195
212
  }
196
- return functionArrayAllSeries(funcs, args)
213
+
214
+ return isArray(resolversOrValues)
215
+ ? functionArrayAllSeries(resolversOrValues, argValues)
216
+ : functionObjectAllSeries(resolversOrValues, argValues)
197
217
  }
198
218
 
199
219
  module.exports = all
package/and.js CHANGED
@@ -97,11 +97,11 @@ const areAllPredicatesTruthy = function (args, predicates) {
97
97
  *
98
98
  * @synopsis
99
99
  * ```coffeescript [specscript]
100
- * type SyncOrAsyncPredicate = (...arguments)=>Promise|boolean|any
100
+ * type Predicate = (...arguments)=>Promise|boolean|any
101
101
  *
102
102
  * and(values Array<boolean|any>) -> testResult boolean
103
- * and(...arguments, predicatesOrValues Array<SyncOrAsyncPredicate|boolean|any>) -> testResult Promise|boolean
104
- * and(predicatesOrValues Array<SyncOrAsyncPredicate|boolean|any>)(...arguments) -> testResult Promise|boolean
103
+ * and(...arguments, predicatesOrValues Array<Predicate|boolean|any>) -> testResult Promise|boolean
104
+ * and(predicatesOrValues Array<Predicate|boolean|any>)(...arguments) -> testResult Promise|boolean
105
105
  * ```
106
106
  *
107
107
  * @description
package/assign.js CHANGED
@@ -18,10 +18,10 @@ const _assign = function (object, funcs) {
18
18
  *
19
19
  * @synopsis
20
20
  * ```coffeescript [specscript]
21
- * type UnarySyncOrAsyncResolver = any=>Promise|any
21
+ * type Resolver = any=>Promise|any
22
22
  *
23
- * assign(Promise|Object, Object<UnarySyncOrAsyncResolver|Promise|any>) -> Promise|Object
24
- * assign(Object<UnarySyncOrAsyncResolver|Promise|any>)(Object) -> Promise|Object
23
+ * assign(Promise|Object, Object<Resolver|Promise|any>) -> Promise|Object
24
+ * assign(Object<Resolver|Promise|any>)(Object) -> Promise|Object
25
25
  * ```
26
26
  *
27
27
  * @description
package/compose.js CHANGED
@@ -10,14 +10,14 @@ const funcConcat = require('./_internal/funcConcat')
10
10
  *
11
11
  * @synopsis
12
12
  * ```coffeescript [specscript]
13
- * type SyncOrAsyncFunction = (...arguments)=>Promise|any
14
- * type UnarySyncOrAsyncFunction = any=>Promise|any
13
+ * type Function = (...arguments)=>Promise|any
14
+ * type UnaryFunction = any=>Promise|any
15
15
  *
16
- * funcs [SyncOrAsyncFunction, ...Array<UnarySyncOrAsyncFunction>]
16
+ * funcs [Function, ...Array<UnaryFunction>]
17
17
  *
18
- * compose(funcs)(...arguments) -> Promise|any
19
- * compose(...arguments, funcs) -> Promise|any
20
- * compose(...funcs)(...arguments) -> Promise|any
18
+ * compose(funcs)(...arguments) -> result Promise|any
19
+ * compose(...arguments, funcs) -> result Promise|any
20
+ * compose(...funcs)(...arguments) -> result Promise|any
21
21
  * ```
22
22
  *
23
23
  * @description
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
package/dist/__.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
package/dist/__.es.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
package/dist/__.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
package/dist/__.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
package/dist/__.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
package/dist/all.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
@@ -236,7 +236,8 @@ const functionArrayAllSeries = function (funcs, args) {
236
236
  const funcsLength = funcs.length, result = []
237
237
  let funcsIndex = -1
238
238
  while (++funcsIndex < funcsLength) {
239
- const resultElement = funcs[funcsIndex](...args)
239
+ const f = funcs[funcsIndex]
240
+ const resultElement = typeof f == 'function' ? f(...args) : f
240
241
  if (isPromise(resultElement)) {
241
242
  return resultElement.then(funcConcat(
242
243
  curry3(objectSet, result, funcsIndex, __),
@@ -247,6 +248,90 @@ const functionArrayAllSeries = function (funcs, args) {
247
248
  return result
248
249
  }
249
250
 
251
+ // argument resolver for curry5
252
+ const curry5ResolveArg0 = (
253
+ baseFunc, arg1, arg2, arg3, arg4,
254
+ ) => function arg0Resolver(arg0) {
255
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
256
+ }
257
+
258
+ // argument resolver for curry5
259
+ const curry5ResolveArg1 = (
260
+ baseFunc, arg0, arg2, arg3, arg4,
261
+ ) => function arg1Resolver(arg1) {
262
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
263
+ }
264
+
265
+ // argument resolver for curry5
266
+ const curry5ResolveArg2 = (
267
+ baseFunc, arg0, arg1, arg3, arg4,
268
+ ) => function arg2Resolver(arg2) {
269
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
270
+ }
271
+
272
+ // argument resolver for curry5
273
+ const curry5ResolveArg3 = (
274
+ baseFunc, arg0, arg1, arg2, arg4,
275
+ ) => function arg3Resolver(arg3) {
276
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
277
+ }
278
+
279
+ // argument resolver for curry5
280
+ const curry5ResolveArg4 = (
281
+ baseFunc, arg0, arg1, arg2, arg3,
282
+ ) => function arg3Resolver(arg4) {
283
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
284
+ }
285
+
286
+ const curry5 = function (baseFunc, arg0, arg1, arg2, arg3, arg4) {
287
+ if (arg0 == __) {
288
+ return curry5ResolveArg0(baseFunc, arg1, arg2, arg3, arg4)
289
+ }
290
+ if (arg1 == __) {
291
+ return curry5ResolveArg1(baseFunc, arg0, arg2, arg3, arg4)
292
+ }
293
+ if (arg2 == __) {
294
+ return curry5ResolveArg2(baseFunc, arg0, arg1, arg3, arg4)
295
+ }
296
+ if (arg3 == __) {
297
+ return curry5ResolveArg3(baseFunc, arg0, arg1, arg2, arg4)
298
+ }
299
+ return curry5ResolveArg4(baseFunc, arg0, arg1, arg2, arg3)
300
+ }
301
+
302
+ const asyncFunctionObjectAllSeries = async function (funcs, args, result, keys, keysIndex) {
303
+ const keysLength = keys.length
304
+ while (++keysIndex < keysLength) {
305
+ const key = keys[keysIndex]
306
+ const f = funcs[key]
307
+ let resultElement = typeof f == 'function' ? f(...args) : f
308
+ if (isPromise(resultElement)) {
309
+ resultElement = await resultElement
310
+ }
311
+ result[key] = resultElement
312
+ }
313
+ return result
314
+ }
315
+
316
+ const functionObjectAllSeries = function (funcs, args) {
317
+ const result = {}
318
+ const keys = Object.keys(funcs)
319
+ const keysLength = keys.length
320
+ let keysIndex = -1
321
+ while (++keysIndex < keysLength) {
322
+ const key = keys[keysIndex]
323
+ const f = funcs[key]
324
+ const resultElement = typeof f == 'function' ? f(...args) : f
325
+ if (isPromise(resultElement)) {
326
+ return resultElement.then(funcConcat(
327
+ curry3(objectSet, result, key, __),
328
+ curry5(asyncFunctionObjectAllSeries, funcs, args, __, keys, keysIndex)))
329
+ }
330
+ result[key] = resultElement
331
+ }
332
+ return result
333
+ }
334
+
250
335
  const always = value => function getter() { return value }
251
336
 
252
337
  const functionObjectAll = function (funcs, args) {
@@ -305,14 +390,33 @@ const all = function (...args) {
305
390
  }
306
391
 
307
392
  all.series = function allSeries(...args) {
308
- const funcs = args.pop()
309
- if (args.length == 0) {
310
- return curryArgs2(functionArrayAllSeries, funcs, __)
393
+ if (args.length == 1) {
394
+ const resolversOrValues = args[0]
395
+ if (isPromise(resolversOrValues)) {
396
+ return resolversOrValues.then(_allValues)
397
+ }
398
+ if (areAllValuesNonfunctions(resolversOrValues)) {
399
+ return _allValues(resolversOrValues)
400
+ }
401
+ return isArray(resolversOrValues)
402
+ ? curryArgs2(functionArrayAllSeries, resolversOrValues, __)
403
+ : curryArgs2(functionObjectAllSeries, resolversOrValues, __)
311
404
  }
312
- if (areAnyValuesPromises(args)) {
313
- return promiseAll(args).then(curry2(functionArrayAllSeries, funcs, __))
405
+
406
+ const resolversOrValues = args[args.length - 1]
407
+ const argValues = args.slice(0, -1)
408
+
409
+ if (areAnyValuesPromises(argValues)) {
410
+ return isArray(resolversOrValues)
411
+ ? promiseAll(argValues)
412
+ .then(curry2(functionArrayAllSeries, resolversOrValues, __))
413
+ : promiseAll(argValues)
414
+ .then(curry2(functionObjectAllSeries, resolversOrValues, __))
314
415
  }
315
- return functionArrayAllSeries(funcs, args)
416
+
417
+ return isArray(resolversOrValues)
418
+ ? functionArrayAllSeries(resolversOrValues, argValues)
419
+ : functionObjectAllSeries(resolversOrValues, argValues)
316
420
  }
317
421
 
318
422
  export default all
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Rubico v2.12.1
2
+ * Rubico v2.13.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
6
6
  * Rubico may be freely distributed under the CFOSS license.
7
7
  */
8
- const isPromise=r=>null!=r&&"function"==typeof r.then,isArray=Array.isArray,areAnyValuesPromises=function(r){if(isArray(r)){const n=r.length;let e=-1;for(;++e<n;){const n=r[e];if(isPromise(n))return!0}return!1}for(const n in r){const e=r[n];if(isPromise(e))return!0}return!1},areAllValuesNonfunctions=function(r){if(isArray(r)){const n=r.length;let e=-1;for(;++e<n;)if("function"==typeof r[e])return!1;return!0}for(const n in r)if("function"==typeof r[n])return!1;return!0},promiseAll=Promise.all.bind(Promise),promiseObjectAllExecutor=r=>function(n){const e={};let t=0;for(const o in r){const u=r[o];isPromise(u)?(t+=1,u.then((r=>function(o){e[r]=o,t-=1,0==t&&n(e)})(o))):e[o]=u}0==t&&n(e)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),__=Symbol.for("placeholder"),curry2ResolveArg0=(r,n)=>function(e){return r(e,n)},curry2ResolveArg1=(r,n)=>function(e){return r(n,e)},curry2=function(r,n,e){return n==__?curry2ResolveArg0(r,e):curry2ResolveArg1(r,n)},curryArgs2ResolveArgs0=(r,n,e)=>function(...e){return r(e,n)},curryArgs2ResolveArgs1=(r,n,e)=>function(...e){return r(n,e)},curryArgs2=function(r,n,e){return n==__?curryArgs2ResolveArgs0(r,e):curryArgs2ResolveArgs1(r,n)},functionArrayAll=function(r,n){const e=r.length,t=Array(e);let o=-1,u=!1;for(;++o<e;){const e=r[o],s="function"==typeof e?e(...n):e;isPromise(s)&&(u=!0),t[o]=s}return u?promiseAll(t):t},funcConcat=(r,n)=>function(...e){const t=r(...e);return isPromise(t)?t.then(n):n(t)},curry3ResolveArg0=(r,n,e)=>function(t){return r(t,n,e)},curry3ResolveArg1=(r,n,e)=>function(t){return r(n,t,e)},curry3ResolveArg2=(r,n,e)=>function(t){return r(n,e,t)},curry3=function(r,n,e,t){return n==__?curry3ResolveArg0(r,e,t):e==__?curry3ResolveArg1(r,n,t):curry3ResolveArg2(r,n,e)},curry4ResolveArg0=(r,n,e,t)=>function(o){return r(o,n,e,t)},curry4ResolveArg1=(r,n,e,t)=>function(o){return r(n,o,e,t)},curry4ResolveArg2=(r,n,e,t)=>function(o){return r(n,e,o,t)},curry4ResolveArg3=(r,n,e,t)=>function(o){return r(n,e,t,o)},curry4=function(r,n,e,t,o){return n==__?curry4ResolveArg0(r,e,t,o):e==__?curry4ResolveArg1(r,n,t,o):t==__?curry4ResolveArg2(r,n,e,o):curry4ResolveArg3(r,n,e,t)},objectSet=function(r,n,e){return r[n]=e,r},asyncFunctionArrayAllSeries=async function(r,n,e,t){const o=r.length;for(;++t<o;){const o=r[t](...n);e[t]=isPromise(o)?await o:o}return e},functionArrayAllSeries=function(r,n){const e=r.length,t=[];let o=-1;for(;++o<e;){const e=r[o](...n);if(isPromise(e))return e.then(funcConcat(curry3(objectSet,t,o,__),curry4(asyncFunctionArrayAllSeries,r,n,__,o)));t[o]=e}return t},always=r=>function(){return r},functionObjectAll=function(r,n){const e={},t=[];for(const o in r){const u=r[o],s="function"==typeof u?u(...n):u;isPromise(s)?t.push(s.then(curry3(objectSet,e,o,__))):e[o]=s}return 0==t.length?e:promiseAll(t).then(always(e))},_allValues=function(r){return isArray(r)?areAnyValuesPromises(r)?promiseAll(r):r:areAnyValuesPromises(r)?promiseObjectAll(r):r},all=function(...r){if(1==r.length){const n=r[0];return isPromise(n)?n.then(_allValues):areAllValuesNonfunctions(n)?_allValues(n):isArray(n)?curryArgs2(functionArrayAll,n,__):curryArgs2(functionObjectAll,n,__)}const n=r[r.length-1],e=r.slice(0,-1);return areAnyValuesPromises(e)?isArray(n)?promiseAll(e).then(curry2(functionArrayAll,n,__)):promiseAll(e).then(curry2(functionObjectAll,n,__)):isArray(n)?functionArrayAll(n,e):functionObjectAll(n,e)};all.series=function(...r){const n=r.pop();return 0==r.length?curryArgs2(functionArrayAllSeries,n,__):areAnyValuesPromises(r)?promiseAll(r).then(curry2(functionArrayAllSeries,n,__)):functionArrayAllSeries(n,r)};export default all;
8
+ const isPromise=r=>null!=r&&"function"==typeof r.then,isArray=Array.isArray,areAnyValuesPromises=function(r){if(isArray(r)){const e=r.length;let n=-1;for(;++n<e;){const e=r[n];if(isPromise(e))return!0}return!1}for(const e in r){const n=r[e];if(isPromise(n))return!0}return!1},areAllValuesNonfunctions=function(r){if(isArray(r)){const e=r.length;let n=-1;for(;++n<e;)if("function"==typeof r[n])return!1;return!0}for(const e in r)if("function"==typeof r[e])return!1;return!0},promiseAll=Promise.all.bind(Promise),promiseObjectAllExecutor=r=>function(e){const n={};let t=0;for(const o in r){const u=r[o];isPromise(u)?(t+=1,u.then((r=>function(o){n[r]=o,t-=1,0==t&&e(n)})(o))):n[o]=u}0==t&&e(n)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},curryArgs2ResolveArgs0=(r,e,n)=>function(...n){return r(n,e)},curryArgs2ResolveArgs1=(r,e,n)=>function(...n){return r(e,n)},curryArgs2=function(r,e,n){return e==__?curryArgs2ResolveArgs0(r,n):curryArgs2ResolveArgs1(r,e)},functionArrayAll=function(r,e){const n=r.length,t=Array(n);let o=-1,u=!1;for(;++o<n;){const n=r[o],c="function"==typeof n?n(...e):n;isPromise(c)&&(u=!0),t[o]=c}return u?promiseAll(t):t},funcConcat=(r,e)=>function(...n){const t=r(...n);return isPromise(t)?t.then(e):e(t)},curry3ResolveArg0=(r,e,n)=>function(t){return r(t,e,n)},curry3ResolveArg1=(r,e,n)=>function(t){return r(e,t,n)},curry3ResolveArg2=(r,e,n)=>function(t){return r(e,n,t)},curry3=function(r,e,n,t){return e==__?curry3ResolveArg0(r,n,t):n==__?curry3ResolveArg1(r,e,t):curry3ResolveArg2(r,e,n)},curry4ResolveArg0=(r,e,n,t)=>function(o){return r(o,e,n,t)},curry4ResolveArg1=(r,e,n,t)=>function(o){return r(e,o,n,t)},curry4ResolveArg2=(r,e,n,t)=>function(o){return r(e,n,o,t)},curry4ResolveArg3=(r,e,n,t)=>function(o){return r(e,n,t,o)},curry4=function(r,e,n,t,o){return e==__?curry4ResolveArg0(r,n,t,o):n==__?curry4ResolveArg1(r,e,t,o):t==__?curry4ResolveArg2(r,e,n,o):curry4ResolveArg3(r,e,n,t)},objectSet=function(r,e,n){return r[e]=n,r},asyncFunctionArrayAllSeries=async function(r,e,n,t){const o=r.length;for(;++t<o;){const o=r[t](...e);n[t]=isPromise(o)?await o:o}return n},functionArrayAllSeries=function(r,e){const n=r.length,t=[];let o=-1;for(;++o<n;){const n=r[o],u="function"==typeof n?n(...e):n;if(isPromise(u))return u.then(funcConcat(curry3(objectSet,t,o,__),curry4(asyncFunctionArrayAllSeries,r,e,__,o)));t[o]=u}return t},curry5ResolveArg0=(r,e,n,t,o)=>function(u){return r(u,e,n,t,o)},curry5ResolveArg1=(r,e,n,t,o)=>function(u){return r(e,u,n,t,o)},curry5ResolveArg2=(r,e,n,t,o)=>function(u){return r(e,n,u,t,o)},curry5ResolveArg3=(r,e,n,t,o)=>function(u){return r(e,n,t,u,o)},curry5ResolveArg4=(r,e,n,t,o)=>function(u){return r(e,n,t,o,u)},curry5=function(r,e,n,t,o,u){return e==__?curry5ResolveArg0(r,n,t,o,u):n==__?curry5ResolveArg1(r,e,t,o,u):t==__?curry5ResolveArg2(r,e,n,o,u):o==__?curry5ResolveArg3(r,e,n,t,u):curry5ResolveArg4(r,e,n,t,o)},asyncFunctionObjectAllSeries=async function(r,e,n,t,o){const u=t.length;for(;++o<u;){const u=t[o],c=r[u];let s="function"==typeof c?c(...e):c;isPromise(s)&&(s=await s),n[u]=s}return n},functionObjectAllSeries=function(r,e){const n={},t=Object.keys(r),o=t.length;let u=-1;for(;++u<o;){const o=t[u],c=r[o],s="function"==typeof c?c(...e):c;if(isPromise(s))return s.then(funcConcat(curry3(objectSet,n,o,__),curry5(asyncFunctionObjectAllSeries,r,e,__,t,u)));n[o]=s}return n},always=r=>function(){return r},functionObjectAll=function(r,e){const n={},t=[];for(const o in r){const u=r[o],c="function"==typeof u?u(...e):u;isPromise(c)?t.push(c.then(curry3(objectSet,n,o,__))):n[o]=c}return 0==t.length?n:promiseAll(t).then(always(n))},_allValues=function(r){return isArray(r)?areAnyValuesPromises(r)?promiseAll(r):r:areAnyValuesPromises(r)?promiseObjectAll(r):r},all=function(...r){if(1==r.length){const e=r[0];return isPromise(e)?e.then(_allValues):areAllValuesNonfunctions(e)?_allValues(e):isArray(e)?curryArgs2(functionArrayAll,e,__):curryArgs2(functionObjectAll,e,__)}const e=r[r.length-1],n=r.slice(0,-1);return areAnyValuesPromises(n)?isArray(e)?promiseAll(n).then(curry2(functionArrayAll,e,__)):promiseAll(n).then(curry2(functionObjectAll,e,__)):isArray(e)?functionArrayAll(e,n):functionObjectAll(e,n)};all.series=function(...r){if(1==r.length){const e=r[0];return isPromise(e)?e.then(_allValues):areAllValuesNonfunctions(e)?_allValues(e):isArray(e)?curryArgs2(functionArrayAllSeries,e,__):curryArgs2(functionObjectAllSeries,e,__)}const e=r[r.length-1],n=r.slice(0,-1);return areAnyValuesPromises(n)?isArray(e)?promiseAll(n).then(curry2(functionArrayAllSeries,e,__)):promiseAll(n).then(curry2(functionObjectAllSeries,e,__)):isArray(e)?functionArrayAllSeries(e,n):functionObjectAllSeries(e,n)};export default all;