@libp2p/peer-store 8.0.0 → 8.1.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.
- package/dist/index.min.js +17 -17
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +35 -0
- package/dist/src/index.js.map +1 -1
- package/package.json +3 -2
- package/src/index.ts +42 -0
package/dist/src/index.d.ts
CHANGED
|
@@ -35,5 +35,6 @@ export declare class PersistentPeerStore implements PeerStore {
|
|
|
35
35
|
save(id: PeerId, data: PeerData): Promise<Peer>;
|
|
36
36
|
patch(id: PeerId, data: PeerData): Promise<Peer>;
|
|
37
37
|
merge(id: PeerId, data: PeerData): Promise<Peer>;
|
|
38
|
+
consumePeerRecord(buf: Uint8Array, expectedPeer?: PeerId): Promise<boolean>;
|
|
38
39
|
}
|
|
39
40
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAM5D,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"}
|
package/dist/src/index.js
CHANGED
|
@@ -6,6 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
6
6
|
var _PersistentPeerStore_instances, _PersistentPeerStore_emitIfUpdated;
|
|
7
7
|
import { PersistentStore } from './store.js';
|
|
8
8
|
import { logger } from '@libp2p/logger';
|
|
9
|
+
import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';
|
|
9
10
|
const log = logger('libp2p:peer-store');
|
|
10
11
|
/**
|
|
11
12
|
* An implementation of PeerStore that stores data in a Datastore
|
|
@@ -125,6 +126,40 @@ export class PersistentPeerStore {
|
|
|
125
126
|
release();
|
|
126
127
|
}
|
|
127
128
|
}
|
|
129
|
+
async consumePeerRecord(buf, expectedPeer) {
|
|
130
|
+
const envelope = await RecordEnvelope.openAndCertify(buf, PeerRecord.DOMAIN);
|
|
131
|
+
if (expectedPeer?.equals(envelope.peerId) === false) {
|
|
132
|
+
log('envelope peer id was not the expected peer id - expected: %p received: %p', expectedPeer, envelope.peerId);
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
const peerRecord = PeerRecord.createFromProtobuf(envelope.payload);
|
|
136
|
+
let peer;
|
|
137
|
+
try {
|
|
138
|
+
peer = await this.get(envelope.peerId);
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
if (err.code !== 'ERR_NOT_FOUND') {
|
|
142
|
+
throw err;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// ensure seq is greater than, or equal to, the last received
|
|
146
|
+
if (peer?.peerRecordEnvelope != null) {
|
|
147
|
+
const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope);
|
|
148
|
+
const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);
|
|
149
|
+
if (storedRecord.seqNumber >= peerRecord.seqNumber) {
|
|
150
|
+
log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
await this.patch(peerRecord.peerId, {
|
|
155
|
+
peerRecordEnvelope: buf,
|
|
156
|
+
addresses: peerRecord.multiaddrs.map(multiaddr => ({
|
|
157
|
+
isCertified: true,
|
|
158
|
+
multiaddr
|
|
159
|
+
}))
|
|
160
|
+
});
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
128
163
|
}
|
|
129
164
|
_PersistentPeerStore_instances = new WeakSet(), _PersistentPeerStore_emitIfUpdated = function _PersistentPeerStore_emitIfUpdated(id, result) {
|
|
130
165
|
if (!result.updated) {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,eAAe,EAAc,MAAM,YAAY,CAAA;AAMxD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/peer-store",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.1.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",
|
|
@@ -145,12 +145,13 @@
|
|
|
145
145
|
},
|
|
146
146
|
"dependencies": {
|
|
147
147
|
"@libp2p/crypto": "^1.0.15",
|
|
148
|
-
"@libp2p/interface-libp2p": "^
|
|
148
|
+
"@libp2p/interface-libp2p": "^3.1.0",
|
|
149
149
|
"@libp2p/interface-peer-id": "^2.0.0",
|
|
150
150
|
"@libp2p/interface-peer-store": "^2.0.1",
|
|
151
151
|
"@libp2p/interfaces": "^3.2.0",
|
|
152
152
|
"@libp2p/logger": "^2.0.7",
|
|
153
153
|
"@libp2p/peer-id": "^2.0.0",
|
|
154
|
+
"@libp2p/peer-record": "^5.0.3",
|
|
154
155
|
"@multiformats/multiaddr": "^12.0.0",
|
|
155
156
|
"interface-datastore": "^8.0.0",
|
|
156
157
|
"mortice": "^3.0.1",
|
package/src/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { Datastore } from 'interface-datastore'
|
|
|
6
6
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
7
7
|
import type { Libp2pEvents } from '@libp2p/interface-libp2p'
|
|
8
8
|
import { logger } from '@libp2p/logger'
|
|
9
|
+
import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record'
|
|
9
10
|
|
|
10
11
|
const log = logger('libp2p:peer-store')
|
|
11
12
|
|
|
@@ -164,6 +165,47 @@ export class PersistentPeerStore implements PeerStore {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
|
|
168
|
+
async consumePeerRecord (buf: Uint8Array, expectedPeer?: PeerId): Promise<boolean> {
|
|
169
|
+
const envelope = await RecordEnvelope.openAndCertify(buf, PeerRecord.DOMAIN)
|
|
170
|
+
|
|
171
|
+
if (expectedPeer?.equals(envelope.peerId) === false) {
|
|
172
|
+
log('envelope peer id was not the expected peer id - expected: %p received: %p', expectedPeer, envelope.peerId)
|
|
173
|
+
return false
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const peerRecord = PeerRecord.createFromProtobuf(envelope.payload)
|
|
177
|
+
let peer: Peer | undefined
|
|
178
|
+
|
|
179
|
+
try {
|
|
180
|
+
peer = await this.get(envelope.peerId)
|
|
181
|
+
} catch (err: any) {
|
|
182
|
+
if (err.code !== 'ERR_NOT_FOUND') {
|
|
183
|
+
throw err
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// ensure seq is greater than, or equal to, the last received
|
|
188
|
+
if (peer?.peerRecordEnvelope != null) {
|
|
189
|
+
const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope)
|
|
190
|
+
const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload)
|
|
191
|
+
|
|
192
|
+
if (storedRecord.seqNumber >= peerRecord.seqNumber) {
|
|
193
|
+
log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber)
|
|
194
|
+
return false
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
await this.patch(peerRecord.peerId, {
|
|
199
|
+
peerRecordEnvelope: buf,
|
|
200
|
+
addresses: peerRecord.multiaddrs.map(multiaddr => ({
|
|
201
|
+
isCertified: true,
|
|
202
|
+
multiaddr
|
|
203
|
+
}))
|
|
204
|
+
})
|
|
205
|
+
|
|
206
|
+
return true
|
|
207
|
+
}
|
|
208
|
+
|
|
167
209
|
#emitIfUpdated (id: PeerId, result: PeerUpdate): void {
|
|
168
210
|
if (!result.updated) {
|
|
169
211
|
return
|