rambda 9.4.2 → 10.0.0-beta.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 +177 -1
- package/README.md +6799 -11799
- package/dist/rambda.cjs +1795 -0
- package/dist/rambda.js +1162 -2234
- package/dist/rambda.umd.js +1801 -1
- package/immutable.d.ts +1154 -1403
- package/index.d.ts +1154 -1403
- package/package.json +102 -94
- package/rambda.js +24 -137
- package/src/_internals/baseSlice.js +5 -7
- package/src/_internals/createPath.js +4 -6
- package/src/_internals/includes.js +8 -4
- package/src/_internals/set.js +11 -11
- package/src/addProp.js +3 -0
- package/src/all.js +8 -6
- package/src/allPass.js +4 -4
- package/src/any.js +10 -10
- package/src/anyPass.js +4 -4
- package/src/append.js +6 -8
- package/src/ascend.js +8 -15
- package/src/checkObjectWithSpec.js +16 -0
- package/src/compact.js +12 -0
- package/src/complement.js +1 -1
- package/src/concat.js +2 -4
- package/src/count.js +7 -6
- package/src/countBy.js +13 -14
- package/src/createObjectFromKeys.js +10 -0
- package/src/defaultTo.js +4 -6
- package/src/descend.js +6 -13
- package/src/drop.js +4 -2
- package/src/dropLast.js +2 -8
- package/src/dropLastWhile.js +17 -26
- package/src/dropWhile.js +14 -22
- package/src/eqBy.js +3 -8
- package/src/eqProps.js +3 -9
- package/src/equals.js +99 -58
- package/src/evolve.js +3 -57
- package/src/excludes.js +5 -0
- package/src/filter.js +13 -43
- package/src/filterObject.js +13 -0
- package/src/find.js +10 -10
- package/src/findIndex.js +10 -10
- package/src/findLast.js +9 -9
- package/src/findLastIndex.js +9 -9
- package/src/findNth.js +16 -0
- package/src/flatMap.js +3 -0
- package/src/flatten.js +5 -5
- package/src/groupBy.js +14 -11
- package/src/head.js +5 -3
- package/src/includes.js +13 -11
- package/src/indexOf.js +2 -6
- package/src/init.js +6 -8
- package/src/innerJoin.js +11 -19
- package/src/interpolate.js +29 -0
- package/src/intersection.js +2 -4
- package/src/intersperse.js +13 -13
- package/src/join.js +2 -4
- package/src/last.js +4 -4
- package/src/lastIndexOf.js +2 -6
- package/src/map.js +9 -49
- package/src/mapAsync.js +11 -0
- package/src/mapKeys.js +11 -0
- package/src/mapObject.js +18 -0
- package/src/mapObjectAsync.js +10 -0
- package/src/mapParallelAsync.js +3 -0
- package/src/match.js +5 -5
- package/src/maxBy.js +2 -8
- package/src/merge.js +4 -1
- package/src/mergeTypes.js +3 -0
- package/src/minBy.js +2 -8
- package/src/modifyProp.js +20 -0
- package/src/none.js +8 -6
- package/src/objOf.js +2 -6
- package/src/objectIncludes.js +12 -0
- package/src/omit.js +26 -11
- package/src/partition.js +15 -42
- package/src/partitionObject.js +15 -0
- package/src/path.js +14 -15
- package/src/permutations.js +40 -0
- package/src/pick.js +15 -15
- package/src/pipe.js +70 -13
- package/src/pipeAsync.js +11 -0
- package/src/pluck.js +12 -14
- package/src/prepend.js +2 -6
- package/src/prop.js +2 -10
- package/src/propEq.js +8 -10
- package/src/propOr.js +7 -8
- package/src/propSatisfies.js +2 -9
- package/src/range.js +34 -11
- package/src/reduce.js +15 -30
- package/src/reject.js +2 -4
- package/src/rejectObject.js +13 -0
- package/src/replace.js +2 -8
- package/src/replaceItemAtIndex.js +15 -0
- package/src/shuffle.js +13 -0
- package/src/sort.js +2 -4
- package/src/sortBy.js +12 -10
- package/src/sortObject.js +15 -0
- package/src/sortWith.js +12 -16
- package/src/split.js +2 -4
- package/src/splitEvery.js +11 -13
- package/src/symmetricDifference.js +5 -8
- package/src/tail.js +2 -2
- package/src/take.js +11 -9
- package/src/takeLast.js +14 -14
- package/src/takeLastWhile.js +15 -16
- package/src/takeWhile.js +12 -21
- package/src/tap.js +5 -5
- package/src/test.js +2 -8
- package/src/tryCatch.js +5 -14
- package/src/type.js +6 -5
- package/src/union.js +10 -8
- package/src/uniq.js +2 -2
- package/src/uniqBy.js +5 -6
- package/src/uniqWith.js +15 -19
- package/src/unless.js +7 -9
- package/src/unwind.js +6 -14
- package/src/update.js +8 -11
- package/src/when.js +7 -9
- package/src/zip.js +8 -8
- package/src/zipWith.js +5 -7
- package/src/F.js +0 -3
- package/src/T.js +0 -3
- package/src/_internals/_arity.js +0 -64
- package/src/_internals/compare.js +0 -3
- package/src/_internals/constants.js +0 -1
- package/src/_internals/createPathInput.js +0 -7
- package/src/_internals/isFalsy.js +0 -13
- package/src/_internals/isInteger.js +0 -10
- package/src/_internals/isIterable.js +0 -5
- package/src/_internals/isObject.js +0 -5
- package/src/_internals/isTruthy.js +0 -13
- package/src/_internals/objectIs.js +0 -9
- package/src/_internals/utils.js +0 -21
- package/src/add.js +0 -5
- package/src/addIndex.js +0 -23
- package/src/addIndexRight.js +0 -9
- package/src/adjust.js +0 -16
- package/src/always.js +0 -3
- package/src/and.js +0 -5
- package/src/ap.js +0 -7
- package/src/aperture.js +0 -15
- package/src/apply.js +0 -7
- package/src/applySpec.js +0 -132
- package/src/applyTo.js +0 -7
- package/src/assoc.js +0 -11
- package/src/assocPath.js +0 -46
- package/src/binary.js +0 -5
- package/src/bind.js +0 -9
- package/src/both.js +0 -5
- package/src/call.js +0 -1
- package/src/chain.js +0 -7
- package/src/clamp.js +0 -15
- package/src/clone.js +0 -18
- package/src/collectBy.js +0 -27
- package/src/comparator.js +0 -5
- package/src/compose.js +0 -9
- package/src/composeWith.js +0 -33
- package/src/cond.js +0 -14
- package/src/converge.js +0 -18
- package/src/curry.js +0 -7
- package/src/curryN.js +0 -40
- package/src/dec.js +0 -1
- package/src/difference.js +0 -8
- package/src/differenceWith.js +0 -20
- package/src/dissoc.js +0 -13
- package/src/dissocPath.js +0 -47
- package/src/divide.js +0 -5
- package/src/dropRepeats.js +0 -20
- package/src/dropRepeatsBy.js +0 -21
- package/src/dropRepeatsWith.js +0 -28
- package/src/either.js +0 -8
- package/src/empty.js +0 -15
- package/src/endsWith.js +0 -23
- package/src/flip.js +0 -23
- package/src/forEach.js +0 -19
- package/src/forEachObjIndexed.js +0 -24
- package/src/fromPairs.js +0 -6
- package/src/groupWith.js +0 -46
- package/src/gt.js +0 -6
- package/src/gte.js +0 -6
- package/src/has.js +0 -7
- package/src/hasIn.js +0 -9
- package/src/hasPath.js +0 -9
- package/src/identical.js +0 -7
- package/src/identity.js +0 -3
- package/src/ifElse.js +0 -17
- package/src/inc.js +0 -1
- package/src/indexBy.js +0 -29
- package/src/insert.js +0 -11
- package/src/insertAll.js +0 -7
- package/src/is.js +0 -8
- package/src/isEmpty.js +0 -18
- package/src/isNil.js +0 -3
- package/src/isNotEmpty.js +0 -5
- package/src/isNotNil.js +0 -3
- package/src/isPromise.js +0 -5
- package/src/juxt.js +0 -3
- package/src/keys.js +0 -3
- package/src/length.js +0 -8
- package/src/lens.js +0 -7
- package/src/lensIndex.js +0 -7
- package/src/lensPath.js +0 -7
- package/src/lensProp.js +0 -7
- package/src/lt.js +0 -6
- package/src/lte.js +0 -6
- package/src/mathMod.js +0 -8
- package/src/max.js +0 -5
- package/src/maybe.js +0 -13
- package/src/mean.js +0 -5
- package/src/median.js +0 -17
- package/src/mergeAll.js +0 -11
- package/src/mergeDeepLeft.js +0 -5
- package/src/mergeDeepRight.js +0 -24
- package/src/mergeLeft.js +0 -7
- package/src/mergeRight.js +0 -8
- package/src/mergeWith.js +0 -25
- package/src/min.js +0 -5
- package/src/modify.js +0 -23
- package/src/modifyPath.js +0 -33
- package/src/modulo.js +0 -5
- package/src/move.js +0 -19
- package/src/multiply.js +0 -5
- package/src/negate.js +0 -3
- package/src/not.js +0 -3
- package/src/nth.js +0 -9
- package/src/of.js +0 -3
- package/src/on.js +0 -16
- package/src/once.js +0 -24
- package/src/or.js +0 -5
- package/src/over.js +0 -14
- package/src/partial.js +0 -17
- package/src/partialObject.js +0 -5
- package/src/pathEq.js +0 -11
- package/src/pathOr.js +0 -11
- package/src/pathSatisfies.js +0 -9
- package/src/paths.js +0 -9
- package/src/pickAll.js +0 -23
- package/src/pickBy.js +0 -11
- package/src/product.js +0 -4
- package/src/propIs.js +0 -10
- package/src/props.js +0 -13
- package/src/reduceBy.js +0 -29
- package/src/removeIndex.js +0 -7
- package/src/repeat.js +0 -7
- package/src/reverse.js +0 -9
- package/src/set.js +0 -9
- package/src/slice.js +0 -9
- package/src/splitAt.js +0 -21
- package/src/splitWhen.js +0 -25
- package/src/startsWith.js +0 -23
- package/src/subtract.js +0 -5
- package/src/sum.js +0 -3
- package/src/swap.js +0 -42
- package/src/times.js +0 -12
- package/src/toLower.js +0 -3
- package/src/toPairs.js +0 -3
- package/src/toString.js +0 -3
- package/src/toUpper.js +0 -3
- package/src/transpose.js +0 -10
- package/src/trim.js +0 -3
- package/src/unapply.js +0 -5
- package/src/unnest.js +0 -9
- package/src/values.js +0 -6
- package/src/view.js +0 -10
- package/src/where.js +0 -15
- package/src/whereAny.js +0 -12
- package/src/whereEq.js +0 -14
- package/src/without.js +0 -15
- package/src/xor.js +0 -5
- package/src/zipObj.js +0 -13
package/src/reduce.js
CHANGED
|
@@ -1,36 +1,21 @@
|
|
|
1
1
|
import { isArray } from './_internals/isArray.js'
|
|
2
|
-
import { curry } from './curry.js'
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return acc
|
|
15
|
-
}
|
|
16
|
-
if (!isArray(list)){
|
|
17
|
-
throw new TypeError('reduce: list must be array or iterable')
|
|
18
|
-
}
|
|
19
|
-
let index = 0
|
|
20
|
-
const len = list.length
|
|
3
|
+
export function reduce(reducer, acc) {
|
|
4
|
+
return list => {
|
|
5
|
+
if (list == null) {
|
|
6
|
+
return acc
|
|
7
|
+
}
|
|
8
|
+
if (!isArray(list)) {
|
|
9
|
+
throw new TypeError('reduce: list must be array or iterable')
|
|
10
|
+
}
|
|
11
|
+
let index = 0
|
|
12
|
+
const len = list.length
|
|
21
13
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
)
|
|
26
|
-
if (acc instanceof ReduceStopper){
|
|
27
|
-
return acc.value
|
|
14
|
+
while (index < len) {
|
|
15
|
+
acc = reducer(acc, list[index], index, list)
|
|
16
|
+
index++
|
|
28
17
|
}
|
|
29
|
-
index++
|
|
30
|
-
}
|
|
31
18
|
|
|
32
|
-
|
|
19
|
+
return acc
|
|
20
|
+
}
|
|
33
21
|
}
|
|
34
|
-
|
|
35
|
-
export const reduce = curry(reduceFn)
|
|
36
|
-
export const reduceStopper = value => new ReduceStopper(value)
|
package/src/reject.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { filter } from './filter.js'
|
|
2
2
|
|
|
3
|
-
export function reject(predicate
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return filter(x => !predicate(x), list)
|
|
3
|
+
export function reject(predicate) {
|
|
4
|
+
return list => filter(x => !predicate(x))(list)
|
|
7
5
|
}
|
package/src/replace.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function replaceFn(
|
|
4
|
-
pattern, replacer, str
|
|
5
|
-
){
|
|
6
|
-
return str.replace(pattern, replacer)
|
|
1
|
+
export function replace(pattern, replacer) {
|
|
2
|
+
return str => str.replace(pattern, replacer)
|
|
7
3
|
}
|
|
8
|
-
|
|
9
|
-
export const replace = curry(replaceFn)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { cloneList } from './_internals/cloneList.js'
|
|
2
|
+
|
|
3
|
+
export function replaceItemAtIndex(index, replaceFn) {
|
|
4
|
+
return list => {
|
|
5
|
+
const actualIndex = index < 0 ? list.length + index : index
|
|
6
|
+
if (index >= list.length || actualIndex < 0) {
|
|
7
|
+
return list
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const clone = cloneList(list)
|
|
11
|
+
clone[actualIndex] = replaceFn(clone[actualIndex])
|
|
12
|
+
|
|
13
|
+
return clone
|
|
14
|
+
}
|
|
15
|
+
}
|
package/src/shuffle.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function shuffle(listInput) {
|
|
2
|
+
const list = cloneList(listInput)
|
|
3
|
+
let counter = list.length
|
|
4
|
+
while (counter > 0) {
|
|
5
|
+
const index = Math.floor(Math.random() * counter)
|
|
6
|
+
counter--
|
|
7
|
+
const temp = list[counter]
|
|
8
|
+
list[counter] = list[index]
|
|
9
|
+
list[index] = temp
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return list
|
|
13
|
+
}
|
package/src/sort.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { cloneList } from './_internals/cloneList.js'
|
|
2
2
|
|
|
3
|
-
export function sort(sortFn
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return cloneList(list).sort(sortFn)
|
|
3
|
+
export function sort(sortFn) {
|
|
4
|
+
return list => cloneList(list).sort(sortFn)
|
|
7
5
|
}
|
package/src/sortBy.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { cloneList } from './_internals/cloneList.js'
|
|
2
2
|
|
|
3
|
-
export function sortBy(sortFn
|
|
4
|
-
|
|
3
|
+
export function sortBy(sortFn) {
|
|
4
|
+
return list => {
|
|
5
|
+
const clone = cloneList(list)
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
return clone.sort((a, b) => {
|
|
8
|
+
const aSortResult = sortFn(a)
|
|
9
|
+
const bSortResult = sortFn(b)
|
|
7
10
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
if (aSortResult === bSortResult) {
|
|
12
|
+
return 0
|
|
13
|
+
}
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
})
|
|
15
|
+
return aSortResult < bSortResult ? -1 : 1
|
|
16
|
+
})
|
|
17
|
+
}
|
|
16
18
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { sort } from './sort.js'
|
|
2
|
+
|
|
3
|
+
export function sortObject(predicate) {
|
|
4
|
+
return obj => {
|
|
5
|
+
const keys = Object.keys(obj)
|
|
6
|
+
const sortedKeys = sort((a, b) => predicate(a, b, obj[a], obj[b]))(keys)
|
|
7
|
+
|
|
8
|
+
const toReturn = {}
|
|
9
|
+
sortedKeys.forEach(singleKey => {
|
|
10
|
+
toReturn[singleKey] = obj[singleKey]
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
return toReturn
|
|
14
|
+
}
|
|
15
|
+
}
|
package/src/sortWith.js
CHANGED
|
@@ -1,27 +1,23 @@
|
|
|
1
|
-
function sortHelper(
|
|
2
|
-
a, b, listOfSortingFns
|
|
3
|
-
){
|
|
1
|
+
function sortHelper(a, b, listOfSortingFns) {
|
|
4
2
|
let result = 0
|
|
5
3
|
let i = 0
|
|
6
|
-
while (result === 0 && i < listOfSortingFns.length){
|
|
7
|
-
result = listOfSortingFns[
|
|
4
|
+
while (result === 0 && i < listOfSortingFns.length) {
|
|
5
|
+
result = listOfSortingFns[i](a, b)
|
|
8
6
|
i += 1
|
|
9
7
|
}
|
|
10
8
|
|
|
11
9
|
return result
|
|
12
10
|
}
|
|
13
11
|
|
|
14
|
-
export function sortWith(listOfSortingFns
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
export function sortWith(listOfSortingFns) {
|
|
13
|
+
return list => {
|
|
14
|
+
if (Array.isArray(list) === false) {
|
|
15
|
+
return []
|
|
16
|
+
}
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const clone = list.slice()
|
|
19
|
+
clone.sort((a, b) => sortHelper(a, b, listOfSortingFns))
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
a, b, listOfSortingFns
|
|
24
|
-
))
|
|
25
|
-
|
|
26
|
-
return clone
|
|
21
|
+
return clone
|
|
22
|
+
}
|
|
27
23
|
}
|
package/src/split.js
CHANGED
package/src/splitEvery.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
export function splitEvery(sliceLength
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export function splitEvery(sliceLength) {
|
|
2
|
+
return list => {
|
|
3
|
+
if (sliceLength < 1) {
|
|
4
|
+
throw new Error('First argument to splitEvery must be a positive integer')
|
|
5
|
+
}
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
7
|
+
const willReturn = []
|
|
8
|
+
let counter = 0
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
while (counter < list.length) {
|
|
11
|
+
willReturn.push(list.slice(counter, (counter += sliceLength)))
|
|
12
|
+
}
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
willReturn.push(listOrString.slice(counter, counter += sliceLength))
|
|
14
|
+
return willReturn
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
return willReturn
|
|
18
16
|
}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { concat } from './concat.js'
|
|
2
1
|
import { filter } from './filter.js'
|
|
3
2
|
import { includes } from './includes.js'
|
|
4
3
|
|
|
5
|
-
export function symmetricDifference(x
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return concat(filter(value => !includes(value, y), x),
|
|
11
|
-
filter(value => !includes(value, x), y))
|
|
4
|
+
export function symmetricDifference(x) {
|
|
5
|
+
return y => [
|
|
6
|
+
...filter(value => !includes(value)(y))(x),
|
|
7
|
+
...filter(value => !includes(value)(x))(y),
|
|
8
|
+
]
|
|
12
9
|
}
|
package/src/tail.js
CHANGED
package/src/take.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import baseSlice from './_internals/baseSlice.js'
|
|
1
|
+
import { baseSlice } from './_internals/baseSlice.js'
|
|
2
2
|
|
|
3
|
-
export function take(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
export function take(numberOfItems) {
|
|
4
|
+
return input => {
|
|
5
|
+
if (numberOfItems < 0) {
|
|
6
|
+
return input.slice()
|
|
7
|
+
}
|
|
8
|
+
if (typeof input === 'string') {
|
|
9
|
+
return input.slice(0, numberOfItems)
|
|
10
|
+
}
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
)
|
|
12
|
+
return baseSlice(input, 0, numberOfItems)
|
|
13
|
+
}
|
|
12
14
|
}
|
package/src/takeLast.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import baseSlice from './_internals/baseSlice.js'
|
|
1
|
+
import { baseSlice } from './_internals/baseSlice.js'
|
|
2
2
|
|
|
3
|
-
export function takeLast(
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export function takeLast(numberOfItems) {
|
|
4
|
+
return input => {
|
|
5
|
+
const len = input.length
|
|
6
|
+
if (numberOfItems < 0) {
|
|
7
|
+
return input.slice()
|
|
8
|
+
}
|
|
9
|
+
let numValue = numberOfItems > len ? len : numberOfItems
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
if (typeof input === 'string') {
|
|
12
|
+
return input.slice(len - numValue)
|
|
13
|
+
}
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
return listOrString.slice(len - numValue)
|
|
15
|
+
numValue = len - numValue
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return baseSlice(
|
|
17
|
-
listOrString, numValue, len
|
|
18
|
-
)
|
|
17
|
+
return baseSlice(input, numValue, len)
|
|
18
|
+
}
|
|
19
19
|
}
|
package/src/takeLastWhile.js
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
if (input.length === 0) return input
|
|
1
|
+
export function takeLastWhile(predicate) {
|
|
2
|
+
return input => {
|
|
3
|
+
if (input.length === 0) {
|
|
4
|
+
return input
|
|
5
|
+
}
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const toReturn = []
|
|
8
|
+
let counter = input.length
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
while (counter) {
|
|
11
|
+
const item = input[--counter]
|
|
12
|
+
if (!predicate(item)) {
|
|
13
|
+
break
|
|
14
|
+
}
|
|
15
|
+
toReturn.push(item)
|
|
16
16
|
}
|
|
17
|
-
toReturn.push(item)
|
|
18
|
-
}
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
return toReturn.reverse()
|
|
19
|
+
}
|
|
21
20
|
}
|
package/src/takeWhile.js
CHANGED
|
@@ -1,24 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const toReturn = []
|
|
13
|
-
let counter = 0
|
|
14
|
-
|
|
15
|
-
while (counter < iterable.length){
|
|
16
|
-
const item = iterable[ counter++ ]
|
|
17
|
-
if (!predicate(item)){
|
|
18
|
-
break
|
|
1
|
+
export function takeWhile(predicate) {
|
|
2
|
+
return iterable => {
|
|
3
|
+
const toReturn = []
|
|
4
|
+
let counter = 0
|
|
5
|
+
|
|
6
|
+
while (counter < iterable.length) {
|
|
7
|
+
const item = iterable[counter++]
|
|
8
|
+
if (!predicate(item)) {
|
|
9
|
+
break
|
|
10
|
+
}
|
|
11
|
+
toReturn.push(item)
|
|
19
12
|
}
|
|
20
|
-
toReturn
|
|
13
|
+
return toReturn
|
|
21
14
|
}
|
|
22
|
-
|
|
23
|
-
return isArray ? toReturn : toReturn.join('')
|
|
24
15
|
}
|
package/src/tap.js
CHANGED
package/src/test.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
export function test(pattern
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
if (typeof pattern === 'string'){
|
|
5
|
-
throw new TypeError(`R.test requires a value of type RegExp as its first argument; received "${ pattern }"`)
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
return str.search(pattern) !== -1
|
|
1
|
+
export function test(pattern) {
|
|
2
|
+
return str => str.search(pattern) !== -1
|
|
9
3
|
}
|
package/src/tryCatch.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const isFunction = x => [ 'Promise', 'Function' ].includes(type(x))
|
|
4
|
-
|
|
5
|
-
export function tryCatch(fn, fallback){
|
|
6
|
-
if (!isFunction(fn)){
|
|
7
|
-
throw new Error(`R.tryCatch | fn '${ fn }'`)
|
|
8
|
-
}
|
|
9
|
-
const passFallback = isFunction(fallback)
|
|
10
|
-
|
|
11
|
-
return (...inputs) => {
|
|
1
|
+
export function tryCatch(fn, fallback) {
|
|
2
|
+
return input => {
|
|
12
3
|
try {
|
|
13
|
-
return fn(
|
|
14
|
-
} catch (e){
|
|
15
|
-
return
|
|
4
|
+
return fn(input)
|
|
5
|
+
} catch (e) {
|
|
6
|
+
return fallback
|
|
16
7
|
}
|
|
17
8
|
}
|
|
18
9
|
}
|
package/src/type.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
export function type(input){
|
|
2
|
-
if (input === null){
|
|
1
|
+
export function type(input) {
|
|
2
|
+
if (input === null) {
|
|
3
3
|
return 'Null'
|
|
4
|
-
}
|
|
4
|
+
}
|
|
5
|
+
if (input === undefined) {
|
|
5
6
|
return 'Undefined'
|
|
6
|
-
}
|
|
7
|
+
}
|
|
8
|
+
if (Number.isNaN(input)) {
|
|
7
9
|
return 'NaN'
|
|
8
10
|
}
|
|
9
11
|
const typeResult = Object.prototype.toString.call(input).slice(8, -1)
|
|
10
|
-
|
|
11
12
|
return typeResult === 'AsyncFunction' ? 'Promise' : typeResult
|
|
12
13
|
}
|
package/src/union.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { cloneList } from './_internals/cloneList.js'
|
|
2
2
|
import { includes } from './includes.js'
|
|
3
3
|
|
|
4
|
-
export function union(x
|
|
5
|
-
|
|
4
|
+
export function union(x) {
|
|
5
|
+
return y => {
|
|
6
|
+
const toReturn = cloneList(x)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
y.forEach(yInstance => {
|
|
9
|
+
if (!includes(yInstance)(x)) {
|
|
10
|
+
toReturn.push(yInstance)
|
|
11
|
+
}
|
|
12
|
+
})
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
return toReturn
|
|
14
|
+
return toReturn
|
|
15
|
+
}
|
|
14
16
|
}
|
package/src/uniq.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { _Set } from './_internals/set.js'
|
|
2
2
|
|
|
3
|
-
export function uniq(list){
|
|
3
|
+
export function uniq(list) {
|
|
4
4
|
const set = new _Set()
|
|
5
5
|
const willReturn = []
|
|
6
6
|
list.forEach(item => {
|
|
7
|
-
if (set.checkUniqueness(item)){
|
|
7
|
+
if (set.checkUniqueness(item)) {
|
|
8
8
|
willReturn.push(item)
|
|
9
9
|
}
|
|
10
10
|
})
|
package/src/uniqBy.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { _Set } from '../src/_internals/set.js'
|
|
2
2
|
|
|
3
|
-
export function uniqBy(fn
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
const set = new _Set()
|
|
3
|
+
export function uniqBy(fn) {
|
|
4
|
+
return list => {
|
|
5
|
+
const set = new _Set()
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
return list.filter(item => set.checkUniqueness(fn(item)))
|
|
8
|
+
}
|
|
10
9
|
}
|
package/src/uniqWith.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
function includesWith(
|
|
2
|
-
predicate, target, list
|
|
3
|
-
){
|
|
1
|
+
function includesWith(predicate, target, list) {
|
|
4
2
|
let willReturn = false
|
|
5
3
|
let index = -1
|
|
6
4
|
|
|
7
|
-
while (++index < list.length && !willReturn){
|
|
8
|
-
const value = list[
|
|
5
|
+
while (++index < list.length && !willReturn) {
|
|
6
|
+
const value = list[index]
|
|
9
7
|
|
|
10
|
-
if (predicate(target, value)){
|
|
8
|
+
if (predicate(target, value)) {
|
|
11
9
|
willReturn = true
|
|
12
10
|
}
|
|
13
11
|
}
|
|
@@ -15,21 +13,19 @@ function includesWith(
|
|
|
15
13
|
return willReturn
|
|
16
14
|
}
|
|
17
15
|
|
|
18
|
-
export function uniqWith(predicate
|
|
19
|
-
|
|
16
|
+
export function uniqWith(predicate) {
|
|
17
|
+
return list => {
|
|
18
|
+
let index = -1
|
|
19
|
+
const willReturn = []
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
while (++index < list.length){
|
|
25
|
-
const value = list[ index ]
|
|
21
|
+
while (++index < list.length) {
|
|
22
|
+
const value = list[index]
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
willReturn.push(value)
|
|
24
|
+
if (!includesWith(predicate, value, willReturn)) {
|
|
25
|
+
willReturn.push(value)
|
|
26
|
+
}
|
|
31
27
|
}
|
|
32
|
-
}
|
|
33
28
|
|
|
34
|
-
|
|
29
|
+
return willReturn
|
|
30
|
+
}
|
|
35
31
|
}
|
package/src/unless.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
export function unless(predicate, whenFalseFn) {
|
|
2
|
+
return input => {
|
|
3
|
+
if (predicate(input)) {
|
|
4
|
+
return input
|
|
5
|
+
}
|
|
2
6
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
){
|
|
6
|
-
if (predicate(input)) return input
|
|
7
|
-
|
|
8
|
-
return whenFalseFn(input)
|
|
7
|
+
return whenFalseFn(input)
|
|
8
|
+
}
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
export const unless = curry(unlessFn)
|
package/src/unwind.js
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
export function unwind(property) {
|
|
2
|
+
return obj => {
|
|
3
|
+
return obj[property].map(x => ({
|
|
4
|
+
...obj,
|
|
5
|
+
[property]: x,
|
|
6
|
+
}))
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
if (!isArray(obj[ property ])) return [ obj ]
|
|
10
|
-
|
|
11
|
-
return mapArray(x => ({
|
|
12
|
-
...obj,
|
|
13
|
-
[ property ] : x,
|
|
14
|
-
}),
|
|
15
|
-
obj[ property ])
|
|
16
8
|
}
|