@libp2p/peer-store 0.0.0 → 1.0.3
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 +5 -5
- package/dist/src/address-book.d.ts.map +1 -1
- package/dist/src/address-book.js +41 -25
- package/dist/src/address-book.js.map +1 -1
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/key-book.d.ts +4 -4
- package/dist/src/key-book.d.ts.map +1 -1
- package/dist/src/key-book.js +16 -16
- package/dist/src/key-book.js.map +1 -1
- package/dist/src/metadata-book.d.ts +4 -4
- package/dist/src/metadata-book.d.ts.map +1 -1
- package/dist/src/metadata-book.js +24 -15
- package/dist/src/metadata-book.js.map +1 -1
- package/dist/src/proto-book.d.ts +4 -4
- package/dist/src/proto-book.d.ts.map +1 -1
- package/dist/src/proto-book.js +21 -12
- package/dist/src/proto-book.js.map +1 -1
- package/dist/src/store.d.ts +3 -3
- package/dist/src/store.d.ts.map +1 -1
- package/dist/src/store.js +16 -15
- package/dist/src/store.js.map +1 -1
- package/package.json +21 -13
- package/src/address-book.ts +47 -29
- package/src/index.ts +15 -11
- package/src/key-book.ts +19 -19
- package/src/metadata-book.ts +27 -17
- package/src/proto-book.ts +25 -15
- package/src/store.ts +21 -20
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Multiaddr } from '@multiformats/multiaddr';
|
|
2
2
|
import { RecordEnvelope } from '@libp2p/peer-record';
|
|
3
|
-
import { PeerId } from '@libp2p/peer-id';
|
|
4
3
|
import type { PeerStore } from '@libp2p/interfaces/peer-store';
|
|
5
4
|
import type { Store } from './store.js';
|
|
6
5
|
import type { AddressFilter, AddressSorter } from './index.js';
|
|
7
6
|
import type { Envelope } from '@libp2p/interfaces/record';
|
|
7
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
8
8
|
export declare class PeerStoreAddressBook {
|
|
9
|
-
private
|
|
10
|
-
private store;
|
|
11
|
-
private addressFilter;
|
|
12
|
-
constructor(
|
|
9
|
+
private readonly dispatchEvent;
|
|
10
|
+
private readonly store;
|
|
11
|
+
private readonly addressFilter;
|
|
12
|
+
constructor(dispatchEvent: PeerStore['dispatchEvent'], store: Store, addressFilter?: AddressFilter);
|
|
13
13
|
/**
|
|
14
14
|
* ConsumePeerRecord adds addresses from a signed peer record contained in a record envelope.
|
|
15
15
|
* This will return a boolean that indicates if the record was successfully processed and added
|
|
@@ -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;AAShE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AASxD,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;IAiErC,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;IA8D5C,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;IA2D5C,MAAM,CAAE,MAAM,EAAE,MAAM;IA2BtB,oBAAoB,CAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAE,aAA4B;CAgBxF"}
|
package/dist/src/address-book.js
CHANGED
|
@@ -9,15 +9,16 @@ import filter from 'it-filter';
|
|
|
9
9
|
import map from 'it-map';
|
|
10
10
|
import each from 'it-foreach';
|
|
11
11
|
import { base58btc } from 'multiformats/bases/base58';
|
|
12
|
-
import {
|
|
12
|
+
import { peerIdFromPeerId } from '@libp2p/peer-id';
|
|
13
|
+
import { CustomEvent } from '@libp2p/interfaces';
|
|
13
14
|
const log = logger('libp2p:peer-store:address-book');
|
|
14
15
|
const EVENT_NAME = 'change:multiaddrs';
|
|
15
16
|
async function allowAll() {
|
|
16
17
|
return true;
|
|
17
18
|
}
|
|
18
19
|
export class PeerStoreAddressBook {
|
|
19
|
-
constructor(
|
|
20
|
-
this.
|
|
20
|
+
constructor(dispatchEvent, store, addressFilter) {
|
|
21
|
+
this.dispatchEvent = dispatchEvent;
|
|
21
22
|
this.store = store;
|
|
22
23
|
this.addressFilter = addressFilter ?? allowAll;
|
|
23
24
|
}
|
|
@@ -49,12 +50,12 @@ export class PeerStoreAddressBook {
|
|
|
49
50
|
return false;
|
|
50
51
|
}
|
|
51
52
|
// ensure the record has multiaddrs
|
|
52
|
-
if (
|
|
53
|
+
if (multiaddrs == null || multiaddrs.length === 0) {
|
|
53
54
|
return false;
|
|
54
55
|
}
|
|
55
56
|
if (await this.store.has(peerId)) {
|
|
56
57
|
const peer = await this.store.load(peerId);
|
|
57
|
-
if (peer.peerRecordEnvelope) {
|
|
58
|
+
if (peer.peerRecordEnvelope != null) {
|
|
58
59
|
const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope);
|
|
59
60
|
const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);
|
|
60
61
|
// ensure seq is greater than, or equal to, the last received
|
|
@@ -75,7 +76,9 @@ export class PeerStoreAddressBook {
|
|
|
75
76
|
log('consumePeerRecord release write lock');
|
|
76
77
|
release();
|
|
77
78
|
}
|
|
78
|
-
this.
|
|
79
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
80
|
+
detail: { peerId, multiaddrs: updatedPeer.addresses.map(({ multiaddr }) => multiaddr) }
|
|
81
|
+
}));
|
|
79
82
|
return true;
|
|
80
83
|
}
|
|
81
84
|
async getRawEnvelope(peerId) {
|
|
@@ -102,13 +105,13 @@ export class PeerStoreAddressBook {
|
|
|
102
105
|
*/
|
|
103
106
|
async getPeerRecord(peerId) {
|
|
104
107
|
const raw = await this.getRawEnvelope(peerId);
|
|
105
|
-
if (
|
|
108
|
+
if (raw == null) {
|
|
106
109
|
return undefined;
|
|
107
110
|
}
|
|
108
|
-
return RecordEnvelope.createFromProtobuf(raw);
|
|
111
|
+
return await RecordEnvelope.createFromProtobuf(raw);
|
|
109
112
|
}
|
|
110
113
|
async get(peerId) {
|
|
111
|
-
peerId =
|
|
114
|
+
peerId = peerIdFromPeerId(peerId);
|
|
112
115
|
log('get wait for read lock');
|
|
113
116
|
const release = await this.store.lock.readLock();
|
|
114
117
|
log('get got read lock');
|
|
@@ -128,7 +131,7 @@ export class PeerStoreAddressBook {
|
|
|
128
131
|
return [];
|
|
129
132
|
}
|
|
130
133
|
async set(peerId, multiaddrs) {
|
|
131
|
-
peerId =
|
|
134
|
+
peerId = peerIdFromPeerId(peerId);
|
|
132
135
|
if (!Array.isArray(multiaddrs)) {
|
|
133
136
|
log.error('multiaddrs must be an array of Multiaddrs');
|
|
134
137
|
throw errcode(new Error('multiaddrs must be an array of Multiaddrs'), codes.ERR_INVALID_PARAMETERS);
|
|
@@ -141,7 +144,7 @@ export class PeerStoreAddressBook {
|
|
|
141
144
|
try {
|
|
142
145
|
const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter);
|
|
143
146
|
// No valid addresses found
|
|
144
|
-
if (
|
|
147
|
+
if (addresses.length === 0) {
|
|
145
148
|
return;
|
|
146
149
|
}
|
|
147
150
|
try {
|
|
@@ -167,14 +170,20 @@ export class PeerStoreAddressBook {
|
|
|
167
170
|
log('set release write lock');
|
|
168
171
|
release();
|
|
169
172
|
}
|
|
170
|
-
this.
|
|
173
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
174
|
+
detail: { peerId, multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr) }
|
|
175
|
+
}));
|
|
171
176
|
// Notify the existence of a new peer
|
|
172
177
|
if (!hasPeer) {
|
|
173
|
-
this.
|
|
178
|
+
this.dispatchEvent(new CustomEvent('peer', {
|
|
179
|
+
detail: {
|
|
180
|
+
peerId
|
|
181
|
+
}
|
|
182
|
+
}));
|
|
174
183
|
}
|
|
175
184
|
}
|
|
176
185
|
async add(peerId, multiaddrs) {
|
|
177
|
-
peerId =
|
|
186
|
+
peerId = peerIdFromPeerId(peerId);
|
|
178
187
|
if (!Array.isArray(multiaddrs)) {
|
|
179
188
|
log.error('multiaddrs must be an array of Multiaddrs');
|
|
180
189
|
throw errcode(new Error('multiaddrs must be an array of Multiaddrs'), codes.ERR_INVALID_PARAMETERS);
|
|
@@ -187,7 +196,7 @@ export class PeerStoreAddressBook {
|
|
|
187
196
|
try {
|
|
188
197
|
const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter);
|
|
189
198
|
// No valid addresses found
|
|
190
|
-
if (
|
|
199
|
+
if (addresses.length === 0) {
|
|
191
200
|
return;
|
|
192
201
|
}
|
|
193
202
|
try {
|
|
@@ -212,14 +221,18 @@ export class PeerStoreAddressBook {
|
|
|
212
221
|
log('set release write lock');
|
|
213
222
|
release();
|
|
214
223
|
}
|
|
215
|
-
this.
|
|
224
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
225
|
+
detail: { peerId, multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr) }
|
|
226
|
+
}));
|
|
216
227
|
// Notify the existence of a new peer
|
|
217
|
-
if (
|
|
218
|
-
this.
|
|
228
|
+
if (hasPeer === true) {
|
|
229
|
+
this.dispatchEvent(new CustomEvent('peer', {
|
|
230
|
+
detail: { peerId }
|
|
231
|
+
}));
|
|
219
232
|
}
|
|
220
233
|
}
|
|
221
234
|
async delete(peerId) {
|
|
222
|
-
peerId =
|
|
235
|
+
peerId = peerIdFromPeerId(peerId);
|
|
223
236
|
log('delete await write lock');
|
|
224
237
|
const release = await this.store.lock.writeLock();
|
|
225
238
|
log('delete got write lock');
|
|
@@ -235,7 +248,9 @@ export class PeerStoreAddressBook {
|
|
|
235
248
|
release();
|
|
236
249
|
}
|
|
237
250
|
if (has) {
|
|
238
|
-
this.
|
|
251
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
252
|
+
detail: { peerId, multiaddrs: [] }
|
|
253
|
+
}));
|
|
239
254
|
}
|
|
240
255
|
}
|
|
241
256
|
async getMultiaddrsForPeer(peerId, addressSorter = (mas) => mas) {
|
|
@@ -243,23 +258,24 @@ export class PeerStoreAddressBook {
|
|
|
243
258
|
return addressSorter(addresses).map((address) => {
|
|
244
259
|
const multiaddr = address.multiaddr;
|
|
245
260
|
const idString = multiaddr.getPeerId();
|
|
246
|
-
if (idString
|
|
261
|
+
if (idString === peerId.toString()) {
|
|
247
262
|
return multiaddr;
|
|
263
|
+
}
|
|
248
264
|
return multiaddr.encapsulate(`/p2p/${peerId.toString(base58btc)}`);
|
|
249
265
|
});
|
|
250
266
|
}
|
|
251
267
|
}
|
|
252
|
-
function filterMultiaddrs(peerId, multiaddrs, addressFilter, isCertified = false) {
|
|
253
|
-
return pipe(multiaddrs, (source) => each(source, (multiaddr) => {
|
|
268
|
+
async function filterMultiaddrs(peerId, multiaddrs, addressFilter, isCertified = false) {
|
|
269
|
+
return await pipe(multiaddrs, (source) => each(source, (multiaddr) => {
|
|
254
270
|
if (!Multiaddr.isMultiaddr(multiaddr)) {
|
|
255
271
|
log.error('multiaddr must be an instance of Multiaddr');
|
|
256
272
|
throw errcode(new Error('multiaddr must be an instance of Multiaddr'), codes.ERR_INVALID_PARAMETERS);
|
|
257
273
|
}
|
|
258
|
-
}), (source) => filter(source, (multiaddr) => addressFilter(peerId, multiaddr)), (source) => map(source, (multiaddr) => {
|
|
274
|
+
}), (source) => filter(source, async (multiaddr) => await addressFilter(peerId, multiaddr)), (source) => map(source, (multiaddr) => {
|
|
259
275
|
return {
|
|
260
276
|
multiaddr: new Multiaddr(multiaddr.toString()),
|
|
261
277
|
isCertified
|
|
262
278
|
};
|
|
263
|
-
}), (source) => all(source));
|
|
279
|
+
}), async (source) => await all(source));
|
|
264
280
|
}
|
|
265
281
|
//# sourceMappingURL=address-book.js.map
|
|
@@ -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,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,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,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import type { PeerStore, Address, AddressBook, KeyBook, MetadataBook, ProtoBook } from '@libp2p/interfaces/peer-store';
|
|
1
|
+
import { EventEmitter } from '@libp2p/interfaces';
|
|
2
|
+
import type { PeerStore, Address, AddressBook, KeyBook, MetadataBook, ProtoBook, PeerStoreEvents } from '@libp2p/interfaces/peer-store';
|
|
4
3
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
5
4
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
6
5
|
import type { Datastore } from 'interface-datastore';
|
|
@@ -18,13 +17,13 @@ export interface PeerStoreOptions {
|
|
|
18
17
|
/**
|
|
19
18
|
* An implementation of PeerStore that stores data in a Datastore
|
|
20
19
|
*/
|
|
21
|
-
export declare class
|
|
20
|
+
export declare class PeerStoreImpl extends EventEmitter<PeerStoreEvents> implements PeerStore {
|
|
22
21
|
addressBook: AddressBook;
|
|
23
22
|
keyBook: KeyBook;
|
|
24
23
|
metadataBook: MetadataBook;
|
|
25
24
|
protoBook: ProtoBook;
|
|
26
|
-
private peerId;
|
|
27
|
-
private store;
|
|
25
|
+
private readonly peerId;
|
|
26
|
+
private readonly store;
|
|
28
27
|
constructor(options: PeerStoreOptions);
|
|
29
28
|
getPeers(): AsyncGenerator<import("@libp2p/interfaces/peer-store").Peer, void, unknown>;
|
|
30
29
|
/**
|
|
@@ -40,4 +39,5 @@ export declare class DefaultPeerStore extends EventEmitter implements PeerStore
|
|
|
40
39
|
*/
|
|
41
40
|
has(peerId: PeerId): Promise<boolean>;
|
|
42
41
|
}
|
|
42
|
+
export declare function createPeerStore(opts: PeerStoreOptions): PeerStore;
|
|
43
43
|
//# 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":"
|
|
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,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACvI,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAKpD,MAAM,WAAW,aAAa;IAC5B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACzD;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY,CAAC,eAAe,CAAE,YAAW,SAAS;IAC5E,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;gBAEhB,OAAO,EAAE,gBAAgB;IAc9B,QAAQ;IAoBhB;;OAEG;IACG,MAAM,CAAE,MAAM,EAAE,MAAM;IAa5B;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM;IAazB;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM;CAY1B;AAED,wBAAgB,eAAe,CAAE,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAElE"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { logger } from '@libp2p/logger';
|
|
2
|
-
import { EventEmitter } from '
|
|
2
|
+
import { EventEmitter } from '@libp2p/interfaces';
|
|
3
3
|
import { PeerStoreAddressBook } from './address-book.js';
|
|
4
4
|
import { PeerStoreKeyBook } from './key-book.js';
|
|
5
5
|
import { PeerStoreMetadataBook } from './metadata-book.js';
|
|
@@ -10,16 +10,16 @@ const log = logger('libp2p:peer-store');
|
|
|
10
10
|
/**
|
|
11
11
|
* An implementation of PeerStore that stores data in a Datastore
|
|
12
12
|
*/
|
|
13
|
-
export class
|
|
13
|
+
export class PeerStoreImpl extends EventEmitter {
|
|
14
14
|
constructor(options) {
|
|
15
15
|
super();
|
|
16
16
|
const { peerId, datastore, addressFilter } = options;
|
|
17
17
|
this.peerId = peerId;
|
|
18
18
|
this.store = new PersistentStore(datastore);
|
|
19
|
-
this.addressBook = new PeerStoreAddressBook(this.
|
|
20
|
-
this.keyBook = new PeerStoreKeyBook(this.
|
|
21
|
-
this.metadataBook = new PeerStoreMetadataBook(this.
|
|
22
|
-
this.protoBook = new PeerStoreProtoBook(this.
|
|
19
|
+
this.addressBook = new PeerStoreAddressBook(this.dispatchEvent.bind(this), this.store, addressFilter);
|
|
20
|
+
this.keyBook = new PeerStoreKeyBook(this.dispatchEvent.bind(this), this.store);
|
|
21
|
+
this.metadataBook = new PeerStoreMetadataBook(this.dispatchEvent.bind(this), this.store);
|
|
22
|
+
this.protoBook = new PeerStoreProtoBook(this.dispatchEvent.bind(this), this.store);
|
|
23
23
|
}
|
|
24
24
|
async *getPeers() {
|
|
25
25
|
log('getPeers await read lock');
|
|
@@ -62,7 +62,7 @@ export class DefaultPeerStore extends EventEmitter {
|
|
|
62
62
|
const release = await this.store.lock.readLock();
|
|
63
63
|
log('get got read lock');
|
|
64
64
|
try {
|
|
65
|
-
return this.store.load(peerId);
|
|
65
|
+
return await this.store.load(peerId);
|
|
66
66
|
}
|
|
67
67
|
finally {
|
|
68
68
|
log('get release read lock');
|
|
@@ -77,7 +77,7 @@ export class DefaultPeerStore extends EventEmitter {
|
|
|
77
77
|
const release = await this.store.lock.readLock();
|
|
78
78
|
log('has got read lock');
|
|
79
79
|
try {
|
|
80
|
-
return this.store.has(peerId);
|
|
80
|
+
return await this.store.has(peerId);
|
|
81
81
|
}
|
|
82
82
|
finally {
|
|
83
83
|
log('has release read lock');
|
|
@@ -85,4 +85,7 @@ export class DefaultPeerStore extends EventEmitter {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
+
export function createPeerStore(opts) {
|
|
89
|
+
return new PeerStoreImpl(opts);
|
|
90
|
+
}
|
|
88
91
|
//# 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,
|
|
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,13 +1,13 @@
|
|
|
1
|
-
import { PeerId } from '@libp2p/peer-id';
|
|
2
1
|
import type { Store } from './store.js';
|
|
3
2
|
import type { PeerStore, KeyBook } from '@libp2p/interfaces/src/peer-store';
|
|
3
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
4
4
|
export declare class PeerStoreKeyBook implements KeyBook {
|
|
5
|
-
private
|
|
6
|
-
private store;
|
|
5
|
+
private readonly dispatchEvent;
|
|
6
|
+
private readonly store;
|
|
7
7
|
/**
|
|
8
8
|
* The KeyBook is responsible for keeping the known public keys of a peer
|
|
9
9
|
*/
|
|
10
|
-
constructor(
|
|
10
|
+
constructor(dispatchEvent: PeerStore['dispatchEvent'], store: Store);
|
|
11
11
|
/**
|
|
12
12
|
* Set the Peer public key
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-book.d.ts","sourceRoot":"","sources":["../../src/key-book.ts"],"names":[],"mappings":"
|
|
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,EAAE,MAAM,mCAAmC,CAAA;AAC3E,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;IA2ChD;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM;IAqBnB,MAAM,CAAE,MAAM,EAAE,MAAM;CAoB7B"}
|
package/dist/src/key-book.js
CHANGED
|
@@ -1,30 +1,26 @@
|
|
|
1
1
|
import { logger } from '@libp2p/logger';
|
|
2
2
|
import errcode from 'err-code';
|
|
3
3
|
import { codes } from './errors.js';
|
|
4
|
-
import {
|
|
4
|
+
import { peerIdFromPeerId } from '@libp2p/peer-id';
|
|
5
5
|
import { equals as uint8arrayEquals } from 'uint8arrays/equals';
|
|
6
|
-
|
|
7
|
-
* @typedef {import('./types').PeerStore} PeerStore
|
|
8
|
-
* @typedef {import('./types').KeyBook} KeyBook
|
|
9
|
-
* @typedef {import('libp2p-interfaces/src/keys/types').PublicKey} PublicKey
|
|
10
|
-
*/
|
|
6
|
+
import { CustomEvent } from '@libp2p/interfaces';
|
|
11
7
|
const log = logger('libp2p:peer-store:key-book');
|
|
12
8
|
const EVENT_NAME = 'change:pubkey';
|
|
13
9
|
export class PeerStoreKeyBook {
|
|
14
10
|
/**
|
|
15
11
|
* The KeyBook is responsible for keeping the known public keys of a peer
|
|
16
12
|
*/
|
|
17
|
-
constructor(
|
|
18
|
-
this.
|
|
13
|
+
constructor(dispatchEvent, store) {
|
|
14
|
+
this.dispatchEvent = dispatchEvent;
|
|
19
15
|
this.store = store;
|
|
20
16
|
}
|
|
21
17
|
/**
|
|
22
18
|
* Set the Peer public key
|
|
23
19
|
*/
|
|
24
20
|
async set(peerId, publicKey) {
|
|
25
|
-
peerId =
|
|
26
|
-
if (!publicKey) {
|
|
27
|
-
log.error('publicKey must be an instance of
|
|
21
|
+
peerId = peerIdFromPeerId(peerId);
|
|
22
|
+
if (!(publicKey instanceof Uint8Array)) {
|
|
23
|
+
log.error('publicKey must be an instance of Uint8Array to store data');
|
|
28
24
|
throw errcode(new Error('publicKey must be an instance of PublicKey'), codes.ERR_INVALID_PARAMETERS);
|
|
29
25
|
}
|
|
30
26
|
log('set await write lock');
|
|
@@ -34,7 +30,7 @@ export class PeerStoreKeyBook {
|
|
|
34
30
|
try {
|
|
35
31
|
try {
|
|
36
32
|
const existing = await this.store.load(peerId);
|
|
37
|
-
if (existing.pubKey && uint8arrayEquals(existing.pubKey, publicKey)) {
|
|
33
|
+
if ((existing.pubKey != null) && uint8arrayEquals(existing.pubKey, publicKey)) {
|
|
38
34
|
return;
|
|
39
35
|
}
|
|
40
36
|
}
|
|
@@ -53,14 +49,16 @@ export class PeerStoreKeyBook {
|
|
|
53
49
|
release();
|
|
54
50
|
}
|
|
55
51
|
if (updatedKey) {
|
|
56
|
-
this.
|
|
52
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
53
|
+
detail: { peerId, pubKey: publicKey }
|
|
54
|
+
}));
|
|
57
55
|
}
|
|
58
56
|
}
|
|
59
57
|
/**
|
|
60
58
|
* Get Public key of the given PeerId, if stored
|
|
61
59
|
*/
|
|
62
60
|
async get(peerId) {
|
|
63
|
-
peerId =
|
|
61
|
+
peerId = peerIdFromPeerId(peerId);
|
|
64
62
|
log('get await write lock');
|
|
65
63
|
const release = await this.store.lock.readLock();
|
|
66
64
|
log('get got write lock');
|
|
@@ -79,7 +77,7 @@ export class PeerStoreKeyBook {
|
|
|
79
77
|
}
|
|
80
78
|
}
|
|
81
79
|
async delete(peerId) {
|
|
82
|
-
peerId =
|
|
80
|
+
peerId = peerIdFromPeerId(peerId);
|
|
83
81
|
log('delete await write lock');
|
|
84
82
|
const release = await this.store.lock.writeLock();
|
|
85
83
|
log('delete got write lock');
|
|
@@ -92,7 +90,9 @@ export class PeerStoreKeyBook {
|
|
|
92
90
|
log('delete release write lock');
|
|
93
91
|
release();
|
|
94
92
|
}
|
|
95
|
-
this.
|
|
93
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
94
|
+
detail: { peerId, pubKey: undefined }
|
|
95
|
+
}));
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
//# sourceMappingURL=key-book.js.map
|
package/dist/src/key-book.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-book.js","sourceRoot":"","sources":["../../src/key-book.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"key-book.js","sourceRoot":"","sources":["../../src/key-book.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { PeerId } from '@libp2p/peer-id';
|
|
2
1
|
import type { Store } from './store.js';
|
|
3
2
|
import type { PeerStore, MetadataBook } from '@libp2p/interfaces/src/peer-store';
|
|
3
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
4
4
|
export declare class PeerStoreMetadataBook implements MetadataBook {
|
|
5
|
-
private
|
|
6
|
-
private store;
|
|
5
|
+
private readonly dispatchEvent;
|
|
6
|
+
private readonly store;
|
|
7
7
|
/**
|
|
8
8
|
* The MetadataBook is responsible for keeping metadata
|
|
9
9
|
* about known peers
|
|
10
10
|
*/
|
|
11
|
-
constructor(
|
|
11
|
+
constructor(dispatchEvent: PeerStore['dispatchEvent'], store: Store);
|
|
12
12
|
/**
|
|
13
13
|
* Get the known data of a provided peer
|
|
14
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-book.d.ts","sourceRoot":"","sources":["../../src/metadata-book.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata-book.d.ts","sourceRoot":"","sources":["../../src/metadata-book.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAMxD,qBAAa,qBAAsB,YAAW,YAAY;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAE7B;;;OAGG;gBACU,aAAa,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK;IAKpE;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM;IAuBzB;;OAEG;IACG,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAqBrC,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IA0B5D;;OAEG;IACG,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAyCxD,MAAM,CAAE,MAAM,EAAE,MAAM;IA6BtB,WAAW,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAiC/C"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { logger } from '@libp2p/logger';
|
|
2
2
|
import errcode from 'err-code';
|
|
3
3
|
import { codes } from './errors.js';
|
|
4
|
-
import {
|
|
4
|
+
import { peerIdFromPeerId } from '@libp2p/peer-id';
|
|
5
5
|
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
6
|
+
import { CustomEvent } from '@libp2p/interfaces';
|
|
6
7
|
const log = logger('libp2p:peer-store:metadata-book');
|
|
7
8
|
const EVENT_NAME = 'change:metadata';
|
|
8
9
|
export class PeerStoreMetadataBook {
|
|
@@ -10,15 +11,15 @@ export class PeerStoreMetadataBook {
|
|
|
10
11
|
* The MetadataBook is responsible for keeping metadata
|
|
11
12
|
* about known peers
|
|
12
13
|
*/
|
|
13
|
-
constructor(
|
|
14
|
-
this.
|
|
14
|
+
constructor(dispatchEvent, store) {
|
|
15
|
+
this.dispatchEvent = dispatchEvent;
|
|
15
16
|
this.store = store;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Get the known data of a provided peer
|
|
19
20
|
*/
|
|
20
21
|
async get(peerId) {
|
|
21
|
-
peerId =
|
|
22
|
+
peerId = peerIdFromPeerId(peerId);
|
|
22
23
|
log('get await read lock');
|
|
23
24
|
const release = await this.store.lock.readLock();
|
|
24
25
|
log('get got read lock');
|
|
@@ -41,7 +42,7 @@ export class PeerStoreMetadataBook {
|
|
|
41
42
|
* Get specific metadata value, if it exists
|
|
42
43
|
*/
|
|
43
44
|
async getValue(peerId, key) {
|
|
44
|
-
peerId =
|
|
45
|
+
peerId = peerIdFromPeerId(peerId);
|
|
45
46
|
log('getValue await read lock');
|
|
46
47
|
const release = await this.store.lock.readLock();
|
|
47
48
|
log('getValue got read lock');
|
|
@@ -60,8 +61,8 @@ export class PeerStoreMetadataBook {
|
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
async set(peerId, metadata) {
|
|
63
|
-
peerId =
|
|
64
|
-
if (!
|
|
64
|
+
peerId = peerIdFromPeerId(peerId);
|
|
65
|
+
if (!(metadata instanceof Map)) {
|
|
65
66
|
log.error('valid metadata must be provided to store data');
|
|
66
67
|
throw errcode(new Error('valid metadata must be provided'), codes.ERR_INVALID_PARAMETERS);
|
|
67
68
|
}
|
|
@@ -77,13 +78,15 @@ export class PeerStoreMetadataBook {
|
|
|
77
78
|
log('set release write lock');
|
|
78
79
|
release();
|
|
79
80
|
}
|
|
80
|
-
this.
|
|
81
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
82
|
+
detail: { peerId, metadata }
|
|
83
|
+
}));
|
|
81
84
|
}
|
|
82
85
|
/**
|
|
83
86
|
* Set metadata key and value of a provided peer
|
|
84
87
|
*/
|
|
85
88
|
async setValue(peerId, key, value) {
|
|
86
|
-
peerId =
|
|
89
|
+
peerId = peerIdFromPeerId(peerId);
|
|
87
90
|
if (typeof key !== 'string' || !(value instanceof Uint8Array)) {
|
|
88
91
|
log.error('valid key and value must be provided to store data');
|
|
89
92
|
throw errcode(new Error('valid key and value must be provided'), codes.ERR_INVALID_PARAMETERS);
|
|
@@ -113,10 +116,12 @@ export class PeerStoreMetadataBook {
|
|
|
113
116
|
log('setValue release write lock');
|
|
114
117
|
release();
|
|
115
118
|
}
|
|
116
|
-
this.
|
|
119
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
120
|
+
detail: { peerId, metadata: updatedPeer.metadata }
|
|
121
|
+
}));
|
|
117
122
|
}
|
|
118
123
|
async delete(peerId) {
|
|
119
|
-
peerId =
|
|
124
|
+
peerId = peerIdFromPeerId(peerId);
|
|
120
125
|
log('delete await write lock');
|
|
121
126
|
const release = await this.store.lock.writeLock();
|
|
122
127
|
log('delete got write lock');
|
|
@@ -134,11 +139,13 @@ export class PeerStoreMetadataBook {
|
|
|
134
139
|
release();
|
|
135
140
|
}
|
|
136
141
|
if (has) {
|
|
137
|
-
this.
|
|
142
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
143
|
+
detail: { peerId, metadata: new Map() }
|
|
144
|
+
}));
|
|
138
145
|
}
|
|
139
146
|
}
|
|
140
147
|
async deleteValue(peerId, key) {
|
|
141
|
-
peerId =
|
|
148
|
+
peerId = peerIdFromPeerId(peerId);
|
|
142
149
|
log('deleteValue await write lock');
|
|
143
150
|
const release = await this.store.lock.writeLock();
|
|
144
151
|
log('deleteValue got write lock');
|
|
@@ -160,8 +167,10 @@ export class PeerStoreMetadataBook {
|
|
|
160
167
|
log('deleteValue release write lock');
|
|
161
168
|
release();
|
|
162
169
|
}
|
|
163
|
-
if (metadata) {
|
|
164
|
-
this.
|
|
170
|
+
if (metadata != null) {
|
|
171
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
172
|
+
detail: { peerId, metadata }
|
|
173
|
+
}));
|
|
165
174
|
}
|
|
166
175
|
}
|
|
167
176
|
}
|