libp2p 0.46.21 → 1.0.0-551622a96

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 +51 -47
  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 -18
  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 +31 -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 +37 -106
  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 -36
  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,539 +0,0 @@
1
- /* eslint-disable import/export */
2
- /* eslint-disable complexity */
3
- /* eslint-disable @typescript-eslint/no-namespace */
4
- /* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */
5
- /* eslint-disable @typescript-eslint/no-empty-interface */
6
-
7
- import { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime'
8
- import type { Codec } from 'protons-runtime'
9
- import type { Uint8ArrayList } from 'uint8arraylist'
10
-
11
- export interface HopMessage {
12
- type?: HopMessage.Type
13
- peer?: Peer
14
- reservation?: Reservation
15
- limit?: Limit
16
- status?: Status
17
- }
18
-
19
- export namespace HopMessage {
20
- export enum Type {
21
- RESERVE = 'RESERVE',
22
- CONNECT = 'CONNECT',
23
- STATUS = 'STATUS'
24
- }
25
-
26
- enum __TypeValues {
27
- RESERVE = 0,
28
- CONNECT = 1,
29
- STATUS = 2
30
- }
31
-
32
- export namespace Type {
33
- export const codec = (): Codec<Type> => {
34
- return enumeration<Type>(__TypeValues)
35
- }
36
- }
37
-
38
- let _codec: Codec<HopMessage>
39
-
40
- export const codec = (): Codec<HopMessage> => {
41
- if (_codec == null) {
42
- _codec = message<HopMessage>((obj, w, opts = {}) => {
43
- if (opts.lengthDelimited !== false) {
44
- w.fork()
45
- }
46
-
47
- if (obj.type != null) {
48
- w.uint32(8)
49
- HopMessage.Type.codec().encode(obj.type, w)
50
- }
51
-
52
- if (obj.peer != null) {
53
- w.uint32(18)
54
- Peer.codec().encode(obj.peer, w)
55
- }
56
-
57
- if (obj.reservation != null) {
58
- w.uint32(26)
59
- Reservation.codec().encode(obj.reservation, w)
60
- }
61
-
62
- if (obj.limit != null) {
63
- w.uint32(34)
64
- Limit.codec().encode(obj.limit, w)
65
- }
66
-
67
- if (obj.status != null) {
68
- w.uint32(40)
69
- Status.codec().encode(obj.status, w)
70
- }
71
-
72
- if (opts.lengthDelimited !== false) {
73
- w.ldelim()
74
- }
75
- }, (reader, length) => {
76
- const obj: any = {}
77
-
78
- const end = length == null ? reader.len : reader.pos + length
79
-
80
- while (reader.pos < end) {
81
- const tag = reader.uint32()
82
-
83
- switch (tag >>> 3) {
84
- case 1:
85
- obj.type = HopMessage.Type.codec().decode(reader)
86
- break
87
- case 2:
88
- obj.peer = Peer.codec().decode(reader, reader.uint32())
89
- break
90
- case 3:
91
- obj.reservation = Reservation.codec().decode(reader, reader.uint32())
92
- break
93
- case 4:
94
- obj.limit = Limit.codec().decode(reader, reader.uint32())
95
- break
96
- case 5:
97
- obj.status = Status.codec().decode(reader)
98
- break
99
- default:
100
- reader.skipType(tag & 7)
101
- break
102
- }
103
- }
104
-
105
- return obj
106
- })
107
- }
108
-
109
- return _codec
110
- }
111
-
112
- export const encode = (obj: Partial<HopMessage>): Uint8Array => {
113
- return encodeMessage(obj, HopMessage.codec())
114
- }
115
-
116
- export const decode = (buf: Uint8Array | Uint8ArrayList): HopMessage => {
117
- return decodeMessage(buf, HopMessage.codec())
118
- }
119
- }
120
-
121
- export interface StopMessage {
122
- type?: StopMessage.Type
123
- peer?: Peer
124
- limit?: Limit
125
- status?: Status
126
- }
127
-
128
- export namespace StopMessage {
129
- export enum Type {
130
- CONNECT = 'CONNECT',
131
- STATUS = 'STATUS'
132
- }
133
-
134
- enum __TypeValues {
135
- CONNECT = 0,
136
- STATUS = 1
137
- }
138
-
139
- export namespace Type {
140
- export const codec = (): Codec<Type> => {
141
- return enumeration<Type>(__TypeValues)
142
- }
143
- }
144
-
145
- let _codec: Codec<StopMessage>
146
-
147
- export const codec = (): Codec<StopMessage> => {
148
- if (_codec == null) {
149
- _codec = message<StopMessage>((obj, w, opts = {}) => {
150
- if (opts.lengthDelimited !== false) {
151
- w.fork()
152
- }
153
-
154
- if (obj.type != null) {
155
- w.uint32(8)
156
- StopMessage.Type.codec().encode(obj.type, w)
157
- }
158
-
159
- if (obj.peer != null) {
160
- w.uint32(18)
161
- Peer.codec().encode(obj.peer, w)
162
- }
163
-
164
- if (obj.limit != null) {
165
- w.uint32(26)
166
- Limit.codec().encode(obj.limit, w)
167
- }
168
-
169
- if (obj.status != null) {
170
- w.uint32(32)
171
- Status.codec().encode(obj.status, w)
172
- }
173
-
174
- if (opts.lengthDelimited !== false) {
175
- w.ldelim()
176
- }
177
- }, (reader, length) => {
178
- const obj: any = {}
179
-
180
- const end = length == null ? reader.len : reader.pos + length
181
-
182
- while (reader.pos < end) {
183
- const tag = reader.uint32()
184
-
185
- switch (tag >>> 3) {
186
- case 1:
187
- obj.type = StopMessage.Type.codec().decode(reader)
188
- break
189
- case 2:
190
- obj.peer = Peer.codec().decode(reader, reader.uint32())
191
- break
192
- case 3:
193
- obj.limit = Limit.codec().decode(reader, reader.uint32())
194
- break
195
- case 4:
196
- obj.status = Status.codec().decode(reader)
197
- break
198
- default:
199
- reader.skipType(tag & 7)
200
- break
201
- }
202
- }
203
-
204
- return obj
205
- })
206
- }
207
-
208
- return _codec
209
- }
210
-
211
- export const encode = (obj: Partial<StopMessage>): Uint8Array => {
212
- return encodeMessage(obj, StopMessage.codec())
213
- }
214
-
215
- export const decode = (buf: Uint8Array | Uint8ArrayList): StopMessage => {
216
- return decodeMessage(buf, StopMessage.codec())
217
- }
218
- }
219
-
220
- export interface Peer {
221
- id: Uint8Array
222
- addrs: Uint8Array[]
223
- }
224
-
225
- export namespace Peer {
226
- let _codec: Codec<Peer>
227
-
228
- export const codec = (): Codec<Peer> => {
229
- if (_codec == null) {
230
- _codec = message<Peer>((obj, w, opts = {}) => {
231
- if (opts.lengthDelimited !== false) {
232
- w.fork()
233
- }
234
-
235
- if ((obj.id != null && obj.id.byteLength > 0)) {
236
- w.uint32(10)
237
- w.bytes(obj.id)
238
- }
239
-
240
- if (obj.addrs != null) {
241
- for (const value of obj.addrs) {
242
- w.uint32(18)
243
- w.bytes(value)
244
- }
245
- }
246
-
247
- if (opts.lengthDelimited !== false) {
248
- w.ldelim()
249
- }
250
- }, (reader, length) => {
251
- const obj: any = {
252
- id: new Uint8Array(0),
253
- addrs: []
254
- }
255
-
256
- const end = length == null ? reader.len : reader.pos + length
257
-
258
- while (reader.pos < end) {
259
- const tag = reader.uint32()
260
-
261
- switch (tag >>> 3) {
262
- case 1:
263
- obj.id = reader.bytes()
264
- break
265
- case 2:
266
- obj.addrs.push(reader.bytes())
267
- break
268
- default:
269
- reader.skipType(tag & 7)
270
- break
271
- }
272
- }
273
-
274
- return obj
275
- })
276
- }
277
-
278
- return _codec
279
- }
280
-
281
- export const encode = (obj: Partial<Peer>): Uint8Array => {
282
- return encodeMessage(obj, Peer.codec())
283
- }
284
-
285
- export const decode = (buf: Uint8Array | Uint8ArrayList): Peer => {
286
- return decodeMessage(buf, Peer.codec())
287
- }
288
- }
289
-
290
- export interface Reservation {
291
- expire: bigint
292
- addrs: Uint8Array[]
293
- voucher?: Uint8Array
294
- }
295
-
296
- export namespace Reservation {
297
- let _codec: Codec<Reservation>
298
-
299
- export const codec = (): Codec<Reservation> => {
300
- if (_codec == null) {
301
- _codec = message<Reservation>((obj, w, opts = {}) => {
302
- if (opts.lengthDelimited !== false) {
303
- w.fork()
304
- }
305
-
306
- if ((obj.expire != null && obj.expire !== 0n)) {
307
- w.uint32(8)
308
- w.uint64(obj.expire)
309
- }
310
-
311
- if (obj.addrs != null) {
312
- for (const value of obj.addrs) {
313
- w.uint32(18)
314
- w.bytes(value)
315
- }
316
- }
317
-
318
- if (obj.voucher != null) {
319
- w.uint32(26)
320
- w.bytes(obj.voucher)
321
- }
322
-
323
- if (opts.lengthDelimited !== false) {
324
- w.ldelim()
325
- }
326
- }, (reader, length) => {
327
- const obj: any = {
328
- expire: 0n,
329
- addrs: []
330
- }
331
-
332
- const end = length == null ? reader.len : reader.pos + length
333
-
334
- while (reader.pos < end) {
335
- const tag = reader.uint32()
336
-
337
- switch (tag >>> 3) {
338
- case 1:
339
- obj.expire = reader.uint64()
340
- break
341
- case 2:
342
- obj.addrs.push(reader.bytes())
343
- break
344
- case 3:
345
- obj.voucher = reader.bytes()
346
- break
347
- default:
348
- reader.skipType(tag & 7)
349
- break
350
- }
351
- }
352
-
353
- return obj
354
- })
355
- }
356
-
357
- return _codec
358
- }
359
-
360
- export const encode = (obj: Partial<Reservation>): Uint8Array => {
361
- return encodeMessage(obj, Reservation.codec())
362
- }
363
-
364
- export const decode = (buf: Uint8Array | Uint8ArrayList): Reservation => {
365
- return decodeMessage(buf, Reservation.codec())
366
- }
367
- }
368
-
369
- export interface Limit {
370
- duration?: number
371
- data?: bigint
372
- }
373
-
374
- export namespace Limit {
375
- let _codec: Codec<Limit>
376
-
377
- export const codec = (): Codec<Limit> => {
378
- if (_codec == null) {
379
- _codec = message<Limit>((obj, w, opts = {}) => {
380
- if (opts.lengthDelimited !== false) {
381
- w.fork()
382
- }
383
-
384
- if (obj.duration != null) {
385
- w.uint32(8)
386
- w.uint32(obj.duration)
387
- }
388
-
389
- if (obj.data != null) {
390
- w.uint32(16)
391
- w.uint64(obj.data)
392
- }
393
-
394
- if (opts.lengthDelimited !== false) {
395
- w.ldelim()
396
- }
397
- }, (reader, length) => {
398
- const obj: any = {}
399
-
400
- const end = length == null ? reader.len : reader.pos + length
401
-
402
- while (reader.pos < end) {
403
- const tag = reader.uint32()
404
-
405
- switch (tag >>> 3) {
406
- case 1:
407
- obj.duration = reader.uint32()
408
- break
409
- case 2:
410
- obj.data = reader.uint64()
411
- break
412
- default:
413
- reader.skipType(tag & 7)
414
- break
415
- }
416
- }
417
-
418
- return obj
419
- })
420
- }
421
-
422
- return _codec
423
- }
424
-
425
- export const encode = (obj: Partial<Limit>): Uint8Array => {
426
- return encodeMessage(obj, Limit.codec())
427
- }
428
-
429
- export const decode = (buf: Uint8Array | Uint8ArrayList): Limit => {
430
- return decodeMessage(buf, Limit.codec())
431
- }
432
- }
433
-
434
- export enum Status {
435
- UNUSED = 'UNUSED',
436
- OK = 'OK',
437
- RESERVATION_REFUSED = 'RESERVATION_REFUSED',
438
- RESOURCE_LIMIT_EXCEEDED = 'RESOURCE_LIMIT_EXCEEDED',
439
- PERMISSION_DENIED = 'PERMISSION_DENIED',
440
- CONNECTION_FAILED = 'CONNECTION_FAILED',
441
- NO_RESERVATION = 'NO_RESERVATION',
442
- MALFORMED_MESSAGE = 'MALFORMED_MESSAGE',
443
- UNEXPECTED_MESSAGE = 'UNEXPECTED_MESSAGE'
444
- }
445
-
446
- enum __StatusValues {
447
- UNUSED = 0,
448
- OK = 100,
449
- RESERVATION_REFUSED = 200,
450
- RESOURCE_LIMIT_EXCEEDED = 201,
451
- PERMISSION_DENIED = 202,
452
- CONNECTION_FAILED = 203,
453
- NO_RESERVATION = 204,
454
- MALFORMED_MESSAGE = 400,
455
- UNEXPECTED_MESSAGE = 401
456
- }
457
-
458
- export namespace Status {
459
- export const codec = (): Codec<Status> => {
460
- return enumeration<Status>(__StatusValues)
461
- }
462
- }
463
- export interface ReservationVoucher {
464
- relay: Uint8Array
465
- peer: Uint8Array
466
- expiration: bigint
467
- }
468
-
469
- export namespace ReservationVoucher {
470
- let _codec: Codec<ReservationVoucher>
471
-
472
- export const codec = (): Codec<ReservationVoucher> => {
473
- if (_codec == null) {
474
- _codec = message<ReservationVoucher>((obj, w, opts = {}) => {
475
- if (opts.lengthDelimited !== false) {
476
- w.fork()
477
- }
478
-
479
- if ((obj.relay != null && obj.relay.byteLength > 0)) {
480
- w.uint32(10)
481
- w.bytes(obj.relay)
482
- }
483
-
484
- if ((obj.peer != null && obj.peer.byteLength > 0)) {
485
- w.uint32(18)
486
- w.bytes(obj.peer)
487
- }
488
-
489
- if ((obj.expiration != null && obj.expiration !== 0n)) {
490
- w.uint32(24)
491
- w.uint64(obj.expiration)
492
- }
493
-
494
- if (opts.lengthDelimited !== false) {
495
- w.ldelim()
496
- }
497
- }, (reader, length) => {
498
- const obj: any = {
499
- relay: new Uint8Array(0),
500
- peer: new Uint8Array(0),
501
- expiration: 0n
502
- }
503
-
504
- const end = length == null ? reader.len : reader.pos + length
505
-
506
- while (reader.pos < end) {
507
- const tag = reader.uint32()
508
-
509
- switch (tag >>> 3) {
510
- case 1:
511
- obj.relay = reader.bytes()
512
- break
513
- case 2:
514
- obj.peer = reader.bytes()
515
- break
516
- case 3:
517
- obj.expiration = reader.uint64()
518
- break
519
- default:
520
- reader.skipType(tag & 7)
521
- break
522
- }
523
- }
524
-
525
- return obj
526
- })
527
- }
528
-
529
- return _codec
530
- }
531
-
532
- export const encode = (obj: Partial<ReservationVoucher>): Uint8Array => {
533
- return encodeMessage(obj, ReservationVoucher.codec())
534
- }
535
-
536
- export const decode = (buf: Uint8Array | Uint8ArrayList): ReservationVoucher => {
537
- return decodeMessage(buf, ReservationVoucher.codec())
538
- }
539
- }
@@ -1,108 +0,0 @@
1
- import { TypedEventEmitter } from '@libp2p/interface/events'
2
- import { logger } from '@libp2p/logger'
3
- import pRetry from 'p-retry'
4
- import { codes } from '../../errors.js'
5
- import {
6
- DEFAULT_ADVERT_BOOT_DELAY,
7
- RELAY_RENDEZVOUS_NS
8
- } from '../constants.js'
9
- import { namespaceToCid } from '../utils.js'
10
- import type { ContentRouting } from '@libp2p/interface/content-routing'
11
- import type { Startable } from '@libp2p/interface/startable'
12
-
13
- const log = logger('libp2p:circuit-relay:advert-service')
14
-
15
- export interface AdvertServiceInit {
16
- /**
17
- * How long to wait after startup to begin advertising the service
18
- * - if some configured content routers take a while to warm up (for
19
- * example, the DHT needs some peers to be able to publish) this
20
- * value should be high enough that they will have warmed up
21
- */
22
- bootDelay?: number
23
- }
24
-
25
- export interface AdvertServiceComponents {
26
- contentRouting: ContentRouting
27
- }
28
-
29
- export interface AdvertServiceEvents {
30
- 'advert:success': CustomEvent<unknown>
31
- 'advert:error': CustomEvent<Error>
32
- }
33
-
34
- export class AdvertService extends TypedEventEmitter<AdvertServiceEvents> implements Startable {
35
- private readonly contentRouting: ContentRouting
36
- private timeout?: any
37
- private started: boolean
38
- private readonly bootDelay: number
39
-
40
- /**
41
- * Creates an instance of Relay
42
- */
43
- constructor (components: AdvertServiceComponents, init?: AdvertServiceInit) {
44
- super()
45
-
46
- this.contentRouting = components.contentRouting
47
- this.bootDelay = init?.bootDelay ?? DEFAULT_ADVERT_BOOT_DELAY
48
- this.started = false
49
- }
50
-
51
- isStarted (): boolean {
52
- return this.started
53
- }
54
-
55
- /**
56
- * Start Relay service
57
- */
58
- start (): void {
59
- if (this.started) {
60
- return
61
- }
62
-
63
- // Advertise service if HOP enabled and advertising enabled
64
- this.timeout = setTimeout(() => {
65
- this._advertiseService().catch(err => {
66
- log.error('could not advertise service', err)
67
- })
68
- }, this.bootDelay)
69
-
70
- this.started = true
71
- }
72
-
73
- /**
74
- * Stop Relay service
75
- */
76
- stop (): void {
77
- try {
78
- clearTimeout(this.timeout)
79
- } catch (err) { }
80
-
81
- this.started = false
82
- }
83
-
84
- /**
85
- * Advertise hop relay service in the network.
86
- */
87
- async _advertiseService (): Promise<void> {
88
- await pRetry(async () => {
89
- try {
90
- const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS)
91
- await this.contentRouting.provide(cid)
92
-
93
- this.safeDispatchEvent('advert:success', { detail: undefined })
94
- } catch (err: any) {
95
- this.safeDispatchEvent('advert:error', { detail: err })
96
-
97
- if (err.code === codes.ERR_NO_ROUTERS_AVAILABLE) {
98
- log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err)
99
- this.stop()
100
- return
101
- }
102
-
103
- log.error('could not advertise service', err)
104
- throw err
105
- }
106
- })
107
- }
108
- }