@libp2p/peer-store 8.1.4 → 8.2.1

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.
@@ -1,6 +1,6 @@
1
1
  import type { Libp2pEvents } from '@libp2p/interface-libp2p';
2
2
  import type { PeerId } from '@libp2p/interface-peer-id';
3
- import type { PeerStore, Peer, PeerData } from '@libp2p/interface-peer-store';
3
+ import type { PeerStore, Peer, PeerData, PeerQuery } from '@libp2p/interface-peer-store';
4
4
  import type { EventEmitter } from '@libp2p/interfaces/events';
5
5
  import type { Multiaddr } from '@multiformats/multiaddr';
6
6
  import type { Datastore } from 'interface-datastore';
@@ -27,8 +27,8 @@ export declare class PersistentPeerStore implements PeerStore {
27
27
  private readonly events;
28
28
  private readonly peerId;
29
29
  constructor(components: PersistentPeerStoreComponents, init?: PersistentPeerStoreInit);
30
- forEach(fn: (peer: Peer) => void): Promise<void>;
31
- all(): Promise<Peer[]>;
30
+ forEach(fn: (peer: Peer) => void, query?: PeerQuery): Promise<void>;
31
+ all(query?: PeerQuery): Promise<Peer[]>;
32
32
  delete(peerId: PeerId): Promise<void>;
33
33
  has(peerId: PeerId): Promise<boolean>;
34
34
  get(peerId: PeerId): Promise<Peer>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIpD,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACzD;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,SAAS;;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAElB,UAAU,EAAE,6BAA6B,EAAE,IAAI,GAAE,uBAA4B;IAMpF,OAAO,CAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAejD,GAAG,IAAK,OAAO,CAAC,IAAI,EAAE,CAAC;IAmBvB,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatC,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAatC,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanC,IAAI,CAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhD,KAAK,CAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,KAAK,CAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,iBAAiB,CAAE,GAAG,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoDnF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIpD,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACzD;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,SAAS;;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAElB,UAAU,EAAE,6BAA6B,EAAE,IAAI,GAAE,uBAA4B;IAMpF,OAAO,CAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAM,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAerE,GAAG,CAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAaxC,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatC,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAatC,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanC,IAAI,CAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhD,KAAK,CAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,KAAK,CAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,iBAAiB,CAAE,GAAG,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoDnF"}
package/dist/src/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { logger } from '@libp2p/logger';
2
2
  import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';
3
+ import all from 'it-all';
3
4
  import { PersistentStore } from './store.js';
4
5
  const log = logger('libp2p:peer-store');
5
6
  /**
@@ -14,12 +15,12 @@ export class PersistentPeerStore {
14
15
  this.peerId = components.peerId;
15
16
  this.store = new PersistentStore(components, init);
16
17
  }
17
- async forEach(fn) {
18
+ async forEach(fn, query) {
18
19
  log.trace('forEach await read lock');
19
20
  const release = await this.store.lock.readLock();
20
21
  log.trace('forEach got read lock');
21
22
  try {
22
- for await (const peer of this.store.all()) {
23
+ for await (const peer of this.store.all(query)) {
23
24
  fn(peer);
24
25
  }
25
26
  }
@@ -28,16 +29,12 @@ export class PersistentPeerStore {
28
29
  release();
29
30
  }
30
31
  }
31
- async all() {
32
+ async all(query) {
32
33
  log.trace('all await read lock');
33
34
  const release = await this.store.lock.readLock();
34
35
  log.trace('all got read lock');
35
36
  try {
36
- const output = [];
37
- for await (const peer of this.store.all()) {
38
- output.push(peer);
39
- }
40
- return output;
37
+ return await all(this.store.all(query));
41
38
  }
42
39
  finally {
43
40
  log.trace('all release read lock');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type Mortice } from 'mortice';
2
2
  import type { PersistentPeerStoreComponents, PersistentPeerStoreInit } from './index.js';
3
3
  import type { PeerUpdate as PeerUpdateExternal } from '@libp2p/interface-libp2p';
4
4
  import type { PeerId } from '@libp2p/interface-peer-id';
5
- import type { Peer, PeerData } from '@libp2p/interface-peer-store';
5
+ import type { Peer, PeerData, PeerQuery } from '@libp2p/interface-peer-store';
6
6
  /**
7
7
  * Event detail emitted when peer data changes
8
8
  */
@@ -22,6 +22,6 @@ export declare class PersistentStore {
22
22
  save(peerId: PeerId, data: PeerData): Promise<PeerUpdate>;
23
23
  patch(peerId: PeerId, data: Partial<PeerData>): Promise<PeerUpdate>;
24
24
  merge(peerId: PeerId, data: PeerData): Promise<PeerUpdate>;
25
- all(): AsyncGenerator<Peer, void, unknown>;
25
+ all(query?: PeerQuery): AsyncGenerator<Peer, void, unknown>;
26
26
  }
27
27
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAEA,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAQ/C,OAAO,KAAK,EAAiB,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACvG,OAAO,KAAK,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAGlE;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,eAAe;;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,SAAgB,IAAI,EAAE,OAAO,CAAA;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAe;gBAEjC,UAAU,EAAE,6BAA6B,EAAE,IAAI,GAAE,uBAA4B;IAUpF,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,IAAI,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpC,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAa1D,KAAK,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAcpE,KAAK,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAczD,GAAG,IAAK,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;CAuDpD"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAQ/C,OAAO,KAAK,EAAiB,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACvG,OAAO,KAAK,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAG7E;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,OAAO,EAAE,OAAO,CAAA;CACjB;AAqCD,qBAAa,eAAe;;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,SAAgB,IAAI,EAAE,OAAO,CAAA;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAe;gBAEjC,UAAU,EAAE,6BAA6B,EAAE,IAAI,GAAE,uBAA4B;IAUpF,GAAG,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,IAAI,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpC,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAa1D,KAAK,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAcpE,KAAK,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAczD,GAAG,CAAE,KAAK,CAAC,EAAE,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;CAoDrE"}
package/dist/src/store.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { CodeError } from '@libp2p/interfaces/errors';
2
+ import { PeerMap } from '@libp2p/peer-collections';
2
3
  import { peerIdFromBytes } from '@libp2p/peer-id';
3
4
  import mortice from 'mortice';
4
5
  import { base32 } from 'multiformats/bases/base32';
@@ -8,6 +9,33 @@ import { Peer as PeerPB } from './pb/peer.js';
8
9
  import { bytesToPeer } from './utils/bytes-to-peer.js';
9
10
  import { NAMESPACE_COMMON, peerIdToDatastoreKey } from './utils/peer-id-to-datastore-key.js';
10
11
  import { toPeerPB } from './utils/to-peer-pb.js';
12
+ function decodePeer(key, value, cache) {
13
+ // /peers/${peer-id-as-libp2p-key-cid-string-in-base-32}
14
+ const base32Str = key.toString().split('/')[2];
15
+ const buf = base32.decode(base32Str);
16
+ const peerId = peerIdFromBytes(buf);
17
+ const cached = cache.get(peerId);
18
+ if (cached != null) {
19
+ return cached;
20
+ }
21
+ const peer = bytesToPeer(peerId, value);
22
+ cache.set(peerId, peer);
23
+ return peer;
24
+ }
25
+ function mapQuery(query, cache) {
26
+ if (query == null) {
27
+ return {};
28
+ }
29
+ return {
30
+ prefix: NAMESPACE_COMMON,
31
+ filters: (query.filters ?? []).map(fn => ({ key, value }) => {
32
+ return fn(decodePeer(key, value, cache));
33
+ }),
34
+ orders: (query.orders ?? []).map(fn => (a, b) => {
35
+ return fn(decodePeer(a.key, a.value, cache), decodePeer(b.key, b.value, cache));
36
+ })
37
+ };
38
+ }
11
39
  export class PersistentStore {
12
40
  peerId;
13
41
  datastore;
@@ -58,25 +86,21 @@ export class PersistentStore {
58
86
  });
59
87
  return this.#saveIfDifferent(peerId, peerPb, existingBuf, existingPeer);
60
88
  }
61
- async *all() {
62
- for await (const { key, value } of this.datastore.query({
63
- prefix: NAMESPACE_COMMON
64
- })) {
65
- // /peers/${peer-id-as-libp2p-key-cid-string-in-base-32}
66
- const base32Str = key.toString().split('/')[2];
67
- const buf = base32.decode(base32Str);
68
- const peerId = peerIdFromBytes(buf);
69
- if (peerId.equals(this.peerId)) {
89
+ async *all(query) {
90
+ const peerCache = new PeerMap();
91
+ for await (const { key, value } of this.datastore.query(mapQuery(query ?? {}, peerCache))) {
92
+ const peer = decodePeer(key, value, peerCache);
93
+ if (peer.id.equals(this.peerId)) {
70
94
  // Skip self peer if present
71
95
  continue;
72
96
  }
73
- yield bytesToPeer(peerId, value);
97
+ yield peer;
74
98
  }
75
99
  }
76
100
  async #findExistingPeer(peerId) {
77
101
  try {
78
102
  const existingBuf = await this.datastore.get(peerIdToDatastoreKey(peerId));
79
- const existingPeer = await bytesToPeer(peerId, existingBuf);
103
+ const existingPeer = bytesToPeer(peerId, existingBuf);
80
104
  return {
81
105
  existingBuf,
82
106
  existingPeer
@@ -93,14 +117,14 @@ export class PersistentStore {
93
117
  const buf = PeerPB.encode(peer);
94
118
  if (existingBuf != null && uint8ArrayEquals(buf, existingBuf)) {
95
119
  return {
96
- peer: await bytesToPeer(peerId, buf),
120
+ peer: bytesToPeer(peerId, buf),
97
121
  previous: existingPeer,
98
122
  updated: false
99
123
  };
100
124
  }
101
125
  await this.datastore.put(peerIdToDatastoreKey(peerId), buf);
102
126
  return {
103
- peer: await bytesToPeer(peerId, buf),
127
+ peer: bytesToPeer(peerId, buf),
104
128
  previous: existingPeer,
105
129
  updated: true
106
130
  };
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { PeerId } from '@libp2p/interface-peer-id';
2
2
  import type { Peer } from '@libp2p/interface-peer-store';
3
- export declare function bytesToPeer(peerId: PeerId, buf: Uint8Array): Promise<Peer>;
3
+ export declare function bytesToPeer(peerId: PeerId, buf: Uint8Array): Peer;
4
4
  //# sourceMappingURL=bytes-to-peer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bytes-to-peer.d.ts","sourceRoot":"","sources":["../../../src/utils/bytes-to-peer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,8BAA8B,CAAA;AAE7D,wBAAsB,WAAW,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCjF"}
1
+ {"version":3,"file":"bytes-to-peer.d.ts","sourceRoot":"","sources":["../../../src/utils/bytes-to-peer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,8BAA8B,CAAA;AAE7D,wBAAgB,WAAW,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAoClE"}
@@ -1,11 +1,13 @@
1
- import { unmarshalPublicKey } from '@libp2p/crypto/keys';
2
- import { createFromPubKey } from '@libp2p/peer-id-factory';
1
+ import { peerIdFromPeerId } from '@libp2p/peer-id';
3
2
  import { multiaddr } from '@multiformats/multiaddr';
4
3
  import { Peer as PeerPB } from '../pb/peer.js';
5
- export async function bytesToPeer(peerId, buf) {
4
+ export function bytesToPeer(peerId, buf) {
6
5
  const peer = PeerPB.decode(buf);
7
6
  if (peer.publicKey != null && peerId.publicKey == null) {
8
- peerId = await createFromPubKey(unmarshalPublicKey(peer.publicKey));
7
+ peerId = peerIdFromPeerId({
8
+ ...peerId,
9
+ publicKey: peerId.publicKey
10
+ });
9
11
  }
10
12
  const tags = new Map();
11
13
  // remove any expired tags
@@ -1 +1 @@
1
- {"version":3,"file":"bytes-to-peer.js","sourceRoot":"","sources":["../../../src/utils/bytes-to-peer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,eAAe,CAAA;AAI9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAE,MAAc,EAAE,GAAe;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAE/B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;QACtD,MAAM,GAAG,MAAM,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;KACpE;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAA;IAEnC,0BAA0B;IAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;QAC5C,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;YAC1C,SAAQ;SACT;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KACnB;IAED,OAAO;QACL,GAAG,IAAI;QACP,EAAE,EAAE,MAAM;QACV,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;YAC/D,OAAO;gBACL,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;gBACxB,WAAW,EAAE,WAAW,IAAI,KAAK;aAClC,CAAA;QACH,CAAC,CAAC;QACF,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,SAAS;QACxD,IAAI;KACL,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"bytes-to-peer.js","sourceRoot":"","sources":["../../../src/utils/bytes-to-peer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,eAAe,CAAA;AAI9C,MAAM,UAAU,WAAW,CAAE,MAAc,EAAE,GAAe;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAE/B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;QACtD,MAAM,GAAG,gBAAgB,CAAC;YACxB,GAAG,MAAM;YACT,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAA;KACH;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAA;IAEnC,0BAA0B;IAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;QAC5C,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;YAC1C,SAAQ;SACT;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KACnB;IAED,OAAO;QACL,GAAG,IAAI;QACP,EAAE,EAAE,MAAM;QACV,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;YAC/D,OAAO;gBACL,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;gBACxB,WAAW,EAAE,WAAW,IAAI,KAAK;aAClC,CAAA;QACH,CAAC,CAAC;QACF,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,SAAS;QACxD,IAAI;KACL,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/peer-store",
3
- "version": "8.1.4",
3
+ "version": "8.2.1",
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-peer-store#readme",
@@ -144,17 +144,18 @@
144
144
  "docs": "aegir docs"
145
145
  },
146
146
  "dependencies": {
147
- "@libp2p/crypto": "^1.0.15",
148
147
  "@libp2p/interface-libp2p": "^3.1.0",
149
148
  "@libp2p/interface-peer-id": "^2.0.0",
150
- "@libp2p/interface-peer-store": "^2.0.1",
149
+ "@libp2p/interface-peer-store": "^2.0.4",
151
150
  "@libp2p/interfaces": "^3.2.0",
152
151
  "@libp2p/logger": "^2.0.7",
152
+ "@libp2p/peer-collections": "^3.0.1",
153
153
  "@libp2p/peer-id": "^2.0.0",
154
154
  "@libp2p/peer-id-factory": "^2.0.0",
155
155
  "@libp2p/peer-record": "^5.0.3",
156
156
  "@multiformats/multiaddr": "^12.0.0",
157
157
  "interface-datastore": "^8.0.0",
158
+ "it-all": "^3.0.2",
158
159
  "mortice": "^3.0.1",
159
160
  "multiformats": "^11.0.0",
160
161
  "protons-runtime": "^5.0.0",
@@ -167,7 +168,7 @@
167
168
  "datastore-core": "^9.0.1",
168
169
  "delay": "^6.0.0",
169
170
  "p-defer": "^4.0.0",
170
- "p-event": "^5.0.1",
171
+ "p-event": "^6.0.0",
171
172
  "protons": "^7.0.2",
172
173
  "sinon": "^15.0.1"
173
174
  }
package/src/index.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { logger } from '@libp2p/logger'
2
2
  import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record'
3
+ import all from 'it-all'
3
4
  import { PersistentStore, type PeerUpdate } from './store.js'
4
5
  import type { Libp2pEvents } from '@libp2p/interface-libp2p'
5
6
  import type { PeerId } from '@libp2p/interface-peer-id'
6
- import type { PeerStore, Peer, PeerData } from '@libp2p/interface-peer-store'
7
+ import type { PeerStore, Peer, PeerData, PeerQuery } from '@libp2p/interface-peer-store'
7
8
  import type { EventEmitter } from '@libp2p/interfaces/events'
8
9
  import type { Multiaddr } from '@multiformats/multiaddr'
9
10
  import type { Datastore } from 'interface-datastore'
@@ -41,13 +42,13 @@ export class PersistentPeerStore implements PeerStore {
41
42
  this.store = new PersistentStore(components, init)
42
43
  }
43
44
 
44
- async forEach (fn: (peer: Peer) => void): Promise<void> {
45
+ async forEach (fn: (peer: Peer,) => void, query?: PeerQuery): Promise<void> {
45
46
  log.trace('forEach await read lock')
46
47
  const release = await this.store.lock.readLock()
47
48
  log.trace('forEach got read lock')
48
49
 
49
50
  try {
50
- for await (const peer of this.store.all()) {
51
+ for await (const peer of this.store.all(query)) {
51
52
  fn(peer)
52
53
  }
53
54
  } finally {
@@ -56,19 +57,13 @@ export class PersistentPeerStore implements PeerStore {
56
57
  }
57
58
  }
58
59
 
59
- async all (): Promise<Peer[]> {
60
+ async all (query?: PeerQuery): Promise<Peer[]> {
60
61
  log.trace('all await read lock')
61
62
  const release = await this.store.lock.readLock()
62
63
  log.trace('all got read lock')
63
64
 
64
65
  try {
65
- const output: Peer[] = []
66
-
67
- for await (const peer of this.store.all()) {
68
- output.push(peer)
69
- }
70
-
71
- return output
66
+ return await all(this.store.all(query))
72
67
  } finally {
73
68
  log.trace('all release read lock')
74
69
  release()
package/src/store.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { CodeError } from '@libp2p/interfaces/errors'
2
+ import { PeerMap } from '@libp2p/peer-collections'
2
3
  import { peerIdFromBytes } from '@libp2p/peer-id'
3
4
  import mortice, { type Mortice } from 'mortice'
4
5
  import { base32 } from 'multiformats/bases/base32'
@@ -11,8 +12,8 @@ import { toPeerPB } from './utils/to-peer-pb.js'
11
12
  import type { AddressFilter, PersistentPeerStoreComponents, PersistentPeerStoreInit } from './index.js'
12
13
  import type { PeerUpdate as PeerUpdateExternal } from '@libp2p/interface-libp2p'
13
14
  import type { PeerId } from '@libp2p/interface-peer-id'
14
- import type { Peer, PeerData } from '@libp2p/interface-peer-store'
15
- import type { Datastore } from 'interface-datastore'
15
+ import type { Peer, PeerData, PeerQuery } from '@libp2p/interface-peer-store'
16
+ import type { Datastore, Key, Query } from 'interface-datastore'
16
17
 
17
18
  /**
18
19
  * Event detail emitted when peer data changes
@@ -21,6 +22,41 @@ export interface PeerUpdate extends PeerUpdateExternal {
21
22
  updated: boolean
22
23
  }
23
24
 
25
+ function decodePeer (key: Key, value: Uint8Array, cache: PeerMap<Peer>): Peer {
26
+ // /peers/${peer-id-as-libp2p-key-cid-string-in-base-32}
27
+ const base32Str = key.toString().split('/')[2]
28
+ const buf = base32.decode(base32Str)
29
+ const peerId = peerIdFromBytes(buf)
30
+
31
+ const cached = cache.get(peerId)
32
+
33
+ if (cached != null) {
34
+ return cached
35
+ }
36
+
37
+ const peer = bytesToPeer(peerId, value)
38
+
39
+ cache.set(peerId, peer)
40
+
41
+ return peer
42
+ }
43
+
44
+ function mapQuery (query: PeerQuery, cache: PeerMap<Peer>): Query {
45
+ if (query == null) {
46
+ return {}
47
+ }
48
+
49
+ return {
50
+ prefix: NAMESPACE_COMMON,
51
+ filters: (query.filters ?? []).map(fn => ({ key, value }) => {
52
+ return fn(decodePeer(key, value, cache))
53
+ }),
54
+ orders: (query.orders ?? []).map(fn => (a, b) => {
55
+ return fn(decodePeer(a.key, a.value, cache), decodePeer(b.key, b.value, cache))
56
+ })
57
+ }
58
+ }
59
+
24
60
  export class PersistentStore {
25
61
  private readonly peerId: PeerId
26
62
  private readonly datastore: Datastore
@@ -96,28 +132,25 @@ export class PersistentStore {
96
132
  return this.#saveIfDifferent(peerId, peerPb, existingBuf, existingPeer)
97
133
  }
98
134
 
99
- async * all (): AsyncGenerator<Peer, void, unknown> {
100
- for await (const { key, value } of this.datastore.query({
101
- prefix: NAMESPACE_COMMON
102
- })) {
103
- // /peers/${peer-id-as-libp2p-key-cid-string-in-base-32}
104
- const base32Str = key.toString().split('/')[2]
105
- const buf = base32.decode(base32Str)
106
- const peerId = peerIdFromBytes(buf)
135
+ async * all (query?: PeerQuery): AsyncGenerator<Peer, void, unknown> {
136
+ const peerCache = new PeerMap<Peer>()
137
+
138
+ for await (const { key, value } of this.datastore.query(mapQuery(query ?? {}, peerCache))) {
139
+ const peer = decodePeer(key, value, peerCache)
107
140
 
108
- if (peerId.equals(this.peerId)) {
141
+ if (peer.id.equals(this.peerId)) {
109
142
  // Skip self peer if present
110
143
  continue
111
144
  }
112
145
 
113
- yield bytesToPeer(peerId, value)
146
+ yield peer
114
147
  }
115
148
  }
116
149
 
117
150
  async #findExistingPeer (peerId: PeerId): Promise<{ existingBuf?: Uint8Array, existingPeer?: Peer }> {
118
151
  try {
119
152
  const existingBuf = await this.datastore.get(peerIdToDatastoreKey(peerId))
120
- const existingPeer = await bytesToPeer(peerId, existingBuf)
153
+ const existingPeer = bytesToPeer(peerId, existingBuf)
121
154
 
122
155
  return {
123
156
  existingBuf,
@@ -137,7 +170,7 @@ export class PersistentStore {
137
170
 
138
171
  if (existingBuf != null && uint8ArrayEquals(buf, existingBuf)) {
139
172
  return {
140
- peer: await bytesToPeer(peerId, buf),
173
+ peer: bytesToPeer(peerId, buf),
141
174
  previous: existingPeer,
142
175
  updated: false
143
176
  }
@@ -146,7 +179,7 @@ export class PersistentStore {
146
179
  await this.datastore.put(peerIdToDatastoreKey(peerId), buf)
147
180
 
148
181
  return {
149
- peer: await bytesToPeer(peerId, buf),
182
+ peer: bytesToPeer(peerId, buf),
150
183
  previous: existingPeer,
151
184
  updated: true
152
185
  }
@@ -1,15 +1,17 @@
1
- import { unmarshalPublicKey } from '@libp2p/crypto/keys'
2
- import { createFromPubKey } from '@libp2p/peer-id-factory'
1
+ import { peerIdFromPeerId } from '@libp2p/peer-id'
3
2
  import { multiaddr } from '@multiformats/multiaddr'
4
3
  import { Peer as PeerPB } from '../pb/peer.js'
5
4
  import type { PeerId } from '@libp2p/interface-peer-id'
6
5
  import type { Peer, Tag } from '@libp2p/interface-peer-store'
7
6
 
8
- export async function bytesToPeer (peerId: PeerId, buf: Uint8Array): Promise<Peer> {
7
+ export function bytesToPeer (peerId: PeerId, buf: Uint8Array): Peer {
9
8
  const peer = PeerPB.decode(buf)
10
9
 
11
10
  if (peer.publicKey != null && peerId.publicKey == null) {
12
- peerId = await createFromPubKey(unmarshalPublicKey(peer.publicKey))
11
+ peerId = peerIdFromPeerId({
12
+ ...peerId,
13
+ publicKey: peerId.publicKey
14
+ })
13
15
  }
14
16
 
15
17
  const tags = new Map<string, Tag>()