@replit/river 0.21.1 → 0.22.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 (63) hide show
  1. package/README.md +1 -1
  2. package/dist/{chunk-5WFL722S.js → chunk-3MFX6NXA.js} +94 -3
  3. package/dist/chunk-3MFX6NXA.js.map +1 -0
  4. package/dist/{chunk-NCXUFDVL.js → chunk-GCLEWC26.js} +328 -500
  5. package/dist/chunk-GCLEWC26.js.map +1 -0
  6. package/dist/chunk-HUBFYN37.js +60 -0
  7. package/dist/chunk-HUBFYN37.js.map +1 -0
  8. package/dist/{chunk-FDLAPYCK.js → chunk-S3YKQT4J.js} +2 -2
  9. package/dist/{chunk-JMXO5L2X.js → chunk-ZPBWKBM5.js} +344 -384
  10. package/dist/chunk-ZPBWKBM5.js.map +1 -0
  11. package/dist/{connection-76c5ed01.d.ts → connection-8b059ac4.d.ts} +6 -4
  12. package/dist/{connection-975b25c9.d.ts → connection-bbfe1147.d.ts} +1 -1
  13. package/dist/{index-dfad460e.d.ts → index-2ece5234.d.ts} +16 -7
  14. package/dist/logging/index.d.cts +2 -1
  15. package/dist/logging/index.d.ts +2 -1
  16. package/dist/router/index.cjs +373 -486
  17. package/dist/router/index.cjs.map +1 -1
  18. package/dist/router/index.d.cts +5 -4
  19. package/dist/router/index.d.ts +5 -4
  20. package/dist/router/index.js +4 -3
  21. package/dist/{services-7b716dcf.d.ts → services-acbcc441.d.ts} +1 -1
  22. package/dist/{services-9c496c6e.d.ts → services-cb01a7a8.d.ts} +1 -1
  23. package/dist/transport/impls/uds/client.cjs +186 -145
  24. package/dist/transport/impls/uds/client.cjs.map +1 -1
  25. package/dist/transport/impls/uds/client.d.cts +3 -2
  26. package/dist/transport/impls/uds/client.d.ts +3 -2
  27. package/dist/transport/impls/uds/client.js +3 -3
  28. package/dist/transport/impls/uds/server.cjs +281 -256
  29. package/dist/transport/impls/uds/server.cjs.map +1 -1
  30. package/dist/transport/impls/uds/server.d.cts +3 -2
  31. package/dist/transport/impls/uds/server.d.ts +3 -2
  32. package/dist/transport/impls/uds/server.js +3 -3
  33. package/dist/transport/impls/ws/client.cjs +240 -204
  34. package/dist/transport/impls/ws/client.cjs.map +1 -1
  35. package/dist/transport/impls/ws/client.d.cts +6 -6
  36. package/dist/transport/impls/ws/client.d.ts +6 -6
  37. package/dist/transport/impls/ws/client.js +33 -48
  38. package/dist/transport/impls/ws/client.js.map +1 -1
  39. package/dist/transport/impls/ws/server.cjs +303 -270
  40. package/dist/transport/impls/ws/server.cjs.map +1 -1
  41. package/dist/transport/impls/ws/server.d.cts +5 -4
  42. package/dist/transport/impls/ws/server.d.ts +5 -4
  43. package/dist/transport/impls/ws/server.js +3 -3
  44. package/dist/transport/impls/ws/server.js.map +1 -1
  45. package/dist/transport/index.cjs +390 -382
  46. package/dist/transport/index.cjs.map +1 -1
  47. package/dist/transport/index.d.cts +5 -5
  48. package/dist/transport/index.d.ts +5 -5
  49. package/dist/transport/index.js +2 -2
  50. package/dist/util/testHelpers.cjs +57 -7
  51. package/dist/util/testHelpers.cjs.map +1 -1
  52. package/dist/util/testHelpers.d.cts +14 -5
  53. package/dist/util/testHelpers.d.ts +14 -5
  54. package/dist/util/testHelpers.js +10 -4
  55. package/dist/util/testHelpers.js.map +1 -1
  56. package/dist/wslike-e0b32dd5.d.ts +40 -0
  57. package/package.json +4 -5
  58. package/dist/chunk-3Y7AB5EB.js +0 -42
  59. package/dist/chunk-3Y7AB5EB.js.map +0 -1
  60. package/dist/chunk-5WFL722S.js.map +0 -1
  61. package/dist/chunk-JMXO5L2X.js.map +0 -1
  62. package/dist/chunk-NCXUFDVL.js.map +0 -1
  63. /package/dist/{chunk-FDLAPYCK.js.map → chunk-S3YKQT4J.js.map} +0 -0
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
 
20
30
  // util/testHelpers.ts
@@ -25,6 +35,7 @@ __export(testHelpers_exports, {
25
35
  asClientSubscription: () => asClientSubscription,
26
36
  asClientUpload: () => asClientUpload,
27
37
  createDummyTransportMessage: () => createDummyTransportMessage,
38
+ createLocalWebSocketClient: () => createLocalWebSocketClient,
28
39
  createWebSocketServer: () => createWebSocketServer,
29
40
  getUnixSocketPath: () => getUnixSocketPath,
30
41
  iterNext: () => iterNext,
@@ -35,7 +46,7 @@ __export(testHelpers_exports, {
35
46
  waitForMessage: () => waitForMessage
36
47
  });
37
48
  module.exports = __toCommonJS(testHelpers_exports);
38
- var import_ws = require("ws");
49
+ var import_ws = __toESM(require("ws"), 1);
39
50
 
40
51
  // node_modules/p-defer/index.js
41
52
  function pDefer() {
@@ -340,6 +351,31 @@ function Err(error) {
340
351
  // logging/log.ts
341
352
  var log = void 0;
342
353
 
354
+ // tracing/index.ts
355
+ var import_api = require("@opentelemetry/api");
356
+
357
+ // package.json
358
+ var version = "0.22.0";
359
+
360
+ // tracing/index.ts
361
+ function createSessionTelemetryInfo(session, propagationCtx) {
362
+ const ctx = propagationCtx ? import_api.propagation.extract(import_api.context.active(), propagationCtx) : import_api.context.active();
363
+ const span = tracer.startSpan(
364
+ `session ${session.id}`,
365
+ {
366
+ attributes: {
367
+ component: "river",
368
+ "river.session.id": session.id,
369
+ "river.session.to": session.to,
370
+ "river.session.from": session.from
371
+ }
372
+ },
373
+ ctx
374
+ );
375
+ return { span, ctx };
376
+ }
377
+ var tracer = import_api.trace.getTracer("river", version);
378
+
343
379
  // util/stringify.ts
344
380
  function coerceErrorString(err) {
345
381
  if (err instanceof Error) {
@@ -353,11 +389,13 @@ var import_nanoid2 = require("nanoid");
353
389
 
354
390
  // transport/session.ts
355
391
  var import_nanoid = require("nanoid");
392
+ var import_api2 = require("@opentelemetry/api");
356
393
  var nanoid = (0, import_nanoid.customAlphabet)("1234567890abcdefghijklmnopqrstuvxyz", 6);
357
394
  var unsafeId = () => nanoid();
358
395
  var Session = class {
359
396
  codec;
360
397
  options;
398
+ telemetry;
361
399
  /**
362
400
  * The buffer of messages that have been sent but not yet acknowledged.
363
401
  */
@@ -404,7 +442,7 @@ var Session = class {
404
442
  * The interval for sending heartbeats.
405
443
  */
406
444
  heartbeat;
407
- constructor(conn, from, to, options) {
445
+ constructor(conn, from, to, options, propagationCtx) {
408
446
  this.id = `session-${nanoid(12)}`;
409
447
  this.options = options;
410
448
  this.from = from;
@@ -416,13 +454,14 @@ var Session = class {
416
454
  () => this.sendHeartbeat(),
417
455
  options.heartbeatIntervalMs
418
456
  );
457
+ this.telemetry = createSessionTelemetryInfo(this, propagationCtx);
419
458
  }
420
459
  get loggingMetadata() {
421
460
  return {
422
461
  clientId: this.from,
423
462
  connectedTo: this.to,
424
463
  sessionId: this.id,
425
- connId: this.connection?.debugId
464
+ connId: this.connection?.id
426
465
  };
427
466
  }
428
467
  /**
@@ -467,6 +506,7 @@ var Session = class {
467
506
  `closing connection to ${this.to} due to inactivity (missed ${misses} heartbeats which is ${missDuration}ms)`,
468
507
  this.loggingMetadata
469
508
  );
509
+ this.telemetry.span.addEvent("closing connection due to inactivity");
470
510
  this.closeStaleConnection();
471
511
  }
472
512
  return;
@@ -488,21 +528,25 @@ var Session = class {
488
528
  sendBufferedMessages(conn) {
489
529
  log?.info(`resending ${this.sendBuffer.length} buffered messages`, {
490
530
  ...this.loggingMetadata,
491
- connId: conn.debugId
531
+ connId: conn.id
492
532
  });
493
533
  for (const msg of this.sendBuffer) {
494
534
  log?.debug(`resending msg`, {
495
535
  ...this.loggingMetadata,
496
536
  fullTransportMessage: msg,
497
- connId: conn.debugId
537
+ connId: conn.id
498
538
  });
499
539
  const ok = conn.send(this.codec.toBuffer(msg));
500
540
  if (!ok) {
501
541
  const errMsg = `failed to send buffered message to ${this.to} (sus, this is a fresh connection)`;
542
+ conn.telemetry?.span.setStatus({
543
+ code: import_api2.SpanStatusCode.ERROR,
544
+ message: errMsg
545
+ });
502
546
  log?.error(errMsg, {
503
547
  ...this.loggingMetadata,
504
548
  fullTransportMessage: msg,
505
- connId: conn.debugId,
549
+ connId: conn.id,
506
550
  tags: ["invariant-violation"]
507
551
  });
508
552
  conn.close();
@@ -587,7 +631,6 @@ var Session = class {
587
631
 
588
632
  // transport/transport.ts
589
633
  var import_value = require("@sinclair/typebox/value");
590
- var import_api = require("@opentelemetry/api");
591
634
 
592
635
  // codec/json.ts
593
636
  var encoder = new TextEncoder();
@@ -642,6 +685,7 @@ var NaiveJsonCodec = {
642
685
  };
643
686
 
644
687
  // transport/transport.ts
688
+ var import_api3 = require("@opentelemetry/api");
645
689
  var defaultTransportOptions = {
646
690
  heartbeatIntervalMs: 1e3,
647
691
  heartbeatsUntilDead: 2,
@@ -664,6 +708,11 @@ var defaultServerTransportOptions = {
664
708
  };
665
709
 
666
710
  // util/testHelpers.ts
711
+ function createLocalWebSocketClient(port) {
712
+ const sock = new import_ws.default(`ws://localhost:${port}`);
713
+ sock.binaryType = "arraybuffer";
714
+ return sock;
715
+ }
667
716
  function createWebSocketServer(server) {
668
717
  return new import_ws.WebSocketServer({ server });
669
718
  }
@@ -794,6 +843,7 @@ var getUnixSocketPath = () => {
794
843
  asClientSubscription,
795
844
  asClientUpload,
796
845
  createDummyTransportMessage,
846
+ createLocalWebSocketClient,
797
847
  createWebSocketServer,
798
848
  getUnixSocketPath,
799
849
  iterNext,