@webreflection/re
Version:
A template literal tag that sanitizes interpolations
20 lines (17 loc) • 636 B
JavaScript
const escapeString = (m => /* c8 ignore start */ m.__esModule ? m.default : m /* c8 ignore stop */)(require('escape-string-regexp'));
const $ = RegExp.escape || escapeString;
const escape = value => $(value);
/**
* Sanitize interpolations for safer RegExp definition.
* @param {TemplateStringsArray} template
* @param {unknown[]} values
* @returns {RegExp}
*/
module.exports = ({ raw }, ...values) => {
let [s] = raw, { length } = raw, i = 0;
while (++i < length)
s += [].concat(values[i - 1]).map(escape).join('|') + raw[i];
i = s.lastIndexOf('/');
return new RegExp(s.slice(1, i), s.slice(i + 1));
};
;