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.
- package/CHANGELOG.md +7 -0
- package/README.md +1 -1
- package/dist/RA.node.js +10444 -452
- package/dist/RA.node.min.js +1 -1
- package/dist/RA.web.js +10444 -452
- package/dist/RA.web.min.js +1 -1
- package/dist/RA.web.standalone.js +18665 -447
- package/dist/RA.web.standalone.min.js +1 -1
- package/dist/package.json +1 -0
- package/es/copyKeys.js +1 -1
- package/es/dispatch.js +5 -5
- package/es/fantasy-land/Identity.js +3 -3
- package/es/fantasy-land/traits.js +1 -1
- package/es/flattenDepth.js +5 -5
- package/es/internal/ponyfills/Array.from.js +5 -5
- package/es/internal/ponyfills/Promise.allSettled.js +5 -5
- package/es/internal/ponyfills/Promise.any.js +15 -15
- package/es/lastP.js +5 -5
- package/es/reduceP.js +4 -4
- package/es/reduceRightP.js +4 -4
- package/es/renameKey.js +1 -1
- package/es/sortByProps.js +5 -5
- package/lib/allEqual.js +1 -1
- package/lib/allIdentical.js +1 -1
- package/lib/allSettledP.js +1 -1
- package/lib/allUnique.js +1 -1
- package/lib/anyP.js +1 -1
- package/lib/argsPass.js +1 -1
- package/lib/async.js +1 -1
- package/lib/cata.js +1 -1
- package/lib/compact.js +1 -1
- package/lib/concatAll.js +1 -1
- package/lib/copyKeys.js +2 -2
- package/lib/curryRight.js +1 -1
- package/lib/delayP.js +1 -1
- package/lib/dispatch.js +6 -6
- package/lib/ensureArray.js +1 -1
- package/lib/escapeRegExp.js +1 -1
- package/lib/fantasy-land/Identity.js +3 -3
- package/lib/fantasy-land/traits.js +2 -2
- package/lib/flattenDepth.js +6 -6
- package/lib/flattenProp.js +1 -1
- package/lib/fnull.js +1 -1
- package/lib/index.js +1 -1
- package/lib/internal/ap.js +1 -1
- package/lib/internal/isCoercible.js +1 -1
- package/lib/internal/makeFlat.js +1 -1
- package/lib/internal/ponyfills/Array.from.js +6 -6
- package/lib/internal/ponyfills/Math.trunc.js +1 -1
- package/lib/internal/ponyfills/Number.isFinite.js +1 -1
- package/lib/internal/ponyfills/Number.isInteger.js +1 -1
- package/lib/internal/ponyfills/Number.isNaN.js +1 -1
- package/lib/internal/ponyfills/Number.isSafeInteger.js +1 -1
- package/lib/internal/ponyfills/Promise.allSettled.js +6 -6
- package/lib/internal/ponyfills/Promise.any.js +16 -16
- package/lib/internal/ponyfills/String.padEnd.js +1 -1
- package/lib/internal/ponyfills/String.padStart.js +1 -1
- package/lib/internal/ponyfills/String.repeat.js +1 -1
- package/lib/internal/ponyfills/String.replaceAll.js +1 -1
- package/lib/invoke.js +1 -1
- package/lib/invokeArgs.js +1 -1
- package/lib/isArray.js +1 -1
- package/lib/isArrayLike.js +1 -1
- package/lib/isBlank.js +1 -1
- package/lib/isEmptyArray.js +1 -1
- package/lib/isEven.js +1 -1
- package/lib/isFalsy.js +1 -1
- package/lib/isFinite.js +1 -1
- package/lib/isFloat.js +1 -1
- package/lib/isFunction.js +1 -1
- package/lib/isIndexed.js +1 -1
- package/lib/isInteger.js +1 -1
- package/lib/isInteger32.js +1 -1
- package/lib/isIterable.js +1 -1
- package/lib/isNaN.js +1 -1
- package/lib/isNaturalNumber.js +1 -1
- package/lib/isNegative.js +1 -1
- package/lib/isNonEmptyArray.js +1 -1
- package/lib/isNonEmptyString.js +1 -1
- package/lib/isNonNegative.js +1 -1
- package/lib/isNonPositive.js +1 -1
- package/lib/isNotArray.js +1 -1
- package/lib/isNotArrayLike.js +1 -1
- package/lib/isNotAsyncFunction.js +1 -1
- package/lib/isNotBoolean.js +1 -1
- package/lib/isNotDate.js +1 -1
- package/lib/isNotFinite.js +1 -1
- package/lib/isNotFloat.js +1 -1
- package/lib/isNotFunction.js +1 -1
- package/lib/isNotGeneratorFunction.js +1 -1
- package/lib/isNotInteger.js +1 -1
- package/lib/isNotMap.js +1 -1
- package/lib/isNotNaN.js +1 -1
- package/lib/isNotNilOrEmpty.js +1 -1
- package/lib/isNotNull.js +1 -1
- package/lib/isNotNumber.js +1 -1
- package/lib/isNotObj.js +1 -1
- package/lib/isNotObjLike.js +1 -1
- package/lib/isNotPair.js +1 -1
- package/lib/isNotPlainObj.js +1 -1
- package/lib/isNotPrimitive.js +1 -1
- package/lib/isNotRegExp.js +1 -1
- package/lib/isNotSet.js +1 -1
- package/lib/isNotString.js +1 -1
- package/lib/isNotUndefined.js +1 -1
- package/lib/isNotValidDate.js +1 -1
- package/lib/isNotValidNumber.js +1 -1
- package/lib/isObj.js +1 -1
- package/lib/isObjLike.js +1 -1
- package/lib/isOdd.js +1 -1
- package/lib/isPair.js +1 -1
- package/lib/isPlainObj.js +1 -1
- package/lib/isPositive.js +1 -1
- package/lib/isPrimitive.js +1 -1
- package/lib/isPromise.js +1 -1
- package/lib/isPrototypeOf.js +1 -1
- package/lib/isSafeInteger.js +1 -1
- package/lib/isSentinelValue.js +1 -1
- package/lib/isSparseArray.js +1 -1
- package/lib/isThenable.js +1 -1
- package/lib/isUinteger32.js +1 -1
- package/lib/isUndefined.js +1 -1
- package/lib/isValidDate.js +1 -1
- package/lib/isValidNumber.js +1 -1
- package/lib/lastP.js +6 -6
- package/lib/lengthEq.js +1 -1
- package/lib/lengthGt.js +1 -1
- package/lib/lengthGte.js +1 -1
- package/lib/lengthLt.js +1 -1
- package/lib/lengthLte.js +1 -1
- package/lib/lengthNotEq.js +1 -1
- package/lib/lensNotEq.js +1 -1
- package/lib/lensNotSatisfy.js +1 -1
- package/lib/lensSatisfies.js +1 -1
- package/lib/lensTraverse.js +1 -1
- package/lib/liftF.js +1 -1
- package/lib/liftFN.js +1 -1
- package/lib/mergePaths.js +1 -1
- package/lib/mergeProp.js +1 -1
- package/lib/noneP.js +1 -1
- package/lib/noop.js +1 -1
- package/lib/notAllUnique.js +1 -1
- package/lib/padCharsEnd.js +1 -1
- package/lib/padCharsStart.js +1 -1
- package/lib/padEnd.js +1 -1
- package/lib/padStart.js +1 -1
- package/lib/rangeStep.js +1 -1
- package/lib/reduceP.js +5 -5
- package/lib/reduceRightP.js +5 -5
- package/lib/renameKey.js +2 -2
- package/lib/renameKeyWith.js +1 -1
- package/lib/renameKeys.js +1 -1
- package/lib/repeatStr.js +1 -1
- package/lib/replaceAll.js +1 -1
- package/lib/sign.js +1 -1
- package/lib/sortByProp.js +1 -1
- package/lib/sortByProps.js +5 -5
- package/lib/spreadProp.js +1 -1
- package/lib/toArray.js +1 -1
- package/lib/toNumber.js +1 -1
- package/lib/trimCharsEnd.js +1 -1
- package/lib/trimCharsStart.js +1 -1
- package/lib/trimEnd.js +1 -1
- package/lib/trimStart.js +1 -1
- package/lib/trunc.js +1 -1
- package/lib/unzipObjWith.js +1 -1
- package/package.json +22 -19
- package/babel.config.cjs +0 -56
- package/src/Y.js +0 -32
- package/src/allEqual.js +0 -28
- package/src/allEqualTo.js +0 -25
- package/src/allIdentical.js +0 -26
- package/src/allIdenticalTo.js +0 -25
- package/src/allP.js +0 -27
- package/src/allSettledP.js +0 -34
- package/src/allUnique.js +0 -25
- package/src/anyP.js +0 -33
- package/src/appendFlipped.js +0 -24
- package/src/argsPass.js +0 -40
- package/src/async.js +0 -60
- package/src/cata.js +0 -86
- package/src/catchP.js +0 -25
- package/src/ceil.js +0 -28
- package/src/compact.js +0 -23
- package/src/concatAll.js +0 -35
- package/src/concatRight.js +0 -30
- package/src/copyKeys.js +0 -31
- package/src/curryRight.js +0 -26
- package/src/curryRightN.js +0 -29
- package/src/defaultWhen.js +0 -26
- package/src/delayP.js +0 -45
- package/src/dispatch.js +0 -74
- package/src/divideNum.js +0 -20
- package/src/dropArgs.js +0 -23
- package/src/ensureArray.js +0 -24
- package/src/escapeRegExp.js +0 -22
- package/src/fantasy-land/Identity.js +0 -270
- package/src/fantasy-land/mapping.js +0 -20
- package/src/fantasy-land/traits.js +0 -57
- package/src/fantasy-land/util.js +0 -23
- package/src/filterIndexed.js +0 -28
- package/src/findOr.js +0 -30
- package/src/flattenDepth.js +0 -39
- package/src/flattenPath.js +0 -28
- package/src/flattenProp.js +0 -28
- package/src/floor.js +0 -27
- package/src/fnull.js +0 -38
- package/src/inRange.js +0 -34
- package/src/included.js +0 -28
- package/src/index.js +0 -241
- package/src/internal/ap.js +0 -30
- package/src/internal/compareLength.js +0 -7
- package/src/internal/isCoercible.js +0 -12
- package/src/internal/isOfTypeObject.js +0 -3
- package/src/internal/makeFlat.js +0 -42
- package/src/internal/ponyfills/Array.from.js +0 -34
- package/src/internal/ponyfills/Math.sign.js +0 -3
- package/src/internal/ponyfills/Math.trunc.js +0 -14
- package/src/internal/ponyfills/Number.MAX_SAFE_INTEGER.js +0 -3
- package/src/internal/ponyfills/Number.MIN_SAFE_INTEGER.js +0 -3
- package/src/internal/ponyfills/Number.isFinite.js +0 -8
- package/src/internal/ponyfills/Number.isInteger.js +0 -10
- package/src/internal/ponyfills/Number.isNaN.js +0 -8
- package/src/internal/ponyfills/Number.isSafeInteger.js +0 -11
- package/src/internal/ponyfills/Promise.allSettled.js +0 -18
- package/src/internal/ponyfills/Promise.any.js +0 -29
- package/src/internal/ponyfills/String.padEnd.js +0 -25
- package/src/internal/ponyfills/String.padStart.js +0 -27
- package/src/internal/ponyfills/String.repeat.js +0 -49
- package/src/internal/ponyfills/String.replaceAll.js +0 -44
- package/src/internal/ponyfills/String.trimEnd.js +0 -5
- package/src/internal/ponyfills/String.trimStart.js +0 -5
- package/src/invoke.js +0 -22
- package/src/invokeArgs.js +0 -36
- package/src/isArray.js +0 -27
- package/src/isArrayLike.js +0 -79
- package/src/isAsyncFunction.js +0 -23
- package/src/isBigInt.js +0 -24
- package/src/isBlank.js +0 -33
- package/src/isBoolean.js +0 -22
- package/src/isDate.js +0 -21
- package/src/isEmptyArray.js +0 -28
- package/src/isEmptyString.js +0 -28
- package/src/isError.js +0 -21
- package/src/isEven.js +0 -31
- package/src/isFalse.js +0 -31
- package/src/isFalsy.js +0 -28
- package/src/isFinite.js +0 -37
- package/src/isFloat.js +0 -36
- package/src/isFunction.js +0 -32
- package/src/isGeneratorFunction.js +0 -26
- package/src/isIndexed.js +0 -24
- package/src/isInteger.js +0 -40
- package/src/isInteger32.js +0 -28
- package/src/isIterable.js +0 -37
- package/src/isMap.js +0 -25
- package/src/isNaN.js +0 -45
- package/src/isNaturalNumber.js +0 -28
- package/src/isNegative.js +0 -27
- package/src/isNegativeZero.js +0 -23
- package/src/isNilOrEmpty.js +0 -26
- package/src/isNonEmptyArray.js +0 -28
- package/src/isNonEmptyString.js +0 -31
- package/src/isNonNegative.js +0 -30
- package/src/isNonPositive.js +0 -30
- package/src/isNotArray.js +0 -24
- package/src/isNotArrayLike.js +0 -26
- package/src/isNotAsyncFunction.js +0 -27
- package/src/isNotBoolean.js +0 -24
- package/src/isNotDate.js +0 -23
- package/src/isNotFinite.js +0 -31
- package/src/isNotFloat.js +0 -35
- package/src/isNotFunction.js +0 -29
- package/src/isNotGeneratorFunction.js +0 -27
- package/src/isNotInteger.js +0 -36
- package/src/isNotMap.js +0 -27
- package/src/isNotNaN.js +0 -37
- package/src/isNotNil.js +0 -23
- package/src/isNotNilOrEmpty.js +0 -28
- package/src/isNotNull.js +0 -24
- package/src/isNotNumber.js +0 -25
- package/src/isNotObj.js +0 -29
- package/src/isNotObjLike.js +0 -29
- package/src/isNotPair.js +0 -27
- package/src/isNotPlainObj.js +0 -35
- package/src/isNotPrimitive.js +0 -26
- package/src/isNotRegExp.js +0 -24
- package/src/isNotSet.js +0 -26
- package/src/isNotString.js +0 -23
- package/src/isNotUndefined.js +0 -24
- package/src/isNotValidDate.js +0 -24
- package/src/isNotValidNumber.js +0 -27
- package/src/isNull.js +0 -22
- package/src/isNumber.js +0 -24
- package/src/isObj.js +0 -31
- package/src/isObjLike.js +0 -30
- package/src/isOdd.js +0 -29
- package/src/isPair.js +0 -27
- package/src/isPlainObj.js +0 -65
- package/src/isPositive.js +0 -26
- package/src/isPositiveZero.js +0 -23
- package/src/isPrimitive.js +0 -46
- package/src/isPromise.js +0 -32
- package/src/isPrototypeOf.js +0 -36
- package/src/isRegExp.js +0 -22
- package/src/isSafeInteger.js +0 -40
- package/src/isSentinelValue.js +0 -26
- package/src/isSet.js +0 -24
- package/src/isSparseArray.js +0 -43
- package/src/isString.js +0 -21
- package/src/isSymbol.js +0 -29
- package/src/isThenable.js +0 -28
- package/src/isTrue.js +0 -27
- package/src/isTruthy.js +0 -28
- package/src/isUinteger32.js +0 -29
- package/src/isUndefined.js +0 -24
- package/src/isValidDate.js +0 -29
- package/src/isValidNumber.js +0 -28
- package/src/lastP.js +0 -54
- package/src/lengthEq.js +0 -24
- package/src/lengthGt.js +0 -24
- package/src/lengthGte.js +0 -26
- package/src/lengthLt.js +0 -24
- package/src/lengthLte.js +0 -25
- package/src/lengthNotEq.js +0 -24
- package/src/lensEq.js +0 -28
- package/src/lensIso.js +0 -51
- package/src/lensNotEq.js +0 -28
- package/src/lensNotSatisfy.js +0 -30
- package/src/lensSatisfies.js +0 -33
- package/src/lensTraverse.js +0 -56
- package/src/liftF.js +0 -37
- package/src/liftFN.js +0 -45
- package/src/list.js +0 -20
- package/src/mapIndexed.js +0 -27
- package/src/mergePath.js +0 -30
- package/src/mergePaths.js +0 -29
- package/src/mergeProp.js +0 -30
- package/src/mergeProps.js +0 -27
- package/src/move.js +0 -26
- package/src/nand.js +0 -27
- package/src/neither.js +0 -38
- package/src/noneP.js +0 -35
- package/src/nonePass.js +0 -32
- package/src/noop.js +0 -21
- package/src/nor.js +0 -28
- package/src/notAllPass.js +0 -32
- package/src/notAllUnique.js +0 -25
- package/src/notBoth.js +0 -38
- package/src/notEqual.js +0 -31
- package/src/omitBy.js +0 -25
- package/src/omitIndexes.js +0 -27
- package/src/overlaps.js +0 -30
- package/src/padCharsEnd.js +0 -37
- package/src/padCharsStart.js +0 -35
- package/src/padEnd.js +0 -25
- package/src/padStart.js +0 -23
- package/src/pathNotEq.js +0 -31
- package/src/pathOrLazy.js +0 -30
- package/src/paths.js +0 -26
- package/src/pickIndexes.js +0 -30
- package/src/propNotEq.js +0 -30
- package/src/rangeStep.js +0 -37
- package/src/reduceIndexed.js +0 -31
- package/src/reduceP.js +0 -96
- package/src/reduceRightP.js +0 -101
- package/src/rejectP.js +0 -24
- package/src/renameKey.js +0 -33
- package/src/renameKeyWith.js +0 -30
- package/src/renameKeys.js +0 -40
- package/src/renameKeysWith.js +0 -27
- package/src/repeatStr.js +0 -30
- package/src/replaceAll.js +0 -35
- package/src/resolveP.js +0 -28
- package/src/round.js +0 -26
- package/src/seq.js +0 -38
- package/src/sign.js +0 -33
- package/src/skipTake.js +0 -33
- package/src/sliceFrom.js +0 -23
- package/src/sliceTo.js +0 -23
- package/src/sortByPaths.js +0 -55
- package/src/sortByProp.js +0 -45
- package/src/sortByProps.js +0 -31
- package/src/spreadPath.js +0 -26
- package/src/spreadProp.js +0 -25
- package/src/stubArray.js +0 -18
- package/src/stubNull.js +0 -19
- package/src/stubObj.js +0 -19
- package/src/stubString.js +0 -19
- package/src/stubUndefined.js +0 -19
- package/src/subtractNum.js +0 -20
- package/src/thenCatchP.js +0 -27
- package/src/toArray.js +0 -32
- package/src/toInteger32.js +0 -22
- package/src/toNumber.js +0 -24
- package/src/toUinteger32.js +0 -26
- package/src/trimCharsEnd.js +0 -25
- package/src/trimCharsStart.js +0 -25
- package/src/trimEnd.js +0 -30
- package/src/trimStart.js +0 -29
- package/src/trunc.js +0 -33
- package/src/unzipObjWith.js +0 -40
- package/src/viewOr.js +0 -32
- package/src/weave.js +0 -35
- package/src/weaveLazy.js +0 -37
- package/src/zipObjWith.js +0 -27
package/src/reduceRightP.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { curryN, pipe, equals, reduceRight, length, concat } from 'ramda';
|
|
2
|
-
|
|
3
|
-
import isUndefined from './isUndefined.js';
|
|
4
|
-
import resolveP from './resolveP.js';
|
|
5
|
-
import allP from './allP.js';
|
|
6
|
-
|
|
7
|
-
// in older ramda versions the order of the arguments is flipped
|
|
8
|
-
const flipArgs = pipe(reduceRight(concat, ''), equals('ba'))(['a', 'b']);
|
|
9
|
-
|
|
10
|
-
/* eslint-disable max-len */
|
|
11
|
-
/**
|
|
12
|
-
* Given an `Iterable`(arrays are `Iterable`), or a promise of an `Iterable`,
|
|
13
|
-
* which produces promises (or a mix of promises and values),
|
|
14
|
-
* iterate over all the values in the `Iterable` into an array and
|
|
15
|
-
* reduce the array to a value using the given iterator function.
|
|
16
|
-
*
|
|
17
|
-
* Similar to {@link RA.reduceP|reduceP} except moves through the input list from the right to the left.
|
|
18
|
-
* The iterator function receives two values: (value, acc),
|
|
19
|
-
* while the arguments' order of reduceP's iterator function is (acc, value).
|
|
20
|
-
*
|
|
21
|
-
* @func reduceRightP
|
|
22
|
-
* @memberOf RA
|
|
23
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|v1.13.0}
|
|
24
|
-
* @category List
|
|
25
|
-
* @typedef MaybePromise = Promise.<*> | *
|
|
26
|
-
* @sig ((MaybePromise b, Promise a) -> Promise a) -> MaybePromise a -> MaybePromise [MaybePromise b] -> Promise a
|
|
27
|
-
* @param {Function} fn The iterator function. Receives two values, the current element from the list and the accumulator
|
|
28
|
-
* @param {*|Promise.<*>} acc The accumulator value
|
|
29
|
-
* @param {Array.<*>|Promise.<Array<*|Promise.<*>>>} list The list to iterate over
|
|
30
|
-
* @return {Promise} The final, accumulated value
|
|
31
|
-
* @see {@link RA.reduceP|reduceP}, {@link http://bluebirdjs.com/docs/api/promise.reduce.html|bluebird.reduce}
|
|
32
|
-
* @example
|
|
33
|
-
*
|
|
34
|
-
* RA.reduceRightP(
|
|
35
|
-
* (fileName, total) => fs
|
|
36
|
-
* .readFileAsync(fileName, 'utf8')
|
|
37
|
-
* .then(contents => total + parseInt(contents, 10)),
|
|
38
|
-
* 0,
|
|
39
|
-
* ['file1.txt', 'file2.txt', 'file3.txt']
|
|
40
|
-
* ); // => Promise(10)
|
|
41
|
-
*
|
|
42
|
-
* RA.reduceRightP(
|
|
43
|
-
* (fileName, total) => fs
|
|
44
|
-
* .readFileAsync(fileName, 'utf8')
|
|
45
|
-
* .then(contents => total + parseInt(contents, 10)),
|
|
46
|
-
* Promise.resolve(0),
|
|
47
|
-
* ['file1.txt', 'file2.txt', 'file3.txt']
|
|
48
|
-
* ); // => Promise(10)
|
|
49
|
-
*
|
|
50
|
-
* RA.reduceRightP(
|
|
51
|
-
* (fileName, total) => fs
|
|
52
|
-
* .readFileAsync(fileName, 'utf8')
|
|
53
|
-
* .then(contents => total + parseInt(contents, 10)),
|
|
54
|
-
* 0,
|
|
55
|
-
* [Promise.resolve('file1.txt'), 'file2.txt', 'file3.txt']
|
|
56
|
-
* ); // => Promise(10)
|
|
57
|
-
*
|
|
58
|
-
* RA.reduceRightP(
|
|
59
|
-
* (fileName, total) => fs
|
|
60
|
-
* .readFileAsync(fileName, 'utf8')
|
|
61
|
-
* .then(contents => total + parseInt(contents, 10)),
|
|
62
|
-
* 0,
|
|
63
|
-
* Promise.resolve([Promise.resolve('file1.txt'), 'file2.txt', 'file3.txt'])
|
|
64
|
-
* ); // => Promise(10)
|
|
65
|
-
*
|
|
66
|
-
*/
|
|
67
|
-
/* esline-enable max-len */
|
|
68
|
-
const reduceRightP = curryN(3, (fn, acc, list) =>
|
|
69
|
-
resolveP(list).then((iterable) => {
|
|
70
|
-
const listLength = length(iterable);
|
|
71
|
-
|
|
72
|
-
if (listLength === 0) {
|
|
73
|
-
return acc;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const reducer = reduceRight((arg1, arg2) => {
|
|
77
|
-
let accP;
|
|
78
|
-
let currentValueP;
|
|
79
|
-
|
|
80
|
-
if (flipArgs) {
|
|
81
|
-
[accP, currentValueP] = [arg1, arg2];
|
|
82
|
-
} else {
|
|
83
|
-
[accP, currentValueP] = [arg2, arg1];
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return accP
|
|
87
|
-
.then((previousValue) => allP([previousValue, currentValueP]))
|
|
88
|
-
.then(([previousValue, currentValue]) => {
|
|
89
|
-
if (isUndefined(previousValue) && listLength === 1) {
|
|
90
|
-
return currentValue;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return fn(currentValue, previousValue);
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
return reducer(resolveP(acc), iterable);
|
|
98
|
-
})
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
export default reduceRightP;
|
package/src/rejectP.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { bind } from 'ramda';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Composable shortcut for `Promise.reject`.
|
|
5
|
-
*
|
|
6
|
-
* Returns a Promise object that is rejected with the given reason.
|
|
7
|
-
*
|
|
8
|
-
* @func rejectP
|
|
9
|
-
* @memberOf RA
|
|
10
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/1.16.0|v1.16.0}
|
|
11
|
-
* @category Function
|
|
12
|
-
* @sig a -> Promise a
|
|
13
|
-
* @param {*} [reason=undefined] Reason why this Promise rejected
|
|
14
|
-
* @return {Promise} A Promise that is rejected with the given reason
|
|
15
|
-
* @see {@link RA.resolveP|resolveP}
|
|
16
|
-
* @example
|
|
17
|
-
*
|
|
18
|
-
* RA.rejectP(); //=> Promise(undefined)
|
|
19
|
-
* RA.rejectP('a'); //=> Promise('a')
|
|
20
|
-
* RA.rejectP([1, 2, 3]); //=> Promise([1, 2, 3])
|
|
21
|
-
*/
|
|
22
|
-
const rejectP = bind(Promise.reject, Promise);
|
|
23
|
-
|
|
24
|
-
export default rejectP;
|
package/src/renameKey.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { curry } from 'ramda';
|
|
2
|
-
|
|
3
|
-
import renameKeys from './renameKeys.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Creates a new object with the own properties of the provided object, but a
|
|
7
|
-
* single key is renamed from `oldKey` to `newKey`.
|
|
8
|
-
*
|
|
9
|
-
* Keep in mind that in the case of keys conflict is behavior undefined and
|
|
10
|
-
* the result may vary between various JS engines!
|
|
11
|
-
*
|
|
12
|
-
* @func renameKey
|
|
13
|
-
* @memberOf RA
|
|
14
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/4.1.0|v4.1.0}
|
|
15
|
-
* @category Object
|
|
16
|
-
* @sig (String a, String b) => a -> b -> {a: *} -> {b: *}
|
|
17
|
-
* @param {!string} oldKey
|
|
18
|
-
* @param {!string} newKey
|
|
19
|
-
* @param {!Object} obj
|
|
20
|
-
* @return {!Object} New object with renamed key
|
|
21
|
-
* @see {@link https://github.com/ramda/ramda/wiki/Cookbook#rename-key-of-an-object|Ramda Cookbook}, {@link RA.renameKeyWith|renameKeyWith}
|
|
22
|
-
* @example
|
|
23
|
-
*
|
|
24
|
-
* const input = { firstName: 'Elisia', age: 22, type: 'human' };
|
|
25
|
-
*
|
|
26
|
-
* RA.renameKey('firstName', 'name')(input);
|
|
27
|
-
* //=> { name: 'Elisia', age: 22, type: 'human' }
|
|
28
|
-
*/
|
|
29
|
-
const renameKey = curry((oldKey, newKey, obj) =>
|
|
30
|
-
renameKeys({ [oldKey]: newKey }, obj)
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
export default renameKey;
|
package/src/renameKeyWith.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { curry, equals, when } from 'ramda';
|
|
2
|
-
|
|
3
|
-
import renameKeysWith from './renameKeysWith.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Creates a new object with the own properties of the provided object, but the
|
|
7
|
-
* key `key` renamed according to logic of renaming function.
|
|
8
|
-
*
|
|
9
|
-
* Keep in mind that in case the new key name already existed on the object,
|
|
10
|
-
* the behaviour is undefined and the result may vary between various JS engines!
|
|
11
|
-
*
|
|
12
|
-
* @func renameKeyWith
|
|
13
|
-
* @memberOf RA
|
|
14
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/2.29.0|v2.29.0}
|
|
15
|
-
* @category Object
|
|
16
|
-
* @sig (k -> k) -> k -> {k: v} -> {k: v}
|
|
17
|
-
* @param {Function} fn Function that renames the keys
|
|
18
|
-
* @param {!string} key Key to rename
|
|
19
|
-
* @param {!Object} obj Provided object
|
|
20
|
-
* @return {!Object} New object with renamed key
|
|
21
|
-
* @see {@link RA.renameKeysWith|renameKeysWith}
|
|
22
|
-
* @example
|
|
23
|
-
*
|
|
24
|
-
* RA.renameKeyWith(R.concat('a'), 'A', { A: 1 }) //=> { aA: 1 }
|
|
25
|
-
*/
|
|
26
|
-
const renameKeyWith = curry((fn, key, obj) =>
|
|
27
|
-
renameKeysWith(when(equals(key), fn), obj)
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
export default renameKeyWith;
|
package/src/renameKeys.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { curry, has } from 'ramda';
|
|
2
|
-
|
|
3
|
-
import renameKeysWith from './renameKeysWith.js';
|
|
4
|
-
|
|
5
|
-
const valueOrKey = (keysMap) => (key) => {
|
|
6
|
-
if (has(key, keysMap)) {
|
|
7
|
-
return keysMap[key];
|
|
8
|
-
}
|
|
9
|
-
return key;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Creates a new object with the own properties of the provided object, but the
|
|
14
|
-
* keys renamed according to the keysMap object as `{oldKey: newKey}`.
|
|
15
|
-
* When some key is not found in the keysMap, then it's passed as-is.
|
|
16
|
-
*
|
|
17
|
-
* Keep in mind that in the case of keys conflict is behaviour undefined and
|
|
18
|
-
* the result may vary between various JS engines!
|
|
19
|
-
*
|
|
20
|
-
* @func renameKeys
|
|
21
|
-
* @memberOf RA
|
|
22
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/1.5.0|v1.5.0}
|
|
23
|
-
* @category Object
|
|
24
|
-
* @sig {a: b} -> {a: *} -> {b: *}
|
|
25
|
-
* @param {!Object} keysMap
|
|
26
|
-
* @param {!Object} obj
|
|
27
|
-
* @return {!Object} New object with renamed keys
|
|
28
|
-
* @see {@link https://github.com/ramda/ramda/wiki/Cookbook#rename-keys-of-an-object|Ramda Cookbook}, {@link RA.renameKeysWith|renameKeysWith}
|
|
29
|
-
* @example
|
|
30
|
-
*
|
|
31
|
-
* const input = { firstName: 'Elisia', age: 22, type: 'human' };
|
|
32
|
-
*
|
|
33
|
-
* RA.renameKeys({ firstName: 'name', type: 'kind', foo: 'bar' })(input);
|
|
34
|
-
* //=> { name: 'Elisia', age: 22, kind: 'human' }
|
|
35
|
-
*/
|
|
36
|
-
const renameKeys = curry((keysMap, obj) =>
|
|
37
|
-
renameKeysWith(valueOrKey(keysMap), obj)
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
export default renameKeys;
|
package/src/renameKeysWith.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { curry, toPairs, pipe, map, over, lensIndex, fromPairs } from 'ramda';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Creates a new object with the own properties of the provided object, but the
|
|
5
|
-
* keys renamed according to logic of renaming function.
|
|
6
|
-
*
|
|
7
|
-
* Keep in mind that in the case of keys conflict is behaviour undefined and
|
|
8
|
-
* the result may vary between various JS engines!
|
|
9
|
-
*
|
|
10
|
-
* @func renameKeysWith
|
|
11
|
-
* @memberOf RA
|
|
12
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/1.5.0|v1.5.0}
|
|
13
|
-
* @category Object
|
|
14
|
-
* @sig (a -> b) -> {a: *} -> {b: *}
|
|
15
|
-
* @param {Function} fn Function that renames the keys
|
|
16
|
-
* @param {!Object} obj Provided object
|
|
17
|
-
* @return {!Object} New object with renamed keys
|
|
18
|
-
* @see {@link https://github.com/ramda/ramda/wiki/Cookbook#rename-keys-of-an-object-by-a-function|Ramda Cookbook}, {@link RA.renameKeys|renameKeys}
|
|
19
|
-
* @example
|
|
20
|
-
*
|
|
21
|
-
* RA.renameKeysWith(R.concat('a'), { A: 1, B: 2, C: 3 }) //=> { aA: 1, aB: 2, aC: 3 }
|
|
22
|
-
*/
|
|
23
|
-
const renameKeysWith = curry((fn, obj) =>
|
|
24
|
-
pipe(toPairs, map(over(lensIndex(0), fn)), fromPairs)(obj)
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
export default renameKeysWith;
|
package/src/repeatStr.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { curry, invoker, flip } from 'ramda';
|
|
2
|
-
|
|
3
|
-
import ponyfill from './internal/ponyfills/String.repeat.js';
|
|
4
|
-
import isFunction from './isFunction.js';
|
|
5
|
-
|
|
6
|
-
export const repeatStrPonyfill = curry(ponyfill);
|
|
7
|
-
|
|
8
|
-
export const repeatStrInvoker = flip(invoker(1, 'repeat'));
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Constructs and returns a new string which contains the specified
|
|
12
|
-
* number of copies of the string on which it was called, concatenated together.
|
|
13
|
-
*
|
|
14
|
-
* @func repeatStr
|
|
15
|
-
* @memberOf RA
|
|
16
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/2.11.0|v2.11.0}
|
|
17
|
-
* @category List
|
|
18
|
-
* @sig String -> Number -> String
|
|
19
|
-
* @param {string} value String value to be repeated
|
|
20
|
-
* @param {number} count An integer between 0 and +∞: [0, +∞), indicating the number of times to repeat the string in the newly-created string that is to be returned
|
|
21
|
-
* @return {string} A new string containing the specified number of copies of the given string
|
|
22
|
-
* @example
|
|
23
|
-
*
|
|
24
|
-
* RA.repeatStr('a', 3); //=> 'aaa'
|
|
25
|
-
*/
|
|
26
|
-
const repeatStr = isFunction(String.prototype.repeat)
|
|
27
|
-
? repeatStrInvoker
|
|
28
|
-
: repeatStrPonyfill;
|
|
29
|
-
|
|
30
|
-
export default repeatStr;
|
package/src/replaceAll.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { curryN, invoker } from 'ramda';
|
|
2
|
-
|
|
3
|
-
import isFunction from './isFunction.js';
|
|
4
|
-
import ponyfill from './internal/ponyfills/String.replaceAll.js';
|
|
5
|
-
|
|
6
|
-
export const replaceAllPonyfill = curryN(3, ponyfill);
|
|
7
|
-
|
|
8
|
-
export const replaceAllInvoker = invoker(2, 'replaceAll');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Replaces all substring matches in a string with a replacement.
|
|
12
|
-
*
|
|
13
|
-
* @func replaceAll
|
|
14
|
-
* @memberOf RA
|
|
15
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/2.17.0|v2.17.0}
|
|
16
|
-
* @category String
|
|
17
|
-
* @sig String -> String -> String -> String
|
|
18
|
-
* @param {string} searchValue The substring or a global RegExp to match
|
|
19
|
-
* @param {string} replaceValue The string to replace the matches with
|
|
20
|
-
* @param {string} str The String to do the search and replacement in
|
|
21
|
-
* @return {string} A new string containing all the `searchValue` replaced with the `replaceValue`
|
|
22
|
-
* @throws {TypeError} When invalid arguments provided
|
|
23
|
-
* @see {@link http://ramdajs.com/docs/#replace|R.replace}, {@link https://github.com/tc39/proposal-string-replaceall|TC39 proposal}
|
|
24
|
-
* @example
|
|
25
|
-
*
|
|
26
|
-
* RA.replaceAll('ac', 'ef', 'ac ab ac ab'); //=> 'ef ab ef ab'
|
|
27
|
-
* RA.replaceAll('', '_', 'xxx'); //=> '_x_x_x_'
|
|
28
|
-
* RA.replaceAll(/x/g, 'v', 'xxx'); //=> 'vvv'
|
|
29
|
-
* RA.replaceAll(/x/, 'v', 'xxx'); //=> TypeError
|
|
30
|
-
*/
|
|
31
|
-
const replaceAll = isFunction(String.prototype.replaceAll)
|
|
32
|
-
? replaceAllInvoker
|
|
33
|
-
: replaceAllPonyfill;
|
|
34
|
-
|
|
35
|
-
export default replaceAll;
|
package/src/resolveP.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { bind } from 'ramda';
|
|
2
|
-
|
|
3
|
-
/* eslint-disable max-len */
|
|
4
|
-
/**
|
|
5
|
-
* Composable shortcut for `Promise.resolve`.
|
|
6
|
-
*
|
|
7
|
-
* Returns a Promise object that is resolved with the given value.
|
|
8
|
-
* If the value is a thenable (i.e. has a "then" method), the returned promise will
|
|
9
|
-
* "follow" that thenable, adopting its eventual state.
|
|
10
|
-
*
|
|
11
|
-
* @func resolveP
|
|
12
|
-
* @memberOf RA
|
|
13
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/1.16.0|v1.16.0}
|
|
14
|
-
* @category Function
|
|
15
|
-
* @sig a -> Promise a
|
|
16
|
-
* @param {*} [value=undefined] Argument to be resolved by this Promise. Can also be a Promise or a thenable to resolve
|
|
17
|
-
* @return {Promise} A Promise that is resolved with the given value, or the promise passed as value, if the value was a promise object
|
|
18
|
-
* @see {@link RA.rejectP|rejectP}
|
|
19
|
-
* @example
|
|
20
|
-
*
|
|
21
|
-
* RA.resolveP(); //=> Promise(undefined)
|
|
22
|
-
* RA.resolveP('a'); //=> Promise('a')
|
|
23
|
-
* RA.resolveP([1, 2, 3]); //=> Promise([1, 2, 3])
|
|
24
|
-
*/
|
|
25
|
-
/* eslint-enable max-len */
|
|
26
|
-
const resolveP = bind(Promise.resolve, Promise);
|
|
27
|
-
|
|
28
|
-
export default resolveP;
|
package/src/round.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { bind, curryN } from 'ramda';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Returns the value of a number rounded to the nearest integer.
|
|
5
|
-
*
|
|
6
|
-
* @func round
|
|
7
|
-
* @memberOf RA
|
|
8
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/2.15.0|v2.15.0}
|
|
9
|
-
* @category Math
|
|
10
|
-
* @sig Number -> Number
|
|
11
|
-
* @param {number} number The number to round
|
|
12
|
-
* @return {number} The value of the given number rounded to the nearest integer
|
|
13
|
-
* @example
|
|
14
|
-
*
|
|
15
|
-
* RA.round(0.9); //=> 1
|
|
16
|
-
* RA.round(5.95); //=> 6
|
|
17
|
-
* RA.round(5.5); //=> 6
|
|
18
|
-
* RA.round(5.05); //=> 5
|
|
19
|
-
* RA.round(-5.05); //=> -5
|
|
20
|
-
* RA.round(-5.5); //=> -5
|
|
21
|
-
* RA.round(-5.95); //=> -6
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
const round = curryN(1, bind(Math.round, Math));
|
|
25
|
-
|
|
26
|
-
export default round;
|
package/src/seq.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { curry, map, tap } from 'ramda';
|
|
2
|
-
|
|
3
|
-
/* eslint-disable max-len */
|
|
4
|
-
/**
|
|
5
|
-
* Runs the given list of functions in order with the supplied object, then returns the object.
|
|
6
|
-
* Also known as the normal order sequencing combinator.
|
|
7
|
-
*
|
|
8
|
-
* Acts as a transducer if a transformer is given as second parameter.
|
|
9
|
-
*
|
|
10
|
-
* @func seq
|
|
11
|
-
* @aliases sequencing
|
|
12
|
-
* @memberOf RA
|
|
13
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}
|
|
14
|
-
* @category Function
|
|
15
|
-
* @sig [(a -> *), (a -> *), ...] -> a -> a
|
|
16
|
-
* @param {Array} fns The list of functions to call in order with `x` whose return values will be thrown away
|
|
17
|
-
* @param {*} x
|
|
18
|
-
* @return {*} `x`
|
|
19
|
-
* @see {@link http://ramdajs.com/docs/#tap|R.tap}, {@link http://www.cs.rpi.edu/academics/courses/spring11/proglang/handouts/lambda-calculus-chapter.pdf|sequencing combinator explained}
|
|
20
|
-
* @example
|
|
21
|
-
*
|
|
22
|
-
* RA.seq([console.info, console.log])('foo'); //=> prints 'foo' via info then log
|
|
23
|
-
*
|
|
24
|
-
* // usage in composition
|
|
25
|
-
* R.pipe(
|
|
26
|
-
* R.concat('prefix '),
|
|
27
|
-
* RA.seq([
|
|
28
|
-
* console.info, //=> prints 'prefix test'
|
|
29
|
-
* console.log //=> prints 'prefix test'
|
|
30
|
-
* ]),
|
|
31
|
-
* R.toUpper
|
|
32
|
-
* )('test'); //=> 'PREFIX TEST'
|
|
33
|
-
*/
|
|
34
|
-
/* eslint-enable max-len */
|
|
35
|
-
|
|
36
|
-
const seq = curry((fns, x) => tap((tx) => map((fn) => fn(tx))(fns))(x));
|
|
37
|
-
|
|
38
|
-
export default seq;
|
package/src/sign.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { bind, curryN } from 'ramda';
|
|
2
|
-
|
|
3
|
-
import isFunction from './isFunction.js';
|
|
4
|
-
import ponyfill from './internal/ponyfills/Math.sign.js';
|
|
5
|
-
|
|
6
|
-
export const signPonyfill = curryN(1, ponyfill);
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Returns the sign of a number, indicating whether the number is positive, negative or zero.
|
|
10
|
-
*
|
|
11
|
-
* @func sign
|
|
12
|
-
* @memberOf RA
|
|
13
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/2.15.0|v2.15.0}
|
|
14
|
-
* @category Math
|
|
15
|
-
* @sig Number | String -> Number
|
|
16
|
-
* @param {number} number A number
|
|
17
|
-
* @return {number} A number representing the sign of the given argument. If the argument is a positive number, negative number, positive zero or negative zero, the function will return 1, -1, 0 or -0 respectively. Otherwise, NaN is returned
|
|
18
|
-
* @example
|
|
19
|
-
*
|
|
20
|
-
* RA.sign(3); // 1
|
|
21
|
-
* RA.sign(-3); // -1
|
|
22
|
-
* RA.sign('-3'); // -1
|
|
23
|
-
* RA.sign(0); // 0
|
|
24
|
-
* RA.sign(-0); // -0
|
|
25
|
-
* RA.sign(NaN); // NaN
|
|
26
|
-
* RA.sign('foo'); // NaN
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
const sign = isFunction(Math.sign)
|
|
30
|
-
? curryN(1, bind(Math.sign, Math))
|
|
31
|
-
: signPonyfill;
|
|
32
|
-
|
|
33
|
-
export default sign;
|
package/src/skipTake.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
curry,
|
|
3
|
-
addIndex,
|
|
4
|
-
filter,
|
|
5
|
-
pipe,
|
|
6
|
-
modulo,
|
|
7
|
-
identical,
|
|
8
|
-
nthArg,
|
|
9
|
-
__,
|
|
10
|
-
} from 'ramda';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* When given a number n and an array, returns an array containing every nth element.
|
|
14
|
-
*
|
|
15
|
-
* @func skipTake
|
|
16
|
-
* @memberOf RA
|
|
17
|
-
* @category List
|
|
18
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/2.26.0|v2.26.0}
|
|
19
|
-
* @sig Number -> [a] -> [a]
|
|
20
|
-
* @param {number} the nth element to extract
|
|
21
|
-
* @param {Array} value the input array
|
|
22
|
-
* @return {Array} An array containing every nth element
|
|
23
|
-
* @example
|
|
24
|
-
*
|
|
25
|
-
* RA.skipTake(2, [1,2,3,4]) //=> [1, 3]
|
|
26
|
-
* RA.skipTake(3, R.range(0, 20)); //=> [0, 3, 6, 9, 12, 15, 18]
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
const skipTake = curry((n, list) =>
|
|
30
|
-
addIndex(filter)(pipe(nthArg(1), modulo(__, n), identical(0)))(list)
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
export default skipTake;
|
package/src/sliceFrom.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { __, slice } from 'ramda';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Returns the elements of the given list or string (or object with a slice method)
|
|
5
|
-
* from fromIndex (inclusive).
|
|
6
|
-
* Dispatches to the slice method of the second argument, if present.
|
|
7
|
-
*
|
|
8
|
-
* @func sliceFrom
|
|
9
|
-
* @memberOf RA
|
|
10
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/1.16.0|v1.16.0}
|
|
11
|
-
* @category List
|
|
12
|
-
* @sig Number -> [a] -> [a]
|
|
13
|
-
* @param {number} fromIndex The start index (inclusive)
|
|
14
|
-
* @param {Array|string} list The list or string to slice
|
|
15
|
-
* @return {Array|string} The sliced list or string
|
|
16
|
-
* @see {@link http://ramdajs.com/docs/#slice|R.slice}, {@link RA.sliceTo|sliceTo}
|
|
17
|
-
* @example
|
|
18
|
-
*
|
|
19
|
-
* RA.sliceFrom(1, [1, 2, 3]); //=> [2, 3]
|
|
20
|
-
*/
|
|
21
|
-
const sliceFrom = slice(__, Infinity);
|
|
22
|
-
|
|
23
|
-
export default sliceFrom;
|
package/src/sliceTo.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { slice } from 'ramda';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Returns the elements of the given list or string (or object with a slice method)
|
|
5
|
-
* to toIndex (exclusive).
|
|
6
|
-
* Dispatches to the slice method of the second argument, if present.
|
|
7
|
-
*
|
|
8
|
-
* @func sliceTo
|
|
9
|
-
* @memberOf RA
|
|
10
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/1.16.0|v1.16.0}
|
|
11
|
-
* @category List
|
|
12
|
-
* @sig Number -> [a] -> [a]
|
|
13
|
-
* @param {number} toIndex The end index (exclusive)
|
|
14
|
-
* @param {Array|string} list The list or string to slice
|
|
15
|
-
* @return {Array|string} The sliced list or string
|
|
16
|
-
* @see {@link http://ramdajs.com/docs/#slice|R.slice}, {@link RA.sliceFrom|sliceFrom}
|
|
17
|
-
* @example
|
|
18
|
-
*
|
|
19
|
-
* RA.sliceTo(2, [1, 2, 3]); //=> [1, 2]
|
|
20
|
-
*/
|
|
21
|
-
const sliceTo = slice(0);
|
|
22
|
-
|
|
23
|
-
export default sliceTo;
|
package/src/sortByPaths.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { ascend, identity, map, path, pipe, sortWith, useWith } from 'ramda';
|
|
2
|
-
|
|
3
|
-
const pathToAscendSort = pipe(path, ascend);
|
|
4
|
-
const mapPathsToAscendSort = map(pathToAscendSort);
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Sort a list of objects by a list of paths (if first path value is equivalent, sort by second, etc).
|
|
8
|
-
*
|
|
9
|
-
* @func sortByPaths
|
|
10
|
-
* @memberOf RA
|
|
11
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/3.1.0|v3.1.0}
|
|
12
|
-
* @category List
|
|
13
|
-
* @sig [[k]] -> [{k: v}] -> [{k: v}]
|
|
14
|
-
* @param {Array.<Array.<string>>} paths A list of paths in the list param to sort by
|
|
15
|
-
* @param {Array.<object>} list A list of objects to be sorted
|
|
16
|
-
* @return {Array.<object>} A new list sorted by the paths in the paths param
|
|
17
|
-
* @example
|
|
18
|
-
*
|
|
19
|
-
* const alice = {
|
|
20
|
-
* name: 'Alice',
|
|
21
|
-
* address: {
|
|
22
|
-
* street: 31,
|
|
23
|
-
* zipCode: 97777,
|
|
24
|
-
* },
|
|
25
|
-
* };
|
|
26
|
-
* const bob = {
|
|
27
|
-
* name: 'Bob',
|
|
28
|
-
* address: {
|
|
29
|
-
* street: 31,
|
|
30
|
-
* zipCode: 55555,
|
|
31
|
-
* },
|
|
32
|
-
* };
|
|
33
|
-
* const clara = {
|
|
34
|
-
* name: 'Clara',
|
|
35
|
-
* address: {
|
|
36
|
-
* street: 32,
|
|
37
|
-
* zipCode: 90210,
|
|
38
|
-
* },
|
|
39
|
-
* };
|
|
40
|
-
* const people = [clara, bob, alice]
|
|
41
|
-
*
|
|
42
|
-
* RA.sortByPaths([
|
|
43
|
-
* ['address', 'street'],
|
|
44
|
-
* ['address', 'zipCode'],
|
|
45
|
-
* ], people); // => [bob, alice, clara]
|
|
46
|
-
*
|
|
47
|
-
* RA.sortByPaths([
|
|
48
|
-
* ['address', 'zipCode'],
|
|
49
|
-
* ['address', 'street'],
|
|
50
|
-
* ], people); // => [bob, clara, alice]
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
const sortByPaths = useWith(sortWith, [mapPathsToAscendSort, identity]);
|
|
54
|
-
|
|
55
|
-
export default sortByPaths;
|
package/src/sortByProp.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { __, append, identity, useWith } from 'ramda';
|
|
2
|
-
|
|
3
|
-
import sortByProps from './sortByProps.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Sort a list of objects by a property.
|
|
7
|
-
*
|
|
8
|
-
* @func sortByProp
|
|
9
|
-
* @memberOf RA
|
|
10
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/3.4.0|v3.4.0}
|
|
11
|
-
* @category List
|
|
12
|
-
* @sig k -> [{k: v}] -> [{k: v}]
|
|
13
|
-
* @param {Array.<string>} prop The property in the list param to sort by
|
|
14
|
-
* @param {Array.<object>} list A list of objects to be sorted
|
|
15
|
-
* @return {Array.<object>} A new list sorted by the property in the prop param
|
|
16
|
-
* @example
|
|
17
|
-
*
|
|
18
|
-
* // sorting list of tuples
|
|
19
|
-
* const sortByFirstItem = sortByProp(0);
|
|
20
|
-
* const listOfTuples = [[-1, 1], [-2, 2], [-3, 3]];
|
|
21
|
-
* sortByFirstItem(listOfTuples); // => [[-3, 3], [-2, 2], [-1, 1]]
|
|
22
|
-
*
|
|
23
|
-
* // sorting list of objects
|
|
24
|
-
* const sortByName = sortByProp('name');
|
|
25
|
-
* const alice = {
|
|
26
|
-
* name: 'ALICE',
|
|
27
|
-
* age: 101,
|
|
28
|
-
* };
|
|
29
|
-
* const bob = {
|
|
30
|
-
* name: 'Bob',
|
|
31
|
-
* age: -10,
|
|
32
|
-
* };
|
|
33
|
-
* const clara = {
|
|
34
|
-
* name: 'clara',
|
|
35
|
-
* age: 314.159,
|
|
36
|
-
* };
|
|
37
|
-
* const people = [clara, bob, alice];
|
|
38
|
-
* sortByName(people); // => [alice, bob, clara]
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
const addValueInAnArray = append(__, []);
|
|
42
|
-
|
|
43
|
-
const sortByProp = useWith(sortByProps, [addValueInAnArray, identity]);
|
|
44
|
-
|
|
45
|
-
export default sortByProp;
|
package/src/sortByProps.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { comparator, curry, either, lt, map, prop, reduce, sort } from 'ramda';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Sort a list of objects by a list of props (if first prop value is equivalent, sort by second, etc).
|
|
5
|
-
*
|
|
6
|
-
* @func sortByProps
|
|
7
|
-
* @memberOf RA
|
|
8
|
-
* @since {@link https://char0n.github.io/ramda-adjunct/2.26.0|v2.26.0}
|
|
9
|
-
* @category List
|
|
10
|
-
* @sig [k] -> [{k: v}] -> [{k: v}]
|
|
11
|
-
* @param {Array.<string>} props A list of properties in the list param to sort by
|
|
12
|
-
* @param {Array.<object>} list A list of objects to be sorted
|
|
13
|
-
* @return {Array.<object>} A new list sorted by the properties in the props param
|
|
14
|
-
* @example
|
|
15
|
-
*
|
|
16
|
-
* sortByProps(['num'], [{num: 3}, {num: 2}, {num: 1}])
|
|
17
|
-
* //=> [{num: 1}, {num: 2} {num: 3}]
|
|
18
|
-
* sortByProps(['letter', 'num'], [{num: 3, letter: 'a'}, {num: 2, letter: 'a'} {num: 1, letter: 'z'}])
|
|
19
|
-
* //=> [ {num: 2, letter: 'a'}, {num: 3, letter: 'a'}, {num: 1, letter: 'z'}]
|
|
20
|
-
* sortByProps(['name', 'num'], [{num: 3}, {num: 2}, {num: 1}])
|
|
21
|
-
* //=> [{num: 1}, {num: 2}, {num: 3}]
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
const sortByProps = curry((props, list) => {
|
|
25
|
-
const firstTruthy = ([head, ...tail]) => reduce(either, head, tail);
|
|
26
|
-
const makeComparator = (propName) =>
|
|
27
|
-
comparator((a, b) => lt(prop(propName, a), prop(propName, b)));
|
|
28
|
-
return sort(firstTruthy(map(makeComparator, props)), list);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
export default sortByProps;
|