@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.
- 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-NCXUFDVL.js → chunk-GCLEWC26.js} +328 -500
- 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-FDLAPYCK.js → chunk-S3YKQT4J.js} +2 -2
- package/dist/{chunk-JMXO5L2X.js → chunk-ZPBWKBM5.js} +344 -384
- package/dist/chunk-ZPBWKBM5.js.map +1 -0
- package/dist/{connection-76c5ed01.d.ts → connection-8b059ac4.d.ts} +6 -4
- package/dist/{connection-975b25c9.d.ts → connection-bbfe1147.d.ts} +1 -1
- package/dist/{index-dfad460e.d.ts → index-2ece5234.d.ts} +16 -7
- package/dist/logging/index.d.cts +2 -1
- package/dist/logging/index.d.ts +2 -1
- package/dist/router/index.cjs +373 -486
- 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 +4 -3
- package/dist/{services-7b716dcf.d.ts → services-acbcc441.d.ts} +1 -1
- package/dist/{services-9c496c6e.d.ts → services-cb01a7a8.d.ts} +1 -1
- package/dist/transport/impls/uds/client.cjs +186 -145
- 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 +3 -3
- package/dist/transport/impls/uds/server.cjs +281 -256
- 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 +3 -3
- package/dist/transport/impls/ws/client.cjs +240 -204
- 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 +33 -48
- package/dist/transport/impls/ws/client.js.map +1 -1
- package/dist/transport/impls/ws/server.cjs +303 -270
- 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 +3 -3
- package/dist/transport/impls/ws/server.js.map +1 -1
- package/dist/transport/index.cjs +390 -382
- 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 +2 -2
- package/dist/util/testHelpers.cjs +57 -7
- package/dist/util/testHelpers.cjs.map +1 -1
- package/dist/util/testHelpers.d.cts +14 -5
- package/dist/util/testHelpers.d.ts +14 -5
- package/dist/util/testHelpers.js +10 -4
- package/dist/util/testHelpers.js.map +1 -1
- package/dist/wslike-e0b32dd5.d.ts +40 -0
- package/package.json +4 -5
- package/dist/chunk-3Y7AB5EB.js +0 -42
- package/dist/chunk-3Y7AB5EB.js.map +0 -1
- package/dist/chunk-5WFL722S.js.map +0 -1
- package/dist/chunk-JMXO5L2X.js.map +0 -1
- package/dist/chunk-NCXUFDVL.js.map +0 -1
- /package/dist/{chunk-FDLAPYCK.js.map → chunk-S3YKQT4J.js.map} +0 -0
package/dist/router/index.cjs
CHANGED
|
@@ -322,9 +322,6 @@ var Procedure = {
|
|
|
322
322
|
stream
|
|
323
323
|
};
|
|
324
324
|
|
|
325
|
-
// router/client.ts
|
|
326
|
-
var import_api2 = require("@opentelemetry/api");
|
|
327
|
-
|
|
328
325
|
// node_modules/p-defer/index.js
|
|
329
326
|
function pDefer() {
|
|
330
327
|
const deferred = {};
|
|
@@ -707,8 +704,58 @@ var log = void 0;
|
|
|
707
704
|
|
|
708
705
|
// tracing/index.ts
|
|
709
706
|
var import_api = require("@opentelemetry/api");
|
|
710
|
-
|
|
711
|
-
|
|
707
|
+
|
|
708
|
+
// package.json
|
|
709
|
+
var version = "0.22.0";
|
|
710
|
+
|
|
711
|
+
// tracing/index.ts
|
|
712
|
+
function getPropagationContext(ctx) {
|
|
713
|
+
const tracing = {
|
|
714
|
+
traceparent: "",
|
|
715
|
+
tracestate: ""
|
|
716
|
+
};
|
|
717
|
+
import_api.propagation.inject(ctx, tracing);
|
|
718
|
+
return tracing;
|
|
719
|
+
}
|
|
720
|
+
function createProcTelemetryInfo(kind, serviceName, procedureName, streamId) {
|
|
721
|
+
const ctx = import_api.context.active();
|
|
722
|
+
const span = tracer.startSpan(
|
|
723
|
+
`procedure call ${serviceName}.${procedureName}`,
|
|
724
|
+
{
|
|
725
|
+
attributes: {
|
|
726
|
+
component: "river",
|
|
727
|
+
"river.method.kind": kind,
|
|
728
|
+
"river.method.service": serviceName,
|
|
729
|
+
"river.method.name": procedureName,
|
|
730
|
+
"river.streamId": streamId,
|
|
731
|
+
"span.kind": "client"
|
|
732
|
+
},
|
|
733
|
+
kind: import_api.SpanKind.CLIENT
|
|
734
|
+
},
|
|
735
|
+
ctx
|
|
736
|
+
);
|
|
737
|
+
return { span, ctx };
|
|
738
|
+
}
|
|
739
|
+
function createHandlerSpan(kind, message, fn) {
|
|
740
|
+
const ctx = message.tracing ? import_api.propagation.extract(import_api.context.active(), message.tracing) : import_api.context.active();
|
|
741
|
+
return tracer.startActiveSpan(
|
|
742
|
+
`procedure handler ${message.serviceName}.${message.procedureName}`,
|
|
743
|
+
{
|
|
744
|
+
attributes: {
|
|
745
|
+
component: "river",
|
|
746
|
+
"river.method.kind": kind,
|
|
747
|
+
"river.method.service": message.serviceName,
|
|
748
|
+
"river.method.name": message.procedureName,
|
|
749
|
+
"river.streamId": message.streamId,
|
|
750
|
+
"span.kind": "server"
|
|
751
|
+
},
|
|
752
|
+
kind: import_api.SpanKind.SERVER
|
|
753
|
+
},
|
|
754
|
+
ctx,
|
|
755
|
+
fn
|
|
756
|
+
);
|
|
757
|
+
}
|
|
758
|
+
var tracer = import_api.trace.getTracer("river", version);
|
|
712
759
|
|
|
713
760
|
// router/client.ts
|
|
714
761
|
var noop = () => {
|
|
@@ -781,318 +828,254 @@ function createSessionDisconnectHandler(from, cb) {
|
|
|
781
828
|
}
|
|
782
829
|
function handleRpc(transport, serverId, input, serviceName, procedureName) {
|
|
783
830
|
const streamId = (0, import_nanoid2.nanoid)();
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
"river.method.kind": "rpc",
|
|
790
|
-
"river.method.service": serviceName,
|
|
791
|
-
"river.method.name": procedureName,
|
|
792
|
-
"river.streamId": streamId,
|
|
793
|
-
"span.kind": "client"
|
|
794
|
-
},
|
|
795
|
-
kind: import_api2.SpanKind.CLIENT
|
|
796
|
-
},
|
|
797
|
-
(span) => {
|
|
798
|
-
const tracing = { traceparent: "", tracestate: "" };
|
|
799
|
-
import_api2.propagation.inject(import_api2.context.active(), tracing);
|
|
800
|
-
transport.send(serverId, {
|
|
801
|
-
streamId,
|
|
802
|
-
serviceName,
|
|
803
|
-
procedureName,
|
|
804
|
-
tracing,
|
|
805
|
-
payload: input,
|
|
806
|
-
controlFlags: 2 /* StreamOpenBit */ | 4 /* StreamClosedBit */
|
|
807
|
-
});
|
|
808
|
-
const responsePromise = new Promise((resolve) => {
|
|
809
|
-
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
810
|
-
span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
|
|
811
|
-
cleanup();
|
|
812
|
-
resolve(
|
|
813
|
-
Err({
|
|
814
|
-
code: UNEXPECTED_DISCONNECT,
|
|
815
|
-
message: `${serverId} unexpectedly disconnected`
|
|
816
|
-
})
|
|
817
|
-
);
|
|
818
|
-
});
|
|
819
|
-
function cleanup() {
|
|
820
|
-
transport.removeEventListener("message", onMessage);
|
|
821
|
-
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
822
|
-
span.end();
|
|
823
|
-
}
|
|
824
|
-
function onMessage(msg) {
|
|
825
|
-
if (msg.streamId !== streamId)
|
|
826
|
-
return;
|
|
827
|
-
if (msg.to !== transport.clientId)
|
|
828
|
-
return;
|
|
829
|
-
if (msg.payload && typeof msg.payload === "object" && "ok" in msg.payload) {
|
|
830
|
-
span.setStatus({
|
|
831
|
-
code: msg.payload.ok ? import_api2.SpanStatusCode.OK : import_api2.SpanStatusCode.ERROR
|
|
832
|
-
});
|
|
833
|
-
}
|
|
834
|
-
cleanup();
|
|
835
|
-
resolve(msg.payload);
|
|
836
|
-
}
|
|
837
|
-
transport.addEventListener("message", onMessage);
|
|
838
|
-
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
839
|
-
});
|
|
840
|
-
return responsePromise;
|
|
841
|
-
}
|
|
831
|
+
const { span, ctx } = createProcTelemetryInfo(
|
|
832
|
+
"rpc",
|
|
833
|
+
serviceName,
|
|
834
|
+
procedureName,
|
|
835
|
+
streamId
|
|
842
836
|
);
|
|
837
|
+
transport.send(serverId, {
|
|
838
|
+
streamId,
|
|
839
|
+
serviceName,
|
|
840
|
+
procedureName,
|
|
841
|
+
payload: input,
|
|
842
|
+
tracing: getPropagationContext(ctx),
|
|
843
|
+
controlFlags: 2 /* StreamOpenBit */ | 4 /* StreamClosedBit */
|
|
844
|
+
});
|
|
845
|
+
const responsePromise = new Promise((resolve) => {
|
|
846
|
+
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
847
|
+
cleanup();
|
|
848
|
+
resolve(
|
|
849
|
+
Err({
|
|
850
|
+
code: UNEXPECTED_DISCONNECT,
|
|
851
|
+
message: `${serverId} unexpectedly disconnected`
|
|
852
|
+
})
|
|
853
|
+
);
|
|
854
|
+
});
|
|
855
|
+
function cleanup() {
|
|
856
|
+
transport.removeEventListener("message", onMessage);
|
|
857
|
+
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
858
|
+
span.end();
|
|
859
|
+
}
|
|
860
|
+
function onMessage(msg) {
|
|
861
|
+
if (msg.streamId !== streamId)
|
|
862
|
+
return;
|
|
863
|
+
if (msg.to !== transport.clientId)
|
|
864
|
+
return;
|
|
865
|
+
cleanup();
|
|
866
|
+
resolve(msg.payload);
|
|
867
|
+
}
|
|
868
|
+
transport.addEventListener("message", onMessage);
|
|
869
|
+
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
870
|
+
});
|
|
871
|
+
return responsePromise;
|
|
843
872
|
}
|
|
844
873
|
function handleStream(transport, serverId, init, serviceName, procedureName) {
|
|
845
874
|
const streamId = (0, import_nanoid2.nanoid)();
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
controlFlags: 2 /* StreamOpenBit */
|
|
874
|
-
});
|
|
875
|
-
firstMessage = false;
|
|
876
|
-
}
|
|
877
|
-
const pipeInputToTransport = async () => {
|
|
878
|
-
for await (const rawIn of inputStream) {
|
|
879
|
-
const m = {
|
|
880
|
-
streamId,
|
|
881
|
-
payload: rawIn,
|
|
882
|
-
controlFlags: 0
|
|
883
|
-
};
|
|
884
|
-
if (firstMessage) {
|
|
885
|
-
m.serviceName = serviceName;
|
|
886
|
-
m.procedureName = procedureName;
|
|
887
|
-
m.tracing = tracing;
|
|
888
|
-
m.controlFlags |= 2 /* StreamOpenBit */;
|
|
889
|
-
firstMessage = false;
|
|
890
|
-
}
|
|
891
|
-
transport.send(serverId, m);
|
|
892
|
-
}
|
|
893
|
-
if (!healthyClose)
|
|
894
|
-
return;
|
|
895
|
-
transport.sendCloseStream(serverId, streamId);
|
|
896
|
-
span.setStatus({ code: import_api2.SpanStatusCode.OK });
|
|
875
|
+
const { span, ctx } = createProcTelemetryInfo(
|
|
876
|
+
"stream",
|
|
877
|
+
serviceName,
|
|
878
|
+
procedureName,
|
|
879
|
+
streamId
|
|
880
|
+
);
|
|
881
|
+
const inputStream = pushable({ objectMode: true });
|
|
882
|
+
const outputStream = pushable({ objectMode: true });
|
|
883
|
+
let firstMessage = true;
|
|
884
|
+
let healthyClose = true;
|
|
885
|
+
if (init) {
|
|
886
|
+
transport.send(serverId, {
|
|
887
|
+
streamId,
|
|
888
|
+
serviceName,
|
|
889
|
+
procedureName,
|
|
890
|
+
payload: init,
|
|
891
|
+
tracing: getPropagationContext(ctx),
|
|
892
|
+
controlFlags: 2 /* StreamOpenBit */
|
|
893
|
+
});
|
|
894
|
+
firstMessage = false;
|
|
895
|
+
}
|
|
896
|
+
const pipeInputToTransport = async () => {
|
|
897
|
+
for await (const rawIn of inputStream) {
|
|
898
|
+
const m = {
|
|
899
|
+
streamId,
|
|
900
|
+
payload: rawIn,
|
|
901
|
+
controlFlags: 0
|
|
897
902
|
};
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
if (isStreamClose(msg.controlFlags)) {
|
|
905
|
-
cleanup();
|
|
906
|
-
} else {
|
|
907
|
-
outputStream.push(msg.payload);
|
|
908
|
-
}
|
|
909
|
-
}
|
|
910
|
-
function cleanup() {
|
|
911
|
-
inputStream.end();
|
|
912
|
-
outputStream.end();
|
|
913
|
-
transport.removeEventListener("message", onMessage);
|
|
914
|
-
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
915
|
-
span.end();
|
|
903
|
+
if (firstMessage) {
|
|
904
|
+
m.serviceName = serviceName;
|
|
905
|
+
m.procedureName = procedureName;
|
|
906
|
+
m.tracing = getPropagationContext(ctx);
|
|
907
|
+
m.controlFlags |= 2 /* StreamOpenBit */;
|
|
908
|
+
firstMessage = false;
|
|
916
909
|
}
|
|
917
|
-
|
|
918
|
-
outputStream.push(
|
|
919
|
-
Err({
|
|
920
|
-
code: UNEXPECTED_DISCONNECT,
|
|
921
|
-
message: `${serverId} unexpectedly disconnected`
|
|
922
|
-
})
|
|
923
|
-
);
|
|
924
|
-
healthyClose = false;
|
|
925
|
-
span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
|
|
926
|
-
cleanup();
|
|
927
|
-
});
|
|
928
|
-
transport.addEventListener("message", onMessage);
|
|
929
|
-
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
930
|
-
return [inputStream, outputStream, cleanup];
|
|
910
|
+
transport.send(serverId, m);
|
|
931
911
|
}
|
|
932
|
-
|
|
912
|
+
if (!healthyClose)
|
|
913
|
+
return;
|
|
914
|
+
transport.sendCloseStream(serverId, streamId);
|
|
915
|
+
};
|
|
916
|
+
void pipeInputToTransport();
|
|
917
|
+
function onMessage(msg) {
|
|
918
|
+
if (msg.streamId !== streamId)
|
|
919
|
+
return;
|
|
920
|
+
if (msg.to !== transport.clientId)
|
|
921
|
+
return;
|
|
922
|
+
if (isStreamClose(msg.controlFlags)) {
|
|
923
|
+
cleanup();
|
|
924
|
+
} else {
|
|
925
|
+
outputStream.push(msg.payload);
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
function cleanup() {
|
|
929
|
+
inputStream.end();
|
|
930
|
+
outputStream.end();
|
|
931
|
+
transport.removeEventListener("message", onMessage);
|
|
932
|
+
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
933
|
+
span.end();
|
|
934
|
+
}
|
|
935
|
+
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
936
|
+
outputStream.push(
|
|
937
|
+
Err({
|
|
938
|
+
code: UNEXPECTED_DISCONNECT,
|
|
939
|
+
message: `${serverId} unexpectedly disconnected`
|
|
940
|
+
})
|
|
941
|
+
);
|
|
942
|
+
healthyClose = false;
|
|
943
|
+
cleanup();
|
|
944
|
+
});
|
|
945
|
+
transport.addEventListener("message", onMessage);
|
|
946
|
+
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
947
|
+
return [inputStream, outputStream, cleanup];
|
|
933
948
|
}
|
|
934
949
|
function handleSubscribe(transport, serverId, input, serviceName, procedureName) {
|
|
935
950
|
const streamId = (0, import_nanoid2.nanoid)();
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
"river.method.kind": "subscribe",
|
|
942
|
-
"river.method.service": serviceName,
|
|
943
|
-
"river.method.name": procedureName,
|
|
944
|
-
"river.streamId": streamId,
|
|
945
|
-
"span.kind": "client"
|
|
946
|
-
},
|
|
947
|
-
kind: import_api2.SpanKind.CLIENT
|
|
948
|
-
},
|
|
949
|
-
(span) => {
|
|
950
|
-
const tracing = { traceparent: "", tracestate: "" };
|
|
951
|
-
import_api2.propagation.inject(import_api2.context.active(), tracing);
|
|
952
|
-
transport.send(serverId, {
|
|
953
|
-
streamId,
|
|
954
|
-
serviceName,
|
|
955
|
-
procedureName,
|
|
956
|
-
tracing,
|
|
957
|
-
payload: input,
|
|
958
|
-
controlFlags: 2 /* StreamOpenBit */
|
|
959
|
-
});
|
|
960
|
-
let healthyClose = true;
|
|
961
|
-
const outputStream = pushable({ objectMode: true });
|
|
962
|
-
function onMessage(msg) {
|
|
963
|
-
if (msg.streamId !== streamId)
|
|
964
|
-
return;
|
|
965
|
-
if (msg.to !== transport.clientId)
|
|
966
|
-
return;
|
|
967
|
-
if (isStreamClose(msg.controlFlags)) {
|
|
968
|
-
cleanup();
|
|
969
|
-
} else {
|
|
970
|
-
outputStream.push(msg.payload);
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
function cleanup() {
|
|
974
|
-
outputStream.end();
|
|
975
|
-
transport.removeEventListener("message", onMessage);
|
|
976
|
-
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
977
|
-
span.end();
|
|
978
|
-
}
|
|
979
|
-
const closeHandler = () => {
|
|
980
|
-
cleanup();
|
|
981
|
-
if (!healthyClose)
|
|
982
|
-
return;
|
|
983
|
-
transport.sendCloseStream(serverId, streamId);
|
|
984
|
-
};
|
|
985
|
-
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
986
|
-
outputStream.push(
|
|
987
|
-
Err({
|
|
988
|
-
code: UNEXPECTED_DISCONNECT,
|
|
989
|
-
message: `${serverId} unexpectedly disconnected`
|
|
990
|
-
})
|
|
991
|
-
);
|
|
992
|
-
healthyClose = false;
|
|
993
|
-
span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
|
|
994
|
-
cleanup();
|
|
995
|
-
});
|
|
996
|
-
transport.addEventListener("message", onMessage);
|
|
997
|
-
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
998
|
-
return [outputStream, closeHandler];
|
|
999
|
-
}
|
|
951
|
+
const { span, ctx } = createProcTelemetryInfo(
|
|
952
|
+
"subscription",
|
|
953
|
+
serviceName,
|
|
954
|
+
procedureName,
|
|
955
|
+
streamId
|
|
1000
956
|
);
|
|
957
|
+
transport.send(serverId, {
|
|
958
|
+
streamId,
|
|
959
|
+
serviceName,
|
|
960
|
+
procedureName,
|
|
961
|
+
payload: input,
|
|
962
|
+
tracing: getPropagationContext(ctx),
|
|
963
|
+
controlFlags: 2 /* StreamOpenBit */
|
|
964
|
+
});
|
|
965
|
+
let healthyClose = true;
|
|
966
|
+
const outputStream = pushable({ objectMode: true });
|
|
967
|
+
function onMessage(msg) {
|
|
968
|
+
if (msg.streamId !== streamId)
|
|
969
|
+
return;
|
|
970
|
+
if (msg.to !== transport.clientId)
|
|
971
|
+
return;
|
|
972
|
+
if (isStreamClose(msg.controlFlags)) {
|
|
973
|
+
cleanup();
|
|
974
|
+
} else {
|
|
975
|
+
outputStream.push(msg.payload);
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
function cleanup() {
|
|
979
|
+
outputStream.end();
|
|
980
|
+
transport.removeEventListener("message", onMessage);
|
|
981
|
+
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
982
|
+
span.end();
|
|
983
|
+
}
|
|
984
|
+
const closeHandler = () => {
|
|
985
|
+
cleanup();
|
|
986
|
+
if (!healthyClose)
|
|
987
|
+
return;
|
|
988
|
+
transport.sendCloseStream(serverId, streamId);
|
|
989
|
+
};
|
|
990
|
+
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
991
|
+
outputStream.push(
|
|
992
|
+
Err({
|
|
993
|
+
code: UNEXPECTED_DISCONNECT,
|
|
994
|
+
message: `${serverId} unexpectedly disconnected`
|
|
995
|
+
})
|
|
996
|
+
);
|
|
997
|
+
healthyClose = false;
|
|
998
|
+
cleanup();
|
|
999
|
+
});
|
|
1000
|
+
transport.addEventListener("message", onMessage);
|
|
1001
|
+
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
1002
|
+
return [outputStream, closeHandler];
|
|
1001
1003
|
}
|
|
1002
1004
|
function handleUpload(transport, serverId, init, serviceName, procedureName) {
|
|
1003
1005
|
const streamId = (0, import_nanoid2.nanoid)();
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1006
|
+
const { span, ctx } = createProcTelemetryInfo(
|
|
1007
|
+
"upload",
|
|
1008
|
+
serviceName,
|
|
1009
|
+
procedureName,
|
|
1010
|
+
streamId
|
|
1011
|
+
);
|
|
1012
|
+
const inputStream = pushable({ objectMode: true });
|
|
1013
|
+
let firstMessage = true;
|
|
1014
|
+
let healthyClose = true;
|
|
1015
|
+
if (init) {
|
|
1016
|
+
transport.send(serverId, {
|
|
1017
|
+
streamId,
|
|
1018
|
+
serviceName,
|
|
1019
|
+
procedureName,
|
|
1020
|
+
payload: init,
|
|
1021
|
+
tracing: getPropagationContext(ctx),
|
|
1022
|
+
controlFlags: 2 /* StreamOpenBit */
|
|
1023
|
+
});
|
|
1024
|
+
firstMessage = false;
|
|
1025
|
+
}
|
|
1026
|
+
const pipeInputToTransport = async () => {
|
|
1027
|
+
for await (const rawIn of inputStream) {
|
|
1028
|
+
const m = {
|
|
1029
|
+
streamId,
|
|
1030
|
+
payload: rawIn,
|
|
1031
|
+
controlFlags: 0
|
|
1032
|
+
};
|
|
1033
|
+
if (firstMessage) {
|
|
1034
|
+
m.serviceName = serviceName;
|
|
1035
|
+
m.procedureName = procedureName;
|
|
1036
|
+
m.tracing = getPropagationContext(ctx);
|
|
1037
|
+
m.controlFlags |= 2 /* StreamOpenBit */;
|
|
1032
1038
|
firstMessage = false;
|
|
1033
1039
|
}
|
|
1034
|
-
|
|
1035
|
-
for await (const rawIn of inputStream) {
|
|
1036
|
-
const m = {
|
|
1037
|
-
streamId,
|
|
1038
|
-
payload: rawIn,
|
|
1039
|
-
controlFlags: 0
|
|
1040
|
-
};
|
|
1041
|
-
if (firstMessage) {
|
|
1042
|
-
m.serviceName = serviceName;
|
|
1043
|
-
m.procedureName = procedureName;
|
|
1044
|
-
m.tracing = tracing;
|
|
1045
|
-
m.controlFlags |= 2 /* StreamOpenBit */;
|
|
1046
|
-
firstMessage = false;
|
|
1047
|
-
}
|
|
1048
|
-
transport.send(serverId, m);
|
|
1049
|
-
}
|
|
1050
|
-
if (!healthyClose)
|
|
1051
|
-
return;
|
|
1052
|
-
transport.sendCloseStream(serverId, streamId);
|
|
1053
|
-
};
|
|
1054
|
-
void pipeInputToTransport();
|
|
1055
|
-
const responsePromise = new Promise((resolve) => {
|
|
1056
|
-
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
1057
|
-
healthyClose = false;
|
|
1058
|
-
span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
|
|
1059
|
-
cleanup();
|
|
1060
|
-
resolve(
|
|
1061
|
-
Err({
|
|
1062
|
-
code: UNEXPECTED_DISCONNECT,
|
|
1063
|
-
message: `${serverId} unexpectedly disconnected`
|
|
1064
|
-
})
|
|
1065
|
-
);
|
|
1066
|
-
});
|
|
1067
|
-
function cleanup() {
|
|
1068
|
-
inputStream.end();
|
|
1069
|
-
transport.removeEventListener("message", onMessage);
|
|
1070
|
-
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
1071
|
-
span.end();
|
|
1072
|
-
}
|
|
1073
|
-
function onMessage(msg) {
|
|
1074
|
-
if (msg.streamId !== streamId)
|
|
1075
|
-
return;
|
|
1076
|
-
if (msg.to !== transport.clientId)
|
|
1077
|
-
return;
|
|
1078
|
-
if (msg.payload && typeof msg.payload === "object" && "ok" in msg.payload) {
|
|
1079
|
-
span.setStatus({
|
|
1080
|
-
code: msg.payload.ok ? import_api2.SpanStatusCode.OK : import_api2.SpanStatusCode.ERROR
|
|
1081
|
-
});
|
|
1082
|
-
}
|
|
1083
|
-
cleanup();
|
|
1084
|
-
resolve(msg.payload);
|
|
1085
|
-
}
|
|
1086
|
-
transport.addEventListener("message", onMessage);
|
|
1087
|
-
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
1088
|
-
});
|
|
1089
|
-
return [inputStream, responsePromise];
|
|
1040
|
+
transport.send(serverId, m);
|
|
1090
1041
|
}
|
|
1091
|
-
|
|
1042
|
+
if (!healthyClose)
|
|
1043
|
+
return;
|
|
1044
|
+
transport.sendCloseStream(serverId, streamId);
|
|
1045
|
+
};
|
|
1046
|
+
void pipeInputToTransport();
|
|
1047
|
+
const responsePromise = new Promise((resolve) => {
|
|
1048
|
+
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
1049
|
+
healthyClose = false;
|
|
1050
|
+
cleanup();
|
|
1051
|
+
resolve(
|
|
1052
|
+
Err({
|
|
1053
|
+
code: UNEXPECTED_DISCONNECT,
|
|
1054
|
+
message: `${serverId} unexpectedly disconnected`
|
|
1055
|
+
})
|
|
1056
|
+
);
|
|
1057
|
+
});
|
|
1058
|
+
function cleanup() {
|
|
1059
|
+
inputStream.end();
|
|
1060
|
+
transport.removeEventListener("message", onMessage);
|
|
1061
|
+
transport.removeEventListener("sessionStatus", onSessionStatus);
|
|
1062
|
+
span.end();
|
|
1063
|
+
}
|
|
1064
|
+
function onMessage(msg) {
|
|
1065
|
+
if (msg.streamId !== streamId)
|
|
1066
|
+
return;
|
|
1067
|
+
if (msg.to !== transport.clientId)
|
|
1068
|
+
return;
|
|
1069
|
+
cleanup();
|
|
1070
|
+
resolve(msg.payload);
|
|
1071
|
+
}
|
|
1072
|
+
transport.addEventListener("message", onMessage);
|
|
1073
|
+
transport.addEventListener("sessionStatus", onSessionStatus);
|
|
1074
|
+
});
|
|
1075
|
+
return [inputStream, responsePromise];
|
|
1092
1076
|
}
|
|
1093
1077
|
|
|
1094
1078
|
// router/server.ts
|
|
1095
|
-
var import_api3 = require("@opentelemetry/api");
|
|
1096
1079
|
var import_value = require("@sinclair/typebox/value");
|
|
1097
1080
|
|
|
1098
1081
|
// util/stringify.ts
|
|
@@ -1104,6 +1087,7 @@ function coerceErrorString(err) {
|
|
|
1104
1087
|
}
|
|
1105
1088
|
|
|
1106
1089
|
// router/server.ts
|
|
1090
|
+
var import_api2 = require("@opentelemetry/api");
|
|
1107
1091
|
var RiverServer = class {
|
|
1108
1092
|
transport;
|
|
1109
1093
|
services;
|
|
@@ -1174,9 +1158,9 @@ var RiverServer = class {
|
|
|
1174
1158
|
this.transport.removeEventListener("message", this.onMessage);
|
|
1175
1159
|
this.transport.removeEventListener("sessionStatus", this.onSessionStatus);
|
|
1176
1160
|
await Promise.all([...this.streamMap.keys()].map(this.cleanupStream));
|
|
1177
|
-
for (const
|
|
1178
|
-
if (Symbol.dispose in
|
|
1179
|
-
const dispose =
|
|
1161
|
+
for (const context2 of this.contextMap.values()) {
|
|
1162
|
+
if (Symbol.dispose in context2.state) {
|
|
1163
|
+
const dispose = context2.state[Symbol.dispose];
|
|
1180
1164
|
if (typeof dispose === "function") {
|
|
1181
1165
|
dispose();
|
|
1182
1166
|
}
|
|
@@ -1209,10 +1193,6 @@ var RiverServer = class {
|
|
|
1209
1193
|
});
|
|
1210
1194
|
return;
|
|
1211
1195
|
}
|
|
1212
|
-
let activeContext = import_api3.context.active();
|
|
1213
|
-
if (message.tracing) {
|
|
1214
|
-
activeContext = import_api3.propagation.extract(activeContext, message.tracing);
|
|
1215
|
-
}
|
|
1216
1196
|
const service = this.services[message.serviceName];
|
|
1217
1197
|
const serviceContext = this.getContext(service, message.serviceName);
|
|
1218
1198
|
if (!(message.procedureName in service.procedures)) {
|
|
@@ -1276,12 +1256,8 @@ var RiverServer = class {
|
|
|
1276
1256
|
`procedure ${message.serviceName}.${message.procedureName} threw an uncaught error: ${errorMsg}`,
|
|
1277
1257
|
session.loggingMetadata
|
|
1278
1258
|
);
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
} else {
|
|
1282
|
-
span.recordException(errorMsg);
|
|
1283
|
-
}
|
|
1284
|
-
span.setStatus({ code: import_api3.SpanStatusCode.ERROR });
|
|
1259
|
+
span.recordException(err instanceof Error ? err : new Error(errorMsg));
|
|
1260
|
+
span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
|
|
1285
1261
|
outgoing.push(
|
|
1286
1262
|
Err({
|
|
1287
1263
|
code: UNCAUGHT_ERROR,
|
|
@@ -1308,32 +1284,48 @@ var RiverServer = class {
|
|
|
1308
1284
|
};
|
|
1309
1285
|
switch (procedure.type) {
|
|
1310
1286
|
case "rpc":
|
|
1311
|
-
inputHandler = (
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1287
|
+
inputHandler = createHandlerSpan(
|
|
1288
|
+
procedure.type,
|
|
1289
|
+
message,
|
|
1290
|
+
async (span) => {
|
|
1291
|
+
const inputMessage = await incoming.next();
|
|
1292
|
+
if (inputMessage.done) {
|
|
1293
|
+
return;
|
|
1294
|
+
}
|
|
1295
|
+
try {
|
|
1296
|
+
const outputMessage = await procedure.handler(
|
|
1297
|
+
serviceContextWithTransportInfo,
|
|
1298
|
+
inputMessage.value
|
|
1299
|
+
);
|
|
1300
|
+
outgoing.push(outputMessage);
|
|
1301
|
+
} catch (err) {
|
|
1302
|
+
errorHandler(err, span);
|
|
1303
|
+
} finally {
|
|
1304
|
+
span.end();
|
|
1305
|
+
}
|
|
1315
1306
|
}
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
"river.method.name": message.procedureName,
|
|
1324
|
-
"river.streamId": message.streamId,
|
|
1325
|
-
"span.kind": "server"
|
|
1326
|
-
},
|
|
1327
|
-
kind: import_api3.SpanKind.SERVER
|
|
1328
|
-
},
|
|
1329
|
-
activeContext,
|
|
1307
|
+
);
|
|
1308
|
+
break;
|
|
1309
|
+
case "stream":
|
|
1310
|
+
if (procHasInitMessage) {
|
|
1311
|
+
inputHandler = createHandlerSpan(
|
|
1312
|
+
procedure.type,
|
|
1313
|
+
message,
|
|
1330
1314
|
async (span) => {
|
|
1315
|
+
const initMessage = await incoming.next();
|
|
1316
|
+
if (initMessage.done) {
|
|
1317
|
+
return;
|
|
1318
|
+
}
|
|
1331
1319
|
try {
|
|
1332
|
-
const
|
|
1320
|
+
const dispose = await procedure.handler(
|
|
1333
1321
|
serviceContextWithTransportInfo,
|
|
1334
|
-
|
|
1322
|
+
initMessage.value,
|
|
1323
|
+
incoming,
|
|
1324
|
+
outgoing
|
|
1335
1325
|
);
|
|
1336
|
-
|
|
1326
|
+
if (dispose) {
|
|
1327
|
+
disposables.push(dispose);
|
|
1328
|
+
}
|
|
1337
1329
|
} catch (err) {
|
|
1338
1330
|
errorHandler(err, span);
|
|
1339
1331
|
} finally {
|
|
@@ -1341,67 +1333,10 @@ var RiverServer = class {
|
|
|
1341
1333
|
}
|
|
1342
1334
|
}
|
|
1343
1335
|
);
|
|
1344
|
-
})();
|
|
1345
|
-
break;
|
|
1346
|
-
case "stream":
|
|
1347
|
-
if (procHasInitMessage) {
|
|
1348
|
-
inputHandler = (async () => {
|
|
1349
|
-
const initMessage = await incoming.next();
|
|
1350
|
-
if (initMessage.done) {
|
|
1351
|
-
return;
|
|
1352
|
-
}
|
|
1353
|
-
await tracing_default.startActiveSpan(
|
|
1354
|
-
`${message.serviceName}.${message.procedureName}`,
|
|
1355
|
-
{
|
|
1356
|
-
attributes: {
|
|
1357
|
-
component: "river",
|
|
1358
|
-
"river.method.kind": "stream-with-init",
|
|
1359
|
-
"river.method.service": message.serviceName,
|
|
1360
|
-
"river.method.name": message.procedureName,
|
|
1361
|
-
"river.streamId": message.streamId,
|
|
1362
|
-
"span.kind": "server"
|
|
1363
|
-
},
|
|
1364
|
-
kind: import_api3.SpanKind.SERVER
|
|
1365
|
-
},
|
|
1366
|
-
activeContext,
|
|
1367
|
-
async (span) => {
|
|
1368
|
-
try {
|
|
1369
|
-
const dispose = await procedure.handler(
|
|
1370
|
-
serviceContextWithTransportInfo,
|
|
1371
|
-
initMessage.value,
|
|
1372
|
-
incoming,
|
|
1373
|
-
outgoing
|
|
1374
|
-
);
|
|
1375
|
-
if (dispose) {
|
|
1376
|
-
disposables.push(() => {
|
|
1377
|
-
dispose();
|
|
1378
|
-
span.end();
|
|
1379
|
-
});
|
|
1380
|
-
} else {
|
|
1381
|
-
span.end();
|
|
1382
|
-
}
|
|
1383
|
-
} catch (err) {
|
|
1384
|
-
errorHandler(err, span);
|
|
1385
|
-
span.end();
|
|
1386
|
-
}
|
|
1387
|
-
}
|
|
1388
|
-
);
|
|
1389
|
-
})();
|
|
1390
1336
|
} else {
|
|
1391
|
-
inputHandler =
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
attributes: {
|
|
1395
|
-
component: "river",
|
|
1396
|
-
"river.method.kind": "stream",
|
|
1397
|
-
"river.method.service": message.serviceName,
|
|
1398
|
-
"river.method.name": message.procedureName,
|
|
1399
|
-
"river.streamId": message.streamId,
|
|
1400
|
-
"span.kind": "server"
|
|
1401
|
-
},
|
|
1402
|
-
kind: import_api3.SpanKind.SERVER
|
|
1403
|
-
},
|
|
1404
|
-
activeContext,
|
|
1337
|
+
inputHandler = createHandlerSpan(
|
|
1338
|
+
procedure.type,
|
|
1339
|
+
message,
|
|
1405
1340
|
async (span) => {
|
|
1406
1341
|
try {
|
|
1407
1342
|
const dispose = await procedure.handler(
|
|
@@ -1410,15 +1345,11 @@ var RiverServer = class {
|
|
|
1410
1345
|
outgoing
|
|
1411
1346
|
);
|
|
1412
1347
|
if (dispose) {
|
|
1413
|
-
disposables.push(
|
|
1414
|
-
dispose();
|
|
1415
|
-
span.end();
|
|
1416
|
-
});
|
|
1417
|
-
} else {
|
|
1418
|
-
span.end();
|
|
1348
|
+
disposables.push(dispose);
|
|
1419
1349
|
}
|
|
1420
1350
|
} catch (err) {
|
|
1421
1351
|
errorHandler(err, span);
|
|
1352
|
+
} finally {
|
|
1422
1353
|
span.end();
|
|
1423
1354
|
}
|
|
1424
1355
|
}
|
|
@@ -1426,102 +1357,61 @@ var RiverServer = class {
|
|
|
1426
1357
|
}
|
|
1427
1358
|
break;
|
|
1428
1359
|
case "subscription":
|
|
1429
|
-
inputHandler = (
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1360
|
+
inputHandler = createHandlerSpan(
|
|
1361
|
+
procedure.type,
|
|
1362
|
+
message,
|
|
1363
|
+
async (span) => {
|
|
1364
|
+
const inputMessage = await incoming.next();
|
|
1365
|
+
if (inputMessage.done) {
|
|
1366
|
+
return;
|
|
1367
|
+
}
|
|
1368
|
+
try {
|
|
1369
|
+
const dispose = await procedure.handler(
|
|
1370
|
+
serviceContextWithTransportInfo,
|
|
1371
|
+
inputMessage.value,
|
|
1372
|
+
outgoing
|
|
1373
|
+
);
|
|
1374
|
+
if (dispose) {
|
|
1375
|
+
disposables.push(dispose);
|
|
1376
|
+
}
|
|
1377
|
+
} catch (err) {
|
|
1378
|
+
errorHandler(err, span);
|
|
1379
|
+
} finally {
|
|
1380
|
+
span.end();
|
|
1381
|
+
}
|
|
1433
1382
|
}
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
"river.method.name": message.procedureName,
|
|
1442
|
-
"river.streamId": message.streamId,
|
|
1443
|
-
"span.kind": "server"
|
|
1444
|
-
},
|
|
1445
|
-
kind: import_api3.SpanKind.SERVER
|
|
1446
|
-
},
|
|
1447
|
-
activeContext,
|
|
1383
|
+
);
|
|
1384
|
+
break;
|
|
1385
|
+
case "upload":
|
|
1386
|
+
if (procHasInitMessage) {
|
|
1387
|
+
inputHandler = createHandlerSpan(
|
|
1388
|
+
procedure.type,
|
|
1389
|
+
message,
|
|
1448
1390
|
async (span) => {
|
|
1391
|
+
const initMessage = await incoming.next();
|
|
1392
|
+
if (initMessage.done) {
|
|
1393
|
+
return;
|
|
1394
|
+
}
|
|
1449
1395
|
try {
|
|
1450
|
-
const
|
|
1396
|
+
const outputMessage = await procedure.handler(
|
|
1451
1397
|
serviceContextWithTransportInfo,
|
|
1452
|
-
|
|
1453
|
-
|
|
1398
|
+
initMessage.value,
|
|
1399
|
+
incoming
|
|
1454
1400
|
);
|
|
1455
|
-
if (
|
|
1456
|
-
|
|
1457
|
-
dispose();
|
|
1458
|
-
span.end();
|
|
1459
|
-
});
|
|
1460
|
-
} else {
|
|
1461
|
-
span.end();
|
|
1401
|
+
if (!this.disconnectedSessions.has(message.from)) {
|
|
1402
|
+
outgoing.push(outputMessage);
|
|
1462
1403
|
}
|
|
1463
1404
|
} catch (err) {
|
|
1464
1405
|
errorHandler(err, span);
|
|
1406
|
+
} finally {
|
|
1465
1407
|
span.end();
|
|
1466
1408
|
}
|
|
1467
1409
|
}
|
|
1468
1410
|
);
|
|
1469
|
-
})();
|
|
1470
|
-
break;
|
|
1471
|
-
case "upload":
|
|
1472
|
-
if (procHasInitMessage) {
|
|
1473
|
-
inputHandler = (async () => {
|
|
1474
|
-
const initMessage = await incoming.next();
|
|
1475
|
-
if (initMessage.done) {
|
|
1476
|
-
return;
|
|
1477
|
-
}
|
|
1478
|
-
await tracing_default.startActiveSpan(
|
|
1479
|
-
`${message.serviceName}.${message.procedureName}`,
|
|
1480
|
-
{
|
|
1481
|
-
attributes: {
|
|
1482
|
-
component: "river",
|
|
1483
|
-
"river.method.kind": "upload-with-init",
|
|
1484
|
-
"river.method.service": message.serviceName,
|
|
1485
|
-
"river.method.name": message.procedureName,
|
|
1486
|
-
"river.streamId": message.streamId,
|
|
1487
|
-
"span.kind": "server"
|
|
1488
|
-
},
|
|
1489
|
-
kind: import_api3.SpanKind.SERVER
|
|
1490
|
-
},
|
|
1491
|
-
activeContext,
|
|
1492
|
-
async (span) => {
|
|
1493
|
-
try {
|
|
1494
|
-
const outputMessage = await procedure.handler(
|
|
1495
|
-
serviceContextWithTransportInfo,
|
|
1496
|
-
initMessage.value,
|
|
1497
|
-
incoming
|
|
1498
|
-
);
|
|
1499
|
-
if (!this.disconnectedSessions.has(message.from)) {
|
|
1500
|
-
outgoing.push(outputMessage);
|
|
1501
|
-
}
|
|
1502
|
-
} catch (err) {
|
|
1503
|
-
errorHandler(err, span);
|
|
1504
|
-
} finally {
|
|
1505
|
-
span.end();
|
|
1506
|
-
}
|
|
1507
|
-
}
|
|
1508
|
-
);
|
|
1509
|
-
})();
|
|
1510
1411
|
} else {
|
|
1511
|
-
inputHandler =
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
attributes: {
|
|
1515
|
-
component: "river",
|
|
1516
|
-
"river.method.kind": "upload",
|
|
1517
|
-
"river.method.service": message.serviceName,
|
|
1518
|
-
"river.method.name": message.procedureName,
|
|
1519
|
-
"river.streamId": message.streamId,
|
|
1520
|
-
"span.kind": "server"
|
|
1521
|
-
},
|
|
1522
|
-
kind: import_api3.SpanKind.SERVER
|
|
1523
|
-
},
|
|
1524
|
-
activeContext,
|
|
1412
|
+
inputHandler = createHandlerSpan(
|
|
1413
|
+
procedure.type,
|
|
1414
|
+
message,
|
|
1525
1415
|
async (span) => {
|
|
1526
1416
|
try {
|
|
1527
1417
|
const outputMessage = await procedure.handler(
|
|
@@ -1587,8 +1477,8 @@ var RiverServer = class {
|
|
|
1587
1477
|
}
|
|
1588
1478
|
}
|
|
1589
1479
|
getContext(service, serviceName) {
|
|
1590
|
-
const
|
|
1591
|
-
if (!
|
|
1480
|
+
const context2 = this.contextMap.get(service);
|
|
1481
|
+
if (!context2) {
|
|
1592
1482
|
const err = `no context found for ${serviceName}`;
|
|
1593
1483
|
log?.error(err, {
|
|
1594
1484
|
clientId: this.transport.clientId,
|
|
@@ -1596,7 +1486,7 @@ var RiverServer = class {
|
|
|
1596
1486
|
});
|
|
1597
1487
|
throw new Error(err);
|
|
1598
1488
|
}
|
|
1599
|
-
return
|
|
1489
|
+
return context2;
|
|
1600
1490
|
}
|
|
1601
1491
|
cleanupStream = async (id) => {
|
|
1602
1492
|
const stream2 = this.streamMap.get(id);
|
|
@@ -1613,9 +1503,6 @@ var RiverServer = class {
|
|
|
1613
1503
|
function createServer(transport, services, extendedContext) {
|
|
1614
1504
|
return new RiverServer(transport, services, extendedContext);
|
|
1615
1505
|
}
|
|
1616
|
-
|
|
1617
|
-
// package.json
|
|
1618
|
-
var version = "0.21.1";
|
|
1619
1506
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1620
1507
|
0 && (module.exports = {
|
|
1621
1508
|
Err,
|