@replit/river 0.22.0 → 0.23.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/dist/{chunk-S3YKQT4J.js → chunk-DZOATC6M.js} +2 -2
- package/dist/{chunk-ZPBWKBM5.js → chunk-MJUFKPBT.js} +82 -86
- package/dist/chunk-MJUFKPBT.js.map +1 -0
- package/dist/{chunk-3MFX6NXA.js → chunk-PCKHBAVP.js} +2 -2
- package/dist/chunk-PCKHBAVP.js.map +1 -0
- package/dist/{chunk-GCLEWC26.js → chunk-VOJVLWVX.js} +34 -18
- package/dist/chunk-VOJVLWVX.js.map +1 -0
- package/dist/{chunk-HUBFYN37.js → chunk-ZF2UFTNN.js} +2 -2
- package/dist/{connection-8b059ac4.d.ts → connection-5685d817.d.ts} +1 -1
- package/dist/{connection-bbfe1147.d.ts → connection-7582fb92.d.ts} +1 -1
- package/dist/{index-2ece5234.d.ts → index-a6fe0edd.d.ts} +40 -53
- package/dist/logging/index.d.cts +1 -1
- package/dist/logging/index.d.ts +1 -1
- package/dist/router/index.cjs +33 -17
- package/dist/router/index.cjs.map +1 -1
- package/dist/router/index.d.cts +11 -6
- package/dist/router/index.d.ts +11 -6
- package/dist/router/index.js +2 -2
- package/dist/{services-cb01a7a8.d.ts → services-be91b485.d.ts} +21 -52
- package/dist/{services-acbcc441.d.ts → services-eb9326a1.d.ts} +21 -52
- package/dist/transport/impls/uds/client.cjs +12 -11
- package/dist/transport/impls/uds/client.cjs.map +1 -1
- package/dist/transport/impls/uds/client.d.cts +2 -2
- package/dist/transport/impls/uds/client.d.ts +2 -2
- package/dist/transport/impls/uds/client.js +3 -3
- package/dist/transport/impls/uds/server.cjs +70 -81
- package/dist/transport/impls/uds/server.cjs.map +1 -1
- package/dist/transport/impls/uds/server.d.cts +2 -2
- package/dist/transport/impls/uds/server.d.ts +2 -2
- package/dist/transport/impls/uds/server.js +3 -3
- package/dist/transport/impls/ws/client.cjs +12 -11
- package/dist/transport/impls/ws/client.cjs.map +1 -1
- package/dist/transport/impls/ws/client.d.cts +2 -2
- package/dist/transport/impls/ws/client.d.ts +2 -2
- package/dist/transport/impls/ws/client.js +3 -3
- package/dist/transport/impls/ws/server.cjs +70 -81
- package/dist/transport/impls/ws/server.cjs.map +1 -1
- package/dist/transport/impls/ws/server.d.cts +2 -2
- package/dist/transport/impls/ws/server.d.ts +2 -2
- package/dist/transport/impls/ws/server.js +3 -3
- package/dist/transport/index.cjs +81 -85
- package/dist/transport/index.cjs.map +1 -1
- package/dist/transport/index.d.cts +22 -11
- package/dist/transport/index.d.ts +22 -11
- package/dist/transport/index.js +2 -2
- package/dist/util/testHelpers.cjs +3 -8
- package/dist/util/testHelpers.cjs.map +1 -1
- package/dist/util/testHelpers.d.cts +2 -2
- package/dist/util/testHelpers.d.ts +2 -2
- package/dist/util/testHelpers.js +5 -4
- package/dist/util/testHelpers.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-3MFX6NXA.js.map +0 -1
- package/dist/chunk-GCLEWC26.js.map +0 -1
- package/dist/chunk-ZPBWKBM5.js.map +0 -1
- /package/dist/{chunk-S3YKQT4J.js.map → chunk-DZOATC6M.js.map} +0 -0
- /package/dist/{chunk-HUBFYN37.js.map → chunk-ZF2UFTNN.js.map} +0 -0
|
@@ -146,7 +146,7 @@ var import_nanoid2 = require("nanoid");
|
|
|
146
146
|
var import_api = require("@opentelemetry/api");
|
|
147
147
|
|
|
148
148
|
// package.json
|
|
149
|
-
var version = "0.
|
|
149
|
+
var version = "0.23.0";
|
|
150
150
|
|
|
151
151
|
// tracing/index.ts
|
|
152
152
|
function createSessionTelemetryInfo(session, propagationCtx) {
|
|
@@ -216,12 +216,6 @@ var Session = class {
|
|
|
216
216
|
* for this session.
|
|
217
217
|
*/
|
|
218
218
|
advertisedSessionId;
|
|
219
|
-
/**
|
|
220
|
-
* The metadata for this session, as parsed from the handshake.
|
|
221
|
-
*
|
|
222
|
-
* Will only ever be populated on the server side.
|
|
223
|
-
*/
|
|
224
|
-
metadata;
|
|
225
219
|
/**
|
|
226
220
|
* Number of messages we've sent along this session (excluding handshake and acks)
|
|
227
221
|
*/
|
|
@@ -808,17 +802,29 @@ var ServerTransport = class extends Transport {
|
|
|
808
802
|
* The options for this transport.
|
|
809
803
|
*/
|
|
810
804
|
options;
|
|
805
|
+
/**
|
|
806
|
+
* Optional handshake options for the server.
|
|
807
|
+
*/
|
|
808
|
+
handshakeExtensions;
|
|
809
|
+
/**
|
|
810
|
+
* A map of session handshake data for each session.
|
|
811
|
+
*/
|
|
812
|
+
sessionHandshakeMetadata;
|
|
811
813
|
constructor(clientId, providedOptions) {
|
|
812
814
|
super(clientId, providedOptions);
|
|
813
815
|
this.options = {
|
|
814
816
|
...defaultServerTransportOptions,
|
|
815
817
|
...providedOptions
|
|
816
818
|
};
|
|
819
|
+
this.sessionHandshakeMetadata = /* @__PURE__ */ new WeakMap();
|
|
817
820
|
log?.info(`initiated server transport`, {
|
|
818
821
|
clientId: this.clientId,
|
|
819
822
|
protocolVersion: PROTOCOL_VERSION
|
|
820
823
|
});
|
|
821
824
|
}
|
|
825
|
+
extendHandshake(options) {
|
|
826
|
+
this.handshakeExtensions = options;
|
|
827
|
+
}
|
|
822
828
|
handleConnection(conn) {
|
|
823
829
|
if (this.state !== "open")
|
|
824
830
|
return;
|
|
@@ -901,6 +907,52 @@ var ServerTransport = class extends Transport {
|
|
|
901
907
|
);
|
|
902
908
|
});
|
|
903
909
|
}
|
|
910
|
+
async validateHandshakeMetadata(conn, session, rawMetadata, from) {
|
|
911
|
+
let parsedMetadata = {};
|
|
912
|
+
if (this.handshakeExtensions) {
|
|
913
|
+
if (!import_value.Value.Check(this.handshakeExtensions.schema, rawMetadata)) {
|
|
914
|
+
conn.telemetry?.span.setStatus({
|
|
915
|
+
code: import_api3.SpanStatusCode.ERROR,
|
|
916
|
+
message: "malformed handshake meta"
|
|
917
|
+
});
|
|
918
|
+
const reason = "received malformed handshake metadata";
|
|
919
|
+
const responseMsg = handshakeResponseMessage(this.clientId, from, {
|
|
920
|
+
ok: false,
|
|
921
|
+
reason
|
|
922
|
+
});
|
|
923
|
+
conn.send(this.codec.toBuffer(responseMsg));
|
|
924
|
+
log?.warn(`received malformed handshake metadata from ${from}`, {
|
|
925
|
+
clientId: this.clientId,
|
|
926
|
+
connId: conn.id
|
|
927
|
+
});
|
|
928
|
+
this.protocolError(ProtocolError.HandshakeFailed, reason);
|
|
929
|
+
return false;
|
|
930
|
+
}
|
|
931
|
+
parsedMetadata = await this.handshakeExtensions.validate(
|
|
932
|
+
rawMetadata,
|
|
933
|
+
session
|
|
934
|
+
);
|
|
935
|
+
if (parsedMetadata === false) {
|
|
936
|
+
const reason = "rejected by handshake handler";
|
|
937
|
+
conn.telemetry?.span.setStatus({
|
|
938
|
+
code: import_api3.SpanStatusCode.ERROR,
|
|
939
|
+
message: reason
|
|
940
|
+
});
|
|
941
|
+
const responseMsg = handshakeResponseMessage(this.clientId, from, {
|
|
942
|
+
ok: false,
|
|
943
|
+
reason
|
|
944
|
+
});
|
|
945
|
+
conn.send(this.codec.toBuffer(responseMsg));
|
|
946
|
+
log?.warn(`rejected handshake from ${from}`, {
|
|
947
|
+
clientId: this.clientId,
|
|
948
|
+
connId: conn.id
|
|
949
|
+
});
|
|
950
|
+
this.protocolError(ProtocolError.HandshakeFailed, reason);
|
|
951
|
+
return false;
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
return parsedMetadata;
|
|
955
|
+
}
|
|
904
956
|
async receiveHandshakeRequestMessage(data, conn) {
|
|
905
957
|
const parsed = this.parseMsg(data);
|
|
906
958
|
if (!parsed) {
|
|
@@ -956,86 +1008,23 @@ var ServerTransport = class extends Transport {
|
|
|
956
1008
|
this.protocolError(ProtocolError.HandshakeFailed, reason);
|
|
957
1009
|
return false;
|
|
958
1010
|
}
|
|
1011
|
+
const oldSession = this.sessions.get(parsed.from);
|
|
1012
|
+
const parsedMetadata = await this.validateHandshakeMetadata(
|
|
1013
|
+
conn,
|
|
1014
|
+
oldSession,
|
|
1015
|
+
parsed.payload.metadata,
|
|
1016
|
+
parsed.from
|
|
1017
|
+
);
|
|
1018
|
+
if (parsedMetadata === false) {
|
|
1019
|
+
return false;
|
|
1020
|
+
}
|
|
959
1021
|
const { session, isReconnect } = this.getOrCreateSession(
|
|
960
1022
|
parsed.from,
|
|
961
1023
|
conn,
|
|
962
1024
|
parsed.payload.sessionId,
|
|
963
1025
|
parsed.tracing
|
|
964
1026
|
);
|
|
965
|
-
|
|
966
|
-
if (this.options.handshake) {
|
|
967
|
-
if (!import_value.Value.Check(
|
|
968
|
-
this.options.handshake.requestSchema,
|
|
969
|
-
parsed.payload.metadata
|
|
970
|
-
)) {
|
|
971
|
-
conn.telemetry?.span.setStatus({
|
|
972
|
-
code: import_api3.SpanStatusCode.ERROR,
|
|
973
|
-
message: "malformed handshake meta"
|
|
974
|
-
});
|
|
975
|
-
const reason = "received malformed handshake metadata";
|
|
976
|
-
const responseMsg2 = handshakeResponseMessage(
|
|
977
|
-
this.clientId,
|
|
978
|
-
parsed.from,
|
|
979
|
-
{ ok: false, reason }
|
|
980
|
-
);
|
|
981
|
-
conn.send(this.codec.toBuffer(responseMsg2));
|
|
982
|
-
log?.warn(`received malformed handshake metadata from ${parsed.from}`, {
|
|
983
|
-
clientId: this.clientId,
|
|
984
|
-
connId: conn.id
|
|
985
|
-
});
|
|
986
|
-
this.protocolError(ProtocolError.HandshakeFailed, reason);
|
|
987
|
-
this.deleteSession(session);
|
|
988
|
-
return false;
|
|
989
|
-
}
|
|
990
|
-
const parsedMetadata = await this.options.handshake.parse(
|
|
991
|
-
parsed.payload.metadata,
|
|
992
|
-
session,
|
|
993
|
-
isReconnect
|
|
994
|
-
);
|
|
995
|
-
if (parsedMetadata === false) {
|
|
996
|
-
conn.telemetry?.span.setStatus({
|
|
997
|
-
code: import_api3.SpanStatusCode.ERROR,
|
|
998
|
-
message: "rejected by handshake handler"
|
|
999
|
-
});
|
|
1000
|
-
const reason = "rejected by handshake handler";
|
|
1001
|
-
const responseMsg2 = handshakeResponseMessage(
|
|
1002
|
-
this.clientId,
|
|
1003
|
-
parsed.from,
|
|
1004
|
-
{ ok: false, reason }
|
|
1005
|
-
);
|
|
1006
|
-
conn.send(this.codec.toBuffer(responseMsg2));
|
|
1007
|
-
log?.warn(`rejected handshake from ${parsed.from}`, {
|
|
1008
|
-
clientId: this.clientId,
|
|
1009
|
-
connId: conn.id
|
|
1010
|
-
});
|
|
1011
|
-
this.protocolError(ProtocolError.HandshakeFailed, reason);
|
|
1012
|
-
this.deleteSession(session);
|
|
1013
|
-
return false;
|
|
1014
|
-
}
|
|
1015
|
-
if (!import_value.Value.Check(this.options.handshake.parsedSchema, parsedMetadata)) {
|
|
1016
|
-
conn.telemetry?.span.setStatus({
|
|
1017
|
-
code: import_api3.SpanStatusCode.ERROR,
|
|
1018
|
-
message: "malformed handshake meta"
|
|
1019
|
-
});
|
|
1020
|
-
const reason = "failed to parse handshake metadata";
|
|
1021
|
-
const responseMsg2 = handshakeResponseMessage(
|
|
1022
|
-
this.clientId,
|
|
1023
|
-
parsed.from,
|
|
1024
|
-
{ ok: false, reason }
|
|
1025
|
-
);
|
|
1026
|
-
conn.send(this.codec.toBuffer(responseMsg2));
|
|
1027
|
-
log?.error(`failed to parse handshake metadata`, {
|
|
1028
|
-
clientId: this.clientId,
|
|
1029
|
-
connId: conn.id
|
|
1030
|
-
});
|
|
1031
|
-
this.protocolError(ProtocolError.HandshakeFailed, reason);
|
|
1032
|
-
this.deleteSession(session);
|
|
1033
|
-
return false;
|
|
1034
|
-
}
|
|
1035
|
-
handshakeMetadata = parsedMetadata;
|
|
1036
|
-
}
|
|
1037
|
-
handshakeMetadata ??= {};
|
|
1038
|
-
session.metadata = handshakeMetadata;
|
|
1027
|
+
this.sessionHandshakeMetadata.set(session, parsedMetadata);
|
|
1039
1028
|
log?.debug(
|
|
1040
1029
|
`handshake from ${parsed.from} ok, responding with handshake success`,
|
|
1041
1030
|
{ clientId: this.clientId, connId: conn.id }
|