@replit/river 0.26.5 → 0.26.7

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 (60) hide show
  1. package/dist/{chunk-FA2IRWCM.js → chunk-C7OSTU6D.js} +2 -2
  2. package/dist/{chunk-XRZ52TYH.js → chunk-F32IOMOX.js} +15 -7
  3. package/dist/chunk-F32IOMOX.js.map +1 -0
  4. package/dist/{chunk-IPOUVVKT.js → chunk-I3Z6XQVK.js} +12 -7
  5. package/dist/chunk-I3Z6XQVK.js.map +1 -0
  6. package/dist/{chunk-PZEYFHAB.js → chunk-JJX4ALPO.js} +11 -8
  7. package/dist/chunk-JJX4ALPO.js.map +1 -0
  8. package/dist/{chunk-QEWSUVWV.js → chunk-KMH4I245.js} +12 -3
  9. package/dist/chunk-KMH4I245.js.map +1 -0
  10. package/dist/{chunk-TAH2GVTJ.js → chunk-KTS4HBYE.js} +1 -1
  11. package/dist/chunk-KTS4HBYE.js.map +1 -0
  12. package/dist/{chunk-7KB7DHFZ.js → chunk-NHM3XC6K.js} +2 -2
  13. package/dist/{chunk-7KB7DHFZ.js.map → chunk-NHM3XC6K.js.map} +1 -1
  14. package/dist/{chunk-AZ3ILPXP.js → chunk-X4TDCNNT.js} +8 -8
  15. package/dist/chunk-X4TDCNNT.js.map +1 -0
  16. package/dist/{client-6c67339a.d.ts → client-1229b53d.d.ts} +2 -2
  17. package/dist/connection-c5ffd44e.d.ts +32 -0
  18. package/dist/{handshake-154a0bb2.d.ts → handshake-02a61755.d.ts} +10 -3
  19. package/dist/logging/index.cjs.map +1 -1
  20. package/dist/logging/index.d.cts +1 -1
  21. package/dist/logging/index.d.ts +1 -1
  22. package/dist/logging/index.js +1 -1
  23. package/dist/{message-ff78a233.d.ts → message-3edb8fac.d.ts} +2 -1
  24. package/dist/router/index.cjs +1 -1
  25. package/dist/router/index.cjs.map +1 -1
  26. package/dist/router/index.d.cts +8 -8
  27. package/dist/router/index.d.ts +8 -8
  28. package/dist/router/index.js +2 -2
  29. package/dist/{server-1f5eb427.d.ts → server-89076d9a.d.ts} +4 -3
  30. package/dist/{services-6140f578.d.ts → services-4478e99b.d.ts} +3 -3
  31. package/dist/transport/impls/ws/client.cjs +39 -14
  32. package/dist/transport/impls/ws/client.cjs.map +1 -1
  33. package/dist/transport/impls/ws/client.d.cts +4 -4
  34. package/dist/transport/impls/ws/client.d.ts +4 -4
  35. package/dist/transport/impls/ws/client.js +6 -6
  36. package/dist/transport/impls/ws/server.cjs +50 -16
  37. package/dist/transport/impls/ws/server.cjs.map +1 -1
  38. package/dist/transport/impls/ws/server.d.cts +6 -5
  39. package/dist/transport/impls/ws/server.d.ts +6 -5
  40. package/dist/transport/impls/ws/server.js +20 -8
  41. package/dist/transport/impls/ws/server.js.map +1 -1
  42. package/dist/transport/index.cjs +33 -17
  43. package/dist/transport/index.cjs.map +1 -1
  44. package/dist/transport/index.d.cts +4 -4
  45. package/dist/transport/index.d.ts +4 -4
  46. package/dist/transport/index.js +6 -6
  47. package/dist/util/testHelpers.cjs +14 -6
  48. package/dist/util/testHelpers.cjs.map +1 -1
  49. package/dist/util/testHelpers.d.cts +4 -4
  50. package/dist/util/testHelpers.d.ts +4 -4
  51. package/dist/util/testHelpers.js +3 -3
  52. package/package.json +1 -1
  53. package/dist/chunk-AZ3ILPXP.js.map +0 -1
  54. package/dist/chunk-IPOUVVKT.js.map +0 -1
  55. package/dist/chunk-PZEYFHAB.js.map +0 -1
  56. package/dist/chunk-QEWSUVWV.js.map +0 -1
  57. package/dist/chunk-TAH2GVTJ.js.map +0 -1
  58. package/dist/chunk-XRZ52TYH.js.map +0 -1
  59. package/dist/connection-03ffb583.d.ts +0 -11
  60. /package/dist/{chunk-FA2IRWCM.js.map → chunk-C7OSTU6D.js.map} +0 -0
@@ -1,9 +1,10 @@
1
- import { c as TransportClientId } from '../../../message-ff78a233.js';
1
+ import { c as TransportClientId } from '../../../message-3edb8fac.js';
2
2
  import { WebSocketServer } from 'ws';
3
- import { W as WebSocketConnection } from '../../../connection-03ffb583.js';
3
+ import { W as WebSocketConnection } from '../../../connection-c5ffd44e.js';
4
4
  import { W as WsLike } from '../../../wslike-e0b32dd5.js';
5
- import { S as ServerTransport } from '../../../server-1f5eb427.js';
6
- import { c as ProvidedServerTransportOptions } from '../../../handshake-154a0bb2.js';
5
+ import { S as ServerTransport } from '../../../server-89076d9a.js';
6
+ import { c as ProvidedServerTransportOptions } from '../../../handshake-02a61755.js';
7
+ import { IncomingMessage } from 'http';
7
8
  import '@sinclair/typebox/value';
8
9
  import '@sinclair/typebox';
9
10
  import '@opentelemetry/api';
@@ -13,7 +14,7 @@ import '../../../types-3e5768ec.js';
13
14
  declare class WebSocketServerTransport extends ServerTransport<WebSocketConnection> {
14
15
  wss: WebSocketServer;
15
16
  constructor(wss: WebSocketServer, clientId: TransportClientId, providedOptions?: ProvidedServerTransportOptions);
16
- connectionHandler: (ws: WsLike) => void;
17
+ connectionHandler: (ws: WsLike, req: IncomingMessage) => void;
17
18
  close(): void;
18
19
  }
19
20
 
@@ -1,9 +1,10 @@
1
- import { c as TransportClientId } from '../../../message-ff78a233.js';
1
+ import { c as TransportClientId } from '../../../message-3edb8fac.js';
2
2
  import { WebSocketServer } from 'ws';
3
- import { W as WebSocketConnection } from '../../../connection-03ffb583.js';
3
+ import { W as WebSocketConnection } from '../../../connection-c5ffd44e.js';
4
4
  import { W as WsLike } from '../../../wslike-e0b32dd5.js';
5
- import { S as ServerTransport } from '../../../server-1f5eb427.js';
6
- import { c as ProvidedServerTransportOptions } from '../../../handshake-154a0bb2.js';
5
+ import { S as ServerTransport } from '../../../server-89076d9a.js';
6
+ import { c as ProvidedServerTransportOptions } from '../../../handshake-02a61755.js';
7
+ import { IncomingMessage } from 'http';
7
8
  import '@sinclair/typebox/value';
8
9
  import '@sinclair/typebox';
9
10
  import '@opentelemetry/api';
@@ -13,7 +14,7 @@ import '../../../types-3e5768ec.js';
13
14
  declare class WebSocketServerTransport extends ServerTransport<WebSocketConnection> {
14
15
  wss: WebSocketServer;
15
16
  constructor(wss: WebSocketServer, clientId: TransportClientId, providedOptions?: ProvidedServerTransportOptions);
16
- connectionHandler: (ws: WsLike) => void;
17
+ connectionHandler: (ws: WsLike, req: IncomingMessage) => void;
17
18
  close(): void;
18
19
  }
19
20
 
@@ -1,16 +1,26 @@
1
1
  import {
2
2
  ServerTransport
3
- } from "../../../chunk-AZ3ILPXP.js";
3
+ } from "../../../chunk-X4TDCNNT.js";
4
4
  import {
5
5
  WebSocketConnection
6
- } from "../../../chunk-QEWSUVWV.js";
7
- import "../../../chunk-IPOUVVKT.js";
8
- import "../../../chunk-TAH2GVTJ.js";
9
- import "../../../chunk-XRZ52TYH.js";
10
- import "../../../chunk-7KB7DHFZ.js";
6
+ } from "../../../chunk-KMH4I245.js";
7
+ import "../../../chunk-I3Z6XQVK.js";
8
+ import "../../../chunk-KTS4HBYE.js";
9
+ import "../../../chunk-F32IOMOX.js";
10
+ import "../../../chunk-NHM3XC6K.js";
11
11
  import "../../../chunk-4PVU7J25.js";
12
12
 
13
13
  // transport/impls/ws/server.ts
14
+ function cleanHeaders(headers) {
15
+ const cleanedHeaders = {};
16
+ for (const [key, value] of Object.entries(headers)) {
17
+ if (!key.startsWith("sec-") && value) {
18
+ const cleanedValue = Array.isArray(value) ? value[0] : value;
19
+ cleanedHeaders[key] = cleanedValue;
20
+ }
21
+ }
22
+ return cleanedHeaders;
23
+ }
14
24
  var WebSocketServerTransport = class extends ServerTransport {
15
25
  wss;
16
26
  constructor(wss, clientId, providedOptions) {
@@ -18,8 +28,10 @@ var WebSocketServerTransport = class extends ServerTransport {
18
28
  this.wss = wss;
19
29
  this.wss.on("connection", this.connectionHandler);
20
30
  }
21
- connectionHandler = (ws) => {
22
- const conn = new WebSocketConnection(ws);
31
+ connectionHandler = (ws, req) => {
32
+ const conn = new WebSocketConnection(ws, {
33
+ headers: cleanHeaders(req.headersDistinct)
34
+ });
23
35
  this.handleConnection(conn);
24
36
  };
25
37
  close() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../transport/impls/ws/server.ts"],"sourcesContent":["import { TransportClientId } from '../../message';\nimport { WebSocketServer } from 'ws';\nimport { WebSocketConnection } from './connection';\nimport { WsLike } from './wslike';\nimport { ServerTransport } from '../../server';\nimport { ProvidedServerTransportOptions } from '../../options';\n\nexport class WebSocketServerTransport extends ServerTransport<WebSocketConnection> {\n wss: WebSocketServer;\n\n constructor(\n wss: WebSocketServer,\n clientId: TransportClientId,\n providedOptions?: ProvidedServerTransportOptions,\n ) {\n super(clientId, providedOptions);\n this.wss = wss;\n this.wss.on('connection', this.connectionHandler);\n }\n\n connectionHandler = (ws: WsLike) => {\n const conn = new WebSocketConnection(ws);\n this.handleConnection(conn);\n };\n\n close() {\n super.close();\n this.wss.off('connection', this.connectionHandler);\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAOO,IAAM,2BAAN,cAAuC,gBAAqC;AAAA,EACjF;AAAA,EAEA,YACE,KACA,UACA,iBACA;AACA,UAAM,UAAU,eAAe;AAC/B,SAAK,MAAM;AACX,SAAK,IAAI,GAAG,cAAc,KAAK,iBAAiB;AAAA,EAClD;AAAA,EAEA,oBAAoB,CAAC,OAAe;AAClC,UAAM,OAAO,IAAI,oBAAoB,EAAE;AACvC,SAAK,iBAAiB,IAAI;AAAA,EAC5B;AAAA,EAEA,QAAQ;AACN,UAAM,MAAM;AACZ,SAAK,IAAI,IAAI,cAAc,KAAK,iBAAiB;AAAA,EACnD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../transport/impls/ws/server.ts"],"sourcesContent":["import { TransportClientId } from '../../message';\nimport { WebSocketServer } from 'ws';\nimport { WebSocketConnection } from './connection';\nimport { WsLike } from './wslike';\nimport { ServerTransport } from '../../server';\nimport { ProvidedServerTransportOptions } from '../../options';\nimport { type IncomingMessage } from 'http';\n\nfunction cleanHeaders(\n headers: IncomingMessage['headers'],\n): Record<string, string> {\n const cleanedHeaders: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(headers)) {\n if (!key.startsWith('sec-') && value) {\n const cleanedValue = Array.isArray(value) ? value[0] : value;\n cleanedHeaders[key] = cleanedValue;\n }\n }\n\n return cleanedHeaders;\n}\n\nexport class WebSocketServerTransport extends ServerTransport<WebSocketConnection> {\n wss: WebSocketServer;\n\n constructor(\n wss: WebSocketServer,\n clientId: TransportClientId,\n providedOptions?: ProvidedServerTransportOptions,\n ) {\n super(clientId, providedOptions);\n this.wss = wss;\n this.wss.on('connection', this.connectionHandler);\n }\n\n connectionHandler = (ws: WsLike, req: IncomingMessage) => {\n const conn = new WebSocketConnection(ws, {\n headers: cleanHeaders(req.headersDistinct),\n });\n\n this.handleConnection(conn);\n };\n\n close() {\n super.close();\n this.wss.off('connection', this.connectionHandler);\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAQA,SAAS,aACP,SACwB;AACxB,QAAM,iBAAyC,CAAC;AAEhD,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,QAAI,CAAC,IAAI,WAAW,MAAM,KAAK,OAAO;AACpC,YAAM,eAAe,MAAM,QAAQ,KAAK,IAAI,MAAM,CAAC,IAAI;AACvD,qBAAe,GAAG,IAAI;AAAA,IACxB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,2BAAN,cAAuC,gBAAqC;AAAA,EACjF;AAAA,EAEA,YACE,KACA,UACA,iBACA;AACA,UAAM,UAAU,eAAe;AAC/B,SAAK,MAAM;AACX,SAAK,IAAI,GAAG,cAAc,KAAK,iBAAiB;AAAA,EAClD;AAAA,EAEA,oBAAoB,CAAC,IAAY,QAAyB;AACxD,UAAM,OAAO,IAAI,oBAAoB,IAAI;AAAA,MACvC,SAAS,aAAa,IAAI,eAAe;AAAA,IAC3C,CAAC;AAED,SAAK,iBAAiB,IAAI;AAAA,EAC5B;AAAA,EAEA,QAAQ;AACN,UAAM,MAAM;AACZ,SAAK,IAAI,IAAI,cAAc,KAAK,iBAAiB;AAAA,EACnD;AACF;","names":[]}
@@ -88,7 +88,8 @@ var createLogProxy = (log) => ({
88
88
  var ProtocolError = {
89
89
  RetriesExceeded: "conn_retry_exceeded",
90
90
  HandshakeFailed: "handshake_failed",
91
- MessageOrderingViolated: "message_ordering_violated"
91
+ MessageOrderingViolated: "message_ordering_violated",
92
+ InvalidMessage: "invalid_message"
92
93
  };
93
94
  var EventDispatcher = class {
94
95
  eventListeners = {};
@@ -596,7 +597,7 @@ var SessionNoConnection = class extends IdentifiedSessionWithGracePeriod {
596
597
  var import_api = require("@opentelemetry/api");
597
598
 
598
599
  // package.json
599
- var version = "0.26.5";
600
+ var version = "0.26.7";
600
601
 
601
602
  // tracing/index.ts
602
603
  function getPropagationContext(ctx) {
@@ -806,6 +807,12 @@ var SessionConnected = class extends IdentifiedSession {
806
807
  }
807
808
  });
808
809
  }
810
+ closeConnection() {
811
+ this.conn.removeDataListener(this.onMessageData);
812
+ this.conn.removeCloseListener(this.listeners.onConnectionClosed);
813
+ this.conn.removeErrorListener(this.listeners.onConnectionErrored);
814
+ this.conn.close();
815
+ }
809
816
  onMessageData = (msg) => {
810
817
  const parsedMsg = this.parseMsg(msg);
811
818
  if (parsedMsg === null) {
@@ -822,8 +829,8 @@ var SessionConnected = class extends IdentifiedSession {
822
829
  }
823
830
  );
824
831
  } else {
825
- const reason = `received out-of-order msg (got seq: ${parsedMsg.seq}, wanted seq: ${this.ack})`;
826
- this.log?.error(reason, {
832
+ const reason = `received out-of-order msg, closing connection (got seq: ${parsedMsg.seq}, wanted seq: ${this.ack})`;
833
+ this.log?.warn(reason, {
827
834
  ...this.loggingMetadata,
828
835
  transportMessage: parsedMsg,
829
836
  tags: ["invariant-violation"]
@@ -832,7 +839,7 @@ var SessionConnected = class extends IdentifiedSession {
832
839
  code: import_api2.SpanStatusCode.ERROR,
833
840
  message: reason
834
841
  });
835
- this.listeners.onInvalidMessage(reason);
842
+ this.closeConnection();
836
843
  }
837
844
  return;
838
845
  }
@@ -858,8 +865,10 @@ var SessionConnected = class extends IdentifiedSession {
858
865
  this.conn.removeDataListener(this.onMessageData);
859
866
  this.conn.removeCloseListener(this.listeners.onConnectionClosed);
860
867
  this.conn.removeErrorListener(this.listeners.onConnectionErrored);
861
- clearInterval(this.heartbeatHandle);
862
- this.heartbeatHandle = void 0;
868
+ if (this.heartbeatHandle) {
869
+ clearInterval(this.heartbeatHandle);
870
+ this.heartbeatHandle = void 0;
871
+ }
863
872
  }
864
873
  _handleClose() {
865
874
  super._handleClose();
@@ -1288,8 +1297,12 @@ var Transport = class {
1288
1297
  return session;
1289
1298
  }
1290
1299
  // state transitions
1291
- deleteSession(session) {
1292
- session.log?.info(`closing session ${session.id}`, session.loggingMetadata);
1300
+ deleteSession(session, options) {
1301
+ const loggingMetadata = session.loggingMetadata;
1302
+ if (loggingMetadata.tags && options?.unhealthy) {
1303
+ loggingMetadata.tags.push("unhealthy-session");
1304
+ }
1305
+ session.log?.info(`closing session ${session.id}`, loggingMetadata);
1293
1306
  this.eventDispatcher.dispatchEvent("sessionStatus", {
1294
1307
  status: "disconnect",
1295
1308
  session
@@ -1521,7 +1534,7 @@ var ClientTransport = class extends Transport {
1521
1534
  `invalid handshake: ${reason}`,
1522
1535
  handshakingSession.loggingMetadata
1523
1536
  );
1524
- this.deleteSession(session);
1537
+ this.deleteSession(session, { unhealthy: true });
1525
1538
  this.protocolError({
1526
1539
  type: ProtocolError.HandshakeFailed,
1527
1540
  code,
@@ -1550,7 +1563,7 @@ var ClientTransport = class extends Transport {
1550
1563
  message: reason
1551
1564
  });
1552
1565
  this.log?.warn(reason, metadata);
1553
- this.deleteSession(session);
1566
+ this.deleteSession(session, { unhealthy: true });
1554
1567
  }
1555
1568
  onHandshakeResponse(session, msg) {
1556
1569
  if (!import_value2.Value.Check(ControlMessageHandshakeResponseSchema, msg.payload)) {
@@ -1615,9 +1628,9 @@ var ClientTransport = class extends Transport {
1615
1628
  },
1616
1629
  onMessage: (msg2) => this.handleMsg(msg2),
1617
1630
  onInvalidMessage: (reason) => {
1618
- this.deleteSession(connectedSession);
1631
+ this.deleteSession(connectedSession, { unhealthy: true });
1619
1632
  this.protocolError({
1620
- type: ProtocolError.MessageOrderingViolated,
1633
+ type: ProtocolError.InvalidMessage,
1621
1634
  message: reason
1622
1635
  });
1623
1636
  }
@@ -1729,6 +1742,9 @@ var ClientTransport = class extends Transport {
1729
1742
  if (this.handshakeExtensions) {
1730
1743
  metadata = await this.handshakeExtensions.construct();
1731
1744
  }
1745
+ if (session._isConsumed) {
1746
+ return;
1747
+ }
1732
1748
  const requestMsg = handshakeRequestMessage({
1733
1749
  from: this.clientId,
1734
1750
  to: session.to,
@@ -1811,9 +1827,9 @@ var ServerTransport = class extends Transport {
1811
1827
  pendingSession.close();
1812
1828
  this.pendingSessions.delete(pendingSession);
1813
1829
  }
1814
- deleteSession(session) {
1830
+ deleteSession(session, options) {
1815
1831
  this.sessionHandshakeMetadata.delete(session.to);
1816
- super.deleteSession(session);
1832
+ super.deleteSession(session, options);
1817
1833
  }
1818
1834
  handleConnection(conn) {
1819
1835
  if (this.getStatus() !== "open")
@@ -2107,10 +2123,10 @@ var ServerTransport = class extends Transport {
2107
2123
  onMessage: (msg2) => this.handleMsg(msg2),
2108
2124
  onInvalidMessage: (reason) => {
2109
2125
  this.protocolError({
2110
- type: ProtocolError.MessageOrderingViolated,
2126
+ type: ProtocolError.InvalidMessage,
2111
2127
  message: reason
2112
2128
  });
2113
- this.deleteSession(connectedSession);
2129
+ this.deleteSession(connectedSession, { unhealthy: true });
2114
2130
  }
2115
2131
  }
2116
2132
  );