@replit/river 0.203.1 → 0.204.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.
Files changed (49) hide show
  1. package/dist/{chunk-T4WWG42M.js → chunk-3V7VMJNA.js} +19 -16
  2. package/dist/chunk-3V7VMJNA.js.map +1 -0
  3. package/dist/{chunk-TMOCPK63.js → chunk-6YUDEFCS.js} +42 -8
  4. package/dist/chunk-6YUDEFCS.js.map +1 -0
  5. package/dist/chunk-LJCR3ADI.js +1955 -0
  6. package/dist/chunk-LJCR3ADI.js.map +1 -0
  7. package/dist/{chunk-2FHJVQBE.js → chunk-QSW7AWEP.js} +5 -11
  8. package/dist/chunk-QSW7AWEP.js.map +1 -0
  9. package/dist/{chunk-7MKTFUJO.js → chunk-YODW2ZMU.js} +4 -3
  10. package/dist/chunk-YODW2ZMU.js.map +1 -0
  11. package/dist/{client-5d2e41a3.d.ts → client-0c0a4a5e.d.ts} +1 -1
  12. package/dist/{connection-11a4af0f.d.ts → connection-7b62dfec.d.ts} +1 -1
  13. package/dist/{context-d6dd8a1a.d.ts → context-3cf1ed4e.d.ts} +8 -2
  14. package/dist/router/index.cjs +23 -12
  15. package/dist/router/index.cjs.map +1 -1
  16. package/dist/router/index.d.cts +7 -7
  17. package/dist/router/index.d.ts +7 -7
  18. package/dist/router/index.js +18 -1611
  19. package/dist/router/index.js.map +1 -1
  20. package/dist/{server-e46399f9.d.ts → server-a287de55.d.ts} +1 -1
  21. package/dist/{services-56cbea0d.d.ts → services-51980ecd.d.ts} +2 -2
  22. package/dist/testUtil/index.cjs +72 -32
  23. package/dist/testUtil/index.cjs.map +1 -1
  24. package/dist/testUtil/index.d.cts +4 -4
  25. package/dist/testUtil/index.d.ts +4 -4
  26. package/dist/testUtil/index.js +8 -6
  27. package/dist/testUtil/index.js.map +1 -1
  28. package/dist/transport/impls/ws/client.cjs +72 -40
  29. package/dist/transport/impls/ws/client.cjs.map +1 -1
  30. package/dist/transport/impls/ws/client.d.cts +3 -3
  31. package/dist/transport/impls/ws/client.d.ts +3 -3
  32. package/dist/transport/impls/ws/client.js +4 -4
  33. package/dist/transport/impls/ws/server.cjs +58 -28
  34. package/dist/transport/impls/ws/server.cjs.map +1 -1
  35. package/dist/transport/impls/ws/server.d.cts +3 -3
  36. package/dist/transport/impls/ws/server.d.ts +3 -3
  37. package/dist/transport/impls/ws/server.js +4 -4
  38. package/dist/transport/index.cjs +70 -31
  39. package/dist/transport/index.cjs.map +1 -1
  40. package/dist/transport/index.d.cts +3 -3
  41. package/dist/transport/index.d.ts +3 -3
  42. package/dist/transport/index.js +4 -4
  43. package/package.json +2 -2
  44. package/dist/chunk-2FHJVQBE.js.map +0 -1
  45. package/dist/chunk-7MKTFUJO.js.map +0 -1
  46. package/dist/chunk-AK7NTFAM.js +0 -331
  47. package/dist/chunk-AK7NTFAM.js.map +0 -1
  48. package/dist/chunk-T4WWG42M.js.map +0 -1
  49. package/dist/chunk-TMOCPK63.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import { c as TransportClientId } from '../../../message-3def9ded.js';
2
2
  import { WebSocketServer } from 'ws';
3
- import { W as WebSocketConnection } from '../../../connection-11a4af0f.js';
3
+ import { W as WebSocketConnection } from '../../../connection-7b62dfec.js';
4
4
  import { W as WsLike } from '../../../wslike-e0b32dd5.js';
5
- import { S as ServerTransport } from '../../../server-e46399f9.js';
6
- import { c as ProvidedServerTransportOptions } from '../../../context-d6dd8a1a.js';
5
+ import { S as ServerTransport } from '../../../server-a287de55.js';
6
+ import { c as ProvidedServerTransportOptions } from '../../../context-3cf1ed4e.js';
7
7
  import { IncomingMessage } from 'http';
8
8
  import '@sinclair/typebox/value';
9
9
  import '@sinclair/typebox';
@@ -1,9 +1,9 @@
1
1
  import { c as TransportClientId } from '../../../message-3def9ded.js';
2
2
  import { WebSocketServer } from 'ws';
3
- import { W as WebSocketConnection } from '../../../connection-11a4af0f.js';
3
+ import { W as WebSocketConnection } from '../../../connection-7b62dfec.js';
4
4
  import { W as WsLike } from '../../../wslike-e0b32dd5.js';
5
- import { S as ServerTransport } from '../../../server-e46399f9.js';
6
- import { c as ProvidedServerTransportOptions } from '../../../context-d6dd8a1a.js';
5
+ import { S as ServerTransport } from '../../../server-a287de55.js';
6
+ import { c as ProvidedServerTransportOptions } from '../../../context-3cf1ed4e.js';
7
7
  import { IncomingMessage } from 'http';
8
8
  import '@sinclair/typebox/value';
9
9
  import '@sinclair/typebox';
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ServerTransport
3
- } from "../../../chunk-7MKTFUJO.js";
3
+ } from "../../../chunk-YODW2ZMU.js";
4
4
  import {
5
5
  WebSocketConnection
6
- } from "../../../chunk-2FHJVQBE.js";
7
- import "../../../chunk-TMOCPK63.js";
8
- import "../../../chunk-AK7NTFAM.js";
6
+ } from "../../../chunk-QSW7AWEP.js";
7
+ import "../../../chunk-6YUDEFCS.js";
8
+ import "../../../chunk-LJCR3ADI.js";
9
9
  import "../../../chunk-WBGKPIFS.js";
10
10
  import "../../../chunk-AJGIY2UB.js";
11
11
 
@@ -429,12 +429,14 @@ var StateMachineState = class {
429
429
  var CommonSession = class extends StateMachineState {
430
430
  from;
431
431
  options;
432
+ tracer;
432
433
  log;
433
- constructor({ from, options, log }) {
434
+ constructor({ from, options, log, tracer }) {
434
435
  super();
435
436
  this.from = from;
436
437
  this.options = options;
437
438
  this.log = log;
439
+ this.tracer = tracer;
438
440
  }
439
441
  parseMsg(msg) {
440
442
  const parsedMsg = this.options.codec.fromBuffer(msg);
@@ -619,8 +621,16 @@ var SessionNoConnection = class extends IdentifiedSessionWithGracePeriod {
619
621
  // tracing/index.ts
620
622
  var import_api2 = require("@opentelemetry/api");
621
623
 
624
+ // transport/stringifyError.ts
625
+ function coerceErrorString(err) {
626
+ if (err instanceof Error) {
627
+ return err.message || "unknown reason";
628
+ }
629
+ return `[coerced to error] ${String(err)}`;
630
+ }
631
+
622
632
  // package.json
623
- var version = "0.203.1";
633
+ var version = "0.204.0";
624
634
 
625
635
  // tracing/index.ts
626
636
  function getPropagationContext(ctx) {
@@ -631,10 +641,10 @@ function getPropagationContext(ctx) {
631
641
  import_api2.propagation.inject(ctx, tracing);
632
642
  return tracing;
633
643
  }
634
- function createSessionTelemetryInfo(sessionId, to, from, propagationCtx) {
644
+ function createSessionTelemetryInfo(tracer, sessionId, to, from, propagationCtx) {
635
645
  const parentCtx = propagationCtx ? import_api2.propagation.extract(import_api2.context.active(), propagationCtx) : import_api2.context.active();
636
646
  const span = tracer.startSpan(
637
- `session ${sessionId}`,
647
+ `river.session.${sessionId}`,
638
648
  {
639
649
  attributes: {
640
650
  component: "river",
@@ -648,7 +658,7 @@ function createSessionTelemetryInfo(sessionId, to, from, propagationCtx) {
648
658
  const ctx = import_api2.trace.setSpan(parentCtx, span);
649
659
  return { span, ctx };
650
660
  }
651
- function createConnectionTelemetryInfo(connection, info) {
661
+ function createConnectionTelemetryInfo(tracer, connection, info) {
652
662
  const span = tracer.startSpan(
653
663
  `connection ${connection.id}`,
654
664
  {
@@ -663,8 +673,9 @@ function createConnectionTelemetryInfo(connection, info) {
663
673
  const ctx = import_api2.trace.setSpan(info.ctx, span);
664
674
  return { span, ctx };
665
675
  }
666
- var tracer = import_api2.trace.getTracer("river", version);
667
- var tracing_default = tracer;
676
+ function getTracer() {
677
+ return import_api2.trace.getTracer("river", version);
678
+ }
668
679
 
669
680
  // transport/sessionStateMachine/SessionWaitingForHandshake.ts
670
681
  var SessionWaitingForHandshake = class extends CommonSession {
@@ -950,6 +961,7 @@ function inheritSharedSession(session) {
950
961
  telemetry: session.telemetry,
951
962
  options: session.options,
952
963
  log: session.log,
964
+ tracer: session.tracer,
953
965
  protocolVersion: session.protocolVersion
954
966
  };
955
967
  }
@@ -961,9 +973,9 @@ function inheritSharedSessionWithGrace(session) {
961
973
  }
962
974
  var SessionStateGraph = {
963
975
  entrypoints: {
964
- NoConnection: (to, from, listeners, options, protocolVersion, log) => {
976
+ NoConnection: (to, from, listeners, options, protocolVersion, tracer, log) => {
965
977
  const id = `session-${generateId()}`;
966
- const telemetry = createSessionTelemetryInfo(id, to, from);
978
+ const telemetry = createSessionTelemetryInfo(tracer, id, to, from);
967
979
  const sendBuffer = [];
968
980
  const session = new SessionNoConnection({
969
981
  listeners,
@@ -977,6 +989,7 @@ var SessionStateGraph = {
977
989
  telemetry,
978
990
  options,
979
991
  protocolVersion,
992
+ tracer,
980
993
  log
981
994
  });
982
995
  session.log?.info(`session ${session.id} created in NoConnection state`, {
@@ -985,12 +998,13 @@ var SessionStateGraph = {
985
998
  });
986
999
  return session;
987
1000
  },
988
- WaitingForHandshake: (from, conn, listeners, options, log) => {
1001
+ WaitingForHandshake: (from, conn, listeners, options, tracer, log) => {
989
1002
  const session = new SessionWaitingForHandshake({
990
1003
  conn,
991
1004
  listeners,
992
1005
  from,
993
1006
  options,
1007
+ tracer,
994
1008
  log
995
1009
  });
996
1010
  session.log?.info(`session created in WaitingForHandshake state`, {
@@ -1046,7 +1060,11 @@ var SessionStateGraph = {
1046
1060
  listeners,
1047
1061
  ...carriedState
1048
1062
  });
1049
- conn.telemetry = createConnectionTelemetryInfo(conn, session.telemetry);
1063
+ conn.telemetry = createConnectionTelemetryInfo(
1064
+ session.tracer,
1065
+ conn,
1066
+ session.telemetry
1067
+ );
1050
1068
  session.log?.info(
1051
1069
  `session ${session.id} transition from Connecting to Handshaking`,
1052
1070
  {
@@ -1090,12 +1108,14 @@ var SessionStateGraph = {
1090
1108
  ack: 0,
1091
1109
  sendBuffer: [],
1092
1110
  telemetry: createSessionTelemetryInfo(
1111
+ pendingSession.tracer,
1093
1112
  sessionId,
1094
1113
  to,
1095
1114
  from,
1096
1115
  propagationCtx
1097
1116
  ),
1098
1117
  options,
1118
+ tracer: pendingSession.tracer,
1099
1119
  log: pendingSession.log,
1100
1120
  protocolVersion
1101
1121
  }
@@ -1107,7 +1127,11 @@ var SessionStateGraph = {
1107
1127
  listeners,
1108
1128
  ...carriedState
1109
1129
  });
1110
- conn.telemetry = createConnectionTelemetryInfo(conn, session.telemetry);
1130
+ conn.telemetry = createConnectionTelemetryInfo(
1131
+ session.tracer,
1132
+ conn,
1133
+ session.telemetry
1134
+ );
1111
1135
  session.log?.info(
1112
1136
  `session ${session.id} transition from WaitingForHandshake to Connected`,
1113
1137
  {
@@ -1252,6 +1276,7 @@ var Transport = class {
1252
1276
  */
1253
1277
  options;
1254
1278
  log;
1279
+ tracer;
1255
1280
  sessions;
1256
1281
  /**
1257
1282
  * Creates a new Transport instance.
@@ -1264,6 +1289,7 @@ var Transport = class {
1264
1289
  this.clientId = clientId;
1265
1290
  this.status = "open";
1266
1291
  this.sessions = /* @__PURE__ */ new Map();
1292
+ this.tracer = getTracer();
1267
1293
  }
1268
1294
  bindLogger(fn, level) {
1269
1295
  if (typeof fn === "function") {
@@ -1516,14 +1542,6 @@ var LeakyBucketRateLimit = class {
1516
1542
  }
1517
1543
  };
1518
1544
 
1519
- // transport/stringifyError.ts
1520
- function coerceErrorString(err) {
1521
- if (err instanceof Error) {
1522
- return err.message || "unknown reason";
1523
- }
1524
- return `[coerced to error] ${String(err)}`;
1525
- }
1526
-
1527
1545
  // transport/client.ts
1528
1546
  var import_value2 = require("@sinclair/typebox/value");
1529
1547
  var ClientTransport = class extends Transport {
@@ -1580,6 +1598,7 @@ var ClientTransport = class extends Transport {
1580
1598
  },
1581
1599
  this.options,
1582
1600
  currentProtocolVersion,
1601
+ this.tracer,
1583
1602
  this.log
1584
1603
  );
1585
1604
  this.createSession(session);
@@ -1789,18 +1808,21 @@ var ClientTransport = class extends Transport {
1789
1808
  }
1790
1809
  }
1791
1810
  onBackoffFinished(session) {
1792
- const connPromise = tracing_default.startActiveSpan("connect", async (span) => {
1793
- try {
1794
- return await this.createNewOutgoingConnection(session.to);
1795
- } catch (err) {
1796
- const errStr = coerceErrorString(err);
1797
- span.recordException(errStr);
1798
- span.setStatus({ code: import_api4.SpanStatusCode.ERROR });
1799
- throw err;
1800
- } finally {
1801
- span.end();
1811
+ const connPromise = session.tracer.startActiveSpan(
1812
+ "connect",
1813
+ async (span) => {
1814
+ try {
1815
+ return await this.createNewOutgoingConnection(session.to);
1816
+ } catch (err) {
1817
+ const errStr = coerceErrorString(err);
1818
+ span.recordException(errStr);
1819
+ span.setStatus({ code: import_api4.SpanStatusCode.ERROR });
1820
+ throw err;
1821
+ } finally {
1822
+ span.end();
1823
+ }
1802
1824
  }
1803
- });
1825
+ );
1804
1826
  const connectingSession = ClientSessionStateGraph.transition.BackingOffToConnecting(
1805
1827
  session,
1806
1828
  connPromise,
@@ -1973,6 +1995,7 @@ var ServerTransport = class extends Transport {
1973
1995
  }
1974
1996
  },
1975
1997
  this.options,
1998
+ this.tracer,
1976
1999
  this.log
1977
2000
  );
1978
2001
  this.pendingSessions.add(pendingSession);
@@ -2255,6 +2278,22 @@ var Connection = class {
2255
2278
  get errorListeners() {
2256
2279
  return [...this._errorListeners];
2257
2280
  }
2281
+ onData(msg) {
2282
+ for (const cb of this.dataListeners) {
2283
+ cb(msg);
2284
+ }
2285
+ }
2286
+ onError(err) {
2287
+ for (const cb of this.errorListeners) {
2288
+ cb(err);
2289
+ }
2290
+ }
2291
+ onClose() {
2292
+ for (const cb of this.closeListeners) {
2293
+ cb();
2294
+ }
2295
+ this.telemetry?.span.end();
2296
+ }
2258
2297
  /**
2259
2298
  * Handle adding a callback for when a message is received.
2260
2299
  * @param msg The message that was received.