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/compose.js
DELETED
package/src/composeWith.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { _arity } from './_internals/_arity.js'
|
|
2
|
-
import { head } from './head.js'
|
|
3
|
-
import { identity } from './identity.js'
|
|
4
|
-
import { reduce } from './reduce.js'
|
|
5
|
-
import { reverse } from './reverse.js'
|
|
6
|
-
import { tail } from './tail.js'
|
|
7
|
-
|
|
8
|
-
export function pipeWith(xf, list){
|
|
9
|
-
if (list.length <= 0){
|
|
10
|
-
return identity
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const headList = head(list)
|
|
14
|
-
const tailList = tail(list)
|
|
15
|
-
|
|
16
|
-
return _arity(headList.length, function (){
|
|
17
|
-
return reduce(
|
|
18
|
-
function (result, f){
|
|
19
|
-
return xf.call(
|
|
20
|
-
this, f, result
|
|
21
|
-
)
|
|
22
|
-
},
|
|
23
|
-
headList.apply(this, arguments),
|
|
24
|
-
tailList
|
|
25
|
-
)
|
|
26
|
-
})
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function composeWith(xf, list){
|
|
30
|
-
if (arguments.length === 1) return _list => composeWith(xf, _list)
|
|
31
|
-
|
|
32
|
-
return pipeWith.apply(this, [ xf, reverse(list) ])
|
|
33
|
-
}
|
package/src/cond.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export function cond(conditions){
|
|
2
|
-
return (...input) => {
|
|
3
|
-
let done = false
|
|
4
|
-
let toReturn
|
|
5
|
-
conditions.forEach(([ predicate, getResult ]) => {
|
|
6
|
-
if (!done && predicate(...input)){
|
|
7
|
-
done = true
|
|
8
|
-
toReturn = getResult(...input)
|
|
9
|
-
}
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
return toReturn
|
|
13
|
-
}
|
|
14
|
-
}
|
package/src/converge.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { curryN } from './curryN.js'
|
|
2
|
-
import { map } from './map.js'
|
|
3
|
-
import { max } from './max.js'
|
|
4
|
-
import { reduce } from './reduce.js'
|
|
5
|
-
|
|
6
|
-
export function converge(fn, transformers){
|
|
7
|
-
if (arguments.length === 1)
|
|
8
|
-
return _transformers => converge(fn, _transformers)
|
|
9
|
-
|
|
10
|
-
const highestArity = reduce(
|
|
11
|
-
(a, b) => max(a, b.length), 0, transformers
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
return curryN(highestArity, function (){
|
|
15
|
-
return fn.apply(this,
|
|
16
|
-
map(g => g.apply(this, arguments), transformers))
|
|
17
|
-
})
|
|
18
|
-
}
|
package/src/curry.js
DELETED
package/src/curryN.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { _arity } from './_internals/_arity.js'
|
|
2
|
-
|
|
3
|
-
function _curryN(
|
|
4
|
-
n, cache, fn
|
|
5
|
-
){
|
|
6
|
-
return function (){
|
|
7
|
-
let ci = 0
|
|
8
|
-
let ai = 0
|
|
9
|
-
const cl = cache.length
|
|
10
|
-
const al = arguments.length
|
|
11
|
-
const args = new Array(cl + al)
|
|
12
|
-
while (ci < cl){
|
|
13
|
-
args[ ci ] = cache[ ci ]
|
|
14
|
-
ci++
|
|
15
|
-
}
|
|
16
|
-
while (ai < al){
|
|
17
|
-
args[ cl + ai ] = arguments[ ai ]
|
|
18
|
-
ai++
|
|
19
|
-
}
|
|
20
|
-
const remaining = n - args.length
|
|
21
|
-
|
|
22
|
-
return args.length >= n ?
|
|
23
|
-
fn.apply(this, args) :
|
|
24
|
-
_arity(remaining, _curryN(
|
|
25
|
-
n, args, fn
|
|
26
|
-
))
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export function curryN(n, fn){
|
|
31
|
-
if (arguments.length === 1) return _fn => curryN(n, _fn)
|
|
32
|
-
|
|
33
|
-
if (n > 10){
|
|
34
|
-
throw new Error('First argument to _arity must be a non-negative integer no greater than ten')
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return _arity(n, _curryN(
|
|
38
|
-
n, [], fn
|
|
39
|
-
))
|
|
40
|
-
}
|
package/src/dec.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const dec = x => x - 1
|
package/src/difference.js
DELETED
package/src/differenceWith.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { curry } from './curry.js'
|
|
2
|
-
import { _indexOf } from './equals.js'
|
|
3
|
-
|
|
4
|
-
export function differenceWithFn(
|
|
5
|
-
fn, a, b
|
|
6
|
-
){
|
|
7
|
-
const willReturn = []
|
|
8
|
-
const [ first, second ] = a.length >= b.length ? [ a, b ] : [ b, a ]
|
|
9
|
-
|
|
10
|
-
first.forEach(item => {
|
|
11
|
-
const hasItem = second.some(secondItem => fn(item, secondItem))
|
|
12
|
-
if (!hasItem && _indexOf(item, willReturn) === -1){
|
|
13
|
-
willReturn.push(item)
|
|
14
|
-
}
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
return willReturn
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export const differenceWith = curry(differenceWithFn)
|
package/src/dissoc.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function dissoc(prop, obj){
|
|
2
|
-
if (arguments.length === 1) return _obj => dissoc(prop, _obj)
|
|
3
|
-
|
|
4
|
-
if (obj === null || obj === undefined) return {}
|
|
5
|
-
|
|
6
|
-
const willReturn = {}
|
|
7
|
-
for (const p in obj){
|
|
8
|
-
willReturn[ p ] = obj[ p ]
|
|
9
|
-
}
|
|
10
|
-
delete willReturn[ prop ]
|
|
11
|
-
|
|
12
|
-
return willReturn
|
|
13
|
-
}
|
package/src/dissocPath.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { createPath } from '../src/_internals/createPath.js'
|
|
2
|
-
import { isArray } from './_internals/isArray.js'
|
|
3
|
-
import { isIndexInteger } from './_internals/isInteger.js'
|
|
4
|
-
import { omit } from './omit.js'
|
|
5
|
-
import { path } from './path.js'
|
|
6
|
-
import { removeIndex } from './removeIndex.js'
|
|
7
|
-
import { update } from './update.js'
|
|
8
|
-
|
|
9
|
-
export function dissocPath(pathInput, input){
|
|
10
|
-
if (arguments.length === 1) return _obj => dissocPath(pathInput, _obj)
|
|
11
|
-
|
|
12
|
-
const pathArrValue = createPath(pathInput)
|
|
13
|
-
// this {...input} spread could be done to satisfy ramda specs, but this is done on so many places
|
|
14
|
-
// TODO: add warning that Rambda simply returns input if path is empty
|
|
15
|
-
if (pathArrValue.length === 0) return input
|
|
16
|
-
|
|
17
|
-
const pathResult = path(pathArrValue, input)
|
|
18
|
-
if (pathResult === undefined) return input
|
|
19
|
-
|
|
20
|
-
const index = pathArrValue[ 0 ]
|
|
21
|
-
const condition =
|
|
22
|
-
typeof input !== 'object' ||
|
|
23
|
-
input === null ||
|
|
24
|
-
!input.hasOwnProperty(index)
|
|
25
|
-
if (pathArrValue.length > 1){
|
|
26
|
-
const nextInput = condition ?
|
|
27
|
-
isIndexInteger(pathArrValue[ 1 ]) ?
|
|
28
|
-
[] :
|
|
29
|
-
{} :
|
|
30
|
-
input[ index ]
|
|
31
|
-
const nextPathInput = Array.prototype.slice.call(pathArrValue, 1)
|
|
32
|
-
const intermediateResult = dissocPath(
|
|
33
|
-
nextPathInput, nextInput, input
|
|
34
|
-
)
|
|
35
|
-
if (isArray(input)) return update(
|
|
36
|
-
index, intermediateResult, input
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
return {
|
|
40
|
-
...input,
|
|
41
|
-
[ index ] : intermediateResult,
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
if (isArray(input)) return removeIndex(index, input)
|
|
45
|
-
|
|
46
|
-
return omit([ index ], input)
|
|
47
|
-
}
|
package/src/divide.js
DELETED
package/src/dropRepeats.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { isArray } from './_internals/isArray.js'
|
|
2
|
-
import { equals } from './equals.js'
|
|
3
|
-
|
|
4
|
-
export function dropRepeats(list){
|
|
5
|
-
if (!isArray(list)){
|
|
6
|
-
throw new Error(`${ list } is not a list`)
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const toReturn = []
|
|
10
|
-
|
|
11
|
-
list.reduce((prev, current) => {
|
|
12
|
-
if (!equals(prev, current)){
|
|
13
|
-
toReturn.push(current)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return current
|
|
17
|
-
}, undefined)
|
|
18
|
-
|
|
19
|
-
return toReturn
|
|
20
|
-
}
|
package/src/dropRepeatsBy.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { equals } from './equals.js'
|
|
2
|
-
|
|
3
|
-
export function dropRepeatsBy(fn, list){
|
|
4
|
-
if (arguments.length === 1) return _list => dropRepeatsBy(fn, _list)
|
|
5
|
-
|
|
6
|
-
let lastEvaluated = null
|
|
7
|
-
|
|
8
|
-
return list.slice().filter(item => {
|
|
9
|
-
if (lastEvaluated === null){
|
|
10
|
-
lastEvaluated = fn(item)
|
|
11
|
-
|
|
12
|
-
return true
|
|
13
|
-
}
|
|
14
|
-
const evaluatedResult = fn(item)
|
|
15
|
-
if (equals(lastEvaluated, evaluatedResult)) return false
|
|
16
|
-
|
|
17
|
-
lastEvaluated = evaluatedResult
|
|
18
|
-
|
|
19
|
-
return true
|
|
20
|
-
})
|
|
21
|
-
}
|
package/src/dropRepeatsWith.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { isArray } from './_internals/isArray.js'
|
|
2
|
-
|
|
3
|
-
export function dropRepeatsWith(predicate, list){
|
|
4
|
-
if (arguments.length === 1){
|
|
5
|
-
return _iterable => dropRepeatsWith(predicate, _iterable)
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
if (!isArray(list)){
|
|
9
|
-
throw new Error(`${ list } is not a list`)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const toReturn = []
|
|
13
|
-
|
|
14
|
-
list.reduce((prev, current) => {
|
|
15
|
-
if (prev === undefined){
|
|
16
|
-
toReturn.push(current)
|
|
17
|
-
|
|
18
|
-
return current
|
|
19
|
-
}
|
|
20
|
-
if (!predicate(prev, current)){
|
|
21
|
-
toReturn.push(current)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return current
|
|
25
|
-
}, undefined)
|
|
26
|
-
|
|
27
|
-
return toReturn
|
|
28
|
-
}
|
package/src/either.js
DELETED
package/src/empty.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type } from './type.js'
|
|
2
|
-
|
|
3
|
-
export function empty(list){
|
|
4
|
-
if (typeof list === 'string') return ''
|
|
5
|
-
|
|
6
|
-
if (Array.isArray(list)){
|
|
7
|
-
const { name } = list.constructor
|
|
8
|
-
if (name === 'Uint8Array') return Uint8Array.from('')
|
|
9
|
-
|
|
10
|
-
if (name === 'Float32Array') return new Float32Array([])
|
|
11
|
-
|
|
12
|
-
return []
|
|
13
|
-
}
|
|
14
|
-
if (type(list) === 'Object') return {}
|
|
15
|
-
}
|
package/src/endsWith.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { isArray } from './_internals/isArray.js'
|
|
2
|
-
import { equals } from './equals.js'
|
|
3
|
-
|
|
4
|
-
export function endsWith(target, iterable){
|
|
5
|
-
if (arguments.length === 1) return _iterable => endsWith(target, _iterable)
|
|
6
|
-
|
|
7
|
-
if (typeof iterable === 'string'){
|
|
8
|
-
return iterable.endsWith(target)
|
|
9
|
-
}
|
|
10
|
-
if (!isArray(target)) return false
|
|
11
|
-
|
|
12
|
-
const diff = iterable.length - target.length
|
|
13
|
-
let correct = true
|
|
14
|
-
const filtered = target.filter((x, index) => {
|
|
15
|
-
if (!correct) return false
|
|
16
|
-
const result = equals(x, iterable[ index + diff ])
|
|
17
|
-
if (!result) correct = false
|
|
18
|
-
|
|
19
|
-
return result
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
return filtered.length === target.length
|
|
23
|
-
}
|
package/src/flip.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
function flipFn(fn){
|
|
2
|
-
return (...input) => {
|
|
3
|
-
if (input.length === 1){
|
|
4
|
-
return holder => fn(holder, input[ 0 ])
|
|
5
|
-
} else if (input.length === 2){
|
|
6
|
-
return fn(input[ 1 ], input[ 0 ])
|
|
7
|
-
} else if (input.length === 3){
|
|
8
|
-
return fn(
|
|
9
|
-
input[ 1 ], input[ 0 ], input[ 2 ]
|
|
10
|
-
)
|
|
11
|
-
} else if (input.length === 4){
|
|
12
|
-
return fn(
|
|
13
|
-
input[ 1 ], input[ 0 ], input[ 2 ], input[ 3 ]
|
|
14
|
-
)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
throw new Error('R.flip doesn\'t work with arity > 4')
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export function flip(fn){
|
|
22
|
-
return flipFn(fn)
|
|
23
|
-
}
|
package/src/forEach.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { isArray } from './_internals/isArray.js'
|
|
2
|
-
import { forEachObjIndexedFn } from './forEachObjIndexed.js'
|
|
3
|
-
|
|
4
|
-
export function forEach(fn, iterable){
|
|
5
|
-
if (arguments.length === 1) return _list => forEach(fn, _list)
|
|
6
|
-
if (iterable === undefined) return
|
|
7
|
-
|
|
8
|
-
if (isArray(iterable)){
|
|
9
|
-
let index = 0
|
|
10
|
-
const len = iterable.length
|
|
11
|
-
|
|
12
|
-
while (index < len){
|
|
13
|
-
fn(iterable[ index ])
|
|
14
|
-
index++
|
|
15
|
-
}
|
|
16
|
-
} else return forEachObjIndexedFn(fn, iterable)
|
|
17
|
-
|
|
18
|
-
return iterable
|
|
19
|
-
}
|
package/src/forEachObjIndexed.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { keys } from './_internals/keys.js'
|
|
2
|
-
|
|
3
|
-
export function forEachObjIndexedFn(fn, obj){
|
|
4
|
-
let index = 0
|
|
5
|
-
const listKeys = keys(obj)
|
|
6
|
-
const len = listKeys.length
|
|
7
|
-
|
|
8
|
-
while (index < len){
|
|
9
|
-
const key = listKeys[ index ]
|
|
10
|
-
fn(
|
|
11
|
-
obj[ key ], key, obj
|
|
12
|
-
)
|
|
13
|
-
index++
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return obj
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function forEachObjIndexed(fn, list){
|
|
20
|
-
if (arguments.length === 1) return _list => forEachObjIndexed(fn, _list)
|
|
21
|
-
if (list === undefined) return
|
|
22
|
-
|
|
23
|
-
return forEachObjIndexedFn(fn, list)
|
|
24
|
-
}
|
package/src/fromPairs.js
DELETED
package/src/groupWith.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { cloneList } from './_internals/cloneList.js'
|
|
2
|
-
import { isArray } from './_internals/isArray.js'
|
|
3
|
-
|
|
4
|
-
export function groupWith(compareFn, list){
|
|
5
|
-
if (!isArray(list)) throw new TypeError('list.reduce is not a function')
|
|
6
|
-
|
|
7
|
-
const clone = cloneList(list)
|
|
8
|
-
|
|
9
|
-
if (list.length === 1) return [ clone ]
|
|
10
|
-
|
|
11
|
-
const toReturn = []
|
|
12
|
-
let holder = []
|
|
13
|
-
|
|
14
|
-
clone.reduce((
|
|
15
|
-
prev, current, i
|
|
16
|
-
) => {
|
|
17
|
-
if (i === 0) return current
|
|
18
|
-
|
|
19
|
-
const okCompare = compareFn(prev, current)
|
|
20
|
-
const holderIsEmpty = holder.length === 0
|
|
21
|
-
const lastCall = i === list.length - 1
|
|
22
|
-
|
|
23
|
-
if (okCompare){
|
|
24
|
-
if (holderIsEmpty) holder.push(prev)
|
|
25
|
-
holder.push(current)
|
|
26
|
-
if (lastCall) toReturn.push(holder)
|
|
27
|
-
|
|
28
|
-
return current
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (holderIsEmpty){
|
|
32
|
-
toReturn.push([ prev ])
|
|
33
|
-
if (lastCall) toReturn.push([ current ])
|
|
34
|
-
|
|
35
|
-
return current
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
toReturn.push(holder)
|
|
39
|
-
if (lastCall) toReturn.push([ current ])
|
|
40
|
-
holder = []
|
|
41
|
-
|
|
42
|
-
return current
|
|
43
|
-
}, undefined)
|
|
44
|
-
|
|
45
|
-
return toReturn
|
|
46
|
-
}
|
package/src/gt.js
DELETED
package/src/gte.js
DELETED
package/src/has.js
DELETED
package/src/hasIn.js
DELETED
package/src/hasPath.js
DELETED
package/src/identical.js
DELETED
package/src/identity.js
DELETED
package/src/ifElse.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { curry } from './curry.js'
|
|
2
|
-
|
|
3
|
-
function ifElseFn(
|
|
4
|
-
condition, onTrue, onFalse
|
|
5
|
-
){
|
|
6
|
-
return (...input) => {
|
|
7
|
-
const conditionResult =
|
|
8
|
-
typeof condition === 'boolean' ? condition : condition(...input)
|
|
9
|
-
if (Boolean(conditionResult) ){
|
|
10
|
-
return onTrue(...input)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return onFalse(...input)
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const ifElse = curry(ifElseFn)
|
package/src/inc.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const inc = x => x + 1
|
package/src/indexBy.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { path } from './path.js'
|
|
2
|
-
|
|
3
|
-
function indexByPath(pathInput, list){
|
|
4
|
-
const toReturn = {}
|
|
5
|
-
for (let i = 0; i < list.length; i++){
|
|
6
|
-
const item = list[ i ]
|
|
7
|
-
toReturn[ path(pathInput, item) ] = item
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
return toReturn
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function indexBy(condition, list){
|
|
14
|
-
if (arguments.length === 1){
|
|
15
|
-
return _list => indexBy(condition, _list)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if (typeof condition === 'string'){
|
|
19
|
-
return indexByPath(condition, list)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const toReturn = {}
|
|
23
|
-
for (let i = 0; i < list.length; i++){
|
|
24
|
-
const item = list[ i ]
|
|
25
|
-
toReturn[ condition(item) ] = item
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return toReturn
|
|
29
|
-
}
|
package/src/insert.js
DELETED
package/src/insertAll.js
DELETED
package/src/is.js
DELETED
package/src/isEmpty.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { type } from './type.js'
|
|
2
|
-
|
|
3
|
-
export function isEmpty(input){
|
|
4
|
-
const inputType = type(input)
|
|
5
|
-
if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))
|
|
6
|
-
return false
|
|
7
|
-
if (!input) return true
|
|
8
|
-
|
|
9
|
-
if (inputType === 'Object'){
|
|
10
|
-
return Object.keys(input).length === 0
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if (inputType === 'Array'){
|
|
14
|
-
return input.length === 0
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return false
|
|
18
|
-
}
|
package/src/isNil.js
DELETED
package/src/isNotEmpty.js
DELETED
package/src/isNotNil.js
DELETED
package/src/isPromise.js
DELETED
package/src/juxt.js
DELETED