@ztimson/utils 0.16.3 → 0.16.5

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
@@ -214,21 +214,30 @@ class A extends Array {
214
214
  return new A([...this, ...t]);
215
215
  }
216
216
  }
217
- class Nt extends Map {
217
+ class Nt {
218
218
  /**
219
219
  * Create new cache
220
220
  *
221
221
  * @param {keyof T} key Default property to use as primary key
222
222
  * @param {number} ttl Default expiry in milliseconds
223
223
  */
224
- constructor(e, n) {
225
- super();
224
+ constructor(t, e) {
225
+ c(this, "store", {});
226
226
  /** Whether cache is complete */
227
227
  c(this, "complete", !1);
228
- this.key = e, this.ttl = n;
228
+ /**
229
+ * Get all cached items
230
+ *
231
+ * @return {T[]} Array of items
232
+ */
233
+ c(this, "values", this.all());
234
+ return this.key = t, this.ttl = e, new Proxy(this, {
235
+ get: (n, o) => o in n ? n[o] : n.store[o],
236
+ set: (n, o, s) => (o in n ? n[o] = s : n.store[o] = s, !0)
237
+ });
229
238
  }
230
- getKey(e) {
231
- return e[this.key];
239
+ getKey(t) {
240
+ return t[this.key];
232
241
  }
233
242
  /**
234
243
  * Get all cached items
@@ -236,7 +245,7 @@ class Nt extends Map {
236
245
  * @return {T[]} Array of items
237
246
  */
238
247
  all() {
239
- return Array.from(this.values());
248
+ return Object.values(this.store);
240
249
  }
241
250
  /**
242
251
  * Add a new item to the cache. Like set, but finds key automatically
@@ -245,9 +254,9 @@ class Nt extends Map {
245
254
  * @param {number | undefined} ttl Override default expiry
246
255
  * @return {this}
247
256
  */
248
- add(e, n = this.ttl) {
249
- const o = this.getKey(e);
250
- return this.set(o, e, n), this;
257
+ add(t, e = this.ttl) {
258
+ const n = this.getKey(t);
259
+ return this.set(n, t, e), this;
251
260
  }
252
261
  /**
253
262
  * Add several rows to the cache
@@ -256,20 +265,44 @@ class Nt extends Map {
256
265
  * @param complete Mark cache as complete & reliable, defaults to true
257
266
  * @return {this}
258
267
  */
259
- addAll(e, n = !0) {
260
- return e.forEach((o) => this.add(o)), this.complete = n, this;
268
+ addAll(t, e = !0) {
269
+ return t.forEach((n) => this.add(n)), this.complete = e, this;
270
+ }
271
+ /**
272
+ * Delete an item from the cache
273
+ *
274
+ * @param {K} key Item's primary key
275
+ */
276
+ delete(t) {
277
+ delete this.store[t];
278
+ }
279
+ /**
280
+ * Return cache as an array of key-value pairs
281
+ * @return {[K, T][]} Key-value pairs array
282
+ */
283
+ entries() {
284
+ return Object.entries(this.store);
285
+ }
286
+ /**
287
+ * Get a list of cached keys
288
+ *
289
+ * @return {K[]} Array of keys
290
+ */
291
+ keys() {
292
+ return Object.keys(this.store);
261
293
  }
262
294
  /**
263
295
  * Add an item to the cache manually specifying the key
296
+ *
264
297
  * @param {K} key Key item will be cached under
265
298
  * @param {T} value Item to cache
266
299
  * @param {number | undefined} ttl Override default expiry
267
300
  * @return {this}
268
301
  */
269
- set(e, n, o = this.ttl) {
270
- return super.set(e, n), o && setTimeout(() => {
271
- this.complete = !1, super.delete(e);
272
- }, o), this;
302
+ set(t, e, n = this.ttl) {
303
+ return this.store[t] = e, n && setTimeout(() => {
304
+ this.complete = !1, this.delete(t);
305
+ }, n), this;
273
306
  }
274
307
  }
275
308
  function Tt(r, t = !0) {
@@ -322,7 +355,7 @@ class E extends Promise {
322
355
  return this.from(super.finally(e));
323
356
  }
324
357
  }
325
- function Mt(r, t) {
358
+ function It(r, t) {
326
359
  r instanceof Blob || (r = new Blob(ut(r)));
327
360
  const e = URL.createObjectURL(r);
328
361
  at(e, t), URL.revokeObjectURL(e);
@@ -331,7 +364,7 @@ function at(r, t) {
331
364
  const e = document.createElement("a");
332
365
  e.href = r, e.download = t || r.split("/").pop(), document.body.appendChild(e), e.click(), document.body.removeChild(e);
333
366
  }
334
- function It(r = {}) {
367
+ function Mt(r = {}) {
335
368
  return new Promise((t) => {
336
369
  const e = document.createElement("input");
337
370
  e.type = "file", e.accept = r.accept || "*", e.style.display = "none", e.multiple = !!r.multiple, e.onblur = e.onchange = async () => {
@@ -339,12 +372,12 @@ function It(r = {}) {
339
372
  }, document.body.appendChild(e), e.click();
340
373
  });
341
374
  }
342
- function Dt(r, t = /* @__PURE__ */ new Date()) {
375
+ function jt(r, t = /* @__PURE__ */ new Date()) {
343
376
  (typeof t == "number" || typeof t == "string") && (t = new Date(t));
344
377
  const e = `${t.getFullYear()}-${(t.getMonth() + 1).toString().padStart(2, "0")}-${t.getDate().toString().padStart(2, "0")}_${t.getHours().toString().padStart(2, "0")}-${t.getMinutes().toString().padStart(2, "0")}-${t.getSeconds().toString().padStart(2, "0")}`;
345
378
  return r ? r.replace("{{TIMESTAMP}}", e) : e;
346
379
  }
347
- function jt(r) {
380
+ function Dt(r) {
348
381
  return new E((t, e, n) => {
349
382
  const o = new XMLHttpRequest(), s = new FormData();
350
383
  r.files.forEach((i) => s.append("file", i)), o.withCredentials = !!r.withCredentials, o.upload.addEventListener("progress", (i) => i.lengthComputable ? n(i.loaded / i.total) : null), o.addEventListener("loadend", () => t(U(o.responseText))), o.addEventListener("error", () => e(U(o.responseText))), o.addEventListener("timeout", () => e({ error: "Request timed out" })), o.open("POST", r.url), Object.entries(r.headers || {}).forEach(([i, y]) => o.setRequestHeader(i, y)), o.send(s);
@@ -600,18 +633,18 @@ const w = class w {
600
633
  method: t.method || (t.body ? "POST" : "GET"),
601
634
  body: t.body
602
635
  }).then(async (u) => {
603
- var j, k;
636
+ var D, k;
604
637
  for (let a of [...Object.values(w.interceptors), ...Object.values(this.interceptors)])
605
638
  await new Promise((O) => a(u, () => O()));
606
639
  const R = u.headers.get("Content-Length"), C = R ? parseInt(R, 10) : 0;
607
- let D = 0;
608
- const N = (j = u.body) == null ? void 0 : j.getReader(), et = new ReadableStream({
640
+ let j = 0;
641
+ const N = (D = u.body) == null ? void 0 : D.getReader(), et = new ReadableStream({
609
642
  start(a) {
610
643
  function O() {
611
644
  N == null || N.read().then((B) => {
612
645
  if (B.done)
613
646
  return a.close();
614
- D += B.value.byteLength, y(D / C), a.enqueue(B.value), O();
647
+ j += B.value.byteLength, y(j / C), a.enqueue(B.value), O();
615
648
  }).catch((B) => a.error(B));
616
649
  }
617
650
  O();
@@ -627,7 +660,7 @@ const w = class w {
627
660
  }
628
661
  };
629
662
  c(w, "interceptors", {}), c(w, "headers", {});
630
- let q = w;
663
+ let P = w;
631
664
  const S = {
632
665
  CLEAR: "\x1B[0m",
633
666
  BRIGHT: "\x1B[1m",
@@ -712,7 +745,7 @@ const g = class g extends v {
712
745
  }
713
746
  };
714
747
  c(g, "LOG_LEVEL", 4);
715
- let P = g;
748
+ let q = g;
716
749
  function Ut(r) {
717
750
  const t = (y, u) => u < 1e-7 ? y : t(u, ~~(y % u)), e = r.toString().length - 2;
718
751
  let n = Math.pow(10, e), o = r * n;
@@ -721,13 +754,13 @@ function Ut(r) {
721
754
  const i = ~~(o / n);
722
755
  return o -= i * n, `${i ? i + " " : ""}${~~o}/${~~n}`;
723
756
  }
724
- function qt(r) {
757
+ function Pt(r) {
725
758
  let t = r.split(" ");
726
759
  const e = t.length == 2 ? Number(t[0]) : 0;
727
760
  return t = t.pop().split("/"), e + Number(t[0]) / Number(t[1]);
728
761
  }
729
- const T = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", M = "0123456789", I = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/", ft = T + M + I;
730
- function Pt(r, t = 2) {
762
+ const T = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", I = "0123456789", M = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/", ht = T + I + M;
763
+ function qt(r, t = 2) {
731
764
  if (r === 0)
732
765
  return "0 Bytes";
733
766
  const e = 1024, n = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"], o = Math.floor(Math.log(r) / Math.log(e));
@@ -748,7 +781,7 @@ function Yt(r, t, e = " ", n = !0) {
748
781
  function Ht(r) {
749
782
  return Array(r).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
750
783
  }
751
- function Wt(r, t = ft) {
784
+ function Wt(r, t = ht) {
752
785
  return Array(r).fill(null).map(() => {
753
786
  const e = ~~(Math.random() * t.length);
754
787
  return t[e];
@@ -761,7 +794,7 @@ function zt(r, t = !1, e = !1, n = !1) {
761
794
  let o;
762
795
  do {
763
796
  const s = ~~(Math.random() * 3);
764
- t && s == 0 ? o = T[~~(Math.random() * T.length)] : e && s == 1 ? o = M[~~(Math.random() * M.length)] : n && s == 2 && (o = I[~~(Math.random() * I.length)]);
797
+ t && s == 0 ? o = T[~~(Math.random() * T.length)] : e && s == 1 ? o = I[~~(Math.random() * I.length)] : n && s == 2 && (o = M[~~(Math.random() * M.length)]);
765
798
  } while (!o);
766
799
  return o;
767
800
  }).join("");
@@ -788,7 +821,7 @@ function Jt(r) {
788
821
  }
789
822
  return e;
790
823
  }
791
- function ht(r) {
824
+ function ft(r) {
792
825
  var t = dt(yt(gt(pt(r), 8 * r.length)));
793
826
  return t.toLowerCase();
794
827
  }
@@ -813,7 +846,7 @@ function gt(r, t) {
813
846
  r[t >> 5] |= 128 << t % 32, r[14 + (t + 64 >>> 9 << 4)] = t;
814
847
  for (var e = 1732584193, n = -271733879, o = -1732584194, s = 271733878, i = 0; i < r.length; i += 16) {
815
848
  var y = e, u = n, R = o, C = s;
816
- n = d(n = d(n = d(n = d(n = h(n = h(n = h(n = h(n = f(n = f(n = f(n = f(n = l(n = l(n = l(n = l(n, o = l(o, s = l(s, e = l(e, n, o, s, r[i + 0], 7, -680876936), n, o, r[i + 1], 12, -389564586), e, n, r[i + 2], 17, 606105819), s, e, r[i + 3], 22, -1044525330), o = l(o, s = l(s, e = l(e, n, o, s, r[i + 4], 7, -176418897), n, o, r[i + 5], 12, 1200080426), e, n, r[i + 6], 17, -1473231341), s, e, r[i + 7], 22, -45705983), o = l(o, s = l(s, e = l(e, n, o, s, r[i + 8], 7, 1770035416), n, o, r[i + 9], 12, -1958414417), e, n, r[i + 10], 17, -42063), s, e, r[i + 11], 22, -1990404162), o = l(o, s = l(s, e = l(e, n, o, s, r[i + 12], 7, 1804603682), n, o, r[i + 13], 12, -40341101), e, n, r[i + 14], 17, -1502002290), s, e, r[i + 15], 22, 1236535329), o = f(o, s = f(s, e = f(e, n, o, s, r[i + 1], 5, -165796510), n, o, r[i + 6], 9, -1069501632), e, n, r[i + 11], 14, 643717713), s, e, r[i + 0], 20, -373897302), o = f(o, s = f(s, e = f(e, n, o, s, r[i + 5], 5, -701558691), n, o, r[i + 10], 9, 38016083), e, n, r[i + 15], 14, -660478335), s, e, r[i + 4], 20, -405537848), o = f(o, s = f(s, e = f(e, n, o, s, r[i + 9], 5, 568446438), n, o, r[i + 14], 9, -1019803690), e, n, r[i + 3], 14, -187363961), s, e, r[i + 8], 20, 1163531501), o = f(o, s = f(s, e = f(e, n, o, s, r[i + 13], 5, -1444681467), n, o, r[i + 2], 9, -51403784), e, n, r[i + 7], 14, 1735328473), s, e, r[i + 12], 20, -1926607734), o = h(o, s = h(s, e = h(e, n, o, s, r[i + 5], 4, -378558), n, o, r[i + 8], 11, -2022574463), e, n, r[i + 11], 16, 1839030562), s, e, r[i + 14], 23, -35309556), o = h(o, s = h(s, e = h(e, n, o, s, r[i + 1], 4, -1530992060), n, o, r[i + 4], 11, 1272893353), e, n, r[i + 7], 16, -155497632), s, e, r[i + 10], 23, -1094730640), o = h(o, s = h(s, e = h(e, n, o, s, r[i + 13], 4, 681279174), n, o, r[i + 0], 11, -358537222), e, n, r[i + 3], 16, -722521979), s, e, r[i + 6], 23, 76029189), o = h(o, s = h(s, e = h(e, n, o, s, r[i + 9], 4, -640364487), n, o, r[i + 12], 11, -421815835), e, n, r[i + 15], 16, 530742520), s, e, r[i + 2], 23, -995338651), o = d(o, s = d(s, e = d(e, n, o, s, r[i + 0], 6, -198630844), n, o, r[i + 7], 10, 1126891415), e, n, r[i + 14], 15, -1416354905), s, e, r[i + 5], 21, -57434055), o = d(o, s = d(s, e = d(e, n, o, s, r[i + 12], 6, 1700485571), n, o, r[i + 3], 10, -1894986606), e, n, r[i + 10], 15, -1051523), s, e, r[i + 1], 21, -2054922799), o = d(o, s = d(s, e = d(e, n, o, s, r[i + 8], 6, 1873313359), n, o, r[i + 15], 10, -30611744), e, n, r[i + 6], 15, -1560198380), s, e, r[i + 13], 21, 1309151649), o = d(o, s = d(s, e = d(e, n, o, s, r[i + 4], 6, -145523070), n, o, r[i + 11], 10, -1120210379), e, n, r[i + 2], 15, 718787259), s, e, r[i + 9], 21, -343485551), e = m(e, y), n = m(n, u), o = m(o, R), s = m(s, C);
849
+ n = d(n = d(n = d(n = d(n = f(n = f(n = f(n = f(n = h(n = h(n = h(n = h(n = l(n = l(n = l(n = l(n, o = l(o, s = l(s, e = l(e, n, o, s, r[i + 0], 7, -680876936), n, o, r[i + 1], 12, -389564586), e, n, r[i + 2], 17, 606105819), s, e, r[i + 3], 22, -1044525330), o = l(o, s = l(s, e = l(e, n, o, s, r[i + 4], 7, -176418897), n, o, r[i + 5], 12, 1200080426), e, n, r[i + 6], 17, -1473231341), s, e, r[i + 7], 22, -45705983), o = l(o, s = l(s, e = l(e, n, o, s, r[i + 8], 7, 1770035416), n, o, r[i + 9], 12, -1958414417), e, n, r[i + 10], 17, -42063), s, e, r[i + 11], 22, -1990404162), o = l(o, s = l(s, e = l(e, n, o, s, r[i + 12], 7, 1804603682), n, o, r[i + 13], 12, -40341101), e, n, r[i + 14], 17, -1502002290), s, e, r[i + 15], 22, 1236535329), o = h(o, s = h(s, e = h(e, n, o, s, r[i + 1], 5, -165796510), n, o, r[i + 6], 9, -1069501632), e, n, r[i + 11], 14, 643717713), s, e, r[i + 0], 20, -373897302), o = h(o, s = h(s, e = h(e, n, o, s, r[i + 5], 5, -701558691), n, o, r[i + 10], 9, 38016083), e, n, r[i + 15], 14, -660478335), s, e, r[i + 4], 20, -405537848), o = h(o, s = h(s, e = h(e, n, o, s, r[i + 9], 5, 568446438), n, o, r[i + 14], 9, -1019803690), e, n, r[i + 3], 14, -187363961), s, e, r[i + 8], 20, 1163531501), o = h(o, s = h(s, e = h(e, n, o, s, r[i + 13], 5, -1444681467), n, o, r[i + 2], 9, -51403784), e, n, r[i + 7], 14, 1735328473), s, e, r[i + 12], 20, -1926607734), o = f(o, s = f(s, e = f(e, n, o, s, r[i + 5], 4, -378558), n, o, r[i + 8], 11, -2022574463), e, n, r[i + 11], 16, 1839030562), s, e, r[i + 14], 23, -35309556), o = f(o, s = f(s, e = f(e, n, o, s, r[i + 1], 4, -1530992060), n, o, r[i + 4], 11, 1272893353), e, n, r[i + 7], 16, -155497632), s, e, r[i + 10], 23, -1094730640), o = f(o, s = f(s, e = f(e, n, o, s, r[i + 13], 4, 681279174), n, o, r[i + 0], 11, -358537222), e, n, r[i + 3], 16, -722521979), s, e, r[i + 6], 23, 76029189), o = f(o, s = f(s, e = f(e, n, o, s, r[i + 9], 4, -640364487), n, o, r[i + 12], 11, -421815835), e, n, r[i + 15], 16, 530742520), s, e, r[i + 2], 23, -995338651), o = d(o, s = d(s, e = d(e, n, o, s, r[i + 0], 6, -198630844), n, o, r[i + 7], 10, 1126891415), e, n, r[i + 14], 15, -1416354905), s, e, r[i + 5], 21, -57434055), o = d(o, s = d(s, e = d(e, n, o, s, r[i + 12], 6, 1700485571), n, o, r[i + 3], 10, -1894986606), e, n, r[i + 10], 15, -1051523), s, e, r[i + 1], 21, -2054922799), o = d(o, s = d(s, e = d(e, n, o, s, r[i + 8], 6, 1873313359), n, o, r[i + 15], 10, -30611744), e, n, r[i + 6], 15, -1560198380), s, e, r[i + 13], 21, 1309151649), o = d(o, s = d(s, e = d(e, n, o, s, r[i + 4], 6, -145523070), n, o, r[i + 11], 10, -1120210379), e, n, r[i + 2], 15, 718787259), s, e, r[i + 9], 21, -343485551), e = m(e, y), n = m(n, u), o = m(o, R), s = m(s, C);
817
850
  }
818
851
  return Array(e, n, o, s);
819
852
  }
@@ -823,10 +856,10 @@ function L(r, t, e, n, o, s) {
823
856
  function l(r, t, e, n, o, s, i) {
824
857
  return L(t & e | ~t & n, r, t, o, s, i);
825
858
  }
826
- function f(r, t, e, n, o, s, i) {
859
+ function h(r, t, e, n, o, s, i) {
827
860
  return L(t & n | e & ~n, r, t, o, s, i);
828
861
  }
829
- function h(r, t, e, n, o, s, i) {
862
+ function f(r, t, e, n, o, s, i) {
830
863
  return L(t ^ e ^ n, r, t, o, s, i);
831
864
  }
832
865
  function d(r, t, e, n, o, s, i) {
@@ -843,7 +876,7 @@ function Zt(r) {
843
876
  return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(r);
844
877
  }
845
878
  function Vt(r, t = "mp") {
846
- return r ? `https://www.gravatar.com/avatar/${ht(r)}?d=${t}` : "";
879
+ return r ? `https://www.gravatar.com/avatar/${ft(r)}?d=${t}` : "";
847
880
  }
848
881
  function Xt(r) {
849
882
  (typeof r == "number" || typeof r == "string") && (r = new Date(r));
@@ -874,12 +907,12 @@ export {
874
907
  p as CustomError,
875
908
  z as ForbiddenError,
876
909
  tt as GatewayTimeoutError,
877
- q as Http,
910
+ P as Http,
878
911
  V as InternalServerError,
879
912
  U as JSONAttemptParse,
880
913
  bt as JSONSanitize,
881
914
  lt as LOG_LEVEL,
882
- P as Logger,
915
+ q as Logger,
883
916
  J as MethodNotAllowedError,
884
917
  Z as NotAcceptableError,
885
918
  K as NotFoundError,
@@ -898,19 +931,19 @@ export {
898
931
  xt as deepCopy,
899
932
  st as deepMerge,
900
933
  x as dotNotation,
901
- Mt as downloadFile,
934
+ It as downloadFile,
902
935
  at as downloadUrl,
903
936
  Bt as encodeQuery,
904
937
  kt as errorFromCode,
905
- It as fileBrowser,
938
+ Mt as fileBrowser,
906
939
  Lt as findByProp,
907
940
  it as flattenArr,
908
941
  F as flattenObj,
909
942
  St as formData,
910
- Pt as formatBytes,
943
+ qt as formatBytes,
911
944
  Xt as formatDate,
912
945
  Ft as formatPhoneNumber,
913
- qt as fracToDec,
946
+ Pt as fracToDec,
914
947
  Vt as gravatar,
915
948
  G as includes,
916
949
  vt as insertAt,
@@ -918,7 +951,7 @@ export {
918
951
  ut as makeArray,
919
952
  ct as makeUnique,
920
953
  Kt as matchAll,
921
- ht as md5,
954
+ ft as md5,
922
955
  At as mixin,
923
956
  Yt as pad,
924
957
  Jt as parseUrl,
@@ -929,9 +962,9 @@ export {
929
962
  Qt as sleepUntil,
930
963
  Ct as sortByProp,
931
964
  _t as timeUntil,
932
- Dt as timestampFilename,
965
+ jt as timestampFilename,
933
966
  te as tyoeKeys,
934
- jt as uploadWithProgress,
967
+ Dt as uploadWithProgress,
935
968
  Zt as validateEmail
936
969
  };
937
970
  //# sourceMappingURL=index.mjs.map