UNPKG

polyfill-service

Version:
1 lines 10 kB
{"browsers":{"ie":"*","safari":"<9","chrome":"< 50","firefox":"< 40","ios_saf":"*","opera":"< 50"},"dependencies":["Array.prototype.forEach","Array.prototype.filter","Math.random","Object.create","Object.defineProperty","Object.getOwnPropertyNames","Object.getOwnPropertyDescriptor","Object.freeze","Object.keys"],"license":"MIT","spec":"http://www.ecma-international.org/ecma-262/6.0/index.html#sec-symbol-objects","docs":"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Symbol","baseDir":"Symbol","hasTests":true,"rawSource":"\n// Symbol\n// A modification of https://github.com/WebReflection/get-own-property-symbols\n// (C) Andrea Giammarchi - MIT Licensed\n\n(function (Object, GOPS) {\n\n\tvar\tsetDescriptor;\n\tvar\tG = typeof global === typeof G ? window : global;\n\tvar id = 0;\n\tvar random = '' + Math.random();\n\tvar prefix = '__\\x01symbol:';\n\tvar prefixLength = prefix.length;\n\tvar internalSymbol = '__\\x01symbol@@' + random;\n\tvar DP = 'defineProperty';\n\tvar DPies = 'defineProperties';\n\tvar GOPN = 'getOwnPropertyNames';\n\tvar GOPD = 'getOwnPropertyDescriptor';\n\tvar PIE = 'propertyIsEnumerable';\n\tvar gOPN = Object[GOPN];\n\tvar gOPD = Object[GOPD];\n\tvar create = Object.create;\n\tvar keys = Object.keys;\n\tvar freeze = Object.freeze || Object;\n\tvar defineProperty = Object[DP];\n\tvar $defineProperties = Object[DPies];\n\tvar descriptor = gOPD(Object, GOPN);\n\tvar ObjectProto = Object.prototype;\n\tvar hOP = ObjectProto.hasOwnProperty;\n\tvar pIE = ObjectProto[PIE];\n\tvar toString = ObjectProto.toString;\n\tvar indexOf = Array.prototype.indexOf || function (v) {\n\t\tfor (var i = this.length; i-- && this[i] !== v;) {}\n\t\treturn i;\n\t};\n\tvar addInternalIfNeeded = function (o, uid, enumerable) {\n\t\tif (!hOP.call(o, internalSymbol)) {\n\t\t\ttry {\n\t\t\t\tdefineProperty(o, internalSymbol, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\twritable: false,\n\t\t\t\t\tvalue: {}\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\to.internalSymbol = value\n\t\t\t}\n\t\t}\n\t\to[internalSymbol]['@@' + uid] = enumerable;\n\t};\n\tvar createWithSymbols = function (proto, descriptors) {\n\t\tvar self = create(proto);\n\t\tgOPN(descriptors).forEach(function (key) {\n\t\t\tif (propertyIsEnumerable.call(descriptors, key)) {\n\t\t\t\t$defineProperty(self, key, descriptors[key]);\n\t\t\t}\n\t\t});\n\t\treturn self;\n\t};\n\tvar copyAsNonEnumerable = function (descriptor) {\n\t\tvar newDescriptor = create(descriptor);\n\t\tnewDescriptor.enumerable = false;\n\t\treturn newDescriptor;\n\t};\n\tvar get = function get(){};\n\tvar onlyNonSymbols = function (name) {\n\t\treturn name != internalSymbol &&\n\t\t\t!hOP.call(source, name);\n\t};\n\tvar onlySymbols = function (name) {\n\t\treturn name != internalSymbol &&\n\t\t\thOP.call(source, name);\n\t};\n\tvar propertyIsEnumerable = function propertyIsEnumerable(key) {\n\t\tvar uid = '' + key;\n\t\treturn onlySymbols(uid) ? (\n\t\t\thOP.call(this, uid) &&\n\t\t\tthis[internalSymbol]['@@' + uid]\n\t\t) : pIE.call(this, key);\n\t}\n\tvar setAndGetSymbol = function (uid) {\n\t\tvar descriptor = {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tget: get,\n\t\t\tset: function (value) {\n\t\t\tsetDescriptor(this, uid, {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: value\n\t\t\t});\n\t\t\taddInternalIfNeeded(this, uid, true);\n\t\t\t}\n\t\t};\n\t\ttry {\n\t\t\tdefineProperty(ObjectProto, uid, descriptor);\n\t\t} catch (e) {\n\t\t\tObjectProto[uid] = descriptor.value;\n\t\t}\n\t\treturn freeze(source[uid] = defineProperty(\n\t\t\tObject(uid),\n\t\t\t'constructor',\n\t\t\tsourceConstructor\n\t\t));\n\t};\n\tvar Symbol = function Symbol(description) {\n\t\tif (this instanceof Symbol) {\n\t\t\tthrow new TypeError('Symbol is not a constructor');\n\t\t}\n\t\treturn setAndGetSymbol(\n\t\t\tprefix.concat(description || '', random, ++id)\n\t\t);\n\t\t};\n\tvar source = create(null);\n\tvar sourceConstructor = {value: Symbol};\n\tvar sourceMap = function (uid) {\n\t\treturn source[uid];\n\t\t};\n\tvar $defineProperty = function defineProp(o, key, descriptor) {\n\t\tvar uid = '' + key;\n\t\tif (onlySymbols(uid)) {\n\t\t\tsetDescriptor(o, uid, descriptor.enumerable ?\n\t\t\t\tcopyAsNonEnumerable(descriptor) : descriptor);\n\t\t\taddInternalIfNeeded(o, uid, !!descriptor.enumerable);\n\t\t} else {\n\t\t\tdefineProperty(o, key, descriptor);\n\t\t}\n\t\treturn o;\n\t\t};\n\tvar $getOwnPropertySymbols = function getOwnPropertySymbols(o) {\n\t\treturn gOPN(o).filter(onlySymbols).map(sourceMap);\n\t\t}\n\t;\n\n\tdescriptor.value = $defineProperty;\n\tdefineProperty(Object, DP, descriptor);\n\n\tdescriptor.value = $getOwnPropertySymbols;\n\tdefineProperty(Object, GOPS, descriptor);\n\n\tdescriptor.value = function getOwnPropertyNames(o) {\n\t\treturn gOPN(o).filter(onlyNonSymbols);\n\t};\n\tdefineProperty(Object, GOPN, descriptor);\n\n\tdescriptor.value = function defineProperties(o, descriptors) {\n\t\tvar symbols = $getOwnPropertySymbols(descriptors);\n\t\tif (symbols.length) {\n\t\tkeys(descriptors).concat(symbols).forEach(function (uid) {\n\t\t\tif (propertyIsEnumerable.call(descriptors, uid)) {\n\t\t\t$defineProperty(o, uid, descriptors[uid]);\n\t\t\t}\n\t\t});\n\t\t} else {\n\t\t$defineProperties(o, descriptors);\n\t\t}\n\t\treturn o;\n\t};\n\tdefineProperty(Object, DPies, descriptor);\n\n\tdescriptor.value = propertyIsEnumerable;\n\tdefineProperty(ObjectProto, PIE, descriptor);\n\n\tdescriptor.value = Symbol;\n\tdefineProperty(G, 'Symbol', descriptor);\n\n\t// defining `Symbol.for(key)`\n\tdescriptor.value = function (key) {\n\t\tvar uid = prefix.concat(prefix, key, random);\n\t\treturn uid in ObjectProto ? source[uid] : setAndGetSymbol(uid);\n\t};\n\tdefineProperty(Symbol, 'for', descriptor);\n\n\t// defining `Symbol.keyFor(symbol)`\n\tdescriptor.value = function (symbol) {\n\t\tif (onlyNonSymbols(symbol))\n\t\tthrow new TypeError(symbol + ' is not a symbol');\n\t\treturn hOP.call(source, symbol) ?\n\t\tsymbol.slice(prefixLength * 2, -random.length) :\n\t\tvoid 0\n\t\t;\n\t};\n\tdefineProperty(Symbol, 'keyFor', descriptor);\n\n\tdescriptor.value = function getOwnPropertyDescriptor(o, key) {\n\t\tvar descriptor = gOPD(o, key);\n\t\tif (descriptor && onlySymbols(key)) {\n\t\tdescriptor.enumerable = propertyIsEnumerable.call(o, key);\n\t\t}\n\t\treturn descriptor;\n\t};\n\tdefineProperty(Object, GOPD, descriptor);\n\n\tdescriptor.value = function (proto, descriptors) {\n\t\treturn arguments.length === 1 ?\n\t\tcreate(proto) :\n\t\tcreateWithSymbols(proto, descriptors);\n\t};\n\tdefineProperty(Object, 'create', descriptor);\n\n\tdescriptor.value = function () {\n\t\tvar str = toString.call(this);\n\t\treturn (str === '[object String]' && onlySymbols(this)) ? '[object Symbol]' : str;\n\t};\n\tdefineProperty(ObjectProto, 'toString', descriptor);\n\n\ttry { // fails in few pre ES 5.1 engines\n\t\tsetDescriptor = create(\n\t\tdefineProperty(\n\t\t\t{},\n\t\t\tprefix,\n\t\t\t{\n\t\t\tget: function () {\n\t\t\t\treturn defineProperty(this, prefix, {value: false})[prefix];\n\t\t\t}\n\t\t\t}\n\t\t)\n\t\t)[prefix] || defineProperty;\n\t} catch(o_O) {\n\t\tsetDescriptor = function (o, key, descriptor) {\n\t\tvar protoDescriptor = gOPD(ObjectProto, key);\n\t\tdelete ObjectProto[key];\n\t\tdefineProperty(o, key, descriptor);\n\t\tdefineProperty(ObjectProto, key, protoDescriptor);\n\t\t};\n\t}\n\n}(Object, 'getOwnPropertySymbols'));\n","minSource":"!function(e,t){var n,r=typeof global==typeof r?window:global,o=0,u=\"\"+Math.random(),a=\"__\u0001symbol:\",l=a.length,c=\"__\u0001symbol@@\"+u,i=\"defineProperty\",f=\"defineProperties\",v=\"getOwnPropertyNames\",s=\"getOwnPropertyDescriptor\",b=\"propertyIsEnumerable\",y=e[v],h=e[s],m=e.create,g=e.keys,p=e.freeze||e,w=e[i],S=e[f],d=h(e,v),O=e.prototype,P=O.hasOwnProperty,E=O[b],_=O.toString,j=(Array.prototype.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},function(e,t,n){if(!P.call(e,c))try{w(e,c,{enumerable:!1,configurable:!1,writable:!1,value:{}})}catch(r){e.internalSymbol=value}e[c][\"@@\"+t]=n}),k=function(e,t){var n=m(e);return y(t).forEach(function(e){D.call(t,e)&&B(n,e,t[e])}),n},T=function(e){var t=m(e);return t.enumerable=!1,t},x=function(){},z=function(e){return e!=c&&!P.call(M,e)},A=function(e){return e!=c&&P.call(M,e)},D=function(e){var t=\"\"+e;return A(t)?P.call(this,t)&&this[c][\"@@\"+t]:E.call(this,e)},F=function(t){var r={enumerable:!1,configurable:!0,get:x,set:function(e){n(this,t,{enumerable:!1,configurable:!0,writable:!0,value:e}),j(this,t,!0)}};try{w(O,t,r)}catch(o){O[t]=r.value}return p(M[t]=w(e(t),\"constructor\",N))},I=function H(e){if(this instanceof H)throw new TypeError(\"Symbol is not a constructor\");return F(a.concat(e||\"\",u,++o))},M=m(null),N={value:I},q=function(e){return M[e]},B=function(e,t,r){var o=\"\"+t;return A(o)?(n(e,o,r.enumerable?T(r):r),j(e,o,!!r.enumerable)):w(e,t,r),e},C=function(e){return y(e).filter(A).map(q)};d.value=B,w(e,i,d),d.value=C,w(e,t,d),d.value=function(e){return y(e).filter(z)},w(e,v,d),d.value=function(e,t){var n=C(t);return n.length?g(t).concat(n).forEach(function(n){D.call(t,n)&&B(e,n,t[n])}):S(e,t),e},w(e,f,d),d.value=D,w(O,b,d),d.value=I,w(r,\"Symbol\",d),d.value=function(e){var t=a.concat(a,e,u);return t in O?M[t]:F(t)},w(I,\"for\",d),d.value=function(e){if(z(e))throw new TypeError(e+\" is not a symbol\");return P.call(M,e)?e.slice(2*l,-u.length):void 0},w(I,\"keyFor\",d),d.value=function(e,t){var n=h(e,t);return n&&A(t)&&(n.enumerable=D.call(e,t)),n},w(e,s,d),d.value=function(e,t){return 1===arguments.length?m(e):k(e,t)},w(e,\"create\",d),d.value=function(){var e=_.call(this);return\"[object String]\"===e&&A(this)?\"[object Symbol]\":e},w(O,\"toString\",d);try{n=m(w({},a,{get:function(){return w(this,a,{value:!1})[a]}}))[a]||w}catch(G){n=function(e,t,n){var r=h(O,t);delete O[t],w(e,t,n),w(O,t,r)}}}(Object,\"getOwnPropertySymbols\");","detectSource":"'Symbol' in this"}