@ztimson/utils 0.22.4 → 0.22.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -408,6 +408,179 @@ class Cache {
408
408
  return this;
409
409
  }
410
410
  }
411
+ const LETTER_LIST = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
412
+ const NUMBER_LIST = "0123456789";
413
+ const SYMBOL_LIST = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/";
414
+ const CHAR_LIST = LETTER_LIST + LETTER_LIST.toLowerCase() + NUMBER_LIST + SYMBOL_LIST;
415
+ function formatBytes(bytes, decimals = 2) {
416
+ if (bytes === 0) return "0 Bytes";
417
+ const k = 1024;
418
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
419
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
420
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + " " + sizes[i];
421
+ }
422
+ function formatPhoneNumber(number) {
423
+ const parts = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(number);
424
+ if (!parts) throw new Error(`Number cannot be parsed: ${number}`);
425
+ return `${parts[1] ? "+1" : ""} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();
426
+ }
427
+ function insertAt(target, str, index) {
428
+ return `${target.slice(0, index)}${str}${target.slice(index + 1)}`;
429
+ }
430
+ function pad(text, length, char = " ", start = true) {
431
+ if (start) return text.toString().padStart(length, char);
432
+ return text.toString().padEnd(length, char);
433
+ }
434
+ function randomHex(length) {
435
+ return Array(length).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
436
+ }
437
+ function randomString(length, pool = CHAR_LIST) {
438
+ return Array(length).fill(null).map(() => {
439
+ const n = ~~(Math.random() * pool.length);
440
+ return pool[n];
441
+ }).join("");
442
+ }
443
+ function randomStringBuilder(length, letters = false, numbers = false, symbols = false) {
444
+ if (!letters && !numbers && !symbols) throw new Error("Must enable at least one: letters, numbers, symbols");
445
+ return Array(length).fill(null).map(() => {
446
+ let c;
447
+ do {
448
+ const type = ~~(Math.random() * 3);
449
+ if (letters && type == 0) {
450
+ c = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];
451
+ } else if (numbers && type == 1) {
452
+ c = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];
453
+ } else if (symbols && type == 2) {
454
+ c = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];
455
+ }
456
+ } while (!c);
457
+ return c;
458
+ }).join("");
459
+ }
460
+ function strSplice(str, start, deleteCount, insert = "") {
461
+ const before = str.slice(0, start);
462
+ const after = str.slice(start + deleteCount);
463
+ return before + insert + after;
464
+ }
465
+ function matchAll(value, regex) {
466
+ if (typeof regex === "string") {
467
+ regex = new RegExp(regex, "g");
468
+ }
469
+ if (!regex.global) {
470
+ throw new TypeError("Regular expression must be global.");
471
+ }
472
+ let ret = [];
473
+ let match;
474
+ while ((match = regex.exec(value)) !== null) {
475
+ ret.push(match);
476
+ }
477
+ return ret;
478
+ }
479
+ function parseUrl(url) {
480
+ const processed = new RegExp(
481
+ "(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$",
482
+ "gm"
483
+ ).exec(url);
484
+ const groups = (processed == null ? void 0 : processed.groups) ?? {};
485
+ const domains = groups.domain.split(".");
486
+ if (groups["port"] != null) groups.port = Number(groups.port);
487
+ if (domains.length > 2) {
488
+ groups.domain = domains.splice(-2, 2).join(".");
489
+ groups.subdomain = domains.join(".");
490
+ }
491
+ if (groups.query) {
492
+ const split = groups.query.split("&"), query = {};
493
+ split.forEach((q) => {
494
+ const [key, val] = q.split("=");
495
+ query[key] = val;
496
+ });
497
+ groups.query = query;
498
+ }
499
+ return groups;
500
+ }
501
+ function md5(d) {
502
+ var r = M(V(Y(X(d), 8 * d.length)));
503
+ return r.toLowerCase();
504
+ }
505
+ function M(d) {
506
+ for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++) _ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
507
+ return f;
508
+ }
509
+ function X(d) {
510
+ for (var _ = Array(d.length >> 2), m = 0; m < _.length; m++) _[m] = 0;
511
+ for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
512
+ return _;
513
+ }
514
+ function V(d) {
515
+ for (var _ = "", m = 0; m < 32 * d.length; m += 8) _ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
516
+ return _;
517
+ }
518
+ function Y(d, _) {
519
+ d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
520
+ for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
521
+ var h = m, t = f, g = r, e = i;
522
+ f = md5_ii(f = md5_ii(f = md5_ii(f = md5_ii(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_ff(f = md5_ff(f = md5_ff(f = md5_ff(f, r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 0], 7, -680876936), f, r, d[n + 1], 12, -389564586), m, f, d[n + 2], 17, 606105819), i, m, d[n + 3], 22, -1044525330), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 4], 7, -176418897), f, r, d[n + 5], 12, 1200080426), m, f, d[n + 6], 17, -1473231341), i, m, d[n + 7], 22, -45705983), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 8], 7, 1770035416), f, r, d[n + 9], 12, -1958414417), m, f, d[n + 10], 17, -42063), i, m, d[n + 11], 22, -1990404162), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 12], 7, 1804603682), f, r, d[n + 13], 12, -40341101), m, f, d[n + 14], 17, -1502002290), i, m, d[n + 15], 22, 1236535329), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 1], 5, -165796510), f, r, d[n + 6], 9, -1069501632), m, f, d[n + 11], 14, 643717713), i, m, d[n + 0], 20, -373897302), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 5], 5, -701558691), f, r, d[n + 10], 9, 38016083), m, f, d[n + 15], 14, -660478335), i, m, d[n + 4], 20, -405537848), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 9], 5, 568446438), f, r, d[n + 14], 9, -1019803690), m, f, d[n + 3], 14, -187363961), i, m, d[n + 8], 20, 1163531501), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 13], 5, -1444681467), f, r, d[n + 2], 9, -51403784), m, f, d[n + 7], 14, 1735328473), i, m, d[n + 12], 20, -1926607734), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 5], 4, -378558), f, r, d[n + 8], 11, -2022574463), m, f, d[n + 11], 16, 1839030562), i, m, d[n + 14], 23, -35309556), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 1], 4, -1530992060), f, r, d[n + 4], 11, 1272893353), m, f, d[n + 7], 16, -155497632), i, m, d[n + 10], 23, -1094730640), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 13], 4, 681279174), f, r, d[n + 0], 11, -358537222), m, f, d[n + 3], 16, -722521979), i, m, d[n + 6], 23, 76029189), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 9], 4, -640364487), f, r, d[n + 12], 11, -421815835), m, f, d[n + 15], 16, 530742520), i, m, d[n + 2], 23, -995338651), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 0], 6, -198630844), f, r, d[n + 7], 10, 1126891415), m, f, d[n + 14], 15, -1416354905), i, m, d[n + 5], 21, -57434055), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 12], 6, 1700485571), f, r, d[n + 3], 10, -1894986606), m, f, d[n + 10], 15, -1051523), i, m, d[n + 1], 21, -2054922799), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 8], 6, 1873313359), f, r, d[n + 15], 10, -30611744), m, f, d[n + 6], 15, -1560198380), i, m, d[n + 13], 21, 1309151649), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 4], 6, -145523070), f, r, d[n + 11], 10, -1120210379), m, f, d[n + 2], 15, 718787259), i, m, d[n + 9], 21, -343485551), m = safe_add(m, h), f = safe_add(f, t), r = safe_add(r, g), i = safe_add(i, e);
523
+ }
524
+ return Array(m, f, r, i);
525
+ }
526
+ function md5_cmn(d, _, m, f, r, i) {
527
+ return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m);
528
+ }
529
+ function md5_ff(d, _, m, f, r, i, n) {
530
+ return md5_cmn(_ & m | ~_ & f, d, _, r, i, n);
531
+ }
532
+ function md5_gg(d, _, m, f, r, i, n) {
533
+ return md5_cmn(_ & f | m & ~f, d, _, r, i, n);
534
+ }
535
+ function md5_hh(d, _, m, f, r, i, n) {
536
+ return md5_cmn(_ ^ m ^ f, d, _, r, i, n);
537
+ }
538
+ function md5_ii(d, _, m, f, r, i, n) {
539
+ return md5_cmn(m ^ (_ | ~f), d, _, r, i, n);
540
+ }
541
+ function safe_add(d, _) {
542
+ var m = (65535 & d) + (65535 & _);
543
+ return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m;
544
+ }
545
+ function bit_rol(d, _) {
546
+ return d << _ | d >>> 32 - _;
547
+ }
548
+ function validateEmail(email) {
549
+ return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email);
550
+ }
551
+ function fromCsv(csv, hasHeaders = true) {
552
+ const row = csv.split("\n");
553
+ let headers = hasHeaders ? row.splice(0, 1)[0] : null;
554
+ if (headers) headers = headers.match(/(?:[^,"']+|"[^"]*"|'[^']*')+/g);
555
+ return row.map((r) => {
556
+ function parseLine(line) {
557
+ const parts = line.split(","), columns = [];
558
+ let quoted = false;
559
+ for (const p of parts) {
560
+ if (quoted) columns[columns.length - 1] = columns.at(-1) + "," + p;
561
+ else columns.push(p);
562
+ if (/[^"]"$/g.test(p)) {
563
+ quoted = false;
564
+ } else if (/^"[^"]/g.test(p)) {
565
+ quoted = true;
566
+ }
567
+ }
568
+ return columns;
569
+ }
570
+ const props = parseLine(r);
571
+ const h = headers || Array(props.length).fill(null).map((r2, i) => {
572
+ let letter = "";
573
+ const first = i / 26;
574
+ if (first > 1) letter += LETTER_LIST[Math.floor(first - 1)];
575
+ letter += LETTER_LIST[i % 26];
576
+ return letter;
577
+ });
578
+ return h.reduce((acc, h2, i) => {
579
+ dotNotation(acc, h2, props[i]);
580
+ return acc;
581
+ }, {});
582
+ });
583
+ }
411
584
  function toCsv(target, flatten = true) {
412
585
  const headers = new ASet(target.reduce((acc, row) => [...acc, ...Object.keys(flatten ? flattenObj(row) : row)], []));
413
586
  return [
@@ -943,146 +1116,6 @@ function fracToDec(frac) {
943
1116
  split = split.pop().split("/");
944
1117
  return whole + Number(split[0]) / Number(split[1]);
945
1118
  }
946
- const LETTER_LIST = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
947
- const NUMBER_LIST = "0123456789";
948
- const SYMBOL_LIST = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/";
949
- const CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;
950
- function formatBytes(bytes, decimals = 2) {
951
- if (bytes === 0) return "0 Bytes";
952
- const k = 1024;
953
- const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
954
- const i = Math.floor(Math.log(bytes) / Math.log(k));
955
- return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + " " + sizes[i];
956
- }
957
- function formatPhoneNumber(number) {
958
- const parts = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(number);
959
- if (!parts) throw new Error(`Number cannot be parsed: ${number}`);
960
- return `${parts[1] ? "+1" : ""} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();
961
- }
962
- function insertAt(target, str, index) {
963
- return `${target.slice(0, index)}${str}${target.slice(index + 1)}`;
964
- }
965
- function pad(text, length, char = " ", start = true) {
966
- if (start) return text.toString().padStart(length, char);
967
- return text.toString().padEnd(length, char);
968
- }
969
- function randomHex(length) {
970
- return Array(length).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
971
- }
972
- function randomString(length, pool = CHAR_LIST) {
973
- return Array(length).fill(null).map(() => {
974
- const n = ~~(Math.random() * pool.length);
975
- return pool[n];
976
- }).join("");
977
- }
978
- function randomStringBuilder(length, letters = false, numbers = false, symbols = false) {
979
- if (!letters && !numbers && !symbols) throw new Error("Must enable at least one: letters, numbers, symbols");
980
- return Array(length).fill(null).map(() => {
981
- let c;
982
- do {
983
- const type = ~~(Math.random() * 3);
984
- if (letters && type == 0) {
985
- c = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];
986
- } else if (numbers && type == 1) {
987
- c = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];
988
- } else if (symbols && type == 2) {
989
- c = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];
990
- }
991
- } while (!c);
992
- return c;
993
- }).join("");
994
- }
995
- function strSplice(str, start, deleteCount, insert = "") {
996
- const before = str.slice(0, start);
997
- const after = str.slice(start + deleteCount);
998
- return before + insert + after;
999
- }
1000
- function matchAll(value, regex) {
1001
- if (typeof regex === "string") {
1002
- regex = new RegExp(regex, "g");
1003
- }
1004
- if (!regex.global) {
1005
- throw new TypeError("Regular expression must be global.");
1006
- }
1007
- let ret = [];
1008
- let match;
1009
- while ((match = regex.exec(value)) !== null) {
1010
- ret.push(match);
1011
- }
1012
- return ret;
1013
- }
1014
- function parseUrl(url) {
1015
- const processed = new RegExp(
1016
- "(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$",
1017
- "gm"
1018
- ).exec(url);
1019
- const groups = (processed == null ? void 0 : processed.groups) ?? {};
1020
- const domains = groups.domain.split(".");
1021
- if (groups["port"] != null) groups.port = Number(groups.port);
1022
- if (domains.length > 2) {
1023
- groups.domain = domains.splice(-2, 2).join(".");
1024
- groups.subdomain = domains.join(".");
1025
- }
1026
- if (groups.query) {
1027
- const split = groups.query.split("&"), query = {};
1028
- split.forEach((q) => {
1029
- const [key, val] = q.split("=");
1030
- query[key] = val;
1031
- });
1032
- groups.query = query;
1033
- }
1034
- return groups;
1035
- }
1036
- function md5(d) {
1037
- var r = M(V(Y(X(d), 8 * d.length)));
1038
- return r.toLowerCase();
1039
- }
1040
- function M(d) {
1041
- for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++) _ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
1042
- return f;
1043
- }
1044
- function X(d) {
1045
- for (var _ = Array(d.length >> 2), m = 0; m < _.length; m++) _[m] = 0;
1046
- for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
1047
- return _;
1048
- }
1049
- function V(d) {
1050
- for (var _ = "", m = 0; m < 32 * d.length; m += 8) _ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
1051
- return _;
1052
- }
1053
- function Y(d, _) {
1054
- d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
1055
- for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
1056
- var h = m, t = f, g = r, e = i;
1057
- f = md5_ii(f = md5_ii(f = md5_ii(f = md5_ii(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_ff(f = md5_ff(f = md5_ff(f = md5_ff(f, r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 0], 7, -680876936), f, r, d[n + 1], 12, -389564586), m, f, d[n + 2], 17, 606105819), i, m, d[n + 3], 22, -1044525330), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 4], 7, -176418897), f, r, d[n + 5], 12, 1200080426), m, f, d[n + 6], 17, -1473231341), i, m, d[n + 7], 22, -45705983), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 8], 7, 1770035416), f, r, d[n + 9], 12, -1958414417), m, f, d[n + 10], 17, -42063), i, m, d[n + 11], 22, -1990404162), r = md5_ff(r, i = md5_ff(i, m = md5_ff(m, f, r, i, d[n + 12], 7, 1804603682), f, r, d[n + 13], 12, -40341101), m, f, d[n + 14], 17, -1502002290), i, m, d[n + 15], 22, 1236535329), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 1], 5, -165796510), f, r, d[n + 6], 9, -1069501632), m, f, d[n + 11], 14, 643717713), i, m, d[n + 0], 20, -373897302), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 5], 5, -701558691), f, r, d[n + 10], 9, 38016083), m, f, d[n + 15], 14, -660478335), i, m, d[n + 4], 20, -405537848), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 9], 5, 568446438), f, r, d[n + 14], 9, -1019803690), m, f, d[n + 3], 14, -187363961), i, m, d[n + 8], 20, 1163531501), r = md5_gg(r, i = md5_gg(i, m = md5_gg(m, f, r, i, d[n + 13], 5, -1444681467), f, r, d[n + 2], 9, -51403784), m, f, d[n + 7], 14, 1735328473), i, m, d[n + 12], 20, -1926607734), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 5], 4, -378558), f, r, d[n + 8], 11, -2022574463), m, f, d[n + 11], 16, 1839030562), i, m, d[n + 14], 23, -35309556), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 1], 4, -1530992060), f, r, d[n + 4], 11, 1272893353), m, f, d[n + 7], 16, -155497632), i, m, d[n + 10], 23, -1094730640), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 13], 4, 681279174), f, r, d[n + 0], 11, -358537222), m, f, d[n + 3], 16, -722521979), i, m, d[n + 6], 23, 76029189), r = md5_hh(r, i = md5_hh(i, m = md5_hh(m, f, r, i, d[n + 9], 4, -640364487), f, r, d[n + 12], 11, -421815835), m, f, d[n + 15], 16, 530742520), i, m, d[n + 2], 23, -995338651), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 0], 6, -198630844), f, r, d[n + 7], 10, 1126891415), m, f, d[n + 14], 15, -1416354905), i, m, d[n + 5], 21, -57434055), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 12], 6, 1700485571), f, r, d[n + 3], 10, -1894986606), m, f, d[n + 10], 15, -1051523), i, m, d[n + 1], 21, -2054922799), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 8], 6, 1873313359), f, r, d[n + 15], 10, -30611744), m, f, d[n + 6], 15, -1560198380), i, m, d[n + 13], 21, 1309151649), r = md5_ii(r, i = md5_ii(i, m = md5_ii(m, f, r, i, d[n + 4], 6, -145523070), f, r, d[n + 11], 10, -1120210379), m, f, d[n + 2], 15, 718787259), i, m, d[n + 9], 21, -343485551), m = safe_add(m, h), f = safe_add(f, t), r = safe_add(r, g), i = safe_add(i, e);
1058
- }
1059
- return Array(m, f, r, i);
1060
- }
1061
- function md5_cmn(d, _, m, f, r, i) {
1062
- return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m);
1063
- }
1064
- function md5_ff(d, _, m, f, r, i, n) {
1065
- return md5_cmn(_ & m | ~_ & f, d, _, r, i, n);
1066
- }
1067
- function md5_gg(d, _, m, f, r, i, n) {
1068
- return md5_cmn(_ & f | m & ~f, d, _, r, i, n);
1069
- }
1070
- function md5_hh(d, _, m, f, r, i, n) {
1071
- return md5_cmn(_ ^ m ^ f, d, _, r, i, n);
1072
- }
1073
- function md5_ii(d, _, m, f, r, i, n) {
1074
- return md5_cmn(m ^ (_ | ~f), d, _, r, i, n);
1075
- }
1076
- function safe_add(d, _) {
1077
- var m = (65535 & d) + (65535 & _);
1078
- return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m;
1079
- }
1080
- function bit_rol(d, _) {
1081
- return d << _ | d >>> 32 - _;
1082
- }
1083
- function validateEmail(email) {
1084
- return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email);
1085
- }
1086
1119
  function gravatar(email, def = "mp") {
1087
1120
  if (!email) return "";
1088
1121
  return `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;
@@ -1484,6 +1517,7 @@ export {
1484
1517
  ASet,
1485
1518
  BadGatewayError,
1486
1519
  BadRequestError,
1520
+ CHAR_LIST,
1487
1521
  Cache,
1488
1522
  CliBackground,
1489
1523
  CliEffects,
@@ -1495,9 +1529,11 @@ export {
1495
1529
  InternalServerError,
1496
1530
  JSONAttemptParse,
1497
1531
  JSONSanitize,
1532
+ LETTER_LIST,
1498
1533
  LOG_LEVEL,
1499
1534
  Logger,
1500
1535
  MethodNotAllowedError,
1536
+ NUMBER_LIST,
1501
1537
  NotAcceptableError,
1502
1538
  NotFoundError,
1503
1539
  NotImplementedError,
@@ -1508,6 +1544,7 @@ export {
1508
1544
  PathEventEmitter,
1509
1545
  PaymentRequiredError,
1510
1546
  PromiseProgress,
1547
+ SYMBOL_LIST,
1511
1548
  ServiceUnavailableError,
1512
1549
  TypedEmitter,
1513
1550
  UnauthorizedError,
@@ -1535,6 +1572,7 @@ export {
1535
1572
  formatDate,
1536
1573
  formatPhoneNumber,
1537
1574
  fracToDec,
1575
+ fromCsv,
1538
1576
  gravatar,
1539
1577
  includes,
1540
1578
  insertAt,