@replit/river 0.23.16 → 0.24.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 +21 -20
- package/dist/{chunk-UDXM64QK.js → chunk-AASMR3CQ.js} +24 -18
- package/dist/chunk-AASMR3CQ.js.map +1 -0
- package/dist/chunk-JA57I7MG.js +653 -0
- package/dist/chunk-JA57I7MG.js.map +1 -0
- package/dist/chunk-KX5PQRVN.js +382 -0
- package/dist/chunk-KX5PQRVN.js.map +1 -0
- package/dist/{chunk-LTSLICON.js → chunk-KYYB4DUR.js} +68 -519
- package/dist/chunk-KYYB4DUR.js.map +1 -0
- package/dist/chunk-NLQPPDOT.js +399 -0
- package/dist/chunk-NLQPPDOT.js.map +1 -0
- package/dist/{chunk-TXSQRTZB.js → chunk-PJGGC3LV.js} +55 -41
- package/dist/chunk-PJGGC3LV.js.map +1 -0
- package/dist/chunk-RXJLI2OP.js +50 -0
- package/dist/chunk-RXJLI2OP.js.map +1 -0
- package/dist/{chunk-6LCL2ZZF.js → chunk-TAH2GVTJ.js} +1 -1
- package/dist/chunk-TAH2GVTJ.js.map +1 -0
- package/dist/chunk-ZAT3R4CU.js +277 -0
- package/dist/chunk-ZAT3R4CU.js.map +1 -0
- package/dist/{client-0926d3d6.d.ts → client-ba0d3315.d.ts} +12 -15
- package/dist/{connection-99a67d3e.d.ts → connection-c3a96d09.d.ts} +1 -5
- package/dist/connection-d33e3246.d.ts +11 -0
- package/dist/{handshake-75d0124f.d.ts → handshake-cdead82a.d.ts} +149 -180
- package/dist/logging/index.cjs.map +1 -1
- package/dist/logging/index.d.cts +1 -1
- package/dist/logging/index.d.ts +1 -1
- package/dist/logging/index.js +1 -1
- package/dist/{index-ea74cdbb.d.ts → message-e6c560fd.d.ts} +2 -2
- package/dist/router/index.cjs +107 -530
- package/dist/router/index.cjs.map +1 -1
- package/dist/router/index.d.cts +12 -50
- package/dist/router/index.d.ts +12 -50
- package/dist/router/index.js +2 -4
- package/dist/server-2ef5e6ec.d.ts +42 -0
- package/dist/{services-75e84a9f.d.ts → services-e1417b33.d.ts} +7 -7
- package/dist/transport/impls/uds/client.cjs +1242 -1223
- package/dist/transport/impls/uds/client.cjs.map +1 -1
- package/dist/transport/impls/uds/client.d.cts +4 -4
- package/dist/transport/impls/uds/client.d.ts +4 -4
- package/dist/transport/impls/uds/client.js +7 -13
- package/dist/transport/impls/uds/client.js.map +1 -1
- package/dist/transport/impls/uds/server.cjs +1301 -1151
- package/dist/transport/impls/uds/server.cjs.map +1 -1
- package/dist/transport/impls/uds/server.d.cts +4 -4
- package/dist/transport/impls/uds/server.d.ts +4 -4
- package/dist/transport/impls/uds/server.js +6 -6
- package/dist/transport/impls/ws/client.cjs +980 -969
- package/dist/transport/impls/ws/client.cjs.map +1 -1
- package/dist/transport/impls/ws/client.d.cts +4 -4
- package/dist/transport/impls/ws/client.d.ts +4 -4
- package/dist/transport/impls/ws/client.js +6 -7
- package/dist/transport/impls/ws/client.js.map +1 -1
- package/dist/transport/impls/ws/server.cjs +1182 -1047
- package/dist/transport/impls/ws/server.cjs.map +1 -1
- package/dist/transport/impls/ws/server.d.cts +4 -4
- package/dist/transport/impls/ws/server.d.ts +4 -4
- package/dist/transport/impls/ws/server.js +6 -6
- package/dist/transport/index.cjs +1434 -1360
- package/dist/transport/index.cjs.map +1 -1
- package/dist/transport/index.d.cts +4 -4
- package/dist/transport/index.d.ts +4 -4
- package/dist/transport/index.js +9 -9
- package/dist/util/testHelpers.cjs +743 -309
- package/dist/util/testHelpers.cjs.map +1 -1
- package/dist/util/testHelpers.d.cts +10 -7
- package/dist/util/testHelpers.d.ts +10 -7
- package/dist/util/testHelpers.js +33 -10
- package/dist/util/testHelpers.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6LCL2ZZF.js.map +0 -1
- package/dist/chunk-JA7XGTAL.js +0 -476
- package/dist/chunk-JA7XGTAL.js.map +0 -1
- package/dist/chunk-LTSLICON.js.map +0 -1
- package/dist/chunk-MQCGG6KL.js +0 -335
- package/dist/chunk-MQCGG6KL.js.map +0 -1
- package/dist/chunk-R47IZD67.js +0 -59
- package/dist/chunk-R47IZD67.js.map +0 -1
- package/dist/chunk-TXSQRTZB.js.map +0 -1
- package/dist/chunk-UDXM64QK.js.map +0 -1
- package/dist/chunk-WN77AT67.js +0 -476
- package/dist/chunk-WN77AT67.js.map +0 -1
- package/dist/chunk-YXDAOVP7.js +0 -347
- package/dist/chunk-YXDAOVP7.js.map +0 -1
- package/dist/connection-d738cc08.d.ts +0 -17
- package/dist/server-3740c5d9.d.ts +0 -24
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ControlMessagePayloadSchema,
|
|
3
|
+
closeStreamMessage,
|
|
3
4
|
coerceErrorString,
|
|
4
5
|
createHandlerSpan,
|
|
5
6
|
createProcTelemetryInfo,
|
|
7
|
+
generateId,
|
|
6
8
|
getPropagationContext,
|
|
7
9
|
isStreamClose,
|
|
8
10
|
isStreamOpen
|
|
9
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-PJGGC3LV.js";
|
|
10
12
|
|
|
11
13
|
// router/services.ts
|
|
12
14
|
import { Type } from "@sinclair/typebox";
|
|
@@ -146,9 +148,9 @@ var ServiceSchema = class _ServiceSchema {
|
|
|
146
148
|
* You probably don't need this, usually the River server will handle this
|
|
147
149
|
* for you.
|
|
148
150
|
*/
|
|
149
|
-
instantiate() {
|
|
151
|
+
instantiate(extendedContext) {
|
|
150
152
|
return Object.freeze({
|
|
151
|
-
state: this.initializeState(),
|
|
153
|
+
state: this.initializeState(extendedContext),
|
|
152
154
|
procedures: this.procedures
|
|
153
155
|
});
|
|
154
156
|
}
|
|
@@ -210,468 +212,6 @@ var ServiceScaffold = class {
|
|
|
210
212
|
}
|
|
211
213
|
};
|
|
212
214
|
|
|
213
|
-
// router/diff.ts
|
|
214
|
-
function diffServerSchema(oldServer, newServer, options) {
|
|
215
|
-
const allServices = /* @__PURE__ */ new Set([
|
|
216
|
-
...Object.keys(oldServer.services),
|
|
217
|
-
...Object.keys(newServer.services)
|
|
218
|
-
]);
|
|
219
|
-
const breakages = {};
|
|
220
|
-
for (const serviceName of allServices) {
|
|
221
|
-
const oldService = oldServer.services[serviceName];
|
|
222
|
-
const newService = newServer.services[serviceName];
|
|
223
|
-
const breakage = diffService(oldService, newService, options);
|
|
224
|
-
if (breakage) {
|
|
225
|
-
breakages[serviceName] = breakage;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
if (Object.keys(breakages).length) {
|
|
229
|
-
return { serviceBreakages: breakages };
|
|
230
|
-
}
|
|
231
|
-
return null;
|
|
232
|
-
}
|
|
233
|
-
function diffService(oldService, newService, options) {
|
|
234
|
-
if (!newService) {
|
|
235
|
-
return options?.allowServiceRemoval ? null : { reason: "removed" };
|
|
236
|
-
}
|
|
237
|
-
if (!oldService) {
|
|
238
|
-
return null;
|
|
239
|
-
}
|
|
240
|
-
const allProcedures = /* @__PURE__ */ new Set([
|
|
241
|
-
...Object.keys(oldService.procedures),
|
|
242
|
-
...Object.keys(newService.procedures)
|
|
243
|
-
]);
|
|
244
|
-
const breakages = {};
|
|
245
|
-
for (const procedureName of allProcedures) {
|
|
246
|
-
const aProcedure = oldService.procedures[procedureName];
|
|
247
|
-
const bProcedure = newService.procedures[procedureName];
|
|
248
|
-
const breakage = diffProcedure(aProcedure, bProcedure, options);
|
|
249
|
-
if (breakage) {
|
|
250
|
-
breakages[procedureName] = breakage;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
if (Object.keys(breakages).length) {
|
|
254
|
-
return { reason: "modified", procedureBreakages: breakages };
|
|
255
|
-
}
|
|
256
|
-
return null;
|
|
257
|
-
}
|
|
258
|
-
function diffProcedure(oldProcedure, newProcedure, options) {
|
|
259
|
-
if (!newProcedure) {
|
|
260
|
-
return options?.allowProcedureRemoval ? null : { reason: "removed" };
|
|
261
|
-
}
|
|
262
|
-
if (!oldProcedure) {
|
|
263
|
-
return null;
|
|
264
|
-
}
|
|
265
|
-
if (oldProcedure.type !== newProcedure.type) {
|
|
266
|
-
return {
|
|
267
|
-
reason: "type-changed",
|
|
268
|
-
oldType: oldProcedure.type,
|
|
269
|
-
newType: newProcedure.type
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
const inputBreakage = diffProcedureField(
|
|
273
|
-
oldProcedure.input,
|
|
274
|
-
newProcedure.input,
|
|
275
|
-
"client"
|
|
276
|
-
);
|
|
277
|
-
const initBreakage = diffProcedureField(
|
|
278
|
-
oldProcedure.init,
|
|
279
|
-
newProcedure.init,
|
|
280
|
-
"client"
|
|
281
|
-
);
|
|
282
|
-
const outputBreakage = diffProcedureField(
|
|
283
|
-
oldProcedure.output,
|
|
284
|
-
newProcedure.output,
|
|
285
|
-
"server"
|
|
286
|
-
);
|
|
287
|
-
if (inputBreakage ?? initBreakage ?? outputBreakage) {
|
|
288
|
-
const result = {
|
|
289
|
-
reason: "modified"
|
|
290
|
-
};
|
|
291
|
-
if (inputBreakage) {
|
|
292
|
-
result.input = inputBreakage;
|
|
293
|
-
}
|
|
294
|
-
if (initBreakage) {
|
|
295
|
-
result.init = initBreakage;
|
|
296
|
-
}
|
|
297
|
-
if (outputBreakage) {
|
|
298
|
-
result.output = outputBreakage;
|
|
299
|
-
}
|
|
300
|
-
return result;
|
|
301
|
-
}
|
|
302
|
-
return null;
|
|
303
|
-
}
|
|
304
|
-
function diffProcedureField(oldSchema, newSchema, origin) {
|
|
305
|
-
if (!oldSchema && !newSchema) {
|
|
306
|
-
return null;
|
|
307
|
-
}
|
|
308
|
-
const diffBreakage = diffRequired(oldSchema, newSchema, origin, false, false);
|
|
309
|
-
if (diffBreakage) {
|
|
310
|
-
return diffBreakage;
|
|
311
|
-
}
|
|
312
|
-
if (!oldSchema || !newSchema) {
|
|
313
|
-
throw new Error("Appease typescript, this should never happen");
|
|
314
|
-
}
|
|
315
|
-
return diffJSONSchema(oldSchema, newSchema, origin);
|
|
316
|
-
}
|
|
317
|
-
function diffRequired(oldSchema, newSchema, origin, oldRequired, newRequired) {
|
|
318
|
-
if (!newSchema && !oldSchema) {
|
|
319
|
-
throw new Error("Both old and new schema are undefined");
|
|
320
|
-
}
|
|
321
|
-
if (!newSchema) {
|
|
322
|
-
if (!oldRequired && origin == "server") {
|
|
323
|
-
return null;
|
|
324
|
-
}
|
|
325
|
-
return { reason: "removed-required" };
|
|
326
|
-
}
|
|
327
|
-
if (!oldSchema) {
|
|
328
|
-
if (newRequired && origin === "client") {
|
|
329
|
-
return { reason: "new-required" };
|
|
330
|
-
}
|
|
331
|
-
return null;
|
|
332
|
-
}
|
|
333
|
-
if (origin === "client" && !oldRequired && newRequired) {
|
|
334
|
-
return { reason: "new-required" };
|
|
335
|
-
}
|
|
336
|
-
if (origin === "server" && oldRequired && !newRequired) {
|
|
337
|
-
return { reason: "removed-required" };
|
|
338
|
-
}
|
|
339
|
-
return null;
|
|
340
|
-
}
|
|
341
|
-
function diffJSONSchema(oldSchema, newSchema, origin) {
|
|
342
|
-
if (oldSchema.type !== newSchema.type) {
|
|
343
|
-
return {
|
|
344
|
-
reason: "type-changed",
|
|
345
|
-
oldType: getReportingType(oldSchema),
|
|
346
|
-
newType: getReportingType(newSchema)
|
|
347
|
-
};
|
|
348
|
-
}
|
|
349
|
-
if (getReportingType(oldSchema) !== getReportingType(newSchema)) {
|
|
350
|
-
return {
|
|
351
|
-
reason: "type-changed",
|
|
352
|
-
oldType: getReportingType(oldSchema),
|
|
353
|
-
newType: getReportingType(newSchema)
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
if ("const" in oldSchema && "const" in newSchema && oldSchema.const !== newSchema.const) {
|
|
357
|
-
return {
|
|
358
|
-
reason: "type-changed",
|
|
359
|
-
oldType: `${getReportingType(oldSchema)}-const-${oldSchema.const}`,
|
|
360
|
-
newType: `${getReportingType(newSchema)}-const-${newSchema.const}`
|
|
361
|
-
};
|
|
362
|
-
}
|
|
363
|
-
if ("const" in oldSchema && !("const" in newSchema) && origin === "server") {
|
|
364
|
-
return {
|
|
365
|
-
reason: "type-changed",
|
|
366
|
-
oldType: `${getReportingType(oldSchema)}-const-${oldSchema.const}`,
|
|
367
|
-
newType: getReportingType(newSchema)
|
|
368
|
-
};
|
|
369
|
-
}
|
|
370
|
-
if ("const" in newSchema && !("const" in oldSchema) && origin === "client") {
|
|
371
|
-
return {
|
|
372
|
-
reason: "type-changed",
|
|
373
|
-
oldType: getReportingType(oldSchema),
|
|
374
|
-
newType: `${getReportingType(newSchema)}-const-${newSchema.const}`
|
|
375
|
-
};
|
|
376
|
-
}
|
|
377
|
-
const breakages = {};
|
|
378
|
-
if ("$ref" in newSchema) {
|
|
379
|
-
if (newSchema.$ref !== oldSchema.$ref) {
|
|
380
|
-
return {
|
|
381
|
-
reason: "type-changed",
|
|
382
|
-
oldType: getReportingType(oldSchema),
|
|
383
|
-
newType: getReportingType(newSchema)
|
|
384
|
-
};
|
|
385
|
-
}
|
|
386
|
-
} else if ("not" in newSchema) {
|
|
387
|
-
const notBreakage = diffJSONSchema(
|
|
388
|
-
oldSchema.not,
|
|
389
|
-
newSchema.not,
|
|
390
|
-
origin
|
|
391
|
-
);
|
|
392
|
-
if (notBreakage) {
|
|
393
|
-
breakages.not = notBreakage;
|
|
394
|
-
}
|
|
395
|
-
} else if ("anyOf" in newSchema) {
|
|
396
|
-
const oldAnyOfStringified = oldSchema.anyOf.map((el) => JSON.stringify(el)).sort();
|
|
397
|
-
const newAnyOfStringified = newSchema.anyOf.map((el) => JSON.stringify(el)).sort();
|
|
398
|
-
const anyOfBreakages = {};
|
|
399
|
-
for (let i = 0; i < oldAnyOfStringified.length; i++) {
|
|
400
|
-
if (newAnyOfStringified.includes(oldAnyOfStringified[i])) {
|
|
401
|
-
continue;
|
|
402
|
-
}
|
|
403
|
-
if (!newAnyOfStringified[i]) {
|
|
404
|
-
if (origin === "server") {
|
|
405
|
-
continue;
|
|
406
|
-
}
|
|
407
|
-
anyOfBreakages[`old-${i}`] = { reason: "removed-required" };
|
|
408
|
-
} else {
|
|
409
|
-
const breakage = diffJSONSchema(
|
|
410
|
-
JSON.parse(oldAnyOfStringified[i]),
|
|
411
|
-
JSON.parse(newAnyOfStringified[i]),
|
|
412
|
-
origin
|
|
413
|
-
);
|
|
414
|
-
if (breakage) {
|
|
415
|
-
anyOfBreakages[`old-${i}`] = breakage;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
for (let i = 0; i < newAnyOfStringified.length; i++) {
|
|
420
|
-
if (oldAnyOfStringified.includes(newAnyOfStringified[i])) {
|
|
421
|
-
continue;
|
|
422
|
-
}
|
|
423
|
-
if (!oldAnyOfStringified[i]) {
|
|
424
|
-
if (origin === "client") {
|
|
425
|
-
continue;
|
|
426
|
-
}
|
|
427
|
-
anyOfBreakages[`new-${i}`] = { reason: "new-required" };
|
|
428
|
-
} else {
|
|
429
|
-
const breakage = diffJSONSchema(
|
|
430
|
-
JSON.parse(oldAnyOfStringified[i]),
|
|
431
|
-
JSON.parse(newAnyOfStringified[i]),
|
|
432
|
-
origin
|
|
433
|
-
);
|
|
434
|
-
if (breakage) {
|
|
435
|
-
anyOfBreakages[`new-${i}`] = breakage;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
if (Object.keys(anyOfBreakages).length > 0) {
|
|
440
|
-
breakages.anyOf = {
|
|
441
|
-
reason: "field-breakage",
|
|
442
|
-
fieldBreakages: anyOfBreakages
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
} else if ("oneOf" in newSchema) {
|
|
446
|
-
throw new Error("oneOf is not supported, typebox does not emit it");
|
|
447
|
-
} else if ("allOf" in newSchema) {
|
|
448
|
-
if (newSchema.allOf.length !== oldSchema.allOf.length) {
|
|
449
|
-
breakages.allOf = {
|
|
450
|
-
reason: "type-changed",
|
|
451
|
-
oldType: `${oldSchema.allOf}`,
|
|
452
|
-
newType: `${newSchema.allOf}`
|
|
453
|
-
};
|
|
454
|
-
} else {
|
|
455
|
-
for (let i = 0; i < newSchema.allOf.length; i++) {
|
|
456
|
-
const breakage = diffJSONSchema(
|
|
457
|
-
oldSchema.allOf[i],
|
|
458
|
-
newSchema.allOf[i],
|
|
459
|
-
origin
|
|
460
|
-
);
|
|
461
|
-
if (breakage) {
|
|
462
|
-
breakages.allOf = breakage;
|
|
463
|
-
break;
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
} else if (newSchema.type === "array") {
|
|
468
|
-
const itemsBreakages = diffJSONSchema(
|
|
469
|
-
oldSchema.items,
|
|
470
|
-
newSchema.items,
|
|
471
|
-
origin
|
|
472
|
-
);
|
|
473
|
-
if (itemsBreakages) {
|
|
474
|
-
breakages.items = itemsBreakages;
|
|
475
|
-
}
|
|
476
|
-
if (oldSchema.minItems < newSchema.minItems) {
|
|
477
|
-
if (origin === "client") {
|
|
478
|
-
breakages.minItems = {
|
|
479
|
-
reason: "type-changed",
|
|
480
|
-
oldType: `${oldSchema.minItems}`,
|
|
481
|
-
newType: `${newSchema.minItems}`
|
|
482
|
-
};
|
|
483
|
-
}
|
|
484
|
-
} else if (oldSchema.minItems > newSchema.minItems) {
|
|
485
|
-
if (origin === "server") {
|
|
486
|
-
breakages.minItems = {
|
|
487
|
-
reason: "type-changed",
|
|
488
|
-
oldType: `${oldSchema.minItems}`,
|
|
489
|
-
newType: `${newSchema.minItems}`
|
|
490
|
-
};
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
if (oldSchema.maxItems < newSchema.maxItems) {
|
|
494
|
-
if (origin === "server") {
|
|
495
|
-
breakages.maxItems = {
|
|
496
|
-
reason: "type-changed",
|
|
497
|
-
oldType: `${oldSchema.maxItems}`,
|
|
498
|
-
newType: `${newSchema.maxItems}`
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
|
-
} else if (oldSchema.maxItems > newSchema.maxItems) {
|
|
502
|
-
if (origin === "client") {
|
|
503
|
-
breakages.maxItems = {
|
|
504
|
-
reason: "type-changed",
|
|
505
|
-
oldType: `${oldSchema.maxItems}`,
|
|
506
|
-
newType: `${newSchema.maxItems}`
|
|
507
|
-
};
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
if (!oldSchema.uniqueItems && newSchema.uniqueItems && origin === "client") {
|
|
511
|
-
breakages.uniqueItems = {
|
|
512
|
-
reason: "type-changed",
|
|
513
|
-
oldType: `${!!oldSchema.uniqueItems}`,
|
|
514
|
-
newType: `${!!newSchema.uniqueItems}`
|
|
515
|
-
};
|
|
516
|
-
}
|
|
517
|
-
if ("contains" in newSchema !== "contains" in oldSchema) {
|
|
518
|
-
if ("contains" in newSchema && !("contains" in oldSchema) && origin === "client") {
|
|
519
|
-
breakages.contains = {
|
|
520
|
-
reason: "type-changed",
|
|
521
|
-
oldType: "no-contains",
|
|
522
|
-
newType: "contains"
|
|
523
|
-
};
|
|
524
|
-
}
|
|
525
|
-
} else if ("contains" in newSchema) {
|
|
526
|
-
const containsBreakage = diffJSONSchema(
|
|
527
|
-
oldSchema.contains,
|
|
528
|
-
newSchema.contains,
|
|
529
|
-
origin
|
|
530
|
-
);
|
|
531
|
-
if (containsBreakage) {
|
|
532
|
-
breakages.contains = containsBreakage;
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
if (oldSchema.minContains < newSchema.minContains) {
|
|
536
|
-
if (origin === "client") {
|
|
537
|
-
breakages.minContains = {
|
|
538
|
-
reason: "type-changed",
|
|
539
|
-
oldType: `${oldSchema.minContains}`,
|
|
540
|
-
newType: `${newSchema.minContains}`
|
|
541
|
-
};
|
|
542
|
-
}
|
|
543
|
-
} else if (oldSchema.minContains > newSchema.minContains) {
|
|
544
|
-
if (origin === "server") {
|
|
545
|
-
breakages.minContains = {
|
|
546
|
-
reason: "type-changed",
|
|
547
|
-
oldType: `${oldSchema.minContains}`,
|
|
548
|
-
newType: `${newSchema.minContains}`
|
|
549
|
-
};
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
if (oldSchema.maxContains < newSchema.maxContains) {
|
|
553
|
-
if (origin === "server") {
|
|
554
|
-
breakages.maxContains = {
|
|
555
|
-
reason: "type-changed",
|
|
556
|
-
oldType: `${oldSchema.maxContains}`,
|
|
557
|
-
newType: `${newSchema.maxContains}`
|
|
558
|
-
};
|
|
559
|
-
}
|
|
560
|
-
} else if (oldSchema.maxContains > newSchema.maxContains) {
|
|
561
|
-
if (origin === "client") {
|
|
562
|
-
breakages.maxContains = {
|
|
563
|
-
reason: "type-changed",
|
|
564
|
-
oldType: `${oldSchema.maxContains}`,
|
|
565
|
-
newType: `${newSchema.maxContains}`
|
|
566
|
-
};
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
} else if (newSchema.type === "object") {
|
|
570
|
-
if ("properties" in newSchema !== "properties" in oldSchema) {
|
|
571
|
-
return {
|
|
572
|
-
reason: "type-changed",
|
|
573
|
-
oldType: "properties" in oldSchema ? "probably-object" : "probably-record",
|
|
574
|
-
newType: "properties" in newSchema ? "probably-object" : "probably-record"
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
|
-
if ("properties" in newSchema) {
|
|
578
|
-
const propertiesBreakages = diffObjectProperties(
|
|
579
|
-
oldSchema.properties,
|
|
580
|
-
newSchema.properties,
|
|
581
|
-
origin,
|
|
582
|
-
oldSchema.required,
|
|
583
|
-
newSchema.required
|
|
584
|
-
);
|
|
585
|
-
if (Object.keys(propertiesBreakages).length) {
|
|
586
|
-
breakages.properties = {
|
|
587
|
-
reason: "field-breakage",
|
|
588
|
-
fieldBreakages: propertiesBreakages
|
|
589
|
-
};
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
if ("patternProperties" in newSchema) {
|
|
593
|
-
const patternPropertiesBreakages = diffObjectProperties(
|
|
594
|
-
oldSchema.patternProperties,
|
|
595
|
-
newSchema.patternProperties,
|
|
596
|
-
origin,
|
|
597
|
-
oldSchema.required,
|
|
598
|
-
newSchema.required
|
|
599
|
-
);
|
|
600
|
-
if (Object.keys(patternPropertiesBreakages).length) {
|
|
601
|
-
breakages.patternProperties = {
|
|
602
|
-
reason: "field-breakage",
|
|
603
|
-
fieldBreakages: patternPropertiesBreakages
|
|
604
|
-
};
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
if ("additionalProperties" in newSchema || "additionalProperties" in oldSchema) {
|
|
608
|
-
throw new Error("additionalProperties is not supported");
|
|
609
|
-
}
|
|
610
|
-
if ("minProperties" in newSchema || "minProperties" in oldSchema) {
|
|
611
|
-
throw new Error("minProperties is not supported");
|
|
612
|
-
}
|
|
613
|
-
if ("maxProperties" in newSchema || "maxProperties" in oldSchema) {
|
|
614
|
-
throw new Error("maxProperties is not supported");
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
if (Object.keys(breakages).length) {
|
|
618
|
-
return {
|
|
619
|
-
reason: "field-breakage",
|
|
620
|
-
fieldBreakages: breakages
|
|
621
|
-
};
|
|
622
|
-
}
|
|
623
|
-
return null;
|
|
624
|
-
}
|
|
625
|
-
function diffObjectProperties(oldProperties, newProperties, origin, oldRequiredProperties = [], newRequiredProperties = []) {
|
|
626
|
-
const allProperties = /* @__PURE__ */ new Set([
|
|
627
|
-
...Object.keys(oldProperties),
|
|
628
|
-
...Object.keys(newProperties)
|
|
629
|
-
]);
|
|
630
|
-
const breakages = {};
|
|
631
|
-
for (const propertyName of allProperties) {
|
|
632
|
-
const requiredBreakage = diffRequired(
|
|
633
|
-
oldProperties[propertyName],
|
|
634
|
-
newProperties[propertyName],
|
|
635
|
-
origin,
|
|
636
|
-
oldRequiredProperties.includes(propertyName),
|
|
637
|
-
newRequiredProperties.includes(propertyName)
|
|
638
|
-
);
|
|
639
|
-
if (requiredBreakage) {
|
|
640
|
-
breakages[propertyName] = requiredBreakage;
|
|
641
|
-
} else if (oldProperties[propertyName] && newProperties[propertyName]) {
|
|
642
|
-
const propertyBreakage = diffJSONSchema(
|
|
643
|
-
oldProperties[propertyName],
|
|
644
|
-
newProperties[propertyName],
|
|
645
|
-
origin
|
|
646
|
-
);
|
|
647
|
-
if (propertyBreakage) {
|
|
648
|
-
breakages[propertyName] = propertyBreakage;
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
return breakages;
|
|
653
|
-
}
|
|
654
|
-
function getReportingType(schema) {
|
|
655
|
-
if ("not" in schema) {
|
|
656
|
-
return "not";
|
|
657
|
-
}
|
|
658
|
-
if ("anyOf" in schema) {
|
|
659
|
-
return "anyOf";
|
|
660
|
-
}
|
|
661
|
-
if ("allOf" in schema) {
|
|
662
|
-
return "allOf";
|
|
663
|
-
}
|
|
664
|
-
if ("$ref" in schema) {
|
|
665
|
-
return "$ref";
|
|
666
|
-
}
|
|
667
|
-
if (schema.type && typeof schema.type === "string") {
|
|
668
|
-
return schema.type;
|
|
669
|
-
}
|
|
670
|
-
throw new Error(
|
|
671
|
-
"Subschema not supported, probably a conditional subschema. Check logs."
|
|
672
|
-
);
|
|
673
|
-
}
|
|
674
|
-
|
|
675
215
|
// router/procedures.ts
|
|
676
216
|
import { Type as Type2 } from "@sinclair/typebox";
|
|
677
217
|
function rpc({
|
|
@@ -1045,9 +585,6 @@ function _pushable(getNext, options) {
|
|
|
1045
585
|
return pushable2;
|
|
1046
586
|
}
|
|
1047
587
|
|
|
1048
|
-
// router/client.ts
|
|
1049
|
-
import { nanoid } from "nanoid";
|
|
1050
|
-
|
|
1051
588
|
// router/result.ts
|
|
1052
589
|
import {
|
|
1053
590
|
Type as Type3
|
|
@@ -1105,7 +642,7 @@ function createClient(transport, serverId, providedClientOptions = {}) {
|
|
|
1105
642
|
}
|
|
1106
643
|
const options = { ...defaultClientOptions, ...providedClientOptions };
|
|
1107
644
|
if (options.eagerlyConnect) {
|
|
1108
|
-
|
|
645
|
+
transport.connect(serverId);
|
|
1109
646
|
}
|
|
1110
647
|
return _createRecursiveProxy(async (opts) => {
|
|
1111
648
|
const [serviceName, procName, procType] = [...opts.path];
|
|
@@ -1115,8 +652,8 @@ function createClient(transport, serverId, providedClientOptions = {}) {
|
|
|
1115
652
|
);
|
|
1116
653
|
}
|
|
1117
654
|
const [input] = opts.args;
|
|
1118
|
-
if (options.connectOnInvoke && !transport.
|
|
1119
|
-
|
|
655
|
+
if (options.connectOnInvoke && !transport.sessions.has(serverId)) {
|
|
656
|
+
transport.connect(serverId);
|
|
1120
657
|
}
|
|
1121
658
|
if (procType === "rpc") {
|
|
1122
659
|
return handleRpc(transport, serverId, input, serviceName, procName);
|
|
@@ -1139,7 +676,7 @@ function createSessionDisconnectHandler(from, cb) {
|
|
|
1139
676
|
};
|
|
1140
677
|
}
|
|
1141
678
|
function handleRpc(transport, serverId, input, serviceName, procedureName) {
|
|
1142
|
-
const streamId =
|
|
679
|
+
const streamId = generateId();
|
|
1143
680
|
const { span, ctx } = createProcTelemetryInfo(
|
|
1144
681
|
transport,
|
|
1145
682
|
"rpc",
|
|
@@ -1184,7 +721,7 @@ function handleRpc(transport, serverId, input, serviceName, procedureName) {
|
|
|
1184
721
|
return responsePromise;
|
|
1185
722
|
}
|
|
1186
723
|
function handleStream(transport, serverId, init, serviceName, procedureName) {
|
|
1187
|
-
const streamId =
|
|
724
|
+
const streamId = generateId();
|
|
1188
725
|
const { span, ctx } = createProcTelemetryInfo(
|
|
1189
726
|
transport,
|
|
1190
727
|
"stream",
|
|
@@ -1225,7 +762,7 @@ function handleStream(transport, serverId, init, serviceName, procedureName) {
|
|
|
1225
762
|
}
|
|
1226
763
|
if (!healthyClose)
|
|
1227
764
|
return;
|
|
1228
|
-
transport.
|
|
765
|
+
transport.send(serverId, closeStreamMessage(streamId));
|
|
1229
766
|
};
|
|
1230
767
|
void pipeInputToTransport();
|
|
1231
768
|
function onMessage(msg) {
|
|
@@ -1261,7 +798,7 @@ function handleStream(transport, serverId, init, serviceName, procedureName) {
|
|
|
1261
798
|
return [inputStream, outputStream, cleanup];
|
|
1262
799
|
}
|
|
1263
800
|
function handleSubscribe(transport, serverId, input, serviceName, procedureName) {
|
|
1264
|
-
const streamId =
|
|
801
|
+
const streamId = generateId();
|
|
1265
802
|
const { span, ctx } = createProcTelemetryInfo(
|
|
1266
803
|
transport,
|
|
1267
804
|
"subscription",
|
|
@@ -1300,7 +837,7 @@ function handleSubscribe(transport, serverId, input, serviceName, procedureName)
|
|
|
1300
837
|
cleanup();
|
|
1301
838
|
if (!healthyClose)
|
|
1302
839
|
return;
|
|
1303
|
-
transport.
|
|
840
|
+
transport.send(serverId, closeStreamMessage(streamId));
|
|
1304
841
|
};
|
|
1305
842
|
const onSessionStatus = createSessionDisconnectHandler(serverId, () => {
|
|
1306
843
|
outputStream.push(
|
|
@@ -1317,7 +854,7 @@ function handleSubscribe(transport, serverId, input, serviceName, procedureName)
|
|
|
1317
854
|
return [outputStream, closeHandler];
|
|
1318
855
|
}
|
|
1319
856
|
function handleUpload(transport, serverId, init, serviceName, procedureName) {
|
|
1320
|
-
const streamId =
|
|
857
|
+
const streamId = generateId();
|
|
1321
858
|
const { span, ctx } = createProcTelemetryInfo(
|
|
1322
859
|
transport,
|
|
1323
860
|
"upload",
|
|
@@ -1357,7 +894,7 @@ function handleUpload(transport, serverId, init, serviceName, procedureName) {
|
|
|
1357
894
|
}
|
|
1358
895
|
if (!healthyClose)
|
|
1359
896
|
return;
|
|
1360
|
-
transport.
|
|
897
|
+
transport.send(serverId, closeStreamMessage(streamId));
|
|
1361
898
|
};
|
|
1362
899
|
void pipeInputToTransport();
|
|
1363
900
|
const responsePromise = new Promise((resolve) => {
|
|
@@ -1398,18 +935,18 @@ var RiverServer = class {
|
|
|
1398
935
|
transport;
|
|
1399
936
|
services;
|
|
1400
937
|
contextMap;
|
|
1401
|
-
// map of streamId to ProcStream
|
|
1402
938
|
streamMap;
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
939
|
+
sessionToStreamId;
|
|
940
|
+
// streams that are in the process of being cleaned up
|
|
941
|
+
// this is to prevent output handlers from sending after the stream is cleaned up
|
|
942
|
+
sessionsBeingCleanedUp = /* @__PURE__ */ new Set();
|
|
1406
943
|
log;
|
|
1407
944
|
constructor(transport, services, handshakeOptions, extendedContext) {
|
|
1408
945
|
const instances = {};
|
|
1409
946
|
this.services = instances;
|
|
1410
947
|
this.contextMap = /* @__PURE__ */ new Map();
|
|
1411
948
|
for (const [name, service] of Object.entries(services)) {
|
|
1412
|
-
const instance = service.instantiate();
|
|
949
|
+
const instance = service.instantiate(extendedContext ?? {});
|
|
1413
950
|
instances[name] = instance;
|
|
1414
951
|
this.contextMap.set(instance, {
|
|
1415
952
|
...extendedContext,
|
|
@@ -1420,9 +957,8 @@ var RiverServer = class {
|
|
|
1420
957
|
transport.extendHandshake(handshakeOptions);
|
|
1421
958
|
}
|
|
1422
959
|
this.transport = transport;
|
|
1423
|
-
this.disconnectedSessions = /* @__PURE__ */ new Set();
|
|
1424
960
|
this.streamMap = /* @__PURE__ */ new Map();
|
|
1425
|
-
this.
|
|
961
|
+
this.sessionToStreamId = /* @__PURE__ */ new Map();
|
|
1426
962
|
this.transport.addEventListener("message", this.onMessage);
|
|
1427
963
|
this.transport.addEventListener("sessionStatus", this.onSessionStatus);
|
|
1428
964
|
this.log = transport.log;
|
|
@@ -1457,24 +993,35 @@ var RiverServer = class {
|
|
|
1457
993
|
}
|
|
1458
994
|
await this.pushToStream(procStream, message, isInitMessage);
|
|
1459
995
|
};
|
|
1460
|
-
// cleanup streams on session close
|
|
1461
996
|
onSessionStatus = async (evt) => {
|
|
1462
|
-
|
|
997
|
+
const streamsFromThisClient = this.sessionToStreamId.get(evt.session.id);
|
|
998
|
+
const cleanupStreams = async (ids) => {
|
|
999
|
+
this.sessionsBeingCleanedUp.add(evt.session.id);
|
|
1000
|
+
await Promise.all(Array.from(ids).map(this.cleanupStream));
|
|
1001
|
+
this.sessionToStreamId.delete(evt.session.id);
|
|
1002
|
+
this.sessionsBeingCleanedUp.delete(evt.session.id);
|
|
1003
|
+
};
|
|
1004
|
+
if (evt.status === "connect") {
|
|
1005
|
+
if (streamsFromThisClient) {
|
|
1006
|
+
this.log?.error(
|
|
1007
|
+
`got session connect from ${evt.session.to} but there are still streams open from this session`,
|
|
1008
|
+
{
|
|
1009
|
+
clientId: this.transport.clientId,
|
|
1010
|
+
tags: ["invariant-violation"]
|
|
1011
|
+
}
|
|
1012
|
+
);
|
|
1013
|
+
await cleanupStreams(streamsFromThisClient);
|
|
1014
|
+
}
|
|
1015
|
+
this.sessionToStreamId.set(evt.session.id, /* @__PURE__ */ new Set());
|
|
1463
1016
|
return;
|
|
1464
|
-
|
|
1017
|
+
}
|
|
1465
1018
|
this.log?.info(
|
|
1466
|
-
`got session disconnect from ${
|
|
1019
|
+
`got session disconnect from ${evt.session.to}, cleaning up streams for session`,
|
|
1467
1020
|
evt.session.loggingMetadata
|
|
1468
1021
|
);
|
|
1469
|
-
const streamsFromThisClient = this.clientStreams.get(disconnectedClientId);
|
|
1470
1022
|
if (!streamsFromThisClient)
|
|
1471
1023
|
return;
|
|
1472
|
-
|
|
1473
|
-
await Promise.all(
|
|
1474
|
-
Array.from(streamsFromThisClient).map(this.cleanupStream)
|
|
1475
|
-
);
|
|
1476
|
-
this.disconnectedSessions.delete(disconnectedClientId);
|
|
1477
|
-
this.clientStreams.delete(disconnectedClientId);
|
|
1024
|
+
await cleanupStreams(streamsFromThisClient);
|
|
1478
1025
|
};
|
|
1479
1026
|
createNewProcStream(message) {
|
|
1480
1027
|
if (!isStreamOpen(message.controlFlags)) {
|
|
@@ -1525,26 +1072,34 @@ var RiverServer = class {
|
|
|
1525
1072
|
});
|
|
1526
1073
|
return;
|
|
1527
1074
|
}
|
|
1075
|
+
const {
|
|
1076
|
+
to,
|
|
1077
|
+
id: sessionId,
|
|
1078
|
+
loggingMetadata: sessionLoggingMetadata
|
|
1079
|
+
} = session;
|
|
1528
1080
|
const procedure = service.procedures[message.procedureName];
|
|
1529
1081
|
const incoming = pushable({ objectMode: true });
|
|
1530
1082
|
const outgoing = pushable({ objectMode: true });
|
|
1531
1083
|
const needsClose = procedure.type === "subscription" || procedure.type === "stream";
|
|
1532
1084
|
const disposables = [];
|
|
1085
|
+
const wrappedSend = (payload) => {
|
|
1086
|
+
if (!this.sessionsBeingCleanedUp.has(sessionId)) {
|
|
1087
|
+
this.transport.send(to, payload);
|
|
1088
|
+
}
|
|
1089
|
+
};
|
|
1533
1090
|
const outputHandler = (
|
|
1534
1091
|
// sending outgoing messages back to client
|
|
1535
1092
|
needsClose ? (
|
|
1536
1093
|
// subscription and stream case, we need to send a close bit after the response stream
|
|
1537
1094
|
(async () => {
|
|
1538
1095
|
for await (const response of outgoing) {
|
|
1539
|
-
|
|
1096
|
+
wrappedSend({
|
|
1540
1097
|
streamId: message.streamId,
|
|
1541
1098
|
controlFlags: 0,
|
|
1542
1099
|
payload: response
|
|
1543
1100
|
});
|
|
1544
1101
|
}
|
|
1545
|
-
|
|
1546
|
-
this.transport.sendCloseStream(session.to, message.streamId);
|
|
1547
|
-
}
|
|
1102
|
+
wrappedSend(closeStreamMessage(message.streamId));
|
|
1548
1103
|
disposables.forEach((d) => d());
|
|
1549
1104
|
})()
|
|
1550
1105
|
) : (
|
|
@@ -1552,7 +1107,7 @@ var RiverServer = class {
|
|
|
1552
1107
|
(async () => {
|
|
1553
1108
|
const response = await outgoing.next().then((res) => res.value);
|
|
1554
1109
|
if (response) {
|
|
1555
|
-
|
|
1110
|
+
wrappedSend({
|
|
1556
1111
|
streamId: message.streamId,
|
|
1557
1112
|
controlFlags: 4 /* StreamClosedBit */,
|
|
1558
1113
|
payload: response
|
|
@@ -1566,7 +1121,7 @@ var RiverServer = class {
|
|
|
1566
1121
|
const errorMsg = coerceErrorString(err);
|
|
1567
1122
|
this.log?.error(
|
|
1568
1123
|
`procedure ${message.serviceName}.${message.procedureName} threw an uncaught error: ${errorMsg}`,
|
|
1569
|
-
|
|
1124
|
+
sessionLoggingMetadata
|
|
1570
1125
|
);
|
|
1571
1126
|
span.recordException(err instanceof Error ? err : new Error(errorMsg));
|
|
1572
1127
|
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
@@ -1577,10 +1132,10 @@ var RiverServer = class {
|
|
|
1577
1132
|
})
|
|
1578
1133
|
);
|
|
1579
1134
|
};
|
|
1580
|
-
const sessionMeta = this.transport.sessionHandshakeMetadata.get(
|
|
1135
|
+
const sessionMeta = this.transport.sessionHandshakeMetadata.get(to);
|
|
1581
1136
|
if (!sessionMeta) {
|
|
1582
1137
|
this.log?.error(`session doesn't have handshake metadata`, {
|
|
1583
|
-
...
|
|
1138
|
+
...sessionLoggingMetadata,
|
|
1584
1139
|
tags: ["invariant-violation"]
|
|
1585
1140
|
});
|
|
1586
1141
|
return;
|
|
@@ -1592,7 +1147,6 @@ var RiverServer = class {
|
|
|
1592
1147
|
to: message.to,
|
|
1593
1148
|
from: message.from,
|
|
1594
1149
|
streamId: message.streamId,
|
|
1595
|
-
session,
|
|
1596
1150
|
metadata: sessionMeta
|
|
1597
1151
|
};
|
|
1598
1152
|
switch (procedure.type) {
|
|
@@ -1711,9 +1265,7 @@ var RiverServer = class {
|
|
|
1711
1265
|
initMessage.value,
|
|
1712
1266
|
incoming
|
|
1713
1267
|
);
|
|
1714
|
-
|
|
1715
|
-
outgoing.push(outputMessage);
|
|
1716
|
-
}
|
|
1268
|
+
outgoing.push(outputMessage);
|
|
1717
1269
|
} catch (err) {
|
|
1718
1270
|
errorHandler(err, span);
|
|
1719
1271
|
} finally {
|
|
@@ -1731,9 +1283,7 @@ var RiverServer = class {
|
|
|
1731
1283
|
serviceContextWithTransportInfo,
|
|
1732
1284
|
incoming
|
|
1733
1285
|
);
|
|
1734
|
-
|
|
1735
|
-
outgoing.push(outputMessage);
|
|
1736
|
-
}
|
|
1286
|
+
outgoing.push(outputMessage);
|
|
1737
1287
|
} catch (err) {
|
|
1738
1288
|
errorHandler(err, span);
|
|
1739
1289
|
} finally {
|
|
@@ -1746,7 +1296,7 @@ var RiverServer = class {
|
|
|
1746
1296
|
default:
|
|
1747
1297
|
this.log?.warn(
|
|
1748
1298
|
`got request for invalid procedure type ${procedure.type} at ${message.serviceName}.${message.procedureName}`,
|
|
1749
|
-
{ ...
|
|
1299
|
+
{ ...sessionLoggingMetadata, transportMessage: message }
|
|
1750
1300
|
);
|
|
1751
1301
|
return;
|
|
1752
1302
|
}
|
|
@@ -1759,9 +1309,9 @@ var RiverServer = class {
|
|
|
1759
1309
|
promises: { inputHandler, outputHandler }
|
|
1760
1310
|
};
|
|
1761
1311
|
this.streamMap.set(message.streamId, procStream);
|
|
1762
|
-
const
|
|
1763
|
-
|
|
1764
|
-
this.
|
|
1312
|
+
const streamsForThisSession = this.sessionToStreamId.get(sessionId) ?? /* @__PURE__ */ new Set();
|
|
1313
|
+
streamsForThisSession.add(message.streamId);
|
|
1314
|
+
this.sessionToStreamId.set(sessionId, streamsForThisSession);
|
|
1765
1315
|
return procStream;
|
|
1766
1316
|
}
|
|
1767
1317
|
async pushToStream(procStream, message, isInit) {
|
|
@@ -1797,11 +1347,11 @@ var RiverServer = class {
|
|
|
1797
1347
|
}
|
|
1798
1348
|
if (isStreamClose(message.controlFlags)) {
|
|
1799
1349
|
await this.cleanupStream(message.streamId);
|
|
1800
|
-
const streamsFromThisClient = this.
|
|
1350
|
+
const streamsFromThisClient = this.sessionToStreamId.get(message.from);
|
|
1801
1351
|
if (streamsFromThisClient) {
|
|
1802
1352
|
streamsFromThisClient.delete(message.streamId);
|
|
1803
1353
|
if (streamsFromThisClient.size === 0) {
|
|
1804
|
-
this.
|
|
1354
|
+
this.sessionToStreamId.delete(message.from);
|
|
1805
1355
|
}
|
|
1806
1356
|
}
|
|
1807
1357
|
}
|
|
@@ -1850,7 +1400,6 @@ function createServerHandshakeOptions(schema, validate) {
|
|
|
1850
1400
|
export {
|
|
1851
1401
|
serializeSchema,
|
|
1852
1402
|
ServiceSchema,
|
|
1853
|
-
diffServerSchema,
|
|
1854
1403
|
Procedure,
|
|
1855
1404
|
pushable,
|
|
1856
1405
|
UNCAUGHT_ERROR,
|
|
@@ -1862,4 +1411,4 @@ export {
|
|
|
1862
1411
|
createClientHandshakeOptions,
|
|
1863
1412
|
createServerHandshakeOptions
|
|
1864
1413
|
};
|
|
1865
|
-
//# sourceMappingURL=chunk-
|
|
1414
|
+
//# sourceMappingURL=chunk-KYYB4DUR.js.map
|