@dxos/util 0.6.13 → 0.6.14-main.69511f5
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 +141 -148
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +132 -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 +1978 -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/case.d.ts +3 -0
- package/dist/types/src/case.d.ts.map +1 -0
- package/dist/types/src/case.test.d.ts +2 -0
- package/dist/types/src/case.test.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 +6 -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 +9 -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/case.test.ts +14 -0
- package/src/case.ts +45 -0
- 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 +6 -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
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import "@dxos/node-std/globals";
|
|
2
2
|
|
|
3
|
-
// inject-globals:@inject-globals
|
|
4
|
-
import {
|
|
5
|
-
global,
|
|
6
|
-
Buffer,
|
|
7
|
-
process
|
|
8
|
-
} from "@dxos/node-std/inject-globals";
|
|
9
|
-
|
|
10
3
|
// packages/common/util/src/array.ts
|
|
11
4
|
var diff = (previous, next, comparator) => {
|
|
12
5
|
const remaining = [
|
|
@@ -199,6 +192,72 @@ var createSetDispatch = ({ handlers }) => {
|
|
|
199
192
|
});
|
|
200
193
|
};
|
|
201
194
|
|
|
195
|
+
// packages/common/util/src/callback-collection.ts
|
|
196
|
+
var CallbackCollection = class {
|
|
197
|
+
#callbacks = [];
|
|
198
|
+
append(callback) {
|
|
199
|
+
this.#callbacks.push(callback);
|
|
200
|
+
}
|
|
201
|
+
prepend(callback) {
|
|
202
|
+
this.#callbacks.unshift(callback);
|
|
203
|
+
}
|
|
204
|
+
remove(callback) {
|
|
205
|
+
this.#callbacks = this.#callbacks.filter((c) => c !== callback);
|
|
206
|
+
}
|
|
207
|
+
callParallel(...args) {
|
|
208
|
+
return Promise.all(this.#callbacks.map((callback) => callback(...args)));
|
|
209
|
+
}
|
|
210
|
+
async callSerial(...args) {
|
|
211
|
+
const results = [];
|
|
212
|
+
for (const callback of this.#callbacks) {
|
|
213
|
+
results.push(await callback(...args));
|
|
214
|
+
}
|
|
215
|
+
return results;
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
// packages/common/util/src/case.ts
|
|
220
|
+
var LOW_DASH = "_".codePointAt(0);
|
|
221
|
+
var HI_DASH = "-".codePointAt(0);
|
|
222
|
+
var SMALL_A = "a".codePointAt(0);
|
|
223
|
+
var CAPITAL_A = "A".codePointAt(0);
|
|
224
|
+
var SMALL_Z = "z".codePointAt(0);
|
|
225
|
+
var CAPITAL_Z = "Z".codePointAt(0);
|
|
226
|
+
var isLower = (char) => char >= SMALL_A && char <= SMALL_Z;
|
|
227
|
+
var isUpper = (char) => char >= CAPITAL_A && char <= CAPITAL_Z;
|
|
228
|
+
var toLower = (char) => char + 32;
|
|
229
|
+
var changeCase = (str, delim) => {
|
|
230
|
+
const firstChar = str.charCodeAt(0);
|
|
231
|
+
if (!isLower(firstChar)) {
|
|
232
|
+
return str;
|
|
233
|
+
}
|
|
234
|
+
const length = str.length;
|
|
235
|
+
let changed = false;
|
|
236
|
+
const out = [];
|
|
237
|
+
for (let i = 0; i < length; ++i) {
|
|
238
|
+
const c = str.charCodeAt(i);
|
|
239
|
+
if (isUpper(c)) {
|
|
240
|
+
out.push(delim);
|
|
241
|
+
out.push(toLower(c));
|
|
242
|
+
changed = true;
|
|
243
|
+
} else {
|
|
244
|
+
out.push(c);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return changed ? String.fromCharCode.apply(void 0, out) : str;
|
|
248
|
+
};
|
|
249
|
+
var decamelize = (str) => changeCase(str, LOW_DASH);
|
|
250
|
+
var hyphenize = (str) => changeCase(str, HI_DASH);
|
|
251
|
+
|
|
252
|
+
// packages/common/util/src/chunk-array.ts
|
|
253
|
+
var chunkArray = (array, size) => {
|
|
254
|
+
const result = [];
|
|
255
|
+
for (let i = 0; i < array.length; i += size) {
|
|
256
|
+
result.push(array.slice(i, i + size));
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
};
|
|
260
|
+
|
|
202
261
|
// packages/common/util/src/circular-buffer.ts
|
|
203
262
|
import { invariant as invariant4 } from "@dxos/invariant";
|
|
204
263
|
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/common/util/src/circular-buffer.ts";
|
|
@@ -1135,55 +1194,6 @@ var inferRecordOrder = (objectMap, order = []) => {
|
|
|
1135
1194
|
}, {}), objectMap);
|
|
1136
1195
|
};
|
|
1137
1196
|
|
|
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
1197
|
// packages/common/util/src/pick.ts
|
|
1188
1198
|
var pick = (object, keys) => keys.reduce((obj, key) => {
|
|
1189
1199
|
if (object && key in object) {
|
|
@@ -1243,7 +1253,7 @@ var getHostPlatform = () => {
|
|
|
1243
1253
|
};
|
|
1244
1254
|
|
|
1245
1255
|
// packages/common/util/src/random.ts
|
|
1246
|
-
var randomInt = (max, min) => {
|
|
1256
|
+
var randomInt = (max, min = 0) => {
|
|
1247
1257
|
min = Math.ceil(min);
|
|
1248
1258
|
max = Math.floor(max);
|
|
1249
1259
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
@@ -1385,6 +1395,62 @@ var safeParseJson = (data, defaultValue) => {
|
|
|
1385
1395
|
return defaultValue;
|
|
1386
1396
|
};
|
|
1387
1397
|
|
|
1398
|
+
// packages/common/util/src/sliding-window-summary.ts
|
|
1399
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1400
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
|
|
1401
|
+
var SlidingWindowSummary = class {
|
|
1402
|
+
constructor(options) {
|
|
1403
|
+
this._sum = 0;
|
|
1404
|
+
this._buffer = new CircularBuffer(options.dataPoints);
|
|
1405
|
+
if (options.precision != null) {
|
|
1406
|
+
invariant5(options.precision >= 0, void 0, {
|
|
1407
|
+
F: __dxlog_file5,
|
|
1408
|
+
L: 26,
|
|
1409
|
+
S: this,
|
|
1410
|
+
A: [
|
|
1411
|
+
"options.precision >= 0",
|
|
1412
|
+
""
|
|
1413
|
+
]
|
|
1414
|
+
});
|
|
1415
|
+
this._precision = Math.pow(10, options.precision);
|
|
1416
|
+
}
|
|
1417
|
+
}
|
|
1418
|
+
record(value) {
|
|
1419
|
+
const evicted = this._buffer.push(value);
|
|
1420
|
+
this._sum += value - (evicted ?? 0);
|
|
1421
|
+
}
|
|
1422
|
+
average() {
|
|
1423
|
+
return this._buffer.elementCount === 0 ? 0 : this._withPrecision(this._sum / this._buffer.elementCount);
|
|
1424
|
+
}
|
|
1425
|
+
computeWindowSummary() {
|
|
1426
|
+
const mean = this.average();
|
|
1427
|
+
const sortedElements = [
|
|
1428
|
+
...this._buffer
|
|
1429
|
+
].sort();
|
|
1430
|
+
const median2 = this._withPrecision(sortedElements.length % 2 === 0 ? (sortedElements[sortedElements.length / 2] + sortedElements[sortedElements.length / 2 - 1]) / 2 : sortedElements[sortedElements.length / 2]);
|
|
1431
|
+
const p90 = this._withPrecision(sortedElements[Math.round(sortedElements.length * 0.9)]);
|
|
1432
|
+
const variance = sortedElements.reduce((acc, v) => acc + Math.pow(v - mean, 2)) / sortedElements.length;
|
|
1433
|
+
const stdDev = this._withPrecision(Math.sqrt(variance));
|
|
1434
|
+
const histogram = sortedElements.reduce((acc, v) => {
|
|
1435
|
+
acc[v] += 1;
|
|
1436
|
+
return acc;
|
|
1437
|
+
}, {});
|
|
1438
|
+
return {
|
|
1439
|
+
mean,
|
|
1440
|
+
median: median2,
|
|
1441
|
+
p90,
|
|
1442
|
+
stdDev,
|
|
1443
|
+
histogram
|
|
1444
|
+
};
|
|
1445
|
+
}
|
|
1446
|
+
_withPrecision(value) {
|
|
1447
|
+
if (this._precision == null) {
|
|
1448
|
+
return value;
|
|
1449
|
+
}
|
|
1450
|
+
return Math.round(value * this._precision) / this._precision;
|
|
1451
|
+
}
|
|
1452
|
+
};
|
|
1453
|
+
|
|
1388
1454
|
// packages/common/util/src/sort.ts
|
|
1389
1455
|
var compareScalar = (inc = true) => (a, b) => (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);
|
|
1390
1456
|
var compareString = (inc = true, caseInsensitive = true) => (a, b) => {
|
|
@@ -1407,6 +1473,9 @@ var compareMulti = (sorters) => (a, b) => {
|
|
|
1407
1473
|
return sort();
|
|
1408
1474
|
};
|
|
1409
1475
|
|
|
1476
|
+
// packages/common/util/src/sum.ts
|
|
1477
|
+
var sum = (values) => values.reduce((a, b) => a + b, 0);
|
|
1478
|
+
|
|
1410
1479
|
// packages/common/util/src/throw-unhandled-error.ts
|
|
1411
1480
|
var throwUnhandledError = (error) => {
|
|
1412
1481
|
queueMicrotask(() => {
|
|
@@ -1696,9 +1765,6 @@ var safeParseInt = (value, defaultValue) => {
|
|
|
1696
1765
|
}
|
|
1697
1766
|
};
|
|
1698
1767
|
|
|
1699
|
-
// packages/common/util/src/sum.ts
|
|
1700
|
-
var sum = (values) => values.reduce((a, b) => a + b, 0);
|
|
1701
|
-
|
|
1702
1768
|
// packages/common/util/src/weak.ts
|
|
1703
1769
|
var WeakDictionary = class {
|
|
1704
1770
|
constructor(entries) {
|
|
@@ -1794,93 +1860,19 @@ var WeakDictionary = class {
|
|
|
1794
1860
|
}
|
|
1795
1861
|
};
|
|
1796
1862
|
|
|
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));
|
|
1863
|
+
// packages/common/util/src/array-to-hex.ts
|
|
1864
|
+
var byteToHex = [];
|
|
1865
|
+
for (let n = 0; n <= 255; ++n) {
|
|
1866
|
+
const hexOctet = n.toString(16).padStart(2, "0");
|
|
1867
|
+
byteToHex.push(hexOctet);
|
|
1868
|
+
}
|
|
1869
|
+
var arrayToHex = (buf) => {
|
|
1870
|
+
const buff = new Uint8Array(buf);
|
|
1871
|
+
const hexOctets = [];
|
|
1872
|
+
for (let i = 0; i < buff.length; ++i) {
|
|
1873
|
+
hexOctets.push(byteToHex[buff[i]]);
|
|
1882
1874
|
}
|
|
1883
|
-
return
|
|
1875
|
+
return hexOctets.join("");
|
|
1884
1876
|
};
|
|
1885
1877
|
export {
|
|
1886
1878
|
BitField,
|
|
@@ -1891,14 +1883,13 @@ export {
|
|
|
1891
1883
|
ComplexSet,
|
|
1892
1884
|
HumanHasher,
|
|
1893
1885
|
MapEntry,
|
|
1894
|
-
ParamKeyAnnotation,
|
|
1895
|
-
Params,
|
|
1896
1886
|
SlidingWindowSummary,
|
|
1897
1887
|
Tracer,
|
|
1898
1888
|
WeakDictionary,
|
|
1899
1889
|
accessBy,
|
|
1900
1890
|
arrayMove,
|
|
1901
1891
|
arrayToBuffer,
|
|
1892
|
+
arrayToHex,
|
|
1902
1893
|
arrayToString,
|
|
1903
1894
|
arraysEqual,
|
|
1904
1895
|
boolGuard,
|
|
@@ -1912,6 +1903,7 @@ export {
|
|
|
1912
1903
|
createBucketReducer,
|
|
1913
1904
|
createGroupReducer,
|
|
1914
1905
|
createSetDispatch,
|
|
1906
|
+
decamelize,
|
|
1915
1907
|
deepMapValues,
|
|
1916
1908
|
deepMapValuesAsync,
|
|
1917
1909
|
defaultMap,
|
|
@@ -1935,6 +1927,7 @@ export {
|
|
|
1935
1927
|
hexToFallback,
|
|
1936
1928
|
hexToHue,
|
|
1937
1929
|
humanize,
|
|
1930
|
+
hyphenize,
|
|
1938
1931
|
idEmoji,
|
|
1939
1932
|
idHue,
|
|
1940
1933
|
inferObjectOrder,
|