123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650 |
- For recent changelog see CHANGELOG.md
- -----
- v0.10.15 -- 2017.03.20
- * Fix Object.isValue (it was actually isNotValue)
- v0.10.14 -- 2017.03.15
- * Object.isValue util
- v0.10.13 -- 2017.03.13
- * Introduce JSON.safeStringify
- * Improve message handling in error/custom
- * Fix Array#concat shim
- * Improve Array#flatten algorithm so it's stack trace friendly
- * Make Object.isObject ES3 compatible
- v0.10.12 -- 2016.07.01
- * Ensure symbols are copied in Object.mixin
- * Prevent RangeError errors in array#flatten
- * Do not validate invalidate dates in validDate
- v0.10.11 -- 2015.12.18
- * Ensure that check for implementation of RegExp flags doesn't crash in V8 (thanks @mathiasbynens)
- v0.10.10 -- 2015.12.11
- * Add Object.isNumberValue util
- v0.10.9 -- 2015.12.01
- * Add Object.ensureNaturalNumber and Object.ensureNaturalNumberValue
- v0.10.8 -- 2015.10.02
- * Add Number.isNatural
- * Add Object.find and Object.findKey
- * Support arrays in Object.copyDeep
- * Fix iteration issue in forEachRight and someRight
- * Fix detection of native sinh
- * Depend on es6-symbol v3
- v0.10.7 -- 2015.04.22
- * New utlitities. They're convention differs from v0.10, as they were supposed to land in v1.
- Still they're non breaking and start the conventions to be used in v1
- * Object.validateArrayLike
- * Object.validateArrayLikeObject
- * Object.validateStringifiable
- * Object.validateStringifiableValue
- * Universal utilities for array-like/iterable objects
- * Iterable.is
- * Iterable.validate
- * Iterable.validateObject
- * Iterable.forEach
- * Fix camelToHyphen resolution, it must be absolutely reversable by hyphenToCamel
- * Fix calculations of large numbers in Math.tanh
- * Fix algorithm of Math.sinh
- * Fix indexes to not use real symbols
- * Fix length of String.fromCodePoint
- * Fix tests of Array#copyWithin
- * Update Travis CI configuration
- v0.10.6 -- 2015.02.02
- * Fix handling of infinite values in Math.trunc
- * Fix handling of getters in Object.normalizeOptions
- v0.10.5 -- 2015.01.20
- * Add Function#toStringTokens
- * Add Object.serialize and Object.unserialize
- * Add String.randomUniq
- * Fix Strin#camelToHyphen issue with tokens that end with digit
- * Optimise Number.isInteger logic
- * Improve documentation
- * Configure lint scripts
- * Fix spelling of LICENSE
- v0.10.4 -- 2014.04.30
- * Assure maximum spec compliance of Array.of and Array.from (thanks @mathiasbynens)
- * Improve documentations
- v0.10.3 -- 2014.04.29
- Provide accurate iterators handling:
- * Array.from improvements:
- * Assure right unicode symbols resolution when processing strings in Array.from
- * Rely on ES6 symbol shim and use native @@iterator Symbol if provided by environment
- * Add methods:
- * Array.prototype.entries
- * Array.prototype.keys
- * Array.prototype.values
- * Array.prototype[@@iterator]
- * String.prototype[@@iterator]
- Improve documentation
- v0.10.2 -- 2014.04.24
- - Simplify and deprecate `isCallable`. It seems in ES5 based engines there are
- no callable objects which are `typeof obj !== 'function'`
- - Update Array.from map callback signature (up to latest resolution of TC39)
- - Improve documentation
- v0.10.1 -- 2014.04.14
- Bump version for npm
- (Workaround for accidental premature publish & unpublish of v0.10.0 a while ago)
- v0.10.0 -- 2014.04.13
- Major update:
- - All methods and function specified for ECMAScript 6 are now introduced as
- shims accompanied with functions through which (optionally) they can be
- implementend on native objects
- - Filename convention was changed to shorter and strictly lower case names. e.g.
- `lib/String/prototype/starts-with` became `string/#/starts-with`
- - Generated functions are guaranteed to have expected length
- - Objects with null prototype (created via `Object.create(null)`) are widely
- supported (older version have crashed due to implied `obj.hasOwnProperty` and
- related invocations)
- - Support array subclasses
- - When handling lists do not limit its length to Uint32 range
- - Use newly introduced `Object.eq` for strict equality in place of `Object.is`
- - Iteration of Object have been improved so properties that were hidden or
- removed after iteration started are not iterated.
- Additions:
- - `Array.isPlainArray`
- - `Array.validArray`
- - `Array.prototype.concat` (as updated with ES6)
- - `Array.prototype.copyWithin` (as introduced with ES6)
- - `Array.prototype.fill` (as introduced with ES6)
- - `Array.prototype.filter` (as updated with ES6)
- - `Array.prototype.findIndex` (as introduced with ES6)
- - `Array.prototype.map` (as updated with ES6)
- - `Array.prototype.separate`
- - `Array.prototype.slice` (as updated with ES6)
- - `Array.prototype.splice` (as updated with ES6)
- - `Function.prototype.copy`
- - `Math.acosh` (as introduced with ES6)
- - `Math.atanh` (as introduced with ES6)
- - `Math.cbrt` (as introduced with ES6)
- - `Math.clz32` (as introduced with ES6)
- - `Math.cosh` (as introduced with ES6)
- - `Math.expm1` (as introduced with ES6)
- - `Math.fround` (as introduced with ES6)
- - `Math.hypot` (as introduced with ES6)
- - `Math.imul` (as introduced with ES6)
- - `Math.log2` (as introduced with ES6)
- - `Math.log10` (as introduced with ES6)
- - `Math.log1p` (as introduced with ES6)
- - `Math.sinh` (as introduced with ES6)
- - `Math.tanh` (as introduced with ES6)
- - `Math.trunc` (as introduced with ES6)
- - `Number.EPSILON` (as introduced with ES6)
- - `Number.MIN_SAFE_INTEGER` (as introduced with ES6)
- - `Number.MAX_SAFE_INTEGER` (as introduced with ES6)
- - `Number.isFinite` (as introduced with ES6)
- - `Number.isInteger` (as introduced with ES6)
- - `Number.isSafeInteger` (as introduced with ES6)
- - `Object.create` (with fix for V8 issue which disallows prototype turn of
- objects derived from null
- - `Object.eq` - Less restrictive version of `Object.is` based on SameValueZero
- algorithm
- - `Object.firstKey`
- - `Object.keys` (as updated with ES6)
- - `Object.mixinPrototypes`
- - `Object.primitiveSet`
- - `Object.setPrototypeOf` (as introduced with ES6)
- - `Object.validObject`
- - `RegExp.escape`
- - `RegExp.prototype.match` (as introduced with ES6)
- - `RegExp.prototype.replace` (as introduced with ES6)
- - `RegExp.prototype.search` (as introduced with ES6)
- - `RegExp.prototype.split` (as introduced with ES6)
- - `RegExp.prototype.sticky` (as introduced with ES6)
- - `RegExp.prototype.unicode` (as introduced with ES6)
- - `String.fromCodePoint` (as introduced with ES6)
- - `String.raw` (as introduced with ES6)
- - `String.prototype.at`
- - `String.prototype.codePointAt` (as introduced with ES6)
- - `String.prototype.normalize` (as introduced with ES6)
- - `String.prototype.plainReplaceAll`
- Removals:
- - `reserved` set
- - `Array.prototype.commonLeft`
- - `Function.insert`
- - `Function.remove`
- - `Function.prototype.silent`
- - `Function.prototype.wrap`
- - `Object.descriptor` Move to external `d` project.
- See: https://github.com/medikoo/d
- - `Object.diff`
- - `Object.extendDeep`
- - `Object.reduce`
- - `Object.values`
- - `String.prototype.trimCommonLeft`
- Renames:
- - `Function.i` into `Function.identity`
- - `Function.k` into `Function.constant`
- - `Number.toInt` into `Number.toInteger`
- - `Number.toUint` into `Number.toPosInteger`
- - `Object.extend` into `Object.assign` (as introduced in ES 6)
- - `Object.extendProperties` into `Object.mixin`, with improved internal
- handling, so it matches temporarily specified `Object.mixin` for ECMAScript 6
- - `Object.isList` into `Object.isArrayLike`
- - `Object.mapToArray` into `Object.toArray` (with fixed function length)
- - `Object.toPlainObject` into `Object.normalizeOptions` (as this is the real
- use case where we use this function)
- - `Function.prototype.chain` into `Function.prototype.compose`
- - `Function.prototype.match` into `Function.prototype.spread`
- - `String.prototype.format` into `String.formatMethod`
- Improvements & Fixes:
- - Remove workaround for primitive values handling in object iterators
- - `Array.from`: Update so it follows ES 6 spec
- - `Array.prototype.compact`: filters just null and undefined values
- (not all falsies)
- - `Array.prototype.eIndexOf` and `Array.prototype.eLastIndexOf`: fix position
- handling, improve internals
- - `Array.prototype.find`: return undefined not null, in case of not found
- (follow ES 6)
- - `Array.prototype.remove` fix function length
- - `Error.custom`: simplify, Custom class case is addressed by outer
- `error-create` project -> https://github.com/medikoo/error-create
- - `Error.isError` true only for Error instances (remove detection of host
- Exception objects)
- - `Number.prototype.pad`: Normalize negative pad
- - `Object.clear`: Handle errors same way as in `Object.assign`
- - `Object.compact`: filters just null and undefined values (not all falsies)
- - `Object.compare`: Take into account NaN values
- - `Object.copy`: Split into `Object.copy` and `Object.copyDeep`
- - `Object.isCopy`: Separate into `Object.isCopy` and `Object.isCopyDeep`, where
- `isCopyDeep` handles nested plain objects and plain arrays only
- - `String.prototype.endsWith`: Adjust up to ES6 specification
- - `String.prototype.repeat`: Adjust up to ES6 specification and improve algorithm
- - `String.prototype.simpleReplace`: Rename into `String.prototype.plainReplace`
- - `String.prototype.startsWith`: Adjust up to ES6 specification
- - Update lint rules, and adjust code to that
- - Update Travis CI configuration
- - Remove Makefile (it's cross-env utility)
- v0.9.2 -- 2013.03.11
- Added:
- * Array.prototype.isCopy
- * Array.prototype.isUniq
- * Error.CustomError
- * Function.validFunction
- * Object.extendDeep
- * Object.descriptor.binder
- * Object.safeTraverse
- * RegExp.validRegExp
- * String.prototype.capitalize
- * String.prototype.simpleReplace
- Fixed:
- * Fix Array.prototype.diff for sparse arrays
- * Accept primitive objects as input values in Object iteration methods and
- Object.clear, Object.count, Object.diff, Object.extend,
- Object.getPropertyNames, Object.values
- * Pass expected arguments to callbacks of Object.filter, Object.mapKeys,
- Object.mapToArray, Object.map
- * Improve callable callback support in Object.mapToArray
- v0.9.1 -- 2012.09.17
- * Object.reduce - reduce for hash-like collections
- * Accapt any callable object as callback in Object.filter, mapKeys and map
- * Convention cleanup
- v0.9.0 -- 2012.09.13
- We're getting to real solid API
- Removed:
- * Function#memoize - it's grown up to be external package, to be soon published
- as 'memoizee'
- * String.guid - it doesn't fit es5-ext (extensions) concept, will be provided as
- external package
- # Function.arguments - obsolete
- # Function.context - obsolete
- # Function#flip - not readable when used, so it was never used
- # Object.clone - obsolete and confusing
- Added:
- * String#camelToHyphen - String format convertion
- Renamed:
- * String#dashToCamelCase -> String#hyphenToCamel
- Fixes:
- * Object.isObject - Quote names in literals that match reserved keywords
- (older implementations crashed on that)
- * String#repeat - Do not accept negative values (coerce them to 1)
- Improvements:
- * Array#remove - Accepts many arguments, we can now remove many values at once
- * Object iterators (forEach, map, some) - Compare function invoked with scope
- object bound to this
- * Function#curry - Algorithm cleanup
- * Object.isCopy - Support for all types, not just plain objects
- * Object.isPlainObject - Support for cross-frame objects
- * Do not memoize any of the functions, it shouldn't be decided internally
- * Remove Object.freeze calls in reserved, it's not up to convention
- * Improved documentation
- * Better linting (hard-core approach using both JSLint mod and JSHint)
- * Optional arguments are now documented in funtions signature
- v0.8.2 -- 2012.06.22
- Fix errors in Array's intersection and exclusion methods, related to improper
- usage of contains method
- v0.8.1 -- 2012.06.13
- Reorganized internal logic of Function.prototype.memoize. So it's more safe now
- and clears cache properly. Additionally preventCache option was provided.
- v0.8.0 -- 2012.05.28
- Again, major overhaul. Probably last experimental stuff was trashed, all API
- looks more like standard extensions now.
- Changes:
- * Turn all Object.prototype extensions into functions and move them to Object
- namespace. We learned that extending Object.prototype is bad idea in any case.
- * Rename Function.prototype.curry into Function.prototype.partial. This function
- is really doing partial application while currying is slightly different
- concept.
- * Convert Function.prototype.ncurry to new implementation of
- Function.prototype.curry, it now serves real curry concept additionaly it
- covers use cases for aritize and hold, which were removed.
- * Rename Array's peek to last, and provide support for sparse arrays in it
- * Rename Date's monthDaysCount into daysInMonth
- * Simplify object iterators, now order of iteration can be configured with just
- compareFn argument (no extra byKeys option)
- * Rename Object.isDuplicate to Object.isCopy
- * Rename Object.isEqual to Object.is which is compatible with future 'is'
- keyword
- * Function.memoize is now Function.prototype.memoize. Additionally clear cache
- functionality is added, and access to original arguments object.
- * Rename validation functions: assertNotNull to validValue, assertCallable to
- validCallable. validValue was moved to Object namespace. On success they now
- return validated value instead of true, it supports better composition.
- Additionally created Date.validDate and Error.validError
- * All documentation is now held in README.md not in code files.
- * Move guid to String namespace. All guids now start with numbers.
- * Array.generate: fill argument is now optional
- * Object.toArray is now Array.from (as new ES6 specification draft suggests)
- * All methods that rely on indexOf or lastIndexOf, now rely on egal (Object.is)
- versions of them (eIndexOf, eLastIndexOf)
- * Turn all get* functions that returned methods into actuall methods (get*
- functionality can still be achieved with help of Function.prototype.partial).
- So: Date.getFormat is now Date.prototype.format,
- Number.getPad is now Number.prototype.pad,
- String.getFormat is now String.prototype.format,
- String.getIndent is now String.prototype.indent,
- String.getPad is now String.prototype.pad
- * Refactored Object.descriptor, it is now just two functions, main one and
- main.gs, main is for describing values, and gs for describing getters and
- setters. Configuration is passed with first argument as string e.g. 'ce' for
- configurable and enumerable. If no configuration string is provided then by
- default it returns configurable and writable but not enumerable for value or
- configurable but not enumerable for getter/setter
- * Function.prototype.silent now returns prepared function (it was
- expected to be fixed for 0.7)
- * Reserved keywords map (reserved) is now array not hash.
- * Object.merge is now Object.extend (while former Object.extend was completely
- removed) - 'extend' implies that we change object, not creating new one (as
- 'merge' may imply). Similarily Object.mergeProperties was renamed to
- Object.extendProperties
- * Position argument support in Array.prototype.contains and
- String.prototype.contains (so it follows ES6 specification draft)
- * endPosition argument support in String.prototype.endsWith and fromPosition
- argument support in String.prototype.startsWith (so it follows ES6
- specification draft)
- * Better and cleaner String.prototype.indent implementation. No default value
- for indent string argument, optional nest value (defaults to 1), remove
- nostart argument
- * Correct length values for most methods (so they reflect length of similar
- methods in standard)
- * Length argument is now optional in number and string pad methods.
- * Improve arguments validation in general, so it adheres to standard conventions
- * Fixed format of package.json
- Removed methods and functions:
- * Object.prototype.slice - Object is not ordered collection, so slice doesn't
- make sense.
- * Function's rcurry, rncurry, s - too cumbersome for JS, not many use cases for
- that
- * Function.prototype.aritize and Function.prototype.hold - same functionality
- can be achieved with new Function.prototype.curry
- * Function.prototype.log - provided more generic Function.prototype.wrap for
- same use case
- * getNextIdGenerator - no use case for that (String.guid should be used if
- needed)
- * Object.toObject - Can be now acheived with Object(validValue(x))
- * Array.prototype.someValue - no real use case (personally used once and
- case was already controversial)
- * Date.prototype.duration - moved to external package
- * Number.getAutoincrement - No real use case
- * Object.prototype.extend, Object.prototype.override,
- Object.prototype.plainCreate, Object.prototype.plainExtend - It was probably
- too complex, same should be achieved just with Object.create,
- Object.descriptor and by saving references to super methods in local scope.
- * Object.getCompareBy - Functions should be created individually for each use
- case
- * Object.get, Object.getSet, Object.set, Object.unset - Not many use cases and
- same can be easily achieved with simple inline function
- * String.getPrefixWith - Not real use case for something that can be easily
- achieved with '+' operator
- * Object.isPrimitive - It's just negation of Object.isObject
- * Number.prototype.isLess, Number.prototype.isLessOrEqual - they shouldn't be in
- Number namespace and should rather be addressed with simple inline functions.
- * Number.prototype.subtract - Should rather be addressed with simple inline
- function
- New methods and functions:
- * Array.prototype.lastIndex - Returns last declared index in array
- * String.prototype.last - last for strings
- * Function.prototype.wrap - Wrap function with other, it allows to specify
- before and after behavior transform return value or prevent original function
- from being called.
- * Math.sign - Returns sign of a number (already in ES6 specification draft)
- * Number.toInt - Converts value to integer (already in ES6 specification draft)
- * Number.isNaN - Returns true if value is NaN (already in ES6 specification
- draft)
- * Number.toUint - Converts value to unsigned integer
- * Number.toUint32 - Converts value to 32bit unsigned integer
- * Array.prototype.eIndexOf, eLastIndexOf - Egal version (that uses Object.is) of
- standard methods (all methods that were using native indexOf or lastIndexOf
- now uses eIndexOf and elastIndexOf respectively)
- * Array.of - as it's specified for ES6
- Fixes:
- * Fixed binarySearch so it always returns valid list index
- * Object.isList - it failed on lists that are callable (e.g. NodeList in Nitro
- engine)
- * Object.map now supports third argument for callback
- v0.7.1 -- 2012.01.05
- New methods:
- * Array.prototype.firstIndex - returns first valid index of array (for
- sparse arrays it may not be '0'
- Improvements:
- * Array.prototype.first - now returns value for index returned by firstIndex
- * Object.prototype.mapToArray - can be called without callback, then array of
- key-value pairs is returned
- Fixes
- * Array.prototype.forEachRight, object's length read through UInt32 conversion
- v0.7.0 -- 2011.12.27
- Major update.
- Stepped back from experimental ideas and introduced more standard approach
- taking example from how ES5 methods and functions are designed. One exceptions
- is that, we don’t refrain from declaring methods for Object.prototype - it’s up
- to developer whether how he decides to use it in his context (as function or as
- method).
- In general:
- * Removed any method 'functionalization' and functionalize method itself.
- es5-ext declares plain methods, which can be configured to work as functions
- with call.bind(method) - see documentation.
- * Removed separation of Object methods for ES5 (with descriptors) and
- ES3 (plain) - we're following ES5 idea on that, some methods are intended just
- for enumerable properties and some are for all properties, all are declared
- for Object.prototype
- * Removed separation of Array generic (collected in List folder) and not generic
- methods (collected in Array folder). Now all methods are generic and are in
- Array/prototype folder. This separation also meant, that methods in Array are
- usually destructive. We don’t do that separation now, there’s generally no use
- case for destructive iterators, we should be fine with one version of each
- method, (same as ES5 is fine with e.g. one, non destructive 'filter' method)
- * Folder structure resembles tree of native ES5 Objects
- * All methods are written with ES5 conventions in mind, it means that most
- methods are generic and can be run on any object. In more detail:
- ** Array.prototype and Object.prototype methods can be run on any object (any
- not null or undefined value),
- ** Date.prototype methods should be called only on Date instances.
- ** Function.prototype methods can be called on any callable objects (not
- necessarily functions)
- ** Number.prototype & String.prototype methods can be called on any value, in
- case of Number it it’ll be degraded to number, in case of string it’ll be
- degraded to string.
- * Travis CI support (only for Node v0.6 branch, as v0.4 has buggy V8 version)
- Improvements for existing functions and methods:
- * Function.memoize (was Function.cache) is now fully generic, can operate on any
- type of arguments and it’s NaN safe (all NaN objects are considered equal)
- * Method properties passed to Object.prototype.extend or
- Object.prototype.override can aside of _super optionally take prototype object
- via _proto argument
- * Object iterators: forEach, mapToArray and every can now iterate in specified
- order
- * pluck, invoke and other functions that return reusable functions or methods
- have now their results memoized.
- New methods:
- * Global: assertNotNull, getNextIdGenerator, guid, isEqual, isPrimitive,
- toObject
- * Array: generate
- * Array.prototype: binarySearch, clear, contains, diff, exclusion, find, first,
- forEachRight, group, indexesOf, intersection, remove, someRight, someValue
- * Boolean: isBoolean
- * Date: isDate
- * Function: arguments, context, insert, isArguments, remove
- * Function.prototype: not, silent
- * Number: getAutoincrement, isNumber
- * Number.prototype: isLessOrEqual, isLess, subtract
- * Object: assertCallable, descriptor (functions for clean descriptors),
- getCompareBy, isCallable, isObject
- * Object.prototype: clone (real clone), compact, count, diff, empty,
- getPropertyNames, get, keyOf, mapKeys, override, plainCreate, plainExtend,
- slice, some, unset
- * RegExp: isRegExp
- * String: getPrefixWith, isString
- * String.prototype: caseInsensitiveCompare, contains, isNumeric
- Renamed methods:
- * Date.clone -> Date.prototype.copy
- * Date.format -> Date.getFormat
- * Date/day/floor -> Date.prototype.floorDay
- * Date/month/floor -> Date.prototype.floorMonth
- * Date/month/year -> Date.prototype.floorYear
- * Function.cache -> Function.memoize
- * Function.getApplyArg -> Function.prototype.match
- * Function.sequence -> Function.prototype.chain
- * List.findSameStartLength -> Array.prototype.commonLeft
- * Number.pad -> Number.getPad
- * Object/plain/clone -> Object.prototype.copy
- * Object/plain/elevate -> Object.prototype.flatten
- * Object/plain/same -> Object.prototype.isDuplicate
- * Object/plain/setValue -> Object.getSet
- * String.format -> String.getFormat
- * String.indent -> String.getIndent
- * String.pad -> String.getPad
- * String.trimLeftStr -> String.prototype.trimCommonLeft
- * Object.merge -> Object.prototype.mergeProperties
- * Object/plain/pluck -> Object.prototype.get
- * Array.clone is now Array.prototype.copy and can be used also on any array-like
- objects
- * List.isList -> Object.isList
- * List.toArray -> Object.prototype.toArray
- * String/convert/dashToCamelCase -> String.prototype.dashToCamelCase
- Removed methods:
- * Array.compact - removed destructive version (that operated on same array), we
- have now non destructive version as Array.prototype.compact.
- * Function.applyBind -> use apply.bind directly
- * Function.bindBind -> use bind.bind directly
- * Function.callBind -> use call.bind directly
- * Fuction.clone -> no valid use case
- * Function.dscope -> controversial approach, shouldn’t be considered seriously
- * Function.functionalize -> It was experimental but standards are standards
- * List/sort/length -> It can be easy obtained by Object.getCompareBy(‘length’)
- * List.concat -> Concat’s for array-like’s makes no sense, just convert to array
- first
- * List.every -> Use Array.prototype.every directly
- * List.filter -> Use Array.prototype.filter directly
- * List.forEach -> User Array.prototype.forEach directly
- * List.isListObject -> No valid use case, do: isList(list) && (typeof list ===
- 'object’)
- * List.map -> Use Array.prototype.map directly
- * List.reduce -> Use Array.prototype.reduce directly
- * List.shiftSame -> Use Array.prototype.commonLeft and do slice
- * List.slice -> Use Array.prototype.slice directly
- * List.some -> Use Array.prototype.some directly
- * Object.bindMethods -> it was version that considered descriptors, we have now
- Object.prototype.bindMethods which operates only on enumerable properties
- * Object.every -> version that considered all properties, we have now
- Object.prototype.every which iterates only enumerables
- * Object.invoke -> no use case
- * Object.mergeDeep -> no use case
- * Object.pluck -> no use case
- * Object.same -> it considered descriptors, now there’s only Object.isDuplicate
- which compares only enumerable properties
- * Object.sameType -> no use case
- * Object.toDescriptor and Object.toDescriptors -> replaced by much nicer
- Object.descriptor functions
- * Object/plain/link -> no use case (it was used internally only by
- Object/plain/merge)
- * Object/plain/setTrue -> now easily configurable by more universal
- Object.getSet(true)
- * String.trimRightStr -> Eventually String.prototype.trimCommonRight will be
- added
- v0.6.3 -- 2011.12.12
- * Cleared npm warning for misnamed property in package.json
- v0.6.2 -- 2011.08.12
- * Calling String.indent without scope (global scope then) now treated as calling
- it with null scope, it allows more direct invocations when using default nest
- string: indent().call(str, nest)
- v0.6.1 -- 2011.08.08
- * Added TAD test suite to devDependencies, configured test commands.
- Tests can be run with 'make test' or 'npm test'
- v0.6.0 -- 2011.08.07
- New methods:
- * Array: clone, compact (in place)
- * Date: format, duration, clone, monthDaysCount, day.floor, month.floor,
- year.floor
- * Function: getApplyArg, , ncurry, rncurry, hold, cache, log
- * List: findSameStartLength, shiftSame, peek, isListObject
- * Number: pad
- * Object: sameType, toString, mapToArray, mergeDeep, toDescriptor,
- toDescriptors, invoke
- * String: startsWith, endsWith, indent, trimLeftStr, trimRightStr, pad, format
- Fixed:
- * Object.extend does now prototypal extend as exptected
- * Object.merge now tries to overwrite only configurable properties
- * Function.flip
- Improved:
- * Faster List.toArray
- * Better global retrieval
- * Functionalized all Function methods
- * Renamed bindApply and bindCall to applyBind and callBind
- * Removed Function.inherit (as it's unintuitive curry clone)
- * Straightforward logic in Function.k
- * Fixed naming of some tests files (letter case issue)
- * Renamed Function.saturate into Function.lock
- * String.dashToCamelCase digits support
- * Strings now considered as List objects
- * Improved List.compact
- * Concise logic for List.concat
- * Test wit TAD in clean ES5 context
- v0.5.1 -- 2011.07.11
- * Function's bindBind, bindCall and bindApply now more versatile
- v0.5.0 -- 2011.07.07
- * Removed Object.is and List.apply
- * Renamed Object.plain.is to Object.plain.isPlainObject (keep naming convention
- consistent)
- * Improved documentation
- v0.4.0 -- 2011.07.05
- * Take most functions on Object to Object.plain to keep them away from object
- descriptors
- * Object functions with ES5 standard in mind (object descriptors)
- v0.3.0 -- 2011.06.24
- * New functions
- * Consistent file naming (dash instead of camelCase)
- v0.2.1 -- 2011.05.28
- * Renamed Functions.K and Function.S to to lowercase versions (use consistent
- naming)
- v0.2.0 -- 2011.05.28
- * Renamed Array folder to List (as its generic functions for array-like objects)
- * Added Makefile
- * Added various functions
- v0.1.0 -- 2011.05.24
- * Initial version
|