@dxos/util 0.8.3 → 0.8.4-main.1068cf700f
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/lib/browser/index.mjs +460 -169
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +460 -169
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/array.d.ts +3 -2
- package/dist/types/src/array.d.ts.map +1 -1
- package/dist/types/src/assume.d.ts.map +1 -1
- package/dist/types/src/deep.d.ts.map +1 -1
- package/dist/types/src/defer.d.ts +1 -1
- package/dist/types/src/defer.d.ts.map +1 -1
- package/dist/types/src/di-key.d.ts +3 -3
- package/dist/types/src/di-key.d.ts.map +1 -1
- package/dist/types/src/error-format.d.ts +5 -0
- package/dist/types/src/error-format.d.ts.map +1 -0
- package/dist/types/src/filename.d.ts +9 -0
- package/dist/types/src/filename.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +7 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/json.d.ts +1 -1
- package/dist/types/src/json.d.ts.map +1 -1
- package/dist/types/src/object.d.ts +3 -0
- package/dist/types/src/object.d.ts.map +1 -1
- package/dist/types/src/platform.d.ts +4 -1
- package/dist/types/src/platform.d.ts.map +1 -1
- package/dist/types/src/retry.d.ts +32 -0
- package/dist/types/src/retry.d.ts.map +1 -0
- package/dist/types/src/safe-parse.d.ts +6 -4
- package/dist/types/src/safe-parse.d.ts.map +1 -1
- package/dist/types/src/safe-stringify.d.ts +22 -0
- package/dist/types/src/safe-stringify.d.ts.map +1 -0
- package/dist/types/src/string.d.ts +8 -0
- package/dist/types/src/string.d.ts.map +1 -1
- package/dist/types/src/string.test.d.ts +2 -0
- package/dist/types/src/string.test.d.ts.map +1 -0
- package/dist/types/src/to-fallback.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +23 -5
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/unit.d.ts +14 -0
- package/dist/types/src/unit.d.ts.map +1 -0
- package/dist/types/src/unit.test.d.ts +2 -0
- package/dist/types/src/unit.test.d.ts.map +1 -0
- package/dist/types/src/url.d.ts +5 -0
- package/dist/types/src/url.d.ts.map +1 -0
- package/dist/types/src/url.test.d.ts +2 -0
- package/dist/types/src/url.test.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -9
- package/src/array.test.ts +1 -1
- package/src/array.ts +9 -4
- package/src/assume.ts +0 -1
- package/src/binder.ts +2 -2
- package/src/circular-buffer.test.ts +1 -1
- package/src/complex.test.ts +1 -1
- package/src/deep.ts +2 -0
- package/src/defer.ts +1 -1
- package/src/error-format.ts +22 -0
- package/src/filename.ts +16 -0
- package/src/human-hash.test.ts +1 -1
- package/src/index.ts +7 -3
- package/src/json.ts +2 -7
- package/src/object.ts +3 -0
- package/src/platform.ts +12 -2
- package/src/position.test.ts +2 -2
- package/src/retry.ts +74 -0
- package/src/safe-parse.ts +21 -15
- package/src/safe-stringify.ts +146 -0
- package/src/sort.test.ts +1 -1
- package/src/string.test.ts +19 -0
- package/src/string.ts +36 -0
- package/src/to-fallback.ts +5 -4
- package/src/tree.test.ts +1 -1
- package/src/types.test.ts +11 -1
- package/src/types.ts +38 -10
- package/src/uint8array.test.ts +1 -1
- package/src/unit.test.ts +25 -0
- package/src/unit.ts +83 -0
- package/src/url.test.ts +22 -0
- package/src/url.ts +15 -0
- package/src/weak.test.ts +1 -1
- package/dist/lib/node/index.cjs +0 -2309
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/types/src/explicit-resource-management-polyfill.d.ts +0 -1
- package/dist/types/src/explicit-resource-management-polyfill.d.ts.map +0 -1
- package/dist/types/src/first-two-chars.d.ts +0 -9
- package/dist/types/src/first-two-chars.d.ts.map +0 -1
- package/src/explicit-resource-management-polyfill.ts +0 -13
- package/src/first-two-chars.ts +0 -44
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "@dxos/node-std/globals";
|
|
2
2
|
|
|
3
|
-
//
|
|
3
|
+
// src/array-to-hex.ts
|
|
4
4
|
var byteToHex = [];
|
|
5
5
|
for (let n = 0; n <= 255; ++n) {
|
|
6
6
|
const hexOctet = n.toString(16).padStart(2, "0");
|
|
@@ -15,7 +15,7 @@ var arrayToHex = (buf) => {
|
|
|
15
15
|
return hexOctets.join("");
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
//
|
|
18
|
+
// src/array.ts
|
|
19
19
|
var diff = (previous, next, comparator) => {
|
|
20
20
|
const remaining = [
|
|
21
21
|
...previous
|
|
@@ -97,17 +97,29 @@ var intersectBy = (arrays, selector) => {
|
|
|
97
97
|
return lookups.every((lookup) => lookup.has(key));
|
|
98
98
|
});
|
|
99
99
|
};
|
|
100
|
+
var coerceArray = (arr) => {
|
|
101
|
+
if (arr === void 0) {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
return Array.isArray(arr) ? arr : [
|
|
105
|
+
arr
|
|
106
|
+
];
|
|
107
|
+
};
|
|
100
108
|
|
|
101
|
-
//
|
|
102
|
-
|
|
109
|
+
// src/assume.ts
|
|
110
|
+
function assumeType(value) {
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// src/binder.ts
|
|
114
|
+
import { promisify } from "@dxos/node-std/util";
|
|
103
115
|
var createBinder = (obj) => ({
|
|
104
116
|
fn: (fn) => fn.bind(obj),
|
|
105
|
-
async: (fn) =>
|
|
117
|
+
async: (fn) => promisify(fn.bind(obj))
|
|
106
118
|
});
|
|
107
119
|
|
|
108
|
-
//
|
|
120
|
+
// src/bitfield.ts
|
|
109
121
|
import { invariant } from "@dxos/invariant";
|
|
110
|
-
var __dxlog_file = "/
|
|
122
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/common/util/src/bitfield.ts";
|
|
111
123
|
var BitField = class _BitField {
|
|
112
124
|
static get(data, idx) {
|
|
113
125
|
const bit = data[idx >> 3] >> 7 - idx % 8 & 1;
|
|
@@ -175,7 +187,7 @@ var BitField = class _BitField {
|
|
|
175
187
|
}
|
|
176
188
|
};
|
|
177
189
|
|
|
178
|
-
//
|
|
190
|
+
// src/callback-collection.ts
|
|
179
191
|
var CallbackCollection = class {
|
|
180
192
|
#callbacks = [];
|
|
181
193
|
append(callback) {
|
|
@@ -199,10 +211,11 @@ var CallbackCollection = class {
|
|
|
199
211
|
}
|
|
200
212
|
};
|
|
201
213
|
|
|
202
|
-
//
|
|
214
|
+
// src/callback.ts
|
|
203
215
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
204
|
-
var __dxlog_file2 = "/
|
|
216
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/util/src/callback.ts";
|
|
205
217
|
var Callback = class {
|
|
218
|
+
_callback;
|
|
206
219
|
call(...args) {
|
|
207
220
|
invariant2(this._callback, "Callback not set", {
|
|
208
221
|
F: __dxlog_file2,
|
|
@@ -251,7 +264,7 @@ var createSetDispatch = ({ handlers }) => {
|
|
|
251
264
|
});
|
|
252
265
|
};
|
|
253
266
|
|
|
254
|
-
//
|
|
267
|
+
// src/case.ts
|
|
255
268
|
var LOW_DASH = "_".codePointAt(0);
|
|
256
269
|
var HI_DASH = "-".codePointAt(0);
|
|
257
270
|
var SMALL_A = "a".codePointAt(0);
|
|
@@ -284,7 +297,7 @@ var changeCase = (str, delim) => {
|
|
|
284
297
|
var decamelize = (str) => changeCase(str, LOW_DASH);
|
|
285
298
|
var hyphenize = (str) => changeCase(str, HI_DASH);
|
|
286
299
|
|
|
287
|
-
//
|
|
300
|
+
// src/chunk-array.ts
|
|
288
301
|
var chunkArray = (array, size) => {
|
|
289
302
|
const result = [];
|
|
290
303
|
for (let i = 0; i < array.length; i += size) {
|
|
@@ -293,13 +306,14 @@ var chunkArray = (array, size) => {
|
|
|
293
306
|
return result;
|
|
294
307
|
};
|
|
295
308
|
|
|
296
|
-
//
|
|
309
|
+
// src/circular-buffer.ts
|
|
297
310
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
298
|
-
var __dxlog_file3 = "/
|
|
311
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/common/util/src/circular-buffer.ts";
|
|
299
312
|
var CircularBuffer = class {
|
|
313
|
+
_buffer;
|
|
314
|
+
_nextIndex = 0;
|
|
315
|
+
_elementCount = 0;
|
|
300
316
|
constructor(size) {
|
|
301
|
-
this._nextIndex = 0;
|
|
302
|
-
this._elementCount = 0;
|
|
303
317
|
invariant3(size >= 1, void 0, {
|
|
304
318
|
F: __dxlog_file3,
|
|
305
319
|
L: 13,
|
|
@@ -352,7 +366,7 @@ var CircularBuffer = class {
|
|
|
352
366
|
}
|
|
353
367
|
};
|
|
354
368
|
|
|
355
|
-
//
|
|
369
|
+
// src/clear-undefined.ts
|
|
356
370
|
var clearUndefined = (obj) => {
|
|
357
371
|
for (const key of [
|
|
358
372
|
...Object.getOwnPropertyNames(obj),
|
|
@@ -365,15 +379,16 @@ var clearUndefined = (obj) => {
|
|
|
365
379
|
return obj;
|
|
366
380
|
};
|
|
367
381
|
|
|
368
|
-
//
|
|
382
|
+
// src/complex.ts
|
|
369
383
|
import { inspect } from "@dxos/node-std/util";
|
|
370
384
|
import { inspectObject, raise } from "@dxos/debug";
|
|
371
385
|
var MAX_SERIALIZATION_LENGTH = 10;
|
|
372
386
|
var ComplexSet = class {
|
|
387
|
+
_projection;
|
|
388
|
+
_values = /* @__PURE__ */ new Map();
|
|
373
389
|
// prettier-ignore
|
|
374
390
|
constructor(_projection, values) {
|
|
375
391
|
this._projection = _projection;
|
|
376
|
-
this._values = /* @__PURE__ */ new Map();
|
|
377
392
|
if (values) {
|
|
378
393
|
for (const value of values) {
|
|
379
394
|
this.add(value);
|
|
@@ -463,11 +478,12 @@ var makeSet = (projection) => {
|
|
|
463
478
|
};
|
|
464
479
|
};
|
|
465
480
|
var ComplexMap = class _ComplexMap {
|
|
481
|
+
_keyProjection;
|
|
482
|
+
_keys = /* @__PURE__ */ new Map();
|
|
483
|
+
_values = /* @__PURE__ */ new Map();
|
|
466
484
|
// prettier-ignore
|
|
467
485
|
constructor(_keyProjection, entries2) {
|
|
468
486
|
this._keyProjection = _keyProjection;
|
|
469
|
-
this._keys = /* @__PURE__ */ new Map();
|
|
470
|
-
this._values = /* @__PURE__ */ new Map();
|
|
471
487
|
if (entries2) {
|
|
472
488
|
for (const [key, value] of entries2) {
|
|
473
489
|
this.set(key, value);
|
|
@@ -551,11 +567,11 @@ var makeMap = (keyProjection) => class BoundComplexMap extends ComplexMap {
|
|
|
551
567
|
}
|
|
552
568
|
};
|
|
553
569
|
|
|
554
|
-
//
|
|
570
|
+
// src/deep.ts
|
|
555
571
|
import get from "lodash.get";
|
|
556
572
|
import set from "lodash.set";
|
|
557
573
|
import { invariant as invariant4 } from "@dxos/invariant";
|
|
558
|
-
var __dxlog_file4 = "/
|
|
574
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/common/util/src/deep.ts";
|
|
559
575
|
var setDeep = (obj, path, value) => {
|
|
560
576
|
invariant4(path.length > 0, void 0, {
|
|
561
577
|
F: __dxlog_file4,
|
|
@@ -585,16 +601,14 @@ var getDeep = (obj, path) => {
|
|
|
585
601
|
return parent;
|
|
586
602
|
};
|
|
587
603
|
|
|
588
|
-
//
|
|
604
|
+
// src/defer-function.ts
|
|
589
605
|
var deferFunction = (fnProvider) => (...args) => fnProvider()(...args);
|
|
590
606
|
|
|
591
|
-
//
|
|
592
|
-
|
|
593
|
-
Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose");
|
|
594
|
-
|
|
595
|
-
// packages/common/util/src/defer.ts
|
|
607
|
+
// src/defer.ts
|
|
608
|
+
import "@hazae41/symbol-dispose-polyfill";
|
|
596
609
|
var defer = (fn) => new DeferGuard(fn);
|
|
597
610
|
var DeferGuard = class {
|
|
611
|
+
_fn;
|
|
598
612
|
/**
|
|
599
613
|
* @internal
|
|
600
614
|
*/
|
|
@@ -610,6 +624,7 @@ var DeferGuard = class {
|
|
|
610
624
|
};
|
|
611
625
|
var deferAsync = (fn) => new DeferAsyncGuard(fn);
|
|
612
626
|
var DeferAsyncGuard = class {
|
|
627
|
+
_fn;
|
|
613
628
|
/**
|
|
614
629
|
* @internal
|
|
615
630
|
*/
|
|
@@ -621,9 +636,11 @@ var DeferAsyncGuard = class {
|
|
|
621
636
|
}
|
|
622
637
|
};
|
|
623
638
|
|
|
624
|
-
//
|
|
639
|
+
// src/entry.ts
|
|
625
640
|
var entry = (map, key) => new MapEntry(map, key);
|
|
626
641
|
var MapEntry = class {
|
|
642
|
+
_map;
|
|
643
|
+
_key;
|
|
627
644
|
/**
|
|
628
645
|
* @internal
|
|
629
646
|
*/
|
|
@@ -649,37 +666,16 @@ var MapEntry = class {
|
|
|
649
666
|
}
|
|
650
667
|
};
|
|
651
668
|
|
|
652
|
-
//
|
|
653
|
-
var
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
"",
|
|
658
|
-
""
|
|
659
|
-
];
|
|
660
|
-
let foundFirst = false;
|
|
661
|
-
for (let i = 0; i < characters.length; i++) {
|
|
662
|
-
const char = characters[i];
|
|
663
|
-
if (renderableCharRegex.test(char)) {
|
|
664
|
-
if (!foundFirst) {
|
|
665
|
-
result[0] = char;
|
|
666
|
-
foundFirst = true;
|
|
667
|
-
} else {
|
|
668
|
-
const textBetween = characters.slice(result[0].length, i).join("");
|
|
669
|
-
if (/[^\p{L}\p{N}_]/u.test(textBetween)) {
|
|
670
|
-
result[1] = char;
|
|
671
|
-
break;
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
return result;
|
|
677
|
-
};
|
|
669
|
+
// src/filename.ts
|
|
670
|
+
var createFilename = ({ parts = [], ext, date = /* @__PURE__ */ new Date() }) => [
|
|
671
|
+
date.toISOString().replace(/[:.]/g, "-"),
|
|
672
|
+
...parts
|
|
673
|
+
].join("_") + (ext ? `.${ext}` : "");
|
|
678
674
|
|
|
679
|
-
//
|
|
675
|
+
// src/for-each-async.ts
|
|
680
676
|
var forEachAsync = (items, fn) => Promise.all(items.map(fn));
|
|
681
677
|
|
|
682
|
-
//
|
|
678
|
+
// src/human-hash.ts
|
|
683
679
|
import { PublicKey } from "@dxos/keys";
|
|
684
680
|
var DEFAULT_WORDLIST = [
|
|
685
681
|
"ack",
|
|
@@ -940,6 +936,7 @@ var DEFAULT_WORDLIST = [
|
|
|
940
936
|
"zulu"
|
|
941
937
|
];
|
|
942
938
|
var HumanHasher = class {
|
|
939
|
+
wordlist;
|
|
943
940
|
/**
|
|
944
941
|
* Transforms hex digests to human-readable strings.
|
|
945
942
|
*
|
|
@@ -1010,7 +1007,7 @@ var humanize = (value) => {
|
|
|
1010
1007
|
return hasher.humanize(value);
|
|
1011
1008
|
};
|
|
1012
1009
|
|
|
1013
|
-
//
|
|
1010
|
+
// src/map.ts
|
|
1014
1011
|
var defaultMap = (map, key, def) => {
|
|
1015
1012
|
let value = map.get(key);
|
|
1016
1013
|
if (value === void 0) {
|
|
@@ -1020,7 +1017,7 @@ var defaultMap = (map, key, def) => {
|
|
|
1020
1017
|
return value;
|
|
1021
1018
|
};
|
|
1022
1019
|
|
|
1023
|
-
//
|
|
1020
|
+
// src/instance-id.ts
|
|
1024
1021
|
var symbol = Symbol.for("dxos.instance-contexts");
|
|
1025
1022
|
var instanceContexts = globalThis[symbol] ??= /* @__PURE__ */ new WeakMap();
|
|
1026
1023
|
var getPrototypeSpecificInstanceId = (instance) => {
|
|
@@ -1044,7 +1041,7 @@ var getDebugName = (instance) => {
|
|
|
1044
1041
|
return `${prototype.constructor?.name ?? "Object"}#${getPrototypeSpecificInstanceId(instance)}`;
|
|
1045
1042
|
};
|
|
1046
1043
|
|
|
1047
|
-
//
|
|
1044
|
+
// src/interval.ts
|
|
1048
1045
|
var exponentialBackoffInterval = (cb, initialInterval) => {
|
|
1049
1046
|
let interval = initialInterval;
|
|
1050
1047
|
const repeat = () => {
|
|
@@ -1056,7 +1053,7 @@ var exponentialBackoffInterval = (cb, initialInterval) => {
|
|
|
1056
1053
|
return () => clearTimeout(timeoutId);
|
|
1057
1054
|
};
|
|
1058
1055
|
|
|
1059
|
-
//
|
|
1056
|
+
// src/join-tables.ts
|
|
1060
1057
|
var joinTables = (leftColumn, rightColumn, left, right) => {
|
|
1061
1058
|
const map = /* @__PURE__ */ new Map();
|
|
1062
1059
|
const used = /* @__PURE__ */ new Set();
|
|
@@ -1077,11 +1074,11 @@ var joinTables = (leftColumn, rightColumn, left, right) => {
|
|
|
1077
1074
|
return result;
|
|
1078
1075
|
};
|
|
1079
1076
|
|
|
1080
|
-
//
|
|
1077
|
+
// src/json.ts
|
|
1081
1078
|
import { inspect as inspect2 } from "@dxos/node-std/util";
|
|
1082
1079
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
1083
1080
|
|
|
1084
|
-
//
|
|
1081
|
+
// src/uint8array.ts
|
|
1085
1082
|
var arraysEqual = (a, b) => {
|
|
1086
1083
|
if (a.length !== b.length) {
|
|
1087
1084
|
return false;
|
|
@@ -1102,10 +1099,10 @@ var bufferToArray = (buffer) => {
|
|
|
1102
1099
|
var stringToArray = (string) => bufferToArray(Buffer.from(string, "hex"));
|
|
1103
1100
|
var arrayToString = (array) => arrayToBuffer(array).toString("hex");
|
|
1104
1101
|
|
|
1105
|
-
//
|
|
1102
|
+
// src/json.ts
|
|
1106
1103
|
var MAX_DEPTH = 5;
|
|
1107
1104
|
var LOG_MAX_DEPTH = 7;
|
|
1108
|
-
|
|
1105
|
+
var jsonReplacer = (key, value) => {
|
|
1109
1106
|
if (value !== null && typeof value === "object" && typeof value[inspect2.custom] === "function") {
|
|
1110
1107
|
return value[inspect2.custom]();
|
|
1111
1108
|
}
|
|
@@ -1118,7 +1115,7 @@ function jsonReplacer(key, value) {
|
|
|
1118
1115
|
}
|
|
1119
1116
|
}
|
|
1120
1117
|
return value;
|
|
1121
|
-
}
|
|
1118
|
+
};
|
|
1122
1119
|
var jsonify = (value, depth = 0, visitedObjects = /* @__PURE__ */ new WeakSet()) => {
|
|
1123
1120
|
if (depth > MAX_DEPTH) {
|
|
1124
1121
|
return null;
|
|
@@ -1193,7 +1190,7 @@ var jsonKeyReplacer = (options = {}) => (key, value) => {
|
|
|
1193
1190
|
return value;
|
|
1194
1191
|
};
|
|
1195
1192
|
|
|
1196
|
-
//
|
|
1193
|
+
// src/map-values.ts
|
|
1197
1194
|
var mapValues = (obj, fn) => {
|
|
1198
1195
|
const result = {};
|
|
1199
1196
|
Object.keys(obj).forEach((key) => {
|
|
@@ -1205,31 +1202,10 @@ var deepMapValues = (value, fn) => {
|
|
|
1205
1202
|
return new DeepMapper(fn).map(value);
|
|
1206
1203
|
};
|
|
1207
1204
|
var DeepMapper = class {
|
|
1205
|
+
_fn;
|
|
1206
|
+
_cyclic = /* @__PURE__ */ new Map();
|
|
1208
1207
|
constructor(_fn) {
|
|
1209
1208
|
this._fn = _fn;
|
|
1210
|
-
this._cyclic = /* @__PURE__ */ new Map();
|
|
1211
|
-
this._recurse = (value) => {
|
|
1212
|
-
if (this._cyclic.has(value)) {
|
|
1213
|
-
return this._cyclic.get(value);
|
|
1214
|
-
}
|
|
1215
|
-
if (Array.isArray(value)) {
|
|
1216
|
-
const res = new Array(value.length);
|
|
1217
|
-
this._cyclic.set(value, res);
|
|
1218
|
-
for (let i = 0; i < value.length; i++) {
|
|
1219
|
-
res[i] = this._map(value[i], i);
|
|
1220
|
-
}
|
|
1221
|
-
return res;
|
|
1222
|
-
} else if (value !== null && typeof value === "object") {
|
|
1223
|
-
const res = {};
|
|
1224
|
-
this._cyclic.set(value, res);
|
|
1225
|
-
for (const key in value) {
|
|
1226
|
-
res[key] = this._map(value[key], key);
|
|
1227
|
-
}
|
|
1228
|
-
return res;
|
|
1229
|
-
} else {
|
|
1230
|
-
return value;
|
|
1231
|
-
}
|
|
1232
|
-
};
|
|
1233
1209
|
}
|
|
1234
1210
|
map(value) {
|
|
1235
1211
|
return this._map(value, void 0);
|
|
@@ -1240,36 +1216,37 @@ var DeepMapper = class {
|
|
|
1240
1216
|
}
|
|
1241
1217
|
return this._fn(value, this._recurse, key);
|
|
1242
1218
|
}
|
|
1219
|
+
_recurse = (value) => {
|
|
1220
|
+
if (this._cyclic.has(value)) {
|
|
1221
|
+
return this._cyclic.get(value);
|
|
1222
|
+
}
|
|
1223
|
+
if (Array.isArray(value)) {
|
|
1224
|
+
const res = new Array(value.length);
|
|
1225
|
+
this._cyclic.set(value, res);
|
|
1226
|
+
for (let i = 0; i < value.length; i++) {
|
|
1227
|
+
res[i] = this._map(value[i], i);
|
|
1228
|
+
}
|
|
1229
|
+
return res;
|
|
1230
|
+
} else if (value !== null && typeof value === "object") {
|
|
1231
|
+
const res = {};
|
|
1232
|
+
this._cyclic.set(value, res);
|
|
1233
|
+
for (const key in value) {
|
|
1234
|
+
res[key] = this._map(value[key], key);
|
|
1235
|
+
}
|
|
1236
|
+
return res;
|
|
1237
|
+
} else {
|
|
1238
|
+
return value;
|
|
1239
|
+
}
|
|
1240
|
+
};
|
|
1243
1241
|
};
|
|
1244
1242
|
var deepMapValuesAsync = (value, fn) => {
|
|
1245
1243
|
return new DeepMapperAsync(fn).map(value);
|
|
1246
1244
|
};
|
|
1247
1245
|
var DeepMapperAsync = class {
|
|
1246
|
+
_fn;
|
|
1247
|
+
_cyclic = /* @__PURE__ */ new Map();
|
|
1248
1248
|
constructor(_fn) {
|
|
1249
1249
|
this._fn = _fn;
|
|
1250
|
-
this._cyclic = /* @__PURE__ */ new Map();
|
|
1251
|
-
this._recurse = async (value) => {
|
|
1252
|
-
if (this._cyclic.has(value)) {
|
|
1253
|
-
return this._cyclic.get(value);
|
|
1254
|
-
}
|
|
1255
|
-
if (Array.isArray(value)) {
|
|
1256
|
-
const res = new Array(value.length);
|
|
1257
|
-
this._cyclic.set(value, res);
|
|
1258
|
-
for (let i = 0; i < value.length; i++) {
|
|
1259
|
-
res[i] = await this._map(value[i], i);
|
|
1260
|
-
}
|
|
1261
|
-
return res;
|
|
1262
|
-
} else if (value !== null && typeof value === "object") {
|
|
1263
|
-
const res = {};
|
|
1264
|
-
this._cyclic.set(value, res);
|
|
1265
|
-
for (const key in value) {
|
|
1266
|
-
res[key] = await this._map(value[key], key);
|
|
1267
|
-
}
|
|
1268
|
-
return res;
|
|
1269
|
-
} else {
|
|
1270
|
-
return value;
|
|
1271
|
-
}
|
|
1272
|
-
};
|
|
1273
1250
|
}
|
|
1274
1251
|
map(value) {
|
|
1275
1252
|
return this._map(value, void 0);
|
|
@@ -1280,6 +1257,28 @@ var DeepMapperAsync = class {
|
|
|
1280
1257
|
}
|
|
1281
1258
|
return this._fn(value, this._recurse, key);
|
|
1282
1259
|
}
|
|
1260
|
+
_recurse = async (value) => {
|
|
1261
|
+
if (this._cyclic.has(value)) {
|
|
1262
|
+
return this._cyclic.get(value);
|
|
1263
|
+
}
|
|
1264
|
+
if (Array.isArray(value)) {
|
|
1265
|
+
const res = new Array(value.length);
|
|
1266
|
+
this._cyclic.set(value, res);
|
|
1267
|
+
for (let i = 0; i < value.length; i++) {
|
|
1268
|
+
res[i] = await this._map(value[i], i);
|
|
1269
|
+
}
|
|
1270
|
+
return res;
|
|
1271
|
+
} else if (value !== null && typeof value === "object") {
|
|
1272
|
+
const res = {};
|
|
1273
|
+
this._cyclic.set(value, res);
|
|
1274
|
+
for (const key in value) {
|
|
1275
|
+
res[key] = await this._map(value[key], key);
|
|
1276
|
+
}
|
|
1277
|
+
return res;
|
|
1278
|
+
} else {
|
|
1279
|
+
return value;
|
|
1280
|
+
}
|
|
1281
|
+
};
|
|
1283
1282
|
};
|
|
1284
1283
|
var visitValues = (object, visitor) => {
|
|
1285
1284
|
if (Array.isArray(object)) {
|
|
@@ -1291,11 +1290,11 @@ var visitValues = (object, visitor) => {
|
|
|
1291
1290
|
}
|
|
1292
1291
|
};
|
|
1293
1292
|
|
|
1294
|
-
//
|
|
1293
|
+
// src/object.ts
|
|
1295
1294
|
var keys = (obj) => Object.keys(obj);
|
|
1296
1295
|
var entries = (obj) => Object.entries(obj);
|
|
1297
1296
|
|
|
1298
|
-
//
|
|
1297
|
+
// src/order-keys.ts
|
|
1299
1298
|
var orderKeys = (obj, order) => {
|
|
1300
1299
|
const ordered = {};
|
|
1301
1300
|
for (const key of order) {
|
|
@@ -1311,7 +1310,7 @@ var orderKeys = (obj, order) => {
|
|
|
1311
1310
|
return ordered;
|
|
1312
1311
|
};
|
|
1313
1312
|
|
|
1314
|
-
//
|
|
1313
|
+
// src/order.ts
|
|
1315
1314
|
var inferObjectOrder = (objectMap, order = []) => {
|
|
1316
1315
|
const orderedObjects = order.reduce((acc, id) => {
|
|
1317
1316
|
if (id in objectMap) {
|
|
@@ -1338,7 +1337,7 @@ var inferRecordOrder = (objectMap, order = []) => {
|
|
|
1338
1337
|
}, {}), objectMap);
|
|
1339
1338
|
};
|
|
1340
1339
|
|
|
1341
|
-
//
|
|
1340
|
+
// src/pick.ts
|
|
1342
1341
|
var pick = (obj, keys2) => {
|
|
1343
1342
|
return keys2.reduce((result, key) => {
|
|
1344
1343
|
if (obj && key in obj) {
|
|
@@ -1366,9 +1365,20 @@ var omit = (obj, keys2) => {
|
|
|
1366
1365
|
return result;
|
|
1367
1366
|
};
|
|
1368
1367
|
|
|
1369
|
-
//
|
|
1368
|
+
// src/platform.ts
|
|
1370
1369
|
var isNode = () => typeof process !== "undefined" && process.versions != null && process.versions.node != null;
|
|
1371
|
-
var
|
|
1370
|
+
var isBun = () => globalThis.Bun !== void 0;
|
|
1371
|
+
var isTauri = () => !!globalThis.__TAURI__;
|
|
1372
|
+
var isMobile = () => {
|
|
1373
|
+
let check = false;
|
|
1374
|
+
(function(a) {
|
|
1375
|
+
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) {
|
|
1376
|
+
check = true;
|
|
1377
|
+
}
|
|
1378
|
+
})(navigator.userAgent || navigator.vendor || window.opera);
|
|
1379
|
+
return check;
|
|
1380
|
+
};
|
|
1381
|
+
var isMobileOrTablet = () => {
|
|
1372
1382
|
let check = false;
|
|
1373
1383
|
((a) => {
|
|
1374
1384
|
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) {
|
|
@@ -1390,7 +1400,7 @@ var iosCheck = () => {
|
|
|
1390
1400
|
};
|
|
1391
1401
|
var safariCheck = () => typeof navigator !== "undefined" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
|
1392
1402
|
var getHostPlatform = () => {
|
|
1393
|
-
if (!("navigator" in
|
|
1403
|
+
if (!("navigator" in globalThis)) {
|
|
1394
1404
|
return "unknown";
|
|
1395
1405
|
}
|
|
1396
1406
|
const platform = (navigator.userAgentData?.platform || navigator.platform)?.toLowerCase();
|
|
@@ -1407,7 +1417,7 @@ var getHostPlatform = () => {
|
|
|
1407
1417
|
}
|
|
1408
1418
|
};
|
|
1409
1419
|
|
|
1410
|
-
//
|
|
1420
|
+
// src/position.ts
|
|
1411
1421
|
var byPosition = ({ position: a = "static" }, { position: b = "static" }) => {
|
|
1412
1422
|
if (a === b) {
|
|
1413
1423
|
return 0;
|
|
@@ -1420,14 +1430,14 @@ var byPosition = ({ position: a = "static" }, { position: b = "static" }) => {
|
|
|
1420
1430
|
}
|
|
1421
1431
|
};
|
|
1422
1432
|
|
|
1423
|
-
//
|
|
1433
|
+
// src/random.ts
|
|
1424
1434
|
var randomInt = (max, min = 0) => {
|
|
1425
1435
|
min = Math.ceil(min);
|
|
1426
1436
|
max = Math.floor(max);
|
|
1427
1437
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
1428
1438
|
};
|
|
1429
1439
|
|
|
1430
|
-
//
|
|
1440
|
+
// src/range.ts
|
|
1431
1441
|
var range = (n = 0, mapper) => {
|
|
1432
1442
|
const range2 = Array.from(Array(n).keys());
|
|
1433
1443
|
return mapper == null ? range2 : range2.map(mapper);
|
|
@@ -1439,7 +1449,7 @@ var clamp = (value, min, max) => {
|
|
|
1439
1449
|
return Math.min(Math.max(value, min), max);
|
|
1440
1450
|
};
|
|
1441
1451
|
|
|
1442
|
-
//
|
|
1452
|
+
// src/reducers.ts
|
|
1443
1453
|
var accessBy = (value, accessor) => typeof accessor === "function" ? accessor(value) : value[accessor];
|
|
1444
1454
|
var median = (values) => {
|
|
1445
1455
|
const mid = Math.floor(values.length / 2);
|
|
@@ -1525,7 +1535,7 @@ var createBucketReducer = (period) => ({
|
|
|
1525
1535
|
}
|
|
1526
1536
|
});
|
|
1527
1537
|
|
|
1528
|
-
//
|
|
1538
|
+
// src/remove-undefined-keys.ts
|
|
1529
1539
|
var removeUndefinedProperties = (object) => {
|
|
1530
1540
|
for (const prop of [
|
|
1531
1541
|
...Object.getOwnPropertyNames(object),
|
|
@@ -1566,7 +1576,7 @@ var removeProperties = (root, condition) => {
|
|
|
1566
1576
|
return result;
|
|
1567
1577
|
};
|
|
1568
1578
|
|
|
1569
|
-
//
|
|
1579
|
+
// src/safe-await.ts
|
|
1570
1580
|
var safeAwaitAll = async (source, taskFactory, onError) => {
|
|
1571
1581
|
const failedItems = [];
|
|
1572
1582
|
await Promise.all([
|
|
@@ -1584,7 +1594,7 @@ var safeAwaitAll = async (source, taskFactory, onError) => {
|
|
|
1584
1594
|
return failedItems;
|
|
1585
1595
|
};
|
|
1586
1596
|
|
|
1587
|
-
//
|
|
1597
|
+
// src/safe-instanceof.ts
|
|
1588
1598
|
var instanceTag = Symbol("instanceTag");
|
|
1589
1599
|
var safeInstanceof = (tag) => (target) => {
|
|
1590
1600
|
target.prototype[instanceTag] = tag;
|
|
@@ -1596,38 +1606,124 @@ var safeInstanceof = (tag) => (target) => {
|
|
|
1596
1606
|
});
|
|
1597
1607
|
};
|
|
1598
1608
|
|
|
1599
|
-
//
|
|
1600
|
-
|
|
1609
|
+
// src/safe-parse.ts
|
|
1610
|
+
function safeParseInt(str, defaultValue) {
|
|
1601
1611
|
try {
|
|
1602
|
-
const
|
|
1603
|
-
return isNaN(
|
|
1604
|
-
} catch
|
|
1612
|
+
const value = parseInt(str ?? "");
|
|
1613
|
+
return isNaN(value) ? defaultValue : value;
|
|
1614
|
+
} catch {
|
|
1605
1615
|
return defaultValue;
|
|
1606
1616
|
}
|
|
1607
|
-
}
|
|
1608
|
-
|
|
1617
|
+
}
|
|
1618
|
+
function safeParseFloat(str, defaultValue) {
|
|
1609
1619
|
try {
|
|
1610
|
-
|
|
1620
|
+
const value = parseFloat(str ?? "");
|
|
1621
|
+
return isNaN(value) ? defaultValue : value;
|
|
1611
1622
|
} catch {
|
|
1612
|
-
return defaultValue
|
|
1623
|
+
return defaultValue;
|
|
1613
1624
|
}
|
|
1614
|
-
}
|
|
1615
|
-
var safeParseJson = (
|
|
1616
|
-
if (
|
|
1625
|
+
}
|
|
1626
|
+
var safeParseJson = (str, defaultValue) => {
|
|
1627
|
+
if (str && str.length > 0) {
|
|
1617
1628
|
try {
|
|
1618
|
-
return JSON.parse(
|
|
1619
|
-
} catch
|
|
1629
|
+
return JSON.parse(str);
|
|
1630
|
+
} catch {
|
|
1620
1631
|
}
|
|
1621
1632
|
}
|
|
1622
1633
|
return defaultValue;
|
|
1623
1634
|
};
|
|
1624
1635
|
|
|
1625
|
-
//
|
|
1636
|
+
// src/safe-stringify.ts
|
|
1637
|
+
var SKIP = Object.freeze({});
|
|
1638
|
+
function safeStringify(obj, filter = defaultFilter, indent = 2) {
|
|
1639
|
+
const seen = /* @__PURE__ */ new WeakMap();
|
|
1640
|
+
function replacer(key, value) {
|
|
1641
|
+
try {
|
|
1642
|
+
let path = key;
|
|
1643
|
+
if (!key) {
|
|
1644
|
+
path = "$";
|
|
1645
|
+
return value;
|
|
1646
|
+
} else if (this) {
|
|
1647
|
+
const parentPath = seen.get(this);
|
|
1648
|
+
path = parentPath ? `${parentPath}.${key}` : key;
|
|
1649
|
+
}
|
|
1650
|
+
if (value == null) {
|
|
1651
|
+
return value;
|
|
1652
|
+
}
|
|
1653
|
+
if (typeof value === "function") {
|
|
1654
|
+
return void 0;
|
|
1655
|
+
}
|
|
1656
|
+
if (typeof value === "object" && Object.getPrototypeOf(value) !== Object.prototype) {
|
|
1657
|
+
return void 0;
|
|
1658
|
+
}
|
|
1659
|
+
if (typeof value === "object" && value !== null) {
|
|
1660
|
+
const exists = seen.get(value);
|
|
1661
|
+
if (exists) {
|
|
1662
|
+
return `[${path} => ${exists}]`;
|
|
1663
|
+
}
|
|
1664
|
+
seen.set(value, path);
|
|
1665
|
+
}
|
|
1666
|
+
if (filter) {
|
|
1667
|
+
const filteredValue = filter?.(key, value);
|
|
1668
|
+
if (filteredValue !== void 0) {
|
|
1669
|
+
return filteredValue === SKIP ? void 0 : filteredValue;
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
return value;
|
|
1673
|
+
} catch (error) {
|
|
1674
|
+
return `ERROR: ${error.message}`;
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1677
|
+
return JSON.stringify(obj, replacer, indent);
|
|
1678
|
+
}
|
|
1679
|
+
var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen } = {}) => {
|
|
1680
|
+
let currentDepth = 0;
|
|
1681
|
+
const depthMap = /* @__PURE__ */ new WeakMap();
|
|
1682
|
+
return function(key, value) {
|
|
1683
|
+
if (key === "") {
|
|
1684
|
+
currentDepth = 0;
|
|
1685
|
+
} else if (this && typeof this === "object") {
|
|
1686
|
+
const parentDepth = depthMap.get(this) ?? 0;
|
|
1687
|
+
currentDepth = parentDepth + 1;
|
|
1688
|
+
}
|
|
1689
|
+
if (typeof value === "function") {
|
|
1690
|
+
return SKIP;
|
|
1691
|
+
}
|
|
1692
|
+
if (value && typeof value === "object") {
|
|
1693
|
+
depthMap.set(value, currentDepth);
|
|
1694
|
+
if (maxDepth != null && currentDepth >= maxDepth) {
|
|
1695
|
+
return Array.isArray(value) ? `[{ length: ${value.length} }]` : `{ keys: ${Object.keys(value).length} }`;
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
if (omit2?.includes(key)) {
|
|
1699
|
+
return SKIP;
|
|
1700
|
+
}
|
|
1701
|
+
if (parse?.includes(key) && typeof value === "string") {
|
|
1702
|
+
try {
|
|
1703
|
+
return JSON.parse(value);
|
|
1704
|
+
} catch {
|
|
1705
|
+
return value;
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
if (maxArrayLen != null && Array.isArray(value) && value.length > maxArrayLen) {
|
|
1709
|
+
return `[length: ${value.length}]`;
|
|
1710
|
+
}
|
|
1711
|
+
if (maxStringLen != null && typeof value === "string" && value.length > maxStringLen) {
|
|
1712
|
+
return value.slice(0, maxStringLen) + "...";
|
|
1713
|
+
}
|
|
1714
|
+
return value;
|
|
1715
|
+
};
|
|
1716
|
+
};
|
|
1717
|
+
var defaultFilter = createReplacer();
|
|
1718
|
+
|
|
1719
|
+
// src/sliding-window-summary.ts
|
|
1626
1720
|
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1627
|
-
var __dxlog_file5 = "/
|
|
1721
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
|
|
1628
1722
|
var SlidingWindowSummary = class {
|
|
1723
|
+
_buffer;
|
|
1724
|
+
_sum = 0;
|
|
1725
|
+
_precision;
|
|
1629
1726
|
constructor(options) {
|
|
1630
|
-
this._sum = 0;
|
|
1631
1727
|
this._buffer = new CircularBuffer(options.dataPoints);
|
|
1632
1728
|
if (options.precision != null) {
|
|
1633
1729
|
invariant5(options.precision >= 0, void 0, {
|
|
@@ -1678,7 +1774,7 @@ var SlidingWindowSummary = class {
|
|
|
1678
1774
|
}
|
|
1679
1775
|
};
|
|
1680
1776
|
|
|
1681
|
-
//
|
|
1777
|
+
// src/sort.ts
|
|
1682
1778
|
var compareScalar = (inc = true) => (a, b) => (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);
|
|
1683
1779
|
var compareString = (inc = true, caseInsensitive = true) => (a, b) => {
|
|
1684
1780
|
if (caseInsensitive) {
|
|
@@ -1700,25 +1796,43 @@ var compareMulti = (sorters) => (a, b) => {
|
|
|
1700
1796
|
return sort();
|
|
1701
1797
|
};
|
|
1702
1798
|
|
|
1703
|
-
//
|
|
1799
|
+
// src/string.ts
|
|
1704
1800
|
var capitalize = (str) => {
|
|
1705
1801
|
if (str.length === 0) {
|
|
1706
1802
|
return "";
|
|
1707
1803
|
}
|
|
1708
1804
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
1709
1805
|
};
|
|
1806
|
+
function trim(strings, ...values) {
|
|
1807
|
+
const raw = strings.reduce((out, str, i) => {
|
|
1808
|
+
out += str;
|
|
1809
|
+
if (i < values.length) {
|
|
1810
|
+
const match = str.match(/(^|\n)([ \t]*)$/);
|
|
1811
|
+
const baseIndent = match ? match[2] : "";
|
|
1812
|
+
const val = String(values[i]).replace(/\r?\n/g, "\n" + baseIndent);
|
|
1813
|
+
out += val;
|
|
1814
|
+
}
|
|
1815
|
+
return out;
|
|
1816
|
+
}, "");
|
|
1817
|
+
const lines = raw.split("\n");
|
|
1818
|
+
while (lines.length && !lines[0].trim()) lines.shift();
|
|
1819
|
+
while (lines.length && !lines[lines.length - 1].trim()) lines.pop();
|
|
1820
|
+
const minIndent = Math.min(...lines.filter((l) => l.trim()).map((l) => l.match(/^[ \t]*/)?.[0].length ?? 0));
|
|
1821
|
+
return lines.map((l) => l.slice(minIndent)).join("\n");
|
|
1822
|
+
}
|
|
1823
|
+
var kebabize = (str) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? "-" : "") + $.toLowerCase());
|
|
1710
1824
|
|
|
1711
|
-
//
|
|
1825
|
+
// src/sum.ts
|
|
1712
1826
|
var sum = (values) => values.reduce((a, b) => a + b, 0);
|
|
1713
1827
|
|
|
1714
|
-
//
|
|
1828
|
+
// src/throw-unhandled-error.ts
|
|
1715
1829
|
var throwUnhandledError = (error) => {
|
|
1716
1830
|
queueMicrotask(() => {
|
|
1717
1831
|
throw error;
|
|
1718
1832
|
});
|
|
1719
1833
|
};
|
|
1720
1834
|
|
|
1721
|
-
//
|
|
1835
|
+
// src/to-fallback.ts
|
|
1722
1836
|
var idEmoji = [
|
|
1723
1837
|
// When changing this set, please check the result in a console or e.g. RunKit (https://runkit.com/thure/642214441dd6ae000855a8de)
|
|
1724
1838
|
// Emoji sometimes use a combination of code points, and some code points aren't visible on their own, so by adding or deleting you may unintentionally create non-visible items.
|
|
@@ -1903,12 +2017,10 @@ var toFallback = (hash) => {
|
|
|
1903
2017
|
};
|
|
1904
2018
|
};
|
|
1905
2019
|
|
|
1906
|
-
//
|
|
2020
|
+
// src/tracer.ts
|
|
1907
2021
|
var Tracer = class {
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
this._recording = false;
|
|
1911
|
-
}
|
|
2022
|
+
_events = /* @__PURE__ */ new Map();
|
|
2023
|
+
_recording = false;
|
|
1912
2024
|
// TODO(burdon): Start/stop methods for recording data? By id?
|
|
1913
2025
|
// Alternatively, enable subscriptions to track/compute series.
|
|
1914
2026
|
// TODO(burdon): Hierarchical traces?
|
|
@@ -1968,7 +2080,7 @@ var Tracer = class {
|
|
|
1968
2080
|
};
|
|
1969
2081
|
var tracer = new Tracer();
|
|
1970
2082
|
|
|
1971
|
-
//
|
|
2083
|
+
// src/tree.ts
|
|
1972
2084
|
import { truncateKey } from "@dxos/debug";
|
|
1973
2085
|
var stringifyTree = (node, ancestors = [], rows = []) => {
|
|
1974
2086
|
if (node.children?.length) {
|
|
@@ -2008,8 +2120,8 @@ var stringifyTree = (node, ancestors = [], rows = []) => {
|
|
|
2008
2120
|
return rows;
|
|
2009
2121
|
};
|
|
2010
2122
|
|
|
2011
|
-
//
|
|
2012
|
-
var
|
|
2123
|
+
// src/types.ts
|
|
2124
|
+
var isTruthy = (value) => !!value;
|
|
2013
2125
|
var isNonNullable = (value) => value != null;
|
|
2014
2126
|
var doAsync = async (fn) => fn();
|
|
2015
2127
|
var getProviderValue = (provider, arg) => {
|
|
@@ -2039,14 +2151,130 @@ var arrayMove = (array, from, to) => {
|
|
|
2039
2151
|
array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);
|
|
2040
2152
|
return array;
|
|
2041
2153
|
};
|
|
2154
|
+
function arraySwap(array, from, to) {
|
|
2155
|
+
const current = array[from];
|
|
2156
|
+
array[from] = array[to];
|
|
2157
|
+
array[to] = current;
|
|
2158
|
+
return array;
|
|
2159
|
+
}
|
|
2042
2160
|
|
|
2043
|
-
//
|
|
2161
|
+
// src/unit.ts
|
|
2162
|
+
var createFormat = (unit) => {
|
|
2163
|
+
return (n, precision = unit.precision ?? 0) => {
|
|
2164
|
+
const value = n / unit.quotient;
|
|
2165
|
+
return {
|
|
2166
|
+
unit,
|
|
2167
|
+
value,
|
|
2168
|
+
formattedValue: value.toFixed(precision),
|
|
2169
|
+
toString: () => `${value.toFixed(precision)}${unit.symbol}`
|
|
2170
|
+
};
|
|
2171
|
+
};
|
|
2172
|
+
};
|
|
2173
|
+
var MS_SECONDS = 1e3;
|
|
2174
|
+
var MS_MINUTES = 60 * MS_SECONDS;
|
|
2175
|
+
var MS_HOURS = 60 * MS_MINUTES;
|
|
2176
|
+
var Unit = {
|
|
2177
|
+
// General.
|
|
2178
|
+
Percent: createFormat({
|
|
2179
|
+
symbol: "%",
|
|
2180
|
+
quotient: 1 / 100,
|
|
2181
|
+
precision: 2
|
|
2182
|
+
}),
|
|
2183
|
+
Thousand: createFormat({
|
|
2184
|
+
symbol: "k",
|
|
2185
|
+
quotient: 1e3,
|
|
2186
|
+
precision: 2
|
|
2187
|
+
}),
|
|
2188
|
+
// Bytes (note KB vs KiB).
|
|
2189
|
+
Gigabyte: createFormat({
|
|
2190
|
+
symbol: "GB",
|
|
2191
|
+
quotient: 1e3 * 1e3 * 1e3,
|
|
2192
|
+
precision: 2
|
|
2193
|
+
}),
|
|
2194
|
+
Megabyte: createFormat({
|
|
2195
|
+
symbol: "MB",
|
|
2196
|
+
quotient: 1e3 * 1e3,
|
|
2197
|
+
precision: 2
|
|
2198
|
+
}),
|
|
2199
|
+
Kilobyte: createFormat({
|
|
2200
|
+
symbol: "KB",
|
|
2201
|
+
quotient: 1e3,
|
|
2202
|
+
precision: 2
|
|
2203
|
+
}),
|
|
2204
|
+
Byte: createFormat({
|
|
2205
|
+
symbol: "B",
|
|
2206
|
+
quotient: 1
|
|
2207
|
+
}),
|
|
2208
|
+
// Time.
|
|
2209
|
+
Hour: createFormat({
|
|
2210
|
+
symbol: "h",
|
|
2211
|
+
quotient: MS_HOURS
|
|
2212
|
+
}),
|
|
2213
|
+
Minute: createFormat({
|
|
2214
|
+
symbol: "m",
|
|
2215
|
+
quotient: MS_MINUTES
|
|
2216
|
+
}),
|
|
2217
|
+
Second: createFormat({
|
|
2218
|
+
symbol: "s",
|
|
2219
|
+
quotient: MS_SECONDS,
|
|
2220
|
+
precision: 1
|
|
2221
|
+
}),
|
|
2222
|
+
Millisecond: createFormat({
|
|
2223
|
+
symbol: "ms",
|
|
2224
|
+
quotient: 1
|
|
2225
|
+
}),
|
|
2226
|
+
Duration: (n) => {
|
|
2227
|
+
const hours = Math.floor(n / MS_HOURS);
|
|
2228
|
+
const minutes = Math.floor(n % MS_HOURS / MS_MINUTES);
|
|
2229
|
+
if (hours) {
|
|
2230
|
+
const formattedValue = minutes ? `${hours}h ${minutes}m` : `${hours}h`;
|
|
2231
|
+
return {
|
|
2232
|
+
unit: {
|
|
2233
|
+
symbol: "h",
|
|
2234
|
+
quotient: MS_HOURS
|
|
2235
|
+
},
|
|
2236
|
+
value: hours,
|
|
2237
|
+
formattedValue,
|
|
2238
|
+
toString: () => formattedValue
|
|
2239
|
+
};
|
|
2240
|
+
}
|
|
2241
|
+
if (minutes) {
|
|
2242
|
+
const seconds2 = (n - MS_MINUTES * minutes) / MS_SECONDS;
|
|
2243
|
+
const formattedValue = seconds2 ? `${minutes}m ${seconds2}s` : `${minutes}m`;
|
|
2244
|
+
return {
|
|
2245
|
+
unit: {
|
|
2246
|
+
symbol: "m",
|
|
2247
|
+
quotient: MS_MINUTES
|
|
2248
|
+
},
|
|
2249
|
+
value: minutes,
|
|
2250
|
+
formattedValue,
|
|
2251
|
+
toString: () => formattedValue
|
|
2252
|
+
};
|
|
2253
|
+
}
|
|
2254
|
+
const seconds = n >= MS_SECONDS;
|
|
2255
|
+
if (seconds) {
|
|
2256
|
+
return Unit.Second(n);
|
|
2257
|
+
}
|
|
2258
|
+
return Unit.Millisecond(n);
|
|
2259
|
+
}
|
|
2260
|
+
};
|
|
2261
|
+
|
|
2262
|
+
// src/url.ts
|
|
2263
|
+
var createUrl = (url, search) => {
|
|
2264
|
+
const base = typeof url === "string" ? new URL(url) : url;
|
|
2265
|
+
if (search) {
|
|
2266
|
+
base.search = new URLSearchParams(Object.entries(search).filter(([_, value]) => value != null)).toString();
|
|
2267
|
+
}
|
|
2268
|
+
return base;
|
|
2269
|
+
};
|
|
2270
|
+
|
|
2271
|
+
// src/weak.ts
|
|
2044
2272
|
var WeakDictionary = class {
|
|
2273
|
+
_internal = /* @__PURE__ */ new Map();
|
|
2274
|
+
_finalization = new FinalizationRegistry((cleanUpCallback) => {
|
|
2275
|
+
cleanUpCallback();
|
|
2276
|
+
});
|
|
2045
2277
|
constructor(entries2) {
|
|
2046
|
-
this._internal = /* @__PURE__ */ new Map();
|
|
2047
|
-
this._finalization = new FinalizationRegistry((cleanUpCallback) => {
|
|
2048
|
-
cleanUpCallback();
|
|
2049
|
-
});
|
|
2050
2278
|
this._internal = new Map(entries2?.map(([key, value]) => [
|
|
2051
2279
|
key,
|
|
2052
2280
|
new WeakRef(value)
|
|
@@ -2135,9 +2363,57 @@ var WeakDictionary = class {
|
|
|
2135
2363
|
}
|
|
2136
2364
|
};
|
|
2137
2365
|
|
|
2138
|
-
//
|
|
2139
|
-
|
|
2140
|
-
|
|
2366
|
+
// src/error-format.ts
|
|
2367
|
+
var formatErrorWithCauses = (error) => {
|
|
2368
|
+
const lines = [];
|
|
2369
|
+
let current = error;
|
|
2370
|
+
let level = 0;
|
|
2371
|
+
while (current) {
|
|
2372
|
+
const prefix = level === 0 ? "" : `Caused by: `;
|
|
2373
|
+
lines.push(prefix + (current.stack ?? String(current)));
|
|
2374
|
+
if (!(current.cause instanceof Error)) break;
|
|
2375
|
+
current = current.cause;
|
|
2376
|
+
level += 1;
|
|
2377
|
+
}
|
|
2378
|
+
return lines.join("\n\n");
|
|
2379
|
+
};
|
|
2380
|
+
|
|
2381
|
+
// src/retry.ts
|
|
2382
|
+
var DEFAULT_RETRY_OPTIONS = {
|
|
2383
|
+
count: 3,
|
|
2384
|
+
delayMs: 100,
|
|
2385
|
+
exponent: 2,
|
|
2386
|
+
retryOnError: async () => true,
|
|
2387
|
+
retryOnValue: async () => false
|
|
2388
|
+
};
|
|
2389
|
+
var retry = async (options, cb) => {
|
|
2390
|
+
const fullOptions = {
|
|
2391
|
+
...DEFAULT_RETRY_OPTIONS,
|
|
2392
|
+
...options
|
|
2393
|
+
};
|
|
2394
|
+
let numRetries = 0, currentDelay = fullOptions.delayMs;
|
|
2395
|
+
while (true) {
|
|
2396
|
+
let result;
|
|
2397
|
+
try {
|
|
2398
|
+
result = await cb();
|
|
2399
|
+
} catch (err) {
|
|
2400
|
+
if (numRetries > fullOptions.count || !await fullOptions.retryOnError(err)) {
|
|
2401
|
+
throw err;
|
|
2402
|
+
}
|
|
2403
|
+
await new Promise((resolve) => setTimeout(resolve, currentDelay));
|
|
2404
|
+
currentDelay *= fullOptions.exponent;
|
|
2405
|
+
numRetries++;
|
|
2406
|
+
continue;
|
|
2407
|
+
}
|
|
2408
|
+
if (!await fullOptions.retryOnValue(result)) {
|
|
2409
|
+
return result;
|
|
2410
|
+
}
|
|
2411
|
+
await new Promise((resolve) => setTimeout(resolve, currentDelay));
|
|
2412
|
+
currentDelay *= fullOptions.exponent;
|
|
2413
|
+
numRetries++;
|
|
2414
|
+
continue;
|
|
2415
|
+
}
|
|
2416
|
+
};
|
|
2141
2417
|
export {
|
|
2142
2418
|
BitField,
|
|
2143
2419
|
Callback,
|
|
@@ -2147,11 +2423,14 @@ export {
|
|
|
2147
2423
|
ComplexSet,
|
|
2148
2424
|
HumanHasher,
|
|
2149
2425
|
MapEntry,
|
|
2426
|
+
SKIP,
|
|
2150
2427
|
SlidingWindowSummary,
|
|
2151
2428
|
Tracer,
|
|
2429
|
+
Unit,
|
|
2152
2430
|
WeakDictionary,
|
|
2153
2431
|
accessBy,
|
|
2154
2432
|
arrayMove,
|
|
2433
|
+
arraySwap,
|
|
2155
2434
|
arrayToBuffer,
|
|
2156
2435
|
arrayToHex,
|
|
2157
2436
|
arrayToString,
|
|
@@ -2163,17 +2442,22 @@ export {
|
|
|
2163
2442
|
chunkArray,
|
|
2164
2443
|
clamp,
|
|
2165
2444
|
clearUndefined,
|
|
2445
|
+
coerceArray,
|
|
2166
2446
|
compareMulti,
|
|
2167
2447
|
compareObject,
|
|
2168
2448
|
compareScalar,
|
|
2169
2449
|
compareString,
|
|
2170
2450
|
createBinder,
|
|
2171
2451
|
createBucketReducer,
|
|
2452
|
+
createFilename,
|
|
2172
2453
|
createGroupReducer,
|
|
2454
|
+
createReplacer,
|
|
2173
2455
|
createSetDispatch,
|
|
2456
|
+
createUrl,
|
|
2174
2457
|
decamelize,
|
|
2175
2458
|
deepMapValues,
|
|
2176
2459
|
deepMapValuesAsync,
|
|
2460
|
+
defaultFilter,
|
|
2177
2461
|
defaultMap,
|
|
2178
2462
|
defer,
|
|
2179
2463
|
deferAsync,
|
|
@@ -2185,12 +2469,12 @@ export {
|
|
|
2185
2469
|
entry,
|
|
2186
2470
|
exponentialBackoffInterval,
|
|
2187
2471
|
forEachAsync,
|
|
2472
|
+
formatErrorWithCauses,
|
|
2188
2473
|
get,
|
|
2189
2474
|
getAsyncProviderValue,
|
|
2190
2475
|
getDate,
|
|
2191
2476
|
getDebugName,
|
|
2192
2477
|
getDeep,
|
|
2193
|
-
getFirstTwoRenderableChars,
|
|
2194
2478
|
getHostPlatform,
|
|
2195
2479
|
getPrototypeSpecificInstanceId,
|
|
2196
2480
|
getProviderValue,
|
|
@@ -2206,14 +2490,19 @@ export {
|
|
|
2206
2490
|
intersectBy,
|
|
2207
2491
|
intersection,
|
|
2208
2492
|
iosCheck,
|
|
2493
|
+
isBun,
|
|
2494
|
+
isMobile,
|
|
2495
|
+
isMobileOrTablet,
|
|
2209
2496
|
isNode,
|
|
2210
2497
|
isNonNullable,
|
|
2211
|
-
|
|
2498
|
+
isTauri,
|
|
2499
|
+
isTruthy,
|
|
2212
2500
|
joinTables,
|
|
2213
2501
|
jsonKeyReplacer,
|
|
2214
2502
|
jsonReplacer,
|
|
2215
2503
|
jsonify,
|
|
2216
2504
|
jsonlogify,
|
|
2505
|
+
kebabize,
|
|
2217
2506
|
keyToEmoji,
|
|
2218
2507
|
keyToFallback,
|
|
2219
2508
|
keyToHue,
|
|
@@ -2222,7 +2511,6 @@ export {
|
|
|
2222
2511
|
makeSet,
|
|
2223
2512
|
mapValues,
|
|
2224
2513
|
median,
|
|
2225
|
-
mobileAndTabletCheck,
|
|
2226
2514
|
numericalValues,
|
|
2227
2515
|
omit,
|
|
2228
2516
|
orderKeys,
|
|
@@ -2238,12 +2526,14 @@ export {
|
|
|
2238
2526
|
removeBy,
|
|
2239
2527
|
removeProperties,
|
|
2240
2528
|
removeUndefinedProperties,
|
|
2529
|
+
retry,
|
|
2241
2530
|
safariCheck,
|
|
2242
2531
|
safeAwaitAll,
|
|
2243
2532
|
safeInstanceof,
|
|
2244
2533
|
safeParseFloat,
|
|
2245
2534
|
safeParseInt,
|
|
2246
2535
|
safeParseJson,
|
|
2536
|
+
safeStringify,
|
|
2247
2537
|
set,
|
|
2248
2538
|
setDeep,
|
|
2249
2539
|
sortKeys,
|
|
@@ -2256,6 +2546,7 @@ export {
|
|
|
2256
2546
|
toFallback,
|
|
2257
2547
|
toHue,
|
|
2258
2548
|
tracer,
|
|
2549
|
+
trim,
|
|
2259
2550
|
visitValues
|
|
2260
2551
|
};
|
|
2261
2552
|
//# sourceMappingURL=index.mjs.map
|