@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/csv.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export declare function fromCsv<T = any>(csv: string, hasHeaders?: boolean): T[];
1
2
  /**
2
3
  * Convert an object to a CSV string
3
4
  *
package/dist/index.cjs CHANGED
@@ -412,6 +412,179 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
412
412
  return this;
413
413
  }
414
414
  }
415
+ const LETTER_LIST = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
416
+ const NUMBER_LIST = "0123456789";
417
+ const SYMBOL_LIST = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/";
418
+ const CHAR_LIST = LETTER_LIST + LETTER_LIST.toLowerCase() + NUMBER_LIST + SYMBOL_LIST;
419
+ function formatBytes(bytes, decimals = 2) {
420
+ if (bytes === 0) return "0 Bytes";
421
+ const k = 1024;
422
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
423
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
424
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + " " + sizes[i];
425
+ }
426
+ function formatPhoneNumber(number) {
427
+ const parts = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(number);
428
+ if (!parts) throw new Error(`Number cannot be parsed: ${number}`);
429
+ return `${parts[1] ? "+1" : ""} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();
430
+ }
431
+ function insertAt(target, str, index) {
432
+ return `${target.slice(0, index)}${str}${target.slice(index + 1)}`;
433
+ }
434
+ function pad(text, length, char = " ", start = true) {
435
+ if (start) return text.toString().padStart(length, char);
436
+ return text.toString().padEnd(length, char);
437
+ }
438
+ function randomHex(length) {
439
+ return Array(length).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
440
+ }
441
+ function randomString(length, pool = CHAR_LIST) {
442
+ return Array(length).fill(null).map(() => {
443
+ const n = ~~(Math.random() * pool.length);
444
+ return pool[n];
445
+ }).join("");
446
+ }
447
+ function randomStringBuilder(length, letters = false, numbers = false, symbols = false) {
448
+ if (!letters && !numbers && !symbols) throw new Error("Must enable at least one: letters, numbers, symbols");
449
+ return Array(length).fill(null).map(() => {
450
+ let c;
451
+ do {
452
+ const type = ~~(Math.random() * 3);
453
+ if (letters && type == 0) {
454
+ c = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];
455
+ } else if (numbers && type == 1) {
456
+ c = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];
457
+ } else if (symbols && type == 2) {
458
+ c = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];
459
+ }
460
+ } while (!c);
461
+ return c;
462
+ }).join("");
463
+ }
464
+ function strSplice(str, start, deleteCount, insert = "") {
465
+ const before = str.slice(0, start);
466
+ const after = str.slice(start + deleteCount);
467
+ return before + insert + after;
468
+ }
469
+ function matchAll(value, regex) {
470
+ if (typeof regex === "string") {
471
+ regex = new RegExp(regex, "g");
472
+ }
473
+ if (!regex.global) {
474
+ throw new TypeError("Regular expression must be global.");
475
+ }
476
+ let ret = [];
477
+ let match;
478
+ while ((match = regex.exec(value)) !== null) {
479
+ ret.push(match);
480
+ }
481
+ return ret;
482
+ }
483
+ function parseUrl(url) {
484
+ const processed = new RegExp(
485
+ "(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$",
486
+ "gm"
487
+ ).exec(url);
488
+ const groups = (processed == null ? void 0 : processed.groups) ?? {};
489
+ const domains = groups.domain.split(".");
490
+ if (groups["port"] != null) groups.port = Number(groups.port);
491
+ if (domains.length > 2) {
492
+ groups.domain = domains.splice(-2, 2).join(".");
493
+ groups.subdomain = domains.join(".");
494
+ }
495
+ if (groups.query) {
496
+ const split = groups.query.split("&"), query = {};
497
+ split.forEach((q) => {
498
+ const [key, val] = q.split("=");
499
+ query[key] = val;
500
+ });
501
+ groups.query = query;
502
+ }
503
+ return groups;
504
+ }
505
+ function md5(d) {
506
+ var r = M(V(Y(X(d), 8 * d.length)));
507
+ return r.toLowerCase();
508
+ }
509
+ function M(d) {
510
+ for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++) _ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
511
+ return f;
512
+ }
513
+ function X(d) {
514
+ for (var _ = Array(d.length >> 2), m = 0; m < _.length; m++) _[m] = 0;
515
+ for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
516
+ return _;
517
+ }
518
+ function V(d) {
519
+ for (var _ = "", m = 0; m < 32 * d.length; m += 8) _ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
520
+ return _;
521
+ }
522
+ function Y(d, _) {
523
+ d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
524
+ for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
525
+ var h = m, t = f, g = r, e = i;
526
+ 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);
527
+ }
528
+ return Array(m, f, r, i);
529
+ }
530
+ function md5_cmn(d, _, m, f, r, i) {
531
+ return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m);
532
+ }
533
+ function md5_ff(d, _, m, f, r, i, n) {
534
+ return md5_cmn(_ & m | ~_ & f, d, _, r, i, n);
535
+ }
536
+ function md5_gg(d, _, m, f, r, i, n) {
537
+ return md5_cmn(_ & f | m & ~f, d, _, r, i, n);
538
+ }
539
+ function md5_hh(d, _, m, f, r, i, n) {
540
+ return md5_cmn(_ ^ m ^ f, d, _, r, i, n);
541
+ }
542
+ function md5_ii(d, _, m, f, r, i, n) {
543
+ return md5_cmn(m ^ (_ | ~f), d, _, r, i, n);
544
+ }
545
+ function safe_add(d, _) {
546
+ var m = (65535 & d) + (65535 & _);
547
+ return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m;
548
+ }
549
+ function bit_rol(d, _) {
550
+ return d << _ | d >>> 32 - _;
551
+ }
552
+ function validateEmail(email) {
553
+ return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email);
554
+ }
555
+ function fromCsv(csv, hasHeaders = true) {
556
+ const row = csv.split("\n");
557
+ let headers = hasHeaders ? row.splice(0, 1)[0] : null;
558
+ if (headers) headers = headers.match(/(?:[^,"']+|"[^"]*"|'[^']*')+/g);
559
+ return row.map((r) => {
560
+ function parseLine(line) {
561
+ const parts = line.split(","), columns = [];
562
+ let quoted = false;
563
+ for (const p of parts) {
564
+ if (quoted) columns[columns.length - 1] = columns.at(-1) + "," + p;
565
+ else columns.push(p);
566
+ if (/[^"]"$/g.test(p)) {
567
+ quoted = false;
568
+ } else if (/^"[^"]/g.test(p)) {
569
+ quoted = true;
570
+ }
571
+ }
572
+ return columns;
573
+ }
574
+ const props = parseLine(r);
575
+ const h = headers || Array(props.length).fill(null).map((r2, i) => {
576
+ let letter = "";
577
+ const first = i / 26;
578
+ if (first > 1) letter += LETTER_LIST[Math.floor(first - 1)];
579
+ letter += LETTER_LIST[i % 26];
580
+ return letter;
581
+ });
582
+ return h.reduce((acc, h2, i) => {
583
+ dotNotation(acc, h2, props[i]);
584
+ return acc;
585
+ }, {});
586
+ });
587
+ }
415
588
  function toCsv(target, flatten = true) {
416
589
  const headers = new ASet(target.reduce((acc, row) => [...acc, ...Object.keys(flatten ? flattenObj(row) : row)], []));
417
590
  return [
@@ -947,146 +1120,6 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
947
1120
  split = split.pop().split("/");
948
1121
  return whole + Number(split[0]) / Number(split[1]);
949
1122
  }
950
- const LETTER_LIST = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
951
- const NUMBER_LIST = "0123456789";
952
- const SYMBOL_LIST = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/";
953
- const CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;
954
- function formatBytes(bytes, decimals = 2) {
955
- if (bytes === 0) return "0 Bytes";
956
- const k = 1024;
957
- const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
958
- const i = Math.floor(Math.log(bytes) / Math.log(k));
959
- return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + " " + sizes[i];
960
- }
961
- function formatPhoneNumber(number) {
962
- const parts = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(number);
963
- if (!parts) throw new Error(`Number cannot be parsed: ${number}`);
964
- return `${parts[1] ? "+1" : ""} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();
965
- }
966
- function insertAt(target, str, index) {
967
- return `${target.slice(0, index)}${str}${target.slice(index + 1)}`;
968
- }
969
- function pad(text, length, char = " ", start = true) {
970
- if (start) return text.toString().padStart(length, char);
971
- return text.toString().padEnd(length, char);
972
- }
973
- function randomHex(length) {
974
- return Array(length).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
975
- }
976
- function randomString(length, pool = CHAR_LIST) {
977
- return Array(length).fill(null).map(() => {
978
- const n = ~~(Math.random() * pool.length);
979
- return pool[n];
980
- }).join("");
981
- }
982
- function randomStringBuilder(length, letters = false, numbers = false, symbols = false) {
983
- if (!letters && !numbers && !symbols) throw new Error("Must enable at least one: letters, numbers, symbols");
984
- return Array(length).fill(null).map(() => {
985
- let c;
986
- do {
987
- const type = ~~(Math.random() * 3);
988
- if (letters && type == 0) {
989
- c = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];
990
- } else if (numbers && type == 1) {
991
- c = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];
992
- } else if (symbols && type == 2) {
993
- c = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];
994
- }
995
- } while (!c);
996
- return c;
997
- }).join("");
998
- }
999
- function strSplice(str, start, deleteCount, insert = "") {
1000
- const before = str.slice(0, start);
1001
- const after = str.slice(start + deleteCount);
1002
- return before + insert + after;
1003
- }
1004
- function matchAll(value, regex) {
1005
- if (typeof regex === "string") {
1006
- regex = new RegExp(regex, "g");
1007
- }
1008
- if (!regex.global) {
1009
- throw new TypeError("Regular expression must be global.");
1010
- }
1011
- let ret = [];
1012
- let match;
1013
- while ((match = regex.exec(value)) !== null) {
1014
- ret.push(match);
1015
- }
1016
- return ret;
1017
- }
1018
- function parseUrl(url) {
1019
- const processed = new RegExp(
1020
- "(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$",
1021
- "gm"
1022
- ).exec(url);
1023
- const groups = (processed == null ? void 0 : processed.groups) ?? {};
1024
- const domains = groups.domain.split(".");
1025
- if (groups["port"] != null) groups.port = Number(groups.port);
1026
- if (domains.length > 2) {
1027
- groups.domain = domains.splice(-2, 2).join(".");
1028
- groups.subdomain = domains.join(".");
1029
- }
1030
- if (groups.query) {
1031
- const split = groups.query.split("&"), query = {};
1032
- split.forEach((q) => {
1033
- const [key, val] = q.split("=");
1034
- query[key] = val;
1035
- });
1036
- groups.query = query;
1037
- }
1038
- return groups;
1039
- }
1040
- function md5(d) {
1041
- var r = M(V(Y(X(d), 8 * d.length)));
1042
- return r.toLowerCase();
1043
- }
1044
- function M(d) {
1045
- for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++) _ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
1046
- return f;
1047
- }
1048
- function X(d) {
1049
- for (var _ = Array(d.length >> 2), m = 0; m < _.length; m++) _[m] = 0;
1050
- for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
1051
- return _;
1052
- }
1053
- function V(d) {
1054
- for (var _ = "", m = 0; m < 32 * d.length; m += 8) _ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
1055
- return _;
1056
- }
1057
- function Y(d, _) {
1058
- d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
1059
- for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
1060
- var h = m, t = f, g = r, e = i;
1061
- 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);
1062
- }
1063
- return Array(m, f, r, i);
1064
- }
1065
- function md5_cmn(d, _, m, f, r, i) {
1066
- return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m);
1067
- }
1068
- function md5_ff(d, _, m, f, r, i, n) {
1069
- return md5_cmn(_ & m | ~_ & f, d, _, r, i, n);
1070
- }
1071
- function md5_gg(d, _, m, f, r, i, n) {
1072
- return md5_cmn(_ & f | m & ~f, d, _, r, i, n);
1073
- }
1074
- function md5_hh(d, _, m, f, r, i, n) {
1075
- return md5_cmn(_ ^ m ^ f, d, _, r, i, n);
1076
- }
1077
- function md5_ii(d, _, m, f, r, i, n) {
1078
- return md5_cmn(m ^ (_ | ~f), d, _, r, i, n);
1079
- }
1080
- function safe_add(d, _) {
1081
- var m = (65535 & d) + (65535 & _);
1082
- return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m;
1083
- }
1084
- function bit_rol(d, _) {
1085
- return d << _ | d >>> 32 - _;
1086
- }
1087
- function validateEmail(email) {
1088
- return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email);
1089
- }
1090
1123
  function gravatar(email, def = "mp") {
1091
1124
  if (!email) return "";
1092
1125
  return `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;
@@ -1487,6 +1520,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
1487
1520
  exports2.ASet = ASet;
1488
1521
  exports2.BadGatewayError = BadGatewayError;
1489
1522
  exports2.BadRequestError = BadRequestError;
1523
+ exports2.CHAR_LIST = CHAR_LIST;
1490
1524
  exports2.Cache = Cache;
1491
1525
  exports2.CliBackground = CliBackground;
1492
1526
  exports2.CliEffects = CliEffects;
@@ -1498,9 +1532,11 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
1498
1532
  exports2.InternalServerError = InternalServerError;
1499
1533
  exports2.JSONAttemptParse = JSONAttemptParse;
1500
1534
  exports2.JSONSanitize = JSONSanitize;
1535
+ exports2.LETTER_LIST = LETTER_LIST;
1501
1536
  exports2.LOG_LEVEL = LOG_LEVEL;
1502
1537
  exports2.Logger = Logger;
1503
1538
  exports2.MethodNotAllowedError = MethodNotAllowedError;
1539
+ exports2.NUMBER_LIST = NUMBER_LIST;
1504
1540
  exports2.NotAcceptableError = NotAcceptableError;
1505
1541
  exports2.NotFoundError = NotFoundError;
1506
1542
  exports2.NotImplementedError = NotImplementedError;
@@ -1511,6 +1547,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
1511
1547
  exports2.PathEventEmitter = PathEventEmitter;
1512
1548
  exports2.PaymentRequiredError = PaymentRequiredError;
1513
1549
  exports2.PromiseProgress = PromiseProgress;
1550
+ exports2.SYMBOL_LIST = SYMBOL_LIST;
1514
1551
  exports2.ServiceUnavailableError = ServiceUnavailableError;
1515
1552
  exports2.TypedEmitter = TypedEmitter;
1516
1553
  exports2.UnauthorizedError = UnauthorizedError;
@@ -1538,6 +1575,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
1538
1575
  exports2.formatDate = formatDate;
1539
1576
  exports2.formatPhoneNumber = formatPhoneNumber;
1540
1577
  exports2.fracToDec = fracToDec;
1578
+ exports2.fromCsv = fromCsv;
1541
1579
  exports2.gravatar = gravatar;
1542
1580
  exports2.includes = includes;
1543
1581
  exports2.insertAt = insertAt;