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/evolve.js
CHANGED
|
@@ -1,60 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { mapArray, mapObject } from './map.js'
|
|
1
|
+
import { mapObject } from './mapObject.js'
|
|
3
2
|
import { type } from './type.js'
|
|
4
3
|
|
|
5
|
-
export function
|
|
6
|
-
return
|
|
7
|
-
(x, i) => {
|
|
8
|
-
if (type(rules[ i ]) === 'Function'){
|
|
9
|
-
return rules[ i ](x)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return x
|
|
13
|
-
},
|
|
14
|
-
list,
|
|
15
|
-
true
|
|
16
|
-
)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function evolveObject(rules, iterable){
|
|
20
|
-
return mapObject((x, prop) => {
|
|
21
|
-
if (type(x) === 'Object'){
|
|
22
|
-
const typeRule = type(rules[ prop ])
|
|
23
|
-
if (typeRule === 'Function'){
|
|
24
|
-
return rules[ prop ](x)
|
|
25
|
-
}
|
|
26
|
-
if (typeRule === 'Object'){
|
|
27
|
-
return evolve(rules[ prop ], x)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return x
|
|
31
|
-
}
|
|
32
|
-
if (type(rules[ prop ]) === 'Function'){
|
|
33
|
-
return rules[ prop ](x)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return x
|
|
37
|
-
}, iterable)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function evolve(rules, iterable){
|
|
41
|
-
if (arguments.length === 1){
|
|
42
|
-
return _iterable => evolve(rules, _iterable)
|
|
43
|
-
}
|
|
44
|
-
const rulesType = type(rules)
|
|
45
|
-
const iterableType = type(iterable)
|
|
46
|
-
|
|
47
|
-
if (iterableType !== rulesType){
|
|
48
|
-
throw new Error('iterableType !== rulesType')
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (![ 'Object', 'Array' ].includes(rulesType)){
|
|
52
|
-
throw new Error(`'iterable' and 'rules' are from wrong type ${ rulesType }`)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (iterableType === 'Object'){
|
|
56
|
-
return evolveObject(rules, iterable)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return evolveArray(rules, iterable)
|
|
4
|
+
export function evolve(rules) {
|
|
5
|
+
return mapObject((x, prop) => type(rules[prop]) === 'Function' ? rules[prop](x): x)
|
|
60
6
|
}
|
package/src/excludes.js
ADDED
package/src/filter.js
CHANGED
|
@@ -1,50 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
for (const prop in obj){
|
|
7
|
-
if (predicate(
|
|
8
|
-
obj[ prop ], prop, obj
|
|
9
|
-
)){
|
|
10
|
-
willReturn[ prop ] = obj[ prop ]
|
|
1
|
+
export function filter(predicate) {
|
|
2
|
+
return list => {
|
|
3
|
+
if (!list) {
|
|
4
|
+
throw new Error('Incorrect iterable input')
|
|
11
5
|
}
|
|
12
|
-
|
|
6
|
+
let index = 0
|
|
7
|
+
const len = list.length
|
|
8
|
+
const willReturn = []
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
predicate, list, indexed = false
|
|
19
|
-
){
|
|
20
|
-
let index = 0
|
|
21
|
-
const len = list.length
|
|
22
|
-
const willReturn = []
|
|
10
|
+
while (index < len) {
|
|
11
|
+
if (predicate(list[index], index)) {
|
|
12
|
+
willReturn.push(list[index])
|
|
13
|
+
}
|
|
23
14
|
|
|
24
|
-
|
|
25
|
-
const predicateResult = indexed ?
|
|
26
|
-
predicate(list[ index ], index) :
|
|
27
|
-
predicate(list[ index ])
|
|
28
|
-
if (predicateResult){
|
|
29
|
-
willReturn.push(list[ index ])
|
|
15
|
+
index++
|
|
30
16
|
}
|
|
31
17
|
|
|
32
|
-
|
|
18
|
+
return willReturn
|
|
33
19
|
}
|
|
34
|
-
|
|
35
|
-
return willReturn
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export function filter(predicate, iterable){
|
|
39
|
-
if (arguments.length === 1)
|
|
40
|
-
return _iterable => filter(predicate, _iterable)
|
|
41
|
-
if (!iterable){
|
|
42
|
-
throw new Error('Incorrect iterable input')
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (isArray(iterable)) return filterArray(
|
|
46
|
-
predicate, iterable, false
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
return filterObject(predicate, iterable)
|
|
50
20
|
}
|
package/src/find.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export function find(predicate
|
|
2
|
-
|
|
1
|
+
export function find(predicate) {
|
|
2
|
+
return list => {
|
|
3
|
+
let index = 0
|
|
4
|
+
const len = list.length
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
while (index < len) {
|
|
7
|
+
const x = list[index]
|
|
8
|
+
if (predicate(x)) {
|
|
9
|
+
return x
|
|
10
|
+
}
|
|
6
11
|
|
|
7
|
-
|
|
8
|
-
const x = list[ index ]
|
|
9
|
-
if (predicate(x)){
|
|
10
|
-
return x
|
|
12
|
+
index++
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
index++
|
|
14
14
|
}
|
|
15
15
|
}
|
package/src/findIndex.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export function findIndex(predicate
|
|
2
|
-
|
|
1
|
+
export function findIndex(predicate) {
|
|
2
|
+
return list => {
|
|
3
|
+
const len = list.length
|
|
4
|
+
let index = -1
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (predicate(list[ index ])){
|
|
9
|
-
return index
|
|
6
|
+
while (++index < len) {
|
|
7
|
+
if (predicate(list[index])) {
|
|
8
|
+
return index
|
|
9
|
+
}
|
|
10
10
|
}
|
|
11
|
-
}
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
return -1
|
|
13
|
+
}
|
|
14
14
|
}
|
package/src/findLast.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export function findLast(predicate
|
|
2
|
-
|
|
1
|
+
export function findLast(predicate) {
|
|
2
|
+
return list => {
|
|
3
|
+
let index = list.length
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return list[ index ]
|
|
5
|
+
while (--index >= 0) {
|
|
6
|
+
if (predicate(list[index])) {
|
|
7
|
+
return list[index]
|
|
8
|
+
}
|
|
9
9
|
}
|
|
10
|
-
}
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
return undefined
|
|
12
|
+
}
|
|
13
13
|
}
|
package/src/findLastIndex.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export function findLastIndex(fn
|
|
2
|
-
|
|
1
|
+
export function findLastIndex(fn) {
|
|
2
|
+
return list => {
|
|
3
|
+
let index = list.length
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return index
|
|
5
|
+
while (--index >= 0) {
|
|
6
|
+
if (fn(list[index])) {
|
|
7
|
+
return index
|
|
8
|
+
}
|
|
9
9
|
}
|
|
10
|
-
}
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
return -1
|
|
12
|
+
}
|
|
13
13
|
}
|
package/src/findNth.js
ADDED
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,17 +1,20 @@
|
|
|
1
|
-
export function
|
|
2
|
-
|
|
1
|
+
export function groupByFallback(groupFn, list) {
|
|
2
|
+
const result = {}
|
|
3
|
+
for (let i = 0; i < list.length; i++) {
|
|
4
|
+
const item = list[i]
|
|
5
|
+
const key = groupFn(item)
|
|
3
6
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const key = groupFn(item)
|
|
7
|
+
if (!result[key]) {
|
|
8
|
+
result[key] = []
|
|
9
|
+
}
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
result[ key ] = []
|
|
11
|
+
result[key].push(item)
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
result
|
|
14
|
-
|
|
14
|
+
return result
|
|
15
|
+
}
|
|
16
|
+
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
export function groupBy(groupFn) {
|
|
19
|
+
return iterable => Object.groupBy ? Object.groupBy(iterable,groupFn) : groupByFallback(groupFn, iterable)
|
|
17
20
|
}
|
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,18 @@
|
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
export function includes(valueToFind) {
|
|
5
|
+
return iterable => {
|
|
6
|
+
if (typeof iterable === 'string') {
|
|
7
|
+
return iterable.includes(valueToFind)
|
|
8
|
+
}
|
|
9
|
+
if (!iterable) {
|
|
10
|
+
throw new TypeError(`Cannot read property \'indexOf\' of ${iterable}`)
|
|
11
|
+
}
|
|
12
|
+
if (!isArray(iterable)) {
|
|
13
|
+
return false
|
|
14
|
+
}
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
return _indexOf(valueToFind, iterable) > -1
|
|
17
|
+
}
|
|
16
18
|
}
|
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)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const getOccurrences = input => input.match(/{{\s*.+?\s*}}/g)
|
|
2
|
+
const getOccurrenceProp = occurrence => occurrence.replace(/{{\s*|\s*}}/g, '')
|
|
3
|
+
|
|
4
|
+
const replace = ({ inputHolder, prop, replacer }) => {
|
|
5
|
+
const regexBase = `{{${prop}}}`
|
|
6
|
+
const regex = new RegExp(regexBase, 'g')
|
|
7
|
+
return inputHolder.replace(regex, replacer)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function interpolate(input) {
|
|
11
|
+
return templateInput => {
|
|
12
|
+
const occurrences = getOccurrences(input)
|
|
13
|
+
if (occurrences === null) {
|
|
14
|
+
return input
|
|
15
|
+
}
|
|
16
|
+
let inputHolder = input
|
|
17
|
+
|
|
18
|
+
for (const occurrence of occurrences) {
|
|
19
|
+
const prop = getOccurrenceProp(occurrence)
|
|
20
|
+
inputHolder = replace({
|
|
21
|
+
inputHolder,
|
|
22
|
+
prop,
|
|
23
|
+
replacer: templateInput[prop],
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return inputHolder
|
|
28
|
+
}
|
|
29
|
+
}
|
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
|
-
|
|
1
|
+
export function intersperse(separator) {
|
|
2
|
+
return list => {
|
|
3
|
+
let index = -1
|
|
4
|
+
const len = list.length
|
|
5
|
+
const willReturn = []
|
|
3
6
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
willReturn.push(list[ index ])
|
|
11
|
-
} else {
|
|
12
|
-
willReturn.push(list[ index ], separator)
|
|
7
|
+
while (++index < len) {
|
|
8
|
+
if (index === len - 1) {
|
|
9
|
+
willReturn.push(list[index])
|
|
10
|
+
} else {
|
|
11
|
+
willReturn.push(list[index], separator)
|
|
12
|
+
}
|
|
13
13
|
}
|
|
14
|
-
}
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
return willReturn
|
|
16
|
+
}
|
|
17
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/mapKeys.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
|
+
}
|