@libp2p/peer-store 8.1.4 → 8.2.1-3dfc236e

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,23 +1,19 @@
1
1
  {
2
2
  "name": "@libp2p/peer-store",
3
- "version": "8.1.4",
3
+ "version": "8.2.1-3dfc236e",
4
4
  "description": "Stores information about peers libp2p knows on the network",
5
5
  "license": "Apache-2.0 OR MIT",
6
- "homepage": "https://github.com/libp2p/js-libp2p-peer-store#readme",
6
+ "homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/peer-store#readme",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/libp2p/js-libp2p-peer-store.git"
9
+ "url": "git+https://github.com/libp2p/js-libp2p.git"
10
10
  },
11
11
  "bugs": {
12
- "url": "https://github.com/libp2p/js-libp2p-peer-store/issues"
12
+ "url": "https://github.com/libp2p/js-libp2p/issues"
13
13
  },
14
14
  "keywords": [
15
15
  "IPFS"
16
16
  ],
17
- "engines": {
18
- "node": ">=16.0.0",
19
- "npm": ">=7.0.0"
20
- },
21
17
  "type": "module",
22
18
  "types": "./dist/src/index.d.ts",
23
19
  "files": [
@@ -42,91 +38,6 @@
42
38
  "src/pb/peer.js"
43
39
  ]
44
40
  },
45
- "release": {
46
- "branches": [
47
- "master"
48
- ],
49
- "plugins": [
50
- [
51
- "@semantic-release/commit-analyzer",
52
- {
53
- "preset": "conventionalcommits",
54
- "releaseRules": [
55
- {
56
- "breaking": true,
57
- "release": "major"
58
- },
59
- {
60
- "revert": true,
61
- "release": "patch"
62
- },
63
- {
64
- "type": "feat",
65
- "release": "minor"
66
- },
67
- {
68
- "type": "fix",
69
- "release": "patch"
70
- },
71
- {
72
- "type": "docs",
73
- "release": "patch"
74
- },
75
- {
76
- "type": "test",
77
- "release": "patch"
78
- },
79
- {
80
- "type": "deps",
81
- "release": "patch"
82
- },
83
- {
84
- "scope": "no-release",
85
- "release": false
86
- }
87
- ]
88
- }
89
- ],
90
- [
91
- "@semantic-release/release-notes-generator",
92
- {
93
- "preset": "conventionalcommits",
94
- "presetConfig": {
95
- "types": [
96
- {
97
- "type": "feat",
98
- "section": "Features"
99
- },
100
- {
101
- "type": "fix",
102
- "section": "Bug Fixes"
103
- },
104
- {
105
- "type": "chore",
106
- "section": "Trivial Changes"
107
- },
108
- {
109
- "type": "docs",
110
- "section": "Documentation"
111
- },
112
- {
113
- "type": "deps",
114
- "section": "Dependencies"
115
- },
116
- {
117
- "type": "test",
118
- "section": "Tests"
119
- }
120
- ]
121
- }
122
- }
123
- ],
124
- "@semantic-release/changelog",
125
- "@semantic-release/npm",
126
- "@semantic-release/github",
127
- "@semantic-release/git"
128
- ]
129
- },
130
41
  "scripts": {
131
42
  "clean": "aegir clean",
132
43
  "lint": "aegir lint",
@@ -139,36 +50,38 @@
139
50
  "test:firefox": "aegir test -t browser -- --browser firefox",
140
51
  "test:firefox-webworker": "aegir test -t webworker -- --browser firefox",
141
52
  "test:node": "aegir test -t node --cov",
142
- "test:electron-main": "aegir test -t electron-main",
143
- "release": "aegir release",
144
- "docs": "aegir docs"
53
+ "test:electron-main": "aegir test -t electron-main"
145
54
  },
146
55
  "dependencies": {
147
- "@libp2p/crypto": "^1.0.15",
148
- "@libp2p/interface-libp2p": "^3.1.0",
149
- "@libp2p/interface-peer-id": "^2.0.0",
150
- "@libp2p/interface-peer-store": "^2.0.1",
151
- "@libp2p/interfaces": "^3.2.0",
152
- "@libp2p/logger": "^2.0.7",
153
- "@libp2p/peer-id": "^2.0.0",
154
- "@libp2p/peer-id-factory": "^2.0.0",
155
- "@libp2p/peer-record": "^5.0.3",
156
- "@multiformats/multiaddr": "^12.0.0",
157
- "interface-datastore": "^8.0.0",
56
+ "@libp2p/interface-libp2p": "3.2.0-3dfc236e",
57
+ "@libp2p/interface-peer-id": "2.0.2-3dfc236e",
58
+ "@libp2p/interface-peer-store": "2.0.4-3dfc236e",
59
+ "@libp2p/interfaces": "3.3.2-3dfc236e",
60
+ "@libp2p/logger": "2.1.1-3dfc236e",
61
+ "@libp2p/peer-collections": "3.0.2-3dfc236e",
62
+ "@libp2p/peer-id": "2.0.3-3dfc236e",
63
+ "@libp2p/peer-id-factory": "2.0.3-3dfc236e",
64
+ "@libp2p/peer-record": "5.0.4-3dfc236e",
65
+ "@multiformats/multiaddr": "^12.1.3",
66
+ "interface-datastore": "^8.2.0",
67
+ "it-all": "^3.0.2",
158
68
  "mortice": "^3.0.1",
159
- "multiformats": "^11.0.0",
69
+ "multiformats": "^11.0.2",
160
70
  "protons-runtime": "^5.0.0",
161
- "uint8arraylist": "^2.1.1",
162
- "uint8arrays": "^4.0.2"
71
+ "uint8arraylist": "^2.4.3",
72
+ "uint8arrays": "^4.0.3"
163
73
  },
164
74
  "devDependencies": {
165
- "@types/sinon": "^10.0.14",
166
- "aegir": "^39.0.5",
75
+ "@types/sinon": "^10.0.15",
76
+ "aegir": "^39.0.10",
167
77
  "datastore-core": "^9.0.1",
168
78
  "delay": "^6.0.0",
169
79
  "p-defer": "^4.0.0",
170
- "p-event": "^5.0.1",
80
+ "p-event": "^6.0.0",
171
81
  "protons": "^7.0.2",
172
- "sinon": "^15.0.1"
82
+ "sinon": "^15.1.0"
83
+ },
84
+ "typedoc": {
85
+ "entryPoint": "./src/index.ts"
173
86
  }
174
87
  }
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>()