@libp2p/pubsub 1.2.3 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/errors.d.ts +8 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +8 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +33 -30
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +192 -128
- package/dist/src/index.js.map +1 -1
- package/dist/src/message/rpc.d.ts +586 -175
- package/dist/src/message/rpc.js +1238 -67
- package/dist/src/message/sign.d.ts +1 -1
- package/dist/src/message/sign.d.ts.map +1 -1
- package/dist/src/message/sign.js +8 -14
- package/dist/src/message/sign.js.map +1 -1
- package/dist/src/peer-streams.d.ts +5 -5
- package/dist/src/peer-streams.d.ts.map +1 -1
- package/dist/src/peer-streams.js +1 -0
- package/dist/src/peer-streams.js.map +1 -1
- package/dist/src/utils.d.ts +6 -9
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +36 -35
- package/dist/src/utils.js.map +1 -1
- package/package.json +7 -10
- package/src/errors.ts +8 -0
- package/src/index.ts +236 -140
- package/src/message/rpc.d.ts +586 -175
- package/src/message/rpc.js +1238 -67
- package/src/message/rpc.proto +38 -4
- package/src/message/sign.ts +10 -16
- package/src/peer-streams.ts +6 -4
- package/src/utils.ts +35 -34
package/dist/src/index.js
CHANGED
@@ -5,10 +5,13 @@ import { pipe } from 'it-pipe';
|
|
5
5
|
import Queue from 'p-queue';
|
6
6
|
import { Topology } from '@libp2p/topology';
|
7
7
|
import { codes } from './errors.js';
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import * as utils from './utils.js';
|
8
|
+
import { PeerStreams as PeerStreamsImpl } from './peer-streams.js';
|
9
|
+
import { toMessage, ensureArray, randomSeqno, noSignMsgId, msgId, toRpcMessage } from './utils.js';
|
11
10
|
import { signMessage, verifySignature } from './message/sign.js';
|
11
|
+
import { base58btc } from 'multiformats/bases/base58';
|
12
|
+
import { peerMap } from '@libp2p/peer-map';
|
13
|
+
import { peerIdFromString } from '@libp2p/peer-id';
|
14
|
+
import { RPC as RPCProto } from './message/rpc.js';
|
12
15
|
/**
|
13
16
|
* PubsubBaseProtocol handles the peers and connections logic for pubsub routers
|
14
17
|
* and specifies the API that pubsub routers should have.
|
@@ -16,16 +19,15 @@ import { signMessage, verifySignature } from './message/sign.js';
|
|
16
19
|
export class PubsubBaseProtocol extends EventEmitter {
|
17
20
|
constructor(props) {
|
18
21
|
super();
|
19
|
-
const { debugName = 'libp2p:pubsub', multicodecs = [],
|
22
|
+
const { debugName = 'libp2p:pubsub', multicodecs = [], peerId, registrar, globalSignaturePolicy = 'StrictSign', canRelayMessage = false, emitSelf = false, messageProcessingConcurrency = 10 } = props;
|
20
23
|
this.log = logger(debugName);
|
21
|
-
this.multicodecs =
|
22
|
-
this.
|
23
|
-
this.
|
24
|
-
this.peerId = libp2p.peerId;
|
24
|
+
this.multicodecs = ensureArray(multicodecs);
|
25
|
+
this.registrar = registrar;
|
26
|
+
this.peerId = peerId;
|
25
27
|
this.started = false;
|
26
28
|
this.topics = new Map();
|
27
29
|
this.subscriptions = new Set();
|
28
|
-
this.peers =
|
30
|
+
this.peers = peerMap();
|
29
31
|
this.globalSignaturePolicy = globalSignaturePolicy === 'StrictNoSign' ? 'StrictNoSign' : 'StrictSign';
|
30
32
|
this.canRelayMessage = canRelayMessage;
|
31
33
|
this.emitSelf = emitSelf;
|
@@ -74,8 +76,10 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
74
76
|
await this.registrar.unhandle(this._registrarHandlerId);
|
75
77
|
}
|
76
78
|
this.log('stopping');
|
77
|
-
|
78
|
-
|
79
|
+
for (const peerStreams of this.peers.values()) {
|
80
|
+
peerStreams.close();
|
81
|
+
}
|
82
|
+
this.peers.clear();
|
79
83
|
this.subscriptions = new Set();
|
80
84
|
this.started = false;
|
81
85
|
this.log('stopped');
|
@@ -89,28 +93,26 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
89
93
|
_onIncomingStream(evt) {
|
90
94
|
const { protocol, stream, connection } = evt.detail;
|
91
95
|
const peerId = connection.remotePeer;
|
92
|
-
const
|
93
|
-
const peer = this._addPeer(peerId, protocol);
|
96
|
+
const peer = this.addPeer(peerId, protocol);
|
94
97
|
const inboundStream = peer.attachInboundStream(stream);
|
95
|
-
this.
|
98
|
+
this.processMessages(peerId, inboundStream, peer)
|
96
99
|
.catch(err => this.log(err));
|
97
100
|
}
|
98
101
|
/**
|
99
102
|
* Registrar notifies an established connection with pubsub protocol
|
100
103
|
*/
|
101
104
|
async _onPeerConnected(peerId, conn) {
|
102
|
-
|
103
|
-
this.log('connected', idB58Str);
|
105
|
+
this.log('connected %p', peerId);
|
104
106
|
try {
|
105
107
|
const { stream, protocol } = await conn.newStream(this.multicodecs);
|
106
|
-
const peer = this.
|
108
|
+
const peer = this.addPeer(peerId, protocol);
|
107
109
|
await peer.attachOutboundStream(stream);
|
108
110
|
}
|
109
111
|
catch (err) {
|
110
112
|
this.log.error(err);
|
111
113
|
}
|
112
114
|
// Immediately send my own subscriptions to the newly established conn
|
113
|
-
this.
|
115
|
+
this.send(peerId, { subscriptions: Array.from(this.subscriptions).map(sub => sub.toString()), subscribe: true });
|
114
116
|
}
|
115
117
|
/**
|
116
118
|
* Registrar notifies a closing connection with pubsub protocol
|
@@ -123,20 +125,19 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
123
125
|
/**
|
124
126
|
* Notifies the router that a peer has been connected
|
125
127
|
*/
|
126
|
-
|
127
|
-
const
|
128
|
-
const existing = this.peers.get(id);
|
128
|
+
addPeer(peerId, protocol) {
|
129
|
+
const existing = this.peers.get(peerId);
|
129
130
|
// If peer streams already exists, do nothing
|
130
131
|
if (existing != null) {
|
131
132
|
return existing;
|
132
133
|
}
|
133
134
|
// else create a new peer streams
|
134
|
-
this.log('new peer',
|
135
|
-
const peerStreams = new
|
135
|
+
this.log('new peer %p', peerId);
|
136
|
+
const peerStreams = new PeerStreamsImpl({
|
136
137
|
id: peerId,
|
137
138
|
protocol
|
138
139
|
});
|
139
|
-
this.peers.set(
|
140
|
+
this.peers.set(peerId, peerStreams);
|
140
141
|
peerStreams.addEventListener('close', () => this._removePeer(peerId), {
|
141
142
|
once: true
|
142
143
|
});
|
@@ -147,15 +148,15 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
147
148
|
*/
|
148
149
|
_removePeer(peerId) {
|
149
150
|
const id = peerId.toString();
|
150
|
-
const peerStreams = this.peers.get(
|
151
|
+
const peerStreams = this.peers.get(peerId);
|
151
152
|
if (peerStreams == null) {
|
152
153
|
return;
|
153
154
|
}
|
154
155
|
// close peer streams
|
155
156
|
peerStreams.close();
|
156
157
|
// delete peer streams
|
157
|
-
this.log('delete peer',
|
158
|
-
this.peers.delete(
|
158
|
+
this.log('delete peer %p', peerId);
|
159
|
+
this.peers.delete(peerId);
|
159
160
|
// remove peer from topics map
|
160
161
|
for (const peers of this.topics.values()) {
|
161
162
|
peers.delete(id);
|
@@ -166,17 +167,37 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
166
167
|
/**
|
167
168
|
* Responsible for processing each RPC message received by other peers.
|
168
169
|
*/
|
169
|
-
async
|
170
|
+
async processMessages(peerId, stream, peerStreams) {
|
170
171
|
try {
|
171
172
|
await pipe(stream, async (source) => {
|
172
173
|
for await (const data of source) {
|
173
|
-
const
|
174
|
-
const
|
175
|
-
|
174
|
+
const rpcMsg = this.decodeRpc(data);
|
175
|
+
const messages = [];
|
176
|
+
for (const msg of (rpcMsg.messages ?? [])) {
|
177
|
+
if (msg.from == null || msg.data == null || msg.topic == null) {
|
178
|
+
this.log('message from %p was missing from, data or topic fields, dropping', peerId);
|
179
|
+
continue;
|
180
|
+
}
|
181
|
+
messages.push({
|
182
|
+
from: msg.from,
|
183
|
+
data: msg.data,
|
184
|
+
topic: msg.topic,
|
185
|
+
seqno: msg.seqno ?? undefined,
|
186
|
+
signature: msg.signature ?? undefined,
|
187
|
+
key: msg.key ?? undefined
|
188
|
+
});
|
189
|
+
}
|
190
|
+
// Since processRpc may be overridden entirely in unsafe ways,
|
176
191
|
// the simplest/safest option here is to wrap in a function and capture all errors
|
177
192
|
// to prevent a top-level unhandled exception
|
178
193
|
// This processing of rpc messages should happen without awaiting full validation/execution of prior messages
|
179
|
-
this.
|
194
|
+
this.processRpc(peerId, peerStreams, {
|
195
|
+
subscriptions: (rpcMsg.subscriptions).map(sub => ({
|
196
|
+
subscribe: Boolean(sub.subscribe),
|
197
|
+
topic: sub.topic ?? ''
|
198
|
+
})),
|
199
|
+
messages
|
200
|
+
})
|
180
201
|
.catch(err => this.log(err));
|
181
202
|
}
|
182
203
|
});
|
@@ -188,34 +209,33 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
188
209
|
/**
|
189
210
|
* Handles an rpc request from a peer
|
190
211
|
*/
|
191
|
-
async
|
192
|
-
this.
|
193
|
-
|
194
|
-
|
195
|
-
|
212
|
+
async processRpc(from, peerStreams, rpc) {
|
213
|
+
if (!this.acceptFrom(from)) {
|
214
|
+
this.log('received message from unacceptable peer %p', from);
|
215
|
+
return;
|
216
|
+
}
|
217
|
+
this.log('rpc from %p', from);
|
218
|
+
const { subscriptions, messages } = rpc;
|
219
|
+
if (subscriptions.length > 0) {
|
220
|
+
this.log('subscription update from %p', from);
|
196
221
|
// update peer subscriptions
|
197
|
-
|
198
|
-
this.
|
222
|
+
subscriptions.forEach((subOpt) => {
|
223
|
+
this.processRpcSubOpt(from, subOpt);
|
199
224
|
});
|
200
|
-
|
201
|
-
detail: { peerId: peerStreams.id, subscriptions
|
225
|
+
super.dispatchEvent(new CustomEvent('pubsub:subscription-change', {
|
226
|
+
detail: { peerId: peerStreams.id, subscriptions }
|
202
227
|
}));
|
203
228
|
}
|
204
|
-
if (
|
205
|
-
this.log('
|
206
|
-
|
207
|
-
|
208
|
-
if (msgs.length > 0) {
|
209
|
-
this.queue.addAll(msgs.map(message => async () => {
|
210
|
-
const topics = message.topicIDs != null ? message.topicIDs : [];
|
211
|
-
const hasSubscription = topics.some((topic) => this.subscriptions.has(topic));
|
212
|
-
if (!hasSubscription && !this.canRelayMessage) {
|
229
|
+
if (messages.length > 0) {
|
230
|
+
this.log('messages from %p', from);
|
231
|
+
this.queue.addAll(messages.map(message => async () => {
|
232
|
+
if (!this.subscriptions.has(message.topic) && !this.canRelayMessage) {
|
213
233
|
this.log('received message we didn\'t subscribe to. Dropping.');
|
214
234
|
return;
|
215
235
|
}
|
216
236
|
try {
|
217
|
-
const msg =
|
218
|
-
await this.
|
237
|
+
const msg = await toMessage(message);
|
238
|
+
await this.processMessage(from, msg);
|
219
239
|
}
|
220
240
|
catch (err) {
|
221
241
|
this.log.error(err);
|
@@ -223,13 +243,12 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
223
243
|
}))
|
224
244
|
.catch(err => this.log(err));
|
225
245
|
}
|
226
|
-
return true;
|
227
246
|
}
|
228
247
|
/**
|
229
248
|
* Handles a subscription change from a peer
|
230
249
|
*/
|
231
|
-
|
232
|
-
const t = subOpt.
|
250
|
+
processRpcSubOpt(id, subOpt) {
|
251
|
+
const t = subOpt.topic;
|
233
252
|
if (t == null) {
|
234
253
|
return;
|
235
254
|
}
|
@@ -238,20 +257,20 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
238
257
|
topicSet = new Set();
|
239
258
|
this.topics.set(t, topicSet);
|
240
259
|
}
|
241
|
-
if (subOpt.subscribe
|
260
|
+
if (subOpt.subscribe) {
|
242
261
|
// subscribe peer to new topic
|
243
|
-
topicSet.add(id);
|
262
|
+
topicSet.add(id.toString());
|
244
263
|
}
|
245
264
|
else {
|
246
265
|
// unsubscribe from existing topic
|
247
|
-
topicSet.delete(id);
|
266
|
+
topicSet.delete(id.toString());
|
248
267
|
}
|
249
268
|
}
|
250
269
|
/**
|
251
270
|
* Handles an message from a peer
|
252
271
|
*/
|
253
|
-
async
|
254
|
-
if (
|
272
|
+
async processMessage(from, msg) {
|
273
|
+
if (this.peerId.equals(from) && !this.emitSelf) {
|
255
274
|
return;
|
256
275
|
}
|
257
276
|
// Ensure the message is valid before processing it
|
@@ -262,21 +281,15 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
262
281
|
this.log('Message is invalid, dropping it. %O', err);
|
263
282
|
return;
|
264
283
|
}
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
* Emit a message from a peer
|
271
|
-
*/
|
272
|
-
_emitMessage(message) {
|
273
|
-
message.topicIDs.forEach((topic) => {
|
274
|
-
if (this.subscriptions.has(topic)) {
|
275
|
-
this.dispatchEvent(new CustomEvent(topic, {
|
276
|
-
detail: message
|
284
|
+
if (this.subscriptions.has(msg.topic)) {
|
285
|
+
const isFromSelf = this.peerId.equals(from);
|
286
|
+
if (!isFromSelf || this.emitSelf) {
|
287
|
+
super.dispatchEvent(new CustomEvent(msg.topic, {
|
288
|
+
detail: msg
|
277
289
|
}));
|
278
290
|
}
|
279
|
-
}
|
291
|
+
}
|
292
|
+
await this.publishMessage(from, msg);
|
280
293
|
}
|
281
294
|
/**
|
282
295
|
* The default msgID implementation
|
@@ -286,10 +299,15 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
286
299
|
const signaturePolicy = this.globalSignaturePolicy;
|
287
300
|
switch (signaturePolicy) {
|
288
301
|
case 'StrictSign':
|
289
|
-
|
290
|
-
|
302
|
+
if (msg.seqno == null) {
|
303
|
+
throw errcode(new Error('Need seqno when signature policy is StrictSign but it was missing'), codes.ERR_MISSING_SEQNO);
|
304
|
+
}
|
305
|
+
if (msg.key == null) {
|
306
|
+
throw errcode(new Error('Need key when signature policy is StrictSign but it was missing'), codes.ERR_MISSING_KEY);
|
307
|
+
}
|
308
|
+
return msgId(msg.key, msg.seqno);
|
291
309
|
case 'StrictNoSign':
|
292
|
-
return
|
310
|
+
return noSignMsgId(msg.data);
|
293
311
|
default:
|
294
312
|
throw errcode(new Error('Cannot get message id: unhandled signature policy'), codes.ERR_UNHANDLED_SIGNATURE_POLICY);
|
295
313
|
}
|
@@ -298,42 +316,44 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
298
316
|
* Whether to accept a message from a peer
|
299
317
|
* Override to create a graylist
|
300
318
|
*/
|
301
|
-
|
319
|
+
acceptFrom(id) {
|
302
320
|
return true;
|
303
321
|
}
|
304
322
|
/**
|
305
323
|
* Decode Uint8Array into an RPC object.
|
306
324
|
* This can be override to use a custom router protobuf.
|
307
325
|
*/
|
308
|
-
|
309
|
-
return
|
326
|
+
decodeRpc(bytes) {
|
327
|
+
return RPCProto.decode(bytes);
|
310
328
|
}
|
311
329
|
/**
|
312
330
|
* Encode RPC object into a Uint8Array.
|
313
331
|
* This can be override to use a custom router protobuf.
|
314
332
|
*/
|
315
|
-
|
316
|
-
return
|
333
|
+
encodeRpc(rpc) {
|
334
|
+
return RPCProto.encode(rpc).finish();
|
317
335
|
}
|
318
336
|
/**
|
319
337
|
* Send an rpc object to a peer
|
320
338
|
*/
|
321
|
-
|
322
|
-
const
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
}
|
328
|
-
peerStreams.write(this._encodeRpc(rpc));
|
339
|
+
send(peer, data) {
|
340
|
+
const { messages, subscriptions, subscribe } = data;
|
341
|
+
return this.sendRpc(peer, {
|
342
|
+
subscriptions: (subscriptions ?? []).map(str => ({ topic: str, subscribe: Boolean(subscribe) })),
|
343
|
+
messages: (messages ?? []).map(toRpcMessage)
|
344
|
+
});
|
329
345
|
}
|
330
346
|
/**
|
331
|
-
* Send
|
347
|
+
* Send an rpc object to a peer
|
332
348
|
*/
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
349
|
+
sendRpc(peer, rpc) {
|
350
|
+
const peerStreams = this.peers.get(peer);
|
351
|
+
if (peerStreams == null || !peerStreams.isWritable) {
|
352
|
+
const msg = `Cannot send RPC to ${peer.toString(base58btc)} as there is no open stream to it available`;
|
353
|
+
this.log.error(msg);
|
354
|
+
return;
|
355
|
+
}
|
356
|
+
peerStreams.write(this.encodeRpc(rpc));
|
337
357
|
}
|
338
358
|
/**
|
339
359
|
* Validates the given message. The signature will be checked for authenticity.
|
@@ -343,9 +363,6 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
343
363
|
const signaturePolicy = this.globalSignaturePolicy;
|
344
364
|
switch (signaturePolicy) {
|
345
365
|
case 'StrictNoSign':
|
346
|
-
if (message.from != null) {
|
347
|
-
throw errcode(new Error('StrictNoSigning: from should not be present'), codes.ERR_UNEXPECTED_FROM);
|
348
|
-
}
|
349
366
|
if (message.signature != null) {
|
350
367
|
throw errcode(new Error('StrictNoSigning: signature should not be present'), codes.ERR_UNEXPECTED_SIGNATURE);
|
351
368
|
}
|
@@ -370,23 +387,20 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
370
387
|
default:
|
371
388
|
throw errcode(new Error('Cannot validate message: unhandled signature policy'), codes.ERR_UNHANDLED_SIGNATURE_POLICY);
|
372
389
|
}
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
await validatorFn(topic, message);
|
377
|
-
}
|
390
|
+
const validatorFn = this.topicValidators.get(message.topic);
|
391
|
+
if (validatorFn != null) {
|
392
|
+
await validatorFn(message.topic, message);
|
378
393
|
}
|
379
394
|
}
|
380
395
|
/**
|
381
396
|
* Normalizes the message and signs it, if signing is enabled.
|
382
397
|
* Should be used by the routers to create the message to send.
|
383
398
|
*/
|
384
|
-
async
|
399
|
+
async buildMessage(message) {
|
385
400
|
const signaturePolicy = this.globalSignaturePolicy;
|
386
401
|
switch (signaturePolicy) {
|
387
402
|
case 'StrictSign':
|
388
|
-
message.
|
389
|
-
message.seqno = utils.randomSeqno();
|
403
|
+
message.seqno = randomSeqno();
|
390
404
|
return await signMessage(this.peerId, message);
|
391
405
|
case 'StrictNoSign':
|
392
406
|
return await Promise.resolve(message);
|
@@ -405,33 +419,49 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
405
419
|
if (topic == null) {
|
406
420
|
throw errcode(new Error('topic is required'), 'ERR_NOT_VALID_TOPIC');
|
407
421
|
}
|
408
|
-
const peersInTopic = this.topics.get(topic);
|
422
|
+
const peersInTopic = this.topics.get(topic.toString());
|
409
423
|
if (peersInTopic == null) {
|
410
424
|
return [];
|
411
425
|
}
|
412
|
-
return Array.from(peersInTopic);
|
426
|
+
return Array.from(peersInTopic).map(str => peerIdFromString(str));
|
413
427
|
}
|
414
428
|
/**
|
415
429
|
* Publishes messages to all subscribed peers
|
416
430
|
*/
|
417
|
-
|
431
|
+
dispatchEvent(event) {
|
418
432
|
if (!this.started) {
|
419
433
|
throw new Error('Pubsub has not started');
|
420
434
|
}
|
435
|
+
const topic = event.type;
|
436
|
+
let message = event.detail;
|
437
|
+
if (message instanceof Uint8Array) {
|
438
|
+
message = {
|
439
|
+
from: this.peerId,
|
440
|
+
topic,
|
441
|
+
data: message
|
442
|
+
};
|
443
|
+
}
|
421
444
|
this.log('publish', topic, message);
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
445
|
+
Promise.resolve().then(async () => {
|
446
|
+
message = await this.buildMessage(message);
|
447
|
+
// dispatch the event if we are interested
|
448
|
+
if (this.emitSelf) {
|
449
|
+
if (this.subscriptions.has(topic)) {
|
450
|
+
super.dispatchEvent(new CustomEvent(topic, {
|
451
|
+
detail: message
|
452
|
+
}));
|
453
|
+
if (this.listenerCount(topic) === 0) {
|
454
|
+
this.unsubscribe(topic);
|
455
|
+
}
|
456
|
+
}
|
457
|
+
}
|
458
|
+
// send to all the other peers
|
459
|
+
await this.publishMessage(this.peerId, message);
|
460
|
+
})
|
461
|
+
.catch(err => {
|
462
|
+
this.log.error(err);
|
463
|
+
});
|
464
|
+
return true;
|
435
465
|
}
|
436
466
|
/**
|
437
467
|
* Subscribes to a given topic.
|
@@ -440,21 +470,38 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
440
470
|
if (!this.started) {
|
441
471
|
throw new Error('Pubsub has not started');
|
442
472
|
}
|
443
|
-
|
444
|
-
|
445
|
-
|
473
|
+
const topicStr = topic.toString();
|
474
|
+
if (topicStr === 'pubsub:subscription-change') {
|
475
|
+
return;
|
476
|
+
}
|
477
|
+
if (!this.subscriptions.has(topicStr)) {
|
478
|
+
this.subscriptions.add(topicStr);
|
479
|
+
for (const peerId of this.peers.keys()) {
|
480
|
+
this.send(peerId, { subscriptions: [topicStr], subscribe: true });
|
481
|
+
}
|
446
482
|
}
|
447
483
|
}
|
448
484
|
/**
|
449
|
-
* Unsubscribe from the given topic
|
485
|
+
* Unsubscribe from the given topic
|
450
486
|
*/
|
451
487
|
unsubscribe(topic) {
|
452
488
|
if (!this.started) {
|
453
489
|
throw new Error('Pubsub is not started');
|
454
490
|
}
|
455
|
-
|
456
|
-
|
457
|
-
|
491
|
+
// @ts-expect-error topic should be a key of the event map
|
492
|
+
super.removeEventListener(topic);
|
493
|
+
const topicStr = topic.toString();
|
494
|
+
if (topicStr === 'pubsub:subscription-change') {
|
495
|
+
return;
|
496
|
+
}
|
497
|
+
const wasSubscribed = this.subscriptions.has(topicStr);
|
498
|
+
const listeners = this.listenerCount(topicStr);
|
499
|
+
this.log('unsubscribe from %s - am subscribed %s, listeners %d', topic, wasSubscribed, listeners);
|
500
|
+
if (wasSubscribed && listeners === 0) {
|
501
|
+
this.subscriptions.delete(topicStr);
|
502
|
+
for (const peerId of this.peers.keys()) {
|
503
|
+
this.send(peerId, { subscriptions: [topicStr], subscribe: false });
|
504
|
+
}
|
458
505
|
}
|
459
506
|
}
|
460
507
|
/**
|
@@ -466,5 +513,22 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
466
513
|
}
|
467
514
|
return Array.from(this.subscriptions);
|
468
515
|
}
|
516
|
+
getPeers() {
|
517
|
+
if (!this.started) {
|
518
|
+
throw new Error('Pubsub is not started');
|
519
|
+
}
|
520
|
+
return Array.from(this.peers.keys());
|
521
|
+
}
|
522
|
+
addEventListener(type, callback, options) {
|
523
|
+
this.subscribe(type.toString());
|
524
|
+
super.addEventListener(type, callback, options);
|
525
|
+
}
|
526
|
+
removeEventListener(type, callback, options) {
|
527
|
+
super.removeEventListener(type, callback, options);
|
528
|
+
const topicStr = type.toString();
|
529
|
+
if (this.listenerCount(topicStr) === 0) {
|
530
|
+
this.unsubscribe(topicStr);
|
531
|
+
}
|
532
|
+
}
|
469
533
|
}
|
470
534
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAA;AAC5E,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAClG,OAAO,EACL,WAAW,EACX,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAM1B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAIlD;;;GAGG;AACH,MAAM,OAAgB,kBAAiE,SAAQ,YAAqC;IA2ClI,YAAa,KAAoB;QAC/B,KAAK,EAAE,CAAA;QAEP,MAAM,EACJ,SAAS,GAAG,eAAe,EAC3B,WAAW,GAAG,EAAE,EAChB,MAAM,EACN,SAAS,EACT,qBAAqB,GAAG,YAAY,EACpC,eAAe,GAAG,KAAK,EACvB,QAAQ,GAAG,KAAK,EAChB,4BAA4B,GAAG,EAAE,EAClC,GAAG,KAAK,CAAA;QAET,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;QAC5B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;QAC9B,IAAI,CAAC,KAAK,GAAG,OAAO,EAAe,CAAA;QACnC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAA;QACrG,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,CAAA;QAErE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChE,CAAC;IAED,oBAAoB;IAEpB;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAM;SACP;QAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAEpB,mBAAmB;QACnB,+BAA+B;QAC/B,IAAI,CAAC,mBAAmB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAEhG,kCAAkC;QAClC,0DAA0D;QAC1D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,YAAY,EAAE,IAAI,CAAC,mBAAmB;SACvC,CAAC,CAAA;QACF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAE/E,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAM;SACP;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;SACrD;QACD,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,EAAE;YACpC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;SACxD;QAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACpB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;YAC7C,WAAW,CAAC,KAAK,EAAE,CAAA;SACpB;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACrB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAE,GAAoC;QAC/D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;QACnD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAA;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAEtD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC;aAC9C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,gBAAgB,CAAE,MAAc,EAAE,IAAgB;QAChE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;QAEhC,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAC3C,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;SACxC;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACpB;QAED,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAClH,CAAC;IAED;;OAEG;IACO,mBAAmB,CAAE,MAAc,EAAE,IAAiB;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAElC,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;QACtC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,OAAO,CAAE,MAAc,EAAE,QAAgB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEvC,6CAA6C;QAC7C,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,OAAO,QAAQ,CAAA;SAChB;QAED,iCAAiC;QACjC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAE/B,MAAM,WAAW,GAAgB,IAAI,eAAe,CAAC;YACnD,EAAE,EAAE,MAAM;YACV,QAAQ;SACT,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACnC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YACpE,IAAI,EAAE,IAAI;SACX,CAAC,CAAA;QAEF,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;OAEG;IACO,WAAW,CAAE,MAAc;QACnC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,OAAM;SACP;QAED,qBAAqB;QACrB,WAAW,CAAC,KAAK,EAAE,CAAA;QAEnB,sBAAsB;QACtB,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAEzB,8BAA8B;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACxC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;SACjB;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,kBAAkB;IAElB;;OAEG;IACH,KAAK,CAAC,eAAe,CAAE,MAAc,EAAE,MAAiC,EAAE,WAAwB;QAChG,IAAI;YACF,MAAM,IAAI,CACR,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE;gBACf,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE;oBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBACnC,MAAM,QAAQ,GAAiB,EAAE,CAAA;oBAEjC,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;wBACzC,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,EAAE;4BAC7D,IAAI,CAAC,GAAG,CAAC,kEAAkE,EAAE,MAAM,CAAC,CAAA;4BACpF,SAAQ;yBACT;wBAED,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;4BAC7B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;4BACrC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,SAAS;yBAC1B,CAAC,CAAA;qBACH;oBAED,8DAA8D;oBAC9D,kFAAkF;oBAClF,6CAA6C;oBAC7C,6GAA6G;oBAC7G,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE;wBACnC,aAAa,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAChD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;4BACjC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;yBACvB,CAAC,CAAC;wBACH,QAAQ;qBACT,CAAC;yBACC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;iBAC/B;YACH,CAAC,CACF,CAAA;SACF;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;SAC9C;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAE,IAAY,EAAE,WAAwB,EAAE,GAAQ;QAChE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,GAAG,CAAC,4CAA4C,EAAE,IAAI,CAAC,CAAA;YAC5D,OAAM;SACP;QAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;QAE7B,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAA;QAEvC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;YAE7C,4BAA4B;YAC5B,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACrC,CAAC,CAAC,CAAA;YAEF,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,4BAA4B,EAAE;gBAChE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,aAAa,EAAE;aAClD,CAAC,CAAC,CAAA;SACJ;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA;YAElC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;gBACnD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;oBACnE,IAAI,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;oBAC/D,OAAM;iBACP;gBAED,IAAI;oBACF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;oBAEpC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;iBACrC;gBAAC,OAAO,GAAQ,EAAE;oBACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;iBACpB;YACH,CAAC,CAAC,CAAC;iBACA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;SAC/B;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAE,EAAU,EAAE,MAAuB;QACnD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;QAEtB,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,OAAM;SACP;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;YACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;SAC7B;QAED,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,8BAA8B;YAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;SAC5B;aAAM;YACL,kCAAkC;YAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;SAC/B;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAE,IAAY,EAAE,GAAY;QAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC9C,OAAM;SACP;QAED,mDAAmD;QACnD,IAAI;YACF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;SACzB;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAA;YACpD,OAAM;SACP;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAE3C,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAChC,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE;oBAC7C,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC,CAAA;aACJ;SACF;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACtC,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAE,GAAY;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAA;QAClD,QAAQ,eAAe,EAAE;YACvB,KAAK,YAAY;gBACf,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,EAAE;oBACrB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,mEAAmE,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA;iBACvH;gBAED,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE;oBACnB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,iEAAiE,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;iBACnH;gBAED,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;YAClC,KAAK,cAAc;gBACjB,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC9B;gBACE,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAA;SACtH;IACH,CAAC;IAED;;;OAGG;IACH,UAAU,CAAE,EAAU;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,SAAS,CAAE,KAAiB;QAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAE,GAAS;QAClB,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,IAAI,CAAE,IAAY,EAAE,IAA6E;QAC/F,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QAEnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACxB,aAAa,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAChG,QAAQ,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;SAC7C,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,OAAO,CAAE,IAAY,EAAE,GAAS;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAExC,IAAI,WAAW,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;YAClD,MAAM,GAAG,GAAG,sBAAsB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,6CAA6C,CAAA;YAEvG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnB,OAAM;SACP;QAED,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IACxC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAE,OAAgB;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAA;QAClD,QAAQ,eAAe,EAAE;YACvB,KAAK,cAAc;gBACjB,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE;oBAC7B,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,kDAAkD,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAA;iBAC7G;gBACD,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;oBACvB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,4CAA4C,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;iBACjG;gBACD,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;oBACzB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAA;iBACrG;gBACD,MAAK;YACP,KAAK,YAAY;gBACf,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE;oBAC7B,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,8DAA8D,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;iBACtH;gBACD,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;oBACzB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,0DAA0D,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA;iBAC9G;gBACD,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE;oBACrC,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;iBAClG;gBACD,MAAK;YACP;gBACE,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAA;SACxH;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE3D,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;SAC1C;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAE,OAAgB;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAA;QAClD,QAAQ,eAAe,EAAE;YACvB,KAAK,YAAY;gBACf,OAAO,CAAC,KAAK,GAAG,WAAW,EAAE,CAAA;gBAC7B,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAChD,KAAK,cAAc;gBACjB,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACvC;gBACE,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,kDAAkD,CAAC,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAA;SACrH;IACH,CAAC;IAED,cAAc;IAEd;;OAEG;IACH,cAAc,CAAE,KAAa;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,CAAA;SACnE;QAED,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,qBAAqB,CAAC,CAAA;SACrE;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEtD,IAAI,YAAY,IAAI,IAAI,EAAE;YACxB,OAAO,EAAE,CAAA;SACV;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;IACnE,CAAC;IAED;;OAEG;IACH,aAAa,CAAE,KAAkB;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;SAC1C;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;QACxB,IAAI,OAAO,GAAY,KAAK,CAAC,MAAM,CAAA;QAEnC,IAAI,OAAO,YAAY,UAAU,EAAE;YACjC,OAAO,GAAG;gBACR,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,KAAK;gBACL,IAAI,EAAE,OAAO;aACd,CAAA;SACF;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QAEnC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChC,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAE1C,0CAA0C;YAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACjC,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE;wBACzC,MAAM,EAAE,OAAO;qBAChB,CAAC,CAAC,CAAA;oBAEH,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;qBACxB;iBACF;aACF;YAED,8BAA8B;YAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjD,CAAC,CAAC;aACC,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC,CAAC,CAAA;QAEJ,OAAO,IAAI,CAAA;IACb,CAAC;IAQD;;OAEG;IACH,SAAS,CAAE,KAAa;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;SAC1C;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAEjC,IAAI,QAAQ,KAAK,4BAA4B,EAAE;YAC7C,OAAM;SACP;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAEhC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;gBACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;aAClE;SACF;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAE,KAAa;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;SACzC;QAED,0DAA0D;QAC1D,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAEhC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAEjC,IAAI,QAAQ,KAAK,4BAA4B,EAAE;YAC7C,OAAM;SACP;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAE9C,IAAI,CAAC,GAAG,CAAC,sDAAsD,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;QAEjG,IAAI,aAAa,IAAI,SAAS,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAEnC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;gBACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;aACnE;SACF;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;SACzC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;SACzC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,gBAAgB,CAA4B,IAAO,EAAE,QAAmC,EAAE,OAA2C;QACnI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAE/B,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,mBAAmB,CAA4B,IAAO,EAAE,QAA+C,EAAE,OAAwC;QAC/I,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAElD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEhC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;SAC3B;IACH,CAAC;CACF"}
|