@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-book.js","sourceRoot":"","sources":["../../src/metadata-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":"metadata-book.js","sourceRoot":"","sources":["../../src/metadata-book.ts"],"names":[],"mappings":"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"}
|
package/dist/src/proto-book.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { PeerId } from '@libp2p/peer-id';
|
|
2
1
|
import type { Store } from './store.js';
|
|
3
2
|
import type { PeerStore, ProtoBook } from '@libp2p/interfaces/src/peer-store';
|
|
3
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
4
4
|
export declare class PeerStoreProtoBook implements ProtoBook {
|
|
5
|
-
private
|
|
6
|
-
private store;
|
|
5
|
+
private readonly dispatchEvent;
|
|
6
|
+
private readonly store;
|
|
7
7
|
/**
|
|
8
8
|
* The ProtoBook is responsible for keeping the known supported
|
|
9
9
|
* protocols of a peer
|
|
10
10
|
*/
|
|
11
|
-
constructor(
|
|
11
|
+
constructor(dispatchEvent: PeerStore['dispatchEvent'], store: Store);
|
|
12
12
|
get(peerId: PeerId): Promise<string[]>;
|
|
13
13
|
set(peerId: PeerId, protocols: string[]): Promise<void>;
|
|
14
14
|
add(peerId: PeerId, protocols: string[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proto-book.d.ts","sourceRoot":"","sources":["../../src/proto-book.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proto-book.d.ts","sourceRoot":"","sources":["../../src/proto-book.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAMxD,qBAAa,kBAAmB,YAAW,SAAS;IAClD,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;IAK9D,GAAG,CAAE,MAAM,EAAE,MAAM;IAqBnB,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;IA4CxC,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;IA6CxC,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;IA+C3C,MAAM,CAAE,MAAM,EAAE,MAAM;CA6B7B"}
|
package/dist/src/proto-book.js
CHANGED
|
@@ -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 { base58btc } from 'multiformats/bases/base58';
|
|
6
|
+
import { CustomEvent } from '@libp2p/interfaces';
|
|
6
7
|
const log = logger('libp2p:peer-store:proto-book');
|
|
7
8
|
const EVENT_NAME = 'change:protocols';
|
|
8
9
|
export class PeerStoreProtoBook {
|
|
@@ -10,8 +11,8 @@ export class PeerStoreProtoBook {
|
|
|
10
11
|
* The ProtoBook is responsible for keeping the known supported
|
|
11
12
|
* protocols of a peer
|
|
12
13
|
*/
|
|
13
|
-
constructor(
|
|
14
|
-
this.
|
|
14
|
+
constructor(dispatchEvent, store) {
|
|
15
|
+
this.dispatchEvent = dispatchEvent;
|
|
15
16
|
this.store = store;
|
|
16
17
|
}
|
|
17
18
|
async get(peerId) {
|
|
@@ -34,7 +35,7 @@ export class PeerStoreProtoBook {
|
|
|
34
35
|
return [];
|
|
35
36
|
}
|
|
36
37
|
async set(peerId, protocols) {
|
|
37
|
-
peerId =
|
|
38
|
+
peerId = peerIdFromPeerId(peerId);
|
|
38
39
|
if (!Array.isArray(protocols)) {
|
|
39
40
|
log.error('protocols must be provided to store data');
|
|
40
41
|
throw errcode(new Error('protocols must be provided'), codes.ERR_INVALID_PARAMETERS);
|
|
@@ -66,10 +67,12 @@ export class PeerStoreProtoBook {
|
|
|
66
67
|
log('set release write lock');
|
|
67
68
|
release();
|
|
68
69
|
}
|
|
69
|
-
this.
|
|
70
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
71
|
+
detail: { peerId, protocols: updatedPeer.protocols }
|
|
72
|
+
}));
|
|
70
73
|
}
|
|
71
74
|
async add(peerId, protocols) {
|
|
72
|
-
peerId =
|
|
75
|
+
peerId = peerIdFromPeerId(peerId);
|
|
73
76
|
if (!Array.isArray(protocols)) {
|
|
74
77
|
log.error('protocols must be provided to store data');
|
|
75
78
|
throw errcode(new Error('protocols must be provided'), codes.ERR_INVALID_PARAMETERS);
|
|
@@ -102,10 +105,12 @@ export class PeerStoreProtoBook {
|
|
|
102
105
|
log('add release write lock');
|
|
103
106
|
release();
|
|
104
107
|
}
|
|
105
|
-
this.
|
|
108
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
109
|
+
detail: { peerId, protocols: updatedPeer.protocols }
|
|
110
|
+
}));
|
|
106
111
|
}
|
|
107
112
|
async remove(peerId, protocols) {
|
|
108
|
-
peerId =
|
|
113
|
+
peerId = peerIdFromPeerId(peerId);
|
|
109
114
|
if (!Array.isArray(protocols)) {
|
|
110
115
|
log.error('protocols must be provided to store data');
|
|
111
116
|
throw errcode(new Error('protocols must be provided'), codes.ERR_INVALID_PARAMETERS);
|
|
@@ -139,10 +144,12 @@ export class PeerStoreProtoBook {
|
|
|
139
144
|
log('remove release write lock');
|
|
140
145
|
release();
|
|
141
146
|
}
|
|
142
|
-
this.
|
|
147
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
148
|
+
detail: { peerId, protocols: updatedPeer.protocols }
|
|
149
|
+
}));
|
|
143
150
|
}
|
|
144
151
|
async delete(peerId) {
|
|
145
|
-
peerId =
|
|
152
|
+
peerId = peerIdFromPeerId(peerId);
|
|
146
153
|
log('delete await write lock');
|
|
147
154
|
const release = await this.store.lock.writeLock();
|
|
148
155
|
log('delete got write lock');
|
|
@@ -162,8 +169,10 @@ export class PeerStoreProtoBook {
|
|
|
162
169
|
log('delete release write lock');
|
|
163
170
|
release();
|
|
164
171
|
}
|
|
165
|
-
if (has) {
|
|
166
|
-
this.
|
|
172
|
+
if (has === true) {
|
|
173
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
174
|
+
detail: { peerId, protocols: [] }
|
|
175
|
+
}));
|
|
167
176
|
}
|
|
168
177
|
}
|
|
169
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proto-book.js","sourceRoot":"","sources":["../../src/proto-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":"proto-book.js","sourceRoot":"","sources":["../../src/proto-book.ts"],"names":[],"mappings":"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"}
|
package/dist/src/store.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { PeerId } from '@libp2p/peer-id';
|
|
2
1
|
import { Key } from 'interface-datastore/key';
|
|
3
2
|
import type { Peer } from '@libp2p/interfaces/peer-store';
|
|
4
3
|
import type { Datastore } from 'interface-datastore';
|
|
4
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
5
5
|
export interface Store {
|
|
6
6
|
has: (peerId: PeerId) => Promise<boolean>;
|
|
7
7
|
save: (peer: Peer) => Promise<Peer>;
|
|
8
8
|
load: (peerId: PeerId) => Promise<Peer>;
|
|
9
|
-
delete(peerId: PeerId)
|
|
9
|
+
delete: (peerId: PeerId) => Promise<void>;
|
|
10
10
|
merge: (peerId: PeerId, data: Partial<Peer>) => Promise<Peer>;
|
|
11
11
|
mergeOrCreate: (peerId: PeerId, data: Partial<Peer>) => Promise<Peer>;
|
|
12
12
|
patch: (peerId: PeerId, data: Partial<Peer>) => Promise<Peer>;
|
|
@@ -18,7 +18,7 @@ export interface Store {
|
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
export declare class PersistentStore {
|
|
21
|
-
private datastore;
|
|
21
|
+
private readonly datastore;
|
|
22
22
|
lock: any;
|
|
23
23
|
constructor(datastore: Datastore);
|
|
24
24
|
_peerIdToDatastoreKey(peerId: PeerId): Key;
|
package/dist/src/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAM7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAMxD,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACzC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,GAAG,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;IAE9B,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;QACnC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;KACrC,CAAA;CACF;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IAC9B,IAAI,EAAE,GAAG,CAAA;gBAEH,SAAS,EAAE,SAAS;IAQjC,qBAAqB,CAAE,MAAM,EAAE,MAAM;IAU/B,GAAG,CAAE,MAAM,EAAE,MAAM;IAInB,MAAM,CAAE,MAAM,EAAE,MAAM;IAItB,IAAI,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBpC,IAAI,CAAE,IAAI,EAAE,IAAI;IAqChB,KAAK,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;IAM1C,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;IAgBlD,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI;IAQvD,KAAK,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;IAM1C,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;IAiBlD,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI;IAoCrD,GAAG;CAWZ"}
|
package/dist/src/store.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { logger } from '@libp2p/logger';
|
|
2
|
-
import {
|
|
2
|
+
import { peerIdFromBytes } from '@libp2p/peer-id';
|
|
3
3
|
import errcode from 'err-code';
|
|
4
4
|
import { codes } from './errors.js';
|
|
5
5
|
import { Key } from 'interface-datastore/key';
|
|
@@ -27,7 +27,7 @@ export class PersistentStore {
|
|
|
27
27
|
return new Key(`${NAMESPACE_COMMON}b${b32key}`);
|
|
28
28
|
}
|
|
29
29
|
async has(peerId) {
|
|
30
|
-
return this.datastore.has(this._peerIdToDatastoreKey(peerId));
|
|
30
|
+
return await this.datastore.has(this._peerIdToDatastoreKey(peerId));
|
|
31
31
|
}
|
|
32
32
|
async delete(peerId) {
|
|
33
33
|
await this.datastore.delete(this._peerIdToDatastoreKey(peerId));
|
|
@@ -44,10 +44,11 @@ export class PersistentStore {
|
|
|
44
44
|
id: peerId,
|
|
45
45
|
addresses: peer.addresses.map(({ multiaddr, isCertified }) => ({
|
|
46
46
|
multiaddr: new Multiaddr(multiaddr),
|
|
47
|
-
isCertified: isCertified
|
|
47
|
+
isCertified: isCertified ?? false
|
|
48
48
|
})),
|
|
49
49
|
metadata,
|
|
50
|
-
|
|
50
|
+
pubKey: peer.pubKey ?? undefined,
|
|
51
|
+
peerRecordEnvelope: peer.peerRecordEnvelope ?? undefined
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
54
|
async save(peer) {
|
|
@@ -79,7 +80,7 @@ export class PersistentStore {
|
|
|
79
80
|
peerRecordEnvelope: peer.peerRecordEnvelope
|
|
80
81
|
}).finish();
|
|
81
82
|
await this.datastore.put(this._peerIdToDatastoreKey(peer.id), buf);
|
|
82
|
-
return this.load(peer.id);
|
|
83
|
+
return await this.load(peer.id);
|
|
83
84
|
}
|
|
84
85
|
async patch(peerId, data) {
|
|
85
86
|
const peer = await this.load(peerId);
|
|
@@ -107,7 +108,7 @@ export class PersistentStore {
|
|
|
107
108
|
}
|
|
108
109
|
async merge(peerId, data) {
|
|
109
110
|
const peer = await this.load(peerId);
|
|
110
|
-
return this._merge(peerId, data, peer);
|
|
111
|
+
return await this._merge(peerId, data, peer);
|
|
111
112
|
}
|
|
112
113
|
async mergeOrCreate(peerId, data) {
|
|
113
114
|
/** @type {Peer} */
|
|
@@ -128,12 +129,12 @@ export class PersistentStore {
|
|
|
128
129
|
// favour of the supplied versions
|
|
129
130
|
/** @type {Map<string, boolean>} */
|
|
130
131
|
const addresses = new Map();
|
|
131
|
-
(data.addresses
|
|
132
|
+
(data.addresses ?? []).forEach(addr => {
|
|
132
133
|
addresses.set(addr.multiaddr.toString(), addr.isCertified);
|
|
133
134
|
});
|
|
134
135
|
peer.addresses.forEach(({ multiaddr, isCertified }) => {
|
|
135
136
|
const addrStr = multiaddr.toString();
|
|
136
|
-
addresses.set(addrStr, Boolean(addresses.
|
|
137
|
+
addresses.set(addrStr, Boolean(addresses.has(addrStr) ?? isCertified));
|
|
137
138
|
});
|
|
138
139
|
return await this.save({
|
|
139
140
|
id: peerId,
|
|
@@ -144,15 +145,15 @@ export class PersistentStore {
|
|
|
144
145
|
};
|
|
145
146
|
}),
|
|
146
147
|
protocols: Array.from(new Set([
|
|
147
|
-
...(peer.protocols
|
|
148
|
-
...(data.protocols
|
|
148
|
+
...(peer.protocols ?? []),
|
|
149
|
+
...(data.protocols ?? [])
|
|
149
150
|
])),
|
|
150
151
|
metadata: new Map([
|
|
151
|
-
...(peer.metadata
|
|
152
|
-
...(data.metadata
|
|
152
|
+
...(peer.metadata?.entries() ?? []),
|
|
153
|
+
...(data.metadata?.entries() ?? [])
|
|
153
154
|
]),
|
|
154
|
-
pubKey: data.pubKey
|
|
155
|
-
peerRecordEnvelope: data.peerRecordEnvelope
|
|
155
|
+
pubKey: data.pubKey ?? (peer != null ? peer.pubKey : undefined),
|
|
156
|
+
peerRecordEnvelope: data.peerRecordEnvelope ?? (peer != null ? peer.peerRecordEnvelope : undefined)
|
|
156
157
|
});
|
|
157
158
|
}
|
|
158
159
|
async *all() {
|
|
@@ -162,7 +163,7 @@ export class PersistentStore {
|
|
|
162
163
|
// /peers/${peer-id-as-libp2p-key-cid-string-in-base-32}
|
|
163
164
|
const base32Str = key.toString().split('/')[2];
|
|
164
165
|
const buf = base32.decode(base32Str);
|
|
165
|
-
yield this.load(
|
|
166
|
+
yield this.load(peerIdFromBytes(buf));
|
|
166
167
|
}
|
|
167
168
|
}
|
|
168
169
|
}
|
package/dist/src/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/peer-store",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Stores information about peers libp2p knows on the network",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-peer-store#readme",
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
"sourceType": "module"
|
|
38
38
|
},
|
|
39
39
|
"ignorePatterns": [
|
|
40
|
-
"
|
|
40
|
+
"src/pb/*.d.ts",
|
|
41
|
+
"src/pb/peer.js"
|
|
41
42
|
]
|
|
42
43
|
},
|
|
43
44
|
"release": {
|
|
@@ -123,15 +124,14 @@
|
|
|
123
124
|
},
|
|
124
125
|
"scripts": {
|
|
125
126
|
"lint": "aegir lint",
|
|
126
|
-
"dep-check": "aegir dep-check dist/src/**/*.js",
|
|
127
|
-
"build": "tsc",
|
|
128
|
-
"postbuild": "npm run build:copy-proto-files",
|
|
127
|
+
"dep-check": "aegir dep-check dist/src/**/*.js dist/test/**/*.js",
|
|
128
|
+
"build": "tsc && npm run build:copy-proto-files",
|
|
129
129
|
"generate": "npm run generate:proto && npm run generate:proto-types && tsc",
|
|
130
130
|
"generate:proto": "pbjs -t static-module -w es6 -r libp2p-peer-store --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/pb/peer.js ./src/pb/peer.proto",
|
|
131
131
|
"generate:proto-types": "pbts -o src/pb/peer.d.ts src/pb/peer.js",
|
|
132
|
-
"build:copy-proto-files": "
|
|
132
|
+
"build:copy-proto-files": "mkdirp dist/src/pb && cp src/pb/*.js dist/src/pb && cp src/pb/*.d.ts dist/src/pb",
|
|
133
133
|
"pretest": "npm run build",
|
|
134
|
-
"test": "aegir test -f ./dist/test",
|
|
134
|
+
"test": "aegir test -f ./dist/test/*.js -f ./dist/test/**/*.js",
|
|
135
135
|
"test:chrome": "npm run test -- -t browser",
|
|
136
136
|
"test:chrome-webworker": "npm run test -- -t webworker",
|
|
137
137
|
"test:firefox": "npm run test -- -t browser -- --browser firefox",
|
|
@@ -141,22 +141,30 @@
|
|
|
141
141
|
},
|
|
142
142
|
"dependencies": {
|
|
143
143
|
"@libp2p/interfaces": "^1.0.0",
|
|
144
|
-
"protobufjs": "^6.10.2",
|
|
145
144
|
"@libp2p/logger": "^1.0.1",
|
|
146
|
-
"
|
|
145
|
+
"@libp2p/peer-record": "^1.0.1",
|
|
147
146
|
"@multiformats/multiaddr": "^10.1.5",
|
|
147
|
+
"interface-datastore": "^6.1.0",
|
|
148
148
|
"it-all": "^1.0.6",
|
|
149
149
|
"it-filter": "^1.0.3",
|
|
150
|
-
"it-pipe": "^2.0.3",
|
|
151
|
-
"it-map": "^1.0.6",
|
|
152
150
|
"it-foreach": "^0.1.1",
|
|
151
|
+
"it-map": "^1.0.6",
|
|
152
|
+
"it-pipe": "^2.0.3",
|
|
153
153
|
"mortice": "^3.0.0",
|
|
154
154
|
"multiformats": "^9.6.3",
|
|
155
|
-
"
|
|
155
|
+
"protobufjs": "^6.10.2"
|
|
156
156
|
},
|
|
157
157
|
"devDependencies": {
|
|
158
|
+
"@libp2p/interface-compliance-tests": "^1.1.2",
|
|
159
|
+
"@libp2p/peer-id": "^1.1.0",
|
|
160
|
+
"@libp2p/peer-id-factory": "^1.0.3",
|
|
161
|
+
"@libp2p/utils": "^1.0.5",
|
|
158
162
|
"aegir": "^36.1.3",
|
|
163
|
+
"datastore-core": "^7.0.1",
|
|
164
|
+
"err-code": "^3.0.1",
|
|
165
|
+
"p-defer": "^4.0.0",
|
|
166
|
+
"p-wait-for": "^4.1.0",
|
|
159
167
|
"sinon": "^13.0.1",
|
|
160
|
-
"
|
|
168
|
+
"uint8arrays": "^3.0.0"
|
|
161
169
|
}
|
|
162
170
|
}
|
package/src/address-book.ts
CHANGED
|
@@ -9,11 +9,13 @@ 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
|
import type { PeerStore } from '@libp2p/interfaces/peer-store'
|
|
14
15
|
import type { Store } from './store.js'
|
|
15
16
|
import type { AddressFilter, AddressSorter } from './index.js'
|
|
16
17
|
import type { Envelope } from '@libp2p/interfaces/record'
|
|
18
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
|
17
19
|
|
|
18
20
|
const log = logger('libp2p:peer-store:address-book')
|
|
19
21
|
const EVENT_NAME = 'change:multiaddrs'
|
|
@@ -23,12 +25,12 @@ async function allowAll () {
|
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
export class PeerStoreAddressBook {
|
|
26
|
-
private
|
|
27
|
-
private store: Store
|
|
28
|
-
private addressFilter: AddressFilter
|
|
28
|
+
private readonly dispatchEvent: PeerStore['dispatchEvent']
|
|
29
|
+
private readonly store: Store
|
|
30
|
+
private readonly addressFilter: AddressFilter
|
|
29
31
|
|
|
30
|
-
constructor (
|
|
31
|
-
this.
|
|
32
|
+
constructor (dispatchEvent: PeerStore['dispatchEvent'], store: Store, addressFilter?: AddressFilter) {
|
|
33
|
+
this.dispatchEvent = dispatchEvent
|
|
32
34
|
this.store = store
|
|
33
35
|
this.addressFilter = addressFilter ?? allowAll
|
|
34
36
|
}
|
|
@@ -65,14 +67,14 @@ export class PeerStoreAddressBook {
|
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
// ensure the record has multiaddrs
|
|
68
|
-
if (
|
|
70
|
+
if (multiaddrs == null || multiaddrs.length === 0) {
|
|
69
71
|
return false
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
if (await this.store.has(peerId)) {
|
|
73
75
|
const peer = await this.store.load(peerId)
|
|
74
76
|
|
|
75
|
-
if (peer.peerRecordEnvelope) {
|
|
77
|
+
if (peer.peerRecordEnvelope != null) {
|
|
76
78
|
const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope)
|
|
77
79
|
const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload)
|
|
78
80
|
|
|
@@ -96,7 +98,9 @@ export class PeerStoreAddressBook {
|
|
|
96
98
|
release()
|
|
97
99
|
}
|
|
98
100
|
|
|
99
|
-
this.
|
|
101
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
102
|
+
detail: { peerId, multiaddrs: updatedPeer.addresses.map(({ multiaddr }) => multiaddr) }
|
|
103
|
+
}))
|
|
100
104
|
|
|
101
105
|
return true
|
|
102
106
|
}
|
|
@@ -127,15 +131,15 @@ export class PeerStoreAddressBook {
|
|
|
127
131
|
async getPeerRecord (peerId: PeerId) {
|
|
128
132
|
const raw = await this.getRawEnvelope(peerId)
|
|
129
133
|
|
|
130
|
-
if (
|
|
134
|
+
if (raw == null) {
|
|
131
135
|
return undefined
|
|
132
136
|
}
|
|
133
137
|
|
|
134
|
-
return RecordEnvelope.createFromProtobuf(raw)
|
|
138
|
+
return await RecordEnvelope.createFromProtobuf(raw)
|
|
135
139
|
}
|
|
136
140
|
|
|
137
141
|
async get (peerId: PeerId) {
|
|
138
|
-
peerId =
|
|
142
|
+
peerId = peerIdFromPeerId(peerId)
|
|
139
143
|
|
|
140
144
|
log('get wait for read lock')
|
|
141
145
|
const release = await this.store.lock.readLock()
|
|
@@ -158,7 +162,7 @@ export class PeerStoreAddressBook {
|
|
|
158
162
|
}
|
|
159
163
|
|
|
160
164
|
async set (peerId: PeerId, multiaddrs: Multiaddr[]) {
|
|
161
|
-
peerId =
|
|
165
|
+
peerId = peerIdFromPeerId(peerId)
|
|
162
166
|
|
|
163
167
|
if (!Array.isArray(multiaddrs)) {
|
|
164
168
|
log.error('multiaddrs must be an array of Multiaddrs')
|
|
@@ -176,7 +180,7 @@ export class PeerStoreAddressBook {
|
|
|
176
180
|
const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter)
|
|
177
181
|
|
|
178
182
|
// No valid addresses found
|
|
179
|
-
if (
|
|
183
|
+
if (addresses.length === 0) {
|
|
180
184
|
return
|
|
181
185
|
}
|
|
182
186
|
|
|
@@ -205,16 +209,22 @@ export class PeerStoreAddressBook {
|
|
|
205
209
|
release()
|
|
206
210
|
}
|
|
207
211
|
|
|
208
|
-
this.
|
|
212
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
213
|
+
detail: { peerId, multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr) }
|
|
214
|
+
}))
|
|
209
215
|
|
|
210
216
|
// Notify the existence of a new peer
|
|
211
217
|
if (!hasPeer) {
|
|
212
|
-
this.
|
|
218
|
+
this.dispatchEvent(new CustomEvent('peer', {
|
|
219
|
+
detail: {
|
|
220
|
+
peerId
|
|
221
|
+
}
|
|
222
|
+
}))
|
|
213
223
|
}
|
|
214
224
|
}
|
|
215
225
|
|
|
216
226
|
async add (peerId: PeerId, multiaddrs: Multiaddr[]) {
|
|
217
|
-
peerId =
|
|
227
|
+
peerId = peerIdFromPeerId(peerId)
|
|
218
228
|
|
|
219
229
|
if (!Array.isArray(multiaddrs)) {
|
|
220
230
|
log.error('multiaddrs must be an array of Multiaddrs')
|
|
@@ -232,7 +242,7 @@ export class PeerStoreAddressBook {
|
|
|
232
242
|
const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter)
|
|
233
243
|
|
|
234
244
|
// No valid addresses found
|
|
235
|
-
if (
|
|
245
|
+
if (addresses.length === 0) {
|
|
236
246
|
return
|
|
237
247
|
}
|
|
238
248
|
|
|
@@ -260,16 +270,20 @@ export class PeerStoreAddressBook {
|
|
|
260
270
|
release()
|
|
261
271
|
}
|
|
262
272
|
|
|
263
|
-
this.
|
|
273
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
274
|
+
detail: { peerId, multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr) }
|
|
275
|
+
}))
|
|
264
276
|
|
|
265
277
|
// Notify the existence of a new peer
|
|
266
|
-
if (
|
|
267
|
-
this.
|
|
278
|
+
if (hasPeer === true) {
|
|
279
|
+
this.dispatchEvent(new CustomEvent('peer', {
|
|
280
|
+
detail: { peerId }
|
|
281
|
+
}))
|
|
268
282
|
}
|
|
269
283
|
}
|
|
270
284
|
|
|
271
285
|
async delete (peerId: PeerId) {
|
|
272
|
-
peerId =
|
|
286
|
+
peerId = peerIdFromPeerId(peerId)
|
|
273
287
|
|
|
274
288
|
log('delete await write lock')
|
|
275
289
|
const release = await this.store.lock.writeLock()
|
|
@@ -289,7 +303,9 @@ export class PeerStoreAddressBook {
|
|
|
289
303
|
}
|
|
290
304
|
|
|
291
305
|
if (has) {
|
|
292
|
-
this.
|
|
306
|
+
this.dispatchEvent(new CustomEvent(EVENT_NAME, {
|
|
307
|
+
detail: { peerId, multiaddrs: [] }
|
|
308
|
+
}))
|
|
293
309
|
}
|
|
294
310
|
}
|
|
295
311
|
|
|
@@ -300,17 +316,19 @@ export class PeerStoreAddressBook {
|
|
|
300
316
|
addresses
|
|
301
317
|
).map((address) => {
|
|
302
318
|
const multiaddr = address.multiaddr
|
|
303
|
-
|
|
304
319
|
const idString = multiaddr.getPeerId()
|
|
305
|
-
|
|
320
|
+
|
|
321
|
+
if (idString === peerId.toString()) {
|
|
322
|
+
return multiaddr
|
|
323
|
+
}
|
|
306
324
|
|
|
307
325
|
return multiaddr.encapsulate(`/p2p/${peerId.toString(base58btc)}`)
|
|
308
326
|
})
|
|
309
327
|
}
|
|
310
328
|
}
|
|
311
329
|
|
|
312
|
-
function filterMultiaddrs (peerId: PeerId, multiaddrs: Multiaddr[], addressFilter: AddressFilter, isCertified: boolean = false) {
|
|
313
|
-
return pipe(
|
|
330
|
+
async function filterMultiaddrs (peerId: PeerId, multiaddrs: Multiaddr[], addressFilter: AddressFilter, isCertified: boolean = false) {
|
|
331
|
+
return await pipe(
|
|
314
332
|
multiaddrs,
|
|
315
333
|
(source) => each(source, (multiaddr) => {
|
|
316
334
|
if (!Multiaddr.isMultiaddr(multiaddr)) {
|
|
@@ -318,13 +336,13 @@ function filterMultiaddrs (peerId: PeerId, multiaddrs: Multiaddr[], addressFilte
|
|
|
318
336
|
throw errcode(new Error('multiaddr must be an instance of Multiaddr'), codes.ERR_INVALID_PARAMETERS)
|
|
319
337
|
}
|
|
320
338
|
}),
|
|
321
|
-
(source) => filter(source, (multiaddr) => addressFilter(peerId, multiaddr)),
|
|
339
|
+
(source) => filter(source, async (multiaddr) => await addressFilter(peerId, multiaddr)),
|
|
322
340
|
(source) => map(source, (multiaddr) => {
|
|
323
341
|
return {
|
|
324
342
|
multiaddr: new Multiaddr(multiaddr.toString()),
|
|
325
343
|
isCertified
|
|
326
344
|
}
|
|
327
345
|
}),
|
|
328
|
-
(source) => all(source)
|
|
346
|
+
async (source) => await all(source)
|
|
329
347
|
)
|
|
330
348
|
}
|