mirror of
https://github.com/nodejs/node.git
synced 2025-05-12 20:54:38 +00:00

PR-URL: https://github.com/nodejs/node/pull/35474 Reviewed-By: Ruy Adorno <ruyadorno@github.com> Reviewed-By: Ujjwal Sharma <ryzokuken@disroot.org> Reviewed-By: Ben Coe <bencoe@gmail.com> Reviewed-By: Geoffrey Booth <webmaster@geoffreybooth.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Shelley Vohr <codebytere@gmail.com> Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
19 lines
830 B
JavaScript
19 lines
830 B
JavaScript
"use strict";
|
|
|
|
const ipRegex = require("ip-regex");
|
|
|
|
const defaultOpts = {exact: false};
|
|
|
|
const v4str = `${ipRegex.v4().source}\\/(3[0-2]|[12]?[0-9])`;
|
|
const v6str = `${ipRegex.v6().source}\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])`;
|
|
|
|
// can not precompile the non-exact regexes because global flag makes the regex object stateful
|
|
// which would require the user to reset .lastIndex on subsequent calls
|
|
const v4exact = new RegExp(`^${v4str}$`);
|
|
const v6exact = new RegExp(`^${v6str}$`);
|
|
const v46exact = new RegExp(`(?:^${v4str}$)|(?:^${v6str}$)`);
|
|
|
|
module.exports = ({exact} = defaultOpts) => exact ? v46exact : new RegExp(`(?:${v4str})|(?:${v6str})`, "g");
|
|
module.exports.v4 = ({exact} = defaultOpts) => exact ? v4exact : new RegExp(v4str, "g");
|
|
module.exports.v6 = ({exact} = defaultOpts) => exact ? v6exact : new RegExp(v6str, "g");
|