@libp2p/tcp 1.0.5 → 1.0.8
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/README.md +14 -12
- package/dist/src/index.d.ts +8 -21
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -11
- package/dist/src/index.js.map +1 -1
- package/dist/src/listener.js +1 -1
- package/dist/src/listener.js.map +1 -1
- package/package.json +16 -16
- package/src/index.ts +14 -33
- package/src/listener.ts +3 -3
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/transport)
|
|
13
13
|
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/connection)
|
|
14
14
|
|
|
15
|
-
> JavaScript implementation of the TCP module for libp2p. It exposes the [interface-transport](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/transport) for dial/listen. `libp2p-tcp` is a very thin shim that adds support for dialing to a `multiaddr`. This small shim will enable libp2p to use other transports.
|
|
15
|
+
> JavaScript implementation of the TCP module for libp2p. It exposes the [interface-transport](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport) for dial/listen. `libp2p-tcp` is a very thin shim that adds support for dialing to a `multiaddr`. This small shim will enable libp2p to use other transports.
|
|
16
16
|
|
|
17
17
|
## Table of Contents <!-- omit in toc -->
|
|
18
18
|
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
|
|
40
40
|
```js
|
|
41
41
|
import { TCP } from '@libp2p/tcp'
|
|
42
|
-
import {
|
|
43
|
-
import pipe from 'it-pipe'
|
|
42
|
+
import { multiaddr } from '@multiformats/multiaddr'
|
|
43
|
+
import {pipe} from 'it-pipe'
|
|
44
44
|
import all from 'it-all'
|
|
45
45
|
|
|
46
46
|
// A simple upgrader that just returns the MultiaddrConnection
|
|
@@ -51,12 +51,14 @@ const upgrader = {
|
|
|
51
51
|
|
|
52
52
|
const tcp = new TCP({ upgrader })
|
|
53
53
|
|
|
54
|
-
const listener = tcp.createListener({
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
const listener = tcp.createListener({
|
|
55
|
+
handler: (socket) => {
|
|
56
|
+
console.log('new connection opened')
|
|
57
|
+
pipe(
|
|
58
|
+
['hello', ' ', 'World!'],
|
|
59
|
+
socket
|
|
60
|
+
)
|
|
61
|
+
}
|
|
60
62
|
})
|
|
61
63
|
|
|
62
64
|
const addr = multiaddr('/ip4/127.0.0.1/tcp/9090')
|
|
@@ -79,14 +81,14 @@ Outputs:
|
|
|
79
81
|
```sh
|
|
80
82
|
listening
|
|
81
83
|
new connection opened
|
|
82
|
-
Value: hello
|
|
84
|
+
Value: hello World!
|
|
83
85
|
```
|
|
84
86
|
|
|
85
87
|
## API
|
|
86
88
|
|
|
87
89
|
### Transport
|
|
88
90
|
|
|
89
|
-
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/transport)
|
|
91
|
+
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport)
|
|
90
92
|
|
|
91
93
|
`libp2p-tcp` accepts TCP addresses as both IPFS and non IPFS encapsulated addresses, i.e:
|
|
92
94
|
|
|
@@ -97,7 +99,7 @@ Value: hello
|
|
|
97
99
|
|
|
98
100
|
### Connection
|
|
99
101
|
|
|
100
|
-
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/src/connection)
|
|
102
|
+
[](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/connection)
|
|
101
103
|
|
|
102
104
|
## Contribute
|
|
103
105
|
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,35 +1,22 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import net from 'net';
|
|
3
|
-
import
|
|
3
|
+
import { CreateListenerOptions, DialOptions, symbol, Transport } from '@libp2p/interfaces/transport';
|
|
4
4
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*/
|
|
12
|
-
interface TCPOptions {
|
|
13
|
-
upgrader: Upgrader;
|
|
14
|
-
}
|
|
15
|
-
interface DialOptions {
|
|
16
|
-
signal?: AbortSignal;
|
|
17
|
-
}
|
|
18
|
-
export declare class TCP implements Transport<DialOptions, ListenerOptions> {
|
|
19
|
-
private readonly _upgrader;
|
|
20
|
-
constructor(options: TCPOptions);
|
|
21
|
-
dial(ma: Multiaddr, options?: DialOptions): Promise<import("@libp2p/interfaces/dist/src/connection").Connection>;
|
|
22
|
-
_connect(ma: Multiaddr, options?: DialOptions): Promise<net.Socket>;
|
|
5
|
+
import type { AbortOptions } from '@libp2p/interfaces';
|
|
6
|
+
export declare class TCP implements Transport {
|
|
7
|
+
get [symbol](): true;
|
|
8
|
+
get [Symbol.toStringTag](): string;
|
|
9
|
+
dial(ma: Multiaddr, options: DialOptions): Promise<import("@libp2p/interfaces/dist/src/connection").Connection>;
|
|
10
|
+
_connect(ma: Multiaddr, options?: AbortOptions): Promise<net.Socket>;
|
|
23
11
|
/**
|
|
24
12
|
* Creates a TCP listener. The provided `handler` function will be called
|
|
25
13
|
* anytime a new incoming Connection has been successfully upgraded via
|
|
26
14
|
* `upgrader.upgradeInbound`.
|
|
27
15
|
*/
|
|
28
|
-
createListener(options
|
|
16
|
+
createListener(options: CreateListenerOptions): import("@libp2p/interfaces/transport").Listener;
|
|
29
17
|
/**
|
|
30
18
|
* Takes a list of `Multiaddr`s and returns only valid TCP addresses
|
|
31
19
|
*/
|
|
32
20
|
filter(multiaddrs: Multiaddr[]): Multiaddr[];
|
|
33
21
|
}
|
|
34
|
-
export {};
|
|
35
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AASrB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AASrB,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAItD,qBAAa,GAAI,YAAW,SAAS;IACnC,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAEK,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW;IAezC,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB;IA+DzD;;;;OAIG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB;IAI9C;;OAEG;IACH,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE;CAWhC"}
|
package/dist/src/index.js
CHANGED
|
@@ -5,18 +5,18 @@ import { logger } from '@libp2p/logger';
|
|
|
5
5
|
import { toMultiaddrConnection } from './socket-to-conn.js';
|
|
6
6
|
import { createListener } from './listener.js';
|
|
7
7
|
import { multiaddrToNetConfig } from './utils.js';
|
|
8
|
-
import { AbortError } from '
|
|
8
|
+
import { AbortError } from '@libp2p/interfaces/errors';
|
|
9
9
|
import { CODE_CIRCUIT, CODE_P2P } from './constants.js';
|
|
10
|
+
import { symbol } from '@libp2p/interfaces/transport';
|
|
10
11
|
const log = logger('libp2p:tcp');
|
|
11
12
|
export class TCP {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
this._upgrader = upgrader;
|
|
13
|
+
get [symbol]() {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
get [Symbol.toStringTag]() {
|
|
17
|
+
return this.constructor.name;
|
|
18
18
|
}
|
|
19
|
-
async dial(ma, options
|
|
19
|
+
async dial(ma, options) {
|
|
20
20
|
const socket = await this._connect(ma, options);
|
|
21
21
|
// Avoid uncaught errors caused by unstable connections
|
|
22
22
|
socket.on('error', err => {
|
|
@@ -24,7 +24,7 @@ export class TCP {
|
|
|
24
24
|
});
|
|
25
25
|
const maConn = toMultiaddrConnection(socket, { remoteAddr: ma, signal: options.signal });
|
|
26
26
|
log('new outbound connection %s', maConn.remoteAddr);
|
|
27
|
-
const conn = await
|
|
27
|
+
const conn = await options.upgrader.upgradeOutbound(maConn);
|
|
28
28
|
log('outbound connection %s upgraded', maConn.remoteAddr);
|
|
29
29
|
return conn;
|
|
30
30
|
}
|
|
@@ -81,8 +81,8 @@ export class TCP {
|
|
|
81
81
|
* anytime a new incoming Connection has been successfully upgraded via
|
|
82
82
|
* `upgrader.upgradeInbound`.
|
|
83
83
|
*/
|
|
84
|
-
createListener(options
|
|
85
|
-
return createListener(
|
|
84
|
+
createListener(options) {
|
|
85
|
+
return createListener(options);
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
88
|
* Takes a list of `Multiaddr`s and returns only valid TCP addresses
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAC5C,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/listener.js
CHANGED
|
@@ -70,7 +70,7 @@ export function createListener(context) {
|
|
|
70
70
|
let addrs = [];
|
|
71
71
|
const address = server.address();
|
|
72
72
|
if (address == null) {
|
|
73
|
-
|
|
73
|
+
return [];
|
|
74
74
|
}
|
|
75
75
|
if (typeof address === 'string') {
|
|
76
76
|
throw new Error('Incorrect server address type');
|
package/dist/src/listener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EACL,aAAa,EACb,oBAAoB,EACrB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAM9D,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAMzC;;GAEG;AACH,KAAK,UAAU,YAAY,CAAE,MAA2B;IACtD,IAAI;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;KACrB;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAA;KAC3D;AACH,CAAC;AAOD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAE,OAAgB;IAC9C,MAAM,EACJ,OAAO,EAAE,QAAQ,EAClB,GAAG,OAAO,CAAA;IAEX,IAAI,MAAqB,CAAA;IACzB,IAAI,aAAwB,CAAA;IAE5B,MAAM,MAAM,GAAmC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACrF,uDAAuD;QACvD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,IAAI,MAA2B,CAAA;QAC/B,IAAI;YACF,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,CAAA;SAC1D;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;YAC3C,OAAM;SACP;QAED,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QACnD,IAAI;YACF,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;iBAC5B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;gBACxD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;gBAEjC,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,OAAO,CAAC,IAAI,CAAC,CAAA;iBACd;gBAED,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EACL,aAAa,EACb,oBAAoB,EACrB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAM9D,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAMzC;;GAEG;AACH,KAAK,UAAU,YAAY,CAAE,MAA2B;IACtD,IAAI;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;KACrB;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAA;KAC3D;AACH,CAAC;AAOD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAE,OAAgB;IAC9C,MAAM,EACJ,OAAO,EAAE,QAAQ,EAClB,GAAG,OAAO,CAAA;IAEX,IAAI,MAAqB,CAAA;IACzB,IAAI,aAAwB,CAAA;IAE5B,MAAM,MAAM,GAAmC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACrF,uDAAuD;QACvD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,IAAI,MAA2B,CAAA;QAC/B,IAAI;YACF,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,CAAA;SAC1D;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;YAC3C,OAAM;SACP;QAED,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QACnD,IAAI;YACF,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;iBAC5B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;gBACxD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;gBAEjC,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,OAAO,CAAC,IAAI,CAAC,CAAA;iBACd;gBAED,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAa,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACrF,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;gBACjB,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;gBAE3C,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;YACrD,CAAC,CAAC,CAAA;SACL;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;YAE3C,YAAY,CAAC,MAAM,CAAC;iBACjB,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;YACrD,CAAC,CAAC,CAAA;SACL;IACH,CAAC,CAAC;IACF,+DAA+D;IAC/D,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAA;IAEtB,MAAM,QAAQ,GAAa,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,EAAE;QAC3D,QAAQ,EAAE,GAAG,EAAE;YACb,IAAI,KAAK,GAAgB,EAAE,CAAA;YAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;YAEhC,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,OAAO,EAAE,CAAA;aACV;YAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;aACjD;YAED,gDAAgD;YAChD,+CAA+C;YAC/C,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAC/C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;aAC1E;iBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;gBACpC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;aAC1E;YAED,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,EAAa,EAAE,EAAE;YAC9B,aAAa,GAAG,EAAE,CAAA;YAClB,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE,CAAA;YAEvB,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,aAAa,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;aAC7C;YAED,OAAO,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAA;gBACnD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAS,EAAE,EAAE;oBACnC,IAAI,GAAG,IAAI,IAAI,EAAE;wBACf,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;qBACnB;oBACD,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;oBACxC,OAAO,EAAE,CAAA;gBACX,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBACrB,OAAM;aACP;YAED,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;aACrE,CAAC,CAAA;YAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,MAAM;SACH,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;SAC3E,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAQ,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;SAC5F,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAEtE,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,SAAS,CAAE,MAAsC,EAAE,MAA2B,EAAE,MAAkB;IACzG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEjC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;IACvE,CAAC,CAAA;IAED,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;AACnC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/tcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Node.js implementation of the TCP module that libp2p uses, which implements the interface-connection and interface-transport interfaces",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-tcp#readme",
|
|
@@ -125,31 +125,31 @@
|
|
|
125
125
|
]
|
|
126
126
|
},
|
|
127
127
|
"scripts": {
|
|
128
|
+
"clean": "aegir clean",
|
|
128
129
|
"lint": "aegir lint",
|
|
129
|
-
"dep-check": "aegir dep-check
|
|
130
|
-
"build": "
|
|
131
|
-
"
|
|
132
|
-
"test": "aegir test -
|
|
133
|
-
"test:
|
|
134
|
-
"
|
|
135
|
-
"release": "semantic-release"
|
|
130
|
+
"dep-check": "aegir dep-check",
|
|
131
|
+
"build": "aegir build",
|
|
132
|
+
"test": "aegir test -t node -t electron-main",
|
|
133
|
+
"test:node": "aegir test -t node --cov",
|
|
134
|
+
"test:electron-main": "aegir test -t electron-main",
|
|
135
|
+
"release": "aegir release"
|
|
136
136
|
},
|
|
137
137
|
"dependencies": {
|
|
138
|
-
"@libp2p/logger": "^1.
|
|
139
|
-
"@libp2p/utils": "^1.0.
|
|
140
|
-
"@multiformats/mafmt": "^11.0.
|
|
141
|
-
"@multiformats/multiaddr": "^10.1.
|
|
138
|
+
"@libp2p/logger": "^1.1.2",
|
|
139
|
+
"@libp2p/utils": "^1.0.9",
|
|
140
|
+
"@multiformats/mafmt": "^11.0.2",
|
|
141
|
+
"@multiformats/multiaddr": "^10.1.5",
|
|
142
142
|
"abortable-iterator": "^4.0.2",
|
|
143
143
|
"err-code": "^3.0.1",
|
|
144
144
|
"stream-to-it": "^0.2.2"
|
|
145
145
|
},
|
|
146
146
|
"devDependencies": {
|
|
147
|
-
"@libp2p/interface-compliance-tests": "^1.1.
|
|
148
|
-
"@libp2p/interfaces": "^1.3.
|
|
149
|
-
"aegir": "^
|
|
147
|
+
"@libp2p/interface-compliance-tests": "^1.1.17",
|
|
148
|
+
"@libp2p/interfaces": "^1.3.14",
|
|
149
|
+
"aegir": "^37.0.4",
|
|
150
150
|
"it-all": "^1.0.6",
|
|
151
151
|
"it-pipe": "^2.0.3",
|
|
152
|
-
"sinon": "^13.0.
|
|
152
|
+
"sinon": "^13.0.1",
|
|
153
153
|
"uint8arrays": "^3.0.0"
|
|
154
154
|
}
|
|
155
155
|
}
|
package/src/index.ts
CHANGED
|
@@ -5,44 +5,25 @@ import { logger } from '@libp2p/logger'
|
|
|
5
5
|
import { toMultiaddrConnection } from './socket-to-conn.js'
|
|
6
6
|
import { createListener } from './listener.js'
|
|
7
7
|
import { multiaddrToNetConfig } from './utils.js'
|
|
8
|
-
import { AbortError } from '
|
|
8
|
+
import { AbortError } from '@libp2p/interfaces/errors'
|
|
9
9
|
import { CODE_CIRCUIT, CODE_P2P } from './constants.js'
|
|
10
|
-
import
|
|
10
|
+
import { CreateListenerOptions, DialOptions, symbol, Transport } from '@libp2p/interfaces/transport'
|
|
11
11
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
12
12
|
import type { Socket } from 'net'
|
|
13
|
+
import type { AbortOptions } from '@libp2p/interfaces'
|
|
13
14
|
|
|
14
15
|
const log = logger('libp2p:tcp')
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* @typedef {import('libp2p-interfaces/src/transport/types').Listener} Listener
|
|
21
|
-
* @typedef {import('net').Socket} Socket
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
interface TCPOptions {
|
|
25
|
-
upgrader: Upgrader
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface DialOptions {
|
|
29
|
-
signal?: AbortSignal
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export class TCP implements Transport<DialOptions, ListenerOptions> {
|
|
33
|
-
private readonly _upgrader: Upgrader
|
|
34
|
-
|
|
35
|
-
constructor (options: TCPOptions) {
|
|
36
|
-
const { upgrader } = options
|
|
37
|
-
|
|
38
|
-
if (upgrader == null) {
|
|
39
|
-
throw new Error('An upgrader must be provided. See https://github.com/libp2p/interface-transport#upgrader.')
|
|
40
|
-
}
|
|
17
|
+
export class TCP implements Transport {
|
|
18
|
+
get [symbol] (): true {
|
|
19
|
+
return true
|
|
20
|
+
}
|
|
41
21
|
|
|
42
|
-
|
|
22
|
+
get [Symbol.toStringTag] () {
|
|
23
|
+
return this.constructor.name
|
|
43
24
|
}
|
|
44
25
|
|
|
45
|
-
async dial (ma: Multiaddr, options: DialOptions
|
|
26
|
+
async dial (ma: Multiaddr, options: DialOptions) {
|
|
46
27
|
const socket = await this._connect(ma, options)
|
|
47
28
|
|
|
48
29
|
// Avoid uncaught errors caused by unstable connections
|
|
@@ -52,12 +33,12 @@ export class TCP implements Transport<DialOptions, ListenerOptions> {
|
|
|
52
33
|
|
|
53
34
|
const maConn = toMultiaddrConnection(socket, { remoteAddr: ma, signal: options.signal })
|
|
54
35
|
log('new outbound connection %s', maConn.remoteAddr)
|
|
55
|
-
const conn = await
|
|
36
|
+
const conn = await options.upgrader.upgradeOutbound(maConn)
|
|
56
37
|
log('outbound connection %s upgraded', maConn.remoteAddr)
|
|
57
38
|
return conn
|
|
58
39
|
}
|
|
59
40
|
|
|
60
|
-
async _connect (ma: Multiaddr, options:
|
|
41
|
+
async _connect (ma: Multiaddr, options: AbortOptions = {}) {
|
|
61
42
|
if (options.signal?.aborted === true) {
|
|
62
43
|
throw new AbortError()
|
|
63
44
|
}
|
|
@@ -125,8 +106,8 @@ export class TCP implements Transport<DialOptions, ListenerOptions> {
|
|
|
125
106
|
* anytime a new incoming Connection has been successfully upgraded via
|
|
126
107
|
* `upgrader.upgradeInbound`.
|
|
127
108
|
*/
|
|
128
|
-
createListener (options:
|
|
129
|
-
return createListener(
|
|
109
|
+
createListener (options: CreateListenerOptions) {
|
|
110
|
+
return createListener(options)
|
|
130
111
|
}
|
|
131
112
|
|
|
132
113
|
/**
|
package/src/listener.ts
CHANGED
|
@@ -70,7 +70,7 @@ export function createListener (context: Context) {
|
|
|
70
70
|
handler(conn)
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
listener.dispatchEvent(new CustomEvent('connection', { detail: conn }))
|
|
73
|
+
listener.dispatchEvent(new CustomEvent<Connection>('connection', { detail: conn }))
|
|
74
74
|
})
|
|
75
75
|
.catch(async err => {
|
|
76
76
|
log.error('inbound connection failed', err)
|
|
@@ -98,7 +98,7 @@ export function createListener (context: Context) {
|
|
|
98
98
|
const address = server.address()
|
|
99
99
|
|
|
100
100
|
if (address == null) {
|
|
101
|
-
|
|
101
|
+
return []
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
if (typeof address === 'string') {
|
|
@@ -151,7 +151,7 @@ export function createListener (context: Context) {
|
|
|
151
151
|
|
|
152
152
|
server
|
|
153
153
|
.on('listening', () => listener.dispatchEvent(new CustomEvent('listening')))
|
|
154
|
-
.on('error', err => listener.dispatchEvent(new CustomEvent('error', { detail: err })))
|
|
154
|
+
.on('error', err => listener.dispatchEvent(new CustomEvent<Error>('error', { detail: err })))
|
|
155
155
|
.on('close', () => listener.dispatchEvent(new CustomEvent('close')))
|
|
156
156
|
|
|
157
157
|
return listener
|