libp2p 2.10.0 → 3.0.0-049bfa0fa

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 (121) hide show
  1. package/README.md +39 -37
  2. package/dist/index.min.js +14 -17
  3. package/dist/index.min.js.map +4 -4
  4. package/dist/src/address-manager/dns-mappings.d.ts +1 -2
  5. package/dist/src/address-manager/dns-mappings.d.ts.map +1 -1
  6. package/dist/src/address-manager/dns-mappings.js +39 -43
  7. package/dist/src/address-manager/dns-mappings.js.map +1 -1
  8. package/dist/src/address-manager/index.d.ts.map +1 -1
  9. package/dist/src/address-manager/index.js +31 -14
  10. package/dist/src/address-manager/index.js.map +1 -1
  11. package/dist/src/address-manager/ip-mappings.d.ts +1 -0
  12. package/dist/src/address-manager/ip-mappings.d.ts.map +1 -1
  13. package/dist/src/address-manager/ip-mappings.js +51 -40
  14. package/dist/src/address-manager/ip-mappings.js.map +1 -1
  15. package/dist/src/address-manager/observed-addresses.d.ts.map +1 -1
  16. package/dist/src/address-manager/observed-addresses.js +1 -3
  17. package/dist/src/address-manager/observed-addresses.js.map +1 -1
  18. package/dist/src/address-manager/transport-addresses.d.ts.map +1 -1
  19. package/dist/src/address-manager/transport-addresses.js +6 -8
  20. package/dist/src/address-manager/transport-addresses.js.map +1 -1
  21. package/dist/src/config/connection-gater.browser.d.ts.map +1 -1
  22. package/dist/src/config/connection-gater.browser.js +8 -22
  23. package/dist/src/config/connection-gater.browser.js.map +1 -1
  24. package/dist/src/config/connection-gater.d.ts.map +1 -1
  25. package/dist/src/config/connection-gater.js +1 -12
  26. package/dist/src/config/connection-gater.js.map +1 -1
  27. package/dist/src/config.d.ts.map +1 -1
  28. package/dist/src/config.js +3 -22
  29. package/dist/src/config.js.map +1 -1
  30. package/dist/src/connection-manager/address-sorter.d.ts.map +1 -1
  31. package/dist/src/connection-manager/address-sorter.js +1 -2
  32. package/dist/src/connection-manager/address-sorter.js.map +1 -1
  33. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  34. package/dist/src/connection-manager/connection-pruner.js +7 -3
  35. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  36. package/dist/src/connection-manager/constants.defaults.d.ts +4 -0
  37. package/dist/src/connection-manager/constants.defaults.d.ts.map +1 -1
  38. package/dist/src/connection-manager/constants.defaults.js +4 -0
  39. package/dist/src/connection-manager/constants.defaults.js.map +1 -1
  40. package/dist/src/connection-manager/dial-queue.d.ts +2 -2
  41. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  42. package/dist/src/connection-manager/dial-queue.js +11 -23
  43. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  44. package/dist/src/connection-manager/index.d.ts +10 -18
  45. package/dist/src/connection-manager/index.d.ts.map +1 -1
  46. package/dist/src/connection-manager/index.js +44 -26
  47. package/dist/src/connection-manager/index.js.map +1 -1
  48. package/dist/src/connection-manager/reconnect-queue.js +1 -1
  49. package/dist/src/connection-manager/reconnect-queue.js.map +1 -1
  50. package/dist/src/connection-manager/utils.d.ts +31 -3
  51. package/dist/src/connection-manager/utils.d.ts.map +1 -1
  52. package/dist/src/connection-manager/utils.js +99 -18
  53. package/dist/src/connection-manager/utils.js.map +1 -1
  54. package/dist/src/connection-monitor.d.ts +1 -1
  55. package/dist/src/connection-monitor.d.ts.map +1 -1
  56. package/dist/src/connection-monitor.js +2 -3
  57. package/dist/src/connection-monitor.js.map +1 -1
  58. package/dist/src/connection.d.ts +14 -9
  59. package/dist/src/connection.d.ts.map +1 -1
  60. package/dist/src/connection.js +118 -139
  61. package/dist/src/connection.js.map +1 -1
  62. package/dist/src/get-peer.js +3 -3
  63. package/dist/src/get-peer.js.map +1 -1
  64. package/dist/src/index.d.ts +2 -2
  65. package/dist/src/index.js +2 -2
  66. package/dist/src/libp2p.d.ts +3 -1
  67. package/dist/src/libp2p.d.ts.map +1 -1
  68. package/dist/src/libp2p.js +13 -7
  69. package/dist/src/libp2p.js.map +1 -1
  70. package/dist/src/peer-routing.js +1 -1
  71. package/dist/src/peer-routing.js.map +1 -1
  72. package/dist/src/random-walk.d.ts.map +1 -1
  73. package/dist/src/random-walk.js +13 -3
  74. package/dist/src/random-walk.js.map +1 -1
  75. package/dist/src/registrar.d.ts +8 -4
  76. package/dist/src/registrar.d.ts.map +1 -1
  77. package/dist/src/registrar.js +66 -46
  78. package/dist/src/registrar.js.map +1 -1
  79. package/dist/src/transport-manager.js +15 -2
  80. package/dist/src/transport-manager.js.map +1 -1
  81. package/dist/src/upgrader.d.ts +26 -16
  82. package/dist/src/upgrader.d.ts.map +1 -1
  83. package/dist/src/upgrader.js +88 -122
  84. package/dist/src/upgrader.js.map +1 -1
  85. package/dist/src/utils.d.ts +3 -0
  86. package/dist/src/utils.d.ts.map +1 -0
  87. package/dist/src/utils.js +25 -0
  88. package/dist/src/utils.js.map +1 -0
  89. package/dist/src/version.d.ts +1 -1
  90. package/dist/src/version.d.ts.map +1 -1
  91. package/dist/src/version.js +1 -1
  92. package/dist/src/version.js.map +1 -1
  93. package/package.json +27 -30
  94. package/src/address-manager/dns-mappings.ts +50 -50
  95. package/src/address-manager/index.ts +37 -17
  96. package/src/address-manager/ip-mappings.ts +64 -44
  97. package/src/address-manager/observed-addresses.ts +1 -3
  98. package/src/address-manager/transport-addresses.ts +7 -9
  99. package/src/config/connection-gater.browser.ts +8 -24
  100. package/src/config/connection-gater.ts +1 -12
  101. package/src/config.ts +3 -25
  102. package/src/connection-manager/address-sorter.ts +1 -2
  103. package/src/connection-manager/connection-pruner.ts +8 -3
  104. package/src/connection-manager/constants.defaults.ts +5 -0
  105. package/src/connection-manager/dial-queue.ts +12 -27
  106. package/src/connection-manager/index.ts +60 -45
  107. package/src/connection-manager/reconnect-queue.ts +1 -1
  108. package/src/connection-manager/utils.ts +129 -21
  109. package/src/connection-monitor.ts +3 -4
  110. package/src/connection.ts +142 -179
  111. package/src/get-peer.ts +3 -3
  112. package/src/index.ts +2 -2
  113. package/src/libp2p.ts +16 -9
  114. package/src/peer-routing.ts +1 -1
  115. package/src/random-walk.ts +13 -3
  116. package/src/registrar.ts +87 -61
  117. package/src/transport-manager.ts +18 -2
  118. package/src/upgrader.ts +132 -149
  119. package/src/utils.ts +31 -0
  120. package/src/version.ts +1 -1
  121. package/dist/typedoc-urls.json +0 -24
@@ -1,18 +1,22 @@
1
- import type { Libp2pEvents, AbortOptions, ComponentLogger, MultiaddrConnection, Connection, ConnectionProtector, ConnectionEncrypter, SecuredConnection, ConnectionGater, Metrics, PeerId, PeerStore, StreamMuxerFactory, Upgrader as UpgraderInterface, UpgraderOptions, ConnectionLimits, SecureConnectionOptions, ClearableSignal } from '@libp2p/interface';
1
+ import type { Libp2pEvents, AbortOptions, ComponentLogger, MultiaddrConnection, Connection, ConnectionProtector, ConnectionEncrypter, ConnectionGater, Metrics, PeerId, PeerStore, StreamMuxerFactory, Upgrader as UpgraderInterface, UpgraderOptions, ConnectionLimits, ClearableSignal, MessageStream, SecuredConnection, StreamMuxer, UpgraderWithoutEncryptionOptions, SecureConnectionOptions } from '@libp2p/interface';
2
2
  import type { ConnectionManager, Registrar } from '@libp2p/interface-internal';
3
3
  import type { TypedEventTarget } from 'main-event';
4
4
  interface CreateConnectionOptions {
5
5
  id: string;
6
6
  cryptoProtocol: string;
7
7
  direction: 'inbound' | 'outbound';
8
+ /**
9
+ * The raw underlying connection
10
+ */
8
11
  maConn: MultiaddrConnection;
9
- upgradedConn: MultiaddrConnection;
12
+ /**
13
+ * The encrypted, multiplexed connection
14
+ */
15
+ stream: MessageStream;
10
16
  remotePeer: PeerId;
11
- muxerFactory?: StreamMuxerFactory;
17
+ muxer?: StreamMuxer;
12
18
  limits?: ConnectionLimits;
13
- }
14
- export interface CryptoResult extends SecuredConnection<MultiaddrConnection> {
15
- protocol: string;
19
+ closeTimeout?: number;
16
20
  }
17
21
  export interface UpgraderInit {
18
22
  connectionEncrypters: ConnectionEncrypter[];
@@ -37,6 +41,12 @@ export interface UpgraderInit {
37
41
  * @default 2000
38
42
  */
39
43
  outboundStreamProtocolNegotiationTimeout?: number;
44
+ /**
45
+ * How long to wait before closing a connection
46
+ *
47
+ * @default 1_000
48
+ */
49
+ connectionCloseTimeout?: number;
40
50
  }
41
51
  export interface UpgraderComponents {
42
52
  peerId: PeerId;
@@ -49,6 +59,9 @@ export interface UpgraderComponents {
49
59
  events: TypedEventTarget<Libp2pEvents>;
50
60
  logger: ComponentLogger;
51
61
  }
62
+ interface EncryptedConnection extends SecuredConnection {
63
+ protocol: string;
64
+ }
52
65
  type ConnectionDeniedType = keyof Pick<ConnectionGater, 'denyOutboundConnection' | 'denyInboundEncryptedConnection' | 'denyOutboundEncryptedConnection' | 'denyInboundUpgradedConnection' | 'denyOutboundUpgradedConnection'>;
53
66
  export declare class Upgrader implements UpgraderInterface {
54
67
  private readonly components;
@@ -59,6 +72,7 @@ export declare class Upgrader implements UpgraderInterface {
59
72
  private readonly outboundStreamProtocolNegotiationTimeout;
60
73
  private readonly events;
61
74
  private readonly metrics;
75
+ private readonly connectionCloseTimeout?;
62
76
  constructor(components: UpgraderComponents, init: UpgraderInit);
63
77
  readonly [Symbol.toStringTag] = "@libp2p/upgrader";
64
78
  shouldBlockConnection(connectionType: 'denyInboundConnection', maConn: MultiaddrConnection): Promise<void>;
@@ -68,10 +82,12 @@ export declare class Upgrader implements UpgraderInterface {
68
82
  * Upgrades an inbound connection
69
83
  */
70
84
  upgradeInbound(maConn: MultiaddrConnection, opts: UpgraderOptions): Promise<void>;
85
+ upgradeInbound(maConn: MultiaddrConnection, opts: UpgraderWithoutEncryptionOptions): Promise<void>;
71
86
  /**
72
87
  * Upgrades an outbound connection
73
88
  */
74
89
  upgradeOutbound(maConn: MultiaddrConnection, opts: UpgraderOptions): Promise<Connection>;
90
+ upgradeOutbound(maConn: MultiaddrConnection, opts: UpgraderWithoutEncryptionOptions): Promise<Connection>;
75
91
  private _performUpgrade;
76
92
  /**
77
93
  * A convenience method for generating a new `Connection`
@@ -80,28 +96,22 @@ export declare class Upgrader implements UpgraderInterface {
80
96
  /**
81
97
  * Attempts to encrypt the incoming `connection` with the provided `cryptos`
82
98
  */
83
- _encryptInbound(connection: MultiaddrConnection, options?: AbortOptions): Promise<CryptoResult>;
99
+ _encryptInbound(connection: MessageStream, options?: SecureConnectionOptions): Promise<EncryptedConnection>;
84
100
  /**
85
101
  * Attempts to encrypt the given `connection` with the provided connection encrypters.
86
102
  * The first `ConnectionEncrypter` module to succeed will be used
87
103
  */
88
- _encryptOutbound(connection: MultiaddrConnection, options: SecureConnectionOptions): Promise<CryptoResult>;
104
+ _encryptOutbound(connection: MessageStream, options?: SecureConnectionOptions): Promise<EncryptedConnection>;
89
105
  /**
90
106
  * Selects one of the given muxers via multistream-select. That
91
107
  * muxer will be used for all future streams on the connection.
92
108
  */
93
- _multiplexOutbound(connection: MultiaddrConnection, muxers: Map<string, StreamMuxerFactory>, options: AbortOptions): Promise<{
94
- stream: MultiaddrConnection;
95
- muxerFactory?: StreamMuxerFactory;
96
- }>;
109
+ _multiplexOutbound(maConn: MessageStream, muxers: Map<string, StreamMuxerFactory>, options: AbortOptions): Promise<StreamMuxerFactory>;
97
110
  /**
98
111
  * Registers support for one of the given muxers via multistream-select. The
99
112
  * selected muxer will be used for all future streams on the connection.
100
113
  */
101
- _multiplexInbound(connection: MultiaddrConnection, muxers: Map<string, StreamMuxerFactory>, options: AbortOptions): Promise<{
102
- stream: MultiaddrConnection;
103
- muxerFactory?: StreamMuxerFactory;
104
- }>;
114
+ _multiplexInbound(maConn: MessageStream, muxers: Map<string, StreamMuxerFactory>, options: AbortOptions): Promise<StreamMuxerFactory>;
105
115
  getConnectionEncrypters(): Map<string, ConnectionEncrypter<unknown>>;
106
116
  getStreamMuxers(): Map<string, StreamMuxerFactory>;
107
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,QAAQ,IAAI,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAgB,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,gCAAgC,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3a,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,UAAU,uBAAuB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,SAAS,GAAG,UAAU,CAAA;IAEjC;;OAEG;IACH,MAAM,EAAE,mBAAmB,CAAA;IAE3B;;OAEG;IACH,MAAM,EAAE,aAAa,CAAA;IAErB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,oBAAoB,EAAE,mBAAmB,EAAE,CAAA;IAC3C,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAElC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;;OAKG;IACH,uCAAuC,CAAC,EAAE,MAAM,CAAA;IAEhD;;;;;OAKG;IACH,wCAAwC,CAAC,EAAE,MAAM,CAAA;IAEjD;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,eAAe,EAAE,eAAe,CAAA;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,KAAK,oBAAoB,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,wBAAwB,GAAG,gCAAgC,GAAG,iCAAiC,GAAG,+BAA+B,GAAG,gCAAgC,CAAC,CAAA;AAE7N,qBAAa,QAAS,YAAW,iBAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAkC;IACvE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,uCAAuC,CAAQ;IAChE,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAQ;IACjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAKvB;IAED,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAQ;gBAEnC,UAAU,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY;IAiC/D,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,sBAAqB;IAE5C,qBAAqB,CAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3G,qBAAqB,CAAE,cAAc,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAelI,wBAAwB,CAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAU/D;;OAEG;IACG,cAAc,CAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAClF,cAAc,CAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,gCAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CzG;;OAEG;IACG,eAAe,CAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IACzF,eAAe,CAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,gCAAgC,GAAG,OAAO,CAAC,UAAU,CAAC;YAmClG,eAAe;IAmH7B;;OAEG;IACH,iBAAiB,CAAE,IAAI,EAAE,uBAAuB,GAAG,UAAU;IAqB7D;;OAEG;IACG,eAAe,CAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsBlH;;;OAGG;IACG,gBAAgB,CAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwBnH;;;OAGG;IACG,kBAAkB,CAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqB7I;;;OAGG;IACG,iBAAiB,CAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoB5I,uBAAuB,IAAK,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAIrE,eAAe,IAAK,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;CAGpD"}
@@ -1,12 +1,13 @@
1
1
  import { InvalidMultiaddrError, InvalidPeerIdError } from '@libp2p/interface';
2
2
  import * as mss from '@libp2p/multistream-select';
3
3
  import { peerIdFromString } from '@libp2p/peer-id';
4
- import { trackedMap } from '@libp2p/utils/tracked-map';
4
+ import { trackedMap } from '@libp2p/utils';
5
+ import { CODE_P2P } from '@multiformats/multiaddr';
5
6
  import { anySignal } from 'any-signal';
6
7
  import { setMaxListeners } from 'main-event';
7
8
  import { CustomProgressEvent } from 'progress-events';
8
9
  import { raceSignal } from 'race-signal';
9
- import { PROTOCOL_NEGOTIATION_TIMEOUT, INBOUND_UPGRADE_TIMEOUT } from './connection-manager/constants.js';
10
+ import { PROTOCOL_NEGOTIATION_TIMEOUT, INBOUND_UPGRADE_TIMEOUT, CONNECTION_CLOSE_TIMEOUT } from './connection-manager/constants.js';
10
11
  import { createConnection } from './connection.js';
11
12
  import { ConnectionDeniedError, ConnectionInterceptedError, EncryptionFailedError, MuxerUnavailableError } from './errors.js';
12
13
  export class Upgrader {
@@ -18,6 +19,7 @@ export class Upgrader {
18
19
  outboundStreamProtocolNegotiationTimeout;
19
20
  events;
20
21
  metrics;
22
+ connectionCloseTimeout;
21
23
  constructor(components, init) {
22
24
  this.components = components;
23
25
  this.connectionEncrypters = trackedMap({
@@ -37,6 +39,7 @@ export class Upgrader {
37
39
  this.inboundUpgradeTimeout = init.inboundUpgradeTimeout ?? INBOUND_UPGRADE_TIMEOUT;
38
40
  this.inboundStreamProtocolNegotiationTimeout = init.inboundStreamProtocolNegotiationTimeout ?? PROTOCOL_NEGOTIATION_TIMEOUT;
39
41
  this.outboundStreamProtocolNegotiationTimeout = init.outboundStreamProtocolNegotiationTimeout ?? PROTOCOL_NEGOTIATION_TIMEOUT;
42
+ this.connectionCloseTimeout = init.connectionCloseTimeout ?? CONNECTION_CLOSE_TIMEOUT;
40
43
  this.events = components.events;
41
44
  this.metrics = {
42
45
  dials: components.metrics?.registerCounterGroup('libp2p_connection_manager_dials_total'),
@@ -64,9 +67,6 @@ export class Upgrader {
64
67
  setMaxListeners(Infinity, output);
65
68
  return output;
66
69
  }
67
- /**
68
- * Upgrades an inbound connection
69
- */
70
70
  async upgradeInbound(maConn, opts) {
71
71
  let accepted = false;
72
72
  // always apply upgrade timeout for incoming upgrades
@@ -75,7 +75,7 @@ export class Upgrader {
75
75
  this.metrics.dials?.increment({
76
76
  inbound: true
77
77
  });
78
- accepted = await raceSignal(this.components.connectionManager.acceptIncomingConnection(maConn), signal);
78
+ accepted = this.components.connectionManager.acceptIncomingConnection(maConn);
79
79
  if (!accepted) {
80
80
  throw new ConnectionDeniedError('Connection denied');
81
81
  }
@@ -101,15 +101,12 @@ export class Upgrader {
101
101
  }
102
102
  }
103
103
  }
104
- /**
105
- * Upgrades an outbound connection
106
- */
107
104
  async upgradeOutbound(maConn, opts) {
108
105
  try {
109
106
  this.metrics.dials?.increment({
110
107
  outbound: true
111
108
  });
112
- const idStr = maConn.remoteAddr.getPeerId();
109
+ const idStr = maConn.remoteAddr.getComponents().findLast(c => c.code === CODE_P2P)?.value;
113
110
  let remotePeerId;
114
111
  if (idStr != null) {
115
112
  remotePeerId = peerIdFromString(idStr);
@@ -133,51 +130,53 @@ export class Upgrader {
133
130
  }
134
131
  }
135
132
  async _performUpgrade(maConn, direction, opts) {
136
- let encryptedConn;
133
+ let stream = maConn;
137
134
  let remotePeer;
138
- let upgradedConn;
139
135
  let muxerFactory;
136
+ let muxer;
140
137
  let cryptoProtocol;
141
138
  const id = `${(parseInt(String(Math.random() * 1e9))).toString(36)}${Date.now()}`;
142
139
  maConn.log = maConn.log.newScope(`${direction}:${id}`);
143
140
  this.components.metrics?.trackMultiaddrConnection(maConn);
144
141
  maConn.log.trace('starting the %s connection upgrade', direction);
145
142
  // Protect
146
- let protectedConn = maConn;
147
143
  if (opts?.skipProtection !== true) {
148
144
  const protector = this.components.connectionProtector;
149
145
  if (protector != null) {
150
146
  maConn.log('protecting the %s connection', direction);
151
- protectedConn = await protector.protect(maConn, opts);
147
+ stream = await protector.protect(stream, opts);
152
148
  }
153
149
  }
154
150
  try {
155
151
  // Encrypt the connection
156
- encryptedConn = protectedConn;
157
- if (opts?.skipEncryption !== true) {
152
+ if (isEncryptionSkipped(opts)) {
153
+ if (opts.remotePeer == null) {
154
+ throw new InvalidMultiaddrError(`${direction} connection that skipped encryption must have a peer id`);
155
+ }
156
+ cryptoProtocol = 'native';
157
+ remotePeer = opts.remotePeer;
158
+ }
159
+ else {
160
+ const peerIdString = maConn.remoteAddr.getComponents().findLast(c => c.code === CODE_P2P)?.value;
161
+ let remotePeerFromMultiaddr;
162
+ if (peerIdString != null) {
163
+ remotePeerFromMultiaddr = peerIdFromString(peerIdString);
164
+ }
158
165
  opts?.onProgress?.(new CustomProgressEvent(`upgrader:encrypt-${direction}-connection`));
159
166
  ({
160
- conn: encryptedConn,
167
+ connection: stream,
161
168
  remotePeer,
162
169
  protocol: cryptoProtocol,
163
170
  streamMuxer: muxerFactory
164
171
  } = await (direction === 'inbound'
165
- ? this._encryptInbound(protectedConn, opts)
166
- : this._encryptOutbound(protectedConn, opts)));
167
- const maConn = {
168
- ...protectedConn,
169
- ...encryptedConn
170
- };
171
- await this.shouldBlockConnection(direction === 'inbound' ? 'denyInboundEncryptedConnection' : 'denyOutboundEncryptedConnection', remotePeer, maConn);
172
- }
173
- else {
174
- const idStr = maConn.remoteAddr.getPeerId();
175
- if (idStr == null) {
176
- throw new InvalidMultiaddrError(`${direction} connection that skipped encryption must have a peer id`);
177
- }
178
- const remotePeerId = peerIdFromString(idStr);
179
- cryptoProtocol = 'native';
180
- remotePeer = remotePeerId;
172
+ ? this._encryptInbound(stream, {
173
+ ...opts,
174
+ remotePeer: remotePeerFromMultiaddr
175
+ })
176
+ : this._encryptOutbound(stream, {
177
+ ...opts,
178
+ remotePeer: remotePeerFromMultiaddr
179
+ })));
181
180
  }
182
181
  // this can happen if we dial a multiaddr without a peer id, we only find
183
182
  // out the identity of the remote after the connection is encrypted
@@ -186,89 +185,61 @@ export class Upgrader {
186
185
  maConn.abort(err);
187
186
  throw err;
188
187
  }
189
- upgradedConn = encryptedConn;
188
+ // stream.pause()
189
+ await this.shouldBlockConnection(direction === 'inbound' ? 'denyInboundEncryptedConnection' : 'denyOutboundEncryptedConnection', remotePeer, maConn);
190
+ // stream.resume()
190
191
  if (opts?.muxerFactory != null) {
191
192
  muxerFactory = opts.muxerFactory;
192
193
  }
193
194
  else if (muxerFactory == null && this.streamMuxers.size > 0) {
194
195
  opts?.onProgress?.(new CustomProgressEvent(`upgrader:multiplex-${direction}-connection`));
195
196
  // Multiplex the connection
196
- const multiplexed = await (direction === 'inbound'
197
- ? this._multiplexInbound({
198
- ...protectedConn,
199
- ...encryptedConn
200
- }, this.streamMuxers, opts)
201
- : this._multiplexOutbound({
202
- ...protectedConn,
203
- ...encryptedConn
204
- }, this.streamMuxers, opts));
205
- muxerFactory = multiplexed.muxerFactory;
206
- upgradedConn = multiplexed.stream;
197
+ muxerFactory = await (direction === 'inbound'
198
+ ? this._multiplexInbound(stream, this.streamMuxers, opts)
199
+ : this._multiplexOutbound(stream, this.streamMuxers, opts));
207
200
  }
208
201
  }
209
202
  catch (err) {
210
- maConn.log.error('failed to upgrade inbound connection %s %a - %e', direction === 'inbound' ? 'from' : 'to', maConn.remoteAddr, err);
203
+ maConn.log.error('failed to upgrade %s connection %s %a - %e', direction, direction === 'inbound' ? 'from' : 'to', maConn.remoteAddr, err);
211
204
  throw err;
212
205
  }
206
+ // create the connection muxer if one is configured
207
+ if (muxerFactory != null) {
208
+ maConn.log('create muxer %s', muxerFactory.protocol);
209
+ muxer = muxerFactory.createStreamMuxer(stream);
210
+ }
211
+ // stream.pause()
213
212
  await this.shouldBlockConnection(direction === 'inbound' ? 'denyInboundUpgradedConnection' : 'denyOutboundUpgradedConnection', remotePeer, maConn);
214
213
  const conn = this._createConnection({
215
214
  id,
216
215
  cryptoProtocol,
217
216
  direction,
218
217
  maConn,
219
- upgradedConn,
220
- muxerFactory,
218
+ stream,
219
+ muxer,
221
220
  remotePeer,
222
- limits: opts?.limits
221
+ limits: opts?.limits,
222
+ closeTimeout: this.connectionCloseTimeout
223
223
  });
224
- conn.log('successfully upgraded %s connection', direction);
224
+ conn.log('successfully upgraded connection');
225
+ // stream.resume()
225
226
  return conn;
226
227
  }
227
228
  /**
228
229
  * A convenience method for generating a new `Connection`
229
230
  */
230
231
  _createConnection(opts) {
231
- const { id, cryptoProtocol, direction, maConn, upgradedConn, remotePeer, muxerFactory, limits } = opts;
232
- let connection; // eslint-disable-line prefer-const
233
- const _timeline = maConn.timeline;
234
- maConn.timeline = new Proxy(_timeline, {
235
- set: (...args) => {
236
- if (args[1] === 'close' && args[2] != null && _timeline.close == null) {
237
- // Wait for close to finish before notifying of the closure
238
- (async () => {
239
- try {
240
- if (connection.status === 'open') {
241
- await connection.close();
242
- }
243
- }
244
- catch (err) {
245
- connection.log.error('error closing connection after timeline close %e', err);
246
- }
247
- finally {
248
- this.events.safeDispatchEvent('connection:close', {
249
- detail: connection
250
- });
251
- }
252
- })().catch(err => {
253
- connection.log.error('error thrown while dispatching connection:close event %e', err);
254
- });
255
- }
256
- return Reflect.set(...args);
257
- }
258
- });
259
- maConn.timeline.upgraded = Date.now();
260
232
  // Create the connection
261
- connection = createConnection(this.components, {
262
- id,
263
- maConn: upgradedConn,
264
- remotePeer,
265
- direction,
266
- muxerFactory,
267
- encryption: cryptoProtocol,
268
- limits,
233
+ const connection = createConnection(this.components, {
234
+ ...opts,
269
235
  outboundStreamProtocolNegotiationTimeout: this.outboundStreamProtocolNegotiationTimeout,
270
236
  inboundStreamProtocolNegotiationTimeout: this.inboundStreamProtocolNegotiationTimeout
271
237
  });
238
+ connection.addEventListener('close', () => {
239
+ this.events.safeDispatchEvent('connection:close', {
240
+ detail: connection
241
+ });
242
+ });
272
243
  this.events.safeDispatchEvent('connection:open', {
273
244
  detail: connection
274
245
  });
@@ -280,22 +251,18 @@ export class Upgrader {
280
251
  async _encryptInbound(connection, options) {
281
252
  const protocols = Array.from(this.connectionEncrypters.keys());
282
253
  try {
283
- const { stream, protocol } = await mss.handle(connection, protocols, {
284
- ...options,
285
- log: connection.log
286
- });
254
+ const protocol = await mss.handle(connection, protocols, options);
287
255
  const encrypter = this.connectionEncrypters.get(protocol);
288
256
  if (encrypter == null) {
289
257
  throw new EncryptionFailedError(`no crypto module found for ${protocol}`);
290
258
  }
291
- connection.log('encrypting inbound connection to %a using %s', connection.remoteAddr, protocol);
259
+ connection.log('encrypting inbound connection using %s', protocol);
292
260
  return {
293
- ...await encrypter.secureInbound(stream, options),
261
+ ...await encrypter.secureInbound(connection, options),
294
262
  protocol
295
263
  };
296
264
  }
297
265
  catch (err) {
298
- connection.log.error('encrypting inbound connection from %a failed', connection.remoteAddr, err);
299
266
  throw new EncryptionFailedError(err.message);
300
267
  }
301
268
  }
@@ -307,23 +274,18 @@ export class Upgrader {
307
274
  const protocols = Array.from(this.connectionEncrypters.keys());
308
275
  try {
309
276
  connection.log.trace('selecting encrypter from %s', protocols);
310
- const { stream, protocol } = await mss.select(connection, protocols, {
311
- ...options,
312
- log: connection.log,
313
- yieldBytes: true
314
- });
277
+ const protocol = await mss.select(connection, protocols, options);
315
278
  const encrypter = this.connectionEncrypters.get(protocol);
316
279
  if (encrypter == null) {
317
280
  throw new EncryptionFailedError(`no crypto module found for ${protocol}`);
318
281
  }
319
- connection.log('encrypting outbound connection to %a using %s', connection.remoteAddr, protocol);
282
+ connection.log('encrypting outbound connection using %s', protocol);
320
283
  return {
321
- ...await encrypter.secureOutbound(stream, options),
284
+ ...await encrypter.secureOutbound(connection, options),
322
285
  protocol
323
286
  };
324
287
  }
325
288
  catch (err) {
326
- connection.log.error('encrypting outbound connection to %a failed', connection.remoteAddr, err);
327
289
  throw new EncryptionFailedError(err.message);
328
290
  }
329
291
  }
@@ -331,22 +293,21 @@ export class Upgrader {
331
293
  * Selects one of the given muxers via multistream-select. That
332
294
  * muxer will be used for all future streams on the connection.
333
295
  */
334
- async _multiplexOutbound(connection, muxers, options) {
296
+ async _multiplexOutbound(maConn, muxers, options) {
335
297
  const protocols = Array.from(muxers.keys());
336
- connection.log('outbound selecting muxer %s', protocols);
298
+ maConn.log('outbound selecting muxer %s', protocols);
337
299
  try {
338
- connection.log.trace('selecting stream muxer from %s', protocols);
339
- const { stream, protocol } = await mss.select(connection, protocols, {
340
- ...options,
341
- log: connection.log,
342
- yieldBytes: true
343
- });
344
- connection.log('selected %s as muxer protocol', protocol);
300
+ maConn.log.trace('selecting stream muxer from %s', protocols);
301
+ const protocol = await mss.select(maConn, protocols, options);
345
302
  const muxerFactory = muxers.get(protocol);
346
- return { stream, muxerFactory };
303
+ if (muxerFactory == null) {
304
+ throw new MuxerUnavailableError(`No muxer configured for protocol "${protocol}"`);
305
+ }
306
+ maConn.log('selected %s as muxer protocol', protocol);
307
+ return muxerFactory;
347
308
  }
348
309
  catch (err) {
349
- connection.log.error('error multiplexing outbound connection', err);
310
+ maConn.log.error('error multiplexing outbound connection', err);
350
311
  throw new MuxerUnavailableError(String(err));
351
312
  }
352
313
  }
@@ -354,20 +315,22 @@ export class Upgrader {
354
315
  * Registers support for one of the given muxers via multistream-select. The
355
316
  * selected muxer will be used for all future streams on the connection.
356
317
  */
357
- async _multiplexInbound(connection, muxers, options) {
318
+ async _multiplexInbound(maConn, muxers, options) {
358
319
  const protocols = Array.from(muxers.keys());
359
- connection.log('inbound handling muxers %s', protocols);
320
+ maConn.log('inbound handling muxers %s', protocols);
360
321
  try {
361
- const { stream, protocol } = await mss.handle(connection, protocols, {
362
- ...options,
363
- log: connection.log
364
- });
322
+ maConn.log.trace('selecting stream muxer from %s', protocols);
323
+ const protocol = await mss.handle(maConn, protocols, options);
365
324
  const muxerFactory = muxers.get(protocol);
366
- return { stream, muxerFactory };
325
+ if (muxerFactory == null) {
326
+ throw new MuxerUnavailableError(`No muxer configured for protocol "${protocol}"`);
327
+ }
328
+ maConn.log('selected %s as muxer protocol', protocol);
329
+ return muxerFactory;
367
330
  }
368
331
  catch (err) {
369
- connection.log.error('error multiplexing inbound connection', err);
370
- throw new MuxerUnavailableError(String(err));
332
+ maConn.log.error('error multiplexing inbound connection', err);
333
+ throw err;
371
334
  }
372
335
  }
373
336
  getConnectionEncrypters() {
@@ -377,4 +340,7 @@ export class Upgrader {
377
340
  return this.streamMuxers;
378
341
  }
379
342
  }
343
+ function isEncryptionSkipped(opts) {
344
+ return opts.skipEncryption === true;
345
+ }
380
346
  //# sourceMappingURL=upgrader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MessageStream } from '@libp2p/interface';
2
+ export declare function redirect(channelA: MessageStream, channelB: MessageStream): void;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,wBAAgB,QAAQ,CAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CA4BhF"}
@@ -0,0 +1,25 @@
1
+ export function redirect(channelA, channelB) {
2
+ channelA.addEventListener('message', (evt) => {
3
+ const sendMore = channelB.send(evt.data);
4
+ if (sendMore === false) {
5
+ channelA.pause();
6
+ channelA.addEventListener('drain', () => {
7
+ channelA.resume();
8
+ }, {
9
+ once: true
10
+ });
11
+ }
12
+ });
13
+ channelB.addEventListener('message', (evt) => {
14
+ const sendMore = channelA.send(evt.data);
15
+ if (sendMore === false) {
16
+ channelB.pause();
17
+ channelB.addEventListener('drain', () => {
18
+ channelB.resume();
19
+ }, {
20
+ once: true
21
+ });
22
+ }
23
+ });
24
+ }
25
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAE,QAAuB,EAAE,QAAuB;IACxE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAExC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,QAAQ,CAAC,KAAK,EAAE,CAAA;YAEhB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtC,QAAQ,CAAC,MAAM,EAAE,CAAA;YACnB,CAAC,EAAE;gBACD,IAAI,EAAE,IAAI;aACX,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAExC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,QAAQ,CAAC,KAAK,EAAE,CAAA;YAEhB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtC,QAAQ,CAAC,MAAM,EAAE,CAAA;YACnB,CAAC,EAAE;gBACD,IAAI,EAAE,IAAI;aACX,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare const version = "2.10.0";
1
+ export declare const version = "3.0.0-049bfa0fa";
2
2
  export declare const name = "js-libp2p";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAA;AAC/B,eAAO,MAAM,IAAI,cAAc,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,oBAAoB,CAAA;AACxC,eAAO,MAAM,IAAI,cAAc,CAAA"}
@@ -1,3 +1,3 @@
1
- export const version = '2.10.0';
1
+ export const version = '3.0.0-049bfa0fa';
2
2
  export const name = 'js-libp2p';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAA;AACxC,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAA"}