| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- 'use strict';
 
- var uncurryThis = require('../internals/function-uncurry-this');
 
- var fails = require('../internals/fails');
 
- var isCallable = require('../internals/is-callable');
 
- var classof = require('../internals/classof');
 
- var getBuiltIn = require('../internals/get-built-in');
 
- var inspectSource = require('../internals/inspect-source');
 
- var noop = function () { /* empty */ };
 
- var empty = [];
 
- var construct = getBuiltIn('Reflect', 'construct');
 
- var constructorRegExp = /^\s*(?:class|function)\b/;
 
- var exec = uncurryThis(constructorRegExp.exec);
 
- var INCORRECT_TO_STRING = !constructorRegExp.test(noop);
 
- var isConstructorModern = function isConstructor(argument) {
 
-   if (!isCallable(argument)) return false;
 
-   try {
 
-     construct(noop, empty, argument);
 
-     return true;
 
-   } catch (error) {
 
-     return false;
 
-   }
 
- };
 
- var isConstructorLegacy = function isConstructor(argument) {
 
-   if (!isCallable(argument)) return false;
 
-   switch (classof(argument)) {
 
-     case 'AsyncFunction':
 
-     case 'GeneratorFunction':
 
-     case 'AsyncGeneratorFunction': return false;
 
-   }
 
-   try {
 
-     // we can't check .prototype since constructors produced by .bind haven't it
 
-     // `Function#toString` throws on some built-it function in some legacy engines
 
-     // (for example, `DOMQuad` and similar in FF41-)
 
-     return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
 
-   } catch (error) {
 
-     return true;
 
-   }
 
- };
 
- isConstructorLegacy.sham = true;
 
- // `IsConstructor` abstract operation
 
- // https://tc39.es/ecma262/#sec-isconstructor
 
- module.exports = !construct || fails(function () {
 
-   var called;
 
-   return isConstructorModern(isConstructorModern.call)
 
-     || !isConstructorModern(Object)
 
-     || !isConstructorModern(function () { called = true; })
 
-     || called;
 
- }) ? isConstructorLegacy : isConstructorModern;
 
 
  |