@waku/sds 0.0.8-d637425.0 → 0.0.8
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/CHANGELOG.md +26 -0
- package/bundle/index.js +614 -25
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js.map +1 -1
- package/dist/message_channel/events.d.ts +27 -3
- package/dist/message_channel/events.js +6 -0
- package/dist/message_channel/events.js.map +1 -1
- package/dist/message_channel/index.d.ts +1 -1
- package/dist/message_channel/message.d.ts +17 -13
- package/dist/message_channel/message.js +19 -11
- package/dist/message_channel/message.js.map +1 -1
- package/dist/message_channel/message_channel.d.ts +31 -3
- package/dist/message_channel/message_channel.js +99 -10
- package/dist/message_channel/message_channel.js.map +1 -1
- package/dist/message_channel/repair/buffers.d.ts +106 -0
- package/dist/message_channel/repair/buffers.js +206 -0
- package/dist/message_channel/repair/buffers.js.map +1 -0
- package/dist/message_channel/repair/repair.d.ts +92 -0
- package/dist/message_channel/repair/repair.js +209 -0
- package/dist/message_channel/repair/repair.js.map +1 -0
- package/dist/message_channel/repair/utils.d.ts +40 -0
- package/dist/message_channel/repair/utils.js +61 -0
- package/dist/message_channel/repair/utils.js.map +1 -0
- package/package.json +93 -1
- package/src/index.ts +7 -1
- package/src/message_channel/events.ts +28 -3
- package/src/message_channel/index.ts +1 -1
- package/src/message_channel/message.ts +24 -13
- package/src/message_channel/message_channel.ts +151 -17
- package/src/message_channel/repair/buffers.ts +277 -0
- package/src/message_channel/repair/repair.ts +331 -0
- package/src/message_channel/repair/utils.ts +80 -0
|
@@ -9,8 +9,9 @@ export class Message {
|
|
|
9
9
|
lamportTimestamp;
|
|
10
10
|
bloomFilter;
|
|
11
11
|
content;
|
|
12
|
+
repairRequest;
|
|
12
13
|
retrievalHint;
|
|
13
|
-
constructor(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content,
|
|
14
|
+
constructor(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest = [],
|
|
14
15
|
/**
|
|
15
16
|
* Not encoded, set after it is sent, used to include in follow-up messages
|
|
16
17
|
*/
|
|
@@ -22,6 +23,7 @@ export class Message {
|
|
|
22
23
|
this.lamportTimestamp = lamportTimestamp;
|
|
23
24
|
this.bloomFilter = bloomFilter;
|
|
24
25
|
this.content = content;
|
|
26
|
+
this.repairRequest = repairRequest;
|
|
25
27
|
this.retrievalHint = retrievalHint;
|
|
26
28
|
}
|
|
27
29
|
encode() {
|
|
@@ -29,15 +31,15 @@ export class Message {
|
|
|
29
31
|
}
|
|
30
32
|
static decode(data) {
|
|
31
33
|
try {
|
|
32
|
-
const { messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content } = proto_sds_message.SdsMessage.decode(data);
|
|
34
|
+
const { messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest } = proto_sds_message.SdsMessage.decode(data);
|
|
33
35
|
if (testContentMessage({ lamportTimestamp, content })) {
|
|
34
|
-
return new ContentMessage(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content);
|
|
36
|
+
return new ContentMessage(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest);
|
|
35
37
|
}
|
|
36
38
|
if (testEphemeralMessage({ lamportTimestamp, content })) {
|
|
37
|
-
return new EphemeralMessage(messageId, channelId, senderId, causalHistory, undefined, bloomFilter, content);
|
|
39
|
+
return new EphemeralMessage(messageId, channelId, senderId, causalHistory, undefined, bloomFilter, content, repairRequest);
|
|
38
40
|
}
|
|
39
41
|
if (testSyncMessage({ lamportTimestamp, content })) {
|
|
40
|
-
return new SyncMessage(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, undefined);
|
|
42
|
+
return new SyncMessage(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, undefined, repairRequest);
|
|
41
43
|
}
|
|
42
44
|
log.error("message received was of unknown type", lamportTimestamp, content);
|
|
43
45
|
}
|
|
@@ -55,13 +57,14 @@ export class SyncMessage extends Message {
|
|
|
55
57
|
lamportTimestamp;
|
|
56
58
|
bloomFilter;
|
|
57
59
|
content;
|
|
60
|
+
repairRequest;
|
|
58
61
|
retrievalHint;
|
|
59
|
-
constructor(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content,
|
|
62
|
+
constructor(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest = [],
|
|
60
63
|
/**
|
|
61
64
|
* Not encoded, set after it is sent, used to include in follow-up messages
|
|
62
65
|
*/
|
|
63
66
|
retrievalHint) {
|
|
64
|
-
super(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, retrievalHint);
|
|
67
|
+
super(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest, retrievalHint);
|
|
65
68
|
this.messageId = messageId;
|
|
66
69
|
this.channelId = channelId;
|
|
67
70
|
this.senderId = senderId;
|
|
@@ -69,6 +72,7 @@ export class SyncMessage extends Message {
|
|
|
69
72
|
this.lamportTimestamp = lamportTimestamp;
|
|
70
73
|
this.bloomFilter = bloomFilter;
|
|
71
74
|
this.content = content;
|
|
75
|
+
this.repairRequest = repairRequest;
|
|
72
76
|
this.retrievalHint = retrievalHint;
|
|
73
77
|
}
|
|
74
78
|
}
|
|
@@ -88,8 +92,9 @@ export class EphemeralMessage extends Message {
|
|
|
88
92
|
lamportTimestamp;
|
|
89
93
|
bloomFilter;
|
|
90
94
|
content;
|
|
95
|
+
repairRequest;
|
|
91
96
|
retrievalHint;
|
|
92
|
-
constructor(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content,
|
|
97
|
+
constructor(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest = [],
|
|
93
98
|
/**
|
|
94
99
|
* Not encoded, set after it is sent, used to include in follow-up messages
|
|
95
100
|
*/
|
|
@@ -97,7 +102,7 @@ export class EphemeralMessage extends Message {
|
|
|
97
102
|
if (!content || !content.length) {
|
|
98
103
|
throw Error("Ephemeral Message must have content");
|
|
99
104
|
}
|
|
100
|
-
super(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, retrievalHint);
|
|
105
|
+
super(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest, retrievalHint);
|
|
101
106
|
this.messageId = messageId;
|
|
102
107
|
this.channelId = channelId;
|
|
103
108
|
this.senderId = senderId;
|
|
@@ -105,6 +110,7 @@ export class EphemeralMessage extends Message {
|
|
|
105
110
|
this.lamportTimestamp = lamportTimestamp;
|
|
106
111
|
this.bloomFilter = bloomFilter;
|
|
107
112
|
this.content = content;
|
|
113
|
+
this.repairRequest = repairRequest;
|
|
108
114
|
this.retrievalHint = retrievalHint;
|
|
109
115
|
}
|
|
110
116
|
}
|
|
@@ -125,8 +131,9 @@ export class ContentMessage extends Message {
|
|
|
125
131
|
lamportTimestamp;
|
|
126
132
|
bloomFilter;
|
|
127
133
|
content;
|
|
134
|
+
repairRequest;
|
|
128
135
|
retrievalHint;
|
|
129
|
-
constructor(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content,
|
|
136
|
+
constructor(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest = [],
|
|
130
137
|
/**
|
|
131
138
|
* Not encoded, set after it is sent, used to include in follow-up messages
|
|
132
139
|
*/
|
|
@@ -134,7 +141,7 @@ export class ContentMessage extends Message {
|
|
|
134
141
|
if (!content.length) {
|
|
135
142
|
throw Error("Content Message must have content");
|
|
136
143
|
}
|
|
137
|
-
super(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, retrievalHint);
|
|
144
|
+
super(messageId, channelId, senderId, causalHistory, lamportTimestamp, bloomFilter, content, repairRequest, retrievalHint);
|
|
138
145
|
this.messageId = messageId;
|
|
139
146
|
this.channelId = channelId;
|
|
140
147
|
this.senderId = senderId;
|
|
@@ -142,6 +149,7 @@ export class ContentMessage extends Message {
|
|
|
142
149
|
this.lamportTimestamp = lamportTimestamp;
|
|
143
150
|
this.bloomFilter = bloomFilter;
|
|
144
151
|
this.content = content;
|
|
152
|
+
this.repairRequest = repairRequest;
|
|
145
153
|
this.retrievalHint = retrievalHint;
|
|
146
154
|
}
|
|
147
155
|
// `valueOf` is used by comparison operands such as `<`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/message_channel/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;AAEtC,MAAM,OAAO,OAAO;IAET;IACA;IACA;IACA;IACA;IACA;IACA;IAIA;
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/message_channel/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TypedEventEmitter } from "@libp2p/interface";
|
|
2
2
|
import { MessageChannelEvents } from "./events.js";
|
|
3
|
-
import { ChannelId, ContentMessage, HistoryEntry, Message, MessageId,
|
|
3
|
+
import { ChannelId, ContentMessage, HistoryEntry, Message, MessageId, ParticipantId, SyncMessage } from "./message.js";
|
|
4
|
+
import { RepairConfig } from "./repair/repair.js";
|
|
4
5
|
export declare const DEFAULT_BLOOM_FILTER_OPTIONS: {
|
|
5
6
|
capacity: number;
|
|
6
7
|
errorRate: number;
|
|
@@ -19,11 +20,20 @@ export interface MessageChannelOptions {
|
|
|
19
20
|
* How many possible acks does it take to consider it a definitive ack.
|
|
20
21
|
*/
|
|
21
22
|
possibleAcksThreshold?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Whether to enable SDS-R repair protocol.
|
|
25
|
+
* @default true
|
|
26
|
+
*/
|
|
27
|
+
enableRepair?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* SDS-R repair configuration. Only used if enableRepair is true.
|
|
30
|
+
*/
|
|
31
|
+
repairConfig?: RepairConfig;
|
|
22
32
|
}
|
|
23
33
|
export type ILocalHistory = Pick<Array<ContentMessage>, "some" | "push" | "slice" | "find" | "length" | "findIndex">;
|
|
24
34
|
export declare class MessageChannel extends TypedEventEmitter<MessageChannelEvents> {
|
|
25
35
|
readonly channelId: ChannelId;
|
|
26
|
-
readonly senderId:
|
|
36
|
+
readonly senderId: ParticipantId;
|
|
27
37
|
private lamportTimestamp;
|
|
28
38
|
private filter;
|
|
29
39
|
private outgoingBuffer;
|
|
@@ -34,9 +44,10 @@ export declare class MessageChannel extends TypedEventEmitter<MessageChannelEven
|
|
|
34
44
|
private readonly causalHistorySize;
|
|
35
45
|
private readonly possibleAcksThreshold;
|
|
36
46
|
private readonly timeoutForLostMessagesMs?;
|
|
47
|
+
private readonly repairManager?;
|
|
37
48
|
private tasks;
|
|
38
49
|
private handlers;
|
|
39
|
-
constructor(channelId: ChannelId, senderId:
|
|
50
|
+
constructor(channelId: ChannelId, senderId: ParticipantId, options?: MessageChannelOptions, localHistory?: ILocalHistory);
|
|
40
51
|
static getMessageId(payload: Uint8Array): MessageId;
|
|
41
52
|
/**
|
|
42
53
|
* Processes all queued tasks sequentially to ensure proper message ordering.
|
|
@@ -136,6 +147,14 @@ export declare class MessageChannel extends TypedEventEmitter<MessageChannelEven
|
|
|
136
147
|
unacknowledged: ContentMessage[];
|
|
137
148
|
possiblyAcknowledged: ContentMessage[];
|
|
138
149
|
};
|
|
150
|
+
/**
|
|
151
|
+
* Sweep repair incoming buffer and rebroadcast messages ready for repair.
|
|
152
|
+
* Per SDS-R spec: periodically check for repair responses that are due.
|
|
153
|
+
*
|
|
154
|
+
* @param callback - callback to rebroadcast the message
|
|
155
|
+
* @returns Promise that resolves when all ready repairs have been sent
|
|
156
|
+
*/
|
|
157
|
+
sweepRepairIncomingBuffer(callback?: (message: Message) => Promise<boolean>): Promise<Message[]>;
|
|
139
158
|
/**
|
|
140
159
|
* Send a sync message to the SDS channel.
|
|
141
160
|
*
|
|
@@ -152,6 +171,15 @@ export declare class MessageChannel extends TypedEventEmitter<MessageChannelEven
|
|
|
152
171
|
private safeSendEvent;
|
|
153
172
|
private _pushOutgoingMessage;
|
|
154
173
|
private _pushOutgoingEphemeralMessage;
|
|
174
|
+
/**
|
|
175
|
+
* Check if a message is available (either in localHistory or incomingBuffer)
|
|
176
|
+
* This prevents treating messages as "missing" when they've already been received
|
|
177
|
+
* but are waiting in the incoming buffer for their dependencies.
|
|
178
|
+
*
|
|
179
|
+
* @param messageId - The ID of the message to check
|
|
180
|
+
* @private
|
|
181
|
+
*/
|
|
182
|
+
private isMessageAvailable;
|
|
155
183
|
/**
|
|
156
184
|
* Return true if the message was "delivered"
|
|
157
185
|
*
|
|
@@ -7,10 +7,15 @@ import { Command } from "./command_queue.js";
|
|
|
7
7
|
import { MessageChannelEvent } from "./events.js";
|
|
8
8
|
import { MemLocalHistory } from "./mem_local_history.js";
|
|
9
9
|
import { ContentMessage, EphemeralMessage, isContentMessage, isEphemeralMessage, isSyncMessage, SyncMessage } from "./message.js";
|
|
10
|
+
import { RepairManager } from "./repair/repair.js";
|
|
10
11
|
export const DEFAULT_BLOOM_FILTER_OPTIONS = {
|
|
11
12
|
capacity: 10000,
|
|
12
13
|
errorRate: 0.001
|
|
13
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Maximum number of repair requests to include in a single message
|
|
17
|
+
*/
|
|
18
|
+
const MAX_REPAIR_REQUESTS_PER_MESSAGE = 3;
|
|
14
19
|
const DEFAULT_CAUSAL_HISTORY_SIZE = 200;
|
|
15
20
|
const DEFAULT_POSSIBLE_ACKS_THRESHOLD = 2;
|
|
16
21
|
const log = new Logger("sds:message-channel");
|
|
@@ -27,6 +32,7 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
27
32
|
causalHistorySize;
|
|
28
33
|
possibleAcksThreshold;
|
|
29
34
|
timeoutForLostMessagesMs;
|
|
35
|
+
repairManager;
|
|
30
36
|
tasks = [];
|
|
31
37
|
handlers = {
|
|
32
38
|
[Command.Send]: async (params) => {
|
|
@@ -57,6 +63,12 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
57
63
|
options.possibleAcksThreshold ?? DEFAULT_POSSIBLE_ACKS_THRESHOLD;
|
|
58
64
|
this.timeReceived = new Map();
|
|
59
65
|
this.timeoutForLostMessagesMs = options.timeoutForLostMessagesMs;
|
|
66
|
+
// Only construct RepairManager if repair is enabled (default: true)
|
|
67
|
+
if (options.enableRepair ?? true) {
|
|
68
|
+
this.repairManager = new RepairManager(senderId, options.repairConfig, (event, detail) => {
|
|
69
|
+
this.safeSendEvent(event, { detail });
|
|
70
|
+
});
|
|
71
|
+
}
|
|
60
72
|
}
|
|
61
73
|
static getMessageId(payload) {
|
|
62
74
|
return bytesToHex(sha256(payload));
|
|
@@ -189,7 +201,7 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
189
201
|
sweepIncomingBuffer() {
|
|
190
202
|
const { buffer, missing } = this.incomingBuffer.reduce(({ buffer, missing }, message) => {
|
|
191
203
|
log.info(this.senderId, "sweeping incoming buffer", message.messageId, message.causalHistory.map((ch) => ch.messageId));
|
|
192
|
-
const missingDependencies = message.causalHistory.filter((messageHistoryEntry) => !this.
|
|
204
|
+
const missingDependencies = message.causalHistory.filter((messageHistoryEntry) => !this.isMessageAvailable(messageHistoryEntry.messageId));
|
|
193
205
|
if (missingDependencies.length === 0) {
|
|
194
206
|
if (isContentMessage(message) && this.deliverMessage(message)) {
|
|
195
207
|
this.safeSendEvent(MessageChannelEvent.InMessageDelivered, {
|
|
@@ -245,6 +257,34 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
245
257
|
possiblyAcknowledged: new Array()
|
|
246
258
|
});
|
|
247
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Sweep repair incoming buffer and rebroadcast messages ready for repair.
|
|
262
|
+
* Per SDS-R spec: periodically check for repair responses that are due.
|
|
263
|
+
*
|
|
264
|
+
* @param callback - callback to rebroadcast the message
|
|
265
|
+
* @returns Promise that resolves when all ready repairs have been sent
|
|
266
|
+
*/
|
|
267
|
+
async sweepRepairIncomingBuffer(callback) {
|
|
268
|
+
const repairsToSend = this.repairManager?.sweepIncomingBuffer(this.localHistory) ?? [];
|
|
269
|
+
if (callback) {
|
|
270
|
+
for (const message of repairsToSend) {
|
|
271
|
+
try {
|
|
272
|
+
await callback(message);
|
|
273
|
+
log.info(this.senderId, "repair message rebroadcast", message.messageId);
|
|
274
|
+
// Emit RepairResponseSent event
|
|
275
|
+
this.safeSendEvent(MessageChannelEvent.RepairResponseSent, {
|
|
276
|
+
detail: {
|
|
277
|
+
messageId: message.messageId
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
log.error("Failed to rebroadcast repair message:", error);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return repairsToSend;
|
|
287
|
+
}
|
|
248
288
|
/**
|
|
249
289
|
* Send a sync message to the SDS channel.
|
|
250
290
|
*
|
|
@@ -257,15 +297,19 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
257
297
|
*/
|
|
258
298
|
async pushOutgoingSyncMessage(callback) {
|
|
259
299
|
this.lamportTimestamp = lamportTimestampIncrement(this.lamportTimestamp);
|
|
300
|
+
// Get repair requests to include in sync message (SDS-R)
|
|
301
|
+
const repairRequests = this.repairManager?.getRepairRequests(MAX_REPAIR_REQUESTS_PER_MESSAGE) ??
|
|
302
|
+
[];
|
|
260
303
|
const message = new SyncMessage(
|
|
261
304
|
// does not need to be secure randomness
|
|
262
305
|
`sync-${Math.random().toString(36).substring(2)}`, this.channelId, this.senderId, this.localHistory
|
|
263
306
|
.slice(-this.causalHistorySize)
|
|
264
|
-
.map(({ messageId, retrievalHint }) => {
|
|
265
|
-
return { messageId, retrievalHint };
|
|
266
|
-
}), this.lamportTimestamp, this.filter.toBytes(), undefined);
|
|
267
|
-
if (!message.causalHistory || message.causalHistory.length === 0)
|
|
268
|
-
|
|
307
|
+
.map(({ messageId, retrievalHint, senderId }) => {
|
|
308
|
+
return { messageId, retrievalHint, senderId };
|
|
309
|
+
}), this.lamportTimestamp, this.filter.toBytes(), undefined, repairRequests);
|
|
310
|
+
if ((!message.causalHistory || message.causalHistory.length === 0) &&
|
|
311
|
+
repairRequests.length === 0) {
|
|
312
|
+
log.info(this.senderId, "no causal history and no repair requests in sync message, aborting sending");
|
|
269
313
|
return false;
|
|
270
314
|
}
|
|
271
315
|
if (callback) {
|
|
@@ -275,6 +319,15 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
275
319
|
this.safeSendEvent(MessageChannelEvent.OutSyncSent, {
|
|
276
320
|
detail: message
|
|
277
321
|
});
|
|
322
|
+
// Emit RepairRequestSent event if repair requests were included
|
|
323
|
+
if (repairRequests.length > 0) {
|
|
324
|
+
this.safeSendEvent(MessageChannelEvent.RepairRequestSent, {
|
|
325
|
+
detail: {
|
|
326
|
+
messageIds: repairRequests.map((r) => r.messageId),
|
|
327
|
+
carrierMessageId: message.messageId
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
}
|
|
278
331
|
return true;
|
|
279
332
|
}
|
|
280
333
|
catch (error) {
|
|
@@ -322,15 +375,30 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
322
375
|
detail: message
|
|
323
376
|
});
|
|
324
377
|
}
|
|
378
|
+
// SDS-R: Handle received message in repair manager
|
|
379
|
+
this.repairManager?.markMessageReceived(message.messageId);
|
|
380
|
+
// SDS-R: Process incoming repair requests
|
|
381
|
+
if (message.repairRequest && message.repairRequest.length > 0) {
|
|
382
|
+
// Emit RepairRequestReceived event
|
|
383
|
+
this.safeSendEvent(MessageChannelEvent.RepairRequestReceived, {
|
|
384
|
+
detail: {
|
|
385
|
+
messageIds: message.repairRequest.map((r) => r.messageId),
|
|
386
|
+
fromSenderId: message.senderId
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
this.repairManager?.processIncomingRepairRequests(message.repairRequest, this.localHistory);
|
|
390
|
+
}
|
|
325
391
|
this.reviewAckStatus(message);
|
|
326
392
|
if (isContentMessage(message)) {
|
|
327
393
|
this.filter.insert(message.messageId);
|
|
328
394
|
}
|
|
329
|
-
const missingDependencies = message.causalHistory.filter((messageHistoryEntry) => !this.
|
|
395
|
+
const missingDependencies = message.causalHistory.filter((messageHistoryEntry) => !this.isMessageAvailable(messageHistoryEntry.messageId));
|
|
330
396
|
if (missingDependencies.length > 0) {
|
|
331
397
|
this.incomingBuffer.push(message);
|
|
332
398
|
this.timeReceived.set(message.messageId, Date.now());
|
|
333
399
|
log.info(this.senderId, "new incoming message", message.messageId, "is missing dependencies", missingDependencies.map((ch) => ch.messageId));
|
|
400
|
+
// SDS-R: Track missing dependencies in repair manager
|
|
401
|
+
this.repairManager?.markDependenciesMissing(missingDependencies);
|
|
334
402
|
this.safeSendEvent(MessageChannelEvent.InMessageMissing, {
|
|
335
403
|
detail: Array.from(missingDependencies)
|
|
336
404
|
});
|
|
@@ -376,11 +444,13 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
376
444
|
// It's a new message
|
|
377
445
|
if (!message) {
|
|
378
446
|
log.info(this.senderId, "sending new message", messageId);
|
|
447
|
+
// Get repair requests to include in the message (SDS-R)
|
|
448
|
+
const repairRequests = this.repairManager?.getRepairRequests(MAX_REPAIR_REQUESTS_PER_MESSAGE) ?? [];
|
|
379
449
|
message = new ContentMessage(messageId, this.channelId, this.senderId, this.localHistory
|
|
380
450
|
.slice(-this.causalHistorySize)
|
|
381
|
-
.map(({ messageId, retrievalHint }) => {
|
|
382
|
-
return { messageId, retrievalHint };
|
|
383
|
-
}), this.lamportTimestamp, this.filter.toBytes(), payload);
|
|
451
|
+
.map(({ messageId, retrievalHint, senderId }) => {
|
|
452
|
+
return { messageId, retrievalHint, senderId };
|
|
453
|
+
}), this.lamportTimestamp, this.filter.toBytes(), payload, repairRequests);
|
|
384
454
|
this.outgoingBuffer.push(message);
|
|
385
455
|
}
|
|
386
456
|
else {
|
|
@@ -419,6 +489,25 @@ export class MessageChannel extends TypedEventEmitter {
|
|
|
419
489
|
}
|
|
420
490
|
}
|
|
421
491
|
}
|
|
492
|
+
/**
|
|
493
|
+
* Check if a message is available (either in localHistory or incomingBuffer)
|
|
494
|
+
* This prevents treating messages as "missing" when they've already been received
|
|
495
|
+
* but are waiting in the incoming buffer for their dependencies.
|
|
496
|
+
*
|
|
497
|
+
* @param messageId - The ID of the message to check
|
|
498
|
+
* @private
|
|
499
|
+
*/
|
|
500
|
+
isMessageAvailable(messageId) {
|
|
501
|
+
// Check if in local history
|
|
502
|
+
if (this.localHistory.some((m) => m.messageId === messageId)) {
|
|
503
|
+
return true;
|
|
504
|
+
}
|
|
505
|
+
// Check if in incoming buffer (already received, waiting for dependencies)
|
|
506
|
+
if (this.incomingBuffer.some((m) => m.messageId === messageId)) {
|
|
507
|
+
return true;
|
|
508
|
+
}
|
|
509
|
+
return false;
|
|
510
|
+
}
|
|
422
511
|
/**
|
|
423
512
|
* Return true if the message was "delivered"
|
|
424
513
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message_channel.js","sourceRoot":"","sources":["../../src/message_channel/message_channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAwB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAEL,cAAc,EACd,gBAAgB,EAEhB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EAIb,WAAW,EACZ,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAE1C,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAuB9C,MAAM,OAAO,cAAe,SAAQ,iBAAuC;IACzD,SAAS,CAAY;IACrB,QAAQ,CAAW;IAC3B,gBAAgB,CAAS;IACzB,MAAM,CAAqB;IAC3B,cAAc,CAAmB;IACjC,YAAY,CAAyB;IACrC,cAAc,CAAsC;IAC3C,YAAY,CAAgB;IACrC,YAAY,CAAyB;IAC5B,iBAAiB,CAAS;IAC1B,qBAAqB,CAAS;IAC9B,wBAAwB,CAAU;IAE3C,KAAK,GAAW,EAAE,CAAC;IACnB,QAAQ,GAAa;QAC3B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EACnB,MAAoC,EACrB,EAAE;YACjB,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;QACD,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EACtB,MAAuC,EACxB,EAAE;YACjB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAC5B,MAA6C,EAC9B,EAAE;YACjB,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC;IAEF,YACE,SAAoB,EACpB,QAAkB,EAClB,UAAiC,EAAE,EACnC,eAA8B,IAAI,eAAe,EAAE;QAEnD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,wEAAwE;QACxE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB;YACpB,OAAO,CAAC,iBAAiB,IAAI,2BAA2B,CAAC;QAC3D,4FAA4F;QAC5F,IAAI,CAAC,qBAAqB;YACxB,OAAO,CAAC,qBAAqB,IAAI,+BAA+B,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,OAAmB;QAC5C,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,KAAK,CAAC,YAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,mBAAmB,CACxB,OAAmB,EACnB,QAGE;QAEF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,MAAM,EAAE;gBACN,OAAO;gBACP,QAAQ;aACT;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,4BAA4B,CACvC,OAAmB,EACnB,QAA0D;QAE1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,aAAa;YAC9B,MAAM,EAAE;gBACN,OAAO;gBACP,QAAQ;aACT;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,mBAAmB,CACxB,OAAgB,EAChB,aAAqC;QAErC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QAEtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE;gBACN,OAAO;aACR;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,mBAAmB;QACxB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAIpD,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;YAC/B,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,0BAA0B,EAC1B,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAChD,CAAC;YACF,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CACtD,CAAC,mBAAmB,EAAE,EAAE,CACtB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CACrB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,mBAAmB,CAAC,SAAS,CAC/D,CACJ,CAAC;YACF,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9D,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;wBACzD,MAAM,EAAE,OAAO,CAAC,SAAS;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC7B,CAAC;YACD,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,8BAA8B,EAC9B,OAAO,CAAC,SAAS,EACjB,yBAAyB,EACzB,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE;gBACvD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;YACtC,CAAC,CAAC,CACH,CAAC;YAEF,uFAAuF;YACvF,iHAAiH;YACjH,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC9D,IACE,YAAY;oBACZ,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC,wBAAwB,EACzD,CAAC;oBACD,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,aAAa,EAAE;wBACpD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;qBACxC,CAAC,CAAC;oBACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACzC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC9B,OAAO;aACR,CAAC;QACJ,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,KAAK,EAAkB,EAAE,OAAO,EAAE,IAAI,GAAG,EAAgB,EAAE,CAC1E,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAE7B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;YACvD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;SAC5B,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,kEAAkE;IAC3D,mBAAmB;QAIxB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAI/B,CAAC,EAAE,cAAc,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,OAAO;oBACL,cAAc;oBACd,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;iBAC3D,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC9C,oBAAoB;aACrB,CAAC;QACJ,CAAC,EACD;YACE,cAAc,EAAE,IAAI,KAAK,EAAkB;YAC3C,oBAAoB,EAAE,IAAI,KAAK,EAAkB;SAClD,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,uBAAuB,CAClC,QAAqD;QAErD,IAAI,CAAC,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,IAAI,WAAW;QAC7B,wCAAwC;QACxC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EACjD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY;aACd,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;aAC9B,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE;YACpC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;QACtC,CAAC,CAAC,EACJ,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EACrB,SAAS,CACV,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,qDAAqD,CACtD,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBAChE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE;oBAClD,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CACP,uDAAuD,EACvD,KAAK,CACN,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAAC,OAAgB;QAC3C,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,uCAAuC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CACN,GAAG,IAAI,CAAC,QAAQ,qBAAqB,OAAO,CAAC,SAAS,EAAE,EACxD,mBAAmB,UAAU,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,UAAU,EAAE,CAAC,EAAE,CAC3E,CAAC;QACF,MAAM,WAAW,GACf,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,gCAAgC,EAChC,OAAO,CAAC,SAAS,CAClB,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;QAChE,IAAI,oBAAoB,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,qDAAqD;QACrD,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CACP,IAAI,CAAC,QAAQ,EACb,kFAAkF,EAClF,OAAO,CACR,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,cAAc,EAAE;gBACrD,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,iBAAiB,EAAE;gBACxD,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CACtD,CAAC,mBAAmB,EAAE,EAAE,CACtB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CACrB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,mBAAmB,CAAC,SAAS,CAC/D,CACJ,CAAC;QAEF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,sBAAsB,EACtB,OAAO,CAAC,SAAS,EACjB,yBAAyB,EACzB,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAC9C,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;gBACvD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;oBACzD,MAAM,EAAE,OAAO,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAoB,IAAa;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,OAAO,CAAC,IAAI,CAAC,MAA2B,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,WAAW,EAAE;gBAC3B,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aAC9D,CAAC,CACH,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE;gBAChD,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,aAAa,CACnB,KAAQ,EACR,SAA2B;QAE3B,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,4BAA4B,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,OAAmB,EACnB,QAGE;QAEF,IAAI,CAAC,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEzE,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEvD,gDAAgD;QAChD,gEAAgE;QAChE,8DAA8D;QAE9D,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CACpC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAC1C,CAAC;QAEF,qBAAqB;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAC;YAC1D,OAAO,GAAG,IAAI,cAAc,CAC1B,SAAS,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY;iBACd,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;iBAC9B,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE;gBACpC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;YACtC,CAAC,CAAC,EACJ,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EACrB,OAAO,CACR,CAAC;YAEF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC3D,6EAA6E;gBAC7E,6BAA6B;gBAC7B,IAAI,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;oBACtC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,cAAc,EAAE;wBACrD,MAAM,EAAE,OAAO;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;gBACvE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,6BAA6B,CACzC,OAAmB,EACnB,QAA0D;QAE1D,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAClC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,EACpC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,EAAE,EACF,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CACP,6DAA6D,EAC7D,KAAK,CACN,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,uDAAuD;IAC/C,cAAc,CAAC,OAAuB;QAC5C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,iDAAiD;YACjD,qDAAqD;YACrD,sCAAsC;YACtC,uDAAuD;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,oBAAoB,EACpB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,aAAa,CACtB,CAAC;QACF,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACnD,CAAC;QAED,wCAAwC;QACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CACjD,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CACnD,CAAC;QAEF,0DAA0D;QAC1D,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,4CAA4C,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mGAAmG;IACnG,8EAA8E;IAC9E,yDAAyD;IACjD,eAAe,CAAC,eAAwB;QAC9C,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,4CAA4C,EAC5C,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CACxD,CAAC;QACF,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,0BAA0B,EAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAC5C,CAAC;QACF,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YACtD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAC9C,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE;gBACjC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;gBAC3D,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,sBAAsB,EAAE;oBAC7D,MAAM,EAAE,SAAS;iBAClB,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,CACrD,eAAe,CAAC,WAAW,EAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CACpB,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,oFAAoF;YACpF,8EAA8E;YAC9E,6DAA6D;YAC7D,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAClE,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAChD,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,+BAA+B,EAC/B,OAAO,CAAC,SAAS,EACjB,KAAK,CACN,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,8BAA8B,EAAE;oBACrE,MAAM,EAAE;wBACN,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,KAAK;qBACN;iBACF,CAAC,CAAC;gBACH,gEAAgE;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,iDAAiD;YACjD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,sBAAsB,EAAE;gBAC7D,MAAM,EAAE,OAAO,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,gBAAwB;IAChE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/B,gBAAgB,EAAE,CAAC;IACnB,IAAI,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"message_channel.js","sourceRoot":"","sources":["../../src/message_channel/message_channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAwB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAEL,cAAc,EACd,gBAAgB,EAEhB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EAIb,WAAW,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAE1C,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAE1C,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAgC9C,MAAM,OAAO,cAAe,SAAQ,iBAAuC;IACzD,SAAS,CAAY;IACrB,QAAQ,CAAgB;IAChC,gBAAgB,CAAS;IACzB,MAAM,CAAqB;IAC3B,cAAc,CAAmB;IACjC,YAAY,CAAyB;IACrC,cAAc,CAAsC;IAC3C,YAAY,CAAgB;IACrC,YAAY,CAAyB;IAC5B,iBAAiB,CAAS;IAC1B,qBAAqB,CAAS;IAC9B,wBAAwB,CAAU;IAClC,aAAa,CAAiB;IAEvC,KAAK,GAAW,EAAE,CAAC;IACnB,QAAQ,GAAa;QAC3B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EACnB,MAAoC,EACrB,EAAE;YACjB,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;QACD,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EACtB,MAAuC,EACxB,EAAE;YACjB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAC5B,MAA6C,EAC9B,EAAE;YACjB,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC;IAEF,YACE,SAAoB,EACpB,QAAuB,EACvB,UAAiC,EAAE,EACnC,eAA8B,IAAI,eAAe,EAAE;QAEnD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,wEAAwE;QACxE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,4BAA4B,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB;YACpB,OAAO,CAAC,iBAAiB,IAAI,2BAA2B,CAAC;QAC3D,4FAA4F;QAC5F,IAAI,CAAC,qBAAqB;YACxB,OAAO,CAAC,qBAAqB,IAAI,+BAA+B,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;QAEjE,oEAAoE;QACpE,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CACpC,QAAQ,EACR,OAAO,CAAC,YAAY,EACpB,CAAC,KAAa,EAAE,MAAe,EAAE,EAAE;gBACjC,IAAI,CAAC,aAAa,CAAC,KAA4B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,OAAmB;QAC5C,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,KAAK,CAAC,YAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,mBAAmB,CACxB,OAAmB,EACnB,QAGE;QAEF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,MAAM,EAAE;gBACN,OAAO;gBACP,QAAQ;aACT;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,4BAA4B,CACvC,OAAmB,EACnB,QAA0D;QAE1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,aAAa;YAC9B,MAAM,EAAE;gBACN,OAAO;gBACP,QAAQ;aACT;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,mBAAmB,CACxB,OAAgB,EAChB,aAAqC;QAErC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QAEtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE;gBACN,OAAO;aACR;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,mBAAmB;QACxB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAIpD,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;YAC/B,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,0BAA0B,EAC1B,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAChD,CAAC;YACF,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CACtD,CAAC,mBAAmB,EAAE,EAAE,CACtB,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAC1D,CAAC;YACF,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9D,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;wBACzD,MAAM,EAAE,OAAO,CAAC,SAAS;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC7B,CAAC;YACD,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,8BAA8B,EAC9B,OAAO,CAAC,SAAS,EACjB,yBAAyB,EACzB,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE;gBACvD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;YACtC,CAAC,CAAC,CACH,CAAC;YAEF,uFAAuF;YACvF,iHAAiH;YACjH,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC9D,IACE,YAAY;oBACZ,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC,wBAAwB,EACzD,CAAC;oBACD,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,aAAa,EAAE;wBACpD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;qBACxC,CAAC,CAAC;oBACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACzC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC9B,OAAO;aACR,CAAC;QACJ,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,KAAK,EAAkB,EAAE,OAAO,EAAE,IAAI,GAAG,EAAgB,EAAE,CAC1E,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAE7B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;YACvD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;SAC5B,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,kEAAkE;IAC3D,mBAAmB;QAIxB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAI/B,CAAC,EAAE,cAAc,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,OAAO;oBACL,cAAc;oBACd,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;iBAC3D,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC9C,oBAAoB;aACrB,CAAC;QACJ,CAAC,EACD;YACE,cAAc,EAAE,IAAI,KAAK,EAAkB;YAC3C,oBAAoB,EAAE,IAAI,KAAK,EAAkB;SAClD,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,yBAAyB,CACpC,QAAiD;QAEjD,MAAM,aAAa,GACjB,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACxB,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,4BAA4B,EAC5B,OAAO,CAAC,SAAS,CAClB,CAAC;oBAEF,gCAAgC;oBAChC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;wBACzD,MAAM,EAAE;4BACN,SAAS,EAAE,OAAO,CAAC,SAAS;yBAC7B;qBACF,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,uBAAuB,CAClC,QAAqD;QAErD,IAAI,CAAC,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEzE,yDAAyD;QACzD,MAAM,cAAc,GAClB,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,+BAA+B,CAAC;YACtE,EAAE,CAAC;QAEL,MAAM,OAAO,GAAG,IAAI,WAAW;QAC7B,wCAAwC;QACxC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EACjD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY;aACd,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;aAC9B,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC9C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QAChD,CAAC,CAAC,EACJ,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EACrB,SAAS,EACT,cAAc,CACf,CAAC;QAEF,IACE,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;YAC9D,cAAc,CAAC,MAAM,KAAK,CAAC,EAC3B,CAAC;YACD,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,4EAA4E,CAC7E,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBAChE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE;oBAClD,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;gBAEH,gEAAgE;gBAChE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,iBAAiB,EAAE;wBACxD,MAAM,EAAE;4BACN,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;4BAClD,gBAAgB,EAAE,OAAO,CAAC,SAAS;yBACpC;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CACP,uDAAuD,EACvD,KAAK,CACN,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAAC,OAAgB;QAC3C,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,uCAAuC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CACN,GAAG,IAAI,CAAC,QAAQ,qBAAqB,OAAO,CAAC,SAAS,EAAE,EACxD,mBAAmB,UAAU,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,UAAU,EAAE,CAAC,EAAE,CAC3E,CAAC;QACF,MAAM,WAAW,GACf,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,gCAAgC,EAChC,OAAO,CAAC,SAAS,CAClB,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;QAChE,IAAI,oBAAoB,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,qDAAqD;QACrD,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CACP,IAAI,CAAC,QAAQ,EACb,kFAAkF,EAClF,OAAO,CACR,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,cAAc,EAAE;gBACrD,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,iBAAiB,EAAE;gBACxD,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;QACL,CAAC;QAED,mDAAmD;QACnD,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3D,0CAA0C;QAC1C,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,mCAAmC;YACnC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,qBAAqB,EAAE;gBAC5D,MAAM,EAAE;oBACN,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBACzD,YAAY,EAAE,OAAO,CAAC,QAAQ;iBAC/B;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,EAAE,6BAA6B,CAC/C,OAAO,CAAC,aAAa,EACrB,IAAI,CAAC,YAAY,CAClB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CACtD,CAAC,mBAAmB,EAAE,EAAE,CACtB,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAC1D,CAAC;QAEF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,sBAAsB,EACtB,OAAO,CAAC,SAAS,EACjB,yBAAyB,EACzB,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAC9C,CAAC;YAEF,sDAAsD;YACtD,IAAI,CAAC,aAAa,EAAE,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;YAEjE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;gBACvD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;oBACzD,MAAM,EAAE,OAAO,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAoB,IAAa;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,OAAO,CAAC,IAAI,CAAC,MAA2B,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,WAAW,EAAE;gBAC3B,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aAC9D,CAAC,CACH,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE;gBAChD,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,aAAa,CACnB,KAAQ,EACR,SAA2B;QAE3B,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,4BAA4B,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,OAAmB,EACnB,QAGE;QAEF,IAAI,CAAC,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEzE,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEvD,gDAAgD;QAChD,gEAAgE;QAChE,8DAA8D;QAE9D,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CACpC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAC1C,CAAC;QAEF,qBAAqB;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAC;YAE1D,wDAAwD;YACxD,MAAM,cAAc,GAClB,IAAI,CAAC,aAAa,EAAE,iBAAiB,CACnC,+BAA+B,CAChC,IAAI,EAAE,CAAC;YAEV,OAAO,GAAG,IAAI,cAAc,CAC1B,SAAS,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY;iBACd,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;iBAC9B,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC9C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;YAChD,CAAC,CAAC,EACJ,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EACrB,OAAO,EACP,cAAc,CACf,CAAC;YAEF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC3D,6EAA6E;gBAC7E,6BAA6B;gBAC7B,IAAI,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;oBACtC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,cAAc,EAAE;wBACrD,MAAM,EAAE,OAAO;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;gBACvE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,6BAA6B,CACzC,OAAmB,EACnB,QAA0D;QAE1D,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAClC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,EACpC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,EAAE,EACF,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CACP,6DAA6D,EAC7D,KAAK,CACN,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,kBAAkB,CAAC,SAAoB;QAC7C,4BAA4B;QAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,2EAA2E;QAC3E,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,uDAAuD;IAC/C,cAAc,CAAC,OAAuB;QAC5C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,iDAAiD;YACjD,qDAAqD;YACrD,sCAAsC;YACtC,uDAAuD;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,oBAAoB,EACpB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,aAAa,CACtB,CAAC;QACF,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACnD,CAAC;QAED,wCAAwC;QACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CACjD,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CACnD,CAAC;QAEF,0DAA0D;QAC1D,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,4CAA4C,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mGAAmG;IACnG,8EAA8E;IAC9E,yDAAyD;IACjD,eAAe,CAAC,eAAwB;QAC9C,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,4CAA4C,EAC5C,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CACxD,CAAC;QACF,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,0BAA0B,EAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAC5C,CAAC;QACF,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YACtD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAC9C,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE;gBACjC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;gBAC3D,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,sBAAsB,EAAE;oBAC7D,MAAM,EAAE,SAAS;iBAClB,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS,CACrD,eAAe,CAAC,WAAW,EAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CACpB,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,oFAAoF;YACpF,8EAA8E;YAC9E,6DAA6D;YAC7D,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAClE,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAChD,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,QAAQ,EACb,+BAA+B,EAC/B,OAAO,CAAC,SAAS,EACjB,KAAK,CACN,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,8BAA8B,EAAE;oBACrE,MAAM,EAAE;wBACN,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,KAAK;qBACN;iBACF,CAAC,CAAC;gBACH,gEAAgE;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,iDAAiD;YACjD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,sBAAsB,EAAE;gBAC7D,MAAM,EAAE,OAAO,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,gBAAwB;IAChE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/B,gBAAgB,EAAE,CAAC;IACnB,IAAI,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { HistoryEntry, MessageId } from "../message.js";
|
|
2
|
+
/**
|
|
3
|
+
* Entry in the outgoing repair buffer with request timing
|
|
4
|
+
*/
|
|
5
|
+
interface OutgoingBufferEntry {
|
|
6
|
+
entry: HistoryEntry;
|
|
7
|
+
tReq: number;
|
|
8
|
+
requested: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Entry in the incoming repair buffer with response timing
|
|
12
|
+
*/
|
|
13
|
+
interface IncomingBufferEntry {
|
|
14
|
+
entry: HistoryEntry;
|
|
15
|
+
tResp: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Buffer for outgoing repair requests (messages we need)
|
|
19
|
+
* Maintains a sorted array by T_req for efficient retrieval of eligible entries
|
|
20
|
+
*/
|
|
21
|
+
export declare class OutgoingRepairBuffer {
|
|
22
|
+
private items;
|
|
23
|
+
private readonly maxSize;
|
|
24
|
+
constructor(maxSize?: number);
|
|
25
|
+
/**
|
|
26
|
+
* Add a missing message to the outgoing repair request buffer
|
|
27
|
+
* If message already exists, it is not updated (keeps original T_req)
|
|
28
|
+
* @returns true if the entry was added, false if it already existed
|
|
29
|
+
*/
|
|
30
|
+
add(entry: HistoryEntry, tReq: number): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Remove a message from the buffer (e.g., when received)
|
|
33
|
+
*/
|
|
34
|
+
remove(messageId: MessageId): void;
|
|
35
|
+
/**
|
|
36
|
+
* Get eligible repair requests (where T_req <= currentTime)
|
|
37
|
+
* Returns up to maxRequests entries from the front of the sorted array
|
|
38
|
+
* Marks returned entries as requested but keeps them in buffer until received
|
|
39
|
+
*/
|
|
40
|
+
getEligible(currentTime?: number, maxRequests?: number): HistoryEntry[];
|
|
41
|
+
/**
|
|
42
|
+
* Check if a message is in the buffer
|
|
43
|
+
*/
|
|
44
|
+
has(messageId: MessageId): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Get the current buffer size
|
|
47
|
+
*/
|
|
48
|
+
get size(): number;
|
|
49
|
+
/**
|
|
50
|
+
* Clear all entries
|
|
51
|
+
*/
|
|
52
|
+
clear(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Get all entries (for testing/debugging)
|
|
55
|
+
*/
|
|
56
|
+
getAll(): HistoryEntry[];
|
|
57
|
+
/**
|
|
58
|
+
* Get items array directly (for testing)
|
|
59
|
+
*/
|
|
60
|
+
getItems(): OutgoingBufferEntry[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Buffer for incoming repair requests (repairs we need to send)
|
|
64
|
+
* Maintains a sorted array by T_resp for efficient retrieval of ready entries
|
|
65
|
+
*/
|
|
66
|
+
export declare class IncomingRepairBuffer {
|
|
67
|
+
private items;
|
|
68
|
+
private readonly maxSize;
|
|
69
|
+
constructor(maxSize?: number);
|
|
70
|
+
/**
|
|
71
|
+
* Add a repair request that we can fulfill
|
|
72
|
+
* If message already exists, it is ignored (not updated)
|
|
73
|
+
* @returns true if the entry was added, false if it already existed
|
|
74
|
+
*/
|
|
75
|
+
add(entry: HistoryEntry, tResp: number): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Remove a message from the buffer
|
|
78
|
+
*/
|
|
79
|
+
remove(messageId: MessageId): void;
|
|
80
|
+
/**
|
|
81
|
+
* Get repairs ready to be sent (where T_resp <= currentTime)
|
|
82
|
+
* Removes and returns ready entries
|
|
83
|
+
*/
|
|
84
|
+
getReady(currentTime: number): HistoryEntry[];
|
|
85
|
+
/**
|
|
86
|
+
* Check if a message is in the buffer
|
|
87
|
+
*/
|
|
88
|
+
has(messageId: MessageId): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Get the current buffer size
|
|
91
|
+
*/
|
|
92
|
+
get size(): number;
|
|
93
|
+
/**
|
|
94
|
+
* Clear all entries
|
|
95
|
+
*/
|
|
96
|
+
clear(): void;
|
|
97
|
+
/**
|
|
98
|
+
* Get all entries (for testing/debugging)
|
|
99
|
+
*/
|
|
100
|
+
getAll(): HistoryEntry[];
|
|
101
|
+
/**
|
|
102
|
+
* Get items array directly (for testing)
|
|
103
|
+
*/
|
|
104
|
+
getItems(): IncomingBufferEntry[];
|
|
105
|
+
}
|
|
106
|
+
export {};
|