@ztimson/utils 0.23.22 → 0.24.0

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
@@ -1,6 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value2 }) : obj[key] = value2;
3
- var __publicField = (obj, key, value2) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value2);
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  class ArgParser {
5
5
  /**
6
6
  * Create a unix-like argument parser to extract flags from the argument list. Can also create help messages.
@@ -49,7 +49,7 @@ class ArgParser {
49
49
  let arg = queue.splice(0, 1)[0];
50
50
  if (arg[0] == "-") {
51
51
  if (arg[1] != "-" && arg.length > 2) {
52
- queue = [...arg.substring(2).split("").map((a2) => `-${a2}`), ...queue];
52
+ queue = [...arg.substring(2).split("").map((a) => `-${a}`), ...queue];
53
53
  arg = `-${arg[1]}`;
54
54
  }
55
55
  const combined = arg.split("=");
@@ -61,9 +61,9 @@ class ArgParser {
61
61
  extras.push(arg);
62
62
  continue;
63
63
  }
64
- const value2 = argDef.default === false ? true : argDef.default === true ? false : queue.splice(queue.findIndex((q) => q[0] != "-"), 1)[0] || argDef.default;
65
- if (value2 == null) parsed["_error"].push(`Option missing value: ${argDef.name || combined[0]}`);
66
- parsed[argDef.name] = value2;
64
+ const value = argDef.default === false ? true : argDef.default === true ? false : queue.splice(queue.findIndex((q) => q[0] != "-"), 1)[0] || argDef.default;
65
+ if (value == null) parsed["_error"].push(`Option missing value: ${argDef.name || combined[0]}`);
66
+ parsed[argDef.name] = value;
67
67
  } else {
68
68
  const c = this.commands.find((command) => command.name == arg);
69
69
  if (!!c) {
@@ -122,17 +122,17 @@ function clean(obj, undefinedOnly = false) {
122
122
  if (Array.isArray(obj)) {
123
123
  obj = obj.filter((o) => o != null);
124
124
  } else {
125
- Object.entries(obj).forEach(([key, value2]) => {
126
- if (undefinedOnly && value2 === void 0 || !undefinedOnly && value2 == null) delete obj[key];
125
+ Object.entries(obj).forEach(([key, value]) => {
126
+ if (undefinedOnly && value === void 0 || !undefinedOnly && value == null) delete obj[key];
127
127
  });
128
128
  }
129
129
  return obj;
130
130
  }
131
- function deepCopy(value2) {
131
+ function deepCopy(value) {
132
132
  try {
133
- return structuredClone(value2);
133
+ return structuredClone(value);
134
134
  } catch {
135
- return JSON.parse(JSONSanitize(value2));
135
+ return JSON.parse(JSONSanitize(value));
136
136
  }
137
137
  }
138
138
  function deepMerge(target, ...sources) {
@@ -148,22 +148,22 @@ function deepMerge(target, ...sources) {
148
148
  });
149
149
  return target;
150
150
  }
151
- function dotNotation(obj, prop2, set) {
152
- if (obj == null || !prop2) return void 0;
153
- return prop2.split(/[.[\]]/g).filter((prop22) => prop22.length).reduce((obj2, prop22, i, arr) => {
154
- if (prop22[0] == '"' || prop22[0] == "'") prop22 = prop22.slice(1, -1);
155
- if (!(obj2 == null ? void 0 : obj2.hasOwnProperty(prop22))) {
151
+ function dotNotation(obj, prop, set) {
152
+ if (obj == null || !prop) return void 0;
153
+ return prop.split(/[.[\]]/g).filter((prop2) => prop2.length).reduce((obj2, prop2, i, arr) => {
154
+ if (prop2[0] == '"' || prop2[0] == "'") prop2 = prop2.slice(1, -1);
155
+ if (!(obj2 == null ? void 0 : obj2.hasOwnProperty(prop2))) {
156
156
  if (set == void 0) return void 0;
157
- obj2[prop22] = {};
157
+ obj2[prop2] = {};
158
158
  }
159
159
  if (set !== void 0 && i == arr.length - 1)
160
- return obj2[prop22] = set;
161
- return obj2[prop22];
160
+ return obj2[prop2] = set;
161
+ return obj2[prop2];
162
162
  }, obj);
163
163
  }
164
164
  function encodeQuery(data) {
165
165
  return Object.entries(data).map(
166
- ([key, value2]) => encodeURIComponent(key) + "=" + encodeURIComponent(value2)
166
+ ([key, value]) => encodeURIComponent(key) + "=" + encodeURIComponent(value)
167
167
  ).join("&");
168
168
  }
169
169
  function flattenObj(obj, parent, result = {}) {
@@ -182,7 +182,7 @@ function flattenObj(obj, parent, result = {}) {
182
182
  }
183
183
  function formData(target) {
184
184
  const data = new FormData();
185
- Object.entries(target).forEach(([key, value2]) => data.append(key, value2));
185
+ Object.entries(target).forEach(([key, value]) => data.append(key, value));
186
186
  return data;
187
187
  }
188
188
  function includes(target, values, allowMissing = false) {
@@ -196,13 +196,13 @@ function includes(target, values, allowMissing = false) {
196
196
  if (type == "function") return target.toString() == values.toString();
197
197
  return target == values;
198
198
  }
199
- function isEqual(a2, b2) {
200
- const ta = typeof a2, tb = typeof b2;
201
- if (ta != "object" || a2 == null || (tb != "object" || b2 == null))
202
- return ta == "function" && tb == "function" ? a2.toString() == b2.toString() : a2 === b2;
203
- const keys = Object.keys(a2);
204
- if (keys.length != Object.keys(b2).length) return false;
205
- return Object.keys(a2).every((key) => isEqual(a2[key], b2[key]));
199
+ function isEqual(a, b) {
200
+ const ta = typeof a, tb = typeof b;
201
+ if (ta != "object" || a == null || (tb != "object" || b == null))
202
+ return ta == "function" && tb == "function" ? a.toString() == b.toString() : a === b;
203
+ const keys = Object.keys(a);
204
+ if (keys.length != Object.keys(b).length) return false;
205
+ return Object.keys(a).every((key) => isEqual(a[key], b[key]));
206
206
  }
207
207
  function mixin(target, constructors) {
208
208
  constructors.forEach((c) => {
@@ -227,39 +227,39 @@ function JSONSerialize(obj) {
227
227
  return obj;
228
228
  }
229
229
  function JSONSanitize(obj, space) {
230
- return JSON.stringify(obj, (key, value2) => {
231
- return value2;
230
+ return JSON.stringify(obj, (key, value) => {
231
+ return value;
232
232
  }, space);
233
233
  }
234
234
  function addUnique(array, el) {
235
235
  if (array.indexOf(el) === -1) array.push(el);
236
236
  return array;
237
237
  }
238
- function arrayDiff(a2, b2) {
238
+ function arrayDiff(a, b) {
239
239
  return makeUnique([
240
- ...a2.filter((v1) => !b2.includes((v2) => isEqual(v1, v2))),
241
- ...b2.filter((v1) => !a2.includes((v2) => isEqual(v1, v2)))
240
+ ...a.filter((v1) => !b.includes((v2) => isEqual(v1, v2))),
241
+ ...b.filter((v1) => !a.includes((v2) => isEqual(v1, v2)))
242
242
  ]);
243
243
  }
244
- function caseInsensitiveSort(prop2) {
245
- return function(a2, b2) {
246
- const aVal = dotNotation(a2, prop2);
247
- const bVal = dotNotation(b2, prop2);
244
+ function caseInsensitiveSort(prop) {
245
+ return function(a, b) {
246
+ const aVal = dotNotation(a, prop);
247
+ const bVal = dotNotation(b, prop);
248
248
  if (typeof aVal !== "string" || typeof bVal !== "string") return 1;
249
249
  return aVal.toLowerCase().localeCompare(bVal.toLowerCase());
250
250
  };
251
251
  }
252
- function findByProp(prop2, value2) {
253
- return (v2) => isEqual(dotNotation(v2, prop2), value2);
252
+ function findByProp(prop, value) {
253
+ return (v) => isEqual(dotNotation(v, prop), value);
254
254
  }
255
255
  function flattenArr(arr, result = []) {
256
256
  arr.forEach((el) => Array.isArray(el) ? flattenArr(el, result) : result.push(el));
257
257
  return result;
258
258
  }
259
- function sortByProp(prop2, reverse = false) {
260
- return function(a2, b2) {
261
- const aVal = dotNotation(a2, prop2);
262
- const bVal = dotNotation(b2, prop2);
259
+ function sortByProp(prop, reverse = false) {
260
+ return function(a, b) {
261
+ const aVal = dotNotation(a, prop);
262
+ const bVal = dotNotation(b, prop);
263
263
  if (typeof aVal == "number" && typeof bVal == "number")
264
264
  return (reverse ? -1 : 1) * (aVal - bVal);
265
265
  if (aVal > bVal) return reverse ? -1 : 1;
@@ -273,8 +273,8 @@ function makeUnique(arr) {
273
273
  }
274
274
  return arr;
275
275
  }
276
- function makeArray(value2) {
277
- return Array.isArray(value2) ? value2 : [value2];
276
+ function makeArray(value) {
277
+ return Array.isArray(value) ? value : [value];
278
278
  }
279
279
  class ASet extends Array {
280
280
  /** Number of elements in set */
@@ -387,7 +387,6 @@ class ASet extends Array {
387
387
  class Cache {
388
388
  /**
389
389
  * Create new cache
390
- *
391
390
  * @param {keyof T} key Default property to use as primary key
392
391
  * @param options
393
392
  */
@@ -397,7 +396,6 @@ class Cache {
397
396
  __publicField(this, "complete", false);
398
397
  /**
399
398
  * Get all cached items
400
- *
401
399
  * @return {T[]} Array of items
402
400
  */
403
401
  __publicField(this, "values", this.all());
@@ -415,24 +413,23 @@ class Cache {
415
413
  }
416
414
  }
417
415
  return new Proxy(this, {
418
- get: (target, prop2) => {
419
- if (prop2 in target) return target[prop2];
420
- return deepCopy(target.store[prop2]);
416
+ get: (target, prop) => {
417
+ if (prop in target) return target[prop];
418
+ return deepCopy(target.store[prop]);
421
419
  },
422
- set: (target, prop2, value2) => {
423
- if (prop2 in target) target[prop2] = value2;
424
- else this.set(prop2, value2);
420
+ set: (target, prop, value) => {
421
+ if (prop in target) target[prop] = value;
422
+ else this.set(prop, value);
425
423
  return true;
426
424
  }
427
425
  });
428
426
  }
429
- getKey(value2) {
427
+ getKey(value) {
430
428
  if (!this.key) throw new Error("No key defined");
431
- return value2[this.key];
429
+ return value[this.key];
432
430
  }
433
431
  /**
434
432
  * Get all cached items
435
- *
436
433
  * @return {T[]} Array of items
437
434
  */
438
435
  all() {
@@ -440,25 +437,24 @@ class Cache {
440
437
  }
441
438
  /**
442
439
  * Add a new item to the cache. Like set, but finds key automatically
443
- *
444
440
  * @param {T} value Item to add to cache
445
441
  * @param {number | undefined} ttl Override default expiry
446
442
  * @return {this}
447
443
  */
448
- add(value2, ttl = this.ttl) {
449
- const key = this.getKey(value2);
450
- this.set(key, value2, ttl);
444
+ add(value, ttl = this.ttl) {
445
+ const key = this.getKey(value);
446
+ this.set(key, value, ttl);
451
447
  return this;
452
448
  }
453
449
  /**
454
450
  * Add several rows to the cache
455
- *
456
451
  * @param {T[]} rows Several items that will be cached using the default key
457
452
  * @param complete Mark cache as complete & reliable, defaults to true
458
453
  * @return {this}
459
454
  */
460
- addAll(rows2, complete = true) {
461
- rows2.forEach((r2) => this.add(r2));
455
+ addAll(rows, complete = true) {
456
+ this.clear();
457
+ rows.forEach((r) => this.add(r));
462
458
  this.complete = complete;
463
459
  return this;
464
460
  }
@@ -470,7 +466,6 @@ class Cache {
470
466
  }
471
467
  /**
472
468
  * Delete an item from the cache
473
- *
474
469
  * @param {K} key Item's primary key
475
470
  */
476
471
  delete(key) {
@@ -495,7 +490,6 @@ class Cache {
495
490
  }
496
491
  /**
497
492
  * Get a list of cached keys
498
- *
499
493
  * @return {K[]} Array of keys
500
494
  */
501
495
  keys() {
@@ -503,7 +497,6 @@ class Cache {
503
497
  }
504
498
  /**
505
499
  * Get map of cached items
506
- *
507
500
  * @return {Record<K, T>}
508
501
  */
509
502
  map() {
@@ -511,14 +504,13 @@ class Cache {
511
504
  }
512
505
  /**
513
506
  * Add an item to the cache manually specifying the key
514
- *
515
507
  * @param {K} key Key item will be cached under
516
508
  * @param {T} value Item to cache
517
509
  * @param {number | undefined} ttl Override default expiry in seconds
518
510
  * @return {this}
519
511
  */
520
- set(key, value2, ttl = this.options.ttl) {
521
- this.store[key] = value2;
512
+ set(key, value, ttl = this.options.ttl) {
513
+ this.store[key] = value;
522
514
  if (this.options.storageKey && this.options.storage)
523
515
  this.options.storage.setItem(this.options.storageKey, JSON.stringify(this.store));
524
516
  if (ttl) setTimeout(() => {
@@ -531,8 +523,8 @@ class Cache {
531
523
  function blackOrWhite(background) {
532
524
  const exploded = background == null ? void 0 : background.match(background.length >= 6 ? /\w\w/g : /\w/g);
533
525
  if (!exploded) return "black";
534
- const [r2, g, b2] = exploded.map((hex) => parseInt(hex, 16));
535
- const luminance = (0.299 * r2 + 0.587 * g + 0.114 * b2) / 255;
526
+ const [r, g, b] = exploded.map((hex) => parseInt(hex, 16));
527
+ const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
536
528
  return luminance > 0.5 ? "black" : "white";
537
529
  }
538
530
  const LETTER_LIST = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
@@ -609,16 +601,16 @@ function strSplice(str, start, deleteCount, insert = "") {
609
601
  const after = str.slice(start + deleteCount);
610
602
  return before + insert + after;
611
603
  }
612
- function matchAll(value2, regex2) {
613
- if (typeof regex2 === "string") {
614
- regex2 = new RegExp(regex2, "g");
604
+ function matchAll(value, regex) {
605
+ if (typeof regex === "string") {
606
+ regex = new RegExp(regex, "g");
615
607
  }
616
- if (!regex2.global) {
608
+ if (!regex.global) {
617
609
  throw new TypeError("Regular expression must be global.");
618
610
  }
619
611
  let ret = [];
620
612
  let match;
621
- while ((match = regex2.exec(value2)) !== null) {
613
+ while ((match = regex.exec(value)) !== null) {
622
614
  ret.push(match);
623
615
  }
624
616
  return ret;
@@ -646,11 +638,11 @@ function parseUrl(url) {
646
638
  return groups;
647
639
  }
648
640
  function md5(d) {
649
- var r2 = M(V(Y(X(d), 8 * d.length)));
650
- return r2.toLowerCase();
641
+ var r = M(V(Y(X(d), 8 * d.length)));
642
+ return r.toLowerCase();
651
643
  }
652
644
  function M(d) {
653
- for (var _, m = "0123456789ABCDEF", f = "", r2 = 0; r2 < d.length; r2++) _ = d.charCodeAt(r2), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
645
+ for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++) _ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
654
646
  return f;
655
647
  }
656
648
  function X(d) {
@@ -664,26 +656,26 @@ function V(d) {
664
656
  }
665
657
  function Y(d, _) {
666
658
  d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
667
- for (var m = 1732584193, f = -271733879, r2 = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
668
- var h = m, t = f, g = r2, e = i;
669
- 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, r2 = md5_ff(r2, i = md5_ff(i, m = md5_ff(m, f, r2, i, d[n + 0], 7, -680876936), f, r2, d[n + 1], 12, -389564586), m, f, d[n + 2], 17, 606105819), i, m, d[n + 3], 22, -1044525330), r2 = md5_ff(r2, i = md5_ff(i, m = md5_ff(m, f, r2, i, d[n + 4], 7, -176418897), f, r2, d[n + 5], 12, 1200080426), m, f, d[n + 6], 17, -1473231341), i, m, d[n + 7], 22, -45705983), r2 = md5_ff(r2, i = md5_ff(i, m = md5_ff(m, f, r2, i, d[n + 8], 7, 1770035416), f, r2, d[n + 9], 12, -1958414417), m, f, d[n + 10], 17, -42063), i, m, d[n + 11], 22, -1990404162), r2 = md5_ff(r2, i = md5_ff(i, m = md5_ff(m, f, r2, i, d[n + 12], 7, 1804603682), f, r2, d[n + 13], 12, -40341101), m, f, d[n + 14], 17, -1502002290), i, m, d[n + 15], 22, 1236535329), r2 = md5_gg(r2, i = md5_gg(i, m = md5_gg(m, f, r2, i, d[n + 1], 5, -165796510), f, r2, d[n + 6], 9, -1069501632), m, f, d[n + 11], 14, 643717713), i, m, d[n + 0], 20, -373897302), r2 = md5_gg(r2, i = md5_gg(i, m = md5_gg(m, f, r2, i, d[n + 5], 5, -701558691), f, r2, d[n + 10], 9, 38016083), m, f, d[n + 15], 14, -660478335), i, m, d[n + 4], 20, -405537848), r2 = md5_gg(r2, i = md5_gg(i, m = md5_gg(m, f, r2, i, d[n + 9], 5, 568446438), f, r2, d[n + 14], 9, -1019803690), m, f, d[n + 3], 14, -187363961), i, m, d[n + 8], 20, 1163531501), r2 = md5_gg(r2, i = md5_gg(i, m = md5_gg(m, f, r2, i, d[n + 13], 5, -1444681467), f, r2, d[n + 2], 9, -51403784), m, f, d[n + 7], 14, 1735328473), i, m, d[n + 12], 20, -1926607734), r2 = md5_hh(r2, i = md5_hh(i, m = md5_hh(m, f, r2, i, d[n + 5], 4, -378558), f, r2, d[n + 8], 11, -2022574463), m, f, d[n + 11], 16, 1839030562), i, m, d[n + 14], 23, -35309556), r2 = md5_hh(r2, i = md5_hh(i, m = md5_hh(m, f, r2, i, d[n + 1], 4, -1530992060), f, r2, d[n + 4], 11, 1272893353), m, f, d[n + 7], 16, -155497632), i, m, d[n + 10], 23, -1094730640), r2 = md5_hh(r2, i = md5_hh(i, m = md5_hh(m, f, r2, i, d[n + 13], 4, 681279174), f, r2, d[n + 0], 11, -358537222), m, f, d[n + 3], 16, -722521979), i, m, d[n + 6], 23, 76029189), r2 = md5_hh(r2, i = md5_hh(i, m = md5_hh(m, f, r2, i, d[n + 9], 4, -640364487), f, r2, d[n + 12], 11, -421815835), m, f, d[n + 15], 16, 530742520), i, m, d[n + 2], 23, -995338651), r2 = md5_ii(r2, i = md5_ii(i, m = md5_ii(m, f, r2, i, d[n + 0], 6, -198630844), f, r2, d[n + 7], 10, 1126891415), m, f, d[n + 14], 15, -1416354905), i, m, d[n + 5], 21, -57434055), r2 = md5_ii(r2, i = md5_ii(i, m = md5_ii(m, f, r2, i, d[n + 12], 6, 1700485571), f, r2, d[n + 3], 10, -1894986606), m, f, d[n + 10], 15, -1051523), i, m, d[n + 1], 21, -2054922799), r2 = md5_ii(r2, i = md5_ii(i, m = md5_ii(m, f, r2, i, d[n + 8], 6, 1873313359), f, r2, d[n + 15], 10, -30611744), m, f, d[n + 6], 15, -1560198380), i, m, d[n + 13], 21, 1309151649), r2 = md5_ii(r2, i = md5_ii(i, m = md5_ii(m, f, r2, i, d[n + 4], 6, -145523070), f, r2, 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), r2 = safe_add(r2, g), i = safe_add(i, e);
659
+ for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
660
+ var h = m, t = f, g = r, e = i;
661
+ 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);
670
662
  }
671
- return Array(m, f, r2, i);
663
+ return Array(m, f, r, i);
672
664
  }
673
- function md5_cmn(d, _, m, f, r2, i) {
674
- return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r2), m);
665
+ function md5_cmn(d, _, m, f, r, i) {
666
+ return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m);
675
667
  }
676
- function md5_ff(d, _, m, f, r2, i, n) {
677
- return md5_cmn(_ & m | ~_ & f, d, _, r2, i, n);
668
+ function md5_ff(d, _, m, f, r, i, n) {
669
+ return md5_cmn(_ & m | ~_ & f, d, _, r, i, n);
678
670
  }
679
- function md5_gg(d, _, m, f, r2, i, n) {
680
- return md5_cmn(_ & f | m & ~f, d, _, r2, i, n);
671
+ function md5_gg(d, _, m, f, r, i, n) {
672
+ return md5_cmn(_ & f | m & ~f, d, _, r, i, n);
681
673
  }
682
- function md5_hh(d, _, m, f, r2, i, n) {
683
- return md5_cmn(_ ^ m ^ f, d, _, r2, i, n);
674
+ function md5_hh(d, _, m, f, r, i, n) {
675
+ return md5_cmn(_ ^ m ^ f, d, _, r, i, n);
684
676
  }
685
- function md5_ii(d, _, m, f, r2, i, n) {
686
- return md5_cmn(m ^ (_ | ~f), d, _, r2, i, n);
677
+ function md5_ii(d, _, m, f, r, i, n) {
678
+ return md5_cmn(m ^ (_ | ~f), d, _, r, i, n);
687
679
  }
688
680
  function safe_add(d, _) {
689
681
  var m = (65535 & d) + (65535 & _);
@@ -716,20 +708,20 @@ function fromCsv(csv, hasHeaders = true) {
716
708
  columns.push(current.trim());
717
709
  return columns.map((col) => col.replace(/^"|"$/g, "").replace(/""/g, '"'));
718
710
  }
719
- const rows2 = [];
711
+ const rows = [];
720
712
  let currentRow = "", inQuotes = false;
721
713
  for (const char of csv.replace(/\r\n/g, "\n")) {
722
714
  if (char === '"') inQuotes = !inQuotes;
723
715
  if (char === "\n" && !inQuotes) {
724
- rows2.push(currentRow.trim());
716
+ rows.push(currentRow.trim());
725
717
  currentRow = "";
726
718
  } else currentRow += char;
727
719
  }
728
- if (currentRow) rows2.push(currentRow.trim());
729
- let headers = hasHeaders ? rows2.splice(0, 1)[0] : null;
720
+ if (currentRow) rows.push(currentRow.trim());
721
+ let headers = hasHeaders ? rows.splice(0, 1)[0] : null;
730
722
  if (headers) headers = (_a = headers.match(/(?:[^,"']+|"(?:[^"]|"")*"|'(?:[^']|'')*')+/g)) == null ? void 0 : _a.map((h) => h.trim());
731
- return rows2.map((r2) => {
732
- const props = parseLine(r2);
723
+ return rows.map((r) => {
724
+ const props = parseLine(r);
733
725
  const h = headers || Array(props.length).fill(null).map((_, i) => {
734
726
  let letter = "";
735
727
  const first = i / 26;
@@ -749,18 +741,18 @@ function toCsv(target, flatten = true) {
749
741
  return [
750
742
  headers.join(","),
751
743
  ...t.map((row) => headers.map((h) => {
752
- const value2 = dotNotation(row, h);
753
- if (value2 == null) return "";
754
- if (typeof value2 == "object") return `"${JSONSanitize(value2).replaceAll('"', '""')}"`;
755
- if (typeof value2 == "string" && /[\n",]/g.test(value2)) return `"${value2.replaceAll('"', '""')}"`;
756
- return value2;
744
+ const value = dotNotation(row, h);
745
+ if (value == null) return "";
746
+ if (typeof value == "object") return `"${JSONSanitize(value).replaceAll('"', '""')}"`;
747
+ if (typeof value == "string" && /[\n",]/g.test(value)) return `"${value.replaceAll('"', '""')}"`;
748
+ return value;
757
749
  }).join(","))
758
750
  ].join("\n");
759
751
  }
760
752
  class PromiseProgress extends Promise {
761
753
  constructor(executor) {
762
754
  super((resolve, reject) => executor(
763
- (value2) => resolve(value2),
755
+ (value) => resolve(value),
764
756
  (reason) => reject(reason),
765
757
  (progress) => this.progress = progress
766
758
  ));
@@ -770,10 +762,10 @@ class PromiseProgress extends Promise {
770
762
  get progress() {
771
763
  return this._progress;
772
764
  }
773
- set progress(p2) {
774
- if (p2 == this._progress) return;
775
- this._progress = p2;
776
- this.listeners.forEach((l) => l(p2));
765
+ set progress(p) {
766
+ if (p == this._progress) return;
767
+ this._progress = p;
768
+ this.listeners.forEach((l) => l(p));
777
769
  }
778
770
  static from(promise) {
779
771
  if (promise instanceof PromiseProgress) return promise;
@@ -781,7 +773,7 @@ class PromiseProgress extends Promise {
781
773
  }
782
774
  from(promise) {
783
775
  const newPromise = PromiseProgress.from(promise);
784
- this.onProgress((p2) => newPromise.progress = p2);
776
+ this.onProgress((p) => newPromise.progress = p);
785
777
  return newPromise;
786
778
  }
787
779
  onProgress(callback) {
@@ -801,14 +793,14 @@ class PromiseProgress extends Promise {
801
793
  }
802
794
  function adjustedInterval(cb, ms) {
803
795
  let cancel = false, timeout = null;
804
- const p2 = async () => {
796
+ const p = async () => {
805
797
  if (cancel) return;
806
798
  const start = (/* @__PURE__ */ new Date()).getTime();
807
799
  await cb();
808
800
  const end = (/* @__PURE__ */ new Date()).getTime();
809
- timeout = setTimeout(() => p2(), ms - (end - start) || 1);
801
+ timeout = setTimeout(() => p(), ms - (end - start) || 1);
810
802
  };
811
- p2();
803
+ p();
812
804
  return () => {
813
805
  cancel = true;
814
806
  if (timeout) clearTimeout(timeout);
@@ -878,7 +870,7 @@ function formatDate(format = "YYYY-MM-DD H:mm", date = /* @__PURE__ */ new Date(
878
870
  const minutes = offset % 60;
879
871
  return (offset > 0 ? "-" : "") + `${hours}:${minutes.toString().padStart(2, "0")}`;
880
872
  }
881
- if (typeof date == "number" || typeof date == "string") date = new Date(date);
873
+ if (typeof date == "number" || typeof date == "string" || date == null) date = new Date(date);
882
874
  let t;
883
875
  if (tz == null) tz = -(date.getTimezoneOffset() / 60);
884
876
  t = timezones.find((t2) => isNaN(tz) ? t2[0] == tz : t2[1] == tz);
@@ -934,12 +926,12 @@ function downloadFile(blob, name) {
934
926
  URL.revokeObjectURL(url);
935
927
  }
936
928
  function downloadUrl(href, name) {
937
- const a2 = document.createElement("a");
938
- a2.href = href;
939
- a2.download = name || href.split("/").pop();
940
- document.body.appendChild(a2);
941
- a2.click();
942
- document.body.removeChild(a2);
929
+ const a = document.createElement("a");
930
+ a.href = href;
931
+ a.download = name || href.split("/").pop();
932
+ document.body.appendChild(a);
933
+ a.click();
934
+ document.body.removeChild(a);
943
935
  }
944
936
  function fileBrowser(options = {}) {
945
937
  return new Promise((res) => {
@@ -980,7 +972,7 @@ function uploadWithProgress(options) {
980
972
  xhr.addEventListener("error", () => rej(JSONAttemptParse(xhr.responseText)));
981
973
  xhr.addEventListener("timeout", () => rej({ error: "Request timed out" }));
982
974
  xhr.open("POST", options.url);
983
- Object.entries(options.headers || {}).forEach(([key, value2]) => xhr.setRequestHeader(key, value2));
975
+ Object.entries(options.headers || {}).forEach(([key, value]) => xhr.setRequestHeader(key, value));
984
976
  xhr.send(formData2);
985
977
  });
986
978
  }
@@ -1314,7 +1306,7 @@ const _Http = class _Http {
1314
1306
  __publicField(_Http, "interceptors", {});
1315
1307
  __publicField(_Http, "headers", {});
1316
1308
  let Http = _Http;
1317
- function jwtDecode(token) {
1309
+ function decodeJwt(token) {
1318
1310
  const base64 = token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/");
1319
1311
  return JSONAttemptParse(decodeURIComponent(atob(base64).split("").map(function(c) {
1320
1312
  return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
@@ -1410,9 +1402,9 @@ const _Logger = class _Logger extends TypedEmitter {
1410
1402
  __publicField(_Logger, "LOG_LEVEL", 4);
1411
1403
  let Logger = _Logger;
1412
1404
  function dec2Frac(num) {
1413
- const gcd = (a2, b2) => {
1414
- if (b2 < 1e-7) return a2;
1415
- return gcd(b2, ~~(a2 % b2));
1405
+ const gcd = (a, b) => {
1406
+ if (b < 1e-7) return a;
1407
+ return gcd(b, ~~(a % b));
1416
1408
  };
1417
1409
  const len = num.toString().length - 2;
1418
1410
  let denominator = Math.pow(10, len);
@@ -1434,8 +1426,8 @@ function gravatar(email, def = "mp") {
1434
1426
  if (!email) return "";
1435
1427
  return `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;
1436
1428
  }
1437
- function escapeRegex(value2) {
1438
- return value2.replace(/[.*+?^${}()|\[\]\\]/g, "\\$&");
1429
+ function escapeRegex(value) {
1430
+ return value.replace(/[.*+?^${}()|\[\]\\]/g, "\\$&");
1439
1431
  }
1440
1432
  function PE(str, ...args) {
1441
1433
  const combined = [];
@@ -1470,15 +1462,15 @@ class PathEvent {
1470
1462
  __publicField(this, "methods");
1471
1463
  var _a;
1472
1464
  if (typeof Event == "object") return Object.assign(this, Event);
1473
- let [p2, scope, method] = Event.replaceAll(/\/{2,}/g, "/").split(":");
1465
+ let [p, scope, method] = Event.replaceAll(/\/{2,}/g, "/").split(":");
1474
1466
  if (!method) method = scope || "*";
1475
- if (p2 == "*" || !p2 && method == "*") {
1476
- p2 = "";
1467
+ if (p == "*" || !p && method == "*") {
1468
+ p = "";
1477
1469
  method = "*";
1478
1470
  }
1479
- let temp = p2.split("/").filter((p22) => !!p22);
1471
+ let temp = p.split("/").filter((p2) => !!p2);
1480
1472
  this.module = ((_a = temp.splice(0, 1)[0]) == null ? void 0 : _a.toLowerCase()) || "";
1481
- this.fullPath = p2;
1473
+ this.fullPath = p;
1482
1474
  this.path = temp.join("/");
1483
1475
  this.name = temp.pop() || "";
1484
1476
  this.methods = new ASet(method.split(""));
@@ -1487,43 +1479,43 @@ class PathEvent {
1487
1479
  get all() {
1488
1480
  return this.methods.has("*");
1489
1481
  }
1490
- set all(v2) {
1491
- v2 ? new ASet(["*"]) : this.methods.delete("*");
1482
+ set all(v) {
1483
+ v ? new ASet(["*"]) : this.methods.delete("*");
1492
1484
  }
1493
1485
  /** None specified */
1494
1486
  get none() {
1495
1487
  return this.methods.has("n");
1496
1488
  }
1497
- set none(v2) {
1498
- v2 ? this.methods = new ASet(["n"]) : this.methods.delete("n");
1489
+ set none(v) {
1490
+ v ? this.methods = new ASet(["n"]) : this.methods.delete("n");
1499
1491
  }
1500
1492
  /** Create method specified */
1501
1493
  get create() {
1502
1494
  return !this.methods.has("n") && (this.methods.has("*") || this.methods.has("c"));
1503
1495
  }
1504
- set create(v2) {
1505
- v2 ? this.methods.delete("n").add("c") : this.methods.delete("c");
1496
+ set create(v) {
1497
+ v ? this.methods.delete("n").add("c") : this.methods.delete("c");
1506
1498
  }
1507
1499
  /** Read method specified */
1508
1500
  get read() {
1509
1501
  return !this.methods.has("n") && (this.methods.has("*") || this.methods.has("r"));
1510
1502
  }
1511
- set read(v2) {
1512
- v2 ? this.methods.delete("n").add("r") : this.methods.delete("r");
1503
+ set read(v) {
1504
+ v ? this.methods.delete("n").add("r") : this.methods.delete("r");
1513
1505
  }
1514
1506
  /** Update method specified */
1515
1507
  get update() {
1516
1508
  return !this.methods.has("n") && (this.methods.has("*") || this.methods.has("u"));
1517
1509
  }
1518
- set update(v2) {
1519
- v2 ? this.methods.delete("n").add("u") : this.methods.delete("u");
1510
+ set update(v) {
1511
+ v ? this.methods.delete("n").add("u") : this.methods.delete("u");
1520
1512
  }
1521
1513
  /** Delete method specified */
1522
1514
  get delete() {
1523
1515
  return !this.methods.has("n") && (this.methods.has("*") || this.methods.has("d"));
1524
1516
  }
1525
- set delete(v2) {
1526
- v2 ? this.methods.delete("n").add("d") : this.methods.delete("d");
1517
+ set delete(v) {
1518
+ v ? this.methods.delete("n").add("d") : this.methods.delete("d");
1527
1519
  }
1528
1520
  /**
1529
1521
  * Combine multiple events into one parsed object. Longest path takes precedent, but all subsequent methods are
@@ -1534,14 +1526,14 @@ class PathEvent {
1534
1526
  */
1535
1527
  static combine(...paths) {
1536
1528
  let hitNone = false;
1537
- const combined = paths.map((p2) => new PathEvent(p2)).toSorted((p1, p2) => {
1529
+ const combined = paths.map((p) => new PathEvent(p)).toSorted((p1, p2) => {
1538
1530
  const l1 = p1.fullPath.length, l2 = p2.fullPath.length;
1539
1531
  return l1 < l2 ? 1 : l1 > l2 ? -1 : 0;
1540
- }).reduce((acc, p2) => {
1541
- if (p2.none) hitNone = true;
1542
- if (!acc) return p2;
1532
+ }).reduce((acc, p) => {
1533
+ if (p.none) hitNone = true;
1534
+ if (!acc) return p;
1543
1535
  if (hitNone) return acc;
1544
- acc.methods = [...acc.methods, ...p2.methods];
1536
+ acc.methods = [...acc.methods, ...p.methods];
1545
1537
  return acc;
1546
1538
  }, null);
1547
1539
  combined.methods = new ASet(combined.methods);
@@ -1572,12 +1564,12 @@ class PathEvent {
1572
1564
  static has(target, ...has) {
1573
1565
  const parsedRequired = makeArray(has).map((pe) => new PathEvent(pe));
1574
1566
  const parsedTarget = makeArray(target).map((pe) => new PathEvent(pe));
1575
- return !!parsedRequired.find((r2) => {
1576
- if (!r2.fullPath && r2.all) return true;
1577
- const filtered = parsedTarget.filter((p2) => r2.fullPath.startsWith(p2.fullPath));
1567
+ return !!parsedRequired.find((r) => {
1568
+ if (!r.fullPath && r.all) return true;
1569
+ const filtered = parsedTarget.filter((p) => r.fullPath.startsWith(p.fullPath));
1578
1570
  if (!filtered.length) return false;
1579
1571
  const combined = PathEvent.combine(...filtered);
1580
- return !combined.none && (combined.all || r2.all) || combined.methods.intersection(r2.methods).length;
1572
+ return !combined.none && (combined.all || r.all) || combined.methods.intersection(r.methods).length;
1581
1573
  });
1582
1574
  }
1583
1575
  /**
@@ -1616,10 +1608,10 @@ class PathEvent {
1616
1608
  * @return {string} String representation of Event
1617
1609
  */
1618
1610
  static toString(path, methods) {
1619
- let p2 = makeArray(path).filter((p22) => p22 != null).join("/");
1620
- p2 = p2 == null ? void 0 : p2.trim().replaceAll(/\/{2,}/g, "/").replaceAll(/(^\/|\/$)/g, "");
1621
- if (methods == null ? void 0 : methods.length) p2 += `:${makeArray(methods).map((m) => m.toLowerCase()).join("")}`;
1622
- return p2;
1611
+ let p = makeArray(path).filter((p2) => p2 != null).join("/");
1612
+ p = p == null ? void 0 : p.trim().replaceAll(/\/{2,}/g, "/").replaceAll(/(^\/|\/$)/g, "");
1613
+ if (methods == null ? void 0 : methods.length) p += `:${makeArray(methods).map((m) => m.toLowerCase()).join("")}`;
1614
+ return p;
1623
1615
  }
1624
1616
  /**
1625
1617
  * Filter a set of paths based on this event
@@ -1667,36 +1659,57 @@ class PathEventEmitter {
1667
1659
  emitter.on("*", (event, ...args) => this.emit(event, ...args));
1668
1660
  }
1669
1661
  }
1670
- function search(rows, search, regex, transform = (r2) => r2) {
1662
+ function search(rows, search2, regex, transform = (r) => r) {
1671
1663
  if (!rows) return [];
1672
1664
  return rows.filter((r) => {
1673
1665
  const value = transform(r);
1674
- if (!search) return true;
1666
+ if (!search2) return true;
1675
1667
  if (regex) {
1676
- return !!Object.values(value).filter((v2) => {
1668
+ return !!Object.values(value).filter((v) => {
1677
1669
  try {
1678
- return RegExp(search, "gm").test(v2.toString());
1670
+ return RegExp(search2, "gm").test(v.toString());
1679
1671
  } catch {
1680
1672
  return false;
1681
1673
  }
1682
1674
  }).length;
1675
+ } else {
1676
+ return testCondition(search2, r);
1683
1677
  }
1684
- const or = search.split("||").map((p2) => p2.trim()).filter((p2) => !!p2);
1685
- return -1 != or.findIndex((p) => {
1686
- const and = p.split("&&").map((p2) => p2.trim()).filter((p2) => !!p2);
1687
- return and.filter((p) => {
1688
- const prop = /(\w+)\s*(==?|!=|>=|>|<=|<)\s*(\w+)/g.exec(p);
1689
- if (prop) {
1690
- const a = JSON.stringify(JSONAttemptParse(dotNotation(value, prop[1])));
1691
- const operator = prop[2] == "=" ? "==" : prop[2];
1692
- const b = JSON.stringify(JSONAttemptParse(prop[3]));
1693
- return eval(`${a} ${operator} ${b}`);
1694
- }
1695
- const v = Object.values(value).join("");
1696
- if (/[A-Z]/g.test(search)) return v.includes(p);
1697
- return v.toLowerCase().includes(p);
1698
- }).length == and.length;
1699
- });
1678
+ });
1679
+ }
1680
+ function testCondition(condition, row) {
1681
+ const evalBoolean = (a, op, b) => {
1682
+ switch (op) {
1683
+ case "=":
1684
+ case "==":
1685
+ return a == b;
1686
+ case "!=":
1687
+ return a != b;
1688
+ case ">":
1689
+ return a > b;
1690
+ case ">=":
1691
+ return a >= b;
1692
+ case "<":
1693
+ return a < b;
1694
+ case "<=":
1695
+ return a <= b;
1696
+ default:
1697
+ return false;
1698
+ }
1699
+ };
1700
+ const or = condition.split("||").map((p) => p.trim()).filter((p) => !!p);
1701
+ return -1 != or.findIndex((p) => {
1702
+ const and = p.split("&&").map((p2) => p2.trim()).filter((p2) => !!p2);
1703
+ return and.filter((p2) => {
1704
+ const prop = /(\S+)\s*(==?|!=|>=|>|<=|<)\s*(\S+)/g.exec(p2);
1705
+ if (prop) {
1706
+ const key = Object.keys(row).find((k) => k.toLowerCase() == prop[1].toLowerCase());
1707
+ return evalBoolean(dotNotation(row, key || prop[1]), prop[2], JSONAttemptParse(prop[3]));
1708
+ }
1709
+ const v = Object.values(row).map((v2) => typeof v2 == "object" && v2 != null ? JSON.stringify(v2) : v2).join("");
1710
+ if (/[A-Z]/g.test(condition)) return v.includes(p2);
1711
+ return v.toLowerCase().includes(p2);
1712
+ }).length == and.length;
1700
1713
  });
1701
1714
  }
1702
1715
  function typeKeys() {
@@ -1747,6 +1760,7 @@ export {
1747
1760
  caseInsensitiveSort,
1748
1761
  clean,
1749
1762
  dec2Frac,
1763
+ decodeJwt,
1750
1764
  deepCopy,
1751
1765
  deepMerge,
1752
1766
  dotNotation,
@@ -1771,7 +1785,6 @@ export {
1771
1785
  insertAt,
1772
1786
  instantInterval,
1773
1787
  isEqual,
1774
- jwtDecode,
1775
1788
  kebabCase,
1776
1789
  makeArray,
1777
1790
  makeUnique,
@@ -1790,6 +1803,7 @@ export {
1790
1803
  snakeCase,
1791
1804
  sortByProp,
1792
1805
  strSplice,
1806
+ testCondition,
1793
1807
  timeUntil,
1794
1808
  timestampFilename,
1795
1809
  toCsv,