@libp2p/autonat-v2 2.0.22 → 2.0.23-3bf5d395c
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 +5 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +3 -3
- package/dist/src/autonat.d.ts +3 -2
- package/dist/src/autonat.d.ts.map +1 -1
- package/dist/src/autonat.js +5 -2
- package/dist/src/autonat.js.map +1 -1
- package/dist/src/client.d.ts +6 -1
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +19 -6
- package/dist/src/client.js.map +1 -1
- package/dist/src/index.d.ts +48 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/package.json +9 -9
- package/src/autonat.ts +7 -3
- package/src/client.ts +27 -8
- package/src/index.ts +56 -2
- package/dist/typedoc-urls.json +0 -8
package/dist/src/autonat.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { serviceCapabilities, serviceDependencies } from '@libp2p/interface';
|
|
2
|
-
import
|
|
2
|
+
import { TypedEventEmitter } from 'main-event';
|
|
3
|
+
import type { AutoNATv2Components, AutoNATv2Events, AutoNATv2ServiceInit } from './index.ts';
|
|
3
4
|
import type { Startable } from '@libp2p/interface';
|
|
4
|
-
export declare class AutoNATv2Service implements Startable {
|
|
5
|
+
export declare class AutoNATv2Service extends TypedEventEmitter<AutoNATv2Events> implements Startable {
|
|
5
6
|
private readonly client;
|
|
6
7
|
private readonly server;
|
|
7
8
|
constructor(components: AutoNATv2Components, init: AutoNATv2ServiceInit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autonat.d.ts","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAe,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"autonat.d.ts","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAe,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAI9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,qBAAa,gBAAiB,SAAQ,iBAAiB,CAAC,eAAe,CAAE,YAAW,SAAS;IAC3F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE3B,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,oBAAoB;IAmBxE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAuB;IAEpD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAK,MAAM,EAAE,CAIrC;IAEK,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAIvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
package/dist/src/autonat.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { serviceCapabilities, serviceDependencies, start, stop } from '@libp2p/interface';
|
|
2
|
+
import { TypedEventEmitter } from 'main-event';
|
|
2
3
|
import { AutoNATv2Client } from "./client.js";
|
|
3
4
|
import { DIAL_BACK, DIAL_REQUEST, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION } from "./constants.js";
|
|
4
5
|
import { AutoNATv2Server } from "./server.js";
|
|
5
|
-
export class AutoNATv2Service {
|
|
6
|
+
export class AutoNATv2Service extends TypedEventEmitter {
|
|
6
7
|
client;
|
|
7
8
|
server;
|
|
8
9
|
constructor(components, init) {
|
|
10
|
+
super();
|
|
9
11
|
const dialRequestProtocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}/${DIAL_REQUEST}`;
|
|
10
12
|
const dialBackProtocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}/${DIAL_BACK}`;
|
|
11
13
|
this.client = new AutoNATv2Client(components, {
|
|
12
14
|
...init,
|
|
13
15
|
dialRequestProtocol,
|
|
14
|
-
dialBackProtocol
|
|
16
|
+
dialBackProtocol,
|
|
17
|
+
safeDispatchEvent: this.safeDispatchEvent.bind(this)
|
|
15
18
|
});
|
|
16
19
|
this.server = new AutoNATv2Server(components, {
|
|
17
20
|
...init,
|
package/dist/src/autonat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autonat.js","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7C,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"autonat.js","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7C,MAAM,OAAO,gBAAiB,SAAQ,iBAAkC;IACrD,MAAM,CAAiB;IACvB,MAAM,CAAiB;IAExC,YAAa,UAA+B,EAAE,IAA0B;QACtE,KAAK,EAAE,CAAA;QAEP,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC,cAAc,IAAI,eAAe,IAAI,aAAa,IAAI,gBAAgB,IAAI,YAAY,EAAE,CAAA;QAC7H,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,cAAc,IAAI,eAAe,IAAI,aAAa,IAAI,gBAAgB,IAAI,SAAS,EAAE,CAAA;QAEvH,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE;YAC5C,GAAG,IAAI;YACP,mBAAmB;YACnB,gBAAgB;YAChB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACrD,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE;YAC5C,GAAG,IAAI;YACP,mBAAmB;YACnB,gBAAgB;SACjB,CAAC,CAAA;IACJ,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,oBAAoB,CAAA;IAE3C,CAAC,mBAAmB,CAAC,GAAa;QACzC,iBAAiB;KAClB,CAAA;IAED,IAAI,CAAC,mBAAmB,CAAC;QACvB,OAAO;YACL,kBAAkB;SACnB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;CACF"}
|
package/dist/src/client.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { serviceCapabilities, serviceDependencies } from '@libp2p/interface';
|
|
2
|
-
import type { AutoNATv2Components, AutoNATv2ServiceInit } from './index.ts';
|
|
2
|
+
import type { AutoNATv2Components, AutoNATv2Events, AutoNATv2ServiceInit } from './index.ts';
|
|
3
3
|
import type { Connection, Startable, AbortOptions, Stream } from '@libp2p/interface';
|
|
4
|
+
import type { TypedEventEmitter } from 'main-event';
|
|
5
|
+
export type DispatchAutoNATv2Event = TypedEventEmitter<AutoNATv2Events>['safeDispatchEvent'];
|
|
4
6
|
export interface AutoNATv2ClientInit extends AutoNATv2ServiceInit {
|
|
5
7
|
dialRequestProtocol: string;
|
|
6
8
|
dialBackProtocol: string;
|
|
7
9
|
maxDialDataBytes?: bigint;
|
|
8
10
|
dialDataChunkSize?: number;
|
|
11
|
+
safeDispatchEvent: DispatchAutoNATv2Event;
|
|
9
12
|
}
|
|
10
13
|
export declare class AutoNATv2Client implements Startable {
|
|
11
14
|
private readonly components;
|
|
@@ -26,6 +29,7 @@ export declare class AutoNATv2Client implements Startable {
|
|
|
26
29
|
private readonly connectionThreshold;
|
|
27
30
|
private readonly queue;
|
|
28
31
|
private readonly nonces;
|
|
32
|
+
private readonly safeDispatchEvent;
|
|
29
33
|
constructor(components: AutoNATv2Components, init: AutoNATv2ClientInit);
|
|
30
34
|
readonly [Symbol.toStringTag] = "@libp2p/autonat-v2";
|
|
31
35
|
readonly [serviceCapabilities]: string[];
|
|
@@ -53,6 +57,7 @@ export declare class AutoNATv2Client implements Startable {
|
|
|
53
57
|
private hasConnectionCapacity;
|
|
54
58
|
private confirmAddress;
|
|
55
59
|
private unconfirmAddress;
|
|
60
|
+
private emitReachabilityEvent;
|
|
56
61
|
private getNetworkSegment;
|
|
57
62
|
}
|
|
58
63
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAQnH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAQnH,OAAO,KAAK,EAA6B,mBAAmB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACvH,OAAO,KAAK,EAAU,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAK5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC,mBAAmB,CAAC,CAAA;AAoD5F,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,EAAE,sBAAsB,CAAA;CAC1C;AAED,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwB;gBAE7C,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB;IA4BvE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAuB;IAEpD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAK,MAAM,EAAE,CAIrC;IAED,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IA4BvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAa5B,OAAO,CAAC,uBAAuB;IAWzB,eAAe,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C7D;;OAEG;IACG,oBAAoB,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkClF,OAAO,CAAC,uBAAuB;IAoG/B;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IActC;;OAEG;IACG,uBAAuB,CAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAiEvD,eAAe;IAuI7B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;CAkB1B"}
|
package/dist/src/client.js
CHANGED
|
@@ -30,8 +30,10 @@ export class AutoNATv2Client {
|
|
|
30
30
|
connectionThreshold;
|
|
31
31
|
queue;
|
|
32
32
|
nonces;
|
|
33
|
+
safeDispatchEvent;
|
|
33
34
|
constructor(components, init) {
|
|
34
35
|
this.components = components;
|
|
36
|
+
this.safeDispatchEvent = init.safeDispatchEvent;
|
|
35
37
|
this.log = components.logger.forComponent('libp2p:auto-nat-v2:client');
|
|
36
38
|
this.started = false;
|
|
37
39
|
this.dialRequestProtocol = init.dialRequestProtocol;
|
|
@@ -264,12 +266,7 @@ export class AutoNATv2Client {
|
|
|
264
266
|
*/
|
|
265
267
|
removeOutdatedMultiaddrResults() {
|
|
266
268
|
const unverifiedMultiaddrs = new Set(this.components.addressManager.getAddressesWithMetadata()
|
|
267
|
-
.filter(({ expires }) =>
|
|
268
|
-
if (expires < Date.now()) {
|
|
269
|
-
return true;
|
|
270
|
-
}
|
|
271
|
-
return false;
|
|
272
|
-
})
|
|
269
|
+
.filter(({ expires }) => expires < Date.now())
|
|
273
270
|
.map(({ multiaddr }) => multiaddr.toString()));
|
|
274
271
|
for (const multiaddr of this.dialResults.keys()) {
|
|
275
272
|
if (!unverifiedMultiaddrs.has(multiaddr)) {
|
|
@@ -408,6 +405,9 @@ export class AutoNATv2Client {
|
|
|
408
405
|
results.networkSegments.push(segment);
|
|
409
406
|
if (response.dialResponse.dialStatus === DialStatus.OK) {
|
|
410
407
|
this.log.trace('%p dialed %a successfully', connection.remotePeer, results.multiaddr);
|
|
408
|
+
// surface progress as this new-segment peer contributes, before its
|
|
409
|
+
// result is counted
|
|
410
|
+
this.emitReachabilityEvent(results, 'verifying');
|
|
411
411
|
results.success++;
|
|
412
412
|
// observed addresses require more confirmations
|
|
413
413
|
if (results.type !== 'observed') {
|
|
@@ -418,6 +418,7 @@ export class AutoNATv2Client {
|
|
|
418
418
|
else if (response.dialResponse.dialStatus === DialStatus.E_DIAL_ERROR) {
|
|
419
419
|
this.log.trace('%p could not dial %a', connection.remotePeer, results.multiaddr);
|
|
420
420
|
// the address was not dialable (e.g. not public)
|
|
421
|
+
this.emitReachabilityEvent(results, 'verifying');
|
|
421
422
|
results.failure++;
|
|
422
423
|
}
|
|
423
424
|
else if (response.dialResponse.dialStatus === DialStatus.E_DIAL_BACK_ERROR) {
|
|
@@ -456,6 +457,7 @@ export class AutoNATv2Client {
|
|
|
456
457
|
this.dialResults.delete(results.multiaddr.toString());
|
|
457
458
|
// abort & remove any outstanding verification jobs for this multiaddr
|
|
458
459
|
results.result = true;
|
|
460
|
+
this.emitReachabilityEvent(results, 'reachable');
|
|
459
461
|
}
|
|
460
462
|
unconfirmAddress(results) {
|
|
461
463
|
// we are now unconvinced
|
|
@@ -464,6 +466,17 @@ export class AutoNATv2Client {
|
|
|
464
466
|
this.dialResults.delete(results.multiaddr.toString());
|
|
465
467
|
// abort & remove any outstanding verification jobs for this multiaddr
|
|
466
468
|
results.result = false;
|
|
469
|
+
this.emitReachabilityEvent(results, 'unreachable');
|
|
470
|
+
}
|
|
471
|
+
emitReachabilityEvent(results, state) {
|
|
472
|
+
this.safeDispatchEvent(`address:${state}`, {
|
|
473
|
+
detail: {
|
|
474
|
+
addr: results.multiaddr,
|
|
475
|
+
type: results.type,
|
|
476
|
+
success: results.success,
|
|
477
|
+
failure: results.failure
|
|
478
|
+
}
|
|
479
|
+
});
|
|
467
480
|
}
|
|
468
481
|
getNetworkSegment(ma) {
|
|
469
482
|
// make sure we use different network segments
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -19,10 +19,56 @@
|
|
|
19
19
|
* autoNAT: autoNATv2()
|
|
20
20
|
* }
|
|
21
21
|
* })
|
|
22
|
+
*
|
|
23
|
+
* // observe per-address reachability changes as they are probed
|
|
24
|
+
* node.services.autoNAT.addEventListener('address:reachable', (evt) => {
|
|
25
|
+
* console.info(evt.detail.addr, 'is externally dialable')
|
|
26
|
+
* })
|
|
22
27
|
* ```
|
|
23
28
|
*/
|
|
24
29
|
import type { ComponentLogger, Metrics, PeerStore } from '@libp2p/interface';
|
|
25
|
-
import type { AddressManager, ConnectionManager, RandomWalk, Registrar } from '@libp2p/interface-internal';
|
|
30
|
+
import type { AddressManager, AddressType, ConnectionManager, RandomWalk, Registrar } from '@libp2p/interface-internal';
|
|
31
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
32
|
+
import type { TypedEventEmitter } from 'main-event';
|
|
33
|
+
export interface AddressReachabilityChange {
|
|
34
|
+
/**
|
|
35
|
+
* The address a probe result relates to
|
|
36
|
+
*/
|
|
37
|
+
readonly addr: Multiaddr;
|
|
38
|
+
/**
|
|
39
|
+
* The type of address being probed (e.g. observed or transport)
|
|
40
|
+
*/
|
|
41
|
+
readonly type: AddressType;
|
|
42
|
+
/**
|
|
43
|
+
* How many peers have successfully dialled this address so far this round
|
|
44
|
+
*/
|
|
45
|
+
readonly success: number;
|
|
46
|
+
/**
|
|
47
|
+
* How many peers have failed to dial this address so far this round
|
|
48
|
+
*/
|
|
49
|
+
readonly failure: number;
|
|
50
|
+
}
|
|
51
|
+
export interface AutoNATv2Events {
|
|
52
|
+
/**
|
|
53
|
+
* Emitted as each peer contributes a dial result for an address, carrying the
|
|
54
|
+
* running success/failure tally for the current round. A verdict
|
|
55
|
+
* (reachable/unreachable) is not guaranteed to follow.
|
|
56
|
+
*/
|
|
57
|
+
'address:verifying': CustomEvent<AddressReachabilityChange>;
|
|
58
|
+
/**
|
|
59
|
+
* An address was confirmed to be externally dialable. Carries the tally for
|
|
60
|
+
* the current round, which is zero when an address is re-affirmed under
|
|
61
|
+
* connection pressure without probing.
|
|
62
|
+
*/
|
|
63
|
+
'address:reachable': CustomEvent<AddressReachabilityChange>;
|
|
64
|
+
/**
|
|
65
|
+
* An address was confirmed not to be externally dialable, carrying the tally
|
|
66
|
+
* for the round that reached the failure threshold.
|
|
67
|
+
*/
|
|
68
|
+
'address:unreachable': CustomEvent<AddressReachabilityChange>;
|
|
69
|
+
}
|
|
70
|
+
export interface AutoNATv2 extends TypedEventEmitter<AutoNATv2Events> {
|
|
71
|
+
}
|
|
26
72
|
export interface AutoNATv2ServiceInit {
|
|
27
73
|
/**
|
|
28
74
|
* Allows overriding the protocol prefix used
|
|
@@ -89,5 +135,5 @@ export interface AutoNATv2Components {
|
|
|
89
135
|
peerStore: PeerStore;
|
|
90
136
|
metrics?: Metrics;
|
|
91
137
|
}
|
|
92
|
-
export declare function autoNATv2(init?: AutoNATv2ServiceInit): (components: AutoNATv2Components) =>
|
|
138
|
+
export declare function autoNATv2(init?: AutoNATv2ServiceInit): (components: AutoNATv2Components) => AutoNATv2;
|
|
93
139
|
//# 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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACvH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IAExB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAE1B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,mBAAmB,EAAE,WAAW,CAAC,yBAAyB,CAAC,CAAA;IAE3D;;;;OAIG;IACH,mBAAmB,EAAE,WAAW,CAAC,yBAAyB,CAAC,CAAA;IAE3D;;;OAGG;IACH,qBAAqB,EAAE,WAAW,CAAC,yBAAyB,CAAC,CAAA;CAC9D;AAED,MAAM,WAAW,SAAU,SAAQ,iBAAiB,CAAC,eAAe,CAAC;CACpE;AAED,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,SAAS,CAAE,IAAI,GAAE,oBAAyB,GAAG,CAAC,UAAU,EAAE,mBAAmB,KAAK,SAAS,CAI1G"}
|
package/dist/src/index.js
CHANGED
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
* autoNAT: autoNATv2()
|
|
20
20
|
* }
|
|
21
21
|
* })
|
|
22
|
+
*
|
|
23
|
+
* // observe per-address reachability changes as they are probed
|
|
24
|
+
* node.services.autoNAT.addEventListener('address:reachable', (evt) => {
|
|
25
|
+
* console.info(evt.detail.addr, 'is externally dialable')
|
|
26
|
+
* })
|
|
22
27
|
* ```
|
|
23
28
|
*/
|
|
24
29
|
import { AutoNATv2Service } from "./autonat.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAkI/C,MAAM,UAAU,SAAS,CAAE,OAA6B,EAAE;IACxD,OAAO,CAAC,UAAU,EAAE,EAAE;QACpB,OAAO,IAAI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC/C,CAAC,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/autonat-v2",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23-3bf5d395c",
|
|
4
4
|
"description": "Implementation of the AutoNAT Protocol v2",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/protocol-autonat-v2#readme",
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"doc-check": "aegir doc-check"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@libp2p/interface": "
|
|
50
|
-
"@libp2p/interface-internal": "
|
|
51
|
-
"@libp2p/peer-collections": "
|
|
52
|
-
"@libp2p/utils": "
|
|
49
|
+
"@libp2p/interface": "3.2.5-3bf5d395c",
|
|
50
|
+
"@libp2p/interface-internal": "3.1.8-3bf5d395c",
|
|
51
|
+
"@libp2p/peer-collections": "7.0.23-3bf5d395c",
|
|
52
|
+
"@libp2p/utils": "7.2.4-3bf5d395c",
|
|
53
53
|
"@multiformats/multiaddr": "^13.0.3",
|
|
54
54
|
"any-signal": "^4.1.1",
|
|
55
55
|
"main-event": "^1.0.1",
|
|
@@ -58,10 +58,10 @@
|
|
|
58
58
|
"uint8arrays": "^6.1.1"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@libp2p/crypto": "
|
|
62
|
-
"@libp2p/logger": "
|
|
63
|
-
"@libp2p/peer-id": "
|
|
64
|
-
"aegir": "^48.
|
|
61
|
+
"@libp2p/crypto": "5.1.21-3bf5d395c",
|
|
62
|
+
"@libp2p/logger": "6.2.10-3bf5d395c",
|
|
63
|
+
"@libp2p/peer-id": "6.0.12-3bf5d395c",
|
|
64
|
+
"aegir": "^48.1.1",
|
|
65
65
|
"delay": "^7.0.0",
|
|
66
66
|
"it-all": "^3.0.9",
|
|
67
67
|
"it-length-prefixed": "^11.0.1",
|
package/src/autonat.ts
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import { serviceCapabilities, serviceDependencies, start, stop } from '@libp2p/interface'
|
|
2
|
+
import { TypedEventEmitter } from 'main-event'
|
|
2
3
|
import { AutoNATv2Client } from './client.ts'
|
|
3
4
|
import { DIAL_BACK, DIAL_REQUEST, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION } from './constants.ts'
|
|
4
5
|
import { AutoNATv2Server } from './server.ts'
|
|
5
|
-
import type { AutoNATv2Components, AutoNATv2ServiceInit } from './index.ts'
|
|
6
|
+
import type { AutoNATv2Components, AutoNATv2Events, AutoNATv2ServiceInit } from './index.ts'
|
|
6
7
|
import type { Startable } from '@libp2p/interface'
|
|
7
8
|
|
|
8
|
-
export class AutoNATv2Service implements Startable {
|
|
9
|
+
export class AutoNATv2Service extends TypedEventEmitter<AutoNATv2Events> implements Startable {
|
|
9
10
|
private readonly client: AutoNATv2Client
|
|
10
11
|
private readonly server: AutoNATv2Server
|
|
11
12
|
|
|
12
13
|
constructor (components: AutoNATv2Components, init: AutoNATv2ServiceInit) {
|
|
14
|
+
super()
|
|
15
|
+
|
|
13
16
|
const dialRequestProtocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}/${DIAL_REQUEST}`
|
|
14
17
|
const dialBackProtocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}/${DIAL_BACK}`
|
|
15
18
|
|
|
16
19
|
this.client = new AutoNATv2Client(components, {
|
|
17
20
|
...init,
|
|
18
21
|
dialRequestProtocol,
|
|
19
|
-
dialBackProtocol
|
|
22
|
+
dialBackProtocol,
|
|
23
|
+
safeDispatchEvent: this.safeDispatchEvent.bind(this)
|
|
20
24
|
})
|
|
21
25
|
this.server = new AutoNATv2Server(components, {
|
|
22
26
|
...init,
|
package/src/client.ts
CHANGED
|
@@ -6,12 +6,15 @@ import { setMaxListeners } from 'main-event'
|
|
|
6
6
|
import { DEFAULT_CONNECTION_THRESHOLD, DIAL_DATA_CHUNK_SIZE, MAX_DIAL_DATA_BYTES, MAX_INBOUND_STREAMS, MAX_MESSAGE_SIZE, MAX_OUTBOUND_STREAMS, TIMEOUT } from './constants.ts'
|
|
7
7
|
import { DialBack, DialBackResponse, DialResponse, DialStatus, Message } from './pb/index.ts'
|
|
8
8
|
import { randomNumber } from './utils.ts'
|
|
9
|
-
import type { AutoNATv2Components, AutoNATv2ServiceInit } from './index.ts'
|
|
9
|
+
import type { AddressReachabilityChange, AutoNATv2Components, AutoNATv2Events, AutoNATv2ServiceInit } from './index.ts'
|
|
10
10
|
import type { Logger, Connection, Startable, AbortOptions, Stream } from '@libp2p/interface'
|
|
11
11
|
import type { AddressType } from '@libp2p/interface-internal'
|
|
12
12
|
import type { PeerSet } from '@libp2p/peer-collections'
|
|
13
13
|
import type { Filter, RepeatingTask } from '@libp2p/utils'
|
|
14
14
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
15
|
+
import type { TypedEventEmitter } from 'main-event'
|
|
16
|
+
|
|
17
|
+
export type DispatchAutoNATv2Event = TypedEventEmitter<AutoNATv2Events>['safeDispatchEvent']
|
|
15
18
|
|
|
16
19
|
// if more than 3 peers manage to dial us on what we believe to be our external
|
|
17
20
|
// IP then we are convinced that it is, in fact, our external IP
|
|
@@ -68,6 +71,7 @@ export interface AutoNATv2ClientInit extends AutoNATv2ServiceInit {
|
|
|
68
71
|
dialBackProtocol: string
|
|
69
72
|
maxDialDataBytes?: bigint
|
|
70
73
|
dialDataChunkSize?: number
|
|
74
|
+
safeDispatchEvent: DispatchAutoNATv2Event
|
|
71
75
|
}
|
|
72
76
|
|
|
73
77
|
export class AutoNATv2Client implements Startable {
|
|
@@ -89,9 +93,11 @@ export class AutoNATv2Client implements Startable {
|
|
|
89
93
|
private readonly connectionThreshold: number
|
|
90
94
|
private readonly queue: PeerQueue
|
|
91
95
|
private readonly nonces: Set<bigint>
|
|
96
|
+
private readonly safeDispatchEvent: DispatchAutoNATv2Event
|
|
92
97
|
|
|
93
98
|
constructor (components: AutoNATv2Components, init: AutoNATv2ClientInit) {
|
|
94
99
|
this.components = components
|
|
100
|
+
this.safeDispatchEvent = init.safeDispatchEvent
|
|
95
101
|
this.log = components.logger.forComponent('libp2p:auto-nat-v2:client')
|
|
96
102
|
this.started = false
|
|
97
103
|
this.dialRequestProtocol = init.dialRequestProtocol
|
|
@@ -372,13 +378,7 @@ export class AutoNATv2Client implements Startable {
|
|
|
372
378
|
*/
|
|
373
379
|
private removeOutdatedMultiaddrResults (): void {
|
|
374
380
|
const unverifiedMultiaddrs = new Set(this.components.addressManager.getAddressesWithMetadata()
|
|
375
|
-
.filter(({ expires }) =>
|
|
376
|
-
if (expires < Date.now()) {
|
|
377
|
-
return true
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
return false
|
|
381
|
-
})
|
|
381
|
+
.filter(({ expires }) => expires < Date.now())
|
|
382
382
|
.map(({ multiaddr }) => multiaddr.toString())
|
|
383
383
|
)
|
|
384
384
|
|
|
@@ -553,6 +553,9 @@ export class AutoNATv2Client implements Startable {
|
|
|
553
553
|
if (response.dialResponse.dialStatus === DialStatus.OK) {
|
|
554
554
|
this.log.trace('%p dialed %a successfully', connection.remotePeer, results.multiaddr)
|
|
555
555
|
|
|
556
|
+
// surface progress as this new-segment peer contributes, before its
|
|
557
|
+
// result is counted
|
|
558
|
+
this.emitReachabilityEvent(results, 'verifying')
|
|
556
559
|
results.success++
|
|
557
560
|
|
|
558
561
|
// observed addresses require more confirmations
|
|
@@ -563,6 +566,7 @@ export class AutoNATv2Client implements Startable {
|
|
|
563
566
|
} else if (response.dialResponse.dialStatus === DialStatus.E_DIAL_ERROR) {
|
|
564
567
|
this.log.trace('%p could not dial %a', connection.remotePeer, results.multiaddr)
|
|
565
568
|
// the address was not dialable (e.g. not public)
|
|
569
|
+
this.emitReachabilityEvent(results, 'verifying')
|
|
566
570
|
results.failure++
|
|
567
571
|
} else if (response.dialResponse.dialStatus === DialStatus.E_DIAL_BACK_ERROR) {
|
|
568
572
|
this.log.trace('%p saw error while dialing %a', connection.remotePeer, results.multiaddr)
|
|
@@ -605,6 +609,8 @@ export class AutoNATv2Client implements Startable {
|
|
|
605
609
|
|
|
606
610
|
// abort & remove any outstanding verification jobs for this multiaddr
|
|
607
611
|
results.result = true
|
|
612
|
+
|
|
613
|
+
this.emitReachabilityEvent(results, 'reachable')
|
|
608
614
|
}
|
|
609
615
|
|
|
610
616
|
private unconfirmAddress (results: DialResults): void {
|
|
@@ -615,6 +621,19 @@ export class AutoNATv2Client implements Startable {
|
|
|
615
621
|
|
|
616
622
|
// abort & remove any outstanding verification jobs for this multiaddr
|
|
617
623
|
results.result = false
|
|
624
|
+
|
|
625
|
+
this.emitReachabilityEvent(results, 'unreachable')
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
private emitReachabilityEvent (results: DialResults, state: 'verifying' | 'reachable' | 'unreachable'): void {
|
|
629
|
+
this.safeDispatchEvent<AddressReachabilityChange>(`address:${state}`, {
|
|
630
|
+
detail: {
|
|
631
|
+
addr: results.multiaddr,
|
|
632
|
+
type: results.type,
|
|
633
|
+
success: results.success,
|
|
634
|
+
failure: results.failure
|
|
635
|
+
}
|
|
636
|
+
})
|
|
618
637
|
}
|
|
619
638
|
|
|
620
639
|
private getNetworkSegment (ma: Multiaddr): string {
|
package/src/index.ts
CHANGED
|
@@ -19,12 +19,66 @@
|
|
|
19
19
|
* autoNAT: autoNATv2()
|
|
20
20
|
* }
|
|
21
21
|
* })
|
|
22
|
+
*
|
|
23
|
+
* // observe per-address reachability changes as they are probed
|
|
24
|
+
* node.services.autoNAT.addEventListener('address:reachable', (evt) => {
|
|
25
|
+
* console.info(evt.detail.addr, 'is externally dialable')
|
|
26
|
+
* })
|
|
22
27
|
* ```
|
|
23
28
|
*/
|
|
24
29
|
|
|
25
30
|
import { AutoNATv2Service } from './autonat.ts'
|
|
26
31
|
import type { ComponentLogger, Metrics, PeerStore } from '@libp2p/interface'
|
|
27
|
-
import type { AddressManager, ConnectionManager, RandomWalk, Registrar } from '@libp2p/interface-internal'
|
|
32
|
+
import type { AddressManager, AddressType, ConnectionManager, RandomWalk, Registrar } from '@libp2p/interface-internal'
|
|
33
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
34
|
+
import type { TypedEventEmitter } from 'main-event'
|
|
35
|
+
|
|
36
|
+
export interface AddressReachabilityChange {
|
|
37
|
+
/**
|
|
38
|
+
* The address a probe result relates to
|
|
39
|
+
*/
|
|
40
|
+
readonly addr: Multiaddr
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The type of address being probed (e.g. observed or transport)
|
|
44
|
+
*/
|
|
45
|
+
readonly type: AddressType
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* How many peers have successfully dialled this address so far this round
|
|
49
|
+
*/
|
|
50
|
+
readonly success: number
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* How many peers have failed to dial this address so far this round
|
|
54
|
+
*/
|
|
55
|
+
readonly failure: number
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface AutoNATv2Events {
|
|
59
|
+
/**
|
|
60
|
+
* Emitted as each peer contributes a dial result for an address, carrying the
|
|
61
|
+
* running success/failure tally for the current round. A verdict
|
|
62
|
+
* (reachable/unreachable) is not guaranteed to follow.
|
|
63
|
+
*/
|
|
64
|
+
'address:verifying': CustomEvent<AddressReachabilityChange>
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* An address was confirmed to be externally dialable. Carries the tally for
|
|
68
|
+
* the current round, which is zero when an address is re-affirmed under
|
|
69
|
+
* connection pressure without probing.
|
|
70
|
+
*/
|
|
71
|
+
'address:reachable': CustomEvent<AddressReachabilityChange>
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* An address was confirmed not to be externally dialable, carrying the tally
|
|
75
|
+
* for the round that reached the failure threshold.
|
|
76
|
+
*/
|
|
77
|
+
'address:unreachable': CustomEvent<AddressReachabilityChange>
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface AutoNATv2 extends TypedEventEmitter<AutoNATv2Events> {
|
|
81
|
+
}
|
|
28
82
|
|
|
29
83
|
export interface AutoNATv2ServiceInit {
|
|
30
84
|
/**
|
|
@@ -103,7 +157,7 @@ export interface AutoNATv2Components {
|
|
|
103
157
|
metrics?: Metrics
|
|
104
158
|
}
|
|
105
159
|
|
|
106
|
-
export function autoNATv2 (init: AutoNATv2ServiceInit = {}): (components: AutoNATv2Components) =>
|
|
160
|
+
export function autoNATv2 (init: AutoNATv2ServiceInit = {}): (components: AutoNATv2Components) => AutoNATv2 {
|
|
107
161
|
return (components) => {
|
|
108
162
|
return new AutoNATv2Service(components, init)
|
|
109
163
|
}
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"AutoNATv2Components": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_autonat-v2.AutoNATv2Components.html",
|
|
3
|
-
".:AutoNATv2Components": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_autonat-v2.AutoNATv2Components.html",
|
|
4
|
-
"AutoNATv2ServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_autonat-v2.AutoNATv2ServiceInit.html",
|
|
5
|
-
".:AutoNATv2ServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_autonat-v2.AutoNATv2ServiceInit.html",
|
|
6
|
-
"autoNATv2": "https://libp2p.github.io/js-libp2p/functions/_libp2p_autonat-v2.autoNATv2.html",
|
|
7
|
-
".:autoNATv2": "https://libp2p.github.io/js-libp2p/functions/_libp2p_autonat-v2.autoNATv2.html"
|
|
8
|
-
}
|