@dxos/util 0.8.3 → 0.8.4-main.16b68245aa
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 +631 -255
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +631 -255
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/array-to-hex.d.ts.map +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/binder.d.ts.map +1 -1
- package/dist/types/src/bitfield.d.ts.map +1 -1
- package/dist/types/src/browser-storage.d.ts +9 -0
- package/dist/types/src/browser-storage.d.ts.map +1 -0
- package/dist/types/src/callback-collection.d.ts.map +1 -1
- package/dist/types/src/callback.d.ts.map +1 -1
- package/dist/types/src/case.d.ts.map +1 -1
- package/dist/types/src/chunk-array.d.ts.map +1 -1
- package/dist/types/src/circular-buffer.d.ts +1 -0
- package/dist/types/src/circular-buffer.d.ts.map +1 -1
- package/dist/types/src/clear-undefined.d.ts.map +1 -1
- package/dist/types/src/complex.d.ts +15 -0
- package/dist/types/src/complex.d.ts.map +1 -1
- package/dist/types/src/composite-key.d.ts +10 -0
- package/dist/types/src/composite-key.d.ts.map +1 -0
- package/dist/types/src/composite-key.test.d.ts +2 -0
- package/dist/types/src/composite-key.test.d.ts.map +1 -0
- package/dist/types/src/deep.d.ts +0 -3
- package/dist/types/src/deep.d.ts.map +1 -1
- package/dist/types/src/defer-function.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-container.d.ts.map +1 -1
- package/dist/types/src/di-key.d.ts +7 -5
- package/dist/types/src/di-key.d.ts.map +1 -1
- package/dist/types/src/entry.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/for-each-async.d.ts.map +1 -1
- package/dist/types/src/human-hash.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +9 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/instance-id.d.ts.map +1 -1
- package/dist/types/src/interval.d.ts.map +1 -1
- package/dist/types/src/join-tables.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/map-values.d.ts.map +1 -1
- package/dist/types/src/map.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/order-keys.d.ts.map +1 -1
- package/dist/types/src/order.d.ts.map +1 -1
- package/dist/types/src/pick.d.ts.map +1 -1
- package/dist/types/src/platform.d.ts +5 -2
- package/dist/types/src/platform.d.ts.map +1 -1
- package/dist/types/src/position.d.ts +1 -1
- package/dist/types/src/position.d.ts.map +1 -1
- package/dist/types/src/random.d.ts.map +1 -1
- package/dist/types/src/range.d.ts.map +1 -1
- package/dist/types/src/reducers.d.ts.map +1 -1
- package/dist/types/src/remove-undefined-keys.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-await.d.ts.map +1 -1
- package/dist/types/src/safe-instanceof.d.ts.map +1 -1
- package/dist/types/src/safe-parse.d.ts +7 -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/safe-stringify.test.d.ts +2 -0
- package/dist/types/src/safe-stringify.test.d.ts.map +1 -0
- package/dist/types/src/sliding-window-summary.d.ts.map +1 -1
- package/dist/types/src/sort.d.ts.map +1 -1
- 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/sum.d.ts.map +1 -1
- package/dist/types/src/throw-unhandled-error.d.ts.map +1 -1
- package/dist/types/src/to-fallback.d.ts +18 -4
- package/dist/types/src/to-fallback.d.ts.map +1 -1
- package/dist/types/src/tracer.d.ts.map +1 -1
- package/dist/types/src/tree.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +24 -6
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/uint8array.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/src/weak.d.ts +15 -0
- package/dist/types/src/weak.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -16
- 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/browser-storage.ts +60 -0
- package/src/circular-buffer.test.ts +27 -1
- package/src/circular-buffer.ts +5 -0
- package/src/complex.test.ts +1 -1
- package/src/complex.ts +32 -0
- package/src/composite-key.test.ts +31 -0
- package/src/composite-key.ts +16 -0
- package/src/deep.ts +2 -6
- package/src/defer.ts +1 -1
- package/src/di-key.ts +10 -8
- package/src/error-format.ts +24 -0
- package/src/filename.ts +16 -0
- package/src/human-hash.test.ts +1 -1
- package/src/index.ts +9 -3
- package/src/json.ts +2 -7
- package/src/object.ts +3 -0
- package/src/platform.ts +35 -3
- package/src/position.test.ts +2 -2
- package/src/retry.ts +74 -0
- package/src/safe-parse.ts +29 -15
- package/src/safe-stringify.test.ts +96 -0
- package/src/safe-stringify.ts +153 -0
- package/src/sort.test.ts +1 -1
- package/src/string.test.ts +19 -0
- package/src/string.ts +40 -0
- package/src/to-fallback.ts +44 -160
- package/src/tree.test.ts +1 -1
- package/src/types.test.ts +11 -1
- package/src/types.ts +40 -12
- package/src/uint8array.test.ts +1 -1
- package/src/unit.test.ts +25 -0
- package/src/unit.ts +87 -0
- package/src/url.test.ts +22 -0
- package/src/url.ts +15 -0
- package/src/weak.test.ts +1 -1
- package/src/weak.ts +52 -14
- 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,28 @@ 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
|
+
};
|
|
108
|
+
|
|
109
|
+
// src/assume.ts
|
|
110
|
+
function assumeType(value) {
|
|
111
|
+
}
|
|
100
112
|
|
|
101
|
-
//
|
|
102
|
-
import
|
|
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 = "/home/runner/work/dxos/dxos/packages/common/util/src/bitfield.ts";
|
|
111
122
|
var BitField = class _BitField {
|
|
112
123
|
static get(data, idx) {
|
|
113
124
|
const bit = data[idx >> 3] >> 7 - idx % 8 & 1;
|
|
@@ -139,15 +150,7 @@ var BitField = class _BitField {
|
|
|
139
150
|
return result;
|
|
140
151
|
}
|
|
141
152
|
static and(first, second) {
|
|
142
|
-
invariant(first.length === second.length, "Bitfields must be of the same length"
|
|
143
|
-
F: __dxlog_file,
|
|
144
|
-
L: 52,
|
|
145
|
-
S: this,
|
|
146
|
-
A: [
|
|
147
|
-
"first.length === second.length",
|
|
148
|
-
"'Bitfields must be of the same length'"
|
|
149
|
-
]
|
|
150
|
-
});
|
|
153
|
+
invariant(first.length === second.length, "Bitfields must be of the same length");
|
|
151
154
|
const result = new Uint8Array(first.length);
|
|
152
155
|
for (let i = 0; i < first.length; i++) {
|
|
153
156
|
result[i] = first[i] & second[i];
|
|
@@ -175,7 +178,50 @@ var BitField = class _BitField {
|
|
|
175
178
|
}
|
|
176
179
|
};
|
|
177
180
|
|
|
178
|
-
//
|
|
181
|
+
// src/browser-storage.ts
|
|
182
|
+
var clearIndexedDB = async () => {
|
|
183
|
+
const dbs = await indexedDB.databases();
|
|
184
|
+
const results = await Promise.allSettled(dbs.filter((db) => db.name != null).map((db) => new Promise((resolve, reject) => {
|
|
185
|
+
const request = indexedDB.deleteDatabase(db.name);
|
|
186
|
+
request.onsuccess = () => resolve();
|
|
187
|
+
request.onerror = () => reject(request.error);
|
|
188
|
+
request.onblocked = () => reject(new Error(`IndexedDB deletion blocked: ${db.name}`));
|
|
189
|
+
})));
|
|
190
|
+
const failures = results.filter((r) => r.status === "rejected");
|
|
191
|
+
if (failures.length > 0) {
|
|
192
|
+
throw new AggregateError(failures.map((r) => r.reason), "Failed to delete some IndexedDB databases");
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
var clearOPFS = async () => {
|
|
196
|
+
const root = await navigator.storage.getDirectory();
|
|
197
|
+
const errors = [];
|
|
198
|
+
for await (const [name] of root.entries()) {
|
|
199
|
+
try {
|
|
200
|
+
await root.removeEntry(name, {
|
|
201
|
+
recursive: true
|
|
202
|
+
});
|
|
203
|
+
} catch (err) {
|
|
204
|
+
errors.push(err);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (errors.length > 0) {
|
|
208
|
+
throw new AggregateError(errors, "Failed to remove some OPFS entries");
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
var clearServiceWorkers = async () => {
|
|
212
|
+
const regs = await navigator.serviceWorker.getRegistrations();
|
|
213
|
+
for (const reg of regs) {
|
|
214
|
+
await reg.unregister();
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
var clearCaches = async () => {
|
|
218
|
+
const keys2 = await caches.keys();
|
|
219
|
+
for (const key of keys2) {
|
|
220
|
+
await caches.delete(key);
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
// src/callback-collection.ts
|
|
179
225
|
var CallbackCollection = class {
|
|
180
226
|
#callbacks = [];
|
|
181
227
|
append(callback) {
|
|
@@ -199,35 +245,19 @@ var CallbackCollection = class {
|
|
|
199
245
|
}
|
|
200
246
|
};
|
|
201
247
|
|
|
202
|
-
//
|
|
248
|
+
// src/callback.ts
|
|
203
249
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
204
|
-
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/common/util/src/callback.ts";
|
|
205
250
|
var Callback = class {
|
|
251
|
+
_callback;
|
|
206
252
|
call(...args) {
|
|
207
|
-
invariant2(this._callback, "Callback not set"
|
|
208
|
-
F: __dxlog_file2,
|
|
209
|
-
L: 20,
|
|
210
|
-
S: this,
|
|
211
|
-
A: [
|
|
212
|
-
"this._callback",
|
|
213
|
-
"'Callback not set'"
|
|
214
|
-
]
|
|
215
|
-
});
|
|
253
|
+
invariant2(this._callback, "Callback not set");
|
|
216
254
|
return this._callback(...args);
|
|
217
255
|
}
|
|
218
256
|
callIfSet(...args) {
|
|
219
257
|
return this._callback?.(...args);
|
|
220
258
|
}
|
|
221
259
|
set(callback) {
|
|
222
|
-
invariant2(!this._callback, "Callback already set"
|
|
223
|
-
F: __dxlog_file2,
|
|
224
|
-
L: 29,
|
|
225
|
-
S: this,
|
|
226
|
-
A: [
|
|
227
|
-
"!this._callback",
|
|
228
|
-
"'Callback already set'"
|
|
229
|
-
]
|
|
230
|
-
});
|
|
260
|
+
invariant2(!this._callback, "Callback already set");
|
|
231
261
|
this._callback = callback;
|
|
232
262
|
}
|
|
233
263
|
isSet() {
|
|
@@ -251,7 +281,7 @@ var createSetDispatch = ({ handlers }) => {
|
|
|
251
281
|
});
|
|
252
282
|
};
|
|
253
283
|
|
|
254
|
-
//
|
|
284
|
+
// src/case.ts
|
|
255
285
|
var LOW_DASH = "_".codePointAt(0);
|
|
256
286
|
var HI_DASH = "-".codePointAt(0);
|
|
257
287
|
var SMALL_A = "a".codePointAt(0);
|
|
@@ -284,7 +314,7 @@ var changeCase = (str, delim) => {
|
|
|
284
314
|
var decamelize = (str) => changeCase(str, LOW_DASH);
|
|
285
315
|
var hyphenize = (str) => changeCase(str, HI_DASH);
|
|
286
316
|
|
|
287
|
-
//
|
|
317
|
+
// src/chunk-array.ts
|
|
288
318
|
var chunkArray = (array, size) => {
|
|
289
319
|
const result = [];
|
|
290
320
|
for (let i = 0; i < array.length; i += size) {
|
|
@@ -293,22 +323,14 @@ var chunkArray = (array, size) => {
|
|
|
293
323
|
return result;
|
|
294
324
|
};
|
|
295
325
|
|
|
296
|
-
//
|
|
326
|
+
// src/circular-buffer.ts
|
|
297
327
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
298
|
-
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/common/util/src/circular-buffer.ts";
|
|
299
328
|
var CircularBuffer = class {
|
|
329
|
+
_buffer;
|
|
330
|
+
_nextIndex = 0;
|
|
331
|
+
_elementCount = 0;
|
|
300
332
|
constructor(size) {
|
|
301
|
-
|
|
302
|
-
this._elementCount = 0;
|
|
303
|
-
invariant3(size >= 1, void 0, {
|
|
304
|
-
F: __dxlog_file3,
|
|
305
|
-
L: 13,
|
|
306
|
-
S: this,
|
|
307
|
-
A: [
|
|
308
|
-
"size >= 1",
|
|
309
|
-
""
|
|
310
|
-
]
|
|
311
|
-
});
|
|
333
|
+
invariant3(size >= 1);
|
|
312
334
|
this._buffer = new Array(size);
|
|
313
335
|
}
|
|
314
336
|
push(element) {
|
|
@@ -321,6 +343,10 @@ var CircularBuffer = class {
|
|
|
321
343
|
get elementCount() {
|
|
322
344
|
return this._elementCount;
|
|
323
345
|
}
|
|
346
|
+
clear() {
|
|
347
|
+
this._nextIndex = 0;
|
|
348
|
+
this._elementCount = 0;
|
|
349
|
+
}
|
|
324
350
|
getLast() {
|
|
325
351
|
if (this._elementCount === 0) {
|
|
326
352
|
return void 0;
|
|
@@ -352,7 +378,7 @@ var CircularBuffer = class {
|
|
|
352
378
|
}
|
|
353
379
|
};
|
|
354
380
|
|
|
355
|
-
//
|
|
381
|
+
// src/clear-undefined.ts
|
|
356
382
|
var clearUndefined = (obj) => {
|
|
357
383
|
for (const key of [
|
|
358
384
|
...Object.getOwnPropertyNames(obj),
|
|
@@ -365,15 +391,16 @@ var clearUndefined = (obj) => {
|
|
|
365
391
|
return obj;
|
|
366
392
|
};
|
|
367
393
|
|
|
368
|
-
//
|
|
394
|
+
// src/complex.ts
|
|
369
395
|
import { inspect } from "@dxos/node-std/util";
|
|
370
396
|
import { inspectObject, raise } from "@dxos/debug";
|
|
371
397
|
var MAX_SERIALIZATION_LENGTH = 10;
|
|
372
398
|
var ComplexSet = class {
|
|
399
|
+
_projection;
|
|
400
|
+
_values = /* @__PURE__ */ new Map();
|
|
373
401
|
// prettier-ignore
|
|
374
402
|
constructor(_projection, values) {
|
|
375
403
|
this._projection = _projection;
|
|
376
|
-
this._values = /* @__PURE__ */ new Map();
|
|
377
404
|
if (values) {
|
|
378
405
|
for (const value of values) {
|
|
379
406
|
this.add(value);
|
|
@@ -463,11 +490,12 @@ var makeSet = (projection) => {
|
|
|
463
490
|
};
|
|
464
491
|
};
|
|
465
492
|
var ComplexMap = class _ComplexMap {
|
|
493
|
+
_keyProjection;
|
|
494
|
+
_keys = /* @__PURE__ */ new Map();
|
|
495
|
+
_values = /* @__PURE__ */ new Map();
|
|
466
496
|
// prettier-ignore
|
|
467
497
|
constructor(_keyProjection, entries2) {
|
|
468
498
|
this._keyProjection = _keyProjection;
|
|
469
|
-
this._keys = /* @__PURE__ */ new Map();
|
|
470
|
-
this._values = /* @__PURE__ */ new Map();
|
|
471
499
|
if (entries2) {
|
|
472
500
|
for (const [key, value] of entries2) {
|
|
473
501
|
this.set(key, value);
|
|
@@ -512,6 +540,36 @@ var ComplexMap = class _ComplexMap {
|
|
|
512
540
|
this._values.set(primitive, value);
|
|
513
541
|
return this;
|
|
514
542
|
}
|
|
543
|
+
/**
|
|
544
|
+
* Returns the value for the given key if present, otherwise inserts and returns the default value.
|
|
545
|
+
* @param key - The key to look up or insert.
|
|
546
|
+
* @param defaultValue - The value to insert if the key is not present.
|
|
547
|
+
* @returns The existing or newly inserted value.
|
|
548
|
+
*/
|
|
549
|
+
getOrInsert(key, defaultValue) {
|
|
550
|
+
const primitive = this._keyProjection(key);
|
|
551
|
+
if (this._values.has(primitive)) {
|
|
552
|
+
return this._values.get(primitive);
|
|
553
|
+
}
|
|
554
|
+
this.set(key, defaultValue);
|
|
555
|
+
return defaultValue;
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Returns the value for the given key if present, otherwise computes, inserts, and returns a new value.
|
|
559
|
+
* The callback is only invoked when the key is missing.
|
|
560
|
+
* @param key - The key to look up or insert.
|
|
561
|
+
* @param callbackfn - Function to compute the value if the key is not present.
|
|
562
|
+
* @returns The existing or newly computed value.
|
|
563
|
+
*/
|
|
564
|
+
getOrInsertComputed(key, callbackfn) {
|
|
565
|
+
const primitive = this._keyProjection(key);
|
|
566
|
+
if (this._values.has(primitive)) {
|
|
567
|
+
return this._values.get(primitive);
|
|
568
|
+
}
|
|
569
|
+
const value = callbackfn(key);
|
|
570
|
+
this.set(key, value);
|
|
571
|
+
return value;
|
|
572
|
+
}
|
|
515
573
|
get size() {
|
|
516
574
|
return this._keys.size;
|
|
517
575
|
}
|
|
@@ -551,21 +609,15 @@ var makeMap = (keyProjection) => class BoundComplexMap extends ComplexMap {
|
|
|
551
609
|
}
|
|
552
610
|
};
|
|
553
611
|
|
|
554
|
-
//
|
|
555
|
-
|
|
556
|
-
|
|
612
|
+
// src/composite-key.ts
|
|
613
|
+
var SEPARATOR = ":";
|
|
614
|
+
var compositeKey = (...parts) => parts.join(SEPARATOR);
|
|
615
|
+
var splitCompositeKey = (key) => key.split(SEPARATOR);
|
|
616
|
+
|
|
617
|
+
// src/deep.ts
|
|
557
618
|
import { invariant as invariant4 } from "@dxos/invariant";
|
|
558
|
-
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/common/util/src/deep.ts";
|
|
559
619
|
var setDeep = (obj, path, value) => {
|
|
560
|
-
invariant4(path.length > 0
|
|
561
|
-
F: __dxlog_file4,
|
|
562
|
-
L: 18,
|
|
563
|
-
S: void 0,
|
|
564
|
-
A: [
|
|
565
|
-
"path.length > 0",
|
|
566
|
-
""
|
|
567
|
-
]
|
|
568
|
-
});
|
|
620
|
+
invariant4(path.length > 0);
|
|
569
621
|
let parent = obj;
|
|
570
622
|
for (const key of path.slice(0, -1)) {
|
|
571
623
|
if (parent[key] === void 0) {
|
|
@@ -585,16 +637,14 @@ var getDeep = (obj, path) => {
|
|
|
585
637
|
return parent;
|
|
586
638
|
};
|
|
587
639
|
|
|
588
|
-
//
|
|
640
|
+
// src/defer-function.ts
|
|
589
641
|
var deferFunction = (fnProvider) => (...args) => fnProvider()(...args);
|
|
590
642
|
|
|
591
|
-
//
|
|
592
|
-
|
|
593
|
-
Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose");
|
|
594
|
-
|
|
595
|
-
// packages/common/util/src/defer.ts
|
|
643
|
+
// src/defer.ts
|
|
644
|
+
import "@hazae41/symbol-dispose-polyfill";
|
|
596
645
|
var defer = (fn) => new DeferGuard(fn);
|
|
597
646
|
var DeferGuard = class {
|
|
647
|
+
_fn;
|
|
598
648
|
/**
|
|
599
649
|
* @internal
|
|
600
650
|
*/
|
|
@@ -610,6 +660,7 @@ var DeferGuard = class {
|
|
|
610
660
|
};
|
|
611
661
|
var deferAsync = (fn) => new DeferAsyncGuard(fn);
|
|
612
662
|
var DeferAsyncGuard = class {
|
|
663
|
+
_fn;
|
|
613
664
|
/**
|
|
614
665
|
* @internal
|
|
615
666
|
*/
|
|
@@ -621,9 +672,11 @@ var DeferAsyncGuard = class {
|
|
|
621
672
|
}
|
|
622
673
|
};
|
|
623
674
|
|
|
624
|
-
//
|
|
675
|
+
// src/entry.ts
|
|
625
676
|
var entry = (map, key) => new MapEntry(map, key);
|
|
626
677
|
var MapEntry = class {
|
|
678
|
+
_map;
|
|
679
|
+
_key;
|
|
627
680
|
/**
|
|
628
681
|
* @internal
|
|
629
682
|
*/
|
|
@@ -649,37 +702,33 @@ var MapEntry = class {
|
|
|
649
702
|
}
|
|
650
703
|
};
|
|
651
704
|
|
|
652
|
-
//
|
|
653
|
-
var
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
""
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
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;
|
|
705
|
+
// src/error-format.ts
|
|
706
|
+
var formatErrorWithCauses = (error) => {
|
|
707
|
+
const lines = [];
|
|
708
|
+
let current = error;
|
|
709
|
+
let level = 0;
|
|
710
|
+
while (current) {
|
|
711
|
+
const prefix = level === 0 ? "" : `Caused by: `;
|
|
712
|
+
lines.push(prefix + (current.stack ?? String(current)));
|
|
713
|
+
if (!(current.cause instanceof Error)) {
|
|
714
|
+
break;
|
|
715
|
+
}
|
|
716
|
+
current = current.cause;
|
|
717
|
+
level += 1;
|
|
718
|
+
}
|
|
719
|
+
return lines.join("\n\n");
|
|
677
720
|
};
|
|
678
721
|
|
|
679
|
-
//
|
|
722
|
+
// src/filename.ts
|
|
723
|
+
var createFilename = ({ parts = [], ext, date = /* @__PURE__ */ new Date() }) => [
|
|
724
|
+
date.toISOString().replace(/[:.]/g, "-"),
|
|
725
|
+
...parts
|
|
726
|
+
].join("_") + (ext ? `.${ext}` : "");
|
|
727
|
+
|
|
728
|
+
// src/for-each-async.ts
|
|
680
729
|
var forEachAsync = (items, fn) => Promise.all(items.map(fn));
|
|
681
730
|
|
|
682
|
-
//
|
|
731
|
+
// src/human-hash.ts
|
|
683
732
|
import { PublicKey } from "@dxos/keys";
|
|
684
733
|
var DEFAULT_WORDLIST = [
|
|
685
734
|
"ack",
|
|
@@ -940,6 +989,7 @@ var DEFAULT_WORDLIST = [
|
|
|
940
989
|
"zulu"
|
|
941
990
|
];
|
|
942
991
|
var HumanHasher = class {
|
|
992
|
+
wordlist;
|
|
943
993
|
/**
|
|
944
994
|
* Transforms hex digests to human-readable strings.
|
|
945
995
|
*
|
|
@@ -1010,7 +1060,7 @@ var humanize = (value) => {
|
|
|
1010
1060
|
return hasher.humanize(value);
|
|
1011
1061
|
};
|
|
1012
1062
|
|
|
1013
|
-
//
|
|
1063
|
+
// src/map.ts
|
|
1014
1064
|
var defaultMap = (map, key, def) => {
|
|
1015
1065
|
let value = map.get(key);
|
|
1016
1066
|
if (value === void 0) {
|
|
@@ -1020,8 +1070,8 @@ var defaultMap = (map, key, def) => {
|
|
|
1020
1070
|
return value;
|
|
1021
1071
|
};
|
|
1022
1072
|
|
|
1023
|
-
//
|
|
1024
|
-
var symbol = Symbol.for("dxos.instance-contexts");
|
|
1073
|
+
// src/instance-id.ts
|
|
1074
|
+
var symbol = /* @__PURE__ */ Symbol.for("dxos.instance-contexts");
|
|
1025
1075
|
var instanceContexts = globalThis[symbol] ??= /* @__PURE__ */ new WeakMap();
|
|
1026
1076
|
var getPrototypeSpecificInstanceId = (instance) => {
|
|
1027
1077
|
const prototype = Object.getPrototypeOf(instance);
|
|
@@ -1044,7 +1094,7 @@ var getDebugName = (instance) => {
|
|
|
1044
1094
|
return `${prototype.constructor?.name ?? "Object"}#${getPrototypeSpecificInstanceId(instance)}`;
|
|
1045
1095
|
};
|
|
1046
1096
|
|
|
1047
|
-
//
|
|
1097
|
+
// src/interval.ts
|
|
1048
1098
|
var exponentialBackoffInterval = (cb, initialInterval) => {
|
|
1049
1099
|
let interval = initialInterval;
|
|
1050
1100
|
const repeat = () => {
|
|
@@ -1056,7 +1106,7 @@ var exponentialBackoffInterval = (cb, initialInterval) => {
|
|
|
1056
1106
|
return () => clearTimeout(timeoutId);
|
|
1057
1107
|
};
|
|
1058
1108
|
|
|
1059
|
-
//
|
|
1109
|
+
// src/join-tables.ts
|
|
1060
1110
|
var joinTables = (leftColumn, rightColumn, left, right) => {
|
|
1061
1111
|
const map = /* @__PURE__ */ new Map();
|
|
1062
1112
|
const used = /* @__PURE__ */ new Set();
|
|
@@ -1077,11 +1127,11 @@ var joinTables = (leftColumn, rightColumn, left, right) => {
|
|
|
1077
1127
|
return result;
|
|
1078
1128
|
};
|
|
1079
1129
|
|
|
1080
|
-
//
|
|
1130
|
+
// src/json.ts
|
|
1081
1131
|
import { inspect as inspect2 } from "@dxos/node-std/util";
|
|
1082
1132
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
1083
1133
|
|
|
1084
|
-
//
|
|
1134
|
+
// src/uint8array.ts
|
|
1085
1135
|
var arraysEqual = (a, b) => {
|
|
1086
1136
|
if (a.length !== b.length) {
|
|
1087
1137
|
return false;
|
|
@@ -1102,10 +1152,10 @@ var bufferToArray = (buffer) => {
|
|
|
1102
1152
|
var stringToArray = (string) => bufferToArray(Buffer.from(string, "hex"));
|
|
1103
1153
|
var arrayToString = (array) => arrayToBuffer(array).toString("hex");
|
|
1104
1154
|
|
|
1105
|
-
//
|
|
1155
|
+
// src/json.ts
|
|
1106
1156
|
var MAX_DEPTH = 5;
|
|
1107
1157
|
var LOG_MAX_DEPTH = 7;
|
|
1108
|
-
|
|
1158
|
+
var jsonReplacer = (key, value) => {
|
|
1109
1159
|
if (value !== null && typeof value === "object" && typeof value[inspect2.custom] === "function") {
|
|
1110
1160
|
return value[inspect2.custom]();
|
|
1111
1161
|
}
|
|
@@ -1118,7 +1168,7 @@ function jsonReplacer(key, value) {
|
|
|
1118
1168
|
}
|
|
1119
1169
|
}
|
|
1120
1170
|
return value;
|
|
1121
|
-
}
|
|
1171
|
+
};
|
|
1122
1172
|
var jsonify = (value, depth = 0, visitedObjects = /* @__PURE__ */ new WeakSet()) => {
|
|
1123
1173
|
if (depth > MAX_DEPTH) {
|
|
1124
1174
|
return null;
|
|
@@ -1193,7 +1243,7 @@ var jsonKeyReplacer = (options = {}) => (key, value) => {
|
|
|
1193
1243
|
return value;
|
|
1194
1244
|
};
|
|
1195
1245
|
|
|
1196
|
-
//
|
|
1246
|
+
// src/map-values.ts
|
|
1197
1247
|
var mapValues = (obj, fn) => {
|
|
1198
1248
|
const result = {};
|
|
1199
1249
|
Object.keys(obj).forEach((key) => {
|
|
@@ -1205,31 +1255,10 @@ var deepMapValues = (value, fn) => {
|
|
|
1205
1255
|
return new DeepMapper(fn).map(value);
|
|
1206
1256
|
};
|
|
1207
1257
|
var DeepMapper = class {
|
|
1258
|
+
_fn;
|
|
1259
|
+
_cyclic = /* @__PURE__ */ new Map();
|
|
1208
1260
|
constructor(_fn) {
|
|
1209
1261
|
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
1262
|
}
|
|
1234
1263
|
map(value) {
|
|
1235
1264
|
return this._map(value, void 0);
|
|
@@ -1240,36 +1269,37 @@ var DeepMapper = class {
|
|
|
1240
1269
|
}
|
|
1241
1270
|
return this._fn(value, this._recurse, key);
|
|
1242
1271
|
}
|
|
1272
|
+
_recurse = (value) => {
|
|
1273
|
+
if (this._cyclic.has(value)) {
|
|
1274
|
+
return this._cyclic.get(value);
|
|
1275
|
+
}
|
|
1276
|
+
if (Array.isArray(value)) {
|
|
1277
|
+
const res = new Array(value.length);
|
|
1278
|
+
this._cyclic.set(value, res);
|
|
1279
|
+
for (let i = 0; i < value.length; i++) {
|
|
1280
|
+
res[i] = this._map(value[i], i);
|
|
1281
|
+
}
|
|
1282
|
+
return res;
|
|
1283
|
+
} else if (value !== null && typeof value === "object") {
|
|
1284
|
+
const res = {};
|
|
1285
|
+
this._cyclic.set(value, res);
|
|
1286
|
+
for (const key in value) {
|
|
1287
|
+
res[key] = this._map(value[key], key);
|
|
1288
|
+
}
|
|
1289
|
+
return res;
|
|
1290
|
+
} else {
|
|
1291
|
+
return value;
|
|
1292
|
+
}
|
|
1293
|
+
};
|
|
1243
1294
|
};
|
|
1244
1295
|
var deepMapValuesAsync = (value, fn) => {
|
|
1245
1296
|
return new DeepMapperAsync(fn).map(value);
|
|
1246
1297
|
};
|
|
1247
1298
|
var DeepMapperAsync = class {
|
|
1299
|
+
_fn;
|
|
1300
|
+
_cyclic = /* @__PURE__ */ new Map();
|
|
1248
1301
|
constructor(_fn) {
|
|
1249
1302
|
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
1303
|
}
|
|
1274
1304
|
map(value) {
|
|
1275
1305
|
return this._map(value, void 0);
|
|
@@ -1280,6 +1310,28 @@ var DeepMapperAsync = class {
|
|
|
1280
1310
|
}
|
|
1281
1311
|
return this._fn(value, this._recurse, key);
|
|
1282
1312
|
}
|
|
1313
|
+
_recurse = async (value) => {
|
|
1314
|
+
if (this._cyclic.has(value)) {
|
|
1315
|
+
return this._cyclic.get(value);
|
|
1316
|
+
}
|
|
1317
|
+
if (Array.isArray(value)) {
|
|
1318
|
+
const res = new Array(value.length);
|
|
1319
|
+
this._cyclic.set(value, res);
|
|
1320
|
+
for (let i = 0; i < value.length; i++) {
|
|
1321
|
+
res[i] = await this._map(value[i], i);
|
|
1322
|
+
}
|
|
1323
|
+
return res;
|
|
1324
|
+
} else if (value !== null && typeof value === "object") {
|
|
1325
|
+
const res = {};
|
|
1326
|
+
this._cyclic.set(value, res);
|
|
1327
|
+
for (const key in value) {
|
|
1328
|
+
res[key] = await this._map(value[key], key);
|
|
1329
|
+
}
|
|
1330
|
+
return res;
|
|
1331
|
+
} else {
|
|
1332
|
+
return value;
|
|
1333
|
+
}
|
|
1334
|
+
};
|
|
1283
1335
|
};
|
|
1284
1336
|
var visitValues = (object, visitor) => {
|
|
1285
1337
|
if (Array.isArray(object)) {
|
|
@@ -1291,11 +1343,11 @@ var visitValues = (object, visitor) => {
|
|
|
1291
1343
|
}
|
|
1292
1344
|
};
|
|
1293
1345
|
|
|
1294
|
-
//
|
|
1346
|
+
// src/object.ts
|
|
1295
1347
|
var keys = (obj) => Object.keys(obj);
|
|
1296
1348
|
var entries = (obj) => Object.entries(obj);
|
|
1297
1349
|
|
|
1298
|
-
//
|
|
1350
|
+
// src/order-keys.ts
|
|
1299
1351
|
var orderKeys = (obj, order) => {
|
|
1300
1352
|
const ordered = {};
|
|
1301
1353
|
for (const key of order) {
|
|
@@ -1311,7 +1363,7 @@ var orderKeys = (obj, order) => {
|
|
|
1311
1363
|
return ordered;
|
|
1312
1364
|
};
|
|
1313
1365
|
|
|
1314
|
-
//
|
|
1366
|
+
// src/order.ts
|
|
1315
1367
|
var inferObjectOrder = (objectMap, order = []) => {
|
|
1316
1368
|
const orderedObjects = order.reduce((acc, id) => {
|
|
1317
1369
|
if (id in objectMap) {
|
|
@@ -1338,7 +1390,7 @@ var inferRecordOrder = (objectMap, order = []) => {
|
|
|
1338
1390
|
}, {}), objectMap);
|
|
1339
1391
|
};
|
|
1340
1392
|
|
|
1341
|
-
//
|
|
1393
|
+
// src/pick.ts
|
|
1342
1394
|
var pick = (obj, keys2) => {
|
|
1343
1395
|
return keys2.reduce((result, key) => {
|
|
1344
1396
|
if (obj && key in obj) {
|
|
@@ -1366,9 +1418,20 @@ var omit = (obj, keys2) => {
|
|
|
1366
1418
|
return result;
|
|
1367
1419
|
};
|
|
1368
1420
|
|
|
1369
|
-
//
|
|
1421
|
+
// src/platform.ts
|
|
1370
1422
|
var isNode = () => typeof process !== "undefined" && process.versions != null && process.versions.node != null;
|
|
1371
|
-
var
|
|
1423
|
+
var isBun = () => globalThis.Bun !== void 0;
|
|
1424
|
+
var isTauri = () => !!globalThis.__TAURI__;
|
|
1425
|
+
var isMobile = () => {
|
|
1426
|
+
let check = false;
|
|
1427
|
+
(function(a) {
|
|
1428
|
+
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))) {
|
|
1429
|
+
check = true;
|
|
1430
|
+
}
|
|
1431
|
+
})(navigator.userAgent || navigator.vendor || window.opera);
|
|
1432
|
+
return check;
|
|
1433
|
+
};
|
|
1434
|
+
var isMobileOrTablet = () => {
|
|
1372
1435
|
let check = false;
|
|
1373
1436
|
((a) => {
|
|
1374
1437
|
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 +1453,7 @@ var iosCheck = () => {
|
|
|
1390
1453
|
};
|
|
1391
1454
|
var safariCheck = () => typeof navigator !== "undefined" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
|
1392
1455
|
var getHostPlatform = () => {
|
|
1393
|
-
if (!("navigator" in
|
|
1456
|
+
if (!("navigator" in globalThis)) {
|
|
1394
1457
|
return "unknown";
|
|
1395
1458
|
}
|
|
1396
1459
|
const platform = (navigator.userAgentData?.platform || navigator.platform)?.toLowerCase();
|
|
@@ -1407,7 +1470,7 @@ var getHostPlatform = () => {
|
|
|
1407
1470
|
}
|
|
1408
1471
|
};
|
|
1409
1472
|
|
|
1410
|
-
//
|
|
1473
|
+
// src/position.ts
|
|
1411
1474
|
var byPosition = ({ position: a = "static" }, { position: b = "static" }) => {
|
|
1412
1475
|
if (a === b) {
|
|
1413
1476
|
return 0;
|
|
@@ -1420,14 +1483,14 @@ var byPosition = ({ position: a = "static" }, { position: b = "static" }) => {
|
|
|
1420
1483
|
}
|
|
1421
1484
|
};
|
|
1422
1485
|
|
|
1423
|
-
//
|
|
1486
|
+
// src/random.ts
|
|
1424
1487
|
var randomInt = (max, min = 0) => {
|
|
1425
1488
|
min = Math.ceil(min);
|
|
1426
1489
|
max = Math.floor(max);
|
|
1427
1490
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
1428
1491
|
};
|
|
1429
1492
|
|
|
1430
|
-
//
|
|
1493
|
+
// src/range.ts
|
|
1431
1494
|
var range = (n = 0, mapper) => {
|
|
1432
1495
|
const range2 = Array.from(Array(n).keys());
|
|
1433
1496
|
return mapper == null ? range2 : range2.map(mapper);
|
|
@@ -1439,7 +1502,7 @@ var clamp = (value, min, max) => {
|
|
|
1439
1502
|
return Math.min(Math.max(value, min), max);
|
|
1440
1503
|
};
|
|
1441
1504
|
|
|
1442
|
-
//
|
|
1505
|
+
// src/reducers.ts
|
|
1443
1506
|
var accessBy = (value, accessor) => typeof accessor === "function" ? accessor(value) : value[accessor];
|
|
1444
1507
|
var median = (values) => {
|
|
1445
1508
|
const mid = Math.floor(values.length / 2);
|
|
@@ -1525,7 +1588,7 @@ var createBucketReducer = (period) => ({
|
|
|
1525
1588
|
}
|
|
1526
1589
|
});
|
|
1527
1590
|
|
|
1528
|
-
//
|
|
1591
|
+
// src/remove-undefined-keys.ts
|
|
1529
1592
|
var removeUndefinedProperties = (object) => {
|
|
1530
1593
|
for (const prop of [
|
|
1531
1594
|
...Object.getOwnPropertyNames(object),
|
|
@@ -1566,7 +1629,44 @@ var removeProperties = (root, condition) => {
|
|
|
1566
1629
|
return result;
|
|
1567
1630
|
};
|
|
1568
1631
|
|
|
1569
|
-
//
|
|
1632
|
+
// src/retry.ts
|
|
1633
|
+
var DEFAULT_RETRY_OPTIONS = {
|
|
1634
|
+
count: 3,
|
|
1635
|
+
delayMs: 100,
|
|
1636
|
+
exponent: 2,
|
|
1637
|
+
retryOnError: async () => true,
|
|
1638
|
+
retryOnValue: async () => false
|
|
1639
|
+
};
|
|
1640
|
+
var retry = async (options, cb) => {
|
|
1641
|
+
const fullOptions = {
|
|
1642
|
+
...DEFAULT_RETRY_OPTIONS,
|
|
1643
|
+
...options
|
|
1644
|
+
};
|
|
1645
|
+
let numRetries = 0, currentDelay = fullOptions.delayMs;
|
|
1646
|
+
while (true) {
|
|
1647
|
+
let result;
|
|
1648
|
+
try {
|
|
1649
|
+
result = await cb();
|
|
1650
|
+
} catch (err) {
|
|
1651
|
+
if (numRetries > fullOptions.count || !await fullOptions.retryOnError(err)) {
|
|
1652
|
+
throw err;
|
|
1653
|
+
}
|
|
1654
|
+
await new Promise((resolve) => setTimeout(resolve, currentDelay));
|
|
1655
|
+
currentDelay *= fullOptions.exponent;
|
|
1656
|
+
numRetries++;
|
|
1657
|
+
continue;
|
|
1658
|
+
}
|
|
1659
|
+
if (!await fullOptions.retryOnValue(result)) {
|
|
1660
|
+
return result;
|
|
1661
|
+
}
|
|
1662
|
+
await new Promise((resolve) => setTimeout(resolve, currentDelay));
|
|
1663
|
+
currentDelay *= fullOptions.exponent;
|
|
1664
|
+
numRetries++;
|
|
1665
|
+
continue;
|
|
1666
|
+
}
|
|
1667
|
+
};
|
|
1668
|
+
|
|
1669
|
+
// src/safe-await.ts
|
|
1570
1670
|
var safeAwaitAll = async (source, taskFactory, onError) => {
|
|
1571
1671
|
const failedItems = [];
|
|
1572
1672
|
await Promise.all([
|
|
@@ -1584,8 +1684,8 @@ var safeAwaitAll = async (source, taskFactory, onError) => {
|
|
|
1584
1684
|
return failedItems;
|
|
1585
1685
|
};
|
|
1586
1686
|
|
|
1587
|
-
//
|
|
1588
|
-
var instanceTag = Symbol("instanceTag");
|
|
1687
|
+
// src/safe-instanceof.ts
|
|
1688
|
+
var instanceTag = /* @__PURE__ */ Symbol("instanceTag");
|
|
1589
1689
|
var safeInstanceof = (tag) => (target) => {
|
|
1590
1690
|
target.prototype[instanceTag] = tag;
|
|
1591
1691
|
Object.defineProperty(target.prototype, Symbol.hasInstance, {
|
|
@@ -1596,49 +1696,140 @@ var safeInstanceof = (tag) => (target) => {
|
|
|
1596
1696
|
});
|
|
1597
1697
|
};
|
|
1598
1698
|
|
|
1599
|
-
//
|
|
1600
|
-
|
|
1699
|
+
// src/safe-parse.ts
|
|
1700
|
+
function safeParseInt(str, defaultValue) {
|
|
1601
1701
|
try {
|
|
1602
|
-
const
|
|
1603
|
-
return isNaN(
|
|
1604
|
-
} catch
|
|
1702
|
+
const value = parseInt(str ?? "");
|
|
1703
|
+
return isNaN(value) ? defaultValue : value;
|
|
1704
|
+
} catch {
|
|
1605
1705
|
return defaultValue;
|
|
1606
1706
|
}
|
|
1707
|
+
}
|
|
1708
|
+
function safeParseFloat(str, defaultValue) {
|
|
1709
|
+
try {
|
|
1710
|
+
const value = parseFloat(str ?? "");
|
|
1711
|
+
return isNaN(value) ? defaultValue : value;
|
|
1712
|
+
} catch {
|
|
1713
|
+
return defaultValue;
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
var safeParseJson = (str, defaultValue) => {
|
|
1717
|
+
if (str && str.length > 0) {
|
|
1718
|
+
try {
|
|
1719
|
+
return JSON.parse(str);
|
|
1720
|
+
} catch {
|
|
1721
|
+
}
|
|
1722
|
+
}
|
|
1723
|
+
return defaultValue;
|
|
1607
1724
|
};
|
|
1608
|
-
var
|
|
1725
|
+
var safeUrl = (str) => {
|
|
1609
1726
|
try {
|
|
1610
|
-
return
|
|
1727
|
+
return new URL(str ?? "");
|
|
1611
1728
|
} catch {
|
|
1612
|
-
return
|
|
1729
|
+
return void 0;
|
|
1613
1730
|
}
|
|
1614
1731
|
};
|
|
1615
|
-
|
|
1616
|
-
|
|
1732
|
+
|
|
1733
|
+
// src/safe-stringify.ts
|
|
1734
|
+
var SKIP = Object.freeze({});
|
|
1735
|
+
function safeStringify(obj, filter = defaultFilter, indent = 2) {
|
|
1736
|
+
const seen = /* @__PURE__ */ new WeakMap();
|
|
1737
|
+
function replacer(key, value) {
|
|
1617
1738
|
try {
|
|
1618
|
-
|
|
1619
|
-
|
|
1739
|
+
let path = key;
|
|
1740
|
+
if (!key) {
|
|
1741
|
+
path = "$";
|
|
1742
|
+
if (value != null && typeof value === "object") {
|
|
1743
|
+
seen.set(value, path);
|
|
1744
|
+
}
|
|
1745
|
+
return value;
|
|
1746
|
+
} else if (this) {
|
|
1747
|
+
const parentPath = seen.get(this);
|
|
1748
|
+
path = parentPath ? `${parentPath}.${key}` : key;
|
|
1749
|
+
}
|
|
1750
|
+
if (value == null) {
|
|
1751
|
+
return value;
|
|
1752
|
+
}
|
|
1753
|
+
if (typeof value === "function") {
|
|
1754
|
+
return void 0;
|
|
1755
|
+
}
|
|
1756
|
+
if (typeof value === "object" && Object.getPrototypeOf(value) !== Object.prototype && !Array.isArray(value)) {
|
|
1757
|
+
return void 0;
|
|
1758
|
+
}
|
|
1759
|
+
if (typeof value === "object" && value !== null) {
|
|
1760
|
+
const exists = seen.get(value);
|
|
1761
|
+
if (exists) {
|
|
1762
|
+
return `[${path} => ${exists}]`;
|
|
1763
|
+
}
|
|
1764
|
+
seen.set(value, path);
|
|
1765
|
+
}
|
|
1766
|
+
if (filter) {
|
|
1767
|
+
const filteredValue = filter?.(key, value);
|
|
1768
|
+
if (filteredValue !== void 0) {
|
|
1769
|
+
return filteredValue === SKIP ? void 0 : filteredValue;
|
|
1770
|
+
}
|
|
1771
|
+
}
|
|
1772
|
+
return value;
|
|
1773
|
+
} catch (error) {
|
|
1774
|
+
return `ERROR: ${error.message}`;
|
|
1620
1775
|
}
|
|
1621
1776
|
}
|
|
1622
|
-
|
|
1777
|
+
try {
|
|
1778
|
+
return JSON.stringify(obj, replacer, indent);
|
|
1779
|
+
} catch (error) {
|
|
1780
|
+
return `ERROR: ${error.message}`;
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
var createReplacer = ({ omit: omit2, parse, maxDepth, maxArrayLen, maxStringLen } = {}) => {
|
|
1784
|
+
let currentDepth = 0;
|
|
1785
|
+
const depthMap = /* @__PURE__ */ new WeakMap();
|
|
1786
|
+
return function(key, value) {
|
|
1787
|
+
if (key === "") {
|
|
1788
|
+
currentDepth = 0;
|
|
1789
|
+
} else if (this && typeof this === "object") {
|
|
1790
|
+
const parentDepth = depthMap.get(this) ?? 0;
|
|
1791
|
+
currentDepth = parentDepth + 1;
|
|
1792
|
+
}
|
|
1793
|
+
if (typeof value === "function") {
|
|
1794
|
+
return SKIP;
|
|
1795
|
+
}
|
|
1796
|
+
if (maxArrayLen != null && Array.isArray(value) && value.length > maxArrayLen) {
|
|
1797
|
+
return `[length: ${value.length}]`;
|
|
1798
|
+
}
|
|
1799
|
+
if (value && typeof value === "object") {
|
|
1800
|
+
depthMap.set(value, currentDepth);
|
|
1801
|
+
if (maxDepth != null && currentDepth >= maxDepth) {
|
|
1802
|
+
return Array.isArray(value) ? `[{ length: ${value.length} }]` : `{ keys: ${Object.keys(value).length} }`;
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
if (omit2?.includes(key)) {
|
|
1806
|
+
return SKIP;
|
|
1807
|
+
}
|
|
1808
|
+
if (parse?.includes(key) && typeof value === "string") {
|
|
1809
|
+
try {
|
|
1810
|
+
return JSON.parse(value);
|
|
1811
|
+
} catch {
|
|
1812
|
+
return value;
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1815
|
+
if (maxStringLen != null && typeof value === "string" && value.length > maxStringLen) {
|
|
1816
|
+
return value.slice(0, maxStringLen) + "...";
|
|
1817
|
+
}
|
|
1818
|
+
return value;
|
|
1819
|
+
};
|
|
1623
1820
|
};
|
|
1821
|
+
var defaultFilter = createReplacer();
|
|
1624
1822
|
|
|
1625
|
-
//
|
|
1823
|
+
// src/sliding-window-summary.ts
|
|
1626
1824
|
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1627
|
-
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
|
|
1628
1825
|
var SlidingWindowSummary = class {
|
|
1826
|
+
_buffer;
|
|
1827
|
+
_sum = 0;
|
|
1828
|
+
_precision;
|
|
1629
1829
|
constructor(options) {
|
|
1630
|
-
this._sum = 0;
|
|
1631
1830
|
this._buffer = new CircularBuffer(options.dataPoints);
|
|
1632
1831
|
if (options.precision != null) {
|
|
1633
|
-
invariant5(options.precision >= 0
|
|
1634
|
-
F: __dxlog_file5,
|
|
1635
|
-
L: 26,
|
|
1636
|
-
S: this,
|
|
1637
|
-
A: [
|
|
1638
|
-
"options.precision >= 0",
|
|
1639
|
-
""
|
|
1640
|
-
]
|
|
1641
|
-
});
|
|
1832
|
+
invariant5(options.precision >= 0);
|
|
1642
1833
|
this._precision = Math.pow(10, options.precision);
|
|
1643
1834
|
}
|
|
1644
1835
|
}
|
|
@@ -1678,7 +1869,7 @@ var SlidingWindowSummary = class {
|
|
|
1678
1869
|
}
|
|
1679
1870
|
};
|
|
1680
1871
|
|
|
1681
|
-
//
|
|
1872
|
+
// src/sort.ts
|
|
1682
1873
|
var compareScalar = (inc = true) => (a, b) => (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);
|
|
1683
1874
|
var compareString = (inc = true, caseInsensitive = true) => (a, b) => {
|
|
1684
1875
|
if (caseInsensitive) {
|
|
@@ -1700,38 +1891,48 @@ var compareMulti = (sorters) => (a, b) => {
|
|
|
1700
1891
|
return sort();
|
|
1701
1892
|
};
|
|
1702
1893
|
|
|
1703
|
-
//
|
|
1894
|
+
// src/string.ts
|
|
1704
1895
|
var capitalize = (str) => {
|
|
1705
1896
|
if (str.length === 0) {
|
|
1706
1897
|
return "";
|
|
1707
1898
|
}
|
|
1708
1899
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
1709
1900
|
};
|
|
1901
|
+
function trim(strings, ...values) {
|
|
1902
|
+
const raw = strings.reduce((out, str, i) => {
|
|
1903
|
+
out += str;
|
|
1904
|
+
if (i < values.length) {
|
|
1905
|
+
const match = str.match(/(^|\n)([ \t]*)$/);
|
|
1906
|
+
const baseIndent = match ? match[2] : "";
|
|
1907
|
+
const val = String(values[i]).replace(/\r?\n/g, "\n" + baseIndent);
|
|
1908
|
+
out += val;
|
|
1909
|
+
}
|
|
1910
|
+
return out;
|
|
1911
|
+
}, "");
|
|
1912
|
+
const lines = raw.split("\n");
|
|
1913
|
+
while (lines.length && !lines[0].trim()) {
|
|
1914
|
+
lines.shift();
|
|
1915
|
+
}
|
|
1916
|
+
while (lines.length && !lines[lines.length - 1].trim()) {
|
|
1917
|
+
lines.pop();
|
|
1918
|
+
}
|
|
1919
|
+
const minIndent = Math.min(...lines.filter((l) => l.trim()).map((l) => l.match(/^[ \t]*/)?.[0].length ?? 0));
|
|
1920
|
+
return lines.map((l) => l.slice(minIndent)).join("\n");
|
|
1921
|
+
}
|
|
1922
|
+
var kebabize = (str) => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? "-" : "") + $.toLowerCase());
|
|
1710
1923
|
|
|
1711
|
-
//
|
|
1924
|
+
// src/sum.ts
|
|
1712
1925
|
var sum = (values) => values.reduce((a, b) => a + b, 0);
|
|
1713
1926
|
|
|
1714
|
-
//
|
|
1927
|
+
// src/throw-unhandled-error.ts
|
|
1715
1928
|
var throwUnhandledError = (error) => {
|
|
1716
1929
|
queueMicrotask(() => {
|
|
1717
1930
|
throw error;
|
|
1718
1931
|
});
|
|
1719
1932
|
};
|
|
1720
1933
|
|
|
1721
|
-
//
|
|
1934
|
+
// src/to-fallback.ts
|
|
1722
1935
|
var idEmoji = [
|
|
1723
|
-
// When changing this set, please check the result in a console or e.g. RunKit (https://runkit.com/thure/642214441dd6ae000855a8de)
|
|
1724
|
-
// 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.
|
|
1725
|
-
// This set was chosen from the characters in Unicode Emoji v15.0 based on the following criteria:
|
|
1726
|
-
// – not people or isolated anthropomorphic faces
|
|
1727
|
-
// – not flags
|
|
1728
|
-
// – more concrete than abstract
|
|
1729
|
-
// – less culturally specific
|
|
1730
|
-
// – less easily confused with another emoji in the set
|
|
1731
|
-
// – requires less special knowledge to identify
|
|
1732
|
-
// – less likely to evoke negative feelings (no meat, no drugs, no weapons, etc)
|
|
1733
|
-
// – less common as a signifier in UX
|
|
1734
|
-
// NOTE that this is intentionally an array of strings because of the way emoji graphemes work.
|
|
1735
1936
|
"\u{1F47B}",
|
|
1736
1937
|
"\u{1F479}",
|
|
1737
1938
|
"\u{1F47D}",
|
|
@@ -1867,17 +2068,18 @@ var idEmoji = [
|
|
|
1867
2068
|
];
|
|
1868
2069
|
var idHue = [
|
|
1869
2070
|
"red",
|
|
1870
|
-
|
|
2071
|
+
"orange",
|
|
1871
2072
|
"amber",
|
|
1872
|
-
|
|
2073
|
+
"yellow",
|
|
1873
2074
|
"lime",
|
|
1874
2075
|
"green",
|
|
1875
2076
|
"emerald",
|
|
1876
2077
|
"teal",
|
|
1877
2078
|
"cyan",
|
|
1878
|
-
//
|
|
1879
|
-
// '
|
|
1880
|
-
// '
|
|
2079
|
+
// Omit colors similar to primary accent.
|
|
2080
|
+
// 'sky' as const,
|
|
2081
|
+
// 'blue' as const,
|
|
2082
|
+
// 'indigo' as const,
|
|
1881
2083
|
"violet",
|
|
1882
2084
|
"purple",
|
|
1883
2085
|
"fuchsia",
|
|
@@ -1903,12 +2105,10 @@ var toFallback = (hash) => {
|
|
|
1903
2105
|
};
|
|
1904
2106
|
};
|
|
1905
2107
|
|
|
1906
|
-
//
|
|
2108
|
+
// src/tracer.ts
|
|
1907
2109
|
var Tracer = class {
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
this._recording = false;
|
|
1911
|
-
}
|
|
2110
|
+
_events = /* @__PURE__ */ new Map();
|
|
2111
|
+
_recording = false;
|
|
1912
2112
|
// TODO(burdon): Start/stop methods for recording data? By id?
|
|
1913
2113
|
// Alternatively, enable subscriptions to track/compute series.
|
|
1914
2114
|
// TODO(burdon): Hierarchical traces?
|
|
@@ -1968,7 +2168,7 @@ var Tracer = class {
|
|
|
1968
2168
|
};
|
|
1969
2169
|
var tracer = new Tracer();
|
|
1970
2170
|
|
|
1971
|
-
//
|
|
2171
|
+
// src/tree.ts
|
|
1972
2172
|
import { truncateKey } from "@dxos/debug";
|
|
1973
2173
|
var stringifyTree = (node, ancestors = [], rows = []) => {
|
|
1974
2174
|
if (node.children?.length) {
|
|
@@ -2008,8 +2208,8 @@ var stringifyTree = (node, ancestors = [], rows = []) => {
|
|
|
2008
2208
|
return rows;
|
|
2009
2209
|
};
|
|
2010
2210
|
|
|
2011
|
-
//
|
|
2012
|
-
var
|
|
2211
|
+
// src/types.ts
|
|
2212
|
+
var isTruthy = (value) => !!value;
|
|
2013
2213
|
var isNonNullable = (value) => value != null;
|
|
2014
2214
|
var doAsync = async (fn) => fn();
|
|
2015
2215
|
var getProviderValue = (provider, arg) => {
|
|
@@ -2039,19 +2239,143 @@ var arrayMove = (array, from, to) => {
|
|
|
2039
2239
|
array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);
|
|
2040
2240
|
return array;
|
|
2041
2241
|
};
|
|
2242
|
+
function arraySwap(array, from, to) {
|
|
2243
|
+
const current = array[from];
|
|
2244
|
+
array[from] = array[to];
|
|
2245
|
+
array[to] = current;
|
|
2246
|
+
return array;
|
|
2247
|
+
}
|
|
2042
2248
|
|
|
2043
|
-
//
|
|
2249
|
+
// src/unit.ts
|
|
2250
|
+
var createFormat = (unit) => {
|
|
2251
|
+
return (n, precision = unit.precision ?? 0) => {
|
|
2252
|
+
const value = n / unit.quotient;
|
|
2253
|
+
const formattedValue = value.toLocaleString("en-US", {
|
|
2254
|
+
minimumFractionDigits: precision,
|
|
2255
|
+
maximumFractionDigits: precision
|
|
2256
|
+
});
|
|
2257
|
+
return {
|
|
2258
|
+
unit,
|
|
2259
|
+
value,
|
|
2260
|
+
formattedValue,
|
|
2261
|
+
toString: () => `${formattedValue}${unit.symbol}`
|
|
2262
|
+
};
|
|
2263
|
+
};
|
|
2264
|
+
};
|
|
2265
|
+
var MS_SECONDS = 1e3;
|
|
2266
|
+
var MS_MINUTES = 60 * MS_SECONDS;
|
|
2267
|
+
var MS_HOURS = 60 * MS_MINUTES;
|
|
2268
|
+
var Unit = {
|
|
2269
|
+
// General.
|
|
2270
|
+
Percent: createFormat({
|
|
2271
|
+
symbol: "%",
|
|
2272
|
+
quotient: 1 / 100,
|
|
2273
|
+
precision: 2
|
|
2274
|
+
}),
|
|
2275
|
+
Thousand: createFormat({
|
|
2276
|
+
symbol: "k",
|
|
2277
|
+
quotient: 1e3,
|
|
2278
|
+
precision: 2
|
|
2279
|
+
}),
|
|
2280
|
+
// Bytes (note KB vs KiB).
|
|
2281
|
+
Gigabyte: createFormat({
|
|
2282
|
+
symbol: "GB",
|
|
2283
|
+
quotient: 1e3 * 1e3 * 1e3,
|
|
2284
|
+
precision: 2
|
|
2285
|
+
}),
|
|
2286
|
+
Megabyte: createFormat({
|
|
2287
|
+
symbol: "MB",
|
|
2288
|
+
quotient: 1e3 * 1e3,
|
|
2289
|
+
precision: 2
|
|
2290
|
+
}),
|
|
2291
|
+
Kilobyte: createFormat({
|
|
2292
|
+
symbol: "KB",
|
|
2293
|
+
quotient: 1e3,
|
|
2294
|
+
precision: 2
|
|
2295
|
+
}),
|
|
2296
|
+
Byte: createFormat({
|
|
2297
|
+
symbol: "B",
|
|
2298
|
+
quotient: 1
|
|
2299
|
+
}),
|
|
2300
|
+
// Time.
|
|
2301
|
+
Hour: createFormat({
|
|
2302
|
+
symbol: "h",
|
|
2303
|
+
quotient: MS_HOURS
|
|
2304
|
+
}),
|
|
2305
|
+
Minute: createFormat({
|
|
2306
|
+
symbol: "m",
|
|
2307
|
+
quotient: MS_MINUTES
|
|
2308
|
+
}),
|
|
2309
|
+
Second: createFormat({
|
|
2310
|
+
symbol: "s",
|
|
2311
|
+
quotient: MS_SECONDS,
|
|
2312
|
+
precision: 1
|
|
2313
|
+
}),
|
|
2314
|
+
Millisecond: createFormat({
|
|
2315
|
+
symbol: "ms",
|
|
2316
|
+
quotient: 1
|
|
2317
|
+
}),
|
|
2318
|
+
Duration: (n) => {
|
|
2319
|
+
const hours = Math.floor(n / MS_HOURS);
|
|
2320
|
+
const minutes = Math.floor(n % MS_HOURS / MS_MINUTES);
|
|
2321
|
+
if (hours) {
|
|
2322
|
+
const formattedValue = minutes ? `${hours}h ${minutes}m` : `${hours}h`;
|
|
2323
|
+
return {
|
|
2324
|
+
unit: {
|
|
2325
|
+
symbol: "h",
|
|
2326
|
+
quotient: MS_HOURS
|
|
2327
|
+
},
|
|
2328
|
+
value: hours,
|
|
2329
|
+
formattedValue,
|
|
2330
|
+
toString: () => formattedValue
|
|
2331
|
+
};
|
|
2332
|
+
}
|
|
2333
|
+
if (minutes) {
|
|
2334
|
+
const seconds2 = (n - MS_MINUTES * minutes) / MS_SECONDS;
|
|
2335
|
+
const formattedValue = seconds2 ? `${minutes}m ${seconds2}s` : `${minutes}m`;
|
|
2336
|
+
return {
|
|
2337
|
+
unit: {
|
|
2338
|
+
symbol: "m",
|
|
2339
|
+
quotient: MS_MINUTES
|
|
2340
|
+
},
|
|
2341
|
+
value: minutes,
|
|
2342
|
+
formattedValue,
|
|
2343
|
+
toString: () => formattedValue
|
|
2344
|
+
};
|
|
2345
|
+
}
|
|
2346
|
+
const seconds = n >= MS_SECONDS;
|
|
2347
|
+
if (seconds) {
|
|
2348
|
+
return Unit.Second(n);
|
|
2349
|
+
}
|
|
2350
|
+
return Unit.Millisecond(n);
|
|
2351
|
+
}
|
|
2352
|
+
};
|
|
2353
|
+
|
|
2354
|
+
// src/url.ts
|
|
2355
|
+
var createUrl = (url, search) => {
|
|
2356
|
+
const base = typeof url === "string" ? new URL(url) : url;
|
|
2357
|
+
if (search) {
|
|
2358
|
+
base.search = new URLSearchParams(Object.entries(search).filter(([_, value]) => value != null)).toString();
|
|
2359
|
+
}
|
|
2360
|
+
return base;
|
|
2361
|
+
};
|
|
2362
|
+
|
|
2363
|
+
// src/weak.ts
|
|
2044
2364
|
var WeakDictionary = class {
|
|
2365
|
+
_internal = /* @__PURE__ */ new Map();
|
|
2366
|
+
_finalization = new FinalizationRegistry(({ key, ref }) => {
|
|
2367
|
+
if (this._internal.get(key) === ref) {
|
|
2368
|
+
this._internal.delete(key);
|
|
2369
|
+
}
|
|
2370
|
+
});
|
|
2045
2371
|
constructor(entries2) {
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
]));
|
|
2054
|
-
entries2?.forEach(([key, value]) => this._register(key, value));
|
|
2372
|
+
if (entries2) {
|
|
2373
|
+
for (const [key, value] of entries2) {
|
|
2374
|
+
const ref = new WeakRef(value);
|
|
2375
|
+
this._internal.set(key, ref);
|
|
2376
|
+
this._register(key, value, ref);
|
|
2377
|
+
}
|
|
2378
|
+
}
|
|
2055
2379
|
}
|
|
2056
2380
|
*entries() {
|
|
2057
2381
|
for (const [key, value] of this._internal) {
|
|
@@ -2091,10 +2415,45 @@ var WeakDictionary = class {
|
|
|
2091
2415
|
return this._internal.get(key)?.deref();
|
|
2092
2416
|
}
|
|
2093
2417
|
set(key, value) {
|
|
2094
|
-
this._internal.
|
|
2095
|
-
|
|
2418
|
+
const previous = this._internal.get(key)?.deref();
|
|
2419
|
+
if (previous) {
|
|
2420
|
+
this._unregister(previous);
|
|
2421
|
+
}
|
|
2422
|
+
const ref = new WeakRef(value);
|
|
2423
|
+
this._internal.set(key, ref);
|
|
2424
|
+
this._register(key, value, ref);
|
|
2096
2425
|
return this;
|
|
2097
2426
|
}
|
|
2427
|
+
/**
|
|
2428
|
+
* Returns the value for the given key if present, otherwise inserts and returns the default value.
|
|
2429
|
+
* @param key - The key to look up or insert.
|
|
2430
|
+
* @param defaultValue - The value to insert if the key is not present.
|
|
2431
|
+
* @returns The existing or newly inserted value.
|
|
2432
|
+
*/
|
|
2433
|
+
getOrInsert(key, defaultValue) {
|
|
2434
|
+
const existing = this.get(key);
|
|
2435
|
+
if (existing !== void 0) {
|
|
2436
|
+
return existing;
|
|
2437
|
+
}
|
|
2438
|
+
this.set(key, defaultValue);
|
|
2439
|
+
return defaultValue;
|
|
2440
|
+
}
|
|
2441
|
+
/**
|
|
2442
|
+
* Returns the value for the given key if present, otherwise computes, inserts, and returns a new value.
|
|
2443
|
+
* The callback is only invoked when the key is missing.
|
|
2444
|
+
* @param key - The key to look up or insert.
|
|
2445
|
+
* @param callbackfn - Function to compute the value if the key is not present.
|
|
2446
|
+
* @returns The existing or newly computed value.
|
|
2447
|
+
*/
|
|
2448
|
+
getOrInsertComputed(key, callbackfn) {
|
|
2449
|
+
const existing = this.get(key);
|
|
2450
|
+
if (existing !== void 0) {
|
|
2451
|
+
return existing;
|
|
2452
|
+
}
|
|
2453
|
+
const value = callbackfn(key);
|
|
2454
|
+
this.set(key, value);
|
|
2455
|
+
return value;
|
|
2456
|
+
}
|
|
2098
2457
|
has(key) {
|
|
2099
2458
|
return this._internal.has(key) && this._internal.get(key).deref() !== void 0;
|
|
2100
2459
|
}
|
|
@@ -2125,19 +2484,16 @@ var WeakDictionary = class {
|
|
|
2125
2484
|
}
|
|
2126
2485
|
});
|
|
2127
2486
|
}
|
|
2128
|
-
_register(key, value) {
|
|
2129
|
-
this._finalization.register(value,
|
|
2130
|
-
|
|
2487
|
+
_register(key, value, ref) {
|
|
2488
|
+
this._finalization.register(value, {
|
|
2489
|
+
key,
|
|
2490
|
+
ref
|
|
2131
2491
|
}, value);
|
|
2132
2492
|
}
|
|
2133
2493
|
_unregister(value) {
|
|
2134
2494
|
this._finalization.unregister(value);
|
|
2135
2495
|
}
|
|
2136
2496
|
};
|
|
2137
|
-
|
|
2138
|
-
// packages/common/util/src/assume.ts
|
|
2139
|
-
function assumeType(value) {
|
|
2140
|
-
}
|
|
2141
2497
|
export {
|
|
2142
2498
|
BitField,
|
|
2143
2499
|
Callback,
|
|
@@ -2147,11 +2503,14 @@ export {
|
|
|
2147
2503
|
ComplexSet,
|
|
2148
2504
|
HumanHasher,
|
|
2149
2505
|
MapEntry,
|
|
2506
|
+
SKIP,
|
|
2150
2507
|
SlidingWindowSummary,
|
|
2151
2508
|
Tracer,
|
|
2509
|
+
Unit,
|
|
2152
2510
|
WeakDictionary,
|
|
2153
2511
|
accessBy,
|
|
2154
2512
|
arrayMove,
|
|
2513
|
+
arraySwap,
|
|
2155
2514
|
arrayToBuffer,
|
|
2156
2515
|
arrayToHex,
|
|
2157
2516
|
arrayToString,
|
|
@@ -2162,18 +2521,28 @@ export {
|
|
|
2162
2521
|
capitalize,
|
|
2163
2522
|
chunkArray,
|
|
2164
2523
|
clamp,
|
|
2524
|
+
clearCaches,
|
|
2525
|
+
clearIndexedDB,
|
|
2526
|
+
clearOPFS,
|
|
2527
|
+
clearServiceWorkers,
|
|
2165
2528
|
clearUndefined,
|
|
2529
|
+
coerceArray,
|
|
2166
2530
|
compareMulti,
|
|
2167
2531
|
compareObject,
|
|
2168
2532
|
compareScalar,
|
|
2169
2533
|
compareString,
|
|
2534
|
+
compositeKey,
|
|
2170
2535
|
createBinder,
|
|
2171
2536
|
createBucketReducer,
|
|
2537
|
+
createFilename,
|
|
2172
2538
|
createGroupReducer,
|
|
2539
|
+
createReplacer,
|
|
2173
2540
|
createSetDispatch,
|
|
2541
|
+
createUrl,
|
|
2174
2542
|
decamelize,
|
|
2175
2543
|
deepMapValues,
|
|
2176
2544
|
deepMapValuesAsync,
|
|
2545
|
+
defaultFilter,
|
|
2177
2546
|
defaultMap,
|
|
2178
2547
|
defer,
|
|
2179
2548
|
deferAsync,
|
|
@@ -2185,12 +2554,11 @@ export {
|
|
|
2185
2554
|
entry,
|
|
2186
2555
|
exponentialBackoffInterval,
|
|
2187
2556
|
forEachAsync,
|
|
2188
|
-
|
|
2557
|
+
formatErrorWithCauses,
|
|
2189
2558
|
getAsyncProviderValue,
|
|
2190
2559
|
getDate,
|
|
2191
2560
|
getDebugName,
|
|
2192
2561
|
getDeep,
|
|
2193
|
-
getFirstTwoRenderableChars,
|
|
2194
2562
|
getHostPlatform,
|
|
2195
2563
|
getPrototypeSpecificInstanceId,
|
|
2196
2564
|
getProviderValue,
|
|
@@ -2206,14 +2574,19 @@ export {
|
|
|
2206
2574
|
intersectBy,
|
|
2207
2575
|
intersection,
|
|
2208
2576
|
iosCheck,
|
|
2577
|
+
isBun,
|
|
2578
|
+
isMobile,
|
|
2579
|
+
isMobileOrTablet,
|
|
2209
2580
|
isNode,
|
|
2210
2581
|
isNonNullable,
|
|
2211
|
-
|
|
2582
|
+
isTauri,
|
|
2583
|
+
isTruthy,
|
|
2212
2584
|
joinTables,
|
|
2213
2585
|
jsonKeyReplacer,
|
|
2214
2586
|
jsonReplacer,
|
|
2215
2587
|
jsonify,
|
|
2216
2588
|
jsonlogify,
|
|
2589
|
+
kebabize,
|
|
2217
2590
|
keyToEmoji,
|
|
2218
2591
|
keyToFallback,
|
|
2219
2592
|
keyToHue,
|
|
@@ -2222,7 +2595,6 @@ export {
|
|
|
2222
2595
|
makeSet,
|
|
2223
2596
|
mapValues,
|
|
2224
2597
|
median,
|
|
2225
|
-
mobileAndTabletCheck,
|
|
2226
2598
|
numericalValues,
|
|
2227
2599
|
omit,
|
|
2228
2600
|
orderKeys,
|
|
@@ -2238,15 +2610,18 @@ export {
|
|
|
2238
2610
|
removeBy,
|
|
2239
2611
|
removeProperties,
|
|
2240
2612
|
removeUndefinedProperties,
|
|
2613
|
+
retry,
|
|
2241
2614
|
safariCheck,
|
|
2242
2615
|
safeAwaitAll,
|
|
2243
2616
|
safeInstanceof,
|
|
2244
2617
|
safeParseFloat,
|
|
2245
2618
|
safeParseInt,
|
|
2246
2619
|
safeParseJson,
|
|
2247
|
-
|
|
2620
|
+
safeStringify,
|
|
2621
|
+
safeUrl,
|
|
2248
2622
|
setDeep,
|
|
2249
2623
|
sortKeys,
|
|
2624
|
+
splitCompositeKey,
|
|
2250
2625
|
stringToArray,
|
|
2251
2626
|
stringifyTree,
|
|
2252
2627
|
stripUndefined,
|
|
@@ -2256,6 +2631,7 @@ export {
|
|
|
2256
2631
|
toFallback,
|
|
2257
2632
|
toHue,
|
|
2258
2633
|
tracer,
|
|
2634
|
+
trim,
|
|
2259
2635
|
visitValues
|
|
2260
2636
|
};
|
|
2261
2637
|
//# sourceMappingURL=index.mjs.map
|