ramda-adjunct 5.0.0 → 5.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 (406) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -1
  3. package/dist/RA.node.js +10444 -452
  4. package/dist/RA.node.min.js +1 -1
  5. package/dist/RA.web.js +10444 -452
  6. package/dist/RA.web.min.js +1 -1
  7. package/dist/RA.web.standalone.js +18665 -447
  8. package/dist/RA.web.standalone.min.js +1 -1
  9. package/dist/package.json +1 -0
  10. package/es/copyKeys.js +1 -1
  11. package/es/dispatch.js +5 -5
  12. package/es/fantasy-land/Identity.js +3 -3
  13. package/es/fantasy-land/traits.js +1 -1
  14. package/es/flattenDepth.js +5 -5
  15. package/es/internal/ponyfills/Array.from.js +5 -5
  16. package/es/internal/ponyfills/Promise.allSettled.js +5 -5
  17. package/es/internal/ponyfills/Promise.any.js +15 -15
  18. package/es/lastP.js +5 -5
  19. package/es/reduceP.js +4 -4
  20. package/es/reduceRightP.js +4 -4
  21. package/es/renameKey.js +1 -1
  22. package/es/sortByProps.js +5 -5
  23. package/lib/allEqual.js +1 -1
  24. package/lib/allIdentical.js +1 -1
  25. package/lib/allSettledP.js +1 -1
  26. package/lib/allUnique.js +1 -1
  27. package/lib/anyP.js +1 -1
  28. package/lib/argsPass.js +1 -1
  29. package/lib/async.js +1 -1
  30. package/lib/cata.js +1 -1
  31. package/lib/compact.js +1 -1
  32. package/lib/concatAll.js +1 -1
  33. package/lib/copyKeys.js +2 -2
  34. package/lib/curryRight.js +1 -1
  35. package/lib/delayP.js +1 -1
  36. package/lib/dispatch.js +6 -6
  37. package/lib/ensureArray.js +1 -1
  38. package/lib/escapeRegExp.js +1 -1
  39. package/lib/fantasy-land/Identity.js +3 -3
  40. package/lib/fantasy-land/traits.js +2 -2
  41. package/lib/flattenDepth.js +6 -6
  42. package/lib/flattenProp.js +1 -1
  43. package/lib/fnull.js +1 -1
  44. package/lib/index.js +1 -1
  45. package/lib/internal/ap.js +1 -1
  46. package/lib/internal/isCoercible.js +1 -1
  47. package/lib/internal/makeFlat.js +1 -1
  48. package/lib/internal/ponyfills/Array.from.js +6 -6
  49. package/lib/internal/ponyfills/Math.trunc.js +1 -1
  50. package/lib/internal/ponyfills/Number.isFinite.js +1 -1
  51. package/lib/internal/ponyfills/Number.isInteger.js +1 -1
  52. package/lib/internal/ponyfills/Number.isNaN.js +1 -1
  53. package/lib/internal/ponyfills/Number.isSafeInteger.js +1 -1
  54. package/lib/internal/ponyfills/Promise.allSettled.js +6 -6
  55. package/lib/internal/ponyfills/Promise.any.js +16 -16
  56. package/lib/internal/ponyfills/String.padEnd.js +1 -1
  57. package/lib/internal/ponyfills/String.padStart.js +1 -1
  58. package/lib/internal/ponyfills/String.repeat.js +1 -1
  59. package/lib/internal/ponyfills/String.replaceAll.js +1 -1
  60. package/lib/invoke.js +1 -1
  61. package/lib/invokeArgs.js +1 -1
  62. package/lib/isArray.js +1 -1
  63. package/lib/isArrayLike.js +1 -1
  64. package/lib/isBlank.js +1 -1
  65. package/lib/isEmptyArray.js +1 -1
  66. package/lib/isEven.js +1 -1
  67. package/lib/isFalsy.js +1 -1
  68. package/lib/isFinite.js +1 -1
  69. package/lib/isFloat.js +1 -1
  70. package/lib/isFunction.js +1 -1
  71. package/lib/isIndexed.js +1 -1
  72. package/lib/isInteger.js +1 -1
  73. package/lib/isInteger32.js +1 -1
  74. package/lib/isIterable.js +1 -1
  75. package/lib/isNaN.js +1 -1
  76. package/lib/isNaturalNumber.js +1 -1
  77. package/lib/isNegative.js +1 -1
  78. package/lib/isNonEmptyArray.js +1 -1
  79. package/lib/isNonEmptyString.js +1 -1
  80. package/lib/isNonNegative.js +1 -1
  81. package/lib/isNonPositive.js +1 -1
  82. package/lib/isNotArray.js +1 -1
  83. package/lib/isNotArrayLike.js +1 -1
  84. package/lib/isNotAsyncFunction.js +1 -1
  85. package/lib/isNotBoolean.js +1 -1
  86. package/lib/isNotDate.js +1 -1
  87. package/lib/isNotFinite.js +1 -1
  88. package/lib/isNotFloat.js +1 -1
  89. package/lib/isNotFunction.js +1 -1
  90. package/lib/isNotGeneratorFunction.js +1 -1
  91. package/lib/isNotInteger.js +1 -1
  92. package/lib/isNotMap.js +1 -1
  93. package/lib/isNotNaN.js +1 -1
  94. package/lib/isNotNilOrEmpty.js +1 -1
  95. package/lib/isNotNull.js +1 -1
  96. package/lib/isNotNumber.js +1 -1
  97. package/lib/isNotObj.js +1 -1
  98. package/lib/isNotObjLike.js +1 -1
  99. package/lib/isNotPair.js +1 -1
  100. package/lib/isNotPlainObj.js +1 -1
  101. package/lib/isNotPrimitive.js +1 -1
  102. package/lib/isNotRegExp.js +1 -1
  103. package/lib/isNotSet.js +1 -1
  104. package/lib/isNotString.js +1 -1
  105. package/lib/isNotUndefined.js +1 -1
  106. package/lib/isNotValidDate.js +1 -1
  107. package/lib/isNotValidNumber.js +1 -1
  108. package/lib/isObj.js +1 -1
  109. package/lib/isObjLike.js +1 -1
  110. package/lib/isOdd.js +1 -1
  111. package/lib/isPair.js +1 -1
  112. package/lib/isPlainObj.js +1 -1
  113. package/lib/isPositive.js +1 -1
  114. package/lib/isPrimitive.js +1 -1
  115. package/lib/isPromise.js +1 -1
  116. package/lib/isPrototypeOf.js +1 -1
  117. package/lib/isSafeInteger.js +1 -1
  118. package/lib/isSentinelValue.js +1 -1
  119. package/lib/isSparseArray.js +1 -1
  120. package/lib/isThenable.js +1 -1
  121. package/lib/isUinteger32.js +1 -1
  122. package/lib/isUndefined.js +1 -1
  123. package/lib/isValidDate.js +1 -1
  124. package/lib/isValidNumber.js +1 -1
  125. package/lib/lastP.js +6 -6
  126. package/lib/lengthEq.js +1 -1
  127. package/lib/lengthGt.js +1 -1
  128. package/lib/lengthGte.js +1 -1
  129. package/lib/lengthLt.js +1 -1
  130. package/lib/lengthLte.js +1 -1
  131. package/lib/lengthNotEq.js +1 -1
  132. package/lib/lensNotEq.js +1 -1
  133. package/lib/lensNotSatisfy.js +1 -1
  134. package/lib/lensSatisfies.js +1 -1
  135. package/lib/lensTraverse.js +1 -1
  136. package/lib/liftF.js +1 -1
  137. package/lib/liftFN.js +1 -1
  138. package/lib/mergePaths.js +1 -1
  139. package/lib/mergeProp.js +1 -1
  140. package/lib/noneP.js +1 -1
  141. package/lib/noop.js +1 -1
  142. package/lib/notAllUnique.js +1 -1
  143. package/lib/padCharsEnd.js +1 -1
  144. package/lib/padCharsStart.js +1 -1
  145. package/lib/padEnd.js +1 -1
  146. package/lib/padStart.js +1 -1
  147. package/lib/rangeStep.js +1 -1
  148. package/lib/reduceP.js +5 -5
  149. package/lib/reduceRightP.js +5 -5
  150. package/lib/renameKey.js +2 -2
  151. package/lib/renameKeyWith.js +1 -1
  152. package/lib/renameKeys.js +1 -1
  153. package/lib/repeatStr.js +1 -1
  154. package/lib/replaceAll.js +1 -1
  155. package/lib/sign.js +1 -1
  156. package/lib/sortByProp.js +1 -1
  157. package/lib/sortByProps.js +5 -5
  158. package/lib/spreadProp.js +1 -1
  159. package/lib/toArray.js +1 -1
  160. package/lib/toNumber.js +1 -1
  161. package/lib/trimCharsEnd.js +1 -1
  162. package/lib/trimCharsStart.js +1 -1
  163. package/lib/trimEnd.js +1 -1
  164. package/lib/trimStart.js +1 -1
  165. package/lib/trunc.js +1 -1
  166. package/lib/unzipObjWith.js +1 -1
  167. package/package.json +22 -19
  168. package/babel.config.cjs +0 -56
  169. package/src/Y.js +0 -32
  170. package/src/allEqual.js +0 -28
  171. package/src/allEqualTo.js +0 -25
  172. package/src/allIdentical.js +0 -26
  173. package/src/allIdenticalTo.js +0 -25
  174. package/src/allP.js +0 -27
  175. package/src/allSettledP.js +0 -34
  176. package/src/allUnique.js +0 -25
  177. package/src/anyP.js +0 -33
  178. package/src/appendFlipped.js +0 -24
  179. package/src/argsPass.js +0 -40
  180. package/src/async.js +0 -60
  181. package/src/cata.js +0 -86
  182. package/src/catchP.js +0 -25
  183. package/src/ceil.js +0 -28
  184. package/src/compact.js +0 -23
  185. package/src/concatAll.js +0 -35
  186. package/src/concatRight.js +0 -30
  187. package/src/copyKeys.js +0 -31
  188. package/src/curryRight.js +0 -26
  189. package/src/curryRightN.js +0 -29
  190. package/src/defaultWhen.js +0 -26
  191. package/src/delayP.js +0 -45
  192. package/src/dispatch.js +0 -74
  193. package/src/divideNum.js +0 -20
  194. package/src/dropArgs.js +0 -23
  195. package/src/ensureArray.js +0 -24
  196. package/src/escapeRegExp.js +0 -22
  197. package/src/fantasy-land/Identity.js +0 -270
  198. package/src/fantasy-land/mapping.js +0 -20
  199. package/src/fantasy-land/traits.js +0 -57
  200. package/src/fantasy-land/util.js +0 -23
  201. package/src/filterIndexed.js +0 -28
  202. package/src/findOr.js +0 -30
  203. package/src/flattenDepth.js +0 -39
  204. package/src/flattenPath.js +0 -28
  205. package/src/flattenProp.js +0 -28
  206. package/src/floor.js +0 -27
  207. package/src/fnull.js +0 -38
  208. package/src/inRange.js +0 -34
  209. package/src/included.js +0 -28
  210. package/src/index.js +0 -241
  211. package/src/internal/ap.js +0 -30
  212. package/src/internal/compareLength.js +0 -7
  213. package/src/internal/isCoercible.js +0 -12
  214. package/src/internal/isOfTypeObject.js +0 -3
  215. package/src/internal/makeFlat.js +0 -42
  216. package/src/internal/ponyfills/Array.from.js +0 -34
  217. package/src/internal/ponyfills/Math.sign.js +0 -3
  218. package/src/internal/ponyfills/Math.trunc.js +0 -14
  219. package/src/internal/ponyfills/Number.MAX_SAFE_INTEGER.js +0 -3
  220. package/src/internal/ponyfills/Number.MIN_SAFE_INTEGER.js +0 -3
  221. package/src/internal/ponyfills/Number.isFinite.js +0 -8
  222. package/src/internal/ponyfills/Number.isInteger.js +0 -10
  223. package/src/internal/ponyfills/Number.isNaN.js +0 -8
  224. package/src/internal/ponyfills/Number.isSafeInteger.js +0 -11
  225. package/src/internal/ponyfills/Promise.allSettled.js +0 -18
  226. package/src/internal/ponyfills/Promise.any.js +0 -29
  227. package/src/internal/ponyfills/String.padEnd.js +0 -25
  228. package/src/internal/ponyfills/String.padStart.js +0 -27
  229. package/src/internal/ponyfills/String.repeat.js +0 -49
  230. package/src/internal/ponyfills/String.replaceAll.js +0 -44
  231. package/src/internal/ponyfills/String.trimEnd.js +0 -5
  232. package/src/internal/ponyfills/String.trimStart.js +0 -5
  233. package/src/invoke.js +0 -22
  234. package/src/invokeArgs.js +0 -36
  235. package/src/isArray.js +0 -27
  236. package/src/isArrayLike.js +0 -79
  237. package/src/isAsyncFunction.js +0 -23
  238. package/src/isBigInt.js +0 -24
  239. package/src/isBlank.js +0 -33
  240. package/src/isBoolean.js +0 -22
  241. package/src/isDate.js +0 -21
  242. package/src/isEmptyArray.js +0 -28
  243. package/src/isEmptyString.js +0 -28
  244. package/src/isError.js +0 -21
  245. package/src/isEven.js +0 -31
  246. package/src/isFalse.js +0 -31
  247. package/src/isFalsy.js +0 -28
  248. package/src/isFinite.js +0 -37
  249. package/src/isFloat.js +0 -36
  250. package/src/isFunction.js +0 -32
  251. package/src/isGeneratorFunction.js +0 -26
  252. package/src/isIndexed.js +0 -24
  253. package/src/isInteger.js +0 -40
  254. package/src/isInteger32.js +0 -28
  255. package/src/isIterable.js +0 -37
  256. package/src/isMap.js +0 -25
  257. package/src/isNaN.js +0 -45
  258. package/src/isNaturalNumber.js +0 -28
  259. package/src/isNegative.js +0 -27
  260. package/src/isNegativeZero.js +0 -23
  261. package/src/isNilOrEmpty.js +0 -26
  262. package/src/isNonEmptyArray.js +0 -28
  263. package/src/isNonEmptyString.js +0 -31
  264. package/src/isNonNegative.js +0 -30
  265. package/src/isNonPositive.js +0 -30
  266. package/src/isNotArray.js +0 -24
  267. package/src/isNotArrayLike.js +0 -26
  268. package/src/isNotAsyncFunction.js +0 -27
  269. package/src/isNotBoolean.js +0 -24
  270. package/src/isNotDate.js +0 -23
  271. package/src/isNotFinite.js +0 -31
  272. package/src/isNotFloat.js +0 -35
  273. package/src/isNotFunction.js +0 -29
  274. package/src/isNotGeneratorFunction.js +0 -27
  275. package/src/isNotInteger.js +0 -36
  276. package/src/isNotMap.js +0 -27
  277. package/src/isNotNaN.js +0 -37
  278. package/src/isNotNil.js +0 -23
  279. package/src/isNotNilOrEmpty.js +0 -28
  280. package/src/isNotNull.js +0 -24
  281. package/src/isNotNumber.js +0 -25
  282. package/src/isNotObj.js +0 -29
  283. package/src/isNotObjLike.js +0 -29
  284. package/src/isNotPair.js +0 -27
  285. package/src/isNotPlainObj.js +0 -35
  286. package/src/isNotPrimitive.js +0 -26
  287. package/src/isNotRegExp.js +0 -24
  288. package/src/isNotSet.js +0 -26
  289. package/src/isNotString.js +0 -23
  290. package/src/isNotUndefined.js +0 -24
  291. package/src/isNotValidDate.js +0 -24
  292. package/src/isNotValidNumber.js +0 -27
  293. package/src/isNull.js +0 -22
  294. package/src/isNumber.js +0 -24
  295. package/src/isObj.js +0 -31
  296. package/src/isObjLike.js +0 -30
  297. package/src/isOdd.js +0 -29
  298. package/src/isPair.js +0 -27
  299. package/src/isPlainObj.js +0 -65
  300. package/src/isPositive.js +0 -26
  301. package/src/isPositiveZero.js +0 -23
  302. package/src/isPrimitive.js +0 -46
  303. package/src/isPromise.js +0 -32
  304. package/src/isPrototypeOf.js +0 -36
  305. package/src/isRegExp.js +0 -22
  306. package/src/isSafeInteger.js +0 -40
  307. package/src/isSentinelValue.js +0 -26
  308. package/src/isSet.js +0 -24
  309. package/src/isSparseArray.js +0 -43
  310. package/src/isString.js +0 -21
  311. package/src/isSymbol.js +0 -29
  312. package/src/isThenable.js +0 -28
  313. package/src/isTrue.js +0 -27
  314. package/src/isTruthy.js +0 -28
  315. package/src/isUinteger32.js +0 -29
  316. package/src/isUndefined.js +0 -24
  317. package/src/isValidDate.js +0 -29
  318. package/src/isValidNumber.js +0 -28
  319. package/src/lastP.js +0 -54
  320. package/src/lengthEq.js +0 -24
  321. package/src/lengthGt.js +0 -24
  322. package/src/lengthGte.js +0 -26
  323. package/src/lengthLt.js +0 -24
  324. package/src/lengthLte.js +0 -25
  325. package/src/lengthNotEq.js +0 -24
  326. package/src/lensEq.js +0 -28
  327. package/src/lensIso.js +0 -51
  328. package/src/lensNotEq.js +0 -28
  329. package/src/lensNotSatisfy.js +0 -30
  330. package/src/lensSatisfies.js +0 -33
  331. package/src/lensTraverse.js +0 -56
  332. package/src/liftF.js +0 -37
  333. package/src/liftFN.js +0 -45
  334. package/src/list.js +0 -20
  335. package/src/mapIndexed.js +0 -27
  336. package/src/mergePath.js +0 -30
  337. package/src/mergePaths.js +0 -29
  338. package/src/mergeProp.js +0 -30
  339. package/src/mergeProps.js +0 -27
  340. package/src/move.js +0 -26
  341. package/src/nand.js +0 -27
  342. package/src/neither.js +0 -38
  343. package/src/noneP.js +0 -35
  344. package/src/nonePass.js +0 -32
  345. package/src/noop.js +0 -21
  346. package/src/nor.js +0 -28
  347. package/src/notAllPass.js +0 -32
  348. package/src/notAllUnique.js +0 -25
  349. package/src/notBoth.js +0 -38
  350. package/src/notEqual.js +0 -31
  351. package/src/omitBy.js +0 -25
  352. package/src/omitIndexes.js +0 -27
  353. package/src/overlaps.js +0 -30
  354. package/src/padCharsEnd.js +0 -37
  355. package/src/padCharsStart.js +0 -35
  356. package/src/padEnd.js +0 -25
  357. package/src/padStart.js +0 -23
  358. package/src/pathNotEq.js +0 -31
  359. package/src/pathOrLazy.js +0 -30
  360. package/src/paths.js +0 -26
  361. package/src/pickIndexes.js +0 -30
  362. package/src/propNotEq.js +0 -30
  363. package/src/rangeStep.js +0 -37
  364. package/src/reduceIndexed.js +0 -31
  365. package/src/reduceP.js +0 -96
  366. package/src/reduceRightP.js +0 -101
  367. package/src/rejectP.js +0 -24
  368. package/src/renameKey.js +0 -33
  369. package/src/renameKeyWith.js +0 -30
  370. package/src/renameKeys.js +0 -40
  371. package/src/renameKeysWith.js +0 -27
  372. package/src/repeatStr.js +0 -30
  373. package/src/replaceAll.js +0 -35
  374. package/src/resolveP.js +0 -28
  375. package/src/round.js +0 -26
  376. package/src/seq.js +0 -38
  377. package/src/sign.js +0 -33
  378. package/src/skipTake.js +0 -33
  379. package/src/sliceFrom.js +0 -23
  380. package/src/sliceTo.js +0 -23
  381. package/src/sortByPaths.js +0 -55
  382. package/src/sortByProp.js +0 -45
  383. package/src/sortByProps.js +0 -31
  384. package/src/spreadPath.js +0 -26
  385. package/src/spreadProp.js +0 -25
  386. package/src/stubArray.js +0 -18
  387. package/src/stubNull.js +0 -19
  388. package/src/stubObj.js +0 -19
  389. package/src/stubString.js +0 -19
  390. package/src/stubUndefined.js +0 -19
  391. package/src/subtractNum.js +0 -20
  392. package/src/thenCatchP.js +0 -27
  393. package/src/toArray.js +0 -32
  394. package/src/toInteger32.js +0 -22
  395. package/src/toNumber.js +0 -24
  396. package/src/toUinteger32.js +0 -26
  397. package/src/trimCharsEnd.js +0 -25
  398. package/src/trimCharsStart.js +0 -25
  399. package/src/trimEnd.js +0 -30
  400. package/src/trimStart.js +0 -29
  401. package/src/trunc.js +0 -33
  402. package/src/unzipObjWith.js +0 -40
  403. package/src/viewOr.js +0 -32
  404. package/src/weave.js +0 -35
  405. package/src/weaveLazy.js +0 -37
  406. package/src/zipObjWith.js +0 -27
package/src/notAllPass.js DELETED
@@ -1,32 +0,0 @@
1
- import { curry, complement, compose, allPass } from 'ramda';
2
-
3
- /**
4
- * Takes a list of predicates and returns a predicate that returns true for a given list of
5
- * arguments if one or more of the provided predicates is not satisfied by those arguments. It is
6
- * the complement of Ramda's allPass.
7
- *
8
- * The function returned is a curried function whose arity matches that of the
9
- * highest-arity predicate.
10
- *
11
- * @func notAllPass
12
- * @memberOf RA
13
- * @since {@link https://char0n.github.io/ramda-adjunct/2.4.0|v2.4.0}
14
- * @category Logic
15
- * @sig [(*... -> Boolean)] -> (*... -> Boolean)
16
- * @param {Array} predicates An array of predicates to check
17
- * @return {Function} The combined predicate
18
- * @see {@link http://ramdajs.com/docs/#allPass|R.allPass}
19
- * @example
20
- *
21
- * const gt10 = R.gt(R.__, 10)
22
- * const even = (x) => x % 2 === 0;
23
- * const f = RA.notAllPass([gt10, even]);
24
- *
25
- * f(12); //=> false
26
- * f(8); //=> true
27
- * f(11); //=> true
28
- * f(9); //=> true
29
- */
30
- const notAllPass = curry(compose(complement, allPass));
31
-
32
- export default notAllPass;
@@ -1,25 +0,0 @@
1
- import { complement } from 'ramda';
2
-
3
- import allUnique from './allUnique.js';
4
-
5
- /**
6
- * Returns true if at least one item of the list is repeated. `R.equals` is used to determine equality.
7
- *
8
- * @func notAllUnique
9
- * @memberOf RA
10
- * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}
11
- * @category List
12
- * @sig [a] -> Boolean
13
- * @param {Array} list The list of values
14
- * @return {boolean}
15
- * @see {@link RA.allUnique|allUnique}, {@link https://ramdajs.com/docs/#equals|equals}
16
- * @example
17
- *
18
- * RA.notAllUnique([ 1, 1, 2, 3 ]); //=> true
19
- * RA.notAllUnique([ 1, 2, 3, 4 ]); //=> false
20
- * RA.notAllUnique([]); //=> false
21
- *
22
- */
23
- const notAllUnique = complement(allUnique);
24
-
25
- export default notAllUnique;
package/src/notBoth.js DELETED
@@ -1,38 +0,0 @@
1
- import { curry, compose, complement, both } from 'ramda';
2
-
3
- /* eslint-disable max-len */
4
- /**
5
- * A function which calls the two provided functions and returns the complement of `&&`ing the
6
- * results.
7
- * It returns true if the first function is false-y and the complement of the second function
8
- * otherwise. Note that this is short-circuited, meaning that the second function will not be
9
- * invoked if the first returns a false-y value. In short it will return true unless both predicates
10
- * return true.
11
- *
12
- * In addition to functions, `RA.notBoth` also accepts any fantasy-land compatible
13
- * applicative functor.
14
- *
15
- * @func notBoth
16
- * @memberOf RA
17
- * @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}
18
- * @category Logic
19
- * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)
20
- * @param {Function} f A predicate
21
- * @param {Function} g Another predicate
22
- * @return {Function} Returns a function that applies its arguments to `f` and `g` and returns the complement of `&&`ing their outputs together.
23
- * @see {@link http://ramdajs.com/docs/#both|R.both}
24
- * @example
25
- *
26
- * const gt10 = R.gt(R.__, 10)
27
- * const even = (x) => x % 2 === 0;
28
- * const f = RA.notBoth(gt10, even);
29
- *
30
- * f(12); //=> false
31
- * f(8); //=> true
32
- * f(11); //=> true
33
- * f(9); //=> true
34
- */
35
- /* eslint-enable max-len */
36
- const notBoth = curry(compose(complement, both));
37
-
38
- export default notBoth;
package/src/notEqual.js DELETED
@@ -1,31 +0,0 @@
1
- import { complement, equals } from 'ramda';
2
-
3
- /**
4
- * Returns `true` if its arguments are not equivalent, `false` otherwise. Handles
5
- * cyclical data structures.
6
- *
7
- * Dispatches symmetrically to the `equals` methods of both arguments, if
8
- * present.
9
- *
10
- * @func notEqual
11
- * @memberOf RA
12
- * @since {@link https://char0n.github.io/ramda-adjunct/2.29.0|v2.29.0}
13
- * @category Relation
14
- * @sig a -> b -> Boolean
15
- * @param {*} a
16
- * @param {*} b
17
- * @return {Boolean}
18
- * @see {@link https://ramdajs.com/docs/#equals|equals}
19
- * @example
20
- *
21
- * RA.notEqual(1, 1); //=> false
22
- * RA.notEqual(1, '1'); //=> true
23
- * RA.notEqual([1, 2, 3], [1, 2, 3]); //=> false
24
- *
25
- * const a = {}; a.v = a;
26
- * const b = {}; b.v = b;
27
- * RA.notEqual(a, b); //=> false
28
- */
29
- const notEqual = complement(equals);
30
-
31
- export default notEqual;
package/src/omitBy.js DELETED
@@ -1,25 +0,0 @@
1
- import { complement, identity, pickBy, useWith } from 'ramda';
2
-
3
- /* eslint-disable max-len */
4
- /**
5
- * Returns a partial copy of an object containing only the keys
6
- * that don't satisfy the supplied predicate.
7
- *
8
- * @func omitBy
9
- * @memberOf RA
10
- * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}
11
- * @category Object
12
- * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v}
13
- * @param {!Function} pred A predicate to determine whether or not a key should be included on the output object
14
- * @param {!Object} obj The object to copy from
15
- * @return {!Object} A new object only with properties that don't satisfy `pred`
16
- *
17
- * @example
18
- *
19
- * const isLowerCase = (val, key) => key.toLowerCase() === key;
20
- * RA.omitBy(isLowerCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4}
21
- */
22
- /* eslint-enable max-len */
23
- const omitBy = useWith(pickBy, [complement, identity]);
24
-
25
- export default omitBy;
@@ -1,27 +0,0 @@
1
- import { includes, curry, addIndex, reject } from 'ramda';
2
-
3
- // helpers
4
- const rejectIndexed = addIndex(reject);
5
- const containsIndex = curry((indexes, val, index) => includes(index, indexes));
6
-
7
- /**
8
- * Returns a partial copy of an array omitting the indexes specified.
9
- *
10
- * @func omitIndexes
11
- * @memberOf RA
12
- * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0}
13
- * @category List
14
- * @sig [Int] -> [a] -> [a]
15
- * @see {@link http://ramdajs.com/docs/#omit|R.omit}, {@link RA.pickIndexes|pickIndexes}
16
- * @param {!Array} indexes The array of indexes to omit from the new array
17
- * @param {!Array} list The array to copy from
18
- * @return {!Array} The new array with omitted indexes
19
- * @example
20
- *
21
- * RA.omitIndexes([-1, 1, 3], ['a', 'b', 'c', 'd']); //=> ['a', 'c']
22
- */
23
- const omitIndexes = curry((indexes, list) =>
24
- rejectIndexed(containsIndex(indexes), list)
25
- );
26
-
27
- export default omitIndexes;
package/src/overlaps.js DELETED
@@ -1,30 +0,0 @@
1
- import { pipe, isNotEmpty, intersection, isEmpty, curryN } from 'ramda';
2
-
3
- /**
4
- * Returns true if two lists have at least one element common to both lists.
5
- *
6
- * @func overlaps
7
- * @memberOf RA
8
- * @category Relation
9
- * @since {@link https://char0n.github.io/ramda-adjunct/2.30.0|v2.30.0}
10
- * @sig [a] -> [a] -> Boolean
11
- * @param {Array} list1 The first list
12
- * @param {Array} list2 The second list
13
- * @return {boolean} True if two lists have at least one element common to both lists
14
- * @example
15
- *
16
- * RA.overlaps(['-v', '--verbose'], ['node', 'script.js', '-v']); //=> true
17
- * RA.overlaps(['-v', '--verbose'], []); //=> false
18
- * RA.overlaps([1, 2, 3], [3, 4, 5]); //=> true
19
- * RA.overlaps([1, 2, 3], [4, 5]); //=> false
20
- */
21
-
22
- const overlaps = curryN(2, (list1, list2) => {
23
- if (isEmpty(list1)) {
24
- return true;
25
- }
26
-
27
- return pipe(intersection, isNotEmpty)(list1, list2);
28
- });
29
-
30
- export default overlaps;
@@ -1,37 +0,0 @@
1
- import { curry, invoker, flip } from 'ramda';
2
-
3
- import ponyfill from './internal/ponyfills/String.padEnd.js';
4
- import isFunction from './isFunction.js';
5
-
6
- export const padEndPonyfill = curry(ponyfill);
7
-
8
- export const padEndInvoker = flip(invoker(2, 'padEnd'));
9
-
10
- /**
11
- * The function pads the current string with a given string
12
- * (repeated, if needed) so that the resulting string reaches a given length.
13
- * The padding is applied from the end of the current string.
14
- *
15
- * @func padCharsEnd
16
- * @memberOf RA
17
- * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}
18
- * @category String
19
- * @sig String -> Number -> String -> String
20
- * @param {string} padString The string to pad the current string with
21
- * @param {number} targetLength The length of the resulting string once
22
- * the current string has been padded
23
- * @param {string} value String value to be padded
24
- * @return {string} A new string of the specified length with the pad string
25
- * applied at the end of the current string
26
- * @see {@link RA.padEnd|padEnd}, {@link RA.padCharsStart|padCharsStart}, {@link RA.padStart|padStart}
27
- * @example
28
- *
29
- * RA.padCharsEnd('-', 3, 'a'); // => 'a--'
30
- * RA.padCharsEnd('foo', 10, 'abc'); // => 'abcfoofoof'
31
- * RA.padCharsEnd('123456', 6, 'abc'); // => 'abc123'
32
- */
33
- const padCharsEnd = isFunction(String.prototype.padEnd)
34
- ? padEndInvoker
35
- : padEndPonyfill;
36
-
37
- export default padCharsEnd;
@@ -1,35 +0,0 @@
1
- import { flip, invoker, curry } from 'ramda';
2
-
3
- import isFunction from './isFunction.js';
4
- import ponyfill from './internal/ponyfills/String.padStart.js';
5
-
6
- export const padStartInvoker = flip(invoker(2, 'padStart'));
7
-
8
- export const padStartPonyfill = curry(ponyfill);
9
-
10
- /**
11
- * The function pads the current string with a given string
12
- * (repeated, if needed) so that the resulting string reaches a given length.
13
- * The padding is applied from the start of the current string.
14
- *
15
- * @func padCharsStart
16
- * @memberOf RA
17
- * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}
18
- * @category String
19
- * @sig String -> Number -> String -> String
20
- * @param {string} padString The string to pad the current string with
21
- * @param {number} targetLength The length of the resulting string once the current string has been padded
22
- * @param {string} value String value to be padded
23
- * @return {string} A new string of the specified length with the pad string on the start of current string
24
- * @see {@link RA.padStart|padStart}, {@link RA.padEnd|padEnd}, {@link RA.padCharsEnd|padCharsEnd}
25
- * @example
26
- *
27
- * RA.padCharsStart('-', 3, 'a'); // => '--a'
28
- * RA.padCharsStart('foo', 10, 'abc'); // => 'foofoofabc'
29
- * RA.padCharsStart('123456', 6, 'abc'); // => '123abc'
30
- */
31
- const padCharsStart = isFunction(String.prototype.padStart)
32
- ? padStartInvoker
33
- : padStartPonyfill;
34
-
35
- export default padCharsStart;
package/src/padEnd.js DELETED
@@ -1,25 +0,0 @@
1
- import padCharsEnd from './padCharsEnd.js';
2
-
3
- /**
4
- * The function pads the current string with an empty string
5
- * so that the resulting string reaches a given length.
6
- * The padding is applied from the end of the current string.
7
- *
8
- * @func padEnd
9
- * @memberOf RA
10
- * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}
11
- * @category String
12
- * @sig Number -> String -> String
13
- * @param {number} targetLength The length of the resulting string once
14
- * the current string has been padded
15
- * @param {string} value String value to be padded
16
- * @return {string} A new string of the specified length with the pad string
17
- * applied at the end of the current string
18
- * @see {@link RA.padCharsEnd|padCharsEnd}, {@link RA.padCharsStart|padCharsStart}, {@link RA.padStart|padStart}
19
- * @example
20
- *
21
- * RA.padEnd(3, 'a'); // => 'a '
22
- */
23
- const padEnd = padCharsEnd(' ');
24
-
25
- export default padEnd;
package/src/padStart.js DELETED
@@ -1,23 +0,0 @@
1
- import padCharsStart from './padCharsStart.js';
2
-
3
- /**
4
- * Pads string on the left side if it's shorter than length.
5
- *
6
- * @func padStart
7
- * @memberOf RA
8
- * @since {@link https://char0n.github.io/ramda-adjunct/2.25.0|v2.25.0}
9
- * @category String
10
- * @sig Number -> String -> String
11
- * @param {number} targetLength The length of the resulting string once
12
- * the current string has been padded
13
- * @param {string} value String value to be padded
14
- * @return {string} A new string of the specified length with the empty string
15
- * applied to the beginning of the current string
16
- * @see {@link RA.padCharsEnd|padCharsEnd}, {@link RA.padCharsStart|padCharsStart}, {@link RA.padEnd|padEnd}
17
- * @example
18
- *
19
- * RA.padStart(3, 'a'); // => ' a'
20
- */
21
- const padStart = padCharsStart(' ');
22
-
23
- export default padStart;
package/src/pathNotEq.js DELETED
@@ -1,31 +0,0 @@
1
- import { pathEq, complement } from 'ramda';
2
-
3
- /* eslint-disable max-len */
4
- /**
5
- * Determines whether a nested path on an object doesn't have a specific value,
6
- * in R.equals terms. Most likely used to filter a list.
7
- *
8
- * @func pathNotEq
9
- * @memberOf RA
10
- * @since {@link https://char0n.github.io/ramda-adjunct/2.4.0|v2.4.0}
11
- * @category Relation
12
- * @sig a => [Idx] => {a} => Boolean
13
- * @sig Idx = String | Int | Symbol
14
- * @param {a} val The value to compare the nested property with
15
- * @param {Array} path The path of the nested property to use
16
- * @param {Object} object The object to check the nested property in
17
- * @return {boolean} Returns Boolean `false` if the value equals the nested object property, `true` otherwise
18
- * @see {@link http://ramdajs.com/docs/#pathEq|R.pathEq}
19
- * @example
20
- *
21
- * const user1 = { address: { zipCode: 90210 } };
22
- * const user2 = { address: { zipCode: 55555 } };
23
- * const user3 = { name: 'Bob' };
24
- * const users = [ user1, user2, user3 ];
25
- * const isFamous = RA.pathNotEq(90210, ['address', 'zipCode']);
26
- * R.filter(isFamous, users); //=> [ user2, user3 ]
27
- */
28
- /* eslint-enable max-len */
29
- const pathNotEq = complement(pathEq);
30
-
31
- export default pathNotEq;
package/src/pathOrLazy.js DELETED
@@ -1,30 +0,0 @@
1
- import { curryN, identical, partial, pathOr, unary, when } from 'ramda';
2
-
3
- /**
4
- * If the given, non-null object has a value at the given path, returns the value at that path.
5
- * Otherwise returns the result of invoking the provided function with the object.
6
- *
7
- * @func pathOrLazy
8
- * @memberOf RA
9
- * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}
10
- * @category Object
11
- * @typedef Idx = String | Int
12
- * @sig ({a} -> a) -> [Idx] -> {a} -> a
13
- * @param {Function} defaultFn The function that will return the default value.
14
- * @param {Array} path The path to use.
15
- * @param {Object} obj The object to retrieve the nested property from.
16
- * @return {*} The data at `path` of the supplied object or the default value.
17
- * @example
18
- *
19
- * RA.pathOrLazy(() => 'N/A', ['a', 'b'], {a: {b: 2}}); //=> 2
20
- * RA.pathOrLazy(() => 'N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A"
21
- */
22
- const pathOrLazy = curryN(3, (defaultFn, path, obj) =>
23
- when(
24
- identical(defaultFn),
25
- partial(unary(defaultFn), [obj]),
26
- pathOr(defaultFn, path, obj)
27
- )
28
- );
29
-
30
- export default pathOrLazy;
package/src/paths.js DELETED
@@ -1,26 +0,0 @@
1
- import { curry, ap, path, __ } from 'ramda';
2
-
3
- /**
4
- * Acts as multiple path: arrays of paths in, array of values out. Preserves order.
5
- *
6
- * @func paths
7
- * @memberOf RA
8
- * @since {@link https://char0n.github.io/ramda-adjunct/1.2.0|v1.2.0}
9
- * @category List
10
- * @sig [[k]] -> {k: v} - [v]
11
- * @param {Array} ps The property paths to fetch
12
- * @param {Object} obj The object to query
13
- * @return {Array} The corresponding values or partially applied function
14
- * @see {@link https://github.com/ramda/ramda/wiki/Cookbook#derivative-of-rprops-for-deep-fields|Ramda Cookbook}, {@link http://ramdajs.com/docs/#props|R.props}
15
- * @example
16
- *
17
- * const obj = {
18
- * a: { b: { c: 1 } },
19
- * x: 2,
20
- * };
21
- *
22
- * RA.paths([['a', 'b', 'c'], ['x']], obj); //=> [1, 2]
23
- */
24
- const paths = curry((ps, obj) => ap([path(__, obj)], ps));
25
-
26
- export default paths;
@@ -1,30 +0,0 @@
1
- import { filter, addIndex, curry, includes } from 'ramda';
2
-
3
- // helpers
4
- const filterIndexed = addIndex(filter);
5
- const containsIndex = curry((indexes, val, index) => includes(index, indexes));
6
-
7
- /**
8
- * Picks values from list by indexes.
9
- *
10
- * Note: pickIndexes will skip non existing indexes. If you want to include them
11
- * use ramda's `props` function.
12
- *
13
- * @func pickIndexes
14
- * @memberOf RA
15
- * @since {@link https://char0n.github.io/ramda-adjunct/1.1.0|v1.1.0}
16
- * @category List
17
- * @sig [Number] -> [a] -> [a]
18
- * @param {Array} indexes The indexes to pick
19
- * @param {Array} list The list to pick values from
20
- * @return {Array} New array containing only values at `indexes`
21
- * @see {@link http://ramdajs.com/docs/#pick|R.pick}, {@link RA.omitIndexes|omitIndexes}
22
- * @example
23
- *
24
- * RA.pickIndexes([0, 2], ['a', 'b', 'c']); //=> ['a', 'c']
25
- */
26
- const pickIndexes = curry((indexes, list) =>
27
- filterIndexed(containsIndex(indexes), list)
28
- );
29
-
30
- export default pickIndexes;
package/src/propNotEq.js DELETED
@@ -1,30 +0,0 @@
1
- import { propEq, complement } from 'ramda';
2
-
3
- /**
4
- * Returns true if the specified object property is not equal,
5
- * in R.equals terms, to the given value; false otherwise.
6
- *
7
- * @func propNotEq
8
- * @memberOf RA
9
- * @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}
10
- * @category Relation
11
- * @sig a -> String -> Object -> Boolean
12
- * @param {a} val The value to compare to
13
- * @param {String} name The property to pick
14
- * @param {Object} object The object, that presumably contains value under the property
15
- * @return {boolean} Comparison result
16
- * @see {@link http://ramdajs.com/docs/#propEq|R.propEq}
17
- * @example
18
- *
19
- * const abby = { name: 'Abby', age: 7, hair: 'blond' };
20
- * const fred = { name: 'Fred', age: 12, hair: 'brown' };
21
- * const rusty = { name: 'Rusty', age: 10, hair: 'brown' };
22
- * const alois = { name: 'Alois', age: 15, disposition: 'surly' };
23
- * const kids = [abby, fred, rusty, alois];
24
- * const hasNotBrownHair = RA.propNotEq('brown', 'hair');
25
- *
26
- * R.filter(hasNotBrownHair, kids); //=> [abby, alois]
27
- */
28
- const propNotEq = complement(propEq);
29
-
30
- export default propNotEq;
package/src/rangeStep.js DELETED
@@ -1,37 +0,0 @@
1
- import { curryN, map, range, always } from 'ramda';
2
-
3
- import floor from './floor.js';
4
-
5
- /**
6
- * Creates an array of numbers (positive and/or negative) progressing from start up to, but not including, end.
7
- *
8
- * `Note`: JavaScript follows the IEEE-754 standard for resolving floating-point values which can produce unexpected results.
9
- *
10
- * @func rangeStep
11
- * @memberOf RA
12
- * @category List
13
- * @since {@link https://char0n.github.io/ramda-adjunct/2.30.0|v2.30.0}
14
- * @sig Number -> Number -> Number -> [Number]
15
- * @param {number} step The value to increment or decrement by
16
- * @param {number} from The start of the range
17
- * @param {number} to The end of the range
18
- * @return {number[]} Returns the range of numbers
19
- * @see {@link http://ramdajs.com/docs/#range|R.range}
20
- * @example
21
- *
22
- * RA.rangeStep(1, 0, 4); // => [0, 1 ,2, 3]
23
- * RA.rangeStep(-1, 0, -4); // => [0, -1, -2, -3]
24
- * RA.rangeStep(1, 1, 5); // => [1, 2, 3, 4]
25
- * RA.rangeStep(5, 0, 20); // => [0, 5, 10, 15]
26
- * RA.rangeStep(-1, 0, -4); // => [0, -1, -2, -3]
27
- * RA.rangeStep(0, 1, 4); // => [1, 1, 1]
28
- * RA.rangeStep(1, 0, 0); // => []
29
- */
30
- const rangeStep = curryN(3, (step, from, to) => {
31
- const callback = step === 0 ? always(from) : (n) => from + step * n;
32
- const rangeEnd = step === 0 ? to - from : floor((to - from) / step);
33
-
34
- return map(callback, range(0, rangeEnd));
35
- });
36
-
37
- export default rangeStep;
@@ -1,31 +0,0 @@
1
- import { addIndex, reduce } from 'ramda';
2
-
3
- /**
4
- * {@link http://ramdajs.com/docs/#reduce|R.reduce} function that more closely resembles Array.prototype.reduce.
5
- * It takes two new parameters to its callback function: the current index, and the entire list.
6
- *
7
- * `reduceIndexed` implementation is simple : `
8
- * const reduceIndexed = R.addIndex(R.reduce);
9
- * `
10
- * @func reduceIndexed
11
- * @memberOf RA
12
- * @since {@link https://char0n.github.io/ramda-adjunct/2.5.0|v2.5.0}
13
- * @category List
14
- * @typedef Idx = Number
15
- * @sig ((a, b, Idx, [b]) => a) -> a -> [b] -> a
16
- * @param {Function} fn The iterator function. Receives four values,
17
- * the accumulator, the current element from the array, index and the entire list
18
- * @param {*} acc The accumulator value
19
- * @param {Array} list The list to iterate over
20
- * @return {*} The final, accumulated value
21
- * @see {@link http://ramdajs.com/docs/#addIndex|R.addIndex}, {@link http://ramdajs.com/docs/#reduce|R.reduce}
22
- * @example
23
- *
24
- * const initialList = ['f', 'o', 'o', 'b', 'a', 'r'];
25
- *
26
- * reduceIndexed((acc, val, idx, list) => acc + '-' + val + idx, '', initialList);
27
- * //=> "-f0-o1-o2-b3-a4-r5"
28
- */
29
- const reduceIndexed = addIndex(reduce);
30
-
31
- export default reduceIndexed;
package/src/reduceP.js DELETED
@@ -1,96 +0,0 @@
1
- import { curryN, reduce, length } from 'ramda';
2
-
3
- import isUndefined from './isUndefined.js';
4
- import resolveP from './resolveP.js';
5
- import allP from './allP.js';
6
-
7
- /* eslint-disable max-len */
8
- /**
9
- * Given an `Iterable`(arrays are `Iterable`), or a promise of an `Iterable`,
10
- * which produces promises (or a mix of promises and values),
11
- * iterate over all the values in the `Iterable` into an array and
12
- * reduce the array to a value using the given iterator function.
13
- *
14
- * If the iterator function returns a promise, then the result of the promise is awaited,
15
- * before continuing with next iteration. If any promise in the array is rejected or a promise
16
- * returned by the iterator function is rejected, the result is rejected as well.
17
- *
18
- * If `initialValue` is `undefined` (or a promise that resolves to `undefined`) and
19
- * the `Iterable` contains only 1 item, the callback will not be called and
20
- * the `Iterable's` single item is returned. If the `Iterable` is empty, the callback
21
- * will not be called and `initialValue` is returned (which may be undefined).
22
- *
23
- * This function is basically equivalent to {@link http://bluebirdjs.com/docs/api/promise.reduce.html|bluebird.reduce}.
24
- *
25
- * @func reduceP
26
- * @memberOf RA
27
- * @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|v1.13.0}
28
- * @category List
29
- * @typedef MaybePromise = Promise.<*> | *
30
- * @sig ((Promise a, MaybePromise b) -> Promise a) -> MaybePromise a -> MaybePromise [MaybePromise b] -> Promise a
31
- * @param {Function} fn The iterator function. Receives two values, the accumulator and the current element from the list
32
- * @param {*|Promise.<*>} acc The accumulator value
33
- * @param {Array.<*>|Promise.<Array<*|Promise.<*>>>} list The list to iterate over
34
- * @return {Promise} The final, accumulated value
35
- * @see {@link http://ramdajs.com/docs/#reduce|R.reduce}, {@link RA.reduceRightP|reduceRightP}, {@link http://bluebirdjs.com/docs/api/promise.reduce.html|bluebird.reduce}
36
- * @example
37
- *
38
- * RA.reduceP(
39
- * (total, fileName) => fs
40
- * .readFileAsync(fileName, 'utf8')
41
- * .then(contents => total + parseInt(contents, 10)),
42
- * 0,
43
- * ['file1.txt', 'file2.txt', 'file3.txt']
44
- * ); // => Promise(10)
45
- *
46
- * RA.reduceP(
47
- * (total, fileName) => fs
48
- * .readFileAsync(fileName, 'utf8')
49
- * .then(contents => total + parseInt(contents, 10)),
50
- * Promise.resolve(0),
51
- * ['file1.txt', 'file2.txt', 'file3.txt']
52
- * ); // => Promise(10)
53
- *
54
- * RA.reduceP(
55
- * (total, fileName) => fs
56
- * .readFileAsync(fileName, 'utf8')
57
- * .then(contents => total + parseInt(contents, 10)),
58
- * 0,
59
- * [Promise.resolve('file1.txt'), 'file2.txt', 'file3.txt']
60
- * ); // => Promise(10)
61
- *
62
- * RA.reduceP(
63
- * (total, fileName) => fs
64
- * .readFileAsync(fileName, 'utf8')
65
- * .then(contents => total + parseInt(contents, 10)),
66
- * 0,
67
- * Promise.resolve([Promise.resolve('file1.txt'), 'file2.txt', 'file3.txt'])
68
- * ); // => Promise(10)
69
- *
70
- */
71
- /* esline-enable max-len */
72
- const reduceP = curryN(3, (fn, acc, list) =>
73
- resolveP(list).then((iterable) => {
74
- const listLength = length(iterable);
75
-
76
- if (listLength === 0) {
77
- return acc;
78
- }
79
-
80
- const reducer = reduce((accP, currentValueP) =>
81
- accP
82
- .then((previousValue) => allP([previousValue, currentValueP]))
83
- .then(([previousValue, currentValue]) => {
84
- if (isUndefined(previousValue) && listLength === 1) {
85
- return currentValue;
86
- }
87
-
88
- return fn(previousValue, currentValue);
89
- })
90
- );
91
-
92
- return reducer(resolveP(acc), iterable);
93
- })
94
- );
95
-
96
- export default reduceP;