-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
polyfill.js
39 lines (34 loc) · 864 Bytes
/
polyfill.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use strict';
var implementation = require('./implementation');
var supportsDescriptors = require('define-properties').supportsDescriptors;
var $gOPD = Object.getOwnPropertyDescriptor;
module.exports = function getPolyfill() {
if (supportsDescriptors && (/a/mig).flags === 'gim') {
var descriptor = $gOPD(RegExp.prototype, 'flags');
if (
descriptor
&& typeof descriptor.get === 'function'
&& 'dotAll' in RegExp.prototype
&& 'hasIndices' in RegExp.prototype
) {
/* eslint getter-return: 0 */
var calls = '';
var o = {};
Object.defineProperty(o, 'hasIndices', {
get: function () {
calls += 'd';
}
});
Object.defineProperty(o, 'sticky', {
get: function () {
calls += 'y';
}
});
descriptor.get.call(o);
if (calls === 'dy') {
return descriptor.get;
}
}
}
return implementation;
};