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