@peerbit/libp2p-test-utils 2.1.3-aa577a5 → 2.1.3-cccc078
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/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/session.d.ts +1 -1
- package/dist/src/session.d.ts.map +1 -1
- package/dist/src/session.js +14 -13
- package/dist/src/session.js.map +1 -1
- package/dist/src/transports.d.ts +2 -2
- package/dist/src/transports.d.ts.map +1 -1
- package/dist/src/transports.js +11 -12
- package/dist/src/transports.js.map +1 -1
- package/package.json +11 -10
- package/src/index.ts +1 -0
- package/src/session.ts +23 -22
- package/src/transports.ts +13 -16
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,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/src/session.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type Libp2p, type Libp2pOptions } from "libp2p";
|
|
2
1
|
import { type CircuitRelayService } from "@libp2p/circuit-relay-v2";
|
|
3
2
|
import type { Multiaddr } from "@multiformats/multiaddr";
|
|
3
|
+
import { type Libp2p, type Libp2pOptions } from "libp2p";
|
|
4
4
|
type DefaultServices = {
|
|
5
5
|
relay: CircuitRelayService;
|
|
6
6
|
identify: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAgB,MAAM,QAAQ,CAAC;AAGvE,KAAK,eAAe,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC;AACrE,KAAK,kBAAkB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;AAEzD,qBAAa,WAAW,CAAC,CAAC;IACzB,KAAK,EAAE,kBAAkB,CAAC,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC;gBAErC,KAAK,EAAE,kBAAkB,CAAC,CAAC,GAAG,eAAe,CAAC,EAAE;IAItD,OAAO,CACZ,MAAM,CAAC,EAAE;QACR,aAAa,EAAE,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;KAC5C,EAAE,EAAE;IAsBA,WAAW,CAChB,MAAM,CAAC,EAAE;QACR,aAAa,EAAE,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;KAC5C,EAAE,EAAE;WAmBO,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE;WAMnC,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE;IAwChD,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;CAOpB"}
|
package/dist/src/session.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { yamux } from "@chainsafe/libp2p-yamux";
|
|
2
2
|
import { noise } from "@dao-xyz/libp2p-noise";
|
|
3
|
+
import {} from "@libp2p/circuit-relay-v2";
|
|
4
|
+
import { identify } from "@libp2p/identify";
|
|
5
|
+
import { waitFor } from "@peerbit/time";
|
|
3
6
|
import { setMaxListeners } from "events";
|
|
7
|
+
import { createLibp2p } from "libp2p";
|
|
4
8
|
import { relay, transports } from "./transports.js";
|
|
5
|
-
import { identify } from "@libp2p/identify";
|
|
6
|
-
import {} from "@libp2p/circuit-relay-v2";
|
|
7
|
-
import { yamux } from "@chainsafe/libp2p-yamux";
|
|
8
9
|
export class TestSession {
|
|
9
10
|
peers;
|
|
10
11
|
constructor(peers) {
|
|
@@ -21,7 +22,7 @@ export class TestSession {
|
|
|
21
22
|
for (let j = i + 1; j < group.length; j++) {
|
|
22
23
|
const toDial = group[j]
|
|
23
24
|
.getMultiaddrs()
|
|
24
|
-
.filter((x) => x.protoCodes().includes(290)
|
|
25
|
+
.filter((x) => !x.protoCodes().includes(290));
|
|
25
26
|
connectPromises.push(group[i].dial(toDial)); // By default don't connect to relayed (p2p-circuit) peers
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -38,7 +39,7 @@ export class TestSession {
|
|
|
38
39
|
for (let i = 0; i < group.length - 1; i++) {
|
|
39
40
|
const toDial = group[i + 1]
|
|
40
41
|
.getMultiaddrs()
|
|
41
|
-
.filter((x) => x.protoCodes().includes(290)
|
|
42
|
+
.filter((x) => !x.protoCodes().includes(290));
|
|
42
43
|
connectPromises.push(group[i].dial(toDial)); // By default don't connect to relayed (p2p-circuit) peers
|
|
43
44
|
}
|
|
44
45
|
}
|
|
@@ -59,24 +60,24 @@ export class TestSession {
|
|
|
59
60
|
const definedOptions = options?.[i] || options;
|
|
60
61
|
const node = await createLibp2p({
|
|
61
62
|
addresses: {
|
|
62
|
-
listen: ["/ip4/127.0.0.1/tcp/0", "/ip4/127.0.0.1/tcp/0/ws"]
|
|
63
|
+
listen: ["/ip4/127.0.0.1/tcp/0", "/ip4/127.0.0.1/tcp/0/ws"],
|
|
63
64
|
},
|
|
64
65
|
connectionManager: definedOptions?.connectionManager ?? {
|
|
65
|
-
minConnections: 0
|
|
66
|
+
minConnections: 0,
|
|
66
67
|
},
|
|
67
68
|
peerId: definedOptions?.peerId,
|
|
68
69
|
datastore: definedOptions?.datastore,
|
|
69
|
-
transports: definedOptions?.transports ??
|
|
70
|
-
transports(definedOptions?.["browser"]),
|
|
70
|
+
transports: definedOptions?.transports ?? transports(),
|
|
71
71
|
services: {
|
|
72
|
-
relay:
|
|
72
|
+
relay: relay(),
|
|
73
73
|
identify: identify(),
|
|
74
|
-
...definedOptions?.services
|
|
74
|
+
...definedOptions?.services,
|
|
75
75
|
},
|
|
76
76
|
connectionEncryption: [noise()],
|
|
77
77
|
streamMuxers: definedOptions?.streamMuxers || [yamux()],
|
|
78
|
-
start: definedOptions?.start
|
|
78
|
+
start: definedOptions?.start,
|
|
79
79
|
});
|
|
80
|
+
await waitFor(() => node.status === "started");
|
|
80
81
|
return node;
|
|
81
82
|
};
|
|
82
83
|
promises.push(result());
|
package/dist/src/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/src/transports.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Components } from "libp2p/components";
|
|
2
1
|
import type { Transport } from "@libp2p/interface";
|
|
3
|
-
|
|
2
|
+
import type { Components } from "libp2p/components";
|
|
3
|
+
export declare const transports: () => Array<(components: Components) => Transport>;
|
|
4
4
|
export declare const relay: () => (components: import("@libp2p/circuit-relay-v2/dist/src/server").CircuitRelayServerComponents) => import("@libp2p/circuit-relay-v2").CircuitRelayService;
|
|
5
5
|
//# sourceMappingURL=transports.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/transports.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/transports.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,UAAU,QAAO,KAAK,CAAC,CAAC,UAAU,EAAE,UAAU,KAAK,SAAS,CAOxE,CAAC;AAGF,eAAO,MAAM,KAAK,+JACiD,CAAC"}
|
package/dist/src/transports.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { circuitRelayTransport,
|
|
1
|
+
import { circuitRelayServer, circuitRelayTransport, } from "@libp2p/circuit-relay-v2";
|
|
2
2
|
import { webRTC } from "@libp2p/webrtc";
|
|
3
3
|
import { webSockets } from "@libp2p/websockets";
|
|
4
4
|
import * as filters from "@libp2p/websockets/filters";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export const relay = () => circuitRelayServer({});
|
|
5
|
+
export const transports = () => [
|
|
6
|
+
circuitRelayTransport({
|
|
7
|
+
discoverRelays: 1,
|
|
8
|
+
reservationCompletionTimeout: 5000,
|
|
9
|
+
}),
|
|
10
|
+
webRTC({}),
|
|
11
|
+
webSockets({ filter: filters.all }),
|
|
12
|
+
];
|
|
13
|
+
// applyDefaultLimit: false because of https://github.com/libp2p/js-libp2p/issues/2622
|
|
14
|
+
export const relay = () => circuitRelayServer({ reservations: { applyDefaultLimit: false } });
|
|
16
15
|
//# sourceMappingURL=transports.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/transports.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/transports.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,qBAAqB,GACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,4BAA4B,CAAC;AAGtD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAiD,EAAE,CAAC;IAC7E,qBAAqB,CAAC;QACrB,cAAc,EAAE,CAAC;QACjB,4BAA4B,EAAE,IAAI;KAClC,CAAC;IACF,MAAM,CAAC,EAAE,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;CACnC,CAAC;AAEF,sFAAsF;AACtF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CACzB,kBAAkB,CAAC,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/libp2p-test-utils",
|
|
3
|
-
"version": "2.1.3-
|
|
3
|
+
"version": "2.1.3-cccc078",
|
|
4
4
|
"description": "Test utils for Peerbit",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"eslintConfig": {
|
|
37
|
-
"extends": "
|
|
37
|
+
"extends": "peerbit",
|
|
38
38
|
"parserOptions": {
|
|
39
39
|
"project": true,
|
|
40
40
|
"sourceType": "module"
|
|
@@ -59,20 +59,21 @@
|
|
|
59
59
|
"license": "MIT",
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@dao-xyz/libp2p-noise": "^14.1.2",
|
|
62
|
-
"@libp2p/tcp": "^9.
|
|
63
|
-
"@libp2p/webrtc": "^4.
|
|
64
|
-
"@libp2p/websockets": "^8.
|
|
65
|
-
"@libp2p/identify": "^1.
|
|
66
|
-
"@libp2p/circuit-relay-v2": "^1.
|
|
67
|
-
"libp2p": "^1.
|
|
62
|
+
"@libp2p/tcp": "^9.1.1",
|
|
63
|
+
"@libp2p/webrtc": "^4.1.1",
|
|
64
|
+
"@libp2p/websockets": "^8.1.2",
|
|
65
|
+
"@libp2p/identify": "^2.1.2",
|
|
66
|
+
"@libp2p/circuit-relay-v2": "^1.1.2",
|
|
67
|
+
"libp2p": "^1.8.1"
|
|
68
68
|
},
|
|
69
69
|
"scripts": {
|
|
70
70
|
"clean": "aegir clean",
|
|
71
71
|
"build": "aegir build --no-bundle",
|
|
72
|
-
"test": "aegir test -t node"
|
|
72
|
+
"test": "aegir test -t node",
|
|
73
|
+
"lint": "aegir lint"
|
|
73
74
|
},
|
|
74
75
|
"devDependencies": {
|
|
75
|
-
"@peerbit/time": "2.0.6-
|
|
76
|
+
"@peerbit/time": "2.0.6-cccc078"
|
|
76
77
|
},
|
|
77
78
|
"localMaintainers": [
|
|
78
79
|
"dao.xyz"
|
package/src/index.ts
CHANGED
package/src/session.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { yamux } from "@chainsafe/libp2p-yamux";
|
|
2
2
|
import { noise } from "@dao-xyz/libp2p-noise";
|
|
3
|
-
import { setMaxListeners } from "events";
|
|
4
|
-
import { relay, transports } from "./transports.js";
|
|
5
|
-
import { identify } from "@libp2p/identify";
|
|
6
3
|
import { type CircuitRelayService } from "@libp2p/circuit-relay-v2";
|
|
4
|
+
import { identify } from "@libp2p/identify";
|
|
7
5
|
import type { Multiaddr } from "@multiformats/multiaddr";
|
|
8
|
-
import {
|
|
6
|
+
import { waitFor } from "@peerbit/time";
|
|
7
|
+
import { setMaxListeners } from "events";
|
|
8
|
+
import { type Libp2p, type Libp2pOptions, createLibp2p } from "libp2p";
|
|
9
|
+
import { relay, transports } from "./transports.js";
|
|
9
10
|
|
|
10
11
|
type DefaultServices = { relay: CircuitRelayService; identify: any };
|
|
11
12
|
type Libp2pWithServices<T> = Libp2p<T & DefaultServices>;
|
|
13
|
+
|
|
12
14
|
export class TestSession<T> {
|
|
13
15
|
peers: Libp2pWithServices<T & DefaultServices>[];
|
|
14
16
|
|
|
@@ -20,7 +22,7 @@ export class TestSession<T> {
|
|
|
20
22
|
groups?: {
|
|
21
23
|
getMultiaddrs: () => Multiaddr[];
|
|
22
24
|
dial: (addres: Multiaddr[]) => Promise<any>;
|
|
23
|
-
}[][]
|
|
25
|
+
}[][],
|
|
24
26
|
) {
|
|
25
27
|
// Connect the nodes
|
|
26
28
|
const connectPromises: Promise<any>[] = [];
|
|
@@ -32,7 +34,7 @@ export class TestSession<T> {
|
|
|
32
34
|
for (let j = i + 1; j < group.length; j++) {
|
|
33
35
|
const toDial = group[j]
|
|
34
36
|
.getMultiaddrs()
|
|
35
|
-
.filter((x) => x.protoCodes().includes(290)
|
|
37
|
+
.filter((x) => !x.protoCodes().includes(290));
|
|
36
38
|
connectPromises.push(group[i].dial(toDial)); // By default don't connect to relayed (p2p-circuit) peers
|
|
37
39
|
}
|
|
38
40
|
}
|
|
@@ -46,7 +48,7 @@ export class TestSession<T> {
|
|
|
46
48
|
groups?: {
|
|
47
49
|
getMultiaddrs: () => Multiaddr[];
|
|
48
50
|
dial: (addres: Multiaddr[]) => Promise<any>;
|
|
49
|
-
}[][]
|
|
51
|
+
}[][],
|
|
50
52
|
) {
|
|
51
53
|
const connectPromises: Promise<any>[] = [];
|
|
52
54
|
if (!groups) {
|
|
@@ -56,7 +58,7 @@ export class TestSession<T> {
|
|
|
56
58
|
for (let i = 0; i < group.length - 1; i++) {
|
|
57
59
|
const toDial = group[i + 1]
|
|
58
60
|
.getMultiaddrs()
|
|
59
|
-
.filter((x) => x.protoCodes().includes(290)
|
|
61
|
+
.filter((x) => !x.protoCodes().includes(290));
|
|
60
62
|
connectPromises.push(group[i].dial(toDial)); // By default don't connect to relayed (p2p-circuit) peers
|
|
61
63
|
}
|
|
62
64
|
}
|
|
@@ -67,15 +69,15 @@ export class TestSession<T> {
|
|
|
67
69
|
|
|
68
70
|
static async connected<T extends Record<string, unknown>>(
|
|
69
71
|
n: number,
|
|
70
|
-
options?: Libp2pOptions<T> | Libp2pOptions<T>[]
|
|
72
|
+
options?: Libp2pOptions<T> | Libp2pOptions<T>[],
|
|
71
73
|
) {
|
|
72
74
|
const libs = (await TestSession.disconnected<T>(n, options)).peers;
|
|
73
|
-
return new TestSession(libs).connect();
|
|
75
|
+
return new TestSession<T>(libs).connect();
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
static async disconnected<T extends Record<string, unknown>>(
|
|
77
79
|
n: number,
|
|
78
|
-
options?: Libp2pOptions<T> | Libp2pOptions<T>[]
|
|
80
|
+
options?: Libp2pOptions<T> | Libp2pOptions<T>[],
|
|
79
81
|
) {
|
|
80
82
|
// Allow more than 11 listneers
|
|
81
83
|
setMaxListeners(Infinity);
|
|
@@ -88,39 +90,38 @@ export class TestSession<T> {
|
|
|
88
90
|
(options as any)?.[i] || options;
|
|
89
91
|
const node = await createLibp2p<T>({
|
|
90
92
|
addresses: {
|
|
91
|
-
listen: ["/ip4/127.0.0.1/tcp/0", "/ip4/127.0.0.1/tcp/0/ws"]
|
|
93
|
+
listen: ["/ip4/127.0.0.1/tcp/0", "/ip4/127.0.0.1/tcp/0/ws"],
|
|
92
94
|
},
|
|
93
95
|
connectionManager: definedOptions?.connectionManager ?? {
|
|
94
|
-
minConnections: 0
|
|
96
|
+
minConnections: 0,
|
|
95
97
|
},
|
|
96
98
|
peerId: definedOptions?.peerId,
|
|
97
99
|
datastore: definedOptions?.datastore,
|
|
98
|
-
transports:
|
|
99
|
-
definedOptions?.transports ??
|
|
100
|
-
transports((definedOptions as any)?.["browser"]),
|
|
100
|
+
transports: definedOptions?.transports ?? transports(),
|
|
101
101
|
services: {
|
|
102
|
-
relay:
|
|
102
|
+
relay: relay(),
|
|
103
103
|
identify: identify(),
|
|
104
|
-
...definedOptions?.services
|
|
104
|
+
...definedOptions?.services,
|
|
105
105
|
} as any,
|
|
106
106
|
connectionEncryption: [noise()],
|
|
107
107
|
streamMuxers: definedOptions?.streamMuxers || [yamux()],
|
|
108
|
-
start: definedOptions?.start
|
|
108
|
+
start: definedOptions?.start,
|
|
109
109
|
});
|
|
110
|
+
await waitFor(() => node.status === "started");
|
|
110
111
|
return node;
|
|
111
112
|
};
|
|
112
113
|
promises.push(result());
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
const libs = (await Promise.all(promises)) as Libp2p<T & DefaultServices>[];
|
|
116
|
-
return new TestSession(libs);
|
|
117
|
+
return new TestSession<T>(libs);
|
|
117
118
|
}
|
|
118
119
|
|
|
119
120
|
stop(): Promise<any> {
|
|
120
121
|
return Promise.all(
|
|
121
122
|
this.peers.map(async (p) => {
|
|
122
123
|
return p.stop();
|
|
123
|
-
})
|
|
124
|
+
}),
|
|
124
125
|
);
|
|
125
126
|
}
|
|
126
127
|
}
|
package/src/transports.ts
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
|
+
circuitRelayServer,
|
|
2
3
|
circuitRelayTransport,
|
|
3
|
-
circuitRelayServer
|
|
4
4
|
} from "@libp2p/circuit-relay-v2";
|
|
5
|
+
import type { Transport } from "@libp2p/interface";
|
|
5
6
|
import { webRTC } from "@libp2p/webrtc";
|
|
6
7
|
import { webSockets } from "@libp2p/websockets";
|
|
7
8
|
import * as filters from "@libp2p/websockets/filters";
|
|
8
|
-
import { tcp } from "@libp2p/tcp";
|
|
9
9
|
import type { Components } from "libp2p/components";
|
|
10
|
-
import type { Transport } from "@libp2p/interface";
|
|
11
10
|
|
|
12
|
-
export const transports = (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
webRTC({}),
|
|
21
|
-
webSockets({ filter: filters.all })
|
|
22
|
-
]
|
|
23
|
-
: ([tcp()] as any);
|
|
11
|
+
export const transports = (): Array<(components: Components) => Transport> => [
|
|
12
|
+
circuitRelayTransport({
|
|
13
|
+
discoverRelays: 1,
|
|
14
|
+
reservationCompletionTimeout: 5000,
|
|
15
|
+
}),
|
|
16
|
+
webRTC({}),
|
|
17
|
+
webSockets({ filter: filters.all }),
|
|
18
|
+
];
|
|
24
19
|
|
|
25
|
-
|
|
20
|
+
// applyDefaultLimit: false because of https://github.com/libp2p/js-libp2p/issues/2622
|
|
21
|
+
export const relay = () =>
|
|
22
|
+
circuitRelayServer({ reservations: { applyDefaultLimit: false } });
|