@libp2p/peer-store 9.0.9 → 9.0.10

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