UNPKG

@webreflection/re

Version:

A template literal tag that sanitizes interpolations

20 lines (17 loc) 636 B
'use strict'; 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)); };