From 46e43f4bde4a35785b4997b81e86cd19f046b69b Mon Sep 17 00:00:00 2001 From: Minteck Date: Tue, 21 Dec 2021 16:52:28 +0100 Subject: Commit --- src/node_modules/is-regex/index.js | 58 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/node_modules/is-regex/index.js (limited to 'src/node_modules/is-regex/index.js') diff --git a/src/node_modules/is-regex/index.js b/src/node_modules/is-regex/index.js new file mode 100644 index 0000000..3db4b92 --- /dev/null +++ b/src/node_modules/is-regex/index.js @@ -0,0 +1,58 @@ +'use strict'; + +var hasSymbols = require('has-symbols')(); +var hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol'; +var hasOwnProperty; +var regexExec; +var isRegexMarker; +var badStringifier; + +if (hasToStringTag) { + hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty); + regexExec = Function.call.bind(RegExp.prototype.exec); + isRegexMarker = {}; + + var throwRegexMarker = function () { + throw isRegexMarker; + }; + badStringifier = { + toString: throwRegexMarker, + valueOf: throwRegexMarker + }; + + if (typeof Symbol.toPrimitive === 'symbol') { + badStringifier[Symbol.toPrimitive] = throwRegexMarker; + } +} + +var toStr = Object.prototype.toString; +var gOPD = Object.getOwnPropertyDescriptor; +var regexClass = '[object RegExp]'; + +module.exports = hasToStringTag + // eslint-disable-next-line consistent-return + ? function isRegex(value) { + if (!value || typeof value !== 'object') { + return false; + } + + var descriptor = gOPD(value, 'lastIndex'); + var hasLastIndexDataProperty = descriptor && hasOwnProperty(descriptor, 'value'); + if (!hasLastIndexDataProperty) { + return false; + } + + try { + regexExec(value, badStringifier); + } catch (e) { + return e === isRegexMarker; + } + } + : function isRegex(value) { + // In older browsers, typeof regex incorrectly returns 'function' + if (!value || (typeof value !== 'object' && typeof value !== 'function')) { + return false; + } + + return toStr.call(value) === regexClass; + }; -- cgit