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/lt.js CHANGED
@@ -1,26 +1,25 @@
1
- const spread2 = require('./_internal/spread2')
2
- const isPromise = require('./_internal/isPromise')
3
- const promiseAll = require('./_internal/promiseAll')
1
+ const ComparisonOperator = require('./_internal/ComparisonOperator')
4
2
  const lessThan = require('./_internal/lessThan')
5
- const curry2 = require('./_internal/curry2')
6
- const always = require('./_internal/always')
7
- const __ = require('./_internal/placeholder')
8
3
 
9
4
  /**
10
5
  * @name lt
11
6
  *
12
7
  * @synopsis
13
8
  * ```coffeescript [specscript]
14
- * lt(leftValue any, rightValue any) -> boolean
15
- * lt(leftValue any, right function)(value any) -> Promise|boolean
16
- * lt(left function, rightValue any)(value any) -> Promise|boolean
17
- * lt(left function, right function)(value any) -> Promise|boolean
9
+ * lt(leftValue Promise|any, rightValue Promise|any) -> boolean
10
+ *
11
+ * lt(leftValue Promise|any, right function)(...args) -> Promise|boolean
12
+ * lt(...args, leftValue Promise|any, right function) -> Promise|boolean
13
+ *
14
+ * lt(left function, rightValue Promise|any)(...args) -> Promise|boolean
15
+ * lt(...args, left function, rightValue Promise|any) -> Promise|boolean
16
+ *
17
+ * lt(left function, right function)(...args) -> Promise|boolean
18
+ * lt(...args, left function, right function) -> Promise|boolean
18
19
  * ```
19
20
  *
20
21
  * @description
21
- * Test if a left value is less than (`<`) a right value. Either parameter may be an actual value.
22
- *
23
- * If both arguments are values, `lt` eagerly computes and returns a boolean value.
22
+ * Test if a value is less than (`<`) another value.
24
23
  *
25
24
  * ```javascript [playground]
26
25
  * console.log(lt(1, 3)) // true
@@ -28,60 +27,18 @@ const __ = require('./_internal/placeholder')
28
27
  * console.log(lt(4, 3)) // false
29
28
  * ```
30
29
  *
31
- * If both arguments are functions, `lt` treats those functions as argument resolvers and returns a function that first resolves its arguments by the argument resolvers before making the comparison.
32
- *
33
- * If only one argument is a function, `lt` still returns a function that resolves its arguments by the argument resolver, treating the value (non function) argument as an already resolved value for comparison.
30
+ * If either of the two values are resolver functions, `lt` returns a function that resolves the values to compare from its arguments.
34
31
  *
35
32
  * ```javascript [playground]
36
33
  * const identity = value => value
37
34
  *
38
35
  * const isLessThan3 = lt(identity, 3)
39
36
  *
40
- * console.log(isLessThan3(1), true)
41
- * console.log(isLessThan3(3), false)
42
- * console.log(isLessThan3(5), false)
37
+ * console.log(isLessThan3(1)) // true
38
+ * console.log(isLessThan3(3)) // false
39
+ * console.log(isLessThan3(5)) // false
43
40
  * ```
44
41
  */
45
- const lt = function (left, right) {
46
- const isLeftResolver = typeof left == 'function',
47
- isRightResolver = typeof right == 'function'
48
-
49
- if (isLeftResolver && isRightResolver) {
50
- return function lessThanBy(value) {
51
- const leftResolve = left(value),
52
- rightResolve = right(value)
53
- const isLeftPromise = isPromise(leftResolve),
54
- isRightPromise = isPromise(rightResolve)
55
- if (isLeftPromise && isRightPromise) {
56
- return promiseAll(
57
- [leftResolve, rightResolve]).then(spread2(lessThan))
58
- } else if (isLeftPromise) {
59
- return leftResolve.then(curry2(lessThan, __, rightResolve))
60
- } else if (isRightPromise) {
61
- return rightResolve.then(curry2(lessThan, leftResolve, __))
62
- }
63
- return leftResolve < rightResolve
64
- }
65
- }
66
-
67
- if (isLeftResolver) {
68
- return function lessThanBy(value) {
69
- const leftResolve = left(value)
70
- return isPromise(leftResolve)
71
- ? leftResolve.then(curry2(lessThan, __, right))
72
- : leftResolve < right
73
- }
74
- }
75
- if (isRightResolver) {
76
- return function lessThanBy(value) {
77
- const rightResolve = right(value)
78
- return isPromise(rightResolve)
79
- ? rightResolve.then(curry2(lessThan, left, __))
80
- : left < rightResolve
81
- }
82
- }
83
-
84
- return left < right
85
- }
42
+ const lt = ComparisonOperator(lessThan)
86
43
 
87
44
  module.exports = lt
package/lte.js CHANGED
@@ -1,26 +1,25 @@
1
- const spread2 = require('./_internal/spread2')
2
- const isPromise = require('./_internal/isPromise')
3
- const promiseAll = require('./_internal/promiseAll')
1
+ const ComparisonOperator = require('./_internal/ComparisonOperator')
4
2
  const lessThanOrEqual = require('./_internal/lessThanOrEqual')
5
- const curry2 = require('./_internal/curry2')
6
- const always = require('./_internal/always')
7
- const __ = require('./_internal/placeholder')
8
3
 
9
4
  /**
10
5
  * @name lte
11
6
  *
12
7
  * @synopsis
13
8
  * ```coffeescript [specscript]
14
- * lte(leftValue any, rightValue any) -> boolean
15
- * lte(leftValue any, right function)(value any) -> Promise|boolean
16
- * lte(left function, rightValue any)(value any) -> Promise|boolean
17
- * lte(left function, right function)(value any) -> Promise|boolean
9
+ * lte(leftValue Promise|any, rightValue Promise|any) -> boolean
10
+ *
11
+ * lte(leftValue Promise|any, right function)(...args) -> Promise|boolean
12
+ * lte(...args, leftValue Promise|any, right function) -> Promise|boolean
13
+ *
14
+ * lte(left function, rightValue Promise|any)(...args) -> Promise|boolean
15
+ * lte(...args, left function, rightValue Promise|any) -> Promise|boolean
16
+ *
17
+ * lte(left function, right function)(...args) -> Promise|boolean
18
+ * lte(...args, left function, right function) -> Promise|boolean
18
19
  * ```
19
20
  *
20
21
  * @description
21
- * Test if a left value is less than or equal (`<=`) to a right value. Either parameter may be an actual value.
22
- *
23
- * If both arguments are values, `lte` eagerly computes and returns a boolean value.
22
+ * Test if a value is less than or equal (`<=`) to another value.
24
23
  *
25
24
  * ```javascript [playground]
26
25
  * console.log(lte(1, 3)) // true
@@ -28,9 +27,7 @@ const __ = require('./_internal/placeholder')
28
27
  * console.log(lte(4, 3)) // false
29
28
  * ```
30
29
  *
31
- * If both arguments are functions, `lte` treats those functions as argument resolvers and returns a function that first resolves its arguments by the argument resolvers before making the comparison.
32
- *
33
- * If only one argument is a function, `lte` still returns a function that resolves its arguments by the argument resolver, treating the value (non function) argument as an already resolved value for comparison.
30
+ * If either of the two values are resolver functions, `lte` returns a function that resolves the values to compare from its arguments.
34
31
  *
35
32
  * ```javascript [playground]
36
33
  * const identity = value => value
@@ -42,46 +39,6 @@ const __ = require('./_internal/placeholder')
42
39
  * console.log(isLessThanOrEqualTo3(5), false)
43
40
  * ```
44
41
  */
45
- const lte = function (left, right) {
46
- const isLeftResolver = typeof left == 'function',
47
- isRightResolver = typeof right == 'function'
48
-
49
- if (isLeftResolver && isRightResolver) {
50
- return function lessThanOrEqualBy(value) {
51
- const leftResolve = left(value),
52
- rightResolve = right(value)
53
- const isLeftPromise = isPromise(leftResolve),
54
- isRightPromise = isPromise(rightResolve)
55
- if (isLeftPromise && isRightPromise) {
56
- return promiseAll(
57
- [leftResolve, rightResolve]).then(spread2(lessThanOrEqual))
58
- } else if (isLeftPromise) {
59
- return leftResolve.then(curry2(lessThanOrEqual, __, rightResolve))
60
- } else if (isRightPromise) {
61
- return rightResolve.then(curry2(lessThanOrEqual, leftResolve, __))
62
- }
63
- return leftResolve <= rightResolve
64
- }
65
- }
66
-
67
- if (isLeftResolver) {
68
- return function lessThanOrEqualBy(value) {
69
- const leftResolve = left(value)
70
- return isPromise(leftResolve)
71
- ? leftResolve.then(curry2(lessThanOrEqual, __, right))
72
- : leftResolve <= right
73
- }
74
- }
75
- if (isRightResolver) {
76
- return function lessThanOrEqualBy(value) {
77
- const rightResolve = right(value)
78
- return isPromise(rightResolve)
79
- ? rightResolve.then(curry2(lessThanOrEqual, left, __))
80
- : left <= rightResolve
81
- }
82
- }
83
-
84
- return left <= right
85
- }
42
+ const lte = ComparisonOperator(lessThanOrEqual)
86
43
 
87
44
  module.exports = lte
package/map.js CHANGED
@@ -1,23 +1,17 @@
1
+ const isPromise = require('./_internal/isPromise')
1
2
  const MappingIterator = require('./_internal/MappingIterator')
2
3
  const MappingAsyncIterator = require('./_internal/MappingAsyncIterator')
3
4
  const __ = require('./_internal/placeholder')
4
5
  const curry2 = require('./_internal/curry2')
5
6
  const isArray = require('./_internal/isArray')
6
7
  const isObject = require('./_internal/isObject')
7
- const isGeneratorFunction = require('./_internal/isGeneratorFunction')
8
- const isAsyncGeneratorFunction = require('./_internal/isAsyncGeneratorFunction')
9
8
  const arrayMap = require('./_internal/arrayMap')
10
- const generatorFunctionMap = require('./_internal/generatorFunctionMap')
11
- const asyncGeneratorFunctionMap = require('./_internal/asyncGeneratorFunctionMap')
12
- const reducerMap = require('./_internal/reducerMap')
13
9
  const stringMap = require('./_internal/stringMap')
14
10
  const setMap = require('./_internal/setMap')
15
11
  const mapMap = require('./_internal/mapMap')
16
12
  const objectMap = require('./_internal/objectMap')
17
13
  const arrayMapSeries = require('./_internal/arrayMapSeries')
18
14
  const arrayMapPool = require('./_internal/arrayMapPool')
19
- const arrayMapWithIndex = require('./_internal/arrayMapWithIndex')
20
- const objectMapOwn = require('./_internal/objectMapOwn')
21
15
  const objectMapEntries = require('./_internal/objectMapEntries')
22
16
  const mapMapEntries = require('./_internal/mapMapEntries')
23
17
  const symbolIterator = require('./_internal/symbolIterator')
@@ -69,15 +63,6 @@ const _map = function (value, mapper) {
69
63
  if (isArray(value)) {
70
64
  return arrayMap(value, mapper)
71
65
  }
72
- if (typeof value == 'function') {
73
- if (isGeneratorFunction(value)) {
74
- return generatorFunctionMap(value, mapper)
75
- }
76
- if (isAsyncGeneratorFunction(value)) {
77
- return asyncGeneratorFunctionMap(value, mapper)
78
- }
79
- return reducerMap(value, mapper)
80
- }
81
66
  if (value == null) {
82
67
  return value
83
68
  }
@@ -285,10 +270,15 @@ const _map = function (value, mapper) {
285
270
 
286
271
  const map = (...args) => {
287
272
  const mapper = args.pop()
288
- if (args.length > 0) {
289
- return _map(args[0], mapper)
273
+ if (args.length == 0) {
274
+ return curry2(_map, __, mapper)
290
275
  }
291
- return curry2(_map, __, mapper)
276
+
277
+ const collection = args[0]
278
+ if (isPromise(collection)) {
279
+ return collection.then(curry2(_map, __, mapper))
280
+ }
281
+ return _map(collection, mapper)
292
282
  }
293
283
 
294
284
  /**
@@ -407,79 +397,4 @@ map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
407
397
  throw new TypeError(`${value} is not an Array`)
408
398
  }
409
399
 
410
- /**
411
- * @name map.withIndex
412
- *
413
- * @synopsis
414
- * ```coffeescript [specscript]
415
- * map.withIndex(
416
- * indexedMapperFunc (item any, index numberl, array Array)=>Promise|any,
417
- * )(array Array) -> result Promise|Array
418
- * ```
419
- *
420
- * @description
421
- * `map` with an indexed mapper.
422
- *
423
- * ```javascript [playground]
424
- * const range = length =>
425
- * map.withIndex((_, index) => index + 1)(Array(length))
426
- *
427
- * console.log(range(5)) // [1, 2, 3, 4, 5]
428
- * ```
429
- *
430
- * @execution concurrent
431
- *
432
- * @related
433
- * map, filter.withIndex
434
- *
435
- * @DEPRECATED
436
- */
437
- map.withIndex = mapper => function mappingWithIndex(value) {
438
- if (isArray(value)) {
439
- return arrayMapWithIndex(value, mapper)
440
- }
441
- throw new TypeError(`${value} is not an Array`)
442
- }
443
-
444
- /**
445
- * @name map.own
446
- *
447
- * @synopsis
448
- * ```coffeescript [specscript]
449
- * map.own(
450
- * mapperFunc (item any)=>Promise|any,
451
- * )(object Object) -> result Promise|Object
452
- * ```
453
- *
454
- * @description
455
- * Applies a mapper function concurrently to an object's own values, returning an object of results. Mapper may be asynchronous.
456
- * Guards mapping by validating that each property is the object's own and not inherited from the prototype chain.
457
- *
458
- * ```javascript [playground]
459
- * const Person = function (name) {
460
- * this.name = name
461
- * }
462
- *
463
- * Person.prototype.greet = function () {}
464
- *
465
- * const david = new Person('david')
466
- * david.a = 1
467
- * david.b = 2
468
- * david.c = 3
469
- *
470
- * const square = number => number ** 2
471
- * console.log(
472
- * map.own(square)(david)
473
- * ) // { name: NaN, a: 1, b: 4, c: 9 }
474
- * ```
475
- *
476
- * @DEPRECATED
477
- */
478
- map.own = mapper => function mappingOwnProperties(value) {
479
- if (isObject(value) && !isArray(value)) {
480
- return objectMapOwn(value, mapper)
481
- }
482
- throw new TypeError(`${value} is not an Object`)
483
- }
484
-
485
400
  module.exports = map
@@ -15,7 +15,7 @@ const asyncGenerator = async function*(i) {
15
15
  yield 3
16
16
  }
17
17
 
18
- void (async () => {
18
+ setImmediate(async () => {
19
19
  let i = 0, maxHeapUsed = 0
20
20
  while (i < iterations) {
21
21
  const p = reduce((a, b) => a + b, 0)(asyncGenerator(i))
@@ -35,6 +35,6 @@ void (async () => {
35
35
  }
36
36
 
37
37
  console.log('maxHeapUsed (MiB)', maxHeapUsed / 1024 / 1024)
38
- })()
38
+ })
39
39
 
40
40
  // https://stackoverflow.com/questions/62336381/is-this-promise-cancellation-implementation-for-reducing-an-async-iterable-on-th
package/not.js CHANGED
@@ -1,7 +1,18 @@
1
+ const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
1
2
  const isPromise = require('./_internal/isPromise')
3
+ const promiseAll = require('./_internal/promiseAll')
4
+ const __ = require('./_internal/placeholder')
5
+ const curry2 = require('./_internal/curry2')
6
+ const curryArgs2 = require('./_internal/curryArgs2')
2
7
 
3
- // true -> false
4
- const _not = value => !value
8
+ // negate(value boolean) -> inverse boolean
9
+ const negate = value => !value
10
+
11
+ // _not(args Array, predicate function)
12
+ const _not = function (args, predicate) {
13
+ const boolean = predicate(...args)
14
+ return isPromise(boolean) ? boolean.then(negate) : !boolean
15
+ }
5
16
 
6
17
  /**
7
18
  * @name not
@@ -10,7 +21,9 @@ const _not = value => !value
10
21
  * ```coffeescript [specscript]
11
22
  * not(value boolean) -> negated boolean
12
23
  *
13
- * not(predicate function)(...args) -> negatedPredicateResult boolean
24
+ * not(...args, predicate function) -> negated boolean
25
+ *
26
+ * not(predicate function)(...args) -> negated boolean
14
27
  * ```
15
28
  *
16
29
  * @description
@@ -33,50 +46,19 @@ const _not = value => !value
33
46
  * ) // false
34
47
  * ```
35
48
  */
36
- const not = function (funcOrValue) {
37
- if (typeof funcOrValue == 'function') {
38
- return function logicalInverter(value) {
39
- const boolean = funcOrValue(value)
40
- return isPromise(boolean) ? boolean.then(_not) : !boolean
49
+
50
+ const not = function (...args) {
51
+ const predicateOrValue = args.pop()
52
+ if (typeof predicateOrValue == 'function') {
53
+ if (args.length == 0) {
54
+ return curryArgs2(_not, __, predicateOrValue)
41
55
  }
56
+ if (areAnyValuesPromises(args)) {
57
+ return promiseAll(args).then(curry2(_not, __, predicateOrValue))
58
+ }
59
+ return _not(args, predicateOrValue)
42
60
  }
43
- return !funcOrValue
61
+ return !predicateOrValue
44
62
  }
45
63
 
46
- /**
47
- * @name notSync
48
- *
49
- * @synopsis
50
- * ```coffeescript [specscript]
51
- * notSync(func ...any=>boolean) -> negated ...any=>boolean
52
- * ```
53
- */
54
- const notSync = func => function notSync(...args) {
55
- return !func(...args)
56
- }
57
-
58
- /**
59
- * @name not.sync
60
- *
61
- * @synopsis
62
- * ```coffeescript [specscript]
63
- * var args ...any,
64
- * syncPredicate ...args=>boolean
65
- *
66
- * not.sync(syncPredicate)(...args) -> boolean
67
- * ```
68
- *
69
- * @description
70
- * `not` without promise handling.
71
- *
72
- * ```javascript [playground]
73
- * const isOdd = number => number % 2 == 1
74
- *
75
- * console.log(
76
- * not.sync(isOdd)(2),
77
- * ) // true
78
- * ```
79
- */
80
- not.sync = notSync
81
-
82
64
  module.exports = not
package/omit.js CHANGED
@@ -1,3 +1,4 @@
1
+ const isPromise = require('./_internal/isPromise')
1
2
  const deleteByPath = require('./_internal/deleteByPath')
2
3
  const copyDeep = require('./_internal/copyDeep')
3
4
  const curry2 = require('./_internal/curry2')
@@ -66,6 +67,9 @@ const omit = function (arg0, arg1) {
66
67
  if (arg1 == null) {
67
68
  return curry2(_omit, __, arg0)
68
69
  }
70
+ if (isPromise(arg0)) {
71
+ return arg0.then(curry2(_omit, __, arg1))
72
+ }
69
73
  return _omit(arg0, arg1)
70
74
  }
71
75
 
package/or.js CHANGED
@@ -1,6 +1,10 @@
1
+ const promiseAll = require('./_internal/promiseAll')
1
2
  const isPromise = require('./_internal/isPromise')
2
- const curry3 = require('./_internal/curry3')
3
+ const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
3
4
  const __ = require('./_internal/placeholder')
5
+ const curry2 = require('./_internal/curry2')
6
+ const curry3 = require('./_internal/curry3')
7
+ const curryArgs2 = require('./_internal/curryArgs2')
4
8
  const thunkConditional = require('./_internal/thunkConditional')
5
9
  const areAllValuesNonfunctions = require('./_internal/areAllValuesNonfunctions')
6
10
  const thunkify2 = require('./_internal/thunkify2')
@@ -18,7 +22,7 @@ const always = require('./_internal/always')
18
22
  const areAnyNonfunctionsTruthy = function (predicates, index) {
19
23
  const length = predicates.length
20
24
  while (++index < length) {
21
- let predicate = predicates[index]
25
+ const predicate = predicates[index]
22
26
  if (isPromise(predicate)) {
23
27
  return predicate.then(curry3(
24
28
  thunkConditional,
@@ -40,20 +44,19 @@ const areAnyNonfunctionsTruthy = function (predicates, index) {
40
44
  * @synopsis
41
45
  * ```coffeescript [specscript]
42
46
  * asyncAreAnyPredicatesTruthy(
47
+ * args Array,
43
48
  * predicates Array<predicate function|nonfunction>,
44
- * point any,
45
49
  * index number,
46
50
  * ) -> allTruthy boolean
47
51
  * ```
48
52
  */
49
- const asyncAreAnyPredicatesTruthy = async function (predicates, point, index) {
53
+ const asyncAreAnyPredicatesTruthy = async function (args, predicates, index) {
50
54
  const length = predicates.length
51
55
  while (++index < length) {
52
56
  let predicate = predicates[index]
53
57
  if (typeof predicate == 'function') {
54
- predicate = predicate(point)
58
+ predicate = predicate(...args)
55
59
  }
56
- console.log('hey - or', predicate)
57
60
  if (isPromise(predicate)) {
58
61
  predicate = await predicate
59
62
  }
@@ -64,6 +67,31 @@ const asyncAreAnyPredicatesTruthy = async function (predicates, point, index) {
64
67
  return false
65
68
  }
66
69
 
70
+ // areAnyPredicatesTruthy(args Array, predicates Array<function>) -> Promise|boolean
71
+ const areAnyPredicatesTruthy = function (args, predicates) {
72
+ const length = predicates.length
73
+ let index = -1
74
+
75
+ while (++index < length) {
76
+ let predicate = predicates[index]
77
+ if (typeof predicate == 'function') {
78
+ predicate = predicate(...args)
79
+ }
80
+ if (isPromise(predicate)) {
81
+ return predicate.then(curry3(
82
+ thunkConditional,
83
+ __,
84
+ always(true),
85
+ thunkify3(asyncAreAnyPredicatesTruthy, args, predicates, index),
86
+ ))
87
+ }
88
+ if (predicate) {
89
+ return true
90
+ }
91
+ }
92
+ return false
93
+ }
94
+
67
95
  /**
68
96
  * @name or
69
97
  *
@@ -71,9 +99,9 @@ const asyncAreAnyPredicatesTruthy = async function (predicates, point, index) {
71
99
  * ```coffeescript [specscript]
72
100
  * or(values Array<boolean>) -> result boolean
73
101
  *
74
- * or(
75
- * predicatesOrValues Array<function|boolean>
76
- * )(value any) -> result Promise|boolean
102
+ * or(...args, predicatesOrValues Array<function|boolean>) -> Promise|boolean
103
+ *
104
+ * or(predicatesOrValues Array<function|boolean>)(...args) -> Promise|boolean
77
105
  * ```
78
106
  *
79
107
  * @description
@@ -105,33 +133,22 @@ const asyncAreAnyPredicatesTruthy = async function (predicates, point, index) {
105
133
  *
106
134
  * @note ...args slows down here by an order of magnitude
107
135
  */
108
- const or = predicates => {
109
- if (areAllValuesNonfunctions(predicates)) {
110
- return areAnyNonfunctionsTruthy(predicates, -1)
136
+ const or = function (...args) {
137
+ const predicatesOrValues = args.pop()
138
+ if (areAllValuesNonfunctions(predicatesOrValues)) {
139
+ return areAnyNonfunctionsTruthy(predicatesOrValues, -1)
111
140
  }
112
- return function areAnyPredicatesTruthy(point) {
113
- const length = predicates.length
114
- let index = -1
115
141
 
116
- while (++index < length) {
117
- let predicate = predicates[index]
118
- if (typeof predicate == 'function') {
119
- predicate = predicate(point)
120
- }
121
- if (isPromise(predicate)) {
122
- return predicate.then(curry3(
123
- thunkConditional,
124
- __,
125
- always(true),
126
- thunkify3(asyncAreAnyPredicatesTruthy, predicates, point, index),
127
- ))
128
- }
129
- if (predicate) {
130
- return true
131
- }
132
- }
133
- return false
142
+ if (args.length == 0) {
143
+ return curryArgs2(areAnyPredicatesTruthy, __, predicatesOrValues)
134
144
  }
145
+
146
+ if (areAnyValuesPromises(args)) {
147
+ return promiseAll(args)
148
+ .then(curry2(areAnyPredicatesTruthy, __, predicatesOrValues))
149
+ }
150
+
151
+ return areAnyPredicatesTruthy(args, predicatesOrValues)
135
152
  }
136
153
 
137
154
  module.exports = or
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rubico",
3
- "version": "1.9.7",
3
+ "version": "2.0.1",
4
4
  "description": "[a]synchronous functional programming",
5
5
  "author": "Richard Tong",
6
6
  "license": "MIT",
@@ -33,23 +33,23 @@
33
33
  "operator"
34
34
  ],
35
35
  "devDependencies": {
36
+ "async": "^3.2.4",
36
37
  "bluebird": "^3.7.2",
37
38
  "codecov": "^3.7.1",
38
39
  "eslint": "^8.4.1",
39
40
  "fantasy-land": "^4.1.0",
40
- "lodash": "^4.17.19",
41
+ "lodash": "^4.17.21",
41
42
  "mocha": "^7.2.0",
42
43
  "node-fetch": "^2.6.1",
43
44
  "nyc": "^15.1.0",
44
- "ramda": "^0.27.1",
45
+ "ramda": "^0.29.0",
45
46
  "terser": "^5.10.0",
46
47
  "thunk-test": "latest"
47
48
  },
48
49
  "scripts": {
49
- "test": "mocha test.js x/*.test.js monad/*.test.js",
50
+ "test": "mocha test.js *.test.js */**.test.js",
50
51
  "test-coverage": "nyc mocha test.js x/*.test.js monad/*.test.js",
51
- "lint": "eslint _internal rubico.js x monad",
52
- "lint-fix": "eslint --fix _internal rubico.js x monad",
53
- "build": "node distributor.js"
52
+ "lint": "eslint .",
53
+ "build": "./build"
54
54
  }
55
55
  }
package/pick.js CHANGED
@@ -1,3 +1,4 @@
1
+ const isPromise = require('./_internal/isPromise')
1
2
  const getByPath = require('./_internal/getByPath')
2
3
  const setByPath = require('./_internal/setByPath')
3
4
  const curry2 = require('./_internal/curry2')
@@ -62,10 +63,13 @@ const _pick = function (source, keys) {
62
63
  * ])
63
64
  * ```
64
65
  */
65
- const pick = (arg0, arg1) => {
66
+ const pick = function (arg0, arg1) {
66
67
  if (arg1 == null) {
67
68
  return curry2(_pick, __, arg0)
68
69
  }
70
+ if (isPromise(arg0)) {
71
+ return arg0.then(curry2(_pick, __, arg1))
72
+ }
69
73
  return _pick(arg0, arg1)
70
74
  }
71
75