@dxos/util 0.6.13 → 0.6.14-main.7bd9c89
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 +106 -141
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +97 -133
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +1943 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/types/src/array-to-hex.d.ts +2 -0
- package/dist/types/src/array-to-hex.d.ts.map +1 -0
- package/dist/types/src/complex.d.ts +8 -8
- package/dist/types/src/complex.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +5 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/platform.browser.test.d.ts +2 -0
- package/dist/types/src/platform.browser.test.d.ts.map +1 -0
- package/dist/types/src/platform.node.test.d.ts +2 -0
- package/dist/types/src/platform.node.test.d.ts.map +1 -0
- package/dist/types/src/random.d.ts +1 -1
- package/dist/types/src/random.d.ts.map +1 -1
- package/dist/types/src/weak.d.ts +4 -4
- package/dist/types/src/weak.d.ts.map +1 -1
- package/package.json +8 -9
- package/src/array-to-hex.ts +23 -0
- package/src/array.test.ts +1 -2
- package/src/bitfield.test.ts +1 -2
- package/src/callback.test.ts +1 -2
- package/src/complex.test.ts +1 -2
- package/src/complex.ts +8 -8
- package/src/defer.test.ts +1 -2
- package/src/human-hash.test.ts +1 -2
- package/src/index.ts +5 -3
- package/src/join-tables.test.ts +1 -2
- package/src/order.test.ts +1 -2
- package/src/platform.browser.test.ts +11 -0
- package/src/platform.node.test.ts +11 -0
- package/src/random.ts +1 -1
- package/src/reducers.test.ts +1 -2
- package/src/safe-instanceof.test.ts +1 -2
- package/src/sort.test.ts +1 -2
- package/src/tracer.test.ts +3 -3
- package/src/types.test.ts +1 -2
- package/src/uint8array.test.ts +1 -2
- package/src/weak.test.ts +4 -8
- package/src/weak.ts +4 -4
- package/dist/types/src/params.d.ts +0 -22
- package/dist/types/src/params.d.ts.map +0 -1
- package/dist/types/src/params.test.d.ts +0 -2
- package/dist/types/src/params.test.d.ts.map +0 -1
- package/dist/types/src/platform.test.d.ts +0 -2
- package/dist/types/src/platform.test.d.ts.map +0 -1
- package/src/params.test.ts +0 -38
- package/src/params.ts +0 -68
- package/src/platform.test.ts +0 -17
- package/src/typings.d.ts +0 -5
|
@@ -199,6 +199,39 @@ var createSetDispatch = ({ handlers }) => {
|
|
|
199
199
|
});
|
|
200
200
|
};
|
|
201
201
|
|
|
202
|
+
// packages/common/util/src/callback-collection.ts
|
|
203
|
+
var CallbackCollection = class {
|
|
204
|
+
#callbacks = [];
|
|
205
|
+
append(callback) {
|
|
206
|
+
this.#callbacks.push(callback);
|
|
207
|
+
}
|
|
208
|
+
prepend(callback) {
|
|
209
|
+
this.#callbacks.unshift(callback);
|
|
210
|
+
}
|
|
211
|
+
remove(callback) {
|
|
212
|
+
this.#callbacks = this.#callbacks.filter((c) => c !== callback);
|
|
213
|
+
}
|
|
214
|
+
callParallel(...args) {
|
|
215
|
+
return Promise.all(this.#callbacks.map((callback) => callback(...args)));
|
|
216
|
+
}
|
|
217
|
+
async callSerial(...args) {
|
|
218
|
+
const results = [];
|
|
219
|
+
for (const callback of this.#callbacks) {
|
|
220
|
+
results.push(await callback(...args));
|
|
221
|
+
}
|
|
222
|
+
return results;
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// packages/common/util/src/chunk-array.ts
|
|
227
|
+
var chunkArray = (array, size) => {
|
|
228
|
+
const result = [];
|
|
229
|
+
for (let i = 0; i < array.length; i += size) {
|
|
230
|
+
result.push(array.slice(i, i + size));
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
};
|
|
234
|
+
|
|
202
235
|
// packages/common/util/src/circular-buffer.ts
|
|
203
236
|
import { invariant as invariant4 } from "@dxos/invariant";
|
|
204
237
|
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/common/util/src/circular-buffer.ts";
|
|
@@ -1135,55 +1168,6 @@ var inferRecordOrder = (objectMap, order = []) => {
|
|
|
1135
1168
|
}, {}), objectMap);
|
|
1136
1169
|
};
|
|
1137
1170
|
|
|
1138
|
-
// packages/common/util/src/params.ts
|
|
1139
|
-
import { AST } from "@effect/schema";
|
|
1140
|
-
import { decamelize } from "xcase";
|
|
1141
|
-
var ParamKeyAnnotationId = Symbol.for("@dxos/schema/annotation/ParamKeyAnnotation");
|
|
1142
|
-
var ParamKeyAnnotation = (value) => (self) => self.annotations({
|
|
1143
|
-
[ParamKeyAnnotationId]: value
|
|
1144
|
-
});
|
|
1145
|
-
var Params = class {
|
|
1146
|
-
constructor(_schema) {
|
|
1147
|
-
this._schema = _schema;
|
|
1148
|
-
}
|
|
1149
|
-
/**
|
|
1150
|
-
* Parse URL params.
|
|
1151
|
-
* @param url
|
|
1152
|
-
*/
|
|
1153
|
-
parse(url) {
|
|
1154
|
-
return Object.entries(this._schema.fields).reduce((acc, [key, type]) => {
|
|
1155
|
-
let v = url.searchParams.get(decamelize(key));
|
|
1156
|
-
if (v == null) {
|
|
1157
|
-
v = url.searchParams.get(key);
|
|
1158
|
-
}
|
|
1159
|
-
if (v != null) {
|
|
1160
|
-
if (AST.isNumberKeyword(type.ast)) {
|
|
1161
|
-
acc[key] = parseInt(v);
|
|
1162
|
-
} else if (AST.isBooleanKeyword(type.ast)) {
|
|
1163
|
-
acc[key] = v === "true" || v === "1";
|
|
1164
|
-
} else {
|
|
1165
|
-
acc[key] = v;
|
|
1166
|
-
}
|
|
1167
|
-
}
|
|
1168
|
-
return acc;
|
|
1169
|
-
}, {});
|
|
1170
|
-
}
|
|
1171
|
-
/**
|
|
1172
|
-
* Update URL with params.
|
|
1173
|
-
*/
|
|
1174
|
-
params(url, values) {
|
|
1175
|
-
Object.entries(values).forEach(([key, value]) => {
|
|
1176
|
-
const type = this._schema.fields[key];
|
|
1177
|
-
if (type && value != null) {
|
|
1178
|
-
const { value: alt } = AST.getAnnotation(ParamKeyAnnotationId)(type.ast);
|
|
1179
|
-
const k = alt ?? decamelize(key);
|
|
1180
|
-
url.searchParams.set(k, String(value));
|
|
1181
|
-
}
|
|
1182
|
-
});
|
|
1183
|
-
return url;
|
|
1184
|
-
}
|
|
1185
|
-
};
|
|
1186
|
-
|
|
1187
1171
|
// packages/common/util/src/pick.ts
|
|
1188
1172
|
var pick = (object, keys) => keys.reduce((obj, key) => {
|
|
1189
1173
|
if (object && key in object) {
|
|
@@ -1243,7 +1227,7 @@ var getHostPlatform = () => {
|
|
|
1243
1227
|
};
|
|
1244
1228
|
|
|
1245
1229
|
// packages/common/util/src/random.ts
|
|
1246
|
-
var randomInt = (max, min) => {
|
|
1230
|
+
var randomInt = (max, min = 0) => {
|
|
1247
1231
|
min = Math.ceil(min);
|
|
1248
1232
|
max = Math.floor(max);
|
|
1249
1233
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
@@ -1385,6 +1369,62 @@ var safeParseJson = (data, defaultValue) => {
|
|
|
1385
1369
|
return defaultValue;
|
|
1386
1370
|
};
|
|
1387
1371
|
|
|
1372
|
+
// packages/common/util/src/sliding-window-summary.ts
|
|
1373
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1374
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
|
|
1375
|
+
var SlidingWindowSummary = class {
|
|
1376
|
+
constructor(options) {
|
|
1377
|
+
this._sum = 0;
|
|
1378
|
+
this._buffer = new CircularBuffer(options.dataPoints);
|
|
1379
|
+
if (options.precision != null) {
|
|
1380
|
+
invariant5(options.precision >= 0, void 0, {
|
|
1381
|
+
F: __dxlog_file5,
|
|
1382
|
+
L: 26,
|
|
1383
|
+
S: this,
|
|
1384
|
+
A: [
|
|
1385
|
+
"options.precision >= 0",
|
|
1386
|
+
""
|
|
1387
|
+
]
|
|
1388
|
+
});
|
|
1389
|
+
this._precision = Math.pow(10, options.precision);
|
|
1390
|
+
}
|
|
1391
|
+
}
|
|
1392
|
+
record(value) {
|
|
1393
|
+
const evicted = this._buffer.push(value);
|
|
1394
|
+
this._sum += value - (evicted ?? 0);
|
|
1395
|
+
}
|
|
1396
|
+
average() {
|
|
1397
|
+
return this._buffer.elementCount === 0 ? 0 : this._withPrecision(this._sum / this._buffer.elementCount);
|
|
1398
|
+
}
|
|
1399
|
+
computeWindowSummary() {
|
|
1400
|
+
const mean = this.average();
|
|
1401
|
+
const sortedElements = [
|
|
1402
|
+
...this._buffer
|
|
1403
|
+
].sort();
|
|
1404
|
+
const median2 = this._withPrecision(sortedElements.length % 2 === 0 ? (sortedElements[sortedElements.length / 2] + sortedElements[sortedElements.length / 2 - 1]) / 2 : sortedElements[sortedElements.length / 2]);
|
|
1405
|
+
const p90 = this._withPrecision(sortedElements[Math.round(sortedElements.length * 0.9)]);
|
|
1406
|
+
const variance = sortedElements.reduce((acc, v) => acc + Math.pow(v - mean, 2)) / sortedElements.length;
|
|
1407
|
+
const stdDev = this._withPrecision(Math.sqrt(variance));
|
|
1408
|
+
const histogram = sortedElements.reduce((acc, v) => {
|
|
1409
|
+
acc[v] += 1;
|
|
1410
|
+
return acc;
|
|
1411
|
+
}, {});
|
|
1412
|
+
return {
|
|
1413
|
+
mean,
|
|
1414
|
+
median: median2,
|
|
1415
|
+
p90,
|
|
1416
|
+
stdDev,
|
|
1417
|
+
histogram
|
|
1418
|
+
};
|
|
1419
|
+
}
|
|
1420
|
+
_withPrecision(value) {
|
|
1421
|
+
if (this._precision == null) {
|
|
1422
|
+
return value;
|
|
1423
|
+
}
|
|
1424
|
+
return Math.round(value * this._precision) / this._precision;
|
|
1425
|
+
}
|
|
1426
|
+
};
|
|
1427
|
+
|
|
1388
1428
|
// packages/common/util/src/sort.ts
|
|
1389
1429
|
var compareScalar = (inc = true) => (a, b) => (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);
|
|
1390
1430
|
var compareString = (inc = true, caseInsensitive = true) => (a, b) => {
|
|
@@ -1407,6 +1447,9 @@ var compareMulti = (sorters) => (a, b) => {
|
|
|
1407
1447
|
return sort();
|
|
1408
1448
|
};
|
|
1409
1449
|
|
|
1450
|
+
// packages/common/util/src/sum.ts
|
|
1451
|
+
var sum = (values) => values.reduce((a, b) => a + b, 0);
|
|
1452
|
+
|
|
1410
1453
|
// packages/common/util/src/throw-unhandled-error.ts
|
|
1411
1454
|
var throwUnhandledError = (error) => {
|
|
1412
1455
|
queueMicrotask(() => {
|
|
@@ -1696,9 +1739,6 @@ var safeParseInt = (value, defaultValue) => {
|
|
|
1696
1739
|
}
|
|
1697
1740
|
};
|
|
1698
1741
|
|
|
1699
|
-
// packages/common/util/src/sum.ts
|
|
1700
|
-
var sum = (values) => values.reduce((a, b) => a + b, 0);
|
|
1701
|
-
|
|
1702
1742
|
// packages/common/util/src/weak.ts
|
|
1703
1743
|
var WeakDictionary = class {
|
|
1704
1744
|
constructor(entries) {
|
|
@@ -1794,93 +1834,19 @@ var WeakDictionary = class {
|
|
|
1794
1834
|
}
|
|
1795
1835
|
};
|
|
1796
1836
|
|
|
1797
|
-
// packages/common/util/src/
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
S: this,
|
|
1809
|
-
A: [
|
|
1810
|
-
"options.precision >= 0",
|
|
1811
|
-
""
|
|
1812
|
-
]
|
|
1813
|
-
});
|
|
1814
|
-
this._precision = Math.pow(10, options.precision);
|
|
1815
|
-
}
|
|
1816
|
-
}
|
|
1817
|
-
record(value) {
|
|
1818
|
-
const evicted = this._buffer.push(value);
|
|
1819
|
-
this._sum += value - (evicted ?? 0);
|
|
1820
|
-
}
|
|
1821
|
-
average() {
|
|
1822
|
-
return this._buffer.elementCount === 0 ? 0 : this._withPrecision(this._sum / this._buffer.elementCount);
|
|
1823
|
-
}
|
|
1824
|
-
computeWindowSummary() {
|
|
1825
|
-
const mean = this.average();
|
|
1826
|
-
const sortedElements = [
|
|
1827
|
-
...this._buffer
|
|
1828
|
-
].sort();
|
|
1829
|
-
const median2 = this._withPrecision(sortedElements.length % 2 === 0 ? (sortedElements[sortedElements.length / 2] + sortedElements[sortedElements.length / 2 - 1]) / 2 : sortedElements[sortedElements.length / 2]);
|
|
1830
|
-
const p90 = this._withPrecision(sortedElements[Math.round(sortedElements.length * 0.9)]);
|
|
1831
|
-
const variance = sortedElements.reduce((acc, v) => acc + Math.pow(v - mean, 2)) / sortedElements.length;
|
|
1832
|
-
const stdDev = this._withPrecision(Math.sqrt(variance));
|
|
1833
|
-
const histogram = sortedElements.reduce((acc, v) => {
|
|
1834
|
-
acc[v] += 1;
|
|
1835
|
-
return acc;
|
|
1836
|
-
}, {});
|
|
1837
|
-
return {
|
|
1838
|
-
mean,
|
|
1839
|
-
median: median2,
|
|
1840
|
-
p90,
|
|
1841
|
-
stdDev,
|
|
1842
|
-
histogram
|
|
1843
|
-
};
|
|
1844
|
-
}
|
|
1845
|
-
_withPrecision(value) {
|
|
1846
|
-
if (this._precision == null) {
|
|
1847
|
-
return value;
|
|
1848
|
-
}
|
|
1849
|
-
return Math.round(value * this._precision) / this._precision;
|
|
1850
|
-
}
|
|
1851
|
-
};
|
|
1852
|
-
|
|
1853
|
-
// packages/common/util/src/callback-collection.ts
|
|
1854
|
-
var CallbackCollection = class {
|
|
1855
|
-
#callbacks = [];
|
|
1856
|
-
append(callback) {
|
|
1857
|
-
this.#callbacks.push(callback);
|
|
1858
|
-
}
|
|
1859
|
-
prepend(callback) {
|
|
1860
|
-
this.#callbacks.unshift(callback);
|
|
1861
|
-
}
|
|
1862
|
-
remove(callback) {
|
|
1863
|
-
this.#callbacks = this.#callbacks.filter((c) => c !== callback);
|
|
1864
|
-
}
|
|
1865
|
-
callParallel(...args) {
|
|
1866
|
-
return Promise.all(this.#callbacks.map((callback) => callback(...args)));
|
|
1867
|
-
}
|
|
1868
|
-
async callSerial(...args) {
|
|
1869
|
-
const results = [];
|
|
1870
|
-
for (const callback of this.#callbacks) {
|
|
1871
|
-
results.push(await callback(...args));
|
|
1872
|
-
}
|
|
1873
|
-
return results;
|
|
1874
|
-
}
|
|
1875
|
-
};
|
|
1876
|
-
|
|
1877
|
-
// packages/common/util/src/chunk-array.ts
|
|
1878
|
-
var chunkArray = (array, size) => {
|
|
1879
|
-
const result = [];
|
|
1880
|
-
for (let i = 0; i < array.length; i += size) {
|
|
1881
|
-
result.push(array.slice(i, i + size));
|
|
1837
|
+
// packages/common/util/src/array-to-hex.ts
|
|
1838
|
+
var byteToHex = [];
|
|
1839
|
+
for (let n = 0; n <= 255; ++n) {
|
|
1840
|
+
const hexOctet = n.toString(16).padStart(2, "0");
|
|
1841
|
+
byteToHex.push(hexOctet);
|
|
1842
|
+
}
|
|
1843
|
+
var arrayToHex = (buf) => {
|
|
1844
|
+
const buff = new Uint8Array(buf);
|
|
1845
|
+
const hexOctets = [];
|
|
1846
|
+
for (let i = 0; i < buff.length; ++i) {
|
|
1847
|
+
hexOctets.push(byteToHex[buff[i]]);
|
|
1882
1848
|
}
|
|
1883
|
-
return
|
|
1849
|
+
return hexOctets.join("");
|
|
1884
1850
|
};
|
|
1885
1851
|
export {
|
|
1886
1852
|
BitField,
|
|
@@ -1891,14 +1857,13 @@ export {
|
|
|
1891
1857
|
ComplexSet,
|
|
1892
1858
|
HumanHasher,
|
|
1893
1859
|
MapEntry,
|
|
1894
|
-
ParamKeyAnnotation,
|
|
1895
|
-
Params,
|
|
1896
1860
|
SlidingWindowSummary,
|
|
1897
1861
|
Tracer,
|
|
1898
1862
|
WeakDictionary,
|
|
1899
1863
|
accessBy,
|
|
1900
1864
|
arrayMove,
|
|
1901
1865
|
arrayToBuffer,
|
|
1866
|
+
arrayToHex,
|
|
1902
1867
|
arrayToString,
|
|
1903
1868
|
arraysEqual,
|
|
1904
1869
|
boolGuard,
|