@replit/river 0.23.12 → 0.23.13

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 (74) hide show
  1. package/dist/chunk-2FNLANTJ.js +327 -0
  2. package/dist/chunk-2FNLANTJ.js.map +1 -0
  3. package/dist/{chunk-3AW3IXVD.js → chunk-4PVU7J25.js} +1 -21
  4. package/dist/chunk-4PVU7J25.js.map +1 -0
  5. package/dist/{chunk-H6KTH6W6.js → chunk-4QZOW4DH.js} +2 -2
  6. package/dist/{chunk-7RUKEUKE.js → chunk-ES4XO2XD.js} +2 -2
  7. package/dist/{chunk-7RUKEUKE.js.map → chunk-ES4XO2XD.js.map} +1 -1
  8. package/dist/{chunk-XZ6IOBM5.js → chunk-KFTGQ3QC.js} +2 -2
  9. package/dist/chunk-KFTGQ3QC.js.map +1 -0
  10. package/dist/chunk-S4DUN7KK.js +455 -0
  11. package/dist/chunk-S4DUN7KK.js.map +1 -0
  12. package/dist/{chunk-HDBVL7EF.js → chunk-SX6HI63Q.js} +2 -2
  13. package/dist/chunk-XM656KMN.js +408 -0
  14. package/dist/chunk-XM656KMN.js.map +1 -0
  15. package/dist/chunk-ZUKDZY54.js +271 -0
  16. package/dist/chunk-ZUKDZY54.js.map +1 -0
  17. package/dist/client-dd5c9dd0.d.ts +52 -0
  18. package/dist/codec/index.js +20 -2
  19. package/dist/codec/index.js.map +1 -1
  20. package/dist/{connection-8debd45f.d.ts → connection-39816c00.d.ts} +1 -1
  21. package/dist/{connection-581558f8.d.ts → connection-40318f22.d.ts} +1 -1
  22. package/dist/{transport-47af1c81.d.ts → handshake-e428d1c8.d.ts} +88 -153
  23. package/dist/{index-60f03cb7.d.ts → index-ea74cdbb.d.ts} +1 -1
  24. package/dist/logging/index.d.cts +1 -1
  25. package/dist/logging/index.d.ts +1 -1
  26. package/dist/router/index.cjs +1 -1
  27. package/dist/router/index.cjs.map +1 -1
  28. package/dist/router/index.d.cts +8 -6
  29. package/dist/router/index.d.ts +8 -6
  30. package/dist/router/index.js +2 -2
  31. package/dist/server-ebf80863.d.ts +24 -0
  32. package/dist/{services-ca72c9f8.d.ts → services-f406b3aa.d.ts} +3 -2
  33. package/dist/transport/impls/uds/client.cjs +192 -164
  34. package/dist/transport/impls/uds/client.cjs.map +1 -1
  35. package/dist/transport/impls/uds/client.d.cts +6 -5
  36. package/dist/transport/impls/uds/client.d.ts +6 -5
  37. package/dist/transport/impls/uds/client.js +6 -4
  38. package/dist/transport/impls/uds/client.js.map +1 -1
  39. package/dist/transport/impls/uds/server.cjs +240 -212
  40. package/dist/transport/impls/uds/server.cjs.map +1 -1
  41. package/dist/transport/impls/uds/server.d.cts +6 -5
  42. package/dist/transport/impls/uds/server.d.ts +6 -5
  43. package/dist/transport/impls/uds/server.js +8 -6
  44. package/dist/transport/impls/uds/server.js.map +1 -1
  45. package/dist/transport/impls/ws/client.cjs +194 -166
  46. package/dist/transport/impls/ws/client.cjs.map +1 -1
  47. package/dist/transport/impls/ws/client.d.cts +6 -5
  48. package/dist/transport/impls/ws/client.d.ts +6 -5
  49. package/dist/transport/impls/ws/client.js +6 -4
  50. package/dist/transport/impls/ws/client.js.map +1 -1
  51. package/dist/transport/impls/ws/server.cjs +194 -166
  52. package/dist/transport/impls/ws/server.cjs.map +1 -1
  53. package/dist/transport/impls/ws/server.d.cts +4 -3
  54. package/dist/transport/impls/ws/server.d.ts +4 -3
  55. package/dist/transport/impls/ws/server.js +8 -6
  56. package/dist/transport/impls/ws/server.js.map +1 -1
  57. package/dist/transport/index.cjs +138 -104
  58. package/dist/transport/index.cjs.map +1 -1
  59. package/dist/transport/index.d.cts +4 -2
  60. package/dist/transport/index.d.ts +4 -2
  61. package/dist/transport/index.js +14 -8
  62. package/dist/util/testHelpers.cjs +2 -6
  63. package/dist/util/testHelpers.cjs.map +1 -1
  64. package/dist/util/testHelpers.d.cts +5 -4
  65. package/dist/util/testHelpers.d.ts +5 -4
  66. package/dist/util/testHelpers.js +4 -5
  67. package/dist/util/testHelpers.js.map +1 -1
  68. package/package.json +1 -1
  69. package/dist/chunk-3AW3IXVD.js.map +0 -1
  70. package/dist/chunk-VRU4IKRT.js +0 -1392
  71. package/dist/chunk-VRU4IKRT.js.map +0 -1
  72. package/dist/chunk-XZ6IOBM5.js.map +0 -1
  73. /package/dist/{chunk-H6KTH6W6.js.map → chunk-4QZOW4DH.js.map} +0 -0
  74. /package/dist/{chunk-HDBVL7EF.js.map → chunk-SX6HI63Q.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../transport/impls/uds/client.ts"],"sourcesContent":["import { Socket } from 'node:net';\nimport { UdsConnection } from './connection';\nimport {\n ClientTransport,\n ProvidedClientTransportOptions,\n} from '../../transport';\nimport { TransportClientId } from '../../message';\n\nexport class UnixDomainSocketClientTransport extends ClientTransport<UdsConnection> {\n path: string;\n\n constructor(\n socketPath: string,\n clientId: string,\n providedOptions?: ProvidedClientTransportOptions,\n ) {\n super(clientId, providedOptions);\n this.path = socketPath;\n }\n\n async createNewOutgoingConnection(to: TransportClientId) {\n const oldConnection = this.connections.get(to);\n if (oldConnection) {\n oldConnection.close();\n }\n\n this.log?.info(`establishing a new uds to ${to}`, {\n clientId: this.clientId,\n connectedTo: to,\n });\n\n const sock = await new Promise<Socket>((resolve, reject) => {\n const sock = new Socket();\n sock.on('connect', () => resolve(sock));\n sock.on('error', (err) => reject(err));\n sock.connect(this.path);\n });\n\n const conn = new UdsConnection(sock);\n this.handleConnection(conn, to);\n return conn;\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,cAAc;AAQhB,IAAM,kCAAN,cAA8C,gBAA+B;AAAA,EAClF;AAAA,EAEA,YACE,YACA,UACA,iBACA;AACA,UAAM,UAAU,eAAe;AAC/B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,4BAA4B,IAAuB;AACvD,UAAM,gBAAgB,KAAK,YAAY,IAAI,EAAE;AAC7C,QAAI,eAAe;AACjB,oBAAc,MAAM;AAAA,IACtB;AAEA,SAAK,KAAK,KAAK,6BAA6B,EAAE,IAAI;AAAA,MAChD,UAAU,KAAK;AAAA,MACf,aAAa;AAAA,IACf,CAAC;AAED,UAAM,OAAO,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AAC1D,YAAMA,QAAO,IAAI,OAAO;AACxB,MAAAA,MAAK,GAAG,WAAW,MAAM,QAAQA,KAAI,CAAC;AACtC,MAAAA,MAAK,GAAG,SAAS,CAAC,QAAQ,OAAO,GAAG,CAAC;AACrC,MAAAA,MAAK,QAAQ,KAAK,IAAI;AAAA,IACxB,CAAC;AAED,UAAM,OAAO,IAAI,cAAc,IAAI;AACnC,SAAK,iBAAiB,MAAM,EAAE;AAC9B,WAAO;AAAA,EACT;AACF;","names":["sock"]}
1
+ {"version":3,"sources":["../../../../transport/impls/uds/client.ts"],"sourcesContent":["import { Socket } from 'node:net';\nimport { UdsConnection } from './connection';\nimport { TransportClientId } from '../../message';\nimport { ClientTransport } from '../../client';\nimport { ProvidedClientTransportOptions } from '../../options';\n\nexport class UnixDomainSocketClientTransport extends ClientTransport<UdsConnection> {\n path: string;\n\n constructor(\n socketPath: string,\n clientId: string,\n providedOptions?: ProvidedClientTransportOptions,\n ) {\n super(clientId, providedOptions);\n this.path = socketPath;\n }\n\n async createNewOutgoingConnection(to: TransportClientId) {\n const oldConnection = this.connections.get(to);\n if (oldConnection) {\n oldConnection.close();\n }\n\n this.log?.info(`establishing a new uds to ${to}`, {\n clientId: this.clientId,\n connectedTo: to,\n });\n\n const sock = await new Promise<Socket>((resolve, reject) => {\n const sock = new Socket();\n sock.on('connect', () => resolve(sock));\n sock.on('error', (err) => reject(err));\n sock.connect(this.path);\n });\n\n const conn = new UdsConnection(sock);\n this.handleConnection(conn, to);\n return conn;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAS,cAAc;AAMhB,IAAM,kCAAN,cAA8C,gBAA+B;AAAA,EAClF;AAAA,EAEA,YACE,YACA,UACA,iBACA;AACA,UAAM,UAAU,eAAe;AAC/B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,4BAA4B,IAAuB;AACvD,UAAM,gBAAgB,KAAK,YAAY,IAAI,EAAE;AAC7C,QAAI,eAAe;AACjB,oBAAc,MAAM;AAAA,IACtB;AAEA,SAAK,KAAK,KAAK,6BAA6B,EAAE,IAAI;AAAA,MAChD,UAAU,KAAK;AAAA,MACf,aAAa;AAAA,IACf,CAAC;AAED,UAAM,OAAO,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAW;AAC1D,YAAMA,QAAO,IAAI,OAAO;AACxB,MAAAA,MAAK,GAAG,WAAW,MAAM,QAAQA,KAAI,CAAC;AACtC,MAAAA,MAAK,GAAG,SAAS,CAAC,QAAQ,OAAO,GAAG,CAAC;AACrC,MAAAA,MAAK,QAAQ,KAAK,IAAI;AAAA,IACxB,CAAC;AAED,UAAM,OAAO,IAAI,cAAc,IAAI;AACnC,SAAK,iBAAiB,MAAM,EAAE;AAC9B,WAAO;AAAA,EACT;AACF;","names":["sock"]}
@@ -24,8 +24,8 @@ __export(server_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(server_exports);
26
26
 
27
- // transport/transport.ts
28
- var import_value = require("@sinclair/typebox/value");
27
+ // transport/session.ts
28
+ var import_nanoid2 = require("nanoid");
29
29
 
30
30
  // transport/message.ts
31
31
  var import_typebox = require("@sinclair/typebox");
@@ -102,104 +102,11 @@ function isAck(controlFlag) {
102
102
  return (controlFlag & 1 /* AckBit */) === 1 /* AckBit */;
103
103
  }
104
104
 
105
- // logging/log.ts
106
- var LoggingLevels = {
107
- debug: -1,
108
- info: 0,
109
- warn: 1,
110
- error: 2
111
- };
112
- var cleanedLogFn = (log) => {
113
- return (msg, metadata) => {
114
- if (!metadata?.transportMessage) {
115
- log(msg, metadata);
116
- return;
117
- }
118
- const { payload, ...rest } = metadata.transportMessage;
119
- metadata.transportMessage = rest;
120
- log(msg, metadata);
121
- };
122
- };
123
- var BaseLogger = class {
124
- minLevel;
125
- output;
126
- constructor(output, minLevel = "info") {
127
- this.minLevel = minLevel;
128
- this.output = output;
129
- }
130
- debug(msg, metadata) {
131
- if (LoggingLevels[this.minLevel] <= LoggingLevels.debug) {
132
- this.output(msg, metadata ?? {}, "debug");
133
- }
134
- }
135
- info(msg, metadata) {
136
- if (LoggingLevels[this.minLevel] <= LoggingLevels.info) {
137
- this.output(msg, metadata ?? {}, "info");
138
- }
139
- }
140
- warn(msg, metadata) {
141
- if (LoggingLevels[this.minLevel] <= LoggingLevels.warn) {
142
- this.output(msg, metadata ?? {}, "warn");
143
- }
144
- }
145
- error(msg, metadata) {
146
- if (LoggingLevels[this.minLevel] <= LoggingLevels.error) {
147
- this.output(msg, metadata ?? {}, "error");
148
- }
149
- }
150
- };
151
- var createLogProxy = (log) => ({
152
- debug: cleanedLogFn(log.debug.bind(log)),
153
- info: cleanedLogFn(log.info.bind(log)),
154
- warn: cleanedLogFn(log.warn.bind(log)),
155
- error: cleanedLogFn(log.error.bind(log))
156
- });
157
-
158
- // transport/events.ts
159
- var ProtocolError = {
160
- RetriesExceeded: "conn_retry_exceeded",
161
- HandshakeFailed: "handshake_failed",
162
- MessageOrderingViolated: "message_ordering_violated"
163
- };
164
- var EventDispatcher = class {
165
- eventListeners = {};
166
- removeAllListeners() {
167
- this.eventListeners = {};
168
- }
169
- numberOfListeners(eventType) {
170
- return this.eventListeners[eventType]?.size ?? 0;
171
- }
172
- addEventListener(eventType, handler) {
173
- if (!this.eventListeners[eventType]) {
174
- this.eventListeners[eventType] = /* @__PURE__ */ new Set();
175
- }
176
- this.eventListeners[eventType]?.add(handler);
177
- }
178
- removeEventListener(eventType, handler) {
179
- const handlers = this.eventListeners[eventType];
180
- if (handlers) {
181
- this.eventListeners[eventType]?.delete(handler);
182
- }
183
- }
184
- dispatchEvent(eventType, event) {
185
- const handlers = this.eventListeners[eventType];
186
- if (handlers) {
187
- const copy = [...handlers];
188
- for (const handler of copy) {
189
- handler(event);
190
- }
191
- }
192
- }
193
- };
194
-
195
- // transport/session.ts
196
- var import_nanoid2 = require("nanoid");
197
-
198
105
  // tracing/index.ts
199
106
  var import_api = require("@opentelemetry/api");
200
107
 
201
108
  // package.json
202
- var version = "0.23.12";
109
+ var version = "0.23.13";
203
110
 
204
111
  // tracing/index.ts
205
112
  function createSessionTelemetryInfo(session, propagationCtx) {
@@ -525,13 +432,106 @@ var Session = class {
525
432
  }
526
433
  };
527
434
 
528
- // util/stringify.ts
529
- function coerceErrorString(err) {
530
- if (err instanceof Error) {
531
- return err.message || "unknown reason";
435
+ // transport/transforms/messageFraming.ts
436
+ var import_node_stream = require("stream");
437
+ var Uint32LengthPrefixFraming = class extends import_node_stream.Transform {
438
+ receivedBuffer;
439
+ maxBufferSizeBytes;
440
+ constructor({ maxBufferSizeBytes, ...options }) {
441
+ super(options);
442
+ this.maxBufferSizeBytes = maxBufferSizeBytes;
443
+ this.receivedBuffer = Buffer.alloc(0);
532
444
  }
533
- return `[coerced to error] ${String(err)}`;
445
+ _transform(chunk, _encoding, cb) {
446
+ if (this.receivedBuffer.byteLength + chunk.byteLength > this.maxBufferSizeBytes) {
447
+ const err = new Error(
448
+ `buffer overflow: ${this.receivedBuffer.byteLength}B > ${this.maxBufferSizeBytes}B`
449
+ );
450
+ this.emit("error", err);
451
+ cb(err);
452
+ return;
453
+ }
454
+ this.receivedBuffer = Buffer.concat([this.receivedBuffer, chunk]);
455
+ while (this.receivedBuffer.length > 4) {
456
+ const claimedMessageLength = this.receivedBuffer.readUInt32BE(0) + 4;
457
+ if (this.receivedBuffer.length >= claimedMessageLength) {
458
+ const message = this.receivedBuffer.subarray(4, claimedMessageLength);
459
+ this.push(message);
460
+ this.receivedBuffer = this.receivedBuffer.subarray(claimedMessageLength);
461
+ } else {
462
+ break;
463
+ }
464
+ }
465
+ cb();
466
+ }
467
+ _flush(cb) {
468
+ if (this.receivedBuffer.length) {
469
+ this.emit("error", new Error("got incomplete message while flushing"));
470
+ }
471
+ this.receivedBuffer = Buffer.alloc(0);
472
+ cb();
473
+ }
474
+ _destroy(error, callback) {
475
+ this.receivedBuffer = Buffer.alloc(0);
476
+ super._destroy(error, callback);
477
+ }
478
+ };
479
+ function createLengthEncodedStream(options) {
480
+ return new Uint32LengthPrefixFraming({
481
+ maxBufferSizeBytes: options?.maxBufferSizeBytes ?? 16 * 1024 * 1024
482
+ // 16MB
483
+ });
534
484
  }
485
+ var MessageFramer = {
486
+ createFramedStream: createLengthEncodedStream,
487
+ write: (buf) => {
488
+ const lengthPrefix = Buffer.alloc(4);
489
+ lengthPrefix.writeUInt32BE(buf.length, 0);
490
+ return Buffer.concat([lengthPrefix, buf]);
491
+ }
492
+ };
493
+
494
+ // transport/impls/uds/connection.ts
495
+ var UdsConnection = class extends Connection {
496
+ sock;
497
+ input;
498
+ framer;
499
+ constructor(sock) {
500
+ super();
501
+ this.framer = MessageFramer.createFramedStream();
502
+ this.sock = sock;
503
+ this.input = sock.pipe(this.framer);
504
+ }
505
+ addDataListener(cb) {
506
+ this.input.on("data", cb);
507
+ }
508
+ removeDataListener(cb) {
509
+ this.input.off("data", cb);
510
+ }
511
+ addCloseListener(cb) {
512
+ this.sock.on("close", cb);
513
+ }
514
+ addErrorListener(cb) {
515
+ this.sock.on("error", (err) => {
516
+ if (err instanceof Error && "code" in err && err.code === "EPIPE") {
517
+ return;
518
+ }
519
+ cb(err);
520
+ });
521
+ }
522
+ send(payload) {
523
+ if (this.framer.destroyed || !this.sock.writable)
524
+ return false;
525
+ return this.sock.write(MessageFramer.write(payload));
526
+ }
527
+ close() {
528
+ this.sock.destroy();
529
+ this.framer.destroy();
530
+ }
531
+ };
532
+
533
+ // transport/server.ts
534
+ var import_api4 = require("@opentelemetry/api");
535
535
 
536
536
  // codec/json.ts
537
537
  var encoder = new TextEncoder();
@@ -585,8 +585,7 @@ var NaiveJsonCodec = {
585
585
  }
586
586
  };
587
587
 
588
- // transport/transport.ts
589
- var import_api3 = require("@opentelemetry/api");
588
+ // transport/options.ts
590
589
  var defaultTransportOptions = {
591
590
  heartbeatIntervalMs: 1e3,
592
591
  heartbeatsUntilDead: 2,
@@ -607,6 +606,102 @@ var defaultClientTransportOptions = {
607
606
  var defaultServerTransportOptions = {
608
607
  ...defaultTransportOptions
609
608
  };
609
+
610
+ // transport/transport.ts
611
+ var import_value = require("@sinclair/typebox/value");
612
+
613
+ // logging/log.ts
614
+ var LoggingLevels = {
615
+ debug: -1,
616
+ info: 0,
617
+ warn: 1,
618
+ error: 2
619
+ };
620
+ var cleanedLogFn = (log) => {
621
+ return (msg, metadata) => {
622
+ if (!metadata?.transportMessage) {
623
+ log(msg, metadata);
624
+ return;
625
+ }
626
+ const { payload, ...rest } = metadata.transportMessage;
627
+ metadata.transportMessage = rest;
628
+ log(msg, metadata);
629
+ };
630
+ };
631
+ var BaseLogger = class {
632
+ minLevel;
633
+ output;
634
+ constructor(output, minLevel = "info") {
635
+ this.minLevel = minLevel;
636
+ this.output = output;
637
+ }
638
+ debug(msg, metadata) {
639
+ if (LoggingLevels[this.minLevel] <= LoggingLevels.debug) {
640
+ this.output(msg, metadata ?? {}, "debug");
641
+ }
642
+ }
643
+ info(msg, metadata) {
644
+ if (LoggingLevels[this.minLevel] <= LoggingLevels.info) {
645
+ this.output(msg, metadata ?? {}, "info");
646
+ }
647
+ }
648
+ warn(msg, metadata) {
649
+ if (LoggingLevels[this.minLevel] <= LoggingLevels.warn) {
650
+ this.output(msg, metadata ?? {}, "warn");
651
+ }
652
+ }
653
+ error(msg, metadata) {
654
+ if (LoggingLevels[this.minLevel] <= LoggingLevels.error) {
655
+ this.output(msg, metadata ?? {}, "error");
656
+ }
657
+ }
658
+ };
659
+ var createLogProxy = (log) => ({
660
+ debug: cleanedLogFn(log.debug.bind(log)),
661
+ info: cleanedLogFn(log.info.bind(log)),
662
+ warn: cleanedLogFn(log.warn.bind(log)),
663
+ error: cleanedLogFn(log.error.bind(log))
664
+ });
665
+
666
+ // transport/events.ts
667
+ var ProtocolError = {
668
+ RetriesExceeded: "conn_retry_exceeded",
669
+ HandshakeFailed: "handshake_failed",
670
+ MessageOrderingViolated: "message_ordering_violated"
671
+ };
672
+ var EventDispatcher = class {
673
+ eventListeners = {};
674
+ removeAllListeners() {
675
+ this.eventListeners = {};
676
+ }
677
+ numberOfListeners(eventType) {
678
+ return this.eventListeners[eventType]?.size ?? 0;
679
+ }
680
+ addEventListener(eventType, handler) {
681
+ if (!this.eventListeners[eventType]) {
682
+ this.eventListeners[eventType] = /* @__PURE__ */ new Set();
683
+ }
684
+ this.eventListeners[eventType]?.add(handler);
685
+ }
686
+ removeEventListener(eventType, handler) {
687
+ const handlers = this.eventListeners[eventType];
688
+ if (handlers) {
689
+ this.eventListeners[eventType]?.delete(handler);
690
+ }
691
+ }
692
+ dispatchEvent(eventType, event) {
693
+ const handlers = this.eventListeners[eventType];
694
+ if (handlers) {
695
+ const copy = [...handlers];
696
+ for (const handler of copy) {
697
+ handler(event);
698
+ }
699
+ }
700
+ }
701
+ };
702
+
703
+ // transport/transport.ts
704
+ var import_api3 = require("@opentelemetry/api");
610
705
  var Transport = class {
611
706
  /**
612
707
  * The status of the transport.
@@ -761,6 +856,16 @@ var Transport = class {
761
856
  * @param connectedTo The peer we are connected to.
762
857
  */
763
858
  onDisconnect(conn, session) {
859
+ if (session.connection !== void 0 && session.connection.id !== conn.id) {
860
+ session.telemetry.span.addEvent("onDisconnect race");
861
+ this.log?.warn("onDisconnect race", {
862
+ clientId: this.clientId,
863
+ ...session.loggingMetadata,
864
+ ...conn.loggingMetadata,
865
+ tags: ["invariant-violation"]
866
+ });
867
+ return;
868
+ }
764
869
  conn.telemetry?.span.end();
765
870
  this.eventDispatcher.dispatchEvent("connectionStatus", {
766
871
  status: "disconnect",
@@ -768,6 +873,16 @@ var Transport = class {
768
873
  });
769
874
  session.connection = void 0;
770
875
  session.beginGrace(() => {
876
+ if (session.connection !== void 0) {
877
+ session.telemetry.span.addEvent("session grace period race");
878
+ this.log?.warn("session grace period race", {
879
+ clientId: this.clientId,
880
+ ...session.loggingMetadata,
881
+ ...conn.loggingMetadata,
882
+ tags: ["invariant-violation"]
883
+ });
884
+ return;
885
+ }
771
886
  session.telemetry.span.addEvent("session grace period expired");
772
887
  this.deleteSession({
773
888
  session,
@@ -935,6 +1050,17 @@ var Transport = class {
935
1050
  return this.status;
936
1051
  }
937
1052
  };
1053
+
1054
+ // util/stringify.ts
1055
+ function coerceErrorString(err) {
1056
+ if (err instanceof Error) {
1057
+ return err.message || "unknown reason";
1058
+ }
1059
+ return `[coerced to error] ${String(err)}`;
1060
+ }
1061
+
1062
+ // transport/server.ts
1063
+ var import_value2 = require("@sinclair/typebox/value");
938
1064
  var ServerTransport = class extends Transport {
939
1065
  /**
940
1066
  * The options for this transport.
@@ -983,7 +1109,7 @@ var ServerTransport = class extends Transport {
983
1109
  }
984
1110
  );
985
1111
  conn.telemetry?.span.setStatus({
986
- code: import_api3.SpanStatusCode.ERROR,
1112
+ code: import_api4.SpanStatusCode.ERROR,
987
1113
  message: "handshake timeout"
988
1114
  });
989
1115
  conn.close();
@@ -1034,7 +1160,7 @@ var ServerTransport = class extends Transport {
1034
1160
  });
1035
1161
  conn.addErrorListener((err) => {
1036
1162
  conn.telemetry?.span.setStatus({
1037
- code: import_api3.SpanStatusCode.ERROR,
1163
+ code: import_api4.SpanStatusCode.ERROR,
1038
1164
  message: "connection error"
1039
1165
  });
1040
1166
  if (!session)
@@ -1048,9 +1174,9 @@ var ServerTransport = class extends Transport {
1048
1174
  async validateHandshakeMetadata(conn, session, rawMetadata, from) {
1049
1175
  let parsedMetadata = {};
1050
1176
  if (this.handshakeExtensions) {
1051
- if (!import_value.Value.Check(this.handshakeExtensions.schema, rawMetadata)) {
1177
+ if (!import_value2.Value.Check(this.handshakeExtensions.schema, rawMetadata)) {
1052
1178
  conn.telemetry?.span.setStatus({
1053
- code: import_api3.SpanStatusCode.ERROR,
1179
+ code: import_api4.SpanStatusCode.ERROR,
1054
1180
  message: "malformed handshake meta"
1055
1181
  });
1056
1182
  const reason = "received malformed handshake metadata";
@@ -1063,7 +1189,7 @@ var ServerTransport = class extends Transport {
1063
1189
  ...conn.loggingMetadata,
1064
1190
  clientId: this.clientId,
1065
1191
  validationErrors: [
1066
- ...import_value.Value.Errors(this.handshakeExtensions.schema, rawMetadata)
1192
+ ...import_value2.Value.Errors(this.handshakeExtensions.schema, rawMetadata)
1067
1193
  ]
1068
1194
  });
1069
1195
  this.protocolError(ProtocolError.HandshakeFailed, reason);
@@ -1077,7 +1203,7 @@ var ServerTransport = class extends Transport {
1077
1203
  if (parsedMetadata === false) {
1078
1204
  const reason = "rejected by handshake handler";
1079
1205
  conn.telemetry?.span.setStatus({
1080
- code: import_api3.SpanStatusCode.ERROR,
1206
+ code: import_api4.SpanStatusCode.ERROR,
1081
1207
  message: reason
1082
1208
  });
1083
1209
  const responseMsg = handshakeResponseMessage(this.clientId, from, {
@@ -1099,7 +1225,7 @@ var ServerTransport = class extends Transport {
1099
1225
  const parsed = this.parseMsg(data, conn);
1100
1226
  if (!parsed) {
1101
1227
  conn.telemetry?.span.setStatus({
1102
- code: import_api3.SpanStatusCode.ERROR,
1228
+ code: import_api4.SpanStatusCode.ERROR,
1103
1229
  message: "non-transport message"
1104
1230
  });
1105
1231
  this.protocolError(
@@ -1108,9 +1234,9 @@ var ServerTransport = class extends Transport {
1108
1234
  );
1109
1235
  return false;
1110
1236
  }
1111
- if (!import_value.Value.Check(ControlMessageHandshakeRequestSchema, parsed.payload)) {
1237
+ if (!import_value2.Value.Check(ControlMessageHandshakeRequestSchema, parsed.payload)) {
1112
1238
  conn.telemetry?.span.setStatus({
1113
- code: import_api3.SpanStatusCode.ERROR,
1239
+ code: import_api4.SpanStatusCode.ERROR,
1114
1240
  message: "invalid handshake request"
1115
1241
  });
1116
1242
  const reason = "received invalid handshake msg";
@@ -1126,7 +1252,7 @@ var ServerTransport = class extends Transport {
1126
1252
  // before passing it to user-land
1127
1253
  transportMessage: parsed,
1128
1254
  validationErrors: [
1129
- ...import_value.Value.Errors(ControlMessageHandshakeRequestSchema, parsed.payload)
1255
+ ...import_value2.Value.Errors(ControlMessageHandshakeRequestSchema, parsed.payload)
1130
1256
  ]
1131
1257
  });
1132
1258
  this.protocolError(
@@ -1138,7 +1264,7 @@ var ServerTransport = class extends Transport {
1138
1264
  const gotVersion = parsed.payload.protocolVersion;
1139
1265
  if (gotVersion !== PROTOCOL_VERSION) {
1140
1266
  conn.telemetry?.span.setStatus({
1141
- code: import_api3.SpanStatusCode.ERROR,
1267
+ code: import_api4.SpanStatusCode.ERROR,
1142
1268
  message: "incorrect protocol version"
1143
1269
  });
1144
1270
  const reason = `incorrect version (got: ${gotVersion} wanted ${PROTOCOL_VERSION})`;
@@ -1185,104 +1311,6 @@ var ServerTransport = class extends Transport {
1185
1311
  }
1186
1312
  };
1187
1313
 
1188
- // transport/transforms/messageFraming.ts
1189
- var import_node_stream = require("stream");
1190
- var Uint32LengthPrefixFraming = class extends import_node_stream.Transform {
1191
- receivedBuffer;
1192
- maxBufferSizeBytes;
1193
- constructor({ maxBufferSizeBytes, ...options }) {
1194
- super(options);
1195
- this.maxBufferSizeBytes = maxBufferSizeBytes;
1196
- this.receivedBuffer = Buffer.alloc(0);
1197
- }
1198
- _transform(chunk, _encoding, cb) {
1199
- if (this.receivedBuffer.byteLength + chunk.byteLength > this.maxBufferSizeBytes) {
1200
- const err = new Error(
1201
- `buffer overflow: ${this.receivedBuffer.byteLength}B > ${this.maxBufferSizeBytes}B`
1202
- );
1203
- this.emit("error", err);
1204
- cb(err);
1205
- return;
1206
- }
1207
- this.receivedBuffer = Buffer.concat([this.receivedBuffer, chunk]);
1208
- while (this.receivedBuffer.length > 4) {
1209
- const claimedMessageLength = this.receivedBuffer.readUInt32BE(0) + 4;
1210
- if (this.receivedBuffer.length >= claimedMessageLength) {
1211
- const message = this.receivedBuffer.subarray(4, claimedMessageLength);
1212
- this.push(message);
1213
- this.receivedBuffer = this.receivedBuffer.subarray(claimedMessageLength);
1214
- } else {
1215
- break;
1216
- }
1217
- }
1218
- cb();
1219
- }
1220
- _flush(cb) {
1221
- if (this.receivedBuffer.length) {
1222
- this.emit("error", new Error("got incomplete message while flushing"));
1223
- }
1224
- this.receivedBuffer = Buffer.alloc(0);
1225
- cb();
1226
- }
1227
- _destroy(error, callback) {
1228
- this.receivedBuffer = Buffer.alloc(0);
1229
- super._destroy(error, callback);
1230
- }
1231
- };
1232
- function createLengthEncodedStream(options) {
1233
- return new Uint32LengthPrefixFraming({
1234
- maxBufferSizeBytes: options?.maxBufferSizeBytes ?? 16 * 1024 * 1024
1235
- // 16MB
1236
- });
1237
- }
1238
- var MessageFramer = {
1239
- createFramedStream: createLengthEncodedStream,
1240
- write: (buf) => {
1241
- const lengthPrefix = Buffer.alloc(4);
1242
- lengthPrefix.writeUInt32BE(buf.length, 0);
1243
- return Buffer.concat([lengthPrefix, buf]);
1244
- }
1245
- };
1246
-
1247
- // transport/impls/uds/connection.ts
1248
- var UdsConnection = class extends Connection {
1249
- sock;
1250
- input;
1251
- framer;
1252
- constructor(sock) {
1253
- super();
1254
- this.framer = MessageFramer.createFramedStream();
1255
- this.sock = sock;
1256
- this.input = sock.pipe(this.framer);
1257
- }
1258
- addDataListener(cb) {
1259
- this.input.on("data", cb);
1260
- }
1261
- removeDataListener(cb) {
1262
- this.input.off("data", cb);
1263
- }
1264
- addCloseListener(cb) {
1265
- this.sock.on("close", cb);
1266
- }
1267
- addErrorListener(cb) {
1268
- this.sock.on("error", (err) => {
1269
- if (err instanceof Error && "code" in err && err.code === "EPIPE") {
1270
- return;
1271
- }
1272
- cb(err);
1273
- });
1274
- }
1275
- send(payload) {
1276
- if (this.framer.destroyed || !this.sock.writable)
1277
- return false;
1278
- return this.sock.write(MessageFramer.write(payload));
1279
- }
1280
- close() {
1281
- this.sock.destroy();
1282
- this.framer.destroy();
1283
- }
1284
- };
1285
-
1286
1314
  // transport/impls/uds/server.ts
1287
1315
  var UnixDomainSocketServerTransport = class extends ServerTransport {
1288
1316
  server;