@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.
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 +4 -3
  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/store.d.ts +3 -1
  8. package/dist/src/store.d.ts.map +1 -1
  9. package/dist/src/store.js +1 -1
  10. package/dist/src/store.js.map +1 -1
  11. package/dist/src/utils/bytes-to-peer.d.ts +2 -1
  12. package/dist/src/utils/bytes-to-peer.d.ts.map +1 -1
  13. package/dist/src/utils/bytes-to-peer.js.map +1 -1
  14. package/dist/src/utils/dedupe-addresses.d.ts +2 -1
  15. package/dist/src/utils/dedupe-addresses.d.ts.map +1 -1
  16. package/dist/src/utils/dedupe-addresses.js +1 -1
  17. package/dist/src/utils/dedupe-addresses.js.map +1 -1
  18. package/dist/src/utils/peer-data-to-datastore-peer.d.ts +2 -1
  19. package/dist/src/utils/peer-data-to-datastore-peer.d.ts.map +1 -1
  20. package/dist/src/utils/peer-data-to-datastore-peer.js +1 -1
  21. package/dist/src/utils/peer-data-to-datastore-peer.js.map +1 -1
  22. package/dist/src/utils/peer-id-to-datastore-key.d.ts +1 -1
  23. package/dist/src/utils/peer-id-to-datastore-key.d.ts.map +1 -1
  24. package/dist/src/utils/peer-id-to-datastore-key.js +2 -2
  25. package/dist/src/utils/peer-id-to-datastore-key.js.map +1 -1
  26. package/dist/src/utils/to-peer-pb.d.ts +2 -1
  27. package/dist/src/utils/to-peer-pb.d.ts.map +1 -1
  28. package/dist/src/utils/to-peer-pb.js +1 -1
  29. package/dist/src/utils/to-peer-pb.js.map +1 -1
  30. package/package.json +11 -15
  31. package/src/index.ts +33 -30
  32. package/src/store.ts +4 -2
  33. package/src/utils/bytes-to-peer.ts +2 -1
  34. package/src/utils/dedupe-addresses.ts +3 -2
  35. package/src/utils/peer-data-to-datastore-peer.ts +3 -2
  36. package/src/utils/peer-id-to-datastore-key.ts +2 -2
  37. package/src/utils/to-peer-pb.ts +3 -2
  38. 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 { ComponentLogger, Libp2pEvents, Logger, TypedEventTarget, PeerId, PeerStore, Peer, PeerData, PeerQuery } from '@libp2p/interface'
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
- this.log.trace('forEach await read lock')
46
+ log.trace('forEach await read lock')
44
47
  const release = await this.store.lock.readLock()
45
- this.log.trace('forEach got read lock')
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
- this.log.trace('forEach release read lock')
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
- this.log.trace('all await read lock')
61
+ log.trace('all await read lock')
59
62
  const release = await this.store.lock.readLock()
60
- this.log.trace('all got read lock')
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
- this.log.trace('all release read lock')
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
- this.log.trace('delete await write lock')
74
+ log.trace('delete await write lock')
72
75
  const release = await this.store.lock.writeLock()
73
- this.log.trace('delete got write lock')
76
+ log.trace('delete got write lock')
74
77
 
75
78
  try {
76
79
  await this.store.delete(peerId)
77
80
  } finally {
78
- this.log.trace('delete release write lock')
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
- this.log.trace('has await read lock')
87
+ log.trace('has await read lock')
85
88
  const release = await this.store.lock.readLock()
86
- this.log.trace('has got read lock')
89
+ log.trace('has got read lock')
87
90
 
88
91
  try {
89
92
  return await this.store.has(peerId)
90
93
  } finally {
91
- this.log.trace('has release read lock')
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
- this.log.trace('get await read lock')
100
+ log.trace('get await read lock')
98
101
  const release = await this.store.lock.readLock()
99
- this.log.trace('get got read lock')
102
+ log.trace('get got read lock')
100
103
 
101
104
  try {
102
105
  return await this.store.load(peerId)
103
106
  } finally {
104
- this.log.trace('get release read lock')
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
- this.log.trace('save await write lock')
113
+ log.trace('save await write lock')
111
114
  const release = await this.store.lock.writeLock()
112
- this.log.trace('save got write lock')
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
- this.log.trace('save release write lock')
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
- this.log.trace('patch await write lock')
130
+ log.trace('patch await write lock')
128
131
  const release = await this.store.lock.writeLock()
129
- this.log.trace('patch got write lock')
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
- this.log.trace('patch release write lock')
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
- this.log.trace('merge await write lock')
147
+ log.trace('merge await write lock')
145
148
  const release = await this.store.lock.writeLock()
146
- this.log.trace('merge got write lock')
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
- this.log.trace('merge release write lock')
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
- this.log('envelope peer id was not the expected peer id - expected: %p received: %p', expectedPeer, envelope.peerId)
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
- this.log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber)
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, PeerId, Peer, PeerData, PeerQuery } from '@libp2p/interface'
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, Peer, Tag } from '@libp2p/interface'
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, Address } from '@libp2p/interface'
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, PeerData } from '@libp2p/interface'
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
 
@@ -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, Address, Peer, PeerData, TagOptions } from '@libp2p/interface'
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
@@ -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
- }