@libp2p/peer-store 1.0.5 → 1.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/dist/src/address-book.d.ts +1 -3
- package/dist/src/address-book.d.ts.map +1 -1
- package/dist/src/address-book.js +68 -45
- package/dist/src/address-book.js.map +1 -1
- package/dist/src/index.d.ts +8 -20
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +28 -26
- package/dist/src/index.js.map +1 -1
- package/dist/src/key-book.d.ts +1 -1
- package/dist/src/key-book.d.ts.map +1 -1
- package/dist/src/key-book.js +35 -12
- package/dist/src/key-book.js.map +1 -1
- package/dist/src/metadata-book.d.ts +1 -1
- package/dist/src/metadata-book.d.ts.map +1 -1
- package/dist/src/metadata-book.js +63 -29
- package/dist/src/metadata-book.js.map +1 -1
- package/dist/src/pb/peer.d.ts +25 -216
- package/dist/src/pb/peer.d.ts.map +1 -0
- package/dist/src/pb/peer.js +52 -641
- package/dist/src/pb/peer.js.map +1 -0
- package/dist/src/proto-book.d.ts +1 -1
- package/dist/src/proto-book.d.ts.map +1 -1
- package/dist/src/proto-book.js +53 -33
- package/dist/src/proto-book.js.map +1 -1
- package/dist/src/store.d.ts.map +1 -1
- package/dist/src/store.js +39 -28
- package/dist/src/store.js.map +1 -1
- package/package.json +21 -23
- package/src/README.md +4 -4
- package/src/address-book.ts +76 -59
- package/src/index.ts +34 -46
- package/src/key-book.ts +38 -15
- package/src/metadata-book.ts +68 -34
- package/src/pb/peer.ts +76 -0
- package/src/proto-book.ts +58 -38
- package/src/store.ts +47 -31
- package/src/pb/peer.d.ts +0 -222
- package/src/pb/peer.js +0 -641
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Multiaddr } from '@multiformats/multiaddr';
|
|
2
2
|
import { RecordEnvelope } from '@libp2p/peer-record';
|
|
3
|
-
import type { PeerStore } from '@libp2p/interfaces/peer-store';
|
|
3
|
+
import type { AddressFilter, PeerStore } from '@libp2p/interfaces/peer-store';
|
|
4
4
|
import type { Store } from './store.js';
|
|
5
|
-
import type { AddressFilter, AddressSorter } from './index.js';
|
|
6
5
|
import type { Envelope } from '@libp2p/interfaces/record';
|
|
7
6
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
8
7
|
export declare class PeerStoreAddressBook {
|
|
@@ -26,6 +25,5 @@ export declare class PeerStoreAddressBook {
|
|
|
26
25
|
set(peerId: PeerId, multiaddrs: Multiaddr[]): Promise<void>;
|
|
27
26
|
add(peerId: PeerId, multiaddrs: Multiaddr[]): Promise<void>;
|
|
28
27
|
delete(peerId: PeerId): Promise<void>;
|
|
29
|
-
getMultiaddrsForPeer(peerId: PeerId, addressSorter?: AddressSorter): Promise<Multiaddr[]>;
|
|
30
28
|
}
|
|
31
29
|
//# sourceMappingURL=address-book.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-book.d.ts","sourceRoot":"","sources":["../../src/address-book.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAc,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"address-book.d.ts","sourceRoot":"","sources":["../../src/address-book.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAc,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAQhE,OAAO,KAAK,EAAE,aAAa,EAAkC,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAC7G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAUxD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAEhC,aAAa,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,aAAa;IAMnG;;;;OAIG;IACG,iBAAiB,CAAE,QAAQ,EAAE,QAAQ;IAyErC,cAAc,CAAE,MAAM,EAAE,MAAM;IAmBpC;;;OAGG;IACG,aAAa,CAAE,MAAM,EAAE,MAAM;IAU7B,GAAG,CAAE,MAAM,EAAE,MAAM;IAuBnB,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;IAsE5C,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;IAoE5C,MAAM,CAAE,MAAM,EAAE,MAAM;CAoC7B"}
|
package/dist/src/address-book.js
CHANGED
|
@@ -8,7 +8,6 @@ import all from 'it-all';
|
|
|
8
8
|
import filter from 'it-filter';
|
|
9
9
|
import map from 'it-map';
|
|
10
10
|
import each from 'it-foreach';
|
|
11
|
-
import { base58btc } from 'multiformats/bases/base58';
|
|
12
11
|
import { peerIdFromPeerId } from '@libp2p/peer-id';
|
|
13
12
|
import { CustomEvent } from '@libp2p/interfaces';
|
|
14
13
|
const log = logger('libp2p:peer-store:address-book');
|
|
@@ -28,10 +27,11 @@ export class PeerStoreAddressBook {
|
|
|
28
27
|
* into the AddressBook.
|
|
29
28
|
*/
|
|
30
29
|
async consumePeerRecord(envelope) {
|
|
31
|
-
log('consumePeerRecord await write lock');
|
|
30
|
+
log.trace('consumePeerRecord await write lock');
|
|
32
31
|
const release = await this.store.lock.writeLock();
|
|
33
|
-
log('consumePeerRecord got write lock');
|
|
32
|
+
log.trace('consumePeerRecord got write lock');
|
|
34
33
|
let peerId;
|
|
34
|
+
let peer;
|
|
35
35
|
let updatedPeer;
|
|
36
36
|
try {
|
|
37
37
|
let peerRecord;
|
|
@@ -54,37 +54,43 @@ export class PeerStoreAddressBook {
|
|
|
54
54
|
return false;
|
|
55
55
|
}
|
|
56
56
|
if (await this.store.has(peerId)) {
|
|
57
|
-
|
|
57
|
+
peer = await this.store.load(peerId);
|
|
58
58
|
if (peer.peerRecordEnvelope != null) {
|
|
59
59
|
const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope);
|
|
60
60
|
const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);
|
|
61
61
|
// ensure seq is greater than, or equal to, the last received
|
|
62
62
|
if (storedRecord.seqNumber >= peerRecord.seqNumber) {
|
|
63
|
+
log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);
|
|
63
64
|
return false;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
}
|
|
68
|
+
const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter, true);
|
|
67
69
|
// Replace unsigned addresses by the new ones from the record
|
|
68
70
|
// TODO: Once we have ttls for the addresses, we should merge these in
|
|
69
71
|
updatedPeer = await this.store.patchOrCreate(peerId, {
|
|
70
|
-
addresses
|
|
72
|
+
addresses,
|
|
71
73
|
peerRecordEnvelope: envelope.marshal()
|
|
72
74
|
});
|
|
73
|
-
log(
|
|
75
|
+
log('stored provided peer record for %p', peerRecord.peerId);
|
|
74
76
|
}
|
|
75
77
|
finally {
|
|
76
|
-
log('consumePeerRecord release write lock');
|
|
78
|
+
log.trace('consumePeerRecord release write lock');
|
|
77
79
|
release();
|
|
78
80
|
}
|
|
79
81
|
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
80
|
-
detail: {
|
|
82
|
+
detail: {
|
|
83
|
+
peerId,
|
|
84
|
+
multiaddrs: updatedPeer.addresses.map(({ multiaddr }) => multiaddr),
|
|
85
|
+
oldMultiaddrs: peer == null ? [] : peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
86
|
+
}
|
|
81
87
|
}));
|
|
82
88
|
return true;
|
|
83
89
|
}
|
|
84
90
|
async getRawEnvelope(peerId) {
|
|
85
|
-
log('getRawEnvelope await read lock');
|
|
91
|
+
log.trace('getRawEnvelope await read lock');
|
|
86
92
|
const release = await this.store.lock.readLock();
|
|
87
|
-
log('getRawEnvelope got read lock');
|
|
93
|
+
log.trace('getRawEnvelope got read lock');
|
|
88
94
|
try {
|
|
89
95
|
const peer = await this.store.load(peerId);
|
|
90
96
|
return peer.peerRecordEnvelope;
|
|
@@ -95,7 +101,7 @@ export class PeerStoreAddressBook {
|
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
103
|
finally {
|
|
98
|
-
log('getRawEnvelope release read lock');
|
|
104
|
+
log.trace('getRawEnvelope release read lock');
|
|
99
105
|
release();
|
|
100
106
|
}
|
|
101
107
|
}
|
|
@@ -112,9 +118,9 @@ export class PeerStoreAddressBook {
|
|
|
112
118
|
}
|
|
113
119
|
async get(peerId) {
|
|
114
120
|
peerId = peerIdFromPeerId(peerId);
|
|
115
|
-
log('get wait for read lock');
|
|
121
|
+
log.trace('get wait for read lock');
|
|
116
122
|
const release = await this.store.lock.readLock();
|
|
117
|
-
log('get got read lock');
|
|
123
|
+
log.trace('get got read lock');
|
|
118
124
|
try {
|
|
119
125
|
const peer = await this.store.load(peerId);
|
|
120
126
|
return peer.addresses;
|
|
@@ -125,7 +131,7 @@ export class PeerStoreAddressBook {
|
|
|
125
131
|
}
|
|
126
132
|
}
|
|
127
133
|
finally {
|
|
128
|
-
log('get release read lock');
|
|
134
|
+
log.trace('get release read lock');
|
|
129
135
|
release();
|
|
130
136
|
}
|
|
131
137
|
return [];
|
|
@@ -136,10 +142,11 @@ export class PeerStoreAddressBook {
|
|
|
136
142
|
log.error('multiaddrs must be an array of Multiaddrs');
|
|
137
143
|
throw errcode(new Error('multiaddrs must be an array of Multiaddrs'), codes.ERR_INVALID_PARAMETERS);
|
|
138
144
|
}
|
|
139
|
-
log('set await write lock');
|
|
145
|
+
log.trace('set await write lock');
|
|
140
146
|
const release = await this.store.lock.writeLock();
|
|
141
|
-
log('set got write lock');
|
|
147
|
+
log.trace('set got write lock');
|
|
142
148
|
let hasPeer = false;
|
|
149
|
+
let peer;
|
|
143
150
|
let updatedPeer;
|
|
144
151
|
try {
|
|
145
152
|
const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter);
|
|
@@ -148,7 +155,7 @@ export class PeerStoreAddressBook {
|
|
|
148
155
|
return;
|
|
149
156
|
}
|
|
150
157
|
try {
|
|
151
|
-
|
|
158
|
+
peer = await this.store.load(peerId);
|
|
152
159
|
hasPeer = true;
|
|
153
160
|
if (new Set([
|
|
154
161
|
...addresses.map(({ multiaddr }) => multiaddr.toString()),
|
|
@@ -164,20 +171,27 @@ export class PeerStoreAddressBook {
|
|
|
164
171
|
}
|
|
165
172
|
}
|
|
166
173
|
updatedPeer = await this.store.patchOrCreate(peerId, { addresses });
|
|
167
|
-
log(
|
|
174
|
+
log('set multiaddrs for %p', peerId);
|
|
168
175
|
}
|
|
169
176
|
finally {
|
|
177
|
+
log.trace('set multiaddrs for %p', peerId);
|
|
170
178
|
log('set release write lock');
|
|
171
179
|
release();
|
|
172
180
|
}
|
|
173
181
|
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
174
|
-
detail: {
|
|
182
|
+
detail: {
|
|
183
|
+
peerId,
|
|
184
|
+
multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr),
|
|
185
|
+
oldMultiaddrs: peer == null ? [] : peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
186
|
+
}
|
|
175
187
|
}));
|
|
176
188
|
// Notify the existence of a new peer
|
|
177
189
|
if (!hasPeer) {
|
|
178
190
|
this.dispatchEvent(new CustomEvent('peer', {
|
|
179
191
|
detail: {
|
|
180
|
-
peerId
|
|
192
|
+
id: peerId,
|
|
193
|
+
multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr),
|
|
194
|
+
protocols: updatedPeer.protocols
|
|
181
195
|
}
|
|
182
196
|
}));
|
|
183
197
|
}
|
|
@@ -188,10 +202,11 @@ export class PeerStoreAddressBook {
|
|
|
188
202
|
log.error('multiaddrs must be an array of Multiaddrs');
|
|
189
203
|
throw errcode(new Error('multiaddrs must be an array of Multiaddrs'), codes.ERR_INVALID_PARAMETERS);
|
|
190
204
|
}
|
|
191
|
-
log('add await write lock');
|
|
205
|
+
log.trace('add await write lock');
|
|
192
206
|
const release = await this.store.lock.writeLock();
|
|
193
|
-
log('add got write lock');
|
|
207
|
+
log.trace('add got write lock');
|
|
194
208
|
let hasPeer;
|
|
209
|
+
let peer;
|
|
195
210
|
let updatedPeer;
|
|
196
211
|
try {
|
|
197
212
|
const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter);
|
|
@@ -200,7 +215,7 @@ export class PeerStoreAddressBook {
|
|
|
200
215
|
return;
|
|
201
216
|
}
|
|
202
217
|
try {
|
|
203
|
-
|
|
218
|
+
peer = await this.store.load(peerId);
|
|
204
219
|
hasPeer = true;
|
|
205
220
|
if (new Set([
|
|
206
221
|
...addresses.map(({ multiaddr }) => multiaddr.toString()),
|
|
@@ -215,55 +230,63 @@ export class PeerStoreAddressBook {
|
|
|
215
230
|
}
|
|
216
231
|
}
|
|
217
232
|
updatedPeer = await this.store.mergeOrCreate(peerId, { addresses });
|
|
218
|
-
log(
|
|
233
|
+
log('added multiaddrs for %p', peerId);
|
|
219
234
|
}
|
|
220
235
|
finally {
|
|
221
|
-
log('set release write lock');
|
|
236
|
+
log.trace('set release write lock');
|
|
222
237
|
release();
|
|
223
238
|
}
|
|
224
239
|
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
225
|
-
detail: {
|
|
240
|
+
detail: {
|
|
241
|
+
peerId,
|
|
242
|
+
multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr),
|
|
243
|
+
oldMultiaddrs: peer == null ? [] : peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
244
|
+
}
|
|
226
245
|
}));
|
|
227
246
|
// Notify the existence of a new peer
|
|
228
247
|
if (hasPeer === true) {
|
|
229
248
|
this.dispatchEvent(new CustomEvent('peer', {
|
|
230
|
-
detail: {
|
|
249
|
+
detail: {
|
|
250
|
+
id: peerId,
|
|
251
|
+
multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr),
|
|
252
|
+
protocols: updatedPeer.protocols
|
|
253
|
+
}
|
|
231
254
|
}));
|
|
232
255
|
}
|
|
233
256
|
}
|
|
234
257
|
async delete(peerId) {
|
|
235
258
|
peerId = peerIdFromPeerId(peerId);
|
|
236
|
-
log('delete await write lock');
|
|
259
|
+
log.trace('delete await write lock');
|
|
237
260
|
const release = await this.store.lock.writeLock();
|
|
238
|
-
log('delete got write lock');
|
|
239
|
-
let
|
|
261
|
+
log.trace('delete got write lock');
|
|
262
|
+
let peer;
|
|
240
263
|
try {
|
|
241
|
-
|
|
264
|
+
try {
|
|
265
|
+
peer = await this.store.load(peerId);
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
if (err.code !== codes.ERR_NOT_FOUND) {
|
|
269
|
+
throw err;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
242
272
|
await this.store.patchOrCreate(peerId, {
|
|
243
273
|
addresses: []
|
|
244
274
|
});
|
|
245
275
|
}
|
|
246
276
|
finally {
|
|
247
|
-
log('delete release write lock');
|
|
277
|
+
log.trace('delete release write lock');
|
|
248
278
|
release();
|
|
249
279
|
}
|
|
250
|
-
if (
|
|
280
|
+
if (peer != null) {
|
|
251
281
|
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
252
|
-
detail: {
|
|
282
|
+
detail: {
|
|
283
|
+
peerId,
|
|
284
|
+
multiaddrs: [],
|
|
285
|
+
oldMultiaddrs: peer == null ? [] : peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
286
|
+
}
|
|
253
287
|
}));
|
|
254
288
|
}
|
|
255
289
|
}
|
|
256
|
-
async getMultiaddrsForPeer(peerId, addressSorter = (mas) => mas) {
|
|
257
|
-
const addresses = await this.get(peerId);
|
|
258
|
-
return addressSorter(addresses).map((address) => {
|
|
259
|
-
const multiaddr = address.multiaddr;
|
|
260
|
-
const idString = multiaddr.getPeerId();
|
|
261
|
-
if (idString === peerId.toString()) {
|
|
262
|
-
return multiaddr;
|
|
263
|
-
}
|
|
264
|
-
return multiaddr.encapsulate(`/p2p/${peerId.toString(base58btc)}`);
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
290
|
}
|
|
268
291
|
async function filterMultiaddrs(peerId, multiaddrs, addressFilter, isCertified = false) {
|
|
269
292
|
return await pipe(multiaddrs, (source) => each(source, (multiaddr) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-book.js","sourceRoot":"","sources":["../../src/address-book.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,IAAI,MAAM,YAAY,CAAA;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"address-book.js","sourceRoot":"","sources":["../../src/address-book.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,31 +1,20 @@
|
|
|
1
1
|
import { EventEmitter } from '@libp2p/interfaces';
|
|
2
|
-
import type { PeerStore,
|
|
2
|
+
import type { PeerStore, AddressBook, KeyBook, MetadataBook, ProtoBook, PeerStoreEvents, PeerStoreInit, Peer } from '@libp2p/interfaces/peer-store';
|
|
3
3
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
4
|
-
import type {
|
|
5
|
-
import type { Datastore } from 'interface-datastore';
|
|
6
|
-
export interface AddressFilter {
|
|
7
|
-
(peerId: PeerId, multiaddr: Multiaddr): Promise<boolean>;
|
|
8
|
-
}
|
|
9
|
-
export interface AddressSorter {
|
|
10
|
-
(addresses: Address[]): Address[];
|
|
11
|
-
}
|
|
12
|
-
export interface PeerStoreInit {
|
|
13
|
-
peerId: PeerId;
|
|
14
|
-
datastore: Datastore;
|
|
15
|
-
addressFilter?: AddressFilter;
|
|
16
|
-
}
|
|
4
|
+
import type { Components } from '@libp2p/interfaces/components';
|
|
17
5
|
/**
|
|
18
6
|
* An implementation of PeerStore that stores data in a Datastore
|
|
19
7
|
*/
|
|
20
|
-
export declare class
|
|
8
|
+
export declare class PersistentPeerStore extends EventEmitter<PeerStoreEvents> implements PeerStore {
|
|
21
9
|
addressBook: AddressBook;
|
|
22
10
|
keyBook: KeyBook;
|
|
23
11
|
metadataBook: MetadataBook;
|
|
24
12
|
protoBook: ProtoBook;
|
|
25
|
-
private readonly
|
|
13
|
+
private readonly components;
|
|
26
14
|
private readonly store;
|
|
27
|
-
constructor(
|
|
28
|
-
|
|
15
|
+
constructor(components: Components, init?: PeerStoreInit);
|
|
16
|
+
forEach(fn: (peer: Peer) => void): Promise<void>;
|
|
17
|
+
all(): Promise<Peer[]>;
|
|
29
18
|
/**
|
|
30
19
|
* Delete the information of the given peer in every book
|
|
31
20
|
*/
|
|
@@ -33,11 +22,10 @@ export declare class PeerStoreImpl extends EventEmitter<PeerStoreEvents> impleme
|
|
|
33
22
|
/**
|
|
34
23
|
* Get the stored information of a given peer
|
|
35
24
|
*/
|
|
36
|
-
get(peerId: PeerId): Promise<
|
|
25
|
+
get(peerId: PeerId): Promise<Peer>;
|
|
37
26
|
/**
|
|
38
27
|
* Returns true if we have a record of the peer
|
|
39
28
|
*/
|
|
40
29
|
has(peerId: PeerId): Promise<boolean>;
|
|
41
30
|
}
|
|
42
|
-
export declare function createPeerStore(init: PeerStoreInit): PeerStore;
|
|
43
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMjD,OAAO,KAAK,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAMjD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAA;AACnJ,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAI/D;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY,CAAC,eAAe,CAAE,YAAW,SAAS;IAClF,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IAE3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;gBAEhB,UAAU,EAAE,UAAU,EAAE,IAAI,GAAE,aAAkB;IAYvD,OAAO,CAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI;IAoBjC,GAAG,IAAK,OAAO,CAAC,IAAI,EAAE,CAAC;IAU7B;;OAEG;IACG,MAAM,CAAE,MAAM,EAAE,MAAM;IAa5B;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM;IAazB;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM;CAY1B"}
|
package/dist/src/index.js
CHANGED
|
@@ -5,52 +5,57 @@ import { PeerStoreKeyBook } from './key-book.js';
|
|
|
5
5
|
import { PeerStoreMetadataBook } from './metadata-book.js';
|
|
6
6
|
import { PeerStoreProtoBook } from './proto-book.js';
|
|
7
7
|
import { PersistentStore } from './store.js';
|
|
8
|
-
import { base58btc } from 'multiformats/bases/base58';
|
|
9
8
|
const log = logger('libp2p:peer-store');
|
|
10
9
|
/**
|
|
11
10
|
* An implementation of PeerStore that stores data in a Datastore
|
|
12
11
|
*/
|
|
13
|
-
export class
|
|
14
|
-
constructor(init) {
|
|
12
|
+
export class PersistentPeerStore extends EventEmitter {
|
|
13
|
+
constructor(components, init = {}) {
|
|
15
14
|
super();
|
|
16
|
-
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.addressBook = new PeerStoreAddressBook(this.dispatchEvent.bind(this), this.store, addressFilter);
|
|
15
|
+
this.components = components;
|
|
16
|
+
this.store = new PersistentStore(components.getDatastore());
|
|
17
|
+
this.addressBook = new PeerStoreAddressBook(this.dispatchEvent.bind(this), this.store, init.addressFilter ?? components.getConnectionGater().filterMultiaddrForPeer);
|
|
20
18
|
this.keyBook = new PeerStoreKeyBook(this.dispatchEvent.bind(this), this.store);
|
|
21
19
|
this.metadataBook = new PeerStoreMetadataBook(this.dispatchEvent.bind(this), this.store);
|
|
22
20
|
this.protoBook = new PeerStoreProtoBook(this.dispatchEvent.bind(this), this.store);
|
|
23
21
|
}
|
|
24
|
-
async
|
|
25
|
-
log('getPeers await read lock');
|
|
22
|
+
async forEach(fn) {
|
|
23
|
+
log.trace('getPeers await read lock');
|
|
26
24
|
const release = await this.store.lock.readLock();
|
|
27
|
-
log('getPeers got read lock');
|
|
25
|
+
log.trace('getPeers got read lock');
|
|
28
26
|
try {
|
|
29
27
|
for await (const peer of this.store.all()) {
|
|
30
|
-
if (peer.id.
|
|
31
|
-
//
|
|
28
|
+
if (peer.id.equals(this.components.getPeerId())) {
|
|
29
|
+
// Skip self peer if present
|
|
32
30
|
continue;
|
|
33
31
|
}
|
|
34
|
-
|
|
32
|
+
fn(peer);
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
35
|
finally {
|
|
38
|
-
log('getPeers release read lock');
|
|
36
|
+
log.trace('getPeers release read lock');
|
|
39
37
|
release();
|
|
40
38
|
}
|
|
41
39
|
}
|
|
40
|
+
async all() {
|
|
41
|
+
const output = [];
|
|
42
|
+
await this.forEach(peer => {
|
|
43
|
+
output.push(peer);
|
|
44
|
+
});
|
|
45
|
+
return output;
|
|
46
|
+
}
|
|
42
47
|
/**
|
|
43
48
|
* Delete the information of the given peer in every book
|
|
44
49
|
*/
|
|
45
50
|
async delete(peerId) {
|
|
46
|
-
log('delete await write lock');
|
|
51
|
+
log.trace('delete await write lock');
|
|
47
52
|
const release = await this.store.lock.writeLock();
|
|
48
|
-
log('delete got write lock');
|
|
53
|
+
log.trace('delete got write lock');
|
|
49
54
|
try {
|
|
50
55
|
await this.store.delete(peerId);
|
|
51
56
|
}
|
|
52
57
|
finally {
|
|
53
|
-
log('delete release write lock');
|
|
58
|
+
log.trace('delete release write lock');
|
|
54
59
|
release();
|
|
55
60
|
}
|
|
56
61
|
}
|
|
@@ -58,14 +63,14 @@ export class PeerStoreImpl extends EventEmitter {
|
|
|
58
63
|
* Get the stored information of a given peer
|
|
59
64
|
*/
|
|
60
65
|
async get(peerId) {
|
|
61
|
-
log('get await read lock');
|
|
66
|
+
log.trace('get await read lock');
|
|
62
67
|
const release = await this.store.lock.readLock();
|
|
63
|
-
log('get got read lock');
|
|
68
|
+
log.trace('get got read lock');
|
|
64
69
|
try {
|
|
65
70
|
return await this.store.load(peerId);
|
|
66
71
|
}
|
|
67
72
|
finally {
|
|
68
|
-
log('get release read lock');
|
|
73
|
+
log.trace('get release read lock');
|
|
69
74
|
release();
|
|
70
75
|
}
|
|
71
76
|
}
|
|
@@ -73,19 +78,16 @@ export class PeerStoreImpl extends EventEmitter {
|
|
|
73
78
|
* Returns true if we have a record of the peer
|
|
74
79
|
*/
|
|
75
80
|
async has(peerId) {
|
|
76
|
-
log('has await read lock');
|
|
81
|
+
log.trace('has await read lock');
|
|
77
82
|
const release = await this.store.lock.readLock();
|
|
78
|
-
log('has got read lock');
|
|
83
|
+
log.trace('has got read lock');
|
|
79
84
|
try {
|
|
80
85
|
return await this.store.has(peerId);
|
|
81
86
|
}
|
|
82
87
|
finally {
|
|
83
|
-
log('has release read lock');
|
|
88
|
+
log.trace('has release read lock');
|
|
84
89
|
release();
|
|
85
90
|
}
|
|
86
91
|
}
|
|
87
92
|
}
|
|
88
|
-
export function createPeerStore(init) {
|
|
89
|
-
return new PeerStoreImpl(init);
|
|
90
|
-
}
|
|
91
93
|
//# 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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAS,MAAM,YAAY,CAAA;AAKnD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/key-book.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Store } from './store.js';
|
|
2
|
-
import type { PeerStore, KeyBook } from '@libp2p/interfaces/
|
|
2
|
+
import type { PeerStore, KeyBook } from '@libp2p/interfaces/peer-store';
|
|
3
3
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
4
4
|
export declare class PeerStoreKeyBook implements KeyBook {
|
|
5
5
|
private readonly dispatchEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-book.d.ts","sourceRoot":"","sources":["../../src/key-book.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"key-book.d.ts","sourceRoot":"","sources":["../../src/key-book.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAiC,MAAM,+BAA+B,CAAA;AACtG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAMxD,qBAAa,gBAAiB,YAAW,OAAO;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAE7B;;OAEG;gBACU,aAAa,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK;IAKpE;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU;IAgDhD;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM;IAqBnB,MAAM,CAAE,MAAM,EAAE,MAAM;CAsC7B"}
|
package/dist/src/key-book.js
CHANGED
|
@@ -23,14 +23,15 @@ export class PeerStoreKeyBook {
|
|
|
23
23
|
log.error('publicKey must be an instance of Uint8Array to store data');
|
|
24
24
|
throw errcode(new Error('publicKey must be an instance of PublicKey'), codes.ERR_INVALID_PARAMETERS);
|
|
25
25
|
}
|
|
26
|
-
log('set await write lock');
|
|
26
|
+
log.trace('set await write lock');
|
|
27
27
|
const release = await this.store.lock.writeLock();
|
|
28
|
-
log('set got write lock');
|
|
28
|
+
log.trace('set got write lock');
|
|
29
29
|
let updatedKey = false;
|
|
30
|
+
let peer;
|
|
30
31
|
try {
|
|
31
32
|
try {
|
|
32
|
-
|
|
33
|
-
if ((
|
|
33
|
+
peer = await this.store.load(peerId);
|
|
34
|
+
if ((peer.pubKey != null) && uint8arrayEquals(peer.pubKey, publicKey)) {
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -45,12 +46,16 @@ export class PeerStoreKeyBook {
|
|
|
45
46
|
updatedKey = true;
|
|
46
47
|
}
|
|
47
48
|
finally {
|
|
48
|
-
log('set release write lock');
|
|
49
|
+
log.trace('set release write lock');
|
|
49
50
|
release();
|
|
50
51
|
}
|
|
51
52
|
if (updatedKey) {
|
|
52
53
|
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
53
|
-
detail: {
|
|
54
|
+
detail: {
|
|
55
|
+
peerId,
|
|
56
|
+
publicKey: publicKey,
|
|
57
|
+
oldPublicKey: peer == null ? undefined : peer.pubKey
|
|
58
|
+
}
|
|
54
59
|
}));
|
|
55
60
|
}
|
|
56
61
|
}
|
|
@@ -59,9 +64,9 @@ export class PeerStoreKeyBook {
|
|
|
59
64
|
*/
|
|
60
65
|
async get(peerId) {
|
|
61
66
|
peerId = peerIdFromPeerId(peerId);
|
|
62
|
-
log('get await write lock');
|
|
67
|
+
log.trace('get await write lock');
|
|
63
68
|
const release = await this.store.lock.readLock();
|
|
64
|
-
log('get got write lock');
|
|
69
|
+
log.trace('get got write lock');
|
|
65
70
|
try {
|
|
66
71
|
const peer = await this.store.load(peerId);
|
|
67
72
|
return peer.pubKey;
|
|
@@ -78,20 +83,38 @@ export class PeerStoreKeyBook {
|
|
|
78
83
|
}
|
|
79
84
|
async delete(peerId) {
|
|
80
85
|
peerId = peerIdFromPeerId(peerId);
|
|
81
|
-
log('delete await write lock');
|
|
86
|
+
log.trace('delete await write lock');
|
|
82
87
|
const release = await this.store.lock.writeLock();
|
|
83
|
-
log('delete got write lock');
|
|
88
|
+
log.trace('delete got write lock');
|
|
89
|
+
let peer;
|
|
84
90
|
try {
|
|
91
|
+
try {
|
|
92
|
+
peer = await this.store.load(peerId);
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
if (err.code !== codes.ERR_NOT_FOUND) {
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
85
99
|
await this.store.patchOrCreate(peerId, {
|
|
86
100
|
pubKey: undefined
|
|
87
101
|
});
|
|
88
102
|
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
if (err.code !== codes.ERR_NOT_FOUND) {
|
|
105
|
+
throw err;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
89
108
|
finally {
|
|
90
|
-
log('delete release write lock');
|
|
109
|
+
log.trace('delete release write lock');
|
|
91
110
|
release();
|
|
92
111
|
}
|
|
93
112
|
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
94
|
-
detail: {
|
|
113
|
+
detail: {
|
|
114
|
+
peerId,
|
|
115
|
+
publicKey: undefined,
|
|
116
|
+
oldPublicKey: peer == null ? undefined : peer.pubKey
|
|
117
|
+
}
|
|
95
118
|
}));
|
|
96
119
|
}
|
|
97
120
|
}
|