UNPKG

get-own-property-symbols

Version:
3 lines (2 loc) 6.54 kB
/*! (C) WebReflection Mit Style License */ (function(Object,GOPS){"use strict";if(GOPS in Object){return}var setDescriptor;var G=typeof global==="undefined"?window:global;var id=0;var random=String(Math.random());var prefix="__symbol:";var prefixLength=prefix.length;var internalSymbol="__symbol@@"+random;var gOPN=Object.getOwnPropertyNames;var gOPD=Object.getOwnPropertyDescriptor;var create=Object.create;var keys=Object.keys;var freeze=Object.freeze||Object;var defineProperty=Object.defineProperty;var $defineProperties=Object.defineProperties;var descriptor=gOPD(Object,"getOwnPropertyNames");var ObjectProto=Object.prototype;var hOP=ObjectProto.hasOwnProperty;var pIE=ObjectProto.propertyIsEnumerable;var toString=ObjectProto.toString;var addInternalIfNeeded=function(o,uid,enumerable){if(!hOP.call(o,internalSymbol)){defineProperty(o,internalSymbol,{enumerable:false,configurable:false,writable:false,value:{}})}o[internalSymbol]["@@"+uid]=enumerable};var createWithSymbols=function(proto,descriptors){var self=create(proto);gOPN(descriptors).forEach(function(key){if(propertyIsEnumerable.call(descriptors,key)){$defineProperty(self,key,descriptors[key])}});return self};var copyAsNonEnumerable=function(descriptor){var newDescriptor=create(descriptor);newDescriptor.enumerable=false;return newDescriptor};var get=function get(){};var onlyNonSymbols=function(name){return name!=internalSymbol&&!hOP.call(source,name)};var onlySymbols=function(name){return name!=internalSymbol&&hOP.call(source,name)};var propertyIsEnumerable=function propertyIsEnumerable(key){var uid=String(key);return onlySymbols(uid)?hOP.call(this,uid)&&!!this[internalSymbol]&&this[internalSymbol]["@@"+uid]:pIE.call(this,key)};var setAndGetSymbol=function(uid){var descriptor={enumerable:false,configurable:true,get:get,set:function(value){setDescriptor(this,uid,{enumerable:false,configurable:true,writable:true,value:value});addInternalIfNeeded(this,uid,true)}};defineProperty(ObjectProto,uid,descriptor);source[uid]=defineProperty(Object(uid),"constructor",sourceConstructor);return freeze(source[uid])};var Symbol=function Symbol(description){if(this instanceof Symbol){throw new TypeError("Symbol is not a constructor")}return setAndGetSymbol(prefix+(description||"")+random+ ++id)};var source=create(null);var sourceConstructor={value:Symbol};var sourceMap=function(uid){return source[uid]};var $defineProperty=function defineProp(o,key,descriptor){var uid=String(key);if(onlySymbols(uid)){setDescriptor(o,uid,descriptor.enumerable?copyAsNonEnumerable(descriptor):descriptor);addInternalIfNeeded(o,uid,!!descriptor.enumerable)}else{defineProperty(o,key,descriptor)}return o};var $getOwnPropertySymbols=function getOwnPropertySymbols(o){return gOPN(o).filter(onlySymbols).map(sourceMap)};descriptor.value=$defineProperty;defineProperty(Object,"defineProperty",descriptor);descriptor.value=$getOwnPropertySymbols;defineProperty(Object,GOPS,descriptor);descriptor.value=function getOwnPropertyNames(o){return gOPN(o).filter(onlyNonSymbols)};defineProperty(Object,"getOwnPropertyNames",descriptor);descriptor.value=function defineProperties(o,descriptors){var symbols=$getOwnPropertySymbols(descriptors);if(symbols.length){var items=[].concat(keys(descriptors),symbols);items.forEach(function(uid){if(propertyIsEnumerable.call(descriptors,uid)){$defineProperty(o,uid,descriptors[uid])}})}else{$defineProperties(o,descriptors)}return o};defineProperty(Object,"defineProperties",descriptor);descriptor.value=propertyIsEnumerable;defineProperty(ObjectProto,"propertyIsEnumerable",descriptor);descriptor.value=Symbol;defineProperty(G,"Symbol",descriptor);descriptor.value=function(key){var uid=prefix+prefix+key+random;return uid in ObjectProto?source[uid]:setAndGetSymbol(uid)};defineProperty(Symbol,"for",descriptor);descriptor.value=function(symbol){if(onlyNonSymbols(symbol)){throw new TypeError(symbol+" is not a symbol")}if(!hOP.call(source,symbol)){return void 0}var label=symbol.slice(prefixLength);if(label.slice(0,prefixLength)!==prefix){return void 0}label=label.slice(prefixLength);if(label===random){return void 0}label=label.slice(0,label.length-random.length);return label.length>0?label:void 0};defineProperty(Symbol,"keyFor",descriptor);descriptor.value=function getOwnPropertyDescriptor(o,key){var descriptor=gOPD(o,key);if(descriptor&&onlySymbols(key)){descriptor.enumerable=propertyIsEnumerable.call(o,key)}return descriptor};defineProperty(Object,"getOwnPropertyDescriptor",descriptor);descriptor.value=function(proto,descriptors){return arguments.length===1||typeof descriptors==="undefined"?create(proto):createWithSymbols(proto,descriptors)};defineProperty(Object,"create",descriptor);descriptor.value=function(){var str=toString.call(this);return str==="[object String]"&&onlySymbols(this)?"[object Symbol]":str};defineProperty(ObjectProto,"toString",descriptor);try{if(create(defineProperty({},prefix,{get:function(){return defineProperty(this,prefix,{value:true})[prefix]}}))[prefix]===true){setDescriptor=defineProperty}else{throw"IE11"}}catch(o_O){setDescriptor=function(o,key,descriptor){var protoDescriptor=gOPD(ObjectProto,key);delete ObjectProto[key];defineProperty(o,key,descriptor);defineProperty(ObjectProto,key,protoDescriptor)}}})(Object,"getOwnPropertySymbols");(function(O,Symbol){"use strict";var dP=O.defineProperty;var ObjectProto=O.prototype;var toString=ObjectProto.toString;["iterator","match","replace","search","split","hasInstance","isConcatSpreadable","unscopables","species","toPrimitive","toStringTag"].forEach(function(name){if(!(name in Symbol)){dP(Symbol,name,{value:Symbol(name)});if(name==="toStringTag"){var descriptor=O.getOwnPropertyDescriptor(ObjectProto,"toString");descriptor.value=function(){var str=toString.call(this);var tst=this==null?this:this[Symbol.toStringTag];return tst==null?str:"[object "+tst+"]"};dP(ObjectProto,"toString",descriptor)}}})})(Object,Symbol);(function(Si,AP,SP){function returnThis(){return this}if(!AP[Si]){AP[Si]=function(){var i=0;var self=this;var iterator={next:function next(){var done=self.length<=i;return done?{done:done}:{done:done,value:self[i++]}}};iterator[Si]=returnThis;return iterator}}if(!SP[Si]){SP[Si]=function(){var fromCodePoint=String.fromCodePoint;var self=this;var i=0;var length=self.length;var iterator={next:function next(){var done=length<=i;var c=done?"":fromCodePoint(self.codePointAt(i));i+=c.length;return done?{done:done}:{done:done,value:c}}};iterator[Si]=returnThis;return iterator}}})(Symbol.iterator,Array.prototype,String.prototype);