@dxos/util 0.6.13 → 0.6.14-main.2b6a0f3

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.
Files changed (56) hide show
  1. package/dist/lib/browser/index.mjs +106 -145
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +97 -135
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +1939 -0
  8. package/dist/lib/node-esm/index.mjs.map +7 -0
  9. package/dist/lib/node-esm/meta.json +1 -0
  10. package/dist/types/src/array-to-hex.d.ts +2 -0
  11. package/dist/types/src/array-to-hex.d.ts.map +1 -0
  12. package/dist/types/src/complex.d.ts +8 -8
  13. package/dist/types/src/complex.d.ts.map +1 -1
  14. package/dist/types/src/index.d.ts +5 -3
  15. package/dist/types/src/index.d.ts.map +1 -1
  16. package/dist/types/src/platform.browser.test.d.ts +2 -0
  17. package/dist/types/src/platform.browser.test.d.ts.map +1 -0
  18. package/dist/types/src/platform.node.test.d.ts +2 -0
  19. package/dist/types/src/platform.node.test.d.ts.map +1 -0
  20. package/dist/types/src/random.d.ts +1 -1
  21. package/dist/types/src/random.d.ts.map +1 -1
  22. package/dist/types/src/weak.d.ts +4 -4
  23. package/dist/types/src/weak.d.ts.map +1 -1
  24. package/package.json +9 -9
  25. package/src/array-to-hex.ts +23 -0
  26. package/src/array.test.ts +1 -2
  27. package/src/bitfield.test.ts +1 -2
  28. package/src/callback.test.ts +1 -2
  29. package/src/complex.test.ts +1 -2
  30. package/src/complex.ts +8 -8
  31. package/src/defer.test.ts +1 -2
  32. package/src/human-hash.test.ts +1 -2
  33. package/src/index.ts +5 -3
  34. package/src/join-tables.test.ts +1 -2
  35. package/src/order.test.ts +1 -2
  36. package/src/platform.browser.test.ts +11 -0
  37. package/src/platform.node.test.ts +11 -0
  38. package/src/random.ts +1 -1
  39. package/src/reducers.test.ts +1 -2
  40. package/src/safe-instanceof.test.ts +1 -2
  41. package/src/sort.test.ts +1 -2
  42. package/src/tracer.test.ts +3 -3
  43. package/src/types.test.ts +1 -2
  44. package/src/uint8array.test.ts +1 -2
  45. package/src/weak.test.ts +4 -8
  46. package/src/weak.ts +4 -4
  47. package/dist/types/src/params.d.ts +0 -22
  48. package/dist/types/src/params.d.ts.map +0 -1
  49. package/dist/types/src/params.test.d.ts +0 -2
  50. package/dist/types/src/params.test.d.ts.map +0 -1
  51. package/dist/types/src/platform.test.d.ts +0 -2
  52. package/dist/types/src/platform.test.d.ts.map +0 -1
  53. package/src/params.test.ts +0 -38
  54. package/src/params.ts +0 -68
  55. package/src/platform.test.ts +0 -17
  56. 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";
@@ -444,10 +477,6 @@ var makeMap = (keyProjection) => class BoundComplexMap extends ComplexMap {
444
477
  }
445
478
  };
446
479
 
447
- // packages/common/util/src/explicit-resource-management-polyfill.ts
448
- Symbol.dispose ??= Symbol("Symbol.dispose");
449
- Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose");
450
-
451
480
  // packages/common/util/src/defer.ts
452
481
  var defer = (fn) => new DeferGuard(fn);
453
482
  var DeferGuard = class {
@@ -1135,55 +1164,6 @@ var inferRecordOrder = (objectMap, order = []) => {
1135
1164
  }, {}), objectMap);
1136
1165
  };
1137
1166
 
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
1167
  // packages/common/util/src/pick.ts
1188
1168
  var pick = (object, keys) => keys.reduce((obj, key) => {
1189
1169
  if (object && key in object) {
@@ -1243,7 +1223,7 @@ var getHostPlatform = () => {
1243
1223
  };
1244
1224
 
1245
1225
  // packages/common/util/src/random.ts
1246
- var randomInt = (max, min) => {
1226
+ var randomInt = (max, min = 0) => {
1247
1227
  min = Math.ceil(min);
1248
1228
  max = Math.floor(max);
1249
1229
  return Math.floor(Math.random() * (max - min + 1)) + min;
@@ -1385,6 +1365,62 @@ var safeParseJson = (data, defaultValue) => {
1385
1365
  return defaultValue;
1386
1366
  };
1387
1367
 
1368
+ // packages/common/util/src/sliding-window-summary.ts
1369
+ import { invariant as invariant5 } from "@dxos/invariant";
1370
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
1371
+ var SlidingWindowSummary = class {
1372
+ constructor(options) {
1373
+ this._sum = 0;
1374
+ this._buffer = new CircularBuffer(options.dataPoints);
1375
+ if (options.precision != null) {
1376
+ invariant5(options.precision >= 0, void 0, {
1377
+ F: __dxlog_file5,
1378
+ L: 26,
1379
+ S: this,
1380
+ A: [
1381
+ "options.precision >= 0",
1382
+ ""
1383
+ ]
1384
+ });
1385
+ this._precision = Math.pow(10, options.precision);
1386
+ }
1387
+ }
1388
+ record(value) {
1389
+ const evicted = this._buffer.push(value);
1390
+ this._sum += value - (evicted ?? 0);
1391
+ }
1392
+ average() {
1393
+ return this._buffer.elementCount === 0 ? 0 : this._withPrecision(this._sum / this._buffer.elementCount);
1394
+ }
1395
+ computeWindowSummary() {
1396
+ const mean = this.average();
1397
+ const sortedElements = [
1398
+ ...this._buffer
1399
+ ].sort();
1400
+ const median2 = this._withPrecision(sortedElements.length % 2 === 0 ? (sortedElements[sortedElements.length / 2] + sortedElements[sortedElements.length / 2 - 1]) / 2 : sortedElements[sortedElements.length / 2]);
1401
+ const p90 = this._withPrecision(sortedElements[Math.round(sortedElements.length * 0.9)]);
1402
+ const variance = sortedElements.reduce((acc, v) => acc + Math.pow(v - mean, 2)) / sortedElements.length;
1403
+ const stdDev = this._withPrecision(Math.sqrt(variance));
1404
+ const histogram = sortedElements.reduce((acc, v) => {
1405
+ acc[v] += 1;
1406
+ return acc;
1407
+ }, {});
1408
+ return {
1409
+ mean,
1410
+ median: median2,
1411
+ p90,
1412
+ stdDev,
1413
+ histogram
1414
+ };
1415
+ }
1416
+ _withPrecision(value) {
1417
+ if (this._precision == null) {
1418
+ return value;
1419
+ }
1420
+ return Math.round(value * this._precision) / this._precision;
1421
+ }
1422
+ };
1423
+
1388
1424
  // packages/common/util/src/sort.ts
1389
1425
  var compareScalar = (inc = true) => (a, b) => (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);
1390
1426
  var compareString = (inc = true, caseInsensitive = true) => (a, b) => {
@@ -1407,6 +1443,9 @@ var compareMulti = (sorters) => (a, b) => {
1407
1443
  return sort();
1408
1444
  };
1409
1445
 
1446
+ // packages/common/util/src/sum.ts
1447
+ var sum = (values) => values.reduce((a, b) => a + b, 0);
1448
+
1410
1449
  // packages/common/util/src/throw-unhandled-error.ts
1411
1450
  var throwUnhandledError = (error) => {
1412
1451
  queueMicrotask(() => {
@@ -1696,9 +1735,6 @@ var safeParseInt = (value, defaultValue) => {
1696
1735
  }
1697
1736
  };
1698
1737
 
1699
- // packages/common/util/src/sum.ts
1700
- var sum = (values) => values.reduce((a, b) => a + b, 0);
1701
-
1702
1738
  // packages/common/util/src/weak.ts
1703
1739
  var WeakDictionary = class {
1704
1740
  constructor(entries) {
@@ -1794,93 +1830,19 @@ var WeakDictionary = class {
1794
1830
  }
1795
1831
  };
1796
1832
 
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));
1833
+ // packages/common/util/src/array-to-hex.ts
1834
+ var byteToHex = [];
1835
+ for (let n = 0; n <= 255; ++n) {
1836
+ const hexOctet = n.toString(16).padStart(2, "0");
1837
+ byteToHex.push(hexOctet);
1838
+ }
1839
+ var arrayToHex = (buf) => {
1840
+ const buff = new Uint8Array(buf);
1841
+ const hexOctets = [];
1842
+ for (let i = 0; i < buff.length; ++i) {
1843
+ hexOctets.push(byteToHex[buff[i]]);
1882
1844
  }
1883
- return result;
1845
+ return hexOctets.join("");
1884
1846
  };
1885
1847
  export {
1886
1848
  BitField,
@@ -1891,14 +1853,13 @@ export {
1891
1853
  ComplexSet,
1892
1854
  HumanHasher,
1893
1855
  MapEntry,
1894
- ParamKeyAnnotation,
1895
- Params,
1896
1856
  SlidingWindowSummary,
1897
1857
  Tracer,
1898
1858
  WeakDictionary,
1899
1859
  accessBy,
1900
1860
  arrayMove,
1901
1861
  arrayToBuffer,
1862
+ arrayToHex,
1902
1863
  arrayToString,
1903
1864
  arraysEqual,
1904
1865
  boolGuard,