@dxos/util 0.6.12-staging.e11e696 → 0.6.12
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 +143 -92
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +134 -83
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- 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 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/params.d.ts +22 -0
- package/dist/types/src/params.d.ts.map +1 -0
- package/dist/types/src/params.test.d.ts +2 -0
- package/dist/types/src/params.test.d.ts.map +1 -0
- package/dist/types/src/platform.test.d.ts +2 -0
- package/dist/types/src/platform.test.d.ts.map +1 -0
- package/dist/types/src/weak.d.ts +4 -4
- package/dist/types/src/weak.d.ts.map +1 -1
- package/package.json +9 -8
- package/src/array.test.ts +2 -1
- package/src/bitfield.test.ts +2 -1
- package/src/callback.test.ts +2 -1
- package/src/complex.test.ts +2 -1
- package/src/complex.ts +8 -8
- package/src/defer.test.ts +2 -1
- package/src/human-hash.test.ts +2 -1
- package/src/index.ts +5 -4
- package/src/join-tables.test.ts +2 -1
- package/src/order.test.ts +2 -1
- package/src/params.test.ts +38 -0
- package/src/params.ts +68 -0
- package/src/platform.test.ts +17 -0
- package/src/reducers.test.ts +2 -1
- package/src/safe-instanceof.test.ts +2 -1
- package/src/sort.test.ts +2 -1
- package/src/tracer.test.ts +2 -1
- package/src/types.test.ts +2 -1
- package/src/typings.d.ts +5 -0
- package/src/uint8array.test.ts +2 -1
- package/src/weak.test.ts +8 -4
- package/src/weak.ts +4 -4
- package/dist/lib/node-esm/index.mjs +0 -1927
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/types/src/platform.browser.test.d.ts +0 -2
- package/dist/types/src/platform.browser.test.d.ts.map +0 -1
- package/dist/types/src/platform.node.test.d.ts +0 -2
- package/dist/types/src/platform.node.test.d.ts.map +0 -1
- package/src/platform.browser.test.ts +0 -11
- package/src/platform.node.test.ts +0 -11
|
@@ -199,39 +199,6 @@ 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
|
-
|
|
235
202
|
// packages/common/util/src/circular-buffer.ts
|
|
236
203
|
import { invariant as invariant4 } from "@dxos/invariant";
|
|
237
204
|
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/common/util/src/circular-buffer.ts";
|
|
@@ -1168,6 +1135,55 @@ var inferRecordOrder = (objectMap, order = []) => {
|
|
|
1168
1135
|
}, {}), objectMap);
|
|
1169
1136
|
};
|
|
1170
1137
|
|
|
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
|
+
|
|
1171
1187
|
// packages/common/util/src/pick.ts
|
|
1172
1188
|
var pick = (object, keys) => keys.reduce((obj, key) => {
|
|
1173
1189
|
if (object && key in object) {
|
|
@@ -1369,62 +1385,6 @@ var safeParseJson = (data, defaultValue) => {
|
|
|
1369
1385
|
return defaultValue;
|
|
1370
1386
|
};
|
|
1371
1387
|
|
|
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
|
-
|
|
1428
1388
|
// packages/common/util/src/sort.ts
|
|
1429
1389
|
var compareScalar = (inc = true) => (a, b) => (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);
|
|
1430
1390
|
var compareString = (inc = true, caseInsensitive = true) => (a, b) => {
|
|
@@ -1447,9 +1407,6 @@ var compareMulti = (sorters) => (a, b) => {
|
|
|
1447
1407
|
return sort();
|
|
1448
1408
|
};
|
|
1449
1409
|
|
|
1450
|
-
// packages/common/util/src/sum.ts
|
|
1451
|
-
var sum = (values) => values.reduce((a, b) => a + b, 0);
|
|
1452
|
-
|
|
1453
1410
|
// packages/common/util/src/throw-unhandled-error.ts
|
|
1454
1411
|
var throwUnhandledError = (error) => {
|
|
1455
1412
|
queueMicrotask(() => {
|
|
@@ -1739,6 +1696,9 @@ var safeParseInt = (value, defaultValue) => {
|
|
|
1739
1696
|
}
|
|
1740
1697
|
};
|
|
1741
1698
|
|
|
1699
|
+
// packages/common/util/src/sum.ts
|
|
1700
|
+
var sum = (values) => values.reduce((a, b) => a + b, 0);
|
|
1701
|
+
|
|
1742
1702
|
// packages/common/util/src/weak.ts
|
|
1743
1703
|
var WeakDictionary = class {
|
|
1744
1704
|
constructor(entries) {
|
|
@@ -1833,6 +1793,95 @@ var WeakDictionary = class {
|
|
|
1833
1793
|
this._finalization.unregister(value);
|
|
1834
1794
|
}
|
|
1835
1795
|
};
|
|
1796
|
+
|
|
1797
|
+
// packages/common/util/src/sliding-window-summary.ts
|
|
1798
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1799
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
|
|
1800
|
+
var SlidingWindowSummary = class {
|
|
1801
|
+
constructor(options) {
|
|
1802
|
+
this._sum = 0;
|
|
1803
|
+
this._buffer = new CircularBuffer(options.dataPoints);
|
|
1804
|
+
if (options.precision != null) {
|
|
1805
|
+
invariant5(options.precision >= 0, void 0, {
|
|
1806
|
+
F: __dxlog_file5,
|
|
1807
|
+
L: 26,
|
|
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));
|
|
1882
|
+
}
|
|
1883
|
+
return result;
|
|
1884
|
+
};
|
|
1836
1885
|
export {
|
|
1837
1886
|
BitField,
|
|
1838
1887
|
Callback,
|
|
@@ -1842,6 +1891,8 @@ export {
|
|
|
1842
1891
|
ComplexSet,
|
|
1843
1892
|
HumanHasher,
|
|
1844
1893
|
MapEntry,
|
|
1894
|
+
ParamKeyAnnotation,
|
|
1895
|
+
Params,
|
|
1845
1896
|
SlidingWindowSummary,
|
|
1846
1897
|
Tracer,
|
|
1847
1898
|
WeakDictionary,
|