@libp2p/gossipsub 14.1.1-6059227cb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/dist/index.min.js +19 -0
- package/dist/index.min.js.map +7 -0
- package/dist/src/config.d.ts +32 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +2 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/constants.d.ts +213 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +217 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/errors.d.ts +9 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +15 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/gossipsub.d.ts +419 -0
- package/dist/src/gossipsub.d.ts.map +1 -0
- package/dist/src/gossipsub.js +2520 -0
- package/dist/src/gossipsub.js.map +1 -0
- package/dist/src/index.d.ts +344 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +43 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/message/decodeRpc.d.ts +11 -0
- package/dist/src/message/decodeRpc.d.ts.map +1 -0
- package/dist/src/message/decodeRpc.js +10 -0
- package/dist/src/message/decodeRpc.js.map +1 -0
- package/dist/src/message/index.d.ts +2 -0
- package/dist/src/message/index.d.ts.map +1 -0
- package/dist/src/message/index.js +2 -0
- package/dist/src/message/index.js.map +1 -0
- package/dist/src/message/rpc.d.ts +99 -0
- package/dist/src/message/rpc.d.ts.map +1 -0
- package/dist/src/message/rpc.js +663 -0
- package/dist/src/message/rpc.js.map +1 -0
- package/dist/src/message-cache.d.ts +80 -0
- package/dist/src/message-cache.d.ts.map +1 -0
- package/dist/src/message-cache.js +144 -0
- package/dist/src/message-cache.js.map +1 -0
- package/dist/src/metrics.d.ts +467 -0
- package/dist/src/metrics.d.ts.map +1 -0
- package/dist/src/metrics.js +896 -0
- package/dist/src/metrics.js.map +1 -0
- package/dist/src/score/compute-score.d.ts +4 -0
- package/dist/src/score/compute-score.d.ts.map +1 -0
- package/dist/src/score/compute-score.js +75 -0
- package/dist/src/score/compute-score.js.map +1 -0
- package/dist/src/score/index.d.ts +4 -0
- package/dist/src/score/index.d.ts.map +1 -0
- package/dist/src/score/index.js +4 -0
- package/dist/src/score/index.js.map +1 -0
- package/dist/src/score/message-deliveries.d.ts +45 -0
- package/dist/src/score/message-deliveries.d.ts.map +1 -0
- package/dist/src/score/message-deliveries.js +75 -0
- package/dist/src/score/message-deliveries.js.map +1 -0
- package/dist/src/score/peer-score-params.d.ts +125 -0
- package/dist/src/score/peer-score-params.d.ts.map +1 -0
- package/dist/src/score/peer-score-params.js +159 -0
- package/dist/src/score/peer-score-params.js.map +1 -0
- package/dist/src/score/peer-score-thresholds.d.ts +31 -0
- package/dist/src/score/peer-score-thresholds.d.ts.map +1 -0
- package/dist/src/score/peer-score-thresholds.js +32 -0
- package/dist/src/score/peer-score-thresholds.js.map +1 -0
- package/dist/src/score/peer-score.d.ts +119 -0
- package/dist/src/score/peer-score.d.ts.map +1 -0
- package/dist/src/score/peer-score.js +459 -0
- package/dist/src/score/peer-score.js.map +1 -0
- package/dist/src/score/peer-stats.d.ts +32 -0
- package/dist/src/score/peer-stats.d.ts.map +1 -0
- package/dist/src/score/peer-stats.js +2 -0
- package/dist/src/score/peer-stats.js.map +1 -0
- package/dist/src/score/scoreMetrics.d.ts +23 -0
- package/dist/src/score/scoreMetrics.d.ts.map +1 -0
- package/dist/src/score/scoreMetrics.js +155 -0
- package/dist/src/score/scoreMetrics.js.map +1 -0
- package/dist/src/stream.d.ts +30 -0
- package/dist/src/stream.d.ts.map +1 -0
- package/dist/src/stream.js +55 -0
- package/dist/src/stream.js.map +1 -0
- package/dist/src/tracer.d.ts +53 -0
- package/dist/src/tracer.d.ts.map +1 -0
- package/dist/src/tracer.js +155 -0
- package/dist/src/tracer.js.map +1 -0
- package/dist/src/types.d.ts +148 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +90 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/buildRawMessage.d.ts +20 -0
- package/dist/src/utils/buildRawMessage.d.ts.map +1 -0
- package/dist/src/utils/buildRawMessage.js +151 -0
- package/dist/src/utils/buildRawMessage.js.map +1 -0
- package/dist/src/utils/create-gossip-rpc.d.ts +7 -0
- package/dist/src/utils/create-gossip-rpc.d.ts.map +1 -0
- package/dist/src/utils/create-gossip-rpc.js +31 -0
- package/dist/src/utils/create-gossip-rpc.js.map +1 -0
- package/dist/src/utils/index.d.ts +4 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +4 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/messageIdToString.d.ts +5 -0
- package/dist/src/utils/messageIdToString.d.ts.map +1 -0
- package/dist/src/utils/messageIdToString.js +8 -0
- package/dist/src/utils/messageIdToString.js.map +1 -0
- package/dist/src/utils/msgIdFn.d.ts +10 -0
- package/dist/src/utils/msgIdFn.d.ts.map +1 -0
- package/dist/src/utils/msgIdFn.js +23 -0
- package/dist/src/utils/msgIdFn.js.map +1 -0
- package/dist/src/utils/multiaddr.d.ts +3 -0
- package/dist/src/utils/multiaddr.d.ts.map +1 -0
- package/dist/src/utils/multiaddr.js +15 -0
- package/dist/src/utils/multiaddr.js.map +1 -0
- package/dist/src/utils/publishConfig.d.ts +8 -0
- package/dist/src/utils/publishConfig.d.ts.map +1 -0
- package/dist/src/utils/publishConfig.js +25 -0
- package/dist/src/utils/publishConfig.js.map +1 -0
- package/dist/src/utils/set.d.ts +14 -0
- package/dist/src/utils/set.d.ts.map +1 -0
- package/dist/src/utils/set.js +41 -0
- package/dist/src/utils/set.js.map +1 -0
- package/dist/src/utils/shuffle.d.ts +7 -0
- package/dist/src/utils/shuffle.d.ts.map +1 -0
- package/dist/src/utils/shuffle.js +21 -0
- package/dist/src/utils/shuffle.js.map +1 -0
- package/dist/src/utils/time-cache.d.ts +22 -0
- package/dist/src/utils/time-cache.d.ts.map +1 -0
- package/dist/src/utils/time-cache.js +54 -0
- package/dist/src/utils/time-cache.js.map +1 -0
- package/package.json +142 -0
- package/src/config.ts +31 -0
- package/src/constants.ts +261 -0
- package/src/errors.ts +17 -0
- package/src/gossipsub.ts +3061 -0
- package/src/index.ts +404 -0
- package/src/message/decodeRpc.ts +19 -0
- package/src/message/index.ts +1 -0
- package/src/message/rpc.proto +58 -0
- package/src/message/rpc.ts +848 -0
- package/src/message-cache.ts +196 -0
- package/src/metrics.ts +1014 -0
- package/src/score/compute-score.ts +98 -0
- package/src/score/index.ts +3 -0
- package/src/score/message-deliveries.ts +95 -0
- package/src/score/peer-score-params.ts +316 -0
- package/src/score/peer-score-thresholds.ts +70 -0
- package/src/score/peer-score.ts +565 -0
- package/src/score/peer-stats.ts +33 -0
- package/src/score/scoreMetrics.ts +215 -0
- package/src/stream.ts +79 -0
- package/src/tracer.ts +177 -0
- package/src/types.ts +178 -0
- package/src/utils/buildRawMessage.ts +174 -0
- package/src/utils/create-gossip-rpc.ts +34 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/messageIdToString.ts +8 -0
- package/src/utils/msgIdFn.ts +24 -0
- package/src/utils/multiaddr.ts +19 -0
- package/src/utils/publishConfig.ts +33 -0
- package/src/utils/set.ts +43 -0
- package/src/utils/shuffle.ts +21 -0
- package/src/utils/time-cache.ts +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/message/rpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { RPC } from './message/rpc.js';
|
|
2
|
+
import type { MessageId, MsgIdStr, PeerIdStr, TopicStr, MsgIdToStrFn } from './types.js';
|
|
3
|
+
export type CacheEntry = MessageId & {
|
|
4
|
+
topic: TopicStr;
|
|
5
|
+
};
|
|
6
|
+
export type MessageCacheRecord = Pick<MessageCacheEntry, 'message' | 'originatingPeers'>;
|
|
7
|
+
interface MessageCacheEntry {
|
|
8
|
+
message: RPC.Message;
|
|
9
|
+
/**
|
|
10
|
+
* Tracks if the message has been validated by the app layer and thus forwarded
|
|
11
|
+
*/
|
|
12
|
+
validated: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Tracks peers that sent this message before it has been validated by the app layer
|
|
15
|
+
*/
|
|
16
|
+
originatingPeers: Set<PeerIdStr>;
|
|
17
|
+
/**
|
|
18
|
+
* For every message and peer the number of times this peer asked for the message
|
|
19
|
+
*/
|
|
20
|
+
iwantCounts: Map<PeerIdStr, number>;
|
|
21
|
+
}
|
|
22
|
+
export declare class MessageCache {
|
|
23
|
+
/**
|
|
24
|
+
* The number of indices in the cache history used for gossiping. That means that a message
|
|
25
|
+
* won't get gossiped anymore when shift got called `gossip` many times after inserting the
|
|
26
|
+
* message in the cache.
|
|
27
|
+
*/
|
|
28
|
+
private readonly gossip;
|
|
29
|
+
msgs: Map<string, MessageCacheEntry>;
|
|
30
|
+
msgIdToStrFn: MsgIdToStrFn;
|
|
31
|
+
history: CacheEntry[][];
|
|
32
|
+
/** Track with accounting of messages in the mcache that are not yet validated */
|
|
33
|
+
notValidatedCount: number;
|
|
34
|
+
/**
|
|
35
|
+
* Holds history of messages in timebounded history arrays
|
|
36
|
+
*/
|
|
37
|
+
constructor(
|
|
38
|
+
/**
|
|
39
|
+
* The number of indices in the cache history used for gossiping. That means that a message
|
|
40
|
+
* won't get gossiped anymore when shift got called `gossip` many times after inserting the
|
|
41
|
+
* message in the cache.
|
|
42
|
+
*/
|
|
43
|
+
gossip: number, historyCapacity: number, msgIdToStrFn: MsgIdToStrFn);
|
|
44
|
+
get size(): number;
|
|
45
|
+
/**
|
|
46
|
+
* Adds a message to the current window and the cache
|
|
47
|
+
* Returns true if the message is not known and is inserted in the cache
|
|
48
|
+
*/
|
|
49
|
+
put(messageId: MessageId, msg: RPC.Message, validated?: boolean): boolean;
|
|
50
|
+
observeDuplicate(msgId: MsgIdStr, fromPeerIdStr: PeerIdStr): void;
|
|
51
|
+
/**
|
|
52
|
+
* Retrieves a message from the cache by its ID, if it is still present
|
|
53
|
+
*/
|
|
54
|
+
get(msgId: Uint8Array): RPC.Message | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Increases the iwant count for the given message by one and returns the message together
|
|
57
|
+
* with the iwant if the message exists.
|
|
58
|
+
*/
|
|
59
|
+
getWithIWantCount(msgIdStr: string, p: string): {
|
|
60
|
+
msg: RPC.Message;
|
|
61
|
+
count: number;
|
|
62
|
+
} | null;
|
|
63
|
+
/**
|
|
64
|
+
* Retrieves a list of message IDs for a set of topics
|
|
65
|
+
*/
|
|
66
|
+
getGossipIDs(topics: Set<string>): Map<string, Uint8Array[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Gets a message with msgId and tags it as validated.
|
|
69
|
+
* This function also returns the known peers that have sent us this message. This is used to
|
|
70
|
+
* prevent us sending redundant messages to peers who have already propagated it.
|
|
71
|
+
*/
|
|
72
|
+
validate(msgId: MsgIdStr): MessageCacheRecord | null;
|
|
73
|
+
/**
|
|
74
|
+
* Shifts the current window, discarding messages older than this.history.length of the cache
|
|
75
|
+
*/
|
|
76
|
+
shift(): void;
|
|
77
|
+
remove(msgId: MsgIdStr): MessageCacheRecord | null;
|
|
78
|
+
}
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=message-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-cache.d.ts","sourceRoot":"","sources":["../../src/message-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAExF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG;IACnC,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,kBAAkB,CAAC,CAAA;AAExF,UAAU,iBAAiB;IACzB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAA;IACpB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAChC;;OAEG;IACH,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;CACpC;AAED,qBAAa,YAAY;IAcrB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM;IAlBzB,IAAI,iCAAyC;IAE7C,YAAY,EAAE,YAAY,CAAA;IAE1B,OAAO,EAAE,UAAU,EAAE,EAAE,CAAK;IAE5B,iFAAiF;IACjF,iBAAiB,SAAI;IAErB;;OAEG;;IAED;;;;OAIG;IACc,MAAM,EAAE,MAAM,EAC/B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,YAAY;IAQ5B,IAAI,IAAI,IAAK,MAAM,CAElB;IAED;;;OAGG;IACH,GAAG,CAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,UAAQ,GAAG,OAAO;IAuBxE,gBAAgB,CAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,GAAG,IAAI;IAalE;;OAEG;IACH,GAAG,CAAE,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,GAAG,SAAS;IAIhD;;;OAGG;IACH,iBAAiB,CAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAY3F;;OAEG;IACH,YAAY,CAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAmB7D;;;;OAIG;IACH,QAAQ,CAAE,KAAK,EAAE,QAAQ,GAAG,kBAAkB,GAAG,IAAI;IAkBrD;;OAEG;IACH,KAAK,IAAK,IAAI;IAgBd,MAAM,CAAE,KAAK,EAAE,QAAQ,GAAG,kBAAkB,GAAG,IAAI;CAUpD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
export class MessageCache {
|
|
2
|
+
gossip;
|
|
3
|
+
msgs = new Map();
|
|
4
|
+
msgIdToStrFn;
|
|
5
|
+
history = [];
|
|
6
|
+
/** Track with accounting of messages in the mcache that are not yet validated */
|
|
7
|
+
notValidatedCount = 0;
|
|
8
|
+
/**
|
|
9
|
+
* Holds history of messages in timebounded history arrays
|
|
10
|
+
*/
|
|
11
|
+
constructor(
|
|
12
|
+
/**
|
|
13
|
+
* The number of indices in the cache history used for gossiping. That means that a message
|
|
14
|
+
* won't get gossiped anymore when shift got called `gossip` many times after inserting the
|
|
15
|
+
* message in the cache.
|
|
16
|
+
*/
|
|
17
|
+
gossip, historyCapacity, msgIdToStrFn) {
|
|
18
|
+
this.gossip = gossip;
|
|
19
|
+
this.msgIdToStrFn = msgIdToStrFn;
|
|
20
|
+
for (let i = 0; i < historyCapacity; i++) {
|
|
21
|
+
this.history[i] = [];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
get size() {
|
|
25
|
+
return this.msgs.size;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Adds a message to the current window and the cache
|
|
29
|
+
* Returns true if the message is not known and is inserted in the cache
|
|
30
|
+
*/
|
|
31
|
+
put(messageId, msg, validated = false) {
|
|
32
|
+
const { msgIdStr } = messageId;
|
|
33
|
+
// Don't add duplicate entries to the cache.
|
|
34
|
+
if (this.msgs.has(msgIdStr)) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
this.msgs.set(msgIdStr, {
|
|
38
|
+
message: msg,
|
|
39
|
+
validated,
|
|
40
|
+
originatingPeers: new Set(),
|
|
41
|
+
iwantCounts: new Map()
|
|
42
|
+
});
|
|
43
|
+
this.history[0].push({ ...messageId, topic: msg.topic });
|
|
44
|
+
if (!validated) {
|
|
45
|
+
this.notValidatedCount++;
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
observeDuplicate(msgId, fromPeerIdStr) {
|
|
50
|
+
const entry = this.msgs.get(msgId);
|
|
51
|
+
if ((entry != null) &&
|
|
52
|
+
// if the message is already validated, we don't need to store extra peers sending us
|
|
53
|
+
// duplicates as the message has already been forwarded
|
|
54
|
+
!entry.validated) {
|
|
55
|
+
entry.originatingPeers.add(fromPeerIdStr);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Retrieves a message from the cache by its ID, if it is still present
|
|
60
|
+
*/
|
|
61
|
+
get(msgId) {
|
|
62
|
+
return this.msgs.get(this.msgIdToStrFn(msgId))?.message;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Increases the iwant count for the given message by one and returns the message together
|
|
66
|
+
* with the iwant if the message exists.
|
|
67
|
+
*/
|
|
68
|
+
getWithIWantCount(msgIdStr, p) {
|
|
69
|
+
const msg = this.msgs.get(msgIdStr);
|
|
70
|
+
if (msg == null) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const count = (msg.iwantCounts.get(p) ?? 0) + 1;
|
|
74
|
+
msg.iwantCounts.set(p, count);
|
|
75
|
+
return { msg: msg.message, count };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Retrieves a list of message IDs for a set of topics
|
|
79
|
+
*/
|
|
80
|
+
getGossipIDs(topics) {
|
|
81
|
+
const msgIdsByTopic = new Map();
|
|
82
|
+
for (let i = 0; i < this.gossip; i++) {
|
|
83
|
+
this.history[i].forEach((entry) => {
|
|
84
|
+
const msg = this.msgs.get(entry.msgIdStr);
|
|
85
|
+
if ((msg?.validated ?? false) && topics.has(entry.topic)) {
|
|
86
|
+
let msgIds = msgIdsByTopic.get(entry.topic);
|
|
87
|
+
if (msgIds == null) {
|
|
88
|
+
msgIds = [];
|
|
89
|
+
msgIdsByTopic.set(entry.topic, msgIds);
|
|
90
|
+
}
|
|
91
|
+
msgIds.push(entry.msgId);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return msgIdsByTopic;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Gets a message with msgId and tags it as validated.
|
|
99
|
+
* This function also returns the known peers that have sent us this message. This is used to
|
|
100
|
+
* prevent us sending redundant messages to peers who have already propagated it.
|
|
101
|
+
*/
|
|
102
|
+
validate(msgId) {
|
|
103
|
+
const entry = this.msgs.get(msgId);
|
|
104
|
+
if (entry == null) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
if (!entry.validated) {
|
|
108
|
+
this.notValidatedCount--;
|
|
109
|
+
}
|
|
110
|
+
const { message, originatingPeers } = entry;
|
|
111
|
+
entry.validated = true;
|
|
112
|
+
// Clear the known peers list (after a message is validated, it is forwarded and we no
|
|
113
|
+
// longer need to store the originating peers).
|
|
114
|
+
entry.originatingPeers = new Set();
|
|
115
|
+
return { message, originatingPeers };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Shifts the current window, discarding messages older than this.history.length of the cache
|
|
119
|
+
*/
|
|
120
|
+
shift() {
|
|
121
|
+
const lastCacheEntries = this.history[this.history.length - 1];
|
|
122
|
+
lastCacheEntries.forEach((cacheEntry) => {
|
|
123
|
+
const entry = this.msgs.get(cacheEntry.msgIdStr);
|
|
124
|
+
if (entry != null) {
|
|
125
|
+
this.msgs.delete(cacheEntry.msgIdStr);
|
|
126
|
+
if (!entry.validated) {
|
|
127
|
+
this.notValidatedCount--;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
this.history.pop();
|
|
132
|
+
this.history.unshift([]);
|
|
133
|
+
}
|
|
134
|
+
remove(msgId) {
|
|
135
|
+
const entry = this.msgs.get(msgId);
|
|
136
|
+
if (entry == null) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
// Keep the message on the history vector, it will be dropped on a shift()
|
|
140
|
+
this.msgs.delete(msgId);
|
|
141
|
+
return entry;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=message-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-cache.js","sourceRoot":"","sources":["../../src/message-cache.ts"],"names":[],"mappings":"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"}
|