@dxos/util 0.7.1 → 0.7.2-main.f1adc9f

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.
@@ -1744,6 +1744,46 @@ var Tracer = class {
1744
1744
  };
1745
1745
  var tracer = new Tracer();
1746
1746
 
1747
+ // packages/common/util/src/tree.ts
1748
+ import { truncateKey } from "@dxos/debug";
1749
+ var stringifyTree = (node, ancestors = [], rows = []) => {
1750
+ if (node.children?.length) {
1751
+ node.children.forEach((child, i) => {
1752
+ stringifyTree(child, [
1753
+ ...ancestors,
1754
+ [
1755
+ node,
1756
+ i
1757
+ ]
1758
+ ], rows);
1759
+ });
1760
+ } else {
1761
+ const keyLen = 8;
1762
+ const name = (node2) => truncateKey(node2.id, keyLen);
1763
+ const parts = [];
1764
+ ancestors.forEach(([node2, i], j) => {
1765
+ const first = ancestors.slice(j).every(([_, i2]) => i2 === 0);
1766
+ parts.push(j === 0 ? first ? "\u251C" : " " : "");
1767
+ parts.push(first ? `\u2500(${name(node2)})\u2500` : "".padEnd(keyLen + 4));
1768
+ if (node2.children) {
1769
+ if (first) {
1770
+ parts.push(node2.children.length > 1 ? "\u252C" : "\u2500");
1771
+ } else {
1772
+ const childFirst = ancestors.slice(j + 1).every(([_, i2]) => i2 === 0);
1773
+ if (node2.children.length - 1 === i) {
1774
+ parts.push(childFirst ? "\u2570" : " ");
1775
+ } else {
1776
+ parts.push(childFirst ? "\u251C" : "\u2502");
1777
+ }
1778
+ }
1779
+ }
1780
+ });
1781
+ parts.push(`\u2500(${name(node)})`);
1782
+ rows.push(parts.join(""));
1783
+ }
1784
+ return rows;
1785
+ };
1786
+
1747
1787
  // packages/common/util/src/types.ts
1748
1788
  var isNotFalsy = (value) => !!value;
1749
1789
  var nonNullable = (value) => value !== null && value !== void 0;
@@ -1769,6 +1809,10 @@ var stripUndefinedValues = (obj) => {
1769
1809
  }
1770
1810
  return obj;
1771
1811
  };
1812
+ var sortKeys = (obj) => Object.keys(obj).sort().reduce((sorted, key) => {
1813
+ sorted[key] = obj[key];
1814
+ return sorted;
1815
+ }, {});
1772
1816
  var arrayMove = (array, from, to) => {
1773
1817
  array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);
1774
1818
  return array;
@@ -1904,6 +1948,22 @@ var removeUndefinedProperties = (object) => {
1904
1948
  }
1905
1949
  return object;
1906
1950
  };
1951
+
1952
+ // packages/common/util/src/order-keys.ts
1953
+ var orderKeys = (obj, order) => {
1954
+ const ordered = {};
1955
+ for (const key of order) {
1956
+ if (key in obj) {
1957
+ ordered[key] = obj[key];
1958
+ }
1959
+ }
1960
+ for (const key in obj) {
1961
+ if (!(key in ordered)) {
1962
+ ordered[key] = obj[key];
1963
+ }
1964
+ }
1965
+ return ordered;
1966
+ };
1907
1967
  export {
1908
1968
  BitField,
1909
1969
  Callback,
@@ -1983,6 +2043,7 @@ export {
1983
2043
  nonNullable,
1984
2044
  numericalValues,
1985
2045
  omit,
2046
+ orderKeys,
1986
2047
  pick,
1987
2048
  pickBy,
1988
2049
  randomInt,
@@ -1998,7 +2059,9 @@ export {
1998
2059
  safeParseInt,
1999
2060
  safeParseJson,
2000
2061
  setDeep,
2062
+ sortKeys,
2001
2063
  stringToArray,
2064
+ stringifyTree,
2002
2065
  stripUndefinedValues,
2003
2066
  sum,
2004
2067
  throwUnhandledError,