rubico 1.9.7 → 2.0.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 (587) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.js +3 -2
  3. package/.github/workflows/nodejs.yml +1 -1
  4. package/AggregateReducer.js +19 -0
  5. package/AggregateReducer.test.js +82 -0
  6. package/CHANGELOG.md +22 -1
  7. package/Transducer.js +75 -26
  8. package/Transducer.test.js +117 -0
  9. package/_internal/ComparisonOperator.js +68 -0
  10. package/_internal/File.js +41 -0
  11. package/_internal/FlatMappingAsyncIterator.js +4 -4
  12. package/_internal/FlatMappingIterator.js +1 -1
  13. package/_internal/TimeInLoopSuite.js +138 -0
  14. package/_internal/areAnyValuesPromises.js +23 -0
  15. package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
  16. package/_internal/arrayExtend.js +3 -2
  17. package/_internal/arrayFilter.js +3 -4
  18. package/_internal/{arrayAny.js → arraySome.js} +8 -8
  19. package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
  20. package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
  21. package/_internal/curry4.test.js +25 -0
  22. package/_internal/curry5.test.js +29 -0
  23. package/_internal/curryArgs2.js +43 -0
  24. package/_internal/curryArgs3.test.js +21 -0
  25. package/_internal/curryArgs4.js +65 -0
  26. package/_internal/curryArgs4.test.js +25 -0
  27. package/_internal/equals.js +13 -0
  28. package/_internal/findAllFilePaths.js +22 -0
  29. package/_internal/funcApply.js +2 -0
  30. package/_internal/funcCall.js +14 -0
  31. package/_internal/functionArrayAll.js +26 -0
  32. package/_internal/functionArrayAllSeries.js +55 -0
  33. package/_internal/functionObjectAll.js +32 -0
  34. package/_internal/genericReduce.js +4 -22
  35. package/_internal/genericTransform.js +15 -15
  36. package/_internal/improvedGenericTransform.js +93 -0
  37. package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
  38. package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
  39. package/_internal/leftResolverRightResolverCompare.js +19 -0
  40. package/_internal/leftResolverRightValueCompare.js +16 -0
  41. package/_internal/leftValueRightResolverCompare.js +16 -0
  42. package/_internal/objectReduce.js +0 -1
  43. package/_internal/pathResolve.js +6 -0
  44. package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
  45. package/_internal/reducerFlatMap.js +4 -4
  46. package/_internal/reducerFlatten.js +1 -1
  47. package/_internal/{reducerAny.js → reducerSome.js} +4 -4
  48. package/_internal/timeInLoop.js +37 -0
  49. package/_internal/timeInLoop.test.js +18 -0
  50. package/_internal/timeInLoopAsync.js +35 -0
  51. package/_internal/timeInLoopAsync.test.js +22 -0
  52. package/all.js +106 -40
  53. package/and.js +54 -36
  54. package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
  55. package/archive/_Promise-2023-05-29.js +93 -0
  56. package/archive/arrayMap2-2023-05-29.js +73 -0
  57. package/archive/benchmarks-v1.9.7/all.js +34 -0
  58. package/archive/benchmarks-v1.9.7/and.js +24 -0
  59. package/archive/benchmarks-v1.9.7/assign.js +174 -0
  60. package/archive/benchmarks-v1.9.7/curry.js +55 -0
  61. package/archive/benchmarks-v1.9.7/eq.js +25 -0
  62. package/archive/benchmarks-v1.9.7/filter.js +1322 -0
  63. package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
  64. package/archive/benchmarks-v1.9.7/get.js +44 -0
  65. package/archive/benchmarks-v1.9.7/gt.js +25 -0
  66. package/archive/benchmarks-v1.9.7/gte.js +25 -0
  67. package/archive/benchmarks-v1.9.7/lt.js +25 -0
  68. package/archive/benchmarks-v1.9.7/lte.js +25 -0
  69. package/archive/benchmarks-v1.9.7/map.js +892 -0
  70. package/archive/benchmarks-v1.9.7/omit.js +28 -0
  71. package/archive/benchmarks-v1.9.7/or.js +51 -0
  72. package/archive/benchmarks-v1.9.7/pick.js +24 -0
  73. package/archive/benchmarks-v1.9.7/pipe.js +152 -0
  74. package/archive/benchmarks-v1.9.7/reduce.js +739 -0
  75. package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
  76. package/archive/benchmarks-v1.9.7/tap.js +90 -0
  77. package/archive/benchmarks-v1.9.7/transform.js +218 -0
  78. package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
  79. package/assign.js +18 -8
  80. package/bench +65 -0
  81. package/benchmark-output/v1.9.7 +268 -0
  82. package/benchmarks/all.async.js +43 -0
  83. package/benchmarks/all.js +42 -33
  84. package/benchmarks/always.js +15 -0
  85. package/benchmarks/and.async.js +25 -0
  86. package/benchmarks/and.js +20 -19
  87. package/benchmarks/assign.async.js +27 -0
  88. package/benchmarks/assign.js +20 -167
  89. package/benchmarks/curry.js +34 -54
  90. package/benchmarks/eq.async.js +23 -0
  91. package/benchmarks/eq.js +17 -19
  92. package/benchmarks/every.async.js +19 -0
  93. package/benchmarks/every.js +19 -0
  94. package/benchmarks/filter.async.js +32 -0
  95. package/benchmarks/filter.js +27 -1311
  96. package/benchmarks/flatMap.async.js +26 -0
  97. package/benchmarks/flatMap.js +26 -36
  98. package/benchmarks/get.async.js +19 -0
  99. package/benchmarks/get.js +27 -32
  100. package/benchmarks/gt.async.js +23 -0
  101. package/benchmarks/gt.js +17 -19
  102. package/benchmarks/gte.async.js +23 -0
  103. package/benchmarks/gte.js +17 -19
  104. package/benchmarks/lt.async.js +23 -0
  105. package/benchmarks/lt.js +17 -19
  106. package/benchmarks/lte.async.js +23 -0
  107. package/benchmarks/lte.js +17 -19
  108. package/benchmarks/map.async.js +43 -0
  109. package/benchmarks/map.js +24 -876
  110. package/benchmarks/misc/Promise.js +26 -0
  111. package/benchmarks/misc/isPromise.js +30 -0
  112. package/benchmarks/misc/promiseAll.js +36 -0
  113. package/benchmarks/not.js +23 -0
  114. package/benchmarks/omit.js +30 -20
  115. package/benchmarks/or.async.js +25 -0
  116. package/benchmarks/or.js +23 -49
  117. package/benchmarks/pick.js +30 -16
  118. package/benchmarks/pipe.async.js +47 -0
  119. package/benchmarks/pipe.js +46 -151
  120. package/benchmarks/reduce.async.js +32 -0
  121. package/benchmarks/reduce.js +27 -728
  122. package/benchmarks/set.async.js +19 -0
  123. package/benchmarks/set.js +41 -0
  124. package/benchmarks/some.async.js +19 -0
  125. package/benchmarks/some.js +19 -0
  126. package/benchmarks/switchCase.async.js +27 -0
  127. package/benchmarks/switchCase.js +55 -256
  128. package/benchmarks/tap.js +10 -85
  129. package/benchmarks/thunkify.js +15 -0
  130. package/benchmarks/transform.async.js +27 -0
  131. package/benchmarks/transform.js +28 -206
  132. package/benchmarks/tryCatch.async.js +25 -0
  133. package/benchmarks/tryCatch.js +24 -100
  134. package/{distributor.js → build} +50 -50
  135. package/compose.js +46 -0
  136. package/dist/__.es.js +2 -2
  137. package/dist/__.es.min.js +2 -2
  138. package/dist/__.js +2 -2
  139. package/dist/__.min.js +2 -2
  140. package/dist/__.min.mjs +2 -2
  141. package/dist/__.mjs +2 -2
  142. package/dist/all.es.js +173 -92
  143. package/dist/all.es.min.js +3 -3
  144. package/dist/all.js +173 -92
  145. package/dist/all.min.js +3 -3
  146. package/dist/all.min.mjs +3 -3
  147. package/dist/all.mjs +173 -92
  148. package/dist/always.es.js +2 -2
  149. package/dist/always.es.min.js +2 -2
  150. package/dist/always.js +2 -2
  151. package/dist/always.min.js +2 -2
  152. package/dist/always.min.mjs +2 -2
  153. package/dist/always.mjs +2 -2
  154. package/dist/and.es.js +101 -32
  155. package/dist/and.es.min.js +3 -3
  156. package/dist/and.js +101 -32
  157. package/dist/and.min.js +3 -3
  158. package/dist/and.min.mjs +3 -3
  159. package/dist/and.mjs +101 -32
  160. package/dist/assign.es.js +37 -10
  161. package/dist/assign.es.min.js +3 -3
  162. package/dist/assign.js +37 -10
  163. package/dist/assign.min.js +3 -3
  164. package/dist/assign.min.mjs +3 -3
  165. package/dist/assign.mjs +37 -10
  166. package/dist/compose.es.js +71 -0
  167. package/dist/compose.es.min.js +7 -0
  168. package/dist/compose.js +78 -0
  169. package/dist/compose.min.js +8 -0
  170. package/dist/compose.min.mjs +7 -0
  171. package/dist/compose.mjs +71 -0
  172. package/dist/curry.es.js +2 -2
  173. package/dist/curry.es.min.js +2 -2
  174. package/dist/curry.js +2 -2
  175. package/dist/curry.min.js +2 -2
  176. package/dist/curry.min.mjs +2 -2
  177. package/dist/curry.mjs +2 -2
  178. package/dist/eq.es.js +172 -49
  179. package/dist/eq.es.min.js +3 -3
  180. package/dist/eq.js +172 -49
  181. package/dist/eq.min.js +3 -3
  182. package/dist/eq.min.mjs +3 -3
  183. package/dist/eq.mjs +172 -49
  184. package/dist/every.es.js +194 -0
  185. package/dist/every.es.min.js +7 -0
  186. package/dist/every.js +201 -0
  187. package/dist/every.min.js +8 -0
  188. package/dist/every.min.mjs +7 -0
  189. package/dist/every.mjs +194 -0
  190. package/dist/filter.es.js +14 -108
  191. package/dist/filter.es.min.js +3 -3
  192. package/dist/filter.js +14 -108
  193. package/dist/filter.min.js +3 -3
  194. package/dist/filter.min.mjs +3 -3
  195. package/dist/filter.mjs +14 -108
  196. package/dist/flatMap.es.js +27 -214
  197. package/dist/flatMap.es.min.js +3 -3
  198. package/dist/flatMap.js +27 -214
  199. package/dist/flatMap.min.js +3 -3
  200. package/dist/flatMap.min.mjs +3 -3
  201. package/dist/flatMap.mjs +27 -214
  202. package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
  203. package/dist/forEach.es.min.js +7 -0
  204. package/dist/{x/forEach.js → forEach.js} +52 -70
  205. package/dist/forEach.min.js +8 -0
  206. package/dist/forEach.min.mjs +7 -0
  207. package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
  208. package/dist/get.es.js +60 -5
  209. package/dist/get.es.min.js +3 -3
  210. package/dist/get.js +60 -5
  211. package/dist/get.min.js +3 -3
  212. package/dist/get.min.mjs +3 -3
  213. package/dist/get.mjs +60 -5
  214. package/dist/gt.es.js +171 -48
  215. package/dist/gt.es.min.js +3 -3
  216. package/dist/gt.js +171 -48
  217. package/dist/gt.min.js +3 -3
  218. package/dist/gt.min.mjs +3 -3
  219. package/dist/gt.mjs +171 -48
  220. package/dist/gte.es.js +171 -48
  221. package/dist/gte.es.min.js +3 -3
  222. package/dist/gte.js +171 -48
  223. package/dist/gte.min.js +3 -3
  224. package/dist/gte.min.mjs +3 -3
  225. package/dist/gte.mjs +171 -48
  226. package/dist/lt.es.js +171 -48
  227. package/dist/lt.es.min.js +3 -3
  228. package/dist/lt.js +171 -48
  229. package/dist/lt.min.js +3 -3
  230. package/dist/lt.min.mjs +3 -3
  231. package/dist/lt.mjs +171 -48
  232. package/dist/lte.es.js +171 -48
  233. package/dist/lte.es.min.js +3 -3
  234. package/dist/lte.js +171 -48
  235. package/dist/lte.min.js +3 -3
  236. package/dist/lte.min.mjs +3 -3
  237. package/dist/lte.mjs +171 -48
  238. package/dist/map.es.js +12 -101
  239. package/dist/map.es.min.js +3 -3
  240. package/dist/map.js +12 -101
  241. package/dist/map.min.js +3 -3
  242. package/dist/map.min.mjs +3 -3
  243. package/dist/map.mjs +12 -101
  244. package/dist/not.es.js +75 -14
  245. package/dist/not.es.min.js +3 -3
  246. package/dist/not.js +75 -14
  247. package/dist/not.min.js +3 -3
  248. package/dist/not.min.mjs +3 -3
  249. package/dist/not.mjs +75 -14
  250. package/dist/omit.es.js +7 -2
  251. package/dist/omit.es.min.js +3 -3
  252. package/dist/omit.js +7 -2
  253. package/dist/omit.min.js +3 -3
  254. package/dist/omit.min.mjs +3 -3
  255. package/dist/omit.mjs +7 -2
  256. package/dist/or.es.js +99 -31
  257. package/dist/or.es.min.js +3 -3
  258. package/dist/or.js +99 -31
  259. package/dist/or.min.js +3 -3
  260. package/dist/or.min.mjs +3 -3
  261. package/dist/or.mjs +99 -31
  262. package/dist/pick.es.js +8 -3
  263. package/dist/pick.es.min.js +3 -3
  264. package/dist/pick.js +8 -3
  265. package/dist/pick.min.js +3 -3
  266. package/dist/pick.min.mjs +3 -3
  267. package/dist/pick.mjs +8 -3
  268. package/dist/pipe.es.js +42 -46
  269. package/dist/pipe.es.min.js +3 -3
  270. package/dist/pipe.js +42 -46
  271. package/dist/pipe.min.js +3 -3
  272. package/dist/pipe.min.mjs +3 -3
  273. package/dist/pipe.mjs +42 -46
  274. package/dist/reduce.es.js +52 -94
  275. package/dist/reduce.es.min.js +3 -3
  276. package/dist/reduce.js +52 -94
  277. package/dist/reduce.min.js +3 -3
  278. package/dist/reduce.min.mjs +3 -3
  279. package/dist/reduce.mjs +52 -94
  280. package/dist/rubico.es.js +730 -869
  281. package/dist/rubico.es.min.js +3 -3
  282. package/dist/rubico.js +730 -869
  283. package/dist/rubico.min.js +3 -3
  284. package/dist/rubico.min.mjs +3 -3
  285. package/dist/rubico.mjs +730 -869
  286. package/dist/set.es.js +18 -3
  287. package/dist/set.es.min.js +3 -3
  288. package/dist/set.js +18 -3
  289. package/dist/set.min.js +3 -3
  290. package/dist/set.min.mjs +3 -3
  291. package/dist/set.mjs +18 -3
  292. package/dist/{any.js → some.es.js} +64 -54
  293. package/dist/some.es.min.js +7 -0
  294. package/dist/{any.mjs → some.js} +72 -48
  295. package/dist/some.min.js +8 -0
  296. package/dist/some.min.mjs +7 -0
  297. package/dist/{any.es.js → some.mjs} +65 -48
  298. package/dist/switchCase.es.js +55 -5
  299. package/dist/switchCase.es.min.js +3 -3
  300. package/dist/switchCase.js +55 -5
  301. package/dist/switchCase.min.js +3 -3
  302. package/dist/switchCase.min.mjs +3 -3
  303. package/dist/switchCase.mjs +55 -5
  304. package/dist/tap.es.js +2 -9
  305. package/dist/tap.es.min.js +3 -3
  306. package/dist/tap.js +2 -9
  307. package/dist/tap.min.js +3 -3
  308. package/dist/tap.min.mjs +3 -3
  309. package/dist/tap.mjs +2 -9
  310. package/dist/thunkify.es.js +45 -2
  311. package/dist/thunkify.es.min.js +3 -3
  312. package/dist/thunkify.js +45 -2
  313. package/dist/thunkify.min.js +3 -3
  314. package/dist/thunkify.min.mjs +3 -3
  315. package/dist/thunkify.mjs +45 -2
  316. package/dist/transform.es.js +35 -71
  317. package/dist/transform.es.min.js +3 -3
  318. package/dist/transform.js +35 -71
  319. package/dist/transform.min.js +3 -3
  320. package/dist/transform.min.mjs +3 -3
  321. package/dist/transform.mjs +35 -71
  322. package/dist/tryCatch.es.js +33 -17
  323. package/dist/tryCatch.es.min.js +3 -3
  324. package/dist/tryCatch.js +33 -17
  325. package/dist/tryCatch.min.js +3 -3
  326. package/dist/tryCatch.min.mjs +3 -3
  327. package/dist/tryCatch.mjs +33 -17
  328. package/dist/x/append.es.js +2 -2
  329. package/dist/x/append.es.min.js +2 -2
  330. package/dist/x/append.js +2 -2
  331. package/dist/x/append.min.js +2 -2
  332. package/dist/x/append.min.mjs +2 -2
  333. package/dist/x/append.mjs +2 -2
  334. package/dist/x/callProp.es.js +2 -2
  335. package/dist/x/callProp.es.min.js +2 -2
  336. package/dist/x/callProp.js +2 -2
  337. package/dist/x/callProp.min.js +2 -2
  338. package/dist/x/callProp.min.mjs +2 -2
  339. package/dist/x/callProp.mjs +2 -2
  340. package/dist/x/defaultsDeep.es.js +2 -2
  341. package/dist/x/defaultsDeep.es.min.js +2 -2
  342. package/dist/x/defaultsDeep.js +2 -2
  343. package/dist/x/defaultsDeep.min.js +2 -2
  344. package/dist/x/defaultsDeep.min.mjs +2 -2
  345. package/dist/x/defaultsDeep.mjs +2 -2
  346. package/dist/x/differenceWith.es.js +7 -7
  347. package/dist/x/differenceWith.es.min.js +3 -3
  348. package/dist/x/differenceWith.js +7 -7
  349. package/dist/x/differenceWith.min.js +2 -2
  350. package/dist/x/differenceWith.min.mjs +3 -3
  351. package/dist/x/differenceWith.mjs +7 -7
  352. package/dist/x/filterOut.es.js +60 -117
  353. package/dist/x/filterOut.es.min.js +3 -3
  354. package/dist/x/filterOut.js +60 -117
  355. package/dist/x/filterOut.min.js +3 -3
  356. package/dist/x/filterOut.min.mjs +3 -3
  357. package/dist/x/filterOut.mjs +60 -117
  358. package/dist/x/find.es.js +2 -2
  359. package/dist/x/find.es.min.js +2 -2
  360. package/dist/x/find.js +2 -2
  361. package/dist/x/find.min.js +2 -2
  362. package/dist/x/find.min.mjs +2 -2
  363. package/dist/x/find.mjs +2 -2
  364. package/dist/x/findIndex.es.js +2 -2
  365. package/dist/x/findIndex.es.min.js +2 -2
  366. package/dist/x/findIndex.js +2 -2
  367. package/dist/x/findIndex.min.js +2 -2
  368. package/dist/x/findIndex.min.mjs +2 -2
  369. package/dist/x/findIndex.mjs +2 -2
  370. package/dist/x/first.es.js +2 -2
  371. package/dist/x/first.es.min.js +2 -2
  372. package/dist/x/first.js +2 -2
  373. package/dist/x/first.min.js +2 -2
  374. package/dist/x/first.min.mjs +2 -2
  375. package/dist/x/first.mjs +2 -2
  376. package/dist/x/flatten.es.js +20 -207
  377. package/dist/x/flatten.es.min.js +3 -3
  378. package/dist/x/flatten.js +20 -207
  379. package/dist/x/flatten.min.js +3 -3
  380. package/dist/x/flatten.min.mjs +3 -3
  381. package/dist/x/flatten.mjs +20 -207
  382. package/dist/x/groupBy.es.js +52 -94
  383. package/dist/x/groupBy.es.min.js +3 -3
  384. package/dist/x/groupBy.js +52 -94
  385. package/dist/x/groupBy.min.js +3 -3
  386. package/dist/x/groupBy.min.mjs +3 -3
  387. package/dist/x/groupBy.mjs +52 -94
  388. package/dist/x/has.es.js +2 -2
  389. package/dist/x/has.es.min.js +2 -2
  390. package/dist/x/has.js +2 -2
  391. package/dist/x/has.min.js +2 -2
  392. package/dist/x/has.min.mjs +2 -2
  393. package/dist/x/has.mjs +2 -2
  394. package/dist/x/identity.es.js +2 -2
  395. package/dist/x/identity.es.min.js +2 -2
  396. package/dist/x/identity.js +2 -2
  397. package/dist/x/identity.min.js +2 -2
  398. package/dist/x/identity.min.mjs +2 -2
  399. package/dist/x/identity.mjs +2 -2
  400. package/dist/x/includes.es.js +2 -2
  401. package/dist/x/includes.es.min.js +2 -2
  402. package/dist/x/includes.js +2 -2
  403. package/dist/x/includes.min.js +2 -2
  404. package/dist/x/includes.min.mjs +2 -2
  405. package/dist/x/includes.mjs +2 -2
  406. package/dist/x/isDeepEqual.es.js +2 -2
  407. package/dist/x/isDeepEqual.es.min.js +2 -2
  408. package/dist/x/isDeepEqual.js +2 -2
  409. package/dist/x/isDeepEqual.min.js +2 -2
  410. package/dist/x/isDeepEqual.min.mjs +2 -2
  411. package/dist/x/isDeepEqual.mjs +2 -2
  412. package/dist/x/isEmpty.es.js +2 -2
  413. package/dist/x/isEmpty.es.min.js +2 -2
  414. package/dist/x/isEmpty.js +2 -2
  415. package/dist/x/isEmpty.min.js +2 -2
  416. package/dist/x/isEmpty.min.mjs +2 -2
  417. package/dist/x/isEmpty.mjs +2 -2
  418. package/dist/x/isEqual.es.js +2 -2
  419. package/dist/x/isEqual.es.min.js +2 -2
  420. package/dist/x/isEqual.js +2 -2
  421. package/dist/x/isEqual.min.js +2 -2
  422. package/dist/x/isEqual.min.mjs +2 -2
  423. package/dist/x/isEqual.mjs +2 -2
  424. package/dist/x/isFunction.es.js +2 -2
  425. package/dist/x/isFunction.es.min.js +2 -2
  426. package/dist/x/isFunction.js +2 -2
  427. package/dist/x/isFunction.min.js +2 -2
  428. package/dist/x/isFunction.min.mjs +2 -2
  429. package/dist/x/isFunction.mjs +2 -2
  430. package/dist/x/isIn.es.js +2 -2
  431. package/dist/x/isIn.es.min.js +2 -2
  432. package/dist/x/isIn.js +2 -2
  433. package/dist/x/isIn.min.js +2 -2
  434. package/dist/x/isIn.min.mjs +2 -2
  435. package/dist/x/isIn.mjs +2 -2
  436. package/dist/x/isObject.es.js +2 -2
  437. package/dist/x/isObject.es.min.js +2 -2
  438. package/dist/x/isObject.js +2 -2
  439. package/dist/x/isObject.min.js +2 -2
  440. package/dist/x/isObject.min.mjs +2 -2
  441. package/dist/x/isObject.mjs +2 -2
  442. package/dist/x/isString.es.js +2 -2
  443. package/dist/x/isString.es.min.js +2 -2
  444. package/dist/x/isString.js +2 -2
  445. package/dist/x/isString.min.js +2 -2
  446. package/dist/x/isString.min.mjs +2 -2
  447. package/dist/x/isString.mjs +2 -2
  448. package/dist/x/keys.es.js +2 -2
  449. package/dist/x/keys.es.min.js +2 -2
  450. package/dist/x/keys.js +2 -2
  451. package/dist/x/keys.min.js +2 -2
  452. package/dist/x/keys.min.mjs +2 -2
  453. package/dist/x/keys.mjs +2 -2
  454. package/dist/x/last.es.js +2 -2
  455. package/dist/x/last.es.min.js +2 -2
  456. package/dist/x/last.js +2 -2
  457. package/dist/x/last.min.js +2 -2
  458. package/dist/x/last.min.mjs +2 -2
  459. package/dist/x/last.mjs +2 -2
  460. package/dist/x/maxBy.es.js +59 -6
  461. package/dist/x/maxBy.es.min.js +3 -3
  462. package/dist/x/maxBy.js +59 -6
  463. package/dist/x/maxBy.min.js +3 -3
  464. package/dist/x/maxBy.min.mjs +3 -3
  465. package/dist/x/maxBy.mjs +59 -6
  466. package/dist/x/noop.es.js +2 -2
  467. package/dist/x/noop.es.min.js +2 -2
  468. package/dist/x/noop.js +2 -2
  469. package/dist/x/noop.min.js +2 -2
  470. package/dist/x/noop.min.mjs +2 -2
  471. package/dist/x/noop.mjs +2 -2
  472. package/dist/x/pluck.es.js +32 -103
  473. package/dist/x/pluck.es.min.js +3 -3
  474. package/dist/x/pluck.js +32 -103
  475. package/dist/x/pluck.min.js +3 -3
  476. package/dist/x/pluck.min.mjs +3 -3
  477. package/dist/x/pluck.mjs +32 -103
  478. package/dist/x/prepend.es.js +2 -2
  479. package/dist/x/prepend.es.min.js +2 -2
  480. package/dist/x/prepend.js +2 -2
  481. package/dist/x/prepend.min.js +2 -2
  482. package/dist/x/prepend.min.mjs +2 -2
  483. package/dist/x/prepend.mjs +2 -2
  484. package/dist/x/size.es.js +2 -2
  485. package/dist/x/size.es.min.js +2 -2
  486. package/dist/x/size.js +2 -2
  487. package/dist/x/size.min.js +2 -2
  488. package/dist/x/size.min.mjs +2 -2
  489. package/dist/x/size.mjs +2 -2
  490. package/dist/x/trace.es.js +2 -9
  491. package/dist/x/trace.es.min.js +3 -3
  492. package/dist/x/trace.js +2 -9
  493. package/dist/x/trace.min.js +3 -3
  494. package/dist/x/trace.min.mjs +3 -3
  495. package/dist/x/trace.mjs +2 -9
  496. package/dist/x/unionWith.es.js +2 -2
  497. package/dist/x/unionWith.es.min.js +2 -2
  498. package/dist/x/unionWith.js +2 -2
  499. package/dist/x/unionWith.min.js +2 -2
  500. package/dist/x/unionWith.min.mjs +2 -2
  501. package/dist/x/unionWith.mjs +2 -2
  502. package/dist/x/uniq.es.js +2 -2
  503. package/dist/x/uniq.es.min.js +2 -2
  504. package/dist/x/uniq.js +2 -2
  505. package/dist/x/uniq.min.js +2 -2
  506. package/dist/x/uniq.min.mjs +2 -2
  507. package/dist/x/uniq.mjs +2 -2
  508. package/dist/x/unless.es.js +2 -2
  509. package/dist/x/unless.es.min.js +2 -2
  510. package/dist/x/unless.js +2 -2
  511. package/dist/x/unless.min.js +2 -2
  512. package/dist/x/unless.min.mjs +2 -2
  513. package/dist/x/unless.mjs +2 -2
  514. package/dist/x/values.es.js +2 -2
  515. package/dist/x/values.es.min.js +2 -2
  516. package/dist/x/values.js +2 -2
  517. package/dist/x/values.min.js +2 -2
  518. package/dist/x/values.min.mjs +2 -2
  519. package/dist/x/values.mjs +2 -2
  520. package/dist/x/when.es.js +2 -2
  521. package/dist/x/when.es.min.js +2 -2
  522. package/dist/x/when.js +2 -2
  523. package/dist/x/when.min.js +2 -2
  524. package/dist/x/when.min.mjs +2 -2
  525. package/dist/x/when.mjs +2 -2
  526. package/dist-test.js +9 -2042
  527. package/eq.js +21 -63
  528. package/es.js +730 -869
  529. package/every.js +94 -0
  530. package/filter.js +23 -91
  531. package/flatMap.js +75 -70
  532. package/forEach.js +82 -0
  533. package/get.js +23 -6
  534. package/global.js +6 -4
  535. package/gt.js +15 -58
  536. package/gte.js +14 -57
  537. package/index.js +730 -869
  538. package/lt.js +17 -60
  539. package/lte.js +14 -57
  540. package/map.js +9 -94
  541. package/memory-usage/reduce.js +2 -2
  542. package/not.js +27 -45
  543. package/omit.js +4 -0
  544. package/or.js +50 -33
  545. package/package.json +7 -7
  546. package/pick.js +5 -1
  547. package/pipe.js +13 -50
  548. package/reduce.js +42 -51
  549. package/rubico.js +10 -8
  550. package/set.js +43 -10
  551. package/some.js +105 -0
  552. package/switchCase.js +13 -3
  553. package/tap.js +0 -24
  554. package/test.js +847 -1096
  555. package/thunkify.js +9 -0
  556. package/transform.js +31 -16
  557. package/tryCatch.js +19 -15
  558. package/x/differenceWith.js +3 -3
  559. package/x/filterOut.test.js +6 -6
  560. package/x/flatten.js +1 -1
  561. package/x/flatten.test.js +0 -8
  562. package/x/index.js +0 -2
  563. package/x/pluck.js +18 -27
  564. package/x/pluck.test.js +3 -7
  565. package/x/timeInLoop.js +16 -25
  566. package/x/timeInLoop.test.js +8 -4
  567. package/any.js +0 -82
  568. package/dist/any.es.min.js +0 -7
  569. package/dist/any.min.js +0 -8
  570. package/dist/any.min.mjs +0 -7
  571. package/dist/fork.es.js +0 -159
  572. package/dist/fork.es.min.js +0 -7
  573. package/dist/fork.js +0 -166
  574. package/dist/fork.min.js +0 -8
  575. package/dist/fork.min.mjs +0 -7
  576. package/dist/fork.mjs +0 -159
  577. package/dist/x/forEach.es.min.js +0 -7
  578. package/dist/x/forEach.min.js +0 -8
  579. package/dist/x/forEach.min.mjs +0 -7
  580. package/fork.js +0 -101
  581. package/x/forEach.js +0 -93
  582. package/x/forEach.test.js +0 -218
  583. /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
  584. /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
  585. /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
  586. /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
  587. /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/dist/map.es.js CHANGED
@@ -1,10 +1,12 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.0
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
8
+ const isPromise = value => value != null && typeof value.then == 'function'
9
+
8
10
  const symbolIterator = Symbol.iterator
9
11
 
10
12
  const MappingIterator = (iterator, mapper) => ({
@@ -23,8 +25,6 @@ const MappingIterator = (iterator, mapper) => ({
23
25
 
24
26
  const NextIteration = value => ({ value, done: false })
25
27
 
26
- const isPromise = value => value != null && typeof value.then == 'function'
27
-
28
28
  const symbolAsyncIterator = Symbol.asyncIterator
29
29
 
30
30
  const MappingAsyncIterator = (asyncIterator, mapper) => ({
@@ -76,20 +76,6 @@ const isObject = value => {
76
76
  return (typeofValue == 'object') || (typeofValue == 'function')
77
77
  }
78
78
 
79
- const objectProto = Object.prototype
80
-
81
- const nativeObjectToString = objectProto.toString
82
-
83
- const objectToString = value => nativeObjectToString.call(value)
84
-
85
- const generatorFunctionTag = '[object GeneratorFunction]'
86
-
87
- const isGeneratorFunction = value => objectToString(value) == generatorFunctionTag
88
-
89
- const asyncGeneratorFunctionTag = '[object AsyncGeneratorFunction]'
90
-
91
- const isAsyncGeneratorFunction = value => objectToString(value) == asyncGeneratorFunctionTag
92
-
93
79
  const promiseAll = Promise.all.bind(Promise)
94
80
 
95
81
  const arrayMap = function (array, mapper) {
@@ -108,31 +94,6 @@ const arrayMap = function (array, mapper) {
108
94
  return isAsync ? promiseAll(result) : result
109
95
  }
110
96
 
111
- const generatorFunctionMap = (
112
- generatorFunc, mapper,
113
- ) => function* mappingGeneratorFunc(...args) {
114
- for (const item of generatorFunc(...args)) {
115
- yield mapper(item)
116
- }
117
- }
118
-
119
- const asyncGeneratorFunctionMap = function (asyncGeneratorFunc, mapper) {
120
- return async function* mappingAsyncGeneratorFunc(...args) {
121
- for await (const item of asyncGeneratorFunc(...args)) {
122
- yield mapper(item)
123
- }
124
- }
125
- }
126
-
127
- const reducerMap = (
128
- reducer, mapper,
129
- ) => function mappingReducer(result, reducerItem) {
130
- const mappingReducerItem = mapper(reducerItem)
131
- return isPromise(mappingReducerItem)
132
- ? mappingReducerItem.then(curry2(reducer, result, __))
133
- : reducer(result, mappingReducerItem)
134
- }
135
-
136
97
  // argument resolver for curry3
137
98
  const curry3ResolveArg0 = (
138
99
  baseFunc, arg1, arg2,
@@ -381,38 +342,6 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
381
342
  return result
382
343
  }
383
344
 
384
- const arrayMapWithIndex = function (array, mapper) {
385
- const arrayLength = array.length,
386
- result = Array(arrayLength)
387
- let index = -1, isAsync = false
388
- while (++index < arrayLength) {
389
- const resultItem = mapper(array[index], index, array)
390
- if (isPromise(resultItem)) {
391
- isAsync = true
392
- }
393
- result[index] = resultItem
394
- }
395
- return isAsync ? promiseAll(result) : result
396
- }
397
-
398
- const hasOwnProperty = Object.prototype.hasOwnProperty
399
- const hasOwn = (obj, key) => hasOwnProperty.call(obj, key)
400
-
401
- const objectMapOwn = function (object, mapper) {
402
- const result = {}
403
- let isAsync = false
404
- for (const key in object) {
405
- if (hasOwn(object, key)) {
406
- const resultItem = mapper(object[key])
407
- if (isPromise(resultItem)) {
408
- isAsync = true
409
- }
410
- result[key] = resultItem
411
- }
412
- }
413
- return isAsync ? promiseObjectAll(result) : result
414
- }
415
-
416
345
  const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
417
346
  const argsLength = args.length,
418
347
  curriedArgsLength = curriedArgs.length,
@@ -520,15 +449,6 @@ const _map = function (value, mapper) {
520
449
  if (isArray(value)) {
521
450
  return arrayMap(value, mapper)
522
451
  }
523
- if (typeof value == 'function') {
524
- if (isGeneratorFunction(value)) {
525
- return generatorFunctionMap(value, mapper)
526
- }
527
- if (isAsyncGeneratorFunction(value)) {
528
- return asyncGeneratorFunctionMap(value, mapper)
529
- }
530
- return reducerMap(value, mapper)
531
- }
532
452
  if (value == null) {
533
453
  return value
534
454
  }
@@ -562,10 +482,15 @@ const _map = function (value, mapper) {
562
482
 
563
483
  const map = (...args) => {
564
484
  const mapper = args.pop()
565
- if (args.length > 0) {
566
- return _map(args[0], mapper)
485
+ if (args.length == 0) {
486
+ return curry2(_map, __, mapper)
567
487
  }
568
- return curry2(_map, __, mapper)
488
+
489
+ const collection = args[0]
490
+ if (isPromise(collection)) {
491
+ return collection.then(curry2(_map, __, mapper))
492
+ }
493
+ return _map(collection, mapper)
569
494
  }
570
495
 
571
496
  map.entries = function mapEntries(mapper) {
@@ -597,18 +522,4 @@ map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
597
522
  throw new TypeError(`${value} is not an Array`)
598
523
  }
599
524
 
600
- map.withIndex = mapper => function mappingWithIndex(value) {
601
- if (isArray(value)) {
602
- return arrayMapWithIndex(value, mapper)
603
- }
604
- throw new TypeError(`${value} is not an Array`)
605
- }
606
-
607
- map.own = mapper => function mappingOwnProperties(value) {
608
- if (isObject(value) && !isArray(value)) {
609
- return objectMapOwn(value, mapper)
610
- }
611
- throw new TypeError(`${value} is not an Object`)
612
- }
613
-
614
525
  export default map
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.0
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
- const symbolIterator=Symbol.iterator,MappingIterator=(r,n)=>({toString:()=>"[object MappingIterator]",[symbolIterator](){return this},next(){const t=r.next();return t.done?t:{value:n(t.value),done:!1}}}),NextIteration=r=>({value:r,done:!1}),isPromise=r=>null!=r&&"function"==typeof r.then,symbolAsyncIterator=Symbol.asyncIterator,MappingAsyncIterator=(r,n)=>({[symbolAsyncIterator](){return this},async next(){const t=await r.next();if(t.done)return t;const e=n(t.value);return isPromise(e)?e.then(NextIteration):{value:e,done:!1}}}),__=Symbol.for("placeholder"),curry2ResolveArg0=(r,n)=>function(t){return r(t,n)},curry2ResolveArg1=(r,n)=>function(t){return r(n,t)},curry2=function(r,n,t){return n==__?curry2ResolveArg0(r,t):curry2ResolveArg1(r,n)},isArray=Array.isArray,isObject=r=>{if(null==r)return!1;const n=typeof r;return"object"==n||"function"==n},objectProto=Object.prototype,nativeObjectToString=objectProto.toString,objectToString=r=>nativeObjectToString.call(r),generatorFunctionTag="[object GeneratorFunction]",isGeneratorFunction=r=>objectToString(r)==generatorFunctionTag,asyncGeneratorFunctionTag="[object AsyncGeneratorFunction]",isAsyncGeneratorFunction=r=>objectToString(r)==asyncGeneratorFunctionTag,promiseAll=Promise.all.bind(Promise),arrayMap=function(r,n){const t=r.length,e=Array(t);let o=-1,c=!1;for(;++o<t;){const t=n(r[o],o,r);isPromise(t)&&(c=!0),e[o]=t}return c?promiseAll(e):e},generatorFunctionMap=(r,n)=>function*(...t){for(const e of r(...t))yield n(e)},asyncGeneratorFunctionMap=function(r,n){return async function*(...t){for await(const e of r(...t))yield n(e)}},reducerMap=(r,n)=>function(t,e){const o=n(e);return isPromise(o)?o.then(curry2(r,t,__)):r(t,o)},curry3ResolveArg0=(r,n,t)=>function(e){return r(e,n,t)},curry3ResolveArg1=(r,n,t)=>function(e){return r(n,e,t)},curry3ResolveArg2=(r,n,t)=>function(e){return r(n,t,e)},curry3=function(r,n,t,e){return n==__?curry3ResolveArg0(r,t,e):t==__?curry3ResolveArg1(r,n,e):curry3ResolveArg2(r,n,t)},callPropUnary=(r,n,t)=>r[n](t),stringMap=function(r,n){const t=arrayMap(r,n);return isPromise(t)?t.then(curry3(callPropUnary,__,"join","")):t.join("")},always=r=>function(){return r},setMap=function(r,n){const t=new Set,e=[];for(const o of r){const c=n(o,o,r);isPromise(c)?e.push(c.then(curry3(callPropUnary,t,"add",__))):t.add(c)}return 0==e.length?t:promiseAll(e).then(always(t))},curry4ResolveArg0=(r,n,t,e)=>function(o){return r(o,n,t,e)},curry4ResolveArg1=(r,n,t,e)=>function(o){return r(n,o,t,e)},curry4ResolveArg2=(r,n,t,e)=>function(o){return r(n,t,o,e)},curry4ResolveArg3=(r,n,t,e)=>function(o){return r(n,t,e,o)},curry4=function(r,n,t,e,o){return n==__?curry4ResolveArg0(r,t,e,o):t==__?curry4ResolveArg1(r,n,e,o):e==__?curry4ResolveArg2(r,n,t,o):curry4ResolveArg3(r,n,t,e)},callPropBinary=(r,n,t,e)=>r[n](t,e),mapMap=function(r,n){const t=new Map,e=[];for(const[o,c]of r){const a=n(c,o,r);isPromise(a)?e.push(a.then(curry4(callPropBinary,t,"set",o,__))):t.set(o,a)}return 0==e.length?t:promiseAll(e).then(always(t))},promiseObjectAllExecutor=r=>function(n){const t={};let e=0;for(const o in r){const c=r[o];isPromise(c)?(e+=1,c.then((r=>function(o){t[r]=o,e-=1,0==e&&n(t)})(o))):t[o]=c}0==e&&n(t)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),objectMap=function(r,n){const t={};let e=!1;for(const o in r){const c=n(r[o],o,r);isPromise(c)&&(e=!0),t[o]=c}return e?promiseObjectAll(t):t},funcConcat=(r,n)=>function(...t){const e=r(...t);return isPromise(e)?e.then(n):n(e)},objectSet=function(r,n,t){return r[n]=t,r},arrayMapSeriesAsync=async function(r,n,t,e){const o=r.length;for(;++e<o;){const o=n(r[e]);t[e]=isPromise(o)?await o:o}return t},arrayMapSeries=function(r,n){const t=r.length,e=Array(t);let o=-1;for(;++o<t;){const t=n(r[o]);if(isPromise(t))return t.then(funcConcat(curry3(objectSet,e,o,__),curry4(arrayMapSeriesAsync,r,n,__,o)));e[o]=t}return e},tapSync=r=>function(...n){return r(...n),n[0]},promiseRace=Promise.race.bind(Promise),arrayMapPoolAsync=async function(r,n,t,e,o,c){const a=r.length;for(;++o<a;){c.size>=t&&await promiseRace(c);const a=n(r[o]);if(isPromise(a)){const r=a.then(tapSync((()=>c.delete(r))));c.add(r),e[o]=r}else e[o]=a}return promiseAll(e)},arrayMapPool=function(r,n,t){const e=r.length,o=Array(e);let c=-1;for(;++c<e;){const e=n(r[c]);if(isPromise(e)){const a=new Set,s=e.then(tapSync((()=>a.delete(s))));return a.add(s),o[c]=s,arrayMapPoolAsync(r,n,t,o,c,a)}o[c]=e}return o},arrayMapWithIndex=function(r,n){const t=r.length,e=Array(t);let o=-1,c=!1;for(;++o<t;){const t=n(r[o],o,r);isPromise(t)&&(c=!0),e[o]=t}return c?promiseAll(e):e},hasOwnProperty=Object.prototype.hasOwnProperty,hasOwn=(r,n)=>hasOwnProperty.call(r,n),objectMapOwn=function(r,n){const t={};let e=!1;for(const o in r)if(hasOwn(r,o)){const c=n(r[o]);isPromise(c)&&(e=!0),t[o]=c}return e?promiseObjectAll(t):t},_curryArity=(r,n,t)=>function(...e){const o=t.length,c=e.length,a=[];let s=-1,i=-1,u=0;for(;++s<o;){const o=t[s];if(o==__&&(i+=1)<c){const r=e[i];r==__&&(u+=1),a.push(r)}else a.push(o);if(a.length==r)return 0==u?n(...a):curryArity(r,n,a)}for(;++i<c;){const t=e[i];if(t==__&&(u+=1),a.push(t),a.length==r)return 0==u?n(...a):curryArity(r,n,a)}return curryArity(r,n,a)},curryArity=function(r,n,t){const e=t.length;if(e<r)return _curryArity(r,n,t);let o=-1;for(;++o<e;){if(t[o]==__)return _curryArity(r,n,t)}return n(...t)},spread2=r=>function([n,t]){return r(n,t)},objectMapEntries=function(r,n){const t={},e=[];for(const o in r){const c=n([o,r[o]]);isPromise(c)?e.push(c.then(spread2(curryArity(3,objectSet,[t])))):t[c[0]]=c[1]}return 0==e.length?t:promiseAll(e).then(always(t))},mapSet=function(r,n,t){return r.set(n,t)},mapMapEntriesForEachCallback=(r,n,t)=>function(e,o){const c=r([o,e]);isPromise(c)?t.push(c.then(spread2(curryArity(3,mapSet,[n])))):n.set(c[0],c[1])},mapMapEntries=function(r,n){const t=new Map,e=[];return r.forEach(mapMapEntriesForEachCallback(n,t,e)),0==e.length?t:promiseAll(e).then(always(t))},_map=function(r,n){return isArray(r)?arrayMap(r,n):"function"==typeof r?isGeneratorFunction(r)?generatorFunctionMap(r,n):isAsyncGeneratorFunction(r)?asyncGeneratorFunctionMap(r,n):reducerMap(r,n):null==r?r:"function"==typeof r.then?r.then(n):"function"==typeof r.map?r.map(n):"string"==typeof r||r.constructor==String?stringMap(r,n):r.constructor==Set?setMap(r,n):r.constructor==Map?mapMap(r,n):"function"==typeof r[symbolIterator]?MappingIterator(r[symbolIterator](),n):"function"==typeof r[symbolAsyncIterator]?MappingAsyncIterator(r[symbolAsyncIterator](),n):r.constructor==Object?objectMap(r,n):n(r)},map=(...r)=>{const n=r.pop();return r.length>0?_map(r[0],n):curry2(_map,__,n)};map.entries=function(r){return function(n){if(null==n)throw new TypeError("value is not an Object or Map");if(n.constructor==Object)return objectMapEntries(n,r);if(n.constructor==Map)return mapMapEntries(n,r);throw new TypeError("value is not an Object or Map")}},map.series=r=>function(n){if(isArray(n))return arrayMapSeries(n,r);throw new TypeError(`${n} is not an Array`)},map.pool=(r,n)=>function(t){if(isArray(t))return arrayMapPool(t,n,r);throw new TypeError(`${t} is not an Array`)},map.withIndex=r=>function(n){if(isArray(n))return arrayMapWithIndex(n,r);throw new TypeError(`${n} is not an Array`)},map.own=r=>function(n){if(isObject(n)&&!isArray(n))return objectMapOwn(n,r);throw new TypeError(`${n} is not an Object`)};export default map;
7
+ const isPromise=r=>null!=r&&"function"==typeof r.then,symbolIterator=Symbol.iterator,MappingIterator=(r,t)=>({toString:()=>"[object MappingIterator]",[symbolIterator](){return this},next(){const n=r.next();return n.done?n:{value:t(n.value),done:!1}}}),NextIteration=r=>({value:r,done:!1}),symbolAsyncIterator=Symbol.asyncIterator,MappingAsyncIterator=(r,t)=>({[symbolAsyncIterator](){return this},async next(){const n=await r.next();if(n.done)return n;const e=t(n.value);return isPromise(e)?e.then(NextIteration):{value:e,done:!1}}}),__=Symbol.for("placeholder"),curry2ResolveArg0=(r,t)=>function(n){return r(n,t)},curry2ResolveArg1=(r,t)=>function(n){return r(t,n)},curry2=function(r,t,n){return t==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,t)},isArray=Array.isArray,isObject=r=>{if(null==r)return!1;const t=typeof r;return"object"==t||"function"==t},promiseAll=Promise.all.bind(Promise),arrayMap=function(r,t){const n=r.length,e=Array(n);let o=-1,c=!1;for(;++o<n;){const n=t(r[o],o,r);isPromise(n)&&(c=!0),e[o]=n}return c?promiseAll(e):e},curry3ResolveArg0=(r,t,n)=>function(e){return r(e,t,n)},curry3ResolveArg1=(r,t,n)=>function(e){return r(t,e,n)},curry3ResolveArg2=(r,t,n)=>function(e){return r(t,n,e)},curry3=function(r,t,n,e){return t==__?curry3ResolveArg0(r,n,e):n==__?curry3ResolveArg1(r,t,e):curry3ResolveArg2(r,t,n)},callPropUnary=(r,t,n)=>r[t](n),stringMap=function(r,t){const n=arrayMap(r,t);return isPromise(n)?n.then(curry3(callPropUnary,__,"join","")):n.join("")},always=r=>function(){return r},setMap=function(r,t){const n=new Set,e=[];for(const o of r){const c=t(o,o,r);isPromise(c)?e.push(c.then(curry3(callPropUnary,n,"add",__))):n.add(c)}return 0==e.length?n:promiseAll(e).then(always(n))},curry4ResolveArg0=(r,t,n,e)=>function(o){return r(o,t,n,e)},curry4ResolveArg1=(r,t,n,e)=>function(o){return r(t,o,n,e)},curry4ResolveArg2=(r,t,n,e)=>function(o){return r(t,n,o,e)},curry4ResolveArg3=(r,t,n,e)=>function(o){return r(t,n,e,o)},curry4=function(r,t,n,e,o){return t==__?curry4ResolveArg0(r,n,e,o):n==__?curry4ResolveArg1(r,t,e,o):e==__?curry4ResolveArg2(r,t,n,o):curry4ResolveArg3(r,t,n,e)},callPropBinary=(r,t,n,e)=>r[t](n,e),mapMap=function(r,t){const n=new Map,e=[];for(const[o,c]of r){const s=t(c,o,r);isPromise(s)?e.push(s.then(curry4(callPropBinary,n,"set",o,__))):n.set(o,s)}return 0==e.length?n:promiseAll(e).then(always(n))},promiseObjectAllExecutor=r=>function(t){const n={};let e=0;for(const o in r){const c=r[o];isPromise(c)?(e+=1,c.then((r=>function(o){n[r]=o,e-=1,0==e&&t(n)})(o))):n[o]=c}0==e&&t(n)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),objectMap=function(r,t){const n={};let e=!1;for(const o in r){const c=t(r[o],o,r);isPromise(c)&&(e=!0),n[o]=c}return e?promiseObjectAll(n):n},funcConcat=(r,t)=>function(...n){const e=r(...n);return isPromise(e)?e.then(t):t(e)},objectSet=function(r,t,n){return r[t]=n,r},arrayMapSeriesAsync=async function(r,t,n,e){const o=r.length;for(;++e<o;){const o=t(r[e]);n[e]=isPromise(o)?await o:o}return n},arrayMapSeries=function(r,t){const n=r.length,e=Array(n);let o=-1;for(;++o<n;){const n=t(r[o]);if(isPromise(n))return n.then(funcConcat(curry3(objectSet,e,o,__),curry4(arrayMapSeriesAsync,r,t,__,o)));e[o]=n}return e},tapSync=r=>function(...t){return r(...t),t[0]},promiseRace=Promise.race.bind(Promise),arrayMapPoolAsync=async function(r,t,n,e,o,c){const s=r.length;for(;++o<s;){c.size>=n&&await promiseRace(c);const s=t(r[o]);if(isPromise(s)){const r=s.then(tapSync((()=>c.delete(r))));c.add(r),e[o]=r}else e[o]=s}return promiseAll(e)},arrayMapPool=function(r,t,n){const e=r.length,o=Array(e);let c=-1;for(;++c<e;){const e=t(r[c]);if(isPromise(e)){const s=new Set,a=e.then(tapSync((()=>s.delete(a))));return s.add(a),o[c]=a,arrayMapPoolAsync(r,t,n,o,c,s)}o[c]=e}return o},_curryArity=(r,t,n)=>function(...e){const o=n.length,c=e.length,s=[];let a=-1,i=-1,u=0;for(;++a<o;){const o=n[a];if(o==__&&(i+=1)<c){const r=e[i];r==__&&(u+=1),s.push(r)}else s.push(o);if(s.length==r)return 0==u?t(...s):curryArity(r,t,s)}for(;++i<c;){const n=e[i];if(n==__&&(u+=1),s.push(n),s.length==r)return 0==u?t(...s):curryArity(r,t,s)}return curryArity(r,t,s)},curryArity=function(r,t,n){const e=n.length;if(e<r)return _curryArity(r,t,n);let o=-1;for(;++o<e;){if(n[o]==__)return _curryArity(r,t,n)}return t(...n)},spread2=r=>function([t,n]){return r(t,n)},objectMapEntries=function(r,t){const n={},e=[];for(const o in r){const c=t([o,r[o]]);isPromise(c)?e.push(c.then(spread2(curryArity(3,objectSet,[n])))):n[c[0]]=c[1]}return 0==e.length?n:promiseAll(e).then(always(n))},mapSet=function(r,t,n){return r.set(t,n)},mapMapEntriesForEachCallback=(r,t,n)=>function(e,o){const c=r([o,e]);isPromise(c)?n.push(c.then(spread2(curryArity(3,mapSet,[t])))):t.set(c[0],c[1])},mapMapEntries=function(r,t){const n=new Map,e=[];return r.forEach(mapMapEntriesForEachCallback(t,n,e)),0==e.length?n:promiseAll(e).then(always(n))},_map=function(r,t){return isArray(r)?arrayMap(r,t):null==r?r:"function"==typeof r.then?r.then(t):"function"==typeof r.map?r.map(t):"string"==typeof r||r.constructor==String?stringMap(r,t):r.constructor==Set?setMap(r,t):r.constructor==Map?mapMap(r,t):"function"==typeof r[symbolIterator]?MappingIterator(r[symbolIterator](),t):"function"==typeof r[symbolAsyncIterator]?MappingAsyncIterator(r[symbolAsyncIterator](),t):r.constructor==Object?objectMap(r,t):t(r)},map=(...r)=>{const t=r.pop();if(0==r.length)return curry2(_map,__,t);const n=r[0];return isPromise(n)?n.then(curry2(_map,__,t)):_map(n,t)};map.entries=function(r){return function(t){if(null==t)throw new TypeError("value is not an Object or Map");if(t.constructor==Object)return objectMapEntries(t,r);if(t.constructor==Map)return mapMapEntries(t,r);throw new TypeError("value is not an Object or Map")}},map.series=r=>function(t){if(isArray(t))return arrayMapSeries(t,r);throw new TypeError(`${t} is not an Array`)},map.pool=(r,t)=>function(n){if(isArray(n))return arrayMapPool(n,t,r);throw new TypeError(`${n} is not an Array`)};export default map;
package/dist/map.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.0
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
@@ -11,6 +11,8 @@
11
11
  else (root.map = map) // Browser
12
12
  }(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
13
13
 
14
+ const isPromise = value => value != null && typeof value.then == 'function'
15
+
14
16
  const symbolIterator = Symbol.iterator
15
17
 
16
18
  const MappingIterator = (iterator, mapper) => ({
@@ -29,8 +31,6 @@ const MappingIterator = (iterator, mapper) => ({
29
31
 
30
32
  const NextIteration = value => ({ value, done: false })
31
33
 
32
- const isPromise = value => value != null && typeof value.then == 'function'
33
-
34
34
  const symbolAsyncIterator = Symbol.asyncIterator
35
35
 
36
36
  const MappingAsyncIterator = (asyncIterator, mapper) => ({
@@ -82,20 +82,6 @@ const isObject = value => {
82
82
  return (typeofValue == 'object') || (typeofValue == 'function')
83
83
  }
84
84
 
85
- const objectProto = Object.prototype
86
-
87
- const nativeObjectToString = objectProto.toString
88
-
89
- const objectToString = value => nativeObjectToString.call(value)
90
-
91
- const generatorFunctionTag = '[object GeneratorFunction]'
92
-
93
- const isGeneratorFunction = value => objectToString(value) == generatorFunctionTag
94
-
95
- const asyncGeneratorFunctionTag = '[object AsyncGeneratorFunction]'
96
-
97
- const isAsyncGeneratorFunction = value => objectToString(value) == asyncGeneratorFunctionTag
98
-
99
85
  const promiseAll = Promise.all.bind(Promise)
100
86
 
101
87
  const arrayMap = function (array, mapper) {
@@ -114,31 +100,6 @@ const arrayMap = function (array, mapper) {
114
100
  return isAsync ? promiseAll(result) : result
115
101
  }
116
102
 
117
- const generatorFunctionMap = (
118
- generatorFunc, mapper,
119
- ) => function* mappingGeneratorFunc(...args) {
120
- for (const item of generatorFunc(...args)) {
121
- yield mapper(item)
122
- }
123
- }
124
-
125
- const asyncGeneratorFunctionMap = function (asyncGeneratorFunc, mapper) {
126
- return async function* mappingAsyncGeneratorFunc(...args) {
127
- for await (const item of asyncGeneratorFunc(...args)) {
128
- yield mapper(item)
129
- }
130
- }
131
- }
132
-
133
- const reducerMap = (
134
- reducer, mapper,
135
- ) => function mappingReducer(result, reducerItem) {
136
- const mappingReducerItem = mapper(reducerItem)
137
- return isPromise(mappingReducerItem)
138
- ? mappingReducerItem.then(curry2(reducer, result, __))
139
- : reducer(result, mappingReducerItem)
140
- }
141
-
142
103
  // argument resolver for curry3
143
104
  const curry3ResolveArg0 = (
144
105
  baseFunc, arg1, arg2,
@@ -387,38 +348,6 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
387
348
  return result
388
349
  }
389
350
 
390
- const arrayMapWithIndex = function (array, mapper) {
391
- const arrayLength = array.length,
392
- result = Array(arrayLength)
393
- let index = -1, isAsync = false
394
- while (++index < arrayLength) {
395
- const resultItem = mapper(array[index], index, array)
396
- if (isPromise(resultItem)) {
397
- isAsync = true
398
- }
399
- result[index] = resultItem
400
- }
401
- return isAsync ? promiseAll(result) : result
402
- }
403
-
404
- const hasOwnProperty = Object.prototype.hasOwnProperty
405
- const hasOwn = (obj, key) => hasOwnProperty.call(obj, key)
406
-
407
- const objectMapOwn = function (object, mapper) {
408
- const result = {}
409
- let isAsync = false
410
- for (const key in object) {
411
- if (hasOwn(object, key)) {
412
- const resultItem = mapper(object[key])
413
- if (isPromise(resultItem)) {
414
- isAsync = true
415
- }
416
- result[key] = resultItem
417
- }
418
- }
419
- return isAsync ? promiseObjectAll(result) : result
420
- }
421
-
422
351
  const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
423
352
  const argsLength = args.length,
424
353
  curriedArgsLength = curriedArgs.length,
@@ -526,15 +455,6 @@ const _map = function (value, mapper) {
526
455
  if (isArray(value)) {
527
456
  return arrayMap(value, mapper)
528
457
  }
529
- if (typeof value == 'function') {
530
- if (isGeneratorFunction(value)) {
531
- return generatorFunctionMap(value, mapper)
532
- }
533
- if (isAsyncGeneratorFunction(value)) {
534
- return asyncGeneratorFunctionMap(value, mapper)
535
- }
536
- return reducerMap(value, mapper)
537
- }
538
458
  if (value == null) {
539
459
  return value
540
460
  }
@@ -568,10 +488,15 @@ const _map = function (value, mapper) {
568
488
 
569
489
  const map = (...args) => {
570
490
  const mapper = args.pop()
571
- if (args.length > 0) {
572
- return _map(args[0], mapper)
491
+ if (args.length == 0) {
492
+ return curry2(_map, __, mapper)
573
493
  }
574
- return curry2(_map, __, mapper)
494
+
495
+ const collection = args[0]
496
+ if (isPromise(collection)) {
497
+ return collection.then(curry2(_map, __, mapper))
498
+ }
499
+ return _map(collection, mapper)
575
500
  }
576
501
 
577
502
  map.entries = function mapEntries(mapper) {
@@ -603,19 +528,5 @@ map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
603
528
  throw new TypeError(`${value} is not an Array`)
604
529
  }
605
530
 
606
- map.withIndex = mapper => function mappingWithIndex(value) {
607
- if (isArray(value)) {
608
- return arrayMapWithIndex(value, mapper)
609
- }
610
- throw new TypeError(`${value} is not an Array`)
611
- }
612
-
613
- map.own = mapper => function mappingOwnProperties(value) {
614
- if (isObject(value) && !isArray(value)) {
615
- return objectMapOwn(value, mapper)
616
- }
617
- throw new TypeError(`${value} is not an Object`)
618
- }
619
-
620
531
  return map
621
532
  }())))
package/dist/map.min.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.0
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
8
- !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.map=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=Symbol.iterator,t=(t,r)=>({toString:()=>"[object MappingIterator]",[n](){return this},next(){const n=t.next();return n.done?n:{value:r(n.value),done:!1}}}),r=n=>({value:n,done:!1}),o=n=>null!=n&&"function"==typeof n.then,e=Symbol.asyncIterator,c=(n,t)=>({[e](){return this},async next(){const e=await n.next();if(e.done)return e;const c=t(e.value);return o(c)?c.then(r):{value:c,done:!1}}}),u=Symbol.for("placeholder"),i=function(n,t,r){return t==u?((n,t)=>function(r){return n(r,t)})(n,r):((n,t)=>function(r){return n(t,r)})(n,t)},f=Array.isArray,s=Object.prototype.toString,l=n=>s.call(n),a=Promise.all.bind(Promise),h=function(n,t){const r=n.length,e=Array(r);let c=-1,u=!1;for(;++c<r;){const r=t(n[c],c,n);o(r)&&(u=!0),e[c]=r}return u?a(e):e},p=function(n,t,r,o){return t==u?((n,t,r)=>function(o){return n(o,t,r)})(n,r,o):r==u?((n,t,r)=>function(o){return n(t,o,r)})(n,t,o):((n,t,r)=>function(o){return n(t,r,o)})(n,t,r)},y=(n,t,r)=>n[t](r),d=n=>function(){return n},w=function(n,t,r,o,e){return t==u?((n,t,r,o)=>function(e){return n(e,t,r,o)})(n,r,o,e):r==u?((n,t,r,o)=>function(e){return n(t,e,r,o)})(n,t,o,e):o==u?((n,t,r,o)=>function(e){return n(t,r,e,o)})(n,t,r,e):((n,t,r,o)=>function(e){return n(t,r,o,e)})(n,t,r,o)},g=(n,t,r,o)=>n[t](r,o),b=n=>new Promise((n=>function(t){const r={};let e=0;for(const c in n){const u=n[c];o(u)?(e+=1,u.then((n=>function(o){r[n]=o,e-=1,0==e&&t(r)})(c))):r[c]=u}0==e&&t(r)})(n)),j=(n,t)=>function(...r){const e=n(...r);return o(e)?e.then(t):t(e)},m=function(n,t,r){return n[t]=r,n},A=async function(n,t,r,e){const c=n.length;for(;++e<c;){const c=t(n[e]);r[e]=o(c)?await c:c}return r},S=n=>function(...t){return n(...t),t[0]},O=Promise.race.bind(Promise),T=async function(n,t,r,e,c,u){const i=n.length;for(;++c<i;){u.size>=r&&await O(u);const i=t(n[c]);if(o(i)){const n=i.then(S((()=>u.delete(n))));u.add(n),e[c]=n}else e[c]=i}return a(e)},v=Object.prototype.hasOwnProperty,E=(n,t)=>v.call(n,t),M=(n,t,r)=>function(...o){const e=r.length,c=o.length,i=[];let f=-1,s=-1,l=0;for(;++f<e;){const e=r[f];if(e==u&&(s+=1)<c){const n=o[s];n==u&&(l+=1),i.push(n)}else i.push(e);if(i.length==n)return 0==l?t(...i):x(n,t,i)}for(;++s<c;){const r=o[s];if(r==u&&(l+=1),i.push(r),i.length==n)return 0==l?t(...i):x(n,t,i)}return x(n,t,i)},x=function(n,t,r){const o=r.length;if(o<n)return M(n,t,r);let e=-1;for(;++e<o;){if(r[e]==u)return M(n,t,r)}return t(...r)},P=n=>function([t,r]){return n(t,r)},$=function(n,t,r){return n.set(t,r)},I=function(n,t){const r=new Map,e=[];return n.forEach(((n,t,r)=>function(e,c){const u=n([c,e]);o(u)?r.push(u.then(P(x(3,$,[t])))):t.set(u[0],u[1])})(t,r,e)),0==e.length?r:a(e).then(d(r))},F=function(r,s){return f(r)?h(r,s):"function"==typeof r?(n=>"[object GeneratorFunction]"==l(n))(r)?((n,t)=>function*(...r){for(const o of n(...r))yield t(o)})(r,s):(n=>"[object AsyncGeneratorFunction]"==l(n))(r)?function(n,t){return async function*(...r){for await(const o of n(...r))yield t(o)}}(r,s):((n,t)=>function(r,e){const c=t(e);return o(c)?c.then(i(n,r,u)):n(r,c)})(r,s):null==r?r:"function"==typeof r.then?r.then(s):"function"==typeof r.map?r.map(s):"string"==typeof r||r.constructor==String?function(n,t){const r=h(n,t);return o(r)?r.then(p(y,u,"join","")):r.join("")}(r,s):r.constructor==Set?function(n,t){const r=new Set,e=[];for(const c of n){const i=t(c,c,n);o(i)?e.push(i.then(p(y,r,"add",u))):r.add(i)}return 0==e.length?r:a(e).then(d(r))}(r,s):r.constructor==Map?function(n,t){const r=new Map,e=[];for(const[c,i]of n){const f=t(i,c,n);o(f)?e.push(f.then(w(g,r,"set",c,u))):r.set(c,f)}return 0==e.length?r:a(e).then(d(r))}(r,s):"function"==typeof r[n]?t(r[n](),s):"function"==typeof r[e]?c(r[e](),s):r.constructor==Object?function(n,t){const r={};let e=!1;for(const c in n){const u=t(n[c],c,n);o(u)&&(e=!0),r[c]=u}return e?b(r):r}(r,s):s(r)},G=(...n)=>{const t=n.pop();return n.length>0?F(n[0],t):i(F,u,t)};return G.entries=function(n){return function(t){if(null==t)throw new TypeError("value is not an Object or Map");if(t.constructor==Object)return function(n,t){const r={},e=[];for(const c in n){const u=t([c,n[c]]);o(u)?e.push(u.then(P(x(3,m,[r])))):r[u[0]]=u[1]}return 0==e.length?r:a(e).then(d(r))}(t,n);if(t.constructor==Map)return I(t,n);throw new TypeError("value is not an Object or Map")}},G.series=n=>function(t){if(f(t))return function(n,t){const r=n.length,e=Array(r);let c=-1;for(;++c<r;){const r=t(n[c]);if(o(r))return r.then(j(p(m,e,c,u),w(A,n,t,u,c)));e[c]=r}return e}(t,n);throw new TypeError(`${t} is not an Array`)},G.pool=(n,t)=>function(r){if(f(r))return function(n,t,r){const e=n.length,c=Array(e);let u=-1;for(;++u<e;){const e=t(n[u]);if(o(e)){const o=new Set,i=e.then(S((()=>o.delete(i))));return o.add(i),c[u]=i,T(n,t,r,c,u,o)}c[u]=e}return c}(r,t,n);throw new TypeError(`${r} is not an Array`)},G.withIndex=n=>function(t){if(f(t))return function(n,t){const r=n.length,e=Array(r);let c=-1,u=!1;for(;++c<r;){const r=t(n[c],c,n);o(r)&&(u=!0),e[c]=r}return u?a(e):e}(t,n);throw new TypeError(`${t} is not an Array`)},G.own=n=>function(t){if((n=>{if(null==n)return!1;const t=typeof n;return"object"==t||"function"==t})(t)&&!f(t))return function(n,t){const r={};let e=!1;for(const c in n)if(E(n,c)){const u=t(n[c]);o(u)&&(e=!0),r[c]=u}return e?b(r):r}(t,n);throw new TypeError(`${t} is not an Object`)},G}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.map=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Symbol.iterator,r=(n,r)=>({toString:()=>"[object MappingIterator]",[t](){return this},next(){const t=n.next();return t.done?t:{value:r(t.value),done:!1}}}),e=n=>({value:n,done:!1}),o=Symbol.asyncIterator,u=(t,r)=>({[o](){return this},async next(){const o=await t.next();if(o.done)return o;const u=r(o.value);return n(u)?u.then(e):{value:u,done:!1}}}),c=Symbol.for("placeholder"),i=function(n,t,r){return t==c?((n,t)=>function(r){return n(r,t)})(n,r):((n,t)=>function(r){return n(t,r)})(n,t)},f=Array.isArray,s=Promise.all.bind(Promise),l=function(t,r){const e=t.length,o=Array(e);let u=-1,c=!1;for(;++u<e;){const e=r(t[u],u,t);n(e)&&(c=!0),o[u]=e}return c?s(o):o},h=function(n,t,r,e){return t==c?((n,t,r)=>function(e){return n(e,t,r)})(n,r,e):r==c?((n,t,r)=>function(e){return n(t,e,r)})(n,t,e):((n,t,r)=>function(e){return n(t,r,e)})(n,t,r)},a=(n,t,r)=>n[t](r),p=n=>function(){return n},y=function(n,t,r,e,o){return t==c?((n,t,r,e)=>function(o){return n(o,t,r,e)})(n,r,e,o):r==c?((n,t,r,e)=>function(o){return n(t,o,r,e)})(n,t,e,o):e==c?((n,t,r,e)=>function(o){return n(t,r,o,e)})(n,t,r,o):((n,t,r,e)=>function(o){return n(t,r,e,o)})(n,t,r,e)},d=(n,t,r,e)=>n[t](r,e),g=t=>new Promise((t=>function(r){const e={};let o=0;for(const u in t){const c=t[u];n(c)?(o+=1,c.then((n=>function(t){e[n]=t,o-=1,0==o&&r(e)})(u))):e[u]=c}0==o&&r(e)})(t)),w=(t,r)=>function(...e){const o=t(...e);return n(o)?o.then(r):r(o)},b=function(n,t,r){return n[t]=r,n},m=async function(t,r,e,o){const u=t.length;for(;++o<u;){const u=r(t[o]);e[o]=n(u)?await u:u}return e},j=n=>function(...t){return n(...t),t[0]},S=Promise.race.bind(Promise),v=async function(t,r,e,o,u,c){const i=t.length;for(;++u<i;){c.size>=e&&await S(c);const i=r(t[u]);if(n(i)){const n=i.then(j((()=>c.delete(n))));c.add(n),o[u]=n}else o[u]=i}return s(o)},A=(n,t,r)=>function(...e){const o=r.length,u=e.length,i=[];let f=-1,s=-1,l=0;for(;++f<o;){const o=r[f];if(o==c&&(s+=1)<u){const n=e[s];n==c&&(l+=1),i.push(n)}else i.push(o);if(i.length==n)return 0==l?t(...i):M(n,t,i)}for(;++s<u;){const r=e[s];if(r==c&&(l+=1),i.push(r),i.length==n)return 0==l?t(...i):M(n,t,i)}return M(n,t,i)},M=function(n,t,r){const e=r.length;if(e<n)return A(n,t,r);let o=-1;for(;++o<e;){if(r[o]==c)return A(n,t,r)}return t(...r)},T=n=>function([t,r]){return n(t,r)},x=function(n,t,r){return n.set(t,r)},E=function(t,r){const e=new Map,o=[];return t.forEach(((t,r,e)=>function(o,u){const c=t([u,o]);n(c)?e.push(c.then(T(M(3,x,[r])))):r.set(c[0],c[1])})(r,e,o)),0==o.length?e:s(o).then(p(e))},P=function(e,i){return f(e)?l(e,i):null==e?e:"function"==typeof e.then?e.then(i):"function"==typeof e.map?e.map(i):"string"==typeof e||e.constructor==String?function(t,r){const e=l(t,r);return n(e)?e.then(h(a,c,"join","")):e.join("")}(e,i):e.constructor==Set?function(t,r){const e=new Set,o=[];for(const u of t){const i=r(u,u,t);n(i)?o.push(i.then(h(a,e,"add",c))):e.add(i)}return 0==o.length?e:s(o).then(p(e))}(e,i):e.constructor==Map?function(t,r){const e=new Map,o=[];for(const[u,i]of t){const f=r(i,u,t);n(f)?o.push(f.then(y(d,e,"set",u,c))):e.set(u,f)}return 0==o.length?e:s(o).then(p(e))}(e,i):"function"==typeof e[t]?r(e[t](),i):"function"==typeof e[o]?u(e[o](),i):e.constructor==Object?function(t,r){const e={};let o=!1;for(const u in t){const c=r(t[u],u,t);n(c)&&(o=!0),e[u]=c}return o?g(e):e}(e,i):i(e)},O=(...t)=>{const r=t.pop();if(0==t.length)return i(P,c,r);const e=t[0];return n(e)?e.then(i(P,c,r)):P(e,r)};return O.entries=function(t){return function(r){if(null==r)throw new TypeError("value is not an Object or Map");if(r.constructor==Object)return function(t,r){const e={},o=[];for(const u in t){const c=r([u,t[u]]);n(c)?o.push(c.then(T(M(3,b,[e])))):e[c[0]]=c[1]}return 0==o.length?e:s(o).then(p(e))}(r,t);if(r.constructor==Map)return E(r,t);throw new TypeError("value is not an Object or Map")}},O.series=t=>function(r){if(f(r))return function(t,r){const e=t.length,o=Array(e);let u=-1;for(;++u<e;){const e=r(t[u]);if(n(e))return e.then(w(h(b,o,u,c),y(m,t,r,c,u)));o[u]=e}return o}(r,t);throw new TypeError(`${r} is not an Array`)},O.pool=(t,r)=>function(e){if(f(e))return function(t,r,e){const o=t.length,u=Array(o);let c=-1;for(;++c<o;){const o=r(t[c]);if(n(o)){const n=new Set,i=o.then(j((()=>n.delete(i))));return n.add(i),u[c]=i,v(t,r,e,u,c,n)}u[c]=o}return u}(e,r,t);throw new TypeError(`${e} is not an Array`)},O}());
package/dist/map.min.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.0
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
- const symbolIterator=Symbol.iterator,MappingIterator=(r,n)=>({toString:()=>"[object MappingIterator]",[symbolIterator](){return this},next(){const t=r.next();return t.done?t:{value:n(t.value),done:!1}}}),NextIteration=r=>({value:r,done:!1}),isPromise=r=>null!=r&&"function"==typeof r.then,symbolAsyncIterator=Symbol.asyncIterator,MappingAsyncIterator=(r,n)=>({[symbolAsyncIterator](){return this},async next(){const t=await r.next();if(t.done)return t;const e=n(t.value);return isPromise(e)?e.then(NextIteration):{value:e,done:!1}}}),__=Symbol.for("placeholder"),curry2ResolveArg0=(r,n)=>function(t){return r(t,n)},curry2ResolveArg1=(r,n)=>function(t){return r(n,t)},curry2=function(r,n,t){return n==__?curry2ResolveArg0(r,t):curry2ResolveArg1(r,n)},isArray=Array.isArray,isObject=r=>{if(null==r)return!1;const n=typeof r;return"object"==n||"function"==n},objectProto=Object.prototype,nativeObjectToString=objectProto.toString,objectToString=r=>nativeObjectToString.call(r),generatorFunctionTag="[object GeneratorFunction]",isGeneratorFunction=r=>objectToString(r)==generatorFunctionTag,asyncGeneratorFunctionTag="[object AsyncGeneratorFunction]",isAsyncGeneratorFunction=r=>objectToString(r)==asyncGeneratorFunctionTag,promiseAll=Promise.all.bind(Promise),arrayMap=function(r,n){const t=r.length,e=Array(t);let o=-1,c=!1;for(;++o<t;){const t=n(r[o],o,r);isPromise(t)&&(c=!0),e[o]=t}return c?promiseAll(e):e},generatorFunctionMap=(r,n)=>function*(...t){for(const e of r(...t))yield n(e)},asyncGeneratorFunctionMap=function(r,n){return async function*(...t){for await(const e of r(...t))yield n(e)}},reducerMap=(r,n)=>function(t,e){const o=n(e);return isPromise(o)?o.then(curry2(r,t,__)):r(t,o)},curry3ResolveArg0=(r,n,t)=>function(e){return r(e,n,t)},curry3ResolveArg1=(r,n,t)=>function(e){return r(n,e,t)},curry3ResolveArg2=(r,n,t)=>function(e){return r(n,t,e)},curry3=function(r,n,t,e){return n==__?curry3ResolveArg0(r,t,e):t==__?curry3ResolveArg1(r,n,e):curry3ResolveArg2(r,n,t)},callPropUnary=(r,n,t)=>r[n](t),stringMap=function(r,n){const t=arrayMap(r,n);return isPromise(t)?t.then(curry3(callPropUnary,__,"join","")):t.join("")},always=r=>function(){return r},setMap=function(r,n){const t=new Set,e=[];for(const o of r){const c=n(o,o,r);isPromise(c)?e.push(c.then(curry3(callPropUnary,t,"add",__))):t.add(c)}return 0==e.length?t:promiseAll(e).then(always(t))},curry4ResolveArg0=(r,n,t,e)=>function(o){return r(o,n,t,e)},curry4ResolveArg1=(r,n,t,e)=>function(o){return r(n,o,t,e)},curry4ResolveArg2=(r,n,t,e)=>function(o){return r(n,t,o,e)},curry4ResolveArg3=(r,n,t,e)=>function(o){return r(n,t,e,o)},curry4=function(r,n,t,e,o){return n==__?curry4ResolveArg0(r,t,e,o):t==__?curry4ResolveArg1(r,n,e,o):e==__?curry4ResolveArg2(r,n,t,o):curry4ResolveArg3(r,n,t,e)},callPropBinary=(r,n,t,e)=>r[n](t,e),mapMap=function(r,n){const t=new Map,e=[];for(const[o,c]of r){const a=n(c,o,r);isPromise(a)?e.push(a.then(curry4(callPropBinary,t,"set",o,__))):t.set(o,a)}return 0==e.length?t:promiseAll(e).then(always(t))},promiseObjectAllExecutor=r=>function(n){const t={};let e=0;for(const o in r){const c=r[o];isPromise(c)?(e+=1,c.then((r=>function(o){t[r]=o,e-=1,0==e&&n(t)})(o))):t[o]=c}0==e&&n(t)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),objectMap=function(r,n){const t={};let e=!1;for(const o in r){const c=n(r[o],o,r);isPromise(c)&&(e=!0),t[o]=c}return e?promiseObjectAll(t):t},funcConcat=(r,n)=>function(...t){const e=r(...t);return isPromise(e)?e.then(n):n(e)},objectSet=function(r,n,t){return r[n]=t,r},arrayMapSeriesAsync=async function(r,n,t,e){const o=r.length;for(;++e<o;){const o=n(r[e]);t[e]=isPromise(o)?await o:o}return t},arrayMapSeries=function(r,n){const t=r.length,e=Array(t);let o=-1;for(;++o<t;){const t=n(r[o]);if(isPromise(t))return t.then(funcConcat(curry3(objectSet,e,o,__),curry4(arrayMapSeriesAsync,r,n,__,o)));e[o]=t}return e},tapSync=r=>function(...n){return r(...n),n[0]},promiseRace=Promise.race.bind(Promise),arrayMapPoolAsync=async function(r,n,t,e,o,c){const a=r.length;for(;++o<a;){c.size>=t&&await promiseRace(c);const a=n(r[o]);if(isPromise(a)){const r=a.then(tapSync((()=>c.delete(r))));c.add(r),e[o]=r}else e[o]=a}return promiseAll(e)},arrayMapPool=function(r,n,t){const e=r.length,o=Array(e);let c=-1;for(;++c<e;){const e=n(r[c]);if(isPromise(e)){const a=new Set,s=e.then(tapSync((()=>a.delete(s))));return a.add(s),o[c]=s,arrayMapPoolAsync(r,n,t,o,c,a)}o[c]=e}return o},arrayMapWithIndex=function(r,n){const t=r.length,e=Array(t);let o=-1,c=!1;for(;++o<t;){const t=n(r[o],o,r);isPromise(t)&&(c=!0),e[o]=t}return c?promiseAll(e):e},hasOwnProperty=Object.prototype.hasOwnProperty,hasOwn=(r,n)=>hasOwnProperty.call(r,n),objectMapOwn=function(r,n){const t={};let e=!1;for(const o in r)if(hasOwn(r,o)){const c=n(r[o]);isPromise(c)&&(e=!0),t[o]=c}return e?promiseObjectAll(t):t},_curryArity=(r,n,t)=>function(...e){const o=t.length,c=e.length,a=[];let s=-1,i=-1,u=0;for(;++s<o;){const o=t[s];if(o==__&&(i+=1)<c){const r=e[i];r==__&&(u+=1),a.push(r)}else a.push(o);if(a.length==r)return 0==u?n(...a):curryArity(r,n,a)}for(;++i<c;){const t=e[i];if(t==__&&(u+=1),a.push(t),a.length==r)return 0==u?n(...a):curryArity(r,n,a)}return curryArity(r,n,a)},curryArity=function(r,n,t){const e=t.length;if(e<r)return _curryArity(r,n,t);let o=-1;for(;++o<e;){if(t[o]==__)return _curryArity(r,n,t)}return n(...t)},spread2=r=>function([n,t]){return r(n,t)},objectMapEntries=function(r,n){const t={},e=[];for(const o in r){const c=n([o,r[o]]);isPromise(c)?e.push(c.then(spread2(curryArity(3,objectSet,[t])))):t[c[0]]=c[1]}return 0==e.length?t:promiseAll(e).then(always(t))},mapSet=function(r,n,t){return r.set(n,t)},mapMapEntriesForEachCallback=(r,n,t)=>function(e,o){const c=r([o,e]);isPromise(c)?t.push(c.then(spread2(curryArity(3,mapSet,[n])))):n.set(c[0],c[1])},mapMapEntries=function(r,n){const t=new Map,e=[];return r.forEach(mapMapEntriesForEachCallback(n,t,e)),0==e.length?t:promiseAll(e).then(always(t))},_map=function(r,n){return isArray(r)?arrayMap(r,n):"function"==typeof r?isGeneratorFunction(r)?generatorFunctionMap(r,n):isAsyncGeneratorFunction(r)?asyncGeneratorFunctionMap(r,n):reducerMap(r,n):null==r?r:"function"==typeof r.then?r.then(n):"function"==typeof r.map?r.map(n):"string"==typeof r||r.constructor==String?stringMap(r,n):r.constructor==Set?setMap(r,n):r.constructor==Map?mapMap(r,n):"function"==typeof r[symbolIterator]?MappingIterator(r[symbolIterator](),n):"function"==typeof r[symbolAsyncIterator]?MappingAsyncIterator(r[symbolAsyncIterator](),n):r.constructor==Object?objectMap(r,n):n(r)},map=(...r)=>{const n=r.pop();return r.length>0?_map(r[0],n):curry2(_map,__,n)};map.entries=function(r){return function(n){if(null==n)throw new TypeError("value is not an Object or Map");if(n.constructor==Object)return objectMapEntries(n,r);if(n.constructor==Map)return mapMapEntries(n,r);throw new TypeError("value is not an Object or Map")}},map.series=r=>function(n){if(isArray(n))return arrayMapSeries(n,r);throw new TypeError(`${n} is not an Array`)},map.pool=(r,n)=>function(t){if(isArray(t))return arrayMapPool(t,n,r);throw new TypeError(`${t} is not an Array`)},map.withIndex=r=>function(n){if(isArray(n))return arrayMapWithIndex(n,r);throw new TypeError(`${n} is not an Array`)},map.own=r=>function(n){if(isObject(n)&&!isArray(n))return objectMapOwn(n,r);throw new TypeError(`${n} is not an Object`)};export default map;
7
+ const isPromise=r=>null!=r&&"function"==typeof r.then,symbolIterator=Symbol.iterator,MappingIterator=(r,t)=>({toString:()=>"[object MappingIterator]",[symbolIterator](){return this},next(){const n=r.next();return n.done?n:{value:t(n.value),done:!1}}}),NextIteration=r=>({value:r,done:!1}),symbolAsyncIterator=Symbol.asyncIterator,MappingAsyncIterator=(r,t)=>({[symbolAsyncIterator](){return this},async next(){const n=await r.next();if(n.done)return n;const e=t(n.value);return isPromise(e)?e.then(NextIteration):{value:e,done:!1}}}),__=Symbol.for("placeholder"),curry2ResolveArg0=(r,t)=>function(n){return r(n,t)},curry2ResolveArg1=(r,t)=>function(n){return r(t,n)},curry2=function(r,t,n){return t==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,t)},isArray=Array.isArray,isObject=r=>{if(null==r)return!1;const t=typeof r;return"object"==t||"function"==t},promiseAll=Promise.all.bind(Promise),arrayMap=function(r,t){const n=r.length,e=Array(n);let o=-1,c=!1;for(;++o<n;){const n=t(r[o],o,r);isPromise(n)&&(c=!0),e[o]=n}return c?promiseAll(e):e},curry3ResolveArg0=(r,t,n)=>function(e){return r(e,t,n)},curry3ResolveArg1=(r,t,n)=>function(e){return r(t,e,n)},curry3ResolveArg2=(r,t,n)=>function(e){return r(t,n,e)},curry3=function(r,t,n,e){return t==__?curry3ResolveArg0(r,n,e):n==__?curry3ResolveArg1(r,t,e):curry3ResolveArg2(r,t,n)},callPropUnary=(r,t,n)=>r[t](n),stringMap=function(r,t){const n=arrayMap(r,t);return isPromise(n)?n.then(curry3(callPropUnary,__,"join","")):n.join("")},always=r=>function(){return r},setMap=function(r,t){const n=new Set,e=[];for(const o of r){const c=t(o,o,r);isPromise(c)?e.push(c.then(curry3(callPropUnary,n,"add",__))):n.add(c)}return 0==e.length?n:promiseAll(e).then(always(n))},curry4ResolveArg0=(r,t,n,e)=>function(o){return r(o,t,n,e)},curry4ResolveArg1=(r,t,n,e)=>function(o){return r(t,o,n,e)},curry4ResolveArg2=(r,t,n,e)=>function(o){return r(t,n,o,e)},curry4ResolveArg3=(r,t,n,e)=>function(o){return r(t,n,e,o)},curry4=function(r,t,n,e,o){return t==__?curry4ResolveArg0(r,n,e,o):n==__?curry4ResolveArg1(r,t,e,o):e==__?curry4ResolveArg2(r,t,n,o):curry4ResolveArg3(r,t,n,e)},callPropBinary=(r,t,n,e)=>r[t](n,e),mapMap=function(r,t){const n=new Map,e=[];for(const[o,c]of r){const s=t(c,o,r);isPromise(s)?e.push(s.then(curry4(callPropBinary,n,"set",o,__))):n.set(o,s)}return 0==e.length?n:promiseAll(e).then(always(n))},promiseObjectAllExecutor=r=>function(t){const n={};let e=0;for(const o in r){const c=r[o];isPromise(c)?(e+=1,c.then((r=>function(o){n[r]=o,e-=1,0==e&&t(n)})(o))):n[o]=c}0==e&&t(n)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),objectMap=function(r,t){const n={};let e=!1;for(const o in r){const c=t(r[o],o,r);isPromise(c)&&(e=!0),n[o]=c}return e?promiseObjectAll(n):n},funcConcat=(r,t)=>function(...n){const e=r(...n);return isPromise(e)?e.then(t):t(e)},objectSet=function(r,t,n){return r[t]=n,r},arrayMapSeriesAsync=async function(r,t,n,e){const o=r.length;for(;++e<o;){const o=t(r[e]);n[e]=isPromise(o)?await o:o}return n},arrayMapSeries=function(r,t){const n=r.length,e=Array(n);let o=-1;for(;++o<n;){const n=t(r[o]);if(isPromise(n))return n.then(funcConcat(curry3(objectSet,e,o,__),curry4(arrayMapSeriesAsync,r,t,__,o)));e[o]=n}return e},tapSync=r=>function(...t){return r(...t),t[0]},promiseRace=Promise.race.bind(Promise),arrayMapPoolAsync=async function(r,t,n,e,o,c){const s=r.length;for(;++o<s;){c.size>=n&&await promiseRace(c);const s=t(r[o]);if(isPromise(s)){const r=s.then(tapSync((()=>c.delete(r))));c.add(r),e[o]=r}else e[o]=s}return promiseAll(e)},arrayMapPool=function(r,t,n){const e=r.length,o=Array(e);let c=-1;for(;++c<e;){const e=t(r[c]);if(isPromise(e)){const s=new Set,a=e.then(tapSync((()=>s.delete(a))));return s.add(a),o[c]=a,arrayMapPoolAsync(r,t,n,o,c,s)}o[c]=e}return o},_curryArity=(r,t,n)=>function(...e){const o=n.length,c=e.length,s=[];let a=-1,i=-1,u=0;for(;++a<o;){const o=n[a];if(o==__&&(i+=1)<c){const r=e[i];r==__&&(u+=1),s.push(r)}else s.push(o);if(s.length==r)return 0==u?t(...s):curryArity(r,t,s)}for(;++i<c;){const n=e[i];if(n==__&&(u+=1),s.push(n),s.length==r)return 0==u?t(...s):curryArity(r,t,s)}return curryArity(r,t,s)},curryArity=function(r,t,n){const e=n.length;if(e<r)return _curryArity(r,t,n);let o=-1;for(;++o<e;){if(n[o]==__)return _curryArity(r,t,n)}return t(...n)},spread2=r=>function([t,n]){return r(t,n)},objectMapEntries=function(r,t){const n={},e=[];for(const o in r){const c=t([o,r[o]]);isPromise(c)?e.push(c.then(spread2(curryArity(3,objectSet,[n])))):n[c[0]]=c[1]}return 0==e.length?n:promiseAll(e).then(always(n))},mapSet=function(r,t,n){return r.set(t,n)},mapMapEntriesForEachCallback=(r,t,n)=>function(e,o){const c=r([o,e]);isPromise(c)?n.push(c.then(spread2(curryArity(3,mapSet,[t])))):t.set(c[0],c[1])},mapMapEntries=function(r,t){const n=new Map,e=[];return r.forEach(mapMapEntriesForEachCallback(t,n,e)),0==e.length?n:promiseAll(e).then(always(n))},_map=function(r,t){return isArray(r)?arrayMap(r,t):null==r?r:"function"==typeof r.then?r.then(t):"function"==typeof r.map?r.map(t):"string"==typeof r||r.constructor==String?stringMap(r,t):r.constructor==Set?setMap(r,t):r.constructor==Map?mapMap(r,t):"function"==typeof r[symbolIterator]?MappingIterator(r[symbolIterator](),t):"function"==typeof r[symbolAsyncIterator]?MappingAsyncIterator(r[symbolAsyncIterator](),t):r.constructor==Object?objectMap(r,t):t(r)},map=(...r)=>{const t=r.pop();if(0==r.length)return curry2(_map,__,t);const n=r[0];return isPromise(n)?n.then(curry2(_map,__,t)):_map(n,t)};map.entries=function(r){return function(t){if(null==t)throw new TypeError("value is not an Object or Map");if(t.constructor==Object)return objectMapEntries(t,r);if(t.constructor==Map)return mapMapEntries(t,r);throw new TypeError("value is not an Object or Map")}},map.series=r=>function(t){if(isArray(t))return arrayMapSeries(t,r);throw new TypeError(`${t} is not an Array`)},map.pool=(r,t)=>function(n){if(isArray(n))return arrayMapPool(n,t,r);throw new TypeError(`${n} is not an Array`)};export default map;
package/dist/map.mjs CHANGED
@@ -1,10 +1,12 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.0
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
8
+ const isPromise = value => value != null && typeof value.then == 'function'
9
+
8
10
  const symbolIterator = Symbol.iterator
9
11
 
10
12
  const MappingIterator = (iterator, mapper) => ({
@@ -23,8 +25,6 @@ const MappingIterator = (iterator, mapper) => ({
23
25
 
24
26
  const NextIteration = value => ({ value, done: false })
25
27
 
26
- const isPromise = value => value != null && typeof value.then == 'function'
27
-
28
28
  const symbolAsyncIterator = Symbol.asyncIterator
29
29
 
30
30
  const MappingAsyncIterator = (asyncIterator, mapper) => ({
@@ -76,20 +76,6 @@ const isObject = value => {
76
76
  return (typeofValue == 'object') || (typeofValue == 'function')
77
77
  }
78
78
 
79
- const objectProto = Object.prototype
80
-
81
- const nativeObjectToString = objectProto.toString
82
-
83
- const objectToString = value => nativeObjectToString.call(value)
84
-
85
- const generatorFunctionTag = '[object GeneratorFunction]'
86
-
87
- const isGeneratorFunction = value => objectToString(value) == generatorFunctionTag
88
-
89
- const asyncGeneratorFunctionTag = '[object AsyncGeneratorFunction]'
90
-
91
- const isAsyncGeneratorFunction = value => objectToString(value) == asyncGeneratorFunctionTag
92
-
93
79
  const promiseAll = Promise.all.bind(Promise)
94
80
 
95
81
  const arrayMap = function (array, mapper) {
@@ -108,31 +94,6 @@ const arrayMap = function (array, mapper) {
108
94
  return isAsync ? promiseAll(result) : result
109
95
  }
110
96
 
111
- const generatorFunctionMap = (
112
- generatorFunc, mapper,
113
- ) => function* mappingGeneratorFunc(...args) {
114
- for (const item of generatorFunc(...args)) {
115
- yield mapper(item)
116
- }
117
- }
118
-
119
- const asyncGeneratorFunctionMap = function (asyncGeneratorFunc, mapper) {
120
- return async function* mappingAsyncGeneratorFunc(...args) {
121
- for await (const item of asyncGeneratorFunc(...args)) {
122
- yield mapper(item)
123
- }
124
- }
125
- }
126
-
127
- const reducerMap = (
128
- reducer, mapper,
129
- ) => function mappingReducer(result, reducerItem) {
130
- const mappingReducerItem = mapper(reducerItem)
131
- return isPromise(mappingReducerItem)
132
- ? mappingReducerItem.then(curry2(reducer, result, __))
133
- : reducer(result, mappingReducerItem)
134
- }
135
-
136
97
  // argument resolver for curry3
137
98
  const curry3ResolveArg0 = (
138
99
  baseFunc, arg1, arg2,
@@ -381,38 +342,6 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
381
342
  return result
382
343
  }
383
344
 
384
- const arrayMapWithIndex = function (array, mapper) {
385
- const arrayLength = array.length,
386
- result = Array(arrayLength)
387
- let index = -1, isAsync = false
388
- while (++index < arrayLength) {
389
- const resultItem = mapper(array[index], index, array)
390
- if (isPromise(resultItem)) {
391
- isAsync = true
392
- }
393
- result[index] = resultItem
394
- }
395
- return isAsync ? promiseAll(result) : result
396
- }
397
-
398
- const hasOwnProperty = Object.prototype.hasOwnProperty
399
- const hasOwn = (obj, key) => hasOwnProperty.call(obj, key)
400
-
401
- const objectMapOwn = function (object, mapper) {
402
- const result = {}
403
- let isAsync = false
404
- for (const key in object) {
405
- if (hasOwn(object, key)) {
406
- const resultItem = mapper(object[key])
407
- if (isPromise(resultItem)) {
408
- isAsync = true
409
- }
410
- result[key] = resultItem
411
- }
412
- }
413
- return isAsync ? promiseObjectAll(result) : result
414
- }
415
-
416
345
  const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
417
346
  const argsLength = args.length,
418
347
  curriedArgsLength = curriedArgs.length,
@@ -520,15 +449,6 @@ const _map = function (value, mapper) {
520
449
  if (isArray(value)) {
521
450
  return arrayMap(value, mapper)
522
451
  }
523
- if (typeof value == 'function') {
524
- if (isGeneratorFunction(value)) {
525
- return generatorFunctionMap(value, mapper)
526
- }
527
- if (isAsyncGeneratorFunction(value)) {
528
- return asyncGeneratorFunctionMap(value, mapper)
529
- }
530
- return reducerMap(value, mapper)
531
- }
532
452
  if (value == null) {
533
453
  return value
534
454
  }
@@ -562,10 +482,15 @@ const _map = function (value, mapper) {
562
482
 
563
483
  const map = (...args) => {
564
484
  const mapper = args.pop()
565
- if (args.length > 0) {
566
- return _map(args[0], mapper)
485
+ if (args.length == 0) {
486
+ return curry2(_map, __, mapper)
567
487
  }
568
- return curry2(_map, __, mapper)
488
+
489
+ const collection = args[0]
490
+ if (isPromise(collection)) {
491
+ return collection.then(curry2(_map, __, mapper))
492
+ }
493
+ return _map(collection, mapper)
569
494
  }
570
495
 
571
496
  map.entries = function mapEntries(mapper) {
@@ -597,18 +522,4 @@ map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
597
522
  throw new TypeError(`${value} is not an Array`)
598
523
  }
599
524
 
600
- map.withIndex = mapper => function mappingWithIndex(value) {
601
- if (isArray(value)) {
602
- return arrayMapWithIndex(value, mapper)
603
- }
604
- throw new TypeError(`${value} is not an Array`)
605
- }
606
-
607
- map.own = mapper => function mappingOwnProperties(value) {
608
- if (isObject(value) && !isArray(value)) {
609
- return objectMapOwn(value, mapper)
610
- }
611
- throw new TypeError(`${value} is not an Object`)
612
- }
613
-
614
525
  export default map