rambda 8.4.0 → 8.6.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 +22 -0
- package/README.md +126 -137
- package/dist/rambda.js +82 -45
- package/dist/rambda.umd.js +1 -1
- package/immutable.d.ts +36 -27
- package/index.d.ts +36 -27
- package/package.json +16 -15
- package/rambda.js +6 -3
- package/src/dropRepeatsBy.js +21 -0
- package/src/empty.js +15 -0
- package/src/eqBy.js +10 -0
- package/src/forEach.js +30 -20
- package/src/mergeWith.js +5 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
8.6.0
|
|
2
|
+
|
|
3
|
+
- Wrong typing for `R.dissocPath` - [Issue #709](https://github.com/selfrefactor/rambda/issues/709)
|
|
4
|
+
|
|
5
|
+
- Add `R.sortWith` - [Issue #7097](https://github.com/selfrefactor/rambda/issues/707)
|
|
6
|
+
|
|
7
|
+
- Update build dependencies
|
|
8
|
+
|
|
9
|
+
8.5.0
|
|
10
|
+
|
|
11
|
+
- Revert changes in `R.anyPass` introduced in `8.4.0` release. The reason is that the change was breaking the library older than `5.2.0` TypeScript.
|
|
12
|
+
|
|
13
|
+
- Wrong `R.partial` TS definition - [Issue #705](https://github.com/selfrefactor/rambda/issues/705)
|
|
14
|
+
|
|
15
|
+
- Add `R.dropRepeatsBy`
|
|
16
|
+
|
|
17
|
+
- Add `R.empty`
|
|
18
|
+
|
|
19
|
+
- Add `R.eqBy`
|
|
20
|
+
|
|
21
|
+
- Add `R.forEachObjIndexed`
|
|
22
|
+
|
|
1
23
|
8.4.0
|
|
2
24
|
|
|
3
25
|
- Add `R.dissocPath`
|
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@ Also, `Rambda` provides you with included TS definitions:
|
|
|
59
59
|
// Deno extension(https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno)
|
|
60
60
|
// is installed and initialized
|
|
61
61
|
import * as R from "https://deno.land/x/rambda/mod.ts";
|
|
62
|
-
import * as Ramda from "https://
|
|
62
|
+
import * as Ramda from "https://deno.land/x/ramda/mod.ts";
|
|
63
63
|
|
|
64
64
|
R.add(1)('foo') // => will trigger warning in VSCode as it should
|
|
65
65
|
Ramda.add(1)('foo') // => will not trigger warning in VSCode
|
|
@@ -101,10 +101,6 @@ One of the main issues with `Ramda` is the slow process of releasing new version
|
|
|
101
101
|
Click to see the full list of 0 Ramda methods not implemented in Rambda and their status.
|
|
102
102
|
</summary>
|
|
103
103
|
|
|
104
|
-
- dropRepeatsBy
|
|
105
|
-
- empty
|
|
106
|
-
- eqBy
|
|
107
|
-
- forEachObjIndexed
|
|
108
104
|
- gt
|
|
109
105
|
- gte
|
|
110
106
|
- hasIn
|
|
@@ -226,7 +222,7 @@ There are methods which are benchmarked only with `Ramda` and `Rambda`(i.e. no `
|
|
|
226
222
|
|
|
227
223
|
Note that some of these methods, are called with and without curring. This is done in order to give more detailed performance feedback.
|
|
228
224
|
|
|
229
|
-
The benchmarks results are produced from latest versions of *Rambda*, *Lodash*(4.17.21) and *Ramda*(0.29.
|
|
225
|
+
The benchmarks results are produced from latest versions of *Rambda*, *Lodash*(4.17.21) and *Ramda*(0.29.1).
|
|
230
226
|
|
|
231
227
|
</summary>
|
|
232
228
|
|
|
@@ -789,7 +785,7 @@ describe('R.any', () => {
|
|
|
789
785
|
|
|
790
786
|
```typescript
|
|
791
787
|
|
|
792
|
-
anyPass<T
|
|
788
|
+
anyPass<T>(predicates: ((x: T) => boolean)[]): (input: T) => boolean
|
|
793
789
|
```
|
|
794
790
|
|
|
795
791
|
It accepts list of `predicates` and returns a function. This function with its `input` will return `true`, if any of `predicates` returns `true` for this `input`.
|
|
@@ -801,7 +797,6 @@ It accepts list of `predicates` and returns a function. This function with its `
|
|
|
801
797
|
<summary>All TypeScript definitions</summary>
|
|
802
798
|
|
|
803
799
|
```typescript
|
|
804
|
-
anyPass<T, U extends T[]>(predicates: { [K in keyof U]: (x: T) => x is U[K]; }): (input: T) => input is U[number];
|
|
805
800
|
anyPass<T>(predicates: ((x: T) => boolean)[]): (input: T) => boolean;
|
|
806
801
|
anyPass<T>(predicates: ((...inputs: T[]) => boolean)[]): (...inputs: T[]) => boolean;
|
|
807
802
|
```
|
|
@@ -930,18 +925,18 @@ describe('anyPass', () => {
|
|
|
930
925
|
filtered2 // $ExpectType number[]
|
|
931
926
|
})
|
|
932
927
|
it('functions as a type guard', () => {
|
|
933
|
-
const isString = (x: unknown): x is string => typeof x === 'string'
|
|
934
|
-
const isNumber = (x: unknown): x is number => typeof x === 'number'
|
|
935
|
-
const isBoolean = (x: unknown): x is boolean => typeof x === 'boolean'
|
|
936
|
-
|
|
937
|
-
const isStringNumberOrBoolean = anyPass([isString, isNumber, isBoolean])
|
|
928
|
+
const isString = (x: unknown): x is string => typeof x === 'string'
|
|
929
|
+
const isNumber = (x: unknown): x is number => typeof x === 'number'
|
|
930
|
+
const isBoolean = (x: unknown): x is boolean => typeof x === 'boolean'
|
|
931
|
+
|
|
932
|
+
const isStringNumberOrBoolean = anyPass([isString, isNumber, isBoolean])
|
|
938
933
|
|
|
939
|
-
isStringNumberOrBoolean // $ExpectType (input: unknown) =>
|
|
934
|
+
isStringNumberOrBoolean // $ExpectType (input: unknown) => boolean
|
|
940
935
|
|
|
941
|
-
const aValue: unknown = 1
|
|
936
|
+
const aValue: unknown = 1
|
|
942
937
|
|
|
943
938
|
if (isStringNumberOrBoolean(aValue)) {
|
|
944
|
-
aValue // $ExpectType
|
|
939
|
+
aValue // $ExpectType unknown
|
|
945
940
|
}
|
|
946
941
|
})
|
|
947
942
|
})
|
|
@@ -3438,6 +3433,10 @@ describe('R.dropRepeats', () => {
|
|
|
3438
3433
|
|
|
3439
3434
|
[](#dropRepeats)
|
|
3440
3435
|
|
|
3436
|
+
### dropRepeatsBy
|
|
3437
|
+
|
|
3438
|
+
[](#dropRepeatsBy)
|
|
3439
|
+
|
|
3441
3440
|
### dropRepeatsWith
|
|
3442
3441
|
|
|
3443
3442
|
<a title="redirect to Rambda Repl site" href="https://rambda.now.sh?const%20list%20%3D%20%5B%7Ba%3A1%2Cb%3A2%7D%2C%20%7Ba%3A1%2Cb%3A3%7D%2C%20%7Ba%3A2%2C%20b%3A4%7D%5D%0Aconst%20result%20%3D%20R.dropRepeatsWith(R.prop('a')%2C%20list)%0A%0A%2F%2F%20%3D%3E%20%5B%7Ba%3A1%2Cb%3A2%7D%2C%20%7Ba%3A2%2C%20b%3A4%7D%5D">Try this <strong>R.dropRepeatsWith</strong> example in Rambda REPL</a>
|
|
@@ -3603,6 +3602,10 @@ describe('R.either', () => {
|
|
|
3603
3602
|
|
|
3604
3603
|
[](#either)
|
|
3605
3604
|
|
|
3605
|
+
### empty
|
|
3606
|
+
|
|
3607
|
+
[](#empty)
|
|
3608
|
+
|
|
3606
3609
|
### endsWith
|
|
3607
3610
|
|
|
3608
3611
|
```typescript
|
|
@@ -3764,6 +3767,10 @@ describe('R.endsWith - string', () => {
|
|
|
3764
3767
|
|
|
3765
3768
|
[](#endsWith)
|
|
3766
3769
|
|
|
3770
|
+
### eqBy
|
|
3771
|
+
|
|
3772
|
+
[](#eqBy)
|
|
3773
|
+
|
|
3767
3774
|
### eqProps
|
|
3768
3775
|
|
|
3769
3776
|
It returns `true` if property `prop` in `obj1` is equal to property `prop` in `obj2` according to `R.equals`.
|
|
@@ -5422,36 +5429,46 @@ forEach<T, U>(fn: ObjectIterator<T, void>): (list: Dictionary<T>) => Dictionary<
|
|
|
5422
5429
|
import { isArray } from './_internals/isArray.js'
|
|
5423
5430
|
import { keys } from './_internals/keys.js'
|
|
5424
5431
|
|
|
5425
|
-
export function
|
|
5426
|
-
|
|
5432
|
+
export function forEachObjIndexedFn(fn, obj){
|
|
5433
|
+
let index = 0
|
|
5434
|
+
const listKeys = keys(obj)
|
|
5435
|
+
const len = listKeys.length
|
|
5427
5436
|
|
|
5428
|
-
|
|
5429
|
-
|
|
5437
|
+
while (index < len){
|
|
5438
|
+
const key = listKeys[ index ]
|
|
5439
|
+
fn(
|
|
5440
|
+
obj[ key ], key, obj
|
|
5441
|
+
)
|
|
5442
|
+
index++
|
|
5430
5443
|
}
|
|
5431
5444
|
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
const len = list.length
|
|
5445
|
+
return obj
|
|
5446
|
+
}
|
|
5435
5447
|
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
|
|
5448
|
+
export function forEachObjIndexed(fn, list){
|
|
5449
|
+
if (arguments.length === 1) return _list => forEachObjIndexed(fn, _list)
|
|
5450
|
+
|
|
5451
|
+
if (list === undefined) return
|
|
5452
|
+
|
|
5453
|
+
return forEachObjIndexedFn(fn, list)
|
|
5454
|
+
}
|
|
5455
|
+
|
|
5456
|
+
export function forEach(fn, iterable){
|
|
5457
|
+
if (arguments.length === 1) return _list => forEach(fn, _list)
|
|
5458
|
+
|
|
5459
|
+
if (iterable === undefined) return
|
|
5460
|
+
|
|
5461
|
+
if (isArray(iterable)){
|
|
5441
5462
|
let index = 0
|
|
5442
|
-
const
|
|
5443
|
-
const len = listKeys.length
|
|
5463
|
+
const len = iterable.length
|
|
5444
5464
|
|
|
5445
5465
|
while (index < len){
|
|
5446
|
-
|
|
5447
|
-
fn(
|
|
5448
|
-
list[ key ], key, list
|
|
5449
|
-
)
|
|
5466
|
+
fn(iterable[ index ])
|
|
5450
5467
|
index++
|
|
5451
5468
|
}
|
|
5452
|
-
}
|
|
5469
|
+
} else return forEachObjIndexedFn(fn, iterable)
|
|
5453
5470
|
|
|
5454
|
-
return
|
|
5471
|
+
return iterable
|
|
5455
5472
|
}
|
|
5456
5473
|
```
|
|
5457
5474
|
|
|
@@ -5582,6 +5599,10 @@ describe('R.forEach with objects', () => {
|
|
|
5582
5599
|
|
|
5583
5600
|
[](#forEach)
|
|
5584
5601
|
|
|
5602
|
+
### forEachObjIndexed
|
|
5603
|
+
|
|
5604
|
+
[](#forEachObjIndexed)
|
|
5605
|
+
|
|
5585
5606
|
### fromPairs
|
|
5586
5607
|
|
|
5587
5608
|
It transforms a `listOfPairs` to an object.
|
|
@@ -8780,7 +8801,7 @@ mergeWith<Output>(fn: (x: any, z: any) => any): <U, V>(a: U, b: V) => Output;
|
|
|
8780
8801
|
```javascript
|
|
8781
8802
|
import { curry } from './curry.js'
|
|
8782
8803
|
|
|
8783
|
-
function mergeWithFn(
|
|
8804
|
+
export function mergeWithFn(
|
|
8784
8805
|
mergeFn, aInput, bInput
|
|
8785
8806
|
){
|
|
8786
8807
|
const a = aInput ?? {}
|
|
@@ -8788,21 +8809,15 @@ function mergeWithFn(
|
|
|
8788
8809
|
const willReturn = {}
|
|
8789
8810
|
|
|
8790
8811
|
Object.keys(a).forEach(key => {
|
|
8791
|
-
if (b[ key ] === undefined)
|
|
8792
|
-
|
|
8793
|
-
} else {
|
|
8794
|
-
willReturn[ key ] = mergeFn(a[ key ], b[ key ])
|
|
8795
|
-
}
|
|
8812
|
+
if (b[ key ] === undefined) willReturn[ key ] = a[ key ]
|
|
8813
|
+
else willReturn[ key ] = mergeFn(a[ key ], b[ key ])
|
|
8796
8814
|
})
|
|
8797
8815
|
|
|
8798
8816
|
Object.keys(b).forEach(key => {
|
|
8799
8817
|
if (willReturn[ key ] !== undefined) return
|
|
8800
8818
|
|
|
8801
|
-
if (a[ key ] === undefined)
|
|
8802
|
-
|
|
8803
|
-
} else {
|
|
8804
|
-
willReturn[ key ] = mergeFn(a[ key ], b[ key ])
|
|
8805
|
-
}
|
|
8819
|
+
if (a[ key ] === undefined) willReturn[ key ] = b[ key ]
|
|
8820
|
+
else willReturn[ key ] = mergeFn(a[ key ], b[ key ])
|
|
8806
8821
|
})
|
|
8807
8822
|
|
|
8808
8823
|
return willReturn
|
|
@@ -8819,10 +8834,10 @@ export const mergeWith = curry(mergeWithFn)
|
|
|
8819
8834
|
|
|
8820
8835
|
```javascript
|
|
8821
8836
|
import { concat } from './concat.js'
|
|
8822
|
-
import {
|
|
8837
|
+
import { mergeWithFn } from './mergeWith.js'
|
|
8823
8838
|
|
|
8824
8839
|
test('happy', () => {
|
|
8825
|
-
const result =
|
|
8840
|
+
const result = mergeWithFn(
|
|
8826
8841
|
concat,
|
|
8827
8842
|
{
|
|
8828
8843
|
a : true,
|
|
@@ -8835,8 +8850,8 @@ test('happy', () => {
|
|
|
8835
8850
|
)
|
|
8836
8851
|
const expected = {
|
|
8837
8852
|
a : true,
|
|
8838
|
-
values : [ 10, 20, 15, 35 ],
|
|
8839
8853
|
b : true,
|
|
8854
|
+
values : [ 10, 20, 15, 35 ],
|
|
8840
8855
|
}
|
|
8841
8856
|
expect(result).toEqual(expected)
|
|
8842
8857
|
})
|
|
@@ -8844,31 +8859,31 @@ test('happy', () => {
|
|
|
8844
8859
|
// https://github.com/ramda/ramda/pull/3222/files#diff-d925d9188b478d2f1d4b26012c6dddac374f9e9d7a336604d654b9a113bfc857
|
|
8845
8860
|
describe('acts as if nil values are simply empty objects', () => {
|
|
8846
8861
|
it('if the first object is nil and the second empty', () => {
|
|
8847
|
-
expect(
|
|
8862
|
+
expect(mergeWithFn(
|
|
8848
8863
|
concat, undefined, {}
|
|
8849
8864
|
)).toEqual({})
|
|
8850
8865
|
})
|
|
8851
8866
|
|
|
8852
8867
|
it('if the first object is empty and the second nil', () => {
|
|
8853
|
-
expect(
|
|
8868
|
+
expect(mergeWithFn(
|
|
8854
8869
|
concat, {}, null
|
|
8855
8870
|
)).toEqual({})
|
|
8856
8871
|
})
|
|
8857
8872
|
|
|
8858
8873
|
it('if both objects are nil', () => {
|
|
8859
|
-
expect(
|
|
8874
|
+
expect(mergeWithFn(
|
|
8860
8875
|
concat, undefined, null
|
|
8861
8876
|
)).toEqual({})
|
|
8862
8877
|
})
|
|
8863
8878
|
|
|
8864
8879
|
it('if the first object is not empty and the second is nil', () => {
|
|
8865
|
-
expect(
|
|
8880
|
+
expect(mergeWithFn(
|
|
8866
8881
|
concat, { a : 'a' }, null
|
|
8867
8882
|
)).toEqual({ a : 'a' })
|
|
8868
8883
|
})
|
|
8869
8884
|
|
|
8870
8885
|
it('if the first object is nil and the second is not empty', () => {
|
|
8871
|
-
expect(
|
|
8886
|
+
expect(mergeWithFn(
|
|
8872
8887
|
concat, undefined, { a : 'a' }
|
|
8873
8888
|
)).toEqual({ a : 'a' })
|
|
8874
8889
|
})
|
|
@@ -10073,18 +10088,7 @@ test('index lens', () => {
|
|
|
10073
10088
|
|
|
10074
10089
|
```typescript
|
|
10075
10090
|
|
|
10076
|
-
partial<
|
|
10077
|
-
Args extends unknown[],
|
|
10078
|
-
ArgsGiven extends [...Partial<Args>],
|
|
10079
|
-
R
|
|
10080
|
-
>(
|
|
10081
|
-
fn: (...args: Args) => R,
|
|
10082
|
-
...args: ArgsGiven
|
|
10083
|
-
): Args extends [...{[K in keyof ArgsGiven]: Args[K]}, ...infer ArgsRemaining]
|
|
10084
|
-
? ArgsRemaining extends []
|
|
10085
|
-
? R
|
|
10086
|
-
: (...args: ArgsRemaining) => R
|
|
10087
|
-
: never
|
|
10091
|
+
partial<V0, V1, T>(fn: (x0: V0, x1: V1) => T, args: [V0]): (x1: V1) => T
|
|
10088
10092
|
```
|
|
10089
10093
|
|
|
10090
10094
|
It is very similar to `R.curry`, but you can pass initial arguments when you create the curried function.
|
|
@@ -10099,31 +10103,22 @@ The name comes from the fact that you partially inject the inputs.
|
|
|
10099
10103
|
<summary>All TypeScript definitions</summary>
|
|
10100
10104
|
|
|
10101
10105
|
```typescript
|
|
10102
|
-
partial<
|
|
10103
|
-
|
|
10104
|
-
|
|
10105
|
-
|
|
10106
|
-
|
|
10107
|
-
|
|
10108
|
-
|
|
10109
|
-
|
|
10110
|
-
|
|
10111
|
-
|
|
10112
|
-
|
|
10113
|
-
|
|
10114
|
-
|
|
10115
|
-
|
|
10116
|
-
|
|
10117
|
-
|
|
10118
|
-
R
|
|
10119
|
-
>(
|
|
10120
|
-
fn: (...args: Args) => R,
|
|
10121
|
-
args: ArgsGiven
|
|
10122
|
-
): Args extends [...{[K in keyof ArgsGiven]: Args[K]}, ...infer ArgsRemaining]
|
|
10123
|
-
? ArgsRemaining extends []
|
|
10124
|
-
? R
|
|
10125
|
-
: (...args: ArgsRemaining) => R
|
|
10126
|
-
: never;
|
|
10106
|
+
partial<V0, V1, T>(fn: (x0: V0, x1: V1) => T, args: [V0]): (x1: V1) => T;
|
|
10107
|
+
partial<V0, V1, V2, T>(fn: (x0: V0, x1: V1, x2: V2) => T, args: [V0, V1]): (x2: V2) => T;
|
|
10108
|
+
partial<V0, V1, V2, T>(fn: (x0: V0, x1: V1, x2: V2) => T, args: [V0]): (x1: V1, x2: V2) => T;
|
|
10109
|
+
partial<V0, V1, V2, V3, T>(
|
|
10110
|
+
fn: (x0: V0, x1: V1, x2: V2, x3: V3) => T,
|
|
10111
|
+
args: [V0, V1, V2],
|
|
10112
|
+
): (x2: V3) => T;
|
|
10113
|
+
partial<V0, V1, V2, V3, T>(
|
|
10114
|
+
fn: (x0: V0, x1: V1, x2: V2, x3: V3) => T,
|
|
10115
|
+
args: [V0, V1],
|
|
10116
|
+
): (x2: V2, x3: V3) => T;
|
|
10117
|
+
partial<V0, V1, V2, V3, T>(
|
|
10118
|
+
fn: (x0: V0, x1: V1, x2: V2, x3: V3) => T,
|
|
10119
|
+
args: [V0],
|
|
10120
|
+
): (x1: V1, x2: V2, x3: V3) => T;
|
|
10121
|
+
partial<T>(fn: (...a: any[]) => T, args: any[]): (...a: any[]) => T;
|
|
10127
10122
|
```
|
|
10128
10123
|
|
|
10129
10124
|
</details>
|
|
@@ -10240,44 +10235,20 @@ describe('R.partial', () => {
|
|
|
10240
10235
|
aBoolean: boolean,
|
|
10241
10236
|
aNull: null
|
|
10242
10237
|
) {
|
|
10243
|
-
return {
|
|
10238
|
+
return {aString, aNumber, aBoolean, aNull}
|
|
10244
10239
|
}
|
|
10245
10240
|
|
|
10246
10241
|
// @ts-expect-error
|
|
10247
|
-
partial(fn, 1)
|
|
10248
|
-
|
|
10249
|
-
const fn1 = partial(fn, 'a')
|
|
10250
|
-
|
|
10251
|
-
// @ts-expect-error
|
|
10252
|
-
partial(fn1, 'b');
|
|
10253
|
-
|
|
10254
|
-
const fn2 = partial(fn1, 2)
|
|
10255
|
-
const result = fn2(true, null)
|
|
10256
|
-
result // $ExpectType { aString: string; aNumber: number; aBoolean: boolean; aNull: null; }
|
|
10257
|
-
})
|
|
10258
|
-
|
|
10259
|
-
it('ramda', () => {
|
|
10260
|
-
function fn(
|
|
10261
|
-
aString: string,
|
|
10262
|
-
aNumber: number,
|
|
10263
|
-
aBoolean: boolean,
|
|
10264
|
-
aNull: null
|
|
10265
|
-
) {
|
|
10266
|
-
return { aString, aNumber, aBoolean, aNull }
|
|
10267
|
-
}
|
|
10268
|
-
|
|
10269
|
-
// @ts-expect-error
|
|
10270
|
-
partial(fn, 1);
|
|
10242
|
+
partial(fn, 1)
|
|
10271
10243
|
|
|
10272
10244
|
const fn1 = partial(fn, ['a'])
|
|
10273
|
-
|
|
10274
|
-
// @ts-expect-error
|
|
10275
|
-
partial(fn1, ['b']);
|
|
10245
|
+
partial(fn1, ['b'])
|
|
10276
10246
|
|
|
10277
10247
|
const fn2 = partial(fn1, [2])
|
|
10278
10248
|
const result = fn2(true, null)
|
|
10279
10249
|
result // $ExpectType { aString: string; aNumber: number; aBoolean: boolean; aNull: null; }
|
|
10280
|
-
})
|
|
10250
|
+
})
|
|
10251
|
+
})
|
|
10281
10252
|
```
|
|
10282
10253
|
|
|
10283
10254
|
</details>
|
|
@@ -17452,6 +17423,28 @@ describe('R.zipWith', () => {
|
|
|
17452
17423
|
|
|
17453
17424
|
## ❯ CHANGELOG
|
|
17454
17425
|
|
|
17426
|
+
8.6.0
|
|
17427
|
+
|
|
17428
|
+
- Wrong typing for `R.dissocPath` - [Issue #709](https://github.com/selfrefactor/rambda/issues/709)
|
|
17429
|
+
|
|
17430
|
+
- Add `R.sortWith` - [Issue #7097](https://github.com/selfrefactor/rambda/issues/707)
|
|
17431
|
+
|
|
17432
|
+
- Update build dependencies
|
|
17433
|
+
|
|
17434
|
+
8.5.0
|
|
17435
|
+
|
|
17436
|
+
- Revert changes in `R.anyPass` introduced in `8.4.0` release. The reason is that the change was breaking the library older than `5.2.0` TypeScript.
|
|
17437
|
+
|
|
17438
|
+
- Wrong `R.partial` TS definition - [Issue #705](https://github.com/selfrefactor/rambda/issues/705)
|
|
17439
|
+
|
|
17440
|
+
- Add `R.dropRepeatsBy`
|
|
17441
|
+
|
|
17442
|
+
- Add `R.empty`
|
|
17443
|
+
|
|
17444
|
+
- Add `R.eqBy`
|
|
17445
|
+
|
|
17446
|
+
- Add `R.forEachObjIndexed`
|
|
17447
|
+
|
|
17455
17448
|
8.4.0
|
|
17456
17449
|
|
|
17457
17450
|
- Add `R.dissocPath`
|
|
@@ -17784,25 +17777,25 @@ Fix wrong versions in changelog
|
|
|
17784
17777
|
|
|
17785
17778
|
> Most influential contributors(in alphabetical order)
|
|
17786
17779
|
|
|
17787
|
-
- [@farwayer](https://github.com/farwayer) - improving performance in R.find, R.filter; give the idea how to make benchmarks more reliable;
|
|
17780
|
+
-  [@farwayer](https://github.com/farwayer) - improving performance in R.find, R.filter; give the idea how to make benchmarks more reliable;
|
|
17788
17781
|
|
|
17789
|
-
- [@thejohnfreeman](https://github.com/thejohnfreeman) - add R.assoc, R.chain;
|
|
17782
|
+
-  [@thejohnfreeman](https://github.com/thejohnfreeman) - add R.assoc, R.chain;
|
|
17790
17783
|
|
|
17791
|
-
- [@peeja](https://github.com/peeja) - add several methods and fix mutiple issues; provides great MR documentation
|
|
17784
|
+
-  [@peeja](https://github.com/peeja) - add several methods and fix mutiple issues; provides great MR documentation
|
|
17792
17785
|
|
|
17793
|
-
- [@helmuthdu](https://github.com/helmuthdu) - add R.clone; help improve code style;
|
|
17786
|
+
-  [@helmuthdu](https://github.com/helmuthdu) - add R.clone; help improve code style;
|
|
17794
17787
|
|
|
17795
|
-
- [@jpgorman](https://github.com/jpgorman) - add R.zip, R.reject, R.without, R.addIndex;
|
|
17788
|
+
-  [@jpgorman](https://github.com/jpgorman) - add R.zip, R.reject, R.without, R.addIndex;
|
|
17796
17789
|
|
|
17797
|
-
- [@ku8ar](https://github.com/ku8ar) - add R.slice, R.propOr, R.identical, R.propIs and several math related methods; introduce the idea to display missing Ramda methods;
|
|
17790
|
+
-  [@ku8ar](https://github.com/ku8ar) - add R.slice, R.propOr, R.identical, R.propIs and several math related methods; introduce the idea to display missing Ramda methods;
|
|
17798
17791
|
|
|
17799
|
-
- [@romgrk](https://github.com/romgrk) - add R.groupBy, R.indexBy, R.findLast, R.findLastIndex;
|
|
17792
|
+
-  [@romgrk](https://github.com/romgrk) - add R.groupBy, R.indexBy, R.findLast, R.findLastIndex;
|
|
17800
17793
|
|
|
17801
|
-
- [@squidfunk](https://github.com/squidfunk) - add R.assocPath, R.symmetricDifference, R.difference, R.intersperse;
|
|
17794
|
+
-  [@squidfunk](https://github.com/squidfunk) - add R.assocPath, R.symmetricDifference, R.difference, R.intersperse;
|
|
17802
17795
|
|
|
17803
|
-
- [@synthet1c](https://github.com/synthet1c) - add all lenses methods; add R.applySpec, R.converge;
|
|
17796
|
+
-  [@synthet1c](https://github.com/synthet1c) - add all lenses methods; add R.applySpec, R.converge;
|
|
17804
17797
|
|
|
17805
|
-
- [@vlad-zhukov](https://github.com/vlad-zhukov) - help with configuring Rollup, Babel; change export file to use ES module exports;
|
|
17798
|
+
-  [@vlad-zhukov](https://github.com/vlad-zhukov) - help with configuring Rollup, Babel; change export file to use ES module exports;
|
|
17806
17799
|
|
|
17807
17800
|
> Rambda references
|
|
17808
17801
|
|
|
@@ -17814,20 +17807,16 @@ Fix wrong versions in changelog
|
|
|
17814
17807
|
|
|
17815
17808
|
> Links to Rambda
|
|
17816
17809
|
|
|
17817
|
-
- [https://mailchi.mp/webtoolsweekly/web-tools-280](Web Tools Weekly)
|
|
17818
|
-
|
|
17819
17810
|
- [https://github.com/stoeffel/awesome-fp-js](awesome-fp-js)
|
|
17820
17811
|
|
|
17812
|
+
- [ https://mailchi.mp/webtoolsweekly/web-tools-280 ]( Web Tools Weekly #280 )
|
|
17813
|
+
|
|
17821
17814
|
- [https://github.com/docsifyjs/awesome-docsify](awesome-docsify)
|
|
17822
17815
|
|
|
17823
17816
|
> Deprecated from `Used by` section
|
|
17824
17817
|
|
|
17825
17818
|
- [SAP's Cloud SDK](https://github.com/SAP/cloud-sdk) - This repo doesn't uses `Rambda` since *October/2020* [commit that removes Rambda](https://github.com/SAP/cloud-sdk/commit/b29b4f915c4e4e9c2441e7b6b67cf83dac1fdac3)
|
|
17826
17819
|
|
|
17827
|
-
> Releases
|
|
17828
|
-
|
|
17829
|
-
[Rambda's releases](https://github.com/selfrefactor/rambda/releases) before **6.4.0** were used mostly for testing purposes.
|
|
17830
|
-
|
|
17831
17820
|
[](#-additional-info)
|
|
17832
17821
|
|
|
17833
17822
|
## My other libraries
|