-
v0.61.1 - 2023/11/15
- Fully compatible with versions down to 0.59.0
- Fixed
reduceWith
andreduceRightWith
not using the initial value whenreduce
was called with more than three arguments
-
v0.61.0 - 2022/11/09
- Fully compatible with versions down to 0.59.0
- Added
symmetricDifference
- Big performance improvements to the following functions in ES6 aware environments:
difference
,intersection
,symmetricDifference
,union
,unionBy
,uniques
anduniquesBy
- Gave a new coat of paint to all tests
- Updated doc comments and streamlined some parameter names
- Dropped TravisCI for Github actions
-
v0.60.0 - 2021/03/08
- Fully compatible with versions down to 0.59.0
- Added
mean
,median
andreplace
-
v0.59.2 - 2020/07/17
- Fully compatible with version 0.59.0
- Updated "exports" property in
package.json
to address the issue where some tools couldn't access the manifest file. See https://github.com/nodejs/node/issues/33460. - Got rid of ES5 in all examples
-
v0.59.0 - 2020/07/07
- Sorry for all the renaming, but I'm in the process of freezing the API and wanted to tackle some inconsistencies in naming choices.
- Updated to support Node.js ES modules (and renamed ES modules build to
lamb.mjs
) - Added
split
andsplitBy
- API change: renamed
pick
topickIn
andpickKeys
topick
- API change: renamed
skip
toskipIn
andskipKeys
toskip
- API change: renamed
rename
torenameIn
andrenameKeys
torename
- API change: renamed
pluck
topluckFrom
andpluckKey
topluck
- API change: renamed
case
tocasus
to avoid confusion and clashing with the switch statement's case - API change: renamed
invoker
andinvokerOn
toinvoke
andinvokeOn
- Fixed
.DS_STORE
file leaking again in thedist
folder
-
v0.58.0 - 2019/06/18
- Added one file ES modules build
- API change:
invoker
now accepts an array of bound arguments - API change: benched
immutable
for the moment being - Added
join
andjoinWith
- Added
findLast
,findLastWhere
,findLastIndex
,findLastIndexWhere
- Added
dropLastWhile
andtakeLastWhile
- Switched from uglify-js to terser
- Updated docs, linting and tests
-
v0.57.0 - 2019/02/12
- Splitted the library into ES modules
- API change:
sort
,sortWith
andsortedInsert
now accept an array of sorters - API change: removed
@@lamb/placeholder
property as now the placeholder is exported as__
- Switched to Jest as a test suite
-
v0.56.0 - 2018/07/15
- API change:
compose
,intersection
,merge
,mergeOwn
,union
andzip
are now binary functions, and so are functions built withunionBy
. - API change:
adapter
,allOf
,anyOf
,collect
andpipe
now accept an array of functions - Updated doc comments and tests
- API change:
-
v0.55.0 - 2018/03/21
- Fully compatible with versions down to 0.53.x
- Added
rotate
androtateBy
- Updated link to jsDelivr
- Fixed and updated doc comments and tests
-
v0.54.1 - 2018/03/09
- Fixed:
setPath
andupdatePath
weren't returning unary functions, and further arguments would have overwritten the previous ones - Updated doc comments
- Updated linting rules
- Fixed:
-
v0.54.0 - 2017/08/01
- Added
mapValues
andmapValuesWith
- Added "@since" tags to doc comments
- Added linting for tests
- Added
-
v0.53.1 - 2017/04/06
- Fixed:
hasKeyValue
was returningtrue
for any existent property when searching for anundefined
value - Updated object checking tests
- Fixed:
-
v0.53.0 - 2017/03/30
- API change: unfilled placeholders in functions built with
asPartial
now assume anundefined
value - API change:
range
now converts to number its parameters and will return an empty array if the specified range is invalid - API change:
difference
is now a binary function and returns a result without duplicates - Changed the name of the property holding the library's version
- Added the possibility to use custom placeholders in partial application
- API change: unfilled placeholders in functions built with
-
v0.52.0 - 2017/03/17
- API change:
partial
is no longer variadic and accepts a function and an array of arguments instead - API change:
getArgAt
and all array accessors now convert their index parameter to integer - API change: reverted change made in v0.50.0 about
compose
andpipe
: now they return again theidentity
function if called without arguments - API change:
merge
andmergeOwn
now throw fornil
values and convert to object everything else as before - API change:
intersection
now return an empty array if called without parameters - Fixed:
transpose
andzip
now correctly throw whennil
values, preceded by empty array-likes, are encountered - Added
partialRight
difference
andintersection
are now correctly documented to work with array-like objects- Updated test and moved shared variables to an external file
- API change:
-
v0.51.0 - 2017/02/20
- API change: removed the
iteratee
parameter fromuniques
- API change: removed
fromIndex
parameter fromcontains
andisIn
- API change:
tapArgs
isn't variadic anymore and accepts an array of "tappers" as the second parameter - API change: renamed
drop
andtake
todropFrom
andtakeFrom
- API change: renamed
dropN
andtakeN
todrop
andtake
- API change: the
falseFn
parameter ofcondition
is no longer optional - Added
case
to quickly build cases foradapter
- Added
unionBy
anduniquesBy
- API change: removed the
-
v0.50.0 - 2017/02/08
- API change: renamed
is
toareSame
andisSVZ
toareSVZ
. The old names are now used for curried version of those functions - API change: removed
isNot
- API change: renamed
isGT
,isGTE
,isLT
andisLTE
togt
,gte
,lt
,lte
. The old names are now used for right curried versions of these functions. - API change:
compose
andpipe
now build a function throwing an exception if they are called without arguments - API change: renamed
add
tosum
.add
is now used as a curried version ofsum
. - Added
deduct
as a right curried version ofsubtract
- Added
multiplyBy
as a curried version ofmultiply
- Added
divideBy
as a right curried version ofdivide
- Added optimized currying for functions with arity 2 and 3
- Performance improvement for
compose
andpipe
- API change: renamed
-
v0.49.0 - 2017/01/24
- API change: removed optional context parameter in every function that was using it
- API change:
aritize
now will simply convert itsarity
parameter to integer, instead of giving it a special meaning when isundefined
- Fixed:
skip
andskipKeys
now convert to string every value in theblacklist
- Fixed:
hasKeyValue
now correctly returnsfalse
when searching for anundefined
value in a non-existent property - Fixed:
pathExists
,pathExistsIn
andhasPathValue
will no longer see valid paths when a negative array index is out of bounds - Minor performance improvements for
pick
,pickIf
,skip
andskipIf
- Added tests with sparse arrays where needed and updated existing ones with misleading texts / specs
- Tidied up test code a bit by grouping some common variables
- Updated tests for
hasPathValue
and "pick" and "skip" functions - Updated tests of
updatePath
to check negative array indexes that are out of bounds
-
v0.48.0 - 2017/01/10
- API change:
slice
isn't a generic anymore to ensure that dense arrays are returned and has no optional parameters - Fixed:
pull
andpullFrom
now considernil
s received as thevalues
parameter as empty arrays - Added
sliceAt
- All array functions always return dense arrays now
- Updated tests
- API change:
-
v0.47.0 - 2016/12/16
- API change: renamed
apply
toapplication
- API change: renamed
applyArgs
toapplyTo
- API change:
clamp
now converts to number its arguments and returnsNaN
ifmin
is greater thanmax
- API change: removed
wrap
- Re-added
apply
as a left-curried version ofapplication
- Added
clampWithin
andisInstanceOf
- Updated tests and doc comments
- API change: renamed
-
v0.46.0 - 2016/12/07
- Fully compatible with versions down to 0.44.x
- Added
isFinite
,isInteger
,isSafeInteger
- Code clean-up and minor performance improvements in sorting functions
- First step in improving the documentation site
-
v0.45.0 - 2016/11/14
- Fully compatible with versions down to 0.44.x
- Added
pull
andpullFrom
- Added
keySatisfies
andpathSatisfies
- Updated examples and doc comments
-
v0.44.0 - 2016/11/08
- API change:
repeat
andtestWith
now throw an exception when the source string isnil
and convert to string every other value - API change:
repeat
now floors the value received as thetimes
parameter instead of ceiling it - API change: the
char
parameter of the padding functions isn't optional anymore and will be coerced to string - Fixed: predicates built with
testWith
are now safe to reuse even when the global flag is used in the pattern - Added
append
andappendTo
- Updated tests of all string functions
- API change:
-
v0.43.0 - 2016/11/03
- Fully compatible with versions down to 0.40.x
- Added
pathExists
andpathExistsIn
- Improved performance of
setIn
,setKey
,updateIn
andupdateKey
- Improved performance of
setPath
,setPathIn
,updatePath
andupdatePathIn
-
v0.42.0 - 2016/10/25
- Fully compatible with versions down to 0.40.x
- Added
unless
andwhen
- Improved performance of
condition
-
v0.41.0 - 2016/09/08
- Fully compatible with versions down to 0.40.x
- Added
findWhere
,findIndexWhere
,hasPathValue
find
now usesfindIndex
to perform the search to avoid duplicate code- Minor performance gain when
aritize
needs to addundefined
arguments
-
v0.40.0 - 2016/09/02
- API change:
hasKeyValue
now uses the “SameValueZero" comparison - Fixed:
updatePath
andupdatePathIn
treated unassigned positive indexes in sparse arrays as non existent properties - Updated tests for
hasKeyValue
- Updated tests for “pick” and “skip” functions
- Updated tests for “pairs”, “tear” and “values” functions
- Updated tests of array accessors
- Updated tests of object and path accessors
- Improved performance of
hasKeyValue
- API change:
-
v0.39.0 - 2016/08/26
- Fully compatible with versions down to 0.37.x
- Added
every
,everyIn
,some
,someIn
- Updated tests for functions using predicates
- Made
intersection
useeveryIn
instead of the native method - Updated doc comments, examples and tests for
uniques
- Minor performance improvement of
uniques
-
v0.38.0 - 2016/08/19
- Fully compatible with versions down to 0.37.x
- Improved performance of
flatMap
,flatMapWith
,flatten
andshallowFlatten
- Greatly improved performance of all grouping functions
- Greatly improved performance of
transpose
, improved performance ofzip
as a consequence - Greatly improved performance of
getArgAt
-
v0.37.0 - 2016/08/10
- API change:
sortedInsert
now returns an array copy of the given array-like if there is no element to insert, though still acceptsundefined
values if they are passed explicitly - Greatly improved performance of all curry (and curried) functions
- Optimized
invoker
andinvokerOn
- Minor performance improvements in the usage of the arguments object
- API change:
-
v0.36.0 - 2016/08/04
- Fully compatible with versions down to 0.34.x
- Added
asPartial
-
v0.35.0 - 2016/07/29
- Fully compatible with versions down to 0.34.x
- Added
collect
,pickKeys
andskipKeys
- Updated the examples of
anyOf
andclamp
-
v0.34.0 - 2016/07/19
- API change:
filter
,forEach
,map
,reduce
andreduceRight
aren’t array generics anymore and have been replaced with performant custom implementations as JS engines didn’t get any better. Unlike native methods, these custom implementations won’t skip unassigned or deleted indexes in arrays. - Overall performance improvements (other than the ones caused by the aforementioned custom implementations) and some code clean-up
- API change:
-
v0.33.0 - 2016/07/08
- API change:
sortedInsert
now accepts array-like objects - Completed "fifth round" of test updating
- API change:
-
v0.32.0 - 2016/07/01
- API change:
take
andtakeN
now convertundefined
values passed asn
to Number (zero) before callingslice
- API change:
tapArgs
,updateAt
andupdateIndex
are now more strict about their function parameter as “falsy” values failed to throw an exception before - API change: curry functions now let empty calls consume the arity
- Completed “fourth round" of test updating
- API change:
-
v0.31.0 - 2016/06/24
- API change: all path functions and object setters now throw a TypeError
nil
values received assource
, other values will be converted to Object - API change:
setPath
,setPathIn
now convert to string thepath
parameter - API change: the “set” and “update” path functions now give priority to existing object keys over array indexes, like the “get” path functions
- Completed “third round" of test updating
- API change: all path functions and object setters now throw a TypeError
-
v0.30.0 - 2016/06/21
- API change:
aritize
now addsundefined
arguments if the desired arity is greater than the amount of received parameters - API change:
apply
andapplyArgs
now treat non-array-like values for theargs
parameter as empty arrays - API change:
allOf
,anyOf
,apply
,applyArgs
,aritize
,binary
andunary
now keep the functions' context - Completed “second round" of test updating
- API change:
-
v0.29.0 - 2016/06/16
- API change:
pick
,pickIf
,skip
andskipIf
now throw exceptions only fornil
values in the data argument, other values will be converted to Object - API change:
pick
now throws exceptions only fornil
values in thewhitelist
parameter, other values will be treated as empty arrays - API change:
skip
now throws exceptions only fornil
values in theblacklist
parameter, other values will be treated as empty arrays - API change:
not
now correctly keeps the predicate’s context
- API change:
-
v0.28.0 - 2016/06/03
- API change:
difference
now accepts array-like objects - API change: String padding functions now convert to string
non-nil
sources before using them - API change: String padding functions won’t throw errors for
nil
values passed as padding chars and use the default value instead - API change:
flatten
andshallowFlatten
now throw an exception only fornil
values, converts array-likes to arrays and treat every other value as an empty array - API change:
difference
now throws an exception only fornil
values passed as the main parameter; other unexpected values will be treated as empty arrays - API change:
difference
parameters but than the main one will be treated as an empty array if they aren’t array-like - API change:
fromPairs
now throw exceptions only fornil
values, other unexpected values will be treated as empty arrays - API change:
has
andhasKey
now throw exceptions only fornil
values, other unexpected values will be converted to Object - Completed "first round" of test updating
- API change:
-
v0.27.0 - 2016/05/23
- API change: renamed
insert
tosortedInsert
- Added
insert
,insertAt
,reduceWith
andreduceRightWith
- API change: renamed
-
v0.26.0 - 2016/05/16
- Fully compatible with versions down to 0.25.x
- Added
rename
,renameKeys
andrenameWith
-
v0.25.1 - 2016/05/10
- API change:
enumerables
,pairs
,tear
andvalues
now throw a TypeError if supplied withnull
orundefined
- API change:
ownPairs
,ownValues
andtearOwn
now throw a TypeError only if supplied withnull
orundefined
regardless of the ECMAScript engine you are using - Added
keys
as a shim of ES6’sObject.keys
- API change:
-
v0.24.0 - 2016/05/05
- API change:
setPath
andsetPathIn
now treat non-enumerable properties encountered in a path as non-existent properties - Added
updatePath
andupdatePathIn
- API change:
-
v0.23.0 - 2016/04/27
- API change:
getPath
andgetPathIn
now support negative indexes - API change: The function returned by
getAt
now throw exceptions only if called withnull
orundefined
and returnsundefined
for any other non-array-like object - Added
getIndex
,setIndex
andupdateIndex
- API change:
-
v0.22.0 - 2016/04/19
- Fully compatible with versions down to 0.21.x
- Added
updateIn
,updateKey
andupdateAt
-
v0.21.0 - 2016/04/13
- API change:
getPathIn
andgetPath
now returnundefined
for any non existent path, instead of throwing exceptions when anundefined
value was a part of the path instead of being its target - API change: renamed
sequence
togenerate
to avoid confusion with other languages, concepts and libraries - Added
count
,countBy
,index
,indexBy
- API change:
-
v0.20.0 - 2016/04/08
- API change: The
mergeOwn
function now convertsnull
andundefined
values to empty objects instead of throwing exceptions - Added
setPath
andsetPathIn
- API change: The
-
v0.19.0 - 2016/04/05
- API change: renamed
getWithPath
togetPathIn
- Added
getPath
andreverse
- API change: renamed
-
v0.18.0 - 2016/04/01
- API change: renamed
get
togetIn
- Added
setIn
andsetKey
- API change: renamed
-
v0.17.0 - 2016/03/29
- Minor API change (shouldn't affect anyone): changed integer conversions in
isIn
,transpose
and currying functions - API change:
getAt
no longer accepts strings as indexes - Added
getArgAt
andsetAt
- Minor API change (shouldn't affect anyone): changed integer conversions in
-
v0.16.0 - 2016/03/23
- Fully compatible with versions down to 0.15.x
- Added
init
,tail
,getAt
,head
,last
-
v0.15.3 - 2016/03/21
- Fully compatible with versions down to 0.15.x
- Updated
generic
function and removed unused Function.prototype caching - Added specific tests for
generic
,sorter
andsorterDesc
- Minor improvements in documentation
-
v0.15.2 - 2016/03/17
- Fully compatible with versions down to 0.15.x
- Added support for Travis CI and Coveralls
- Updated README and fixed typo in documentation
-
v0.15.1 - 2016/03/08
- Fully compatible with version 0.15.0
- Minor performance improvements
-
v0.15.0 - 2016/03/03
- API change: changed
insert
andsorter
- Added
invokerOn
,sort
,sorterDesc
andsortWith
- API change: changed
-
v0.14.0 - 2015/05/13
- Fully compatible with versions down to 0.13.x
- Added
transpose
,zip
,zipWithIndex
-
v0.13.0 - 2015/05/06
- API change:
difference
,intersection
anduniques
now use the "SameValueZero" comparison - Added
clamp
,contains
,isIn
,isSVZ
- API change:
-
v0.12.0 - 2015/04/22
- Fully compatible with versions down to 0.9.x
- Added
enumerables
andpluckKey
- Added
mergeOwn
,ownPairs
,ownValues
andtearOwn
-
v0.11.0 - 2015/04/17
- Fully compatible with versions down to 0.9.x
- The
union
function now can work with array-like objects - Added
flatMapWith
,partition
,partitionWith
-
v0.10.0 - 2015/04/15
- Fully compatible with version 0.9.x
- Added
merge
function - Added
binary
andunary
as shortcuts for common use cases ofaritize
-
v0.9.0 - 2015/04/10
- API change: dropped the boolean parameter in
flatten
and addedshallowFlatten
- API change: dropped the boolean parameter in
curry
andcurryable
, addedcurryRight
andcurryableRight
- API change: renamed
typeOf
totype
to avoid confusion with the operator - Added the
filterWith
function
- API change: dropped the boolean parameter in
-
v0.8.0 - 2015/04/03
- API change: the
values
function now picks from all enumerable properties, even inherited - API change: renamed
getFromPath
togetWithPath
- Added
fromPairs
,immutable
,make
,pairs
,tear
- API change: the
-
v0.7.0 - 2015/03/25
- Fully compatible with previous 0.x versions
- Added the
group
andgroupBy
functions - Added the
find
andfindIndex
functions - Some long due performance improvements on
curry
,curryable
andpartial
-
v0.6.3 - 2015/03/20
- The documentation is now online
- Minor fixes in doc comments
-
v0.6.2 - 2015/03/18
- First public release