libp2p 0.46.21 → 1.0.0-06e6d235f

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 (301) hide show
  1. package/README.md +52 -48
  2. package/dist/index.min.js +40 -28
  3. package/dist/src/address-manager/index.d.ts +4 -5
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +3 -3
  6. package/dist/src/address-manager/index.js.map +1 -1
  7. package/dist/src/components.d.ts +4 -15
  8. package/dist/src/components.d.ts.map +1 -1
  9. package/dist/src/components.js +2 -2
  10. package/dist/src/components.js.map +1 -1
  11. package/dist/src/config/connection-gater.browser.d.ts +1 -1
  12. package/dist/src/config/connection-gater.browser.d.ts.map +1 -1
  13. package/dist/src/config/connection-gater.browser.js.map +1 -1
  14. package/dist/src/config/connection-gater.d.ts +1 -1
  15. package/dist/src/config/connection-gater.d.ts.map +1 -1
  16. package/dist/src/config.d.ts.map +1 -1
  17. package/dist/src/config.js +1 -2
  18. package/dist/src/config.js.map +1 -1
  19. package/dist/src/connection/index.d.ts +4 -6
  20. package/dist/src/connection/index.d.ts.map +1 -1
  21. package/dist/src/connection/index.js +11 -13
  22. package/dist/src/connection/index.js.map +1 -1
  23. package/dist/src/connection-manager/auto-dial.d.ts +3 -6
  24. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
  25. package/dist/src/connection-manager/auto-dial.js +21 -21
  26. package/dist/src/connection-manager/auto-dial.js.map +1 -1
  27. package/dist/src/connection-manager/connection-pruner.d.ts +3 -5
  28. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  29. package/dist/src/connection-manager/connection-pruner.js +8 -8
  30. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  31. package/dist/src/connection-manager/constants.defaults.d.ts +0 -4
  32. package/dist/src/connection-manager/constants.defaults.d.ts.map +1 -1
  33. package/dist/src/connection-manager/constants.defaults.js +0 -4
  34. package/dist/src/connection-manager/constants.defaults.js.map +1 -1
  35. package/dist/src/connection-manager/dial-queue.d.ts +3 -10
  36. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  37. package/dist/src/connection-manager/dial-queue.js +30 -38
  38. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  39. package/dist/src/connection-manager/index.d.ts +3 -18
  40. package/dist/src/connection-manager/index.d.ts.map +1 -1
  41. package/dist/src/connection-manager/index.js +17 -19
  42. package/dist/src/connection-manager/index.js.map +1 -1
  43. package/dist/src/connection-manager/utils.js +1 -1
  44. package/dist/src/connection-manager/utils.js.map +1 -1
  45. package/dist/src/content-routing/index.d.ts +1 -5
  46. package/dist/src/content-routing/index.d.ts.map +1 -1
  47. package/dist/src/content-routing/index.js +2 -2
  48. package/dist/src/content-routing/index.js.map +1 -1
  49. package/dist/src/content-routing/utils.d.ts +1 -2
  50. package/dist/src/content-routing/utils.d.ts.map +1 -1
  51. package/dist/src/content-routing/utils.js +1 -1
  52. package/dist/src/content-routing/utils.js.map +1 -1
  53. package/dist/src/errors.d.ts +0 -2
  54. package/dist/src/errors.d.ts.map +1 -1
  55. package/dist/src/errors.js +0 -2
  56. package/dist/src/errors.js.map +1 -1
  57. package/dist/src/get-peer.d.ts +1 -1
  58. package/dist/src/get-peer.d.ts.map +1 -1
  59. package/dist/src/get-peer.js +1 -5
  60. package/dist/src/get-peer.js.map +1 -1
  61. package/dist/src/index.d.ts +5 -16
  62. package/dist/src/index.d.ts.map +1 -1
  63. package/dist/src/index.js.map +1 -1
  64. package/dist/src/libp2p.d.ts +4 -12
  65. package/dist/src/libp2p.d.ts.map +1 -1
  66. package/dist/src/libp2p.js +30 -65
  67. package/dist/src/libp2p.js.map +1 -1
  68. package/dist/src/peer-routing.d.ts +6 -6
  69. package/dist/src/peer-routing.d.ts.map +1 -1
  70. package/dist/src/peer-routing.js +12 -9
  71. package/dist/src/peer-routing.js.map +1 -1
  72. package/dist/src/registrar.d.ts +5 -7
  73. package/dist/src/registrar.d.ts.map +1 -1
  74. package/dist/src/registrar.js +4 -4
  75. package/dist/src/registrar.js.map +1 -1
  76. package/dist/src/transport-manager.d.ts +5 -9
  77. package/dist/src/transport-manager.d.ts.map +1 -1
  78. package/dist/src/transport-manager.js +12 -13
  79. package/dist/src/transport-manager.js.map +1 -1
  80. package/dist/src/upgrader.d.ts +8 -19
  81. package/dist/src/upgrader.d.ts.map +1 -1
  82. package/dist/src/upgrader.js +75 -38
  83. package/dist/src/upgrader.js.map +1 -1
  84. package/dist/src/version.d.ts +1 -1
  85. package/dist/src/version.d.ts.map +1 -1
  86. package/dist/src/version.js +1 -1
  87. package/dist/src/version.js.map +1 -1
  88. package/package.json +41 -110
  89. package/src/address-manager/index.ts +6 -9
  90. package/src/components.ts +5 -16
  91. package/src/config/connection-gater.browser.ts +1 -1
  92. package/src/config/connection-gater.ts +1 -1
  93. package/src/config.ts +1 -2
  94. package/src/connection/index.ts +12 -17
  95. package/src/connection-manager/auto-dial.ts +23 -26
  96. package/src/connection-manager/connection-pruner.ts +10 -12
  97. package/src/connection-manager/constants.defaults.ts +0 -5
  98. package/src/connection-manager/dial-queue.ts +31 -46
  99. package/src/connection-manager/index.ts +19 -37
  100. package/src/connection-manager/utils.ts +1 -1
  101. package/src/content-routing/index.ts +3 -7
  102. package/src/content-routing/utils.ts +2 -3
  103. package/src/errors.ts +0 -2
  104. package/src/get-peer.ts +2 -7
  105. package/src/index.ts +6 -17
  106. package/src/libp2p.ts +32 -80
  107. package/src/peer-routing.ts +16 -15
  108. package/src/registrar.ts +8 -12
  109. package/src/transport-manager.ts +15 -22
  110. package/src/upgrader.ts +110 -64
  111. package/src/version.ts +1 -1
  112. package/dist/src/autonat/constants.d.ts +0 -18
  113. package/dist/src/autonat/constants.d.ts.map +0 -1
  114. package/dist/src/autonat/constants.js +0 -18
  115. package/dist/src/autonat/constants.js.map +0 -1
  116. package/dist/src/autonat/index.d.ts +0 -62
  117. package/dist/src/autonat/index.d.ts.map +0 -1
  118. package/dist/src/autonat/index.js +0 -447
  119. package/dist/src/autonat/index.js.map +0 -1
  120. package/dist/src/autonat/pb/index.d.ts +0 -57
  121. package/dist/src/autonat/pb/index.d.ts.map +0 -1
  122. package/dist/src/autonat/pb/index.js +0 -250
  123. package/dist/src/autonat/pb/index.js.map +0 -1
  124. package/dist/src/circuit-relay/constants.d.ts +0 -50
  125. package/dist/src/circuit-relay/constants.d.ts.map +0 -1
  126. package/dist/src/circuit-relay/constants.js +0 -56
  127. package/dist/src/circuit-relay/constants.js.map +0 -1
  128. package/dist/src/circuit-relay/index.d.ts +0 -55
  129. package/dist/src/circuit-relay/index.d.ts.map +0 -1
  130. package/dist/src/circuit-relay/index.js +0 -38
  131. package/dist/src/circuit-relay/index.js.map +0 -1
  132. package/dist/src/circuit-relay/pb/index.d.ts +0 -93
  133. package/dist/src/circuit-relay/pb/index.d.ts.map +0 -1
  134. package/dist/src/circuit-relay/pb/index.js +0 -425
  135. package/dist/src/circuit-relay/pb/index.js.map +0 -1
  136. package/dist/src/circuit-relay/server/advert-service.d.ts +0 -43
  137. package/dist/src/circuit-relay/server/advert-service.d.ts.map +0 -1
  138. package/dist/src/circuit-relay/server/advert-service.js +0 -73
  139. package/dist/src/circuit-relay/server/advert-service.js.map +0 -1
  140. package/dist/src/circuit-relay/server/index.d.ts +0 -65
  141. package/dist/src/circuit-relay/server/index.d.ts.map +0 -1
  142. package/dist/src/circuit-relay/server/index.js +0 -312
  143. package/dist/src/circuit-relay/server/index.js.map +0 -1
  144. package/dist/src/circuit-relay/server/reservation-store.d.ts +0 -49
  145. package/dist/src/circuit-relay/server/reservation-store.d.ts.map +0 -1
  146. package/dist/src/circuit-relay/server/reservation-store.js +0 -65
  147. package/dist/src/circuit-relay/server/reservation-store.js.map +0 -1
  148. package/dist/src/circuit-relay/server/reservation-voucher.d.ts +0 -18
  149. package/dist/src/circuit-relay/server/reservation-voucher.d.ts.map +0 -1
  150. package/dist/src/circuit-relay/server/reservation-voucher.js +0 -36
  151. package/dist/src/circuit-relay/server/reservation-voucher.js.map +0 -1
  152. package/dist/src/circuit-relay/transport/discovery.d.ts +0 -45
  153. package/dist/src/circuit-relay/transport/discovery.d.ts.map +0 -1
  154. package/dist/src/circuit-relay/transport/discovery.js +0 -97
  155. package/dist/src/circuit-relay/transport/discovery.js.map +0 -1
  156. package/dist/src/circuit-relay/transport/index.d.ts +0 -57
  157. package/dist/src/circuit-relay/transport/index.d.ts.map +0 -1
  158. package/dist/src/circuit-relay/transport/index.js +0 -276
  159. package/dist/src/circuit-relay/transport/index.js.map +0 -1
  160. package/dist/src/circuit-relay/transport/listener.d.ts +0 -9
  161. package/dist/src/circuit-relay/transport/listener.d.ts.map +0 -1
  162. package/dist/src/circuit-relay/transport/listener.js +0 -66
  163. package/dist/src/circuit-relay/transport/listener.js.map +0 -1
  164. package/dist/src/circuit-relay/transport/reservation-store.d.ts +0 -72
  165. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +0 -1
  166. package/dist/src/circuit-relay/transport/reservation-store.js +0 -209
  167. package/dist/src/circuit-relay/transport/reservation-store.js.map +0 -1
  168. package/dist/src/circuit-relay/utils.d.ts +0 -13
  169. package/dist/src/circuit-relay/utils.d.ts.map +0 -1
  170. package/dist/src/circuit-relay/utils.js +0 -108
  171. package/dist/src/circuit-relay/utils.js.map +0 -1
  172. package/dist/src/dcutr/dcutr.d.ts +0 -43
  173. package/dist/src/dcutr/dcutr.d.ts.map +0 -1
  174. package/dist/src/dcutr/dcutr.js +0 -313
  175. package/dist/src/dcutr/dcutr.js.map +0 -1
  176. package/dist/src/dcutr/index.d.ts +0 -92
  177. package/dist/src/dcutr/index.d.ts.map +0 -1
  178. package/dist/src/dcutr/index.js +0 -63
  179. package/dist/src/dcutr/index.js.map +0 -1
  180. package/dist/src/dcutr/pb/message.d.ts +0 -20
  181. package/dist/src/dcutr/pb/message.d.ts.map +0 -1
  182. package/dist/src/dcutr/pb/message.js +0 -77
  183. package/dist/src/dcutr/pb/message.js.map +0 -1
  184. package/dist/src/dcutr/utils.d.ts +0 -8
  185. package/dist/src/dcutr/utils.d.ts.map +0 -1
  186. package/dist/src/dcutr/utils.js +0 -27
  187. package/dist/src/dcutr/utils.js.map +0 -1
  188. package/dist/src/fetch/constants.d.ts +0 -3
  189. package/dist/src/fetch/constants.d.ts.map +0 -1
  190. package/dist/src/fetch/constants.js +0 -4
  191. package/dist/src/fetch/constants.js.map +0 -1
  192. package/dist/src/fetch/index.d.ts +0 -61
  193. package/dist/src/fetch/index.d.ts.map +0 -1
  194. package/dist/src/fetch/index.js +0 -205
  195. package/dist/src/fetch/index.js.map +0 -1
  196. package/dist/src/fetch/pb/proto.d.ts +0 -28
  197. package/dist/src/fetch/pb/proto.d.ts.map +0 -1
  198. package/dist/src/fetch/pb/proto.js +0 -120
  199. package/dist/src/fetch/pb/proto.js.map +0 -1
  200. package/dist/src/identify/consts.d.ts +0 -10
  201. package/dist/src/identify/consts.d.ts.map +0 -1
  202. package/dist/src/identify/consts.js +0 -11
  203. package/dist/src/identify/consts.js.map +0 -1
  204. package/dist/src/identify/identify.d.ts +0 -54
  205. package/dist/src/identify/identify.d.ts.map +0 -1
  206. package/dist/src/identify/identify.js +0 -447
  207. package/dist/src/identify/identify.js.map +0 -1
  208. package/dist/src/identify/index.d.ts +0 -72
  209. package/dist/src/identify/index.d.ts.map +0 -1
  210. package/dist/src/identify/index.js +0 -15
  211. package/dist/src/identify/index.js.map +0 -1
  212. package/dist/src/identify/pb/message.d.ts +0 -17
  213. package/dist/src/identify/pb/message.d.ts.map +0 -1
  214. package/dist/src/identify/pb/message.js +0 -98
  215. package/dist/src/identify/pb/message.js.map +0 -1
  216. package/dist/src/insecure/index.d.ts +0 -26
  217. package/dist/src/insecure/index.d.ts.map +0 -1
  218. package/dist/src/insecure/index.js +0 -110
  219. package/dist/src/insecure/index.js.map +0 -1
  220. package/dist/src/insecure/pb/proto.d.ts +0 -30
  221. package/dist/src/insecure/pb/proto.d.ts.map +0 -1
  222. package/dist/src/insecure/pb/proto.js +0 -127
  223. package/dist/src/insecure/pb/proto.js.map +0 -1
  224. package/dist/src/ping/constants.d.ts +0 -9
  225. package/dist/src/ping/constants.d.ts.map +0 -1
  226. package/dist/src/ping/constants.js +0 -15
  227. package/dist/src/ping/constants.js.map +0 -1
  228. package/dist/src/ping/index.d.ts +0 -24
  229. package/dist/src/ping/index.d.ts.map +0 -1
  230. package/dist/src/ping/index.js +0 -115
  231. package/dist/src/ping/index.js.map +0 -1
  232. package/dist/src/pnet/crypto.d.ts +0 -18
  233. package/dist/src/pnet/crypto.d.ts.map +0 -1
  234. package/dist/src/pnet/crypto.js +0 -60
  235. package/dist/src/pnet/crypto.js.map +0 -1
  236. package/dist/src/pnet/errors.d.ts +0 -6
  237. package/dist/src/pnet/errors.d.ts.map +0 -1
  238. package/dist/src/pnet/errors.js +0 -6
  239. package/dist/src/pnet/errors.js.map +0 -1
  240. package/dist/src/pnet/index.d.ts +0 -31
  241. package/dist/src/pnet/index.d.ts.map +0 -1
  242. package/dist/src/pnet/index.js +0 -97
  243. package/dist/src/pnet/index.js.map +0 -1
  244. package/dist/src/pnet/key-generator.d.ts +0 -11
  245. package/dist/src/pnet/key-generator.d.ts.map +0 -1
  246. package/dist/src/pnet/key-generator.js +0 -22
  247. package/dist/src/pnet/key-generator.js.map +0 -1
  248. package/dist/src/upnp-nat/index.d.ts +0 -71
  249. package/dist/src/upnp-nat/index.d.ts.map +0 -1
  250. package/dist/src/upnp-nat/index.js +0 -136
  251. package/dist/src/upnp-nat/index.js.map +0 -1
  252. package/dist/src/utils/peer-job-queue.d.ts +0 -33
  253. package/dist/src/utils/peer-job-queue.d.ts.map +0 -1
  254. package/dist/src/utils/peer-job-queue.js +0 -82
  255. package/dist/src/utils/peer-job-queue.js.map +0 -1
  256. package/dist/typedoc-urls.json +0 -71
  257. package/src/autonat/constants.ts +0 -19
  258. package/src/autonat/index.ts +0 -597
  259. package/src/autonat/pb/index.proto +0 -35
  260. package/src/autonat/pb/index.ts +0 -320
  261. package/src/circuit-relay/constants.ts +0 -72
  262. package/src/circuit-relay/index.ts +0 -59
  263. package/src/circuit-relay/pb/index.proto +0 -67
  264. package/src/circuit-relay/pb/index.ts +0 -539
  265. package/src/circuit-relay/server/advert-service.ts +0 -108
  266. package/src/circuit-relay/server/index.ts +0 -443
  267. package/src/circuit-relay/server/reservation-store.ts +0 -116
  268. package/src/circuit-relay/server/reservation-voucher.ts +0 -51
  269. package/src/circuit-relay/transport/discovery.ts +0 -136
  270. package/src/circuit-relay/transport/index.ts +0 -396
  271. package/src/circuit-relay/transport/listener.ts +0 -97
  272. package/src/circuit-relay/transport/reservation-store.ts +0 -312
  273. package/src/circuit-relay/utils.ts +0 -136
  274. package/src/dcutr/dcutr.ts +0 -378
  275. package/src/dcutr/index.ts +0 -102
  276. package/src/dcutr/pb/message.proto +0 -12
  277. package/src/dcutr/pb/message.ts +0 -96
  278. package/src/dcutr/utils.ts +0 -33
  279. package/src/fetch/README.md +0 -41
  280. package/src/fetch/constants.ts +0 -3
  281. package/src/fetch/index.ts +0 -315
  282. package/src/fetch/pb/proto.proto +0 -15
  283. package/src/fetch/pb/proto.ts +0 -153
  284. package/src/identify/README.md +0 -13
  285. package/src/identify/consts.ts +0 -12
  286. package/src/identify/identify.ts +0 -561
  287. package/src/identify/index.ts +0 -90
  288. package/src/identify/pb/message.proto +0 -30
  289. package/src/identify/pb/message.ts +0 -126
  290. package/src/insecure/index.ts +0 -138
  291. package/src/insecure/pb/proto.proto +0 -18
  292. package/src/insecure/pb/proto.ts +0 -161
  293. package/src/ping/constants.ts +0 -15
  294. package/src/ping/index.ts +0 -170
  295. package/src/pnet/README.md +0 -68
  296. package/src/pnet/crypto.ts +0 -67
  297. package/src/pnet/errors.ts +0 -5
  298. package/src/pnet/index.ts +0 -126
  299. package/src/pnet/key-generator.ts +0 -23
  300. package/src/upnp-nat/index.ts +0 -212
  301. package/src/utils/peer-job-queue.ts +0 -119
@@ -1,447 +0,0 @@
1
- import { CodeError } from '@libp2p/interface/errors';
2
- import { setMaxListeners } from '@libp2p/interface/events';
3
- import { peerIdFromKeys } from '@libp2p/peer-id';
4
- import { RecordEnvelope, PeerRecord } from '@libp2p/peer-record';
5
- import { multiaddr, protocols } from '@multiformats/multiaddr';
6
- import { IP_OR_DOMAIN } from '@multiformats/multiaddr-matcher';
7
- import { pbStream } from 'it-protobuf-stream';
8
- import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
9
- import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
10
- import { isNode, isBrowser, isWebWorker, isElectronMain, isElectronRenderer, isReactNative } from 'wherearewe';
11
- import { codes } from '../errors.js';
12
- 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';
13
- import { Identify } from './pb/message.js';
14
- // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L52
15
- const MAX_IDENTIFY_MESSAGE_SIZE = 1024 * 8;
16
- const defaultValues = {
17
- protocolPrefix: 'ipfs',
18
- agentVersion: AGENT_VERSION,
19
- // https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L48
20
- timeout: 60000,
21
- maxInboundStreams: 1,
22
- maxOutboundStreams: 1,
23
- maxPushIncomingStreams: 1,
24
- maxPushOutgoingStreams: 1,
25
- maxObservedAddresses: 10,
26
- maxIdentifyMessageSize: 8192,
27
- runOnConnectionOpen: true,
28
- runOnTransientConnection: true
29
- };
30
- export class DefaultIdentifyService {
31
- identifyProtocolStr;
32
- identifyPushProtocolStr;
33
- host;
34
- started;
35
- timeout;
36
- peerId;
37
- peerStore;
38
- registrar;
39
- connectionManager;
40
- addressManager;
41
- maxInboundStreams;
42
- maxOutboundStreams;
43
- maxPushIncomingStreams;
44
- maxPushOutgoingStreams;
45
- maxIdentifyMessageSize;
46
- maxObservedAddresses;
47
- events;
48
- runOnTransientConnection;
49
- #log;
50
- constructor(components, init) {
51
- this.started = false;
52
- this.peerId = components.peerId;
53
- this.peerStore = components.peerStore;
54
- this.registrar = components.registrar;
55
- this.addressManager = components.addressManager;
56
- this.connectionManager = components.connectionManager;
57
- this.events = components.events;
58
- this.#log = components.logger.forComponent('libp2p:identify');
59
- this.identifyProtocolStr = `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`;
60
- this.identifyPushProtocolStr = `/${init.protocolPrefix ?? defaultValues.protocolPrefix}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION}`;
61
- this.timeout = init.timeout ?? defaultValues.timeout;
62
- this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;
63
- this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;
64
- this.maxPushIncomingStreams = init.maxPushIncomingStreams ?? defaultValues.maxPushIncomingStreams;
65
- this.maxPushOutgoingStreams = init.maxPushOutgoingStreams ?? defaultValues.maxPushOutgoingStreams;
66
- this.maxIdentifyMessageSize = init.maxIdentifyMessageSize ?? defaultValues.maxIdentifyMessageSize;
67
- this.maxObservedAddresses = init.maxObservedAddresses ?? defaultValues.maxObservedAddresses;
68
- this.runOnTransientConnection = init.runOnTransientConnection ?? defaultValues.runOnTransientConnection;
69
- // Store self host metadata
70
- this.host = {
71
- protocolVersion: `${init.protocolPrefix ?? defaultValues.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,
72
- agentVersion: init.agentVersion ?? defaultValues.agentVersion
73
- };
74
- if (init.runOnConnectionOpen ?? defaultValues.runOnConnectionOpen) {
75
- // When a new connection happens, trigger identify
76
- components.events.addEventListener('connection:open', (evt) => {
77
- const connection = evt.detail;
78
- this.identify(connection).catch(err => { this.#log.error('error during identify trigged by connection:open', err); });
79
- });
80
- }
81
- // When self peer record changes, trigger identify-push
82
- components.events.addEventListener('self:peer:update', (evt) => {
83
- void this.push().catch(err => { this.#log.error(err); });
84
- });
85
- // Append user agent version to default AGENT_VERSION depending on the environment
86
- if (this.host.agentVersion === AGENT_VERSION) {
87
- if (isNode || isElectronMain) {
88
- this.host.agentVersion += ` UserAgent=${globalThis.process.version}`;
89
- }
90
- else if (isBrowser || isWebWorker || isElectronRenderer || isReactNative) {
91
- this.host.agentVersion += ` UserAgent=${globalThis.navigator.userAgent}`;
92
- }
93
- }
94
- }
95
- isStarted() {
96
- return this.started;
97
- }
98
- async start() {
99
- if (this.started) {
100
- return;
101
- }
102
- await this.peerStore.merge(this.peerId, {
103
- metadata: {
104
- AgentVersion: uint8ArrayFromString(this.host.agentVersion),
105
- ProtocolVersion: uint8ArrayFromString(this.host.protocolVersion)
106
- }
107
- });
108
- await this.registrar.handle(this.identifyProtocolStr, (data) => {
109
- void this._handleIdentify(data).catch(err => {
110
- this.#log.error(err);
111
- });
112
- }, {
113
- maxInboundStreams: this.maxInboundStreams,
114
- maxOutboundStreams: this.maxOutboundStreams,
115
- runOnTransientConnection: this.runOnTransientConnection
116
- });
117
- await this.registrar.handle(this.identifyPushProtocolStr, (data) => {
118
- void this._handlePush(data).catch(err => {
119
- this.#log.error(err);
120
- });
121
- }, {
122
- maxInboundStreams: this.maxPushIncomingStreams,
123
- maxOutboundStreams: this.maxPushOutgoingStreams,
124
- runOnTransientConnection: this.runOnTransientConnection
125
- });
126
- this.started = true;
127
- }
128
- async stop() {
129
- await this.registrar.unhandle(this.identifyProtocolStr);
130
- await this.registrar.unhandle(this.identifyPushProtocolStr);
131
- this.started = false;
132
- }
133
- /**
134
- * Send an Identify Push update to the list of connections
135
- */
136
- async pushToConnections(connections) {
137
- const listenAddresses = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));
138
- const peerRecord = new PeerRecord({
139
- peerId: this.peerId,
140
- multiaddrs: listenAddresses
141
- });
142
- const signedPeerRecord = await RecordEnvelope.seal(peerRecord, this.peerId);
143
- const supportedProtocols = this.registrar.getProtocols();
144
- const peer = await this.peerStore.get(this.peerId);
145
- const agentVersion = uint8ArrayToString(peer.metadata.get('AgentVersion') ?? uint8ArrayFromString(this.host.agentVersion));
146
- const protocolVersion = uint8ArrayToString(peer.metadata.get('ProtocolVersion') ?? uint8ArrayFromString(this.host.protocolVersion));
147
- const pushes = connections.map(async (connection) => {
148
- let stream;
149
- const signal = AbortSignal.timeout(this.timeout);
150
- setMaxListeners(Infinity, signal);
151
- try {
152
- stream = await connection.newStream([this.identifyPushProtocolStr], {
153
- signal,
154
- runOnTransientConnection: this.runOnTransientConnection
155
- });
156
- const pb = pbStream(stream, {
157
- maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE
158
- }).pb(Identify);
159
- await pb.write({
160
- listenAddrs: listenAddresses.map(ma => ma.bytes),
161
- signedPeerRecord: signedPeerRecord.marshal(),
162
- protocols: supportedProtocols,
163
- agentVersion,
164
- protocolVersion
165
- }, {
166
- signal
167
- });
168
- await stream.close({
169
- signal
170
- });
171
- }
172
- catch (err) {
173
- // Just log errors
174
- this.#log.error('could not push identify update to peer', err);
175
- stream?.abort(err);
176
- }
177
- });
178
- await Promise.all(pushes);
179
- }
180
- /**
181
- * Calls `push` on all peer connections
182
- */
183
- async push() {
184
- // Do not try to push if we are not running
185
- if (!this.isStarted()) {
186
- return;
187
- }
188
- const connections = [];
189
- await Promise.all(this.connectionManager.getConnections().map(async (conn) => {
190
- try {
191
- const peer = await this.peerStore.get(conn.remotePeer);
192
- if (!peer.protocols.includes(this.identifyPushProtocolStr)) {
193
- return;
194
- }
195
- connections.push(conn);
196
- }
197
- catch (err) {
198
- if (err.code !== codes.ERR_NOT_FOUND) {
199
- throw err;
200
- }
201
- }
202
- }));
203
- await this.pushToConnections(connections);
204
- }
205
- async _identify(connection, options = {}) {
206
- let stream;
207
- if (options.signal == null) {
208
- const signal = AbortSignal.timeout(this.timeout);
209
- setMaxListeners(Infinity, signal);
210
- options = {
211
- ...options,
212
- signal
213
- };
214
- }
215
- try {
216
- stream = await connection.newStream([this.identifyProtocolStr], {
217
- ...options,
218
- runOnTransientConnection: this.runOnTransientConnection
219
- });
220
- const pb = pbStream(stream, {
221
- maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE
222
- }).pb(Identify);
223
- const message = await pb.read(options);
224
- await stream.close(options);
225
- return message;
226
- }
227
- catch (err) {
228
- this.#log.error('error while reading identify message', err);
229
- stream?.abort(err);
230
- throw err;
231
- }
232
- }
233
- async identify(connection, options = {}) {
234
- const message = await this._identify(connection, options);
235
- const { publicKey, protocols, observedAddr } = message;
236
- if (publicKey == null) {
237
- throw new CodeError('public key was missing from identify message', codes.ERR_MISSING_PUBLIC_KEY);
238
- }
239
- const id = await peerIdFromKeys(publicKey);
240
- if (!connection.remotePeer.equals(id)) {
241
- throw new CodeError('identified peer does not match the expected peer', codes.ERR_INVALID_PEER);
242
- }
243
- if (this.peerId.equals(id)) {
244
- throw new CodeError('identified peer is our own peer id?', codes.ERR_INVALID_PEER);
245
- }
246
- // Get the observedAddr if there is one
247
- const cleanObservedAddr = getCleanMultiaddr(observedAddr);
248
- this.#log('identify completed for peer %p and protocols %o', id, protocols);
249
- this.#log('our observed address is %a', cleanObservedAddr);
250
- if (cleanObservedAddr != null &&
251
- this.addressManager.getObservedAddrs().length < (this.maxObservedAddresses ?? Infinity)) {
252
- this.#log('storing our observed address %a', cleanObservedAddr);
253
- this.addressManager.addObservedAddr(cleanObservedAddr);
254
- }
255
- return this.#consumeIdentifyMessage(connection, message);
256
- }
257
- /**
258
- * Sends the `Identify` response with the Signed Peer Record
259
- * to the requesting peer over the given `connection`
260
- */
261
- async _handleIdentify(data) {
262
- const { connection, stream } = data;
263
- const signal = AbortSignal.timeout(this.timeout);
264
- setMaxListeners(Infinity, signal);
265
- try {
266
- const publicKey = this.peerId.publicKey ?? new Uint8Array(0);
267
- const peerData = await this.peerStore.get(this.peerId);
268
- const multiaddrs = this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code));
269
- let signedPeerRecord = peerData.peerRecordEnvelope;
270
- if (multiaddrs.length > 0 && signedPeerRecord == null) {
271
- const peerRecord = new PeerRecord({
272
- peerId: this.peerId,
273
- multiaddrs
274
- });
275
- const envelope = await RecordEnvelope.seal(peerRecord, this.peerId);
276
- signedPeerRecord = envelope.marshal().subarray();
277
- }
278
- let observedAddr = connection.remoteAddr.bytes;
279
- if (!IP_OR_DOMAIN.matches(connection.remoteAddr)) {
280
- observedAddr = undefined;
281
- }
282
- const pb = pbStream(stream).pb(Identify);
283
- await pb.write({
284
- protocolVersion: this.host.protocolVersion,
285
- agentVersion: this.host.agentVersion,
286
- publicKey,
287
- listenAddrs: multiaddrs.map(addr => addr.bytes),
288
- signedPeerRecord,
289
- observedAddr,
290
- protocols: peerData.protocols
291
- }, {
292
- signal
293
- });
294
- await stream.close({
295
- signal
296
- });
297
- }
298
- catch (err) {
299
- this.#log.error('could not respond to identify request', err);
300
- stream.abort(err);
301
- }
302
- }
303
- /**
304
- * Reads the Identify Push message from the given `connection`
305
- */
306
- async _handlePush(data) {
307
- const { connection, stream } = data;
308
- try {
309
- if (this.peerId.equals(connection.remotePeer)) {
310
- throw new Error('received push from ourselves?');
311
- }
312
- const options = {
313
- signal: AbortSignal.timeout(this.timeout)
314
- };
315
- const pb = pbStream(stream, {
316
- maxDataLength: this.maxIdentifyMessageSize ?? MAX_IDENTIFY_MESSAGE_SIZE
317
- }).pb(Identify);
318
- const message = await pb.read(options);
319
- await stream.close(options);
320
- await this.#consumeIdentifyMessage(connection, message);
321
- }
322
- catch (err) {
323
- this.#log.error('received invalid message', err);
324
- stream.abort(err);
325
- return;
326
- }
327
- this.#log('handled push from %p', connection.remotePeer);
328
- }
329
- async #consumeIdentifyMessage(connection, message) {
330
- this.#log('received identify from %p', connection.remotePeer);
331
- if (message == null) {
332
- throw new CodeError('message was null or undefined', 'ERR_INVALID_MESSAGE');
333
- }
334
- const peer = {};
335
- if (message.listenAddrs.length > 0) {
336
- peer.addresses = message.listenAddrs.map(buf => ({
337
- isCertified: false,
338
- multiaddr: multiaddr(buf)
339
- }));
340
- }
341
- if (message.protocols.length > 0) {
342
- peer.protocols = message.protocols;
343
- }
344
- if (message.publicKey != null) {
345
- peer.publicKey = message.publicKey;
346
- const peerId = await peerIdFromKeys(message.publicKey);
347
- if (!peerId.equals(connection.remotePeer)) {
348
- throw new CodeError('public key did not match remote PeerId', 'ERR_INVALID_PUBLIC_KEY');
349
- }
350
- }
351
- let output;
352
- // if the peer record has been sent, prefer the addresses in the record as they are signed by the remote peer
353
- if (message.signedPeerRecord != null) {
354
- this.#log('received signedPeerRecord in push from %p', connection.remotePeer);
355
- let peerRecordEnvelope = message.signedPeerRecord;
356
- const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN);
357
- let peerRecord = PeerRecord.createFromProtobuf(envelope.payload);
358
- // Verify peerId
359
- if (!peerRecord.peerId.equals(envelope.peerId)) {
360
- throw new CodeError('signing key does not match PeerId in the PeerRecord', 'ERR_INVALID_SIGNING_KEY');
361
- }
362
- // Make sure remote peer is the one sending the record
363
- if (!connection.remotePeer.equals(peerRecord.peerId)) {
364
- throw new CodeError('signing key does not match remote PeerId', 'ERR_INVALID_PEER_RECORD_KEY');
365
- }
366
- let existingPeer;
367
- try {
368
- existingPeer = await this.peerStore.get(peerRecord.peerId);
369
- }
370
- catch (err) {
371
- if (err.code !== 'ERR_NOT_FOUND') {
372
- throw err;
373
- }
374
- }
375
- if (existingPeer != null) {
376
- // don't lose any existing metadata
377
- peer.metadata = existingPeer.metadata;
378
- // if we have previously received a signed record for this peer, compare it to the incoming one
379
- if (existingPeer.peerRecordEnvelope != null) {
380
- const storedEnvelope = await RecordEnvelope.createFromProtobuf(existingPeer.peerRecordEnvelope);
381
- const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);
382
- // ensure seq is greater than, or equal to, the last received
383
- if (storedRecord.seqNumber >= peerRecord.seqNumber) {
384
- this.#log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);
385
- peerRecord = storedRecord;
386
- peerRecordEnvelope = existingPeer.peerRecordEnvelope;
387
- }
388
- }
389
- }
390
- // store the signed record for next time
391
- peer.peerRecordEnvelope = peerRecordEnvelope;
392
- // override the stored addresses with the signed multiaddrs
393
- peer.addresses = peerRecord.multiaddrs.map(multiaddr => ({
394
- isCertified: true,
395
- multiaddr
396
- }));
397
- output = {
398
- seq: peerRecord.seqNumber,
399
- addresses: peerRecord.multiaddrs
400
- };
401
- }
402
- else {
403
- this.#log('%p did not send a signed peer record', connection.remotePeer);
404
- }
405
- this.#log('patching %p with', connection.remotePeer, peer);
406
- await this.peerStore.patch(connection.remotePeer, peer);
407
- if (message.agentVersion != null || message.protocolVersion != null) {
408
- const metadata = {};
409
- if (message.agentVersion != null) {
410
- metadata.AgentVersion = uint8ArrayFromString(message.agentVersion);
411
- }
412
- if (message.protocolVersion != null) {
413
- metadata.ProtocolVersion = uint8ArrayFromString(message.protocolVersion);
414
- }
415
- this.#log('merging %p metadata', connection.remotePeer, metadata);
416
- await this.peerStore.merge(connection.remotePeer, {
417
- metadata
418
- });
419
- }
420
- const result = {
421
- peerId: connection.remotePeer,
422
- protocolVersion: message.protocolVersion,
423
- agentVersion: message.agentVersion,
424
- publicKey: message.publicKey,
425
- listenAddrs: message.listenAddrs.map(buf => multiaddr(buf)),
426
- observedAddr: message.observedAddr == null ? undefined : multiaddr(message.observedAddr),
427
- protocols: message.protocols,
428
- signedPeerRecord: output,
429
- connection
430
- };
431
- this.events.safeDispatchEvent('peer:identify', { detail: result });
432
- return result;
433
- }
434
- }
435
- /**
436
- * Takes the `addr` and converts it to a Multiaddr if possible
437
- */
438
- function getCleanMultiaddr(addr) {
439
- if (addr != null && addr.length > 0) {
440
- try {
441
- return multiaddr(addr);
442
- }
443
- catch {
444
- }
445
- }
446
- }
447
- //# sourceMappingURL=identify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../src/identify/identify.ts"],"names":[],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- import { Identify } from './pb/message.js';
2
- import type { AbortOptions, IdentifyResult, Libp2pEvents, ComponentLogger } from '@libp2p/interface';
3
- import type { TypedEventTarget } from '@libp2p/interface/events';
4
- import type { PeerId } from '@libp2p/interface/peer-id';
5
- import type { PeerStore } from '@libp2p/interface/peer-store';
6
- import type { Connection } from '@libp2p/interface/src/connection/index.js';
7
- import type { AddressManager } from '@libp2p/interface-internal/address-manager';
8
- import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager';
9
- import type { Registrar } from '@libp2p/interface-internal/registrar';
10
- export interface IdentifyServiceInit {
11
- /**
12
- * The prefix to use for the protocol (default: 'ipfs')
13
- */
14
- protocolPrefix?: string;
15
- /**
16
- * What details we should send as part of an identify message
17
- */
18
- agentVersion?: string;
19
- /**
20
- * How long we should wait for a remote peer to send their identify response
21
- */
22
- timeout?: number;
23
- /**
24
- * Identify responses larger than this in bytes will be rejected (default: 8192)
25
- */
26
- maxIdentifyMessageSize?: number;
27
- maxInboundStreams?: number;
28
- maxOutboundStreams?: number;
29
- maxPushIncomingStreams?: number;
30
- maxPushOutgoingStreams?: number;
31
- maxObservedAddresses?: number;
32
- /**
33
- * Whether to automatically dial identify on newly opened connections (default: true)
34
- */
35
- runOnConnectionOpen?: boolean;
36
- /**
37
- * Whether to run on connections with data or duration limits (default: true)
38
- */
39
- runOnTransientConnection?: boolean;
40
- }
41
- export interface IdentifyServiceComponents {
42
- peerId: PeerId;
43
- peerStore: PeerStore;
44
- connectionManager: ConnectionManager;
45
- registrar: Registrar;
46
- addressManager: AddressManager;
47
- events: TypedEventTarget<Libp2pEvents>;
48
- logger: ComponentLogger;
49
- }
50
- /**
51
- * The protocols the IdentifyService supports
52
- */
53
- export declare const multicodecs: {
54
- IDENTIFY: string;
55
- IDENTIFY_PUSH: string;
56
- };
57
- export declare const Message: {
58
- Identify: typeof Identify;
59
- };
60
- export interface IdentifyService {
61
- /**
62
- * due to the default limits on inbound/outbound streams for this protocol,
63
- * invoking this method when runOnConnectionOpen is true can lead to unpredictable results
64
- * as streams may be closed by the local or the remote node.
65
- * Please use with caution. If you find yourself needing to call this method to discover other peers that support your protocol,
66
- * you may be better off configuring a topology to be notified instead.
67
- */
68
- identify(connection: Connection, options?: AbortOptions): Promise<IdentifyResult>;
69
- push(): Promise<void>;
70
- }
71
- export declare function identifyService(init?: IdentifyServiceInit): (components: IdentifyServiceComponents) => IdentifyService;
72
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identify/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAA;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAErE,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;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC;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,gBAAgB,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;CAGvB,CAAA;AAED,eAAO,MAAM,OAAO;;CAAe,CAAA;AAEnC,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAEjF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,wBAAgB,eAAe,CAAE,IAAI,GAAE,mBAAwB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,eAAe,CAE3H"}
@@ -1,15 +0,0 @@
1
- import { MULTICODEC_IDENTIFY, MULTICODEC_IDENTIFY_PUSH } from './consts.js';
2
- import { DefaultIdentifyService } from './identify.js';
3
- import { Identify } from './pb/message.js';
4
- /**
5
- * The protocols the IdentifyService supports
6
- */
7
- export const multicodecs = {
8
- IDENTIFY: MULTICODEC_IDENTIFY,
9
- IDENTIFY_PUSH: MULTICODEC_IDENTIFY_PUSH
10
- };
11
- export const Message = { Identify };
12
- export function identifyService(init = {}) {
13
- return (components) => new DefaultIdentifyService(components, init);
14
- }
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identify/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AA2D1C;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,wBAAwB;CACxC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,CAAA;AAenC,MAAM,UAAU,eAAe,CAAE,OAA4B,EAAE;IAC7D,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACrE,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { Codec } from 'protons-runtime';
2
- import type { Uint8ArrayList } from 'uint8arraylist';
3
- export interface Identify {
4
- protocolVersion?: string;
5
- agentVersion?: string;
6
- publicKey?: Uint8Array;
7
- listenAddrs: Uint8Array[];
8
- observedAddr?: Uint8Array;
9
- protocols: string[];
10
- signedPeerRecord?: Uint8Array;
11
- }
12
- export declare namespace Identify {
13
- const codec: () => Codec<Identify>;
14
- const encode: (obj: Partial<Identify>) => Uint8Array;
15
- const decode: (buf: Uint8Array | Uint8ArrayList) => Identify;
16
- }
17
- //# sourceMappingURL=message.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../src/identify/pb/message.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,QAAQ;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,UAAU,CAAA;IACzB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,gBAAgB,CAAC,EAAE,UAAU,CAAA;CAC9B;AAED,yBAAiB,QAAQ,CAAC;IAGjB,MAAM,KAAK,QAAO,MAAM,QAAQ,CA6FtC,CAAA;IAEM,MAAM,MAAM,QAAS,QAAQ,QAAQ,CAAC,KAAG,UAE/C,CAAA;IAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,QAEzD,CAAA;CACF"}