UNPKG

@technobuddha/library

Version:
98 lines (97 loc) 5.53 kB
"use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.email = exports.domain = exports.numeric = exports.isoDate = exports.ipV4Local = exports.ipV4 = exports.re = void 0; /* eslint-disable unicorn/better-regex */ /* eslint-disable require-unicode-regexp */ /* eslint-disable no-control-regex */ var compact_1 = __importDefault(require("lodash/compact")); var zip_1 = __importDefault(require("lodash/zip")); var splitChars_1 = __importDefault(require("../splitChars")); var build_1 = __importDefault(require("../build")); function re(template) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var flags = new Set(['u']); var reText = build_1.default(compact_1.default(zip_1.default(template, args.map(function (a) { var e_1, _a; try { for (var _b = __values(splitChars_1.default(a.flags)), _c = _b.next(); !_c.done; _c = _b.next()) { var flag = _c.value; flags.add(flag); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } var source = a.source; if (source.startsWith('^') && source.endsWith('$')) source = source.slice(1, -1); if (source.startsWith('[') && source.endsWith(']')) return source; if (source.startsWith('(?:') && source.endsWith(')')) return source; return "(?:" + source + ")"; })) .flat())); return new RegExp(reText, build_1.default(flags.values())); } exports.re = re; var IPV4SEG = /(25[0-5]|(?:2[0-4]|1[0-9]|0?[0-9]|0{0,2})[0-9])/; /** validate an IPv4 address */ exports.ipV4 = re(templateObject_1 || (templateObject_1 = __makeTemplateObject(["^", ".", ".", ".", "$"], ["^", "\\.", "\\.", "\\.", "$"])), IPV4SEG, IPV4SEG, IPV4SEG, IPV4SEG); var NET10 = re(templateObject_2 || (templateObject_2 = __makeTemplateObject(["^0?10[.]", ""], ["^0?10[.]", ""])), IPV4SEG); var NET172 = /^172[.]0?(?:1[6-9]|2[0-9]|3[0-1])/; var NET192 = /^192[.]168$/; /** determine if Ipv4 address is local */ exports.ipV4Local = re(templateObject_3 || (templateObject_3 = __makeTemplateObject(["^(?:", "|", "|", ")[.]", "[.]", "$"], ["^(?:", "|", "|", ")[.]", "[.]", "$"])), NET10, NET172, NET192, IPV4SEG, IPV4SEG); /** validate a ISO formatted date */ var YEAR = /^\d{4}$/; var MONTH = /^(?:0[1-9]|1[0-2])$/; var DAY = /^(?:3[0-1]|[1-2][0-9]|0[1-9])$/; var HOUR = /^(?:2[0-3]|[0-1][0-9])$/; var MINUTE = /^[0-5][0-9]$/; var SECOND = MINUTE; var FRACTION = /^[0-9]+$/; var ZONEPLUS = /^[+](?:1[0-4]|0[0-9])$/; var ZONEMINUS = /^[-](?:1[0-2]|0[0-9])$/; var ZONEHOUR = re(templateObject_4 || (templateObject_4 = __makeTemplateObject(["^", "|", "$"], ["^", "|", "$"])), ZONEPLUS, ZONEMINUS); var ZONEMINUTE = /^[0-5][0-9]$/; var TIMEZONE = re(templateObject_5 || (templateObject_5 = __makeTemplateObject(["^(?:(?:", "(?::", ")?)|Z)$"], ["^(?:(?:", "(?::", ")?)|Z)$"])), ZONEHOUR, ZONEMINUTE); exports.isoDate = re(templateObject_6 || (templateObject_6 = __makeTemplateObject(["^", "-", "-", "T", ":", "(?::", "(?:[.]", ")?)?", "$"], ["^", "-", "-", "T", ":", "(?::", "(?:[.]", ")?)?", "$"])), YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, FRACTION, TIMEZONE); /** validate a valid number */ exports.numeric = /^((?:NaN|[+-]?(?:(?:\d+|\d*[.]\d+)(?:[Ee][+-]?\d+)?|[+-]?Infinity)))$/; var HOST = /^(?!-)[a-zA-Z0-9-]{1,63}(?<!-)[.]$/; var TLD = /^[a-z]{2,}$/; exports.domain = re(templateObject_7 || (templateObject_7 = __makeTemplateObject(["^", "+", "$"], ["^", "+", "$"])), HOST, TLD); /** validate an valid email address */ var EMAILGLYPH = /[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]/; var EMAILQUOTE = /[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]/; var EMAILESCAPE = /\\[\x01-\x09\x0b\x0c\x0e-\x7f]/; var EMAILADDRESS = re(templateObject_8 || (templateObject_8 = __makeTemplateObject(["(?:", "+(?:[.]", "+)*|\"(?:", "|", ")*\")"], ["(?:", "+(?:[.]", "+)*|\"(?:", "|", ")*\")"])), EMAILGLYPH, EMAILGLYPH, EMAILQUOTE, EMAILESCAPE); exports.email = re(templateObject_9 || (templateObject_9 = __makeTemplateObject(["", "@(?:\\[", "\\]|", ")$"], ["", "@(?:\\\\[", "\\\\]|", ")$"])), EMAILADDRESS, exports.ipV4, exports.domain); exports.default = { domain: exports.domain, email: exports.email, isoDate: exports.isoDate, numeric: exports.numeric, ipV4: exports.ipV4, ipV4Local: exports.ipV4Local }; var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;