@ztimson/utils 0.22.5 → 0.22.7

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.cjs CHANGED
@@ -412,15 +412,177 @@ 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
+ }
415
555
  function fromCsv(csv, hasHeaders = true) {
416
556
  const row = csv.split("\n");
417
557
  let headers = hasHeaders ? row.splice(0, 1)[0] : null;
418
558
  if (headers) headers = headers.match(/(?:[^,"']+|"[^"]*"|'[^']*')+/g);
419
559
  return row.map((r) => {
420
- const props = r.match(/(?:[^,"']+|"[^"]*"|'[^']*')+/g);
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);
421
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;
422
581
  });
423
- return h.reduce((acc, h2, i) => ({ ...acc, [h2]: props[i] }), {});
582
+ return h.reduce((acc, h2, i) => {
583
+ dotNotation(acc, h2, props[i]);
584
+ return acc;
585
+ }, {});
424
586
  });
425
587
  }
426
588
  function toCsv(target, flatten = true) {
@@ -958,146 +1120,6 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
958
1120
  split = split.pop().split("/");
959
1121
  return whole + Number(split[0]) / Number(split[1]);
960
1122
  }
961
- const LETTER_LIST = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
962
- const NUMBER_LIST = "0123456789";
963
- const SYMBOL_LIST = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/";
964
- const CHAR_LIST = LETTER_LIST + LETTER_LIST.toLowerCase() + NUMBER_LIST + SYMBOL_LIST;
965
- function formatBytes(bytes, decimals = 2) {
966
- if (bytes === 0) return "0 Bytes";
967
- const k = 1024;
968
- const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
969
- const i = Math.floor(Math.log(bytes) / Math.log(k));
970
- return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + " " + sizes[i];
971
- }
972
- function formatPhoneNumber(number) {
973
- const parts = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(number);
974
- if (!parts) throw new Error(`Number cannot be parsed: ${number}`);
975
- return `${parts[1] ? "+1" : ""} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();
976
- }
977
- function insertAt(target, str, index) {
978
- return `${target.slice(0, index)}${str}${target.slice(index + 1)}`;
979
- }
980
- function pad(text, length, char = " ", start = true) {
981
- if (start) return text.toString().padStart(length, char);
982
- return text.toString().padEnd(length, char);
983
- }
984
- function randomHex(length) {
985
- return Array(length).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
986
- }
987
- function randomString(length, pool = CHAR_LIST) {
988
- return Array(length).fill(null).map(() => {
989
- const n = ~~(Math.random() * pool.length);
990
- return pool[n];
991
- }).join("");
992
- }
993
- function randomStringBuilder(length, letters = false, numbers = false, symbols = false) {
994
- if (!letters && !numbers && !symbols) throw new Error("Must enable at least one: letters, numbers, symbols");
995
- return Array(length).fill(null).map(() => {
996
- let c;
997
- do {
998
- const type = ~~(Math.random() * 3);
999
- if (letters && type == 0) {
1000
- c = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];
1001
- } else if (numbers && type == 1) {
1002
- c = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];
1003
- } else if (symbols && type == 2) {
1004
- c = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];
1005
- }
1006
- } while (!c);
1007
- return c;
1008
- }).join("");
1009
- }
1010
- function strSplice(str, start, deleteCount, insert = "") {
1011
- const before = str.slice(0, start);
1012
- const after = str.slice(start + deleteCount);
1013
- return before + insert + after;
1014
- }
1015
- function matchAll(value, regex) {
1016
- if (typeof regex === "string") {
1017
- regex = new RegExp(regex, "g");
1018
- }
1019
- if (!regex.global) {
1020
- throw new TypeError("Regular expression must be global.");
1021
- }
1022
- let ret = [];
1023
- let match;
1024
- while ((match = regex.exec(value)) !== null) {
1025
- ret.push(match);
1026
- }
1027
- return ret;
1028
- }
1029
- function parseUrl(url) {
1030
- const processed = new RegExp(
1031
- "(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$",
1032
- "gm"
1033
- ).exec(url);
1034
- const groups = (processed == null ? void 0 : processed.groups) ?? {};
1035
- const domains = groups.domain.split(".");
1036
- if (groups["port"] != null) groups.port = Number(groups.port);
1037
- if (domains.length > 2) {
1038
- groups.domain = domains.splice(-2, 2).join(".");
1039
- groups.subdomain = domains.join(".");
1040
- }
1041
- if (groups.query) {
1042
- const split = groups.query.split("&"), query = {};
1043
- split.forEach((q) => {
1044
- const [key, val] = q.split("=");
1045
- query[key] = val;
1046
- });
1047
- groups.query = query;
1048
- }
1049
- return groups;
1050
- }
1051
- function md5(d) {
1052
- var r = M(V(Y(X(d), 8 * d.length)));
1053
- return r.toLowerCase();
1054
- }
1055
- function M(d) {
1056
- for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++) _ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
1057
- return f;
1058
- }
1059
- function X(d) {
1060
- for (var _ = Array(d.length >> 2), m = 0; m < _.length; m++) _[m] = 0;
1061
- for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
1062
- return _;
1063
- }
1064
- function V(d) {
1065
- for (var _ = "", m = 0; m < 32 * d.length; m += 8) _ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
1066
- return _;
1067
- }
1068
- function Y(d, _) {
1069
- d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
1070
- for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
1071
- var h = m, t = f, g = r, e = i;
1072
- 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);
1073
- }
1074
- return Array(m, f, r, i);
1075
- }
1076
- function md5_cmn(d, _, m, f, r, i) {
1077
- return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m);
1078
- }
1079
- function md5_ff(d, _, m, f, r, i, n) {
1080
- return md5_cmn(_ & m | ~_ & f, d, _, r, i, n);
1081
- }
1082
- function md5_gg(d, _, m, f, r, i, n) {
1083
- return md5_cmn(_ & f | m & ~f, d, _, r, i, n);
1084
- }
1085
- function md5_hh(d, _, m, f, r, i, n) {
1086
- return md5_cmn(_ ^ m ^ f, d, _, r, i, n);
1087
- }
1088
- function md5_ii(d, _, m, f, r, i, n) {
1089
- return md5_cmn(m ^ (_ | ~f), d, _, r, i, n);
1090
- }
1091
- function safe_add(d, _) {
1092
- var m = (65535 & d) + (65535 & _);
1093
- return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m;
1094
- }
1095
- function bit_rol(d, _) {
1096
- return d << _ | d >>> 32 - _;
1097
- }
1098
- function validateEmail(email) {
1099
- return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email);
1100
- }
1101
1123
  function gravatar(email, def = "mp") {
1102
1124
  if (!email) return "";
1103
1125
  return `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;
@@ -1424,64 +1446,12 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
1424
1446
  const minutes = offset % 60;
1425
1447
  return (offset > 0 ? "-" : "") + `${hours}:${minutes.toString().padStart(2, "0")}`;
1426
1448
  }
1427
- function timezone(offset) {
1428
- const hours = offset / 60;
1429
- switch (hours) {
1430
- case -12:
1431
- return "IDLW";
1432
- case -11:
1433
- return "SST";
1434
- case -10:
1435
- return "HST";
1436
- case -9:
1437
- return "AKST";
1438
- case -8:
1439
- return "PST";
1440
- case -7:
1441
- return "MST";
1442
- case -6:
1443
- return "CST";
1444
- case -5:
1445
- return "EST";
1446
- case -4:
1447
- return "AST";
1448
- case -3:
1449
- return "ART";
1450
- case -2:
1451
- return "FNT";
1452
- case -1:
1453
- return "AZOT";
1454
- case 0:
1455
- return "UTC";
1456
- case 1:
1457
- return "CET";
1458
- case 2:
1459
- return "EET";
1460
- case 3:
1461
- return "MSK";
1462
- case 4:
1463
- return "SAMT";
1464
- case 5:
1465
- return "YEKT";
1466
- case 6:
1467
- return "OMST";
1468
- case 7:
1469
- return "KRAT";
1470
- case 8:
1471
- return "CST";
1472
- case 9:
1473
- return "JST";
1474
- case 10:
1475
- return "AEST";
1476
- case 11:
1477
- return "SBT";
1478
- case 12:
1479
- return "NZST";
1480
- default:
1481
- return "";
1482
- }
1449
+ function timezone(date2) {
1450
+ const formatter = new Intl.DateTimeFormat("en-US", { timeZoneName: "short" });
1451
+ const formattedDate = formatter.format(date2);
1452
+ return formattedDate.split(" ").pop() || "";
1483
1453
  }
1484
- return format.replaceAll("YYYY", date.getFullYear().toString()).replaceAll("YY", date.getFullYear().toString().slice(2)).replaceAll("MMMM", month(date.getMonth())).replaceAll("MMM", month(date.getMonth()).slice(0, 2)).replaceAll("MM", (date.getMonth() + 1).toString().padStart(2, "0")).replaceAll("M", (date.getMonth() + 1).toString()).replaceAll("DDD", doy(date).toString()).replaceAll("DD", date.getDate().toString().padStart(2, "0")).replaceAll("Do", suffix(date.getDate())).replaceAll("D", date.getDate().toString()).replaceAll("dddd", day(date.getDay())).replaceAll("ddd", day(date.getDay()).slice(0, 2)).replaceAll("dd", date.getDate().toString().padStart(2, "0")).replaceAll("d", date.getDay().toString()).replaceAll("HH", date.getHours().toString().padStart(2, "0")).replaceAll("H", date.getHours().toString()).replaceAll("hh", (date.getHours() > 12 ? date.getHours() - 12 : date.getHours()).toString().padStart(2, "0")).replaceAll("h", (date.getHours() > 12 ? date.getHours() - 12 : date.getHours()).toString()).replaceAll("mm", date.getMinutes().toString().padStart(2, "0")).replaceAll("m", date.getMinutes().toString()).replaceAll("ss", date.getSeconds().toString().padStart(2, "0")).replaceAll("s", date.getSeconds().toString()).replaceAll("SSS", date.getMilliseconds().toString()).replaceAll("SS", date.getMilliseconds().toString().slice(0, 1)).replaceAll("S", date.getMilliseconds().toString()[0]).replaceAll("A", date.getHours() >= 12 ? "PM" : "AM").replaceAll("a", date.getHours() >= 12 ? "pm" : "am").replaceAll("ZZ", tzOffset(date.getTimezoneOffset()).replace(":", "")).replaceAll("Z", tzOffset(date.getTimezoneOffset())).replaceAll("z", timezone(date.getTimezoneOffset()));
1454
+ return format.replaceAll("YYYY", date.getFullYear().toString()).replaceAll("YY", date.getFullYear().toString().slice(2)).replaceAll("MMMM", month(date.getMonth())).replaceAll("MMM", month(date.getMonth()).slice(0, 2)).replaceAll("MM", (date.getMonth() + 1).toString().padStart(2, "0")).replaceAll("M", (date.getMonth() + 1).toString()).replaceAll("DDD", doy(date).toString()).replaceAll("DD", date.getDate().toString().padStart(2, "0")).replaceAll("Do", suffix(date.getDate())).replaceAll("D", date.getDate().toString()).replaceAll("dddd", day(date.getDay())).replaceAll("ddd", day(date.getDay()).slice(0, 2)).replaceAll("dd", date.getDate().toString().padStart(2, "0")).replaceAll("d", date.getDay().toString()).replaceAll("HH", date.getHours().toString().padStart(2, "0")).replaceAll("H", date.getHours().toString()).replaceAll("hh", (date.getHours() > 12 ? date.getHours() - 12 : date.getHours()).toString().padStart(2, "0")).replaceAll("h", (date.getHours() > 12 ? date.getHours() - 12 : date.getHours()).toString()).replaceAll("mm", date.getMinutes().toString().padStart(2, "0")).replaceAll("m", date.getMinutes().toString()).replaceAll("ss", date.getSeconds().toString().padStart(2, "0")).replaceAll("s", date.getSeconds().toString()).replaceAll("SSS", date.getMilliseconds().toString()).replaceAll("SS", date.getMilliseconds().toString().slice(0, 1)).replaceAll("S", date.getMilliseconds().toString()[0]).replaceAll("A", date.getHours() >= 12 ? "PM" : "AM").replaceAll("a", date.getHours() >= 12 ? "pm" : "am").replaceAll("ZZ", tzOffset(date.getTimezoneOffset()).replace(":", "")).replaceAll("Z", tzOffset(date.getTimezoneOffset())).replaceAll("z", timezone(date));
1485
1455
  }
1486
1456
  function sleep(ms) {
1487
1457
  return new Promise((res) => setTimeout(res, ms));