Constnium/node_modules/regexp.prototype.flags/polyfill.js

37 lines
867 B
JavaScript
Raw Permalink Normal View History

2022-06-23 02:27:43 +02:00
'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'
&& typeof RegExp.prototype.dotAll === 'boolean'
&& typeof RegExp.prototype.hasIndices === 'boolean'
) {
/* eslint getter-return: 0 */
var calls = '';
var o = {};
Object.defineProperty(o, 'hasIndices', {
get: function () {
calls += 'd';
}
});
Object.defineProperty(o, 'sticky', {
get: function () {
calls += 'y';
}
});
if (calls === 'dy') {
return descriptor.get;
}
}
}
return implementation;
};