123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- (function (root, factory) {
-
- if (typeof define === 'function' && define.amd) {
-
- define(factory);
- } else if (typeof exports === 'object') {
-
-
-
- module.exports = factory();
- } else {
-
- root.returnExports = factory();
- }
- }(this, function () {
- 'use strict';
-
- var getGlobal = new Function('return this;');
-
- var globals = getGlobal();
- var Object = globals.Object;
- var _call = Function.call.bind(Function.call);
- var functionToString = Function.toString;
- var _strMatch = String.prototype.match;
- var throwsError = function (func) {
- try {
- func();
- return false;
- } catch (e) {
- return true;
- }
- };
- var arePropertyDescriptorsSupported = function () {
-
- return !throwsError(function () {
- Object.defineProperty({}, 'x', { get: function () {} });
- });
- };
- var supportsDescriptors = !!Object.defineProperty && arePropertyDescriptorsSupported();
-
-
-
-
-
-
-
-
-
- (function () {
- if (Object.setPrototypeOf) { return; }
-
- var getOwnPropertyNames = Object.getOwnPropertyNames;
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- var create = Object.create;
- var defineProperty = Object.defineProperty;
- var getPrototypeOf = Object.getPrototypeOf;
- var objProto = Object.prototype;
- var copyDescriptors = function (target, source) {
-
- getOwnPropertyNames(source).forEach(function (key) {
- defineProperty(
- target,
- key,
- getOwnPropertyDescriptor(source, key)
- );
- });
- return target;
- };
-
- var createAndCopy = function (origin, proto) {
- return copyDescriptors(create(proto), origin);
- };
- var set, setPrototypeOf;
- try {
-
-
- set = getOwnPropertyDescriptor(objProto, '__proto__').set;
- set.call({}, null);
-
-
- setPrototypeOf = function (origin, proto) {
- set.call(origin, proto);
- return origin;
- };
- } catch (e) {
-
- set = { __proto__: null };
-
-
- if (set instanceof Object) {
- setPrototypeOf = createAndCopy;
- } else {
-
-
- set.__proto__ = objProto;
- /* eslint-enable no-proto */
- // if null objects are buggy
- // nodejs 0.8 to 0.10
- if (set instanceof Object) {
- setPrototypeOf = function (origin, proto) {
-
-
- origin.__proto__ = proto;
-
- return origin;
- };
- } else {
-
-
- setPrototypeOf = function (origin, proto) {
-
- if (getPrototypeOf(origin)) {
-
-
- origin.__proto__ = proto;
-
- return origin;
- }
-
- return createAndCopy(origin, proto);
- };
- }
- }
- }
- Object.setPrototypeOf = setPrototypeOf;
- }());
- if (supportsDescriptors && function foo() {}.name !== 'foo') {
-
- Object.defineProperty(Function.prototype, 'name', {
- configurable: true,
- enumerable: false,
- get: function () {
- if (this === Function.prototype) {
- return '';
- }
- var str = _call(functionToString, this);
- var match = _call(_strMatch, str, /\s*function\s+([^(\s]*)\s*/);
- var name = match && match[1];
- Object.defineProperty(this, 'name', {
- configurable: true,
- enumerable: false,
- writable: false,
- value: name
- });
- return name;
- }
- });
- }
- }));
|