rambda 9.4.2 → 10.0.0-alpha.0
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 +69 -1
- package/README.md +4637 -13433
- package/dist/rambda.esm.js +1487 -0
- package/dist/rambda.js +952 -2113
- package/dist/rambda.umd.js +1595 -1
- package/immutable.d.ts +1066 -1293
- package/index.d.ts +1066 -1293
- package/package.json +95 -94
- package/rambda.js +10 -138
- 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/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 +4 -6
- package/src/checkObjectWithSpec.js +16 -0
- package/src/complement.js +1 -1
- package/src/concat.js +2 -4
- package/src/count.js +5 -4
- package/src/countBy.js +6 -7
- package/src/defaultTo.js +4 -6
- package/src/drop.js +4 -2
- package/src/dropLast.js +4 -8
- package/src/dropLastWhile.js +17 -26
- package/src/dropWhile.js +14 -22
- package/src/eqBy.js +3 -8
- package/src/eqProps.js +3 -8
- package/src/equals.js +99 -58
- package/src/evolve.js +19 -52
- package/src/excludes.js +5 -0
- package/src/filter.js +10 -40
- package/src/filterObject.js +13 -0
- package/src/find.js +6 -6
- package/src/findIndex.js +5 -5
- package/src/findLast.js +6 -6
- package/src/findLastIndex.js +5 -5
- package/src/flatMap.js +3 -0
- package/src/flatten.js +5 -5
- package/src/groupBy.js +9 -7
- package/src/head.js +5 -3
- package/src/includes.js +10 -7
- package/src/indexOf.js +2 -6
- package/src/init.js +6 -8
- package/src/innerJoin.js +11 -19
- package/src/intersection.js +2 -4
- package/src/intersperse.js +7 -7
- 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/mapObject.js +18 -0
- package/src/mapObjectAsync.js +10 -0
- package/src/match.js +6 -6
- 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/modifyPath.js +22 -25
- package/src/none.js +8 -6
- package/src/objOf.js +2 -6
- package/src/omit.js +26 -11
- package/src/partition.js +20 -23
- package/src/path.js +14 -15
- package/src/pick.js +15 -15
- package/src/pipe.js +70 -13
- package/src/pipeAsync.js +10 -0
- package/src/pluck.js +7 -9
- 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 -7
- package/src/range.js +3 -3
- package/src/reduce.js +15 -30
- package/src/reject.js +2 -4
- package/src/replace.js +2 -8
- package/src/replaceItemAtIndex.js +15 -0
- package/src/sort.js +2 -4
- package/src/sortBy.js +3 -3
- package/src/sortWith.js +9 -13
- package/src/split.js +2 -4
- package/src/splitEvery.js +6 -8
- 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 +19 -20
- package/src/takeWhile.js +12 -21
- package/src/tap.js +3 -3
- 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 +10 -14
- 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/ascend.js +0 -23
- 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/descend.js +0 -17
- 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/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/findIndex.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export function findIndex(predicate
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export function findIndex(predicate) {
|
|
2
|
+
return list => {
|
|
4
3
|
const len = list.length
|
|
5
4
|
let index = -1
|
|
6
5
|
|
|
7
|
-
while (++index < len){
|
|
8
|
-
if (predicate(list[
|
|
6
|
+
while (++index < len) {
|
|
7
|
+
if (predicate(list[index])) {
|
|
9
8
|
return index
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
return -1
|
|
14
13
|
}
|
|
14
|
+
}
|
package/src/findLast.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export function findLast(predicate
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export function findLast(predicate) {
|
|
2
|
+
return list => {
|
|
4
3
|
let index = list.length
|
|
5
4
|
|
|
6
|
-
while (--index >= 0){
|
|
7
|
-
if (predicate(list[
|
|
8
|
-
return list[
|
|
5
|
+
while (--index >= 0) {
|
|
6
|
+
if (predicate(list[index])) {
|
|
7
|
+
return list[index]
|
|
9
8
|
}
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
return undefined
|
|
13
12
|
}
|
|
13
|
+
}
|
package/src/findLastIndex.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export function findLastIndex(fn
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export function findLastIndex(fn) {
|
|
2
|
+
return list => {
|
|
4
3
|
let index = list.length
|
|
5
4
|
|
|
6
|
-
while (--index >= 0){
|
|
7
|
-
if (fn(list[
|
|
5
|
+
while (--index >= 0) {
|
|
6
|
+
if (fn(list[index])) {
|
|
8
7
|
return index
|
|
9
8
|
}
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
return -1
|
|
13
12
|
}
|
|
13
|
+
}
|
package/src/flatMap.js
ADDED
package/src/flatten.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { isArray } from './_internals/isArray.js'
|
|
2
2
|
|
|
3
|
-
export function flatten(list, input){
|
|
3
|
+
export function flatten(list, input) {
|
|
4
4
|
const willReturn = input === undefined ? [] : input
|
|
5
5
|
|
|
6
|
-
for (let i = 0; i < list.length; i++){
|
|
7
|
-
if (isArray(list[
|
|
8
|
-
flatten(list[
|
|
6
|
+
for (let i = 0; i < list.length; i++) {
|
|
7
|
+
if (isArray(list[i])) {
|
|
8
|
+
flatten(list[i], willReturn)
|
|
9
9
|
} else {
|
|
10
|
-
willReturn.push(list[
|
|
10
|
+
willReturn.push(list[i])
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
|
package/src/groupBy.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
export function groupBy(groupFn, list){
|
|
2
|
-
if (arguments.length === 1)
|
|
1
|
+
export function groupBy(groupFn, list) {
|
|
2
|
+
if (arguments.length === 1) {
|
|
3
|
+
return _list => groupBy(groupFn, _list)
|
|
4
|
+
}
|
|
3
5
|
|
|
4
6
|
const result = {}
|
|
5
|
-
for (let i = 0; i < list.length; i++){
|
|
6
|
-
const item = list[
|
|
7
|
+
for (let i = 0; i < list.length; i++) {
|
|
8
|
+
const item = list[i]
|
|
7
9
|
const key = groupFn(item)
|
|
8
10
|
|
|
9
|
-
if (!result[
|
|
10
|
-
result[
|
|
11
|
+
if (!result[key]) {
|
|
12
|
+
result[key] = []
|
|
11
13
|
}
|
|
12
14
|
|
|
13
|
-
result[
|
|
15
|
+
result[key].push(item)
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
return result
|
package/src/head.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export function head(listOrString){
|
|
2
|
-
if (typeof listOrString === 'string')
|
|
1
|
+
export function head(listOrString) {
|
|
2
|
+
if (typeof listOrString === 'string') {
|
|
3
|
+
return listOrString[0] || ''
|
|
4
|
+
}
|
|
3
5
|
|
|
4
|
-
return listOrString[
|
|
6
|
+
return listOrString[0]
|
|
5
7
|
}
|
package/src/includes.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { isArray } from './_internals/isArray.js'
|
|
2
2
|
import { _indexOf } from './equals.js'
|
|
3
3
|
|
|
4
|
-
export function includes(valueToFind
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (typeof iterable === 'string'){
|
|
4
|
+
export function includes(valueToFind) {
|
|
5
|
+
return iterable =>
|
|
6
|
+
{
|
|
7
|
+
if (typeof iterable === 'string') {
|
|
8
8
|
return iterable.includes(valueToFind)
|
|
9
9
|
}
|
|
10
|
-
if (!iterable){
|
|
11
|
-
throw new TypeError(`Cannot read property \'indexOf\' of ${
|
|
10
|
+
if (!iterable) {
|
|
11
|
+
throw new TypeError(`Cannot read property \'indexOf\' of ${iterable}`)
|
|
12
|
+
}
|
|
13
|
+
if (!isArray(iterable)) {
|
|
14
|
+
return false
|
|
12
15
|
}
|
|
13
|
-
if (!isArray(iterable)) return false
|
|
14
16
|
|
|
15
17
|
return _indexOf(valueToFind, iterable) > -1
|
|
16
18
|
}
|
|
19
|
+
}
|
package/src/indexOf.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { _indexOf } from './equals.js'
|
|
2
2
|
|
|
3
|
-
export function indexOf(valueToFind
|
|
4
|
-
|
|
5
|
-
return _list => _indexOf(valueToFind, _list)
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
return _indexOf(valueToFind, list)
|
|
3
|
+
export function indexOf(valueToFind) {
|
|
4
|
+
return list => _indexOf(valueToFind, list)
|
|
9
5
|
}
|
package/src/init.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import baseSlice from './_internals/baseSlice.js'
|
|
1
|
+
import { baseSlice } from './_internals/baseSlice.js'
|
|
2
2
|
|
|
3
|
-
export function init(
|
|
4
|
-
if (typeof
|
|
3
|
+
export function init(input) {
|
|
4
|
+
if (typeof input === 'string') {
|
|
5
|
+
return input.slice(0, -1)
|
|
6
|
+
}
|
|
5
7
|
|
|
6
|
-
return
|
|
7
|
-
baseSlice(
|
|
8
|
-
listOrString, 0, -1
|
|
9
|
-
) :
|
|
10
|
-
[]
|
|
8
|
+
return input.length ? baseSlice(input, 0, -1) : []
|
|
11
9
|
}
|
package/src/innerJoin.js
CHANGED
|
@@ -1,28 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function _includesWith(
|
|
4
|
-
pred, x, list
|
|
5
|
-
){
|
|
1
|
+
function _includesWith(pred, x, list) {
|
|
6
2
|
let idx = 0
|
|
7
3
|
const len = list.length
|
|
8
4
|
|
|
9
|
-
while (idx < len){
|
|
10
|
-
if (pred(x, list[
|
|
5
|
+
while (idx < len) {
|
|
6
|
+
if (pred(x, list[idx])) {
|
|
11
7
|
return true
|
|
8
|
+
}
|
|
12
9
|
|
|
13
10
|
idx += 1
|
|
14
11
|
}
|
|
15
12
|
|
|
16
13
|
return false
|
|
17
14
|
}
|
|
18
|
-
function _filter(fn, list){
|
|
15
|
+
function _filter(fn, list) {
|
|
19
16
|
let idx = 0
|
|
20
17
|
const len = list.length
|
|
21
18
|
const result = []
|
|
22
19
|
|
|
23
|
-
while (idx < len){
|
|
24
|
-
if (fn(list[
|
|
25
|
-
result[
|
|
20
|
+
while (idx < len) {
|
|
21
|
+
if (fn(list[idx])) {
|
|
22
|
+
result[result.length] = list[idx]
|
|
23
|
+
}
|
|
26
24
|
|
|
27
25
|
idx += 1
|
|
28
26
|
}
|
|
@@ -30,12 +28,6 @@ function _filter(fn, list){
|
|
|
30
28
|
return result
|
|
31
29
|
}
|
|
32
30
|
|
|
33
|
-
export function
|
|
34
|
-
pred,
|
|
35
|
-
){
|
|
36
|
-
return _filter(x => _includesWith(
|
|
37
|
-
pred, x, ys
|
|
38
|
-
), xs)
|
|
31
|
+
export function innerJoin(pred, xs) {
|
|
32
|
+
return ys => _filter(x => _includesWith(pred, x, ys), xs)
|
|
39
33
|
}
|
|
40
|
-
|
|
41
|
-
export const innerJoin = curry(innerJoinFn)
|
package/src/intersection.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { filter } from './filter.js'
|
|
2
2
|
import { includes } from './includes.js'
|
|
3
3
|
|
|
4
|
-
export function intersection(listA
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return filter(x => includes(x, listA), listB)
|
|
4
|
+
export function intersection(listA) {
|
|
5
|
+
return listB =>filter(x => includes(x)(listA))(listB)
|
|
8
6
|
}
|
package/src/intersperse.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
export function intersperse(separator
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export function intersperse(separator) {
|
|
2
|
+
return list => {
|
|
4
3
|
let index = -1
|
|
5
4
|
const len = list.length
|
|
6
5
|
const willReturn = []
|
|
7
6
|
|
|
8
|
-
while (++index < len){
|
|
9
|
-
if (index === len - 1){
|
|
10
|
-
willReturn.push(list[
|
|
7
|
+
while (++index < len) {
|
|
8
|
+
if (index === len - 1) {
|
|
9
|
+
willReturn.push(list[index])
|
|
11
10
|
} else {
|
|
12
|
-
willReturn.push(list[
|
|
11
|
+
willReturn.push(list[index], separator)
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
return willReturn
|
|
17
16
|
}
|
|
17
|
+
}
|
package/src/join.js
CHANGED
package/src/last.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export function last(listOrString){
|
|
2
|
-
if (typeof listOrString === 'string'){
|
|
3
|
-
return listOrString[
|
|
1
|
+
export function last(listOrString) {
|
|
2
|
+
if (typeof listOrString === 'string') {
|
|
3
|
+
return listOrString[listOrString.length - 1] || ''
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
return listOrString[
|
|
6
|
+
return listOrString[listOrString.length - 1]
|
|
7
7
|
}
|
package/src/lastIndexOf.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { _lastIndexOf } from './equals.js'
|
|
2
2
|
|
|
3
|
-
export function lastIndexOf(valueToFind
|
|
4
|
-
|
|
5
|
-
return _list => _lastIndexOf(valueToFind, _list)
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
return _lastIndexOf(valueToFind, list)
|
|
3
|
+
export function lastIndexOf(valueToFind) {
|
|
4
|
+
return list => _lastIndexOf(valueToFind, list)
|
|
9
5
|
}
|
package/src/map.js
CHANGED
|
@@ -1,51 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
while (index < list.length){
|
|
12
|
-
willReturn[ index ] = isIndexed ? fn(list[ index ], index) : fn(list[ index ])
|
|
13
|
-
|
|
14
|
-
index++
|
|
1
|
+
export function map(fn) {
|
|
2
|
+
return list => {
|
|
3
|
+
let index = 0
|
|
4
|
+
const willReturn = Array(list.length)
|
|
5
|
+
while (index < list.length) {
|
|
6
|
+
willReturn[index] = fn(list[index], index)
|
|
7
|
+
index++
|
|
8
|
+
}
|
|
9
|
+
return willReturn
|
|
15
10
|
}
|
|
16
|
-
|
|
17
|
-
return willReturn
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function mapObject(fn, obj){
|
|
21
|
-
if (arguments.length === 1){
|
|
22
|
-
return _obj => mapObject(fn, _obj)
|
|
23
|
-
}
|
|
24
|
-
let index = 0
|
|
25
|
-
const objKeys = keys(obj)
|
|
26
|
-
const len = objKeys.length
|
|
27
|
-
const willReturn = {}
|
|
28
|
-
|
|
29
|
-
while (index < len){
|
|
30
|
-
const key = objKeys[ index ]
|
|
31
|
-
willReturn[ key ] = fn(
|
|
32
|
-
obj[ key ], key, obj
|
|
33
|
-
)
|
|
34
|
-
index++
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return willReturn
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export const mapObjIndexed = mapObject
|
|
41
|
-
|
|
42
|
-
export function map(fn, iterable){
|
|
43
|
-
if (arguments.length === 1) return _iterable => map(fn, _iterable)
|
|
44
|
-
if (!iterable){
|
|
45
|
-
throw new Error(INCORRECT_ITERABLE_INPUT)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (isArray(iterable)) return mapArray(fn, iterable)
|
|
49
|
-
|
|
50
|
-
return mapObject(fn, iterable)
|
|
51
11
|
}
|
package/src/mapAsync.js
ADDED
package/src/mapObject.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { keys } from './_internals/keys.js'
|
|
2
|
+
|
|
3
|
+
export function mapObject(fn) {
|
|
4
|
+
return obj => {
|
|
5
|
+
let index = 0
|
|
6
|
+
const objKeys = keys(obj)
|
|
7
|
+
const len = objKeys.length
|
|
8
|
+
const willReturn = {}
|
|
9
|
+
|
|
10
|
+
while (index < len) {
|
|
11
|
+
const key = objKeys[index]
|
|
12
|
+
willReturn[key] = fn(obj[key], key, obj)
|
|
13
|
+
index++
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return willReturn
|
|
17
|
+
}
|
|
18
|
+
}
|
package/src/match.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export function match(pattern
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
export function match(pattern) {
|
|
2
|
+
return input => {
|
|
3
|
+
const willReturn = input.match(pattern)
|
|
4
|
+
|
|
5
|
+
return willReturn === null ? [] : willReturn
|
|
6
|
+
}
|
|
7
7
|
}
|
package/src/maxBy.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export function maxByFn(
|
|
4
|
-
compareFn, x, y
|
|
5
|
-
){
|
|
6
|
-
return compareFn(y) > compareFn(x) ? y : x
|
|
1
|
+
export function maxBy(compareFn, x) {
|
|
2
|
+
return y => (compareFn(y) > compareFn(x) ? y : x)
|
|
7
3
|
}
|
|
8
|
-
|
|
9
|
-
export const maxBy = curry(maxByFn)
|
package/src/merge.js
CHANGED
package/src/minBy.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export function minByFn(
|
|
4
|
-
compareFn, x, y
|
|
5
|
-
){
|
|
6
|
-
return compareFn(y) < compareFn(x) ? y : x
|
|
1
|
+
export function minBy(compareFn, x) {
|
|
2
|
+
return y => (compareFn(y) < compareFn(x) ? y : x)
|
|
7
3
|
}
|
|
8
|
-
|
|
9
|
-
export const minBy = curry(minByFn)
|
package/src/modifyPath.js
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
import { createPath } from './_internals/createPath.js'
|
|
2
|
-
import { isArray } from './_internals/isArray.js'
|
|
3
|
-
import { assoc } from './assoc.js'
|
|
4
|
-
import { curry } from './curry.js'
|
|
5
2
|
import { path as pathModule } from './path.js'
|
|
6
3
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
function assoc(prop, newValue) {
|
|
5
|
+
return obj => Object.assign({}, obj, { [prop]: newValue })
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function modifyPathFn(pathInput, fn, obj) {
|
|
9
|
+
const path = createPath(pathInput)
|
|
10
|
+
if (path.length === 1) {
|
|
11
|
+
return {
|
|
12
|
+
...obj,
|
|
13
|
+
[path[0]]: fn(obj[path[0]]),
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (pathModule(path)(obj) === undefined) {
|
|
17
|
+
return obj
|
|
15
18
|
}
|
|
16
|
-
}
|
|
17
|
-
if (pathModule(path, object) === undefined) return object
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
)
|
|
24
|
-
if (val === object[ path[ 0 ] ]){
|
|
25
|
-
return object
|
|
26
|
-
}
|
|
20
|
+
const val = modifyPathFn(Array.prototype.slice.call(path, 1), fn, obj[path[0]])
|
|
21
|
+
if (val === obj[path[0]]) {
|
|
22
|
+
return obj
|
|
23
|
+
}
|
|
27
24
|
|
|
28
|
-
|
|
29
|
-
path[ 0 ], val, object
|
|
30
|
-
)
|
|
25
|
+
return assoc(path[0], val)(obj)
|
|
31
26
|
}
|
|
32
27
|
|
|
33
|
-
export
|
|
28
|
+
export function modifyPath(pathInput, fn) {
|
|
29
|
+
return obj => modifyPathFn(pathInput, fn, obj)
|
|
30
|
+
}
|
package/src/none.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
export function none(predicate
|
|
2
|
-
|
|
1
|
+
export function none(predicate) {
|
|
2
|
+
return list => {
|
|
3
|
+
for (let i = 0; i < list.length; i++) {
|
|
4
|
+
if (predicate(list[i])) {
|
|
5
|
+
return false
|
|
6
|
+
}
|
|
7
|
+
}
|
|
3
8
|
|
|
4
|
-
|
|
5
|
-
if (predicate(list[ i ])) return false
|
|
9
|
+
return true
|
|
6
10
|
}
|
|
7
|
-
|
|
8
|
-
return true
|
|
9
11
|
}
|
package/src/objOf.js
CHANGED
package/src/omit.js
CHANGED
|
@@ -1,18 +1,33 @@
|
|
|
1
1
|
import { createPath } from './_internals/createPath.js'
|
|
2
|
-
import { includes } from './_internals/includes.js'
|
|
3
2
|
|
|
4
|
-
export function
|
|
5
|
-
|
|
3
|
+
export function _includes(x, list) {
|
|
4
|
+
let index = -1
|
|
5
|
+
const { length } = list
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
while (++index < length) {
|
|
8
|
+
if (String(list[index]) === String(x)) {
|
|
9
|
+
return true
|
|
10
|
+
}
|
|
11
|
+
}
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
return false
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function omit(propsToOmit) {
|
|
17
|
+
return obj => {
|
|
18
|
+
if (!obj) {
|
|
19
|
+
return undefined
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const propsToOmitValue = createPath(propsToOmit, ',')
|
|
23
|
+
const willReturn = {}
|
|
12
24
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
25
|
+
for (const key in obj) {
|
|
26
|
+
if (!_includes(key, propsToOmitValue)) {
|
|
27
|
+
willReturn[key] = obj[key]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
16
30
|
|
|
17
|
-
|
|
31
|
+
return willReturn
|
|
32
|
+
}
|
|
18
33
|
}
|
package/src/partition.js
CHANGED
|
@@ -1,44 +1,41 @@
|
|
|
1
1
|
import { isArray } from './_internals/isArray.js'
|
|
2
2
|
|
|
3
|
-
export function partitionObject(predicate, iterable){
|
|
3
|
+
export function partitionObject(predicate, iterable) {
|
|
4
4
|
const yes = {}
|
|
5
5
|
const no = {}
|
|
6
|
-
Object.entries(iterable).forEach(([
|
|
7
|
-
if (predicate(value, prop)){
|
|
8
|
-
yes[
|
|
6
|
+
Object.entries(iterable).forEach(([prop, value]) => {
|
|
7
|
+
if (predicate(value, prop)) {
|
|
8
|
+
yes[prop] = value
|
|
9
9
|
} else {
|
|
10
|
-
no[
|
|
10
|
+
no[prop] = value
|
|
11
11
|
}
|
|
12
12
|
})
|
|
13
13
|
|
|
14
|
-
return [
|
|
14
|
+
return [yes, no]
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export function partitionArray(
|
|
18
|
-
predicate, list, indexed = false
|
|
19
|
-
){
|
|
17
|
+
export function partitionArray(predicate, list, indexed = false) {
|
|
20
18
|
const yes = []
|
|
21
19
|
const no = []
|
|
22
20
|
let counter = -1
|
|
23
21
|
|
|
24
|
-
while (counter++ < list.length - 1){
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
){
|
|
28
|
-
yes.push(list[ counter ])
|
|
22
|
+
while (counter++ < list.length - 1) {
|
|
23
|
+
if (indexed ? predicate(list[counter], counter) : predicate(list[counter])) {
|
|
24
|
+
yes.push(list[counter])
|
|
29
25
|
} else {
|
|
30
|
-
no.push(list[
|
|
26
|
+
no.push(list[counter])
|
|
31
27
|
}
|
|
32
28
|
}
|
|
33
29
|
|
|
34
|
-
return [
|
|
30
|
+
return [yes, no]
|
|
35
31
|
}
|
|
36
32
|
|
|
37
|
-
export function partition(predicate
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
export function partition(predicate) {
|
|
34
|
+
return iterable => {
|
|
35
|
+
if (!isArray(iterable)) {
|
|
36
|
+
return partitionObject(predicate, iterable)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return partitionArray(predicate, iterable)
|
|
40
|
+
}
|
|
44
41
|
}
|