rubico 2.5.0 → 2.6.1

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 (368) hide show
  1. package/_internal/arrayMapPool.js +11 -19
  2. package/_internal/mapMapPool.js +80 -0
  3. package/_internal/objectMapPool.js +77 -0
  4. package/_internal/objectMapSeries.js +1 -0
  5. package/_internal/setMapPool.js +79 -0
  6. package/_internal/stringMapPool.js +22 -0
  7. package/all.js +11 -1
  8. package/and.js +9 -0
  9. package/assign.js +14 -1
  10. package/compose.js +8 -0
  11. package/dist/Transducer.es.js +1 -1
  12. package/dist/Transducer.es.min.js +1 -1
  13. package/dist/Transducer.js +1 -1
  14. package/dist/Transducer.min.js +1 -1
  15. package/dist/Transducer.mjs +1 -1
  16. package/dist/__.es.js +1 -1
  17. package/dist/__.es.min.js +1 -1
  18. package/dist/__.js +1 -1
  19. package/dist/__.min.js +1 -1
  20. package/dist/__.mjs +1 -1
  21. package/dist/all.es.js +1 -1
  22. package/dist/all.es.min.js +1 -1
  23. package/dist/all.js +1 -1
  24. package/dist/all.min.js +1 -1
  25. package/dist/all.mjs +1 -1
  26. package/dist/always.es.js +1 -1
  27. package/dist/always.es.min.js +1 -1
  28. package/dist/always.js +1 -1
  29. package/dist/always.min.js +1 -1
  30. package/dist/always.mjs +1 -1
  31. package/dist/and.es.js +1 -1
  32. package/dist/and.es.min.js +1 -1
  33. package/dist/and.js +1 -1
  34. package/dist/and.min.js +1 -1
  35. package/dist/and.mjs +1 -1
  36. package/dist/assign.es.js +1 -1
  37. package/dist/assign.es.min.js +1 -1
  38. package/dist/assign.js +1 -1
  39. package/dist/assign.min.js +1 -1
  40. package/dist/assign.mjs +1 -1
  41. package/dist/compose.es.js +1 -1
  42. package/dist/compose.es.min.js +1 -1
  43. package/dist/compose.js +1 -1
  44. package/dist/compose.min.js +1 -1
  45. package/dist/compose.mjs +1 -1
  46. package/dist/curry.es.js +1 -1
  47. package/dist/curry.es.min.js +1 -1
  48. package/dist/curry.js +1 -1
  49. package/dist/curry.min.js +1 -1
  50. package/dist/curry.mjs +1 -1
  51. package/dist/eq.es.js +1 -1
  52. package/dist/eq.es.min.js +1 -1
  53. package/dist/eq.js +1 -1
  54. package/dist/eq.min.js +1 -1
  55. package/dist/eq.mjs +1 -1
  56. package/dist/every.es.js +1 -1
  57. package/dist/every.es.min.js +1 -1
  58. package/dist/every.js +1 -1
  59. package/dist/every.min.js +1 -1
  60. package/dist/every.mjs +1 -1
  61. package/dist/filter.es.js +1 -1
  62. package/dist/filter.es.min.js +1 -1
  63. package/dist/filter.js +1 -1
  64. package/dist/filter.min.js +1 -1
  65. package/dist/filter.mjs +1 -1
  66. package/dist/flatMap.es.js +1 -1
  67. package/dist/flatMap.es.min.js +1 -1
  68. package/dist/flatMap.js +1 -1
  69. package/dist/flatMap.min.js +1 -1
  70. package/dist/flatMap.mjs +1 -1
  71. package/dist/forEach.es.js +3 -2
  72. package/dist/forEach.es.min.js +2 -2
  73. package/dist/forEach.js +3 -2
  74. package/dist/forEach.min.js +2 -2
  75. package/dist/forEach.mjs +3 -2
  76. package/dist/get.es.js +1 -1
  77. package/dist/get.es.min.js +1 -1
  78. package/dist/get.js +1 -1
  79. package/dist/get.min.js +1 -1
  80. package/dist/get.mjs +1 -1
  81. package/dist/gt.es.js +1 -1
  82. package/dist/gt.es.min.js +1 -1
  83. package/dist/gt.js +1 -1
  84. package/dist/gt.min.js +1 -1
  85. package/dist/gt.mjs +1 -1
  86. package/dist/gte.es.js +1 -1
  87. package/dist/gte.es.min.js +1 -1
  88. package/dist/gte.js +1 -1
  89. package/dist/gte.min.js +1 -1
  90. package/dist/gte.mjs +1 -1
  91. package/dist/lt.es.js +1 -1
  92. package/dist/lt.es.min.js +1 -1
  93. package/dist/lt.js +1 -1
  94. package/dist/lt.min.js +1 -1
  95. package/dist/lt.mjs +1 -1
  96. package/dist/lte.es.js +1 -1
  97. package/dist/lte.es.min.js +1 -1
  98. package/dist/lte.js +1 -1
  99. package/dist/lte.min.js +1 -1
  100. package/dist/lte.mjs +1 -1
  101. package/dist/map.es.js +221 -44
  102. package/dist/map.es.min.js +2 -2
  103. package/dist/map.js +221 -44
  104. package/dist/map.min.js +2 -2
  105. package/dist/map.mjs +221 -44
  106. package/dist/not.es.js +1 -1
  107. package/dist/not.es.min.js +1 -1
  108. package/dist/not.js +1 -1
  109. package/dist/not.min.js +1 -1
  110. package/dist/not.mjs +1 -1
  111. package/dist/omit.es.js +1 -1
  112. package/dist/omit.es.min.js +1 -1
  113. package/dist/omit.js +1 -1
  114. package/dist/omit.min.js +1 -1
  115. package/dist/omit.mjs +1 -1
  116. package/dist/or.es.js +1 -1
  117. package/dist/or.es.min.js +1 -1
  118. package/dist/or.js +1 -1
  119. package/dist/or.min.js +1 -1
  120. package/dist/or.mjs +1 -1
  121. package/dist/pick.es.js +1 -1
  122. package/dist/pick.es.min.js +1 -1
  123. package/dist/pick.js +1 -1
  124. package/dist/pick.min.js +1 -1
  125. package/dist/pick.mjs +1 -1
  126. package/dist/pipe.es.js +1 -1
  127. package/dist/pipe.es.min.js +1 -1
  128. package/dist/pipe.js +1 -1
  129. package/dist/pipe.min.js +1 -1
  130. package/dist/pipe.mjs +1 -1
  131. package/dist/reduce.es.js +1 -1
  132. package/dist/reduce.es.min.js +1 -1
  133. package/dist/reduce.js +1 -1
  134. package/dist/reduce.min.js +1 -1
  135. package/dist/reduce.mjs +1 -1
  136. package/dist/rubico.es.js +259 -60
  137. package/dist/rubico.es.min.js +2 -2
  138. package/dist/rubico.global.js +259 -60
  139. package/dist/rubico.global.min.js +2 -2
  140. package/dist/rubico.js +259 -60
  141. package/dist/rubico.min.js +2 -2
  142. package/dist/rubico.mjs +259 -60
  143. package/dist/set.es.js +1 -1
  144. package/dist/set.es.min.js +1 -1
  145. package/dist/set.js +1 -1
  146. package/dist/set.min.js +1 -1
  147. package/dist/set.mjs +1 -1
  148. package/dist/some.es.js +1 -1
  149. package/dist/some.es.min.js +1 -1
  150. package/dist/some.js +1 -1
  151. package/dist/some.min.js +1 -1
  152. package/dist/some.mjs +1 -1
  153. package/dist/switchCase.es.js +1 -1
  154. package/dist/switchCase.es.min.js +1 -1
  155. package/dist/switchCase.js +1 -1
  156. package/dist/switchCase.min.js +1 -1
  157. package/dist/switchCase.mjs +1 -1
  158. package/dist/tap.es.js +100 -14
  159. package/dist/tap.es.min.js +2 -2
  160. package/dist/tap.js +100 -14
  161. package/dist/tap.min.js +2 -2
  162. package/dist/tap.mjs +100 -14
  163. package/dist/thunkify.es.js +1 -1
  164. package/dist/thunkify.es.min.js +1 -1
  165. package/dist/thunkify.js +1 -1
  166. package/dist/thunkify.min.js +1 -1
  167. package/dist/thunkify.mjs +1 -1
  168. package/dist/transform.es.js +1 -1
  169. package/dist/transform.es.min.js +1 -1
  170. package/dist/transform.js +1 -1
  171. package/dist/transform.min.js +1 -1
  172. package/dist/transform.mjs +1 -1
  173. package/dist/tryCatch.es.js +1 -1
  174. package/dist/tryCatch.es.min.js +1 -1
  175. package/dist/tryCatch.js +1 -1
  176. package/dist/tryCatch.min.js +1 -1
  177. package/dist/tryCatch.mjs +1 -1
  178. package/dist/x/append.es.js +1 -1
  179. package/dist/x/append.es.min.js +1 -1
  180. package/dist/x/append.js +1 -1
  181. package/dist/x/append.min.js +1 -1
  182. package/dist/x/append.mjs +1 -1
  183. package/dist/x/callProp.es.js +1 -1
  184. package/dist/x/callProp.es.min.js +1 -1
  185. package/dist/x/callProp.js +1 -1
  186. package/dist/x/callProp.min.js +1 -1
  187. package/dist/x/callProp.mjs +1 -1
  188. package/dist/x/defaultsDeep.es.js +1 -1
  189. package/dist/x/defaultsDeep.es.min.js +1 -1
  190. package/dist/x/defaultsDeep.js +1 -1
  191. package/dist/x/defaultsDeep.min.js +1 -1
  192. package/dist/x/defaultsDeep.mjs +1 -1
  193. package/dist/x/differenceWith.es.js +1 -1
  194. package/dist/x/differenceWith.es.min.js +1 -1
  195. package/dist/x/differenceWith.js +1 -1
  196. package/dist/x/differenceWith.min.js +1 -1
  197. package/dist/x/differenceWith.mjs +1 -1
  198. package/dist/x/filterOut.es.js +1 -1
  199. package/dist/x/filterOut.es.min.js +1 -1
  200. package/dist/x/filterOut.js +1 -1
  201. package/dist/x/filterOut.min.js +1 -1
  202. package/dist/x/filterOut.mjs +1 -1
  203. package/dist/x/find.es.js +1 -1
  204. package/dist/x/find.es.min.js +1 -1
  205. package/dist/x/find.js +1 -1
  206. package/dist/x/find.min.js +1 -1
  207. package/dist/x/find.mjs +1 -1
  208. package/dist/x/findIndex.es.js +1 -1
  209. package/dist/x/findIndex.es.min.js +1 -1
  210. package/dist/x/findIndex.js +1 -1
  211. package/dist/x/findIndex.min.js +1 -1
  212. package/dist/x/findIndex.mjs +1 -1
  213. package/dist/x/first.es.js +1 -1
  214. package/dist/x/first.es.min.js +1 -1
  215. package/dist/x/first.js +1 -1
  216. package/dist/x/first.min.js +1 -1
  217. package/dist/x/first.mjs +1 -1
  218. package/dist/x/flatten.es.js +1 -1
  219. package/dist/x/flatten.es.min.js +1 -1
  220. package/dist/x/flatten.js +1 -1
  221. package/dist/x/flatten.min.js +1 -1
  222. package/dist/x/flatten.mjs +1 -1
  223. package/dist/x/groupBy.es.js +1 -1
  224. package/dist/x/groupBy.es.min.js +1 -1
  225. package/dist/x/groupBy.js +1 -1
  226. package/dist/x/groupBy.min.js +1 -1
  227. package/dist/x/groupBy.mjs +1 -1
  228. package/dist/x/has.es.js +1 -1
  229. package/dist/x/has.es.min.js +1 -1
  230. package/dist/x/has.js +1 -1
  231. package/dist/x/has.min.js +1 -1
  232. package/dist/x/has.mjs +1 -1
  233. package/dist/x/identity.es.js +1 -1
  234. package/dist/x/identity.es.min.js +1 -1
  235. package/dist/x/identity.js +1 -1
  236. package/dist/x/identity.min.js +1 -1
  237. package/dist/x/identity.mjs +1 -1
  238. package/dist/x/includes.es.js +1 -1
  239. package/dist/x/includes.es.min.js +1 -1
  240. package/dist/x/includes.js +1 -1
  241. package/dist/x/includes.min.js +1 -1
  242. package/dist/x/includes.mjs +1 -1
  243. package/dist/x/isDeepEqual.es.js +1 -1
  244. package/dist/x/isDeepEqual.es.min.js +1 -1
  245. package/dist/x/isDeepEqual.js +1 -1
  246. package/dist/x/isDeepEqual.min.js +1 -1
  247. package/dist/x/isDeepEqual.mjs +1 -1
  248. package/dist/x/isEmpty.es.js +1 -1
  249. package/dist/x/isEmpty.es.min.js +1 -1
  250. package/dist/x/isEmpty.js +1 -1
  251. package/dist/x/isEmpty.min.js +1 -1
  252. package/dist/x/isEmpty.mjs +1 -1
  253. package/dist/x/isEqual.es.js +1 -1
  254. package/dist/x/isEqual.es.min.js +1 -1
  255. package/dist/x/isEqual.js +1 -1
  256. package/dist/x/isEqual.min.js +1 -1
  257. package/dist/x/isEqual.mjs +1 -1
  258. package/dist/x/isFunction.es.js +1 -1
  259. package/dist/x/isFunction.es.min.js +1 -1
  260. package/dist/x/isFunction.js +1 -1
  261. package/dist/x/isFunction.min.js +1 -1
  262. package/dist/x/isFunction.mjs +1 -1
  263. package/dist/x/isIn.es.js +1 -1
  264. package/dist/x/isIn.es.min.js +1 -1
  265. package/dist/x/isIn.js +1 -1
  266. package/dist/x/isIn.min.js +1 -1
  267. package/dist/x/isIn.mjs +1 -1
  268. package/dist/x/isObject.es.js +1 -1
  269. package/dist/x/isObject.es.min.js +1 -1
  270. package/dist/x/isObject.js +1 -1
  271. package/dist/x/isObject.min.js +1 -1
  272. package/dist/x/isObject.mjs +1 -1
  273. package/dist/x/isString.es.js +1 -1
  274. package/dist/x/isString.es.min.js +1 -1
  275. package/dist/x/isString.js +1 -1
  276. package/dist/x/isString.min.js +1 -1
  277. package/dist/x/isString.mjs +1 -1
  278. package/dist/x/keys.es.js +1 -1
  279. package/dist/x/keys.es.min.js +1 -1
  280. package/dist/x/keys.js +1 -1
  281. package/dist/x/keys.min.js +1 -1
  282. package/dist/x/keys.mjs +1 -1
  283. package/dist/x/last.es.js +1 -1
  284. package/dist/x/last.es.min.js +1 -1
  285. package/dist/x/last.js +1 -1
  286. package/dist/x/last.min.js +1 -1
  287. package/dist/x/last.mjs +1 -1
  288. package/dist/x/maxBy.es.js +1 -1
  289. package/dist/x/maxBy.es.min.js +1 -1
  290. package/dist/x/maxBy.js +1 -1
  291. package/dist/x/maxBy.min.js +1 -1
  292. package/dist/x/maxBy.mjs +1 -1
  293. package/dist/x/noop.es.js +1 -1
  294. package/dist/x/noop.es.min.js +1 -1
  295. package/dist/x/noop.js +1 -1
  296. package/dist/x/noop.min.js +1 -1
  297. package/dist/x/noop.mjs +1 -1
  298. package/dist/x/pluck.es.js +221 -44
  299. package/dist/x/pluck.es.min.js +2 -2
  300. package/dist/x/pluck.js +221 -44
  301. package/dist/x/pluck.min.js +2 -2
  302. package/dist/x/pluck.mjs +221 -44
  303. package/dist/x/prepend.es.js +1 -1
  304. package/dist/x/prepend.es.min.js +1 -1
  305. package/dist/x/prepend.js +1 -1
  306. package/dist/x/prepend.min.js +1 -1
  307. package/dist/x/prepend.mjs +1 -1
  308. package/dist/x/size.es.js +1 -1
  309. package/dist/x/size.es.min.js +1 -1
  310. package/dist/x/size.js +1 -1
  311. package/dist/x/size.min.js +1 -1
  312. package/dist/x/size.mjs +1 -1
  313. package/dist/x/trace.es.js +100 -14
  314. package/dist/x/trace.es.min.js +2 -2
  315. package/dist/x/trace.js +100 -14
  316. package/dist/x/trace.min.js +2 -2
  317. package/dist/x/trace.mjs +100 -14
  318. package/dist/x/unionWith.es.js +1 -1
  319. package/dist/x/unionWith.es.min.js +1 -1
  320. package/dist/x/unionWith.js +1 -1
  321. package/dist/x/unionWith.min.js +1 -1
  322. package/dist/x/unionWith.mjs +1 -1
  323. package/dist/x/uniq.es.js +1 -1
  324. package/dist/x/uniq.es.min.js +1 -1
  325. package/dist/x/uniq.js +1 -1
  326. package/dist/x/uniq.min.js +1 -1
  327. package/dist/x/uniq.mjs +1 -1
  328. package/dist/x/unless.es.js +1 -1
  329. package/dist/x/unless.es.min.js +1 -1
  330. package/dist/x/unless.js +1 -1
  331. package/dist/x/unless.min.js +1 -1
  332. package/dist/x/unless.mjs +1 -1
  333. package/dist/x/values.es.js +1 -1
  334. package/dist/x/values.es.min.js +1 -1
  335. package/dist/x/values.js +1 -1
  336. package/dist/x/values.min.js +1 -1
  337. package/dist/x/values.mjs +1 -1
  338. package/dist/x/when.es.js +1 -1
  339. package/dist/x/when.es.min.js +1 -1
  340. package/dist/x/when.js +1 -1
  341. package/dist/x/when.min.js +1 -1
  342. package/dist/x/when.mjs +1 -1
  343. package/eq.js +6 -0
  344. package/es.js +259 -60
  345. package/every.js +6 -0
  346. package/filter.js +9 -0
  347. package/flatMap.js +7 -0
  348. package/forEach.js +20 -1
  349. package/get.js +6 -0
  350. package/gt.js +6 -0
  351. package/gte.js +6 -0
  352. package/index.js +259 -60
  353. package/lt.js +6 -0
  354. package/lte.js +6 -0
  355. package/map.js +118 -45
  356. package/not.js +8 -0
  357. package/omit.js +7 -0
  358. package/or.js +9 -0
  359. package/package.json +1 -1
  360. package/pick.js +7 -0
  361. package/pipe.js +8 -0
  362. package/reduce.js +8 -0
  363. package/set.js +6 -0
  364. package/some.js +6 -0
  365. package/switchCase.js +12 -0
  366. package/tap.js +75 -26
  367. package/transform.js +38 -10
  368. package/tryCatch.js +14 -0
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -152,29 +152,67 @@ const curryArgs2 = function (baseFunc, arg0, arg1) {
152
152
  return curryArgs2ResolveArgs1(baseFunc, arg0)
153
153
  }
154
154
 
155
- // _tap(args Array, func function) -> Promise|any
156
- const _tap = function (args, func) {
155
+ // argument resolver for curryArgs3
156
+ const curryArgs3ResolveArgs0 = (
157
+ baseFunc, arg1, arg2,
158
+ ) => function args0Resolver(...args) {
159
+ return baseFunc(args, arg1, arg2)
160
+ }
161
+
162
+ // argument resolver for curryArgs3
163
+ const curryArgs3ResolveArgs1 = (
164
+ baseFunc, arg0, arg2,
165
+ ) => function arg1Resolver(...args) {
166
+ return baseFunc(arg0, args, arg2)
167
+ }
168
+
169
+ // argument resolver for curryArgs3
170
+ const curryArgs3ResolveArgs2 = (
171
+ baseFunc, arg0, arg1,
172
+ ) => function arg2Resolver(...args) {
173
+ return baseFunc(arg0, arg1, args)
174
+ }
175
+
176
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
177
+ if (arg0 == __) {
178
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
179
+ }
180
+ if (arg1 == __) {
181
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
182
+ }
183
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
184
+ }
185
+
186
+ // _tap(args Array, f function) -> Promise|any
187
+ const _tap = function (args, f) {
157
188
  const result = args[0],
158
- call = func(...args)
189
+ call = f(...args)
159
190
  return isPromise(call) ? call.then(always(result)) : result
160
191
  }
161
192
 
162
193
  const tap = function (...args) {
163
- const func = args.pop()
194
+ const f = args.pop()
164
195
  if (args.length == 0) {
165
- return curryArgs2(_tap, __, func)
196
+ return curryArgs2(_tap, __, f)
197
+ }
198
+ if (areAnyValuesPromises(args)) {
199
+ return promiseAll(args).then(curry2(_tap, __, f))
166
200
  }
167
- return _tap(args, func)
201
+ return _tap(args, f)
168
202
  }
169
203
 
170
- tap.if = (predicate, func) => function tappingIf(...args) {
171
- const predication = predicate(...args)
172
- if (isPromise(predication)) {
173
- return predication.then(curry3(
174
- thunkConditional, __, thunkifyArgs(tap(func), args), always(args[0])))
204
+ const _tapIf = function (predicate, f, args) {
205
+ const b = predicate(...args)
206
+ if (isPromise(b)) {
207
+ return b.then(curry3(
208
+ thunkConditional,
209
+ __,
210
+ thunkifyArgs(tap(f), args),
211
+ always(args[0]),
212
+ ))
175
213
  }
176
- if (predication) {
177
- const execution = func(...args)
214
+ if (b) {
215
+ const execution = f(...args)
178
216
  if (isPromise(execution)) {
179
217
  return execution.then(always(args[0]))
180
218
  }
@@ -182,6 +220,20 @@ tap.if = (predicate, func) => function tappingIf(...args) {
182
220
  return args[0]
183
221
  }
184
222
 
223
+ tap.if = function (...args) {
224
+ if (args.length == 2) {
225
+ return curryArgs3(_tapIf, args[0], args[1], __)
226
+ }
227
+ const argsLength = args.length
228
+ const f = args[argsLength - 1]
229
+ const predicate = args[argsLength - 2]
230
+ const argValues = args.slice(0, -2)
231
+ if (areAnyValuesPromises(argValues)) {
232
+ return promiseAll(argValues).then(curry3(_tapIf, predicate, f, __))
233
+ }
234
+ return _tapIf(predicate, f, args)
235
+ }
236
+
185
237
  const isArray = Array.isArray
186
238
 
187
239
  const functionArrayAll = function (funcs, args) {
@@ -448,37 +500,6 @@ const nonfunctionsConditional = function (array, index) {
448
500
  return array[index]
449
501
  }
450
502
 
451
- // argument resolver for curryArgs3
452
- const curryArgs3ResolveArgs0 = (
453
- baseFunc, arg1, arg2,
454
- ) => function args0Resolver(...args) {
455
- return baseFunc(args, arg1, arg2)
456
- }
457
-
458
- // argument resolver for curryArgs3
459
- const curryArgs3ResolveArgs1 = (
460
- baseFunc, arg0, arg2,
461
- ) => function arg1Resolver(...args) {
462
- return baseFunc(arg0, args, arg2)
463
- }
464
-
465
- // argument resolver for curryArgs3
466
- const curryArgs3ResolveArgs2 = (
467
- baseFunc, arg0, arg1,
468
- ) => function arg2Resolver(...args) {
469
- return baseFunc(arg0, arg1, args)
470
- }
471
-
472
- const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
473
- if (arg0 == __) {
474
- return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
475
- }
476
- if (arg1 == __) {
477
- return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
478
- }
479
- return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
480
- }
481
-
482
503
  const switchCase = (...args) => {
483
504
  const values = args.pop()
484
505
  if (areAllValuesNonfunctions(values)) {
@@ -707,6 +728,7 @@ const objectMapSeries = function (object, f) {
707
728
  thunkify4(_objectMapSeriesAsync, object, f, result, doneKeys),
708
729
  ))
709
730
  }
731
+ result[key] = resultItem
710
732
  }
711
733
  return result
712
734
  }
@@ -801,15 +823,14 @@ const tapSync = func => function tapping(...args) {
801
823
  const promiseRace = Promise.race.bind(Promise)
802
824
 
803
825
  const arrayMapPoolAsync = async function (
804
- array, mapper, concurrencyLimit, result, index, promises,
826
+ array, f, concurrencyLimit, result, index, promises,
805
827
  ) {
806
828
  const arrayLength = array.length
807
829
  while (++index < arrayLength) {
808
830
  if (promises.size >= concurrencyLimit) {
809
831
  await promiseRace(promises)
810
832
  }
811
-
812
- const resultItem = mapper(array[index])
833
+ const resultItem = f(array[index])
813
834
  if (isPromise(resultItem)) {
814
835
  const selfDeletingPromise = resultItem.then(
815
836
  tapSync(() => promises.delete(selfDeletingPromise)))
@@ -822,13 +843,12 @@ const arrayMapPoolAsync = async function (
822
843
  return promiseAll(result)
823
844
  }
824
845
 
825
- const arrayMapPool = function (array, mapper, concurrentLimit) {
846
+ const arrayMapPool = function (array, concurrency, f) {
826
847
  const arrayLength = array.length,
827
848
  result = Array(arrayLength)
828
849
  let index = -1
829
850
  while (++index < arrayLength) {
830
-
831
- const resultItem = mapper(array[index])
851
+ const resultItem = f(array[index])
832
852
  if (isPromise(resultItem)) {
833
853
  const promises = new Set(),
834
854
  selfDeletingPromise = resultItem.then(
@@ -836,13 +856,167 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
836
856
  promises.add(selfDeletingPromise)
837
857
  result[index] = selfDeletingPromise
838
858
  return arrayMapPoolAsync(
839
- array, mapper, concurrentLimit, result, index, promises)
859
+ array, f, concurrency, result, index, promises)
840
860
  }
841
861
  result[index] = resultItem
842
862
  }
843
863
  return result
844
864
  }
845
865
 
866
+ const stringMapPool = function (s, concurrency, f) {
867
+ const result = arrayMapPool(s, concurrency, f)
868
+ return isPromise(result)
869
+ ? result.then(curry3(callPropUnary, __, 'join', ''))
870
+ : result.join('')
871
+ }
872
+
873
+ const _setMapPoolAsync = async function (
874
+ s, iterator, concurrency, f, result, promises,
875
+ ) {
876
+ let iteration = iterator.next()
877
+ while (!iteration.done) {
878
+ if (promises.size >= concurrency) {
879
+ await promiseRace(promises)
880
+ }
881
+ const resultItem = f(iteration.value, iteration.value, s)
882
+ if (isPromise(resultItem)) {
883
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
884
+ promises.delete(selfDeletingPromise)
885
+ result.add(resolvedValue)
886
+ })
887
+ promises.add(selfDeletingPromise)
888
+ } else {
889
+ result.add(resultItem)
890
+ }
891
+ iteration = iterator.next()
892
+ }
893
+ if (promises.size > 0) {
894
+ await promiseAll(promises)
895
+ }
896
+ return result
897
+ }
898
+
899
+ const setMapPool = function (s, concurrency, f) {
900
+ const result = new Set()
901
+ const iterator = s[symbolIterator]()
902
+ let iteration = iterator.next()
903
+ while (!iteration.done) {
904
+ const resultItem = f(iteration.value, iteration.value, s)
905
+ if (isPromise(resultItem)) {
906
+ const promises = new Set()
907
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
908
+ promises.delete(selfDeletingPromise)
909
+ result.add(resolvedValue)
910
+ })
911
+ promises.add(selfDeletingPromise)
912
+ return _setMapPoolAsync(s, iterator, concurrency, f, result, promises)
913
+ }
914
+ result.add(resultItem)
915
+ iteration = iterator.next()
916
+ }
917
+ return result
918
+ }
919
+
920
+ const _mapMapPoolAsync = async function (
921
+ m, iterator, concurrency, f, result, promises,
922
+ ) {
923
+ let iteration = iterator.next()
924
+ while (!iteration.done) {
925
+ if (promises.size >= concurrency) {
926
+ await promiseRace(promises)
927
+ }
928
+ const key = iteration.value[0]
929
+ const resultItem = f(iteration.value[1], key, m)
930
+ if (isPromise(resultItem)) {
931
+ result.set(key, resultItem)
932
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
933
+ promises.delete(selfDeletingPromise)
934
+ result.set(key, resolvedValue)
935
+ })
936
+ promises.add(selfDeletingPromise)
937
+ } else {
938
+ result.set(key, resultItem)
939
+ }
940
+ iteration = iterator.next()
941
+ }
942
+ if (promises.size > 0) {
943
+ await promiseAll(promises)
944
+ }
945
+ return result
946
+ }
947
+
948
+ const mapMapPool = function (m, concurrency, f) {
949
+ const result = new Map()
950
+ const iterator = m[symbolIterator]()
951
+ let iteration = iterator.next()
952
+ while (!iteration.done) {
953
+ const key = iteration.value[0]
954
+ const resultItem = f(iteration.value[1], key, m)
955
+ if (isPromise(resultItem)) {
956
+ const promises = new Set()
957
+ result.set(key, resultItem)
958
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
959
+ promises.delete(selfDeletingPromise)
960
+ result.set(key, resolvedValue)
961
+ })
962
+ promises.add(selfDeletingPromise)
963
+ return _mapMapPoolAsync(m, iterator, concurrency, f, result, promises)
964
+ }
965
+ result.set(key, resultItem)
966
+ iteration = iterator.next()
967
+ }
968
+ return result
969
+ }
970
+
971
+ const _objectMapPoolAsync = async function (
972
+ o, concurrency, f, result, doneKeys, promises,
973
+ ) {
974
+ for (const key in o) {
975
+ if (key in doneKeys) {
976
+ continue
977
+ }
978
+ if (promises.size >= concurrency) {
979
+ await promiseRace(promises)
980
+ }
981
+ const resultItem = f(o[key], key, o)
982
+ if (isPromise(resultItem)) {
983
+ result[key] = resultItem
984
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
985
+ promises.delete(selfDeletingPromise)
986
+ result[key] = resolvedValue
987
+ })
988
+ promises.add(selfDeletingPromise)
989
+ } else {
990
+ result[key] = resultItem
991
+ }
992
+ }
993
+ if (promises.size > 0) {
994
+ await promiseAll(promises)
995
+ }
996
+ return result
997
+ }
998
+
999
+ const objectMapPool = function (o, concurrency, f) {
1000
+ const result = {}
1001
+ const doneKeys = {}
1002
+ for (const key in o) {
1003
+ doneKeys[key] = true
1004
+ const resultItem = f(o[key], key, o)
1005
+ if (isPromise(resultItem)) {
1006
+ const promises = new Set()
1007
+ result[key] = resultItem
1008
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
1009
+ promises.delete(selfDeletingPromise)
1010
+ result[key] = resolvedValue
1011
+ })
1012
+ promises.add(selfDeletingPromise)
1013
+ return _objectMapPoolAsync(o, concurrency, f, result, doneKeys, promises)
1014
+ }
1015
+ result[key] = resultItem
1016
+ }
1017
+ return result
1018
+ }
1019
+
846
1020
  const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
847
1021
  const argsLength = args.length,
848
1022
  curriedArgsLength = curriedArgs.length,
@@ -978,7 +1152,7 @@ const _map = function (value, mapper) {
978
1152
  }
979
1153
 
980
1154
  const map = function (arg0, arg1) {
981
- if (typeof arg0 == 'function') {
1155
+ if (arg1 == null) {
982
1156
  return curry2(_map, __, arg0)
983
1157
  }
984
1158
  return isPromise(arg0)
@@ -1001,7 +1175,7 @@ const _mapEntries = (value, mapper) => {
1001
1175
  }
1002
1176
 
1003
1177
  map.entries = function mapEntries(arg0, arg1) {
1004
- if (typeof arg0 == 'function') {
1178
+ if (arg1 == null) {
1005
1179
  return curry2(_mapEntries, __, arg0)
1006
1180
  }
1007
1181
  return isPromise(arg0)
@@ -1033,7 +1207,7 @@ const _mapSeries = function (collection, f) {
1033
1207
  }
1034
1208
 
1035
1209
  map.series = function mapSeries(arg0, arg1) {
1036
- if (typeof arg0 == 'function') {
1210
+ if (arg1 == null) {
1037
1211
  return curry2(_mapSeries, __, arg0)
1038
1212
  }
1039
1213
  return isPromise(arg0)
@@ -1041,11 +1215,35 @@ map.series = function mapSeries(arg0, arg1) {
1041
1215
  : _mapSeries(arg0, arg1)
1042
1216
  }
1043
1217
 
1044
- map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
1045
- if (isArray(value)) {
1046
- return arrayMapPool(value, mapper, concurrencyLimit)
1218
+ const _mapPool = function (collection, concurrency, f) {
1219
+ if (isArray(collection)) {
1220
+ return arrayMapPool(collection, concurrency, f)
1221
+ }
1222
+ if (collection == null) {
1223
+ throw new TypeError(`invalid collection ${collection}`)
1224
+ }
1225
+ if (typeof collection == 'string' || collection.constructor == String) {
1226
+ return stringMapPool(collection, concurrency, f)
1227
+ }
1228
+ if (collection.constructor == Set) {
1229
+ return setMapPool(collection, concurrency, f)
1230
+ }
1231
+ if (collection.constructor == Map) {
1232
+ return mapMapPool(collection, concurrency, f)
1233
+ }
1234
+ if (collection.constructor == Object) {
1235
+ return objectMapPool(collection, concurrency, f)
1236
+ }
1237
+ throw new TypeError(`invalid collection ${collection}`)
1238
+ }
1239
+
1240
+ map.pool = function mapPool(arg0, arg1, arg2) {
1241
+ if (arg2 == null) {
1242
+ return curry3(_mapPool, __, arg0, arg1)
1047
1243
  }
1048
- throw new TypeError(`${value} is not an Array`)
1244
+ return isPromise(arg0)
1245
+ ? arg0.then(curry3(_mapPool, __, arg1, arg2))
1246
+ : _mapPool(arg0, arg1, arg2)
1049
1247
  }
1050
1248
 
1051
1249
  const FilteringIterator = (iterator, predicate) => ({
@@ -2152,7 +2350,8 @@ const _forEach = function (collection, callback) {
2152
2350
  return collection
2153
2351
  }
2154
2352
  if (typeof collection.forEach == 'function') {
2155
- return collection.forEach(callback)
2353
+ collection.forEach(callback)
2354
+ return collection
2156
2355
  }
2157
2356
  if (typeof collection[symbolIterator] == 'function') {
2158
2357
  return iteratorForEach(collection[symbolIterator](), callback)
package/lt.js CHANGED
@@ -47,6 +47,12 @@ const lessThan = require('./_internal/lessThan')
47
47
  * console.log, // true
48
48
  * ])
49
49
  * ```
50
+ *
51
+ * Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
52
+ *
53
+ * ```javascript [playground]
54
+ * lt(Promise.resolve({ a: 1, b: 2 }), get('a'), get('b')).then(console.log) // true
55
+ * ```
50
56
  */
51
57
  const lt = ComparisonOperator(lessThan)
52
58
 
package/lte.js CHANGED
@@ -47,6 +47,12 @@ const lessThanOrEqual = require('./_internal/lessThanOrEqual')
47
47
  * console.log, // true
48
48
  * ])
49
49
  * ```
50
+ *
51
+ * Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
52
+ *
53
+ * ```javascript [playground]
54
+ * lte(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
55
+ * ```
50
56
  */
51
57
  const lte = ComparisonOperator(lessThanOrEqual)
52
58