@milaboratories/uikit 2.2.96 → 2.2.97
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/.turbo/turbo-build.log +16 -16
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +8 -0
- package/dist/components/PlClipboard/PlClipboard.vue.d.ts +1 -1
- package/dist/components/PlElementList/PlElementList.vue.d.ts +19 -27
- package/dist/components/PlElementList/PlElementList.vue.d.ts.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue2.js +155 -174
- package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue.d.ts.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue2.js +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue3.js +24 -24
- package/dist/components/PlElementList/utils.d.ts +0 -1
- package/dist/components/PlElementList/utils.d.ts.map +1 -1
- package/dist/components/PlElementList/utils.js +5 -11
- package/dist/components/PlElementList/utils.js.map +1 -1
- package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js +8 -8
- package/dist/components/PlFileInput/PlFileInput.vue.js +8 -8
- package/dist/components/PlIcon16/PlIcon16.vue.d.ts +1 -1
- package/dist/components/PlIcon24/PlIcon24.vue.d.ts +1 -1
- package/dist/components/PlSvg/PlSvg.vue.d.ts +1 -1
- package/dist/components/PlSvg/PlSvg.vue.d.ts.map +1 -1
- package/dist/components/PlSvg/PlSvg.vue2.js +24 -22
- package/dist/components/PlSvg/PlSvg.vue2.js.map +1 -1
- package/dist/composition/useWatchFetch.js +10 -10
- package/dist/lib/util/helpers/dist/index.js +108 -104
- package/dist/lib/util/helpers/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/components/PlElementList/PlElementList.vue +116 -135
- package/src/components/PlElementList/PlElementListItem.vue +9 -1
- package/src/components/PlElementList/README.md +325 -72
- package/src/components/PlElementList/utils.ts +0 -9
- package/src/components/PlSvg/PlSvg.vue +2 -2
|
@@ -4,14 +4,14 @@ function y(n) {
|
|
|
4
4
|
function O(n) {
|
|
5
5
|
return y(n) || typeof n == "string" || typeof n == "number" || typeof n == "boolean" || typeof n == "bigint";
|
|
6
6
|
}
|
|
7
|
-
function
|
|
7
|
+
function Z(n, e) {
|
|
8
8
|
if (n == null)
|
|
9
9
|
throw Error(e ?? "Empty (null | undefined) value");
|
|
10
10
|
return n;
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
const
|
|
14
|
-
return n >=
|
|
12
|
+
function D(n, e, t) {
|
|
13
|
+
const r = Math.min(e, t), i = Math.max(e, t);
|
|
14
|
+
return n >= r && n <= i;
|
|
15
15
|
}
|
|
16
16
|
function J(n) {
|
|
17
17
|
return new Promise((e) => setTimeout(e, n));
|
|
@@ -19,8 +19,8 @@ function J(n) {
|
|
|
19
19
|
function z(n) {
|
|
20
20
|
return n();
|
|
21
21
|
}
|
|
22
|
-
function H(n, e,
|
|
23
|
-
return e > n ? e : n >
|
|
22
|
+
function H(n, e, t) {
|
|
23
|
+
return e > n ? e : n > t ? t : n;
|
|
24
24
|
}
|
|
25
25
|
function Q(n, e) {
|
|
26
26
|
return e(n);
|
|
@@ -33,17 +33,17 @@ function W(n) {
|
|
|
33
33
|
if (n && n.ok)
|
|
34
34
|
return n.value;
|
|
35
35
|
}
|
|
36
|
-
async function
|
|
37
|
-
return Object.fromEntries(await Promise.all(Object.entries(n).map(async ([e,
|
|
36
|
+
async function K(n) {
|
|
37
|
+
return Object.fromEntries(await Promise.all(Object.entries(n).map(async ([e, t]) => [e, await t])));
|
|
38
38
|
}
|
|
39
|
-
const
|
|
40
|
-
function
|
|
39
|
+
const R = (n) => n;
|
|
40
|
+
function U(n) {
|
|
41
41
|
return n;
|
|
42
42
|
}
|
|
43
43
|
function j(n, e) {
|
|
44
44
|
return n = Math.ceil(n), e = Math.floor(e), Math.floor(Math.random() * (e - n)) + n;
|
|
45
45
|
}
|
|
46
|
-
function
|
|
46
|
+
function X(n, e = []) {
|
|
47
47
|
for (n = n ? String(n) : ""; e.includes(n.charAt(0)); ) n = n.substr(1);
|
|
48
48
|
for (; e.includes(n.charAt(n.length - 1)); ) n = n.substr(0, n.length - 1);
|
|
49
49
|
return n;
|
|
@@ -52,14 +52,14 @@ function nn(n, e = []) {
|
|
|
52
52
|
for (n = n ? String(n) : ""; e.includes(n.charAt(0)); ) n = n.substring(1);
|
|
53
53
|
return n;
|
|
54
54
|
}
|
|
55
|
-
function
|
|
55
|
+
function E(n) {
|
|
56
56
|
let e = "";
|
|
57
|
-
for (let
|
|
57
|
+
for (let t = 0; t < n; t++)
|
|
58
58
|
e += String.fromCharCode(j(65, 91));
|
|
59
59
|
return e;
|
|
60
60
|
}
|
|
61
61
|
function en(n = 42) {
|
|
62
|
-
return
|
|
62
|
+
return E(n);
|
|
63
63
|
}
|
|
64
64
|
const a = Array.isArray;
|
|
65
65
|
function l(n) {
|
|
@@ -74,32 +74,32 @@ function s(n) {
|
|
|
74
74
|
const e = Object.getPrototypeOf(n);
|
|
75
75
|
return e === null || e === Object.prototype || Object.getPrototypeOf(e) === null;
|
|
76
76
|
}
|
|
77
|
-
function
|
|
78
|
-
return Object.keys(n).map((
|
|
77
|
+
function P(n, e) {
|
|
78
|
+
return Object.keys(n).map((t) => e(n[t], t));
|
|
79
79
|
}
|
|
80
80
|
function h(n) {
|
|
81
|
-
return Object.values(n).reduce((e,
|
|
81
|
+
return Object.values(n).reduce((e, t) => t !== void 0 ? e + 1 : e, 0);
|
|
82
82
|
}
|
|
83
83
|
function u(n, e) {
|
|
84
84
|
if (!(l(n) && l(e)))
|
|
85
85
|
return n === e;
|
|
86
86
|
if (a(n) && a(e))
|
|
87
|
-
return n.length !== e.length ? !1 : [...n.keys()].every((
|
|
87
|
+
return n.length !== e.length ? !1 : [...n.keys()].every((t) => u(n[t], e[t]));
|
|
88
88
|
if (s(n) && s(e))
|
|
89
|
-
return h(n) !== h(e) ? !1 : Object.keys(n).every((
|
|
89
|
+
return h(n) !== h(e) ? !1 : Object.keys(n).every((t) => u(n[t], e[t]));
|
|
90
90
|
throw Error(`Cannot compare a ${String(n)} and b ${String(e)}`);
|
|
91
91
|
}
|
|
92
92
|
const k = u;
|
|
93
93
|
function f(n) {
|
|
94
94
|
if (Array.isArray(n)) {
|
|
95
95
|
const e = [];
|
|
96
|
-
for (let
|
|
97
|
-
e[
|
|
96
|
+
for (let t = 0; t < n.length; t++)
|
|
97
|
+
e[t] = f(n[t]);
|
|
98
98
|
return e;
|
|
99
99
|
} else if (s(n)) {
|
|
100
100
|
const e = {};
|
|
101
|
-
return Object.keys(n).forEach((
|
|
102
|
-
e[
|
|
101
|
+
return Object.keys(n).forEach((t) => {
|
|
102
|
+
e[t] = f(n[t]);
|
|
103
103
|
}), e;
|
|
104
104
|
} else
|
|
105
105
|
return n;
|
|
@@ -113,44 +113,44 @@ function w(n) {
|
|
|
113
113
|
throw Error(`Not implemented clone strategy for ${JSON.stringify(n)}`);
|
|
114
114
|
}
|
|
115
115
|
function B(n, e) {
|
|
116
|
-
const
|
|
117
|
-
for (const
|
|
118
|
-
e[
|
|
119
|
-
return
|
|
116
|
+
const t = {};
|
|
117
|
+
for (const r in e)
|
|
118
|
+
e[r] !== n[r] && (t[r] = n[r]);
|
|
119
|
+
return t;
|
|
120
120
|
}
|
|
121
121
|
function S(n) {
|
|
122
|
-
return Object.entries(n).forEach(([e,
|
|
123
|
-
|
|
122
|
+
return Object.entries(n).forEach(([e, t]) => {
|
|
123
|
+
t instanceof Function && (n[e] = t.bind(n));
|
|
124
124
|
}), n;
|
|
125
125
|
}
|
|
126
|
-
function v(n, e,
|
|
127
|
-
return n[e] =
|
|
126
|
+
function v(n, e, t) {
|
|
127
|
+
return n[e] = t, n;
|
|
128
128
|
}
|
|
129
129
|
function A(n, e) {
|
|
130
130
|
return n[e];
|
|
131
131
|
}
|
|
132
132
|
function C(n, e) {
|
|
133
133
|
n = { ...n };
|
|
134
|
-
const
|
|
135
|
-
return delete n[e], [
|
|
134
|
+
const t = n[e];
|
|
135
|
+
return delete n[e], [t, n];
|
|
136
136
|
}
|
|
137
137
|
function N(n, ...e) {
|
|
138
|
-
return Object.assign({}, ...e.map((
|
|
138
|
+
return Object.assign({}, ...e.map((t) => ({ [t]: n[t] })));
|
|
139
139
|
}
|
|
140
140
|
function T(n, ...e) {
|
|
141
|
-
return e.map((
|
|
141
|
+
return e.map((t) => n[t]);
|
|
142
142
|
}
|
|
143
143
|
function q(n, ...e) {
|
|
144
|
-
const
|
|
145
|
-
return e.forEach((
|
|
144
|
+
const t = Object.assign({}, n);
|
|
145
|
+
return e.forEach((r) => delete t[r]), t;
|
|
146
146
|
}
|
|
147
147
|
function g(n, e) {
|
|
148
|
-
return (/* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(e)])).forEach((
|
|
149
|
-
const
|
|
150
|
-
s(
|
|
148
|
+
return (/* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(e)])).forEach((t) => {
|
|
149
|
+
const r = n[t], i = e[t];
|
|
150
|
+
s(r) && s(i) || a(r) && a(i) && r.length === i.length ? g(r, i) : n[t] = i;
|
|
151
151
|
}), n;
|
|
152
152
|
}
|
|
153
|
-
const
|
|
153
|
+
const tn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
154
154
|
__proto__: null,
|
|
155
155
|
bindMethods: S,
|
|
156
156
|
deepClone: f,
|
|
@@ -162,7 +162,7 @@ const rn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
162
162
|
isNonPrimitive: l,
|
|
163
163
|
isObject: b,
|
|
164
164
|
isPlainObject: s,
|
|
165
|
-
map:
|
|
165
|
+
map: P,
|
|
166
166
|
omit: q,
|
|
167
167
|
pick: N,
|
|
168
168
|
pickValues: T,
|
|
@@ -171,51 +171,54 @@ const rn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
171
171
|
shallowDiff: B,
|
|
172
172
|
shiftProp: C
|
|
173
173
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
174
|
-
function
|
|
175
|
-
const
|
|
176
|
-
if (
|
|
174
|
+
function rn(n, e) {
|
|
175
|
+
const t = n.findIndex(e);
|
|
176
|
+
if (t < 0)
|
|
177
177
|
return [];
|
|
178
|
-
const
|
|
179
|
-
for (let i =
|
|
178
|
+
const r = (() => {
|
|
179
|
+
for (let i = t; i < n.length; i++)
|
|
180
180
|
if (!e(n[i], i))
|
|
181
181
|
return i;
|
|
182
182
|
return n.length;
|
|
183
183
|
})();
|
|
184
|
-
return n.slice(
|
|
184
|
+
return n.slice(t, r);
|
|
185
185
|
}
|
|
186
|
-
function on(n
|
|
187
|
-
|
|
186
|
+
function on(n) {
|
|
187
|
+
return typeof n == "function";
|
|
188
|
+
}
|
|
189
|
+
function sn(n, e, t) {
|
|
190
|
+
let r;
|
|
188
191
|
return function(...i) {
|
|
189
|
-
const o =
|
|
190
|
-
o && n.apply(this, i),
|
|
191
|
-
|
|
192
|
+
const o = t && !r;
|
|
193
|
+
o && n.apply(this, i), r && clearTimeout(r), r = setTimeout(() => {
|
|
194
|
+
r = void 0, o || n.apply(this, i);
|
|
192
195
|
}, e);
|
|
193
196
|
};
|
|
194
197
|
}
|
|
195
|
-
function
|
|
196
|
-
let e = 0n,
|
|
197
|
-
return async function(...
|
|
198
|
+
function an(n) {
|
|
199
|
+
let e = 0n, t;
|
|
200
|
+
return async function(...r) {
|
|
198
201
|
const i = ++e;
|
|
199
202
|
try {
|
|
200
|
-
await
|
|
203
|
+
await t;
|
|
201
204
|
} catch {
|
|
202
205
|
}
|
|
203
206
|
if (e !== i)
|
|
204
207
|
return {
|
|
205
208
|
ok: !1
|
|
206
209
|
};
|
|
207
|
-
const o = n(...
|
|
208
|
-
return
|
|
210
|
+
const o = n(...r);
|
|
211
|
+
return t = o, {
|
|
209
212
|
ok: !0,
|
|
210
213
|
value: await o
|
|
211
214
|
};
|
|
212
215
|
};
|
|
213
216
|
}
|
|
214
|
-
function
|
|
217
|
+
function un(n, e) {
|
|
215
218
|
try {
|
|
216
219
|
return n();
|
|
217
|
-
} catch (
|
|
218
|
-
return e == null ? void 0 : e(
|
|
220
|
+
} catch (t) {
|
|
221
|
+
return e == null ? void 0 : e(t);
|
|
219
222
|
}
|
|
220
223
|
}
|
|
221
224
|
const $ = [
|
|
@@ -238,7 +241,7 @@ const $ = [
|
|
|
238
241
|
"EiB",
|
|
239
242
|
"ZiB",
|
|
240
243
|
"YiB"
|
|
241
|
-
],
|
|
244
|
+
], I = [
|
|
242
245
|
"b",
|
|
243
246
|
"kbit",
|
|
244
247
|
"Mbit",
|
|
@@ -248,7 +251,7 @@ const $ = [
|
|
|
248
251
|
"Ebit",
|
|
249
252
|
"Zbit",
|
|
250
253
|
"Ybit"
|
|
251
|
-
],
|
|
254
|
+
], G = [
|
|
252
255
|
"b",
|
|
253
256
|
"kibit",
|
|
254
257
|
"Mibit",
|
|
@@ -259,99 +262,100 @@ const $ = [
|
|
|
259
262
|
"Zibit",
|
|
260
263
|
"Yibit"
|
|
261
264
|
], p = (n, e) => {
|
|
262
|
-
let
|
|
263
|
-
return typeof e == "string" || Array.isArray(e) ?
|
|
265
|
+
let t = String(n);
|
|
266
|
+
return typeof e == "string" || Array.isArray(e) ? t = n.toLocaleString(e) : e === !0 && (t = n.toLocaleString(void 0)), t;
|
|
264
267
|
};
|
|
265
|
-
function
|
|
268
|
+
function cn(n, e) {
|
|
266
269
|
if (n = typeof n == "bigint" ? Number(n) : n, !Number.isFinite(n))
|
|
267
270
|
throw new TypeError(`Expected a finite number, got ${typeof n}: ${n}`);
|
|
268
271
|
Object.assign(e, {
|
|
269
272
|
bits: !1,
|
|
270
273
|
binary: !1
|
|
271
274
|
});
|
|
272
|
-
const
|
|
275
|
+
const t = e.bits ? e.binary ? G : I : e.binary ? x : $;
|
|
273
276
|
if (e.signed && n === 0)
|
|
274
|
-
return ` 0 ${
|
|
275
|
-
const
|
|
276
|
-
if (
|
|
277
|
+
return ` 0 ${t[0]}`;
|
|
278
|
+
const r = n < 0, i = r ? "-" : e.signed ? "+" : "";
|
|
279
|
+
if (r && (n = -n), n < 1) {
|
|
277
280
|
const M = p(n, e.locale);
|
|
278
|
-
return i + M + " " +
|
|
281
|
+
return i + M + " " + t[0];
|
|
279
282
|
}
|
|
280
|
-
const o = Math.min(Math.floor(e.binary ? Math.log(n) / Math.log(1024) : Math.log10(n) / 3),
|
|
283
|
+
const o = Math.min(Math.floor(e.binary ? Math.log(n) / Math.log(1024) : Math.log10(n) / 3), t.length - 1);
|
|
281
284
|
n /= (e.binary ? 1024 : 1e3) ** o, n = Number(n.toPrecision(3));
|
|
282
|
-
const m = p(Number(n), e.locale), d =
|
|
285
|
+
const m = p(Number(n), e.locale), d = t[o];
|
|
283
286
|
return i + m + " " + d;
|
|
284
287
|
}
|
|
285
|
-
function
|
|
288
|
+
function ln(n) {
|
|
286
289
|
return n instanceof Error ? !0 : b(n) && "message" in n && typeof n.message == "string";
|
|
287
290
|
}
|
|
288
291
|
function _() {
|
|
289
292
|
let n = 0n;
|
|
290
293
|
return () => n++;
|
|
291
294
|
}
|
|
292
|
-
function
|
|
293
|
-
let
|
|
295
|
+
function F(n, e = 0) {
|
|
296
|
+
let t = 3735928559 ^ e, r = 1103547991 ^ e;
|
|
294
297
|
for (let i = 0, o; i < n.length; i++)
|
|
295
|
-
o = n.charCodeAt(i),
|
|
296
|
-
return
|
|
298
|
+
o = n.charCodeAt(i), t = Math.imul(t ^ o, 2654435761), r = Math.imul(r ^ o, 1597334677);
|
|
299
|
+
return t = Math.imul(t ^ t >>> 16, 2246822507) ^ Math.imul(r ^ r >>> 13, 3266489909), r = Math.imul(r ^ r >>> 16, 2246822507) ^ Math.imul(t ^ t >>> 13, 3266489909), 4294967296 * (2097151 & r) + (t >>> 0);
|
|
297
300
|
}
|
|
298
|
-
function
|
|
301
|
+
function fn(...n) {
|
|
299
302
|
let e = "";
|
|
300
|
-
for (let
|
|
301
|
-
const
|
|
302
|
-
O(
|
|
303
|
+
for (let t = 0; t < n.length; t += 1) {
|
|
304
|
+
const r = n[t];
|
|
305
|
+
O(r) ? e += "/" + String(r) : e += "/" + Y(r);
|
|
303
306
|
}
|
|
304
|
-
return
|
|
307
|
+
return F(e);
|
|
305
308
|
}
|
|
306
|
-
const c = /* @__PURE__ */ new WeakMap(),
|
|
307
|
-
function
|
|
308
|
-
return c.has(n) || c.set(n,
|
|
309
|
+
const c = /* @__PURE__ */ new WeakMap(), L = _();
|
|
310
|
+
function Y(n) {
|
|
311
|
+
return c.has(n) || c.set(n, L().toString()), c.get(n);
|
|
309
312
|
}
|
|
310
313
|
export {
|
|
311
|
-
|
|
312
|
-
|
|
314
|
+
U as asConst,
|
|
315
|
+
D as between,
|
|
313
316
|
S as bindMethods,
|
|
314
317
|
z as call,
|
|
315
318
|
H as clamp,
|
|
316
319
|
_ as createGetIncrementalId,
|
|
317
|
-
|
|
320
|
+
sn as debounce,
|
|
318
321
|
f as deepClone,
|
|
319
322
|
k as deepEqual,
|
|
320
323
|
g as deepPatch,
|
|
321
324
|
J as delay,
|
|
322
|
-
|
|
325
|
+
an as exclusiveRequest,
|
|
323
326
|
A as getProp,
|
|
324
|
-
|
|
325
|
-
|
|
327
|
+
F as hashString,
|
|
328
|
+
R as identity,
|
|
326
329
|
a as isArray,
|
|
327
|
-
|
|
330
|
+
ln as isErrorLike,
|
|
331
|
+
on as isFunction,
|
|
328
332
|
u as isJsonEqual,
|
|
329
333
|
y as isNil,
|
|
330
334
|
l as isNonPrimitive,
|
|
331
335
|
b as isObject,
|
|
332
336
|
s as isPlainObject,
|
|
333
337
|
O as isPrimitive,
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
338
|
+
P as map,
|
|
339
|
+
Z as notEmpty,
|
|
340
|
+
tn as objects,
|
|
337
341
|
W as okOptional,
|
|
338
342
|
q as omit,
|
|
339
343
|
N as pick,
|
|
340
344
|
T as pickValues,
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
345
|
+
cn as prettyBytes,
|
|
346
|
+
E as randomString,
|
|
347
|
+
K as resolveAwaited,
|
|
344
348
|
v as setProp,
|
|
345
349
|
w as shallowClone,
|
|
346
350
|
B as shallowDiff,
|
|
347
|
-
|
|
351
|
+
fn as shallowHash,
|
|
348
352
|
C as shiftProp,
|
|
349
|
-
|
|
353
|
+
rn as sliceBy,
|
|
350
354
|
Q as tap,
|
|
351
355
|
V as tapIf,
|
|
352
|
-
|
|
356
|
+
X as trimChars,
|
|
353
357
|
nn as trimCharsLeft,
|
|
354
|
-
|
|
358
|
+
un as tryDo,
|
|
355
359
|
en as uniqueId
|
|
356
360
|
};
|
|
357
361
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../../util/helpers/src/utils.ts","../../../../../../../util/helpers/src/strings.ts","../../../../../../../util/helpers/src/objects.ts","../../../../../../../util/helpers/src/collections.ts","../../../../../../../util/helpers/src/functions.ts","../../../../../../../util/helpers/src/prettyBytes.ts","../../../../../../../util/helpers/src/error.ts","../../../../../../../util/helpers/src/uniqId.ts","../../../../../../../util/helpers/src/hash.ts"],"sourcesContent":["import type { AwaitedStruct, Option, Primitive, Result, Unionize } from './types';\n\nexport function isNil(v: unknown): v is null | undefined | void {\n return v === null || v === undefined;\n}\n\nexport function isPrimitive(v: unknown): v is Primitive {\n return isNil(v)\n || typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'bigint'\n ;\n}\n\nexport function notEmpty<T>(v: T | null | undefined, message?: string): T {\n if (v === null || v === undefined) {\n throw Error(message ?? 'Empty (null | undefined) value');\n }\n\n return v;\n}\n\nexport function notUndef<T>(v: T | undefined, message?: string): T {\n if (v === undefined) {\n throw Error(message ?? 'Undefined value');\n }\n\n return v;\n}\n\nexport function undef<V>(v: V | undefined = undefined): V | undefined {\n return v;\n}\n\nexport function bool<V extends boolean>(v: V): boolean {\n return v;\n}\n\nexport function uniqueValues<T>(items: T[]): T[] {\n return [...new Set(items)];\n}\n\nexport function checkIfNotEmpty<T>(v: T | null | undefined, message?: string): asserts v is T {\n if (v === undefined || v === null) {\n throw Error(message ?? 'Empty (null | undefined) value');\n }\n}\n\nexport function checkIfDefined<T>(v: T | undefined, message?: string): asserts v is T {\n if (v === undefined) {\n throw Error(message ?? 'Undefined value');\n }\n}\n\nexport function between(n: number, a: number, b: number) {\n const min = Math.min(a, b);\n const max = Math.max(a, b);\n\n return n >= min && n <= max;\n}\n\nexport function listToOptions<T>(list: T[] | readonly T[]): Option<T>[] {\n return list.map((value) => ({ text: String(value), value }));\n}\n\nexport function async<A extends unknown[]>(gf: (...args: A) => Generator) {\n return function (...args: A) {\n const generator = gf(...args);\n\n async function handle(result: IteratorResult<unknown>): Promise<unknown> {\n if (result.done) {\n return Promise.resolve(result.value);\n }\n\n return Promise.resolve(result.value).then((res) => {\n return handle(generator.next(res));\n }).catch((err) => {\n return handle(generator.throw(err));\n });\n }\n\n try {\n return handle(generator.next());\n } catch (ex) {\n return Promise.reject(ex instanceof Error ? ex : Error(String(ex)));\n }\n };\n}\n\nexport class Deferred<T> {\n public readonly promise: Promise<T>;\n\n constructor() {\n this.promise = new Promise<T>((res, rej) => {\n this.resolve = res;\n this.reject = rej;\n });\n }\n\n public resolve: (v: T) => void = () => {\n };\n\n public reject: (err: Error) => void = () => {\n };\n}\n\nexport function delay(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function tear() {\n return new Promise<void>((r) => queueMicrotask(r));\n}\n\nexport function timer() {\n const t = new Date().getTime();\n return function () {\n return new Date().getTime() - t;\n };\n}\n\nexport function performanceTimer() {\n const t = performance.now();\n return function () {\n return performance.now() - t;\n };\n}\n\nexport function call<R>(f: () => R): R {\n return f();\n}\n\nexport function clamp(n: number, lo: number, up: number) {\n return lo > n ? lo : n > up ? up : n;\n}\n\nexport function tap<T, R>(v: T, cb: (v: T) => R) {\n return cb(v);\n}\n\nexport function tapIf<T, R>(v: T | null | undefined, cb: (v: T) => R) {\n if (v !== null && v !== undefined) {\n return cb(v);\n }\n\n return;\n}\n\nexport function* range(from: number, to: number, step = 1) {\n for (let i = from; i < to; i += step) {\n yield i;\n }\n}\n\nexport function toList<T>(iterable: Iterable<T>): T[] {\n const lst: T[] = [];\n for (const it of iterable) {\n lst.push(it);\n }\n\n return lst;\n}\n\nexport function times<R>(n: number, cb: (i: number) => R): R[] {\n return toList(range(0, n)).map(cb);\n}\n\nexport class Interval {\n constructor(private _delay: number) {\n }\n\n async* generate(): AsyncGenerator<number> {\n let i = 0;\n while (true) {\n await delay(this._delay);\n yield i++;\n }\n }\n\n async* [Symbol.asyncIterator]() {\n let i = 0;\n while (true) {\n await delay(this._delay);\n yield i++;\n }\n }\n}\n\nexport function arrayFrom<T>(length: number, cb: (i: number) => T) {\n return Array.from({ length }, (_, i) => cb(i));\n}\n\nexport function exhaustive(v: never, message: string): never {\n throw Error(message);\n}\n\nexport type Matcher<T extends string, R = unknown> = {\n [P in T]: () => R;\n};\n\nexport function match<T extends string, R = unknown>(matcher: Matcher<T, R>) {\n return (key: T) => matcher[key]();\n}\n\nexport function okOptional<V>(v: { ok: true; value: V } | { ok: false } | undefined) {\n if (!v) {\n return undefined;\n }\n\n if (v.ok) {\n return v.value;\n }\n}\n\nexport function errorOptional<V>(v: Result<V> | undefined) {\n if (!v) {\n return undefined;\n }\n\n if (!v.ok) {\n return v.error;\n }\n}\n\nexport function unwrap<T>(r: Result<T>): T {\n if (r.ok) {\n return r.value;\n }\n\n throw Error(r.error);\n}\n\nexport function flatValue<T>(v: T | T[]): T[] {\n return Array.isArray(v) ? v : [v];\n}\n\nexport async function resolveAwaited<O extends Record<string, unknown>>(obj: O): Promise<AwaitedStruct<O>> {\n return Object.fromEntries(await Promise.all(Object.entries(obj).map(async ([k, v]) => [k, await v]))) as Promise<AwaitedStruct<O>>;\n}\n\nexport function alike(obj: Record<string, unknown>, to: Record<string, unknown>) {\n return Object.keys(to).every((bKey) => obj[bKey] === to[bKey]);\n}\n\nexport const identity = <T>(v: T): T => v;\n\nexport function asConst<const T>(v: T) {\n return v;\n}\n\nexport function unionize<K extends keyof O, V, O extends Record<K, V>>(obj: O): Unionize<O>[] {\n return Object.entries(obj).map(([key, value]) => ({\n key,\n value,\n })) as Unionize<O>[];\n}\n","function getRandomInt(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\nexport function camelToKebab(str: string) {\n str = str.replace(' ', '-');\n return (str[0] || '').toLowerCase() + str.slice(1).replace(/[A-Z]/g, (l) => `-${l.toLowerCase()}`);\n}\n\nexport function trimChars(str: string, chars: string[] = []) {\n str = str ? String(str) : '';\n while (chars.includes(str.charAt(0))) str = str.substr(1);\n while (chars.includes(str.charAt(str.length - 1))) str = str.substr(0, str.length - 1);\n return str;\n}\n\nexport function trimCharsLeft(str: string, chars: string[] = []) {\n str = str ? String(str) : '';\n while (chars.includes(str.charAt(0))) str = str.substring(1);\n return str;\n}\n\nexport function extractFileName(filePath: string) {\n return filePath.replace(/^.*[\\\\/]/, '');\n}\n\nexport function extractExtension(fileName: string) {\n return fileName.replace(/^.*?[.]/, '');\n}\n\n// @TODO move from here\nexport function extractPaths(e: DragEvent, extensions?: string[]) {\n const paths: string[] = [];\n\n if (e.dataTransfer) {\n for (let i = 0; i < e.dataTransfer.items.length; i++) {\n if (e.dataTransfer.items[i].kind !== 'file') {\n continue;\n }\n const file = e.dataTransfer.items[i].getAsFile() as (File & { path: string }) | null; // @TODO electron specific\n if (file && file.path) {\n paths.push(file.path);\n }\n }\n }\n\n if (extensions) {\n return paths.filter((p) => extensions.includes(extractExtension(extractFileName(p))));\n }\n\n return paths;\n}\n\nexport const pluralize = (count: number, noun: string, suffix = 's') => `${count} ${noun}${count !== 1 ? suffix : ''}`;\n\nexport function isRegexpValid(exp: string) {\n try {\n new RegExp(exp);\n return true;\n } catch (_e) {\n return false;\n }\n}\n\nexport function ucFirst(str: string) {\n if (!str) {\n return '';\n }\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function lcFirst(str: string) {\n if (!str) {\n return '';\n }\n return str.charAt(0).toLowerCase() + str.slice(1);\n}\n\nexport function randomString(length: number) {\n let s = '';\n for (let i = 0; i < length; i++) {\n s += String.fromCharCode(getRandomInt(65, 91));\n }\n return s;\n}\n\nexport function uniqueId(length: number = 42) {\n return randomString(length);\n}\n\nexport function before(str: string, sub: string) {\n return str.substring(0, str.indexOf(sub));\n}\n\nexport function beforeLast(str: string, sub: string) {\n return str.substring(0, str.lastIndexOf(sub));\n}\n\nexport function after(str: string, sub: string) {\n return str.substring(str.indexOf(sub) + sub.length, str.length);\n}\n\nexport function assertString(v: unknown): asserts v is string {\n if (typeof v !== 'string') {\n throw Error('Expect string value, got: ' + typeof v);\n }\n}\n\nexport function hashCode(str: string) {\n let hash = 0, i, chr;\n if (str.length === 0) return hash;\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { PartialBy, PlainObject } from './types';\nimport { isNil } from './utils';\n\n/**\n * Alias to Array.isArray\n */\nexport const isArray = Array.isArray;\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function isNonPrimitive<V, T extends PlainObject<V> | V[]>(obj: T | unknown): obj is T {\n return obj !== null && typeof obj === 'object';\n}\n\nexport function isObject(value: unknown): value is object {\n return typeof value === 'object' && value !== null;\n}\n\n/**\n * Checks if the given value is a plain object.\n *\n * A plain object is defined as an object created by the `{}` literal,\n * an object created with `Object.create(null)`, or an object with a\n * prototype that resolves to `Object.prototype`.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a plain object, otherwise `false`.\n *\n * @example\n * ```typescript\n * isPlainObject({}); // true\n * isPlainObject(Object.create(null)); // true\n * isPlainObject(new Date()); // false\n * isPlainObject(null); // false\n * isPlainObject([]); // false\n * ```\n */\nexport function isPlainObject(value: unknown): value is PlainObject {\n if (!isObject(value)) {\n return false;\n }\n\n const prototype: unknown = Object.getPrototypeOf(value);\n\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null);\n}\n\nexport function map<U, T extends Record<string, unknown>>(obj: T, callback: (curr: T[keyof T], key: keyof T) => U) {\n const keys = Object.keys(obj) as Array<keyof T>;\n\n return keys.map((key: keyof T) => {\n return callback(obj[key], key);\n });\n}\n\nfunction definedKeysSize(obj: PlainObject) {\n return Object.values(obj).reduce((length: number, v) => {\n return v !== undefined ? length + 1 : length;\n }, 0);\n}\n\n/**\n * Performs a deep equality check between two values, `a` and `b`, to determine if they are JSON-equivalent.\n *\n * JSON equivalence means that the two values are strictly equal in structure and content, including arrays and plain objects.\n * Non-primitive values that are neither arrays nor plain objects will throw an error.\n *\n * @param a - The first value to compare.\n * @param b - The second value to compare.\n * @returns `true` if the values are JSON-equivalent, otherwise `false`.\n *\n * @throws If the values are non-primitive and not arrays or plain objects.\n *\n * @example\n * ```typescript\n * isJsonEqual(1, 1); // true\n * isJsonEqual({ a: 1 }, { a: 1 }); // true\n * isJsonEqual([1, 2], [1, 2]); // true\n * isJsonEqual({ a: 1 }, { a: 2 }); // false\n * isJsonEqual([1, 2], [2, 1]); // false\n * isJsonEqual(new Date(), new Date()); // Error\n * ```\n */\nexport function isJsonEqual(a: unknown, b: unknown): boolean {\n if (!(isNonPrimitive(a) && isNonPrimitive(b))) {\n return a === b;\n }\n\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n } else {\n return [...a.keys()].every((k) => isJsonEqual(a[k], b[k]));\n }\n }\n\n if (isPlainObject(a) && isPlainObject(b)) {\n if (definedKeysSize(a) !== definedKeysSize(b)) {\n return false;\n }\n\n return Object.keys(a).every((k) => isJsonEqual(a[k], b[k]));\n }\n\n /* eslint-disable @typescript-eslint/no-base-to-string */\n throw Error(`Cannot compare a ${String(a)} and b ${String(b)}`);\n}\n\n/**\n * Alias to isJsonEqual function\n * @deprecated change to isJsonEqual\n */\nexport const deepEqual = isJsonEqual;\n\nexport function deepClone<T>(obj: T): T {\n if (Array.isArray(obj)) {\n const copy: any[] = [];\n for (let i = 0; i < obj.length; i++) {\n copy[i] = deepClone(obj[i]) as unknown;\n }\n return copy as T;\n } else if (isPlainObject(obj)) {\n const copy: Record<string, any> = {};\n Object.keys(obj).forEach((k) => {\n copy[k] = deepClone(obj[k]);\n });\n return copy as T;\n } else {\n return obj;\n }\n}\n\nexport function shallowClone<T>(obj: T): T {\n if (isNil(obj)) return obj;\n if (Array.isArray(obj)) return obj.slice() as T;\n if (isPlainObject(obj)) return Object.assign({}, obj) as T;\n if (obj instanceof Map) return new Map(obj) as T;\n if (obj instanceof Set) return new Set(obj) as T;\n throw Error(`Not implemented clone strategy for ${JSON.stringify(obj)}`);\n}\n\nexport function shallowDiff<T>(to: T, from: T): Partial<T> {\n const diff: Partial<T> = {};\n\n for (const key in from) {\n if (from[key] !== to[key]) {\n diff[key] = to[key];\n }\n }\n\n return diff;\n}\n\nexport function bindMethods<O extends Record<string, unknown>>(obj: O) {\n Object.entries(obj).forEach(([key, m]) => {\n if (m instanceof Function) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n obj[key as keyof O] = m.bind(obj);\n }\n });\n\n return obj;\n}\n\nexport function setProp<O, K extends keyof O>(obj: O, key: K, value: O[K]) {\n obj[key] = value;\n return obj;\n}\n\nexport function getProp<O, K extends keyof O>(obj: O, key: K): O[K] {\n return obj[key];\n}\n\nexport function shiftProp<O, K extends keyof O>(obj: O, key: K): [O[K], Omit<O, K>] {\n obj = { ...obj };\n const val = obj[key];\n delete obj[key];\n return [val, obj];\n}\n\nexport function pick<T, K extends keyof T>(obj: T, ...keys: K[]): Pick<T, K> {\n return Object.assign({}, ...keys.map((k) => ({ [k]: obj[k] }))) as Pick<T, K>;\n}\n\nexport function pickValues<T, K extends keyof T>(obj: T, ...keys: K[]) {\n return keys.map((k) => obj[k]);\n}\n\nexport function omit<T, K extends keyof T>(obj: T, ...keys: K[]): Omit<T, K> {\n const o = Object.assign({}, obj) as PartialBy<T, K>;\n keys.forEach((k) => delete o[k]);\n return o;\n}\n\n/**\n * Performs a deep patch of the target object or array using the source object or array.\n *\n * This function recursively merges properties of the source into the target:\n * - If a property in both target and source is a plain object, they are recursively merged.\n * - If a property in both target and source is an array of the same length, the arrays are recursively patched element by element.\n * - Otherwise, the property value in the target is replaced by the corresponding value from the source.\n *\n * The patch is applied in-place to the target object or array, which is also returned for convenience.\n *\n * @typeParam T - The type of the target and source, which must be either a plain object or an array.\n * @param target - The target object or array to be patched. This object/array is modified in-place.\n * @param source - The source object or array providing the new values for the patch.\n * @returns The modified target object or array.\n *\n * @example\n * ```typescript\n * const target = { a: { b: 1 }, c: [1, 2] };\n * const source = { a: { b: 2 }, c: [3, 4], d: 5 };\n * const result = deepPatch(target, source);\n * // target is now: { a: { b: 2 }, c: [3, 4], d: 5 }\n * // result is the same reference as target.\n *\n * const targetArray = [{ a: 1 }, { b: 2 }];\n * const sourceArray = [{ a: 2 }, { b: 3 }];\n * const resultArray = deepPatch(targetArray, sourceArray);\n * // targetArray is now: [{ a: 2 }, { b: 3 }]\n * ```\n */\nexport function deepPatch<T extends PlainObject | unknown[]>(target: T, source: T) {\n const sk = new Set<keyof T>([...Object.keys(target) as (keyof T)[], ...Object.keys(source) as (keyof T)[]]);\n\n sk.forEach((key) => {\n const t = target[key];\n const s = source[key];\n if (isPlainObject(t) && isPlainObject(s)) {\n deepPatch(t, s);\n } else if (isArray(t) && isArray(s) && t.length === s.length) {\n deepPatch(t, s);\n } else {\n target[key] = s;\n }\n });\n\n return target;\n}\n","import type { GroupBy } from './types';\n\nexport function arrayDiff<T>(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((x) => !arr2.includes(x));\n}\n\nexport function pushValueIm<T>(arr: T[], value: T): T[] {\n return [...arr, value];\n}\n\nexport function addUnique<T>(arr: readonly T[], value: T): T[] {\n if (!arr.includes(value)) {\n return [...arr, value];\n }\n return [...arr];\n}\n\nexport function pushUnique<T>(arr: T[], value: T) {\n if (!arr.includes(value)) {\n arr.push(value);\n }\n}\n\nexport function intersection<T>(a: T[], b: T[]): T[] {\n return a.filter((value) => b.includes(value));\n}\n\nexport function unionUnique<T>(a: T[], b: T[]): T[] {\n const arr = [...a];\n b.forEach((v) => pushUnique(arr, v));\n return arr;\n}\n\nexport function intersectionAll<T>(pack: T[][]) {\n let arr = pack.shift();\n\n if (!arr) {\n return [];\n }\n\n for (const a of pack) {\n arr = intersection(arr, a);\n }\n\n return arr;\n}\n\nexport function maxValue(arr: number[]) {\n return arr.reduce((a, b) => Math.max(a, b), -Infinity);\n}\n\nexport function mutableDeleteIndices<T>(arr: T[], indices: number[]) {\n [...indices].sort((a, b) => b - a).forEach((i) => arr.splice(i, 1));\n}\n\nexport function deleteIndices<T>(arr: T[], indices: number[]): T[] {\n return arr.filter((v, i) => !indices.includes(i));\n}\n\nexport function aggregateBy<It extends Record<string, unknown>, K extends keyof It>(items: It[], groupKey: K) {\n const map = items.reduce((m, it) => {\n const groupValue = it[groupKey] as string;\n\n if (!m.has(groupValue)) {\n m.set(groupValue, {});\n }\n\n const r = m.get(groupValue) as Record<string, unknown[]>;\n\n Object.keys(it).filter((k) => k !== groupKey).forEach((k) => {\n r[k] = addUnique(r[k] || [], it[k]);\n });\n\n return m;\n }, new Map<string, Record<string, unknown>>());\n\n return [...map.entries()].map(([k, m]) => {\n return {\n [groupKey]: k,\n ...m,\n };\n }) as GroupBy<It, K>[];\n}\n\nexport function predicateUnique<V, I, A extends V[]>(value: V, index: I, array: A) {\n return array.indexOf(value) === index;\n}\n\nexport function *iterateByPairs<T>(iterable: Iterable<T>): Generator<[T, T]> {\n const acc: T[] = [];\n for (const it of iterable) {\n acc.push(it);\n if (acc.length === 2) {\n yield [acc[0], acc[1]];\n acc.shift();\n }\n }\n}\n\nexport function rotate<T>(v: T, lst: T[]) {\n const next = lst.indexOf(v) + 1;\n return lst[next >= lst.length ? 0 : next];\n}\n\nexport function uniques<T, V>(items: T[], cb: (s: Set<V>, it: T) => void): V[] {\n const s = items.reduce((s, it) => {\n cb(s, it);\n return s;\n }, new Set<V>());\n\n return Array.from(s.values());\n}\n\nexport function toSorted<T>(arr: readonly T[], compareFn?: (a: T, b: T) => number): T[] {\n return arr.slice().sort(compareFn);\n}\n\n/**\n * Returns a first contiguous copy of a section of an array where predicate is true\n * @param arr\n * @param predicate\n * @returns\n */\nexport function sliceBy<T>(arr: readonly T[], predicate: (el: T, index: number) => boolean): T[] {\n const left = arr.findIndex(predicate);\n\n if (left < 0) {\n return [];\n }\n\n const right = (() => {\n for (let i = left; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n continue;\n }\n\n return i;\n }\n\n return arr.length;\n })();\n\n return arr.slice(left, right);\n}\n","import type { AnyFunction } from './types';\n\n/**\n * A utility class that ensures asynchronous locks, allowing only one task to proceed at a time.\n */\nexport class AwaitLock {\n private acquired = false;\n private resolvers: (() => void)[] = [];\n\n acquireAsync(): Promise<void> {\n if (!this.acquired) {\n this.acquired = true;\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this.resolvers.push(resolve);\n });\n }\n\n release(): void {\n if (!this.acquired) {\n throw new Error('Cannot release an unacquired lock');\n }\n\n if (this.resolvers.length) {\n this.resolvers.shift()?.();\n } else {\n this.acquired = false;\n }\n }\n}\n\n/**\n * A utility to add a timeout to a promise, rejecting the promise if the timeout is exceeded.\n */\nexport function promiseTimeout<T>(prom: PromiseLike<T>, ms: number): Promise<T> {\n return Promise.race<T>([prom, new Promise((_r, reject) => setTimeout(() => reject(Error(`Timeout exceeded ${ms}`)), ms))]);\n}\n\n/**\n * Debounce utility: delays the execution of a function until a certain time has passed since the last call.\n * @param callback\n * @param ms\n * @param immediate (if first call is required)\n * @returns\n */\nexport function debounce<F extends AnyFunction>(callback: F, ms: number, immediate?: boolean): (...args: Parameters<F>) => void {\n let timeout: ReturnType<typeof setTimeout> | undefined;\n return function (this: unknown, ...args: Parameters<F>) {\n const i = immediate && !timeout;\n if (i) {\n callback.apply(this, args);\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n timeout = undefined;\n if (!i) {\n callback.apply(this, args);\n }\n }, ms);\n };\n}\n\n/**\n * Throttle utility: ensures a function is called at most once every `ms` milliseconds.\n * @param callback\n * @param ms milliseconds\n * @param trailing (ensure last call)\n * @returns\n */\nexport function throttle<F extends AnyFunction>(callback: F, ms: number, trailing = true): (...args: Parameters<F>) => void {\n let t = 0, call: AnyFunction | null;\n return function (this: unknown, ...args: Parameters<F>) {\n call = () => {\n callback.apply(this, args);\n t = new Date().getTime() + ms;\n call = null;\n if (trailing) {\n setTimeout(() => {\n call?.();\n }, ms);\n }\n };\n if (new Date().getTime() > t) call();\n };\n}\n\n/**\n * Memoization utility: caches results of function calls based on their arguments to avoid redundant calculations.\n */\nexport const memoize = <F extends AnyFunction>(fn: F) => {\n const cache = new Map();\n return function (...args: Parameters<F>): ReturnType<F> {\n const key = JSON.stringify(args);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return cache.has(key)\n ? cache.get(key)\n : cache.set(key, fn.call(null, ...args)) && cache.get(key);\n };\n};\n\n/**\n * Function wrapper utility: executes a function before the main function is called.\n */\nexport const wrapFunction = <T extends unknown[], U>(\n fn: (...args: T) => U,\n before: () => void,\n) => {\n return (...args: T): U => {\n before();\n return fn(...args);\n };\n};\n\n/**\n * Function piping utility: allows chaining of functions by passing the result of one as input to another\n */\nexport function pipe<A, B>(cb: (a: A) => B) {\n const fn = (a: A) => cb(a);\n\n fn.pipe = <C>(next: (b: B) => C) => pipe((a: A) => next(cb(a)));\n\n return fn;\n}\n\n/**\n * Ensures that only one request can be processed at a time.\n */\nexport function exclusiveRequest<A, R>(request: (...args: A[]) => Promise<R>) {\n let counter = 0n;\n let ongoingOperation: Promise<R> | undefined;\n\n return async function (...params: A[]): Promise<{\n ok: false;\n } | {\n ok: true;\n value: R;\n }> {\n const myId = ++counter;\n\n try {\n await ongoingOperation;\n } catch (_cause: unknown) {\n // ignoring the error here, original caller will receive any rejections\n }\n\n // checking that this update is still the most recent\n if (counter !== myId) {\n return {\n ok: false,\n };\n }\n\n const promise = request(...params);\n\n ongoingOperation = promise;\n\n const value = await promise;\n\n return {\n ok: true,\n value,\n };\n };\n}\n\nexport function tryDo<R1>(fn: () => R1): R1 | undefined;\nexport function tryDo<R1, R2>(fn: () => R1, fallback: (cause: unknown) => R2): R1 | R2;\nexport function tryDo(fn: () => unknown, fallback?: (cause: unknown) => unknown) {\n try {\n return fn();\n } catch (cause: unknown) {\n return fallback?.(cause);\n }\n}\n","const BYTE_UNITS = [\n 'B',\n 'kB',\n 'MB',\n 'GB',\n 'TB',\n 'PB',\n 'EB',\n 'ZB',\n 'YB',\n];\n\nconst BIBYTE_UNITS = [\n 'B',\n 'kiB',\n 'MiB',\n 'GiB',\n 'TiB',\n 'PiB',\n 'EiB',\n 'ZiB',\n 'YiB',\n];\n\nconst BIT_UNITS = [\n 'b',\n 'kbit',\n 'Mbit',\n 'Gbit',\n 'Tbit',\n 'Pbit',\n 'Ebit',\n 'Zbit',\n 'Ybit',\n];\n\nconst BIBIT_UNITS = [\n 'b',\n 'kibit',\n 'Mibit',\n 'Gibit',\n 'Tibit',\n 'Pibit',\n 'Eibit',\n 'Zibit',\n 'Yibit',\n];\n\ntype Options = {\n bits?: boolean;\n binary?: boolean;\n signed?: boolean;\n locale?: string;\n};\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number: number, locale: string | undefined) => {\n let result = String(number);\n if (typeof locale === 'string' || Array.isArray(locale)) {\n result = number.toLocaleString(locale);\n } else if (locale === true) {\n result = number.toLocaleString(undefined);\n }\n\n return result;\n};\n\nexport function prettyBytes(number: number | bigint, options: Options) {\n number = typeof number === 'bigint' ? Number(number) : number;\n\n if (!Number.isFinite(number)) {\n throw new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n }\n\n Object.assign(options, {\n bits: false,\n binary: false,\n });\n\n const UNITS = options.bits\n ? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n : (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n if (options.signed && number === 0) {\n return ` 0 ${UNITS[0]}`;\n }\n\n const isNegative = number < 0;\n const prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n if (isNegative) {\n number = -number;\n }\n\n let localeOptions;\n\n if (number < 1) {\n const numberString = toLocaleString(number, options.locale);\n return prefix + numberString + ' ' + UNITS[0];\n }\n\n const exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n number /= (options.binary ? 1024 : 1000) ** exponent;\n\n if (!localeOptions) {\n number = Number(number.toPrecision(3));\n }\n\n const numberString = toLocaleString(Number(number), options.locale);\n\n const unit = UNITS[exponent];\n\n return prefix + numberString + ' ' + unit;\n}\n","import { isObject } from './objects';\n\nexport function isErrorLike(error: unknown): error is {\n message: string;\n name?: string;\n stack?: string;\n cause?: unknown;\n} {\n if (error instanceof Error) return true;\n return isObject(error) && 'message' in error && typeof error.message === 'string';\n}\n","export function createGetIncrementalId() {\n let idx = 0n;\n return () => idx++;\n}\n","import { createGetIncrementalId } from './uniqId';\nimport { isPrimitive } from './utils';\n\nexport function hashString(str: string, seed = 0): number {\n let h1 = 0xdeadbeef ^ seed,\n h2 = 0x41c6ce57 ^ seed;\n\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\nexport function shallowHash(...values: unknown[]): number {\n let str = '';\n\n for (let i = 0; i < values.length; i += 1) {\n const value = values[i];\n\n if (isPrimitive(value)) {\n str += '/' + String(value);\n } else {\n str += '/' + getIdForPointer(value as object);\n }\n }\n\n return hashString(str);\n}\n\nconst mapPointerToMap = new WeakMap<object, string>();\nconst getIncrementalId = createGetIncrementalId();\n\nfunction getIdForPointer(obj: object): string {\n if (!mapPointerToMap.has(obj)) {\n mapPointerToMap.set(obj, getIncrementalId().toString());\n }\n\n return mapPointerToMap.get(obj)!;\n}\n"],"names":["isNil","v","isPrimitive","notEmpty","message","between","n","a","b","min","max","delay","ms","resolve","call","f","clamp","lo","up","tap","cb","tapIf","okOptional","resolveAwaited","obj","k","identity","asConst","getRandomInt","trimChars","str","chars","t","trimCharsLeft","randomString","length","s","i","uniqueId","isArray","isNonPrimitive","isObject","value","isPlainObject","prototype","map","callback","key","definedKeysSize","isJsonEqual","deepEqual","deepClone","copy","shallowClone","shallowDiff","to","from","diff","bindMethods","m","setProp","getProp","shiftProp","val","pick","keys","pickValues","omit","o","deepPatch","target","source","sliceBy","arr","predicate","left","right","debounce","immediate","timeout","args","exclusiveRequest","request","counter","ongoingOperation","params","myId","promise","tryDo","fn","fallback","cause","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","locale","result","prettyBytes","options","UNITS","isNegative","prefix","numberString","exponent","unit","isErrorLike","error","createGetIncrementalId","idx","hashString","seed","h1","h2","ch","shallowHash","values","getIdForPointer","mapPointerToMap","getIncrementalId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../util/helpers/src/utils.ts","../../../../../../../util/helpers/src/strings.ts","../../../../../../../util/helpers/src/objects.ts","../../../../../../../util/helpers/src/collections.ts","../../../../../../../util/helpers/src/functions.ts","../../../../../../../util/helpers/src/prettyBytes.ts","../../../../../../../util/helpers/src/error.ts","../../../../../../../util/helpers/src/uniqId.ts","../../../../../../../util/helpers/src/hash.ts"],"sourcesContent":["import type { AwaitedStruct, Option, Primitive, Result, Unionize } from './types';\n\nexport function isNil(v: unknown): v is null | undefined | void {\n return v === null || v === undefined;\n}\n\nexport function isPrimitive(v: unknown): v is Primitive {\n return isNil(v)\n || typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'bigint'\n ;\n}\n\nexport function notEmpty<T>(v: T | null | undefined, message?: string): T {\n if (v === null || v === undefined) {\n throw Error(message ?? 'Empty (null | undefined) value');\n }\n\n return v;\n}\n\nexport function notUndef<T>(v: T | undefined, message?: string): T {\n if (v === undefined) {\n throw Error(message ?? 'Undefined value');\n }\n\n return v;\n}\n\nexport function undef<V>(v: V | undefined = undefined): V | undefined {\n return v;\n}\n\nexport function bool<V extends boolean>(v: V): boolean {\n return v;\n}\n\nexport function uniqueValues<T>(items: T[]): T[] {\n return [...new Set(items)];\n}\n\nexport function checkIfNotEmpty<T>(v: T | null | undefined, message?: string): asserts v is T {\n if (v === undefined || v === null) {\n throw Error(message ?? 'Empty (null | undefined) value');\n }\n}\n\nexport function checkIfDefined<T>(v: T | undefined, message?: string): asserts v is T {\n if (v === undefined) {\n throw Error(message ?? 'Undefined value');\n }\n}\n\nexport function between(n: number, a: number, b: number) {\n const min = Math.min(a, b);\n const max = Math.max(a, b);\n\n return n >= min && n <= max;\n}\n\nexport function listToOptions<T>(list: T[] | readonly T[]): Option<T>[] {\n return list.map((value) => ({ text: String(value), value }));\n}\n\nexport function async<A extends unknown[]>(gf: (...args: A) => Generator) {\n return function (...args: A) {\n const generator = gf(...args);\n\n async function handle(result: IteratorResult<unknown>): Promise<unknown> {\n if (result.done) {\n return Promise.resolve(result.value);\n }\n\n return Promise.resolve(result.value).then((res) => {\n return handle(generator.next(res));\n }).catch((err) => {\n return handle(generator.throw(err));\n });\n }\n\n try {\n return handle(generator.next());\n } catch (ex) {\n return Promise.reject(ex instanceof Error ? ex : Error(String(ex)));\n }\n };\n}\n\nexport class Deferred<T> {\n public readonly promise: Promise<T>;\n\n constructor() {\n this.promise = new Promise<T>((res, rej) => {\n this.resolve = res;\n this.reject = rej;\n });\n }\n\n public resolve: (v: T) => void = () => {\n };\n\n public reject: (err: Error) => void = () => {\n };\n}\n\nexport function delay(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function tear() {\n return new Promise<void>((r) => queueMicrotask(r));\n}\n\nexport function timer() {\n const t = new Date().getTime();\n return function () {\n return new Date().getTime() - t;\n };\n}\n\nexport function performanceTimer() {\n const t = performance.now();\n return function () {\n return performance.now() - t;\n };\n}\n\nexport function call<R>(f: () => R): R {\n return f();\n}\n\nexport function clamp(n: number, lo: number, up: number) {\n return lo > n ? lo : n > up ? up : n;\n}\n\nexport function tap<T, R>(v: T, cb: (v: T) => R) {\n return cb(v);\n}\n\nexport function tapIf<T, R>(v: T | null | undefined, cb: (v: T) => R) {\n if (v !== null && v !== undefined) {\n return cb(v);\n }\n\n return;\n}\n\nexport function* range(from: number, to: number, step = 1) {\n for (let i = from; i < to; i += step) {\n yield i;\n }\n}\n\nexport function toList<T>(iterable: Iterable<T>): T[] {\n const lst: T[] = [];\n for (const it of iterable) {\n lst.push(it);\n }\n\n return lst;\n}\n\nexport function times<R>(n: number, cb: (i: number) => R): R[] {\n return toList(range(0, n)).map(cb);\n}\n\nexport class Interval {\n constructor(private _delay: number) {\n }\n\n async* generate(): AsyncGenerator<number> {\n let i = 0;\n while (true) {\n await delay(this._delay);\n yield i++;\n }\n }\n\n async* [Symbol.asyncIterator]() {\n let i = 0;\n while (true) {\n await delay(this._delay);\n yield i++;\n }\n }\n}\n\nexport function arrayFrom<T>(length: number, cb: (i: number) => T) {\n return Array.from({ length }, (_, i) => cb(i));\n}\n\nexport function exhaustive(v: never, message: string): never {\n throw Error(message);\n}\n\nexport type Matcher<T extends string, R = unknown> = {\n [P in T]: () => R;\n};\n\nexport function match<T extends string, R = unknown>(matcher: Matcher<T, R>) {\n return (key: T) => matcher[key]();\n}\n\nexport function okOptional<V>(v: { ok: true; value: V } | { ok: false } | undefined) {\n if (!v) {\n return undefined;\n }\n\n if (v.ok) {\n return v.value;\n }\n}\n\nexport function errorOptional<V>(v: Result<V> | undefined) {\n if (!v) {\n return undefined;\n }\n\n if (!v.ok) {\n return v.error;\n }\n}\n\nexport function unwrap<T>(r: Result<T>): T {\n if (r.ok) {\n return r.value;\n }\n\n throw Error(r.error);\n}\n\nexport function flatValue<T>(v: T | T[]): T[] {\n return Array.isArray(v) ? v : [v];\n}\n\nexport async function resolveAwaited<O extends Record<string, unknown>>(obj: O): Promise<AwaitedStruct<O>> {\n return Object.fromEntries(await Promise.all(Object.entries(obj).map(async ([k, v]) => [k, await v]))) as Promise<AwaitedStruct<O>>;\n}\n\nexport function alike(obj: Record<string, unknown>, to: Record<string, unknown>) {\n return Object.keys(to).every((bKey) => obj[bKey] === to[bKey]);\n}\n\nexport const identity = <T>(v: T): T => v;\n\nexport function asConst<const T>(v: T) {\n return v;\n}\n\nexport function unionize<K extends keyof O, V, O extends Record<K, V>>(obj: O): Unionize<O>[] {\n return Object.entries(obj).map(([key, value]) => ({\n key,\n value,\n })) as Unionize<O>[];\n}\n","function getRandomInt(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\nexport function camelToKebab(str: string) {\n str = str.replace(' ', '-');\n return (str[0] || '').toLowerCase() + str.slice(1).replace(/[A-Z]/g, (l) => `-${l.toLowerCase()}`);\n}\n\nexport function trimChars(str: string, chars: string[] = []) {\n str = str ? String(str) : '';\n while (chars.includes(str.charAt(0))) str = str.substr(1);\n while (chars.includes(str.charAt(str.length - 1))) str = str.substr(0, str.length - 1);\n return str;\n}\n\nexport function trimCharsLeft(str: string, chars: string[] = []) {\n str = str ? String(str) : '';\n while (chars.includes(str.charAt(0))) str = str.substring(1);\n return str;\n}\n\nexport function extractFileName(filePath: string) {\n return filePath.replace(/^.*[\\\\/]/, '');\n}\n\nexport function extractExtension(fileName: string) {\n return fileName.replace(/^.*?[.]/, '');\n}\n\n// @TODO move from here\nexport function extractPaths(e: DragEvent, extensions?: string[]) {\n const paths: string[] = [];\n\n if (e.dataTransfer) {\n for (let i = 0; i < e.dataTransfer.items.length; i++) {\n if (e.dataTransfer.items[i].kind !== 'file') {\n continue;\n }\n const file = e.dataTransfer.items[i].getAsFile() as (File & { path: string }) | null; // @TODO electron specific\n if (file && file.path) {\n paths.push(file.path);\n }\n }\n }\n\n if (extensions) {\n return paths.filter((p) => extensions.includes(extractExtension(extractFileName(p))));\n }\n\n return paths;\n}\n\nexport const pluralize = (count: number, noun: string, suffix = 's') => `${count} ${noun}${count !== 1 ? suffix : ''}`;\n\nexport function isRegexpValid(exp: string) {\n try {\n new RegExp(exp);\n return true;\n } catch (_e) {\n return false;\n }\n}\n\nexport function ucFirst(str: string) {\n if (!str) {\n return '';\n }\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function lcFirst(str: string) {\n if (!str) {\n return '';\n }\n return str.charAt(0).toLowerCase() + str.slice(1);\n}\n\nexport function randomString(length: number) {\n let s = '';\n for (let i = 0; i < length; i++) {\n s += String.fromCharCode(getRandomInt(65, 91));\n }\n return s;\n}\n\nexport function uniqueId(length: number = 42) {\n return randomString(length);\n}\n\nexport function before(str: string, sub: string) {\n return str.substring(0, str.indexOf(sub));\n}\n\nexport function beforeLast(str: string, sub: string) {\n return str.substring(0, str.lastIndexOf(sub));\n}\n\nexport function after(str: string, sub: string) {\n return str.substring(str.indexOf(sub) + sub.length, str.length);\n}\n\nexport function assertString(v: unknown): asserts v is string {\n if (typeof v !== 'string') {\n throw Error('Expect string value, got: ' + typeof v);\n }\n}\n\nexport function hashCode(str: string) {\n let hash = 0, i, chr;\n if (str.length === 0) return hash;\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { PartialBy, PlainObject } from './types';\nimport { isNil } from './utils';\n\n/**\n * Alias to Array.isArray\n */\nexport const isArray = Array.isArray;\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function isNonPrimitive<V, T extends PlainObject<V> | V[]>(obj: T | unknown): obj is T {\n return obj !== null && typeof obj === 'object';\n}\n\nexport function isObject(value: unknown): value is object {\n return typeof value === 'object' && value !== null;\n}\n\n/**\n * Checks if the given value is a plain object.\n *\n * A plain object is defined as an object created by the `{}` literal,\n * an object created with `Object.create(null)`, or an object with a\n * prototype that resolves to `Object.prototype`.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a plain object, otherwise `false`.\n *\n * @example\n * ```typescript\n * isPlainObject({}); // true\n * isPlainObject(Object.create(null)); // true\n * isPlainObject(new Date()); // false\n * isPlainObject(null); // false\n * isPlainObject([]); // false\n * ```\n */\nexport function isPlainObject(value: unknown): value is PlainObject {\n if (!isObject(value)) {\n return false;\n }\n\n const prototype: unknown = Object.getPrototypeOf(value);\n\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null);\n}\n\nexport function map<U, T extends Record<string, unknown>>(obj: T, callback: (curr: T[keyof T], key: keyof T) => U) {\n const keys = Object.keys(obj) as Array<keyof T>;\n\n return keys.map((key: keyof T) => {\n return callback(obj[key], key);\n });\n}\n\nfunction definedKeysSize(obj: PlainObject) {\n return Object.values(obj).reduce((length: number, v) => {\n return v !== undefined ? length + 1 : length;\n }, 0);\n}\n\n/**\n * Performs a deep equality check between two values, `a` and `b`, to determine if they are JSON-equivalent.\n *\n * JSON equivalence means that the two values are strictly equal in structure and content, including arrays and plain objects.\n * Non-primitive values that are neither arrays nor plain objects will throw an error.\n *\n * @param a - The first value to compare.\n * @param b - The second value to compare.\n * @returns `true` if the values are JSON-equivalent, otherwise `false`.\n *\n * @throws If the values are non-primitive and not arrays or plain objects.\n *\n * @example\n * ```typescript\n * isJsonEqual(1, 1); // true\n * isJsonEqual({ a: 1 }, { a: 1 }); // true\n * isJsonEqual([1, 2], [1, 2]); // true\n * isJsonEqual({ a: 1 }, { a: 2 }); // false\n * isJsonEqual([1, 2], [2, 1]); // false\n * isJsonEqual(new Date(), new Date()); // Error\n * ```\n */\nexport function isJsonEqual(a: unknown, b: unknown): boolean {\n if (!(isNonPrimitive(a) && isNonPrimitive(b))) {\n return a === b;\n }\n\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n } else {\n return [...a.keys()].every((k) => isJsonEqual(a[k], b[k]));\n }\n }\n\n if (isPlainObject(a) && isPlainObject(b)) {\n if (definedKeysSize(a) !== definedKeysSize(b)) {\n return false;\n }\n\n return Object.keys(a).every((k) => isJsonEqual(a[k], b[k]));\n }\n\n /* eslint-disable @typescript-eslint/no-base-to-string */\n throw Error(`Cannot compare a ${String(a)} and b ${String(b)}`);\n}\n\n/**\n * Alias to isJsonEqual function\n * @deprecated change to isJsonEqual\n */\nexport const deepEqual = isJsonEqual;\n\nexport function deepClone<T>(obj: T): T {\n if (Array.isArray(obj)) {\n const copy: any[] = [];\n for (let i = 0; i < obj.length; i++) {\n copy[i] = deepClone(obj[i]) as unknown;\n }\n return copy as T;\n } else if (isPlainObject(obj)) {\n const copy: Record<string, any> = {};\n Object.keys(obj).forEach((k) => {\n copy[k] = deepClone(obj[k]);\n });\n return copy as T;\n } else {\n return obj;\n }\n}\n\nexport function shallowClone<T>(obj: T): T {\n if (isNil(obj)) return obj;\n if (Array.isArray(obj)) return obj.slice() as T;\n if (isPlainObject(obj)) return Object.assign({}, obj) as T;\n if (obj instanceof Map) return new Map(obj) as T;\n if (obj instanceof Set) return new Set(obj) as T;\n throw Error(`Not implemented clone strategy for ${JSON.stringify(obj)}`);\n}\n\nexport function shallowDiff<T>(to: T, from: T): Partial<T> {\n const diff: Partial<T> = {};\n\n for (const key in from) {\n if (from[key] !== to[key]) {\n diff[key] = to[key];\n }\n }\n\n return diff;\n}\n\nexport function bindMethods<O extends Record<string, unknown>>(obj: O) {\n Object.entries(obj).forEach(([key, m]) => {\n if (m instanceof Function) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n obj[key as keyof O] = m.bind(obj);\n }\n });\n\n return obj;\n}\n\nexport function setProp<O, K extends keyof O>(obj: O, key: K, value: O[K]) {\n obj[key] = value;\n return obj;\n}\n\nexport function getProp<O, K extends keyof O>(obj: O, key: K): O[K] {\n return obj[key];\n}\n\nexport function shiftProp<O, K extends keyof O>(obj: O, key: K): [O[K], Omit<O, K>] {\n obj = { ...obj };\n const val = obj[key];\n delete obj[key];\n return [val, obj];\n}\n\nexport function pick<T, K extends keyof T>(obj: T, ...keys: K[]): Pick<T, K> {\n return Object.assign({}, ...keys.map((k) => ({ [k]: obj[k] }))) as Pick<T, K>;\n}\n\nexport function pickValues<T, K extends keyof T>(obj: T, ...keys: K[]) {\n return keys.map((k) => obj[k]);\n}\n\nexport function omit<T, K extends keyof T>(obj: T, ...keys: K[]): Omit<T, K> {\n const o = Object.assign({}, obj) as PartialBy<T, K>;\n keys.forEach((k) => delete o[k]);\n return o;\n}\n\n/**\n * Performs a deep patch of the target object or array using the source object or array.\n *\n * This function recursively merges properties of the source into the target:\n * - If a property in both target and source is a plain object, they are recursively merged.\n * - If a property in both target and source is an array of the same length, the arrays are recursively patched element by element.\n * - Otherwise, the property value in the target is replaced by the corresponding value from the source.\n *\n * The patch is applied in-place to the target object or array, which is also returned for convenience.\n *\n * @typeParam T - The type of the target and source, which must be either a plain object or an array.\n * @param target - The target object or array to be patched. This object/array is modified in-place.\n * @param source - The source object or array providing the new values for the patch.\n * @returns The modified target object or array.\n *\n * @example\n * ```typescript\n * const target = { a: { b: 1 }, c: [1, 2] };\n * const source = { a: { b: 2 }, c: [3, 4], d: 5 };\n * const result = deepPatch(target, source);\n * // target is now: { a: { b: 2 }, c: [3, 4], d: 5 }\n * // result is the same reference as target.\n *\n * const targetArray = [{ a: 1 }, { b: 2 }];\n * const sourceArray = [{ a: 2 }, { b: 3 }];\n * const resultArray = deepPatch(targetArray, sourceArray);\n * // targetArray is now: [{ a: 2 }, { b: 3 }]\n * ```\n */\nexport function deepPatch<T extends PlainObject | unknown[]>(target: T, source: T) {\n const sk = new Set<keyof T>([...Object.keys(target) as (keyof T)[], ...Object.keys(source) as (keyof T)[]]);\n\n sk.forEach((key) => {\n const t = target[key];\n const s = source[key];\n if (isPlainObject(t) && isPlainObject(s)) {\n deepPatch(t, s);\n } else if (isArray(t) && isArray(s) && t.length === s.length) {\n deepPatch(t, s);\n } else {\n target[key] = s;\n }\n });\n\n return target;\n}\n","import type { GroupBy } from './types';\n\nexport function arrayDiff<T>(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((x) => !arr2.includes(x));\n}\n\nexport function pushValueIm<T>(arr: T[], value: T): T[] {\n return [...arr, value];\n}\n\nexport function addUnique<T>(arr: readonly T[], value: T): T[] {\n if (!arr.includes(value)) {\n return [...arr, value];\n }\n return [...arr];\n}\n\nexport function pushUnique<T>(arr: T[], value: T) {\n if (!arr.includes(value)) {\n arr.push(value);\n }\n}\n\nexport function intersection<T>(a: T[], b: T[]): T[] {\n return a.filter((value) => b.includes(value));\n}\n\nexport function unionUnique<T>(a: T[], b: T[]): T[] {\n const arr = [...a];\n b.forEach((v) => pushUnique(arr, v));\n return arr;\n}\n\nexport function intersectionAll<T>(pack: T[][]) {\n let arr = pack.shift();\n\n if (!arr) {\n return [];\n }\n\n for (const a of pack) {\n arr = intersection(arr, a);\n }\n\n return arr;\n}\n\nexport function maxValue(arr: number[]) {\n return arr.reduce((a, b) => Math.max(a, b), -Infinity);\n}\n\nexport function mutableDeleteIndices<T>(arr: T[], indices: number[]) {\n [...indices].sort((a, b) => b - a).forEach((i) => arr.splice(i, 1));\n}\n\nexport function deleteIndices<T>(arr: T[], indices: number[]): T[] {\n return arr.filter((v, i) => !indices.includes(i));\n}\n\nexport function aggregateBy<It extends Record<string, unknown>, K extends keyof It>(items: It[], groupKey: K) {\n const map = items.reduce((m, it) => {\n const groupValue = it[groupKey] as string;\n\n if (!m.has(groupValue)) {\n m.set(groupValue, {});\n }\n\n const r = m.get(groupValue) as Record<string, unknown[]>;\n\n Object.keys(it).filter((k) => k !== groupKey).forEach((k) => {\n r[k] = addUnique(r[k] || [], it[k]);\n });\n\n return m;\n }, new Map<string, Record<string, unknown>>());\n\n return [...map.entries()].map(([k, m]) => {\n return {\n [groupKey]: k,\n ...m,\n };\n }) as GroupBy<It, K>[];\n}\n\nexport function predicateUnique<V, I, A extends V[]>(value: V, index: I, array: A) {\n return array.indexOf(value) === index;\n}\n\nexport function *iterateByPairs<T>(iterable: Iterable<T>): Generator<[T, T]> {\n const acc: T[] = [];\n for (const it of iterable) {\n acc.push(it);\n if (acc.length === 2) {\n yield [acc[0], acc[1]];\n acc.shift();\n }\n }\n}\n\nexport function rotate<T>(v: T, lst: T[]) {\n const next = lst.indexOf(v) + 1;\n return lst[next >= lst.length ? 0 : next];\n}\n\nexport function uniques<T, V>(items: T[], cb: (s: Set<V>, it: T) => void): V[] {\n const s = items.reduce((s, it) => {\n cb(s, it);\n return s;\n }, new Set<V>());\n\n return Array.from(s.values());\n}\n\nexport function toSorted<T>(arr: readonly T[], compareFn?: (a: T, b: T) => number): T[] {\n return arr.slice().sort(compareFn);\n}\n\n/**\n * Returns a first contiguous copy of a section of an array where predicate is true\n * @param arr\n * @param predicate\n * @returns\n */\nexport function sliceBy<T>(arr: readonly T[], predicate: (el: T, index: number) => boolean): T[] {\n const left = arr.findIndex(predicate);\n\n if (left < 0) {\n return [];\n }\n\n const right = (() => {\n for (let i = left; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n continue;\n }\n\n return i;\n }\n\n return arr.length;\n })();\n\n return arr.slice(left, right);\n}\n","import type { AnyFunction } from './types';\n\nexport function isFunction(value: unknown): value is AnyFunction {\n return typeof value === 'function';\n}\n\n/**\n * A utility class that ensures asynchronous locks, allowing only one task to proceed at a time.\n */\nexport class AwaitLock {\n private acquired = false;\n private resolvers: (() => void)[] = [];\n\n acquireAsync(): Promise<void> {\n if (!this.acquired) {\n this.acquired = true;\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this.resolvers.push(resolve);\n });\n }\n\n release(): void {\n if (!this.acquired) {\n throw new Error('Cannot release an unacquired lock');\n }\n\n if (this.resolvers.length) {\n this.resolvers.shift()?.();\n } else {\n this.acquired = false;\n }\n }\n}\n\n/**\n * A utility to add a timeout to a promise, rejecting the promise if the timeout is exceeded.\n */\nexport function promiseTimeout<T>(prom: PromiseLike<T>, ms: number): Promise<T> {\n return Promise.race<T>([prom, new Promise((_r, reject) => setTimeout(() => reject(Error(`Timeout exceeded ${ms}`)), ms))]);\n}\n\n/**\n * Debounce utility: delays the execution of a function until a certain time has passed since the last call.\n * @param callback\n * @param ms\n * @param immediate (if first call is required)\n * @returns\n */\nexport function debounce<F extends AnyFunction>(callback: F, ms: number, immediate?: boolean): (...args: Parameters<F>) => void {\n let timeout: ReturnType<typeof setTimeout> | undefined;\n return function (this: unknown, ...args: Parameters<F>) {\n const i = immediate && !timeout;\n if (i) {\n callback.apply(this, args);\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n timeout = undefined;\n if (!i) {\n callback.apply(this, args);\n }\n }, ms);\n };\n}\n\n/**\n * Throttle utility: ensures a function is called at most once every `ms` milliseconds.\n * @param callback\n * @param ms milliseconds\n * @param trailing (ensure last call)\n * @returns\n */\nexport function throttle<F extends AnyFunction>(callback: F, ms: number, trailing = true): (...args: Parameters<F>) => void {\n let t = 0, call: AnyFunction | null;\n return function (this: unknown, ...args: Parameters<F>) {\n call = () => {\n callback.apply(this, args);\n t = new Date().getTime() + ms;\n call = null;\n if (trailing) {\n setTimeout(() => {\n call?.();\n }, ms);\n }\n };\n if (new Date().getTime() > t) call();\n };\n}\n\n/**\n * Memoization utility: caches results of function calls based on their arguments to avoid redundant calculations.\n */\nexport const memoize = <F extends AnyFunction>(fn: F) => {\n const cache = new Map();\n return function (...args: Parameters<F>): ReturnType<F> {\n const key = JSON.stringify(args);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return cache.has(key)\n ? cache.get(key)\n : cache.set(key, fn.call(null, ...args)) && cache.get(key);\n };\n};\n\n/**\n * Function wrapper utility: executes a function before the main function is called.\n */\nexport const wrapFunction = <T extends unknown[], U>(\n fn: (...args: T) => U,\n before: () => void,\n) => {\n return (...args: T): U => {\n before();\n return fn(...args);\n };\n};\n\n/**\n * Function piping utility: allows chaining of functions by passing the result of one as input to another\n */\nexport function pipe<A, B>(cb: (a: A) => B) {\n const fn = (a: A) => cb(a);\n\n fn.pipe = <C>(next: (b: B) => C) => pipe((a: A) => next(cb(a)));\n\n return fn;\n}\n\n/**\n * Ensures that only one request can be processed at a time.\n */\nexport function exclusiveRequest<A, R>(request: (...args: A[]) => Promise<R>) {\n let counter = 0n;\n let ongoingOperation: Promise<R> | undefined;\n\n return async function (...params: A[]): Promise<{\n ok: false;\n } | {\n ok: true;\n value: R;\n }> {\n const myId = ++counter;\n\n try {\n await ongoingOperation;\n } catch (_cause: unknown) {\n // ignoring the error here, original caller will receive any rejections\n }\n\n // checking that this update is still the most recent\n if (counter !== myId) {\n return {\n ok: false,\n };\n }\n\n const promise = request(...params);\n\n ongoingOperation = promise;\n\n const value = await promise;\n\n return {\n ok: true,\n value,\n };\n };\n}\n\nexport function tryDo<R1>(fn: () => R1): R1 | undefined;\nexport function tryDo<R1, R2>(fn: () => R1, fallback: (cause: unknown) => R2): R1 | R2;\nexport function tryDo(fn: () => unknown, fallback?: (cause: unknown) => unknown) {\n try {\n return fn();\n } catch (cause: unknown) {\n return fallback?.(cause);\n }\n}\n","const BYTE_UNITS = [\n 'B',\n 'kB',\n 'MB',\n 'GB',\n 'TB',\n 'PB',\n 'EB',\n 'ZB',\n 'YB',\n];\n\nconst BIBYTE_UNITS = [\n 'B',\n 'kiB',\n 'MiB',\n 'GiB',\n 'TiB',\n 'PiB',\n 'EiB',\n 'ZiB',\n 'YiB',\n];\n\nconst BIT_UNITS = [\n 'b',\n 'kbit',\n 'Mbit',\n 'Gbit',\n 'Tbit',\n 'Pbit',\n 'Ebit',\n 'Zbit',\n 'Ybit',\n];\n\nconst BIBIT_UNITS = [\n 'b',\n 'kibit',\n 'Mibit',\n 'Gibit',\n 'Tibit',\n 'Pibit',\n 'Eibit',\n 'Zibit',\n 'Yibit',\n];\n\ntype Options = {\n bits?: boolean;\n binary?: boolean;\n signed?: boolean;\n locale?: string;\n};\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number: number, locale: string | undefined) => {\n let result = String(number);\n if (typeof locale === 'string' || Array.isArray(locale)) {\n result = number.toLocaleString(locale);\n } else if (locale === true) {\n result = number.toLocaleString(undefined);\n }\n\n return result;\n};\n\nexport function prettyBytes(number: number | bigint, options: Options) {\n number = typeof number === 'bigint' ? Number(number) : number;\n\n if (!Number.isFinite(number)) {\n throw new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n }\n\n Object.assign(options, {\n bits: false,\n binary: false,\n });\n\n const UNITS = options.bits\n ? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n : (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n if (options.signed && number === 0) {\n return ` 0 ${UNITS[0]}`;\n }\n\n const isNegative = number < 0;\n const prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n if (isNegative) {\n number = -number;\n }\n\n let localeOptions;\n\n if (number < 1) {\n const numberString = toLocaleString(number, options.locale);\n return prefix + numberString + ' ' + UNITS[0];\n }\n\n const exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n number /= (options.binary ? 1024 : 1000) ** exponent;\n\n if (!localeOptions) {\n number = Number(number.toPrecision(3));\n }\n\n const numberString = toLocaleString(Number(number), options.locale);\n\n const unit = UNITS[exponent];\n\n return prefix + numberString + ' ' + unit;\n}\n","import { isObject } from './objects';\n\nexport function isErrorLike(error: unknown): error is {\n message: string;\n name?: string;\n stack?: string;\n cause?: unknown;\n} {\n if (error instanceof Error) return true;\n return isObject(error) && 'message' in error && typeof error.message === 'string';\n}\n","export function createGetIncrementalId() {\n let idx = 0n;\n return () => idx++;\n}\n","import { createGetIncrementalId } from './uniqId';\nimport { isPrimitive } from './utils';\n\nexport function hashString(str: string, seed = 0): number {\n let h1 = 0xdeadbeef ^ seed,\n h2 = 0x41c6ce57 ^ seed;\n\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\nexport function shallowHash(...values: unknown[]): number {\n let str = '';\n\n for (let i = 0; i < values.length; i += 1) {\n const value = values[i];\n\n if (isPrimitive(value)) {\n str += '/' + String(value);\n } else {\n str += '/' + getIdForPointer(value as object);\n }\n }\n\n return hashString(str);\n}\n\nconst mapPointerToMap = new WeakMap<object, string>();\nconst getIncrementalId = createGetIncrementalId();\n\nfunction getIdForPointer(obj: object): string {\n if (!mapPointerToMap.has(obj)) {\n mapPointerToMap.set(obj, getIncrementalId().toString());\n }\n\n return mapPointerToMap.get(obj)!;\n}\n"],"names":["isNil","v","isPrimitive","notEmpty","message","between","n","a","b","min","max","delay","ms","resolve","call","f","clamp","lo","up","tap","cb","tapIf","okOptional","resolveAwaited","obj","k","identity","asConst","getRandomInt","trimChars","str","chars","t","trimCharsLeft","randomString","length","s","i","uniqueId","isArray","isNonPrimitive","isObject","value","isPlainObject","prototype","map","callback","key","definedKeysSize","isJsonEqual","deepEqual","deepClone","copy","shallowClone","shallowDiff","to","from","diff","bindMethods","m","setProp","getProp","shiftProp","val","pick","keys","pickValues","omit","o","deepPatch","target","source","sliceBy","arr","predicate","left","right","isFunction","debounce","immediate","timeout","args","exclusiveRequest","request","counter","ongoingOperation","params","myId","promise","tryDo","fn","fallback","cause","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","locale","result","prettyBytes","options","UNITS","isNegative","prefix","numberString","exponent","unit","isErrorLike","error","createGetIncrementalId","idx","hashString","seed","h1","h2","ch","shallowHash","values","getIdForPointer","mapPointerToMap","getIncrementalId"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/uikit",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.97",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"sortablejs": "^1.15.6",
|
|
20
20
|
"vue": "^3.5.13",
|
|
21
21
|
"d3": "^7.9.0",
|
|
22
|
-
"@
|
|
23
|
-
"@
|
|
22
|
+
"@milaboratories/helpers": "^1.6.17",
|
|
23
|
+
"@platforma-sdk/model": "^1.37.14"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/d3": "^7.4.3",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"vue-tsc": "^2.1.10",
|
|
35
35
|
"yarpm": "^1.2.0",
|
|
36
36
|
"svgo": "^3.3.2",
|
|
37
|
-
"@milaboratories/ts-configs": "1.0.4",
|
|
38
37
|
"@milaboratories/build-configs": "1.0.4",
|
|
38
|
+
"@milaboratories/ts-configs": "1.0.4",
|
|
39
39
|
"@milaboratories/eslint-config": "^1.0.4"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|