'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;
|
};
|