rubico 1.9.7 → 2.0.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 (593) 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/README.md +158 -81
  8. package/Transducer.js +75 -26
  9. package/Transducer.test.js +117 -0
  10. package/_internal/ComparisonOperator.js +68 -0
  11. package/_internal/File.js +41 -0
  12. package/_internal/FlatMappingAsyncIterator.js +4 -4
  13. package/_internal/FlatMappingIterator.js +1 -1
  14. package/_internal/TimeInLoopSuite.js +138 -0
  15. package/_internal/areAnyValuesPromises.js +23 -0
  16. package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
  17. package/_internal/arrayExtend.js +3 -2
  18. package/_internal/arrayFilter.js +3 -4
  19. package/_internal/{arrayAny.js → arraySome.js} +8 -8
  20. package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
  21. package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
  22. package/_internal/curry4.test.js +25 -0
  23. package/_internal/curry5.test.js +29 -0
  24. package/_internal/curryArgs2.js +43 -0
  25. package/_internal/curryArgs3.test.js +21 -0
  26. package/_internal/curryArgs4.js +65 -0
  27. package/_internal/curryArgs4.test.js +25 -0
  28. package/_internal/equals.js +13 -0
  29. package/_internal/findAllFilePaths.js +22 -0
  30. package/_internal/funcApply.js +2 -0
  31. package/_internal/funcCall.js +14 -0
  32. package/_internal/functionArrayAll.js +26 -0
  33. package/_internal/functionArrayAllSeries.js +55 -0
  34. package/_internal/functionObjectAll.js +32 -0
  35. package/_internal/genericReduce.js +4 -22
  36. package/_internal/genericTransform.js +15 -15
  37. package/_internal/improvedGenericTransform.js +93 -0
  38. package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
  39. package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
  40. package/_internal/leftResolverRightResolverCompare.js +19 -0
  41. package/_internal/leftResolverRightValueCompare.js +16 -0
  42. package/_internal/leftValueRightResolverCompare.js +16 -0
  43. package/_internal/objectReduce.js +0 -1
  44. package/_internal/pathResolve.js +6 -0
  45. package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
  46. package/_internal/reducerFlatMap.js +4 -4
  47. package/_internal/reducerFlatten.js +1 -1
  48. package/_internal/{reducerAny.js → reducerSome.js} +4 -4
  49. package/_internal/timeInLoop.js +37 -0
  50. package/_internal/timeInLoop.test.js +18 -0
  51. package/_internal/timeInLoopAsync.js +35 -0
  52. package/_internal/timeInLoopAsync.test.js +22 -0
  53. package/all.js +106 -40
  54. package/and.js +54 -36
  55. package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
  56. package/archive/_Promise-2023-05-29.js +93 -0
  57. package/archive/arrayMap2-2023-05-29.js +73 -0
  58. package/archive/benchmarks-v1.9.7/all.js +34 -0
  59. package/archive/benchmarks-v1.9.7/and.js +24 -0
  60. package/archive/benchmarks-v1.9.7/assign.js +174 -0
  61. package/archive/benchmarks-v1.9.7/curry.js +55 -0
  62. package/archive/benchmarks-v1.9.7/eq.js +25 -0
  63. package/archive/benchmarks-v1.9.7/filter.js +1322 -0
  64. package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
  65. package/archive/benchmarks-v1.9.7/get.js +44 -0
  66. package/archive/benchmarks-v1.9.7/gt.js +25 -0
  67. package/archive/benchmarks-v1.9.7/gte.js +25 -0
  68. package/archive/benchmarks-v1.9.7/lt.js +25 -0
  69. package/archive/benchmarks-v1.9.7/lte.js +25 -0
  70. package/archive/benchmarks-v1.9.7/map.js +892 -0
  71. package/archive/benchmarks-v1.9.7/omit.js +28 -0
  72. package/archive/benchmarks-v1.9.7/or.js +51 -0
  73. package/archive/benchmarks-v1.9.7/pick.js +24 -0
  74. package/archive/benchmarks-v1.9.7/pipe.js +152 -0
  75. package/archive/benchmarks-v1.9.7/reduce.js +739 -0
  76. package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
  77. package/archive/benchmarks-v1.9.7/tap.js +90 -0
  78. package/archive/benchmarks-v1.9.7/transform.js +218 -0
  79. package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
  80. package/assign.js +18 -8
  81. package/bench +65 -0
  82. package/benchmark-output/v1.9.7 +268 -0
  83. package/benchmarks/all.async.js +43 -0
  84. package/benchmarks/all.js +42 -33
  85. package/benchmarks/always.js +15 -0
  86. package/benchmarks/and.async.js +25 -0
  87. package/benchmarks/and.js +20 -19
  88. package/benchmarks/assign.async.js +27 -0
  89. package/benchmarks/assign.js +20 -167
  90. package/benchmarks/curry.js +34 -54
  91. package/benchmarks/eq.async.js +23 -0
  92. package/benchmarks/eq.js +17 -19
  93. package/benchmarks/every.async.js +19 -0
  94. package/benchmarks/every.js +19 -0
  95. package/benchmarks/filter.async.js +32 -0
  96. package/benchmarks/filter.js +27 -1311
  97. package/benchmarks/flatMap.async.js +26 -0
  98. package/benchmarks/flatMap.js +26 -36
  99. package/benchmarks/get.async.js +19 -0
  100. package/benchmarks/get.js +27 -32
  101. package/benchmarks/gt.async.js +23 -0
  102. package/benchmarks/gt.js +17 -19
  103. package/benchmarks/gte.async.js +23 -0
  104. package/benchmarks/gte.js +17 -19
  105. package/benchmarks/lt.async.js +23 -0
  106. package/benchmarks/lt.js +17 -19
  107. package/benchmarks/lte.async.js +23 -0
  108. package/benchmarks/lte.js +17 -19
  109. package/benchmarks/map.async.js +43 -0
  110. package/benchmarks/map.js +24 -876
  111. package/benchmarks/misc/Promise.js +26 -0
  112. package/benchmarks/misc/isPromise.js +30 -0
  113. package/benchmarks/misc/promiseAll.js +36 -0
  114. package/benchmarks/not.js +23 -0
  115. package/benchmarks/omit.js +30 -20
  116. package/benchmarks/or.async.js +25 -0
  117. package/benchmarks/or.js +23 -49
  118. package/benchmarks/pick.js +30 -16
  119. package/benchmarks/pipe.async.js +47 -0
  120. package/benchmarks/pipe.js +46 -151
  121. package/benchmarks/reduce.async.js +32 -0
  122. package/benchmarks/reduce.js +27 -728
  123. package/benchmarks/set.async.js +19 -0
  124. package/benchmarks/set.js +41 -0
  125. package/benchmarks/some.async.js +19 -0
  126. package/benchmarks/some.js +19 -0
  127. package/benchmarks/switchCase.async.js +27 -0
  128. package/benchmarks/switchCase.js +55 -256
  129. package/benchmarks/tap.js +10 -85
  130. package/benchmarks/thunkify.js +15 -0
  131. package/benchmarks/transform.async.js +27 -0
  132. package/benchmarks/transform.js +28 -206
  133. package/benchmarks/tryCatch.async.js +25 -0
  134. package/benchmarks/tryCatch.js +24 -100
  135. package/build +472 -0
  136. package/compose.js +46 -0
  137. package/dist/Transducer.es.js +481 -0
  138. package/dist/Transducer.es.min.js +7 -0
  139. package/dist/Transducer.js +488 -0
  140. package/dist/Transducer.min.js +8 -0
  141. package/dist/Transducer.mjs +481 -0
  142. package/dist/__.es.js +2 -2
  143. package/dist/__.es.min.js +2 -2
  144. package/dist/__.js +2 -2
  145. package/dist/__.min.js +2 -2
  146. package/dist/__.mjs +2 -2
  147. package/dist/all.es.js +173 -92
  148. package/dist/all.es.min.js +3 -3
  149. package/dist/all.js +173 -92
  150. package/dist/all.min.js +3 -3
  151. package/dist/all.mjs +173 -92
  152. package/dist/always.es.js +2 -2
  153. package/dist/always.es.min.js +2 -2
  154. package/dist/always.js +2 -2
  155. package/dist/always.min.js +2 -2
  156. package/dist/always.mjs +2 -2
  157. package/dist/and.es.js +101 -32
  158. package/dist/and.es.min.js +3 -3
  159. package/dist/and.js +101 -32
  160. package/dist/and.min.js +3 -3
  161. package/dist/and.mjs +101 -32
  162. package/dist/assign.es.js +37 -10
  163. package/dist/assign.es.min.js +3 -3
  164. package/dist/assign.js +37 -10
  165. package/dist/assign.min.js +3 -3
  166. package/dist/assign.mjs +37 -10
  167. package/dist/compose.es.js +71 -0
  168. package/dist/compose.es.min.js +7 -0
  169. package/dist/compose.js +78 -0
  170. package/dist/compose.min.js +8 -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.mjs +2 -2
  177. package/dist/eq.es.js +172 -49
  178. package/dist/eq.es.min.js +3 -3
  179. package/dist/eq.js +172 -49
  180. package/dist/eq.min.js +3 -3
  181. package/dist/eq.mjs +172 -49
  182. package/dist/every.es.js +194 -0
  183. package/dist/every.es.min.js +7 -0
  184. package/dist/every.js +201 -0
  185. package/dist/every.min.js +8 -0
  186. package/dist/every.mjs +194 -0
  187. package/dist/filter.es.js +14 -108
  188. package/dist/filter.es.min.js +3 -3
  189. package/dist/filter.js +14 -108
  190. package/dist/filter.min.js +3 -3
  191. package/dist/filter.mjs +14 -108
  192. package/dist/flatMap.es.js +27 -214
  193. package/dist/flatMap.es.min.js +3 -3
  194. package/dist/flatMap.js +27 -214
  195. package/dist/flatMap.min.js +3 -3
  196. package/dist/flatMap.mjs +27 -214
  197. package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
  198. package/dist/forEach.es.min.js +7 -0
  199. package/dist/{x/forEach.js → forEach.js} +52 -70
  200. package/dist/forEach.min.js +8 -0
  201. package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
  202. package/dist/get.es.js +60 -5
  203. package/dist/get.es.min.js +3 -3
  204. package/dist/get.js +60 -5
  205. package/dist/get.min.js +3 -3
  206. package/dist/get.mjs +60 -5
  207. package/dist/gt.es.js +171 -48
  208. package/dist/gt.es.min.js +3 -3
  209. package/dist/gt.js +171 -48
  210. package/dist/gt.min.js +3 -3
  211. package/dist/gt.mjs +171 -48
  212. package/dist/gte.es.js +171 -48
  213. package/dist/gte.es.min.js +3 -3
  214. package/dist/gte.js +171 -48
  215. package/dist/gte.min.js +3 -3
  216. package/dist/gte.mjs +171 -48
  217. package/dist/lt.es.js +171 -48
  218. package/dist/lt.es.min.js +3 -3
  219. package/dist/lt.js +171 -48
  220. package/dist/lt.min.js +3 -3
  221. package/dist/lt.mjs +171 -48
  222. package/dist/lte.es.js +171 -48
  223. package/dist/lte.es.min.js +3 -3
  224. package/dist/lte.js +171 -48
  225. package/dist/lte.min.js +3 -3
  226. package/dist/lte.mjs +171 -48
  227. package/dist/map.es.js +12 -101
  228. package/dist/map.es.min.js +3 -3
  229. package/dist/map.js +12 -101
  230. package/dist/map.min.js +3 -3
  231. package/dist/map.mjs +12 -101
  232. package/dist/not.es.js +75 -14
  233. package/dist/not.es.min.js +3 -3
  234. package/dist/not.js +75 -14
  235. package/dist/not.min.js +3 -3
  236. package/dist/not.mjs +75 -14
  237. package/dist/omit.es.js +7 -2
  238. package/dist/omit.es.min.js +3 -3
  239. package/dist/omit.js +7 -2
  240. package/dist/omit.min.js +3 -3
  241. package/dist/omit.mjs +7 -2
  242. package/dist/or.es.js +99 -31
  243. package/dist/or.es.min.js +3 -3
  244. package/dist/or.js +99 -31
  245. package/dist/or.min.js +3 -3
  246. package/dist/or.mjs +99 -31
  247. package/dist/pick.es.js +8 -3
  248. package/dist/pick.es.min.js +3 -3
  249. package/dist/pick.js +8 -3
  250. package/dist/pick.min.js +3 -3
  251. package/dist/pick.mjs +8 -3
  252. package/dist/pipe.es.js +42 -46
  253. package/dist/pipe.es.min.js +3 -3
  254. package/dist/pipe.js +42 -46
  255. package/dist/pipe.min.js +3 -3
  256. package/dist/pipe.mjs +42 -46
  257. package/dist/reduce.es.js +52 -94
  258. package/dist/reduce.es.min.js +3 -3
  259. package/dist/reduce.js +52 -94
  260. package/dist/reduce.min.js +3 -3
  261. package/dist/reduce.mjs +52 -94
  262. package/dist/rubico.es.js +762 -883
  263. package/dist/rubico.es.min.js +3 -3
  264. package/dist/rubico.global.js +2794 -0
  265. package/dist/rubico.global.min.js +8 -0
  266. package/dist/rubico.js +739 -869
  267. package/dist/rubico.min.js +3 -3
  268. package/dist/rubico.mjs +762 -883
  269. package/dist/set.es.js +18 -3
  270. package/dist/set.es.min.js +3 -3
  271. package/dist/set.js +18 -3
  272. package/dist/set.min.js +3 -3
  273. package/dist/set.mjs +18 -3
  274. package/dist/{any.js → some.es.js} +64 -54
  275. package/dist/some.es.min.js +7 -0
  276. package/dist/{any.mjs → some.js} +72 -48
  277. package/dist/some.min.js +8 -0
  278. package/dist/{any.es.js → some.mjs} +65 -48
  279. package/dist/switchCase.es.js +55 -5
  280. package/dist/switchCase.es.min.js +3 -3
  281. package/dist/switchCase.js +55 -5
  282. package/dist/switchCase.min.js +3 -3
  283. package/dist/switchCase.mjs +55 -5
  284. package/dist/tap.es.js +2 -9
  285. package/dist/tap.es.min.js +3 -3
  286. package/dist/tap.js +2 -9
  287. package/dist/tap.min.js +3 -3
  288. package/dist/tap.mjs +2 -9
  289. package/dist/thunkify.es.js +45 -2
  290. package/dist/thunkify.es.min.js +3 -3
  291. package/dist/thunkify.js +45 -2
  292. package/dist/thunkify.min.js +3 -3
  293. package/dist/thunkify.mjs +45 -2
  294. package/dist/transform.es.js +35 -71
  295. package/dist/transform.es.min.js +3 -3
  296. package/dist/transform.js +35 -71
  297. package/dist/transform.min.js +3 -3
  298. package/dist/transform.mjs +35 -71
  299. package/dist/tryCatch.es.js +33 -17
  300. package/dist/tryCatch.es.min.js +3 -3
  301. package/dist/tryCatch.js +33 -17
  302. package/dist/tryCatch.min.js +3 -3
  303. package/dist/tryCatch.mjs +33 -17
  304. package/dist/x/append.es.js +2 -2
  305. package/dist/x/append.es.min.js +2 -2
  306. package/dist/x/append.js +2 -2
  307. package/dist/x/append.min.js +2 -2
  308. package/dist/x/append.mjs +2 -2
  309. package/dist/x/callProp.es.js +2 -2
  310. package/dist/x/callProp.es.min.js +2 -2
  311. package/dist/x/callProp.js +2 -2
  312. package/dist/x/callProp.min.js +2 -2
  313. package/dist/x/callProp.mjs +2 -2
  314. package/dist/x/defaultsDeep.es.js +2 -2
  315. package/dist/x/defaultsDeep.es.min.js +2 -2
  316. package/dist/x/defaultsDeep.js +2 -2
  317. package/dist/x/defaultsDeep.min.js +2 -2
  318. package/dist/x/defaultsDeep.mjs +2 -2
  319. package/dist/x/differenceWith.es.js +7 -7
  320. package/dist/x/differenceWith.es.min.js +3 -3
  321. package/dist/x/differenceWith.js +7 -7
  322. package/dist/x/differenceWith.min.js +2 -2
  323. package/dist/x/differenceWith.mjs +7 -7
  324. package/dist/x/filterOut.es.js +60 -117
  325. package/dist/x/filterOut.es.min.js +3 -3
  326. package/dist/x/filterOut.js +60 -117
  327. package/dist/x/filterOut.min.js +3 -3
  328. package/dist/x/filterOut.mjs +60 -117
  329. package/dist/x/find.es.js +2 -2
  330. package/dist/x/find.es.min.js +2 -2
  331. package/dist/x/find.js +2 -2
  332. package/dist/x/find.min.js +2 -2
  333. package/dist/x/find.mjs +2 -2
  334. package/dist/x/findIndex.es.js +2 -2
  335. package/dist/x/findIndex.es.min.js +2 -2
  336. package/dist/x/findIndex.js +2 -2
  337. package/dist/x/findIndex.min.js +2 -2
  338. package/dist/x/findIndex.mjs +2 -2
  339. package/dist/x/first.es.js +2 -2
  340. package/dist/x/first.es.min.js +2 -2
  341. package/dist/x/first.js +2 -2
  342. package/dist/x/first.min.js +2 -2
  343. package/dist/x/first.mjs +2 -2
  344. package/dist/x/flatten.es.js +20 -207
  345. package/dist/x/flatten.es.min.js +3 -3
  346. package/dist/x/flatten.js +20 -207
  347. package/dist/x/flatten.min.js +3 -3
  348. package/dist/x/flatten.mjs +20 -207
  349. package/dist/x/groupBy.es.js +52 -94
  350. package/dist/x/groupBy.es.min.js +3 -3
  351. package/dist/x/groupBy.js +52 -94
  352. package/dist/x/groupBy.min.js +3 -3
  353. package/dist/x/groupBy.mjs +52 -94
  354. package/dist/x/has.es.js +2 -2
  355. package/dist/x/has.es.min.js +2 -2
  356. package/dist/x/has.js +2 -2
  357. package/dist/x/has.min.js +2 -2
  358. package/dist/x/has.mjs +2 -2
  359. package/dist/x/identity.es.js +2 -2
  360. package/dist/x/identity.es.min.js +2 -2
  361. package/dist/x/identity.js +2 -2
  362. package/dist/x/identity.min.js +2 -2
  363. package/dist/x/identity.mjs +2 -2
  364. package/dist/x/includes.es.js +2 -2
  365. package/dist/x/includes.es.min.js +2 -2
  366. package/dist/x/includes.js +2 -2
  367. package/dist/x/includes.min.js +2 -2
  368. package/dist/x/includes.mjs +2 -2
  369. package/dist/x/isDeepEqual.es.js +2 -2
  370. package/dist/x/isDeepEqual.es.min.js +2 -2
  371. package/dist/x/isDeepEqual.js +2 -2
  372. package/dist/x/isDeepEqual.min.js +2 -2
  373. package/dist/x/isDeepEqual.mjs +2 -2
  374. package/dist/x/isEmpty.es.js +2 -2
  375. package/dist/x/isEmpty.es.min.js +2 -2
  376. package/dist/x/isEmpty.js +2 -2
  377. package/dist/x/isEmpty.min.js +2 -2
  378. package/dist/x/isEmpty.mjs +2 -2
  379. package/dist/x/isEqual.es.js +2 -2
  380. package/dist/x/isEqual.es.min.js +2 -2
  381. package/dist/x/isEqual.js +2 -2
  382. package/dist/x/isEqual.min.js +2 -2
  383. package/dist/x/isEqual.mjs +2 -2
  384. package/dist/x/isFunction.es.js +2 -2
  385. package/dist/x/isFunction.es.min.js +2 -2
  386. package/dist/x/isFunction.js +2 -2
  387. package/dist/x/isFunction.min.js +2 -2
  388. package/dist/x/isFunction.mjs +2 -2
  389. package/dist/x/isIn.es.js +2 -2
  390. package/dist/x/isIn.es.min.js +2 -2
  391. package/dist/x/isIn.js +2 -2
  392. package/dist/x/isIn.min.js +2 -2
  393. package/dist/x/isIn.mjs +2 -2
  394. package/dist/x/isObject.es.js +2 -2
  395. package/dist/x/isObject.es.min.js +2 -2
  396. package/dist/x/isObject.js +2 -2
  397. package/dist/x/isObject.min.js +2 -2
  398. package/dist/x/isObject.mjs +2 -2
  399. package/dist/x/isString.es.js +2 -2
  400. package/dist/x/isString.es.min.js +2 -2
  401. package/dist/x/isString.js +2 -2
  402. package/dist/x/isString.min.js +2 -2
  403. package/dist/x/isString.mjs +2 -2
  404. package/dist/x/keys.es.js +2 -2
  405. package/dist/x/keys.es.min.js +2 -2
  406. package/dist/x/keys.js +2 -2
  407. package/dist/x/keys.min.js +2 -2
  408. package/dist/x/keys.mjs +2 -2
  409. package/dist/x/last.es.js +2 -2
  410. package/dist/x/last.es.min.js +2 -2
  411. package/dist/x/last.js +2 -2
  412. package/dist/x/last.min.js +2 -2
  413. package/dist/x/last.mjs +2 -2
  414. package/dist/x/maxBy.es.js +59 -6
  415. package/dist/x/maxBy.es.min.js +3 -3
  416. package/dist/x/maxBy.js +59 -6
  417. package/dist/x/maxBy.min.js +3 -3
  418. package/dist/x/maxBy.mjs +59 -6
  419. package/dist/x/noop.es.js +2 -2
  420. package/dist/x/noop.es.min.js +2 -2
  421. package/dist/x/noop.js +2 -2
  422. package/dist/x/noop.min.js +2 -2
  423. package/dist/x/noop.mjs +2 -2
  424. package/dist/x/pluck.es.js +32 -103
  425. package/dist/x/pluck.es.min.js +3 -3
  426. package/dist/x/pluck.js +32 -103
  427. package/dist/x/pluck.min.js +3 -3
  428. package/dist/x/pluck.mjs +32 -103
  429. package/dist/x/prepend.es.js +2 -2
  430. package/dist/x/prepend.es.min.js +2 -2
  431. package/dist/x/prepend.js +2 -2
  432. package/dist/x/prepend.min.js +2 -2
  433. package/dist/x/prepend.mjs +2 -2
  434. package/dist/x/size.es.js +2 -2
  435. package/dist/x/size.es.min.js +2 -2
  436. package/dist/x/size.js +2 -2
  437. package/dist/x/size.min.js +2 -2
  438. package/dist/x/size.mjs +2 -2
  439. package/dist/x/trace.es.js +2 -9
  440. package/dist/x/trace.es.min.js +3 -3
  441. package/dist/x/trace.js +2 -9
  442. package/dist/x/trace.min.js +3 -3
  443. package/dist/x/trace.mjs +2 -9
  444. package/dist/x/unionWith.es.js +2 -2
  445. package/dist/x/unionWith.es.min.js +2 -2
  446. package/dist/x/unionWith.js +2 -2
  447. package/dist/x/unionWith.min.js +2 -2
  448. package/dist/x/unionWith.mjs +2 -2
  449. package/dist/x/uniq.es.js +2 -2
  450. package/dist/x/uniq.es.min.js +2 -2
  451. package/dist/x/uniq.js +2 -2
  452. package/dist/x/uniq.min.js +2 -2
  453. package/dist/x/uniq.mjs +2 -2
  454. package/dist/x/unless.es.js +2 -2
  455. package/dist/x/unless.es.min.js +2 -2
  456. package/dist/x/unless.js +2 -2
  457. package/dist/x/unless.min.js +2 -2
  458. package/dist/x/unless.mjs +2 -2
  459. package/dist/x/values.es.js +2 -2
  460. package/dist/x/values.es.min.js +2 -2
  461. package/dist/x/values.js +2 -2
  462. package/dist/x/values.min.js +2 -2
  463. package/dist/x/values.mjs +2 -2
  464. package/dist/x/when.es.js +2 -2
  465. package/dist/x/when.es.min.js +2 -2
  466. package/dist/x/when.js +2 -2
  467. package/dist/x/when.min.js +2 -2
  468. package/dist/x/when.mjs +2 -2
  469. package/dist-test.js +31 -2042
  470. package/eq.js +21 -63
  471. package/es.js +739 -869
  472. package/every.js +94 -0
  473. package/filter.js +23 -91
  474. package/flatMap.js +75 -70
  475. package/forEach.js +82 -0
  476. package/get.js +23 -6
  477. package/global.js +6 -4
  478. package/gt.js +15 -58
  479. package/gte.js +14 -57
  480. package/index.js +739 -869
  481. package/lt.js +17 -60
  482. package/lte.js +14 -57
  483. package/map.js +9 -94
  484. package/memory-usage/reduce.js +2 -2
  485. package/not.js +27 -45
  486. package/omit.js +4 -0
  487. package/or.js +50 -33
  488. package/package.json +7 -7
  489. package/pick.js +5 -1
  490. package/pipe.js +13 -50
  491. package/reduce.js +42 -51
  492. package/rubico.js +22 -11
  493. package/set.js +43 -10
  494. package/some.js +105 -0
  495. package/switchCase.js +13 -3
  496. package/tap.js +0 -24
  497. package/test.js +847 -1096
  498. package/thunkify.js +9 -0
  499. package/tmp.js +1 -0
  500. package/transform.js +31 -16
  501. package/tryCatch.js +19 -15
  502. package/x/differenceWith.js +3 -3
  503. package/x/filterOut.test.js +6 -6
  504. package/x/flatten.js +1 -1
  505. package/x/flatten.test.js +0 -8
  506. package/x/index.js +0 -2
  507. package/x/pluck.js +18 -27
  508. package/x/pluck.test.js +3 -7
  509. package/x/timeInLoop.js +16 -25
  510. package/x/timeInLoop.test.js +8 -4
  511. package/any.js +0 -82
  512. package/dist/__.min.mjs +0 -7
  513. package/dist/all.min.mjs +0 -7
  514. package/dist/always.min.mjs +0 -7
  515. package/dist/and.min.mjs +0 -7
  516. package/dist/any.es.min.js +0 -7
  517. package/dist/any.min.js +0 -8
  518. package/dist/any.min.mjs +0 -7
  519. package/dist/assign.min.mjs +0 -7
  520. package/dist/curry.min.mjs +0 -7
  521. package/dist/eq.min.mjs +0 -7
  522. package/dist/filter.min.mjs +0 -7
  523. package/dist/flatMap.min.mjs +0 -7
  524. package/dist/fork.es.js +0 -159
  525. package/dist/fork.es.min.js +0 -7
  526. package/dist/fork.js +0 -166
  527. package/dist/fork.min.js +0 -8
  528. package/dist/fork.min.mjs +0 -7
  529. package/dist/fork.mjs +0 -159
  530. package/dist/get.min.mjs +0 -7
  531. package/dist/gt.min.mjs +0 -7
  532. package/dist/gte.min.mjs +0 -7
  533. package/dist/lt.min.mjs +0 -7
  534. package/dist/lte.min.mjs +0 -7
  535. package/dist/map.min.mjs +0 -7
  536. package/dist/not.min.mjs +0 -7
  537. package/dist/omit.min.mjs +0 -7
  538. package/dist/or.min.mjs +0 -7
  539. package/dist/pick.min.mjs +0 -7
  540. package/dist/pipe.min.mjs +0 -7
  541. package/dist/reduce.min.mjs +0 -7
  542. package/dist/rubico.min.mjs +0 -7
  543. package/dist/set.min.mjs +0 -7
  544. package/dist/switchCase.min.mjs +0 -7
  545. package/dist/tap.min.mjs +0 -7
  546. package/dist/thunkify.min.mjs +0 -7
  547. package/dist/transform.min.mjs +0 -7
  548. package/dist/tryCatch.min.mjs +0 -7
  549. package/dist/x/append.min.mjs +0 -7
  550. package/dist/x/callProp.min.mjs +0 -7
  551. package/dist/x/defaultsDeep.min.mjs +0 -7
  552. package/dist/x/differenceWith.min.mjs +0 -7
  553. package/dist/x/filterOut.min.mjs +0 -7
  554. package/dist/x/find.min.mjs +0 -7
  555. package/dist/x/findIndex.min.mjs +0 -7
  556. package/dist/x/first.min.mjs +0 -7
  557. package/dist/x/flatten.min.mjs +0 -7
  558. package/dist/x/forEach.es.min.js +0 -7
  559. package/dist/x/forEach.min.js +0 -8
  560. package/dist/x/forEach.min.mjs +0 -7
  561. package/dist/x/groupBy.min.mjs +0 -7
  562. package/dist/x/has.min.mjs +0 -7
  563. package/dist/x/identity.min.mjs +0 -7
  564. package/dist/x/includes.min.mjs +0 -7
  565. package/dist/x/isDeepEqual.min.mjs +0 -7
  566. package/dist/x/isEmpty.min.mjs +0 -7
  567. package/dist/x/isEqual.min.mjs +0 -7
  568. package/dist/x/isFunction.min.mjs +0 -7
  569. package/dist/x/isIn.min.mjs +0 -7
  570. package/dist/x/isObject.min.mjs +0 -7
  571. package/dist/x/isString.min.mjs +0 -7
  572. package/dist/x/keys.min.mjs +0 -7
  573. package/dist/x/last.min.mjs +0 -7
  574. package/dist/x/maxBy.min.mjs +0 -7
  575. package/dist/x/noop.min.mjs +0 -7
  576. package/dist/x/pluck.min.mjs +0 -7
  577. package/dist/x/prepend.min.mjs +0 -7
  578. package/dist/x/size.min.mjs +0 -7
  579. package/dist/x/trace.min.mjs +0 -7
  580. package/dist/x/unionWith.min.mjs +0 -7
  581. package/dist/x/uniq.min.mjs +0 -7
  582. package/dist/x/unless.min.mjs +0 -7
  583. package/dist/x/values.min.mjs +0 -7
  584. package/dist/x/when.min.mjs +0 -7
  585. package/distributor.js +0 -495
  586. package/fork.js +0 -101
  587. package/x/forEach.js +0 -93
  588. package/x/forEach.test.js +0 -218
  589. /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
  590. /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
  591. /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
  592. /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
  593. /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/thunkify.js CHANGED
@@ -1,3 +1,9 @@
1
+ const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
2
+ const promiseAll = require('./_internal/promiseAll')
3
+ const curry2 = require('./_internal/curry2')
4
+ const __ = require('./_internal/placeholder')
5
+ const funcApply = require('./_internal/funcApply')
6
+
1
7
  /**
2
8
  * @name thunkify
3
9
  *
@@ -18,6 +24,9 @@
18
24
  * ```
19
25
  */
20
26
  const thunkify = (func, ...args) => function thunk() {
27
+ if (areAnyValuesPromises(args)) {
28
+ return promiseAll(args).then(curry2(funcApply, func, __))
29
+ }
21
30
  return func(...args)
22
31
  }
23
32
 
package/tmp.js ADDED
@@ -0,0 +1 @@
1
+ require('.')
package/transform.js CHANGED
@@ -3,6 +3,19 @@ const __ = require('./_internal/placeholder')
3
3
  const curry3 = require('./_internal/curry3')
4
4
  const genericTransform = require('./_internal/genericTransform')
5
5
 
6
+ // _transform(collection any, transducer function, initialValue function|any) -> Promise
7
+ const _transform = function (collection, transducer, initialValue) {
8
+ if (typeof initialValue == 'function') {
9
+ const actualInitialValue = initialValue(collection)
10
+ return isPromise(actualInitialValue)
11
+ ? actualInitialValue.then(curry3(genericTransform, collection, transducer, __))
12
+ : genericTransform(collection, transducer, actualInitialValue)
13
+ }
14
+ return isPromise(initialValue)
15
+ ? initialValue.then(curry3(genericTransform, collection, transducer, __))
16
+ : genericTransform(collection, transducer, initialValue)
17
+ }
18
+
6
19
  /**
7
20
  * @name transform
8
21
  *
@@ -10,19 +23,25 @@ const genericTransform = require('./_internal/genericTransform')
10
23
  * ```coffeescript [specscript]
11
24
  * type Reducer = (result any, item any)=>(result any)
12
25
  * type Transducer = Reducer=>Reducer
13
- * type Semigroup = Array|String|Set|TypedArray|{ concat: function }|{ write: function }|Object
14
- * type Foldable = Iterable|AsyncIterable|Object
26
+ * type Transformable = Array|String|Set|TypedArray|{ concat: function }|{ write: function }|Object
27
+ * type Foldable = Iterable|AsyncIterable|Object<value any>
15
28
  *
16
- * initialValue Semigroup|((foldable Foldable)=>Promise|Semigroup)
29
+ * initialValue Transformable|((foldable Foldable)=>Promise|Transformable)
30
+ *
31
+ * transform(
32
+ * foldable Foldable,
33
+ * transducer Transducer,
34
+ * initialValue? Transformable|(Foldable=>Promise|Transformable),
35
+ * ) -> result Promise|Transformable
17
36
  *
18
37
  * transform(
19
38
  * transducer Transducer,
20
- * initialValue?,
21
- * )(foldable Foldable) -> result Promise|Semigroup
39
+ * initialValue? Transformable|(Foldable=>Promise|Transformable),
40
+ * )(foldable Foldable) -> result Promise|Transformable
22
41
  * ```
23
42
  *
24
43
  * @description
25
- * Transforms a semigroup collection into any other semigroup collection. The type of transformation depends on the collection provided by the initial value. If the initial is a function it is used as a resolver for the provided collection. `transform` accepts semigroup collections, or collections that support a concatenation operation:
44
+ * Transforms a transformable collection into any other transformable collection. The type of transformation depends on the collection provided by the initial value. If the initial is a function it is used as a resolver for the provided collection. `transform` accepts transformable collections, or collections that support a concatenation operation:
26
45
  *
27
46
  * * `Array`; concatenation defined by `result.concat(values)`
28
47
  * * `string`; concatenation defined by `result + values`
@@ -115,18 +134,14 @@ const genericTransform = require('./_internal/genericTransform')
115
134
  *
116
135
  * TODO explore Semigroup = Iterator|AsyncIterator
117
136
  */
118
- const transform = function (transducer, init) {
119
- if (typeof init == 'function') {
120
- return function transforming(...args) {
121
- const result = init(...args)
122
- return isPromise(result)
123
- ? result.then(curry3(genericTransform, args, transducer, __))
124
- : genericTransform(args, transducer, result)
125
- }
137
+ const transform = function (...args) {
138
+ if (typeof args[0] == 'function') {
139
+ return curry3(_transform, __, args[0], args[1])
126
140
  }
127
- return function transforming(...args) {
128
- return genericTransform(args, transducer, init)
141
+ if (isPromise(args[0])) {
142
+ return args[0].then(curry3(_transform, __, args[1], args[2]))
129
143
  }
144
+ return _transform(args[0], args[1], args[2])
130
145
  }
131
146
 
132
147
  module.exports = transform
package/tryCatch.js CHANGED
@@ -1,7 +1,21 @@
1
1
  const isPromise = require('./_internal/isPromise')
2
+ const promiseAll = require('./_internal/promiseAll')
2
3
  const __ = require('./_internal/placeholder')
3
4
  const curry3 = require('./_internal/curry3')
4
5
  const catcherApply = require('./_internal/catcherApply')
6
+ const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
7
+
8
+ // _tryCatch(tryer function, catcher function, args Array) -> Promise
9
+ const _tryCatch = function (tryer, catcher, args) {
10
+ try {
11
+ const result = tryer(...args)
12
+ return isPromise(result)
13
+ ? result.catch(curry3(catcherApply, catcher, __, args))
14
+ : result
15
+ } catch (error) {
16
+ return catcher(error, ...args)
17
+ }
18
+ }
5
19
 
6
20
  /**
7
21
  * @name tryCatch
@@ -53,27 +67,17 @@ const tryCatch = function (...args) {
53
67
  if (args.length > 2) {
54
68
  const catcher = args.pop(),
55
69
  tryer = args.pop()
56
- try {
57
- const result = tryer(...args)
58
- return isPromise(result)
59
- ? result.catch(curry3(catcherApply, catcher, __, args))
60
- : result
61
- } catch (error) {
62
- return catcher(error, ...args)
70
+ if (areAnyValuesPromises(args)) {
71
+ return promiseAll(args)
72
+ .then(curry3(_tryCatch, tryer, catcher, __))
63
73
  }
74
+ return _tryCatch(tryer, catcher, args)
64
75
  }
65
76
 
66
77
  const tryer = args[0],
67
78
  catcher = args[1]
68
79
  return function tryCatcher(...args) {
69
- try {
70
- const result = tryer(...args)
71
- return isPromise(result)
72
- ? result.catch(curry3(catcherApply, catcher, __, args))
73
- : result
74
- } catch (error) {
75
- return catcher(error, ...args)
76
- }
80
+ return _tryCatch(tryer, catcher, args)
77
81
  }
78
82
  }
79
83
 
@@ -6,7 +6,7 @@ const thunkify5 = require('../_internal/thunkify5')
6
6
  const thunkConditional = require('../_internal/thunkConditional')
7
7
  const isPromise = require('../_internal/isPromise')
8
8
  const isArray = require('../_internal/isArray')
9
- const arrayAny = require('../_internal/arrayAny')
9
+ const arraySome = require('../_internal/arraySome')
10
10
  const arrayPush = require('../_internal/arrayPush')
11
11
  const funcConcatSync = require('../_internal/funcConcatSync')
12
12
  const noop = require('../_internal/noop')
@@ -33,7 +33,7 @@ const differenceWithArrayAsync = async function (
33
33
  const allValuesLength = allValues.length
34
34
  while (++index < allValuesLength) {
35
35
  const item = allValues[index]
36
- let doesItemExistByComparator = arrayAny(array, curry2(comparator, item, __))
36
+ let doesItemExistByComparator = arraySome(array, curry2(comparator, item, __))
37
37
  if (isPromise(doesItemExistByComparator)) {
38
38
  doesItemExistByComparator = await doesItemExistByComparator
39
39
  }
@@ -62,7 +62,7 @@ const differenceWithArray = function (comparator, allValues, array) {
62
62
  let index = -1
63
63
  while (++index < allValuesLength) {
64
64
  const item = allValues[index],
65
- doesItemExistByComparator = arrayAny(array, curry2(comparator, item, __))
65
+ doesItemExistByComparator = arraySome(array, curry2(comparator, item, __))
66
66
  if (isPromise(doesItemExistByComparator)) {
67
67
  return doesItemExistByComparator.then(funcConcatSync(
68
68
  curry3(thunkConditional, __, noop, thunkify2(arrayPush, result, item)),
@@ -40,13 +40,13 @@ describe('filterOut', () => {
40
40
 
41
41
  it('creates a rejecting generator function when passed a generator', () => {
42
42
  const rejectOdds = filterOut(number => number % 2 == 1)
43
- const oddsRejectingGeneratorFunc = rejectOdds(function* (array) {
43
+ const oddsRejectingGenerator = rejectOdds((function* (array) {
44
44
  for (const value of array) {
45
45
  yield value
46
46
  }
47
- })
47
+ })([1, 2, 3, 4, 5]))
48
48
  const evensArray = []
49
- for (const number of oddsRejectingGeneratorFunc([1, 2, 3, 4, 5])) {
49
+ for (const number of oddsRejectingGenerator) {
50
50
  evensArray.push(number)
51
51
  }
52
52
  assert.deepEqual(evensArray, [2, 4])
@@ -54,13 +54,13 @@ describe('filterOut', () => {
54
54
 
55
55
  it('creates a rejecting generator function when passed an async generator', async () => {
56
56
  const asyncRejectOdds = filterOut(async number => number % 2 == 1)
57
- const oddsRejectingGeneratorFunc = asyncRejectOdds(async function* (array) {
57
+ const oddsRejectingGenerator = asyncRejectOdds((async function* (array) {
58
58
  for (const value of array) {
59
59
  yield value
60
60
  }
61
- })
61
+ })([1, 2, 3, 4, 5]))
62
62
  const evensArray = []
63
- for await (const number of oddsRejectingGeneratorFunc([1, 2, 3, 4, 5])) {
63
+ for await (const number of oddsRejectingGenerator) {
64
64
  evensArray.push(number)
65
65
  }
66
66
  assert.deepEqual(evensArray, [2, 4])
package/x/flatten.js CHANGED
@@ -74,7 +74,7 @@ const flatten = function (value) {
74
74
  if (value.constructor == Object) {
75
75
  return objectFlatten(value)
76
76
  }
77
- return flatMap(identity)(value)
77
+ return flatMap(value, identity)
78
78
  }
79
79
 
80
80
  module.exports = flatten
package/x/flatten.test.js CHANGED
@@ -34,12 +34,4 @@ describe('flatten', () => {
34
34
  it('flatten(undefined)', async () => {
35
35
  assert.strictEqual(flatten(undefined), undefined)
36
36
  })
37
- it('flatteningReducer', async () => {
38
- const add = (a, b) => a + b
39
- const flatteningAdd = flatten(add)
40
- assert.strictEqual(
41
- [[1], [2], [3], [4], [5]].reduce(flatteningAdd, 0),
42
- 15,
43
- )
44
- })
45
37
  })
package/x/index.js CHANGED
@@ -7,7 +7,6 @@ const find = require('./find')
7
7
  const findIndex = require('./findIndex')
8
8
  const first = require('./first')
9
9
  const flatten = require('./flatten')
10
- const forEach = require('./forEach')
11
10
  const groupBy = require('./groupBy')
12
11
  const has = require('./has')
13
12
  const identity = require('./identity')
@@ -43,7 +42,6 @@ const rubicoX = {
43
42
  findIndex,
44
43
  first,
45
44
  flatten,
46
- forEach,
47
45
  groupBy,
48
46
  has,
49
47
  identity,
package/x/pluck.js CHANGED
@@ -7,28 +7,19 @@ const get = require('../get')
7
7
  *
8
8
  * @synopsis
9
9
  * ```coffeescript [specscript]
10
- * Functor<T> = Array<T>|Object<T>|Iterator<T>|AsyncIterator<T>|{ map: T=>any }
11
- * Reducer<T> = (any, T)=>Promise|any
10
+ * pluck(path string)(array Array) -> result Array
12
11
  *
13
- * var T any,
14
- * mapper T=>Promise|any,
15
- * functor Functor<T>
16
- * args ...any,
17
- * generatorFunction ...args=>Generator<T>,
18
- * asyncGeneratorFunction ...args=>AsyncGenerator<T>,
19
- * reducer Reducer<T>
20
- *
21
- * pluck(functor) -> Promise|Functor
22
- *
23
- * pluck(generatorFunction) -> ...args=>Generator
24
- *
25
- * pluck(asyncGeneratorFunction) -> ...args=>AsyncGenerator
26
- *
27
- * pluck(reducer) -> Reducer
12
+ * pluck(array Array, path string) -> result Array
28
13
  * ```
29
14
  *
30
15
  * @description
31
- * Apply a getter denoted by path across all items of a collection, creating a new collection of plucked values. Also works in transducer position.
16
+ * Creates an array of picked properties denoted by a path from another array.
17
+ *
18
+ * `pluck` supports three types of path patterns for nested property access.
19
+ *
20
+ * * dot delimited - `'a.b.c'`
21
+ * * bracket notation - `'a[0].value'`
22
+ * * an array of keys or indices - `['a', 0, 'value']`
32
23
  *
33
24
  * ```javascript [playground]
34
25
  * import pluck from 'https://unpkg.com/rubico/dist/x/pluck.es.js'
@@ -39,18 +30,18 @@ const get = require('../get')
39
30
  * { name: 'Jim', age: 22 },
40
31
  * ]
41
32
  *
42
- * const usernames = pluck('name')(users)
33
+ * const usernames = pluck(users, 'name')
43
34
  *
44
35
  * console.log(usernames) // ['George', 'Jane', 'Jim']
45
- *
46
- * const add = (a, b) => a + b
47
- *
48
- * console.log(
49
- * 'total age:',
50
- * users.reduce(pluck('age')(add), 0),
51
- * ) // total age: 96
52
36
  * ```
53
37
  */
54
- const pluck = funcConcat(get, map)
38
+ const pluck = function (...args) {
39
+ const path = args.pop()
40
+ const getter = get(path)
41
+ if (args.length == 0) {
42
+ return map(getter)
43
+ }
44
+ return map(args[0], getter)
45
+ }
55
46
 
56
47
  module.exports = pluck
package/x/pluck.test.js CHANGED
@@ -5,17 +5,13 @@ const createAbc = v => ({ a: { b: { c: v } } })
5
5
 
6
6
  describe('pluck', () => {
7
7
  it('creates a new collection by getting a path from every item of an old collection', async () => {
8
+ const nested = [1, 2, 3].map(createAbc)
8
9
  assert.deepEqual(
9
- pluck('a.b.c')([1, 2, 3].map(createAbc)),
10
+ pluck('a.b.c')(nested),
10
11
  [1, 2, 3],
11
12
  )
12
- })
13
- it('works in transducer position', async () => {
14
13
  assert.deepEqual(
15
- [1, 2, 3].map(createAbc).reduce(
16
- pluck('a.b.c')((a, b) => a.concat([b])),
17
- [],
18
- ),
14
+ pluck(nested, 'a.b.c'),
19
15
  [1, 2, 3],
20
16
  )
21
17
  })
package/x/timeInLoop.js CHANGED
@@ -1,23 +1,22 @@
1
+ const _timeInLoop = require('../_internal/timeInLoop')
2
+ const timeInLoopAsync = require('../_internal/timeInLoopAsync')
3
+
1
4
  /**
2
5
  * @name timeInLoop
3
6
  *
4
7
  * @synopsis
5
8
  * timeInLoop(desc string, loopCount number, fn function) -> undefined
6
9
  *
7
- * @catchphrase
8
- * How long does a function take to run this many loops
10
+ * @description
11
+ * Logs the amount of time required for a function to run a certain number of times
12
+ *
13
+ * ```coffeescript [specscript]
14
+ * timeInLoop('hello', 1e6, () => 'hello') // hello: 1e+6: 3.474ms
15
+ * ```
9
16
  *
10
- * @example
11
- * timeInLoop('yo', 1e6, () => 'yo') // yo: 1e+6: 3.474ms
17
+ * Reference: https://gist.github.com/funfunction/91b5876a5f562e1e352aed0fcabc3858
12
18
  */
13
- const timeInLoop = (desc, loopCount, fn) => {
14
- const d = `${desc}: ${loopCount.toExponential()}`
15
- console.time(d)
16
- for (let i = 0; i < loopCount; i++) {
17
- fn()
18
- }
19
- console.timeEnd(d)
20
- }
19
+ const timeInLoop = _timeInLoop
21
20
 
22
21
  /**
23
22
  * @name timeInLoop.async
@@ -25,21 +24,13 @@ const timeInLoop = (desc, loopCount, fn) => {
25
24
  * @synopsis
26
25
  * timeInLoop.async(desc string, loopCount number, fn function) -> undefined
27
26
  *
28
- * @catchphrase
27
+ * @description
29
28
  * Like timeInLoop, but every call is awaited
30
29
  *
31
- * @example
32
- * timeInLoop.async('asyncYo', 1e6, async () => 'yo') // asyncYo: 1e+6: 116.006ms
30
+ * ```coffeescript [specscript]
31
+ * timeInLoop.async('async hello', 1e6, async () => 'hello') // async hello: 1e+6: 116.006ms
32
+ * ```
33
33
  */
34
- timeInLoop.async = async (desc, loopCount, fn) => {
35
- const d = `${desc}: ${loopCount.toExponential()}`
36
- console.time(d)
37
- for (let i = 0; i < loopCount; i++) {
38
- await fn()
39
- }
40
- console.timeEnd(d)
41
- }
34
+ timeInLoop.async = timeInLoopAsync
42
35
 
43
36
  module.exports = timeInLoop
44
-
45
- // thanks: https://gist.github.com/funfunction/91b5876a5f562e1e352aed0fcabc3858
@@ -3,14 +3,18 @@ const timeInLoop = require('./timeInLoop')
3
3
 
4
4
  describe('timeInLoop', () => {
5
5
  it('timeInLoop(desc string, loopCount number, fn function) -> y undefined', async () => {
6
- const y = timeInLoop('hey', 1e5, () => 'hey')
7
- assert.strictEqual(y, undefined)
6
+ const result = timeInLoop('hey', 1e5, () => 'hey')
7
+ assert.equal(result.description, 'hey')
8
+ assert.equal(result.loopCount, 1e5)
9
+ assert.equal(typeof result.duration, 'number')
8
10
  })
9
11
 
10
12
  it('timeInLoop.async(desc string, loopCount number, fn function) -> y undefined', async () => {
11
13
  const p = timeInLoop.async('asyncHey', 1e5, async () => 'asyncHey')
12
14
  assert(p instanceof Promise)
13
- const y = await p
14
- assert.strictEqual(y, undefined)
15
+ const result = await p
16
+ assert.equal(result.description, 'asyncHey')
17
+ assert.equal(result.loopCount, 1e5)
18
+ assert.equal(typeof result.duration, 'number')
15
19
  })
16
20
  })
package/any.js DELETED
@@ -1,82 +0,0 @@
1
- const isArray = require('./_internal/isArray')
2
- const objectValues = require('./_internal/objectValues')
3
- const arrayAny = require('./_internal/arrayAny')
4
- const iteratorAny = require('./_internal/iteratorAny')
5
- const asyncIteratorAny = require('./_internal/asyncIteratorAny')
6
- const reducerAny = require('./_internal/reducerAny')
7
- const symbolIterator = require('./_internal/symbolIterator')
8
- const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
9
-
10
- /**
11
- * @name any
12
- *
13
- * @synopsis
14
- * ```coffeescript [specscript]
15
- * type Foldable = Iterable|AsyncIterable|Object
16
- *
17
- * any(predicate function)(collection Foldable) -> result Promise|boolean
18
- * ```
19
- *
20
- * @description
21
- * Test a predicate concurrently across all items of a collection, returning true if any executions return truthy.
22
- *
23
- * ```javascript [playground]
24
- * const isOdd = number => number % 2 == 1
25
- *
26
- * console.log(
27
- * any(isOdd)([1, 2, 3, 4, 5]),
28
- * ) // true
29
- * ```
30
- *
31
- * The collection can be any iterable, async iterable, or object values iterable collection. Below is an example of `any` accepting an async generator as the collection.
32
- *
33
- * ```javascript [playground]
34
- * const toTodosUrl = id => 'https://jsonplaceholder.typicode.com/todos/' + id
35
- *
36
- * const fetchedToJson = fetched => fetched.json()
37
- *
38
- * const fetchTodo = pipe([
39
- * toTodosUrl,
40
- * fetch,
41
- * fetchedToJson,
42
- * ])
43
- *
44
- * const todoIDsGenerator = async function* () {
45
- * yield 1; yield 2; yield 3; yield 4; yield 5
46
- * }
47
- *
48
- * any(pipe([
49
- * fetchTodo,
50
- * todo => todo.title.startsWith('fugiat'),
51
- * ]))(todoIDsGenerator()).then(console.log) // true
52
- * ```
53
- *
54
- * @execution concurrent
55
- *
56
- * @muxing
57
- *
58
- * @related or
59
- */
60
- const any = predicate => function anyTruthy(value) {
61
- if (isArray(value)) {
62
- return arrayAny(value, predicate)
63
- }
64
- if (value == null) {
65
- return predicate(value)
66
- }
67
- if (typeof value[symbolIterator] == 'function') {
68
- return iteratorAny(value[symbolIterator](), predicate)
69
- }
70
- if (typeof value[symbolAsyncIterator] == 'function') {
71
- return asyncIteratorAny(value[symbolAsyncIterator](), predicate, new Set())
72
- }
73
- if (typeof value.reduce == 'function') {
74
- return value.reduce(reducerAny(predicate), false)
75
- }
76
- if (value.constructor == Object) {
77
- return arrayAny(objectValues(value), predicate)
78
- }
79
- return predicate(value)
80
- }
81
-
82
- module.exports = any
package/dist/__.min.mjs DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const __=Symbol.for("placeholder");export default __;
package/dist/all.min.mjs DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const isArray=Array.isArray,__=Symbol.for("placeholder"),curry3ResolveArg0=(r,e,t)=>function(o){return r(o,e,t)},curry3ResolveArg1=(r,e,t)=>function(o){return r(e,o,t)},curry3ResolveArg2=(r,e,t)=>function(o){return r(e,t,o)},curry3=function(r,e,t,o){return e==__?curry3ResolveArg0(r,t,o):t==__?curry3ResolveArg1(r,e,o):curry3ResolveArg2(r,e,t)},isPromise=r=>null!=r&&"function"==typeof r.then,promiseAll=Promise.all.bind(Promise),callPropUnary=(r,e,t)=>r[e](t),arrayAll=function(r,e){const t=r.length,o=[];let n=-1;for(;++n<t;){const t=e(r[n]);if(isPromise(t))o.push(t);else if(!t)return!1}return 0==o.length||promiseAll(o).then(curry3(callPropUnary,__,"every",Boolean))},iteratorAll=function(r,e){const t=[];for(const o of r){const r=e(o);if(isPromise(r))t.push(r);else if(!r)return!1}return 0==t.length||promiseAll(t).then(curry3(callPropUnary,__,"every",Boolean))},SelfReferencingPromise=function(r){const e=r.then((r=>[r,e]));return e},promiseRace=Promise.race.bind(Promise),asyncIteratorAll=async function(r,e,t,o=20){let n=await r.next();for(;!n.done;){if(t.size>=o){const[r,e]=await promiseRace(t);if(t.delete(e),!r)return!1}const l=e(n.value);if(isPromise(l))t.add(SelfReferencingPromise(l));else if(!l)return!1;n=await r.next()}for(;t.size>0;){const[r,e]=await promiseRace(t);if(t.delete(e),!r)return!1}return!0},objectValues=Object.values,reducerAllSync=(r,e,t)=>!!e&&r(t),reducerAll=r=>function(e,t){return!1!==e&&(isPromise(e)?e.then(curry3(reducerAllSync,r,__,t)):!!e&&r(t))},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,all=r=>function(e){return isArray(e)?arrayAll(e,r):null==e?r(e):"function"==typeof e[symbolIterator]?iteratorAll(e[symbolIterator](),r):"function"==typeof e[symbolAsyncIterator]?asyncIteratorAll(e[symbolAsyncIterator](),r,new Set):"function"==typeof e.reduce?e.reduce(reducerAll(r),!0):e.constructor==Object?arrayAll(objectValues(e),r):r(e)};export default all;
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const always=a=>function(){return a};export default always;
package/dist/and.min.mjs DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const isPromise=n=>null!=n&&"function"==typeof n.then,__=Symbol.for("placeholder"),curry3ResolveArg0=(n,r,t)=>function(e){return n(e,r,t)},curry3ResolveArg1=(n,r,t)=>function(e){return n(r,e,t)},curry3ResolveArg2=(n,r,t)=>function(e){return n(r,t,e)},curry3=function(n,r,t,e){return r==__?curry3ResolveArg0(n,t,e):t==__?curry3ResolveArg1(n,r,e):curry3ResolveArg2(n,r,t)},thunkConditional=(n,r,t)=>n?r():t(),areAllValuesNonfunctions=function(n){const r=n.length;let t=-1;for(;++t<r;)if("function"==typeof n[t])return!1;return!0},thunkify2=(n,r,t)=>function(){return n(r,t)},thunkify3=(n,r,t,e)=>function(){return n(r,t,e)},always=n=>function(){return n},areAllNonfunctionsTruthy=function(n,r){const t=n.length;for(;++r<t;){let t=n[r];if(isPromise(t))return t.then(curry3(thunkConditional,__,thunkify2(areAllNonfunctionsTruthy,n,r),always(!1)));if(!t)return!1}return!0},asyncArePredicatesAllTruthy=async function(n,r,t){const e=n.length;for(;++t<e;){let e=n[t];if("function"==typeof e&&(e=e(r)),isPromise(e)&&(e=await e),!e)return!1}return!0},and=n=>areAllValuesNonfunctions(n)?areAllNonfunctionsTruthy(n,-1):function(r){const t=n.length;let e=-1;for(;++e<t;){let t=n[e];if("function"==typeof t&&(t=t(r)),isPromise(t))return t.then(curry3(thunkConditional,__,thunkify3(asyncArePredicatesAllTruthy,n,r,e),always(!1)));if(!t)return!1}return!0};export default and;
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const isArray=Array.isArray,objectValues=Object.values,SelfReferencingPromise=function(r){const e=r.then((r=>[r,e]));return e},isPromise=r=>null!=r&&"function"==typeof r.then,promiseRace=Promise.race.bind(Promise),asyncArrayAny=async function(r,e,n,t){const o=r.length;for(;++n<o;){const o=e(r[n]);if(isPromise(o))t.add(SelfReferencingPromise(o));else if(o)return!0}for(;t.size>0;){const[r,e]=await promiseRace(t);if(t.delete(e),r)return!0}return!1},arrayAny=function(r,e){const n=r.length;let t=-1;for(;++t<n;){const n=e(r[t]);if(isPromise(n))return asyncArrayAny(r,e,t,new Set([SelfReferencingPromise(n)]));if(n)return!0}return!1},asyncIteratorAny=async function(r,e,n,t=20){let o=r.next();for(isPromise(o)&&(o=await o);!o.done;){if(n.size>=t){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}const i=e(o.value);if(isPromise(i))n.add(SelfReferencingPromise(i));else if(i)return!0;o=r.next(),isPromise(o)&&(o=await o)}for(;n.size>0;){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}return!1},iteratorAny=function(r,e){for(const n of r){const t=e(n);if(isPromise(t))return asyncIteratorAny(r,e,new Set([SelfReferencingPromise(t)]));if(t)return!0}return!1},reducerAnySync=r=>function(e,n){return!!e||r(n)},__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},reducerAny=r=>function(e,n){return!0===e?e:isPromise(e)?e.then((t=reducerAnySync(r),i=n,(o=__)==__?curry2ResolveArg0(t,i):curry2ResolveArg1(t,o))):!!e||r(n);var t,o,i},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,any=r=>function(e){return isArray(e)?arrayAny(e,r):null==e?r(e):"function"==typeof e[symbolIterator]?iteratorAny(e[symbolIterator](),r):"function"==typeof e[symbolAsyncIterator]?asyncIteratorAny(e[symbolAsyncIterator](),r,new Set):"function"==typeof e.reduce?e.reduce(reducerAny(r),!1):e.constructor==Object?arrayAny(objectValues(e),r):r(e)};export default any;
package/dist/any.min.js DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
-
8
- !function(t,n){"object"==typeof module?module.exports=n:"function"==typeof define?define((()=>n)):t.any=n}("object"==typeof globalThis?globalThis:this,function(){"use strict";const t=Array.isArray,n=Object.values,e=function(t){const n=t.then((t=>[t,n]));return n},r=t=>null!=t&&"function"==typeof t.then,o=Promise.race.bind(Promise),i=async function(t,n,i,u){const f=t.length;for(;++i<f;){const o=n(t[i]);if(r(o))u.add(e(o));else if(o)return!0}for(;u.size>0;){const[t,n]=await o(u);if(u.delete(n),t)return!0}return!1},u=function(t,n){const o=t.length;let u=-1;for(;++u<o;){const o=n(t[u]);if(r(o))return i(t,n,u,new Set([e(o)]));if(o)return!0}return!1},f=async function(t,n,i,u=20){let f=t.next();for(r(f)&&(f=await f);!f.done;){if(i.size>=u){const[t,n]=await o(i);if(i.delete(n),t)return!0}const c=n(f.value);if(r(c))i.add(e(c));else if(c)return!0;f=t.next(),r(f)&&(f=await f)}for(;i.size>0;){const[t,n]=await o(i);if(i.delete(n),t)return!0}return!1},c=Symbol.for("placeholder"),s=t=>function(n,e){return!0===n?n:r(n)?n.then((o=(t=>function(n,e){return!!n||t(e)})(t),u=e,(i=c)==c?((t,n)=>function(e){return t(e,n)})(o,u):((t,n)=>function(e){return t(n,e)})(o,i))):!!n||t(e);var o,i,u},a=Symbol.iterator,l=Symbol.asyncIterator;return o=>function(i){return t(i)?u(i,o):null==i?o(i):"function"==typeof i[a]?function(t,n){for(const o of t){const i=n(o);if(r(i))return f(t,n,new Set([e(i)]));if(i)return!0}return!1}(i[a](),o):"function"==typeof i[l]?f(i[l](),o,new Set):"function"==typeof i.reduce?i.reduce(s(o),!1):i.constructor==Object?u(n(i),o):o(i)}}());
package/dist/any.min.mjs DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const isArray=Array.isArray,objectValues=Object.values,SelfReferencingPromise=function(r){const e=r.then((r=>[r,e]));return e},isPromise=r=>null!=r&&"function"==typeof r.then,promiseRace=Promise.race.bind(Promise),asyncArrayAny=async function(r,e,n,t){const o=r.length;for(;++n<o;){const o=e(r[n]);if(isPromise(o))t.add(SelfReferencingPromise(o));else if(o)return!0}for(;t.size>0;){const[r,e]=await promiseRace(t);if(t.delete(e),r)return!0}return!1},arrayAny=function(r,e){const n=r.length;let t=-1;for(;++t<n;){const n=e(r[t]);if(isPromise(n))return asyncArrayAny(r,e,t,new Set([SelfReferencingPromise(n)]));if(n)return!0}return!1},asyncIteratorAny=async function(r,e,n,t=20){let o=r.next();for(isPromise(o)&&(o=await o);!o.done;){if(n.size>=t){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}const i=e(o.value);if(isPromise(i))n.add(SelfReferencingPromise(i));else if(i)return!0;o=r.next(),isPromise(o)&&(o=await o)}for(;n.size>0;){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}return!1},iteratorAny=function(r,e){for(const n of r){const t=e(n);if(isPromise(t))return asyncIteratorAny(r,e,new Set([SelfReferencingPromise(t)]));if(t)return!0}return!1},reducerAnySync=r=>function(e,n){return!!e||r(n)},__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},reducerAny=r=>function(e,n){return!0===e?e:isPromise(e)?e.then((t=reducerAnySync(r),i=n,(o=__)==__?curry2ResolveArg0(t,i):curry2ResolveArg1(t,o))):!!e||r(n);var t,o,i},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,any=r=>function(e){return isArray(e)?arrayAny(e,r):null==e?r(e):"function"==typeof e[symbolIterator]?iteratorAny(e[symbolIterator](),r):"function"==typeof e[symbolAsyncIterator]?asyncIteratorAny(e[symbolAsyncIterator](),r,new Set):"function"==typeof e.reduce?e.reduce(reducerAny(r),!1):e.constructor==Object?arrayAny(objectValues(e),r):r(e)};export default any;
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const isPromise=r=>null!=r&&"function"==typeof r.then,objectAssign=Object.assign,__=Symbol.for("placeholder"),curry3ResolveArg0=(r,n,e)=>function(t){return r(t,n,e)},curry3ResolveArg1=(r,n,e)=>function(t){return r(n,t,e)},curry3ResolveArg2=(r,n,e)=>function(t){return r(n,e,t)},curry3=function(r,n,e,t){return n==__?curry3ResolveArg0(r,e,t):e==__?curry3ResolveArg1(r,n,t):curry3ResolveArg2(r,n,e)},always=r=>function(){return r},promiseAll=Promise.all.bind(Promise),objectSet=function(r,n,e){return r[n]=e,r},funcObjectAll=r=>function(...n){const e={},t=[];for(const o in r){const c=r[o](...n);isPromise(c)?t.push(c.then(curry3(objectSet,e,o,__))):e[o]=c}return 0==t.length?e:promiseAll(t).then((o=e,function(){return o}));var o},assign=function(r){const n=funcObjectAll(r);return function(r){const e=n(r);return isPromise(e)?e.then(curry3(objectAssign,{},r,__)):{...r,...e}}};export default assign;
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const __=Symbol.for("placeholder"),_curryArity=(r,t,u)=>function(...n){const y=u.length,c=n.length,e=[];let i=-1,o=-1,f=0;for(;++i<y;){const y=u[i];if(y==__&&(o+=1)<c){const r=n[o];r==__&&(f+=1),e.push(r)}else e.push(y);if(e.length==r)return 0==f?t(...e):curryArity(r,t,e)}for(;++o<c;){const u=n[o];if(u==__&&(f+=1),e.push(u),e.length==r)return 0==f?t(...e):curryArity(r,t,e)}return curryArity(r,t,e)},curryArity=function(r,t,u){const n=u.length;if(n<r)return _curryArity(r,t,u);let y=-1;for(;++y<n;){if(u[y]==__)return _curryArity(r,t,u)}return t(...u)},curry=(r,...t)=>curryArity(r.length,r,t);curry.arity=function(r,t,...u){return curryArity(r,t,u)};export default curry;
package/dist/eq.min.mjs DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const spread2=e=>function([r,n]){return e(r,n)},isPromise=e=>null!=e&&"function"==typeof e.then,promiseAll=Promise.all.bind(Promise),sameValueZero=function(e,r){return e===r||e!=e&&r!=r},__=Symbol.for("placeholder"),curry2ResolveArg0=(e,r)=>function(n){return e(n,r)},curry2ResolveArg1=(e,r)=>function(n){return e(r,n)},curry2=function(e,r,n){return r==__?curry2ResolveArg0(e,n):curry2ResolveArg1(e,r)},always=e=>function(){return e},eq=function(e,r){const n="function"==typeof e,o="function"==typeof r;return n&&o?function(n){const o=e(n),u=r(n),t=isPromise(o),s=isPromise(u);return t&&s?promiseAll([o,u]).then((c=sameValueZero,function([e,r]){return c(e,r)})):t?o.then(curry2(sameValueZero,__,u)):s?u.then(curry2(sameValueZero,o,__)):sameValueZero(o,u);var c}:n?function(n){const o=e(n);return isPromise(o)?o.then(curry2(sameValueZero,__,r)):sameValueZero(o,r)}:o?function(n){const o=r(n);return isPromise(o)?o.then(curry2(sameValueZero,e,__)):sameValueZero(e,o)}:sameValueZero(e,r)};export default eq;
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const __=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)},symbolIterator=Symbol.iterator,FilteringIterator=(r,t)=>({[symbolIterator](){return this},next(){let n=r.next();for(;!n.done;){const{value:e}=n;if(t(e))return{value:e,done:!1};n=r.next()}return n}}),isPromise=r=>null!=r&&"function"==typeof r.then,symbolAsyncIterator=Symbol.asyncIterator,FilteringAsyncIterator=(r,t)=>({isAsyncIteratorDone:!1,[symbolAsyncIterator](){return this},async next(){for(;!this.isAsyncIteratorDone;){const{value:n,done:e}=await r.next();if(e)this.isAsyncIteratorDone=!0;else{const r=t(n);if(isPromise(r)?await r:r)return{value:n,done:!1}}}return{value:void 0,done:!0}}}),isArray=Array.isArray,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,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)},promiseAll=Promise.all.bind(Promise),arrayExtendMap=function(r,t,n,e){const o=t.length;let i=r.length-1;for(;++e<o;)r[++i]=n(t[e],e,r);return r},arrayFilterByConditions=function(r,t,n,e){const o=r.length;let i=-1;for(;++n<o;)e[++i]&&t.push(r[n]);return t},arrayFilter=function(r,t){const n=r.length,e=[];let o=-1,i=-1;for(;++o<n;){const n=r[o],c=t(n);if(isPromise(c))return promiseAll(arrayExtendMap([c],r,t,o)).then(curry4(arrayFilterByConditions,r,e,o-1,__));c&&(e[++i]=n)}return e},generatorFunctionFilter=(r,t)=>function*(...n){yield*FilteringIterator(r(...n),t)},asyncGeneratorFunctionFilter=(r,t)=>async function*(...n){yield*FilteringAsyncIterator(r(...n),t)},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)},thunkify2=(r,t,n)=>function(){return r(t,n)},thunkConditional=(r,t,n)=>r?t():n(),always=r=>function(){return r},reducerFilter=(r,t)=>function(n,e){const o=t(e);return isPromise(o)?o.then(curry3(thunkConditional,__,(i=r,c=n,u=e,function(){return i(c,u)}),always(n))):o?r(n,e):n;var i,c,u},callPropUnary=(r,t,n)=>r[t](n),stringFilter=function(r,t){const n=arrayFilter(r,t);return isPromise(n)?n.then(curry3(callPropUnary,__,"join","")):n.join("")},thunkify1=(r,t)=>function(){return r(t)},noop=function(){},setFilter=function(r,t){const n=new Set,e=n.add.bind(n),o=[];for(const i of r){const c=t(i,i,r);isPromise(c)?o.push(c.then(curry3(thunkConditional,__,thunkify1(e,i),noop))):c&&n.add(i)}return 0==o.length?n:promiseAll(o).then(always(n))},thunkify4=(r,t,n,e,o)=>function(){return r(t,n,e,o)},callPropBinary=(r,t,n,e)=>r[t](n,e),mapFilter=function(r,t){const n=new Map,e=[];for(const[o,i]of r){const c=t(i,o,r);isPromise(c)?e.push(c.then(curry3(thunkConditional,__,thunkify4(callPropBinary,n,"set",o,i),noop))):c&&n.set(o,i)}return 0==e.length?n:promiseAll(e).then(always(n))},objectSetIf=function(r,t,n,e){e&&(r[t]=n)},objectFilter=function(r,t){const n={},e=[];for(const o in r){const i=r[o],c=t(i,o,r);isPromise(c)?e.push(c.then(curry4(objectSetIf,n,o,r[o],__))):c&&(n[o]=i)}return 0==e.length?n:promiseAll(e).then(always(n))},arrayExtendMapWithIndex=function(r,t,n,e){const o=t.length;let i=r.length-1;for(;++e<o;)r[++i]=n(t[e],e,t);return r},arrayFilterWithIndex=function(r,t){const n=r.length,e=[];let o=-1,i=-1;for(;++o<n;){const n=r[o],c=t(n,o,r);if(isPromise(c))return promiseAll(arrayExtendMapWithIndex([c],r,t,o)).then(curry4(arrayFilterByConditions,r,e,o-1,__));c&&(e[++i]=n)}return e},_filter=function(r,t){return isArray(r)?arrayFilter(r,t):"function"==typeof r?isGeneratorFunction(r)?generatorFunctionFilter(r,t):isAsyncGeneratorFunction(r)?asyncGeneratorFunctionFilter(r,t):reducerFilter(r,t):null==r?r:"string"==typeof r||r.constructor==String?stringFilter(r,t):r.constructor==Set?setFilter(r,t):r.constructor==Map?mapFilter(r,t):"function"==typeof r.filter?r.filter(t):"function"==typeof r[symbolIterator]?FilteringIterator(r[symbolIterator](),t):"function"==typeof r[symbolAsyncIterator]?FilteringAsyncIterator(r[symbolAsyncIterator](),t):r.constructor==Object?objectFilter(r,t):r},filter=function(...r){const t=r.pop();return r.length>0?_filter(r[0],t):(n=_filter,o=t,(e=__)==__?curry2ResolveArg0(n,o):curry2ResolveArg1(n,e));var n,e,o};filter.withIndex=r=>function(t){if(isArray(t))return arrayFilterWithIndex(t,r);throw new TypeError(`${t} is not an Array`)};export default filter;