@libp2p/peer-store 7.0.1 → 8.0.0

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.
Files changed (76) hide show
  1. package/README.md +0 -170
  2. package/dist/index.min.js +14 -14
  3. package/dist/src/errors.d.ts +0 -1
  4. package/dist/src/errors.d.ts.map +1 -1
  5. package/dist/src/errors.js +1 -2
  6. package/dist/src/errors.js.map +1 -1
  7. package/dist/src/index.d.ts +23 -25
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +86 -88
  10. package/dist/src/index.js.map +1 -1
  11. package/dist/src/pb/peer.d.ts +28 -9
  12. package/dist/src/pb/peer.d.ts.map +1 -1
  13. package/dist/src/pb/peer.js +147 -31
  14. package/dist/src/pb/peer.js.map +1 -1
  15. package/dist/src/store.d.ts +18 -28
  16. package/dist/src/store.d.ts.map +1 -1
  17. package/dist/src/store.js +77 -147
  18. package/dist/src/store.js.map +1 -1
  19. package/dist/src/utils/bytes-to-peer.d.ts +4 -0
  20. package/dist/src/utils/bytes-to-peer.d.ts.map +1 -0
  21. package/dist/src/utils/bytes-to-peer.js +33 -0
  22. package/dist/src/utils/bytes-to-peer.js.map +1 -0
  23. package/dist/src/utils/dedupe-addresses.d.ts +6 -0
  24. package/dist/src/utils/dedupe-addresses.d.ts.map +1 -0
  25. package/dist/src/utils/dedupe-addresses.js +41 -0
  26. package/dist/src/utils/dedupe-addresses.js.map +1 -0
  27. package/dist/src/utils/peer-data-to-datastore-peer.d.ts +5 -0
  28. package/dist/src/utils/peer-data-to-datastore-peer.d.ts.map +1 -0
  29. package/dist/src/utils/peer-data-to-datastore-peer.js +92 -0
  30. package/dist/src/utils/peer-data-to-datastore-peer.js.map +1 -0
  31. package/dist/src/utils/peer-id-to-datastore-key.d.ts +5 -0
  32. package/dist/src/utils/peer-id-to-datastore-key.d.ts.map +1 -0
  33. package/dist/src/utils/peer-id-to-datastore-key.js +13 -0
  34. package/dist/src/utils/peer-id-to-datastore-key.js.map +1 -0
  35. package/dist/src/utils/to-peer-pb.d.ts +10 -0
  36. package/dist/src/utils/to-peer-pb.d.ts.map +1 -0
  37. package/dist/src/utils/to-peer-pb.js +182 -0
  38. package/dist/src/utils/to-peer-pb.js.map +1 -0
  39. package/dist/typedoc-urls.json +13 -2
  40. package/package.json +8 -10
  41. package/src/errors.ts +1 -2
  42. package/src/index.ts +97 -103
  43. package/src/pb/peer.proto +10 -7
  44. package/src/pb/peer.ts +187 -37
  45. package/src/store.ts +102 -189
  46. package/src/utils/bytes-to-peer.ts +41 -0
  47. package/src/utils/dedupe-addresses.ts +51 -0
  48. package/src/utils/peer-data-to-datastore-peer.ts +116 -0
  49. package/src/utils/peer-id-to-datastore-key.ts +15 -0
  50. package/src/utils/to-peer-pb.ts +237 -0
  51. package/dist/src/address-book.d.ts +0 -29
  52. package/dist/src/address-book.d.ts.map +0 -1
  53. package/dist/src/address-book.js +0 -304
  54. package/dist/src/address-book.js.map +0 -1
  55. package/dist/src/key-book.d.ts +0 -21
  56. package/dist/src/key-book.d.ts.map +0 -1
  57. package/dist/src/key-book.js +0 -121
  58. package/dist/src/key-book.js.map +0 -1
  59. package/dist/src/metadata-book.d.ts +0 -28
  60. package/dist/src/metadata-book.d.ts.map +0 -1
  61. package/dist/src/metadata-book.js +0 -211
  62. package/dist/src/metadata-book.js.map +0 -1
  63. package/dist/src/pb/tags.d.ts +0 -21
  64. package/dist/src/pb/tags.d.ts.map +0 -1
  65. package/dist/src/pb/tags.js +0 -111
  66. package/dist/src/pb/tags.js.map +0 -1
  67. package/dist/src/proto-book.d.ts +0 -18
  68. package/dist/src/proto-book.d.ts.map +0 -1
  69. package/dist/src/proto-book.js +0 -199
  70. package/dist/src/proto-book.js.map +0 -1
  71. package/src/address-book.ts +0 -367
  72. package/src/key-book.ts +0 -140
  73. package/src/metadata-book.ts +0 -244
  74. package/src/pb/tags.proto +0 -11
  75. package/src/pb/tags.ts +0 -145
  76. package/src/proto-book.ts +0 -234
@@ -0,0 +1,237 @@
1
+ import type { PeerId } from '@libp2p/interface-peer-id'
2
+ import type { Address, Peer, PeerData, TagOptions } from '@libp2p/interface-peer-store'
3
+ import { CodeError } from '@libp2p/interfaces/errors'
4
+ import { codes } from '../errors.js'
5
+ import { equals as uint8arrayEquals } from 'uint8arrays/equals'
6
+ import type { AddressFilter } from '../index.js'
7
+ import type { Tag, Peer as PeerPB } from '../pb/peer.js'
8
+ import { dedupeFilterAndSortAddresses } from './dedupe-addresses.js'
9
+
10
+ export interface ToPBPeerOptions {
11
+ addressFilter?: AddressFilter
12
+ existingPeer?: Peer
13
+ }
14
+
15
+ export async function toPeerPB (peerId: PeerId, data: Partial<PeerData>, strategy: 'merge' | 'patch', options: ToPBPeerOptions): Promise<PeerPB> {
16
+ if (data == null) {
17
+ throw new CodeError('Invalid PeerData', codes.ERR_INVALID_PARAMETERS)
18
+ }
19
+
20
+ if (data.publicKey != null && peerId.publicKey != null && !uint8arrayEquals(data.publicKey, peerId.publicKey)) {
21
+ throw new CodeError('publicKey bytes do not match peer id publicKey bytes', codes.ERR_INVALID_PARAMETERS)
22
+ }
23
+
24
+ const existingPeer = options.existingPeer
25
+
26
+ if (existingPeer != null && !peerId.equals(existingPeer.id)) {
27
+ throw new CodeError('peer id did not match existing peer id', codes.ERR_INVALID_PARAMETERS)
28
+ }
29
+
30
+ let addresses: Address[] = existingPeer?.addresses ?? []
31
+ let protocols: Set<string> = new Set(existingPeer?.protocols ?? [])
32
+ let metadata: Map<string, Uint8Array> = existingPeer?.metadata ?? new Map()
33
+ let tags: Map<string, Tag> = existingPeer?.tags ?? new Map()
34
+ let peerRecordEnvelope: Uint8Array | undefined = existingPeer?.peerRecordEnvelope
35
+
36
+ // when patching, we replace the original fields with passed values
37
+ if (strategy === 'patch') {
38
+ if (data.multiaddrs != null || data.addresses != null) {
39
+ addresses = []
40
+
41
+ if (data.multiaddrs != null) {
42
+ addresses.push(...data.multiaddrs.map(multiaddr => ({
43
+ isCertified: false,
44
+ multiaddr
45
+ })))
46
+ }
47
+
48
+ if (data.addresses != null) {
49
+ addresses.push(...data.addresses)
50
+ }
51
+ }
52
+
53
+ if (data.protocols != null) {
54
+ protocols = new Set(data.protocols)
55
+ }
56
+
57
+ if (data.metadata != null) {
58
+ const metadataEntries = data.metadata instanceof Map ? [...data.metadata.entries()] : Object.entries(data.metadata)
59
+
60
+ metadata = createSortedMap(metadataEntries, {
61
+ validate: validateMetadata
62
+ })
63
+ }
64
+
65
+ if (data.tags != null) {
66
+ const tagsEntries = data.tags instanceof Map ? [...data.tags.entries()] : Object.entries(data.tags)
67
+
68
+ tags = createSortedMap(tagsEntries, {
69
+ validate: validateTag,
70
+ map: mapTag
71
+ })
72
+ }
73
+
74
+ if (data.peerRecordEnvelope != null) {
75
+ peerRecordEnvelope = data.peerRecordEnvelope
76
+ }
77
+ }
78
+
79
+ // when merging, we join the original fields with passed values
80
+ if (strategy === 'merge') {
81
+ if (data.multiaddrs != null) {
82
+ addresses.push(...data.multiaddrs.map(multiaddr => ({
83
+ isCertified: false,
84
+ multiaddr
85
+ })))
86
+ }
87
+
88
+ if (data.addresses != null) {
89
+ addresses.push(...data.addresses)
90
+ }
91
+
92
+ if (data.protocols != null) {
93
+ protocols = new Set([...protocols, ...data.protocols])
94
+ }
95
+
96
+ if (data.metadata != null) {
97
+ const metadataEntries = data.metadata instanceof Map ? [...data.metadata.entries()] : Object.entries(data.metadata)
98
+
99
+ for (const [key, value] of metadataEntries) {
100
+ if (value == null) {
101
+ metadata.delete(key)
102
+ } else {
103
+ metadata.set(key, value)
104
+ }
105
+ }
106
+
107
+ metadata = createSortedMap([...metadata.entries()], {
108
+ validate: validateMetadata
109
+ })
110
+ }
111
+
112
+ if (data.tags != null) {
113
+ const tagsEntries = data.tags instanceof Map ? [...data.tags.entries()] : Object.entries(data.tags)
114
+ const mergedTags: Map<string, Tag | TagOptions> = new Map(tags)
115
+
116
+ for (const [key, value] of tagsEntries) {
117
+ if (value == null) {
118
+ mergedTags.delete(key)
119
+ } else {
120
+ mergedTags.set(key, value)
121
+ }
122
+ }
123
+
124
+ tags = createSortedMap([...mergedTags.entries()], {
125
+ validate: validateTag,
126
+ map: mapTag
127
+ })
128
+ }
129
+
130
+ if (data.peerRecordEnvelope != null) {
131
+ peerRecordEnvelope = data.peerRecordEnvelope
132
+ }
133
+ }
134
+
135
+ const output: PeerPB = {
136
+ addresses: await dedupeFilterAndSortAddresses(peerId, options.addressFilter ?? (async () => true), addresses),
137
+ protocols: [...protocols.values()].sort((a, b) => {
138
+ return a.localeCompare(b)
139
+ }),
140
+ metadata,
141
+ tags,
142
+
143
+ publicKey: existingPeer?.id.publicKey ?? data.publicKey ?? peerId.publicKey,
144
+ peerRecordEnvelope
145
+ }
146
+
147
+ // Ed25519 and secp256k1 have their public key embedded in them so no need to duplicate it
148
+ if (peerId.type !== 'RSA') {
149
+ delete output.publicKey
150
+ }
151
+
152
+ return output
153
+ }
154
+
155
+ interface CreateSortedMapOptions <V, R = V> {
156
+ validate: (key: string, value: V) => void
157
+ map?: (key: string, value: V) => R
158
+ }
159
+
160
+ /**
161
+ * In JS maps are ordered by insertion order so create a new map with the
162
+ * keys inserted in alphabetical order.
163
+ */
164
+ function createSortedMap <V, R = V> (entries: Array<[string, V | undefined]>, options: CreateSortedMapOptions<V, R>): Map<string, R> {
165
+ const output = new Map()
166
+
167
+ for (const [key, value] of entries) {
168
+ if (value == null) {
169
+ continue
170
+ }
171
+
172
+ options.validate(key, value)
173
+ }
174
+
175
+ for (const [key, value] of entries.sort(([a], [b]) => {
176
+ return a.localeCompare(b)
177
+ })) {
178
+ if (value != null) {
179
+ output.set(key, options.map?.(key, value) ?? value)
180
+ }
181
+ }
182
+
183
+ return output
184
+ }
185
+
186
+ function validateMetadata (key: string, value: Uint8Array): void {
187
+ if (typeof key !== 'string') {
188
+ throw new CodeError('Metadata key must be a string', codes.ERR_INVALID_PARAMETERS)
189
+ }
190
+
191
+ if (!(value instanceof Uint8Array)) {
192
+ throw new CodeError('Metadata value must be a Uint8Array', codes.ERR_INVALID_PARAMETERS)
193
+ }
194
+ }
195
+
196
+ function validateTag (key: string, tag: TagOptions): void {
197
+ if (typeof key !== 'string') {
198
+ throw new CodeError('Tag name must be a string', codes.ERR_INVALID_PARAMETERS)
199
+ }
200
+
201
+ if (tag.value != null) {
202
+ if (parseInt(`${tag.value}`, 10) !== tag.value) {
203
+ throw new CodeError('Tag value must be an integer', codes.ERR_INVALID_PARAMETERS)
204
+ }
205
+
206
+ if (tag.value < 0 || tag.value > 100) {
207
+ throw new CodeError('Tag value must be between 0-100', codes.ERR_INVALID_PARAMETERS)
208
+ }
209
+ }
210
+
211
+ if (tag.ttl != null) {
212
+ if (parseInt(`${tag.ttl}`, 10) !== tag.ttl) {
213
+ throw new CodeError('Tag ttl must be an integer', codes.ERR_INVALID_PARAMETERS)
214
+ }
215
+
216
+ if (tag.ttl < 0) {
217
+ throw new CodeError('Tag ttl must be between greater than 0', codes.ERR_INVALID_PARAMETERS)
218
+ }
219
+ }
220
+ }
221
+
222
+ function mapTag (key: string, tag: any): Tag {
223
+ let expiry: bigint | undefined
224
+
225
+ if (tag.expiry != null) {
226
+ expiry = tag.expiry
227
+ }
228
+
229
+ if (tag.ttl != null) {
230
+ expiry = BigInt(Date.now() + Number(tag.ttl))
231
+ }
232
+
233
+ return {
234
+ value: tag.value ?? 0,
235
+ expiry
236
+ }
237
+ }
@@ -1,29 +0,0 @@
1
- import { RecordEnvelope } from '@libp2p/peer-record';
2
- import type { Address, AddressFilter, PeerStore } from '@libp2p/interface-peer-store';
3
- import type { Store } from './store.js';
4
- import type { Envelope } from '@libp2p/interface-record';
5
- import type { PeerId } from '@libp2p/interface-peer-id';
6
- import type { Multiaddr } from '@multiformats/multiaddr';
7
- export declare class PeerStoreAddressBook {
8
- private readonly dispatchEvent;
9
- private readonly store;
10
- private readonly addressFilter;
11
- constructor(dispatchEvent: PeerStore['dispatchEvent'], store: Store, addressFilter?: AddressFilter);
12
- /**
13
- * ConsumePeerRecord adds addresses from a signed peer record contained in a record envelope.
14
- * This will return a boolean that indicates if the record was successfully processed and added
15
- * into the AddressBook.
16
- */
17
- consumePeerRecord(envelope: Envelope): Promise<boolean>;
18
- getRawEnvelope(peerId: PeerId): Promise<Uint8Array | undefined>;
19
- /**
20
- * Get an Envelope containing a PeerRecord for the given peer.
21
- * Returns undefined if no record exists.
22
- */
23
- getPeerRecord(peerId: PeerId): Promise<RecordEnvelope | undefined>;
24
- get(peerId: PeerId): Promise<Address[]>;
25
- set(peerId: PeerId, multiaddrs: Multiaddr[]): Promise<void>;
26
- add(peerId: PeerId, multiaddrs: Multiaddr[]): Promise<void>;
27
- delete(peerId: PeerId): Promise<void>;
28
- }
29
- //# sourceMappingURL=address-book.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"address-book.d.ts","sourceRoot":"","sources":["../../src/address-book.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGhE,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAkC,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACrH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,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,GAAG,OAAO,CAAC,OAAO,CAAC;IAyExD,cAAc,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAmBtE;;;OAGG;IACG,aAAa,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAUnE,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAuBxC,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsE5D,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoE5D,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoC7C"}
@@ -1,304 +0,0 @@
1
- import { logger } from '@libp2p/logger';
2
- import { CodeError } from '@libp2p/interfaces/errors';
3
- import { isMultiaddr } from '@multiformats/multiaddr';
4
- import { codes } from './errors.js';
5
- import { PeerRecord, RecordEnvelope } from '@libp2p/peer-record';
6
- import { peerIdFromPeerId } from '@libp2p/peer-id';
7
- import { CustomEvent } from '@libp2p/interfaces/events';
8
- const log = logger('libp2p:peer-store:address-book');
9
- const EVENT_NAME = 'change:multiaddrs';
10
- async function allowAll() {
11
- return true;
12
- }
13
- export class PeerStoreAddressBook {
14
- constructor(dispatchEvent, store, addressFilter) {
15
- this.dispatchEvent = dispatchEvent;
16
- this.store = store;
17
- this.addressFilter = addressFilter ?? allowAll;
18
- }
19
- /**
20
- * ConsumePeerRecord adds addresses from a signed peer record contained in a record envelope.
21
- * This will return a boolean that indicates if the record was successfully processed and added
22
- * into the AddressBook.
23
- */
24
- async consumePeerRecord(envelope) {
25
- log.trace('consumePeerRecord await write lock');
26
- const release = await this.store.lock.writeLock();
27
- log.trace('consumePeerRecord got write lock');
28
- let peerId;
29
- let peer;
30
- let updatedPeer;
31
- try {
32
- let peerRecord;
33
- try {
34
- peerRecord = PeerRecord.createFromProtobuf(envelope.payload);
35
- }
36
- catch (err) {
37
- log.error('invalid peer record received');
38
- return false;
39
- }
40
- peerId = peerRecord.peerId;
41
- const multiaddrs = peerRecord.multiaddrs;
42
- // Verify peerId
43
- if (!peerId.equals(envelope.peerId)) {
44
- log('signing key does not match PeerId in the PeerRecord');
45
- return false;
46
- }
47
- // ensure the record has multiaddrs
48
- if (multiaddrs == null || multiaddrs.length === 0) {
49
- return false;
50
- }
51
- if (await this.store.has(peerId)) {
52
- peer = await this.store.load(peerId);
53
- if (peer.peerRecordEnvelope != null) {
54
- const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope);
55
- const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);
56
- // ensure seq is greater than, or equal to, the last received
57
- if (storedRecord.seqNumber >= peerRecord.seqNumber) {
58
- log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);
59
- return false;
60
- }
61
- }
62
- }
63
- const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter, true);
64
- // Replace unsigned addresses by the new ones from the record
65
- // TODO: Once we have ttls for the addresses, we should merge these in
66
- updatedPeer = await this.store.patchOrCreate(peerId, {
67
- addresses,
68
- peerRecordEnvelope: envelope.marshal().subarray()
69
- });
70
- log('stored provided peer record for %p', peerRecord.peerId);
71
- }
72
- finally {
73
- log.trace('consumePeerRecord release write lock');
74
- release();
75
- }
76
- this.dispatchEvent(new CustomEvent(EVENT_NAME, {
77
- detail: {
78
- peerId,
79
- multiaddrs: updatedPeer.addresses.map(({ multiaddr }) => multiaddr),
80
- oldMultiaddrs: peer == null ? [] : peer.addresses.map(({ multiaddr }) => multiaddr)
81
- }
82
- }));
83
- return true;
84
- }
85
- async getRawEnvelope(peerId) {
86
- log.trace('getRawEnvelope await read lock');
87
- const release = await this.store.lock.readLock();
88
- log.trace('getRawEnvelope got read lock');
89
- try {
90
- const peer = await this.store.load(peerId);
91
- return peer.peerRecordEnvelope;
92
- }
93
- catch (err) {
94
- if (err.code !== codes.ERR_NOT_FOUND) {
95
- throw err;
96
- }
97
- }
98
- finally {
99
- log.trace('getRawEnvelope release read lock');
100
- release();
101
- }
102
- }
103
- /**
104
- * Get an Envelope containing a PeerRecord for the given peer.
105
- * Returns undefined if no record exists.
106
- */
107
- async getPeerRecord(peerId) {
108
- const raw = await this.getRawEnvelope(peerId);
109
- if (raw == null) {
110
- return undefined;
111
- }
112
- return await RecordEnvelope.createFromProtobuf(raw);
113
- }
114
- async get(peerId) {
115
- peerId = peerIdFromPeerId(peerId);
116
- log.trace('get wait for read lock');
117
- const release = await this.store.lock.readLock();
118
- log.trace('get got read lock');
119
- try {
120
- const peer = await this.store.load(peerId);
121
- return peer.addresses;
122
- }
123
- catch (err) {
124
- if (err.code !== codes.ERR_NOT_FOUND) {
125
- throw err;
126
- }
127
- }
128
- finally {
129
- log.trace('get release read lock');
130
- release();
131
- }
132
- return [];
133
- }
134
- async set(peerId, multiaddrs) {
135
- peerId = peerIdFromPeerId(peerId);
136
- if (!Array.isArray(multiaddrs)) {
137
- log.error('multiaddrs must be an array of Multiaddrs');
138
- throw new CodeError('multiaddrs must be an array of Multiaddrs', codes.ERR_INVALID_PARAMETERS);
139
- }
140
- log.trace('set await write lock');
141
- const release = await this.store.lock.writeLock();
142
- log.trace('set got write lock');
143
- let hasPeer = false;
144
- let peer;
145
- let updatedPeer;
146
- try {
147
- const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter);
148
- // No valid addresses found
149
- if (addresses.length === 0) {
150
- return;
151
- }
152
- try {
153
- peer = await this.store.load(peerId);
154
- hasPeer = true;
155
- if (new Set([
156
- ...addresses.map(({ multiaddr }) => multiaddr.toString()),
157
- ...peer.addresses.map(({ multiaddr }) => multiaddr.toString())
158
- ]).size === peer.addresses.length && addresses.length === peer.addresses.length) {
159
- // not changing anything, no need to update
160
- return;
161
- }
162
- }
163
- catch (err) {
164
- if (err.code !== codes.ERR_NOT_FOUND) {
165
- throw err;
166
- }
167
- }
168
- updatedPeer = await this.store.patchOrCreate(peerId, { addresses });
169
- log('set multiaddrs for %p', peerId);
170
- }
171
- finally {
172
- log.trace('set multiaddrs for %p', peerId);
173
- log('set release write lock');
174
- release();
175
- }
176
- this.dispatchEvent(new CustomEvent(EVENT_NAME, {
177
- detail: {
178
- peerId,
179
- multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr),
180
- oldMultiaddrs: peer == null ? [] : peer.addresses.map(({ multiaddr }) => multiaddr)
181
- }
182
- }));
183
- // Notify the existence of a new peer
184
- if (!hasPeer) {
185
- this.dispatchEvent(new CustomEvent('peer', {
186
- detail: {
187
- id: peerId,
188
- multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr),
189
- protocols: updatedPeer.protocols
190
- }
191
- }));
192
- }
193
- }
194
- async add(peerId, multiaddrs) {
195
- peerId = peerIdFromPeerId(peerId);
196
- if (!Array.isArray(multiaddrs)) {
197
- log.error('multiaddrs must be an array of Multiaddrs');
198
- throw new CodeError('multiaddrs must be an array of Multiaddrs', codes.ERR_INVALID_PARAMETERS);
199
- }
200
- log.trace('add await write lock');
201
- const release = await this.store.lock.writeLock();
202
- log.trace('add got write lock');
203
- let hasPeer;
204
- let peer;
205
- let updatedPeer;
206
- try {
207
- const addresses = await filterMultiaddrs(peerId, multiaddrs, this.addressFilter);
208
- // No valid addresses found
209
- if (addresses.length === 0) {
210
- return;
211
- }
212
- try {
213
- peer = await this.store.load(peerId);
214
- hasPeer = true;
215
- if (new Set([
216
- ...addresses.map(({ multiaddr }) => multiaddr.toString()),
217
- ...peer.addresses.map(({ multiaddr }) => multiaddr.toString())
218
- ]).size === peer.addresses.length) {
219
- return;
220
- }
221
- }
222
- catch (err) {
223
- if (err.code !== codes.ERR_NOT_FOUND) {
224
- throw err;
225
- }
226
- }
227
- updatedPeer = await this.store.mergeOrCreate(peerId, { addresses });
228
- log('added multiaddrs for %p', peerId);
229
- }
230
- finally {
231
- log.trace('set release write lock');
232
- release();
233
- }
234
- this.dispatchEvent(new CustomEvent(EVENT_NAME, {
235
- detail: {
236
- peerId,
237
- multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr),
238
- oldMultiaddrs: peer == null ? [] : peer.addresses.map(({ multiaddr }) => multiaddr)
239
- }
240
- }));
241
- // Notify the existence of a new peer
242
- if (hasPeer === true) {
243
- this.dispatchEvent(new CustomEvent('peer', {
244
- detail: {
245
- id: peerId,
246
- multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr),
247
- protocols: updatedPeer.protocols
248
- }
249
- }));
250
- }
251
- }
252
- async delete(peerId) {
253
- peerId = peerIdFromPeerId(peerId);
254
- log.trace('delete await write lock');
255
- const release = await this.store.lock.writeLock();
256
- log.trace('delete got write lock');
257
- let peer;
258
- try {
259
- try {
260
- peer = await this.store.load(peerId);
261
- }
262
- catch (err) {
263
- if (err.code !== codes.ERR_NOT_FOUND) {
264
- throw err;
265
- }
266
- }
267
- await this.store.patchOrCreate(peerId, {
268
- addresses: []
269
- });
270
- }
271
- finally {
272
- log.trace('delete release write lock');
273
- release();
274
- }
275
- if (peer != null) {
276
- this.dispatchEvent(new CustomEvent(EVENT_NAME, {
277
- detail: {
278
- peerId,
279
- multiaddrs: [],
280
- oldMultiaddrs: peer == null ? [] : peer.addresses.map(({ multiaddr }) => multiaddr)
281
- }
282
- }));
283
- }
284
- }
285
- }
286
- async function filterMultiaddrs(peerId, multiaddrs, addressFilter, isCertified = false) {
287
- const output = [];
288
- await Promise.all(multiaddrs.map(async (multiaddr) => {
289
- if (!isMultiaddr(multiaddr)) {
290
- log.error('multiaddr must be an instance of Multiaddr');
291
- throw new CodeError('multiaddr must be an instance of Multiaddr', codes.ERR_INVALID_PARAMETERS);
292
- }
293
- const include = await addressFilter(peerId, multiaddr);
294
- if (!include) {
295
- return;
296
- }
297
- output.push({
298
- multiaddr,
299
- isCertified
300
- });
301
- }));
302
- return output;
303
- }
304
- //# sourceMappingURL=address-book.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"address-book.js","sourceRoot":"","sources":["../../src/address-book.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { Store } from './store.js';
2
- import type { PeerStore, KeyBook } from '@libp2p/interface-peer-store';
3
- import type { PeerId } from '@libp2p/interface-peer-id';
4
- export declare class PeerStoreKeyBook implements KeyBook {
5
- private readonly dispatchEvent;
6
- private readonly store;
7
- /**
8
- * The KeyBook is responsible for keeping the known public keys of a peer
9
- */
10
- constructor(dispatchEvent: PeerStore['dispatchEvent'], store: Store);
11
- /**
12
- * Set the Peer public key
13
- */
14
- set(peerId: PeerId, publicKey: Uint8Array): Promise<void>;
15
- /**
16
- * Get Public key of the given PeerId, if stored
17
- */
18
- get(peerId: PeerId): Promise<Uint8Array | undefined>;
19
- delete(peerId: PeerId): Promise<void>;
20
- }
21
- //# sourceMappingURL=key-book.d.ts.map
@@ -1 +0,0 @@
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,8BAA8B,CAAA;AACrG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAMvD,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,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDhE;;OAEG;IACG,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAqBrD,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsC7C"}