@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.
Files changed (62) hide show
  1. package/dist/lib/browser/index.mjs +141 -148
  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 +132 -133
  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 +1978 -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/case.d.ts +3 -0
  13. package/dist/types/src/case.d.ts.map +1 -0
  14. package/dist/types/src/case.test.d.ts +2 -0
  15. package/dist/types/src/case.test.d.ts.map +1 -0
  16. package/dist/types/src/complex.d.ts +8 -8
  17. package/dist/types/src/complex.d.ts.map +1 -1
  18. package/dist/types/src/index.d.ts +6 -3
  19. package/dist/types/src/index.d.ts.map +1 -1
  20. package/dist/types/src/platform.browser.test.d.ts +2 -0
  21. package/dist/types/src/platform.browser.test.d.ts.map +1 -0
  22. package/dist/types/src/platform.node.test.d.ts +2 -0
  23. package/dist/types/src/platform.node.test.d.ts.map +1 -0
  24. package/dist/types/src/random.d.ts +1 -1
  25. package/dist/types/src/random.d.ts.map +1 -1
  26. package/dist/types/src/weak.d.ts +4 -4
  27. package/dist/types/src/weak.d.ts.map +1 -1
  28. package/package.json +9 -9
  29. package/src/array-to-hex.ts +23 -0
  30. package/src/array.test.ts +1 -2
  31. package/src/bitfield.test.ts +1 -2
  32. package/src/callback.test.ts +1 -2
  33. package/src/case.test.ts +14 -0
  34. package/src/case.ts +45 -0
  35. package/src/complex.test.ts +1 -2
  36. package/src/complex.ts +8 -8
  37. package/src/defer.test.ts +1 -2
  38. package/src/human-hash.test.ts +1 -2
  39. package/src/index.ts +6 -3
  40. package/src/join-tables.test.ts +1 -2
  41. package/src/order.test.ts +1 -2
  42. package/src/platform.browser.test.ts +11 -0
  43. package/src/platform.node.test.ts +11 -0
  44. package/src/random.ts +1 -1
  45. package/src/reducers.test.ts +1 -2
  46. package/src/safe-instanceof.test.ts +1 -2
  47. package/src/sort.test.ts +1 -2
  48. package/src/tracer.test.ts +3 -3
  49. package/src/types.test.ts +1 -2
  50. package/src/uint8array.test.ts +1 -2
  51. package/src/weak.test.ts +4 -8
  52. package/src/weak.ts +4 -4
  53. package/dist/types/src/params.d.ts +0 -22
  54. package/dist/types/src/params.d.ts.map +0 -1
  55. package/dist/types/src/params.test.d.ts +0 -2
  56. package/dist/types/src/params.test.d.ts.map +0 -1
  57. package/dist/types/src/platform.test.d.ts +0 -2
  58. package/dist/types/src/platform.test.d.ts.map +0 -1
  59. package/src/params.test.ts +0 -38
  60. package/src/params.ts +0 -68
  61. package/src/platform.test.ts +0 -17
  62. 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/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));
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 result;
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,