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.
Files changed (134) hide show
  1. package/dist/index.min.js +30 -30
  2. package/dist/src/circuit/constants.d.ts +29 -3
  3. package/dist/src/circuit/constants.d.ts.map +1 -1
  4. package/dist/src/circuit/constants.js +32 -5
  5. package/dist/src/circuit/constants.js.map +1 -1
  6. package/dist/src/circuit/index.d.ts +16 -61
  7. package/dist/src/circuit/index.d.ts.map +1 -1
  8. package/dist/src/circuit/index.js +2 -1
  9. package/dist/src/circuit/index.js.map +1 -1
  10. package/dist/src/circuit/server/advert-service.d.ts +43 -0
  11. package/dist/src/circuit/server/advert-service.d.ts.map +1 -0
  12. package/dist/src/circuit/server/advert-service.js +69 -0
  13. package/dist/src/circuit/server/advert-service.js.map +1 -0
  14. package/dist/src/circuit/server/index.d.ts +60 -0
  15. package/dist/src/circuit/server/index.d.ts.map +1 -0
  16. package/dist/src/circuit/server/index.js +287 -0
  17. package/dist/src/circuit/server/index.js.map +1 -0
  18. package/dist/src/circuit/{reservation-store.d.ts → server/reservation-store.d.ts} +17 -10
  19. package/dist/src/circuit/server/reservation-store.d.ts.map +1 -0
  20. package/dist/src/circuit/server/reservation-store.js +57 -0
  21. package/dist/src/circuit/server/reservation-store.js.map +1 -0
  22. package/dist/src/circuit/server/reservation-voucher.d.ts.map +1 -0
  23. package/dist/src/circuit/{reservation-voucher.js → server/reservation-voucher.js} +1 -1
  24. package/dist/src/circuit/server/reservation-voucher.js.map +1 -0
  25. package/dist/src/circuit/transport/discovery.d.ts +45 -0
  26. package/dist/src/circuit/transport/discovery.d.ts.map +1 -0
  27. package/dist/src/circuit/transport/discovery.js +82 -0
  28. package/dist/src/circuit/transport/discovery.js.map +1 -0
  29. package/dist/src/circuit/transport/index.d.ts +33 -0
  30. package/dist/src/circuit/transport/index.d.ts.map +1 -0
  31. package/dist/src/circuit/transport/index.js +225 -0
  32. package/dist/src/circuit/transport/index.js.map +1 -0
  33. package/dist/src/circuit/transport/listener.d.ts +9 -0
  34. package/dist/src/circuit/transport/listener.d.ts.map +1 -0
  35. package/dist/src/circuit/transport/listener.js +76 -0
  36. package/dist/src/circuit/transport/listener.js.map +1 -0
  37. package/dist/src/circuit/transport/reservation-store.d.ts +60 -0
  38. package/dist/src/circuit/transport/reservation-store.d.ts.map +1 -0
  39. package/dist/src/circuit/transport/reservation-store.js +165 -0
  40. package/dist/src/circuit/transport/reservation-store.js.map +1 -0
  41. package/dist/src/circuit/utils.d.ts +4 -2
  42. package/dist/src/circuit/utils.d.ts.map +1 -1
  43. package/dist/src/circuit/utils.js +75 -102
  44. package/dist/src/circuit/utils.js.map +1 -1
  45. package/dist/src/components.d.ts +2 -1
  46. package/dist/src/components.d.ts.map +1 -1
  47. package/dist/src/components.js.map +1 -1
  48. package/dist/src/config.d.ts.map +1 -1
  49. package/dist/src/config.js +7 -18
  50. package/dist/src/config.js.map +1 -1
  51. package/dist/src/connection-manager/dialer/index.d.ts +2 -1
  52. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
  53. package/dist/src/connection-manager/dialer/index.js +3 -3
  54. package/dist/src/connection-manager/dialer/index.js.map +1 -1
  55. package/dist/src/index.d.ts +5 -4
  56. package/dist/src/index.d.ts.map +1 -1
  57. package/dist/src/index.js.map +1 -1
  58. package/dist/src/libp2p.d.ts +2 -2
  59. package/dist/src/libp2p.d.ts.map +1 -1
  60. package/dist/src/libp2p.js +7 -19
  61. package/dist/src/libp2p.js.map +1 -1
  62. package/dist/src/transport-manager.js +1 -1
  63. package/dist/src/transport-manager.js.map +1 -1
  64. package/dist/src/upgrader.d.ts +2 -1
  65. package/dist/src/upgrader.d.ts.map +1 -1
  66. package/dist/src/upgrader.js +10 -10
  67. package/dist/src/upgrader.js.map +1 -1
  68. package/package.json +11 -5
  69. package/src/circuit/constants.ts +40 -5
  70. package/src/circuit/index.ts +17 -67
  71. package/src/circuit/server/advert-service.ts +108 -0
  72. package/src/circuit/server/index.ts +420 -0
  73. package/src/circuit/server/reservation-store.ts +111 -0
  74. package/src/circuit/{reservation-voucher.ts → server/reservation-voucher.ts} +3 -3
  75. package/src/circuit/transport/discovery.ts +127 -0
  76. package/src/circuit/transport/index.ts +325 -0
  77. package/src/circuit/transport/listener.ts +99 -0
  78. package/src/circuit/transport/reservation-store.ts +249 -0
  79. package/src/circuit/utils.ts +78 -115
  80. package/src/components.ts +2 -1
  81. package/src/config.ts +7 -18
  82. package/src/connection-manager/dialer/index.ts +5 -4
  83. package/src/index.ts +5 -4
  84. package/src/libp2p.ts +11 -24
  85. package/src/transport-manager.ts +1 -1
  86. package/src/upgrader.ts +12 -11
  87. package/src/version.ts +1 -1
  88. package/dist/src/circuit/client.d.ts +0 -81
  89. package/dist/src/circuit/client.d.ts.map +0 -1
  90. package/dist/src/circuit/client.js +0 -285
  91. package/dist/src/circuit/client.js.map +0 -1
  92. package/dist/src/circuit/hop.d.ts +0 -23
  93. package/dist/src/circuit/hop.d.ts.map +0 -1
  94. package/dist/src/circuit/hop.js +0 -167
  95. package/dist/src/circuit/hop.js.map +0 -1
  96. package/dist/src/circuit/interfaces.d.ts +0 -27
  97. package/dist/src/circuit/interfaces.d.ts.map +0 -1
  98. package/dist/src/circuit/interfaces.js +0 -2
  99. package/dist/src/circuit/interfaces.js.map +0 -1
  100. package/dist/src/circuit/listener.d.ts +0 -9
  101. package/dist/src/circuit/listener.d.ts.map +0 -1
  102. package/dist/src/circuit/listener.js +0 -62
  103. package/dist/src/circuit/listener.js.map +0 -1
  104. package/dist/src/circuit/multicodec.d.ts +0 -3
  105. package/dist/src/circuit/multicodec.d.ts.map +0 -1
  106. package/dist/src/circuit/multicodec.js +0 -3
  107. package/dist/src/circuit/multicodec.js.map +0 -1
  108. package/dist/src/circuit/relay.d.ts +0 -34
  109. package/dist/src/circuit/relay.d.ts.map +0 -1
  110. package/dist/src/circuit/relay.js +0 -61
  111. package/dist/src/circuit/relay.js.map +0 -1
  112. package/dist/src/circuit/reservation-store.d.ts.map +0 -1
  113. package/dist/src/circuit/reservation-store.js +0 -59
  114. package/dist/src/circuit/reservation-store.js.map +0 -1
  115. package/dist/src/circuit/reservation-voucher.d.ts.map +0 -1
  116. package/dist/src/circuit/reservation-voucher.js.map +0 -1
  117. package/dist/src/circuit/stop.d.ts +0 -19
  118. package/dist/src/circuit/stop.d.ts.map +0 -1
  119. package/dist/src/circuit/stop.js +0 -67
  120. package/dist/src/circuit/stop.js.map +0 -1
  121. package/dist/src/circuit/transport.d.ts +0 -66
  122. package/dist/src/circuit/transport.d.ts.map +0 -1
  123. package/dist/src/circuit/transport.js +0 -238
  124. package/dist/src/circuit/transport.js.map +0 -1
  125. package/src/circuit/client.ts +0 -381
  126. package/src/circuit/hop.ts +0 -210
  127. package/src/circuit/interfaces.ts +0 -28
  128. package/src/circuit/listener.ts +0 -83
  129. package/src/circuit/multicodec.ts +0 -3
  130. package/src/circuit/relay.ts +0 -87
  131. package/src/circuit/reservation-store.ts +0 -106
  132. package/src/circuit/stop.ts +0 -92
  133. package/src/circuit/transport.ts +0 -313
  134. /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
- * Maximum reservations for auto relay
18
+ * The maximum number of relay reservations the relay server will accept
19
19
  */
20
- export declare const DEFAULT_MAX_RESERVATIONS = 1;
21
- export declare const RELAY_DESTINATION_TAG = "relay-destination";
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":"AAEA;;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,wBAAwB,IAAI,CAAA;AAEzC,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AAMxD,eAAO,MAAM,sBAAsB,QAAgB,CAAA;AAGnD,eAAO,MAAM,kBAAkB,QAAkB,CAAA"}
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 minute = 60 * 1000;
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
- * Maximum reservations for auto relay
20
+ * The maximum number of relay reservations the relay server will accept
20
21
  */
21
- export const DEFAULT_MAX_RESERVATIONS = 1;
22
- export const RELAY_DESTINATION_TAG = 'relay-destination';
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 * 60 * 1000;
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,IAAI,CAAA;AAExB;;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,wBAAwB,GAAG,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAExD,+BAA+B;AAC/B,oGAAoG;AAEpG,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAEnD,iCAAiC;AACjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA"}
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
- * RelayConfig configures the circuit v2 relay transport.
3
- */
4
- export interface RelayConfig {
5
- /**
6
- * Enable dialing a client over a relay and receiving relayed connections.
7
- * This in itself does not enable the node to act as a relay.
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
- * RelayReservationManagerConfig allows the node to automatically listen
16
- * on any discovered relays upto a specified maximum.
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
- * Configures using the node as a HOP relay
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 interface RelayAdvertiseConfig {
60
- bootDelay?: number;
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;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,oBAAoB,CAAA;IAC/B,GAAG,EAAE,SAAS,CAAA;IACd,kBAAkB,EAAE,6BAA6B,CAAA;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAE/B;;;OAGG;IACH,KAAK,CAAC,EAAE;QACN;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAA;QAEjB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
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,2 +1,3 @@
1
- export { Relay } from './relay.js';
1
+ export { circuitRelayServer } from './server/index.js';
2
+ export { circuitRelayTransport } from './transport/index.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/circuit/index.ts"],"names":[],"mappings":"AAwEA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
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"}