@replit/river 0.203.0 → 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 (55) hide show
  1. package/dist/{chunk-DGT3MPD4.js → chunk-3V7VMJNA.js} +19 -16
  2. package/dist/chunk-3V7VMJNA.js.map +1 -0
  3. package/dist/{chunk-FG22HHCY.js → chunk-6YUDEFCS.js} +47 -10
  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-XBPEUVWN.js → chunk-QSW7AWEP.js} +5 -11
  8. package/dist/chunk-QSW7AWEP.js.map +1 -0
  9. package/dist/{chunk-LHH5LQ7C.js → chunk-WBGKPIFS.js} +11 -1
  10. package/dist/chunk-WBGKPIFS.js.map +1 -0
  11. package/dist/{chunk-D5EIDBUT.js → chunk-YODW2ZMU.js} +4 -3
  12. package/dist/chunk-YODW2ZMU.js.map +1 -0
  13. package/dist/{client-5d2e41a3.d.ts → client-0c0a4a5e.d.ts} +1 -1
  14. package/dist/{connection-11a4af0f.d.ts → connection-7b62dfec.d.ts} +1 -1
  15. package/dist/{context-d6dd8a1a.d.ts → context-3cf1ed4e.d.ts} +8 -2
  16. package/dist/logging/index.cjs +1 -0
  17. package/dist/logging/index.cjs.map +1 -1
  18. package/dist/logging/index.js +1 -1
  19. package/dist/router/index.cjs +109 -111
  20. package/dist/router/index.cjs.map +1 -1
  21. package/dist/router/index.d.cts +7 -7
  22. package/dist/router/index.d.ts +7 -7
  23. package/dist/router/index.js +18 -1629
  24. package/dist/router/index.js.map +1 -1
  25. package/dist/{server-e46399f9.d.ts → server-a287de55.d.ts} +1 -1
  26. package/dist/{services-56cbea0d.d.ts → services-51980ecd.d.ts} +2 -2
  27. package/dist/testUtil/index.cjs +103 -36
  28. package/dist/testUtil/index.cjs.map +1 -1
  29. package/dist/testUtil/index.d.cts +4 -4
  30. package/dist/testUtil/index.d.ts +4 -4
  31. package/dist/testUtil/index.js +9 -7
  32. package/dist/testUtil/index.js.map +1 -1
  33. package/dist/transport/impls/ws/client.cjs +107 -48
  34. package/dist/transport/impls/ws/client.cjs.map +1 -1
  35. package/dist/transport/impls/ws/client.d.cts +3 -3
  36. package/dist/transport/impls/ws/client.d.ts +3 -3
  37. package/dist/transport/impls/ws/client.js +5 -5
  38. package/dist/transport/impls/ws/server.cjs +92 -35
  39. package/dist/transport/impls/ws/server.cjs.map +1 -1
  40. package/dist/transport/impls/ws/server.d.cts +3 -3
  41. package/dist/transport/impls/ws/server.d.ts +3 -3
  42. package/dist/transport/impls/ws/server.js +5 -5
  43. package/dist/transport/index.cjs +107 -41
  44. package/dist/transport/index.cjs.map +1 -1
  45. package/dist/transport/index.d.cts +3 -3
  46. package/dist/transport/index.d.ts +3 -3
  47. package/dist/transport/index.js +5 -5
  48. package/package.json +3 -3
  49. package/dist/chunk-D5EIDBUT.js.map +0 -1
  50. package/dist/chunk-DGT3MPD4.js.map +0 -1
  51. package/dist/chunk-FG22HHCY.js.map +0 -1
  52. package/dist/chunk-LHH5LQ7C.js.map +0 -1
  53. package/dist/chunk-SZHNMLKC.js +0 -310
  54. package/dist/chunk-SZHNMLKC.js.map +0 -1
  55. package/dist/chunk-XBPEUVWN.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import { C as ClientTransport } from '../../../client-5d2e41a3.js';
1
+ import { C as ClientTransport } from '../../../client-0c0a4a5e.js';
2
2
  import { c as TransportClientId } from '../../../message-3def9ded.js';
3
- import { b as ProvidedClientTransportOptions } from '../../../context-d6dd8a1a.js';
4
- import { W as WebSocketConnection } from '../../../connection-11a4af0f.js';
3
+ import { b as ProvidedClientTransportOptions } from '../../../context-3cf1ed4e.js';
4
+ import { W as WebSocketConnection } from '../../../connection-7b62dfec.js';
5
5
  import { W as WsLike } from '../../../wslike-e0b32dd5.js';
6
6
  import '@sinclair/typebox/value';
7
7
  import '@sinclair/typebox';
@@ -1,7 +1,7 @@
1
- import { C as ClientTransport } from '../../../client-5d2e41a3.js';
1
+ import { C as ClientTransport } from '../../../client-0c0a4a5e.js';
2
2
  import { c as TransportClientId } from '../../../message-3def9ded.js';
3
- import { b as ProvidedClientTransportOptions } from '../../../context-d6dd8a1a.js';
4
- import { W as WebSocketConnection } from '../../../connection-11a4af0f.js';
3
+ import { b as ProvidedClientTransportOptions } from '../../../context-3cf1ed4e.js';
4
+ import { W as WebSocketConnection } from '../../../connection-7b62dfec.js';
5
5
  import { W as WsLike } from '../../../wslike-e0b32dd5.js';
6
6
  import '@sinclair/typebox/value';
7
7
  import '@sinclair/typebox';
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ClientTransport
3
- } from "../../../chunk-DGT3MPD4.js";
3
+ } from "../../../chunk-3V7VMJNA.js";
4
4
  import {
5
5
  WebSocketConnection
6
- } from "../../../chunk-XBPEUVWN.js";
7
- import "../../../chunk-FG22HHCY.js";
8
- import "../../../chunk-SZHNMLKC.js";
9
- import "../../../chunk-LHH5LQ7C.js";
6
+ } from "../../../chunk-QSW7AWEP.js";
7
+ import "../../../chunk-6YUDEFCS.js";
8
+ import "../../../chunk-LJCR3ADI.js";
9
+ import "../../../chunk-WBGKPIFS.js";
10
10
  import "../../../chunk-AJGIY2UB.js";
11
11
 
12
12
  // transport/impls/ws/client.ts
@@ -40,8 +40,8 @@ var Connection = class {
40
40
  }
41
41
  get loggingMetadata() {
42
42
  const metadata = { connId: this.id };
43
- const spanContext = this.telemetry?.span.spanContext();
44
- if (this.telemetry?.span.isRecording() && spanContext) {
43
+ if (this.telemetry?.span.isRecording()) {
44
+ const spanContext = this.telemetry.span.spanContext();
45
45
  metadata.telemetry = {
46
46
  traceId: spanContext.traceId,
47
47
  spanId: spanContext.spanId
@@ -62,6 +62,22 @@ var Connection = class {
62
62
  get errorListeners() {
63
63
  return [...this._errorListeners];
64
64
  }
65
+ onData(msg) {
66
+ for (const cb of this.dataListeners) {
67
+ cb(msg);
68
+ }
69
+ }
70
+ onError(err) {
71
+ for (const cb of this.errorListeners) {
72
+ cb(err);
73
+ }
74
+ }
75
+ onClose() {
76
+ for (const cb of this.closeListeners) {
77
+ cb();
78
+ }
79
+ this.telemetry?.span.end();
80
+ }
65
81
  /**
66
82
  * Handle adding a callback for when a message is received.
67
83
  * @param msg The message that was received.
@@ -128,18 +144,12 @@ var WebSocketConnection = class extends Connection {
128
144
  const err = new Error(
129
145
  `websocket closed with code and reason: ${code} - ${reason}`
130
146
  );
131
- for (const cb of this.errorListeners) {
132
- cb(err);
133
- }
134
- }
135
- for (const cb of this.closeListeners) {
136
- cb();
147
+ this.onError(err);
137
148
  }
149
+ this.onClose();
138
150
  };
139
151
  this.ws.onmessage = (msg) => {
140
- for (const cb of this.dataListeners) {
141
- cb(msg.data);
142
- }
152
+ this.onData(msg.data);
143
153
  };
144
154
  }
145
155
  send(payload) {
@@ -155,7 +165,7 @@ var WebSocketConnection = class extends Connection {
155
165
  };
156
166
 
157
167
  // transport/server.ts
158
- var import_api3 = require("@opentelemetry/api");
168
+ var import_api4 = require("@opentelemetry/api");
159
169
 
160
170
  // transport/message.ts
161
171
  var import_typebox = require("@sinclair/typebox");
@@ -350,6 +360,7 @@ var defaultServerTransportOptions = {
350
360
  };
351
361
 
352
362
  // logging/log.ts
363
+ var import_api = require("@opentelemetry/api");
353
364
  var LoggingLevels = {
354
365
  debug: -1,
355
366
  info: 0,
@@ -358,6 +369,15 @@ var LoggingLevels = {
358
369
  };
359
370
  var cleanedLogFn = (log) => {
360
371
  return (msg, metadata) => {
372
+ if (metadata && !metadata.telemetry) {
373
+ const span = import_api.trace.getSpan(import_api.context.active());
374
+ if (span) {
375
+ metadata.telemetry = {
376
+ traceId: span.spanContext().traceId,
377
+ spanId: span.spanContext().spanId
378
+ };
379
+ }
380
+ }
361
381
  if (!metadata?.transportMessage) {
362
382
  log(msg, metadata);
363
383
  return;
@@ -501,12 +521,14 @@ var StateMachineState = class {
501
521
  var CommonSession = class extends StateMachineState {
502
522
  from;
503
523
  options;
524
+ tracer;
504
525
  log;
505
- constructor({ from, options, log }) {
526
+ constructor({ from, options, log, tracer }) {
506
527
  super();
507
528
  this.from = from;
508
529
  this.options = options;
509
530
  this.log = log;
531
+ this.tracer = tracer;
510
532
  }
511
533
  parseMsg(msg) {
512
534
  const parsedMsg = this.options.codec.fromBuffer(msg);
@@ -556,13 +578,13 @@ var IdentifiedSession = class extends CommonSession {
556
578
  this.protocolVersion = protocolVersion;
557
579
  }
558
580
  get loggingMetadata() {
559
- const spanContext = this.telemetry.span.spanContext();
560
581
  const metadata = {
561
582
  clientId: this.from,
562
583
  connectedTo: this.to,
563
584
  sessionId: this.id
564
585
  };
565
586
  if (this.telemetry.span.isRecording()) {
587
+ const spanContext = this.telemetry.span.spanContext();
566
588
  metadata.telemetry = {
567
589
  traceId: spanContext.traceId,
568
590
  spanId: spanContext.spanId
@@ -689,16 +711,24 @@ var SessionNoConnection = class extends IdentifiedSessionWithGracePeriod {
689
711
  };
690
712
 
691
713
  // tracing/index.ts
692
- var import_api = require("@opentelemetry/api");
714
+ var import_api2 = require("@opentelemetry/api");
715
+
716
+ // transport/stringifyError.ts
717
+ function coerceErrorString(err) {
718
+ if (err instanceof Error) {
719
+ return err.message || "unknown reason";
720
+ }
721
+ return `[coerced to error] ${String(err)}`;
722
+ }
693
723
 
694
724
  // package.json
695
- var version = "0.203.0";
725
+ var version = "0.204.0";
696
726
 
697
727
  // tracing/index.ts
698
- function createSessionTelemetryInfo(sessionId, to, from, propagationCtx) {
699
- const parentCtx = propagationCtx ? import_api.propagation.extract(import_api.context.active(), propagationCtx) : import_api.context.active();
728
+ function createSessionTelemetryInfo(tracer, sessionId, to, from, propagationCtx) {
729
+ const parentCtx = propagationCtx ? import_api2.propagation.extract(import_api2.context.active(), propagationCtx) : import_api2.context.active();
700
730
  const span = tracer.startSpan(
701
- `session ${sessionId}`,
731
+ `river.session.${sessionId}`,
702
732
  {
703
733
  attributes: {
704
734
  component: "river",
@@ -709,10 +739,27 @@ function createSessionTelemetryInfo(sessionId, to, from, propagationCtx) {
709
739
  },
710
740
  parentCtx
711
741
  );
712
- const ctx = import_api.trace.setSpan(parentCtx, span);
742
+ const ctx = import_api2.trace.setSpan(parentCtx, span);
713
743
  return { span, ctx };
714
744
  }
715
- var tracer = import_api.trace.getTracer("river", version);
745
+ function createConnectionTelemetryInfo(tracer, connection, info) {
746
+ const span = tracer.startSpan(
747
+ `connection ${connection.id}`,
748
+ {
749
+ attributes: {
750
+ component: "river",
751
+ "river.connection.id": connection.id
752
+ },
753
+ links: [{ context: info.span.spanContext() }]
754
+ },
755
+ info.ctx
756
+ );
757
+ const ctx = import_api2.trace.setSpan(info.ctx, span);
758
+ return { span, ctx };
759
+ }
760
+ function getTracer() {
761
+ return import_api2.trace.getTracer("river", version);
762
+ }
716
763
 
717
764
  // transport/sessionStateMachine/SessionWaitingForHandshake.ts
718
765
  var SessionWaitingForHandshake = class extends CommonSession {
@@ -818,7 +865,7 @@ var SessionHandshaking = class extends IdentifiedSessionWithGracePeriod {
818
865
  };
819
866
 
820
867
  // transport/sessionStateMachine/SessionConnected.ts
821
- var import_api2 = require("@opentelemetry/api");
868
+ var import_api3 = require("@opentelemetry/api");
822
869
  var SessionConnected = class extends IdentifiedSession {
823
870
  state = "Connected" /* Connected */;
824
871
  conn;
@@ -922,7 +969,7 @@ var SessionConnected = class extends IdentifiedSession {
922
969
  tags: ["invariant-violation"]
923
970
  });
924
971
  this.telemetry.span.setStatus({
925
- code: import_api2.SpanStatusCode.ERROR,
972
+ code: import_api3.SpanStatusCode.ERROR,
926
973
  message: reason
927
974
  });
928
975
  this.closeConnection();
@@ -998,6 +1045,7 @@ function inheritSharedSession(session) {
998
1045
  telemetry: session.telemetry,
999
1046
  options: session.options,
1000
1047
  log: session.log,
1048
+ tracer: session.tracer,
1001
1049
  protocolVersion: session.protocolVersion
1002
1050
  };
1003
1051
  }
@@ -1009,9 +1057,9 @@ function inheritSharedSessionWithGrace(session) {
1009
1057
  }
1010
1058
  var SessionStateGraph = {
1011
1059
  entrypoints: {
1012
- NoConnection: (to, from, listeners, options, protocolVersion, log) => {
1060
+ NoConnection: (to, from, listeners, options, protocolVersion, tracer, log) => {
1013
1061
  const id = `session-${generateId()}`;
1014
- const telemetry = createSessionTelemetryInfo(id, to, from);
1062
+ const telemetry = createSessionTelemetryInfo(tracer, id, to, from);
1015
1063
  const sendBuffer = [];
1016
1064
  const session = new SessionNoConnection({
1017
1065
  listeners,
@@ -1025,6 +1073,7 @@ var SessionStateGraph = {
1025
1073
  telemetry,
1026
1074
  options,
1027
1075
  protocolVersion,
1076
+ tracer,
1028
1077
  log
1029
1078
  });
1030
1079
  session.log?.info(`session ${session.id} created in NoConnection state`, {
@@ -1033,12 +1082,13 @@ var SessionStateGraph = {
1033
1082
  });
1034
1083
  return session;
1035
1084
  },
1036
- WaitingForHandshake: (from, conn, listeners, options, log) => {
1085
+ WaitingForHandshake: (from, conn, listeners, options, tracer, log) => {
1037
1086
  const session = new SessionWaitingForHandshake({
1038
1087
  conn,
1039
1088
  listeners,
1040
1089
  from,
1041
1090
  options,
1091
+ tracer,
1042
1092
  log
1043
1093
  });
1044
1094
  session.log?.info(`session created in WaitingForHandshake state`, {
@@ -1094,6 +1144,11 @@ var SessionStateGraph = {
1094
1144
  listeners,
1095
1145
  ...carriedState
1096
1146
  });
1147
+ conn.telemetry = createConnectionTelemetryInfo(
1148
+ session.tracer,
1149
+ conn,
1150
+ session.telemetry
1151
+ );
1097
1152
  session.log?.info(
1098
1153
  `session ${session.id} transition from Connecting to Handshaking`,
1099
1154
  {
@@ -1137,12 +1192,14 @@ var SessionStateGraph = {
1137
1192
  ack: 0,
1138
1193
  sendBuffer: [],
1139
1194
  telemetry: createSessionTelemetryInfo(
1195
+ pendingSession.tracer,
1140
1196
  sessionId,
1141
1197
  to,
1142
1198
  from,
1143
1199
  propagationCtx
1144
1200
  ),
1145
1201
  options,
1202
+ tracer: pendingSession.tracer,
1146
1203
  log: pendingSession.log,
1147
1204
  protocolVersion
1148
1205
  }
@@ -1154,6 +1211,11 @@ var SessionStateGraph = {
1154
1211
  listeners,
1155
1212
  ...carriedState
1156
1213
  });
1214
+ conn.telemetry = createConnectionTelemetryInfo(
1215
+ session.tracer,
1216
+ conn,
1217
+ session.telemetry
1218
+ );
1157
1219
  session.log?.info(
1158
1220
  `session ${session.id} transition from WaitingForHandshake to Connected`,
1159
1221
  {
@@ -1298,6 +1360,7 @@ var Transport = class {
1298
1360
  */
1299
1361
  options;
1300
1362
  log;
1363
+ tracer;
1301
1364
  sessions;
1302
1365
  /**
1303
1366
  * Creates a new Transport instance.
@@ -1310,6 +1373,7 @@ var Transport = class {
1310
1373
  this.clientId = clientId;
1311
1374
  this.status = "open";
1312
1375
  this.sessions = /* @__PURE__ */ new Map();
1376
+ this.tracer = getTracer();
1313
1377
  }
1314
1378
  bindLogger(fn, level) {
1315
1379
  if (typeof fn === "function") {
@@ -1492,14 +1556,6 @@ var Transport = class {
1492
1556
  }
1493
1557
  };
1494
1558
 
1495
- // transport/stringifyError.ts
1496
- function coerceErrorString(err) {
1497
- if (err instanceof Error) {
1498
- return err.message || "unknown reason";
1499
- }
1500
- return `[coerced to error] ${String(err)}`;
1501
- }
1502
-
1503
1559
  // transport/server.ts
1504
1560
  var import_value2 = require("@sinclair/typebox/value");
1505
1561
  var ServerTransport = class extends Transport {
@@ -1604,13 +1660,14 @@ var ServerTransport = class extends Transport {
1604
1660
  }
1605
1661
  },
1606
1662
  this.options,
1663
+ this.tracer,
1607
1664
  this.log
1608
1665
  );
1609
1666
  this.pendingSessions.add(pendingSession);
1610
1667
  }
1611
1668
  rejectHandshakeRequest(session, to, reason, code, metadata) {
1612
1669
  session.conn.telemetry?.span.setStatus({
1613
- code: import_api3.SpanStatusCode.ERROR,
1670
+ code: import_api4.SpanStatusCode.ERROR,
1614
1671
  message: reason
1615
1672
  });
1616
1673
  this.log?.warn(reason, metadata);