@technobuddha/library
Version:
A large library of useful functions
98 lines (97 loc) • 5.53 kB
JavaScript
;
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;