| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 | v0.8.2  --  2012.06.22Fix errors in Array's intersection and exclusion methods, related to improperusage of contains methodv0.8.1  --  2012.06.13Reorganized internal logic of Function.prototype.memoize. So it's more safe nowand clears cache properly. Additionally preventCache option was provided.v0.8.0  --  2012.05.28Again, major overhaul. Probably last experimental stuff was trashed, all APIlooks more like standard extensions now.Changes:* Turn all Object.prototype extensions into functions and move them to Objectnamespace. 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.jsonRemoved 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  functionNew 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 ES6Fixes:* 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 callbackv0.7.1  --  2012.01.05New 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 returnedFixes* Array.prototype.forEachRight, object's length read through UInt32 conversionv0.7.0  --  2011.12.27Major update.Stepped back from experimental ideas and introduced more standard approachtaking example from how ES5 methods and functions are designed. One exceptionsis that, we don’t refrain from declaring methods for Object.prototype - it’s upto developer whether how he decides to use it in his context (as function or asmethod).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, isNumericRenamed 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.dashToCamelCaseRemoved 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	addedv0.6.3  --  2011.12.12* Cleared npm warning for misnamed property in package.jsonv0.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.07New 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, formatFixed:* Object.extend does now prototypal extend as exptected* Object.merge now tries to overwrite only configurable properties* Function.flipImproved:* 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 contextv0.5.1  --  2011.07.11* Function's bindBind, bindCall and bindApply now more versatilev0.5.0  --  2011.07.07* Removed Object.is and List.apply* Renamed Object.plain.is to Object.plain.isPlainObject (keep naming convention  consistent)* Improved documentationv0.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 functionsv0.1.0  --  2011.05.24* Initial version
 |