@replit/river 0.213.1 → 0.214.0

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.
@@ -20,7 +20,7 @@ import {
20
20
  handshakeResponseMessage,
21
21
  isAcceptedProtocolVersion,
22
22
  isAck
23
- } from "./chunk-X4PP65DW.js";
23
+ } from "./chunk-LECVFB2G.js";
24
24
 
25
25
  // transport/events.ts
26
26
  var ProtocolError = {
@@ -2345,4 +2345,4 @@ export {
2345
2345
  WebSocketConnection,
2346
2346
  CodecMessageAdapter
2347
2347
  };
2348
- //# sourceMappingURL=chunk-2A645F27.js.map
2348
+ //# sourceMappingURL=chunk-DRYCLL6N.js.map
@@ -1291,6 +1291,7 @@ function coerceErrorString(err) {
1291
1291
  }
1292
1292
 
1293
1293
  // router/server.ts
1294
+ import { context as otelContext, trace as trace2 } from "@opentelemetry/api";
1294
1295
  var RiverServer = class {
1295
1296
  transport;
1296
1297
  contextMap;
@@ -1554,9 +1555,49 @@ var RiverServer = class {
1554
1555
  resWritable.close();
1555
1556
  cancelStream(streamId, result);
1556
1557
  };
1558
+ const deferredCleanups = [];
1559
+ let cleanupsHaveRun = false;
1560
+ const runCleanupSafe = async (fn) => {
1561
+ try {
1562
+ await fn();
1563
+ } catch (err) {
1564
+ span.recordException(
1565
+ err instanceof Error ? err : new Error(coerceErrorString(err))
1566
+ );
1567
+ }
1568
+ };
1569
+ const deferCleanup = (fn) => {
1570
+ if (cleanupsHaveRun) {
1571
+ void runCleanupSafe(fn);
1572
+ return;
1573
+ }
1574
+ deferredCleanups.push(fn);
1575
+ };
1576
+ const runDeferredCleanups = async () => {
1577
+ if (deferredCleanups.length === 0) {
1578
+ cleanupsHaveRun = true;
1579
+ span.end();
1580
+ return;
1581
+ }
1582
+ const cleanupSpan = getTracer().startSpan(
1583
+ "river.cleanup",
1584
+ {},
1585
+ trace2.setSpan(otelContext.active(), span)
1586
+ );
1587
+ try {
1588
+ for (let fn = deferredCleanups.pop(); fn; fn = deferredCleanups.pop()) {
1589
+ await runCleanupSafe(fn);
1590
+ }
1591
+ } finally {
1592
+ cleanupsHaveRun = true;
1593
+ cleanupSpan.end();
1594
+ span.end();
1595
+ }
1596
+ };
1557
1597
  const cleanup = () => {
1558
1598
  finishedController.abort();
1559
1599
  this.streams.delete(streamId);
1600
+ void runDeferredCleanups();
1560
1601
  };
1561
1602
  const procClosesWithResponse = procedure.type === "rpc" || procedure.type === "upload";
1562
1603
  const reqReadable = new ReadableImpl();
@@ -1645,6 +1686,7 @@ var RiverServer = class {
1645
1686
  onServerCancel(errRes);
1646
1687
  return Err(errRes);
1647
1688
  },
1689
+ deferCleanup,
1648
1690
  signal: finishedController.signal
1649
1691
  };
1650
1692
  const middlewareContext = {
@@ -1653,6 +1695,7 @@ var RiverServer = class {
1653
1695
  from,
1654
1696
  metadata: sessionMetadata,
1655
1697
  span,
1698
+ deferCleanup,
1656
1699
  signal: finishedController.signal,
1657
1700
  streamId,
1658
1701
  procedureName,
@@ -1672,8 +1715,6 @@ var RiverServer = class {
1672
1715
  resWritable.write(responsePayload);
1673
1716
  } catch (err) {
1674
1717
  onHandlerError(err, span);
1675
- } finally {
1676
- span.end();
1677
1718
  }
1678
1719
  break;
1679
1720
  case "stream":
@@ -1686,8 +1727,6 @@ var RiverServer = class {
1686
1727
  });
1687
1728
  } catch (err) {
1688
1729
  onHandlerError(err, span);
1689
- } finally {
1690
- span.end();
1691
1730
  }
1692
1731
  break;
1693
1732
  case "subscription":
@@ -1699,8 +1738,6 @@ var RiverServer = class {
1699
1738
  });
1700
1739
  } catch (err) {
1701
1740
  onHandlerError(err, span);
1702
- } finally {
1703
- span.end();
1704
1741
  }
1705
1742
  break;
1706
1743
  case "upload":
@@ -1716,8 +1753,6 @@ var RiverServer = class {
1716
1753
  resWritable.write(responsePayload);
1717
1754
  } catch (err) {
1718
1755
  onHandlerError(err, span);
1719
- } finally {
1720
- span.end();
1721
1756
  }
1722
1757
  break;
1723
1758
  }
@@ -2019,7 +2054,7 @@ function createServerHandshakeOptions(schema, validate) {
2019
2054
  }
2020
2055
 
2021
2056
  // package.json
2022
- var version = "0.213.1";
2057
+ var version = "0.214.0";
2023
2058
 
2024
2059
  export {
2025
2060
  generateId,
@@ -2060,4 +2095,4 @@ export {
2060
2095
  createConnectionTelemetryInfo,
2061
2096
  getTracer
2062
2097
  };
2063
- //# sourceMappingURL=chunk-X4PP65DW.js.map
2098
+ //# sourceMappingURL=chunk-LECVFB2G.js.map