@replit/river 0.23.12 → 0.23.13
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-2FNLANTJ.js +327 -0
- package/dist/chunk-2FNLANTJ.js.map +1 -0
- package/dist/{chunk-3AW3IXVD.js → chunk-4PVU7J25.js} +1 -21
- package/dist/chunk-4PVU7J25.js.map +1 -0
- package/dist/{chunk-H6KTH6W6.js → chunk-4QZOW4DH.js} +2 -2
- package/dist/{chunk-7RUKEUKE.js → chunk-ES4XO2XD.js} +2 -2
- package/dist/{chunk-7RUKEUKE.js.map → chunk-ES4XO2XD.js.map} +1 -1
- package/dist/{chunk-XZ6IOBM5.js → chunk-KFTGQ3QC.js} +2 -2
- package/dist/chunk-KFTGQ3QC.js.map +1 -0
- package/dist/chunk-S4DUN7KK.js +455 -0
- package/dist/chunk-S4DUN7KK.js.map +1 -0
- package/dist/{chunk-HDBVL7EF.js → chunk-SX6HI63Q.js} +2 -2
- package/dist/chunk-XM656KMN.js +408 -0
- package/dist/chunk-XM656KMN.js.map +1 -0
- package/dist/chunk-ZUKDZY54.js +271 -0
- package/dist/chunk-ZUKDZY54.js.map +1 -0
- package/dist/client-dd5c9dd0.d.ts +52 -0
- package/dist/codec/index.js +20 -2
- package/dist/codec/index.js.map +1 -1
- package/dist/{connection-8debd45f.d.ts → connection-39816c00.d.ts} +1 -1
- package/dist/{connection-581558f8.d.ts → connection-40318f22.d.ts} +1 -1
- package/dist/{transport-47af1c81.d.ts → handshake-e428d1c8.d.ts} +88 -153
- package/dist/{index-60f03cb7.d.ts → index-ea74cdbb.d.ts} +1 -1
- package/dist/logging/index.d.cts +1 -1
- package/dist/logging/index.d.ts +1 -1
- package/dist/router/index.cjs +1 -1
- package/dist/router/index.cjs.map +1 -1
- package/dist/router/index.d.cts +8 -6
- package/dist/router/index.d.ts +8 -6
- package/dist/router/index.js +2 -2
- package/dist/server-ebf80863.d.ts +24 -0
- package/dist/{services-ca72c9f8.d.ts → services-f406b3aa.d.ts} +3 -2
- package/dist/transport/impls/uds/client.cjs +192 -164
- package/dist/transport/impls/uds/client.cjs.map +1 -1
- package/dist/transport/impls/uds/client.d.cts +6 -5
- package/dist/transport/impls/uds/client.d.ts +6 -5
- package/dist/transport/impls/uds/client.js +6 -4
- package/dist/transport/impls/uds/client.js.map +1 -1
- package/dist/transport/impls/uds/server.cjs +240 -212
- package/dist/transport/impls/uds/server.cjs.map +1 -1
- package/dist/transport/impls/uds/server.d.cts +6 -5
- package/dist/transport/impls/uds/server.d.ts +6 -5
- package/dist/transport/impls/uds/server.js +8 -6
- package/dist/transport/impls/uds/server.js.map +1 -1
- package/dist/transport/impls/ws/client.cjs +194 -166
- package/dist/transport/impls/ws/client.cjs.map +1 -1
- package/dist/transport/impls/ws/client.d.cts +6 -5
- package/dist/transport/impls/ws/client.d.ts +6 -5
- package/dist/transport/impls/ws/client.js +6 -4
- package/dist/transport/impls/ws/client.js.map +1 -1
- package/dist/transport/impls/ws/server.cjs +194 -166
- package/dist/transport/impls/ws/server.cjs.map +1 -1
- package/dist/transport/impls/ws/server.d.cts +4 -3
- package/dist/transport/impls/ws/server.d.ts +4 -3
- package/dist/transport/impls/ws/server.js +8 -6
- package/dist/transport/impls/ws/server.js.map +1 -1
- package/dist/transport/index.cjs +138 -104
- package/dist/transport/index.cjs.map +1 -1
- package/dist/transport/index.d.cts +4 -2
- package/dist/transport/index.d.ts +4 -2
- package/dist/transport/index.js +14 -8
- package/dist/util/testHelpers.cjs +2 -6
- package/dist/util/testHelpers.cjs.map +1 -1
- package/dist/util/testHelpers.d.cts +5 -4
- package/dist/util/testHelpers.d.ts +5 -4
- package/dist/util/testHelpers.js +4 -5
- package/dist/util/testHelpers.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-3AW3IXVD.js.map +0 -1
- package/dist/chunk-VRU4IKRT.js +0 -1392
- package/dist/chunk-VRU4IKRT.js.map +0 -1
- package/dist/chunk-XZ6IOBM5.js.map +0 -1
- /package/dist/{chunk-H6KTH6W6.js.map → chunk-4QZOW4DH.js.map} +0 -0
- /package/dist/{chunk-HDBVL7EF.js.map → chunk-SX6HI63Q.js.map} +0 -0
|
@@ -24,8 +24,8 @@ __export(client_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(client_exports);
|
|
26
26
|
|
|
27
|
-
// transport/
|
|
28
|
-
var
|
|
27
|
+
// transport/client.ts
|
|
28
|
+
var import_api4 = require("@opentelemetry/api");
|
|
29
29
|
|
|
30
30
|
// transport/message.ts
|
|
31
31
|
var import_typebox = require("@sinclair/typebox");
|
|
@@ -105,6 +105,154 @@ function isAck(controlFlag) {
|
|
|
105
105
|
return (controlFlag & 1 /* AckBit */) === 1 /* AckBit */;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
+
// codec/json.ts
|
|
109
|
+
var encoder = new TextEncoder();
|
|
110
|
+
var decoder = new TextDecoder();
|
|
111
|
+
function uint8ArrayToBase64(uint8Array) {
|
|
112
|
+
let binary = "";
|
|
113
|
+
uint8Array.forEach((byte) => {
|
|
114
|
+
binary += String.fromCharCode(byte);
|
|
115
|
+
});
|
|
116
|
+
return btoa(binary);
|
|
117
|
+
}
|
|
118
|
+
function base64ToUint8Array(base64) {
|
|
119
|
+
const binaryString = atob(base64);
|
|
120
|
+
const uint8Array = new Uint8Array(binaryString.length);
|
|
121
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
122
|
+
uint8Array[i] = binaryString.charCodeAt(i);
|
|
123
|
+
}
|
|
124
|
+
return uint8Array;
|
|
125
|
+
}
|
|
126
|
+
var NaiveJsonCodec = {
|
|
127
|
+
toBuffer: (obj) => {
|
|
128
|
+
return encoder.encode(
|
|
129
|
+
JSON.stringify(obj, function replacer(key) {
|
|
130
|
+
const val = this[key];
|
|
131
|
+
if (val instanceof Uint8Array) {
|
|
132
|
+
return { $t: uint8ArrayToBase64(val) };
|
|
133
|
+
} else {
|
|
134
|
+
return val;
|
|
135
|
+
}
|
|
136
|
+
})
|
|
137
|
+
);
|
|
138
|
+
},
|
|
139
|
+
fromBuffer: (buff) => {
|
|
140
|
+
try {
|
|
141
|
+
const parsed = JSON.parse(
|
|
142
|
+
decoder.decode(buff),
|
|
143
|
+
function reviver(_key, val) {
|
|
144
|
+
if (val?.$t) {
|
|
145
|
+
return base64ToUint8Array(val.$t);
|
|
146
|
+
} else {
|
|
147
|
+
return val;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
);
|
|
151
|
+
if (typeof parsed === "object")
|
|
152
|
+
return parsed;
|
|
153
|
+
return null;
|
|
154
|
+
} catch {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// transport/options.ts
|
|
161
|
+
var defaultTransportOptions = {
|
|
162
|
+
heartbeatIntervalMs: 1e3,
|
|
163
|
+
heartbeatsUntilDead: 2,
|
|
164
|
+
sessionDisconnectGraceMs: 5e3,
|
|
165
|
+
codec: NaiveJsonCodec
|
|
166
|
+
};
|
|
167
|
+
var defaultConnectionRetryOptions = {
|
|
168
|
+
baseIntervalMs: 250,
|
|
169
|
+
maxJitterMs: 200,
|
|
170
|
+
maxBackoffMs: 32e3,
|
|
171
|
+
attemptBudgetCapacity: 5,
|
|
172
|
+
budgetRestoreIntervalMs: 200
|
|
173
|
+
};
|
|
174
|
+
var defaultClientTransportOptions = {
|
|
175
|
+
...defaultTransportOptions,
|
|
176
|
+
...defaultConnectionRetryOptions
|
|
177
|
+
};
|
|
178
|
+
var defaultServerTransportOptions = {
|
|
179
|
+
...defaultTransportOptions
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
// transport/rateLimit.ts
|
|
183
|
+
var LeakyBucketRateLimit = class {
|
|
184
|
+
budgetConsumed;
|
|
185
|
+
intervalHandles;
|
|
186
|
+
options;
|
|
187
|
+
constructor(options) {
|
|
188
|
+
this.options = options;
|
|
189
|
+
this.budgetConsumed = /* @__PURE__ */ new Map();
|
|
190
|
+
this.intervalHandles = /* @__PURE__ */ new Map();
|
|
191
|
+
}
|
|
192
|
+
getBackoffMs(user) {
|
|
193
|
+
if (!this.budgetConsumed.has(user))
|
|
194
|
+
return 0;
|
|
195
|
+
const exponent = Math.max(0, this.getBudgetConsumed(user) - 1);
|
|
196
|
+
const jitter = Math.floor(Math.random() * this.options.maxJitterMs);
|
|
197
|
+
const backoffMs = Math.min(
|
|
198
|
+
this.options.baseIntervalMs * 2 ** exponent,
|
|
199
|
+
this.options.maxBackoffMs
|
|
200
|
+
);
|
|
201
|
+
return backoffMs + jitter;
|
|
202
|
+
}
|
|
203
|
+
get totalBudgetRestoreTime() {
|
|
204
|
+
return this.options.budgetRestoreIntervalMs * this.options.attemptBudgetCapacity;
|
|
205
|
+
}
|
|
206
|
+
consumeBudget(user) {
|
|
207
|
+
this.stopLeak(user);
|
|
208
|
+
this.budgetConsumed.set(user, this.getBudgetConsumed(user) + 1);
|
|
209
|
+
}
|
|
210
|
+
getBudgetConsumed(user) {
|
|
211
|
+
return this.budgetConsumed.get(user) ?? 0;
|
|
212
|
+
}
|
|
213
|
+
hasBudget(user) {
|
|
214
|
+
return this.getBudgetConsumed(user) < this.options.attemptBudgetCapacity;
|
|
215
|
+
}
|
|
216
|
+
startRestoringBudget(user) {
|
|
217
|
+
if (this.intervalHandles.has(user)) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const restoreBudgetForUser = () => {
|
|
221
|
+
const currentBudget = this.budgetConsumed.get(user);
|
|
222
|
+
if (!currentBudget) {
|
|
223
|
+
this.stopLeak(user);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const newBudget = currentBudget - 1;
|
|
227
|
+
if (newBudget === 0) {
|
|
228
|
+
this.budgetConsumed.delete(user);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
this.budgetConsumed.set(user, newBudget);
|
|
232
|
+
};
|
|
233
|
+
const intervalHandle = setInterval(
|
|
234
|
+
restoreBudgetForUser,
|
|
235
|
+
this.options.budgetRestoreIntervalMs
|
|
236
|
+
);
|
|
237
|
+
this.intervalHandles.set(user, intervalHandle);
|
|
238
|
+
}
|
|
239
|
+
stopLeak(user) {
|
|
240
|
+
if (!this.intervalHandles.has(user)) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
clearInterval(this.intervalHandles.get(user));
|
|
244
|
+
this.intervalHandles.delete(user);
|
|
245
|
+
}
|
|
246
|
+
close() {
|
|
247
|
+
for (const user of this.intervalHandles.keys()) {
|
|
248
|
+
this.stopLeak(user);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
// transport/transport.ts
|
|
254
|
+
var import_value = require("@sinclair/typebox/value");
|
|
255
|
+
|
|
108
256
|
// logging/log.ts
|
|
109
257
|
var LoggingLevels = {
|
|
110
258
|
debug: -1,
|
|
@@ -202,7 +350,7 @@ var import_nanoid2 = require("nanoid");
|
|
|
202
350
|
var import_api = require("@opentelemetry/api");
|
|
203
351
|
|
|
204
352
|
// package.json
|
|
205
|
-
var version = "0.23.
|
|
353
|
+
var version = "0.23.13";
|
|
206
354
|
|
|
207
355
|
// tracing/index.ts
|
|
208
356
|
function getPropagationContext(ctx) {
|
|
@@ -537,159 +685,8 @@ var Session = class {
|
|
|
537
685
|
}
|
|
538
686
|
};
|
|
539
687
|
|
|
540
|
-
// util/stringify.ts
|
|
541
|
-
function coerceErrorString(err) {
|
|
542
|
-
if (err instanceof Error) {
|
|
543
|
-
return err.message || "unknown reason";
|
|
544
|
-
}
|
|
545
|
-
return `[coerced to error] ${String(err)}`;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
// transport/rateLimit.ts
|
|
549
|
-
var LeakyBucketRateLimit = class {
|
|
550
|
-
budgetConsumed;
|
|
551
|
-
intervalHandles;
|
|
552
|
-
options;
|
|
553
|
-
constructor(options) {
|
|
554
|
-
this.options = options;
|
|
555
|
-
this.budgetConsumed = /* @__PURE__ */ new Map();
|
|
556
|
-
this.intervalHandles = /* @__PURE__ */ new Map();
|
|
557
|
-
}
|
|
558
|
-
getBackoffMs(user) {
|
|
559
|
-
if (!this.budgetConsumed.has(user))
|
|
560
|
-
return 0;
|
|
561
|
-
const exponent = Math.max(0, this.getBudgetConsumed(user) - 1);
|
|
562
|
-
const jitter = Math.floor(Math.random() * this.options.maxJitterMs);
|
|
563
|
-
const backoffMs = Math.min(
|
|
564
|
-
this.options.baseIntervalMs * 2 ** exponent,
|
|
565
|
-
this.options.maxBackoffMs
|
|
566
|
-
);
|
|
567
|
-
return backoffMs + jitter;
|
|
568
|
-
}
|
|
569
|
-
get totalBudgetRestoreTime() {
|
|
570
|
-
return this.options.budgetRestoreIntervalMs * this.options.attemptBudgetCapacity;
|
|
571
|
-
}
|
|
572
|
-
consumeBudget(user) {
|
|
573
|
-
this.stopLeak(user);
|
|
574
|
-
this.budgetConsumed.set(user, this.getBudgetConsumed(user) + 1);
|
|
575
|
-
}
|
|
576
|
-
getBudgetConsumed(user) {
|
|
577
|
-
return this.budgetConsumed.get(user) ?? 0;
|
|
578
|
-
}
|
|
579
|
-
hasBudget(user) {
|
|
580
|
-
return this.getBudgetConsumed(user) < this.options.attemptBudgetCapacity;
|
|
581
|
-
}
|
|
582
|
-
startRestoringBudget(user) {
|
|
583
|
-
if (this.intervalHandles.has(user)) {
|
|
584
|
-
return;
|
|
585
|
-
}
|
|
586
|
-
const restoreBudgetForUser = () => {
|
|
587
|
-
const currentBudget = this.budgetConsumed.get(user);
|
|
588
|
-
if (!currentBudget) {
|
|
589
|
-
this.stopLeak(user);
|
|
590
|
-
return;
|
|
591
|
-
}
|
|
592
|
-
const newBudget = currentBudget - 1;
|
|
593
|
-
if (newBudget === 0) {
|
|
594
|
-
this.budgetConsumed.delete(user);
|
|
595
|
-
return;
|
|
596
|
-
}
|
|
597
|
-
this.budgetConsumed.set(user, newBudget);
|
|
598
|
-
};
|
|
599
|
-
const intervalHandle = setInterval(
|
|
600
|
-
restoreBudgetForUser,
|
|
601
|
-
this.options.budgetRestoreIntervalMs
|
|
602
|
-
);
|
|
603
|
-
this.intervalHandles.set(user, intervalHandle);
|
|
604
|
-
}
|
|
605
|
-
stopLeak(user) {
|
|
606
|
-
if (!this.intervalHandles.has(user)) {
|
|
607
|
-
return;
|
|
608
|
-
}
|
|
609
|
-
clearInterval(this.intervalHandles.get(user));
|
|
610
|
-
this.intervalHandles.delete(user);
|
|
611
|
-
}
|
|
612
|
-
close() {
|
|
613
|
-
for (const user of this.intervalHandles.keys()) {
|
|
614
|
-
this.stopLeak(user);
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
};
|
|
618
|
-
|
|
619
|
-
// codec/json.ts
|
|
620
|
-
var encoder = new TextEncoder();
|
|
621
|
-
var decoder = new TextDecoder();
|
|
622
|
-
function uint8ArrayToBase64(uint8Array) {
|
|
623
|
-
let binary = "";
|
|
624
|
-
uint8Array.forEach((byte) => {
|
|
625
|
-
binary += String.fromCharCode(byte);
|
|
626
|
-
});
|
|
627
|
-
return btoa(binary);
|
|
628
|
-
}
|
|
629
|
-
function base64ToUint8Array(base64) {
|
|
630
|
-
const binaryString = atob(base64);
|
|
631
|
-
const uint8Array = new Uint8Array(binaryString.length);
|
|
632
|
-
for (let i = 0; i < binaryString.length; i++) {
|
|
633
|
-
uint8Array[i] = binaryString.charCodeAt(i);
|
|
634
|
-
}
|
|
635
|
-
return uint8Array;
|
|
636
|
-
}
|
|
637
|
-
var NaiveJsonCodec = {
|
|
638
|
-
toBuffer: (obj) => {
|
|
639
|
-
return encoder.encode(
|
|
640
|
-
JSON.stringify(obj, function replacer(key) {
|
|
641
|
-
const val = this[key];
|
|
642
|
-
if (val instanceof Uint8Array) {
|
|
643
|
-
return { $t: uint8ArrayToBase64(val) };
|
|
644
|
-
} else {
|
|
645
|
-
return val;
|
|
646
|
-
}
|
|
647
|
-
})
|
|
648
|
-
);
|
|
649
|
-
},
|
|
650
|
-
fromBuffer: (buff) => {
|
|
651
|
-
try {
|
|
652
|
-
const parsed = JSON.parse(
|
|
653
|
-
decoder.decode(buff),
|
|
654
|
-
function reviver(_key, val) {
|
|
655
|
-
if (val?.$t) {
|
|
656
|
-
return base64ToUint8Array(val.$t);
|
|
657
|
-
} else {
|
|
658
|
-
return val;
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
);
|
|
662
|
-
if (typeof parsed === "object")
|
|
663
|
-
return parsed;
|
|
664
|
-
return null;
|
|
665
|
-
} catch {
|
|
666
|
-
return null;
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
};
|
|
670
|
-
|
|
671
688
|
// transport/transport.ts
|
|
672
689
|
var import_api3 = require("@opentelemetry/api");
|
|
673
|
-
var defaultTransportOptions = {
|
|
674
|
-
heartbeatIntervalMs: 1e3,
|
|
675
|
-
heartbeatsUntilDead: 2,
|
|
676
|
-
sessionDisconnectGraceMs: 5e3,
|
|
677
|
-
codec: NaiveJsonCodec
|
|
678
|
-
};
|
|
679
|
-
var defaultConnectionRetryOptions = {
|
|
680
|
-
baseIntervalMs: 250,
|
|
681
|
-
maxJitterMs: 200,
|
|
682
|
-
maxBackoffMs: 32e3,
|
|
683
|
-
attemptBudgetCapacity: 5,
|
|
684
|
-
budgetRestoreIntervalMs: 200
|
|
685
|
-
};
|
|
686
|
-
var defaultClientTransportOptions = {
|
|
687
|
-
...defaultTransportOptions,
|
|
688
|
-
...defaultConnectionRetryOptions
|
|
689
|
-
};
|
|
690
|
-
var defaultServerTransportOptions = {
|
|
691
|
-
...defaultTransportOptions
|
|
692
|
-
};
|
|
693
690
|
var Transport = class {
|
|
694
691
|
/**
|
|
695
692
|
* The status of the transport.
|
|
@@ -844,6 +841,16 @@ var Transport = class {
|
|
|
844
841
|
* @param connectedTo The peer we are connected to.
|
|
845
842
|
*/
|
|
846
843
|
onDisconnect(conn, session) {
|
|
844
|
+
if (session.connection !== void 0 && session.connection.id !== conn.id) {
|
|
845
|
+
session.telemetry.span.addEvent("onDisconnect race");
|
|
846
|
+
this.log?.warn("onDisconnect race", {
|
|
847
|
+
clientId: this.clientId,
|
|
848
|
+
...session.loggingMetadata,
|
|
849
|
+
...conn.loggingMetadata,
|
|
850
|
+
tags: ["invariant-violation"]
|
|
851
|
+
});
|
|
852
|
+
return;
|
|
853
|
+
}
|
|
847
854
|
conn.telemetry?.span.end();
|
|
848
855
|
this.eventDispatcher.dispatchEvent("connectionStatus", {
|
|
849
856
|
status: "disconnect",
|
|
@@ -851,6 +858,16 @@ var Transport = class {
|
|
|
851
858
|
});
|
|
852
859
|
session.connection = void 0;
|
|
853
860
|
session.beginGrace(() => {
|
|
861
|
+
if (session.connection !== void 0) {
|
|
862
|
+
session.telemetry.span.addEvent("session grace period race");
|
|
863
|
+
this.log?.warn("session grace period race", {
|
|
864
|
+
clientId: this.clientId,
|
|
865
|
+
...session.loggingMetadata,
|
|
866
|
+
...conn.loggingMetadata,
|
|
867
|
+
tags: ["invariant-violation"]
|
|
868
|
+
});
|
|
869
|
+
return;
|
|
870
|
+
}
|
|
854
871
|
session.telemetry.span.addEvent("session grace period expired");
|
|
855
872
|
this.deleteSession({
|
|
856
873
|
session,
|
|
@@ -1018,6 +1035,17 @@ var Transport = class {
|
|
|
1018
1035
|
return this.status;
|
|
1019
1036
|
}
|
|
1020
1037
|
};
|
|
1038
|
+
|
|
1039
|
+
// util/stringify.ts
|
|
1040
|
+
function coerceErrorString(err) {
|
|
1041
|
+
if (err instanceof Error) {
|
|
1042
|
+
return err.message || "unknown reason";
|
|
1043
|
+
}
|
|
1044
|
+
return `[coerced to error] ${String(err)}`;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
// transport/client.ts
|
|
1048
|
+
var import_value2 = require("@sinclair/typebox/value");
|
|
1021
1049
|
var ClientTransport = class extends Transport {
|
|
1022
1050
|
/**
|
|
1023
1051
|
* The options for this transport.
|
|
@@ -1078,7 +1106,7 @@ var ClientTransport = class extends Transport {
|
|
|
1078
1106
|
const parsed = this.parseMsg(data2, conn);
|
|
1079
1107
|
if (!parsed) {
|
|
1080
1108
|
conn.telemetry?.span.setStatus({
|
|
1081
|
-
code:
|
|
1109
|
+
code: import_api4.SpanStatusCode.ERROR,
|
|
1082
1110
|
message: "message parse failure"
|
|
1083
1111
|
});
|
|
1084
1112
|
conn.close();
|
|
@@ -1109,7 +1137,7 @@ var ClientTransport = class extends Transport {
|
|
|
1109
1137
|
});
|
|
1110
1138
|
conn.addErrorListener((err) => {
|
|
1111
1139
|
conn.telemetry?.span.setStatus({
|
|
1112
|
-
code:
|
|
1140
|
+
code: import_api4.SpanStatusCode.ERROR,
|
|
1113
1141
|
message: "connection error"
|
|
1114
1142
|
});
|
|
1115
1143
|
this.log?.warn(
|
|
@@ -1127,7 +1155,7 @@ var ClientTransport = class extends Transport {
|
|
|
1127
1155
|
const parsed = this.parseMsg(data, conn);
|
|
1128
1156
|
if (!parsed) {
|
|
1129
1157
|
conn.telemetry?.span.setStatus({
|
|
1130
|
-
code:
|
|
1158
|
+
code: import_api4.SpanStatusCode.ERROR,
|
|
1131
1159
|
message: "non-transport message"
|
|
1132
1160
|
});
|
|
1133
1161
|
this.protocolError(
|
|
@@ -1136,9 +1164,9 @@ var ClientTransport = class extends Transport {
|
|
|
1136
1164
|
);
|
|
1137
1165
|
return false;
|
|
1138
1166
|
}
|
|
1139
|
-
if (!
|
|
1167
|
+
if (!import_value2.Value.Check(ControlMessageHandshakeResponseSchema, parsed.payload)) {
|
|
1140
1168
|
conn.telemetry?.span.setStatus({
|
|
1141
|
-
code:
|
|
1169
|
+
code: import_api4.SpanStatusCode.ERROR,
|
|
1142
1170
|
message: "invalid handshake response"
|
|
1143
1171
|
});
|
|
1144
1172
|
this.log?.warn(`received invalid handshake resp`, {
|
|
@@ -1147,7 +1175,7 @@ var ClientTransport = class extends Transport {
|
|
|
1147
1175
|
connectedTo: parsed.from,
|
|
1148
1176
|
transportMessage: parsed,
|
|
1149
1177
|
validationErrors: [
|
|
1150
|
-
...
|
|
1178
|
+
...import_value2.Value.Errors(
|
|
1151
1179
|
ControlMessageHandshakeResponseSchema,
|
|
1152
1180
|
parsed.payload
|
|
1153
1181
|
)
|
|
@@ -1161,7 +1189,7 @@ var ClientTransport = class extends Transport {
|
|
|
1161
1189
|
}
|
|
1162
1190
|
if (!parsed.payload.status.ok) {
|
|
1163
1191
|
conn.telemetry?.span.setStatus({
|
|
1164
|
-
code:
|
|
1192
|
+
code: import_api4.SpanStatusCode.ERROR,
|
|
1165
1193
|
message: "handshake rejected"
|
|
1166
1194
|
});
|
|
1167
1195
|
this.log?.warn(`received handshake rejection`, {
|
|
@@ -1183,7 +1211,7 @@ var ClientTransport = class extends Transport {
|
|
|
1183
1211
|
closeHandshakingConnection: true
|
|
1184
1212
|
});
|
|
1185
1213
|
conn.telemetry?.span.setStatus({
|
|
1186
|
-
code:
|
|
1214
|
+
code: import_api4.SpanStatusCode.ERROR,
|
|
1187
1215
|
message: "session id mismatch"
|
|
1188
1216
|
});
|
|
1189
1217
|
this.log?.warn(`handshake from ${parsed.from} session id mismatch`, {
|
|
@@ -1283,7 +1311,7 @@ var ClientTransport = class extends Transport {
|
|
|
1283
1311
|
} catch (err) {
|
|
1284
1312
|
const errStr = coerceErrorString(err);
|
|
1285
1313
|
span.recordException(errStr);
|
|
1286
|
-
span.setStatus({ code:
|
|
1314
|
+
span.setStatus({ code: import_api4.SpanStatusCode.ERROR });
|
|
1287
1315
|
throw err;
|
|
1288
1316
|
} finally {
|
|
1289
1317
|
span.end();
|
|
@@ -1334,13 +1362,13 @@ var ClientTransport = class extends Transport {
|
|
|
1334
1362
|
let metadata = void 0;
|
|
1335
1363
|
if (this.handshakeExtensions) {
|
|
1336
1364
|
metadata = await this.handshakeExtensions.construct();
|
|
1337
|
-
if (!
|
|
1365
|
+
if (!import_value2.Value.Check(this.handshakeExtensions.schema, metadata)) {
|
|
1338
1366
|
this.log?.error(`constructed handshake metadata did not match schema`, {
|
|
1339
1367
|
...conn.loggingMetadata,
|
|
1340
1368
|
clientId: this.clientId,
|
|
1341
1369
|
connectedTo: to,
|
|
1342
1370
|
validationErrors: [
|
|
1343
|
-
...
|
|
1371
|
+
...import_value2.Value.Errors(this.handshakeExtensions.schema, metadata)
|
|
1344
1372
|
],
|
|
1345
1373
|
tags: ["invariant-violation"]
|
|
1346
1374
|
});
|
|
@@ -1349,7 +1377,7 @@ var ClientTransport = class extends Transport {
|
|
|
1349
1377
|
"handshake metadata did not match schema"
|
|
1350
1378
|
);
|
|
1351
1379
|
conn.telemetry?.span.setStatus({
|
|
1352
|
-
code:
|
|
1380
|
+
code: import_api4.SpanStatusCode.ERROR,
|
|
1353
1381
|
message: "handshake meta mismatch"
|
|
1354
1382
|
});
|
|
1355
1383
|
return false;
|