x/rambda/CHANGELOG.md

Faster and smaller alternative to Ramda
Latest
File

7.0.1

  • Wrong ESM export configuration in package.json - Issue #614

7.0.0

  • Braking change - sync R.compose/R.pipe with @types/ramda. That is significant change so as safeguard, it will lead a major bump. Important - this lead to raising required Typescript version to 4.2.2. In other words, to use Rambda you'll need Typescript version 4.2.2 or newer.

Related commit in @types/ramda - https://github.com/DefinitelyTyped/DefinitelyTyped/commit/286eff4f76d41eb8f091e7437eabd8a60d97fc1f#diff-4f74803fa83a81e47cb17a7d8a4e46a7e451f4d9e5ce2f1bd7a70a72d91f4bc1

There are several other changes in @types/ramda as stated in this comment. This leads to change of typings for the following methods in Rambda:

-- R.unless

-- R.toString

-- R.ifElse

-- R.always

-- R.complement

-- R.cond

-- R.is

-- R.sortBy

-- R.dissoc

-- R.toPairs

-- R.assoc

-- R.toLower

-- R.toUpper

  • One more reason for the braking change is changing of export declarations in package.json based on this blog post and this merged Ramda's PR. This also led to renaming of babel.config.js to babel.config.cjs.

  • Add R.apply, R.bind and R.unapply

  • R.startsWith/R.endsWith now support lists as inputs. This way, it matches current Ramda behavior.

  • Remove unused typing for R.chain.

  • R.map/R.filter no longer accept bad inputs as iterable. This way, Rambda behaves more like Ramda, which also throws.

  • Make R.lastIndexOf follow the logic of R.indexOf.

  • Change R.type logic to Ramda logic. This way, R.type can return Error and Set as results.

  • Add missing logic in R.equals to compare sets - Issue #599

  • Improve list cloning - Issue #595

  • Handle multiple inputs with R.allPass and R.anyPass - Issue #604

  • Fix R.length wrong logic with inputs as {length: 123} - Issue #606.

  • Improve non-curry typings of R.merge by using types from mobily/ts-belt.

  • Improve performance of R.uniqWith.

  • Wrong R.update if index is -1 - PR #593

  • Make R.eqProps safe for falsy inputs - based on this opened Ramda PR.

  • Incorrect benchmarks for R.pipe/R.compose - Issue #608

  • Fix R.last/R.head typings - Issue #609

6.9.0

Fixing R.uniq was done by improving R.indexOf which has performance implication to all methods importing R.indexOf:

  • R.includes

  • R.intersection

  • R.difference

  • R.excludes

  • R.symmetricDifference

  • R.union

  • R.without no longer support the following case - without('0:1', ['0', '0:1']) // => ['0']. Now it throws as the first argument should be a list, not a string. Ramda, on the other hand, returns an empty list - https://github.com/ramda/ramda/issues/3086.

6.8.3

  • Fix Typescript build process with rambda/immutable - Issue #572

  • Add R.objOf method

  • Add R.mapObjIndexed method

  • Publish shorter README.md version to NPM

6.8.0

  • R.has use Object.prototype.hasOwnProperty- Issue #572

  • Expose immutable.ts typings which are Rambda typings with readonly statements - Issue #565

  • Fix R.intersection wrong order compared to Ramda.

  • R.path wrong return of null instead of undefined when path value is null - PR #577

6.7.0

  • Remove ts-toolbelt types from Typescript definitions. Most affected are the following methods, which lose one of its curried definitions:
  1. R.maxBy
  2. R.minBy
  3. R.pathEq
  4. R.viewOr
  5. R.when
  6. R.merge
  7. R.mergeDeepRight
  8. R.mergeLeft

6.6.0

  • Change R.piped typings to mimic that of R.pipe. Main difference is that R.pipe is focused on unary functions.

  • Fix wrong logic when R.without use R.includes while it should use array version of R.includes.

  • Use uglify plugin for UMD bundle.

  • Remove dist folder from .gitignore in order to fix Deno broken package. Issue #570

  • Improve R.fromPairs typings - Issue #567

6.5.3

  • Wrong logic where R.without use R.includes while it should use the array version of R.includes

This is Ramda bug, that Rambda also has before this release - https://github.com/ramda/ramda/issues/3086

6.5.2

  • Wrong R.defaultTo typings - changes introduced in v6.5.0 are missing their TS equivalent.

  • Update dependencies

6.5.1

Fix wrong versions in changelog

6.5.0

  • R.defaultTo no longer accepts infinite inputs, thus it follows Ramda implementation.

  • R.equals supports equality of functions.

  • R.pipe doesn't use R.compose.

  • Close Issue #561 - export several internal TS interfaces and types

  • Close Issue #559 - improve R.propOr typings

  • Add CHANGELOG.md file in release files list

6.4.0

  • Close Issue #560 - apply immutable lint to Typescript definitions

  • Close Issue #553 - fix problem with curried typings of R.prop

  • Fix wrong R.last typing

  • Upgrade all rollup related dependencies

  • R.type supports Symbol just like Ramda.

  • Remove file extension in main property in package.json in order to allow experimental-modules. See also this Ramda's PR - https://github.com/ramda/ramda/pull/2678/files

  • Import R.indexBy/R.when/R.zipObj/R.propEq/R.complement changes from recent @types/ramda release.

  • R.tryCatch stop supporting asynchronous functions; the previous behaviour is exported to Rambdax as R.tryCatchAsync

6.3.1

  • Fix missing Evolved declaration in Typescript definition

6.3.0

  • Add R.takeLastWhile

  • Add R.dropWhile

  • Add R.eqProps

  • Add R.dropLastWhile

  • Add R.dropRepeats

  • Add R.dropRepeatsWith

  • Add R.evolve

  • Add typings for R.takeWhile when iterable is a string

6.2.0

  • Add R.props

  • Add R.zipWith

  • Add R.splitAt

  • Add R.splitWhen

  • Close Issue #547 - restore readonly declaration in Typescript definitions.

  • R.append/R.prepend now work only with arrays just like Ramda. Previous behaviour was for them to work with both arrays and strings.

  • Sync R.pluck typings with @types/ramda as there was a tiny difference.

6.1.0

  • Fix R.and wrong definition, because the function doesn't convert the result to boolean. This introduce another difference with @types/ramda.

  • Add R.once

  • Add R.or

6.0.1

  • Fix typing of R.reject as it wrongly declares that with object, it pass property to predicate.

6.0.0

  • Breaking change - R.map/R.filter/R.reject/R.forEach/R.partition doesn't pass index as second argument to the predicate, when looping over arrays. The old behaviour of map, filter and forEach can be found in Rambdax methods R.mapIndexed, R.filterIndexed and R.forEachIndexed.

  • Breaking change - R.all/R.none/R.any/R.find/R.findLast/R.findIndex/R.findLastIndex doesn't pass index as second argument to the predicate.

  • Change R.assocPath typings so the user can explicitly sets type of the new object

  • Typings of R.assoc match its @types/ramda counterpart.

  • Simplify R.forEach typings

  • Remove ReadonlyArray<T> pattern from Typescript definitions - not enough value for the noise it adds.

5.13.1

  • Fix wrong R.takeWhile

5.13.0

  • Add R.takeWhile method

  • Fix R.lensPath issue when using string as path input. The issue was introduced when fixing Issue #524 in the previous release.

5.12.1

  • Close Issue #524 - wrong R.assocPath when path includes numbers

  • R.includes throws on wrong input, i.e. R.includes(1, null)

5.12.0

  • Add R.move method

  • Add R.union method

  • Close Issue #519 - ts-toolbelt needs other type of export with --isolatedModules flag

  • Change R.when implementation and typings to match those of Ramda

  • R.over and R.set use R.curry instead of manual currying

  • R.lensPath typings support string as path, i.e. 'a.b' instead of ['a', 'b']

  • R.equals now supports negative zero just like Ramda.equals

  • R.replace uses R.curry

5.11.0

Forgot to export R.of because of wrong marker in files/index.d.ts

5.10.0

Close Issue #514 - wrong R.length with empty string

Close Issue #511 - error in ts-toolbelt library

Close Issue #510 - R.clamp should throw if min argument is greater than max argument

  • PR #508 - add R.of

  • Definition of R.curry are not same as those of @types/ramda

  • Definitions of R.either is same as that of R.both

  • Definitions of R.ifElse no longer use any type

  • Definition of R.flatten requires passing type for the output

  • Fix definition of R.propOr, R.dissoc

  • Fix curried definitions of R.take, R.takeLast, R.drop and R.dropLast

  • 5.9.0

  • R.pickAll definition allows passing string as path to search.

  • R.propEq definition is now similar to that in @types/ramda.

  • R.none matches R.all implementation and pass index as second argument to predicate input.

  • R.reduce - drop support for object as iterable. Now it throws the same error as Ramda. Also instead of returning the initial value when iterable is undefined, now it throws.

Add index as additional argument to the Typescript definitions of the following methods:

  • R.all

  • R.find

  • R.findLast

  • R.findIndex

  • R.findLastIndex

  • 5.8.0

Add R.mergeAll Add R.mergeDeepRight Add R.mergeLeft Add R.partition Add R.pathEq Add R.tryCatch Add R.unless Add R.whereEq Add R.where

  • Add R.last typing for empty array

  • 5.7.0 Revert PR #469 as R.curry was slow | Also now R.flip throws if arity is greater than or equal to 5

  • 5.6.3 Merge several PRs of @farwayer

  • PR #482 - improve R.forEach performance by not using R.map

  • PR #485 - improve R.map performance

  • PR #482 - improve R.reduce performance

  • Fix missing high arity typings for R.compose/pipe

  • R.merge definitions match those of @types/ramda

  • Remove dist folder from Rambda repo

  • 5.6.2

Close Issue #476 - typesafe R.propEq definitions

Approve PR #477 - fix R.groupWith when list length is 1

  • 5.6.1

Update ts-toolbelt files as now there is update pipeline for it.

Approve PR #474 - intruduce internal isArray helper

  • 5.6.0

Approve PR #469 - R.flip supports any arity | implement R.curry with R.curryN add R.applySpec

  • 5.5.0

Close Issue #464 - R.flip should handle functions with arity above 2

Close Issue #468 - fs-extra should be dev dependency as it was wrongly added as production dependency in 5.2.0

R.flip typings now match @types/ramda typings

Add R.hasPath method

Add R.mathMod typings

  • 5.4.3

Fix R.omit typings

  • 5.4.2

Fix R.pick typings

Close Issue #460 - R.paths should be curried

  • 5.4.1

Close Issue #458 - wrong R.propIs typing

  • 5.4.0

Close Issue #408 - add R.chain

  • 5.3.0

Close Issue #430 - add R.when

Also restore R.converge, R.findLast, R.findLastIndex and R.curryN as I have forgotten to export them when releasing 5.2.0.

  • 5.2.1

Fix Typescript comment for every method

  • 5.2.0

Release new documentation site

Ramda repo now holds all Rambdax methods and tests

  • 5.1.1

Add R.converge and R.curryN from PR #412

Close Issue #410 - wrong implementation of R.groupWith

Close Issue #411 - change the order of declared R.map typings rules

  • 5.0.0

Move R.partialCurry to Rambdax(reason for major bump).

Use new type of export in Typescript definitions.

Approve PR #381 - add R.applySpec

  • 4.6.0

Approve PR #375 - add lenses(Thank you @synthet1c)

Add R.lens

Add R.lensIndex

Add R.lensPath

Add R.lensProp

Add R.over

Add R.set

Add R.view

Sync with Ramda 0.27

Add R.paths

Add R.xor

Close Issue #373

Add R.cond

  • 4.5.0 Add R.clamp

  • 4.4.2 Improve R.propOr typings

  • 4.4.1 Make R.reject has the same typing as R.filter

  • 4.4.0 Several changes:

Close Issue #317 - add R.transpose

Close Issue #325 - R.filter should return equal values for bad inputs null and undefined

Approve suggestion for R.indexBy to accept string not only function as first argument.

Edit of R.path typings

  • 4.2.0 Approve PR #314 - add R.and

  • 4.1.1 Add missing typings for R.slice

  • 4.1.0 Add R.findLast and R.findLastIndex

  • 4.0.2 Fix R.isEmpty wrong behaviour compared to the Ramda method

  • 4.0.1 Approve PR #289 - remove console.log in R.values method

  • 4.0.0 Multiple breaking changes as Rambda methods are changed in order to increase the similarity between with Ramda

Add to Differences:

R.type can return 'NaN'

R.compose doesn't pass `this` context

R.clone doesn't work with number, booleans and strings as input

All breaking changes:

-- R.add works only with numbers

-- Fix R.adjust which had wrong order of arguments

-- R.adjust works when index is out of bounds

-- R.complement support function with multiple arguments

-- R.compose/pipe throws when called with no argument

-- R.clone works with Date value as input

-- R.drop/dropLast/take/takeLast always return new copy of the list/string

-- R.take/takeLast return original list/string with negative index

-- R.equals handles NaN and RegExp types

-- R.type/R.equals supports new Boolean/new Number/new Date/new String expressions

-- R.has works with non-object

-- R.ifElse pass all arguments

-- R.length works with bad input

-- R.propEq work with bad input for object argument

-- R.range work with bad inputs

-- R.times work with bad inputs

-- R.reverse works with strings

-- R.splitEvery throws on non-positive integer index

-- R.test throws just like Ramda when first argument is not regex

-- R.values works with bad inputs

-- R.zipObj ignores extra keys

  • 3.3.0

This is pre 4.0.0 release and it contains all of the above changes

Close issue #287 - ts-toolbelt directory was changed but not reflected in files property in package.json

  • 3.2.5

Close issue #273 - ts-toolbelt needs other type of export when isolatedModules TypeScript property

Close issue #245 - complete typings tests for methods that have more specific Typescript definitions

  • 3.2.1 Fast fix for issue #273 - messed up typings

  • 3.2.0 There are several changes:

Close issue #263 - broken curry typing solved by ts-toolbelt local dependency.

Add R.partialCurry typings.

Approve PR #266 that adds R.slice method.

  • 3.1.0 This might be breaking change for Typescript users, as very different definitions are introduced. With the previous state of the definitions, it was not possible to pass dtslint typings tests.

  • R.either and R.both supports multiple arguments as they should.

  • Several methods added by @squidfunk - R.assocPath, R.symmetricDifference, R.intersperse, R.intersection and R.difference

  • 3.0.1 Close issue #234 - wrong curry typing

  • 3.0.0 Deprecate R.contains, while R.includes is now following Ramda API(it uses R.equals for comparision)

  • 2.14.5 R.without needs currying

  • 2.14.4 Close issue #227 - add index as third argument of R.reduce typings

  • 2.14.2 Use R.curry with R.reduce as manual curry there didn't work as expected.

  • 2.14.1 Fix wrong typescript with R.head - PR #228 pushed by @tonivj5

  • 2.14.0 Add R.groupWith by @selfrefactor | Add R.propOr, R.mathMod, R.mean, R.median, R.negate, R.product by @ku8ar

  • 2.13.0 Add R.identical - PR #217 pushed by @ku8ar

  • 2.12.0 Add R.propIs - PR #213 and add R.sum - issue #207

  • 2.11.2 Close Rambdax issue #32 - wrong R.type when function is input

  • 2.11.1 Approve PR #182 - Changed typings to allow object as input to R.forEach and R.map

  • 2.11.0 Approve PR #179 - R.adjust handles negative index; R.all doesn't need R.filter

  • 2.10.2 Close issue #175 - missing typescript file

  • 2.10.0 Approve huge and important PR #171 submitted by @helmuthdu - Add comments to each method, improve Typescript support

  • 2.9.0 R.toPairs and R.fromPairs

  • 2.8.0 Approve PR #165 R.clone

  • 2.7.1 expose src | Discussed at issue #147

  • 2.7.0 Approve PR #161 R.isEmpty

  • 2.6.0 R.map, R.filter and R.forEach pass original object to iterator as third argument | Discussed at issue #147

  • 2.5.0 Close issue #149 Add R.partial | R.type handles NaN

  • 2.4.0 Major bump of Rollup; Stop building for ES5

  • 2.3.1 Close issue #90 | Add string type of path in R.pathOr

  • 2.3.0 Close issue #89 | Fix missing Number TS definition in R.type

  • 2.2.0 R.defaultTo accepts indefinite number of input arguments. So the following is valid expression: const x = defaultTo('foo',null, null, 'bar')

  • 2.1.0 Restore R.zip using WatermelonDB implementation.

  • 2.0.0 Major version caused by removing of R.zip and R.addIndex. Issue #85 rightfully finds that the implementation of R.addIndex is not correct. This led to removing this method and also of R.zip as it had depended on it. The second change is that R.map, R.filter are passing array index as second argument when looping over arrays. The third change is that R.includes will return false if input is neigher string nor array. The previous behaviour was to throw an error. The last change is to increase the number of methods that are passing index as second argument to the predicate function.

  • 1.2.6 Use src folder instead of modules

  • 1.2.5 Fix omit typing

  • 1.2.4 Add missing Typescript definitions - PR#82

  • 1.2.2 Change curry method used across most of library methods

  • 1.2.1 Add R.assoc | fix passing undefined to R.map and R.merge issue #77

  • 1.2.0 Add R.min, R.minBy, R.max, R.maxBy, R.nth and R.keys

  • 1.1.5 Close issue #74 R.zipObj

  • 1.1.4 Close issue #71 CRA fail to build rambda

  • 1.1.3 Approve PR #70 implement R.groupBy | Close issue #69

  • 1.1.2 Approve PR #67 use babel-plugin-annotate-pure-calls

  • 1.1.1 Approve PR #66 R.zip

  • 1.1.0 R.compose accepts more than one input argument issue #65

  • 1.0.13 Approve PR #64 R.indexOf

  • 1.0.12 Close issue #61 make all functions modules

  • 1.0.11 Close issue #60 problem with babelrc

  • 1.0.10 Close issue #59 add R.dissoc

  • 1.0.9 Close issue #58 - Incorrect R.equals

  • 1.0.8 R.map and R.filter pass object properties when mapping over objects

  • 1.0.7 Add R.uniqWith

  • 1.0.6 Close issue #52 - ES5 compatible code

  • 1.0.5 Close issue #51

  • 1.0.4 Close issue #50 - add R.pipe typings

  • 1.0.3 R.ifElse accept also boolean as condition argument

  • 1.0.2 Remove typedDefaultTo and typedPathOr | Add R.pickAll and R.none

  • 1.0.0 Major change as build is now ES6 not ES5 compatible (Related to issue #46)| Making Rambda fully tree-shakeable| Edit Typescript definition

  • 0.9.8 Revert to ES5 compatible build - issue #46

  • 0.9.7 Refactor for Rollup tree-shake | Remove R.padEnd and R.padStart

  • 0.9.6 Close issue #44 - R.reverse mutates the array

  • 0.9.5 Close issue #45 - invalid Typescript typings

  • 0.9.4 Add R.reject and R.without (PR#41 PR#42) | Remove 'browser' field in package.json due to Webpack bug 4674

  • 0.9.3 Add R.forEach and R.times

  • 0.9.2 Add Typescript definitions

  • 0.9.1 Close issue #36 - move current behaviour of defaultTo to a new method typedDefaultTo; make defaultTo follow Ramda spec; add pathOr; add typedPathOr.

  • 0.9.0 Add R.pipe PR#35

  • 0.8.9 Add R.isNil

  • 0.8.8 Migrate to ES modules PR33 | Add R.flip to the API | R.map/filter works with objects

  • 0.8.7 Change Webpack with Rollup - PR29

  • 0.8.6 Add R.tap and R.identity

  • 0.8.5 Add R.all, R.allPass, R.both, R.either and R.complement

  • 0.8.4 Learning to run yarn test before yarn publish the hard way

  • 0.8.3 Add R.always, R.T and R.F

  • 0.8.2 Add concat, padStart, padEnd, lastIndexOf, toString, reverse, endsWith and startsWith methods

  • 0.8.1 Add R.ifElse

  • 0.8.0 Add R.not, R.includes | Take string as condition for R.pick and R.omit

  • 0.7.6 Fix incorrect implementation of R.values

  • 0.7.5 Fix incorrect implementation of R.omit

  • 0.7.4 issue #13 - Fix R.curry, which used to return incorrectly function when called with more arguments

  • 0.7.3 Close issue #9 - Compile to es2015; Approve PR #10 - add R.addIndex to the API

  • 0.7.2 Add Promise support for R.type

  • 0.7.1 Close issue #7 - add R.reduce to the API

  • 0.7.0 Close issue #5 - change name of curry to partialCurry; add new method curry, which works just like Ramda's curry

  • 0.6.2 Add separate documentation site via docsify