@dxos/util 0.7.4 → 0.7.5-labs.071a3e2

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 (46) hide show
  1. package/dist/lib/browser/index.mjs +108 -46
  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 +106 -44
  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 +108 -46
  8. package/dist/lib/node-esm/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/src/array-to-hex.d.ts +1 -1
  11. package/dist/types/src/array-to-hex.d.ts.map +1 -1
  12. package/dist/types/src/array.d.ts +12 -0
  13. package/dist/types/src/array.d.ts.map +1 -1
  14. package/dist/types/src/bitfield.d.ts +1 -1
  15. package/dist/types/src/deep.d.ts.map +1 -1
  16. package/dist/types/src/index.d.ts +6 -4
  17. package/dist/types/src/index.d.ts.map +1 -1
  18. package/dist/types/src/no-infer.d.ts +2 -0
  19. package/dist/types/src/no-infer.d.ts.map +1 -0
  20. package/dist/types/src/position.d.ts +15 -0
  21. package/dist/types/src/position.d.ts.map +1 -0
  22. package/dist/types/src/position.test.d.ts +2 -0
  23. package/dist/types/src/position.test.d.ts.map +1 -0
  24. package/dist/types/src/safe-parse.d.ts +7 -0
  25. package/dist/types/src/safe-parse.d.ts.map +1 -0
  26. package/dist/types/src/string.d.ts +5 -0
  27. package/dist/types/src/string.d.ts.map +1 -0
  28. package/dist/types/src/types.d.ts +22 -4
  29. package/dist/types/src/types.d.ts.map +1 -1
  30. package/dist/types/tsconfig.tsbuildinfo +1 -0
  31. package/package.json +6 -6
  32. package/src/array-to-hex.ts +1 -1
  33. package/src/array.test.ts +83 -1
  34. package/src/array.ts +29 -0
  35. package/src/deep.ts +5 -3
  36. package/src/index.ts +7 -5
  37. package/src/instance-id.ts +1 -1
  38. package/src/no-infer.ts +5 -0
  39. package/src/position.test.ts +98 -0
  40. package/src/position.ts +30 -0
  41. package/src/safe-parse.ts +32 -0
  42. package/src/string.ts +14 -0
  43. package/src/types.ts +31 -13
  44. package/dist/types/src/safe-parse-json.d.ts +0 -5
  45. package/dist/types/src/safe-parse-json.d.ts.map +0 -1
  46. package/src/safe-parse-json.ts +0 -15
@@ -33,6 +33,48 @@ var distinctBy = (array, selector) => {
33
33
  return true;
34
34
  });
35
35
  };
36
+ var removeBy = (array, test) => {
37
+ const removed = [];
38
+ for (let i = array.length - 1; i >= 0; i--) {
39
+ if (test(array[i], i)) {
40
+ removed.push(...array.splice(i, 1));
41
+ }
42
+ }
43
+ return removed;
44
+ };
45
+ var partition = (array, guard) => {
46
+ return array.reduce(([accepted, rejected], item, index, array2) => guard(item, index, array2) ? [
47
+ [
48
+ ...accepted,
49
+ item
50
+ ],
51
+ rejected
52
+ ] : [
53
+ accepted,
54
+ [
55
+ ...rejected,
56
+ item
57
+ ]
58
+ ], [
59
+ [],
60
+ []
61
+ ]);
62
+ };
63
+
64
+ // packages/common/util/src/array-to-hex.ts
65
+ var byteToHex = [];
66
+ for (let n = 0; n <= 255; ++n) {
67
+ const hexOctet = n.toString(16).padStart(2, "0");
68
+ byteToHex.push(hexOctet);
69
+ }
70
+ var arrayToHex = (buf) => {
71
+ const buff = new Uint8Array(buf);
72
+ const hexOctets = [];
73
+ for (let i = 0; i < buff.length; ++i) {
74
+ hexOctets.push(byteToHex[buff[i]]);
75
+ }
76
+ return hexOctets.join("");
77
+ };
36
78
 
37
79
  // packages/common/util/src/binder.ts
38
80
  import util from "@dxos/node-std/util";
@@ -525,11 +567,14 @@ var setDeep = (obj, path, value) => {
525
567
  });
526
568
  let parent = obj;
527
569
  for (const key of path.slice(0, -1)) {
528
- parent[key] ??= {};
570
+ if (parent[key] === void 0) {
571
+ const isArrayIndex = !isNaN(Number(key));
572
+ parent[key] = isArrayIndex ? [] : {};
573
+ }
529
574
  parent = parent[key];
530
575
  }
531
576
  parent[path.at(-1)] = value;
532
- return parent[path.at(-1)];
577
+ return obj;
533
578
  };
534
579
  var getDeep = (obj, path) => {
535
580
  let parent = obj;
@@ -944,7 +989,7 @@ var getDebugName = (instance) => {
944
989
  return "null";
945
990
  }
946
991
  const prototype = Object.getPrototypeOf(instance);
947
- return `${prototype.constructor.name}#${getPrototypeSpecificInstanceId(instance)}`;
992
+ return `${prototype.constructor?.name ?? "Object"}#${getPrototypeSpecificInstanceId(instance)}`;
948
993
  };
949
994
 
950
995
  // packages/common/util/src/join-tables.ts
@@ -1200,6 +1245,22 @@ var inferRecordOrder = (objectMap, order = []) => {
1200
1245
  }, {}), objectMap);
1201
1246
  };
1202
1247
 
1248
+ // packages/common/util/src/order-keys.ts
1249
+ var orderKeys = (obj, order) => {
1250
+ const ordered = {};
1251
+ for (const key of order) {
1252
+ if (key in obj) {
1253
+ ordered[key] = obj[key];
1254
+ }
1255
+ }
1256
+ for (const key in obj) {
1257
+ if (!(key in ordered)) {
1258
+ ordered[key] = obj[key];
1259
+ }
1260
+ }
1261
+ return ordered;
1262
+ };
1263
+
1203
1264
  // packages/common/util/src/pick.ts
1204
1265
  var pick = (obj, keys) => {
1205
1266
  return keys.reduce((result, key) => {
@@ -1269,6 +1330,20 @@ var getHostPlatform = () => {
1269
1330
  }
1270
1331
  };
1271
1332
 
1333
+ // packages/common/util/src/position.ts
1334
+ var byPosition = (a, b) => {
1335
+ const aPosition = a.position ?? "static";
1336
+ const bPosition = b.position ?? "static";
1337
+ if (aPosition === bPosition) {
1338
+ return 0;
1339
+ } else if (aPosition === "hoist" || bPosition === "fallback") {
1340
+ return -1;
1341
+ } else if (bPosition === "hoist" || aPosition === "fallback") {
1342
+ return 1;
1343
+ }
1344
+ return 0;
1345
+ };
1346
+
1272
1347
  // packages/common/util/src/random.ts
1273
1348
  var randomInt = (max, min = 0) => {
1274
1349
  min = Math.ceil(min);
@@ -1401,9 +1476,24 @@ var safeInstanceof = (tag) => (target) => {
1401
1476
  });
1402
1477
  };
1403
1478
 
1404
- // packages/common/util/src/safe-parse-json.ts
1479
+ // packages/common/util/src/safe-parse.ts
1480
+ var safeParseInt = (value, defaultValue) => {
1481
+ try {
1482
+ const n = parseInt(value ?? "");
1483
+ return isNaN(n) ? defaultValue : n;
1484
+ } catch (err) {
1485
+ return defaultValue;
1486
+ }
1487
+ };
1488
+ var safeParseFloat = (str, defaultValue) => {
1489
+ try {
1490
+ return parseFloat(str);
1491
+ } catch {
1492
+ return defaultValue ?? 0;
1493
+ }
1494
+ };
1405
1495
  var safeParseJson = (data, defaultValue) => {
1406
- if (data) {
1496
+ if (data && data.length > 0) {
1407
1497
  try {
1408
1498
  return JSON.parse(data);
1409
1499
  } catch (err) {
@@ -1788,7 +1878,6 @@ var stringifyTree = (node, ancestors = [], rows = []) => {
1788
1878
  var isNotFalsy = (value) => !!value;
1789
1879
  var nonNullable = (value) => value !== null && value !== void 0;
1790
1880
  var isNotNullOrUndefined = (value) => value != null;
1791
- var boolGuard = (value) => Boolean(value);
1792
1881
  var doAsync = async (fn) => fn();
1793
1882
  var getProviderValue = (provider, arg) => {
1794
1883
  return typeof provider === "function" ? provider(arg) : provider;
@@ -1796,14 +1885,14 @@ var getProviderValue = (provider, arg) => {
1796
1885
  var getAsyncProviderValue = (provider, arg) => {
1797
1886
  return getProviderValue(provider, arg);
1798
1887
  };
1799
- var stripUndefinedValues = (obj) => {
1888
+ var stripUndefined = (obj) => {
1800
1889
  if (typeof obj === "object") {
1801
1890
  Object.keys(obj).forEach((key) => {
1802
1891
  const value = obj[key];
1803
1892
  if (value === void 0) {
1804
1893
  delete obj[key];
1805
1894
  } else if (value !== null && typeof value === "object") {
1806
- stripUndefinedValues(value);
1895
+ stripUndefined(value);
1807
1896
  }
1808
1897
  });
1809
1898
  }
@@ -1817,14 +1906,6 @@ var arrayMove = (array, from, to) => {
1817
1906
  array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);
1818
1907
  return array;
1819
1908
  };
1820
- var safeParseInt = (value, defaultValue) => {
1821
- try {
1822
- const n = parseInt(value ?? "");
1823
- return isNaN(n) ? defaultValue : n;
1824
- } catch (err) {
1825
- return defaultValue;
1826
- }
1827
- };
1828
1909
 
1829
1910
  // packages/common/util/src/weak.ts
1830
1911
  var WeakDictionary = class {
@@ -1921,19 +2002,12 @@ var WeakDictionary = class {
1921
2002
  }
1922
2003
  };
1923
2004
 
1924
- // packages/common/util/src/array-to-hex.ts
1925
- var byteToHex = [];
1926
- for (let n = 0; n <= 255; ++n) {
1927
- const hexOctet = n.toString(16).padStart(2, "0");
1928
- byteToHex.push(hexOctet);
1929
- }
1930
- var arrayToHex = (buf) => {
1931
- const buff = new Uint8Array(buf);
1932
- const hexOctets = [];
1933
- for (let i = 0; i < buff.length; ++i) {
1934
- hexOctets.push(byteToHex[buff[i]]);
2005
+ // packages/common/util/src/string.ts
2006
+ var capitalize = (str) => {
2007
+ if (str.length === 0) {
2008
+ return "";
1935
2009
  }
1936
- return hexOctets.join("");
2010
+ return str.charAt(0).toUpperCase() + str.slice(1);
1937
2011
  };
1938
2012
 
1939
2013
  // packages/common/util/src/remove-undefined-keys.ts
@@ -1948,22 +2022,6 @@ var removeUndefinedProperties = (object) => {
1948
2022
  }
1949
2023
  return object;
1950
2024
  };
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
- };
1967
2025
  export {
1968
2026
  BitField,
1969
2027
  Callback,
@@ -1982,8 +2040,9 @@ export {
1982
2040
  arrayToHex,
1983
2041
  arrayToString,
1984
2042
  arraysEqual,
1985
- boolGuard,
1986
2043
  bufferToArray,
2044
+ byPosition,
2045
+ capitalize,
1987
2046
  chunkArray,
1988
2047
  compareMulti,
1989
2048
  compareObject,
@@ -2044,6 +2103,7 @@ export {
2044
2103
  numericalValues,
2045
2104
  omit,
2046
2105
  orderKeys,
2106
+ partition,
2047
2107
  pick,
2048
2108
  pickBy,
2049
2109
  randomInt,
@@ -2052,17 +2112,19 @@ export {
2052
2112
  reduceGroupBy,
2053
2113
  reduceSeries,
2054
2114
  reduceSet,
2115
+ removeBy,
2055
2116
  removeUndefinedProperties,
2056
2117
  safariCheck,
2057
2118
  safeAwaitAll,
2058
2119
  safeInstanceof,
2120
+ safeParseFloat,
2059
2121
  safeParseInt,
2060
2122
  safeParseJson,
2061
2123
  setDeep,
2062
2124
  sortKeys,
2063
2125
  stringToArray,
2064
2126
  stringifyTree,
2065
- stripUndefinedValues,
2127
+ stripUndefined,
2066
2128
  sum,
2067
2129
  throwUnhandledError,
2068
2130
  toEmoji,