@replit/river 0.213.0 → 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.
@@ -2,9 +2,9 @@ import {
2
2
  BinaryCodec,
3
3
  CodecMessageAdapter,
4
4
  NaiveJsonCodec
5
- } from "../chunk-WBBJI3NJ.js";
5
+ } from "../chunk-DRYCLL6N.js";
6
6
  import "../chunk-CC7RN7GI.js";
7
- import "../chunk-ED2QVVIW.js";
7
+ import "../chunk-LECVFB2G.js";
8
8
  export {
9
9
  BinaryCodec,
10
10
  CodecMessageAdapter,
@@ -927,6 +927,9 @@ function recordRiverError(span, error) {
927
927
  "river.error_message": error.message
928
928
  });
929
929
  }
930
+ function getTracer() {
931
+ return import_api.trace.getTracer("river", version);
932
+ }
930
933
 
931
934
  // router/client.ts
932
935
  var import_value = require("@sinclair/typebox/value");
@@ -1238,6 +1241,7 @@ function coerceErrorString(err) {
1238
1241
  }
1239
1242
 
1240
1243
  // router/server.ts
1244
+ var import_api2 = require("@opentelemetry/api");
1241
1245
  var RiverServer = class {
1242
1246
  transport;
1243
1247
  contextMap;
@@ -1501,9 +1505,49 @@ var RiverServer = class {
1501
1505
  resWritable.close();
1502
1506
  cancelStream(streamId, result);
1503
1507
  };
1508
+ const deferredCleanups = [];
1509
+ let cleanupsHaveRun = false;
1510
+ const runCleanupSafe = async (fn) => {
1511
+ try {
1512
+ await fn();
1513
+ } catch (err) {
1514
+ span.recordException(
1515
+ err instanceof Error ? err : new Error(coerceErrorString(err))
1516
+ );
1517
+ }
1518
+ };
1519
+ const deferCleanup = (fn) => {
1520
+ if (cleanupsHaveRun) {
1521
+ void runCleanupSafe(fn);
1522
+ return;
1523
+ }
1524
+ deferredCleanups.push(fn);
1525
+ };
1526
+ const runDeferredCleanups = async () => {
1527
+ if (deferredCleanups.length === 0) {
1528
+ cleanupsHaveRun = true;
1529
+ span.end();
1530
+ return;
1531
+ }
1532
+ const cleanupSpan = getTracer().startSpan(
1533
+ "river.cleanup",
1534
+ {},
1535
+ import_api2.trace.setSpan(import_api2.context.active(), span)
1536
+ );
1537
+ try {
1538
+ for (let fn = deferredCleanups.pop(); fn; fn = deferredCleanups.pop()) {
1539
+ await runCleanupSafe(fn);
1540
+ }
1541
+ } finally {
1542
+ cleanupsHaveRun = true;
1543
+ cleanupSpan.end();
1544
+ span.end();
1545
+ }
1546
+ };
1504
1547
  const cleanup = () => {
1505
1548
  finishedController.abort();
1506
1549
  this.streams.delete(streamId);
1550
+ void runDeferredCleanups();
1507
1551
  };
1508
1552
  const procClosesWithResponse = procedure.type === "rpc" || procedure.type === "upload";
1509
1553
  const reqReadable = new ReadableImpl();
@@ -1592,6 +1636,7 @@ var RiverServer = class {
1592
1636
  onServerCancel(errRes);
1593
1637
  return Err(errRes);
1594
1638
  },
1639
+ deferCleanup,
1595
1640
  signal: finishedController.signal
1596
1641
  };
1597
1642
  const middlewareContext = {
@@ -1600,6 +1645,7 @@ var RiverServer = class {
1600
1645
  from,
1601
1646
  metadata: sessionMetadata,
1602
1647
  span,
1648
+ deferCleanup,
1603
1649
  signal: finishedController.signal,
1604
1650
  streamId,
1605
1651
  procedureName,
@@ -1619,8 +1665,6 @@ var RiverServer = class {
1619
1665
  resWritable.write(responsePayload);
1620
1666
  } catch (err) {
1621
1667
  onHandlerError(err, span);
1622
- } finally {
1623
- span.end();
1624
1668
  }
1625
1669
  break;
1626
1670
  case "stream":
@@ -1633,8 +1677,6 @@ var RiverServer = class {
1633
1677
  });
1634
1678
  } catch (err) {
1635
1679
  onHandlerError(err, span);
1636
- } finally {
1637
- span.end();
1638
1680
  }
1639
1681
  break;
1640
1682
  case "subscription":
@@ -1646,8 +1688,6 @@ var RiverServer = class {
1646
1688
  });
1647
1689
  } catch (err) {
1648
1690
  onHandlerError(err, span);
1649
- } finally {
1650
- span.end();
1651
1691
  }
1652
1692
  break;
1653
1693
  case "upload":
@@ -1663,8 +1703,6 @@ var RiverServer = class {
1663
1703
  resWritable.write(responsePayload);
1664
1704
  } catch (err) {
1665
1705
  onHandlerError(err, span);
1666
- } finally {
1667
- span.end();
1668
1706
  }
1669
1707
  break;
1670
1708
  }
@@ -1966,7 +2004,7 @@ function createServerHandshakeOptions(schema, validate) {
1966
2004
  }
1967
2005
 
1968
2006
  // package.json
1969
- var version = "0.213.0";
2007
+ var version = "0.214.0";
1970
2008
  // Annotate the CommonJS export names for ESM import in node:
1971
2009
  0 && (module.exports = {
1972
2010
  CANCEL_CODE,