libp2p 0.42.2-593deefe → 0.42.2-75d5a36f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +30 -30
- package/dist/src/circuit/constants.d.ts +29 -3
- package/dist/src/circuit/constants.d.ts.map +1 -1
- package/dist/src/circuit/constants.js +32 -5
- package/dist/src/circuit/constants.js.map +1 -1
- package/dist/src/circuit/index.d.ts +16 -61
- package/dist/src/circuit/index.d.ts.map +1 -1
- package/dist/src/circuit/index.js +2 -1
- package/dist/src/circuit/index.js.map +1 -1
- package/dist/src/circuit/server/advert-service.d.ts +43 -0
- package/dist/src/circuit/server/advert-service.d.ts.map +1 -0
- package/dist/src/circuit/server/advert-service.js +69 -0
- package/dist/src/circuit/server/advert-service.js.map +1 -0
- package/dist/src/circuit/server/index.d.ts +60 -0
- package/dist/src/circuit/server/index.d.ts.map +1 -0
- package/dist/src/circuit/server/index.js +287 -0
- package/dist/src/circuit/server/index.js.map +1 -0
- package/dist/src/circuit/{reservation-store.d.ts → server/reservation-store.d.ts} +17 -10
- package/dist/src/circuit/server/reservation-store.d.ts.map +1 -0
- package/dist/src/circuit/server/reservation-store.js +57 -0
- package/dist/src/circuit/server/reservation-store.js.map +1 -0
- package/dist/src/circuit/server/reservation-voucher.d.ts.map +1 -0
- package/dist/src/circuit/{reservation-voucher.js → server/reservation-voucher.js} +1 -1
- package/dist/src/circuit/server/reservation-voucher.js.map +1 -0
- package/dist/src/circuit/transport/discovery.d.ts +45 -0
- package/dist/src/circuit/transport/discovery.d.ts.map +1 -0
- package/dist/src/circuit/transport/discovery.js +82 -0
- package/dist/src/circuit/transport/discovery.js.map +1 -0
- package/dist/src/circuit/transport/index.d.ts +33 -0
- package/dist/src/circuit/transport/index.d.ts.map +1 -0
- package/dist/src/circuit/transport/index.js +225 -0
- package/dist/src/circuit/transport/index.js.map +1 -0
- package/dist/src/circuit/transport/listener.d.ts +9 -0
- package/dist/src/circuit/transport/listener.d.ts.map +1 -0
- package/dist/src/circuit/transport/listener.js +76 -0
- package/dist/src/circuit/transport/listener.js.map +1 -0
- package/dist/src/circuit/transport/reservation-store.d.ts +60 -0
- package/dist/src/circuit/transport/reservation-store.d.ts.map +1 -0
- package/dist/src/circuit/transport/reservation-store.js +165 -0
- package/dist/src/circuit/transport/reservation-store.js.map +1 -0
- package/dist/src/circuit/utils.d.ts +4 -2
- package/dist/src/circuit/utils.d.ts.map +1 -1
- package/dist/src/circuit/utils.js +75 -102
- package/dist/src/circuit/utils.js.map +1 -1
- package/dist/src/components.d.ts +2 -1
- package/dist/src/components.d.ts.map +1 -1
- package/dist/src/components.js.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +7 -18
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-manager/dialer/index.d.ts +2 -1
- package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
- package/dist/src/connection-manager/dialer/index.js +3 -3
- package/dist/src/connection-manager/dialer/index.js.map +1 -1
- package/dist/src/index.d.ts +5 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p.d.ts +2 -2
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +7 -19
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/transport-manager.js +1 -1
- package/dist/src/transport-manager.js.map +1 -1
- package/dist/src/upgrader.d.ts +2 -1
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +10 -10
- package/dist/src/upgrader.js.map +1 -1
- package/package.json +11 -5
- package/src/circuit/constants.ts +40 -5
- package/src/circuit/index.ts +17 -67
- package/src/circuit/server/advert-service.ts +108 -0
- package/src/circuit/server/index.ts +420 -0
- package/src/circuit/server/reservation-store.ts +111 -0
- package/src/circuit/{reservation-voucher.ts → server/reservation-voucher.ts} +3 -3
- package/src/circuit/transport/discovery.ts +127 -0
- package/src/circuit/transport/index.ts +325 -0
- package/src/circuit/transport/listener.ts +99 -0
- package/src/circuit/transport/reservation-store.ts +249 -0
- package/src/circuit/utils.ts +78 -115
- package/src/components.ts +2 -1
- package/src/config.ts +7 -18
- package/src/connection-manager/dialer/index.ts +5 -4
- package/src/index.ts +5 -4
- package/src/libp2p.ts +11 -24
- package/src/transport-manager.ts +1 -1
- package/src/upgrader.ts +12 -11
- package/src/version.ts +1 -1
- package/dist/src/circuit/client.d.ts +0 -81
- package/dist/src/circuit/client.d.ts.map +0 -1
- package/dist/src/circuit/client.js +0 -285
- package/dist/src/circuit/client.js.map +0 -1
- package/dist/src/circuit/hop.d.ts +0 -23
- package/dist/src/circuit/hop.d.ts.map +0 -1
- package/dist/src/circuit/hop.js +0 -167
- package/dist/src/circuit/hop.js.map +0 -1
- package/dist/src/circuit/interfaces.d.ts +0 -27
- package/dist/src/circuit/interfaces.d.ts.map +0 -1
- package/dist/src/circuit/interfaces.js +0 -2
- package/dist/src/circuit/interfaces.js.map +0 -1
- package/dist/src/circuit/listener.d.ts +0 -9
- package/dist/src/circuit/listener.d.ts.map +0 -1
- package/dist/src/circuit/listener.js +0 -62
- package/dist/src/circuit/listener.js.map +0 -1
- package/dist/src/circuit/multicodec.d.ts +0 -3
- package/dist/src/circuit/multicodec.d.ts.map +0 -1
- package/dist/src/circuit/multicodec.js +0 -3
- package/dist/src/circuit/multicodec.js.map +0 -1
- package/dist/src/circuit/relay.d.ts +0 -34
- package/dist/src/circuit/relay.d.ts.map +0 -1
- package/dist/src/circuit/relay.js +0 -61
- package/dist/src/circuit/relay.js.map +0 -1
- package/dist/src/circuit/reservation-store.d.ts.map +0 -1
- package/dist/src/circuit/reservation-store.js +0 -59
- package/dist/src/circuit/reservation-store.js.map +0 -1
- package/dist/src/circuit/reservation-voucher.d.ts.map +0 -1
- package/dist/src/circuit/reservation-voucher.js.map +0 -1
- package/dist/src/circuit/stop.d.ts +0 -19
- package/dist/src/circuit/stop.d.ts.map +0 -1
- package/dist/src/circuit/stop.js +0 -67
- package/dist/src/circuit/stop.js.map +0 -1
- package/dist/src/circuit/transport.d.ts +0 -66
- package/dist/src/circuit/transport.d.ts.map +0 -1
- package/dist/src/circuit/transport.js +0 -238
- package/dist/src/circuit/transport.js.map +0 -1
- package/src/circuit/client.ts +0 -381
- package/src/circuit/hop.ts +0 -210
- package/src/circuit/interfaces.ts +0 -28
- package/src/circuit/listener.ts +0 -83
- package/src/circuit/multicodec.ts +0 -3
- package/src/circuit/relay.ts +0 -87
- package/src/circuit/reservation-store.ts +0 -106
- package/src/circuit/stop.ts +0 -92
- package/src/circuit/transport.ts +0 -313
- /package/dist/src/circuit/{reservation-voucher.d.ts → server/reservation-voucher.d.ts} +0 -0
|
@@ -15,10 +15,36 @@ export declare const CIRCUIT_PROTO_CODE = 290;
|
|
|
15
15
|
*/
|
|
16
16
|
export declare const RELAY_RENDEZVOUS_NS = "/libp2p/relay";
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* The maximum number of relay reservations the relay server will accept
|
|
19
19
|
*/
|
|
20
|
-
export declare const
|
|
21
|
-
|
|
20
|
+
export declare const DEFAULT_MAX_RESERVATION_STORE_SIZE = 15;
|
|
21
|
+
/**
|
|
22
|
+
* How often to check for reservation expiry
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_MAX_RESERVATION_CLEAR_INTERVAL: number;
|
|
25
|
+
/**
|
|
26
|
+
* How often to check for reservation expiry
|
|
27
|
+
*/
|
|
28
|
+
export declare const DEFAULT_MAX_RESERVATION_TTL: number;
|
|
29
|
+
export declare const DEFAULT_RESERVATION_CONCURRENCY = 1;
|
|
30
|
+
export declare const RELAY_SOURCE_TAG = "circuit-relay-source";
|
|
31
|
+
export declare const RELAY_TAG = "circuit-relay-relay";
|
|
22
32
|
export declare const DEFAULT_DURATION_LIMIT: number;
|
|
23
33
|
export declare const DEFAULT_DATA_LIMIT: bigint;
|
|
34
|
+
/**
|
|
35
|
+
* The hop protocol
|
|
36
|
+
*/
|
|
37
|
+
export declare const RELAY_V2_HOP_CODEC = "/libp2p/circuit/relay/0.2.0/hop";
|
|
38
|
+
/**
|
|
39
|
+
* the stop protocol
|
|
40
|
+
*/
|
|
41
|
+
export declare const RELAY_V2_STOP_CODEC = "/libp2p/circuit/relay/0.2.0/stop";
|
|
42
|
+
/**
|
|
43
|
+
* Hop messages must be exchanged inside this timeout
|
|
44
|
+
*/
|
|
45
|
+
export declare const DEFAULT_HOP_TIMEOUT: number;
|
|
46
|
+
/**
|
|
47
|
+
* How long to wait before starting to advertise the relay service
|
|
48
|
+
*/
|
|
49
|
+
export declare const DEFAULT_ADVERT_BOOT_DELAY: number;
|
|
24
50
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/circuit/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/circuit/constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAc,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,aAAa,QAAc,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC;;GAEG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,kCAAkC,KAAK,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,sCAAsC,QAAe,CAAA;AAElE;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAkB,CAAA;AAE1D,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAEhD,eAAO,MAAM,gBAAgB,yBAAyB,CAAA;AAEtD,eAAO,MAAM,SAAS,wBAAwB,CAAA;AAM9C,eAAO,MAAM,sBAAsB,QAAa,CAAA;AAGhD,eAAO,MAAM,kBAAkB,QAAkB,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,kBAAkB,oCAAoC,CAAA;AAEnE;;GAEG;AACH,eAAO,MAAM,mBAAmB,qCAAqC,CAAA;AAErE;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAc,CAAA;AAE9C;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAc,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
const
|
|
1
|
+
const second = 1000;
|
|
2
|
+
const minute = 60 * second;
|
|
2
3
|
/**
|
|
3
4
|
* Delay before HOP relay service is advertised on the network
|
|
4
5
|
*/
|
|
@@ -16,14 +17,40 @@ export const CIRCUIT_PROTO_CODE = 290;
|
|
|
16
17
|
*/
|
|
17
18
|
export const RELAY_RENDEZVOUS_NS = '/libp2p/relay';
|
|
18
19
|
/**
|
|
19
|
-
*
|
|
20
|
+
* The maximum number of relay reservations the relay server will accept
|
|
20
21
|
*/
|
|
21
|
-
export const
|
|
22
|
-
|
|
22
|
+
export const DEFAULT_MAX_RESERVATION_STORE_SIZE = 15;
|
|
23
|
+
/**
|
|
24
|
+
* How often to check for reservation expiry
|
|
25
|
+
*/
|
|
26
|
+
export const DEFAULT_MAX_RESERVATION_CLEAR_INTERVAL = 300 * second;
|
|
27
|
+
/**
|
|
28
|
+
* How often to check for reservation expiry
|
|
29
|
+
*/
|
|
30
|
+
export const DEFAULT_MAX_RESERVATION_TTL = 2 * 60 * minute;
|
|
31
|
+
export const DEFAULT_RESERVATION_CONCURRENCY = 1;
|
|
32
|
+
export const RELAY_SOURCE_TAG = 'circuit-relay-source';
|
|
33
|
+
export const RELAY_TAG = 'circuit-relay-relay';
|
|
23
34
|
// circuit v2 connection limits
|
|
24
35
|
// https://github.com/libp2p/go-libp2p/blob/master/p2p/protocol/circuitv2/relay/resources.go#L61-L66
|
|
25
36
|
// 2 min is the default connection duration
|
|
26
|
-
export const DEFAULT_DURATION_LIMIT = 2 *
|
|
37
|
+
export const DEFAULT_DURATION_LIMIT = 2 * minute;
|
|
27
38
|
// 128k is the default data limit
|
|
28
39
|
export const DEFAULT_DATA_LIMIT = BigInt(1 << 17);
|
|
40
|
+
/**
|
|
41
|
+
* The hop protocol
|
|
42
|
+
*/
|
|
43
|
+
export const RELAY_V2_HOP_CODEC = '/libp2p/circuit/relay/0.2.0/hop';
|
|
44
|
+
/**
|
|
45
|
+
* the stop protocol
|
|
46
|
+
*/
|
|
47
|
+
export const RELAY_V2_STOP_CODEC = '/libp2p/circuit/relay/0.2.0/stop';
|
|
48
|
+
/**
|
|
49
|
+
* Hop messages must be exchanged inside this timeout
|
|
50
|
+
*/
|
|
51
|
+
export const DEFAULT_HOP_TIMEOUT = 30 * second;
|
|
52
|
+
/**
|
|
53
|
+
* How long to wait before starting to advertise the relay service
|
|
54
|
+
*/
|
|
55
|
+
export const DEFAULT_ADVERT_BOOT_DELAY = 30 * second;
|
|
29
56
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/circuit/constants.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/circuit/constants.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,IAAI,CAAA;AACnB,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAA;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAA;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAA;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,GAAG,GAAG,MAAM,CAAA;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAA;AAE1D,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAA;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAA;AAEtD,MAAM,CAAC,MAAM,SAAS,GAAG,qBAAqB,CAAA;AAE9C,+BAA+B;AAC/B,oGAAoG;AAEpG,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAA;AAEhD,iCAAiC;AACjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,iCAAiC,CAAA;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,kCAAkC,CAAA;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAA;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,MAAM,CAAA"}
|
|
@@ -1,65 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
enabled: boolean;
|
|
10
|
-
advertise: RelayAdvertiseConfig;
|
|
11
|
-
hop: HopConfig;
|
|
12
|
-
reservationManager: RelayReservationManagerConfig;
|
|
1
|
+
import type { EventEmitter } from '@libp2p/interfaces/events';
|
|
2
|
+
import type { PeerMap } from '@libp2p/peer-collections';
|
|
3
|
+
import type { Limit } from './pb/index.js';
|
|
4
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
5
|
+
export interface RelayReservation {
|
|
6
|
+
expire: Date;
|
|
7
|
+
addr: Multiaddr;
|
|
8
|
+
limit?: Limit;
|
|
13
9
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export interface RelayReservationManagerConfig {
|
|
19
|
-
/**
|
|
20
|
-
* enable or disable autorelay (default: false)
|
|
21
|
-
*/
|
|
22
|
-
enabled?: boolean;
|
|
23
|
-
/**
|
|
24
|
-
* maximum number of relays to listen (default: 1)
|
|
25
|
-
*/
|
|
26
|
-
maxReservations?: number;
|
|
10
|
+
export interface CircuitRelayServiceEvents {
|
|
11
|
+
'relay:reservation': CustomEvent<RelayReservation>;
|
|
12
|
+
'relay:advert:success': CustomEvent<unknown>;
|
|
13
|
+
'relay:advert:error': CustomEvent<Error>;
|
|
27
14
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*/
|
|
31
|
-
export interface HopConfig {
|
|
32
|
-
/**
|
|
33
|
-
* If true this node will function as a limited relay (default: false)
|
|
34
|
-
*/
|
|
35
|
-
enabled?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
* timeout for hop requests to complete
|
|
38
|
-
*/
|
|
39
|
-
timeout: number;
|
|
40
|
-
/**
|
|
41
|
-
* If false, no connection limits will be applied to relayed connections (default: true)
|
|
42
|
-
*/
|
|
43
|
-
applyConnectionLimits?: boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Limits to apply to incoming relay connections - relayed connections will be closed if
|
|
46
|
-
* these limits are exceeded.
|
|
47
|
-
*/
|
|
48
|
-
limit?: {
|
|
49
|
-
/**
|
|
50
|
-
* How long to relay a connection for in milliseconds (default: 2m)
|
|
51
|
-
*/
|
|
52
|
-
duration?: number;
|
|
53
|
-
/**
|
|
54
|
-
* How many bytes to allow to be transferred over a relayed connection (default: 128k)
|
|
55
|
-
*/
|
|
56
|
-
data?: bigint;
|
|
57
|
-
};
|
|
15
|
+
export interface CircuitRelayService extends EventEmitter<CircuitRelayServiceEvents> {
|
|
16
|
+
reservations: PeerMap<RelayReservation>;
|
|
58
17
|
}
|
|
59
|
-
export
|
|
60
|
-
|
|
61
|
-
enabled?: boolean;
|
|
62
|
-
ttl?: number;
|
|
63
|
-
}
|
|
64
|
-
export { Relay } from './relay.js';
|
|
18
|
+
export { circuitRelayServer } from './server/index.js';
|
|
19
|
+
export { circuitRelayTransport } from './transport/index.js';
|
|
65
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/circuit/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/circuit/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAA;IACZ,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;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,YAAY,CAAC,yBAAyB,CAAC;IAClF,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACxC;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/circuit/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/circuit/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Startable } from '@libp2p/interfaces/startable';
|
|
2
|
+
import type { ContentRouting } from '@libp2p/interface-content-routing';
|
|
3
|
+
import { EventEmitter } from '@libp2p/interfaces/events';
|
|
4
|
+
export interface AdvertServiceInit {
|
|
5
|
+
/**
|
|
6
|
+
* How long to wait after startup to begin advertising the service
|
|
7
|
+
* - if some configured content routers take a while to warm up (for
|
|
8
|
+
* example, the DHT needs some peers to be able to publish) this
|
|
9
|
+
* value should be high enough that they will have warmed up
|
|
10
|
+
*/
|
|
11
|
+
bootDelay?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface AdvertServiceComponents {
|
|
14
|
+
contentRouting: ContentRouting;
|
|
15
|
+
}
|
|
16
|
+
export interface AdvertServiceEvents {
|
|
17
|
+
'advert:success': CustomEvent<unknown>;
|
|
18
|
+
'advert:error': CustomEvent<Error>;
|
|
19
|
+
}
|
|
20
|
+
export declare class AdvertService extends EventEmitter<AdvertServiceEvents> implements Startable {
|
|
21
|
+
private readonly contentRouting;
|
|
22
|
+
private timeout?;
|
|
23
|
+
private started;
|
|
24
|
+
private readonly bootDelay;
|
|
25
|
+
/**
|
|
26
|
+
* Creates an instance of Relay
|
|
27
|
+
*/
|
|
28
|
+
constructor(components: AdvertServiceComponents, init?: AdvertServiceInit);
|
|
29
|
+
isStarted(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Start Relay service
|
|
32
|
+
*/
|
|
33
|
+
start(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Stop Relay service
|
|
36
|
+
*/
|
|
37
|
+
stop(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Advertise hop relay service in the network.
|
|
40
|
+
*/
|
|
41
|
+
_advertiseService(): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=advert-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advert-service.d.ts","sourceRoot":"","sources":["../../../../src/circuit/server/advert-service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAKrE,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IACtC,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;CACnC;AAED,qBAAa,aAAc,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,SAAS;IACvF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAK;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAElC;;OAEG;gBACU,UAAU,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,iBAAiB;IAQ1E,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACH,KAAK,IAAK,IAAI;IAed;;OAEG;IACH,IAAI,IAAK,IAAI;IAQb;;OAEG;IACG,iBAAiB,IAAK,OAAO,CAAC,IAAI,CAAC;CAqB1C"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger';
|
|
2
|
+
import { codes } from '../../errors.js';
|
|
3
|
+
import { namespaceToCid } from '../utils.js';
|
|
4
|
+
import { DEFAULT_ADVERT_BOOT_DELAY, RELAY_RENDEZVOUS_NS } from '../constants.js';
|
|
5
|
+
import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
|
|
6
|
+
import pRetry from 'p-retry';
|
|
7
|
+
const log = logger('libp2p:circuit-relay:advert-service');
|
|
8
|
+
export class AdvertService extends EventEmitter {
|
|
9
|
+
/**
|
|
10
|
+
* Creates an instance of Relay
|
|
11
|
+
*/
|
|
12
|
+
constructor(components, init) {
|
|
13
|
+
super();
|
|
14
|
+
this.contentRouting = components.contentRouting;
|
|
15
|
+
this.bootDelay = init?.bootDelay ?? DEFAULT_ADVERT_BOOT_DELAY;
|
|
16
|
+
this.started = false;
|
|
17
|
+
}
|
|
18
|
+
isStarted() {
|
|
19
|
+
return this.started;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Start Relay service
|
|
23
|
+
*/
|
|
24
|
+
start() {
|
|
25
|
+
if (this.started) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Advertise service if HOP enabled and advertising enabled
|
|
29
|
+
this.timeout = setTimeout(() => {
|
|
30
|
+
this._advertiseService().catch(err => {
|
|
31
|
+
log.error('could not advertise service', err);
|
|
32
|
+
});
|
|
33
|
+
}, this.bootDelay);
|
|
34
|
+
this.started = true;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Stop Relay service
|
|
38
|
+
*/
|
|
39
|
+
stop() {
|
|
40
|
+
try {
|
|
41
|
+
clearTimeout(this.timeout);
|
|
42
|
+
}
|
|
43
|
+
catch (err) { }
|
|
44
|
+
this.started = false;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Advertise hop relay service in the network.
|
|
48
|
+
*/
|
|
49
|
+
async _advertiseService() {
|
|
50
|
+
await pRetry(async () => {
|
|
51
|
+
try {
|
|
52
|
+
const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS);
|
|
53
|
+
await this.contentRouting.provide(cid);
|
|
54
|
+
this.dispatchEvent(new CustomEvent('advert:success'));
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
this.safeDispatchEvent('advert:error', { detail: err });
|
|
58
|
+
if (err.code === codes.ERR_NO_ROUTERS_AVAILABLE) {
|
|
59
|
+
log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err);
|
|
60
|
+
await this.stop();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
log.error('could not advertise service', err);
|
|
64
|
+
throw err;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=advert-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advert-service.js","sourceRoot":"","sources":["../../../../src/circuit/server/advert-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,MAAM,MAAM,SAAS,CAAA;AAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,qCAAqC,CAAC,CAAA;AAqBzD,MAAM,OAAO,aAAc,SAAQ,YAAiC;IAMlE;;OAEG;IACH,YAAa,UAAmC,EAAE,IAAwB;QACxE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAA;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,yBAAyB,CAAA;QAC7D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAM;SACP;QAED,2DAA2D;QAC3D,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACnC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAElB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI;YACF,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC3B;QAAC,OAAO,GAAG,EAAE,GAAG;QAEjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,MAAM,CAAC,KAAK,IAAI,EAAE;YACtB,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,mBAAmB,CAAC,CAAA;gBACrD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBAEtC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAA;aACtD;YAAC,OAAO,GAAQ,EAAE;gBACjB,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;gBAEvD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,wBAAwB,EAAE;oBAC/C,GAAG,CAAC,KAAK,CAAC,2FAA2F,EAAE,GAAG,CAAC,CAAA;oBAC3G,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;oBACjB,OAAM;iBACP;gBAED,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;gBAC7C,MAAM,GAAG,CAAA;aACV;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
2
|
+
import { ReservationStoreInit } from './reservation-store.js';
|
|
3
|
+
import type { Registrar } from '@libp2p/interface-registrar';
|
|
4
|
+
import { AdvertServiceComponents, AdvertServiceInit } from './advert-service.js';
|
|
5
|
+
import { ProtobufStream } from 'it-pb-stream';
|
|
6
|
+
import { HopMessage, StopMessage } from '../pb/index.js';
|
|
7
|
+
import type { Connection, Stream } from '@libp2p/interface-connection';
|
|
8
|
+
import type { ConnectionGater } from '@libp2p/interface-connection-gater';
|
|
9
|
+
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
10
|
+
import type { AddressManager } from '@libp2p/interface-address-manager';
|
|
11
|
+
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
12
|
+
import type { CircuitRelayService, RelayReservation } from '../index.js';
|
|
13
|
+
export interface CircuitRelayServerInit {
|
|
14
|
+
/**
|
|
15
|
+
* Incoming hop requests must complete within this time in ms otherwise
|
|
16
|
+
* the stream will be reset (default: 30s)
|
|
17
|
+
*/
|
|
18
|
+
hopTimeout?: number;
|
|
19
|
+
/**
|
|
20
|
+
* If true, advertise this service via libp2p content routing to allow
|
|
21
|
+
* peers to locate us on the network (default: false)
|
|
22
|
+
*/
|
|
23
|
+
advertise?: boolean | AdvertServiceInit;
|
|
24
|
+
/**
|
|
25
|
+
* Configuration of reservations
|
|
26
|
+
*/
|
|
27
|
+
reservations?: ReservationStoreInit;
|
|
28
|
+
/**
|
|
29
|
+
* The maximum number of simultaneous HOP inbound streams that can be open at once
|
|
30
|
+
*/
|
|
31
|
+
maxInboundHopStreams?: number;
|
|
32
|
+
/**
|
|
33
|
+
* The maximum number of simultaneous HOP outbound streams that can be open at once
|
|
34
|
+
*/
|
|
35
|
+
maxOutboundHopStreams?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface HopProtocolOptions {
|
|
38
|
+
connection: Connection;
|
|
39
|
+
request: HopMessage;
|
|
40
|
+
stream: ProtobufStream<Stream>;
|
|
41
|
+
}
|
|
42
|
+
export interface StopOptions {
|
|
43
|
+
connection: Connection;
|
|
44
|
+
request: StopMessage;
|
|
45
|
+
}
|
|
46
|
+
export interface CircuitRelayServerComponents extends AdvertServiceComponents {
|
|
47
|
+
registrar: Registrar;
|
|
48
|
+
peerStore: PeerStore;
|
|
49
|
+
addressManager: AddressManager;
|
|
50
|
+
peerId: PeerId;
|
|
51
|
+
connectionManager: ConnectionManager;
|
|
52
|
+
connectionGater: ConnectionGater;
|
|
53
|
+
}
|
|
54
|
+
export interface RelayServerEvents {
|
|
55
|
+
'relay:reservation': CustomEvent<RelayReservation>;
|
|
56
|
+
'relay:advert:success': CustomEvent<unknown>;
|
|
57
|
+
'relay:advert:error': CustomEvent<Error>;
|
|
58
|
+
}
|
|
59
|
+
export declare function circuitRelayServer(init?: CircuitRelayServerInit): (components: CircuitRelayServerComponents) => CircuitRelayService;
|
|
60
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/circuit/server/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAoB,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,EAAiB,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE/F,OAAO,EAAY,cAAc,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,UAAU,EAAuB,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAQxE,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAA;IAEvC;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAA;IAEnC;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;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,4BAA6B,SAAQ,uBAAuB;IAC3E,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,eAAe,EAAE,eAAe,CAAA;CACjC;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;AAyUD,wBAAgB,kBAAkB,CAAE,IAAI,GAAE,sBAA2B,GAAG,CAAC,UAAU,EAAE,4BAA4B,KAAK,mBAAmB,CAIxI"}
|