diff options
Diffstat (limited to 'node_modules/core-js/modules/es5.js')
-rw-r--r-- | node_modules/core-js/modules/es5.js | 311 |
1 files changed, 276 insertions, 35 deletions
diff --git a/node_modules/core-js/modules/es5.js b/node_modules/core-js/modules/es5.js index dd7ebadf8..50f72b047 100644 --- a/node_modules/core-js/modules/es5.js +++ b/node_modules/core-js/modules/es5.js @@ -1,35 +1,276 @@ -// This file still here for a legacy code and will be removed in a near time -require('./es6.object.create'); -require('./es6.object.define-property'); -require('./es6.object.define-properties'); -require('./es6.object.get-own-property-descriptor'); -require('./es6.object.get-prototype-of'); -require('./es6.object.keys'); -require('./es6.object.get-own-property-names'); -require('./es6.object.freeze'); -require('./es6.object.seal'); -require('./es6.object.prevent-extensions'); -require('./es6.object.is-frozen'); -require('./es6.object.is-sealed'); -require('./es6.object.is-extensible'); -require('./es6.function.bind'); -require('./es6.array.is-array'); -require('./es6.array.join'); -require('./es6.array.slice'); -require('./es6.array.sort'); -require('./es6.array.for-each'); -require('./es6.array.map'); -require('./es6.array.filter'); -require('./es6.array.some'); -require('./es6.array.every'); -require('./es6.array.reduce'); -require('./es6.array.reduce-right'); -require('./es6.array.index-of'); -require('./es6.array.last-index-of'); -require('./es6.date.now'); -require('./es6.date.to-iso-string'); -require('./es6.date.to-json'); -require('./es6.parse-int'); -require('./es6.parse-float'); -require('./es6.string.trim'); -require('./es6.regexp.to-string');
\ No newline at end of file +'use strict'; +var $ = require('./$') + , $export = require('./$.export') + , DESCRIPTORS = require('./$.descriptors') + , createDesc = require('./$.property-desc') + , html = require('./$.html') + , cel = require('./$.dom-create') + , has = require('./$.has') + , cof = require('./$.cof') + , invoke = require('./$.invoke') + , fails = require('./$.fails') + , anObject = require('./$.an-object') + , aFunction = require('./$.a-function') + , isObject = require('./$.is-object') + , toObject = require('./$.to-object') + , toIObject = require('./$.to-iobject') + , toInteger = require('./$.to-integer') + , toIndex = require('./$.to-index') + , toLength = require('./$.to-length') + , IObject = require('./$.iobject') + , IE_PROTO = require('./$.uid')('__proto__') + , createArrayMethod = require('./$.array-methods') + , arrayIndexOf = require('./$.array-includes')(false) + , ObjectProto = Object.prototype + , ArrayProto = Array.prototype + , arraySlice = ArrayProto.slice + , arrayJoin = ArrayProto.join + , defineProperty = $.setDesc + , getOwnDescriptor = $.getDesc + , defineProperties = $.setDescs + , factories = {} + , IE8_DOM_DEFINE; + +if(!DESCRIPTORS){ + IE8_DOM_DEFINE = !fails(function(){ + return defineProperty(cel('div'), 'a', {get: function(){ return 7; }}).a != 7; + }); + $.setDesc = function(O, P, Attributes){ + if(IE8_DOM_DEFINE)try { + return defineProperty(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)anObject(O)[P] = Attributes.value; + return O; + }; + $.getDesc = function(O, P){ + if(IE8_DOM_DEFINE)try { + return getOwnDescriptor(O, P); + } catch(e){ /* empty */ } + if(has(O, P))return createDesc(!ObjectProto.propertyIsEnumerable.call(O, P), O[P]); + }; + $.setDescs = defineProperties = function(O, Properties){ + anObject(O); + var keys = $.getKeys(Properties) + , length = keys.length + , i = 0 + , P; + while(length > i)$.setDesc(O, P = keys[i++], Properties[P]); + return O; + }; +} +$export($export.S + $export.F * !DESCRIPTORS, 'Object', { + // 19.1.2.6 / 15.2.3.3 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $.getDesc, + // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) + defineProperty: $.setDesc, + // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) + defineProperties: defineProperties +}); + + // IE 8- don't enum bug keys +var keys1 = ('constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,' + + 'toLocaleString,toString,valueOf').split(',') + // Additional keys for getOwnPropertyNames + , keys2 = keys1.concat('length', 'prototype') + , keysLen1 = keys1.length; + +// Create object with `null` prototype: use iframe Object with cleared prototype +var createDict = function(){ + // Thrash, waste and sodomy: IE GC bug + var iframe = cel('iframe') + , i = keysLen1 + , gt = '>' + , iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write('<script>document.F=Object</script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while(i--)delete createDict.prototype[keys1[i]]; + return createDict(); +}; +var createGetKeys = function(names, length){ + return function(object){ + var O = toIObject(object) + , i = 0 + , result = [] + , key; + for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while(length > i)if(has(O, key = names[i++])){ + ~arrayIndexOf(result, key) || result.push(key); + } + return result; + }; +}; +var Empty = function(){}; +$export($export.S, 'Object', { + // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) + getPrototypeOf: $.getProto = $.getProto || function(O){ + O = toObject(O); + if(has(O, IE_PROTO))return O[IE_PROTO]; + if(typeof O.constructor == 'function' && O instanceof O.constructor){ + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; + }, + // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $.getNames = $.getNames || createGetKeys(keys2, keys2.length, true), + // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) + create: $.create = $.create || function(O, /*?*/Properties){ + var result; + if(O !== null){ + Empty.prototype = anObject(O); + result = new Empty(); + Empty.prototype = null; + // add "__proto__" for Object.getPrototypeOf shim + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : defineProperties(result, Properties); + }, + // 19.1.2.14 / 15.2.3.14 Object.keys(O) + keys: $.getKeys = $.getKeys || createGetKeys(keys1, keysLen1, false) +}); + +var construct = function(F, len, args){ + if(!(len in factories)){ + for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']'; + factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); + } + return factories[len](F, args); +}; + +// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...) +$export($export.P, 'Function', { + bind: function bind(that /*, args... */){ + var fn = aFunction(this) + , partArgs = arraySlice.call(arguments, 1); + var bound = function(/* args... */){ + var args = partArgs.concat(arraySlice.call(arguments)); + return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that); + }; + if(isObject(fn.prototype))bound.prototype = fn.prototype; + return bound; + } +}); + +// fallback for not array-like ES3 strings and DOM objects +$export($export.P + $export.F * fails(function(){ + if(html)arraySlice.call(html); +}), 'Array', { + slice: function(begin, end){ + var len = toLength(this.length) + , klass = cof(this); + end = end === undefined ? len : end; + if(klass == 'Array')return arraySlice.call(this, begin, end); + var start = toIndex(begin, len) + , upTo = toIndex(end, len) + , size = toLength(upTo - start) + , cloned = Array(size) + , i = 0; + for(; i < size; i++)cloned[i] = klass == 'String' + ? this.charAt(start + i) + : this[start + i]; + return cloned; + } +}); +$export($export.P + $export.F * (IObject != Object), 'Array', { + join: function join(separator){ + return arrayJoin.call(IObject(this), separator === undefined ? ',' : separator); + } +}); + +// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) +$export($export.S, 'Array', {isArray: require('./$.is-array')}); + +var createArrayReduce = function(isRight){ + return function(callbackfn, memo){ + aFunction(callbackfn); + var O = IObject(this) + , length = toLength(O.length) + , index = isRight ? length - 1 : 0 + , i = isRight ? -1 : 1; + if(arguments.length < 2)for(;;){ + if(index in O){ + memo = O[index]; + index += i; + break; + } + index += i; + if(isRight ? index < 0 : length <= index){ + throw TypeError('Reduce of empty array with no initial value'); + } + } + for(;isRight ? index >= 0 : length > index; index += i)if(index in O){ + memo = callbackfn(memo, O[index], index, this); + } + return memo; + }; +}; + +var methodize = function($fn){ + return function(arg1/*, arg2 = undefined */){ + return $fn(this, arg1, arguments[1]); + }; +}; + +$export($export.P, 'Array', { + // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) + forEach: $.each = $.each || methodize(createArrayMethod(0)), + // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg]) + map: methodize(createArrayMethod(1)), + // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) + filter: methodize(createArrayMethod(2)), + // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg]) + some: methodize(createArrayMethod(3)), + // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg]) + every: methodize(createArrayMethod(4)), + // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) + reduce: createArrayReduce(false), + // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue]) + reduceRight: createArrayReduce(true), + // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) + indexOf: methodize(arrayIndexOf), + // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex]) + lastIndexOf: function(el, fromIndex /* = @[*-1] */){ + var O = toIObject(this) + , length = toLength(O.length) + , index = length - 1; + if(arguments.length > 1)index = Math.min(index, toInteger(fromIndex)); + if(index < 0)index = toLength(length + index); + for(;index >= 0; index--)if(index in O)if(O[index] === el)return index; + return -1; + } +}); + +// 20.3.3.1 / 15.9.4.4 Date.now() +$export($export.S, 'Date', {now: function(){ return +new Date; }}); + +var lz = function(num){ + return num > 9 ? num : '0' + num; +}; + +// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() +// PhantomJS / old WebKit has a broken implementations +$export($export.P + $export.F * (fails(function(){ + return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z'; +}) || !fails(function(){ + new Date(NaN).toISOString(); +})), 'Date', { + toISOString: function toISOString(){ + if(!isFinite(this))throw RangeError('Invalid time value'); + var d = this + , y = d.getUTCFullYear() + , m = d.getUTCMilliseconds() + , s = y < 0 ? '-' : y > 9999 ? '+' : ''; + return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) + + '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) + + 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) + + ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z'; + } +});
\ No newline at end of file |