@replit/river 0.21.0 → 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.
- package/README.md +1 -1
- package/dist/{chunk-5WFL722S.js → chunk-3MFX6NXA.js} +94 -3
- package/dist/chunk-3MFX6NXA.js.map +1 -0
- package/dist/{chunk-NFV77C2M.js → chunk-GCLEWC26.js} +340 -507
- package/dist/chunk-GCLEWC26.js.map +1 -0
- package/dist/chunk-HUBFYN37.js +60 -0
- package/dist/chunk-HUBFYN37.js.map +1 -0
- package/dist/{chunk-DT5JS6TM.js → chunk-OTQNCLFH.js} +1 -1
- package/dist/chunk-OTQNCLFH.js.map +1 -0
- package/dist/{chunk-MJR36SUY.js → chunk-S3YKQT4J.js} +2 -2
- package/dist/{chunk-QU2EE6YU.js → chunk-ZPBWKBM5.js} +361 -394
- package/dist/chunk-ZPBWKBM5.js.map +1 -0
- package/dist/{connection-8a71dbe2.d.ts → connection-8b059ac4.d.ts} +6 -4
- package/dist/{connection-d49d5d56.d.ts → connection-bbfe1147.d.ts} +1 -1
- package/dist/{index-3ac92295.d.ts → index-2ece5234.d.ts} +18 -7
- package/dist/logging/index.cjs.map +1 -1
- package/dist/logging/index.d.cts +2 -1
- package/dist/logging/index.d.ts +2 -1
- package/dist/logging/index.js +1 -1
- package/dist/router/index.cjs +384 -492
- package/dist/router/index.cjs.map +1 -1
- package/dist/router/index.d.cts +5 -4
- package/dist/router/index.d.ts +5 -4
- package/dist/router/index.js +5 -4
- package/dist/{services-abc077db.d.ts → services-acbcc441.d.ts} +1 -1
- package/dist/{services-8496d6e8.d.ts → services-cb01a7a8.d.ts} +1 -1
- package/dist/transport/impls/uds/client.cjs +202 -155
- package/dist/transport/impls/uds/client.cjs.map +1 -1
- package/dist/transport/impls/uds/client.d.cts +3 -2
- package/dist/transport/impls/uds/client.d.ts +3 -2
- package/dist/transport/impls/uds/client.js +4 -4
- package/dist/transport/impls/uds/server.cjs +295 -264
- package/dist/transport/impls/uds/server.cjs.map +1 -1
- package/dist/transport/impls/uds/server.d.cts +3 -2
- package/dist/transport/impls/uds/server.d.ts +3 -2
- package/dist/transport/impls/uds/server.js +4 -4
- package/dist/transport/impls/ws/client.cjs +256 -214
- package/dist/transport/impls/ws/client.cjs.map +1 -1
- package/dist/transport/impls/ws/client.d.cts +6 -6
- package/dist/transport/impls/ws/client.d.ts +6 -6
- package/dist/transport/impls/ws/client.js +34 -49
- package/dist/transport/impls/ws/client.js.map +1 -1
- package/dist/transport/impls/ws/server.cjs +317 -278
- package/dist/transport/impls/ws/server.cjs.map +1 -1
- package/dist/transport/impls/ws/server.d.cts +5 -4
- package/dist/transport/impls/ws/server.d.ts +5 -4
- package/dist/transport/impls/ws/server.js +4 -4
- package/dist/transport/impls/ws/server.js.map +1 -1
- package/dist/transport/index.cjs +406 -391
- package/dist/transport/index.cjs.map +1 -1
- package/dist/transport/index.d.cts +5 -5
- package/dist/transport/index.d.ts +5 -5
- package/dist/transport/index.js +3 -3
- package/dist/util/testHelpers.cjs +71 -19
- package/dist/util/testHelpers.cjs.map +1 -1
- package/dist/util/testHelpers.d.cts +20 -8
- package/dist/util/testHelpers.d.ts +20 -8
- package/dist/util/testHelpers.js +13 -12
- package/dist/util/testHelpers.js.map +1 -1
- package/dist/wslike-e0b32dd5.d.ts +40 -0
- package/package.json +4 -5
- package/dist/chunk-2ERP6FUE.js +0 -42
- package/dist/chunk-2ERP6FUE.js.map +0 -1
- package/dist/chunk-5WFL722S.js.map +0 -1
- package/dist/chunk-DT5JS6TM.js.map +0 -1
- package/dist/chunk-NFV77C2M.js.map +0 -1
- package/dist/chunk-QU2EE6YU.js.map +0 -1
- /package/dist/{chunk-MJR36SUY.js.map → chunk-S3YKQT4J.js.map} +0 -0
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ControlMessagePayloadSchema,
|
|
3
3
|
coerceErrorString,
|
|
4
|
+
createHandlerSpan,
|
|
5
|
+
createProcTelemetryInfo,
|
|
6
|
+
getPropagationContext,
|
|
4
7
|
isStreamClose,
|
|
5
|
-
isStreamOpen
|
|
6
|
-
|
|
7
|
-
} from "./chunk-5WFL722S.js";
|
|
8
|
+
isStreamOpen
|
|
9
|
+
} from "./chunk-3MFX6NXA.js";
|
|
8
10
|
import {
|
|
9
11
|
log
|
|
10
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-OTQNCLFH.js";
|
|
11
13
|
|
|
12
14
|
// router/services.ts
|
|
13
15
|
import { Type } from "@sinclair/typebox";
|
|
@@ -298,14 +300,6 @@ var Procedure = {
|
|
|
298
300
|
stream
|
|
299
301
|
};
|
|
300
302
|
|
|
301
|
-
// router/client.ts
|
|
302
|
-
import {
|
|
303
|
-
context,
|
|
304
|
-
propagation,
|
|
305
|
-
SpanKind,
|
|
306
|
-
SpanStatusCode
|
|
307
|
-
} from "@opentelemetry/api";
|
|
308
|
-
|
|
309
303
|
// node_modules/p-defer/index.js
|
|
310
304
|
function pDefer() {
|
|
311
305
|
const deferred = {};
|
|
@@ -688,324 +682,256 @@ function createSessionDisconnectHandler(from, cb) {
|
|
|
688
682
|
}
|
|
689
683
|
function handleRpc(transport, serverId, input, serviceName, procedureName) {
|
|
690
684
|
const streamId = nanoid();
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
"river.method.kind": "rpc",
|
|
697
|
-
"river.method.service": serviceName,
|
|
698
|
-
"river.method.name": procedureName,
|
|
699
|
-
"river.streamId": streamId,
|
|
700
|
-
"span.kind": "client"
|
|
701
|
-
},
|
|
702
|
-
kind: SpanKind.CLIENT
|
|
703
|
-
},
|
|
704
|
-
(span) => {
|
|
705
|
-
const tracing = { traceparent: "", tracestate: "" };
|
|
706
|
-
propagation.inject(context.active(), tracing);
|
|
707
|
-
transport.send(serverId, {
|
|
708
|
-
streamId,
|
|
709
|
-
serviceName,
|
|
710
|
-
procedureName,
|
|
711
|
-
tracing,
|
|
712
|
-
payload: input,
|
|
713
|
-
controlFlags: 2 /* StreamOpenBit */ | 4 /* StreamClosedBit */
|
|
714
|
-
});
|
|
715
|
-
const responsePromise = new Promise((resolve) => {
|
|
716
|
-
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
717
|
-
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
718
|
-
cleanup();
|
|
719
|
-
resolve(
|
|
720
|
-
Err({
|
|
721
|
-
code: UNEXPECTED_DISCONNECT,
|
|
722
|
-
message: `${serverId} unexpectedly disconnected`
|
|
723
|
-
})
|
|
724
|
-
);
|
|
725
|
-
});
|
|
726
|
-
function cleanup() {
|
|
727
|
-
transport.removeEventListener("message", onMessage);
|
|
728
|
-
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
729
|
-
span.end();
|
|
730
|
-
}
|
|
731
|
-
function onMessage(msg) {
|
|
732
|
-
if (msg.streamId !== streamId)
|
|
733
|
-
return;
|
|
734
|
-
if (msg.to !== transport.clientId)
|
|
735
|
-
return;
|
|
736
|
-
if (msg.payload && typeof msg.payload === "object" && "ok" in msg.payload) {
|
|
737
|
-
span.setStatus({
|
|
738
|
-
code: msg.payload.ok ? SpanStatusCode.OK : SpanStatusCode.ERROR
|
|
739
|
-
});
|
|
740
|
-
}
|
|
741
|
-
cleanup();
|
|
742
|
-
resolve(msg.payload);
|
|
743
|
-
}
|
|
744
|
-
transport.addEventListener("message", onMessage);
|
|
745
|
-
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
746
|
-
});
|
|
747
|
-
return responsePromise;
|
|
748
|
-
}
|
|
685
|
+
const { span, ctx } = createProcTelemetryInfo(
|
|
686
|
+
"rpc",
|
|
687
|
+
serviceName,
|
|
688
|
+
procedureName,
|
|
689
|
+
streamId
|
|
749
690
|
);
|
|
691
|
+
transport.send(serverId, {
|
|
692
|
+
streamId,
|
|
693
|
+
serviceName,
|
|
694
|
+
procedureName,
|
|
695
|
+
payload: input,
|
|
696
|
+
tracing: getPropagationContext(ctx),
|
|
697
|
+
controlFlags: 2 /* StreamOpenBit */ | 4 /* StreamClosedBit */
|
|
698
|
+
});
|
|
699
|
+
const responsePromise = new Promise((resolve) => {
|
|
700
|
+
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
701
|
+
cleanup();
|
|
702
|
+
resolve(
|
|
703
|
+
Err({
|
|
704
|
+
code: UNEXPECTED_DISCONNECT,
|
|
705
|
+
message: `${serverId} unexpectedly disconnected`
|
|
706
|
+
})
|
|
707
|
+
);
|
|
708
|
+
});
|
|
709
|
+
function cleanup() {
|
|
710
|
+
transport.removeEventListener("message", onMessage);
|
|
711
|
+
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
712
|
+
span.end();
|
|
713
|
+
}
|
|
714
|
+
function onMessage(msg) {
|
|
715
|
+
if (msg.streamId !== streamId)
|
|
716
|
+
return;
|
|
717
|
+
if (msg.to !== transport.clientId)
|
|
718
|
+
return;
|
|
719
|
+
cleanup();
|
|
720
|
+
resolve(msg.payload);
|
|
721
|
+
}
|
|
722
|
+
transport.addEventListener("message", onMessage);
|
|
723
|
+
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
724
|
+
});
|
|
725
|
+
return responsePromise;
|
|
750
726
|
}
|
|
751
727
|
function handleStream(transport, serverId, init, serviceName, procedureName) {
|
|
752
728
|
const streamId = nanoid();
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
controlFlags: 2 /* StreamOpenBit */
|
|
781
|
-
});
|
|
782
|
-
firstMessage = false;
|
|
783
|
-
}
|
|
784
|
-
const pipeInputToTransport = async () => {
|
|
785
|
-
for await (const rawIn of inputStream) {
|
|
786
|
-
const m = {
|
|
787
|
-
streamId,
|
|
788
|
-
payload: rawIn,
|
|
789
|
-
controlFlags: 0
|
|
790
|
-
};
|
|
791
|
-
if (firstMessage) {
|
|
792
|
-
m.serviceName = serviceName;
|
|
793
|
-
m.procedureName = procedureName;
|
|
794
|
-
m.tracing = tracing;
|
|
795
|
-
m.controlFlags |= 2 /* StreamOpenBit */;
|
|
796
|
-
firstMessage = false;
|
|
797
|
-
}
|
|
798
|
-
transport.send(serverId, m);
|
|
799
|
-
}
|
|
800
|
-
if (!healthyClose)
|
|
801
|
-
return;
|
|
802
|
-
transport.sendCloseStream(serverId, streamId);
|
|
803
|
-
span.setStatus({ code: SpanStatusCode.OK });
|
|
729
|
+
const { span, ctx } = createProcTelemetryInfo(
|
|
730
|
+
"stream",
|
|
731
|
+
serviceName,
|
|
732
|
+
procedureName,
|
|
733
|
+
streamId
|
|
734
|
+
);
|
|
735
|
+
const inputStream = pushable({ objectMode: true });
|
|
736
|
+
const outputStream = pushable({ objectMode: true });
|
|
737
|
+
let firstMessage = true;
|
|
738
|
+
let healthyClose = true;
|
|
739
|
+
if (init) {
|
|
740
|
+
transport.send(serverId, {
|
|
741
|
+
streamId,
|
|
742
|
+
serviceName,
|
|
743
|
+
procedureName,
|
|
744
|
+
payload: init,
|
|
745
|
+
tracing: getPropagationContext(ctx),
|
|
746
|
+
controlFlags: 2 /* StreamOpenBit */
|
|
747
|
+
});
|
|
748
|
+
firstMessage = false;
|
|
749
|
+
}
|
|
750
|
+
const pipeInputToTransport = async () => {
|
|
751
|
+
for await (const rawIn of inputStream) {
|
|
752
|
+
const m = {
|
|
753
|
+
streamId,
|
|
754
|
+
payload: rawIn,
|
|
755
|
+
controlFlags: 0
|
|
804
756
|
};
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
if (isStreamClose(msg.controlFlags)) {
|
|
812
|
-
cleanup();
|
|
813
|
-
} else {
|
|
814
|
-
outputStream.push(msg.payload);
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
|
-
function cleanup() {
|
|
818
|
-
inputStream.end();
|
|
819
|
-
outputStream.end();
|
|
820
|
-
transport.removeEventListener("message", onMessage);
|
|
821
|
-
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
822
|
-
span.end();
|
|
757
|
+
if (firstMessage) {
|
|
758
|
+
m.serviceName = serviceName;
|
|
759
|
+
m.procedureName = procedureName;
|
|
760
|
+
m.tracing = getPropagationContext(ctx);
|
|
761
|
+
m.controlFlags |= 2 /* StreamOpenBit */;
|
|
762
|
+
firstMessage = false;
|
|
823
763
|
}
|
|
824
|
-
|
|
825
|
-
outputStream.push(
|
|
826
|
-
Err({
|
|
827
|
-
code: UNEXPECTED_DISCONNECT,
|
|
828
|
-
message: `${serverId} unexpectedly disconnected`
|
|
829
|
-
})
|
|
830
|
-
);
|
|
831
|
-
healthyClose = false;
|
|
832
|
-
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
833
|
-
cleanup();
|
|
834
|
-
});
|
|
835
|
-
transport.addEventListener("message", onMessage);
|
|
836
|
-
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
837
|
-
return [inputStream, outputStream, cleanup];
|
|
764
|
+
transport.send(serverId, m);
|
|
838
765
|
}
|
|
839
|
-
|
|
766
|
+
if (!healthyClose)
|
|
767
|
+
return;
|
|
768
|
+
transport.sendCloseStream(serverId, streamId);
|
|
769
|
+
};
|
|
770
|
+
void pipeInputToTransport();
|
|
771
|
+
function onMessage(msg) {
|
|
772
|
+
if (msg.streamId !== streamId)
|
|
773
|
+
return;
|
|
774
|
+
if (msg.to !== transport.clientId)
|
|
775
|
+
return;
|
|
776
|
+
if (isStreamClose(msg.controlFlags)) {
|
|
777
|
+
cleanup();
|
|
778
|
+
} else {
|
|
779
|
+
outputStream.push(msg.payload);
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
function cleanup() {
|
|
783
|
+
inputStream.end();
|
|
784
|
+
outputStream.end();
|
|
785
|
+
transport.removeEventListener("message", onMessage);
|
|
786
|
+
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
787
|
+
span.end();
|
|
788
|
+
}
|
|
789
|
+
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
790
|
+
outputStream.push(
|
|
791
|
+
Err({
|
|
792
|
+
code: UNEXPECTED_DISCONNECT,
|
|
793
|
+
message: `${serverId} unexpectedly disconnected`
|
|
794
|
+
})
|
|
795
|
+
);
|
|
796
|
+
healthyClose = false;
|
|
797
|
+
cleanup();
|
|
798
|
+
});
|
|
799
|
+
transport.addEventListener("message", onMessage);
|
|
800
|
+
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
801
|
+
return [inputStream, outputStream, cleanup];
|
|
840
802
|
}
|
|
841
803
|
function handleSubscribe(transport, serverId, input, serviceName, procedureName) {
|
|
842
804
|
const streamId = nanoid();
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
"river.method.kind": "subscribe",
|
|
849
|
-
"river.method.service": serviceName,
|
|
850
|
-
"river.method.name": procedureName,
|
|
851
|
-
"river.streamId": streamId,
|
|
852
|
-
"span.kind": "client"
|
|
853
|
-
},
|
|
854
|
-
kind: SpanKind.CLIENT
|
|
855
|
-
},
|
|
856
|
-
(span) => {
|
|
857
|
-
const tracing = { traceparent: "", tracestate: "" };
|
|
858
|
-
propagation.inject(context.active(), tracing);
|
|
859
|
-
transport.send(serverId, {
|
|
860
|
-
streamId,
|
|
861
|
-
serviceName,
|
|
862
|
-
procedureName,
|
|
863
|
-
tracing,
|
|
864
|
-
payload: input,
|
|
865
|
-
controlFlags: 2 /* StreamOpenBit */
|
|
866
|
-
});
|
|
867
|
-
let healthyClose = true;
|
|
868
|
-
const outputStream = pushable({ objectMode: true });
|
|
869
|
-
function onMessage(msg) {
|
|
870
|
-
if (msg.streamId !== streamId)
|
|
871
|
-
return;
|
|
872
|
-
if (msg.to !== transport.clientId)
|
|
873
|
-
return;
|
|
874
|
-
if (isStreamClose(msg.controlFlags)) {
|
|
875
|
-
cleanup();
|
|
876
|
-
} else {
|
|
877
|
-
outputStream.push(msg.payload);
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
function cleanup() {
|
|
881
|
-
outputStream.end();
|
|
882
|
-
transport.removeEventListener("message", onMessage);
|
|
883
|
-
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
884
|
-
span.end();
|
|
885
|
-
}
|
|
886
|
-
const closeHandler = () => {
|
|
887
|
-
cleanup();
|
|
888
|
-
if (!healthyClose)
|
|
889
|
-
return;
|
|
890
|
-
transport.sendCloseStream(serverId, streamId);
|
|
891
|
-
};
|
|
892
|
-
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
893
|
-
outputStream.push(
|
|
894
|
-
Err({
|
|
895
|
-
code: UNEXPECTED_DISCONNECT,
|
|
896
|
-
message: `${serverId} unexpectedly disconnected`
|
|
897
|
-
})
|
|
898
|
-
);
|
|
899
|
-
healthyClose = false;
|
|
900
|
-
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
901
|
-
cleanup();
|
|
902
|
-
});
|
|
903
|
-
transport.addEventListener("message", onMessage);
|
|
904
|
-
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
905
|
-
return [outputStream, closeHandler];
|
|
906
|
-
}
|
|
805
|
+
const { span, ctx } = createProcTelemetryInfo(
|
|
806
|
+
"subscription",
|
|
807
|
+
serviceName,
|
|
808
|
+
procedureName,
|
|
809
|
+
streamId
|
|
907
810
|
);
|
|
811
|
+
transport.send(serverId, {
|
|
812
|
+
streamId,
|
|
813
|
+
serviceName,
|
|
814
|
+
procedureName,
|
|
815
|
+
payload: input,
|
|
816
|
+
tracing: getPropagationContext(ctx),
|
|
817
|
+
controlFlags: 2 /* StreamOpenBit */
|
|
818
|
+
});
|
|
819
|
+
let healthyClose = true;
|
|
820
|
+
const outputStream = pushable({ objectMode: true });
|
|
821
|
+
function onMessage(msg) {
|
|
822
|
+
if (msg.streamId !== streamId)
|
|
823
|
+
return;
|
|
824
|
+
if (msg.to !== transport.clientId)
|
|
825
|
+
return;
|
|
826
|
+
if (isStreamClose(msg.controlFlags)) {
|
|
827
|
+
cleanup();
|
|
828
|
+
} else {
|
|
829
|
+
outputStream.push(msg.payload);
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
function cleanup() {
|
|
833
|
+
outputStream.end();
|
|
834
|
+
transport.removeEventListener("message", onMessage);
|
|
835
|
+
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
836
|
+
span.end();
|
|
837
|
+
}
|
|
838
|
+
const closeHandler = () => {
|
|
839
|
+
cleanup();
|
|
840
|
+
if (!healthyClose)
|
|
841
|
+
return;
|
|
842
|
+
transport.sendCloseStream(serverId, streamId);
|
|
843
|
+
};
|
|
844
|
+
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
845
|
+
outputStream.push(
|
|
846
|
+
Err({
|
|
847
|
+
code: UNEXPECTED_DISCONNECT,
|
|
848
|
+
message: `${serverId} unexpectedly disconnected`
|
|
849
|
+
})
|
|
850
|
+
);
|
|
851
|
+
healthyClose = false;
|
|
852
|
+
cleanup();
|
|
853
|
+
});
|
|
854
|
+
transport.addEventListener("message", onMessage);
|
|
855
|
+
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
856
|
+
return [outputStream, closeHandler];
|
|
908
857
|
}
|
|
909
858
|
function handleUpload(transport, serverId, init, serviceName, procedureName) {
|
|
910
859
|
const streamId = nanoid();
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
860
|
+
const { span, ctx } = createProcTelemetryInfo(
|
|
861
|
+
"upload",
|
|
862
|
+
serviceName,
|
|
863
|
+
procedureName,
|
|
864
|
+
streamId
|
|
865
|
+
);
|
|
866
|
+
const inputStream = pushable({ objectMode: true });
|
|
867
|
+
let firstMessage = true;
|
|
868
|
+
let healthyClose = true;
|
|
869
|
+
if (init) {
|
|
870
|
+
transport.send(serverId, {
|
|
871
|
+
streamId,
|
|
872
|
+
serviceName,
|
|
873
|
+
procedureName,
|
|
874
|
+
payload: init,
|
|
875
|
+
tracing: getPropagationContext(ctx),
|
|
876
|
+
controlFlags: 2 /* StreamOpenBit */
|
|
877
|
+
});
|
|
878
|
+
firstMessage = false;
|
|
879
|
+
}
|
|
880
|
+
const pipeInputToTransport = async () => {
|
|
881
|
+
for await (const rawIn of inputStream) {
|
|
882
|
+
const m = {
|
|
883
|
+
streamId,
|
|
884
|
+
payload: rawIn,
|
|
885
|
+
controlFlags: 0
|
|
886
|
+
};
|
|
887
|
+
if (firstMessage) {
|
|
888
|
+
m.serviceName = serviceName;
|
|
889
|
+
m.procedureName = procedureName;
|
|
890
|
+
m.tracing = getPropagationContext(ctx);
|
|
891
|
+
m.controlFlags |= 2 /* StreamOpenBit */;
|
|
939
892
|
firstMessage = false;
|
|
940
893
|
}
|
|
941
|
-
|
|
942
|
-
for await (const rawIn of inputStream) {
|
|
943
|
-
const m = {
|
|
944
|
-
streamId,
|
|
945
|
-
payload: rawIn,
|
|
946
|
-
controlFlags: 0
|
|
947
|
-
};
|
|
948
|
-
if (firstMessage) {
|
|
949
|
-
m.serviceName = serviceName;
|
|
950
|
-
m.procedureName = procedureName;
|
|
951
|
-
m.tracing = tracing;
|
|
952
|
-
m.controlFlags |= 2 /* StreamOpenBit */;
|
|
953
|
-
firstMessage = false;
|
|
954
|
-
}
|
|
955
|
-
transport.send(serverId, m);
|
|
956
|
-
}
|
|
957
|
-
if (!healthyClose)
|
|
958
|
-
return;
|
|
959
|
-
transport.sendCloseStream(serverId, streamId);
|
|
960
|
-
};
|
|
961
|
-
void pipeInputToTransport();
|
|
962
|
-
const responsePromise = new Promise((resolve) => {
|
|
963
|
-
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
964
|
-
healthyClose = false;
|
|
965
|
-
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
966
|
-
cleanup();
|
|
967
|
-
resolve(
|
|
968
|
-
Err({
|
|
969
|
-
code: UNEXPECTED_DISCONNECT,
|
|
970
|
-
message: `${serverId} unexpectedly disconnected`
|
|
971
|
-
})
|
|
972
|
-
);
|
|
973
|
-
});
|
|
974
|
-
function cleanup() {
|
|
975
|
-
inputStream.end();
|
|
976
|
-
transport.removeEventListener("message", onMessage);
|
|
977
|
-
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
978
|
-
span.end();
|
|
979
|
-
}
|
|
980
|
-
function onMessage(msg) {
|
|
981
|
-
if (msg.streamId !== streamId)
|
|
982
|
-
return;
|
|
983
|
-
if (msg.to !== transport.clientId)
|
|
984
|
-
return;
|
|
985
|
-
if (msg.payload && typeof msg.payload === "object" && "ok" in msg.payload) {
|
|
986
|
-
span.setStatus({
|
|
987
|
-
code: msg.payload.ok ? SpanStatusCode.OK : SpanStatusCode.ERROR
|
|
988
|
-
});
|
|
989
|
-
}
|
|
990
|
-
cleanup();
|
|
991
|
-
resolve(msg.payload);
|
|
992
|
-
}
|
|
993
|
-
transport.addEventListener("message", onMessage);
|
|
994
|
-
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
995
|
-
});
|
|
996
|
-
return [inputStream, responsePromise];
|
|
894
|
+
transport.send(serverId, m);
|
|
997
895
|
}
|
|
998
|
-
|
|
896
|
+
if (!healthyClose)
|
|
897
|
+
return;
|
|
898
|
+
transport.sendCloseStream(serverId, streamId);
|
|
899
|
+
};
|
|
900
|
+
void pipeInputToTransport();
|
|
901
|
+
const responsePromise = new Promise((resolve) => {
|
|
902
|
+
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
903
|
+
healthyClose = false;
|
|
904
|
+
cleanup();
|
|
905
|
+
resolve(
|
|
906
|
+
Err({
|
|
907
|
+
code: UNEXPECTED_DISCONNECT,
|
|
908
|
+
message: `${serverId} unexpectedly disconnected`
|
|
909
|
+
})
|
|
910
|
+
);
|
|
911
|
+
});
|
|
912
|
+
function cleanup() {
|
|
913
|
+
inputStream.end();
|
|
914
|
+
transport.removeEventListener("message", onMessage);
|
|
915
|
+
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
916
|
+
span.end();
|
|
917
|
+
}
|
|
918
|
+
function onMessage(msg) {
|
|
919
|
+
if (msg.streamId !== streamId)
|
|
920
|
+
return;
|
|
921
|
+
if (msg.to !== transport.clientId)
|
|
922
|
+
return;
|
|
923
|
+
cleanup();
|
|
924
|
+
resolve(msg.payload);
|
|
925
|
+
}
|
|
926
|
+
transport.addEventListener("message", onMessage);
|
|
927
|
+
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
928
|
+
});
|
|
929
|
+
return [inputStream, responsePromise];
|
|
999
930
|
}
|
|
1000
931
|
|
|
1001
932
|
// router/server.ts
|
|
1002
|
-
import {
|
|
1003
|
-
context as context2,
|
|
1004
|
-
propagation as propagation2,
|
|
1005
|
-
SpanKind as SpanKind2,
|
|
1006
|
-
SpanStatusCode as SpanStatusCode2
|
|
1007
|
-
} from "@opentelemetry/api";
|
|
1008
933
|
import { Value } from "@sinclair/typebox/value";
|
|
934
|
+
import { SpanStatusCode } from "@opentelemetry/api";
|
|
1009
935
|
var RiverServer = class {
|
|
1010
936
|
transport;
|
|
1011
937
|
services;
|
|
@@ -1076,9 +1002,9 @@ var RiverServer = class {
|
|
|
1076
1002
|
this.transport.removeEventListener("message", this.onMessage);
|
|
1077
1003
|
this.transport.removeEventListener("sessionStatus", this.onSessionStatus);
|
|
1078
1004
|
await Promise.all([...this.streamMap.keys()].map(this.cleanupStream));
|
|
1079
|
-
for (const
|
|
1080
|
-
if (Symbol.dispose in
|
|
1081
|
-
const dispose =
|
|
1005
|
+
for (const context of this.contextMap.values()) {
|
|
1006
|
+
if (Symbol.dispose in context.state) {
|
|
1007
|
+
const dispose = context.state[Symbol.dispose];
|
|
1082
1008
|
if (typeof dispose === "function") {
|
|
1083
1009
|
dispose();
|
|
1084
1010
|
}
|
|
@@ -1089,7 +1015,11 @@ var RiverServer = class {
|
|
|
1089
1015
|
if (!isStreamOpen(message.controlFlags)) {
|
|
1090
1016
|
log?.error(
|
|
1091
1017
|
`can't create a new procedure stream from a message that doesn't have the stream open bit set`,
|
|
1092
|
-
{
|
|
1018
|
+
{
|
|
1019
|
+
clientId: this.transport.clientId,
|
|
1020
|
+
fullTransportMessage: message,
|
|
1021
|
+
tags: ["invariant-violation"]
|
|
1022
|
+
}
|
|
1093
1023
|
);
|
|
1094
1024
|
return;
|
|
1095
1025
|
}
|
|
@@ -1107,10 +1037,6 @@ var RiverServer = class {
|
|
|
1107
1037
|
});
|
|
1108
1038
|
return;
|
|
1109
1039
|
}
|
|
1110
|
-
let activeContext = context2.active();
|
|
1111
|
-
if (message.tracing) {
|
|
1112
|
-
activeContext = propagation2.extract(activeContext, message.tracing);
|
|
1113
|
-
}
|
|
1114
1040
|
const service = this.services[message.serviceName];
|
|
1115
1041
|
const serviceContext = this.getContext(service, message.serviceName);
|
|
1116
1042
|
if (!(message.procedureName in service.procedures)) {
|
|
@@ -1174,12 +1100,8 @@ var RiverServer = class {
|
|
|
1174
1100
|
`procedure ${message.serviceName}.${message.procedureName} threw an uncaught error: ${errorMsg}`,
|
|
1175
1101
|
session.loggingMetadata
|
|
1176
1102
|
);
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
} else {
|
|
1180
|
-
span.recordException(errorMsg);
|
|
1181
|
-
}
|
|
1182
|
-
span.setStatus({ code: SpanStatusCode2.ERROR });
|
|
1103
|
+
span.recordException(err instanceof Error ? err : new Error(errorMsg));
|
|
1104
|
+
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
1183
1105
|
outgoing.push(
|
|
1184
1106
|
Err({
|
|
1185
1107
|
code: UNCAUGHT_ERROR,
|
|
@@ -1188,10 +1110,10 @@ var RiverServer = class {
|
|
|
1188
1110
|
);
|
|
1189
1111
|
};
|
|
1190
1112
|
if (session.metadata === void 0) {
|
|
1191
|
-
log?.error(
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
);
|
|
1113
|
+
log?.error(`session doesn't have handshake metadata`, {
|
|
1114
|
+
...session.loggingMetadata,
|
|
1115
|
+
tags: ["invariant-violation"]
|
|
1116
|
+
});
|
|
1195
1117
|
return;
|
|
1196
1118
|
}
|
|
1197
1119
|
let inputHandler;
|
|
@@ -1206,32 +1128,48 @@ var RiverServer = class {
|
|
|
1206
1128
|
};
|
|
1207
1129
|
switch (procedure.type) {
|
|
1208
1130
|
case "rpc":
|
|
1209
|
-
inputHandler = (
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1131
|
+
inputHandler = createHandlerSpan(
|
|
1132
|
+
procedure.type,
|
|
1133
|
+
message,
|
|
1134
|
+
async (span) => {
|
|
1135
|
+
const inputMessage = await incoming.next();
|
|
1136
|
+
if (inputMessage.done) {
|
|
1137
|
+
return;
|
|
1138
|
+
}
|
|
1139
|
+
try {
|
|
1140
|
+
const outputMessage = await procedure.handler(
|
|
1141
|
+
serviceContextWithTransportInfo,
|
|
1142
|
+
inputMessage.value
|
|
1143
|
+
);
|
|
1144
|
+
outgoing.push(outputMessage);
|
|
1145
|
+
} catch (err) {
|
|
1146
|
+
errorHandler(err, span);
|
|
1147
|
+
} finally {
|
|
1148
|
+
span.end();
|
|
1149
|
+
}
|
|
1213
1150
|
}
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
"river.method.name": message.procedureName,
|
|
1222
|
-
"river.streamId": message.streamId,
|
|
1223
|
-
"span.kind": "server"
|
|
1224
|
-
},
|
|
1225
|
-
kind: SpanKind2.SERVER
|
|
1226
|
-
},
|
|
1227
|
-
activeContext,
|
|
1151
|
+
);
|
|
1152
|
+
break;
|
|
1153
|
+
case "stream":
|
|
1154
|
+
if (procHasInitMessage) {
|
|
1155
|
+
inputHandler = createHandlerSpan(
|
|
1156
|
+
procedure.type,
|
|
1157
|
+
message,
|
|
1228
1158
|
async (span) => {
|
|
1159
|
+
const initMessage = await incoming.next();
|
|
1160
|
+
if (initMessage.done) {
|
|
1161
|
+
return;
|
|
1162
|
+
}
|
|
1229
1163
|
try {
|
|
1230
|
-
const
|
|
1164
|
+
const dispose = await procedure.handler(
|
|
1231
1165
|
serviceContextWithTransportInfo,
|
|
1232
|
-
|
|
1166
|
+
initMessage.value,
|
|
1167
|
+
incoming,
|
|
1168
|
+
outgoing
|
|
1233
1169
|
);
|
|
1234
|
-
|
|
1170
|
+
if (dispose) {
|
|
1171
|
+
disposables.push(dispose);
|
|
1172
|
+
}
|
|
1235
1173
|
} catch (err) {
|
|
1236
1174
|
errorHandler(err, span);
|
|
1237
1175
|
} finally {
|
|
@@ -1239,67 +1177,10 @@ var RiverServer = class {
|
|
|
1239
1177
|
}
|
|
1240
1178
|
}
|
|
1241
1179
|
);
|
|
1242
|
-
})();
|
|
1243
|
-
break;
|
|
1244
|
-
case "stream":
|
|
1245
|
-
if (procHasInitMessage) {
|
|
1246
|
-
inputHandler = (async () => {
|
|
1247
|
-
const initMessage = await incoming.next();
|
|
1248
|
-
if (initMessage.done) {
|
|
1249
|
-
return;
|
|
1250
|
-
}
|
|
1251
|
-
await tracing_default.startActiveSpan(
|
|
1252
|
-
`${message.serviceName}.${message.procedureName}`,
|
|
1253
|
-
{
|
|
1254
|
-
attributes: {
|
|
1255
|
-
component: "river",
|
|
1256
|
-
"river.method.kind": "stream-with-init",
|
|
1257
|
-
"river.method.service": message.serviceName,
|
|
1258
|
-
"river.method.name": message.procedureName,
|
|
1259
|
-
"river.streamId": message.streamId,
|
|
1260
|
-
"span.kind": "server"
|
|
1261
|
-
},
|
|
1262
|
-
kind: SpanKind2.SERVER
|
|
1263
|
-
},
|
|
1264
|
-
activeContext,
|
|
1265
|
-
async (span) => {
|
|
1266
|
-
try {
|
|
1267
|
-
const dispose = await procedure.handler(
|
|
1268
|
-
serviceContextWithTransportInfo,
|
|
1269
|
-
initMessage.value,
|
|
1270
|
-
incoming,
|
|
1271
|
-
outgoing
|
|
1272
|
-
);
|
|
1273
|
-
if (dispose) {
|
|
1274
|
-
disposables.push(() => {
|
|
1275
|
-
dispose();
|
|
1276
|
-
span.end();
|
|
1277
|
-
});
|
|
1278
|
-
} else {
|
|
1279
|
-
span.end();
|
|
1280
|
-
}
|
|
1281
|
-
} catch (err) {
|
|
1282
|
-
errorHandler(err, span);
|
|
1283
|
-
span.end();
|
|
1284
|
-
}
|
|
1285
|
-
}
|
|
1286
|
-
);
|
|
1287
|
-
})();
|
|
1288
1180
|
} else {
|
|
1289
|
-
inputHandler =
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
attributes: {
|
|
1293
|
-
component: "river",
|
|
1294
|
-
"river.method.kind": "stream",
|
|
1295
|
-
"river.method.service": message.serviceName,
|
|
1296
|
-
"river.method.name": message.procedureName,
|
|
1297
|
-
"river.streamId": message.streamId,
|
|
1298
|
-
"span.kind": "server"
|
|
1299
|
-
},
|
|
1300
|
-
kind: SpanKind2.SERVER
|
|
1301
|
-
},
|
|
1302
|
-
activeContext,
|
|
1181
|
+
inputHandler = createHandlerSpan(
|
|
1182
|
+
procedure.type,
|
|
1183
|
+
message,
|
|
1303
1184
|
async (span) => {
|
|
1304
1185
|
try {
|
|
1305
1186
|
const dispose = await procedure.handler(
|
|
@@ -1308,15 +1189,11 @@ var RiverServer = class {
|
|
|
1308
1189
|
outgoing
|
|
1309
1190
|
);
|
|
1310
1191
|
if (dispose) {
|
|
1311
|
-
disposables.push(
|
|
1312
|
-
dispose();
|
|
1313
|
-
span.end();
|
|
1314
|
-
});
|
|
1315
|
-
} else {
|
|
1316
|
-
span.end();
|
|
1192
|
+
disposables.push(dispose);
|
|
1317
1193
|
}
|
|
1318
1194
|
} catch (err) {
|
|
1319
1195
|
errorHandler(err, span);
|
|
1196
|
+
} finally {
|
|
1320
1197
|
span.end();
|
|
1321
1198
|
}
|
|
1322
1199
|
}
|
|
@@ -1324,102 +1201,61 @@ var RiverServer = class {
|
|
|
1324
1201
|
}
|
|
1325
1202
|
break;
|
|
1326
1203
|
case "subscription":
|
|
1327
|
-
inputHandler = (
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1204
|
+
inputHandler = createHandlerSpan(
|
|
1205
|
+
procedure.type,
|
|
1206
|
+
message,
|
|
1207
|
+
async (span) => {
|
|
1208
|
+
const inputMessage = await incoming.next();
|
|
1209
|
+
if (inputMessage.done) {
|
|
1210
|
+
return;
|
|
1211
|
+
}
|
|
1212
|
+
try {
|
|
1213
|
+
const dispose = await procedure.handler(
|
|
1214
|
+
serviceContextWithTransportInfo,
|
|
1215
|
+
inputMessage.value,
|
|
1216
|
+
outgoing
|
|
1217
|
+
);
|
|
1218
|
+
if (dispose) {
|
|
1219
|
+
disposables.push(dispose);
|
|
1220
|
+
}
|
|
1221
|
+
} catch (err) {
|
|
1222
|
+
errorHandler(err, span);
|
|
1223
|
+
} finally {
|
|
1224
|
+
span.end();
|
|
1225
|
+
}
|
|
1331
1226
|
}
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
"river.method.name": message.procedureName,
|
|
1340
|
-
"river.streamId": message.streamId,
|
|
1341
|
-
"span.kind": "server"
|
|
1342
|
-
},
|
|
1343
|
-
kind: SpanKind2.SERVER
|
|
1344
|
-
},
|
|
1345
|
-
activeContext,
|
|
1227
|
+
);
|
|
1228
|
+
break;
|
|
1229
|
+
case "upload":
|
|
1230
|
+
if (procHasInitMessage) {
|
|
1231
|
+
inputHandler = createHandlerSpan(
|
|
1232
|
+
procedure.type,
|
|
1233
|
+
message,
|
|
1346
1234
|
async (span) => {
|
|
1235
|
+
const initMessage = await incoming.next();
|
|
1236
|
+
if (initMessage.done) {
|
|
1237
|
+
return;
|
|
1238
|
+
}
|
|
1347
1239
|
try {
|
|
1348
|
-
const
|
|
1240
|
+
const outputMessage = await procedure.handler(
|
|
1349
1241
|
serviceContextWithTransportInfo,
|
|
1350
|
-
|
|
1351
|
-
|
|
1242
|
+
initMessage.value,
|
|
1243
|
+
incoming
|
|
1352
1244
|
);
|
|
1353
|
-
if (
|
|
1354
|
-
|
|
1355
|
-
dispose();
|
|
1356
|
-
span.end();
|
|
1357
|
-
});
|
|
1358
|
-
} else {
|
|
1359
|
-
span.end();
|
|
1245
|
+
if (!this.disconnectedSessions.has(message.from)) {
|
|
1246
|
+
outgoing.push(outputMessage);
|
|
1360
1247
|
}
|
|
1361
1248
|
} catch (err) {
|
|
1362
1249
|
errorHandler(err, span);
|
|
1250
|
+
} finally {
|
|
1363
1251
|
span.end();
|
|
1364
1252
|
}
|
|
1365
1253
|
}
|
|
1366
1254
|
);
|
|
1367
|
-
})();
|
|
1368
|
-
break;
|
|
1369
|
-
case "upload":
|
|
1370
|
-
if (procHasInitMessage) {
|
|
1371
|
-
inputHandler = (async () => {
|
|
1372
|
-
const initMessage = await incoming.next();
|
|
1373
|
-
if (initMessage.done) {
|
|
1374
|
-
return;
|
|
1375
|
-
}
|
|
1376
|
-
await tracing_default.startActiveSpan(
|
|
1377
|
-
`${message.serviceName}.${message.procedureName}`,
|
|
1378
|
-
{
|
|
1379
|
-
attributes: {
|
|
1380
|
-
component: "river",
|
|
1381
|
-
"river.method.kind": "upload-with-init",
|
|
1382
|
-
"river.method.service": message.serviceName,
|
|
1383
|
-
"river.method.name": message.procedureName,
|
|
1384
|
-
"river.streamId": message.streamId,
|
|
1385
|
-
"span.kind": "server"
|
|
1386
|
-
},
|
|
1387
|
-
kind: SpanKind2.SERVER
|
|
1388
|
-
},
|
|
1389
|
-
activeContext,
|
|
1390
|
-
async (span) => {
|
|
1391
|
-
try {
|
|
1392
|
-
const outputMessage = await procedure.handler(
|
|
1393
|
-
serviceContextWithTransportInfo,
|
|
1394
|
-
initMessage.value,
|
|
1395
|
-
incoming
|
|
1396
|
-
);
|
|
1397
|
-
if (!this.disconnectedSessions.has(message.from)) {
|
|
1398
|
-
outgoing.push(outputMessage);
|
|
1399
|
-
}
|
|
1400
|
-
} catch (err) {
|
|
1401
|
-
errorHandler(err, span);
|
|
1402
|
-
} finally {
|
|
1403
|
-
span.end();
|
|
1404
|
-
}
|
|
1405
|
-
}
|
|
1406
|
-
);
|
|
1407
|
-
})();
|
|
1408
1255
|
} else {
|
|
1409
|
-
inputHandler =
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
attributes: {
|
|
1413
|
-
component: "river",
|
|
1414
|
-
"river.method.kind": "upload",
|
|
1415
|
-
"river.method.service": message.serviceName,
|
|
1416
|
-
"river.method.name": message.procedureName,
|
|
1417
|
-
"river.streamId": message.streamId,
|
|
1418
|
-
"span.kind": "server"
|
|
1419
|
-
},
|
|
1420
|
-
kind: SpanKind2.SERVER
|
|
1421
|
-
},
|
|
1422
|
-
activeContext,
|
|
1256
|
+
inputHandler = createHandlerSpan(
|
|
1257
|
+
procedure.type,
|
|
1258
|
+
message,
|
|
1423
1259
|
async (span) => {
|
|
1424
1260
|
try {
|
|
1425
1261
|
const outputMessage = await procedure.handler(
|
|
@@ -1485,15 +1321,16 @@ var RiverServer = class {
|
|
|
1485
1321
|
}
|
|
1486
1322
|
}
|
|
1487
1323
|
getContext(service, serviceName) {
|
|
1488
|
-
const
|
|
1489
|
-
if (!
|
|
1324
|
+
const context = this.contextMap.get(service);
|
|
1325
|
+
if (!context) {
|
|
1490
1326
|
const err = `no context found for ${serviceName}`;
|
|
1491
1327
|
log?.error(err, {
|
|
1492
|
-
clientId: this.transport.clientId
|
|
1328
|
+
clientId: this.transport.clientId,
|
|
1329
|
+
tags: ["invariant-violation"]
|
|
1493
1330
|
});
|
|
1494
1331
|
throw new Error(err);
|
|
1495
1332
|
}
|
|
1496
|
-
return
|
|
1333
|
+
return context;
|
|
1497
1334
|
}
|
|
1498
1335
|
cleanupStream = async (id) => {
|
|
1499
1336
|
const stream2 = this.streamMap.get(id);
|
|
@@ -1511,9 +1348,6 @@ function createServer(transport, services, extendedContext) {
|
|
|
1511
1348
|
return new RiverServer(transport, services, extendedContext);
|
|
1512
1349
|
}
|
|
1513
1350
|
|
|
1514
|
-
// package.json
|
|
1515
|
-
var version = "0.21.0";
|
|
1516
|
-
|
|
1517
1351
|
export {
|
|
1518
1352
|
serializeSchema,
|
|
1519
1353
|
ServiceSchema,
|
|
@@ -1524,7 +1358,6 @@ export {
|
|
|
1524
1358
|
Ok,
|
|
1525
1359
|
Err,
|
|
1526
1360
|
createClient,
|
|
1527
|
-
createServer
|
|
1528
|
-
version
|
|
1361
|
+
createServer
|
|
1529
1362
|
};
|
|
1530
|
-
//# sourceMappingURL=chunk-
|
|
1363
|
+
//# sourceMappingURL=chunk-GCLEWC26.js.map
|