You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							650 lines
						
					
					
						
							27 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							650 lines
						
					
					
						
							27 KiB
						
					
					
				
								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
							 |