@synnaxlabs/x 0.49.2 → 0.49.3
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.
- package/.turbo/turbo-build.log +5 -5
- package/dist/src/telem/telem.d.ts +5 -5
- package/dist/src/telem/telem.d.ts.map +1 -1
- package/dist/x.cjs +5 -5
- package/dist/x.js +93 -99
- package/package.json +1 -1
- package/src/telem/telem.spec.ts +13 -25
- package/src/telem/telem.ts +8 -22
- package/tsconfig.tsbuildinfo +1 -1
package/src/telem/telem.spec.ts
CHANGED
|
@@ -1478,7 +1478,7 @@ describe("TimeRange", () => {
|
|
|
1478
1478
|
});
|
|
1479
1479
|
});
|
|
1480
1480
|
|
|
1481
|
-
describe("
|
|
1481
|
+
describe("merge", () => {
|
|
1482
1482
|
it("should merge overlapping time ranges", () => {
|
|
1483
1483
|
const trs = [
|
|
1484
1484
|
new TimeRange(TimeSpan.seconds(1), TimeSpan.seconds(4)),
|
|
@@ -1486,45 +1486,33 @@ describe("TimeRange", () => {
|
|
|
1486
1486
|
new TimeRange(TimeSpan.seconds(3), TimeSpan.seconds(5)),
|
|
1487
1487
|
new TimeRange(TimeSpan.seconds(6), TimeSpan.seconds(7)),
|
|
1488
1488
|
];
|
|
1489
|
-
const expected =
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
];
|
|
1493
|
-
const simplified = TimeRange.simplify(trs);
|
|
1494
|
-
expect(simplified).toEqual(expected);
|
|
1489
|
+
const expected = new TimeRange(TimeSpan.seconds(1), TimeSpan.seconds(7));
|
|
1490
|
+
const merged = TimeRange.merge(...trs);
|
|
1491
|
+
expect(merged).toEqual(expected);
|
|
1495
1492
|
});
|
|
1496
1493
|
it("should merge time ranges that are adjacent", () => {
|
|
1497
1494
|
const trs = [
|
|
1498
1495
|
new TimeRange(TimeSpan.seconds(1), TimeSpan.seconds(4)),
|
|
1499
1496
|
new TimeRange(TimeSpan.seconds(4), TimeSpan.seconds(5)),
|
|
1500
1497
|
];
|
|
1501
|
-
const expected =
|
|
1502
|
-
const
|
|
1503
|
-
expect(
|
|
1504
|
-
});
|
|
1505
|
-
it("should remove zero length time ranges", () => {
|
|
1506
|
-
const trs = [
|
|
1507
|
-
new TimeRange(TimeSpan.seconds(1), TimeSpan.seconds(4)),
|
|
1508
|
-
new TimeRange(TimeSpan.seconds(5), TimeSpan.seconds(5)),
|
|
1509
|
-
];
|
|
1510
|
-
const expected = [new TimeRange(TimeSpan.seconds(1), TimeSpan.seconds(4))];
|
|
1511
|
-
const simplified = TimeRange.simplify(trs);
|
|
1512
|
-
expect(simplified).toEqual(expected);
|
|
1498
|
+
const expected = new TimeRange(TimeSpan.seconds(1), TimeSpan.seconds(5));
|
|
1499
|
+
const merged = TimeRange.merge(...trs);
|
|
1500
|
+
expect(merged).toEqual(expected);
|
|
1513
1501
|
});
|
|
1514
1502
|
it("should make ranges valid by swapping start and end", () => {
|
|
1515
1503
|
const trs = [
|
|
1516
1504
|
new TimeRange(TimeSpan.seconds(4), TimeSpan.seconds(1)),
|
|
1517
1505
|
new TimeRange(TimeSpan.seconds(2), TimeSpan.seconds(3)),
|
|
1518
1506
|
];
|
|
1519
|
-
const expected =
|
|
1520
|
-
const
|
|
1521
|
-
expect(
|
|
1507
|
+
const expected = new TimeRange(TimeSpan.seconds(1), TimeSpan.seconds(4));
|
|
1508
|
+
const merged = TimeRange.merge(...trs);
|
|
1509
|
+
expect(merged).toEqual(expected);
|
|
1522
1510
|
});
|
|
1523
1511
|
it("should work with zero ranges", () => {
|
|
1524
1512
|
const trs: TimeRange[] = [];
|
|
1525
|
-
const expected
|
|
1526
|
-
const
|
|
1527
|
-
expect(
|
|
1513
|
+
const expected = TimeRange.MAX.swap();
|
|
1514
|
+
const merged = TimeRange.merge(...trs);
|
|
1515
|
+
expect(merged).toEqual(expected);
|
|
1528
1516
|
});
|
|
1529
1517
|
});
|
|
1530
1518
|
describe("numericBounds", () => {
|
package/src/telem/telem.ts
CHANGED
|
@@ -1680,28 +1680,14 @@ export class TimeRange implements primitive.Stringer {
|
|
|
1680
1680
|
}
|
|
1681
1681
|
|
|
1682
1682
|
/**
|
|
1683
|
-
*
|
|
1684
|
-
*
|
|
1685
|
-
*
|
|
1686
|
-
* @
|
|
1687
|
-
*
|
|
1688
|
-
*/
|
|
1689
|
-
static
|
|
1690
|
-
return ranges
|
|
1691
|
-
.map((r) => r.makeValid())
|
|
1692
|
-
.sort((a, b) => TimeRange.sort(a, b))
|
|
1693
|
-
.reduce<TimeRange[]>((simplified, range) => {
|
|
1694
|
-
if (range.span.isZero) return simplified;
|
|
1695
|
-
if (simplified.length === 0) {
|
|
1696
|
-
simplified.push(range);
|
|
1697
|
-
return simplified;
|
|
1698
|
-
}
|
|
1699
|
-
const last = simplified[simplified.length - 1];
|
|
1700
|
-
if (last.overlapsWith(range) || last.end.equals(range.start))
|
|
1701
|
-
last.end = TimeStamp.max(last.end, range.end);
|
|
1702
|
-
else simplified.push(range);
|
|
1703
|
-
return simplified;
|
|
1704
|
-
}, []);
|
|
1683
|
+
* Merges the given time ranges into a single time range.
|
|
1684
|
+
*
|
|
1685
|
+
* @param ranges - The list of `CrudeTimeRange`s to merge.
|
|
1686
|
+
* @returns A new `TimeRange` that is the union of the given time ranges - the start
|
|
1687
|
+
* is the minimum of the start times and the end is the maximum of the end times.
|
|
1688
|
+
*/
|
|
1689
|
+
static merge(...ranges: CrudeTimeRange[]): TimeRange {
|
|
1690
|
+
return TimeRange.max(...ranges.map((r) => new TimeRange(r).makeValid()));
|
|
1705
1691
|
}
|
|
1706
1692
|
}
|
|
1707
1693
|
|