@libp2p/peer-store 9.0.11 → 9.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.min.js +9 -9
- package/dist/src/index.d.ts +4 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +28 -28
- package/dist/src/index.js.map +1 -1
- package/dist/src/store.d.ts +3 -1
- package/dist/src/store.d.ts.map +1 -1
- package/dist/src/store.js +1 -1
- package/dist/src/store.js.map +1 -1
- package/dist/src/utils/bytes-to-peer.d.ts +2 -1
- package/dist/src/utils/bytes-to-peer.d.ts.map +1 -1
- package/dist/src/utils/bytes-to-peer.js.map +1 -1
- package/dist/src/utils/dedupe-addresses.d.ts +2 -1
- package/dist/src/utils/dedupe-addresses.d.ts.map +1 -1
- package/dist/src/utils/dedupe-addresses.js +1 -1
- package/dist/src/utils/dedupe-addresses.js.map +1 -1
- package/dist/src/utils/peer-data-to-datastore-peer.d.ts +2 -1
- package/dist/src/utils/peer-data-to-datastore-peer.d.ts.map +1 -1
- package/dist/src/utils/peer-data-to-datastore-peer.js +1 -1
- package/dist/src/utils/peer-data-to-datastore-peer.js.map +1 -1
- package/dist/src/utils/peer-id-to-datastore-key.d.ts +1 -1
- package/dist/src/utils/peer-id-to-datastore-key.d.ts.map +1 -1
- package/dist/src/utils/peer-id-to-datastore-key.js +2 -2
- package/dist/src/utils/peer-id-to-datastore-key.js.map +1 -1
- package/dist/src/utils/to-peer-pb.d.ts +2 -1
- package/dist/src/utils/to-peer-pb.d.ts.map +1 -1
- package/dist/src/utils/to-peer-pb.js +1 -1
- package/dist/src/utils/to-peer-pb.js.map +1 -1
- package/package.json +11 -15
- package/src/index.ts +33 -30
- package/src/store.ts +4 -2
- package/src/utils/bytes-to-peer.ts +2 -1
- package/src/utils/dedupe-addresses.ts +3 -2
- package/src/utils/peer-data-to-datastore-peer.ts +3 -2
- package/src/utils/peer-id-to-datastore-key.ts +2 -2
- package/src/utils/to-peer-pb.ts +3 -2
- package/dist/typedoc-urls.json +0 -10
package/src/index.ts
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger'
|
|
1
2
|
import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record'
|
|
2
3
|
import all from 'it-all'
|
|
3
4
|
import { PersistentStore, type PeerUpdate } from './store.js'
|
|
4
|
-
import type {
|
|
5
|
+
import type { Libp2pEvents } from '@libp2p/interface'
|
|
6
|
+
import type { TypedEventTarget } from '@libp2p/interface/events'
|
|
7
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
8
|
+
import type { PeerStore, Peer, PeerData, PeerQuery } from '@libp2p/interface/peer-store'
|
|
5
9
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
6
10
|
import type { Datastore } from 'interface-datastore'
|
|
7
11
|
|
|
12
|
+
const log = logger('libp2p:peer-store')
|
|
13
|
+
|
|
8
14
|
export interface PersistentPeerStoreComponents {
|
|
9
15
|
peerId: PeerId
|
|
10
16
|
datastore: Datastore
|
|
11
17
|
events: TypedEventTarget<Libp2pEvents>
|
|
12
|
-
logger: ComponentLogger
|
|
13
18
|
}
|
|
14
19
|
|
|
15
20
|
/**
|
|
@@ -30,86 +35,84 @@ export class PersistentPeerStore implements PeerStore {
|
|
|
30
35
|
private readonly store: PersistentStore
|
|
31
36
|
private readonly events: TypedEventTarget<Libp2pEvents>
|
|
32
37
|
private readonly peerId: PeerId
|
|
33
|
-
private readonly log: Logger
|
|
34
38
|
|
|
35
39
|
constructor (components: PersistentPeerStoreComponents, init: PersistentPeerStoreInit = {}) {
|
|
36
|
-
this.log = components.logger.forComponent('libp2p:peer-store')
|
|
37
40
|
this.events = components.events
|
|
38
41
|
this.peerId = components.peerId
|
|
39
42
|
this.store = new PersistentStore(components, init)
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
async forEach (fn: (peer: Peer,) => void, query?: PeerQuery): Promise<void> {
|
|
43
|
-
|
|
46
|
+
log.trace('forEach await read lock')
|
|
44
47
|
const release = await this.store.lock.readLock()
|
|
45
|
-
|
|
48
|
+
log.trace('forEach got read lock')
|
|
46
49
|
|
|
47
50
|
try {
|
|
48
51
|
for await (const peer of this.store.all(query)) {
|
|
49
52
|
fn(peer)
|
|
50
53
|
}
|
|
51
54
|
} finally {
|
|
52
|
-
|
|
55
|
+
log.trace('forEach release read lock')
|
|
53
56
|
release()
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
async all (query?: PeerQuery): Promise<Peer[]> {
|
|
58
|
-
|
|
61
|
+
log.trace('all await read lock')
|
|
59
62
|
const release = await this.store.lock.readLock()
|
|
60
|
-
|
|
63
|
+
log.trace('all got read lock')
|
|
61
64
|
|
|
62
65
|
try {
|
|
63
66
|
return await all(this.store.all(query))
|
|
64
67
|
} finally {
|
|
65
|
-
|
|
68
|
+
log.trace('all release read lock')
|
|
66
69
|
release()
|
|
67
70
|
}
|
|
68
71
|
}
|
|
69
72
|
|
|
70
73
|
async delete (peerId: PeerId): Promise<void> {
|
|
71
|
-
|
|
74
|
+
log.trace('delete await write lock')
|
|
72
75
|
const release = await this.store.lock.writeLock()
|
|
73
|
-
|
|
76
|
+
log.trace('delete got write lock')
|
|
74
77
|
|
|
75
78
|
try {
|
|
76
79
|
await this.store.delete(peerId)
|
|
77
80
|
} finally {
|
|
78
|
-
|
|
81
|
+
log.trace('delete release write lock')
|
|
79
82
|
release()
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
|
|
83
86
|
async has (peerId: PeerId): Promise<boolean> {
|
|
84
|
-
|
|
87
|
+
log.trace('has await read lock')
|
|
85
88
|
const release = await this.store.lock.readLock()
|
|
86
|
-
|
|
89
|
+
log.trace('has got read lock')
|
|
87
90
|
|
|
88
91
|
try {
|
|
89
92
|
return await this.store.has(peerId)
|
|
90
93
|
} finally {
|
|
91
|
-
|
|
94
|
+
log.trace('has release read lock')
|
|
92
95
|
release()
|
|
93
96
|
}
|
|
94
97
|
}
|
|
95
98
|
|
|
96
99
|
async get (peerId: PeerId): Promise<Peer> {
|
|
97
|
-
|
|
100
|
+
log.trace('get await read lock')
|
|
98
101
|
const release = await this.store.lock.readLock()
|
|
99
|
-
|
|
102
|
+
log.trace('get got read lock')
|
|
100
103
|
|
|
101
104
|
try {
|
|
102
105
|
return await this.store.load(peerId)
|
|
103
106
|
} finally {
|
|
104
|
-
|
|
107
|
+
log.trace('get release read lock')
|
|
105
108
|
release()
|
|
106
109
|
}
|
|
107
110
|
}
|
|
108
111
|
|
|
109
112
|
async save (id: PeerId, data: PeerData): Promise<Peer> {
|
|
110
|
-
|
|
113
|
+
log.trace('save await write lock')
|
|
111
114
|
const release = await this.store.lock.writeLock()
|
|
112
|
-
|
|
115
|
+
log.trace('save got write lock')
|
|
113
116
|
|
|
114
117
|
try {
|
|
115
118
|
const result = await this.store.save(id, data)
|
|
@@ -118,15 +121,15 @@ export class PersistentPeerStore implements PeerStore {
|
|
|
118
121
|
|
|
119
122
|
return result.peer
|
|
120
123
|
} finally {
|
|
121
|
-
|
|
124
|
+
log.trace('save release write lock')
|
|
122
125
|
release()
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
128
|
|
|
126
129
|
async patch (id: PeerId, data: PeerData): Promise<Peer> {
|
|
127
|
-
|
|
130
|
+
log.trace('patch await write lock')
|
|
128
131
|
const release = await this.store.lock.writeLock()
|
|
129
|
-
|
|
132
|
+
log.trace('patch got write lock')
|
|
130
133
|
|
|
131
134
|
try {
|
|
132
135
|
const result = await this.store.patch(id, data)
|
|
@@ -135,15 +138,15 @@ export class PersistentPeerStore implements PeerStore {
|
|
|
135
138
|
|
|
136
139
|
return result.peer
|
|
137
140
|
} finally {
|
|
138
|
-
|
|
141
|
+
log.trace('patch release write lock')
|
|
139
142
|
release()
|
|
140
143
|
}
|
|
141
144
|
}
|
|
142
145
|
|
|
143
146
|
async merge (id: PeerId, data: PeerData): Promise<Peer> {
|
|
144
|
-
|
|
147
|
+
log.trace('merge await write lock')
|
|
145
148
|
const release = await this.store.lock.writeLock()
|
|
146
|
-
|
|
149
|
+
log.trace('merge got write lock')
|
|
147
150
|
|
|
148
151
|
try {
|
|
149
152
|
const result = await this.store.merge(id, data)
|
|
@@ -152,7 +155,7 @@ export class PersistentPeerStore implements PeerStore {
|
|
|
152
155
|
|
|
153
156
|
return result.peer
|
|
154
157
|
} finally {
|
|
155
|
-
|
|
158
|
+
log.trace('merge release write lock')
|
|
156
159
|
release()
|
|
157
160
|
}
|
|
158
161
|
}
|
|
@@ -161,7 +164,7 @@ export class PersistentPeerStore implements PeerStore {
|
|
|
161
164
|
const envelope = await RecordEnvelope.openAndCertify(buf, PeerRecord.DOMAIN)
|
|
162
165
|
|
|
163
166
|
if (expectedPeer?.equals(envelope.peerId) === false) {
|
|
164
|
-
|
|
167
|
+
log('envelope peer id was not the expected peer id - expected: %p received: %p', expectedPeer, envelope.peerId)
|
|
165
168
|
return false
|
|
166
169
|
}
|
|
167
170
|
|
|
@@ -182,7 +185,7 @@ export class PersistentPeerStore implements PeerStore {
|
|
|
182
185
|
const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload)
|
|
183
186
|
|
|
184
187
|
if (storedRecord.seqNumber >= peerRecord.seqNumber) {
|
|
185
|
-
|
|
188
|
+
log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber)
|
|
186
189
|
return false
|
|
187
190
|
}
|
|
188
191
|
}
|
package/src/store.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CodeError } from '@libp2p/interface'
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors'
|
|
2
2
|
import { PeerMap } from '@libp2p/peer-collections'
|
|
3
3
|
import { peerIdFromBytes } from '@libp2p/peer-id'
|
|
4
4
|
import mortice, { type Mortice } from 'mortice'
|
|
@@ -10,7 +10,9 @@ import { bytesToPeer } from './utils/bytes-to-peer.js'
|
|
|
10
10
|
import { NAMESPACE_COMMON, peerIdToDatastoreKey } from './utils/peer-id-to-datastore-key.js'
|
|
11
11
|
import { toPeerPB } from './utils/to-peer-pb.js'
|
|
12
12
|
import type { AddressFilter, PersistentPeerStoreComponents, PersistentPeerStoreInit } from './index.js'
|
|
13
|
-
import type { PeerUpdate as PeerUpdateExternal
|
|
13
|
+
import type { PeerUpdate as PeerUpdateExternal } from '@libp2p/interface'
|
|
14
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
15
|
+
import type { Peer, PeerData, PeerQuery } from '@libp2p/interface/peer-store'
|
|
14
16
|
import type { Datastore, Key, Query } from 'interface-datastore'
|
|
15
17
|
|
|
16
18
|
/**
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { peerIdFromPeerId } from '@libp2p/peer-id'
|
|
2
2
|
import { multiaddr } from '@multiformats/multiaddr'
|
|
3
3
|
import { Peer as PeerPB } from '../pb/peer.js'
|
|
4
|
-
import type { PeerId
|
|
4
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
5
|
+
import type { Peer, Tag } from '@libp2p/interface/peer-store'
|
|
5
6
|
|
|
6
7
|
export function bytesToPeer (peerId: PeerId, buf: Uint8Array): Peer {
|
|
7
8
|
const peer = PeerPB.decode(buf)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { CodeError } from '@libp2p/interface'
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors'
|
|
2
2
|
import { isMultiaddr, multiaddr } from '@multiformats/multiaddr'
|
|
3
3
|
import { codes } from '../errors.js'
|
|
4
4
|
import type { AddressFilter } from '../index.js'
|
|
5
5
|
import type { Address as AddressPB } from '../pb/peer.js'
|
|
6
|
-
import type { PeerId
|
|
6
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
7
|
+
import type { Address } from '@libp2p/interface/peer-store'
|
|
7
8
|
|
|
8
9
|
export async function dedupeFilterAndSortAddresses (peerId: PeerId, filter: AddressFilter, addresses: Array<Address | AddressPB | undefined>): Promise<AddressPB[]> {
|
|
9
10
|
const addressMap = new Map<string, Address>()
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { CodeError } from '@libp2p/interface'
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors'
|
|
2
2
|
import { isMultiaddr } from '@multiformats/multiaddr'
|
|
3
3
|
import { equals as uint8arrayEquals } from 'uint8arrays/equals'
|
|
4
4
|
import { codes } from '../errors.js'
|
|
5
5
|
import type { Peer as PeerPB } from '../pb/peer.js'
|
|
6
|
-
import type { PeerId
|
|
6
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
7
|
+
import type { PeerData } from '@libp2p/interface/peer-store'
|
|
7
8
|
|
|
8
9
|
export function toDatastorePeer (peerId: PeerId, data: PeerData): PeerPB {
|
|
9
10
|
if (data == null) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CodeError } from '@libp2p/interface'
|
|
2
|
-
import { isPeerId, type PeerId } from '@libp2p/interface'
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors'
|
|
2
|
+
import { isPeerId, type PeerId } from '@libp2p/interface/peer-id'
|
|
3
3
|
import { Key } from 'interface-datastore/key'
|
|
4
4
|
import { codes } from '../errors.js'
|
|
5
5
|
|
package/src/utils/to-peer-pb.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { CodeError } from '@libp2p/interface'
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors'
|
|
2
2
|
import { equals as uint8arrayEquals } from 'uint8arrays/equals'
|
|
3
3
|
import { codes } from '../errors.js'
|
|
4
4
|
import { dedupeFilterAndSortAddresses } from './dedupe-addresses.js'
|
|
5
5
|
import type { AddressFilter } from '../index.js'
|
|
6
6
|
import type { Tag, Peer as PeerPB } from '../pb/peer.js'
|
|
7
|
-
import type { PeerId
|
|
7
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
8
|
+
import type { Address, Peer, PeerData, TagOptions } from '@libp2p/interface/peer-store'
|
|
8
9
|
|
|
9
10
|
export interface ToPBPeerOptions {
|
|
10
11
|
addressFilter?: AddressFilter
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"PersistentPeerStore": "https://libp2p.github.io/js-libp2p/classes/_libp2p_peer_store.PersistentPeerStore.html",
|
|
3
|
-
".:PersistentPeerStore": "https://libp2p.github.io/js-libp2p/classes/_libp2p_peer_store.PersistentPeerStore.html",
|
|
4
|
-
"AddressFilter": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_peer_store.AddressFilter.html",
|
|
5
|
-
".:AddressFilter": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_peer_store.AddressFilter.html",
|
|
6
|
-
"PersistentPeerStoreComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_peer_store.PersistentPeerStoreComponents.html",
|
|
7
|
-
".:PersistentPeerStoreComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_peer_store.PersistentPeerStoreComponents.html",
|
|
8
|
-
"PersistentPeerStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_peer_store.PersistentPeerStoreInit.html",
|
|
9
|
-
".:PersistentPeerStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_peer_store.PersistentPeerStoreInit.html"
|
|
10
|
-
}
|