@libp2p/circuit-relay-v2 3.2.23-cf9aab5c8 → 3.2.24-a02cb0461

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 (46) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/index.d.ts +170 -7
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +12 -2
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/server/index.d.ts +41 -45
  8. package/dist/src/server/index.d.ts.map +1 -1
  9. package/dist/src/server/index.js +26 -43
  10. package/dist/src/server/index.js.map +1 -1
  11. package/dist/src/server/reservation-store.d.ts +2 -36
  12. package/dist/src/server/reservation-store.d.ts.map +1 -1
  13. package/dist/src/server/reservation-store.js.map +1 -1
  14. package/dist/src/transport/discovery.d.ts +2 -17
  15. package/dist/src/transport/discovery.d.ts.map +1 -1
  16. package/dist/src/transport/discovery.js +2 -2
  17. package/dist/src/transport/discovery.js.map +1 -1
  18. package/dist/src/transport/index.d.ts +34 -42
  19. package/dist/src/transport/index.d.ts.map +1 -1
  20. package/dist/src/transport/index.js +296 -5
  21. package/dist/src/transport/index.js.map +1 -1
  22. package/dist/src/transport/reservation-store.d.ts +3 -37
  23. package/dist/src/transport/reservation-store.d.ts.map +1 -1
  24. package/dist/src/transport/reservation-store.js +2 -4
  25. package/dist/src/transport/reservation-store.js.map +1 -1
  26. package/dist/src/transport/stream-to-conn.d.ts +19 -0
  27. package/dist/src/transport/stream-to-conn.d.ts.map +1 -0
  28. package/dist/src/transport/stream-to-conn.js +60 -0
  29. package/dist/src/transport/stream-to-conn.js.map +1 -0
  30. package/dist/src/utils.d.ts.map +1 -1
  31. package/dist/src/utils.js +36 -59
  32. package/dist/src/utils.js.map +1 -1
  33. package/package.json +19 -24
  34. package/src/index.ts +207 -8
  35. package/src/server/index.ts +32 -94
  36. package/src/server/reservation-store.ts +2 -42
  37. package/src/transport/discovery.ts +4 -22
  38. package/src/transport/index.ts +344 -46
  39. package/src/transport/reservation-store.ts +6 -44
  40. package/src/transport/stream-to-conn.ts +91 -0
  41. package/src/utils.ts +37 -66
  42. package/dist/src/transport/transport.d.ts +0 -54
  43. package/dist/src/transport/transport.d.ts.map +0 -1
  44. package/dist/src/transport/transport.js +0 -314
  45. package/dist/src/transport/transport.js.map +0 -1
  46. package/src/transport/transport.ts +0 -380
@@ -40,6 +40,8 @@
40
40
  */
41
41
  import { TypedEventEmitter } from 'main-event';
42
42
  import type { Limit } from './pb/index.js';
43
+ import type { ComponentLogger, ConnectionGater, Libp2pEvents, Metrics, PeerId, PeerStore, PrivateKey, TopologyFilter, Transport, TypedEventTarget, Upgrader } from '@libp2p/interface';
44
+ import type { AddressManager, ConnectionManager, RandomWalk, Registrar, TransportManager } from '@libp2p/interface-internal';
43
45
  import type { PeerMap } from '@libp2p/peer-collections';
44
46
  import type { Multiaddr } from '@multiformats/multiaddr';
45
47
  import type { RetimeableAbortSignal } from 'retimeable-signal';
@@ -71,12 +73,173 @@ export interface CircuitRelayServiceEvents {
71
73
  export interface CircuitRelayService extends TypedEventEmitter<CircuitRelayServiceEvents> {
72
74
  reservations: PeerMap<RelayReservation>;
73
75
  }
74
- export { circuitRelayServer } from './server/index.js';
75
- export type { CircuitRelayServerInit, CircuitRelayServerComponents } from './server/index.js';
76
- export type { ReservationStoreInit as ServerReservationStoreInit } from './server/reservation-store.js';
77
- export { circuitRelayTransport } from './transport/index.js';
78
- export type { RelayDiscoveryComponents } from './transport/discovery.js';
79
- export type { ReservationStoreInit as TransportReservationStoreInit } from './transport/reservation-store.js';
80
- export type { CircuitRelayTransportInit, CircuitRelayTransportComponents } from './transport/index.js';
81
76
  export { RELAY_V2_HOP_CODEC, RELAY_V2_STOP_CODEC } from './constants.js';
77
+ export interface ServerReservationStoreInit {
78
+ /**
79
+ * maximum number of reservations allowed
80
+ *
81
+ * @default 15
82
+ */
83
+ maxReservations?: number;
84
+ /**
85
+ * interval after which stale reservations are cleared
86
+ *
87
+ * @default 300000
88
+ */
89
+ reservationClearInterval?: number;
90
+ /**
91
+ * apply default relay limits to a new reservation
92
+ *
93
+ * @default true
94
+ */
95
+ applyDefaultLimit?: boolean;
96
+ /**
97
+ * reservation ttl
98
+ *
99
+ * @default 7200000
100
+ */
101
+ reservationTtl?: number;
102
+ /**
103
+ * The maximum time a relayed connection can be open for
104
+ */
105
+ defaultDurationLimit?: number;
106
+ /**
107
+ * The maximum amount of data allowed to be transferred over a relayed connection
108
+ */
109
+ defaultDataLimit?: bigint;
110
+ }
111
+ export interface CircuitRelayServerComponents {
112
+ registrar: Registrar;
113
+ peerStore: PeerStore;
114
+ addressManager: AddressManager;
115
+ peerId: PeerId;
116
+ privateKey: PrivateKey;
117
+ connectionManager: ConnectionManager;
118
+ connectionGater: ConnectionGater;
119
+ logger: ComponentLogger;
120
+ metrics?: Metrics;
121
+ }
122
+ export interface CircuitRelayServerInit {
123
+ /**
124
+ * Incoming hop requests must complete within this time in ms otherwise
125
+ * the stream will be reset
126
+ *
127
+ * @default 30000
128
+ */
129
+ hopTimeout?: number;
130
+ /**
131
+ * Configuration of reservations
132
+ */
133
+ reservations?: ServerReservationStoreInit;
134
+ /**
135
+ * The maximum number of simultaneous HOP inbound streams that can be open at once
136
+ */
137
+ maxInboundHopStreams?: number;
138
+ /**
139
+ * The maximum number of simultaneous HOP outbound streams that can be open at once
140
+ */
141
+ maxOutboundHopStreams?: number;
142
+ /**
143
+ * The maximum number of simultaneous STOP outbound streams that can be open at
144
+ * once.
145
+ *
146
+ * @default 300
147
+ */
148
+ maxOutboundStopStreams?: number;
149
+ }
150
+ export declare function circuitRelayServer(init?: CircuitRelayServerInit): (components: CircuitRelayServerComponents) => CircuitRelayService;
151
+ export interface RelayDiscoveryEvents {
152
+ 'relay:discover': CustomEvent<PeerId>;
153
+ }
154
+ export interface TransportReservationStoreComponents {
155
+ peerId: PeerId;
156
+ connectionManager: ConnectionManager;
157
+ peerStore: PeerStore;
158
+ events: TypedEventTarget<Libp2pEvents>;
159
+ logger: ComponentLogger;
160
+ metrics?: Metrics;
161
+ }
162
+ export interface TransportReservationStoreInit {
163
+ /**
164
+ * Multiple relays may be discovered simultaneously - to prevent listening
165
+ * on too many relays, this value controls how many to attempt to reserve a
166
+ * slot on at once. If set to more than one, we may end up listening on
167
+ * more relays than the `maxReservations` value, but on networks with poor
168
+ * connectivity the user may wish to attempt to reserve on multiple relays
169
+ * simultaneously.
170
+ *
171
+ * @default 1
172
+ */
173
+ reservationConcurrency?: number;
174
+ /**
175
+ * Limit the number of potential relays we will dial
176
+ *
177
+ * @default 100
178
+ */
179
+ maxReservationQueueLength?: number;
180
+ /**
181
+ * When creating a reservation it must complete within this number of ms
182
+ *
183
+ * @default 5000
184
+ */
185
+ reservationCompletionTimeout?: number;
186
+ }
187
+ export interface RelayDiscoveryComponents {
188
+ peerStore: PeerStore;
189
+ connectionManager: ConnectionManager;
190
+ transportManager: TransportManager;
191
+ registrar: Registrar;
192
+ logger: ComponentLogger;
193
+ randomWalk: RandomWalk;
194
+ events: TypedEventTarget<Libp2pEvents>;
195
+ }
196
+ export interface RelayDiscoveryInit {
197
+ filter?: TopologyFilter;
198
+ }
199
+ export interface CircuitRelayTransportComponents extends RelayDiscoveryComponents {
200
+ peerId: PeerId;
201
+ upgrader: Upgrader;
202
+ addressManager: AddressManager;
203
+ connectionGater: ConnectionGater;
204
+ }
205
+ /**
206
+ * RelayConfig configures the circuit v2 relay transport.
207
+ */
208
+ export interface CircuitRelayTransportInit extends TransportReservationStoreInit {
209
+ /**
210
+ * An optional filter used to prevent duplicate attempts to reserve relay
211
+ * slots on the same peer
212
+ */
213
+ discoveryFilter?: TopologyFilter;
214
+ /**
215
+ * The maximum number of simultaneous STOP inbound streams that can be open at
216
+ * once - each inbound relayed connection uses a STOP stream
217
+ *
218
+ * @default 300
219
+ */
220
+ maxInboundStopStreams?: number;
221
+ /**
222
+ * The maximum number of simultaneous STOP outbound streams that can be open
223
+ * at once. If this transport is used along with the relay server these
224
+ * settings should be set to the same value
225
+ *
226
+ * @default 300
227
+ */
228
+ maxOutboundStopStreams?: number;
229
+ /**
230
+ * Incoming STOP requests (e.g. when a remote peer wants to dial us via a
231
+ * relay) must finish the initial protocol negotiation within this timeout in
232
+ * ms
233
+ *
234
+ * @deprecated Configure `connectionManager.inboundUpgradeTimeout` instead
235
+ */
236
+ stopTimeout?: number;
237
+ /**
238
+ * When creating a reservation it must complete within this number of ms
239
+ *
240
+ * @default 10_000
241
+ */
242
+ reservationCompletionTimeout?: number;
243
+ }
244
+ export declare function circuitRelayTransport(init?: CircuitRelayTransportInit): (components: CircuitRelayTransportComponents) => Transport;
82
245
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE9D,YAAY,EAAE,KAAK,EAAE,CAAA;AAErB,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,EAAE,IAAI,CAAA;IAEZ;;OAEG;IACH,IAAI,EAAE,SAAS,CAAA;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAClD,sBAAsB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5C,oBAAoB,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB,CAAC,yBAAyB,CAAC;IACvF,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACxC;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,YAAY,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAC7F,YAAY,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACxE,YAAY,EAAE,oBAAoB,IAAI,6BAA6B,EAAE,MAAM,kCAAkC,CAAA;AAC7G,YAAY,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AAEtG,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -39,7 +39,17 @@
39
39
  * ```
40
40
  */
41
41
  import { TypedEventEmitter } from 'main-event';
42
- export { circuitRelayServer } from './server/index.js';
43
- export { circuitRelayTransport } from './transport/index.js';
42
+ import { CircuitRelayServer } from './server/index.js';
43
+ import { CircuitRelayTransport } from "./transport/index.js";
44
44
  export { RELAY_V2_HOP_CODEC, RELAY_V2_STOP_CODEC } from './constants.js';
45
+ export function circuitRelayServer(init = {}) {
46
+ return (components) => {
47
+ return new CircuitRelayServer(components, init);
48
+ };
49
+ }
50
+ export function circuitRelayTransport(init = {}) {
51
+ return (components) => {
52
+ return new CircuitRelayTransport(components, init);
53
+ };
54
+ }
45
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAyC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAK5D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AA2C5D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,gBAAgB,CAAA;AAuFvB,MAAM,UAAU,kBAAkB,CAAE,OAA+B,EAAE;IACnE,OAAO,CAAC,UAAU,EAAE,EAAE;QACpB,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACjD,CAAC,CAAA;AACH,CAAC;AA4GD,MAAM,UAAU,qBAAqB,CAAE,OAAkC,EAAE;IACzE,OAAO,CAAC,UAAU,EAAE,EAAE;QACpB,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACpD,CAAC,CAAA;AACH,CAAC"}
@@ -1,37 +1,10 @@
1
+ import { TypedEventEmitter } from 'main-event';
1
2
  import { HopMessage, StopMessage } from '../pb/index.js';
2
- import type { ReservationStoreInit } from './reservation-store.js';
3
- import type { CircuitRelayService, RelayReservation } from '../index.js';
4
- import type { ComponentLogger, Connection, Stream, ConnectionGater, PeerId, PeerStore, PrivateKey, Metrics } from '@libp2p/interface';
5
- import type { AddressManager, ConnectionManager, Registrar } from '@libp2p/interface-internal';
6
- import type { ProtobufStream } from 'it-protobuf-stream';
7
- export interface CircuitRelayServerInit {
8
- /**
9
- * Incoming hop requests must complete within this time in ms otherwise
10
- * the stream will be reset
11
- *
12
- * @default 30000
13
- */
14
- hopTimeout?: number;
15
- /**
16
- * Configuration of reservations
17
- */
18
- reservations?: ReservationStoreInit;
19
- /**
20
- * The maximum number of simultaneous HOP inbound streams that can be open at once
21
- */
22
- maxInboundHopStreams?: number;
23
- /**
24
- * The maximum number of simultaneous HOP outbound streams that can be open at once
25
- */
26
- maxOutboundHopStreams?: number;
27
- /**
28
- * The maximum number of simultaneous STOP outbound streams that can be open at
29
- * once.
30
- *
31
- * @default 300
32
- */
33
- maxOutboundStopStreams?: number;
34
- }
3
+ import type { CircuitRelayServerComponents, CircuitRelayServerInit, CircuitRelayService, RelayReservation } from '../index.js';
4
+ import type { Reservation } from '../pb/index.js';
5
+ import type { Connection, Stream, PeerId, Startable, AbortOptions } from '@libp2p/interface';
6
+ import type { PeerMap } from '@libp2p/peer-collections';
7
+ import type { ProtobufStream } from '@libp2p/utils';
35
8
  export interface HopProtocolOptions {
36
9
  connection: Connection;
37
10
  request: HopMessage;
@@ -41,21 +14,44 @@ export interface StopOptions {
41
14
  connection: Connection;
42
15
  request: StopMessage;
43
16
  }
44
- export interface CircuitRelayServerComponents {
45
- registrar: Registrar;
46
- peerStore: PeerStore;
47
- addressManager: AddressManager;
48
- peerId: PeerId;
49
- privateKey: PrivateKey;
50
- connectionManager: ConnectionManager;
51
- connectionGater: ConnectionGater;
52
- logger: ComponentLogger;
53
- metrics?: Metrics;
54
- }
55
17
  export interface RelayServerEvents {
56
18
  'relay:reservation': CustomEvent<RelayReservation>;
57
19
  'relay:advert:success': CustomEvent<unknown>;
58
20
  'relay:advert:error': CustomEvent<Error>;
59
21
  }
60
- export declare function circuitRelayServer(init?: CircuitRelayServerInit): (components: CircuitRelayServerComponents) => CircuitRelayService;
22
+ export declare class CircuitRelayServer extends TypedEventEmitter<RelayServerEvents> implements Startable, CircuitRelayService {
23
+ private readonly components;
24
+ private readonly reservationStore;
25
+ private started;
26
+ private readonly hopTimeout;
27
+ private readonly shutdownController;
28
+ private readonly maxInboundHopStreams?;
29
+ private readonly maxOutboundHopStreams?;
30
+ private readonly maxOutboundStopStreams;
31
+ private readonly log;
32
+ /**
33
+ * Creates an instance of Relay
34
+ */
35
+ constructor(components: CircuitRelayServerComponents, init?: CircuitRelayServerInit);
36
+ readonly [Symbol.toStringTag] = "@libp2p/circuit-relay-v2-server";
37
+ isStarted(): boolean;
38
+ /**
39
+ * Start Relay service
40
+ */
41
+ start(): Promise<void>;
42
+ /**
43
+ * Stop Relay service
44
+ */
45
+ stop(): Promise<void>;
46
+ onHop(stream: Stream, connection: Connection): Promise<void>;
47
+ handleHopProtocol({ stream, request, connection }: HopProtocolOptions, options: AbortOptions): Promise<void>;
48
+ handleReserve({ stream, connection }: HopProtocolOptions, options: AbortOptions): Promise<void>;
49
+ makeReservation(remotePeer: PeerId, expire: bigint): Promise<Reservation>;
50
+ handleConnect({ stream, request, connection }: HopProtocolOptions, options: AbortOptions): Promise<void>;
51
+ /**
52
+ * Send a STOP request to the target peer that the dialing peer wants to contact
53
+ */
54
+ stopHop({ connection, request }: StopOptions, options: AbortOptions): Promise<Stream | undefined>;
55
+ get reservations(): PeerMap<RelayReservation>;
56
+ }
61
57
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAU,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAIhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAExE,OAAO,KAAK,EAAE,eAAe,EAAU,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAa,UAAU,EAAE,OAAO,EAAoC,MAAM,mBAAmB,CAAA;AAC1L,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAG9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAIxD,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAA;IAEnC;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,UAAU,CAAA;IACnB,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,eAAe,EAAE,eAAe,CAAA;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAClD,sBAAsB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5C,oBAAoB,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;CACzC;AA+VD,wBAAgB,kBAAkB,CAAE,IAAI,GAAE,sBAA2B,GAAG,CAAC,UAAU,EAAE,4BAA4B,KAAK,mBAAmB,CAIxI"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { publicKeyToProtobuf } from '@libp2p/crypto/keys';
2
2
  import { peerIdFromMultihash } from '@libp2p/peer-id';
3
3
  import { RecordEnvelope } from '@libp2p/peer-record';
4
+ import { pbStream } from '@libp2p/utils';
4
5
  import { multiaddr } from '@multiformats/multiaddr';
5
- import { pbStream } from 'it-protobuf-stream';
6
6
  import { TypedEventEmitter, setMaxListeners } from 'main-event';
7
7
  import * as Digest from 'multiformats/hashes/digest';
8
8
  import { CIRCUIT_PROTO_CODE, DEFAULT_HOP_TIMEOUT, KEEP_ALIVE_SOURCE_TAG, MAX_CONNECTIONS, RELAY_SOURCE_TAG, RELAY_V2_HOP_CODEC, RELAY_V2_STOP_CODEC } from '../constants.js';
@@ -14,14 +14,8 @@ const isRelayAddr = (ma) => ma.protoCodes().includes(CIRCUIT_PROTO_CODE);
14
14
  const defaults = {
15
15
  maxOutboundStopStreams: MAX_CONNECTIONS
16
16
  };
17
- class CircuitRelayServer extends TypedEventEmitter {
18
- registrar;
19
- peerStore;
20
- addressManager;
21
- peerId;
22
- privateKey;
23
- connectionManager;
24
- connectionGater;
17
+ export class CircuitRelayServer extends TypedEventEmitter {
18
+ components;
25
19
  reservationStore;
26
20
  started;
27
21
  hopTimeout;
@@ -36,13 +30,7 @@ class CircuitRelayServer extends TypedEventEmitter {
36
30
  constructor(components, init = {}) {
37
31
  super();
38
32
  this.log = components.logger.forComponent('libp2p:circuit-relay:server');
39
- this.registrar = components.registrar;
40
- this.peerStore = components.peerStore;
41
- this.addressManager = components.addressManager;
42
- this.peerId = components.peerId;
43
- this.privateKey = components.privateKey;
44
- this.connectionManager = components.connectionManager;
45
- this.connectionGater = components.connectionGater;
33
+ this.components = components;
46
34
  this.started = false;
47
35
  this.hopTimeout = init?.hopTimeout ?? DEFAULT_HOP_TIMEOUT;
48
36
  this.maxInboundHopStreams = init.maxInboundHopStreams;
@@ -51,6 +39,7 @@ class CircuitRelayServer extends TypedEventEmitter {
51
39
  this.reservationStore = new ReservationStore(components, init.reservations);
52
40
  this.shutdownController = new AbortController();
53
41
  setMaxListeners(Infinity, this.shutdownController.signal);
42
+ this.onHop = this.onHop.bind(this);
54
43
  }
55
44
  [Symbol.toStringTag] = '@libp2p/circuit-relay-v2-server';
56
45
  isStarted() {
@@ -63,11 +52,7 @@ class CircuitRelayServer extends TypedEventEmitter {
63
52
  if (this.started) {
64
53
  return;
65
54
  }
66
- await this.registrar.handle(RELAY_V2_HOP_CODEC, (data) => {
67
- void this.onHop(data).catch(err => {
68
- this.log.error(err);
69
- });
70
- }, {
55
+ await this.components.registrar.handle(RELAY_V2_HOP_CODEC, this.onHop, {
71
56
  maxInboundStreams: this.maxInboundHopStreams,
72
57
  maxOutboundStreams: this.maxOutboundHopStreams,
73
58
  runOnLimitedConnection: true
@@ -80,13 +65,15 @@ class CircuitRelayServer extends TypedEventEmitter {
80
65
  async stop() {
81
66
  this.reservationStore.clear();
82
67
  this.shutdownController.abort();
83
- await this.registrar.unhandle(RELAY_V2_HOP_CODEC);
68
+ await this.components.registrar.unhandle(RELAY_V2_HOP_CODEC);
84
69
  this.started = false;
85
70
  }
86
- async onHop({ connection, stream }) {
71
+ async onHop(stream, connection) {
87
72
  this.log('received circuit v2 hop protocol stream from %p', connection.remotePeer);
73
+ const signal = AbortSignal.timeout(this.hopTimeout);
74
+ setMaxListeners(Infinity, signal);
88
75
  const options = {
89
- signal: AbortSignal.timeout(this.hopTimeout)
76
+ signal
90
77
  };
91
78
  const pbstr = pbStream(stream);
92
79
  try {
@@ -133,7 +120,7 @@ class CircuitRelayServer extends TypedEventEmitter {
133
120
  await hopstr.write({ type: HopMessage.Type.STATUS, status: Status.PERMISSION_DENIED }, options);
134
121
  return;
135
122
  }
136
- if ((await this.connectionGater.denyInboundRelayReservation?.(connection.remotePeer)) === true) {
123
+ if ((await this.components.connectionGater.denyInboundRelayReservation?.(connection.remotePeer)) === true) {
137
124
  this.log.error('reservation for %p denied by connection gater', connection.remotePeer);
138
125
  await hopstr.write({ type: HopMessage.Type.STATUS, status: Status.PERMISSION_DENIED }, options);
139
126
  return;
@@ -148,12 +135,12 @@ class CircuitRelayServer extends TypedEventEmitter {
148
135
  // result.expire is non-null if `ReservationStore.reserve` returns with status == OK
149
136
  if (result.expire != null) {
150
137
  const ttl = (result.expire * 1000) - Date.now();
151
- await this.peerStore.merge(connection.remotePeer, {
138
+ await this.components.peerStore.merge(connection.remotePeer, {
152
139
  tags: {
153
140
  [RELAY_SOURCE_TAG]: { value: 1, ttl },
154
141
  [KEEP_ALIVE_SOURCE_TAG]: { value: 1, ttl }
155
142
  }
156
- });
143
+ }, options);
157
144
  }
158
145
  await hopstr.write({
159
146
  type: HopMessage.Type.STATUS,
@@ -162,17 +149,19 @@ class CircuitRelayServer extends TypedEventEmitter {
162
149
  limit: this.reservationStore.get(connection.remotePeer)?.limit
163
150
  }, options);
164
151
  this.log('sent confirmation response to %s', connection.remotePeer);
152
+ // close writable end of stream
153
+ await hopstr.unwrap().unwrap().close(options);
165
154
  }
166
155
  catch (err) {
167
156
  this.log.error('failed to send confirmation response to %p - %e', connection.remotePeer, err);
168
157
  this.reservationStore.removeReservation(connection.remotePeer);
169
158
  try {
170
- await this.peerStore.merge(connection.remotePeer, {
159
+ await this.components.peerStore.merge(connection.remotePeer, {
171
160
  tags: {
172
161
  [RELAY_SOURCE_TAG]: undefined,
173
162
  [KEEP_ALIVE_SOURCE_TAG]: undefined
174
163
  }
175
- });
164
+ }, options);
176
165
  }
177
166
  catch (err) {
178
167
  this.log.error('failed to untag relay source peer %p - %e', connection.remotePeer, err);
@@ -181,7 +170,7 @@ class CircuitRelayServer extends TypedEventEmitter {
181
170
  }
182
171
  async makeReservation(remotePeer, expire) {
183
172
  const addrs = [];
184
- for (const relayAddr of this.addressManager.getAddresses()) {
173
+ for (const relayAddr of this.components.addressManager.getAddresses()) {
185
174
  if (relayAddr.toString().includes('/p2p-circuit')) {
186
175
  continue;
187
176
  }
@@ -189,9 +178,9 @@ class CircuitRelayServer extends TypedEventEmitter {
189
178
  }
190
179
  const envelope = await RecordEnvelope.seal(new ReservationVoucherRecord({
191
180
  peer: remotePeer,
192
- relay: this.peerId,
181
+ relay: this.components.peerId,
193
182
  expiration: expire
194
- }), this.privateKey);
183
+ }), this.components.privateKey);
195
184
  return {
196
185
  addrs,
197
186
  expire,
@@ -200,7 +189,7 @@ class CircuitRelayServer extends TypedEventEmitter {
200
189
  payloadType: envelope.payloadType,
201
190
  payload: {
202
191
  peer: remotePeer.toMultihash().bytes,
203
- relay: this.peerId.toMultihash().bytes,
192
+ relay: this.components.peerId.toMultihash().bytes,
204
193
  expiration: expire
205
194
  },
206
195
  signature: envelope.signature
@@ -235,12 +224,12 @@ class CircuitRelayServer extends TypedEventEmitter {
235
224
  await hopstr.write({ type: HopMessage.Type.STATUS, status: Status.NO_RESERVATION }, options);
236
225
  return;
237
226
  }
238
- if ((await this.connectionGater.denyOutboundRelayedConnection?.(connection.remotePeer, dstPeer)) === true) {
227
+ if ((await this.components.connectionGater.denyOutboundRelayedConnection?.(connection.remotePeer, dstPeer)) === true) {
239
228
  this.log.error('hop connect for %p to %p denied by connection gater', connection.remotePeer, dstPeer);
240
229
  await hopstr.write({ type: HopMessage.Type.STATUS, status: Status.PERMISSION_DENIED }, options);
241
230
  return;
242
231
  }
243
- const connections = this.connectionManager.getConnections(dstPeer);
232
+ const connections = this.components.connectionManager.getConnections(dstPeer);
244
233
  if (connections.length === 0) {
245
234
  this.log('hop connect denied for destination peer %p not having a connection for %p as there is no destination connection', dstPeer, connection.remotePeer);
246
235
  await hopstr.write({ type: HopMessage.Type.STATUS, status: Status.NO_RESERVATION }, options);
@@ -268,10 +257,9 @@ class CircuitRelayServer extends TypedEventEmitter {
268
257
  status: Status.OK,
269
258
  limit: reservation?.limit
270
259
  }, options);
271
- const sourceStream = stream.unwrap();
272
260
  this.log('connection from %p to %p established - merging streams', connection.remotePeer, dstPeer);
273
261
  // Short circuit the two streams to create the relayed connection
274
- createLimitedRelay(sourceStream, destinationStream, this.shutdownController.signal, reservation, {
262
+ createLimitedRelay(stream.unwrap(), destinationStream, this.shutdownController.signal, reservation, {
275
263
  log: this.log
276
264
  });
277
265
  }
@@ -280,7 +268,7 @@ class CircuitRelayServer extends TypedEventEmitter {
280
268
  */
281
269
  async stopHop({ connection, request }, options) {
282
270
  this.log('starting circuit relay v2 stop request to %s', connection.remotePeer);
283
- const stream = await connection.newStream([RELAY_V2_STOP_CODEC], {
271
+ const stream = await connection.newStream(RELAY_V2_STOP_CODEC, {
284
272
  maxOutboundStreams: this.maxOutboundStopStreams,
285
273
  runOnLimitedConnection: true,
286
274
  ...options
@@ -311,9 +299,4 @@ class CircuitRelayServer extends TypedEventEmitter {
311
299
  return this.reservationStore.reservations;
312
300
  }
313
301
  }
314
- export function circuitRelayServer(init = {}) {
315
- return (components) => {
316
- return new CircuitRelayServer(components, init);
317
- };
318
- }
319
302
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Status } from '../pb/index.js';
2
- import type { RelayReservation } from '../index.js';
2
+ import type { RelayReservation, ServerReservationStoreInit } from '../index.js';
3
3
  import type { Limit } from '../pb/index.js';
4
4
  import type { ComponentLogger, Metrics, PeerId } from '@libp2p/interface';
5
5
  import type { PeerMap } from '@libp2p/peer-collections';
@@ -9,40 +9,6 @@ export interface ReservationStoreComponents {
9
9
  logger: ComponentLogger;
10
10
  metrics?: Metrics;
11
11
  }
12
- export interface ReservationStoreInit {
13
- /**
14
- * maximum number of reservations allowed
15
- *
16
- * @default 15
17
- */
18
- maxReservations?: number;
19
- /**
20
- * interval after which stale reservations are cleared
21
- *
22
- * @default 300000
23
- */
24
- reservationClearInterval?: number;
25
- /**
26
- * apply default relay limits to a new reservation
27
- *
28
- * @default true
29
- */
30
- applyDefaultLimit?: boolean;
31
- /**
32
- * reservation ttl
33
- *
34
- * @default 7200000
35
- */
36
- reservationTtl?: number;
37
- /**
38
- * The maximum time a relayed connection can be open for
39
- */
40
- defaultDurationLimit?: number;
41
- /**
42
- * The maximum amount of data allowed to be transferred over a relayed connection
43
- */
44
- defaultDataLimit?: bigint;
45
- }
46
12
  export declare class ReservationStore {
47
13
  readonly reservations: PeerMap<RelayReservation>;
48
14
  private readonly maxReservations;
@@ -51,7 +17,7 @@ export declare class ReservationStore {
51
17
  private readonly defaultDurationLimit;
52
18
  private readonly defaultDataLimit;
53
19
  private readonly log;
54
- constructor(components: ReservationStoreComponents, init?: ReservationStoreInit);
20
+ constructor(components: ReservationStoreComponents, init?: ServerReservationStoreInit);
55
21
  reserve(peer: PeerId, addr: Multiaddr, limit?: Limit): {
56
22
  status: ReservationStatus;
57
23
  expire?: number;