cojson-transport-ws 0.19.19 → 0.19.20
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/.turbo/turbo-build.log +1 -1
- package/dist/BatchedOutgoingMessages.d.ts +1 -1
- package/dist/BatchedOutgoingMessages.d.ts.map +1 -1
- package/dist/BatchedOutgoingMessages.js +19 -14
- package/dist/BatchedOutgoingMessages.js.map +1 -1
- package/dist/createWebSocketPeer.d.ts.map +1 -1
- package/dist/createWebSocketPeer.js +17 -11
- package/dist/createWebSocketPeer.js.map +1 -1
- package/dist/serialization.d.ts +0 -1
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +0 -6
- package/dist/serialization.js.map +1 -1
- package/dist/tests/createWebSocketPeer.test.js +70 -2
- package/dist/tests/createWebSocketPeer.test.js.map +1 -1
- package/dist/tests/utils.d.ts.map +1 -1
- package/dist/tests/utils.js +5 -3
- package/dist/tests/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/BatchedOutgoingMessages.ts +29 -17
- package/src/createWebSocketPeer.ts +19 -11
- package/src/serialization.ts +0 -7
- package/src/tests/createWebSocketPeer.test.ts +99 -2
- package/src/tests/utils.ts +6 -3
package/.turbo/turbo-build.log
CHANGED
|
@@ -3,7 +3,6 @@ import type { DisconnectedError, SyncMessage } from "cojson";
|
|
|
3
3
|
import type { Peer } from "cojson";
|
|
4
4
|
import { type CojsonInternalTypes } from "cojson";
|
|
5
5
|
import type { AnyWebSocket } from "./types.js";
|
|
6
|
-
export declare const MAX_OUTGOING_MESSAGES_CHUNK_BYTES = 25000;
|
|
7
6
|
export declare class BatchedOutgoingMessages implements CojsonInternalTypes.OutgoingPeerChannel {
|
|
8
7
|
private websocket;
|
|
9
8
|
private batching;
|
|
@@ -25,6 +24,7 @@ export declare class BatchedOutgoingMessages implements CojsonInternalTypes.Outg
|
|
|
25
24
|
private processQueue;
|
|
26
25
|
private processMessage;
|
|
27
26
|
private sendMessagesInBulk;
|
|
27
|
+
drain(): void;
|
|
28
28
|
setBatching(enabled: boolean): void;
|
|
29
29
|
private closeListeners;
|
|
30
30
|
onClose(callback: () => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchedOutgoingMessages.d.ts","sourceRoot":"","sources":["../src/BatchedOutgoingMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EACL,KAAK,mBAAmB,EAIzB,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"BatchedOutgoingMessages.d.ts","sourceRoot":"","sources":["../src/BatchedOutgoingMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EACL,KAAK,mBAAmB,EAIzB,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAW/C,qBAAa,uBACX,YAAW,mBAAmB,CAAC,mBAAmB;IAShD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAEhB;;OAEG;IACH,OAAO,CAAC,IAAI,CAAC;IAbf,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAC;gBAGjB,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,OAAO,EACzB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;IACtB;;OAEG;IACK,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA,EAC9C,KAAK,CAAC,EAAE,KAAK;IAsBf,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB;YAiB3B,YAAY;IAqC1B,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,kBAAkB;IAO1B,KAAK;IAIL,WAAW,CAAC,OAAO,EAAE,OAAO;IAI5B,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI;IAI5B,KAAK;CAqBN"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { metrics, ValueType } from "@opentelemetry/api";
|
|
2
2
|
import { PriorityBasedMessageQueue, cojsonInternals, logger, } from "cojson";
|
|
3
|
-
import { addMessageToBacklog } from "./serialization.js";
|
|
4
3
|
import { hasWebSocketTooMuchBufferedData, isWebSocketOpen, waitForWebSocketBufferedAmount, waitForWebSocketOpen, } from "./utils.js";
|
|
5
|
-
const { CO_VALUE_PRIORITY, getContentMessageSize } = cojsonInternals;
|
|
6
|
-
export const MAX_OUTGOING_MESSAGES_CHUNK_BYTES = 25000;
|
|
4
|
+
const { CO_VALUE_PRIORITY, getContentMessageSize, WEBSOCKET_CONFIG } = cojsonInternals;
|
|
7
5
|
export class BatchedOutgoingMessages {
|
|
8
6
|
constructor(websocket, batching, peerRole,
|
|
9
7
|
/**
|
|
@@ -46,7 +44,7 @@ export class BatchedOutgoingMessages {
|
|
|
46
44
|
this.processing = true;
|
|
47
45
|
// Delay the initiation of the queue processing to accumulate messages
|
|
48
46
|
// before sending them, in order to do prioritization and batching
|
|
49
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
47
|
+
await new Promise((resolve) => setTimeout(resolve, WEBSOCKET_CONFIG.OUTGOING_MESSAGES_CHUNK_DELAY));
|
|
50
48
|
let msg = this.queue.pull();
|
|
51
49
|
while (msg) {
|
|
52
50
|
if (this.closed) {
|
|
@@ -70,23 +68,27 @@ export class BatchedOutgoingMessages {
|
|
|
70
68
|
if (msg.action === "content") {
|
|
71
69
|
this.egressBytesCounter.add(getContentMessageSize(msg), this.meta);
|
|
72
70
|
}
|
|
71
|
+
const stringifiedMsg = JSON.stringify(msg);
|
|
73
72
|
if (!this.batching) {
|
|
74
|
-
this.websocket.send(
|
|
73
|
+
this.websocket.send(stringifiedMsg);
|
|
75
74
|
return;
|
|
76
75
|
}
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
if (
|
|
76
|
+
const msgSize = stringifiedMsg.length;
|
|
77
|
+
const newBacklogSize = this.backlog.length + msgSize;
|
|
78
|
+
// If backlog+message exceeds the chunk size, send the backlog and reset it
|
|
79
|
+
if (this.backlog.length > 0 &&
|
|
80
|
+
newBacklogSize > WEBSOCKET_CONFIG.MAX_OUTGOING_MESSAGES_CHUNK_BYTES) {
|
|
81
81
|
this.sendMessagesInBulk();
|
|
82
|
-
this.backlog = addMessageToBacklog("", msg);
|
|
83
82
|
}
|
|
84
|
-
|
|
85
|
-
this.backlog
|
|
86
|
-
this.sendMessagesInBulk();
|
|
83
|
+
if (this.backlog.length > 0) {
|
|
84
|
+
this.backlog += `\n${stringifiedMsg}`;
|
|
87
85
|
}
|
|
88
86
|
else {
|
|
89
|
-
this.backlog =
|
|
87
|
+
this.backlog = stringifiedMsg;
|
|
88
|
+
}
|
|
89
|
+
// If message itself exceeds the chunk size, send it immediately
|
|
90
|
+
if (msgSize >= WEBSOCKET_CONFIG.MAX_OUTGOING_MESSAGES_CHUNK_BYTES) {
|
|
91
|
+
this.sendMessagesInBulk();
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
sendMessagesInBulk() {
|
|
@@ -95,6 +97,9 @@ export class BatchedOutgoingMessages {
|
|
|
95
97
|
this.backlog = "";
|
|
96
98
|
}
|
|
97
99
|
}
|
|
100
|
+
drain() {
|
|
101
|
+
while (this.queue.pull()) { }
|
|
102
|
+
}
|
|
98
103
|
setBatching(enabled) {
|
|
99
104
|
this.batching = enabled;
|
|
100
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchedOutgoingMessages.js","sourceRoot":"","sources":["../src/BatchedOutgoingMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EAEL,yBAAyB,EACzB,eAAe,EACf,MAAM,GACP,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"BatchedOutgoingMessages.js","sourceRoot":"","sources":["../src/BatchedOutgoingMessages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWebSocketPeer.d.ts","sourceRoot":"","sources":["../src/createWebSocketPeer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,IAAI,EAA2B,MAAM,QAAQ,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,YAAY,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAuCF,wBAAgB,mBAAmB,CAAC,EAClC,EAAE,EACF,SAAS,EACT,IAAI,EACJ,WAAkB,EAClB,iBAAwB,EACxB,sBAA8B,EAC9B,WAAoB,EACpB,SAAS,EACT,OAAO,EACP,KAAK,EACL,IAAI,GACL,EAAE,uBAAuB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"createWebSocketPeer.d.ts","sourceRoot":"","sources":["../src/createWebSocketPeer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,IAAI,EAA2B,MAAM,QAAQ,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,YAAY,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAuCF,wBAAgB,mBAAmB,CAAC,EAClC,EAAE,EACF,SAAS,EACT,IAAI,EACJ,WAAkB,EAClB,iBAAwB,EACxB,sBAA8B,EAC9B,WAAoB,EACpB,SAAS,EACT,OAAO,EACP,KAAK,EACL,IAAI,GACL,EAAE,uBAAuB,GAAG,IAAI,CAgIhC"}
|
|
@@ -42,26 +42,34 @@ export function createWebSocketPeer({ id, websocket, role, expectPings = true, b
|
|
|
42
42
|
ingressBytesCounter.add(0, meta);
|
|
43
43
|
const incoming = new ConnectedPeerChannel();
|
|
44
44
|
const emitClosedEvent = createClosedEventEmitter(onClose);
|
|
45
|
+
function cleanup() {
|
|
46
|
+
websocket.removeEventListener("message", handleIncomingMsg);
|
|
47
|
+
websocket.removeEventListener("close", handleClose);
|
|
48
|
+
// Only some WebSocket implementations emit the error event, so we need to do casting to any to avoid type errors
|
|
49
|
+
websocket.removeEventListener("error", handleError);
|
|
50
|
+
pingTimeoutListener.clear();
|
|
51
|
+
outgoing.drain();
|
|
52
|
+
}
|
|
45
53
|
function handleClose() {
|
|
46
54
|
incoming.push("Disconnected");
|
|
47
55
|
emitClosedEvent();
|
|
56
|
+
cleanup();
|
|
48
57
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
// biome-ignore lint/suspicious/noExplicitAny: WebSocket error event type
|
|
52
|
-
websocket.addEventListener("error", (err) => {
|
|
53
|
-
if (err.message) {
|
|
58
|
+
function handleError(err) {
|
|
59
|
+
if (err instanceof Error && err.message) {
|
|
54
60
|
logger.warn("WebSocket error", { err });
|
|
55
61
|
}
|
|
56
62
|
handleClose();
|
|
57
|
-
}
|
|
63
|
+
}
|
|
64
|
+
websocket.addEventListener("close", handleClose);
|
|
65
|
+
// Only some WebSocket implementations emit the error event, so we need to do casting to any to avoid type errors
|
|
66
|
+
websocket.addEventListener("error", handleError);
|
|
58
67
|
const pingTimeoutListener = createPingTimeoutListener(expectPings, pingTimeout, () => {
|
|
59
|
-
|
|
68
|
+
handleClose();
|
|
60
69
|
logger.warn("Ping timeout from peer", {
|
|
61
70
|
peerId: id,
|
|
62
71
|
peerRole: role,
|
|
63
72
|
});
|
|
64
|
-
emitClosedEvent();
|
|
65
73
|
});
|
|
66
74
|
const outgoing = new BatchedOutgoingMessages(websocket, batchingByDefault, role, meta, meter);
|
|
67
75
|
let isFirstMessage = true;
|
|
@@ -97,9 +105,7 @@ export function createWebSocketPeer({ id, websocket, role, expectPings = true, b
|
|
|
97
105
|
}
|
|
98
106
|
websocket.addEventListener("message", handleIncomingMsg);
|
|
99
107
|
outgoing.onClose(() => {
|
|
100
|
-
|
|
101
|
-
websocket.removeEventListener("close", handleClose);
|
|
102
|
-
pingTimeoutListener.clear();
|
|
108
|
+
cleanup();
|
|
103
109
|
emitClosedEvent();
|
|
104
110
|
if (websocket.readyState === 0) {
|
|
105
111
|
websocket.addEventListener("open", function handleClose() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWebSocketPeer.js","sourceRoot":"","sources":["../src/createWebSocketPeer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAa,eAAe,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAG,eAAe,CAAC;AAmBxE,SAAS,yBAAyB,CAChC,OAAgB,EAChB,OAAe,EACf,QAAoB;IAEpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,KAAK,KAAI,CAAC;YACV,KAAK,KAAI,CAAC;SACX,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,GAAyC,IAAI,CAAC;IAE7D,OAAO;QACL,KAAK;YACH,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;YACzC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,QAAQ,EAAE,CAAC;YACb,CAAC,EAAE,OAAO,CAAC,CAAC;QACd,CAAC;QACD,KAAK;YACH,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC;IACnD,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,OAAO,GAAG,EAAE;QACV,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAClC,EAAE,EACF,SAAS,EACT,IAAI,EACJ,WAAW,GAAG,IAAI,EAClB,iBAAiB,GAAG,IAAI,EACxB,sBAAsB,GAAG,KAAK,EAC9B,WAAW,GAAG,KAAM,EACpB,SAAS,EACT,OAAO,EACP,KAAK,EACL,IAAI,GACoB;IACxB,MAAM,mBAAmB,GAAG,CAC1B,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CACjD,CAAC,aAAa,CAAC,oBAAoB,EAAE;QACpC,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,SAAS,CAAC,GAAG;KACzB,CAAC,CAAC;IAEH,qCAAqC;IACrC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC5C,MAAM,eAAe,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAE1D,SAAS,
|
|
1
|
+
{"version":3,"file":"createWebSocketPeer.js","sourceRoot":"","sources":["../src/createWebSocketPeer.ts"],"names":[],"mappings":"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"}
|
package/dist/serialization.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type SyncMessage } from "cojson";
|
|
2
2
|
import type { PingMsg } from "./types.js";
|
|
3
3
|
export declare function getErrorMessage(error: unknown): string;
|
|
4
|
-
export declare function addMessageToBacklog(backlog: string, message: SyncMessage): string;
|
|
5
4
|
export declare function deserializeMessages(messages: unknown): {
|
|
6
5
|
readonly ok: true;
|
|
7
6
|
readonly messages: SyncMessage[] | PingMsg[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,UAE7C;AAED,wBAAgB,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,UAE7C;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO;;uBAY3C,WAAW,EAAE,GACb,OAAO,EAAE;;;;;;EASlB"}
|
package/dist/serialization.js
CHANGED
|
@@ -2,12 +2,6 @@ import { logger } from "cojson";
|
|
|
2
2
|
export function getErrorMessage(error) {
|
|
3
3
|
return error instanceof Error ? error.message : "Unknown error";
|
|
4
4
|
}
|
|
5
|
-
export function addMessageToBacklog(backlog, message) {
|
|
6
|
-
if (!backlog) {
|
|
7
|
-
return JSON.stringify(message);
|
|
8
|
-
}
|
|
9
|
-
return `${backlog}\n${JSON.stringify(message)}`;
|
|
10
|
-
}
|
|
11
5
|
export function deserializeMessages(messages) {
|
|
12
6
|
if (typeof messages !== "string") {
|
|
13
7
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGlD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGlD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,IAAI,KAAK,CAAC,mBAAmB,CAAC;SAC7B,CAAC;IACb,CAAC;IAED,IAAI,CAAC;QACH,OAAO;YACL,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAE9C;SACL,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,CAAC;SACA,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { cojsonInternals } from "cojson";
|
|
2
2
|
import { afterEach, describe, expect, test, vi } from "vitest";
|
|
3
|
-
import { MAX_OUTGOING_MESSAGES_CHUNK_BYTES } from "../BatchedOutgoingMessages.js";
|
|
4
3
|
import { createWebSocketPeer, } from "../createWebSocketPeer.js";
|
|
5
4
|
import { BUFFER_LIMIT, BUFFER_LIMIT_POLLING_INTERVAL } from "../utils.js";
|
|
6
5
|
import { createTestMetricReader, tearDownTestMetricReader } from "./utils.js";
|
|
7
|
-
const { CO_VALUE_PRIORITY } = cojsonInternals;
|
|
6
|
+
const { CO_VALUE_PRIORITY, WEBSOCKET_CONFIG, setOutgoingMessagesChunkDelay } = cojsonInternals;
|
|
7
|
+
const { MAX_OUTGOING_MESSAGES_CHUNK_BYTES } = WEBSOCKET_CONFIG;
|
|
8
8
|
function setup(opts = {}) {
|
|
9
9
|
const listeners = new Map();
|
|
10
10
|
const mockWebSocket = {
|
|
@@ -30,6 +30,9 @@ function setup(opts = {}) {
|
|
|
30
30
|
function serializeMessages(messages) {
|
|
31
31
|
return messages.map((msg) => JSON.stringify(msg)).join("\n");
|
|
32
32
|
}
|
|
33
|
+
afterEach(() => {
|
|
34
|
+
setOutgoingMessagesChunkDelay(5);
|
|
35
|
+
});
|
|
33
36
|
describe("createWebSocketPeer", () => {
|
|
34
37
|
test("should create a peer with correct properties", () => {
|
|
35
38
|
const { peer } = setup();
|
|
@@ -419,6 +422,71 @@ describe("createWebSocketPeer", () => {
|
|
|
419
422
|
label: "value",
|
|
420
423
|
})).toBe(encryptedChanges.length + trustingChanges.length);
|
|
421
424
|
});
|
|
425
|
+
test("should drain the outgoing queue on websocket close so pulled equals pushed", async () => {
|
|
426
|
+
setOutgoingMessagesChunkDelay(500);
|
|
427
|
+
const metricReader = createTestMetricReader();
|
|
428
|
+
const { peer, listeners } = setup();
|
|
429
|
+
const high = {
|
|
430
|
+
action: "content",
|
|
431
|
+
id: "co_zhigh",
|
|
432
|
+
new: {},
|
|
433
|
+
priority: CO_VALUE_PRIORITY.HIGH,
|
|
434
|
+
};
|
|
435
|
+
const medium = {
|
|
436
|
+
action: "content",
|
|
437
|
+
id: "co_zmedium",
|
|
438
|
+
new: {},
|
|
439
|
+
priority: CO_VALUE_PRIORITY.MEDIUM,
|
|
440
|
+
};
|
|
441
|
+
const low = {
|
|
442
|
+
action: "content",
|
|
443
|
+
id: "co_zlow",
|
|
444
|
+
new: {},
|
|
445
|
+
priority: CO_VALUE_PRIORITY.LOW,
|
|
446
|
+
};
|
|
447
|
+
peer.outgoing.push(high);
|
|
448
|
+
peer.outgoing.push(medium);
|
|
449
|
+
peer.outgoing.push(low);
|
|
450
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pushed", {
|
|
451
|
+
priority: CO_VALUE_PRIORITY.HIGH,
|
|
452
|
+
peerRole: "client",
|
|
453
|
+
})).toBe(1);
|
|
454
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pushed", {
|
|
455
|
+
priority: CO_VALUE_PRIORITY.MEDIUM,
|
|
456
|
+
peerRole: "client",
|
|
457
|
+
})).toBe(1);
|
|
458
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pushed", {
|
|
459
|
+
priority: CO_VALUE_PRIORITY.LOW,
|
|
460
|
+
peerRole: "client",
|
|
461
|
+
})).toBe(1);
|
|
462
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
463
|
+
priority: CO_VALUE_PRIORITY.HIGH,
|
|
464
|
+
peerRole: "client",
|
|
465
|
+
})).toBe(0);
|
|
466
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
467
|
+
priority: CO_VALUE_PRIORITY.MEDIUM,
|
|
468
|
+
peerRole: "client",
|
|
469
|
+
})).toBe(0);
|
|
470
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
471
|
+
priority: CO_VALUE_PRIORITY.LOW,
|
|
472
|
+
peerRole: "client",
|
|
473
|
+
})).toBe(0);
|
|
474
|
+
const closeHandler = listeners.get("close");
|
|
475
|
+
closeHandler?.(new MessageEvent("close"));
|
|
476
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
477
|
+
priority: CO_VALUE_PRIORITY.HIGH,
|
|
478
|
+
peerRole: "client",
|
|
479
|
+
})).toBe(1);
|
|
480
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
481
|
+
priority: CO_VALUE_PRIORITY.MEDIUM,
|
|
482
|
+
peerRole: "client",
|
|
483
|
+
})).toBe(1);
|
|
484
|
+
expect(await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
485
|
+
priority: CO_VALUE_PRIORITY.LOW,
|
|
486
|
+
peerRole: "client",
|
|
487
|
+
})).toBe(1);
|
|
488
|
+
vi.useRealTimers();
|
|
489
|
+
});
|
|
422
490
|
});
|
|
423
491
|
});
|
|
424
492
|
// biome-ignore lint/suspicious/noConfusingVoidType: Test helper
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWebSocketPeer.test.js","sourceRoot":"","sources":["../../src/tests/createWebSocketPeer.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createWebSocketPeer.test.js","sourceRoot":"","sources":["../../src/tests/createWebSocketPeer.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAe,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAEL,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,GAC1E,eAAe,CAAC;AAElB,MAAM,EAAE,iCAAiC,EAAE,GAAG,gBAAgB,CAAC;AAE/D,SAAS,KAAK,CAAC,OAAyC,EAAE;IACxD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyC,CAAC;IAEnE,MAAM,aAAa,GAAG;QACpB,UAAU,EAAE,CAAC;QACb,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;YAC9D,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC;QACF,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE;YACvD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;KACqB,CAAC;IAErC,MAAM,IAAI,GAAG,mBAAmB,CAAC;QAC/B,EAAE,EAAE,WAAW;QACf,SAAS,EAAE,aAAa;QACxB,IAAI,EAAE,QAAQ;QACd,iBAAiB,EAAE,IAAI;QACvB,GAAG,IAAI;KACR,CAAC,CAAC;IAEH,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAuB;IAChD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,CAAC,GAAG,EAAE;IACb,6BAA6B,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACxD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QAEzB,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEtC,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE5C,YAAY,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAE1C,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC5C,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEtC,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEhD,cAAc,EAAE,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE9D,MAAM,EAAE,CAAC,wBAAwB,CAAC,KAAM,CAAC,CAAC;QAE1C,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAE1D,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;QAExC,MAAM,WAAW,GAAgB;YAC/B,MAAM,EAAE,OAAO;YACf,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhC,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC7C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;QAExC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE;YACzC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAgB;YAC5B,MAAM,EAAE,OAAO;YACf,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,MAAM,QAAQ,GAAgB;YAC5B,MAAM,EAAE,SAAS;YACjB,EAAE,EAAE,SAAS;YACb,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,CAAC;SACZ,CAAC;QAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE1E,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAE/D,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QAExC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACvE,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAE3C,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,OAAO,GAAgB;YAC3B,MAAM,EAAE,OAAO;YACf,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,yCAAyC;QACzC,cAAc,EAAE,CACd,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAC/D,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAE3C,yDAAyD;QACzD,cAAc,EAAE,CACd,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAC/D,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;YAExC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACzC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC7C,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;YAExC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACzC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,iBAAiB,CAAC,GAAG;aAChC,CAAC;YAEF,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,UAAU;gBACd,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,iBAAiB,CAAC,IAAI;aACjC,CAAC;YAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC7C,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;iBAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBACjC,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;YAExC,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEtB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC7C,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;YAExC,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACb,CAAC;YACF,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,MAAM,MAAM,GAAkB,EAAE,CAAC;YAEjC,OACE,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBACjD,iCAAiC,EACjC,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAED,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC7C,iBAAiB,CAAC,MAAM,CAAC,CAC1B,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAChD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;YAExC,MAAM,YAAY,GAAgB;gBAChC,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,YAAY;gBAChB,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACb,CAAC;YACF,MAAM,YAAY,GAAgB;gBAChC,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,YAAY;gBAChB,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE;oBACR,kEAAkE;oBAClE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,iCAAiC,CAAC;iBACF;aACvD,CAAC;YAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEtC,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAChD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAC7B,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAChD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;YAClG,EAAE,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;YAExC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACzC,aAAa,CAAC,cAAc,GAAG,YAAY,GAAG,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACb,CAAC;YACF,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,MAAM,MAAM,GAAkB,EAAE,CAAC;YAEjC,OACE,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBACjD,iCAAiC,EACjC,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAED,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAEvC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC7C,iBAAiB,CAAC,MAAM,CAAC,CAC1B,CAAC;YAEF,aAAa,CAAC,cAAc,GAAG,CAAC,CAAC;YAEjC,MAAM,EAAE,CAAC,wBAAwB,CAAC,6BAA6B,GAAG,CAAC,CAAC,CAAC;YAErE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAChD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;YAEF,EAAE,CAAC,aAAa,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;YAEpE,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAChD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAChD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;gBAC/C,iBAAiB,EAAE,KAAK;aACzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEhD,cAAc,EAAE,CACd,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;qBAC5C,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;qBACjC,IAAI,CAAC,IAAI,CAAC;aACd,CAAC,CACH,CAAC;YAEF,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAC7C,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;YAChG,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;gBAC/C,iBAAiB,EAAE,KAAK;aACzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,OAAO;gBACf,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEhD,cAAc,EAAE,CACd,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;aAC/B,CAAC,CACH,CAAC;YAEF,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,OAAO,CAAC,GAAG,EAAE;gBACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAChD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAChD,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,SAAS,CAAC,GAAG,EAAE;YACb,wBAAwB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;YAC9C,KAAK,CAAC;gBACJ,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aACvB,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,cAAc,CACvD,oBAAoB,EACpB;gBACE,IAAI,EAAE,MAAM;aACb,CACF,CAAC;YACF,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;YAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;gBAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;aACzB,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,gBAAgB,GAAG,eAAe,CAAC;YACzC,cAAc,EAAE,CACd,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,SAAS;oBACjB,GAAG,EAAE;wBACH,aAAa,EAAE;4BACb,KAAK,EAAE,CAAC;4BACR,eAAe,EAAE;gCACf;oCACE,OAAO,EAAE,SAAkB;oCAC3B,MAAM,EAAE,CAAC;oCACT,OAAO,EAAE,UAAmB;oCAC5B,gBAAgB;iCACjB;6BACF;yBACF;qBACF;iBACF,CAAC;aACH,CAAC,CACH,CAAC;YAEF,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,oBAAoB,EAAE;gBACtD,KAAK,EAAE,OAAO;aACf,CAAC,CACH,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEhC,MAAM,eAAe,GAAG,gBAAgB,CAAC;YACzC,cAAc,EAAE,CACd,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,SAAS;oBACjB,GAAG,EAAE;wBACH,aAAa,EAAE;4BACb,eAAe,EAAE;gCACf;oCACE,OAAO,EAAE,UAAU;oCACnB,OAAO,EAAE,eAAe;iCACzB;6BACF;yBACF;qBACF;iBACF,CAAC;aACH,CAAC,CACH,CAAC;YAEF,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,oBAAoB,EAAE;gBACtD,KAAK,EAAE,OAAO;aACf,CAAC,CACH,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC5F,6BAA6B,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;YAC9C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;YAEpC,MAAM,IAAI,GAAgB;gBACxB,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,UAAU;gBACd,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,iBAAiB,CAAC,IAAI;aACjC,CAAC;YACF,MAAM,MAAM,GAAgB;gBAC1B,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,YAAY;gBAChB,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,iBAAiB,CAAC,MAAM;aACnC,CAAC;YACF,MAAM,GAAG,GAAgB;gBACvB,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,SAAS;gBACb,GAAG,EAAE,EAAE;gBACP,QAAQ,EAAE,iBAAiB,CAAC,GAAG;aAChC,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAExB,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,IAAI;gBAChC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,MAAM;gBAClC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,GAAG;gBAC/B,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEV,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,IAAI;gBAChC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,MAAM;gBAClC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,GAAG;gBAC/B,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEV,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,YAAY,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAE1C,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,IAAI;gBAChC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,MAAM;gBAClC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CACJ,MAAM,YAAY,CAAC,cAAc,CAAC,mCAAmC,EAAE;gBACrE,QAAQ,EAAE,iBAAiB,CAAC,GAAG;gBAC/B,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEV,EAAE,CAAC,aAAa,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gEAAgE;AAChE,SAAS,OAAO,CAAC,QAA8B;IAC7C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;YAEpC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;gBACjB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC;gBACnB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EACb,MAAM,4BAA4B,CAAC;AAIpC,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,OAAO,GAAG,IAAI,iBA0BrD;AAED;;;;;;GAMG;AACH,cAAM,gBAAiB,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAEf;IAEF,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAGrC,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAO;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EACb,MAAM,4BAA4B,CAAC;AAIpC,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,OAAO,GAAG,IAAI,iBA0BrD;AAED;;;;;;GAMG;AACH,cAAM,gBAAiB,SAAQ,YAAY;IACzC,OAAO,CAAC,SAAS,CAEf;IAEF,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAGrC,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAO;IAmB/C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAYxC;AAED,wBAAgB,sBAAsB,qBAWrC;AAED,wBAAgB,wBAAwB,SAEvC"}
|
package/dist/tests/utils.js
CHANGED
|
@@ -46,9 +46,11 @@ class TestMetricReader extends MetricReader {
|
|
|
46
46
|
}
|
|
47
47
|
async getMetricValue(name, attributes = {}) {
|
|
48
48
|
await this.collectAndExport();
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
const resourceMetrics = this._exporter.getMetrics();
|
|
50
|
+
const metric = resourceMetrics
|
|
51
|
+
.flatMap((rm) => rm.scopeMetrics)
|
|
52
|
+
.flatMap((sm) => sm.metrics)
|
|
53
|
+
.find((m) => m.descriptor.name === name);
|
|
52
54
|
const dp = metric?.dataPoints.find((dp) => JSON.stringify(dp.attributes) === JSON.stringify(attributes));
|
|
53
55
|
this._exporter.reset();
|
|
54
56
|
return dp?.value;
|
package/dist/tests/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,gEAAgE;AAChE,MAAM,UAAU,OAAO,CAAC,QAA8B;IACpD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,CAAC;YAEpC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;gBACjB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC;gBACnB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,gBAAiB,SAAQ,YAAY;IAA3C;;QACU,cAAS,GAAG,IAAI,sBAAsB,CAC5C,sBAAsB,CAAC,UAAU,CAClC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tests/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cojson-transport-ws",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.19.
|
|
4
|
+
"version": "0.19.20",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@opentelemetry/api": "^1.9.0",
|
|
10
|
-
"cojson": "0.19.
|
|
10
|
+
"cojson": "0.19.20"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"@opentelemetry/sdk-metrics": "^2.0.0",
|
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
cojsonInternals,
|
|
8
8
|
logger,
|
|
9
9
|
} from "cojson";
|
|
10
|
-
import { addMessageToBacklog } from "./serialization.js";
|
|
11
10
|
import type { AnyWebSocket } from "./types.js";
|
|
12
11
|
import {
|
|
13
12
|
hasWebSocketTooMuchBufferedData,
|
|
@@ -16,9 +15,8 @@ import {
|
|
|
16
15
|
waitForWebSocketOpen,
|
|
17
16
|
} from "./utils.js";
|
|
18
17
|
|
|
19
|
-
const { CO_VALUE_PRIORITY, getContentMessageSize } =
|
|
20
|
-
|
|
21
|
-
export const MAX_OUTGOING_MESSAGES_CHUNK_BYTES = 25_000;
|
|
18
|
+
const { CO_VALUE_PRIORITY, getContentMessageSize, WEBSOCKET_CONFIG } =
|
|
19
|
+
cojsonInternals;
|
|
22
20
|
|
|
23
21
|
export class BatchedOutgoingMessages
|
|
24
22
|
implements CojsonInternalTypes.OutgoingPeerChannel
|
|
@@ -83,7 +81,9 @@ export class BatchedOutgoingMessages
|
|
|
83
81
|
|
|
84
82
|
// Delay the initiation of the queue processing to accumulate messages
|
|
85
83
|
// before sending them, in order to do prioritization and batching
|
|
86
|
-
await new Promise<void>((resolve) =>
|
|
84
|
+
await new Promise<void>((resolve) =>
|
|
85
|
+
setTimeout(resolve, WEBSOCKET_CONFIG.OUTGOING_MESSAGES_CHUNK_DELAY),
|
|
86
|
+
);
|
|
87
87
|
|
|
88
88
|
let msg = this.queue.pull();
|
|
89
89
|
|
|
@@ -116,25 +116,33 @@ export class BatchedOutgoingMessages
|
|
|
116
116
|
this.egressBytesCounter.add(getContentMessageSize(msg), this.meta);
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
+
const stringifiedMsg = JSON.stringify(msg);
|
|
120
|
+
|
|
119
121
|
if (!this.batching) {
|
|
120
|
-
this.websocket.send(
|
|
122
|
+
this.websocket.send(stringifiedMsg);
|
|
121
123
|
return;
|
|
122
124
|
}
|
|
123
125
|
|
|
124
|
-
const
|
|
126
|
+
const msgSize = stringifiedMsg.length;
|
|
127
|
+
const newBacklogSize = this.backlog.length + msgSize;
|
|
125
128
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.sendMessagesInBulk();
|
|
132
|
-
this.backlog = addMessageToBacklog("", msg);
|
|
133
|
-
} else if (maxChunkSizeReached) {
|
|
134
|
-
this.backlog = payload;
|
|
129
|
+
// If backlog+message exceeds the chunk size, send the backlog and reset it
|
|
130
|
+
if (
|
|
131
|
+
this.backlog.length > 0 &&
|
|
132
|
+
newBacklogSize > WEBSOCKET_CONFIG.MAX_OUTGOING_MESSAGES_CHUNK_BYTES
|
|
133
|
+
) {
|
|
135
134
|
this.sendMessagesInBulk();
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (this.backlog.length > 0) {
|
|
138
|
+
this.backlog += `\n${stringifiedMsg}`;
|
|
136
139
|
} else {
|
|
137
|
-
this.backlog =
|
|
140
|
+
this.backlog = stringifiedMsg;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// If message itself exceeds the chunk size, send it immediately
|
|
144
|
+
if (msgSize >= WEBSOCKET_CONFIG.MAX_OUTGOING_MESSAGES_CHUNK_BYTES) {
|
|
145
|
+
this.sendMessagesInBulk();
|
|
138
146
|
}
|
|
139
147
|
}
|
|
140
148
|
|
|
@@ -145,6 +153,10 @@ export class BatchedOutgoingMessages
|
|
|
145
153
|
}
|
|
146
154
|
}
|
|
147
155
|
|
|
156
|
+
drain() {
|
|
157
|
+
while (this.queue.pull()) {}
|
|
158
|
+
}
|
|
159
|
+
|
|
148
160
|
setBatching(enabled: boolean) {
|
|
149
161
|
this.batching = enabled;
|
|
150
162
|
}
|
|
@@ -87,32 +87,42 @@ export function createWebSocketPeer({
|
|
|
87
87
|
const incoming = new ConnectedPeerChannel();
|
|
88
88
|
const emitClosedEvent = createClosedEventEmitter(onClose);
|
|
89
89
|
|
|
90
|
+
function cleanup() {
|
|
91
|
+
websocket.removeEventListener("message", handleIncomingMsg);
|
|
92
|
+
websocket.removeEventListener("close", handleClose);
|
|
93
|
+
// Only some WebSocket implementations emit the error event, so we need to do casting to any to avoid type errors
|
|
94
|
+
websocket.removeEventListener("error" as any, handleError);
|
|
95
|
+
pingTimeoutListener.clear();
|
|
96
|
+
outgoing.drain();
|
|
97
|
+
}
|
|
98
|
+
|
|
90
99
|
function handleClose() {
|
|
91
100
|
incoming.push("Disconnected");
|
|
92
101
|
emitClosedEvent();
|
|
102
|
+
cleanup();
|
|
93
103
|
}
|
|
94
104
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
// biome-ignore lint/suspicious/noExplicitAny: WebSocket error event type
|
|
98
|
-
websocket.addEventListener("error" as any, (err) => {
|
|
99
|
-
if (err.message) {
|
|
105
|
+
function handleError(err: unknown) {
|
|
106
|
+
if (err instanceof Error && err.message) {
|
|
100
107
|
logger.warn("WebSocket error", { err });
|
|
101
108
|
}
|
|
102
109
|
|
|
103
110
|
handleClose();
|
|
104
|
-
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
websocket.addEventListener("close", handleClose);
|
|
114
|
+
// Only some WebSocket implementations emit the error event, so we need to do casting to any to avoid type errors
|
|
115
|
+
websocket.addEventListener("error" as any, handleError);
|
|
105
116
|
|
|
106
117
|
const pingTimeoutListener = createPingTimeoutListener(
|
|
107
118
|
expectPings,
|
|
108
119
|
pingTimeout,
|
|
109
120
|
() => {
|
|
110
|
-
|
|
121
|
+
handleClose();
|
|
111
122
|
logger.warn("Ping timeout from peer", {
|
|
112
123
|
peerId: id,
|
|
113
124
|
peerRole: role,
|
|
114
125
|
});
|
|
115
|
-
emitClosedEvent();
|
|
116
126
|
},
|
|
117
127
|
);
|
|
118
128
|
|
|
@@ -167,9 +177,7 @@ export function createWebSocketPeer({
|
|
|
167
177
|
websocket.addEventListener("message", handleIncomingMsg);
|
|
168
178
|
|
|
169
179
|
outgoing.onClose(() => {
|
|
170
|
-
|
|
171
|
-
websocket.removeEventListener("close", handleClose);
|
|
172
|
-
pingTimeoutListener.clear();
|
|
180
|
+
cleanup();
|
|
173
181
|
emitClosedEvent();
|
|
174
182
|
|
|
175
183
|
if (websocket.readyState === 0) {
|
package/src/serialization.ts
CHANGED
|
@@ -5,13 +5,6 @@ export function getErrorMessage(error: unknown) {
|
|
|
5
5
|
return error instanceof Error ? error.message : "Unknown error";
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export function addMessageToBacklog(backlog: string, message: SyncMessage) {
|
|
9
|
-
if (!backlog) {
|
|
10
|
-
return JSON.stringify(message);
|
|
11
|
-
}
|
|
12
|
-
return `${backlog}\n${JSON.stringify(message)}`;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
8
|
export function deserializeMessages(messages: unknown) {
|
|
16
9
|
if (typeof messages !== "string") {
|
|
17
10
|
return {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { CojsonInternalTypes, SyncMessage } from "cojson";
|
|
2
2
|
import { cojsonInternals } from "cojson";
|
|
3
3
|
import { type Mocked, afterEach, describe, expect, test, vi } from "vitest";
|
|
4
|
-
import { MAX_OUTGOING_MESSAGES_CHUNK_BYTES } from "../BatchedOutgoingMessages.js";
|
|
5
4
|
import {
|
|
6
5
|
type CreateWebSocketPeerOpts,
|
|
7
6
|
createWebSocketPeer,
|
|
@@ -10,7 +9,10 @@ import type { AnyWebSocket } from "../types.js";
|
|
|
10
9
|
import { BUFFER_LIMIT, BUFFER_LIMIT_POLLING_INTERVAL } from "../utils.js";
|
|
11
10
|
import { createTestMetricReader, tearDownTestMetricReader } from "./utils.js";
|
|
12
11
|
|
|
13
|
-
const { CO_VALUE_PRIORITY } =
|
|
12
|
+
const { CO_VALUE_PRIORITY, WEBSOCKET_CONFIG, setOutgoingMessagesChunkDelay } =
|
|
13
|
+
cojsonInternals;
|
|
14
|
+
|
|
15
|
+
const { MAX_OUTGOING_MESSAGES_CHUNK_BYTES } = WEBSOCKET_CONFIG;
|
|
14
16
|
|
|
15
17
|
function setup(opts: Partial<CreateWebSocketPeerOpts> = {}) {
|
|
16
18
|
const listeners = new Map<string, (event: MessageEvent) => void>();
|
|
@@ -42,6 +44,10 @@ function serializeMessages(messages: SyncMessage[]) {
|
|
|
42
44
|
return messages.map((msg) => JSON.stringify(msg)).join("\n");
|
|
43
45
|
}
|
|
44
46
|
|
|
47
|
+
afterEach(() => {
|
|
48
|
+
setOutgoingMessagesChunkDelay(5);
|
|
49
|
+
});
|
|
50
|
+
|
|
45
51
|
describe("createWebSocketPeer", () => {
|
|
46
52
|
test("should create a peer with correct properties", () => {
|
|
47
53
|
const { peer } = setup();
|
|
@@ -603,6 +609,97 @@ describe("createWebSocketPeer", () => {
|
|
|
603
609
|
}),
|
|
604
610
|
).toBe(encryptedChanges.length + trustingChanges.length);
|
|
605
611
|
});
|
|
612
|
+
|
|
613
|
+
test("should drain the outgoing queue on websocket close so pulled equals pushed", async () => {
|
|
614
|
+
setOutgoingMessagesChunkDelay(500);
|
|
615
|
+
const metricReader = createTestMetricReader();
|
|
616
|
+
const { peer, listeners } = setup();
|
|
617
|
+
|
|
618
|
+
const high: SyncMessage = {
|
|
619
|
+
action: "content",
|
|
620
|
+
id: "co_zhigh",
|
|
621
|
+
new: {},
|
|
622
|
+
priority: CO_VALUE_PRIORITY.HIGH,
|
|
623
|
+
};
|
|
624
|
+
const medium: SyncMessage = {
|
|
625
|
+
action: "content",
|
|
626
|
+
id: "co_zmedium",
|
|
627
|
+
new: {},
|
|
628
|
+
priority: CO_VALUE_PRIORITY.MEDIUM,
|
|
629
|
+
};
|
|
630
|
+
const low: SyncMessage = {
|
|
631
|
+
action: "content",
|
|
632
|
+
id: "co_zlow",
|
|
633
|
+
new: {},
|
|
634
|
+
priority: CO_VALUE_PRIORITY.LOW,
|
|
635
|
+
};
|
|
636
|
+
|
|
637
|
+
peer.outgoing.push(high);
|
|
638
|
+
peer.outgoing.push(medium);
|
|
639
|
+
peer.outgoing.push(low);
|
|
640
|
+
|
|
641
|
+
expect(
|
|
642
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pushed", {
|
|
643
|
+
priority: CO_VALUE_PRIORITY.HIGH,
|
|
644
|
+
peerRole: "client",
|
|
645
|
+
}),
|
|
646
|
+
).toBe(1);
|
|
647
|
+
expect(
|
|
648
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pushed", {
|
|
649
|
+
priority: CO_VALUE_PRIORITY.MEDIUM,
|
|
650
|
+
peerRole: "client",
|
|
651
|
+
}),
|
|
652
|
+
).toBe(1);
|
|
653
|
+
expect(
|
|
654
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pushed", {
|
|
655
|
+
priority: CO_VALUE_PRIORITY.LOW,
|
|
656
|
+
peerRole: "client",
|
|
657
|
+
}),
|
|
658
|
+
).toBe(1);
|
|
659
|
+
|
|
660
|
+
expect(
|
|
661
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
662
|
+
priority: CO_VALUE_PRIORITY.HIGH,
|
|
663
|
+
peerRole: "client",
|
|
664
|
+
}),
|
|
665
|
+
).toBe(0);
|
|
666
|
+
expect(
|
|
667
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
668
|
+
priority: CO_VALUE_PRIORITY.MEDIUM,
|
|
669
|
+
peerRole: "client",
|
|
670
|
+
}),
|
|
671
|
+
).toBe(0);
|
|
672
|
+
expect(
|
|
673
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
674
|
+
priority: CO_VALUE_PRIORITY.LOW,
|
|
675
|
+
peerRole: "client",
|
|
676
|
+
}),
|
|
677
|
+
).toBe(0);
|
|
678
|
+
|
|
679
|
+
const closeHandler = listeners.get("close");
|
|
680
|
+
closeHandler?.(new MessageEvent("close"));
|
|
681
|
+
|
|
682
|
+
expect(
|
|
683
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
684
|
+
priority: CO_VALUE_PRIORITY.HIGH,
|
|
685
|
+
peerRole: "client",
|
|
686
|
+
}),
|
|
687
|
+
).toBe(1);
|
|
688
|
+
expect(
|
|
689
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
690
|
+
priority: CO_VALUE_PRIORITY.MEDIUM,
|
|
691
|
+
peerRole: "client",
|
|
692
|
+
}),
|
|
693
|
+
).toBe(1);
|
|
694
|
+
expect(
|
|
695
|
+
await metricReader.getMetricValue("jazz.messagequeue.outgoing.pulled", {
|
|
696
|
+
priority: CO_VALUE_PRIORITY.LOW,
|
|
697
|
+
peerRole: "client",
|
|
698
|
+
}),
|
|
699
|
+
).toBe(1);
|
|
700
|
+
|
|
701
|
+
vi.useRealTimers();
|
|
702
|
+
});
|
|
606
703
|
});
|
|
607
704
|
});
|
|
608
705
|
|
package/src/tests/utils.ts
CHANGED
|
@@ -60,9 +60,12 @@ class TestMetricReader extends MetricReader {
|
|
|
60
60
|
attributes: { [key: string]: string | number } = {},
|
|
61
61
|
) {
|
|
62
62
|
await this.collectAndExport();
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
const resourceMetrics = this._exporter.getMetrics();
|
|
64
|
+
|
|
65
|
+
const metric = resourceMetrics
|
|
66
|
+
.flatMap((rm) => rm.scopeMetrics)
|
|
67
|
+
.flatMap((sm) => sm.metrics)
|
|
68
|
+
.find((m) => m.descriptor.name === name);
|
|
66
69
|
|
|
67
70
|
const dp = metric?.dataPoints.find(
|
|
68
71
|
(dp) => JSON.stringify(dp.attributes) === JSON.stringify(attributes),
|