@ztimson/utils 0.21.2 → 0.21.3

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,123 +1,162 @@
1
- var ot = Object.defineProperty;
2
- var it = (r, t, e) => t in r ? ot(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
- var c = (r, t, e) => it(r, typeof t != "symbol" ? t + "" : t, e);
4
- function ct(r, t = !1) {
5
- if (r == null) throw new Error("Cannot clean a NULL value");
6
- return Array.isArray(r) ? r = r.filter((e) => e != null) : Object.entries(r).forEach(([e, n]) => {
7
- (t && n === void 0 || !t && n == null) && delete r[e];
8
- }), r;
9
- }
10
- function At(r) {
11
- return structuredClone(r);
12
- }
13
- function at(r, ...t) {
14
- return t.forEach((e) => {
15
- for (const n in e)
16
- e[n] && typeof e[n] == "object" && !Array.isArray(e[n]) ? (r[n] || (r[n] = {}), at(r[n], e[n])) : r[n] = e[n];
17
- }), r;
18
- }
19
- function B(r, t, e) {
20
- if (!(r == null || !t))
21
- return t.split(/[.[\]]/g).filter((n) => n.length).reduce((n, s, o, i) => {
22
- if ((s[0] == '"' || s[0] == "'") && (s = s.slice(1, -1)), !(n != null && n.hasOwnProperty(s))) {
23
- if (e == null) return;
24
- n[s] = {};
25
- }
26
- return e !== void 0 && o == i.length - 1 ? n[s] = e : n[s];
27
- }, r);
28
- }
29
- function Rt(r) {
30
- return Object.entries(r).map(
31
- ([t, e]) => encodeURIComponent(t) + "=" + encodeURIComponent(e)
32
- ).join("&");
33
- }
34
- function K(r, t, e = {}) {
35
- if (typeof r == "object" && !Array.isArray(r)) {
36
- for (const n of Object.keys(r)) {
37
- const s = t ? t + "." + n : n;
38
- typeof r[n] == "object" ? K(r[n], s, e) : e[s] = r[n];
39
- }
40
- return e;
1
+ var __defProp = Object.defineProperty;
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
+ function clean(obj, undefinedOnly = false) {
5
+ if (obj == null) throw new Error("Cannot clean a NULL value");
6
+ if (Array.isArray(obj)) {
7
+ obj = obj.filter((o) => o != null);
8
+ } else {
9
+ Object.entries(obj).forEach(([key, value]) => {
10
+ if (undefinedOnly && value === void 0 || !undefinedOnly && value == null) delete obj[key];
11
+ });
41
12
  }
13
+ return obj;
42
14
  }
43
- function Ot(r) {
44
- const t = new FormData();
45
- return Object.entries(r).forEach(([e, n]) => t.append(e, n)), t;
15
+ function deepCopy(value) {
16
+ return structuredClone(value);
46
17
  }
47
- function q(r, t, e = !1) {
48
- if (r == null) return e;
49
- if (Array.isArray(t)) return t.findIndex((s, o) => !q(r[o], t[o], e)) == -1;
50
- const n = typeof t;
51
- return n != typeof r ? !1 : n == "object" ? Object.keys(t).find((s) => !q(r[s], t[s], e)) == null : n == "function" ? r.toString() == t.toString() : r == t;
52
- }
53
- function O(r, t) {
54
- const e = typeof r, n = typeof t;
55
- return e != "object" || r == null || n != "object" || t == null ? e == "function" && n == "function" ? r.toString() == t.toString() : r === t : Object.keys(r).length != Object.keys(t).length ? !1 : Object.keys(r).every((o) => O(r[o], t[o]));
18
+ function deepMerge(target, ...sources) {
19
+ sources.forEach((s) => {
20
+ for (const key in s) {
21
+ if (s[key] && typeof s[key] == "object" && !Array.isArray(s[key])) {
22
+ if (!target[key]) target[key] = {};
23
+ deepMerge(target[key], s[key]);
24
+ } else {
25
+ target[key] = s[key];
26
+ }
27
+ }
28
+ });
29
+ return target;
30
+ }
31
+ function dotNotation(obj, prop, set) {
32
+ if (obj == null || !prop) return void 0;
33
+ return prop.split(/[.[\]]/g).filter((prop2) => prop2.length).reduce((obj2, prop2, i, arr) => {
34
+ if (prop2[0] == '"' || prop2[0] == "'") prop2 = prop2.slice(1, -1);
35
+ if (!(obj2 == null ? void 0 : obj2.hasOwnProperty(prop2))) {
36
+ if (set == void 0) return void 0;
37
+ obj2[prop2] = {};
38
+ }
39
+ if (set !== void 0 && i == arr.length - 1)
40
+ return obj2[prop2] = set;
41
+ return obj2[prop2];
42
+ }, obj);
43
+ }
44
+ function encodeQuery(data) {
45
+ return Object.entries(data).map(
46
+ ([key, value]) => encodeURIComponent(key) + "=" + encodeURIComponent(value)
47
+ ).join("&");
56
48
  }
57
- function $t(r, t) {
58
- t.forEach((e) => {
59
- Object.getOwnPropertyNames(e.prototype).forEach((n) => {
49
+ function flattenObj(obj, parent, result = {}) {
50
+ if (typeof obj === "object" && !Array.isArray(obj)) {
51
+ for (const key of Object.keys(obj)) {
52
+ const propName = parent ? parent + "." + key : key;
53
+ if (typeof obj[key] === "object") {
54
+ flattenObj(obj[key], propName, result);
55
+ } else {
56
+ result[propName] = obj[key];
57
+ }
58
+ }
59
+ return result;
60
+ }
61
+ }
62
+ function formData(target) {
63
+ const data = new FormData();
64
+ Object.entries(target).forEach(([key, value]) => data.append(key, value));
65
+ return data;
66
+ }
67
+ function includes(target, values, allowMissing = false) {
68
+ if (target == void 0) return allowMissing;
69
+ if (Array.isArray(values)) return values.findIndex((e, i) => !includes(target[i], values[i], allowMissing)) == -1;
70
+ const type = typeof values;
71
+ if (type != typeof target) return false;
72
+ if (type == "object") {
73
+ return Object.keys(values).find((key) => !includes(target[key], values[key], allowMissing)) == null;
74
+ }
75
+ if (type == "function") return target.toString() == values.toString();
76
+ return target == values;
77
+ }
78
+ function isEqual(a, b) {
79
+ const ta = typeof a, tb = typeof b;
80
+ if (ta != "object" || a == null || (tb != "object" || b == null))
81
+ return ta == "function" && tb == "function" ? a.toString() == b.toString() : a === b;
82
+ const keys = Object.keys(a);
83
+ if (keys.length != Object.keys(b).length) return false;
84
+ return Object.keys(a).every((key) => isEqual(a[key], b[key]));
85
+ }
86
+ function mixin(target, constructors) {
87
+ constructors.forEach((c) => {
88
+ Object.getOwnPropertyNames(c.prototype).forEach((name) => {
60
89
  Object.defineProperty(
61
- r.prototype,
62
- n,
63
- Object.getOwnPropertyDescriptor(e.prototype, n) || /* @__PURE__ */ Object.create(null)
90
+ target.prototype,
91
+ name,
92
+ Object.getOwnPropertyDescriptor(c.prototype, name) || /* @__PURE__ */ Object.create(null)
64
93
  );
65
94
  });
66
95
  });
67
96
  }
68
- function I(r) {
97
+ function JSONAttemptParse(json) {
69
98
  try {
70
- return JSON.parse(r);
99
+ return JSON.parse(json);
71
100
  } catch {
72
- return r;
101
+ return json;
73
102
  }
74
103
  }
75
- function ut(r, t) {
76
- let e = [];
77
- return JSON.stringify(r, (n, s) => {
78
- if (typeof s == "object" && s !== null) {
79
- if (e.includes(s)) return;
80
- e.push(s);
104
+ function JSONSanitize(obj, space) {
105
+ let cache = [];
106
+ return JSON.stringify(obj, (key, value) => {
107
+ if (typeof value === "object" && value !== null) {
108
+ if (cache.includes(value)) return;
109
+ cache.push(value);
81
110
  }
82
- return s;
83
- }, t);
111
+ return value;
112
+ }, space);
84
113
  }
85
- function Ct(r, t) {
86
- return r.indexOf(t) === -1 && r.push(t), r;
114
+ function addUnique(array, el) {
115
+ if (array.indexOf(el) === -1) array.push(el);
116
+ return array;
87
117
  }
88
- function Lt(r, t) {
89
- return ht([
90
- ...r.filter((e) => !t.includes((n) => O(e, n))),
91
- ...t.filter((e) => !r.includes((n) => O(e, n)))
118
+ function arrayDiff(a, b) {
119
+ return makeUnique([
120
+ ...a.filter((v1) => !b.includes((v2) => isEqual(v1, v2))),
121
+ ...b.filter((v1) => !a.includes((v2) => isEqual(v1, v2)))
92
122
  ]);
93
123
  }
94
- function Nt(r) {
95
- return function(t, e) {
96
- const n = B(t, r), s = B(e, r);
97
- return typeof n != "string" || typeof s != "string" ? 1 : n.toLowerCase().localeCompare(s.toLowerCase());
124
+ function caseInsensitiveSort(prop) {
125
+ return function(a, b) {
126
+ const aVal = dotNotation(a, prop);
127
+ const bVal = dotNotation(b, prop);
128
+ if (typeof aVal !== "string" || typeof bVal !== "string") return 1;
129
+ return aVal.toLowerCase().localeCompare(bVal.toLowerCase());
98
130
  };
99
131
  }
100
- function jt(r, t) {
101
- return (e) => O(B(e, r), t);
102
- }
103
- function lt(r, t = []) {
104
- return r.forEach((e) => Array.isArray(e) ? lt(e, t) : t.push(e)), t;
105
- }
106
- function Tt(r, t = !1) {
107
- return function(e, n) {
108
- const s = B(e, r), o = B(n, r);
109
- return typeof s == "number" && typeof o == "number" ? (t ? -1 : 1) * (s - o) : s > o ? t ? -1 : 1 : s < o ? t ? 1 : -1 : 0;
132
+ function findByProp(prop, value) {
133
+ return (v) => isEqual(dotNotation(v, prop), value);
134
+ }
135
+ function flattenArr(arr, result = []) {
136
+ arr.forEach((el) => Array.isArray(el) ? flattenArr(el, result) : result.push(el));
137
+ return result;
138
+ }
139
+ function sortByProp(prop, reverse = false) {
140
+ return function(a, b) {
141
+ const aVal = dotNotation(a, prop);
142
+ const bVal = dotNotation(b, prop);
143
+ if (typeof aVal == "number" && typeof bVal == "number")
144
+ return (reverse ? -1 : 1) * (aVal - bVal);
145
+ if (aVal > bVal) return reverse ? -1 : 1;
146
+ if (aVal < bVal) return reverse ? 1 : -1;
147
+ return 0;
110
148
  };
111
149
  }
112
- function ht(r) {
113
- for (let t = r.length - 1; t >= 0; t--)
114
- r.slice(0, t).find((e) => O(e, r[t])) && r.splice(t, 1);
115
- return r;
150
+ function makeUnique(arr) {
151
+ for (let i = arr.length - 1; i >= 0; i--) {
152
+ if (arr.slice(0, i).find((n) => isEqual(n, arr[i]))) arr.splice(i, 1);
153
+ }
154
+ return arr;
116
155
  }
117
- function S(r) {
118
- return Array.isArray(r) ? r : [r];
156
+ function makeArray(value) {
157
+ return Array.isArray(value) ? value : [value];
119
158
  }
120
- class w extends Array {
159
+ class ASet extends Array {
121
160
  /** Number of elements in set */
122
161
  get size() {
123
162
  return this.length;
@@ -126,124 +165,150 @@ class w extends Array {
126
165
  * Array to create set from, duplicate values will be removed
127
166
  * @param {T[]} elements Elements which will be added to set
128
167
  */
129
- constructor(t = []) {
130
- super(), t != null && t.forEach && t.forEach((e) => this.add(e));
168
+ constructor(elements = []) {
169
+ super();
170
+ if (!!(elements == null ? void 0 : elements["forEach"]))
171
+ elements.forEach((el) => this.add(el));
131
172
  }
132
173
  /**
133
174
  * Add elements to set if unique
134
175
  * @param items
135
176
  */
136
- add(...t) {
137
- return t.filter((e) => !this.has(e)).forEach((e) => this.push(e)), this;
177
+ add(...items) {
178
+ items.filter((el) => !this.has(el)).forEach((el) => this.push(el));
179
+ return this;
138
180
  }
139
181
  /**
140
182
  * Delete elements from set
141
183
  * @param items Elements that will be deleted
142
184
  */
143
- delete(...t) {
144
- return t.forEach((e) => {
145
- const n = this.indexOf(e);
146
- n != -1 && this.slice(n, 1);
147
- }), this;
185
+ delete(...items) {
186
+ items.forEach((el) => {
187
+ const index = this.indexOf(el);
188
+ if (index != -1) this.splice(index, 1);
189
+ });
190
+ return this;
148
191
  }
149
192
  /**
150
193
  * Create list of elements this set has which the comparison set does not
151
194
  * @param {ASet<T>} set Set to compare against
152
195
  * @return {ASet<T>} Different elements
153
196
  */
154
- difference(t) {
155
- return new w(this.filter((e) => !t.has(e)));
197
+ difference(set) {
198
+ return new ASet(this.filter((el) => !set.has(el)));
156
199
  }
157
200
  /**
158
201
  * Check if set includes element
159
202
  * @param {T} el Element to look for
160
203
  * @return {boolean} True if element was found, false otherwise
161
204
  */
162
- has(t) {
163
- return this.indexOf(t) != -1;
205
+ has(el) {
206
+ return this.indexOf(el) != -1;
207
+ }
208
+ /**
209
+ * Find index number of element, or -1 if it doesn't exist. Matches by equality not reference
210
+ *
211
+ * @param {T} search Element to find
212
+ * @param {number} fromIndex Starting index position
213
+ * @return {number} Element index number or -1 if missing
214
+ */
215
+ indexOf(search, fromIndex) {
216
+ return super.findIndex((el) => isEqual(el, search), fromIndex);
164
217
  }
165
218
  /**
166
219
  * Create list of elements this set has in common with the comparison set
167
220
  * @param {ASet<T>} set Set to compare against
168
221
  * @return {boolean} Set of common elements
169
222
  */
170
- intersection(t) {
171
- return new w(this.filter((e) => t.has(e)));
223
+ intersection(set) {
224
+ return new ASet(this.filter((el) => set.has(el)));
172
225
  }
173
226
  /**
174
227
  * Check if this set has no elements in common with the comparison set
175
228
  * @param {ASet<T>} set Set to compare against
176
229
  * @return {boolean} True if nothing in common, false otherwise
177
230
  */
178
- isDisjointFrom(t) {
179
- return this.intersection(t).size == 0;
231
+ isDisjointFrom(set) {
232
+ return this.intersection(set).size == 0;
180
233
  }
181
234
  /**
182
235
  * Check if all elements in this set are included in the comparison set
183
236
  * @param {ASet<T>} set Set to compare against
184
237
  * @return {boolean} True if all elements are included, false otherwise
185
238
  */
186
- isSubsetOf(t) {
187
- return this.findIndex((e) => !t.has(e)) == -1;
239
+ isSubsetOf(set) {
240
+ return this.findIndex((el) => !set.has(el)) == -1;
188
241
  }
189
242
  /**
190
243
  * Check if all elements from comparison set are included in this set
191
244
  * @param {ASet<T>} set Set to compare against
192
245
  * @return {boolean} True if all elements are included, false otherwise
193
246
  */
194
- isSuperset(t) {
195
- return t.findIndex((e) => !this.has(e)) == -1;
247
+ isSuperset(set) {
248
+ return set.findIndex((el) => !this.has(el)) == -1;
196
249
  }
197
250
  /**
198
251
  * Create list of elements that are only in one set but not both (XOR)
199
252
  * @param {ASet<T>} set Set to compare against
200
253
  * @return {ASet<T>} New set of unique elements
201
254
  */
202
- symmetricDifference(t) {
203
- return new w([...this.difference(t), ...t.difference(this)]);
255
+ symmetricDifference(set) {
256
+ return new ASet([...this.difference(set), ...set.difference(this)]);
204
257
  }
205
258
  /**
206
259
  * Create joined list of elements included in this & the comparison set
207
260
  * @param {ASet<T>} set Set join
208
261
  * @return {ASet<T>} New set of both previous sets combined
209
262
  */
210
- union(t) {
211
- return new w([...this, ...t]);
263
+ union(set) {
264
+ return new ASet([...this, ...set]);
212
265
  }
213
266
  }
214
- class It {
267
+ class Cache {
215
268
  /**
216
269
  * Create new cache
217
270
  *
218
271
  * @param {keyof T} key Default property to use as primary key
219
272
  * @param options
220
273
  */
221
- constructor(t, e = {}) {
222
- c(this, "store", {});
274
+ constructor(key, options = {}) {
275
+ __publicField(this, "store", {});
223
276
  /** Whether cache is complete */
224
- c(this, "complete", !1);
277
+ __publicField(this, "complete", false);
225
278
  /**
226
279
  * Get all cached items
227
280
  *
228
281
  * @return {T[]} Array of items
229
282
  */
230
- c(this, "values", this.all());
231
- if (this.key = t, this.options = e, e.storageKey && !e.storage && typeof Storage < "u" && (e.storage = localStorage), e.storageKey && e.storage) {
232
- const n = e.storage.getItem(e.storageKey);
233
- if (n)
283
+ __publicField(this, "values", this.all());
284
+ this.key = key;
285
+ this.options = options;
286
+ if (options.storageKey && !options.storage && typeof Storage !== "undefined")
287
+ options.storage = localStorage;
288
+ if (options.storageKey && options.storage) {
289
+ const stored = options.storage.getItem(options.storageKey);
290
+ if (stored) {
234
291
  try {
235
- Object.assign(this.store, JSON.parse(n));
292
+ Object.assign(this.store, JSON.parse(stored));
236
293
  } catch {
237
294
  }
295
+ }
238
296
  }
239
297
  return new Proxy(this, {
240
- get: (n, s) => s in n ? n[s] : n.store[s],
241
- set: (n, s, o) => (s in n ? n[s] = o : n.store[s] = o, !0)
298
+ get: (target, prop) => {
299
+ if (prop in target) return target[prop];
300
+ return target.store[prop];
301
+ },
302
+ set: (target, prop, value) => {
303
+ if (prop in target) target[prop] = value;
304
+ else target.store[prop] = value;
305
+ return true;
306
+ }
242
307
  });
243
308
  }
244
- getKey(t) {
309
+ getKey(value) {
245
310
  if (!this.key) throw new Error("No key defined");
246
- return t[this.key];
311
+ return value[this.key];
247
312
  }
248
313
  /**
249
314
  * Get all cached items
@@ -260,9 +325,10 @@ class It {
260
325
  * @param {number | undefined} ttl Override default expiry
261
326
  * @return {this}
262
327
  */
263
- add(t, e = this.ttl) {
264
- const n = this.getKey(t);
265
- return this.set(n, t, e), this;
328
+ add(value, ttl = this.ttl) {
329
+ const key = this.getKey(value);
330
+ this.set(key, value, ttl);
331
+ return this;
266
332
  }
267
333
  /**
268
334
  * Add several rows to the cache
@@ -271,8 +337,10 @@ class It {
271
337
  * @param complete Mark cache as complete & reliable, defaults to true
272
338
  * @return {this}
273
339
  */
274
- addAll(t, e = !0) {
275
- return t.forEach((n) => this.add(n)), this.complete = e, this;
340
+ addAll(rows, complete = true) {
341
+ rows.forEach((r) => this.add(r));
342
+ this.complete = complete;
343
+ return this;
276
344
  }
277
345
  /**
278
346
  * Remove all keys from cache
@@ -285,8 +353,10 @@ class It {
285
353
  *
286
354
  * @param {K} key Item's primary key
287
355
  */
288
- delete(t) {
289
- delete this.store[t], this.options.storageKey && this.options.storage && this.options.storage.setItem(this.options.storageKey, JSON.stringify(this.store));
356
+ delete(key) {
357
+ delete this.store[key];
358
+ if (this.options.storageKey && this.options.storage)
359
+ this.options.storage.setItem(this.options.storageKey, JSON.stringify(this.store));
290
360
  }
291
361
  /**
292
362
  * Return cache as an array of key-value pairs
@@ -300,8 +370,8 @@ class It {
300
370
  * @param {K} key Key to lookup
301
371
  * @return {T} Cached item
302
372
  */
303
- get(t) {
304
- return this.store[t];
373
+ get(key) {
374
+ return this.store[key];
305
375
  }
306
376
  /**
307
377
  * Get a list of cached keys
@@ -327,376 +397,444 @@ class It {
327
397
  * @param {number | undefined} ttl Override default expiry in seconds
328
398
  * @return {this}
329
399
  */
330
- set(t, e, n = this.options.ttl) {
331
- return this.store[t] = e, this.options.storageKey && this.options.storage && this.options.storage.setItem(this.options.storageKey, JSON.stringify(this.store)), n && setTimeout(() => {
332
- this.complete = !1, this.delete(t);
333
- }, n * 1e3), this;
334
- }
335
- }
336
- function Dt(r, t = !0) {
337
- const e = r.reduce((n, s) => (Object.keys(t ? K(s) : s).forEach((o) => {
338
- n.includes(o) || n.push(o);
339
- }), n), []);
400
+ set(key, value, ttl = this.options.ttl) {
401
+ this.store[key] = value;
402
+ if (this.options.storageKey && this.options.storage)
403
+ this.options.storage.setItem(this.options.storageKey, JSON.stringify(this.store));
404
+ if (ttl) setTimeout(() => {
405
+ this.complete = false;
406
+ this.delete(key);
407
+ }, ttl * 1e3);
408
+ return this;
409
+ }
410
+ }
411
+ function csv(target, flatten = true) {
412
+ const headers = target.reduce((acc, row) => {
413
+ Object.keys(flatten ? flattenObj(row) : row).forEach((key) => {
414
+ if (!acc.includes(key)) acc.push(key);
415
+ });
416
+ return acc;
417
+ }, []);
340
418
  return [
341
- e.join(","),
342
- ...r.map((n) => e.map((s) => {
343
- const o = B(n, s), i = typeof o;
344
- return i == "string" && o.includes(",") ? `"${o}"` : i == "object" ? `"${JSON.stringify(o)}"` : o;
419
+ headers.join(","),
420
+ ...target.map((row) => headers.map((h) => {
421
+ const value = dotNotation(row, h);
422
+ const type = typeof value;
423
+ if (type == "string" && value.includes(",")) return `"${value}"`;
424
+ if (type == "object") return `"${JSON.stringify(value)}"`;
425
+ return value;
345
426
  }).join(","))
346
- ].join(`
347
- `);
348
- }
349
- class b extends Promise {
350
- constructor(e) {
351
- super((n, s) => e(
352
- (o) => n(o),
353
- (o) => s(o),
354
- (o) => this.progress = o
427
+ ].join("\n");
428
+ }
429
+ class PromiseProgress extends Promise {
430
+ constructor(executor) {
431
+ super((resolve, reject) => executor(
432
+ (value) => resolve(value),
433
+ (reason) => reject(reason),
434
+ (progress) => this.progress = progress
355
435
  ));
356
- c(this, "listeners", []);
357
- c(this, "_progress", 0);
436
+ __publicField(this, "listeners", []);
437
+ __publicField(this, "_progress", 0);
358
438
  }
359
439
  get progress() {
360
440
  return this._progress;
361
441
  }
362
- set progress(e) {
363
- e != this._progress && (this._progress = e, this.listeners.forEach((n) => n(e)));
364
- }
365
- static from(e) {
366
- return e instanceof b ? e : new b((n, s) => e.then((...o) => n(...o)).catch((...o) => s(...o)));
367
- }
368
- from(e) {
369
- const n = b.from(e);
370
- return this.onProgress((s) => n.progress = s), n;
371
- }
372
- onProgress(e) {
373
- return this.listeners.push(e), this;
374
- }
375
- then(e, n) {
376
- const s = super.then(e, n);
377
- return this.from(s);
378
- }
379
- catch(e) {
380
- return this.from(super.catch(e));
381
- }
382
- finally(e) {
383
- return this.from(super.finally(e));
384
- }
385
- }
386
- function Mt(r, t) {
387
- r instanceof Blob || (r = new Blob(S(r)));
388
- const e = URL.createObjectURL(r);
389
- ft(e, t), URL.revokeObjectURL(e);
390
- }
391
- function ft(r, t) {
392
- const e = document.createElement("a");
393
- e.href = r, e.download = t || r.split("/").pop(), document.body.appendChild(e), e.click(), document.body.removeChild(e);
394
- }
395
- function kt(r = {}) {
396
- return new Promise((t) => {
397
- const e = document.createElement("input");
398
- e.type = "file", e.accept = r.accept || "*", e.style.display = "none", e.multiple = !!r.multiple, e.onblur = e.onchange = async () => {
399
- t(Array.from(e.files)), e.remove();
400
- }, document.body.appendChild(e), e.click();
442
+ set progress(p) {
443
+ if (p == this._progress) return;
444
+ this._progress = p;
445
+ this.listeners.forEach((l) => l(p));
446
+ }
447
+ static from(promise) {
448
+ if (promise instanceof PromiseProgress) return promise;
449
+ return new PromiseProgress((res, rej) => promise.then((...args) => res(...args)).catch((...args) => rej(...args)));
450
+ }
451
+ from(promise) {
452
+ const newPromise = PromiseProgress.from(promise);
453
+ this.onProgress((p) => newPromise.progress = p);
454
+ return newPromise;
455
+ }
456
+ onProgress(callback) {
457
+ this.listeners.push(callback);
458
+ return this;
459
+ }
460
+ then(res, rej) {
461
+ const resp = super.then(res, rej);
462
+ return this.from(resp);
463
+ }
464
+ catch(rej) {
465
+ return this.from(super.catch(rej));
466
+ }
467
+ finally(res) {
468
+ return this.from(super.finally(res));
469
+ }
470
+ }
471
+ function downloadFile(blob, name) {
472
+ if (!(blob instanceof Blob)) blob = new Blob(makeArray(blob));
473
+ const url = URL.createObjectURL(blob);
474
+ downloadUrl(url, name);
475
+ URL.revokeObjectURL(url);
476
+ }
477
+ function downloadUrl(href, name) {
478
+ const a = document.createElement("a");
479
+ a.href = href;
480
+ a.download = name || href.split("/").pop();
481
+ document.body.appendChild(a);
482
+ a.click();
483
+ document.body.removeChild(a);
484
+ }
485
+ function fileBrowser(options = {}) {
486
+ return new Promise((res) => {
487
+ const input = document.createElement("input");
488
+ input.type = "file";
489
+ input.accept = options.accept || "*";
490
+ input.style.display = "none";
491
+ input.multiple = !!options.multiple;
492
+ input.onblur = input.onchange = async () => {
493
+ res(Array.from(input.files));
494
+ input.remove();
495
+ };
496
+ document.body.appendChild(input);
497
+ input.click();
401
498
  });
402
499
  }
403
- function Pt(r, t = /* @__PURE__ */ new Date()) {
404
- (typeof t == "number" || typeof t == "string") && (t = new Date(t));
405
- 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")}`;
406
- return r ? r.replace("{{TIMESTAMP}}", e) : e;
407
- }
408
- function Gt(r) {
409
- return new b((t, e, n) => {
410
- const s = new XMLHttpRequest(), o = new FormData();
411
- r.files.forEach((i) => o.append("file", i)), s.withCredentials = !!r.withCredentials, s.upload.addEventListener("progress", (i) => i.lengthComputable ? n(i.loaded / i.total) : null), s.addEventListener("loadend", () => t(I(s.responseText))), s.addEventListener("error", () => e(I(s.responseText))), s.addEventListener("timeout", () => e({ error: "Request timed out" })), s.open("POST", r.url), Object.entries(r.headers || {}).forEach(([i, u]) => s.setRequestHeader(i, u)), s.send(o);
500
+ function timestampFilename(name, date = /* @__PURE__ */ new Date()) {
501
+ if (typeof date == "number" || typeof date == "string") date = new Date(date);
502
+ const timestamp = `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}_${date.getHours().toString().padStart(2, "0")}-${date.getMinutes().toString().padStart(2, "0")}-${date.getSeconds().toString().padStart(2, "0")}`;
503
+ return name ? name.replace("{{TIMESTAMP}}", timestamp) : timestamp;
504
+ }
505
+ function uploadWithProgress(options) {
506
+ return new PromiseProgress((res, rej, prog) => {
507
+ const xhr = new XMLHttpRequest();
508
+ const formData2 = new FormData();
509
+ options.files.forEach((f) => formData2.append("file", f));
510
+ xhr.withCredentials = !!options.withCredentials;
511
+ xhr.upload.addEventListener("progress", (event) => event.lengthComputable ? prog(event.loaded / event.total) : null);
512
+ xhr.addEventListener("loadend", () => res(JSONAttemptParse(xhr.responseText)));
513
+ xhr.addEventListener("error", () => rej(JSONAttemptParse(xhr.responseText)));
514
+ xhr.addEventListener("timeout", () => rej({ error: "Request timed out" }));
515
+ xhr.open("POST", options.url);
516
+ Object.entries(options.headers || {}).forEach(([key, value]) => xhr.setRequestHeader(key, value));
517
+ xhr.send(formData2);
412
518
  });
413
519
  }
414
- class W {
520
+ class TypedEmitter {
415
521
  constructor() {
416
- c(this, "listeners", {});
417
- }
418
- static emit(t, ...e) {
419
- (this.listeners["*"] || []).forEach((n) => n(t, ...e)), (this.listeners[t.toString()] || []).forEach((n) => n(...e));
420
- }
421
- static off(t, e) {
422
- const n = t.toString();
423
- this.listeners[n] = (this.listeners[n] || []).filter((s) => s === e);
424
- }
425
- static on(t, e) {
426
- var s;
427
- const n = t.toString();
428
- return this.listeners[n] || (this.listeners[n] = []), (s = this.listeners[n]) == null || s.push(e), () => this.off(t, e);
429
- }
430
- static once(t, e) {
431
- return new Promise((n) => {
432
- const s = this.on(t, (...o) => {
433
- n(o.length == 1 ? o[0] : o), e && e(...o), s();
522
+ __publicField(this, "listeners", {});
523
+ }
524
+ static emit(event, ...args) {
525
+ (this.listeners["*"] || []).forEach((l) => l(event, ...args));
526
+ (this.listeners[event.toString()] || []).forEach((l) => l(...args));
527
+ }
528
+ static off(event, listener) {
529
+ const e = event.toString();
530
+ this.listeners[e] = (this.listeners[e] || []).filter((l) => l === listener);
531
+ }
532
+ static on(event, listener) {
533
+ var _a;
534
+ const e = event.toString();
535
+ if (!this.listeners[e]) this.listeners[e] = [];
536
+ (_a = this.listeners[e]) == null ? void 0 : _a.push(listener);
537
+ return () => this.off(event, listener);
538
+ }
539
+ static once(event, listener) {
540
+ return new Promise((res) => {
541
+ const unsubscribe = this.on(event, (...args) => {
542
+ res(args.length == 1 ? args[0] : args);
543
+ if (listener) listener(...args);
544
+ unsubscribe();
434
545
  });
435
546
  });
436
547
  }
437
- emit(t, ...e) {
438
- (this.listeners["*"] || []).forEach((n) => n(t, ...e)), (this.listeners[t] || []).forEach((n) => n(...e));
439
- }
440
- off(t, e) {
441
- this.listeners[t] = (this.listeners[t] || []).filter((n) => n === e);
442
- }
443
- on(t, e) {
444
- var n;
445
- return this.listeners[t] || (this.listeners[t] = []), (n = this.listeners[t]) == null || n.push(e), () => this.off(t, e);
446
- }
447
- once(t, e) {
448
- return new Promise((n) => {
449
- const s = this.on(t, (...o) => {
450
- n(o.length == 1 ? o[0] : o), e && e(...o), s();
548
+ emit(event, ...args) {
549
+ (this.listeners["*"] || []).forEach((l) => l(event, ...args));
550
+ (this.listeners[event] || []).forEach((l) => l(...args));
551
+ }
552
+ off(event, listener) {
553
+ this.listeners[event] = (this.listeners[event] || []).filter((l) => l === listener);
554
+ }
555
+ on(event, listener) {
556
+ var _a;
557
+ if (!this.listeners[event]) this.listeners[event] = [];
558
+ (_a = this.listeners[event]) == null ? void 0 : _a.push(listener);
559
+ return () => this.off(event, listener);
560
+ }
561
+ once(event, listener) {
562
+ return new Promise((res) => {
563
+ const unsubscribe = this.on(event, (...args) => {
564
+ res(args.length == 1 ? args[0] : args);
565
+ if (listener) listener(...args);
566
+ unsubscribe();
451
567
  });
452
568
  });
453
569
  }
454
570
  }
455
- c(W, "listeners", {});
456
- class y extends Error {
457
- constructor(e, n) {
458
- super(e);
459
- c(this, "_code");
460
- n != null && (this._code = n);
571
+ __publicField(TypedEmitter, "listeners", {});
572
+ class CustomError extends Error {
573
+ constructor(message, code) {
574
+ super(message);
575
+ __publicField(this, "_code");
576
+ if (code != null) this._code = code;
461
577
  }
462
578
  get code() {
463
579
  return this._code || this.constructor.code;
464
580
  }
465
- set code(e) {
466
- this._code = e;
581
+ set code(c) {
582
+ this._code = c;
467
583
  }
468
- static from(e) {
469
- const n = Number(e.statusCode) ?? Number(e.code), s = new this(e.message || e.toString());
470
- return Object.assign(s, {
471
- stack: e.stack,
472
- ...e,
473
- code: n ?? void 0
584
+ static from(err) {
585
+ const code = Number(err.statusCode) ?? Number(err.code);
586
+ const newErr = new this(err.message || err.toString());
587
+ return Object.assign(newErr, {
588
+ stack: err.stack,
589
+ ...err,
590
+ code: code ?? void 0
474
591
  });
475
592
  }
476
- static instanceof(e) {
477
- return e.constructor.code != null;
593
+ static instanceof(err) {
594
+ return err.constructor.code != void 0;
478
595
  }
479
596
  toString() {
480
597
  return this.message || super.toString();
481
598
  }
482
599
  }
483
- c(y, "code", 500);
484
- class v extends y {
485
- constructor(t = "Bad Request") {
486
- super(t);
600
+ __publicField(CustomError, "code", 500);
601
+ class BadRequestError extends CustomError {
602
+ constructor(message = "Bad Request") {
603
+ super(message);
487
604
  }
488
- static instanceof(t) {
489
- return t.constructor.code == this.code;
605
+ static instanceof(err) {
606
+ return err.constructor.code == this.code;
490
607
  }
491
608
  }
492
- c(v, "code", 400);
493
- class J extends y {
494
- constructor(t = "Unauthorized") {
495
- super(t);
609
+ __publicField(BadRequestError, "code", 400);
610
+ class UnauthorizedError extends CustomError {
611
+ constructor(message = "Unauthorized") {
612
+ super(message);
496
613
  }
497
- static instanceof(t) {
498
- return t.constructor.code == this.code;
614
+ static instanceof(err) {
615
+ return err.constructor.code == this.code;
499
616
  }
500
617
  }
501
- c(J, "code", 401);
502
- class z extends y {
503
- constructor(t = "Payment Required") {
504
- super(t);
618
+ __publicField(UnauthorizedError, "code", 401);
619
+ class PaymentRequiredError extends CustomError {
620
+ constructor(message = "Payment Required") {
621
+ super(message);
505
622
  }
506
- static instanceof(t) {
507
- return t.constructor.code == this.code;
623
+ static instanceof(err) {
624
+ return err.constructor.code == this.code;
508
625
  }
509
626
  }
510
- c(z, "code", 402);
511
- class Z extends y {
512
- constructor(t = "Forbidden") {
513
- super(t);
627
+ __publicField(PaymentRequiredError, "code", 402);
628
+ class ForbiddenError extends CustomError {
629
+ constructor(message = "Forbidden") {
630
+ super(message);
514
631
  }
515
- static instanceof(t) {
516
- return t.constructor.code == this.code;
632
+ static instanceof(err) {
633
+ return err.constructor.code == this.code;
517
634
  }
518
635
  }
519
- c(Z, "code", 403);
520
- class V extends y {
521
- constructor(t = "Not Found") {
522
- super(t);
636
+ __publicField(ForbiddenError, "code", 403);
637
+ class NotFoundError extends CustomError {
638
+ constructor(message = "Not Found") {
639
+ super(message);
523
640
  }
524
- static instanceof(t) {
525
- return t.constructor.code == this.code;
641
+ static instanceof(err) {
642
+ return err.constructor.code == this.code;
526
643
  }
527
644
  }
528
- c(V, "code", 404);
529
- class X extends y {
530
- constructor(t = "Method Not Allowed") {
531
- super(t);
645
+ __publicField(NotFoundError, "code", 404);
646
+ class MethodNotAllowedError extends CustomError {
647
+ constructor(message = "Method Not Allowed") {
648
+ super(message);
532
649
  }
533
- static instanceof(t) {
534
- return t.constructor.code == this.code;
650
+ static instanceof(err) {
651
+ return err.constructor.code == this.code;
535
652
  }
536
653
  }
537
- c(X, "code", 405);
538
- class Q extends y {
539
- constructor(t = "Not Acceptable") {
540
- super(t);
654
+ __publicField(MethodNotAllowedError, "code", 405);
655
+ class NotAcceptableError extends CustomError {
656
+ constructor(message = "Not Acceptable") {
657
+ super(message);
541
658
  }
542
- static instanceof(t) {
543
- return t.constructor.code == this.code;
659
+ static instanceof(err) {
660
+ return err.constructor.code == this.code;
544
661
  }
545
662
  }
546
- c(Q, "code", 406);
547
- class _ extends y {
548
- constructor(t = "Internal Server Error") {
549
- super(t);
663
+ __publicField(NotAcceptableError, "code", 406);
664
+ class InternalServerError extends CustomError {
665
+ constructor(message = "Internal Server Error") {
666
+ super(message);
550
667
  }
551
- static instanceof(t) {
552
- return t.constructor.code == this.code;
668
+ static instanceof(err) {
669
+ return err.constructor.code == this.code;
553
670
  }
554
671
  }
555
- c(_, "code", 500);
556
- class tt extends y {
557
- constructor(t = "Not Implemented") {
558
- super(t);
672
+ __publicField(InternalServerError, "code", 500);
673
+ class NotImplementedError extends CustomError {
674
+ constructor(message = "Not Implemented") {
675
+ super(message);
559
676
  }
560
- static instanceof(t) {
561
- return t.constructor.code == this.code;
677
+ static instanceof(err) {
678
+ return err.constructor.code == this.code;
562
679
  }
563
680
  }
564
- c(tt, "code", 501);
565
- class et extends y {
566
- constructor(t = "Bad Gateway") {
567
- super(t);
681
+ __publicField(NotImplementedError, "code", 501);
682
+ class BadGatewayError extends CustomError {
683
+ constructor(message = "Bad Gateway") {
684
+ super(message);
568
685
  }
569
- static instanceof(t) {
570
- return t.constructor.code == this.code;
686
+ static instanceof(err) {
687
+ return err.constructor.code == this.code;
571
688
  }
572
689
  }
573
- c(et, "code", 502);
574
- class rt extends y {
575
- constructor(t = "Service Unavailable") {
576
- super(t);
690
+ __publicField(BadGatewayError, "code", 502);
691
+ class ServiceUnavailableError extends CustomError {
692
+ constructor(message = "Service Unavailable") {
693
+ super(message);
577
694
  }
578
- static instanceof(t) {
579
- return t.constructor.code == this.code;
695
+ static instanceof(err) {
696
+ return err.constructor.code == this.code;
580
697
  }
581
698
  }
582
- c(rt, "code", 503);
583
- class nt extends y {
584
- constructor(t = "Gateway Timeout") {
585
- super(t);
699
+ __publicField(ServiceUnavailableError, "code", 503);
700
+ class GatewayTimeoutError extends CustomError {
701
+ constructor(message = "Gateway Timeout") {
702
+ super(message);
586
703
  }
587
- static instanceof(t) {
588
- return t.constructor.code == this.code;
704
+ static instanceof(err) {
705
+ return err.constructor.code == this.code;
589
706
  }
590
707
  }
591
- c(nt, "code", 504);
592
- function Ut(r, t) {
593
- if (r >= 200 && r < 300) return null;
594
- switch (r) {
708
+ __publicField(GatewayTimeoutError, "code", 504);
709
+ function errorFromCode(code, message) {
710
+ if (code >= 200 && code < 300) return null;
711
+ switch (code) {
595
712
  case 400:
596
- return new v(t);
713
+ return new BadRequestError(message);
597
714
  case 401:
598
- return new J(t);
715
+ return new UnauthorizedError(message);
599
716
  case 402:
600
- return new z(t);
717
+ return new PaymentRequiredError(message);
601
718
  case 403:
602
- return new Z(t);
719
+ return new ForbiddenError(message);
603
720
  case 404:
604
- return new V(t);
721
+ return new NotFoundError(message);
605
722
  case 405:
606
- return new X(t);
723
+ return new MethodNotAllowedError(message);
607
724
  case 406:
608
- return new Q(t);
725
+ return new NotAcceptableError(message);
609
726
  case 500:
610
- return new _(t);
727
+ return new InternalServerError(message);
611
728
  case 501:
612
- return new tt(t);
729
+ return new NotImplementedError(message);
613
730
  case 502:
614
- return new et(t);
731
+ return new BadGatewayError(message);
615
732
  case 503:
616
- return new rt(t);
733
+ return new ServiceUnavailableError(message);
617
734
  case 504:
618
- return new nt(t);
735
+ return new GatewayTimeoutError(message);
619
736
  default:
620
- return new y(t, r);
621
- }
622
- }
623
- const E = class E {
624
- constructor(t = {}) {
625
- c(this, "interceptors", {});
626
- c(this, "headers", {});
627
- c(this, "url");
628
- this.url = t.url ?? null, this.headers = t.headers || {}, t.interceptors && t.interceptors.forEach((e) => E.addInterceptor(e));
737
+ return new CustomError(message, code);
738
+ }
739
+ }
740
+ const _Http = class _Http {
741
+ constructor(defaults = {}) {
742
+ __publicField(this, "interceptors", {});
743
+ __publicField(this, "headers", {});
744
+ __publicField(this, "url");
745
+ this.url = defaults.url ?? null;
746
+ this.headers = defaults.headers || {};
747
+ if (defaults.interceptors) {
748
+ defaults.interceptors.forEach((i) => _Http.addInterceptor(i));
749
+ }
629
750
  }
630
- static addInterceptor(t) {
631
- const e = Object.keys(E.interceptors).length.toString();
632
- return E.interceptors[e] = t, () => {
633
- E.interceptors[e] = null;
751
+ static addInterceptor(fn) {
752
+ const key = Object.keys(_Http.interceptors).length.toString();
753
+ _Http.interceptors[key] = fn;
754
+ return () => {
755
+ _Http.interceptors[key] = null;
634
756
  };
635
757
  }
636
- addInterceptor(t) {
637
- const e = Object.keys(this.interceptors).length.toString();
638
- return this.interceptors[e] = t, () => {
639
- this.interceptors[e] = null;
758
+ addInterceptor(fn) {
759
+ const key = Object.keys(this.interceptors).length.toString();
760
+ this.interceptors[key] = fn;
761
+ return () => {
762
+ this.interceptors[key] = null;
640
763
  };
641
764
  }
642
- request(t = {}) {
643
- var s;
644
- if (!this.url && !t.url) throw new Error("URL needs to be set");
645
- let e = ((s = t.url) != null && s.startsWith("http") ? t.url : (this.url || "") + (t.url || "")).replace(/([^:]\/)\/+/g, "$1");
646
- if (t.fragment && (e.includes("#") ? e.replace(/#.*(\?|\n)/g, (o, i) => `#${t.fragment}${i}`) : e += "#" + t.fragment), t.query) {
647
- const o = Array.isArray(t.query) ? t.query : Object.keys(t.query).map((i) => ({ key: i, value: t.query[i] }));
648
- e += (e.includes("?") ? "&" : "?") + o.map((i) => `${i.key}=${i.value}`).join("&");
765
+ request(opts = {}) {
766
+ var _a;
767
+ if (!this.url && !opts.url) throw new Error("URL needs to be set");
768
+ let url = (((_a = opts.url) == null ? void 0 : _a.startsWith("http")) ? opts.url : (this.url || "") + (opts.url || "")).replace(/([^:]\/)\/+/g, "$1");
769
+ if (opts.fragment) url.includes("#") ? url.replace(/#.*(\?|\n)/g, (match, arg1) => `#${opts.fragment}${arg1}`) : url += "#" + opts.fragment;
770
+ if (opts.query) {
771
+ const q = Array.isArray(opts.query) ? opts.query : Object.keys(opts.query).map((k) => ({ key: k, value: opts.query[k] }));
772
+ url += (url.includes("?") ? "&" : "?") + q.map((q2) => `${q2.key}=${q2.value}`).join("&");
649
773
  }
650
- const n = ct({
651
- "Content-Type": t.body ? t.body instanceof FormData ? "multipart/form-data" : "application/json" : void 0,
652
- ...E.headers,
774
+ const headers = clean({
775
+ "Content-Type": !opts.body ? void 0 : opts.body instanceof FormData ? "multipart/form-data" : "application/json",
776
+ ..._Http.headers,
653
777
  ...this.headers,
654
- ...t.headers
778
+ ...opts.headers
655
779
  });
656
- return typeof t.body == "object" && t.body != null && n["Content-Type"] == "application/json" && (t.body = JSON.stringify(t.body)), new b((o, i, u) => {
780
+ if (typeof opts.body == "object" && opts.body != null && headers["Content-Type"] == "application/json")
781
+ opts.body = JSON.stringify(opts.body);
782
+ return new PromiseProgress((res, rej, prog) => {
657
783
  try {
658
- fetch(e, {
659
- headers: n,
660
- method: t.method || (t.body ? "POST" : "GET"),
661
- body: t.body
662
- }).then(async (a) => {
663
- var G, U;
664
- for (let l of [...Object.values(E.interceptors), ...Object.values(this.interceptors)])
665
- await new Promise((C) => l(a, () => C()));
666
- const $ = a.headers.get("Content-Length"), j = $ ? parseInt($, 10) : 0;
667
- let P = 0;
668
- const T = (G = a.body) == null ? void 0 : G.getReader(), st = new ReadableStream({
669
- start(l) {
670
- function C() {
671
- T == null || T.read().then((A) => {
672
- if (A.done) return l.close();
673
- P += A.value.byteLength, u(P / j), l.enqueue(A.value), C();
674
- }).catch((A) => l.error(A));
784
+ fetch(url, {
785
+ headers,
786
+ method: opts.method || (opts.body ? "POST" : "GET"),
787
+ body: opts.body
788
+ }).then(async (resp) => {
789
+ var _a2, _b;
790
+ for (let fn of [...Object.values(_Http.interceptors), ...Object.values(this.interceptors)]) {
791
+ await new Promise((res2) => fn(resp, () => res2()));
792
+ }
793
+ const contentLength = resp.headers.get("Content-Length");
794
+ const total = contentLength ? parseInt(contentLength, 10) : 0;
795
+ let loaded = 0;
796
+ const reader = (_a2 = resp.body) == null ? void 0 : _a2.getReader();
797
+ const stream = new ReadableStream({
798
+ start(controller) {
799
+ function push() {
800
+ reader == null ? void 0 : reader.read().then((event) => {
801
+ if (event.done) return controller.close();
802
+ loaded += event.value.byteLength;
803
+ prog(loaded / total);
804
+ controller.enqueue(event.value);
805
+ push();
806
+ }).catch((error) => controller.error(error));
675
807
  }
676
- C();
808
+ push();
677
809
  }
678
810
  });
679
- if (a.data = new Response(st), t.decode == null || t.decode) {
680
- const l = (U = a.headers.get("Content-Type")) == null ? void 0 : U.toLowerCase();
681
- l != null && l.includes("form") ? a.data = await a.data.formData() : l != null && l.includes("json") ? a.data = await a.data.json() : l != null && l.includes("text") ? a.data = await a.data.text() : l != null && l.includes("application") && (a.data = await a.data.blob());
811
+ resp.data = new Response(stream);
812
+ if (opts.decode == null || opts.decode) {
813
+ const content = (_b = resp.headers.get("Content-Type")) == null ? void 0 : _b.toLowerCase();
814
+ if (content == null ? void 0 : content.includes("form")) resp.data = await resp.data.formData();
815
+ else if (content == null ? void 0 : content.includes("json")) resp.data = await resp.data.json();
816
+ else if (content == null ? void 0 : content.includes("text")) resp.data = await resp.data.text();
817
+ else if (content == null ? void 0 : content.includes("application")) resp.data = await resp.data.blob();
682
818
  }
683
- a.ok ? o(a) : i(a);
684
- }).catch((a) => i(a));
685
- } catch (a) {
686
- i(a);
819
+ if (resp.ok) res(resp);
820
+ else rej(resp);
821
+ }).catch((err) => rej(err));
822
+ } catch (err) {
823
+ rej(err);
687
824
  }
688
825
  });
689
826
  }
690
827
  };
691
- c(E, "interceptors", {}), c(E, "headers", {});
692
- let F = E;
693
- function qt(r) {
694
- const t = r.split(".")[1].replace(/-/g, "+").replace(/_/g, "/");
695
- return I(decodeURIComponent(atob(t).split("").map(function(e) {
696
- return "%" + ("00" + e.charCodeAt(0).toString(16)).slice(-2);
828
+ __publicField(_Http, "interceptors", {});
829
+ __publicField(_Http, "headers", {});
830
+ let Http = _Http;
831
+ function jwtDecode(token) {
832
+ const base64 = token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/");
833
+ return JSONAttemptParse(decodeURIComponent(atob(base64).split("").map(function(c) {
834
+ return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
697
835
  }).join("")));
698
836
  }
699
- const R = {
837
+ const CliEffects = {
700
838
  CLEAR: "\x1B[0m",
701
839
  BRIGHT: "\x1B[1m",
702
840
  DIM: "\x1B[2m",
@@ -704,7 +842,8 @@ const R = {
704
842
  BLINK: "\x1B[5m",
705
843
  REVERSE: "\x1B[7m",
706
844
  HIDDEN: "\x1B[8m"
707
- }, L = {
845
+ };
846
+ const CliForeground = {
708
847
  BLACK: "\x1B[30m",
709
848
  RED: "\x1B[31m",
710
849
  GREEN: "\x1B[32m",
@@ -721,7 +860,8 @@ const R = {
721
860
  LIGHT_MAGENTA: "\x1B[95m",
722
861
  LIGHT_CYAN: "\x1B[96m",
723
862
  WHITE: "\x1B[97m"
724
- }, Ft = {
863
+ };
864
+ const CliBackground = {
725
865
  BLACK: "\x1B[40m",
726
866
  RED: "\x1B[41m",
727
867
  GREEN: "\x1B[42m",
@@ -732,246 +872,307 @@ const R = {
732
872
  WHITE: "\x1B[47m",
733
873
  GREY: "\x1B[100m"
734
874
  };
735
- var dt = /* @__PURE__ */ ((r) => (r[r.ERROR = 0] = "ERROR", r[r.WARN = 1] = "WARN", r[r.INFO = 2] = "INFO", r[r.LOG = 3] = "LOG", r[r.DEBUG = 4] = "DEBUG", r))(dt || {});
736
- const m = class m extends W {
737
- constructor(t) {
738
- super(), this.namespace = t;
739
- }
740
- format(...t) {
741
- const e = /* @__PURE__ */ new Date();
742
- return `${`${e.getFullYear()}-${e.getMonth() + 1}-${e.getDate()} ${e.getHours().toString().padStart(2, "0")}:${e.getMinutes().toString().padStart(2, "0")}:${e.getSeconds().toString().padStart(2, "0")}.${e.getMilliseconds().toString().padEnd(3, "0")}`}${this.namespace ? ` [${this.namespace}]` : ""} ${t.map((s) => typeof s == "string" ? s : ut(s, 2)).join(" ")}`;
743
- }
744
- debug(...t) {
745
- if (m.LOG_LEVEL < 4) return;
746
- const e = this.format(...t);
747
- m.emit(4, e), console.debug(L.LIGHT_GREY + e + R.CLEAR);
748
- }
749
- log(...t) {
750
- if (m.LOG_LEVEL < 3) return;
751
- const e = this.format(...t);
752
- m.emit(3, e), console.log(R.CLEAR + e);
753
- }
754
- info(...t) {
755
- if (m.LOG_LEVEL < 2) return;
756
- const e = this.format(...t);
757
- m.emit(2, e), console.info(L.BLUE + e + R.CLEAR);
758
- }
759
- warn(...t) {
760
- if (m.LOG_LEVEL < 1) return;
761
- const e = this.format(...t);
762
- m.emit(1, e), console.warn(L.YELLOW + e + R.CLEAR);
763
- }
764
- error(...t) {
765
- if (m.LOG_LEVEL < 0) return;
766
- const e = this.format(...t);
767
- m.emit(0, e), console.error(L.RED + e + R.CLEAR);
875
+ var LOG_LEVEL = /* @__PURE__ */ ((LOG_LEVEL2) => {
876
+ LOG_LEVEL2[LOG_LEVEL2["ERROR"] = 0] = "ERROR";
877
+ LOG_LEVEL2[LOG_LEVEL2["WARN"] = 1] = "WARN";
878
+ LOG_LEVEL2[LOG_LEVEL2["INFO"] = 2] = "INFO";
879
+ LOG_LEVEL2[LOG_LEVEL2["LOG"] = 3] = "LOG";
880
+ LOG_LEVEL2[LOG_LEVEL2["DEBUG"] = 4] = "DEBUG";
881
+ return LOG_LEVEL2;
882
+ })(LOG_LEVEL || {});
883
+ const _Logger = class _Logger extends TypedEmitter {
884
+ constructor(namespace) {
885
+ super();
886
+ this.namespace = namespace;
887
+ }
888
+ format(...text) {
889
+ const now = /* @__PURE__ */ new Date();
890
+ const timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${now.getHours().toString().padStart(2, "0")}:${now.getMinutes().toString().padStart(2, "0")}:${now.getSeconds().toString().padStart(2, "0")}.${now.getMilliseconds().toString().padEnd(3, "0")}`;
891
+ return `${timestamp}${this.namespace ? ` [${this.namespace}]` : ""} ${text.map((t) => typeof t == "string" ? t : JSONSanitize(t, 2)).join(" ")}`;
892
+ }
893
+ debug(...args) {
894
+ if (_Logger.LOG_LEVEL < 4) return;
895
+ const str = this.format(...args);
896
+ _Logger.emit(4, str);
897
+ console.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);
898
+ }
899
+ log(...args) {
900
+ if (_Logger.LOG_LEVEL < 3) return;
901
+ const str = this.format(...args);
902
+ _Logger.emit(3, str);
903
+ console.log(CliEffects.CLEAR + str);
904
+ }
905
+ info(...args) {
906
+ if (_Logger.LOG_LEVEL < 2) return;
907
+ const str = this.format(...args);
908
+ _Logger.emit(2, str);
909
+ console.info(CliForeground.BLUE + str + CliEffects.CLEAR);
910
+ }
911
+ warn(...args) {
912
+ if (_Logger.LOG_LEVEL < 1) return;
913
+ const str = this.format(...args);
914
+ _Logger.emit(1, str);
915
+ console.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);
916
+ }
917
+ error(...args) {
918
+ if (_Logger.LOG_LEVEL < 0) return;
919
+ const str = this.format(...args);
920
+ _Logger.emit(0, str);
921
+ console.error(CliForeground.RED + str + CliEffects.CLEAR);
768
922
  }
769
923
  };
770
- c(m, "LOG_LEVEL", 4);
771
- let Y = m;
772
- function Yt(r) {
773
- const t = (u, a) => a < 1e-7 ? u : t(a, ~~(u % a)), e = r.toString().length - 2;
774
- let n = Math.pow(10, e), s = r * n;
775
- const o = t(s, n);
776
- s = ~~(s / o), n = ~~(n / o);
777
- const i = ~~(s / n);
778
- return s -= i * n, `${i ? i + " " : ""}${~~s}/${~~n}`;
779
- }
780
- function Ht(r) {
781
- let t = r.split(" ");
782
- const e = t.length == 2 ? Number(t[0]) : 0;
783
- return t = t.pop().split("/"), e + Number(t[0]) / Number(t[1]);
784
- }
785
- const D = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", M = "0123456789", k = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/", pt = D + M + k;
786
- function Kt(r, t = 2) {
787
- if (r === 0) return "0 Bytes";
788
- const e = 1024, n = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"], s = Math.floor(Math.log(r) / Math.log(e));
789
- return parseFloat((r / Math.pow(e, s)).toFixed(t)) + " " + n[s];
790
- }
791
- function Wt(r) {
792
- const t = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(r);
793
- if (!t) throw new Error(`Number cannot be parsed: ${r}`);
794
- return `${t[1] ?? ""} (${t[2]}) ${t[3]}-${t[4]}`.trim();
795
- }
796
- function vt(r, t, e) {
797
- return `${r.slice(0, e)}${t}${r.slice(e + 1)}`;
798
- }
799
- function Jt(r, t, e = " ", n = !0) {
800
- return n ? r.toString().padStart(t, e) : r.toString().padEnd(t, e);
801
- }
802
- function zt(r) {
803
- return Array(r).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
804
- }
805
- function Zt(r, t = pt) {
806
- return Array(r).fill(null).map(() => {
807
- const e = ~~(Math.random() * t.length);
808
- return t[e];
924
+ __publicField(_Logger, "LOG_LEVEL", 4);
925
+ let Logger = _Logger;
926
+ function dec2Frac(num) {
927
+ const gcd = (a, b) => {
928
+ if (b < 1e-7) return a;
929
+ return gcd(b, ~~(a % b));
930
+ };
931
+ const len = num.toString().length - 2;
932
+ let denominator = Math.pow(10, len);
933
+ let numerator = num * denominator;
934
+ const divisor = gcd(numerator, denominator);
935
+ numerator = ~~(numerator / divisor);
936
+ denominator = ~~(denominator / divisor);
937
+ const remainder = ~~(numerator / denominator);
938
+ numerator -= remainder * denominator;
939
+ return `${remainder ? remainder + " " : ""}${~~numerator}/${~~denominator}`;
940
+ }
941
+ function fracToDec(frac) {
942
+ let split = frac.split(" ");
943
+ const whole = split.length == 2 ? Number(split[0]) : 0;
944
+ split = split.pop().split("/");
945
+ return whole + Number(split[0]) / Number(split[1]);
946
+ }
947
+ const LETTER_LIST = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
948
+ const NUMBER_LIST = "0123456789";
949
+ const SYMBOL_LIST = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/";
950
+ const CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;
951
+ function formatBytes(bytes, decimals = 2) {
952
+ if (bytes === 0) return "0 Bytes";
953
+ const k = 1024;
954
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
955
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
956
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + " " + sizes[i];
957
+ }
958
+ function formatPhoneNumber(number) {
959
+ const parts = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(number);
960
+ if (!parts) throw new Error(`Number cannot be parsed: ${number}`);
961
+ return `${parts[1] ?? ""} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();
962
+ }
963
+ function insertAt(target, str, index) {
964
+ return `${target.slice(0, index)}${str}${target.slice(index + 1)}`;
965
+ }
966
+ function pad(text, length, char = " ", start = true) {
967
+ if (start) return text.toString().padStart(length, char);
968
+ return text.toString().padEnd(length, char);
969
+ }
970
+ function randomHex(length) {
971
+ return Array(length).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
972
+ }
973
+ function randomString(length, pool = CHAR_LIST) {
974
+ return Array(length).fill(null).map(() => {
975
+ const n = ~~(Math.random() * pool.length);
976
+ return pool[n];
809
977
  }).join("");
810
978
  }
811
- function Vt(r, t = !1, e = !1, n = !1) {
812
- if (!t && !e && !n) throw new Error("Must enable at least one: letters, numbers, symbols");
813
- return Array(r).fill(null).map(() => {
814
- let s;
979
+ function randomStringBuilder(length, letters = false, numbers = false, symbols = false) {
980
+ if (!letters && !numbers && !symbols) throw new Error("Must enable at least one: letters, numbers, symbols");
981
+ return Array(length).fill(null).map(() => {
982
+ let c;
815
983
  do {
816
- const o = ~~(Math.random() * 3);
817
- t && o == 0 ? s = D[~~(Math.random() * D.length)] : e && o == 1 ? s = M[~~(Math.random() * M.length)] : n && o == 2 && (s = k[~~(Math.random() * k.length)]);
818
- } while (!s);
819
- return s;
984
+ const type = ~~(Math.random() * 3);
985
+ if (letters && type == 0) {
986
+ c = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];
987
+ } else if (numbers && type == 1) {
988
+ c = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];
989
+ } else if (symbols && type == 2) {
990
+ c = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];
991
+ }
992
+ } while (!c);
993
+ return c;
820
994
  }).join("");
821
995
  }
822
- function Xt(r, t) {
823
- if (typeof t == "string" && (t = new RegExp(t, "g")), !t.global)
996
+ function matchAll(value, regex) {
997
+ if (typeof regex === "string") {
998
+ regex = new RegExp(regex, "g");
999
+ }
1000
+ if (!regex.global) {
824
1001
  throw new TypeError("Regular expression must be global.");
825
- let e = [], n;
826
- for (; (n = t.exec(r)) !== null; )
827
- e.push(n);
828
- return e;
1002
+ }
1003
+ let ret = [];
1004
+ let match;
1005
+ while ((match = regex.exec(value)) !== null) {
1006
+ ret.push(match);
1007
+ }
1008
+ return ret;
829
1009
  }
830
- function Qt(r) {
831
- const t = new RegExp(
1010
+ function parseUrl(url) {
1011
+ const processed = new RegExp(
832
1012
  "(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$",
833
1013
  "gm"
834
- ).exec(r), e = (t == null ? void 0 : t.groups) ?? {}, n = e.domain.split(".");
835
- if (e.port != null && (e.port = Number(e.port)), n.length > 2 && (e.domain = n.splice(-2, 2).join("."), e.subdomain = n.join(".")), e.query) {
836
- const s = e.query.split("&"), o = {};
837
- s.forEach((i) => {
838
- const [u, a] = i.split("=");
839
- o[u] = a;
840
- }), e.query = o;
1014
+ ).exec(url);
1015
+ const groups = (processed == null ? void 0 : processed.groups) ?? {};
1016
+ const domains = groups.domain.split(".");
1017
+ if (groups["port"] != null) groups.port = Number(groups.port);
1018
+ if (domains.length > 2) {
1019
+ groups.domain = domains.splice(-2, 2).join(".");
1020
+ groups.subdomain = domains.join(".");
1021
+ }
1022
+ if (groups.query) {
1023
+ const split = groups.query.split("&"), query = {};
1024
+ split.forEach((q) => {
1025
+ const [key, val] = q.split("=");
1026
+ query[key] = val;
1027
+ });
1028
+ groups.query = query;
841
1029
  }
842
- return e;
1030
+ return groups;
843
1031
  }
844
- function gt(r) {
845
- var t = yt(wt(Et(mt(r), 8 * r.length)));
846
- return t.toLowerCase();
1032
+ function md5(d) {
1033
+ var r = M(V(Y(X(d), 8 * d.length)));
1034
+ return r.toLowerCase();
847
1035
  }
848
- function yt(r) {
849
- for (var t, e = "0123456789ABCDEF", n = "", s = 0; s < r.length; s++) t = r.charCodeAt(s), n += e.charAt(t >>> 4 & 15) + e.charAt(15 & t);
850
- return n;
1036
+ function M(d) {
1037
+ for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++) _ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _);
1038
+ return f;
851
1039
  }
852
- function mt(r) {
853
- for (var t = Array(r.length >> 2), e = 0; e < t.length; e++) t[e] = 0;
854
- for (e = 0; e < 8 * r.length; e += 8) t[e >> 5] |= (255 & r.charCodeAt(e / 8)) << e % 32;
855
- return t;
1040
+ function X(d) {
1041
+ for (var _ = Array(d.length >> 2), m = 0; m < _.length; m++) _[m] = 0;
1042
+ for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
1043
+ return _;
856
1044
  }
857
- function wt(r) {
858
- for (var t = "", e = 0; e < 32 * r.length; e += 8) t += String.fromCharCode(r[e >> 5] >>> e % 32 & 255);
859
- return t;
1045
+ function V(d) {
1046
+ for (var _ = "", m = 0; m < 32 * d.length; m += 8) _ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
1047
+ return _;
860
1048
  }
861
- function Et(r, t) {
862
- r[t >> 5] |= 128 << t % 32, r[14 + (t + 64 >>> 9 << 4)] = t;
863
- for (var e = 1732584193, n = -271733879, s = -1732584194, o = 271733878, i = 0; i < r.length; i += 16) {
864
- var u = e, a = n, $ = s, j = o;
865
- n = p(n = p(n = p(n = p(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, s = h(s, o = h(o, e = h(e, n, s, o, r[i + 0], 7, -680876936), n, s, r[i + 1], 12, -389564586), e, n, r[i + 2], 17, 606105819), o, e, r[i + 3], 22, -1044525330), s = h(s, o = h(o, e = h(e, n, s, o, r[i + 4], 7, -176418897), n, s, r[i + 5], 12, 1200080426), e, n, r[i + 6], 17, -1473231341), o, e, r[i + 7], 22, -45705983), s = h(s, o = h(o, e = h(e, n, s, o, r[i + 8], 7, 1770035416), n, s, r[i + 9], 12, -1958414417), e, n, r[i + 10], 17, -42063), o, e, r[i + 11], 22, -1990404162), s = h(s, o = h(o, e = h(e, n, s, o, r[i + 12], 7, 1804603682), n, s, r[i + 13], 12, -40341101), e, n, r[i + 14], 17, -1502002290), o, e, r[i + 15], 22, 1236535329), s = f(s, o = f(o, e = f(e, n, s, o, r[i + 1], 5, -165796510), n, s, r[i + 6], 9, -1069501632), e, n, r[i + 11], 14, 643717713), o, e, r[i + 0], 20, -373897302), s = f(s, o = f(o, e = f(e, n, s, o, r[i + 5], 5, -701558691), n, s, r[i + 10], 9, 38016083), e, n, r[i + 15], 14, -660478335), o, e, r[i + 4], 20, -405537848), s = f(s, o = f(o, e = f(e, n, s, o, r[i + 9], 5, 568446438), n, s, r[i + 14], 9, -1019803690), e, n, r[i + 3], 14, -187363961), o, e, r[i + 8], 20, 1163531501), s = f(s, o = f(o, e = f(e, n, s, o, r[i + 13], 5, -1444681467), n, s, r[i + 2], 9, -51403784), e, n, r[i + 7], 14, 1735328473), o, e, r[i + 12], 20, -1926607734), s = d(s, o = d(o, e = d(e, n, s, o, r[i + 5], 4, -378558), n, s, r[i + 8], 11, -2022574463), e, n, r[i + 11], 16, 1839030562), o, e, r[i + 14], 23, -35309556), s = d(s, o = d(o, e = d(e, n, s, o, r[i + 1], 4, -1530992060), n, s, r[i + 4], 11, 1272893353), e, n, r[i + 7], 16, -155497632), o, e, r[i + 10], 23, -1094730640), s = d(s, o = d(o, e = d(e, n, s, o, r[i + 13], 4, 681279174), n, s, r[i + 0], 11, -358537222), e, n, r[i + 3], 16, -722521979), o, e, r[i + 6], 23, 76029189), s = d(s, o = d(o, e = d(e, n, s, o, r[i + 9], 4, -640364487), n, s, r[i + 12], 11, -421815835), e, n, r[i + 15], 16, 530742520), o, e, r[i + 2], 23, -995338651), s = p(s, o = p(o, e = p(e, n, s, o, r[i + 0], 6, -198630844), n, s, r[i + 7], 10, 1126891415), e, n, r[i + 14], 15, -1416354905), o, e, r[i + 5], 21, -57434055), s = p(s, o = p(o, e = p(e, n, s, o, r[i + 12], 6, 1700485571), n, s, r[i + 3], 10, -1894986606), e, n, r[i + 10], 15, -1051523), o, e, r[i + 1], 21, -2054922799), s = p(s, o = p(o, e = p(e, n, s, o, r[i + 8], 6, 1873313359), n, s, r[i + 15], 10, -30611744), e, n, r[i + 6], 15, -1560198380), o, e, r[i + 13], 21, 1309151649), s = p(s, o = p(o, e = p(e, n, s, o, r[i + 4], 6, -145523070), n, s, r[i + 11], 10, -1120210379), e, n, r[i + 2], 15, 718787259), o, e, r[i + 9], 21, -343485551), e = x(e, u), n = x(n, a), s = x(s, $), o = x(o, j);
1049
+ function Y(d, _) {
1050
+ d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _;
1051
+ for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {
1052
+ var h = m, t = f, g = r, e = i;
1053
+ 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);
866
1054
  }
867
- return Array(e, n, s, o);
1055
+ return Array(m, f, r, i);
868
1056
  }
869
- function N(r, t, e, n, s, o) {
870
- return x(St(x(x(t, r), x(n, o)), s), e);
1057
+ function md5_cmn(d, _, m, f, r, i) {
1058
+ return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m);
871
1059
  }
872
- function h(r, t, e, n, s, o, i) {
873
- return N(t & e | ~t & n, r, t, s, o, i);
1060
+ function md5_ff(d, _, m, f, r, i, n) {
1061
+ return md5_cmn(_ & m | ~_ & f, d, _, r, i, n);
874
1062
  }
875
- function f(r, t, e, n, s, o, i) {
876
- return N(t & n | e & ~n, r, t, s, o, i);
1063
+ function md5_gg(d, _, m, f, r, i, n) {
1064
+ return md5_cmn(_ & f | m & ~f, d, _, r, i, n);
877
1065
  }
878
- function d(r, t, e, n, s, o, i) {
879
- return N(t ^ e ^ n, r, t, s, o, i);
1066
+ function md5_hh(d, _, m, f, r, i, n) {
1067
+ return md5_cmn(_ ^ m ^ f, d, _, r, i, n);
880
1068
  }
881
- function p(r, t, e, n, s, o, i) {
882
- return N(e ^ (t | ~n), r, t, s, o, i);
1069
+ function md5_ii(d, _, m, f, r, i, n) {
1070
+ return md5_cmn(m ^ (_ | ~f), d, _, r, i, n);
883
1071
  }
884
- function x(r, t) {
885
- var e = (65535 & r) + (65535 & t);
886
- return (r >> 16) + (t >> 16) + (e >> 16) << 16 | 65535 & e;
1072
+ function safe_add(d, _) {
1073
+ var m = (65535 & d) + (65535 & _);
1074
+ return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m;
887
1075
  }
888
- function St(r, t) {
889
- return r << t | r >>> 32 - t;
1076
+ function bit_rol(d, _) {
1077
+ return d << _ | d >>> 32 - _;
890
1078
  }
891
- function _t(r) {
892
- return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(r);
1079
+ function validateEmail(email) {
1080
+ return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email);
893
1081
  }
894
- function te(r, t = "mp") {
895
- return r ? `https://www.gravatar.com/avatar/${gt(r)}?d=${t}` : "";
1082
+ function gravatar(email, def = "mp") {
1083
+ if (!email) return "";
1084
+ return `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;
896
1085
  }
897
- function ee(r) {
898
- return r.replace(/[.*+?^${}()|\[\]\\]/g, "\\$&");
1086
+ function escapeRegex(value) {
1087
+ return value.replace(/[.*+?^${}()|\[\]\\]/g, "\\$&");
899
1088
  }
900
- function re(r, ...t) {
901
- const e = [];
902
- for (let n = 0; n < r.length || n < t.length; n++)
903
- r[n] && e.push(r[n]), t[n] && e.push(t[n]);
904
- return new g(e.join(""));
1089
+ function PE(str, ...args) {
1090
+ const combined = [];
1091
+ for (let i = 0; i < str.length || i < args.length; i++) {
1092
+ if (str[i]) combined.push(str[i]);
1093
+ if (args[i]) combined.push(args[i]);
1094
+ }
1095
+ return new PathEvent(combined.join(""));
905
1096
  }
906
- function xt(r, ...t) {
907
- let e = [];
908
- for (let o = 0; o < r.length || o < t.length; o++)
909
- r[o] && e.push(r[o]), t[o] && e.push(t[o]);
910
- const [n, s] = e.join("").split(":");
911
- return g.toString(n, s == null ? void 0 : s.split(""));
1097
+ function PES(str, ...args) {
1098
+ let combined = [];
1099
+ for (let i = 0; i < str.length || i < args.length; i++) {
1100
+ if (str[i]) combined.push(str[i]);
1101
+ if (args[i]) combined.push(args[i]);
1102
+ }
1103
+ const [paths, methods] = combined.join("").split(":");
1104
+ return PathEvent.toString(paths, methods == null ? void 0 : methods.split(""));
912
1105
  }
913
- class H extends Error {
1106
+ class PathError extends Error {
914
1107
  }
915
- class g {
916
- constructor(t) {
1108
+ class PathEvent {
1109
+ constructor(Event) {
917
1110
  /** First directory in path */
918
- c(this, "module");
1111
+ __publicField(this, "module");
919
1112
  /** Entire path, including the module & name */
920
- c(this, "fullPath");
1113
+ __publicField(this, "fullPath");
921
1114
  /** Path including the name, excluding the module */
922
- c(this, "path");
1115
+ __publicField(this, "path");
923
1116
  /** Last sagment of path */
924
- c(this, "name");
1117
+ __publicField(this, "name");
925
1118
  /** List of methods */
926
- c(this, "methods");
927
- var i;
928
- if (typeof t == "object") return Object.assign(this, t);
929
- let [e, n, s] = t.split(":");
930
- s || (s = n || "*"), (e == "*" || !e && s == "*") && (e = "", s = "*");
931
- let o = e.split("/").filter((u) => !!u);
932
- this.module = ((i = o.splice(0, 1)[0]) == null ? void 0 : i.toLowerCase()) || "", this.fullPath = e, this.path = o.join("/"), this.name = o.pop() || "", this.methods = new w(s.split(""));
1119
+ __publicField(this, "methods");
1120
+ var _a;
1121
+ if (typeof Event == "object") return Object.assign(this, Event);
1122
+ let [p, scope, method] = Event.split(":");
1123
+ if (!method) method = scope || "*";
1124
+ if (p == "*" || !p && method == "*") {
1125
+ p = "";
1126
+ method = "*";
1127
+ }
1128
+ let temp = p.split("/").filter((p2) => !!p2);
1129
+ this.module = ((_a = temp.splice(0, 1)[0]) == null ? void 0 : _a.toLowerCase()) || "";
1130
+ this.fullPath = p;
1131
+ this.path = temp.join("/");
1132
+ this.name = temp.pop() || "";
1133
+ this.methods = new ASet(method.split(""));
933
1134
  }
934
1135
  /** All/Wildcard specified */
935
1136
  get all() {
936
1137
  return this.methods.has("*");
937
1138
  }
938
- set all(t) {
939
- t ? new w(["*"]) : this.methods.delete("*");
1139
+ set all(v) {
1140
+ v ? new ASet(["*"]) : this.methods.delete("*");
940
1141
  }
941
1142
  /** None specified */
942
1143
  get none() {
943
1144
  return this.methods.has("n");
944
1145
  }
945
- set none(t) {
946
- t ? this.methods = new w(["n"]) : this.methods.delete("n");
1146
+ set none(v) {
1147
+ v ? this.methods = new ASet(["n"]) : this.methods.delete("n");
947
1148
  }
948
1149
  /** Create method specified */
949
1150
  get create() {
950
1151
  return !this.methods.has("n") && (this.methods.has("*") || this.methods.has("c"));
951
1152
  }
952
- set create(t) {
953
- t ? this.methods.delete("n").add("c") : this.methods.delete("c");
1153
+ set create(v) {
1154
+ v ? this.methods.delete("n").add("c") : this.methods.delete("c");
954
1155
  }
955
1156
  /** Read method specified */
956
1157
  get read() {
957
1158
  return !this.methods.has("n") && (this.methods.has("*") || this.methods.has("r"));
958
1159
  }
959
- set read(t) {
960
- t ? this.methods.delete("n").add("r") : this.methods.delete("r");
1160
+ set read(v) {
1161
+ v ? this.methods.delete("n").add("r") : this.methods.delete("r");
961
1162
  }
962
1163
  /** Update method specified */
963
1164
  get update() {
964
1165
  return !this.methods.has("n") && (this.methods.has("*") || this.methods.has("u"));
965
1166
  }
966
- set update(t) {
967
- t ? this.methods.delete("n").add("u") : this.methods.delete("u");
1167
+ set update(v) {
1168
+ v ? this.methods.delete("n").add("u") : this.methods.delete("u");
968
1169
  }
969
1170
  /** Delete method specified */
970
1171
  get delete() {
971
1172
  return !this.methods.has("n") && (this.methods.has("*") || this.methods.has("d"));
972
1173
  }
973
- set delete(t) {
974
- t ? this.methods.delete("n").add("d") : this.methods.delete("d");
1174
+ set delete(v) {
1175
+ v ? this.methods.delete("n").add("d") : this.methods.delete("d");
975
1176
  }
976
1177
  /**
977
1178
  * Combine multiple events into one parsed object. Longest path takes precedent, but all subsequent methods are
@@ -980,13 +1181,20 @@ class g {
980
1181
  * @param {string | PathEvent} paths Events as strings or pre-parsed
981
1182
  * @return {PathEvent} Final combined permission
982
1183
  */
983
- static combine(...t) {
984
- let e = !1;
985
- const n = t.map((s) => new g(s)).toSorted((s, o) => {
986
- const i = s.fullPath.length, u = o.fullPath.length;
987
- return i < u ? 1 : i > u ? -1 : 0;
988
- }).reduce((s, o) => (o.none && (e = !0), s ? (e || (o.all && (s.all = !0), (o.all || o.create) && (s.create = !0), (o.all || o.read) && (s.read = !0), (o.all || o.update) && (s.update = !0), (o.all || o.delete) && (s.delete = !0), s.methods = [...s.methods, ...o.methods]), s) : o), null);
989
- return n.methods = new w(n.methods), n.raw = xt`${n.fullPath}:${n.methods}`, n;
1184
+ static combine(...paths) {
1185
+ let hitNone = false;
1186
+ const combined = paths.map((p) => new PathEvent(p)).toSorted((p1, p2) => {
1187
+ const l1 = p1.fullPath.length, l2 = p2.fullPath.length;
1188
+ return l1 < l2 ? 1 : l1 > l2 ? -1 : 0;
1189
+ }).reduce((acc, p) => {
1190
+ if (p.none) hitNone = true;
1191
+ if (!acc) return p;
1192
+ if (hitNone) return acc;
1193
+ acc.methods = [...acc.methods, ...p.methods];
1194
+ return acc;
1195
+ }, null);
1196
+ combined.methods = new ASet(combined.methods);
1197
+ return combined;
990
1198
  }
991
1199
  /**
992
1200
  * Squash 2 sets of paths & return true if any overlap is found
@@ -995,14 +1203,15 @@ class g {
995
1203
  * @param has Target must have at least one of these path
996
1204
  * @return {boolean} Whether there is any overlap
997
1205
  */
998
- static has(t, ...e) {
999
- const n = S(e).map((o) => new g(o)), s = S(t).map((o) => new g(o));
1000
- return !!n.find((o) => {
1001
- if (!o.fullPath && o.all) return !0;
1002
- const i = s.filter((a) => o.fullPath.startsWith(a.fullPath));
1003
- if (!i.length) return !1;
1004
- const u = g.combine(...i);
1005
- return !u.none && (u.all || new w(u.methods).intersection(new w(o.methods)).length);
1206
+ static has(target, ...has) {
1207
+ const parsedRequired = makeArray(has).map((pe) => new PathEvent(pe));
1208
+ const parsedTarget = makeArray(target).map((pe) => new PathEvent(pe));
1209
+ return !!parsedRequired.find((r) => {
1210
+ if (!r.fullPath && r.all) return true;
1211
+ const filtered = parsedTarget.filter((p) => r.fullPath.startsWith(p.fullPath));
1212
+ if (!filtered.length) return false;
1213
+ const combined = PathEvent.combine(...filtered);
1214
+ return !combined.none && (combined.all || new ASet(combined.methods).intersection(new ASet(r.methods)).length);
1006
1215
  });
1007
1216
  }
1008
1217
  /**
@@ -1012,8 +1221,8 @@ class g {
1012
1221
  * @param has Target must have all these paths
1013
1222
  * @return {boolean} Whether there is any overlap
1014
1223
  */
1015
- static hasAll(t, ...e) {
1016
- return e.filter((n) => g.has(t, n)).length == e.length;
1224
+ static hasAll(target, ...has) {
1225
+ return has.filter((h) => PathEvent.has(target, h)).length == has.length;
1017
1226
  }
1018
1227
  /**
1019
1228
  * Same as `has` but raises an error if there is no overlap
@@ -1021,8 +1230,8 @@ class g {
1021
1230
  * @param {string | string[]} target Array of Events as strings or pre-parsed
1022
1231
  * @param has Target must have at least one of these path
1023
1232
  */
1024
- static hasFatal(t, ...e) {
1025
- if (!g.has(t, ...e)) throw new H(`Requires one of: ${S(e).join(", ")}`);
1233
+ static hasFatal(target, ...has) {
1234
+ if (!PathEvent.has(target, ...has)) throw new PathError(`Requires one of: ${makeArray(has).join(", ")}`);
1026
1235
  }
1027
1236
  /**
1028
1237
  * Same as `hasAll` but raises an error if the target is missing any paths
@@ -1030,8 +1239,8 @@ class g {
1030
1239
  * @param {string | string[]} target Array of Events as strings or pre-parsed
1031
1240
  * @param has Target must have all these paths
1032
1241
  */
1033
- static hasAllFatal(t, ...e) {
1034
- if (!g.hasAll(t, ...e)) throw new H(`Requires all: ${S(e).join(", ")}`);
1242
+ static hasAllFatal(target, ...has) {
1243
+ if (!PathEvent.hasAll(target, ...has)) throw new PathError(`Requires all: ${makeArray(has).join(", ")}`);
1035
1244
  }
1036
1245
  /**
1037
1246
  * Create event string from its components
@@ -1040,9 +1249,11 @@ class g {
1040
1249
  * @param {Method} methods Event method
1041
1250
  * @return {string} String representation of Event
1042
1251
  */
1043
- static toString(t, e) {
1044
- let n = S(t).filter((s) => s != null).join("/");
1045
- return n = n == null ? void 0 : n.trim().replaceAll(/\/{2,}/g, "/").replaceAll(/(^\/|\/$)/g, ""), e != null && e.length && (n += `:${S(e).map((s) => s.toLowerCase()).join("")}`), n;
1252
+ static toString(path, methods) {
1253
+ let p = makeArray(path).filter((p2) => p2 != null).join("/");
1254
+ p = p == null ? void 0 : p.trim().replaceAll(/\/{2,}/g, "/").replaceAll(/(^\/|\/$)/g, "");
1255
+ if (methods == null ? void 0 : methods.length) p += `:${makeArray(methods).map((m) => m.toLowerCase()).join("")}`;
1256
+ return p;
1046
1257
  }
1047
1258
  /**
1048
1259
  * Create event string from its components
@@ -1050,127 +1261,134 @@ class g {
1050
1261
  * @return {string} String representation of Event
1051
1262
  */
1052
1263
  toString() {
1053
- return g.toString(this.fullPath, this.methods);
1264
+ return PathEvent.toString(this.fullPath, this.methods);
1054
1265
  }
1055
1266
  }
1056
- class ne {
1267
+ class PathEventEmitter {
1057
1268
  constructor() {
1058
- c(this, "listeners", []);
1269
+ __publicField(this, "listeners", []);
1059
1270
  }
1060
- emit(t, ...e) {
1061
- const n = new g(t);
1062
- this.listeners.filter((s) => g.has(s[0], t)).forEach(async (s) => s[1](n, ...e));
1271
+ emit(event, ...args) {
1272
+ const parsed = new PathEvent(event);
1273
+ this.listeners.filter((l) => PathEvent.has(l[0], event)).forEach(async (l) => l[1](parsed, ...args));
1063
1274
  }
1064
- off(t) {
1065
- this.listeners = this.listeners.filter((e) => e[1] != t);
1275
+ off(listener) {
1276
+ this.listeners = this.listeners.filter((l) => l[1] != listener);
1066
1277
  }
1067
- on(t, e) {
1068
- return S(t).forEach((n) => this.listeners.push([new g(n), e])), () => this.off(e);
1278
+ on(event, listener) {
1279
+ makeArray(event).forEach((e) => this.listeners.push([new PathEvent(e), listener]));
1280
+ return () => this.off(listener);
1069
1281
  }
1070
- once(t, e) {
1071
- return new Promise((n) => {
1072
- const s = this.on(t, (o, ...i) => {
1073
- n(i.length < 2 ? i[0] : i), e && e(o, ...i), s();
1282
+ once(event, listener) {
1283
+ return new Promise((res) => {
1284
+ const unsubscribe = this.on(event, (event2, ...args) => {
1285
+ res(args.length < 2 ? args[0] : args);
1286
+ if (listener) listener(event2, ...args);
1287
+ unsubscribe();
1074
1288
  });
1075
1289
  });
1076
1290
  }
1077
- relayEvents(t) {
1078
- t.on("*", (e, ...n) => this.emit(e, ...n));
1291
+ relayEvents(emitter) {
1292
+ emitter.on("*", (event, ...args) => this.emit(event, ...args));
1079
1293
  }
1080
1294
  }
1081
- function se(r) {
1082
- (typeof r == "number" || typeof r == "string") && (r = new Date(r));
1083
- let t = r.getHours(), e = "AM";
1084
- return t >= 12 ? (t > 12 && (t -= 12), e = "PM") : t == 0 && (t = 12), `${r.getFullYear()}-${(r.getMonth() + 1).toString().padStart(2, "0")}-${r.getDate().toString().padStart(2, "0")}, ${t}:${r.getMinutes().toString().padStart(2, "0")} ${e}`;
1295
+ function formatDate(date) {
1296
+ if (typeof date == "number" || typeof date == "string") date = new Date(date);
1297
+ let hours = date.getHours(), postfix = "AM";
1298
+ if (hours >= 12) {
1299
+ if (hours > 12) hours -= 12;
1300
+ postfix = "PM";
1301
+ } else if (hours == 0) hours = 12;
1302
+ return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}, ${hours}:${date.getMinutes().toString().padStart(2, "0")} ${postfix}`;
1085
1303
  }
1086
- function bt(r) {
1087
- return new Promise((t) => setTimeout(t, r));
1304
+ function sleep(ms) {
1305
+ return new Promise((res) => setTimeout(res, ms));
1088
1306
  }
1089
- async function oe(r, t = 100) {
1090
- for (; await r(); ) await bt(t);
1307
+ async function sleepWhile(fn, checkInterval = 100) {
1308
+ while (await fn()) await sleep(checkInterval);
1091
1309
  }
1092
- function ie(r) {
1093
- return (r instanceof Date ? r.getTime() : r) - (/* @__PURE__ */ new Date()).getTime();
1310
+ function timeUntil(date) {
1311
+ return (date instanceof Date ? date.getTime() : date) - (/* @__PURE__ */ new Date()).getTime();
1094
1312
  }
1095
- function ce() {
1313
+ function tyoeKeys() {
1096
1314
  return Object.keys({});
1097
1315
  }
1098
1316
  export {
1099
- w as ASet,
1100
- et as BadGatewayError,
1101
- v as BadRequestError,
1102
- It as Cache,
1103
- Ft as CliBackground,
1104
- R as CliEffects,
1105
- L as CliForeground,
1106
- y as CustomError,
1107
- Z as ForbiddenError,
1108
- nt as GatewayTimeoutError,
1109
- F as Http,
1110
- _ as InternalServerError,
1111
- I as JSONAttemptParse,
1112
- ut as JSONSanitize,
1113
- dt as LOG_LEVEL,
1114
- Y as Logger,
1115
- X as MethodNotAllowedError,
1116
- Q as NotAcceptableError,
1117
- V as NotFoundError,
1118
- tt as NotImplementedError,
1119
- re as PE,
1120
- xt as PES,
1121
- H as PathError,
1122
- g as PathEvent,
1123
- ne as PathEventEmitter,
1124
- z as PaymentRequiredError,
1125
- b as PromiseProgress,
1126
- rt as ServiceUnavailableError,
1127
- W as TypedEmitter,
1128
- J as UnauthorizedError,
1129
- Ct as addUnique,
1130
- Lt as arrayDiff,
1131
- Nt as caseInsensitiveSort,
1132
- ct as clean,
1133
- Dt as csv,
1134
- Yt as dec2Frac,
1135
- At as deepCopy,
1136
- at as deepMerge,
1137
- B as dotNotation,
1138
- Mt as downloadFile,
1139
- ft as downloadUrl,
1140
- Rt as encodeQuery,
1141
- Ut as errorFromCode,
1142
- ee as escapeRegex,
1143
- kt as fileBrowser,
1144
- jt as findByProp,
1145
- lt as flattenArr,
1146
- K as flattenObj,
1147
- Ot as formData,
1148
- Kt as formatBytes,
1149
- se as formatDate,
1150
- Wt as formatPhoneNumber,
1151
- Ht as fracToDec,
1152
- te as gravatar,
1153
- q as includes,
1154
- vt as insertAt,
1155
- O as isEqual,
1156
- qt as jwtDecode,
1157
- S as makeArray,
1158
- ht as makeUnique,
1159
- Xt as matchAll,
1160
- gt as md5,
1161
- $t as mixin,
1162
- Jt as pad,
1163
- Qt as parseUrl,
1164
- zt as randomHex,
1165
- Zt as randomString,
1166
- Vt as randomStringBuilder,
1167
- bt as sleep,
1168
- oe as sleepWhile,
1169
- Tt as sortByProp,
1170
- ie as timeUntil,
1171
- Pt as timestampFilename,
1172
- ce as tyoeKeys,
1173
- Gt as uploadWithProgress,
1174
- _t as validateEmail
1317
+ ASet,
1318
+ BadGatewayError,
1319
+ BadRequestError,
1320
+ Cache,
1321
+ CliBackground,
1322
+ CliEffects,
1323
+ CliForeground,
1324
+ CustomError,
1325
+ ForbiddenError,
1326
+ GatewayTimeoutError,
1327
+ Http,
1328
+ InternalServerError,
1329
+ JSONAttemptParse,
1330
+ JSONSanitize,
1331
+ LOG_LEVEL,
1332
+ Logger,
1333
+ MethodNotAllowedError,
1334
+ NotAcceptableError,
1335
+ NotFoundError,
1336
+ NotImplementedError,
1337
+ PE,
1338
+ PES,
1339
+ PathError,
1340
+ PathEvent,
1341
+ PathEventEmitter,
1342
+ PaymentRequiredError,
1343
+ PromiseProgress,
1344
+ ServiceUnavailableError,
1345
+ TypedEmitter,
1346
+ UnauthorizedError,
1347
+ addUnique,
1348
+ arrayDiff,
1349
+ caseInsensitiveSort,
1350
+ clean,
1351
+ csv,
1352
+ dec2Frac,
1353
+ deepCopy,
1354
+ deepMerge,
1355
+ dotNotation,
1356
+ downloadFile,
1357
+ downloadUrl,
1358
+ encodeQuery,
1359
+ errorFromCode,
1360
+ escapeRegex,
1361
+ fileBrowser,
1362
+ findByProp,
1363
+ flattenArr,
1364
+ flattenObj,
1365
+ formData,
1366
+ formatBytes,
1367
+ formatDate,
1368
+ formatPhoneNumber,
1369
+ fracToDec,
1370
+ gravatar,
1371
+ includes,
1372
+ insertAt,
1373
+ isEqual,
1374
+ jwtDecode,
1375
+ makeArray,
1376
+ makeUnique,
1377
+ matchAll,
1378
+ md5,
1379
+ mixin,
1380
+ pad,
1381
+ parseUrl,
1382
+ randomHex,
1383
+ randomString,
1384
+ randomStringBuilder,
1385
+ sleep,
1386
+ sleepWhile,
1387
+ sortByProp,
1388
+ timeUntil,
1389
+ timestampFilename,
1390
+ tyoeKeys,
1391
+ uploadWithProgress,
1392
+ validateEmail
1175
1393
  };
1176
1394
  //# sourceMappingURL=index.mjs.map