You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
779 B
26 lines
779 B
'use strict'; |
|
|
|
var supportsDescriptors = require('define-properties').supportsDescriptors; |
|
var getPolyfill = require('./polyfill'); |
|
var gOPD = Object.getOwnPropertyDescriptor; |
|
var defineProperty = Object.defineProperty; |
|
var TypeErr = TypeError; |
|
var getProto = Object.getPrototypeOf; |
|
var regex = /a/; |
|
|
|
module.exports = function shimFlags() { |
|
if (!supportsDescriptors || !getProto) { |
|
throw new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors'); |
|
} |
|
var polyfill = getPolyfill(); |
|
var proto = getProto(regex); |
|
var descriptor = gOPD(proto, 'flags'); |
|
if (!descriptor || descriptor.get !== polyfill) { |
|
defineProperty(proto, 'flags', { |
|
configurable: true, |
|
enumerable: false, |
|
get: polyfill |
|
}); |
|
} |
|
return polyfill; |
|
};
|
|
|