@dxos/util 0.8.3 → 0.8.4-main.28f8d3d

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 (49) hide show
  1. package/dist/lib/browser/index.mjs +118 -72
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +118 -72
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/array.d.ts.map +1 -1
  8. package/dist/types/src/assume.d.ts.map +1 -1
  9. package/dist/types/src/di-key.d.ts +3 -3
  10. package/dist/types/src/di-key.d.ts.map +1 -1
  11. package/dist/types/src/index.d.ts +2 -2
  12. package/dist/types/src/index.d.ts.map +1 -1
  13. package/dist/types/src/json.d.ts +1 -1
  14. package/dist/types/src/json.d.ts.map +1 -1
  15. package/dist/types/src/object.d.ts +3 -0
  16. package/dist/types/src/object.d.ts.map +1 -1
  17. package/dist/types/src/safe-parse.d.ts.map +1 -1
  18. package/dist/types/src/string.d.ts +4 -0
  19. package/dist/types/src/string.d.ts.map +1 -1
  20. package/dist/types/src/string.test.d.ts +2 -0
  21. package/dist/types/src/string.test.d.ts.map +1 -0
  22. package/dist/types/src/url.d.ts +5 -0
  23. package/dist/types/src/url.d.ts.map +1 -0
  24. package/dist/types/src/url.test.d.ts +2 -0
  25. package/dist/types/src/url.test.d.ts.map +1 -0
  26. package/dist/types/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +8 -8
  28. package/src/array.test.ts +1 -1
  29. package/src/array.ts +0 -2
  30. package/src/assume.ts +0 -1
  31. package/src/circular-buffer.test.ts +1 -1
  32. package/src/complex.test.ts +1 -1
  33. package/src/human-hash.test.ts +1 -1
  34. package/src/index.ts +2 -2
  35. package/src/json.ts +2 -7
  36. package/src/object.ts +3 -0
  37. package/src/position.test.ts +2 -2
  38. package/src/safe-parse.ts +3 -1
  39. package/src/sort.test.ts +1 -1
  40. package/src/string.test.ts +19 -0
  41. package/src/string.ts +29 -0
  42. package/src/tree.test.ts +1 -1
  43. package/src/uint8array.test.ts +1 -1
  44. package/src/url.test.ts +22 -0
  45. package/src/url.ts +15 -0
  46. package/src/weak.test.ts +1 -1
  47. package/dist/lib/node/index.cjs +0 -2309
  48. package/dist/lib/node/index.cjs.map +0 -7
  49. package/dist/lib/node/meta.json +0 -1
@@ -1,6 +1,6 @@
1
1
  import "@dxos/node-std/globals";
2
2
 
3
- // packages/common/util/src/array-to-hex.ts
3
+ // src/array-to-hex.ts
4
4
  var byteToHex = [];
5
5
  for (let n = 0; n <= 255; ++n) {
6
6
  const hexOctet = n.toString(16).padStart(2, "0");
@@ -15,7 +15,7 @@ var arrayToHex = (buf) => {
15
15
  return hexOctets.join("");
16
16
  };
17
17
 
18
- // packages/common/util/src/array.ts
18
+ // src/array.ts
19
19
  var diff = (previous, next, comparator) => {
20
20
  const remaining = [
21
21
  ...previous
@@ -98,16 +98,20 @@ var intersectBy = (arrays, selector) => {
98
98
  });
99
99
  };
100
100
 
101
- // packages/common/util/src/binder.ts
101
+ // src/assume.ts
102
+ function assumeType(value) {
103
+ }
104
+
105
+ // src/binder.ts
102
106
  import util from "@dxos/node-std/util";
103
107
  var createBinder = (obj) => ({
104
108
  fn: (fn) => fn.bind(obj),
105
109
  async: (fn) => util.promisify(fn.bind(obj))
106
110
  });
107
111
 
108
- // packages/common/util/src/bitfield.ts
112
+ // src/bitfield.ts
109
113
  import { invariant } from "@dxos/invariant";
110
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/common/util/src/bitfield.ts";
114
+ var __dxlog_file = "/__w/dxos/dxos/packages/common/util/src/bitfield.ts";
111
115
  var BitField = class _BitField {
112
116
  static get(data, idx) {
113
117
  const bit = data[idx >> 3] >> 7 - idx % 8 & 1;
@@ -175,7 +179,7 @@ var BitField = class _BitField {
175
179
  }
176
180
  };
177
181
 
178
- // packages/common/util/src/callback-collection.ts
182
+ // src/callback-collection.ts
179
183
  var CallbackCollection = class {
180
184
  #callbacks = [];
181
185
  append(callback) {
@@ -199,10 +203,11 @@ var CallbackCollection = class {
199
203
  }
200
204
  };
201
205
 
202
- // packages/common/util/src/callback.ts
206
+ // src/callback.ts
203
207
  import { invariant as invariant2 } from "@dxos/invariant";
204
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/common/util/src/callback.ts";
208
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/common/util/src/callback.ts";
205
209
  var Callback = class {
210
+ _callback;
206
211
  call(...args) {
207
212
  invariant2(this._callback, "Callback not set", {
208
213
  F: __dxlog_file2,
@@ -251,7 +256,7 @@ var createSetDispatch = ({ handlers }) => {
251
256
  });
252
257
  };
253
258
 
254
- // packages/common/util/src/case.ts
259
+ // src/case.ts
255
260
  var LOW_DASH = "_".codePointAt(0);
256
261
  var HI_DASH = "-".codePointAt(0);
257
262
  var SMALL_A = "a".codePointAt(0);
@@ -284,7 +289,7 @@ var changeCase = (str, delim) => {
284
289
  var decamelize = (str) => changeCase(str, LOW_DASH);
285
290
  var hyphenize = (str) => changeCase(str, HI_DASH);
286
291
 
287
- // packages/common/util/src/chunk-array.ts
292
+ // src/chunk-array.ts
288
293
  var chunkArray = (array, size) => {
289
294
  const result = [];
290
295
  for (let i = 0; i < array.length; i += size) {
@@ -293,13 +298,14 @@ var chunkArray = (array, size) => {
293
298
  return result;
294
299
  };
295
300
 
296
- // packages/common/util/src/circular-buffer.ts
301
+ // src/circular-buffer.ts
297
302
  import { invariant as invariant3 } from "@dxos/invariant";
298
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/common/util/src/circular-buffer.ts";
303
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/common/util/src/circular-buffer.ts";
299
304
  var CircularBuffer = class {
305
+ _buffer;
306
+ _nextIndex = 0;
307
+ _elementCount = 0;
300
308
  constructor(size) {
301
- this._nextIndex = 0;
302
- this._elementCount = 0;
303
309
  invariant3(size >= 1, void 0, {
304
310
  F: __dxlog_file3,
305
311
  L: 13,
@@ -352,7 +358,7 @@ var CircularBuffer = class {
352
358
  }
353
359
  };
354
360
 
355
- // packages/common/util/src/clear-undefined.ts
361
+ // src/clear-undefined.ts
356
362
  var clearUndefined = (obj) => {
357
363
  for (const key of [
358
364
  ...Object.getOwnPropertyNames(obj),
@@ -365,11 +371,13 @@ var clearUndefined = (obj) => {
365
371
  return obj;
366
372
  };
367
373
 
368
- // packages/common/util/src/complex.ts
374
+ // src/complex.ts
369
375
  import { inspect } from "@dxos/node-std/util";
370
376
  import { inspectObject, raise } from "@dxos/debug";
371
377
  var MAX_SERIALIZATION_LENGTH = 10;
372
378
  var ComplexSet = class {
379
+ _projection;
380
+ _values;
373
381
  // prettier-ignore
374
382
  constructor(_projection, values) {
375
383
  this._projection = _projection;
@@ -463,6 +471,9 @@ var makeSet = (projection) => {
463
471
  };
464
472
  };
465
473
  var ComplexMap = class _ComplexMap {
474
+ _keyProjection;
475
+ _keys;
476
+ _values;
466
477
  // prettier-ignore
467
478
  constructor(_keyProjection, entries2) {
468
479
  this._keyProjection = _keyProjection;
@@ -551,11 +562,11 @@ var makeMap = (keyProjection) => class BoundComplexMap extends ComplexMap {
551
562
  }
552
563
  };
553
564
 
554
- // packages/common/util/src/deep.ts
565
+ // src/deep.ts
555
566
  import get from "lodash.get";
556
567
  import set from "lodash.set";
557
568
  import { invariant as invariant4 } from "@dxos/invariant";
558
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/common/util/src/deep.ts";
569
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/util/src/deep.ts";
559
570
  var setDeep = (obj, path, value) => {
560
571
  invariant4(path.length > 0, void 0, {
561
572
  F: __dxlog_file4,
@@ -585,16 +596,17 @@ var getDeep = (obj, path) => {
585
596
  return parent;
586
597
  };
587
598
 
588
- // packages/common/util/src/defer-function.ts
599
+ // src/defer-function.ts
589
600
  var deferFunction = (fnProvider) => (...args) => fnProvider()(...args);
590
601
 
591
- // packages/common/util/src/explicit-resource-management-polyfill.ts
602
+ // src/explicit-resource-management-polyfill.ts
592
603
  Symbol.dispose ??= Symbol("Symbol.dispose");
593
604
  Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose");
594
605
 
595
- // packages/common/util/src/defer.ts
606
+ // src/defer.ts
596
607
  var defer = (fn) => new DeferGuard(fn);
597
608
  var DeferGuard = class {
609
+ _fn;
598
610
  /**
599
611
  * @internal
600
612
  */
@@ -610,6 +622,7 @@ var DeferGuard = class {
610
622
  };
611
623
  var deferAsync = (fn) => new DeferAsyncGuard(fn);
612
624
  var DeferAsyncGuard = class {
625
+ _fn;
613
626
  /**
614
627
  * @internal
615
628
  */
@@ -621,9 +634,11 @@ var DeferAsyncGuard = class {
621
634
  }
622
635
  };
623
636
 
624
- // packages/common/util/src/entry.ts
637
+ // src/entry.ts
625
638
  var entry = (map, key) => new MapEntry(map, key);
626
639
  var MapEntry = class {
640
+ _map;
641
+ _key;
627
642
  /**
628
643
  * @internal
629
644
  */
@@ -649,7 +664,7 @@ var MapEntry = class {
649
664
  }
650
665
  };
651
666
 
652
- // packages/common/util/src/first-two-chars.ts
667
+ // src/first-two-chars.ts
653
668
  var renderableCharRegex = /^(?![\p{Control}\p{Mark}\p{Separator}\p{Surrogate}\p{Unassigned}\p{P}])[\p{L}\p{N}\p{S}\p{Emoji}]$/u;
654
669
  var getFirstTwoRenderableChars = (label) => {
655
670
  const characters = Array.from(label);
@@ -676,10 +691,10 @@ var getFirstTwoRenderableChars = (label) => {
676
691
  return result;
677
692
  };
678
693
 
679
- // packages/common/util/src/for-each-async.ts
694
+ // src/for-each-async.ts
680
695
  var forEachAsync = (items, fn) => Promise.all(items.map(fn));
681
696
 
682
- // packages/common/util/src/human-hash.ts
697
+ // src/human-hash.ts
683
698
  import { PublicKey } from "@dxos/keys";
684
699
  var DEFAULT_WORDLIST = [
685
700
  "ack",
@@ -940,6 +955,7 @@ var DEFAULT_WORDLIST = [
940
955
  "zulu"
941
956
  ];
942
957
  var HumanHasher = class {
958
+ wordlist;
943
959
  /**
944
960
  * Transforms hex digests to human-readable strings.
945
961
  *
@@ -1010,7 +1026,7 @@ var humanize = (value) => {
1010
1026
  return hasher.humanize(value);
1011
1027
  };
1012
1028
 
1013
- // packages/common/util/src/map.ts
1029
+ // src/map.ts
1014
1030
  var defaultMap = (map, key, def) => {
1015
1031
  let value = map.get(key);
1016
1032
  if (value === void 0) {
@@ -1020,7 +1036,7 @@ var defaultMap = (map, key, def) => {
1020
1036
  return value;
1021
1037
  };
1022
1038
 
1023
- // packages/common/util/src/instance-id.ts
1039
+ // src/instance-id.ts
1024
1040
  var symbol = Symbol.for("dxos.instance-contexts");
1025
1041
  var instanceContexts = globalThis[symbol] ??= /* @__PURE__ */ new WeakMap();
1026
1042
  var getPrototypeSpecificInstanceId = (instance) => {
@@ -1044,7 +1060,7 @@ var getDebugName = (instance) => {
1044
1060
  return `${prototype.constructor?.name ?? "Object"}#${getPrototypeSpecificInstanceId(instance)}`;
1045
1061
  };
1046
1062
 
1047
- // packages/common/util/src/interval.ts
1063
+ // src/interval.ts
1048
1064
  var exponentialBackoffInterval = (cb, initialInterval) => {
1049
1065
  let interval = initialInterval;
1050
1066
  const repeat = () => {
@@ -1056,7 +1072,7 @@ var exponentialBackoffInterval = (cb, initialInterval) => {
1056
1072
  return () => clearTimeout(timeoutId);
1057
1073
  };
1058
1074
 
1059
- // packages/common/util/src/join-tables.ts
1075
+ // src/join-tables.ts
1060
1076
  var joinTables = (leftColumn, rightColumn, left, right) => {
1061
1077
  const map = /* @__PURE__ */ new Map();
1062
1078
  const used = /* @__PURE__ */ new Set();
@@ -1077,11 +1093,11 @@ var joinTables = (leftColumn, rightColumn, left, right) => {
1077
1093
  return result;
1078
1094
  };
1079
1095
 
1080
- // packages/common/util/src/json.ts
1096
+ // src/json.ts
1081
1097
  import { inspect as inspect2 } from "@dxos/node-std/util";
1082
1098
  import { PublicKey as PublicKey2 } from "@dxos/keys";
1083
1099
 
1084
- // packages/common/util/src/uint8array.ts
1100
+ // src/uint8array.ts
1085
1101
  var arraysEqual = (a, b) => {
1086
1102
  if (a.length !== b.length) {
1087
1103
  return false;
@@ -1102,10 +1118,10 @@ var bufferToArray = (buffer) => {
1102
1118
  var stringToArray = (string) => bufferToArray(Buffer.from(string, "hex"));
1103
1119
  var arrayToString = (array) => arrayToBuffer(array).toString("hex");
1104
1120
 
1105
- // packages/common/util/src/json.ts
1121
+ // src/json.ts
1106
1122
  var MAX_DEPTH = 5;
1107
1123
  var LOG_MAX_DEPTH = 7;
1108
- function jsonReplacer(key, value) {
1124
+ var jsonReplacer = (key, value) => {
1109
1125
  if (value !== null && typeof value === "object" && typeof value[inspect2.custom] === "function") {
1110
1126
  return value[inspect2.custom]();
1111
1127
  }
@@ -1118,7 +1134,7 @@ function jsonReplacer(key, value) {
1118
1134
  }
1119
1135
  }
1120
1136
  return value;
1121
- }
1137
+ };
1122
1138
  var jsonify = (value, depth = 0, visitedObjects = /* @__PURE__ */ new WeakSet()) => {
1123
1139
  if (depth > MAX_DEPTH) {
1124
1140
  return null;
@@ -1193,7 +1209,7 @@ var jsonKeyReplacer = (options = {}) => (key, value) => {
1193
1209
  return value;
1194
1210
  };
1195
1211
 
1196
- // packages/common/util/src/map-values.ts
1212
+ // src/map-values.ts
1197
1213
  var mapValues = (obj, fn) => {
1198
1214
  const result = {};
1199
1215
  Object.keys(obj).forEach((key) => {
@@ -1205,6 +1221,8 @@ var deepMapValues = (value, fn) => {
1205
1221
  return new DeepMapper(fn).map(value);
1206
1222
  };
1207
1223
  var DeepMapper = class {
1224
+ _fn;
1225
+ _cyclic;
1208
1226
  constructor(_fn) {
1209
1227
  this._fn = _fn;
1210
1228
  this._cyclic = /* @__PURE__ */ new Map();
@@ -1240,11 +1258,14 @@ var DeepMapper = class {
1240
1258
  }
1241
1259
  return this._fn(value, this._recurse, key);
1242
1260
  }
1261
+ _recurse;
1243
1262
  };
1244
1263
  var deepMapValuesAsync = (value, fn) => {
1245
1264
  return new DeepMapperAsync(fn).map(value);
1246
1265
  };
1247
1266
  var DeepMapperAsync = class {
1267
+ _fn;
1268
+ _cyclic;
1248
1269
  constructor(_fn) {
1249
1270
  this._fn = _fn;
1250
1271
  this._cyclic = /* @__PURE__ */ new Map();
@@ -1280,6 +1301,7 @@ var DeepMapperAsync = class {
1280
1301
  }
1281
1302
  return this._fn(value, this._recurse, key);
1282
1303
  }
1304
+ _recurse;
1283
1305
  };
1284
1306
  var visitValues = (object, visitor) => {
1285
1307
  if (Array.isArray(object)) {
@@ -1291,11 +1313,11 @@ var visitValues = (object, visitor) => {
1291
1313
  }
1292
1314
  };
1293
1315
 
1294
- // packages/common/util/src/object.ts
1316
+ // src/object.ts
1295
1317
  var keys = (obj) => Object.keys(obj);
1296
1318
  var entries = (obj) => Object.entries(obj);
1297
1319
 
1298
- // packages/common/util/src/order-keys.ts
1320
+ // src/order-keys.ts
1299
1321
  var orderKeys = (obj, order) => {
1300
1322
  const ordered = {};
1301
1323
  for (const key of order) {
@@ -1311,7 +1333,7 @@ var orderKeys = (obj, order) => {
1311
1333
  return ordered;
1312
1334
  };
1313
1335
 
1314
- // packages/common/util/src/order.ts
1336
+ // src/order.ts
1315
1337
  var inferObjectOrder = (objectMap, order = []) => {
1316
1338
  const orderedObjects = order.reduce((acc, id) => {
1317
1339
  if (id in objectMap) {
@@ -1338,7 +1360,7 @@ var inferRecordOrder = (objectMap, order = []) => {
1338
1360
  }, {}), objectMap);
1339
1361
  };
1340
1362
 
1341
- // packages/common/util/src/pick.ts
1363
+ // src/pick.ts
1342
1364
  var pick = (obj, keys2) => {
1343
1365
  return keys2.reduce((result, key) => {
1344
1366
  if (obj && key in obj) {
@@ -1366,7 +1388,7 @@ var omit = (obj, keys2) => {
1366
1388
  return result;
1367
1389
  };
1368
1390
 
1369
- // packages/common/util/src/platform.ts
1391
+ // src/platform.ts
1370
1392
  var isNode = () => typeof process !== "undefined" && process.versions != null && process.versions.node != null;
1371
1393
  var mobileAndTabletCheck = () => {
1372
1394
  let check = false;
@@ -1407,7 +1429,7 @@ var getHostPlatform = () => {
1407
1429
  }
1408
1430
  };
1409
1431
 
1410
- // packages/common/util/src/position.ts
1432
+ // src/position.ts
1411
1433
  var byPosition = ({ position: a = "static" }, { position: b = "static" }) => {
1412
1434
  if (a === b) {
1413
1435
  return 0;
@@ -1420,14 +1442,14 @@ var byPosition = ({ position: a = "static" }, { position: b = "static" }) => {
1420
1442
  }
1421
1443
  };
1422
1444
 
1423
- // packages/common/util/src/random.ts
1445
+ // src/random.ts
1424
1446
  var randomInt = (max, min = 0) => {
1425
1447
  min = Math.ceil(min);
1426
1448
  max = Math.floor(max);
1427
1449
  return Math.floor(Math.random() * (max - min + 1)) + min;
1428
1450
  };
1429
1451
 
1430
- // packages/common/util/src/range.ts
1452
+ // src/range.ts
1431
1453
  var range = (n = 0, mapper) => {
1432
1454
  const range2 = Array.from(Array(n).keys());
1433
1455
  return mapper == null ? range2 : range2.map(mapper);
@@ -1439,7 +1461,7 @@ var clamp = (value, min, max) => {
1439
1461
  return Math.min(Math.max(value, min), max);
1440
1462
  };
1441
1463
 
1442
- // packages/common/util/src/reducers.ts
1464
+ // src/reducers.ts
1443
1465
  var accessBy = (value, accessor) => typeof accessor === "function" ? accessor(value) : value[accessor];
1444
1466
  var median = (values) => {
1445
1467
  const mid = Math.floor(values.length / 2);
@@ -1525,7 +1547,7 @@ var createBucketReducer = (period) => ({
1525
1547
  }
1526
1548
  });
1527
1549
 
1528
- // packages/common/util/src/remove-undefined-keys.ts
1550
+ // src/remove-undefined-keys.ts
1529
1551
  var removeUndefinedProperties = (object) => {
1530
1552
  for (const prop of [
1531
1553
  ...Object.getOwnPropertyNames(object),
@@ -1566,7 +1588,7 @@ var removeProperties = (root, condition) => {
1566
1588
  return result;
1567
1589
  };
1568
1590
 
1569
- // packages/common/util/src/safe-await.ts
1591
+ // src/safe-await.ts
1570
1592
  var safeAwaitAll = async (source, taskFactory, onError) => {
1571
1593
  const failedItems = [];
1572
1594
  await Promise.all([
@@ -1584,7 +1606,7 @@ var safeAwaitAll = async (source, taskFactory, onError) => {
1584
1606
  return failedItems;
1585
1607
  };
1586
1608
 
1587
- // packages/common/util/src/safe-instanceof.ts
1609
+ // src/safe-instanceof.ts
1588
1610
  var instanceTag = Symbol("instanceTag");
1589
1611
  var safeInstanceof = (tag) => (target) => {
1590
1612
  target.prototype[instanceTag] = tag;
@@ -1596,7 +1618,7 @@ var safeInstanceof = (tag) => (target) => {
1596
1618
  });
1597
1619
  };
1598
1620
 
1599
- // packages/common/util/src/safe-parse.ts
1621
+ // src/safe-parse.ts
1600
1622
  var safeParseInt = (value, defaultValue) => {
1601
1623
  try {
1602
1624
  const n = parseInt(value ?? "");
@@ -1622,12 +1644,14 @@ var safeParseJson = (data, defaultValue) => {
1622
1644
  return defaultValue;
1623
1645
  };
1624
1646
 
1625
- // packages/common/util/src/sliding-window-summary.ts
1647
+ // src/sliding-window-summary.ts
1626
1648
  import { invariant as invariant5 } from "@dxos/invariant";
1627
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
1649
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/common/util/src/sliding-window-summary.ts";
1628
1650
  var SlidingWindowSummary = class {
1651
+ _buffer;
1652
+ _sum = 0;
1653
+ _precision;
1629
1654
  constructor(options) {
1630
- this._sum = 0;
1631
1655
  this._buffer = new CircularBuffer(options.dataPoints);
1632
1656
  if (options.precision != null) {
1633
1657
  invariant5(options.precision >= 0, void 0, {
@@ -1678,7 +1702,7 @@ var SlidingWindowSummary = class {
1678
1702
  }
1679
1703
  };
1680
1704
 
1681
- // packages/common/util/src/sort.ts
1705
+ // src/sort.ts
1682
1706
  var compareScalar = (inc = true) => (a, b) => (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);
1683
1707
  var compareString = (inc = true, caseInsensitive = true) => (a, b) => {
1684
1708
  if (caseInsensitive) {
@@ -1700,25 +1724,42 @@ var compareMulti = (sorters) => (a, b) => {
1700
1724
  return sort();
1701
1725
  };
1702
1726
 
1703
- // packages/common/util/src/string.ts
1727
+ // src/string.ts
1704
1728
  var capitalize = (str) => {
1705
1729
  if (str.length === 0) {
1706
1730
  return "";
1707
1731
  }
1708
1732
  return str.charAt(0).toUpperCase() + str.slice(1);
1709
1733
  };
1734
+ function trim(strings, ...values) {
1735
+ const raw = strings.reduce((out, str, i) => {
1736
+ out += str;
1737
+ if (i < values.length) {
1738
+ const match = str.match(/(^|\n)([ \t]*)$/);
1739
+ const baseIndent = match ? match[2] : "";
1740
+ const val = String(values[i]).replace(/\r?\n/g, "\n" + baseIndent);
1741
+ out += val;
1742
+ }
1743
+ return out;
1744
+ }, "");
1745
+ const lines = raw.split("\n");
1746
+ while (lines.length && !lines[0].trim()) lines.shift();
1747
+ while (lines.length && !lines[lines.length - 1].trim()) lines.pop();
1748
+ const minIndent = Math.min(...lines.filter((l) => l.trim()).map((l) => l.match(/^[ \t]*/)?.[0].length ?? 0));
1749
+ return lines.map((l) => l.slice(minIndent)).join("\n");
1750
+ }
1710
1751
 
1711
- // packages/common/util/src/sum.ts
1752
+ // src/sum.ts
1712
1753
  var sum = (values) => values.reduce((a, b) => a + b, 0);
1713
1754
 
1714
- // packages/common/util/src/throw-unhandled-error.ts
1755
+ // src/throw-unhandled-error.ts
1715
1756
  var throwUnhandledError = (error) => {
1716
1757
  queueMicrotask(() => {
1717
1758
  throw error;
1718
1759
  });
1719
1760
  };
1720
1761
 
1721
- // packages/common/util/src/to-fallback.ts
1762
+ // src/to-fallback.ts
1722
1763
  var idEmoji = [
1723
1764
  // When changing this set, please check the result in a console or e.g. RunKit (https://runkit.com/thure/642214441dd6ae000855a8de)
1724
1765
  // Emoji sometimes use a combination of code points, and some code points aren't visible on their own, so by adding or deleting you may unintentionally create non-visible items.
@@ -1903,12 +1944,10 @@ var toFallback = (hash) => {
1903
1944
  };
1904
1945
  };
1905
1946
 
1906
- // packages/common/util/src/tracer.ts
1947
+ // src/tracer.ts
1907
1948
  var Tracer = class {
1908
- constructor() {
1909
- this._events = /* @__PURE__ */ new Map();
1910
- this._recording = false;
1911
- }
1949
+ _events = /* @__PURE__ */ new Map();
1950
+ _recording = false;
1912
1951
  // TODO(burdon): Start/stop methods for recording data? By id?
1913
1952
  // Alternatively, enable subscriptions to track/compute series.
1914
1953
  // TODO(burdon): Hierarchical traces?
@@ -1968,7 +2007,7 @@ var Tracer = class {
1968
2007
  };
1969
2008
  var tracer = new Tracer();
1970
2009
 
1971
- // packages/common/util/src/tree.ts
2010
+ // src/tree.ts
1972
2011
  import { truncateKey } from "@dxos/debug";
1973
2012
  var stringifyTree = (node, ancestors = [], rows = []) => {
1974
2013
  if (node.children?.length) {
@@ -2008,7 +2047,7 @@ var stringifyTree = (node, ancestors = [], rows = []) => {
2008
2047
  return rows;
2009
2048
  };
2010
2049
 
2011
- // packages/common/util/src/types.ts
2050
+ // src/types.ts
2012
2051
  var isNotFalsy = (value) => !!value;
2013
2052
  var isNonNullable = (value) => value != null;
2014
2053
  var doAsync = async (fn) => fn();
@@ -2040,13 +2079,22 @@ var arrayMove = (array, from, to) => {
2040
2079
  return array;
2041
2080
  };
2042
2081
 
2043
- // packages/common/util/src/weak.ts
2082
+ // src/url.ts
2083
+ var createUrl = (url, search) => {
2084
+ const base = typeof url === "string" ? new URL(url) : url;
2085
+ if (search) {
2086
+ base.search = new URLSearchParams(Object.entries(search).filter(([_, value]) => value != null)).toString();
2087
+ }
2088
+ return base;
2089
+ };
2090
+
2091
+ // src/weak.ts
2044
2092
  var WeakDictionary = class {
2093
+ _internal = /* @__PURE__ */ new Map();
2094
+ _finalization = new FinalizationRegistry((cleanUpCallback) => {
2095
+ cleanUpCallback();
2096
+ });
2045
2097
  constructor(entries2) {
2046
- this._internal = /* @__PURE__ */ new Map();
2047
- this._finalization = new FinalizationRegistry((cleanUpCallback) => {
2048
- cleanUpCallback();
2049
- });
2050
2098
  this._internal = new Map(entries2?.map(([key, value]) => [
2051
2099
  key,
2052
2100
  new WeakRef(value)
@@ -2134,10 +2182,6 @@ var WeakDictionary = class {
2134
2182
  this._finalization.unregister(value);
2135
2183
  }
2136
2184
  };
2137
-
2138
- // packages/common/util/src/assume.ts
2139
- function assumeType(value) {
2140
- }
2141
2185
  export {
2142
2186
  BitField,
2143
2187
  Callback,
@@ -2171,6 +2215,7 @@ export {
2171
2215
  createBucketReducer,
2172
2216
  createGroupReducer,
2173
2217
  createSetDispatch,
2218
+ createUrl,
2174
2219
  decamelize,
2175
2220
  deepMapValues,
2176
2221
  deepMapValuesAsync,
@@ -2256,6 +2301,7 @@ export {
2256
2301
  toFallback,
2257
2302
  toHue,
2258
2303
  tracer,
2304
+ trim,
2259
2305
  visitValues
2260
2306
  };
2261
2307
  //# sourceMappingURL=index.mjs.map