3
3
var callBound = require ( 'call-bind/callBound' ) ;
4
4
var hasToStringTag = require ( 'has-tostringtag/shams' ) ( ) ;
5
5
var hasOwn = require ( 'hasown' ) ;
6
- var $exec ;
7
- var isRegexMarker ;
8
- var badStringifier ;
6
+ var gOPD = require ( 'gopd' ) ;
9
7
8
+ var fn ;
10
9
if ( hasToStringTag ) {
11
- $exec = callBound ( 'RegExp.prototype.exec' ) ;
12
- isRegexMarker = { } ;
10
+ var $exec = callBound ( 'RegExp.prototype.exec' ) ;
11
+ var isRegexMarker = { } ;
13
12
14
13
var throwRegexMarker = function ( ) {
15
14
throw isRegexMarker ;
16
15
} ;
17
- badStringifier = {
16
+ var badStringifier = {
18
17
toString : throwRegexMarker ,
19
18
valueOf : throwRegexMarker
20
19
} ;
21
20
22
21
if ( typeof Symbol . toPrimitive === 'symbol' ) {
23
22
badStringifier [ Symbol . toPrimitive ] = throwRegexMarker ;
24
23
}
25
- }
26
-
27
- var $toString = callBound ( 'Object.prototype.toString' ) ;
28
- var gOPD = Object . getOwnPropertyDescriptor ;
29
- var regexClass = '[object RegExp]' ;
30
24
31
- module . exports = hasToStringTag
32
25
// eslint-disable-next-line consistent-return
33
- ? function isRegex ( value ) {
26
+ fn = function isRegex ( value ) {
34
27
if ( ! value || typeof value !== 'object' ) {
35
28
return false ;
36
29
}
@@ -46,12 +39,19 @@ module.exports = hasToStringTag
46
39
} catch ( e ) {
47
40
return e === isRegexMarker ;
48
41
}
49
- }
50
- : function isRegex ( value ) {
42
+ } ;
43
+ } else {
44
+ var $toString = callBound ( 'Object.prototype.toString' ) ;
45
+ var regexClass = '[object RegExp]' ;
46
+
47
+ fn = function isRegex ( value ) {
51
48
// In older browsers, typeof regex incorrectly returns 'function'
52
49
if ( ! value || ( typeof value !== 'object' && typeof value !== 'function' ) ) {
53
50
return false ;
54
51
}
55
52
56
53
return $toString ( value ) === regexClass ;
57
54
} ;
55
+ }
56
+
57
+ module . exports = fn ;
0 commit comments