@ztimson/utils 0.22.5 → 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.cjs +164 -142
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +164 -142
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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) =>
|
|
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}`;
|