libp2p 0.44.0 → 0.45.0

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 (188) hide show
  1. package/dist/index.min.js +30 -30
  2. package/dist/src/address-manager/index.d.ts +8 -4
  3. package/dist/src/address-manager/index.d.ts.map +1 -1
  4. package/dist/src/address-manager/index.js +37 -6
  5. package/dist/src/address-manager/index.js.map +1 -1
  6. package/dist/src/address-manager/utils.d.ts +2 -0
  7. package/dist/src/address-manager/utils.d.ts.map +1 -0
  8. package/dist/src/address-manager/utils.js +12 -0
  9. package/dist/src/address-manager/utils.js.map +1 -0
  10. package/dist/src/autonat/constants.d.ts +16 -2
  11. package/dist/src/autonat/constants.d.ts.map +1 -1
  12. package/dist/src/autonat/constants.js +16 -2
  13. package/dist/src/autonat/constants.js.map +1 -1
  14. package/dist/src/autonat/index.d.ts +12 -33
  15. package/dist/src/autonat/index.d.ts.map +1 -1
  16. package/dist/src/autonat/index.js +36 -30
  17. package/dist/src/autonat/index.js.map +1 -1
  18. package/dist/src/circuit-relay/server/advert-service.d.ts.map +1 -1
  19. package/dist/src/circuit-relay/server/advert-service.js +2 -2
  20. package/dist/src/circuit-relay/server/advert-service.js.map +1 -1
  21. package/dist/src/circuit-relay/server/index.d.ts.map +1 -1
  22. package/dist/src/circuit-relay/server/index.js +10 -3
  23. package/dist/src/circuit-relay/server/index.js.map +1 -1
  24. package/dist/src/circuit-relay/transport/discovery.d.ts.map +1 -1
  25. package/dist/src/circuit-relay/transport/discovery.js +4 -2
  26. package/dist/src/circuit-relay/transport/discovery.js.map +1 -1
  27. package/dist/src/circuit-relay/transport/index.d.ts +3 -0
  28. package/dist/src/circuit-relay/transport/index.d.ts.map +1 -1
  29. package/dist/src/circuit-relay/transport/index.js +6 -4
  30. package/dist/src/circuit-relay/transport/index.js.map +1 -1
  31. package/dist/src/circuit-relay/transport/listener.d.ts.map +1 -1
  32. package/dist/src/circuit-relay/transport/listener.js +30 -26
  33. package/dist/src/circuit-relay/transport/listener.js.map +1 -1
  34. package/dist/src/circuit-relay/transport/reservation-store.d.ts +5 -4
  35. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -1
  36. package/dist/src/circuit-relay/transport/reservation-store.js +37 -30
  37. package/dist/src/circuit-relay/transport/reservation-store.js.map +1 -1
  38. package/dist/src/components.d.ts +6 -63
  39. package/dist/src/components.d.ts.map +1 -1
  40. package/dist/src/components.js +60 -164
  41. package/dist/src/components.js.map +1 -1
  42. package/dist/src/config/connection-gater.browser.d.ts +8 -0
  43. package/dist/src/config/connection-gater.browser.d.ts.map +1 -0
  44. package/dist/src/config/connection-gater.browser.js +27 -0
  45. package/dist/src/config/connection-gater.browser.js.map +1 -0
  46. package/dist/src/config/connection-gater.d.ts +6 -0
  47. package/dist/src/config/connection-gater.d.ts.map +1 -0
  48. package/dist/src/config/connection-gater.js +18 -0
  49. package/dist/src/config/connection-gater.js.map +1 -0
  50. package/dist/src/config.d.ts +2 -1
  51. package/dist/src/config.d.ts.map +1 -1
  52. package/dist/src/config.js +0 -62
  53. package/dist/src/config.js.map +1 -1
  54. package/dist/src/connection-manager/auto-dial.d.ts +3 -0
  55. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
  56. package/dist/src/connection-manager/auto-dial.js +36 -13
  57. package/dist/src/connection-manager/auto-dial.js.map +1 -1
  58. package/dist/src/connection-manager/connection-pruner.d.ts +4 -0
  59. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  60. package/dist/src/connection-manager/connection-pruner.js +23 -8
  61. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  62. package/dist/src/connection-manager/dial-queue.d.ts +2 -1
  63. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  64. package/dist/src/connection-manager/dial-queue.js +36 -14
  65. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  66. package/dist/src/connection-manager/index.d.ts +8 -7
  67. package/dist/src/connection-manager/index.d.ts.map +1 -1
  68. package/dist/src/connection-manager/index.js +23 -34
  69. package/dist/src/connection-manager/index.js.map +1 -1
  70. package/dist/src/content-routing/index.d.ts +0 -10
  71. package/dist/src/content-routing/index.d.ts.map +1 -1
  72. package/dist/src/content-routing/index.js +7 -42
  73. package/dist/src/content-routing/index.js.map +1 -1
  74. package/dist/src/content-routing/utils.d.ts.map +1 -1
  75. package/dist/src/content-routing/utils.js +3 -1
  76. package/dist/src/content-routing/utils.js.map +1 -1
  77. package/dist/src/fetch/index.d.ts +13 -35
  78. package/dist/src/fetch/index.d.ts.map +1 -1
  79. package/dist/src/fetch/index.js +7 -9
  80. package/dist/src/fetch/index.js.map +1 -1
  81. package/dist/src/identify/identify.d.ts +53 -0
  82. package/dist/src/identify/identify.d.ts.map +1 -0
  83. package/dist/src/identify/identify.js +405 -0
  84. package/dist/src/identify/identify.js.map +1 -0
  85. package/dist/src/identify/index.d.ts +12 -58
  86. package/dist/src/identify/index.d.ts.map +1 -1
  87. package/dist/src/identify/index.js +5 -388
  88. package/dist/src/identify/index.js.map +1 -1
  89. package/dist/src/index.d.ts +13 -68
  90. package/dist/src/index.d.ts.map +1 -1
  91. package/dist/src/index.js +2 -1
  92. package/dist/src/index.js.map +1 -1
  93. package/dist/src/insecure/index.js.map +1 -1
  94. package/dist/src/libp2p.d.ts +11 -42
  95. package/dist/src/libp2p.d.ts.map +1 -1
  96. package/dist/src/libp2p.js +137 -196
  97. package/dist/src/libp2p.js.map +1 -1
  98. package/dist/src/peer-routing.d.ts +1 -38
  99. package/dist/src/peer-routing.d.ts.map +1 -1
  100. package/dist/src/peer-routing.js +0 -59
  101. package/dist/src/peer-routing.js.map +1 -1
  102. package/dist/src/ping/constants.d.ts +4 -0
  103. package/dist/src/ping/constants.d.ts.map +1 -1
  104. package/dist/src/ping/constants.js +10 -0
  105. package/dist/src/ping/constants.js.map +1 -1
  106. package/dist/src/ping/index.d.ts +10 -27
  107. package/dist/src/ping/index.d.ts.map +1 -1
  108. package/dist/src/ping/index.js +18 -21
  109. package/dist/src/ping/index.js.map +1 -1
  110. package/dist/src/registrar.d.ts +5 -2
  111. package/dist/src/registrar.d.ts.map +1 -1
  112. package/dist/src/registrar.js +27 -25
  113. package/dist/src/registrar.js.map +1 -1
  114. package/dist/src/transport-manager.d.ts +11 -4
  115. package/dist/src/transport-manager.d.ts.map +1 -1
  116. package/dist/src/transport-manager.js +19 -10
  117. package/dist/src/transport-manager.js.map +1 -1
  118. package/dist/src/upgrader.d.ts +15 -10
  119. package/dist/src/upgrader.d.ts.map +1 -1
  120. package/dist/src/upgrader.js +39 -48
  121. package/dist/src/upgrader.js.map +1 -1
  122. package/dist/src/upnp-nat/index.d.ts +42 -0
  123. package/dist/src/upnp-nat/index.d.ts.map +1 -0
  124. package/dist/src/{nat-manager.js → upnp-nat/index.js} +11 -7
  125. package/dist/src/upnp-nat/index.js.map +1 -0
  126. package/dist/src/version.d.ts +1 -1
  127. package/dist/src/version.d.ts.map +1 -1
  128. package/dist/src/version.js +1 -1
  129. package/dist/src/version.js.map +1 -1
  130. package/dist/typedoc-urls.json +25 -10
  131. package/package.json +61 -45
  132. package/src/address-manager/index.ts +50 -8
  133. package/src/address-manager/utils.ts +14 -0
  134. package/src/autonat/constants.ts +17 -2
  135. package/src/autonat/index.ts +53 -45
  136. package/src/circuit-relay/server/advert-service.ts +2 -2
  137. package/src/circuit-relay/server/index.ts +11 -3
  138. package/src/circuit-relay/transport/discovery.ts +5 -3
  139. package/src/circuit-relay/transport/index.ts +9 -4
  140. package/src/circuit-relay/transport/listener.ts +38 -28
  141. package/src/circuit-relay/transport/reservation-store.ts +34 -20
  142. package/src/components.ts +71 -234
  143. package/src/config/connection-gater.browser.ts +31 -0
  144. package/src/config/connection-gater.ts +19 -0
  145. package/src/config.ts +3 -64
  146. package/src/connection-manager/auto-dial.ts +44 -15
  147. package/src/connection-manager/connection-pruner.ts +28 -8
  148. package/src/connection-manager/dial-queue.ts +41 -21
  149. package/src/connection-manager/index.ts +31 -43
  150. package/src/content-routing/index.ts +7 -55
  151. package/src/content-routing/utils.ts +3 -1
  152. package/src/fetch/index.ts +51 -14
  153. package/src/identify/identify.ts +518 -0
  154. package/src/identify/index.ts +17 -507
  155. package/src/index.ts +14 -77
  156. package/src/insecure/index.ts +4 -4
  157. package/src/libp2p.ts +139 -260
  158. package/src/peer-routing.ts +1 -101
  159. package/src/ping/constants.ts +11 -0
  160. package/src/ping/index.ts +32 -28
  161. package/src/registrar.ts +31 -27
  162. package/src/transport-manager.ts +27 -13
  163. package/src/upgrader.ts +62 -58
  164. package/src/{nat-manager.ts → upnp-nat/index.ts} +16 -17
  165. package/src/version.ts +1 -1
  166. package/dist/src/dht/dht-content-routing.d.ts +0 -17
  167. package/dist/src/dht/dht-content-routing.d.ts.map +0 -1
  168. package/dist/src/dht/dht-content-routing.js +0 -32
  169. package/dist/src/dht/dht-content-routing.js.map +0 -1
  170. package/dist/src/dht/dht-peer-routing.d.ts +0 -15
  171. package/dist/src/dht/dht-peer-routing.d.ts.map +0 -1
  172. package/dist/src/dht/dht-peer-routing.js +0 -26
  173. package/dist/src/dht/dht-peer-routing.js.map +0 -1
  174. package/dist/src/dht/dummy-dht.d.ts +0 -20
  175. package/dist/src/dht/dummy-dht.d.ts.map +0 -1
  176. package/dist/src/dht/dummy-dht.js +0 -46
  177. package/dist/src/dht/dummy-dht.js.map +0 -1
  178. package/dist/src/nat-manager.d.ts +0 -74
  179. package/dist/src/nat-manager.d.ts.map +0 -1
  180. package/dist/src/nat-manager.js.map +0 -1
  181. package/dist/src/peer-record-updater.d.ts +0 -24
  182. package/dist/src/peer-record-updater.d.ts.map +0 -1
  183. package/dist/src/peer-record-updater.js +0 -44
  184. package/dist/src/peer-record-updater.js.map +0 -1
  185. package/src/dht/dht-content-routing.ts +0 -44
  186. package/src/dht/dht-peer-routing.ts +0 -36
  187. package/src/dht/dummy-dht.ts +0 -60
  188. package/src/peer-record-updater.ts +0 -65
@@ -0,0 +1,405 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _DefaultIdentifyService_instances, _DefaultIdentifyService_consumeIdentifyMessage;
7
+ import { logger } from '@libp2p/logger';
8
+ import { CodeError } from '@libp2p/interfaces/errors';
9
+ import * as lp from 'it-length-prefixed';
10
+ import { pipe } from 'it-pipe';
11
+ import first from 'it-first';
12
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
13
+ import { multiaddr, protocols } from '@multiformats/multiaddr';
14
+ import { Identify } from './pb/message.js';
15
+ import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';
16
+ import { AGENT_VERSION, IDENTIFY_PROTOCOL_VERSION, MULTICODEC_IDENTIFY_PROTOCOL_NAME, MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME, MULTICODEC_IDENTIFY_PROTOCOL_VERSION, MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION } from './consts.js';
17
+ import { codes } from '../errors.js';
18
+ import { peerIdFromKeys } from '@libp2p/peer-id';
19
+ import { abortableDuplex } from 'abortable-iterator';
20
+ import { setMaxListeners } from 'events';
21
+ import { anySignal } from 'any-signal';
22
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
23
+ import { pbStream } from 'it-pb-stream';
24
+ import { isNode, isBrowser, isWebWorker, isElectronMain, isElectronRenderer, isReactNative } from 'wherearewe';
25
+ const log = logger('libp2p:identify');
26
+ // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L52
27
+ const MAX_IDENTIFY_MESSAGE_SIZE = 1024 * 8;
28
+ const defaultValues = {
29
+ protocolPrefix: 'ipfs',
30
+ agentVersion: AGENT_VERSION,
31
+ // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L48
32
+ timeout: 60000,
33
+ maxInboundStreams: 1,
34
+ maxOutboundStreams: 1,
35
+ maxPushIncomingStreams: 1,
36
+ maxPushOutgoingStreams: 1,
37
+ maxObservedAddresses: 10,
38
+ maxIdentifyMessageSize: 8192
39
+ };
40
+ export class DefaultIdentifyService {
41
+ constructor(components, init) {
42
+ _DefaultIdentifyService_instances.add(this);
43
+ this.started = false;
44
+ this.peerId = components.peerId;
45
+ this.peerStore = components.peerStore;
46
+ this.registrar = components.registrar;
47
+ this.addressManager = components.addressManager;
48
+ this.connectionManager = components.connectionManager;
49
+ this.events = components.events;
50
+ this.identifyProtocolStr = `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`;
51
+ this.identifyPushProtocolStr = `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION}`;
52
+ this.timeout = init.timeout ?? defaultValues.timeout;
53
+ this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;
54
+ this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;
55
+ this.maxPushIncomingStreams = init.maxPushIncomingStreams ?? defaultValues.maxPushIncomingStreams;
56
+ this.maxPushOutgoingStreams = init.maxPushOutgoingStreams ?? defaultValues.maxPushOutgoingStreams;
57
+ this.maxIdentifyMessageSize = init.maxIdentifyMessageSize ?? defaultValues.maxIdentifyMessageSize;
58
+ this.maxObservedAddresses = init.maxObservedAddresses ?? defaultValues.maxObservedAddresses;
59
+ // Store self host metadata
60
+ this.host = {
61
+ protocolVersion: `${init.protocolPrefix ?? defaultValues.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,
62
+ agentVersion: init.agentVersion ?? defaultValues.agentVersion
63
+ };
64
+ // When a new connection happens, trigger identify
65
+ components.events.addEventListener('connection:open', (evt) => {
66
+ const connection = evt.detail;
67
+ this.identify(connection).catch(err => { log.error('error during identify trigged by connection:open', err); });
68
+ });
69
+ // When self peer record changes, trigger identify-push
70
+ components.events.addEventListener('self:peer:update', (evt) => {
71
+ void this.push().catch(err => { log.error(err); });
72
+ });
73
+ // Append user agent version to default AGENT_VERSION depending on the environment
74
+ if (this.host.agentVersion === AGENT_VERSION) {
75
+ if (isNode || isElectronMain) {
76
+ this.host.agentVersion += ` UserAgent=${globalThis.process.version}`;
77
+ }
78
+ else if (isBrowser || isWebWorker || isElectronRenderer || isReactNative) {
79
+ this.host.agentVersion += ` UserAgent=${globalThis.navigator.userAgent}`;
80
+ }
81
+ }
82
+ }
83
+ isStarted() {
84
+ return this.started;
85
+ }
86
+ async start() {
87
+ if (this.started) {
88
+ return;
89
+ }
90
+ await this.peerStore.merge(this.peerId, {
91
+ metadata: {
92
+ AgentVersion: uint8ArrayFromString(this.host.agentVersion),
93
+ ProtocolVersion: uint8ArrayFromString(this.host.protocolVersion)
94
+ }
95
+ });
96
+ await this.registrar.handle(this.identifyProtocolStr, (data) => {
97
+ void this._handleIdentify(data).catch(err => {
98
+ log.error(err);
99
+ });
100
+ }, {
101
+ maxInboundStreams: this.maxInboundStreams,
102
+ maxOutboundStreams: this.maxOutboundStreams
103
+ });
104
+ await this.registrar.handle(this.identifyPushProtocolStr, (data) => {
105
+ void this._handlePush(data).catch(err => {
106
+ log.error(err);
107
+ });
108
+ }, {
109
+ maxInboundStreams: this.maxPushIncomingStreams,
110
+ maxOutboundStreams: this.maxPushOutgoingStreams
111
+ });
112
+ this.started = true;
113
+ }
114
+ async stop() {
115
+ await this.registrar.unhandle(this.identifyProtocolStr);
116
+ await this.registrar.unhandle(this.identifyPushProtocolStr);
117
+ this.started = false;
118
+ }
119
+ /**
120
+ * Send an Identify Push update to the list of connections
121
+ */
122
+ async pushToConnections(connections) {
123
+ const listenAddresses = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));
124
+ const peerRecord = new PeerRecord({
125
+ peerId: this.peerId,
126
+ multiaddrs: listenAddresses
127
+ });
128
+ const signedPeerRecord = await RecordEnvelope.seal(peerRecord, this.peerId);
129
+ const supportedProtocols = this.registrar.getProtocols();
130
+ const peer = await this.peerStore.get(this.peerId);
131
+ const agentVersion = uint8ArrayToString(peer.metadata.get('AgentVersion') ?? uint8ArrayFromString(this.host.agentVersion));
132
+ const protocolVersion = uint8ArrayToString(peer.metadata.get('ProtocolVersion') ?? uint8ArrayFromString(this.host.protocolVersion));
133
+ const pushes = connections.map(async (connection) => {
134
+ let stream;
135
+ const signal = AbortSignal.timeout(this.timeout);
136
+ try {
137
+ // fails on node < 15.4
138
+ setMaxListeners?.(Infinity, signal);
139
+ }
140
+ catch { }
141
+ try {
142
+ stream = await connection.newStream([this.identifyPushProtocolStr], {
143
+ signal
144
+ });
145
+ // make stream abortable
146
+ const source = abortableDuplex(stream, signal);
147
+ await source.sink(pipe([Identify.encode({
148
+ listenAddrs: listenAddresses.map(ma => ma.bytes),
149
+ signedPeerRecord: signedPeerRecord.marshal(),
150
+ protocols: supportedProtocols,
151
+ agentVersion,
152
+ protocolVersion
153
+ })], (source) => lp.encode(source)));
154
+ }
155
+ catch (err) {
156
+ // Just log errors
157
+ log.error('could not push identify update to peer', err);
158
+ }
159
+ finally {
160
+ if (stream != null) {
161
+ stream.close();
162
+ }
163
+ }
164
+ });
165
+ await Promise.all(pushes);
166
+ }
167
+ /**
168
+ * Calls `push` on all peer connections
169
+ */
170
+ async push() {
171
+ // Do not try to push if we are not running
172
+ if (!this.isStarted()) {
173
+ return;
174
+ }
175
+ const connections = [];
176
+ await Promise.all(this.connectionManager.getConnections().map(async (conn) => {
177
+ try {
178
+ const peer = await this.peerStore.get(conn.remotePeer);
179
+ if (!peer.protocols.includes(this.identifyPushProtocolStr)) {
180
+ return;
181
+ }
182
+ connections.push(conn);
183
+ }
184
+ catch (err) {
185
+ if (err.code !== codes.ERR_NOT_FOUND) {
186
+ throw err;
187
+ }
188
+ }
189
+ }));
190
+ await this.pushToConnections(connections);
191
+ }
192
+ async _identify(connection, options = {}) {
193
+ let stream;
194
+ const signal = anySignal([AbortSignal.timeout(this.timeout), options?.signal]);
195
+ try {
196
+ // fails on node < 15.4
197
+ setMaxListeners?.(Infinity, signal);
198
+ }
199
+ catch { }
200
+ try {
201
+ stream = await connection.newStream([this.identifyProtocolStr], {
202
+ signal
203
+ });
204
+ // make stream abortable
205
+ const source = abortableDuplex(stream, signal);
206
+ const data = await pipe([], source, (source) => lp.decode(source, {
207
+ maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE
208
+ }), async (source) => await first(source));
209
+ if (data == null) {
210
+ throw new CodeError('No data could be retrieved', codes.ERR_CONNECTION_ENDED);
211
+ }
212
+ try {
213
+ return Identify.decode(data);
214
+ }
215
+ catch (err) {
216
+ throw new CodeError(String(err), codes.ERR_INVALID_MESSAGE);
217
+ }
218
+ }
219
+ finally {
220
+ if (stream != null) {
221
+ stream.close();
222
+ }
223
+ signal.clear();
224
+ }
225
+ }
226
+ async identify(connection, options = {}) {
227
+ const message = await this._identify(connection, options);
228
+ const { publicKey, protocols, observedAddr } = message;
229
+ if (publicKey == null) {
230
+ throw new CodeError('public key was missing from identify message', codes.ERR_MISSING_PUBLIC_KEY);
231
+ }
232
+ const id = await peerIdFromKeys(publicKey);
233
+ if (!connection.remotePeer.equals(id)) {
234
+ throw new CodeError('identified peer does not match the expected peer', codes.ERR_INVALID_PEER);
235
+ }
236
+ if (this.peerId.equals(id)) {
237
+ throw new CodeError('identified peer is our own peer id?', codes.ERR_INVALID_PEER);
238
+ }
239
+ // Get the observedAddr if there is one
240
+ const cleanObservedAddr = getCleanMultiaddr(observedAddr);
241
+ log('identify completed for peer %p and protocols %o', id, protocols);
242
+ log('our observed address is %s', cleanObservedAddr);
243
+ if (cleanObservedAddr != null &&
244
+ this.addressManager.getObservedAddrs().length < (this.maxObservedAddresses ?? Infinity)) {
245
+ log('storing our observed address %s', cleanObservedAddr?.toString());
246
+ this.addressManager.addObservedAddr(cleanObservedAddr);
247
+ }
248
+ const signedPeerRecord = await __classPrivateFieldGet(this, _DefaultIdentifyService_instances, "m", _DefaultIdentifyService_consumeIdentifyMessage).call(this, connection.remotePeer, message);
249
+ const result = {
250
+ peerId: id,
251
+ protocolVersion: message.protocolVersion,
252
+ agentVersion: message.agentVersion,
253
+ publicKey: message.publicKey,
254
+ listenAddrs: message.listenAddrs.map(buf => multiaddr(buf)),
255
+ observedAddr: message.observedAddr == null ? undefined : multiaddr(message.observedAddr),
256
+ protocols: message.protocols,
257
+ signedPeerRecord
258
+ };
259
+ this.events.safeDispatchEvent('peer:identify', { detail: result });
260
+ }
261
+ /**
262
+ * Sends the `Identify` response with the Signed Peer Record
263
+ * to the requesting peer over the given `connection`
264
+ */
265
+ async _handleIdentify(data) {
266
+ const { connection, stream } = data;
267
+ const signal = AbortSignal.timeout(this.timeout);
268
+ try {
269
+ // fails on node < 15.4
270
+ setMaxListeners?.(Infinity, signal);
271
+ }
272
+ catch { }
273
+ try {
274
+ const publicKey = this.peerId.publicKey ?? new Uint8Array(0);
275
+ const peerData = await this.peerStore.get(this.peerId);
276
+ const multiaddrs = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));
277
+ let signedPeerRecord = peerData.peerRecordEnvelope;
278
+ if (multiaddrs.length > 0 && signedPeerRecord == null) {
279
+ const peerRecord = new PeerRecord({
280
+ peerId: this.peerId,
281
+ multiaddrs
282
+ });
283
+ const envelope = await RecordEnvelope.seal(peerRecord, this.peerId);
284
+ signedPeerRecord = envelope.marshal().subarray();
285
+ }
286
+ const message = Identify.encode({
287
+ protocolVersion: this.host.protocolVersion,
288
+ agentVersion: this.host.agentVersion,
289
+ publicKey,
290
+ listenAddrs: multiaddrs.map(addr => addr.bytes),
291
+ signedPeerRecord,
292
+ observedAddr: connection.remoteAddr.bytes,
293
+ protocols: peerData.protocols
294
+ });
295
+ // make stream abortable
296
+ const source = abortableDuplex(stream, signal);
297
+ const msgWithLenPrefix = pipe([message], (source) => lp.encode(source));
298
+ await source.sink(msgWithLenPrefix);
299
+ }
300
+ catch (err) {
301
+ log.error('could not respond to identify request', err);
302
+ }
303
+ finally {
304
+ stream.close();
305
+ }
306
+ }
307
+ /**
308
+ * Reads the Identify Push message from the given `connection`
309
+ */
310
+ async _handlePush(data) {
311
+ const { connection, stream } = data;
312
+ try {
313
+ if (this.peerId.equals(connection.remotePeer)) {
314
+ throw new Error('received push from ourselves?');
315
+ }
316
+ // make stream abortable
317
+ const source = abortableDuplex(stream, AbortSignal.timeout(this.timeout));
318
+ const pb = pbStream(source, {
319
+ maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE
320
+ });
321
+ const message = await pb.readPB(Identify);
322
+ await __classPrivateFieldGet(this, _DefaultIdentifyService_instances, "m", _DefaultIdentifyService_consumeIdentifyMessage).call(this, connection.remotePeer, message);
323
+ }
324
+ catch (err) {
325
+ log.error('received invalid message', err);
326
+ return;
327
+ }
328
+ finally {
329
+ stream.close();
330
+ }
331
+ log('handled push from %p', connection.remotePeer);
332
+ }
333
+ }
334
+ _DefaultIdentifyService_instances = new WeakSet(), _DefaultIdentifyService_consumeIdentifyMessage = async function _DefaultIdentifyService_consumeIdentifyMessage(remotePeer, message) {
335
+ if (message == null) {
336
+ throw new Error('Message was null or undefined');
337
+ }
338
+ log('received identify from %p', remotePeer);
339
+ if (message.signedPeerRecord == null) {
340
+ return;
341
+ }
342
+ const envelope = await RecordEnvelope.openAndCertify(message.signedPeerRecord, PeerRecord.DOMAIN);
343
+ const peerRecord = PeerRecord.createFromProtobuf(envelope.payload);
344
+ // Verify peerId
345
+ if (!peerRecord.peerId.equals(envelope.peerId)) {
346
+ throw new Error('signing key does not match PeerId in the PeerRecord');
347
+ }
348
+ // Make sure remote peer is the one sending the record
349
+ if (!remotePeer.equals(peerRecord.peerId)) {
350
+ throw new Error('signing key does not match remote PeerId');
351
+ }
352
+ let peer;
353
+ try {
354
+ peer = await this.peerStore.get(peerRecord.peerId);
355
+ }
356
+ catch (err) {
357
+ if (err.code !== 'ERR_NOT_FOUND') {
358
+ throw err;
359
+ }
360
+ }
361
+ log('received signedPeerRecord in push from %p', remotePeer);
362
+ let metadata = new Map();
363
+ if (peer?.peerRecordEnvelope != null) {
364
+ const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope);
365
+ const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);
366
+ // ensure seq is greater than, or equal to, the last received
367
+ if (storedRecord.seqNumber >= peerRecord.seqNumber) {
368
+ log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);
369
+ }
370
+ metadata = peer.metadata;
371
+ }
372
+ if (message.agentVersion != null) {
373
+ metadata.set('AgentVersion', uint8ArrayFromString(message.agentVersion));
374
+ }
375
+ if (message.protocolVersion != null) {
376
+ metadata.set('ProtocolVersion', uint8ArrayFromString(message.protocolVersion));
377
+ }
378
+ await this.peerStore.patch(peerRecord.peerId, {
379
+ peerRecordEnvelope: message.signedPeerRecord,
380
+ protocols: message.protocols,
381
+ addresses: peerRecord.multiaddrs.map(multiaddr => ({
382
+ isCertified: true,
383
+ multiaddr
384
+ })),
385
+ metadata
386
+ });
387
+ log('consumed signedPeerRecord sent in push from %p', remotePeer);
388
+ return {
389
+ seq: peerRecord.seqNumber,
390
+ addresses: peerRecord.multiaddrs
391
+ };
392
+ };
393
+ /**
394
+ * Takes the `addr` and converts it to a Multiaddr if possible
395
+ */
396
+ function getCleanMultiaddr(addr) {
397
+ if (addr != null && addr.length > 0) {
398
+ try {
399
+ return multiaddr(addr);
400
+ }
401
+ catch {
402
+ }
403
+ }
404
+ }
405
+ //# sourceMappingURL=identify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../src/identify/identify.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,32 @@
1
- import { Multiaddr } from '@multiformats/multiaddr';
2
1
  import { Identify } from './pb/message.js';
3
- import type { IncomingStreamData, Registrar } from '@libp2p/interface-registrar';
4
- import type { Connection } from '@libp2p/interface-connection';
5
- import type { Startable } from '@libp2p/interfaces/startable';
6
- import type { AbortOptions } from '@libp2p/interfaces';
2
+ import type { Registrar } from '@libp2p/interface-registrar';
7
3
  import type { ConnectionManager } from '@libp2p/interface-connection-manager';
8
4
  import type { PeerId } from '@libp2p/interface-peer-id';
9
5
  import type { PeerStore } from '@libp2p/interface-peer-store';
10
6
  import type { AddressManager } from '@libp2p/interface-address-manager';
11
- export interface HostProperties {
12
- agentVersion: string;
13
- }
7
+ import type { EventEmitter } from '@libp2p/interfaces/events';
8
+ import type { Libp2pEvents } from '@libp2p/interface-libp2p';
14
9
  export interface IdentifyServiceInit {
15
10
  /**
16
11
  * The prefix to use for the protocol (default: 'ipfs')
17
12
  */
18
- protocolPrefix: string;
13
+ protocolPrefix?: string;
19
14
  /**
20
15
  * What details we should send as part of an identify message
21
16
  */
22
- host: HostProperties;
17
+ agentVersion?: string;
23
18
  /**
24
19
  * How long we should wait for a remote peer to send their identify response
25
20
  */
26
- timeout: number;
21
+ timeout?: number;
27
22
  /**
28
23
  * Identify responses larger than this in bytes will be rejected (default: 8192)
29
24
  */
30
25
  maxIdentifyMessageSize?: number;
31
- maxInboundStreams: number;
32
- maxOutboundStreams: number;
33
- maxPushIncomingStreams: number;
34
- maxPushOutgoingStreams: number;
26
+ maxInboundStreams?: number;
27
+ maxOutboundStreams?: number;
28
+ maxPushIncomingStreams?: number;
29
+ maxPushOutgoingStreams?: number;
35
30
  maxObservedAddresses?: number;
36
31
  }
37
32
  export interface IdentifyServiceComponents {
@@ -40,49 +35,7 @@ export interface IdentifyServiceComponents {
40
35
  connectionManager: ConnectionManager;
41
36
  registrar: Registrar;
42
37
  addressManager: AddressManager;
43
- }
44
- export declare class IdentifyService implements Startable {
45
- private readonly components;
46
- private readonly identifyProtocolStr;
47
- private readonly identifyPushProtocolStr;
48
- readonly host: {
49
- protocolVersion: string;
50
- agentVersion: string;
51
- };
52
- private readonly init;
53
- private started;
54
- constructor(components: IdentifyServiceComponents, init: IdentifyServiceInit);
55
- isStarted(): boolean;
56
- start(): Promise<void>;
57
- stop(): Promise<void>;
58
- /**
59
- * Send an Identify Push update to the list of connections
60
- */
61
- push(connections: Connection[]): Promise<void>;
62
- /**
63
- * Calls `push` on all peer connections
64
- */
65
- pushToPeerStore(): Promise<void>;
66
- _identify(connection: Connection, options?: AbortOptions): Promise<Identify>;
67
- /**
68
- * Requests the `Identify` message from peer associated with the given `connection`.
69
- * If the identified peer does not match the `PeerId` associated with the connection,
70
- * an error will be thrown.
71
- */
72
- identify(connection: Connection, options?: AbortOptions): Promise<void>;
73
- /**
74
- * Sends the `Identify` response with the Signed Peer Record
75
- * to the requesting peer over the given `connection`
76
- */
77
- _handleIdentify(data: IncomingStreamData): Promise<void>;
78
- /**
79
- * Reads the Identify Push message from the given `connection`
80
- */
81
- _handlePush(data: IncomingStreamData): Promise<void>;
82
- /**
83
- * Takes the `addr` and converts it to a Multiaddr if possible
84
- */
85
- static getCleanMultiaddr(addr: Uint8Array | string | null | undefined): Multiaddr | undefined;
38
+ events: EventEmitter<Libp2pEvents>;
86
39
  }
87
40
  /**
88
41
  * The protocols the IdentifyService supports
@@ -94,4 +47,5 @@ export declare const multicodecs: {
94
47
  export declare const Message: {
95
48
  Identify: typeof Identify;
96
49
  };
50
+ export declare function identifyService(init?: IdentifyServiceInit): (components: IdentifyServiceComponents) => {};
97
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identify/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identify/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAK1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;CAGvB,CAAA;AAED,eAAO,MAAM,OAAO;;CAAe,CAAA;AAEnC,wBAAgB,eAAe,CAAE,IAAI,GAAE,mBAAwB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,EAAE,CAE9G"}