@dxos/util 0.8.1 → 0.8.2-main.10c050d
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 +197 -141
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +184 -125
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +197 -141
- 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 +8 -0
- package/dist/types/src/array.d.ts.map +1 -1
- package/dist/types/src/binder.d.ts.map +1 -1
- package/dist/types/src/bitfield.d.ts +1 -1
- package/dist/types/src/bitfield.d.ts.map +1 -1
- 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/clear-undefined.d.ts +5 -0
- package/dist/types/src/clear-undefined.d.ts.map +1 -0
- package/dist/types/src/complex.d.ts.map +1 -1
- package/dist/types/src/deep.d.ts +3 -2
- 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.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/entry.d.ts.map +1 -1
- package/dist/types/src/first-two-chars.d.ts.map +1 -1
- 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 +12 -10
- 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.map +1 -1
- package/dist/types/src/map-values.d.ts +5 -0
- 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 -0
- 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/position.d.ts +2 -3
- 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/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.map +1 -1
- 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.map +1 -1
- 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.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.map +1 -1
- package/dist/types/src/uint8array.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -6
- package/src/array.ts +34 -0
- package/src/bitfield.ts +2 -2
- package/src/callback-collection.ts +3 -3
- package/src/callback.ts +2 -2
- package/src/clear-undefined.ts +15 -0
- package/src/complex.ts +6 -6
- package/src/deep.ts +6 -2
- package/src/defer.ts +2 -2
- package/src/di-key.ts +2 -2
- package/src/human-hash.ts +2 -2
- package/src/index.ts +12 -10
- package/src/map-values.ts +14 -0
- package/src/object.ts +7 -0
- package/src/position.ts +12 -11
- package/src/sliding-window-summary.ts +3 -3
- package/src/tracer.ts +6 -6
- package/src/weak.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"throw-unhandled-error.d.ts","sourceRoot":"","sources":["../../../src/throw-unhandled-error.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"throw-unhandled-error.d.ts","sourceRoot":"","sources":["../../../src/throw-unhandled-error.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,KAAK,SAI/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-fallback.d.ts","sourceRoot":"","sources":["../../../src/to-fallback.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,OAAO,UAiJnB,CAAC;AAEF,eAAO,MAAM,KAAK,0HAkBjB,CAAC;AAGF,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"to-fallback.d.ts","sourceRoot":"","sources":["../../../src/to-fallback.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,OAAO,UAiJnB,CAAC;AAEF,eAAO,MAAM,KAAK,0HAkBjB,CAAC;AAGF,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,WAA6B,CAAC;AAEvE,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,WAA6B,CAAC;AAEpE,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,WAA2B,CAAC;AAEhE,eAAO,MAAM,QAAQ,GAAI,KAAK,SAAS,yHAA2B,CAAC;AAEnE,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,yHAA2B,CAAC;AAEhE,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,yHAAyB,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,kBAA+B,CAAC;AAG5E,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,kBAAkC,CAAC;AAE5E,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,aAiBzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../../src/tracer.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC;AAEF;;GAEG;AAEH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAEtD,OAAO,CAAC,UAAU,CAAS;IAO3B,IAAI,SAAS,YAEZ;IAED,IAAI;
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../../src/tracer.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC;AAEF;;GAEG;AAEH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAEtD,OAAO,CAAC,UAAU,CAAS;IAO3B,IAAI,SAAS,YAEZ;IAED,IAAI,IAAI,MAAM,EAAE;IAIhB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS;IASlE,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAKZ,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;IAInC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,IAAI,CAAA;KAAE;IAYjE,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,KAAK;CAKd;AAID,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/tree.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/tree.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,QAAQ,EAAE,YAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAO,EAAE,OAAM,MAAM,EAAO,aA2CtG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3D,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAElD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAE7D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACrD,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClB,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACzB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC9B,CAAC,CAAC,CAAC,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE9G;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D;;GAEG;AAEH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAElF;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uint8array.d.ts","sourceRoot":"","sources":["../../../src/uint8array.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"uint8array.d.ts","sourceRoot":"","sources":["../../../src/uint8array.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,GAAI,GAAG,UAAU,EAAE,GAAG,UAAU,KAAG,OAY1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MAEjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,UAE9C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,UAAuD,CAAC;AAEvG,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MAA8C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"5.
|
|
1
|
+
{"version":"5.8.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/util",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2-main.10c050d",
|
|
4
4
|
"description": "Temporary bucket for misc functions, which should graduate into separate packages.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -27,13 +27,17 @@
|
|
|
27
27
|
"src"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"@dxos/
|
|
33
|
-
"@dxos/
|
|
30
|
+
"lodash.get": "^4.4.2",
|
|
31
|
+
"lodash.set": "^4.3.2",
|
|
32
|
+
"@dxos/debug": "0.8.2-main.10c050d",
|
|
33
|
+
"@dxos/keys": "0.8.2-main.10c050d",
|
|
34
|
+
"@dxos/node-std": "0.8.2-main.10c050d",
|
|
35
|
+
"@dxos/invariant": "0.8.2-main.10c050d"
|
|
34
36
|
},
|
|
35
37
|
"devDependencies": {
|
|
36
|
-
"@
|
|
38
|
+
"@types/lodash.get": "^4.4.9",
|
|
39
|
+
"@types/lodash.set": "^4.3.9",
|
|
40
|
+
"@dxos/crypto": "0.8.2-main.10c050d"
|
|
37
41
|
},
|
|
38
42
|
"publishConfig": {
|
|
39
43
|
"access": "public"
|
package/src/array.ts
CHANGED
|
@@ -98,3 +98,37 @@ export const partition = <T>(array: T[], guard: (item: T, index: number, array:
|
|
|
98
98
|
[[], []],
|
|
99
99
|
);
|
|
100
100
|
};
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Returns elements that exist in all provided arrays based on a selector function.
|
|
104
|
+
*
|
|
105
|
+
* @param arrays - Arrays to intersect.
|
|
106
|
+
* @param selector - Function to extract the comparison value from each element.
|
|
107
|
+
* @returns Array containing elements from the first array that exist in all other arrays.
|
|
108
|
+
*/
|
|
109
|
+
export const intersectBy = <T, K>(arrays: T[][], selector: (item: T) => K): T[] => {
|
|
110
|
+
if (arrays.length === 0) {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (arrays.length === 1) {
|
|
115
|
+
return [...arrays[0]];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const [first, ...rest] = arrays;
|
|
119
|
+
|
|
120
|
+
// Create lookup maps for all other arrays.
|
|
121
|
+
const lookups = rest.map((array) => {
|
|
122
|
+
const map = new Map<K, T>();
|
|
123
|
+
for (const item of array) {
|
|
124
|
+
map.set(selector(item), item);
|
|
125
|
+
}
|
|
126
|
+
return map;
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// Keep items from first array that exist in all other arrays.
|
|
130
|
+
return first.filter((item) => {
|
|
131
|
+
const key = selector(item);
|
|
132
|
+
return lookups.every((lookup) => lookup.has(key));
|
|
133
|
+
});
|
|
134
|
+
};
|
package/src/bitfield.ts
CHANGED
|
@@ -20,7 +20,7 @@ export class BitField {
|
|
|
20
20
|
return !!bit;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
static set(data: Uint8Array, idx: number, value: boolean) {
|
|
23
|
+
static set(data: Uint8Array, idx: number, value: boolean): void {
|
|
24
24
|
if (value) {
|
|
25
25
|
data[idx >> 3] = data[idx >> 3] | (1 << (7 - (idx % 8)));
|
|
26
26
|
} else {
|
|
@@ -48,7 +48,7 @@ export class BitField {
|
|
|
48
48
|
return result;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
static and(first: Uint8Array, second: Uint8Array) {
|
|
51
|
+
static and(first: Uint8Array, second: Uint8Array): Uint8Array {
|
|
52
52
|
invariant(first.length === second.length, 'Bitfields must be of the same length');
|
|
53
53
|
const result = new Uint8Array(first.length);
|
|
54
54
|
for (let i = 0; i < first.length; i++) {
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
export class CallbackCollection<F extends (...args: any[]) => Promise<any>> {
|
|
9
9
|
#callbacks: F[] = [];
|
|
10
10
|
|
|
11
|
-
append(callback: F) {
|
|
11
|
+
append(callback: F): void {
|
|
12
12
|
this.#callbacks.push(callback);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
prepend(callback: F) {
|
|
15
|
+
prepend(callback: F): void {
|
|
16
16
|
this.#callbacks.unshift(callback);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
remove(callback: F) {
|
|
19
|
+
remove(callback: F): void {
|
|
20
20
|
this.#callbacks = this.#callbacks.filter((c) => c !== callback);
|
|
21
21
|
}
|
|
22
22
|
|
package/src/callback.ts
CHANGED
|
@@ -25,12 +25,12 @@ export class Callback<T extends (...args: any[]) => any> {
|
|
|
25
25
|
return this._callback?.(...args);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
public set(callback: T) {
|
|
28
|
+
public set(callback: T): void {
|
|
29
29
|
invariant(!this._callback, 'Callback already set');
|
|
30
30
|
this._callback = callback;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
public isSet() {
|
|
33
|
+
public isSet(): boolean {
|
|
34
34
|
return !!this._callback;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Remove undefined values from an object.
|
|
7
|
+
*/
|
|
8
|
+
export const clearUndefined = <O extends {}>(obj: O): O => {
|
|
9
|
+
for (const key of [...Object.getOwnPropertyNames(obj), ...Object.getOwnPropertySymbols(obj)]) {
|
|
10
|
+
if (obj[key as keyof O] === undefined) {
|
|
11
|
+
delete obj[key as keyof O];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return obj;
|
|
15
|
+
};
|
package/src/complex.ts
CHANGED
|
@@ -35,17 +35,17 @@ export class ComplexSet<T> implements Set<T> {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
toString() {
|
|
38
|
+
toString(): string {
|
|
39
39
|
return inspectObject(this);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
toJSON() {
|
|
42
|
+
toJSON(): T[] | { size: number } {
|
|
43
43
|
return this._values.size > MAX_SERIALIZATION_LENGTH
|
|
44
44
|
? { size: this._values.size }
|
|
45
45
|
: Array.from(this._values.values());
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
[inspect.custom]() {
|
|
48
|
+
[inspect.custom](): string {
|
|
49
49
|
return inspectObject(this);
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -164,17 +164,17 @@ export class ComplexMap<K, V> implements Map<K, V> {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
toString() {
|
|
167
|
+
toString(): string {
|
|
168
168
|
return inspectObject(this);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
toJSON() {
|
|
171
|
+
toJSON(): V[] | { size: number } {
|
|
172
172
|
return this._values.size > MAX_SERIALIZATION_LENGTH
|
|
173
173
|
? { size: this._values.size }
|
|
174
174
|
: Array.from(this._values.values());
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
[inspect.custom]() {
|
|
177
|
+
[inspect.custom](): string {
|
|
178
178
|
return inspectObject(this);
|
|
179
179
|
}
|
|
180
180
|
|
package/src/deep.ts
CHANGED
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import get from 'lodash.get';
|
|
6
|
+
import set from 'lodash.set';
|
|
7
|
+
|
|
5
8
|
import { invariant } from '@dxos/invariant';
|
|
6
9
|
|
|
10
|
+
// TODO(burdon): Re-export most common utils? (isEqual, defaultsDeep, merge, omit, pick, etc.)
|
|
11
|
+
export { get, set };
|
|
12
|
+
|
|
7
13
|
/**
|
|
8
14
|
* Initialize a deeply nested object.
|
|
9
15
|
* @returns The value of the prop after assignment.
|
|
@@ -25,8 +31,6 @@ export const setDeep = <T>(obj: any, path: readonly (string | number)[], value:
|
|
|
25
31
|
|
|
26
32
|
/**
|
|
27
33
|
* Gets a value from a deeply nested object.
|
|
28
|
-
* @param obj
|
|
29
|
-
* @param path
|
|
30
34
|
* @returns The value of the prop if it exists, otherwise undefined.
|
|
31
35
|
*/
|
|
32
36
|
export const getDeep = <T>(obj: any, path: readonly (string | number)[]): T | undefined => {
|
package/src/defer.ts
CHANGED
|
@@ -23,7 +23,7 @@ class DeferGuard {
|
|
|
23
23
|
*/
|
|
24
24
|
constructor(private readonly _fn: () => void) {}
|
|
25
25
|
|
|
26
|
-
[Symbol.dispose]() {
|
|
26
|
+
[Symbol.dispose](): void {
|
|
27
27
|
const result = this._fn();
|
|
28
28
|
if ((result as any) instanceof Promise) {
|
|
29
29
|
throw new Error('Async functions in defer are not supported. Use deferAsync instead.');
|
|
@@ -50,7 +50,7 @@ class DeferAsyncGuard implements AsyncDisposable {
|
|
|
50
50
|
*/
|
|
51
51
|
constructor(private readonly _fn: () => Promise<void>) {}
|
|
52
52
|
|
|
53
|
-
async [Symbol.asyncDispose]() {
|
|
53
|
+
async [Symbol.asyncDispose](): Promise<void> {
|
|
54
54
|
await this._fn();
|
|
55
55
|
}
|
|
56
56
|
}
|
package/src/di-key.ts
CHANGED
|
@@ -19,11 +19,11 @@ export class SymbolDiKey<T> {
|
|
|
19
19
|
|
|
20
20
|
public [symbolSingleton]?: SingletonFactory<T> = undefined;
|
|
21
21
|
|
|
22
|
-
toString() {
|
|
22
|
+
toString(): string {
|
|
23
23
|
return String(this.symbol).slice(7, -1);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
[inspect.custom]() {
|
|
26
|
+
[inspect.custom](): string {
|
|
27
27
|
return this.toString();
|
|
28
28
|
}
|
|
29
29
|
}
|
package/src/human-hash.ts
CHANGED
|
@@ -299,7 +299,7 @@ export class HumanHasher {
|
|
|
299
299
|
* @param words How many words to output (more = safer)
|
|
300
300
|
* @param separator The string used to seperate the words
|
|
301
301
|
*/
|
|
302
|
-
humanize(hexdigest: string, words = 4, separator = '-') {
|
|
302
|
+
humanize(hexdigest: string, words = 4, separator = '-'): string {
|
|
303
303
|
const pairs = hexdigest.match(/(..?)/g);
|
|
304
304
|
if (!pairs) {
|
|
305
305
|
throw new Error('');
|
|
@@ -317,7 +317,7 @@ export class HumanHasher {
|
|
|
317
317
|
* @param bytes A list of bytes (numbers from 0-254)
|
|
318
318
|
* @param target The number of bytes to return / compress to
|
|
319
319
|
*/
|
|
320
|
-
_compress(bytes: number[], target: number) {
|
|
320
|
+
_compress(bytes: number[], target: number): number[] {
|
|
321
321
|
const length = bytes.length;
|
|
322
322
|
if (target > length) {
|
|
323
323
|
throw new Error('Fewer input bytes than requested output');
|
package/src/index.ts
CHANGED
|
@@ -2,43 +2,48 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export * from './array';
|
|
6
5
|
export * from './array-to-hex';
|
|
6
|
+
export * from './array';
|
|
7
7
|
export * from './binder';
|
|
8
8
|
export * from './bitfield';
|
|
9
|
-
export * from './callback';
|
|
10
9
|
export * from './callback-collection';
|
|
10
|
+
export * from './callback';
|
|
11
11
|
export * from './case';
|
|
12
12
|
export * from './chunk-array';
|
|
13
13
|
export * from './circular-buffer';
|
|
14
|
+
export * from './clear-undefined';
|
|
14
15
|
export * from './complex';
|
|
15
|
-
export * from './defer';
|
|
16
|
-
export * from './defer-function';
|
|
17
16
|
export * from './deep';
|
|
17
|
+
export * from './defer-function';
|
|
18
|
+
export * from './defer';
|
|
18
19
|
export * from './entry';
|
|
19
20
|
export * from './first-two-chars';
|
|
20
21
|
export * from './for-each-async';
|
|
21
22
|
export * from './human-hash';
|
|
22
|
-
export * from './interval';
|
|
23
23
|
export * from './instance-id';
|
|
24
|
+
export * from './interval';
|
|
24
25
|
export * from './join-tables';
|
|
25
26
|
export * from './json';
|
|
26
|
-
export * from './map';
|
|
27
27
|
export * from './map-values';
|
|
28
|
+
export * from './map';
|
|
28
29
|
export * from './no-infer';
|
|
29
|
-
export * from './
|
|
30
|
+
export * from './object';
|
|
30
31
|
export * from './order-keys';
|
|
32
|
+
export * from './order';
|
|
31
33
|
export * from './pick';
|
|
32
34
|
export * from './platform';
|
|
33
35
|
export * from './position';
|
|
34
36
|
export * from './random';
|
|
35
37
|
export * from './range';
|
|
36
38
|
export * from './reducers';
|
|
39
|
+
export * from './remove-undefined-keys';
|
|
37
40
|
export * from './safe-await';
|
|
38
41
|
export * from './safe-instanceof';
|
|
39
42
|
export * from './safe-parse';
|
|
40
43
|
export * from './sliding-window-summary';
|
|
44
|
+
export * from './sliding-window-summary';
|
|
41
45
|
export * from './sort';
|
|
46
|
+
export * from './string';
|
|
42
47
|
export * from './sum';
|
|
43
48
|
export * from './throw-unhandled-error';
|
|
44
49
|
export * from './to-fallback';
|
|
@@ -47,6 +52,3 @@ export * from './tree';
|
|
|
47
52
|
export * from './types';
|
|
48
53
|
export * from './uint8array';
|
|
49
54
|
export * from './weak';
|
|
50
|
-
export * from './sliding-window-summary';
|
|
51
|
-
export * from './string';
|
|
52
|
-
export * from './remove-undefined-keys';
|
package/src/map-values.ts
CHANGED
|
@@ -124,3 +124,17 @@ class DeepMapperAsync {
|
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Visits all values on an object or every item in an array.
|
|
130
|
+
* No-op if the value is not an object or array.
|
|
131
|
+
*/
|
|
132
|
+
export const visitValues = (object: unknown, visitor: (value: unknown, key: string | number) => void) => {
|
|
133
|
+
if (Array.isArray(object)) {
|
|
134
|
+
object.forEach((item, index) => visitor(item, index));
|
|
135
|
+
} else if (typeof object === 'object' && object !== null) {
|
|
136
|
+
for (const [key, value] of Object.entries(object)) {
|
|
137
|
+
visitor(value, key);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
};
|
package/src/object.ts
ADDED
package/src/position.ts
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
// TODO(burdon): This shouldn't be in this low-level util? Move to app-framework?
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
|
-
* Determines priority order
|
|
7
|
-
*
|
|
8
|
+
* Determines priority order:
|
|
8
9
|
* - `static` - Remain in natural order.
|
|
9
10
|
* - `hoist` - Placed before `static`.
|
|
10
11
|
* - `fallback` - Placed after `static`.
|
|
@@ -15,17 +16,17 @@ export type Position = 'static' | 'hoist' | 'fallback';
|
|
|
15
16
|
/**
|
|
16
17
|
* Sorting function for sorting by position.
|
|
17
18
|
*/
|
|
18
|
-
export const byPosition = <T extends { position?: Position }>(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (
|
|
19
|
+
export const byPosition = <T extends { position?: Position }>(
|
|
20
|
+
{ position: a = 'static' }: T,
|
|
21
|
+
{ position: b = 'static' }: T,
|
|
22
|
+
) => {
|
|
23
|
+
if (a === b) {
|
|
23
24
|
return 0;
|
|
24
|
-
} else if (
|
|
25
|
+
} else if (a === 'hoist' || b === 'fallback') {
|
|
25
26
|
return -1;
|
|
26
|
-
} else if (
|
|
27
|
+
} else if (b === 'hoist' || a === 'fallback') {
|
|
27
28
|
return 1;
|
|
29
|
+
} else {
|
|
30
|
+
return 0;
|
|
28
31
|
}
|
|
29
|
-
|
|
30
|
-
return 0;
|
|
31
32
|
};
|
|
@@ -28,12 +28,12 @@ export class SlidingWindowSummary {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
public record(value: number) {
|
|
31
|
+
public record(value: number): void {
|
|
32
32
|
const evicted = this._buffer.push(value);
|
|
33
33
|
this._sum += value - (evicted ?? 0);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
public average() {
|
|
36
|
+
public average(): number {
|
|
37
37
|
return this._buffer.elementCount === 0 ? 0 : this._withPrecision(this._sum / this._buffer.elementCount);
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -58,7 +58,7 @@ export class SlidingWindowSummary {
|
|
|
58
58
|
return { mean, median, p90, stdDev, histogram };
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
private _withPrecision(value: number) {
|
|
61
|
+
private _withPrecision(value: number): number {
|
|
62
62
|
if (this._precision == null) {
|
|
63
63
|
return value;
|
|
64
64
|
}
|
package/src/tracer.ts
CHANGED
|
@@ -32,7 +32,7 @@ export class Tracer {
|
|
|
32
32
|
return this._recording;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
keys() {
|
|
35
|
+
keys(): string[] {
|
|
36
36
|
return Array.from(this._events.keys());
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -45,21 +45,21 @@ export class Tracer {
|
|
|
45
45
|
return events;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
clear() {
|
|
48
|
+
clear(): void {
|
|
49
49
|
this._events.clear();
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
start() {
|
|
52
|
+
start(): this {
|
|
53
53
|
this._recording = true;
|
|
54
54
|
return this;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
stop() {
|
|
57
|
+
stop(): this {
|
|
58
58
|
this._recording = false;
|
|
59
59
|
return this;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
emit(id: string, value?: any) {
|
|
62
|
+
emit(id: string, value?: any): void {
|
|
63
63
|
this._post(this._createEvent(id, value));
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -84,7 +84,7 @@ export class Tracer {
|
|
|
84
84
|
return event;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
private _post(event: Event) {
|
|
87
|
+
private _post(event: Event): void {
|
|
88
88
|
if (this._recording) {
|
|
89
89
|
defaultMap(this._events, event.id, []).push(event);
|
|
90
90
|
}
|
package/src/weak.ts
CHANGED
|
@@ -96,7 +96,7 @@ export class WeakDictionary<K, V extends object> implements Map<K, V> {
|
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
private _register(key: K, value: V) {
|
|
99
|
+
private _register(key: K, value: V): void {
|
|
100
100
|
this._finalization.register(
|
|
101
101
|
value,
|
|
102
102
|
() => {
|
|
@@ -106,7 +106,7 @@ export class WeakDictionary<K, V extends object> implements Map<K, V> {
|
|
|
106
106
|
);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
private _unregister(value: V) {
|
|
109
|
+
private _unregister(value: V): void {
|
|
110
110
|
this._finalization.unregister(value);
|
|
111
111
|
}
|
|
112
112
|
}
|