11cb0ef41Sopenharmony_ciimport ipRegex from "ip-regex"; 21cb0ef41Sopenharmony_ci 31cb0ef41Sopenharmony_ciconst defaultOpts = {exact: false}; 41cb0ef41Sopenharmony_ciconst v4str = `${ipRegex.v4().source}\\/(3[0-2]|[12]?[0-9])`; 51cb0ef41Sopenharmony_ciconst v6str = `${ipRegex.v6().source}\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])`; 61cb0ef41Sopenharmony_ci 71cb0ef41Sopenharmony_ci// pre-compile only the exact regexes as global flag makes regex objects stateful 81cb0ef41Sopenharmony_ciconst v4exact = new RegExp(`^${v4str}$`); 91cb0ef41Sopenharmony_ciconst v6exact = new RegExp(`^${v6str}$`); 101cb0ef41Sopenharmony_ciconst v46exact = new RegExp(`(?:^${v4str}$)|(?:^${v6str}$)`); 111cb0ef41Sopenharmony_ci 121cb0ef41Sopenharmony_ciconst cidrRegex = ({exact} = defaultOpts) => exact ? v46exact : new RegExp(`(?:${v4str})|(?:${v6str})`, "g"); 131cb0ef41Sopenharmony_ciexport const v4 = cidrRegex.v4 = ({exact} = defaultOpts) => exact ? v4exact : new RegExp(v4str, "g"); 141cb0ef41Sopenharmony_ciexport const v6 = cidrRegex.v6 = ({exact} = defaultOpts) => exact ? v6exact : new RegExp(v6str, "g"); 151cb0ef41Sopenharmony_ciexport default cidrRegex; 16