@replit/river 0.203.0 → 0.203.1

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 (36) hide show
  1. package/dist/{chunk-XBPEUVWN.js → chunk-2FHJVQBE.js} +2 -2
  2. package/dist/{chunk-D5EIDBUT.js → chunk-7MKTFUJO.js} +3 -3
  3. package/dist/{chunk-SZHNMLKC.js → chunk-AK7NTFAM.js} +31 -10
  4. package/dist/{chunk-SZHNMLKC.js.map → chunk-AK7NTFAM.js.map} +1 -1
  5. package/dist/{chunk-DGT3MPD4.js → chunk-T4WWG42M.js} +3 -3
  6. package/dist/{chunk-FG22HHCY.js → chunk-TMOCPK63.js} +9 -6
  7. package/dist/chunk-TMOCPK63.js.map +1 -0
  8. package/dist/{chunk-LHH5LQ7C.js → chunk-WBGKPIFS.js} +11 -1
  9. package/dist/chunk-WBGKPIFS.js.map +1 -0
  10. package/dist/logging/index.cjs +1 -0
  11. package/dist/logging/index.cjs.map +1 -1
  12. package/dist/logging/index.js +1 -1
  13. package/dist/router/index.cjs +90 -103
  14. package/dist/router/index.cjs.map +1 -1
  15. package/dist/router/index.d.cts +1 -1
  16. package/dist/router/index.d.ts +1 -1
  17. package/dist/router/index.js +77 -95
  18. package/dist/router/index.js.map +1 -1
  19. package/dist/testUtil/index.cjs +36 -9
  20. package/dist/testUtil/index.cjs.map +1 -1
  21. package/dist/testUtil/index.js +5 -5
  22. package/dist/transport/impls/ws/client.cjs +41 -14
  23. package/dist/transport/impls/ws/client.cjs.map +1 -1
  24. package/dist/transport/impls/ws/client.js +5 -5
  25. package/dist/transport/impls/ws/server.cjs +39 -12
  26. package/dist/transport/impls/ws/server.cjs.map +1 -1
  27. package/dist/transport/impls/ws/server.js +5 -5
  28. package/dist/transport/index.cjs +43 -16
  29. package/dist/transport/index.cjs.map +1 -1
  30. package/dist/transport/index.js +5 -5
  31. package/package.json +2 -2
  32. package/dist/chunk-FG22HHCY.js.map +0 -1
  33. package/dist/chunk-LHH5LQ7C.js.map +0 -1
  34. /package/dist/{chunk-XBPEUVWN.js.map → chunk-2FHJVQBE.js.map} +0 -0
  35. /package/dist/{chunk-D5EIDBUT.js.map → chunk-7MKTFUJO.js.map} +0 -0
  36. /package/dist/{chunk-DGT3MPD4.js.map → chunk-T4WWG42M.js.map} +0 -0
@@ -611,7 +611,7 @@ function unwrapOrThrow(result) {
611
611
  var import_api = require("@opentelemetry/api");
612
612
 
613
613
  // package.json
614
- var version = "0.203.0";
614
+ var version = "0.203.1";
615
615
 
616
616
  // tracing/index.ts
617
617
  function getPropagationContext(ctx) {
@@ -622,7 +622,7 @@ function getPropagationContext(ctx) {
622
622
  import_api.propagation.inject(ctx, tracing);
623
623
  return tracing;
624
624
  }
625
- function createProcTelemetryInfo(transport, kind, serviceName, procedureName, streamId) {
625
+ function createProcTelemetryInfo(session, kind, serviceName, procedureName, streamId) {
626
626
  const baseCtx = import_api.context.active();
627
627
  const span = tracer.startSpan(
628
628
  `procedure call ${serviceName}.${procedureName}`,
@@ -635,25 +635,29 @@ function createProcTelemetryInfo(transport, kind, serviceName, procedureName, st
635
635
  "river.streamId": streamId,
636
636
  "span.kind": "client"
637
637
  },
638
+ links: [{ context: session.telemetry.span.spanContext() }],
638
639
  kind: import_api.SpanKind.CLIENT
639
640
  },
640
641
  baseCtx
641
642
  );
642
643
  const ctx = import_api.trace.setSpan(baseCtx, span);
643
- transport.log?.info(`invoked ${serviceName}.${procedureName}`, {
644
- clientId: transport.clientId,
644
+ const metadata = {
645
+ ...session.loggingMetadata,
645
646
  transportMessage: {
646
647
  procedureName,
647
648
  serviceName
648
- },
649
- telemetry: {
649
+ }
650
+ };
651
+ if (span.isRecording()) {
652
+ metadata.telemetry = {
650
653
  traceId: span.spanContext().traceId,
651
654
  spanId: span.spanContext().spanId
652
- }
653
- });
655
+ };
656
+ }
657
+ session.log?.info(`invoked ${serviceName}.${procedureName}`, metadata);
654
658
  return { span, ctx };
655
659
  }
656
- function createHandlerSpan(kind, serviceName, procedureName, streamId, tracing, fn) {
660
+ function createHandlerSpan(session, kind, serviceName, procedureName, streamId, tracing, fn) {
657
661
  const ctx = tracing ? import_api.propagation.extract(import_api.context.active(), tracing) : import_api.context.active();
658
662
  return tracer.startActiveSpan(
659
663
  `procedure handler ${serviceName}.${procedureName}`,
@@ -666,6 +670,7 @@ function createHandlerSpan(kind, serviceName, procedureName, streamId, tracing,
666
670
  "river.streamId": streamId,
667
671
  "span.kind": "server"
668
672
  },
673
+ links: [{ context: session.telemetry.span.spanContext() }],
669
674
  kind: import_api.SpanKind.SERVER
670
675
  },
671
676
  ctx,
@@ -947,7 +952,7 @@ function handleProc(procType, transport, serverId, init, serviceName, procedureN
947
952
  const procClosesWithInit = procType === "rpc" || procType === "subscription";
948
953
  const streamId = generateId();
949
954
  const { span, ctx } = createProcTelemetryInfo(
950
- transport,
955
+ session,
951
956
  procType,
952
957
  serviceName,
953
958
  procedureName,
@@ -1232,10 +1237,17 @@ var RiverServer = class {
1232
1237
  if (!newStreamProps) {
1233
1238
  return;
1234
1239
  }
1235
- this.createNewProcStream({
1236
- ...newStreamProps,
1237
- ...message
1238
- });
1240
+ createHandlerSpan(
1241
+ newStreamProps.initialSession,
1242
+ newStreamProps.procedure.type,
1243
+ newStreamProps.serviceName,
1244
+ newStreamProps.procedureName,
1245
+ newStreamProps.streamId,
1246
+ newStreamProps.tracingCtx,
1247
+ (span) => {
1248
+ this.createNewProcStream(span, newStreamProps);
1249
+ }
1250
+ );
1239
1251
  };
1240
1252
  const handleSessionStatus = (evt) => {
1241
1253
  if (evt.status !== "disconnect")
@@ -1269,7 +1281,7 @@ var RiverServer = class {
1269
1281
  this.transport.addEventListener("sessionStatus", handleSessionStatus);
1270
1282
  this.transport.addEventListener("transportStatus", handleTransportStatus);
1271
1283
  }
1272
- createNewProcStream(props) {
1284
+ createNewProcStream(span, props) {
1273
1285
  const {
1274
1286
  streamId,
1275
1287
  initialSession,
@@ -1279,7 +1291,6 @@ var RiverServer = class {
1279
1291
  sessionMetadata,
1280
1292
  serviceContext,
1281
1293
  initPayload,
1282
- tracingCtx,
1283
1294
  procClosesWithInit,
1284
1295
  passInitAsDataForBackwardsCompat
1285
1296
  } = props;
@@ -1289,6 +1300,10 @@ var RiverServer = class {
1289
1300
  protocolVersion,
1290
1301
  id: sessionId
1291
1302
  } = initialSession;
1303
+ loggingMetadata.telemetry = {
1304
+ traceId: span.spanContext().traceId,
1305
+ spanId: span.spanContext().spanId
1306
+ };
1292
1307
  let cleanClose = true;
1293
1308
  const onMessage = (msg) => {
1294
1309
  if (msg.from !== from) {
@@ -1461,10 +1476,10 @@ var RiverServer = class {
1461
1476
  }
1462
1477
  }
1463
1478
  });
1464
- const onHandlerError = (err, span) => {
1479
+ const onHandlerError = (err, span2) => {
1465
1480
  const errorMsg = coerceErrorString(err);
1466
- span.recordException(err instanceof Error ? err : new Error(errorMsg));
1467
- span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
1481
+ span2.recordException(err instanceof Error ? err : new Error(errorMsg));
1482
+ span2.setStatus({ code: import_api2.SpanStatusCode.ERROR });
1468
1483
  this.log?.error(
1469
1484
  `${serviceName}.${procedureName} handler threw an uncaught error`,
1470
1485
  {
@@ -1488,12 +1503,12 @@ var RiverServer = class {
1488
1503
  if (procClosesWithInit) {
1489
1504
  closeReadable();
1490
1505
  }
1491
- const handlerContextWithSpan = (span) => ({
1506
+ const handlerContextWithSpan = (span2) => ({
1492
1507
  ...serviceContext,
1493
1508
  from,
1494
1509
  sessionId,
1495
1510
  metadata: sessionMetadata,
1496
- span,
1511
+ span: span2,
1497
1512
  cancel: () => {
1498
1513
  onServerCancel({
1499
1514
  code: CANCEL_CODE,
@@ -1504,100 +1519,72 @@ var RiverServer = class {
1504
1519
  });
1505
1520
  switch (procedure.type) {
1506
1521
  case "rpc":
1507
- void createHandlerSpan(
1508
- procedure.type,
1509
- serviceName,
1510
- procedureName,
1511
- streamId,
1512
- tracingCtx,
1513
- async (span) => {
1514
- try {
1515
- const responsePayload = await procedure.handler({
1516
- ctx: handlerContextWithSpan(span),
1517
- reqInit: initPayload
1518
- });
1519
- if (resWritable.isClosed()) {
1520
- return;
1521
- }
1522
- resWritable.write(responsePayload);
1523
- } catch (err) {
1524
- onHandlerError(err, span);
1525
- } finally {
1526
- span.end();
1522
+ void (async () => {
1523
+ try {
1524
+ const responsePayload = await procedure.handler({
1525
+ ctx: handlerContextWithSpan(span),
1526
+ reqInit: initPayload
1527
+ });
1528
+ if (resWritable.isClosed()) {
1529
+ return;
1527
1530
  }
1531
+ resWritable.write(responsePayload);
1532
+ } catch (err) {
1533
+ onHandlerError(err, span);
1534
+ } finally {
1535
+ span.end();
1528
1536
  }
1529
- );
1537
+ })();
1530
1538
  break;
1531
1539
  case "stream":
1532
- void createHandlerSpan(
1533
- procedure.type,
1534
- serviceName,
1535
- procedureName,
1536
- streamId,
1537
- tracingCtx,
1538
- async (span) => {
1539
- try {
1540
- await procedure.handler({
1541
- ctx: handlerContextWithSpan(span),
1542
- reqInit: initPayload,
1543
- reqReadable,
1544
- resWritable
1545
- });
1546
- } catch (err) {
1547
- onHandlerError(err, span);
1548
- } finally {
1549
- span.end();
1550
- }
1540
+ void (async () => {
1541
+ try {
1542
+ await procedure.handler({
1543
+ ctx: handlerContextWithSpan(span),
1544
+ reqInit: initPayload,
1545
+ reqReadable,
1546
+ resWritable
1547
+ });
1548
+ } catch (err) {
1549
+ onHandlerError(err, span);
1550
+ } finally {
1551
+ span.end();
1551
1552
  }
1552
- );
1553
+ })();
1553
1554
  break;
1554
1555
  case "subscription":
1555
- void createHandlerSpan(
1556
- procedure.type,
1557
- serviceName,
1558
- procedureName,
1559
- streamId,
1560
- tracingCtx,
1561
- async (span) => {
1562
- try {
1563
- await procedure.handler({
1564
- ctx: handlerContextWithSpan(span),
1565
- reqInit: initPayload,
1566
- resWritable
1567
- });
1568
- } catch (err) {
1569
- onHandlerError(err, span);
1570
- } finally {
1571
- span.end();
1572
- }
1556
+ void (async () => {
1557
+ try {
1558
+ await procedure.handler({
1559
+ ctx: handlerContextWithSpan(span),
1560
+ reqInit: initPayload,
1561
+ resWritable
1562
+ });
1563
+ } catch (err) {
1564
+ onHandlerError(err, span);
1565
+ } finally {
1566
+ span.end();
1573
1567
  }
1574
- );
1568
+ })();
1575
1569
  break;
1576
1570
  case "upload":
1577
- void createHandlerSpan(
1578
- procedure.type,
1579
- serviceName,
1580
- procedureName,
1581
- streamId,
1582
- tracingCtx,
1583
- async (span) => {
1584
- try {
1585
- const responsePayload = await procedure.handler({
1586
- ctx: handlerContextWithSpan(span),
1587
- reqInit: initPayload,
1588
- reqReadable
1589
- });
1590
- if (resWritable.isClosed()) {
1591
- return;
1592
- }
1593
- resWritable.write(responsePayload);
1594
- } catch (err) {
1595
- onHandlerError(err, span);
1596
- } finally {
1597
- span.end();
1571
+ void (async () => {
1572
+ try {
1573
+ const responsePayload = await procedure.handler({
1574
+ ctx: handlerContextWithSpan(span),
1575
+ reqInit: initPayload,
1576
+ reqReadable
1577
+ });
1578
+ if (resWritable.isClosed()) {
1579
+ return;
1598
1580
  }
1581
+ resWritable.write(responsePayload);
1582
+ } catch (err) {
1583
+ onHandlerError(err, span);
1584
+ } finally {
1585
+ span.end();
1599
1586
  }
1600
- );
1587
+ })();
1601
1588
  break;
1602
1589
  }
1603
1590
  if (!finishedController.signal.aborted) {