@dxos/util 0.6.13 → 0.6.14-main.1366248

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 (68) hide show
  1. package/dist/lib/browser/index.mjs +163 -150
  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 +156 -138
  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 +1998 -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 +7 -3
  19. package/dist/types/src/index.d.ts.map +1 -1
  20. package/dist/types/src/map-values.d.ts +2 -2
  21. package/dist/types/src/map-values.d.ts.map +1 -1
  22. package/dist/types/src/platform.browser.test.d.ts +2 -0
  23. package/dist/types/src/platform.browser.test.d.ts.map +1 -0
  24. package/dist/types/src/platform.node.test.d.ts +2 -0
  25. package/dist/types/src/platform.node.test.d.ts.map +1 -0
  26. package/dist/types/src/random.d.ts +1 -1
  27. package/dist/types/src/random.d.ts.map +1 -1
  28. package/dist/types/src/remove-undefined-keys.d.ts +2 -0
  29. package/dist/types/src/remove-undefined-keys.d.ts.map +1 -0
  30. package/dist/types/src/weak.d.ts +4 -4
  31. package/dist/types/src/weak.d.ts.map +1 -1
  32. package/package.json +9 -9
  33. package/src/array-to-hex.ts +23 -0
  34. package/src/array.test.ts +1 -2
  35. package/src/bitfield.test.ts +1 -2
  36. package/src/callback.test.ts +1 -2
  37. package/src/case.test.ts +14 -0
  38. package/src/case.ts +45 -0
  39. package/src/complex.test.ts +1 -2
  40. package/src/complex.ts +8 -8
  41. package/src/defer.test.ts +1 -2
  42. package/src/human-hash.test.ts +1 -2
  43. package/src/index.ts +7 -3
  44. package/src/join-tables.test.ts +1 -2
  45. package/src/map-values.ts +29 -10
  46. package/src/order.test.ts +1 -2
  47. package/src/platform.browser.test.ts +11 -0
  48. package/src/platform.node.test.ts +11 -0
  49. package/src/random.ts +1 -1
  50. package/src/reducers.test.ts +1 -2
  51. package/src/remove-undefined-keys.ts +13 -0
  52. package/src/safe-instanceof.test.ts +1 -2
  53. package/src/sort.test.ts +1 -2
  54. package/src/tracer.test.ts +3 -3
  55. package/src/types.test.ts +1 -2
  56. package/src/uint8array.test.ts +1 -2
  57. package/src/weak.test.ts +4 -8
  58. package/src/weak.ts +4 -4
  59. package/dist/types/src/params.d.ts +0 -22
  60. package/dist/types/src/params.d.ts.map +0 -1
  61. package/dist/types/src/params.test.d.ts +0 -2
  62. package/dist/types/src/params.test.d.ts.map +0 -1
  63. package/dist/types/src/platform.test.d.ts +0 -2
  64. package/dist/types/src/platform.test.d.ts.map +0 -1
  65. package/src/params.test.ts +0 -38
  66. package/src/params.ts +0 -68
  67. package/src/platform.test.ts +0 -17
  68. 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";
@@ -1048,14 +1107,14 @@ var DeepMapper = class {
1048
1107
  const res = new Array(value.length);
1049
1108
  this._cyclic.set(value, res);
1050
1109
  for (let i = 0; i < value.length; i++) {
1051
- res[i] = this.map(value[i]);
1110
+ res[i] = this._map(value[i], i);
1052
1111
  }
1053
1112
  return res;
1054
1113
  } else if (value !== null && typeof value === "object") {
1055
1114
  const res = {};
1056
1115
  this._cyclic.set(value, res);
1057
1116
  for (const key in value) {
1058
- res[key] = this.map(value[key]);
1117
+ res[key] = this._map(value[key], key);
1059
1118
  }
1060
1119
  return res;
1061
1120
  } else {
@@ -1064,10 +1123,13 @@ var DeepMapper = class {
1064
1123
  };
1065
1124
  }
1066
1125
  map(value) {
1126
+ return this._map(value, void 0);
1127
+ }
1128
+ _map(value, key) {
1067
1129
  if (this._cyclic.has(value)) {
1068
1130
  return this._cyclic.get(value);
1069
1131
  }
1070
- return this._fn(value, this._recurse);
1132
+ return this._fn(value, this._recurse, key);
1071
1133
  }
1072
1134
  };
1073
1135
  var deepMapValuesAsync = (value, fn) => {
@@ -1085,14 +1147,14 @@ var DeepMapperAsync = class {
1085
1147
  const res = new Array(value.length);
1086
1148
  this._cyclic.set(value, res);
1087
1149
  for (let i = 0; i < value.length; i++) {
1088
- res[i] = await this.map(value[i]);
1150
+ res[i] = await this._map(value[i], i);
1089
1151
  }
1090
1152
  return res;
1091
1153
  } else if (value !== null && typeof value === "object") {
1092
1154
  const res = {};
1093
1155
  this._cyclic.set(value, res);
1094
1156
  for (const key in value) {
1095
- res[key] = await this.map(value[key]);
1157
+ res[key] = await this._map(value[key], key);
1096
1158
  }
1097
1159
  return res;
1098
1160
  } else {
@@ -1101,10 +1163,13 @@ var DeepMapperAsync = class {
1101
1163
  };
1102
1164
  }
1103
1165
  map(value) {
1166
+ return this._map(value, void 0);
1167
+ }
1168
+ _map(value, key) {
1104
1169
  if (this._cyclic.has(value)) {
1105
1170
  return this._cyclic.get(value);
1106
1171
  }
1107
- return this._fn(value, this._recurse);
1172
+ return this._fn(value, this._recurse, key);
1108
1173
  }
1109
1174
  };
1110
1175
 
@@ -1135,55 +1200,6 @@ var inferRecordOrder = (objectMap, order = []) => {
1135
1200
  }, {}), objectMap);
1136
1201
  };
1137
1202
 
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
1203
  // packages/common/util/src/pick.ts
1188
1204
  var pick = (object, keys) => keys.reduce((obj, key) => {
1189
1205
  if (object && key in object) {
@@ -1243,7 +1259,7 @@ var getHostPlatform = () => {
1243
1259
  };
1244
1260
 
1245
1261
  // packages/common/util/src/random.ts
1246
- var randomInt = (max, min) => {
1262
+ var randomInt = (max, min = 0) => {
1247
1263
  min = Math.ceil(min);
1248
1264
  max = Math.floor(max);
1249
1265
  return Math.floor(Math.random() * (max - min + 1)) + min;
@@ -1385,6 +1401,62 @@ var safeParseJson = (data, defaultValue) => {
1385
1401
  return defaultValue;
1386
1402
  };
1387
1403
 
1404
+ // packages/common/util/src/sliding-window-summary.ts
1405
+ import { invariant as invariant5 } from "@dxos/invariant";
1406
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
1407
+ var SlidingWindowSummary = class {
1408
+ constructor(options) {
1409
+ this._sum = 0;
1410
+ this._buffer = new CircularBuffer(options.dataPoints);
1411
+ if (options.precision != null) {
1412
+ invariant5(options.precision >= 0, void 0, {
1413
+ F: __dxlog_file5,
1414
+ L: 26,
1415
+ S: this,
1416
+ A: [
1417
+ "options.precision >= 0",
1418
+ ""
1419
+ ]
1420
+ });
1421
+ this._precision = Math.pow(10, options.precision);
1422
+ }
1423
+ }
1424
+ record(value) {
1425
+ const evicted = this._buffer.push(value);
1426
+ this._sum += value - (evicted ?? 0);
1427
+ }
1428
+ average() {
1429
+ return this._buffer.elementCount === 0 ? 0 : this._withPrecision(this._sum / this._buffer.elementCount);
1430
+ }
1431
+ computeWindowSummary() {
1432
+ const mean = this.average();
1433
+ const sortedElements = [
1434
+ ...this._buffer
1435
+ ].sort();
1436
+ const median2 = this._withPrecision(sortedElements.length % 2 === 0 ? (sortedElements[sortedElements.length / 2] + sortedElements[sortedElements.length / 2 - 1]) / 2 : sortedElements[sortedElements.length / 2]);
1437
+ const p90 = this._withPrecision(sortedElements[Math.round(sortedElements.length * 0.9)]);
1438
+ const variance = sortedElements.reduce((acc, v) => acc + Math.pow(v - mean, 2)) / sortedElements.length;
1439
+ const stdDev = this._withPrecision(Math.sqrt(variance));
1440
+ const histogram = sortedElements.reduce((acc, v) => {
1441
+ acc[v] += 1;
1442
+ return acc;
1443
+ }, {});
1444
+ return {
1445
+ mean,
1446
+ median: median2,
1447
+ p90,
1448
+ stdDev,
1449
+ histogram
1450
+ };
1451
+ }
1452
+ _withPrecision(value) {
1453
+ if (this._precision == null) {
1454
+ return value;
1455
+ }
1456
+ return Math.round(value * this._precision) / this._precision;
1457
+ }
1458
+ };
1459
+
1388
1460
  // packages/common/util/src/sort.ts
1389
1461
  var compareScalar = (inc = true) => (a, b) => (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);
1390
1462
  var compareString = (inc = true, caseInsensitive = true) => (a, b) => {
@@ -1407,6 +1479,9 @@ var compareMulti = (sorters) => (a, b) => {
1407
1479
  return sort();
1408
1480
  };
1409
1481
 
1482
+ // packages/common/util/src/sum.ts
1483
+ var sum = (values) => values.reduce((a, b) => a + b, 0);
1484
+
1410
1485
  // packages/common/util/src/throw-unhandled-error.ts
1411
1486
  var throwUnhandledError = (error) => {
1412
1487
  queueMicrotask(() => {
@@ -1696,9 +1771,6 @@ var safeParseInt = (value, defaultValue) => {
1696
1771
  }
1697
1772
  };
1698
1773
 
1699
- // packages/common/util/src/sum.ts
1700
- var sum = (values) => values.reduce((a, b) => a + b, 0);
1701
-
1702
1774
  // packages/common/util/src/weak.ts
1703
1775
  var WeakDictionary = class {
1704
1776
  constructor(entries) {
@@ -1794,93 +1866,32 @@ var WeakDictionary = class {
1794
1866
  }
1795
1867
  };
1796
1868
 
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;
1869
+ // packages/common/util/src/array-to-hex.ts
1870
+ var byteToHex = [];
1871
+ for (let n = 0; n <= 255; ++n) {
1872
+ const hexOctet = n.toString(16).padStart(2, "0");
1873
+ byteToHex.push(hexOctet);
1874
+ }
1875
+ var arrayToHex = (buf) => {
1876
+ const buff = new Uint8Array(buf);
1877
+ const hexOctets = [];
1878
+ for (let i = 0; i < buff.length; ++i) {
1879
+ hexOctets.push(byteToHex[buff[i]]);
1850
1880
  }
1881
+ return hexOctets.join("");
1851
1882
  };
1852
1883
 
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));
1884
+ // packages/common/util/src/remove-undefined-keys.ts
1885
+ var removeUndefinedProperties = (object) => {
1886
+ for (const prop of [
1887
+ ...Object.getOwnPropertyNames(object),
1888
+ ...Object.getOwnPropertySymbols(object)
1889
+ ]) {
1890
+ if (object[prop] === void 0) {
1891
+ delete object[prop];
1872
1892
  }
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
1893
  }
1883
- return result;
1894
+ return object;
1884
1895
  };
1885
1896
  export {
1886
1897
  BitField,
@@ -1891,14 +1902,13 @@ export {
1891
1902
  ComplexSet,
1892
1903
  HumanHasher,
1893
1904
  MapEntry,
1894
- ParamKeyAnnotation,
1895
- Params,
1896
1905
  SlidingWindowSummary,
1897
1906
  Tracer,
1898
1907
  WeakDictionary,
1899
1908
  accessBy,
1900
1909
  arrayMove,
1901
1910
  arrayToBuffer,
1911
+ arrayToHex,
1902
1912
  arrayToString,
1903
1913
  arraysEqual,
1904
1914
  boolGuard,
@@ -1912,6 +1922,7 @@ export {
1912
1922
  createBucketReducer,
1913
1923
  createGroupReducer,
1914
1924
  createSetDispatch,
1925
+ decamelize,
1915
1926
  deepMapValues,
1916
1927
  deepMapValuesAsync,
1917
1928
  defaultMap,
@@ -1935,6 +1946,7 @@ export {
1935
1946
  hexToFallback,
1936
1947
  hexToHue,
1937
1948
  humanize,
1949
+ hyphenize,
1938
1950
  idEmoji,
1939
1951
  idHue,
1940
1952
  inferObjectOrder,
@@ -1967,6 +1979,7 @@ export {
1967
1979
  reduceGroupBy,
1968
1980
  reduceSeries,
1969
1981
  reduceSet,
1982
+ removeUndefinedProperties,
1970
1983
  safariCheck,
1971
1984
  safeAwaitAll,
1972
1985
  safeInstanceof,