UNPKG

watermark-js-plus

Version:
69 lines (60 loc) 2.38 kB
import { __require as requireFunctionUncurryThis } from './function-uncurry-this.js'; import { __require as requireFails } from './fails.js'; import { __require as requireIsCallable } from './is-callable.js'; import { __require as requireClassof } from './classof.js'; import { __require as requireGetBuiltIn } from './get-built-in.js'; import { __require as requireInspectSource } from './inspect-source.js'; var isConstructor; var hasRequiredIsConstructor; function requireIsConstructor () { if (hasRequiredIsConstructor) return isConstructor; hasRequiredIsConstructor = 1; var uncurryThis = requireFunctionUncurryThis(); var fails = requireFails(); var isCallable = requireIsCallable(); var classof = requireClassof(); var getBuiltIn = requireGetBuiltIn(); var inspectSource = requireInspectSource(); var noop = function () { /* 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, [], 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 isConstructor = !construct || fails(function () { var called; return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function () { called = true; }) || called; }) ? isConstructorLegacy : isConstructorModern; return isConstructor; } export { requireIsConstructor as __require };