From 98843644fd3bd8d8198d9fff7ab17180b7ca097d Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Sat, 2 May 2015 12:12:17 +0200 Subject: update client libs --- js/vendor/es6-shim/.bower.json | 8 ++-- js/vendor/es6-shim/CHANGELOG.md | 7 ++++ js/vendor/es6-shim/bower.json | 2 +- js/vendor/es6-shim/component.json | 2 +- js/vendor/es6-shim/es6-shim.js | 85 ++++++++++++++++++++++++++++++++------ js/vendor/es6-shim/es6-shim.map | 2 +- js/vendor/es6-shim/es6-shim.min.js | 4 +- js/vendor/es6-shim/package.json | 6 +-- 8 files changed, 91 insertions(+), 25 deletions(-) (limited to 'js') diff --git a/js/vendor/es6-shim/.bower.json b/js/vendor/es6-shim/.bower.json index 354c79ee2..fa6307c70 100644 --- a/js/vendor/es6-shim/.bower.json +++ b/js/vendor/es6-shim/.bower.json @@ -1,6 +1,6 @@ { "name": "es6-shim", - "version": "0.30.0", + "version": "0.31.0", "repo": "paulmillr/es6-shim", "description": "ECMAScript 6 (Harmony) compatibility shims for legacy JavaScript engines", "keywords": [ @@ -28,11 +28,11 @@ "test" ], "homepage": "https://github.com/paulmillr/es6-shim", - "_release": "0.30.0", + "_release": "0.31.0", "_resolution": { "type": "version", - "tag": "0.30.0", - "commit": "ba581d8a4b9c1bdbadc71188d18a011f6be638a0" + "tag": "0.31.0", + "commit": "dbbbe60d5cef7cb64f179c1c6fc483d3a1e26c5f" }, "_source": "git://github.com/paulmillr/es6-shim.git", "_target": "~0.*", diff --git a/js/vendor/es6-shim/CHANGELOG.md b/js/vendor/es6-shim/CHANGELOG.md index 976cdef7b..8f2b84314 100644 --- a/js/vendor/es6-shim/CHANGELOG.md +++ b/js/vendor/es6-shim/CHANGELOG.md @@ -1,5 +1,12 @@ # es6-shim x.x.x (not yet released) +# es6-shim 0.31.0 (1 May 2015) +* All Array.prototype methods should use `ToLength`, not `ToUint32`, on `this.length`. +* Preserve and use original Array.prototype functions (for later shimming) +* Make String#{startsWith, endsWith, includes} tests a bit more granular. +* Fix Map/Set invalid receiver error messages for WebKit +* Update `grunt-saucelabs`, `jscs` + # es6-shim 0.30.0 (26 Apr 2015) * `Map` and `Set` methods are not generic, and must only be called on valid `Map` and `Set` objects. * Use the native `Number#clz` (in Safari 8, eg) inside `Math.clz32` diff --git a/js/vendor/es6-shim/bower.json b/js/vendor/es6-shim/bower.json index 386992c6b..440cc8ee4 100644 --- a/js/vendor/es6-shim/bower.json +++ b/js/vendor/es6-shim/bower.json @@ -1,6 +1,6 @@ { "name": "es6-shim", - "version": "0.30.0", + "version": "0.31.0", "repo": "paulmillr/es6-shim", "description": "ECMAScript 6 (Harmony) compatibility shims for legacy JavaScript engines", "keywords": [ diff --git a/js/vendor/es6-shim/component.json b/js/vendor/es6-shim/component.json index 7e18ff677..257db652f 100644 --- a/js/vendor/es6-shim/component.json +++ b/js/vendor/es6-shim/component.json @@ -1,6 +1,6 @@ { "name": "es6-shim", - "version": "0.30.0", + "version": "0.31.0", "repo": "paulmillr/es6-shim", "description": "ECMAScript 6 (Harmony) compatibility shims for legacy JavaScript engines", "keywords": [ diff --git a/js/vendor/es6-shim/es6-shim.js b/js/vendor/es6-shim/es6-shim.js index 1ab73a3ea..1e80a9ff4 100644 --- a/js/vendor/es6-shim/es6-shim.js +++ b/js/vendor/es6-shim/es6-shim.js @@ -53,6 +53,11 @@ }; var supportsDescriptors = !!Object.defineProperty && arePropertyDescriptorsSupported(); + var _forEach = Function.call.bind(Array.prototype.forEach); + var _map = Function.call.bind(Array.prototype.map); + var _reduce = Function.call.bind(Array.prototype.reduce); + var _filter = Function.call.bind(Array.prototype.filter); + var defineProperty = function (object, name, value, force) { if (!force && name in object) { return; } if (supportsDescriptors) { @@ -70,7 +75,7 @@ // Define configurable, writable and non-enumerable props // if they don’t exist. var defineProperties = function (object, map) { - Object.keys(map).forEach(function (name) { + _forEach(Object.keys(map), function (name) { var method = map[name]; defineProperty(object, name, method, false); }); @@ -888,6 +893,60 @@ overrideNative(Array, 'from', ArrayShims.from); } + var toLengthsCorrectly = function (method, reversed) { + var obj = { length: -1 }; + obj[reversed ? ((-1 >>> 0) - 1) : 0] = true; + return valueOrFalseIfThrows(function () { + method.call(obj, function () { + // note: in nonconforming browsers, this will be called + // -1 >>> 0 times, which is 4294967295, so the throw matters. + throw new RangeError('should not reach here'); + }, []); + }); + }; + if (!toLengthsCorrectly(Array.prototype.forEach)) { + var originalForEach = Array.prototype.forEach; + overrideNative(Array.prototype, 'forEach', function forEach(callbackFn) { + if (this.length >= 0) { return originalForEach.apply(this, arguments); } + }, true); + } + if (!toLengthsCorrectly(Array.prototype.map)) { + var originalMap = Array.prototype.map; + overrideNative(Array.prototype, 'map', function map(callbackFn) { + if (this.length >= 0) { return originalMap.apply(this, arguments); } + }, true); + } + if (!toLengthsCorrectly(Array.prototype.filter)) { + var originalFilter = Array.prototype.filter; + overrideNative(Array.prototype, 'filter', function filter(callbackFn) { + if (this.length >= 0) { return originalFilter.apply(this, arguments); } + }, true); + } + if (!toLengthsCorrectly(Array.prototype.some)) { + var originalSome = Array.prototype.some; + overrideNative(Array.prototype, 'some', function some(callbackFn) { + if (this.length >= 0) { return originalSome.apply(this, arguments); } + }, true); + } + if (!toLengthsCorrectly(Array.prototype.every)) { + var originalEvery = Array.prototype.every; + overrideNative(Array.prototype, 'every', function every(callbackFn) { + if (this.length >= 0) { return originalEvery.apply(this, arguments); } + }, true); + } + if (!toLengthsCorrectly(Array.prototype.reduce)) { + var originalReduce = Array.prototype.reduce; + overrideNative(Array.prototype, 'reduce', function reduce(callbackFn) { + if (this.length >= 0) { return originalReduce.apply(this, arguments); } + }, true); + } + if (!toLengthsCorrectly(Array.prototype.reduceRight, true)) { + var originalReduceRight = Array.prototype.reduceRight; + overrideNative(Array.prototype, 'reduceRight', function reduceRight(callbackFn) { + if (this.length >= 0) { return originalReduceRight.apply(this, arguments); } + }, true); + } + var maxSafeInteger = Math.pow(2, 53) - 1; defineProperties(Number, { MAX_SAFE_INTEGER: maxSafeInteger, @@ -948,9 +1007,9 @@ var keys = Object.keys(Object(source)); var symbols; if (ES.IsCallable(Object.getOwnPropertySymbols)) { - symbols = Object.getOwnPropertySymbols(Object(source)).filter(isEnumerableOn(source)); + symbols = _filter(Object.getOwnPropertySymbols(Object(source)), isEnumerableOn(source)); } - return keys.concat(symbols || []).reduce(assignTo(source), target); + return _reduce(keys.concat(symbols || []), assignTo(source), target); }; var ObjectShims = { @@ -959,7 +1018,7 @@ if (!ES.TypeIsObject(target)) { throw new TypeError('target must be an object'); } - return Array.prototype.reduce.call(sliceArgs.apply(0, arguments), assignReducer); + return _reduce(sliceArgs.apply(0, arguments), assignReducer); }, // Added in WebKit in https://bugs.webkit.org/show_bug.cgi?id=143865 @@ -1201,7 +1260,7 @@ // sets up proper prototype chain where possible Object.setPrototypeOf(OrigRegExp, RegExpShim); } - Object.getOwnPropertyNames(OrigRegExp).forEach(function (key) { + _forEach(Object.getOwnPropertyNames(OrigRegExp), function (key) { if (key === '$input') { return; } // Chrome < v39 & Opera < 26 have a nonstandard "$input" property if (key in noop) { return; } Value.proxy(OrigRegExp, key, RegExpShim); @@ -1222,7 +1281,7 @@ leftContext: '$`', rightContext: '$\'' }; - Object.keys(regexGlobals).forEach(function (prop) { + _forEach(Object.keys(regexGlobals), function (prop) { if (prop in RegExp && !(regexGlobals[prop] in RegExp)) { Value.getter(RegExp, regexGlobals[prop], function get() { return RegExp[prop]; @@ -1353,8 +1412,8 @@ if (allZero) { return 0; } var largest = Math.max.apply(Math, numbers); - var divided = numbers.map(function (number) { return number / largest; }); - var sum = divided.map(square).reduce(add); + var divided = _map(numbers, function (number) { return number / largest; }); + var sum = _reduce(_map(divided, square), add); return largest * Math.sqrt(sum); }, @@ -1595,7 +1654,7 @@ }; var triggerPromiseReactions = function (reactions, x) { - reactions.forEach(function (reaction) { + _forEach(reactions, function (reaction) { enqueue(function () { // PromiseReactionTask var handler = reaction.handler; @@ -1865,7 +1924,7 @@ // Their fast path also requires that the environment preserve // property insertion order, which is not guaranteed by the spec. var testOrder = function (a) { - var b = Object.keys(a.reduce(function (o, k) { + var b = Object.keys(_reduce(a, function (o, k) { o[k] = true; return o; }, {})); @@ -2216,7 +2275,7 @@ var ensureMap = function ensureMap(set) { if (!set['[[SetData]]']) { var m = set['[[SetData]]'] = new collectionShims.Map(); - Object.keys(set._storage).forEach(function (k) { + _forEach(Object.keys(set._storage), function (k) { // fast check for leading '$' if (k.charCodeAt(0) === 36) { k = k.slice(1); @@ -2329,7 +2388,7 @@ iterable = arguments[0]; } if (Array.isArray(iterable) || Type.string(iterable)) { - Array.prototype.forEach.call(iterable, function (entry) { + _forEach(iterable, function (entry) { m.set(entry[0], entry[1]); }); } else if (iterable instanceof Map) { @@ -2785,7 +2844,7 @@ sup: function sub() { return ES.CreateHTML(this, 'sup', '', ''); } }; defineProperties(String.prototype, stringHTMLshims); - Object.keys(stringHTMLshims).forEach(function (key) { + _forEach(Object.keys(stringHTMLshims), function (key) { var method = String.prototype[key]; var shouldOverwrite = false; if (ES.IsCallable(method)) { diff --git a/js/vendor/es6-shim/es6-shim.map b/js/vendor/es6-shim/es6-shim.map index 433952cec..a812157a1 100644 --- a/js/vendor/es6-shim/es6-shim.map +++ b/js/vendor/es6-shim/es6-shim.map @@ -1 +1 @@ -{"version":3,"sources":["es6-shim.js"],"names":["root","factory","define","amd","exports","module","returnExports","this","not","notThunker","func","notThunk","apply","arguments","throwsError","e","valueOrFalseIfThrows","isCallableWithoutNew","arePropertyDescriptorsSupported","Object","defineProperty","supportsDescriptors","object","name","value","force","configurable","enumerable","writable","defineProperties","map","keys","forEach","method","create","prototype","properties","Prototype","supportsSubclassing","C","f","setPrototypeOf","Sub","Subclass","arg","o","constructor","startsWithRejectsRegex","String","startsWith","startsWithHandlesInfinity","Infinity","getGlobal","Function","globals","globalIsFinite","isFinite","hasStrictMode","call","startsWithIsCompliant","_indexOf","bind","indexOf","_toString","toString","_hasOwnProperty","hasOwnProperty","ArrayIterator","noop","Symbol","symbolSpecies","species","Type","x","string","regex","symbol","numberIsNaN","Number","isNaN","numberIsFinite","Value","getter","TypeError","get","proxy","originalObject","key","targetObject","originalDescriptor","getOwnPropertyDescriptor","getKey","set","setKey","redefine","property","newValue","descriptor","preserveToString","target","source","overrideNative","replacement","original","$iterator$","iterator","Set","addIterator","impl","implementation","isArguments","str","result","length","callee","safeApply","ES","Call","F","V","args","IsCallable","RequireObjectCoercible","optMessage","TypeIsObject","ToObject","ToInt32","ToNumber","ToUint32","ToInteger","number","Math","floor","abs","ToLength","len","MAX_SAFE_INTEGER","SameValue","a","b","SameValueZero","IsIterable","GetIterator","itFn","it","IteratorNext","next","Construct","obj","_es6construct","CreateHTML","tag","attribute","S","p1","escapedV","replace","p2","p3","emulateES6construct","fromCodePoint","originalFromCodePoint","codePoints","StringShims","i","RangeError","push","fromCharCode","join","raw","callSite","cooked","rawString","literalsegments","stringElements","nextIndex","nextKey","nextSeg","nextSub",1,"stringRepeat","repeat","s","times","half","stringMaxLength","StringPrototypeShims","thisStr","numTimes","searchString","searchStr","startArg","start","max","slice","endsWith","thisLen","posArg","pos","end","min","includes","position","codePointAt","first","charCodeAt","isEnd","second","hasStringTrimBug","trim","ws","trimRegexp","RegExp","StringIterator","_s","_i","done","substr","ArrayShims","from","iterable","mapFn","list","hasThisArg","thisArg","usingIterator","iterationValue","Array","of","iteratorResult","array","kind","retval","ObjectIterator","getAllKeys","shift","arrayOfSupportsSubclassing","Foo","fooArr","ArrayPrototypeShims","copyWithin","relativeTarget","relativeStart","to","fin","count","direction","fill","O","relativeEnd","find","predicate","findIndex","values","entries","unscopables","originalArrayPrototypeValues","getPrototypeOf","arrayFromSwallowsNegativeLengths","arrayFromHandlesIterables","arr","maxSafeInteger","pow","MIN_SAFE_INTEGER","EPSILON","parseInt","parseFloat","isInteger","isSafeInteger","item","idx","isEnumerableOn","propertyIsEnumerable","sliceArgs","initial","desiredArgCount","assignTo","assignToSource","assignReducer","symbols","getOwnPropertySymbols","filter","concat","reduce","ObjectShims","assign","is","assignHasPendingExceptions","preventExtensions","thrower","ES5ObjectShims","magic","checkArgs","proto","polyfill","FAKENULL","gpo","spo","p","objectKeysAcceptsPrimitives","originalObjectKeys","getOwnPropertyNames","objectGOPNAcceptsPrimitives","originalObjectGetOwnPropertyNames","objectGOPDAcceptsPrimitives","originalObjectGetOwnPropertyDescriptor","seal","objectSealAcceptsPrimitives","originalObjectSeal","isSealed","objectIsSealedAcceptsPrimitives","originalObjectIsSealed","freeze","objectFreezeAcceptsPrimitives","originalObjectFreeze","isFrozen","objectIsFrozenAcceptsPrimitives","originalObjectIsFrozen","objectPreventExtensionsAcceptsPrimitives","originalObjectPreventExtensions","isExtensible","objectIsExtensibleAcceptsPrimitives","originalObjectIsExtensible","objectGetProtoAcceptsPrimitives","originalGetProto","flags","regExpFlagsGetter","global","ignoreCase","multiline","unicode","sticky","regExpSupportsFlagsWithRegex","OrigRegExp","RegExpShim","pattern","regexGlobals","input","lastMatch","lastParen","leftContext","rightContext","prop","square","n","add","inverseEpsilon","roundTiesToEven","BINARY_32_EPSILON","BINARY_32_MAX_VALUE","BINARY_32_MIN_VALUE","numberCLZ","clz","MathShims","acosh","NaN","log","E","sqrt","asinh","atanh","cbrt","negate","exp","clz32","LOG2E","cosh","expm1","t","sum","hypot","y","anyNaN","allZero","anyInfinity","numbers","every","num","largest","divided","log2","log10","LOG10E","log1p","sign","sinh","tanh","trunc","imul","ah","al","bh","bl","fround","v","MAX_VALUE","expm1OfTen","origMathRound","round","roundHandlesBoundaryConditions","smallestPositiveNumberWhereRoundBreaks","largestPositiveNumberWhereRoundBreaks","roundDoesNotIncreaseIntegers","ceil","origImul","PromiseShim","Promise","Promise$prototype","IsPromise","promise","_promiseConstructor","_status","PromiseCapability","capability","resolver","resolve","reject","setTimeout","makeZeroTimeout","window","postMessage","timeouts","messageName","setZeroTimeout","fn","handleMessage","event","data","stopPropagation","addEventListener","makePromiseAsap","P","task","then","enqueue","setImmediate","process","nextTick","updatePromiseFromPotentialThenable","triggerPromiseReactions","reactions","reaction","handler","updateResult","promiseResolutionHandler","onFulfilled","onRejected","_resolveReactions","_rejectReactions","resolution","_result","reason","_promiseAllResolver","index","remaining","all","nextPromise","resolveElement","race","rejectPromise","resolvePromise","Identity","Thrower","catch","resolutionHandler","resolveReaction","rejectReaction","accept","defer","chain","promiseSupportsSubclassing","promiseIgnoresNonFunctionThenCallbacks","promiseRequiresObjectContext","testOrder","k","preservesInsertionOrder","preservesNumericInsertionOrder","fastkey","type","emptyObject","collectionShims","Map","empty","MapEntry","prev","isRemoved","isMap","_es6map","requireMapSlot","MapIterator","head","_head","_storage","_size","adder","nextItem","Map$prototype","fkey","entry","has","delete","clear","callback","context","isSet","_es6set","requireSetSlot","SetShim","[[SetData]]","Set$prototype","ensureMap","m","charAt","size","hasFKey","entireSet","mapAcceptsArguments","OrigMapNoArgs","isArray","mapUsesSameValueZero","mapSupportsChaining","origMapSet","origMapGet","origMapHas","setUsesSameValueZero","setSupportsChaining","origSetAdd","origSetHas","origSetDel","SetDelete","mapSupportsSubclassing","M","mapFailsToSupportSubclassing","mapRequiresNew","OrigMap","setSupportsSubclassing","setFailsToSupportSubclassing","setRequiresNew","OrigSet","mapIterationThrowsStopIterator","Reflect","throwUnlessTargetIsObject","construct","deleteProperty","desc","enumerate","ownKeys","callAndCatchException","ConvertExceptionToBoolean","internalGet","receiver","parent","undefined","internalSet","existingDesc","propertyKey","attributes","objectDotGetPrototypeOf","willCreateCircularPrototype","Date","dateToString","shimmedDateToString","valueOf","stringHTMLshims","anchor","big","blink","bold","fixed","fontcolor","color","fontsize","italics","link","url","small","strike","sub","sup","shouldOverwrite","output","quotesCount","match","toLowerCase"],"mappings":"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