libp2p 0.42.2-45fc415b → 0.42.2-593deefe
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/index.min.js +29 -29
- package/dist/src/circuit/client.d.ts +81 -0
- package/dist/src/circuit/client.d.ts.map +1 -0
- package/dist/src/circuit/client.js +285 -0
- package/dist/src/circuit/client.js.map +1 -0
- package/dist/src/circuit/constants.d.ts +7 -8
- package/dist/src/circuit/constants.d.ts.map +1 -1
- package/dist/src/circuit/constants.js +11 -8
- package/dist/src/circuit/constants.js.map +1 -1
- package/dist/src/circuit/hop.d.ts +23 -0
- package/dist/src/circuit/hop.d.ts.map +1 -0
- package/dist/src/circuit/hop.js +167 -0
- package/dist/src/circuit/hop.js.map +1 -0
- package/dist/src/circuit/index.d.ts +47 -47
- package/dist/src/circuit/index.d.ts.map +1 -1
- package/dist/src/circuit/index.js +1 -68
- package/dist/src/circuit/index.js.map +1 -1
- package/dist/src/circuit/interfaces.d.ts +27 -0
- package/dist/src/circuit/interfaces.d.ts.map +1 -0
- package/dist/src/circuit/interfaces.js +2 -0
- package/dist/src/circuit/interfaces.js.map +1 -0
- package/dist/src/circuit/multicodec.d.ts +2 -1
- package/dist/src/circuit/multicodec.d.ts.map +1 -1
- package/dist/src/circuit/multicodec.js +2 -1
- package/dist/src/circuit/multicodec.js.map +1 -1
- package/dist/src/circuit/pb/index.d.ts +83 -43
- package/dist/src/circuit/pb/index.d.ts.map +1 -1
- package/dist/src/circuit/pb/index.js +363 -127
- package/dist/src/circuit/pb/index.js.map +1 -1
- package/dist/src/circuit/relay.d.ts +34 -0
- package/dist/src/circuit/relay.d.ts.map +1 -0
- package/dist/src/circuit/relay.js +61 -0
- package/dist/src/circuit/relay.js.map +1 -0
- package/dist/src/circuit/reservation-store.d.ts +42 -0
- package/dist/src/circuit/reservation-store.d.ts.map +1 -0
- package/dist/src/circuit/reservation-store.js +59 -0
- package/dist/src/circuit/reservation-store.js.map +1 -0
- package/dist/src/circuit/reservation-voucher.d.ts +18 -0
- package/dist/src/circuit/reservation-voucher.d.ts.map +1 -0
- package/dist/src/circuit/reservation-voucher.js +33 -0
- package/dist/src/circuit/reservation-voucher.js.map +1 -0
- package/dist/src/circuit/stop.d.ts +19 -0
- package/dist/src/circuit/stop.d.ts.map +1 -0
- package/dist/src/circuit/stop.js +67 -0
- package/dist/src/circuit/stop.js.map +1 -0
- package/dist/src/circuit/transport.d.ts +24 -9
- package/dist/src/circuit/transport.d.ts.map +1 -1
- package/dist/src/circuit/transport.js +133 -118
- package/dist/src/circuit/transport.js.map +1 -1
- package/dist/src/circuit/utils.d.ts +5 -0
- package/dist/src/circuit/utils.d.ts.map +1 -1
- package/dist/src/circuit/utils.js +114 -0
- package/dist/src/circuit/utils.js.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +2 -3
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -1
- package/dist/src/connection-manager/dialer/dial-request.js +7 -0
- package/dist/src/connection-manager/dialer/dial-request.js.map +1 -1
- package/dist/src/errors.d.ts +2 -1
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +1 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/fetch/pb/proto.d.ts +3 -3
- package/dist/src/fetch/pb/proto.d.ts.map +1 -1
- package/dist/src/fetch/pb/proto.js +4 -3
- package/dist/src/fetch/pb/proto.js.map +1 -1
- package/dist/src/identify/pb/message.d.ts +2 -2
- package/dist/src/identify/pb/message.d.ts.map +1 -1
- package/dist/src/identify/pb/message.js +1 -0
- package/dist/src/identify/pb/message.js.map +1 -1
- package/dist/src/insecure/pb/proto.d.ts +3 -3
- package/dist/src/insecure/pb/proto.d.ts.map +1 -1
- package/dist/src/insecure/pb/proto.js +4 -5
- package/dist/src/insecure/pb/proto.js.map +1 -1
- package/dist/src/libp2p.d.ts +2 -0
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +10 -3
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/transport-manager.d.ts.map +1 -1
- package/dist/src/transport-manager.js +2 -3
- package/dist/src/transport-manager.js.map +1 -1
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js.map +1 -1
- package/package.json +12 -11
- package/src/circuit/client.ts +381 -0
- package/src/circuit/constants.ts +14 -8
- package/src/circuit/hop.ts +210 -0
- package/src/circuit/index.ts +49 -111
- package/src/circuit/interfaces.ts +28 -0
- package/src/circuit/multicodec.ts +2 -1
- package/src/circuit/pb/index.proto +57 -32
- package/src/circuit/pb/index.ts +448 -138
- package/src/circuit/relay.ts +87 -0
- package/src/circuit/reservation-store.ts +106 -0
- package/src/circuit/reservation-voucher.ts +51 -0
- package/src/circuit/stop.ts +92 -0
- package/src/circuit/transport.ts +166 -131
- package/src/circuit/utils.ts +145 -0
- package/src/config.ts +2 -3
- package/src/connection-manager/dialer/dial-request.ts +7 -0
- package/src/errors.ts +2 -1
- package/src/fetch/pb/proto.ts +8 -7
- package/src/identify/pb/message.ts +3 -2
- package/src/insecure/pb/proto.ts +8 -9
- package/src/libp2p.ts +12 -3
- package/src/transport-manager.ts +2 -3
- package/src/upgrader.ts +4 -4
- package/src/version.ts +1 -1
- package/dist/src/circuit/auto-relay.d.ts +0 -46
- package/dist/src/circuit/auto-relay.d.ts.map +0 -1
- package/dist/src/circuit/auto-relay.js +0 -220
- package/dist/src/circuit/auto-relay.js.map +0 -1
- package/dist/src/circuit/circuit/hop.d.ts +0 -42
- package/dist/src/circuit/circuit/hop.d.ts.map +0 -1
- package/dist/src/circuit/circuit/hop.js +0 -142
- package/dist/src/circuit/circuit/hop.js.map +0 -1
- package/dist/src/circuit/circuit/stop.d.ts +0 -24
- package/dist/src/circuit/circuit/stop.d.ts.map +0 -1
- package/dist/src/circuit/circuit/stop.js +0 -51
- package/dist/src/circuit/circuit/stop.js.map +0 -1
- package/dist/src/circuit/circuit/stream-handler.d.ts +0 -40
- package/dist/src/circuit/circuit/stream-handler.d.ts.map +0 -1
- package/dist/src/circuit/circuit/stream-handler.js +0 -59
- package/dist/src/circuit/circuit/stream-handler.js.map +0 -1
- package/dist/src/circuit/circuit/utils.d.ts +0 -7
- package/dist/src/circuit/circuit/utils.d.ts.map +0 -1
- package/dist/src/circuit/circuit/utils.js +0 -43
- package/dist/src/circuit/circuit/utils.js.map +0 -1
- package/src/circuit/IMPLEMENTATION_NOTES.md +0 -128
- package/src/circuit/README.md +0 -111
- package/src/circuit/auto-relay.ts +0 -292
- package/src/circuit/circuit/hop.ts +0 -220
- package/src/circuit/circuit/stop.ts +0 -83
- package/src/circuit/circuit/stream-handler.ts +0 -87
- package/src/circuit/circuit/utils.ts +0 -44
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger';
|
|
2
|
+
import { codes } from '../errors.js';
|
|
3
|
+
import { setDelayedInterval, clearDelayedInterval
|
|
4
|
+
// @ts-expect-error set-delayed-interval does not export types
|
|
5
|
+
} from 'set-delayed-interval';
|
|
6
|
+
import { namespaceToCid } from './utils.js';
|
|
7
|
+
import { RELAY_RENDEZVOUS_NS } from './constants.js';
|
|
8
|
+
const log = logger('libp2p:circuit:relay');
|
|
9
|
+
export class Relay {
|
|
10
|
+
/**
|
|
11
|
+
* Creates an instance of Relay
|
|
12
|
+
*/
|
|
13
|
+
constructor(components, init) {
|
|
14
|
+
this.components = components;
|
|
15
|
+
this.started = false;
|
|
16
|
+
this.init = init;
|
|
17
|
+
this._advertiseService = this._advertiseService.bind(this);
|
|
18
|
+
}
|
|
19
|
+
isStarted() {
|
|
20
|
+
return this.started;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Start Relay service
|
|
24
|
+
*/
|
|
25
|
+
async start() {
|
|
26
|
+
// Advertise service if HOP enabled and advertising enabled
|
|
27
|
+
if (this.init.hop.enabled === true && this.init.advertise.enabled === true) {
|
|
28
|
+
this.timeout = setDelayedInterval(this._advertiseService, this.init.advertise.ttl, this.init.advertise.bootDelay);
|
|
29
|
+
}
|
|
30
|
+
this.started = true;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Stop Relay service
|
|
34
|
+
*/
|
|
35
|
+
async stop() {
|
|
36
|
+
try {
|
|
37
|
+
clearDelayedInterval(this.timeout);
|
|
38
|
+
}
|
|
39
|
+
catch (err) { }
|
|
40
|
+
this.started = false;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Advertise hop relay service in the network.
|
|
44
|
+
*/
|
|
45
|
+
async _advertiseService() {
|
|
46
|
+
try {
|
|
47
|
+
const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS);
|
|
48
|
+
await this.components.contentRouting.provide(cid);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
if (err.code === codes.ERR_NO_ROUTERS_AVAILABLE) {
|
|
52
|
+
log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err);
|
|
53
|
+
await this.stop();
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
log.error('could not advertise service: ', err);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=relay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../../../src/circuit/relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EACL,kBAAkB,EAClB,oBAAoB;AACpB,8DAA8D;EAC/D,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACpB,MAAM,gBAAgB,CAAA;AAMvB,MAAM,GAAG,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAS1C,MAAM,OAAO,KAAK;IAMhB;;OAEG;IACH,YAAa,UAAsB,EAAE,IAAe;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,2DAA2D;QAC3D,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,EAAE;YAC1E,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAC/B,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAC/E,CAAA;SACF;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI;YACF,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACnC;QAAC,OAAO,GAAG,EAAE,GAAG;QAEjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,mBAAmB,CAAC,CAAA;YACrD,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;SAClD;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,wBAAwB,EAAE;gBAC/C,GAAG,CAAC,KAAK,CAAC,2FAA2F,EAAE,GAAG,CAAC,CAAA;gBAC3G,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;aAClB;iBAAM;gBACL,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;aAChD;SACF;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Limit } from './pb/index.js';
|
|
2
|
+
import type { ReservationStore as IReservationStore, ReservationStatus, Reservation } from './interfaces.js';
|
|
3
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
4
|
+
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
5
|
+
import type { Startable } from '@libp2p/interfaces/startable';
|
|
6
|
+
import type { RecursivePartial } from '@libp2p/interfaces';
|
|
7
|
+
export interface ReservationStoreInit {
|
|
8
|
+
maxReservations: number;
|
|
9
|
+
reservationClearInterval: number;
|
|
10
|
+
applyDefaultLimit: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* reservation ttl, default: 2 hours
|
|
13
|
+
*/
|
|
14
|
+
reservationTtl: number;
|
|
15
|
+
/**
|
|
16
|
+
* The maximum time a relayed connection can be open for
|
|
17
|
+
*/
|
|
18
|
+
defaultDurationLimit?: number;
|
|
19
|
+
/**
|
|
20
|
+
* The maximum amount of data allowed to be transferred over a relayed connection
|
|
21
|
+
*/
|
|
22
|
+
defaultDataLimit?: bigint;
|
|
23
|
+
}
|
|
24
|
+
export type ReservationStoreOptions = RecursivePartial<ReservationStoreInit>;
|
|
25
|
+
export declare class ReservationStore implements IReservationStore, Startable {
|
|
26
|
+
private readonly reservations;
|
|
27
|
+
private _started;
|
|
28
|
+
private interval;
|
|
29
|
+
private readonly init;
|
|
30
|
+
constructor(options?: ReservationStoreOptions);
|
|
31
|
+
isStarted(): boolean;
|
|
32
|
+
start(): void;
|
|
33
|
+
stop(): void;
|
|
34
|
+
reserve(peer: PeerId, addr: Multiaddr, limit?: Limit): {
|
|
35
|
+
status: ReservationStatus;
|
|
36
|
+
expire?: number;
|
|
37
|
+
};
|
|
38
|
+
removeReservation(peer: PeerId): void;
|
|
39
|
+
hasReservation(dst: PeerId): boolean;
|
|
40
|
+
get(peer: PeerId): Reservation | undefined;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=reservation-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reservation-store.d.ts","sourceRoot":"","sources":["../../../src/circuit/reservation-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAU,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG1D,MAAM,WAAW,oBAAoB;IAInC,eAAe,EAAE,MAAM,CAAA;IAIvB,wBAAwB,EAAE,MAAM,CAAA;IAIhC,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAE5E,qBAAa,gBAAiB,YAAW,iBAAiB,EAAE,SAAS;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;gBAE9B,OAAO,CAAC,EAAE,uBAAuB;IAW9C,SAAS;IAIT,KAAK;IAkBL,IAAI;IAIJ,OAAO,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAatG,iBAAiB,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,cAAc,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAIrC,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAG5C"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Status } from './pb/index.js';
|
|
2
|
+
import { PeerMap } from '@libp2p/peer-collections';
|
|
3
|
+
import { DEFAULT_DATA_LIMIT, DEFAULT_DURATION_LIMIT } from './constants.js';
|
|
4
|
+
export class ReservationStore {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.reservations = new PeerMap();
|
|
7
|
+
this._started = false;
|
|
8
|
+
this.init = {
|
|
9
|
+
maxReservations: options?.maxReservations ?? 15,
|
|
10
|
+
reservationClearInterval: options?.reservationClearInterval ?? 300 * 1000,
|
|
11
|
+
applyDefaultLimit: options?.applyDefaultLimit !== false,
|
|
12
|
+
reservationTtl: options?.reservationTtl ?? 2 * 60 * 60 * 1000,
|
|
13
|
+
defaultDurationLimit: options?.defaultDurationLimit ?? DEFAULT_DURATION_LIMIT,
|
|
14
|
+
defaultDataLimit: options?.defaultDataLimit ?? DEFAULT_DATA_LIMIT
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
isStarted() {
|
|
18
|
+
return this._started;
|
|
19
|
+
}
|
|
20
|
+
start() {
|
|
21
|
+
if (this._started) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this._started = true;
|
|
25
|
+
this.interval = setInterval(() => {
|
|
26
|
+
const now = (new Date()).getTime();
|
|
27
|
+
this.reservations.forEach((r, k) => {
|
|
28
|
+
if (r.expire.getTime() < now) {
|
|
29
|
+
this.reservations.delete(k);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}, this.init.reservationClearInterval);
|
|
33
|
+
}
|
|
34
|
+
stop() {
|
|
35
|
+
clearInterval(this.interval);
|
|
36
|
+
}
|
|
37
|
+
reserve(peer, addr, limit) {
|
|
38
|
+
if (this.reservations.size >= this.init.maxReservations && !this.reservations.has(peer)) {
|
|
39
|
+
return { status: Status.RESERVATION_REFUSED };
|
|
40
|
+
}
|
|
41
|
+
const expire = new Date(Date.now() + this.init.reservationTtl);
|
|
42
|
+
let checkedLimit;
|
|
43
|
+
if (this.init.applyDefaultLimit) {
|
|
44
|
+
checkedLimit = limit ?? { data: this.init.defaultDataLimit, duration: this.init.defaultDurationLimit };
|
|
45
|
+
}
|
|
46
|
+
this.reservations.set(peer, { addr, expire, limit: checkedLimit });
|
|
47
|
+
return { status: Status.OK, expire: expire.getTime() };
|
|
48
|
+
}
|
|
49
|
+
removeReservation(peer) {
|
|
50
|
+
this.reservations.delete(peer);
|
|
51
|
+
}
|
|
52
|
+
hasReservation(dst) {
|
|
53
|
+
return this.reservations.has(dst);
|
|
54
|
+
}
|
|
55
|
+
get(peer) {
|
|
56
|
+
return this.reservations.get(peer);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=reservation-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reservation-store.js","sourceRoot":"","sources":["../../../src/circuit/reservation-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
2
|
+
import type { Record } from '@libp2p/interface-record';
|
|
3
|
+
export interface ReservationVoucherOptions {
|
|
4
|
+
relay: PeerId;
|
|
5
|
+
peer: PeerId;
|
|
6
|
+
expiration: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class ReservationVoucherRecord implements Record {
|
|
9
|
+
readonly domain = "libp2p-relay-rsvp";
|
|
10
|
+
readonly codec: Uint8Array;
|
|
11
|
+
private readonly relay;
|
|
12
|
+
private readonly peer;
|
|
13
|
+
private readonly expiration;
|
|
14
|
+
constructor({ relay, peer, expiration }: ReservationVoucherOptions);
|
|
15
|
+
marshal(): Uint8Array;
|
|
16
|
+
equals(other: Record): boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=reservation-voucher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reservation-voucher.d.ts","sourceRoot":"","sources":["../../../src/circuit/reservation-voucher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAGtD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,wBAAyB,YAAW,MAAM;IACrD,SAAgB,MAAM,uBAAsB;IAC5C,SAAgB,KAAK,aAA+B;IAEpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEtB,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,yBAAyB;IAMnE,OAAO;IAQP,MAAM,CAAE,KAAK,EAAE,MAAM;CAkBtB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ReservationVoucher } from './pb/index.js';
|
|
2
|
+
export class ReservationVoucherRecord {
|
|
3
|
+
constructor({ relay, peer, expiration }) {
|
|
4
|
+
this.domain = 'libp2p-relay-rsvp';
|
|
5
|
+
this.codec = new Uint8Array([0x03, 0x02]);
|
|
6
|
+
this.relay = relay;
|
|
7
|
+
this.peer = peer;
|
|
8
|
+
this.expiration = expiration;
|
|
9
|
+
}
|
|
10
|
+
marshal() {
|
|
11
|
+
return ReservationVoucher.encode({
|
|
12
|
+
relay: this.relay.toBytes(),
|
|
13
|
+
peer: this.peer.toBytes(),
|
|
14
|
+
expiration: BigInt(this.expiration)
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
equals(other) {
|
|
18
|
+
if (!(other instanceof ReservationVoucherRecord)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (!this.peer.equals(other.peer)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (!this.relay.equals(other.relay)) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (this.expiration !== other.expiration) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=reservation-voucher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reservation-voucher.js","sourceRoot":"","sources":["../../../src/circuit/reservation-voucher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAQlD,MAAM,OAAO,wBAAwB;IAQnC,YAAa,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAA6B;QAPnD,WAAM,GAAG,mBAAmB,CAAA;QAC5B,UAAK,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAOlD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,OAAO;QACL,OAAO,kBAAkB,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACzB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SACpC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAE,KAAa;QACnB,IAAI,CAAC,CAAC,KAAK,YAAY,wBAAwB,CAAC,EAAE;YAChD,OAAO,KAAK,CAAA;SACb;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACjC,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACnC,OAAO,KAAK,CAAA;SACb;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE;YACxC,OAAO,KAAK,CAAA;SACb;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { StopMessage } from './pb/index.js';
|
|
2
|
+
import type { Connection, Stream } from '@libp2p/interface-connection';
|
|
3
|
+
import { ProtobufStream } from 'it-pb-stream';
|
|
4
|
+
export interface HandleStopOptions {
|
|
5
|
+
connection: Connection;
|
|
6
|
+
request: StopMessage;
|
|
7
|
+
pbstr: ProtobufStream<Stream>;
|
|
8
|
+
}
|
|
9
|
+
export declare function handleStop({ connection, request, pbstr }: HandleStopOptions): Promise<Stream | undefined>;
|
|
10
|
+
export interface StopOptions {
|
|
11
|
+
connection: Connection;
|
|
12
|
+
request: StopMessage;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Creates a STOP request
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export declare function stop({ connection, request }: StopOptions): Promise<Stream | undefined>;
|
|
19
|
+
//# sourceMappingURL=stop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/circuit/stop.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,WAAW,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAKtE,OAAO,EAAY,cAAc,EAAE,MAAM,cAAc,CAAA;AAIvD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAC9B;AAaD,wBAAsB,UAAU,CAAE,EAChC,UAAU,EACV,OAAO,EACP,KAAK,EACN,EAAE,iBAAiB,+BAoBnB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAE,EAC1B,UAAU,EACV,OAAO,EACR,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyB3C"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Status, StopMessage } from './pb/index.js';
|
|
2
|
+
import { logger } from '@libp2p/logger';
|
|
3
|
+
import { RELAY_V2_STOP_CODEC } from './multicodec.js';
|
|
4
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
|
5
|
+
import { pbStream } from 'it-pb-stream';
|
|
6
|
+
const log = logger('libp2p:circuit:v2:stop');
|
|
7
|
+
const isValidStop = (request) => {
|
|
8
|
+
if (request.peer == null) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
request.peer.addrs.forEach(multiaddr);
|
|
13
|
+
}
|
|
14
|
+
catch (_err) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
};
|
|
19
|
+
export async function handleStop({ connection, request, pbstr }) {
|
|
20
|
+
const stopstr = pbstr.pb(StopMessage);
|
|
21
|
+
log('new circuit relay v2 stop stream from %s', connection.remotePeer);
|
|
22
|
+
// Validate the STOP request has the required input
|
|
23
|
+
if (request.type !== StopMessage.Type.CONNECT) {
|
|
24
|
+
log.error('invalid stop connect request via peer %s', connection.remotePeer);
|
|
25
|
+
stopstr.write({ type: StopMessage.Type.STATUS, status: Status.UNEXPECTED_MESSAGE });
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!isValidStop(request)) {
|
|
29
|
+
log.error('invalid stop connect request via peer %s', connection.remotePeer);
|
|
30
|
+
stopstr.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// TODO: go-libp2p marks connection transient if there is limit field present in request.
|
|
34
|
+
// Cannot find any reference to transient connections in js-libp2p
|
|
35
|
+
stopstr.write({ type: StopMessage.Type.STATUS, status: Status.OK });
|
|
36
|
+
return pbstr.unwrap();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates a STOP request
|
|
40
|
+
*
|
|
41
|
+
*/
|
|
42
|
+
export async function stop({ connection, request }) {
|
|
43
|
+
const stream = await connection.newStream([RELAY_V2_STOP_CODEC]);
|
|
44
|
+
log('starting circuit relay v2 stop request to %s', connection.remotePeer);
|
|
45
|
+
const pbstr = pbStream(stream);
|
|
46
|
+
const stopstr = pbstr.pb(StopMessage);
|
|
47
|
+
stopstr.write(request);
|
|
48
|
+
let response;
|
|
49
|
+
try {
|
|
50
|
+
response = await stopstr.read();
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
log.error('error parsing stop message response from %s', connection.remotePeer);
|
|
54
|
+
}
|
|
55
|
+
if (response == null) {
|
|
56
|
+
log.error('could not read response from %s', connection.remotePeer);
|
|
57
|
+
stream.close();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (response.status === Status.OK) {
|
|
61
|
+
log('stop request to %s was successful', connection.remotePeer);
|
|
62
|
+
return pbstr.unwrap();
|
|
63
|
+
}
|
|
64
|
+
log('stop request failed with code %d', response.status);
|
|
65
|
+
stream.close();
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/circuit/stop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { symbol, Upgrader } from '@libp2p/interface-transport';
|
|
1
|
+
import { symbol, TransportManager, Upgrader } from '@libp2p/interface-transport';
|
|
3
2
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
4
3
|
import type { IncomingStreamData, Registrar } from '@libp2p/interface-registrar';
|
|
5
4
|
import type { Listener, Transport, CreateListenerOptions } from '@libp2p/interface-transport';
|
|
6
|
-
import type { Connection } from '@libp2p/interface-connection';
|
|
5
|
+
import type { Connection, Stream } from '@libp2p/interface-connection';
|
|
7
6
|
import type { RelayConfig } from './index.js';
|
|
8
|
-
import type { Startable } from '@libp2p/interfaces/startable';
|
|
9
|
-
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
10
7
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
8
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
11
9
|
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
10
|
+
import type { Startable } from '@libp2p/interfaces/dist/src/startable';
|
|
11
|
+
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
12
12
|
import type { AddressManager } from '@libp2p/interface-address-manager';
|
|
13
|
+
export interface CircuitOptions {
|
|
14
|
+
limit?: number;
|
|
15
|
+
}
|
|
13
16
|
export interface CircuitComponents {
|
|
14
17
|
peerId: PeerId;
|
|
15
18
|
peerStore: PeerStore;
|
|
@@ -17,25 +20,36 @@ export interface CircuitComponents {
|
|
|
17
20
|
connectionManager: ConnectionManager;
|
|
18
21
|
upgrader: Upgrader;
|
|
19
22
|
addressManager: AddressManager;
|
|
23
|
+
transportManager: TransportManager;
|
|
24
|
+
}
|
|
25
|
+
interface ConnectOptions {
|
|
26
|
+
stream: Stream;
|
|
27
|
+
connection: Connection;
|
|
28
|
+
destinationPeer: PeerId;
|
|
29
|
+
destinationAddr: Multiaddr;
|
|
30
|
+
relayAddr: Multiaddr;
|
|
31
|
+
ma: Multiaddr;
|
|
32
|
+
disconnectOnFailure: boolean;
|
|
20
33
|
}
|
|
21
34
|
export declare class Circuit implements Transport, Startable {
|
|
22
35
|
private handler?;
|
|
23
36
|
private readonly components;
|
|
37
|
+
private readonly reservationStore;
|
|
24
38
|
private readonly _init;
|
|
25
39
|
private _started;
|
|
26
|
-
constructor(components: CircuitComponents,
|
|
40
|
+
constructor(components: CircuitComponents, options: RelayConfig);
|
|
27
41
|
isStarted(): boolean;
|
|
28
42
|
start(): Promise<void>;
|
|
29
43
|
stop(): Promise<void>;
|
|
30
|
-
hopEnabled(): boolean;
|
|
31
|
-
hopActive(): boolean;
|
|
32
44
|
get [symbol](): true;
|
|
33
45
|
get [Symbol.toStringTag](): string;
|
|
34
|
-
|
|
46
|
+
onHop({ connection, stream }: IncomingStreamData): Promise<void>;
|
|
47
|
+
onStop({ connection, stream }: IncomingStreamData): Promise<void>;
|
|
35
48
|
/**
|
|
36
49
|
* Dial a peer over a relay
|
|
37
50
|
*/
|
|
38
51
|
dial(ma: Multiaddr, options?: AbortOptions): Promise<Connection>;
|
|
52
|
+
connectV2({ stream, connection, destinationPeer, destinationAddr, relayAddr, ma, disconnectOnFailure }: ConnectOptions): Promise<Connection>;
|
|
39
53
|
/**
|
|
40
54
|
* Create a listener
|
|
41
55
|
*/
|
|
@@ -48,4 +62,5 @@ export declare class Circuit implements Transport, Startable {
|
|
|
48
62
|
*/
|
|
49
63
|
filter(multiaddrs: Multiaddr[]): Multiaddr[];
|
|
50
64
|
}
|
|
65
|
+
export {};
|
|
51
66
|
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/circuit/transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/circuit/transport.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,qBAAqB,EAAqB,MAAM,6BAA6B,CAAA;AAChH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAMvE,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,QAAQ,EAAE,QAAQ,CAAA;IAClB,cAAc,EAAE,cAAc,CAAA;IAC9B,gBAAgB,EAAE,gBAAgB,CAAA;CACnC;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,SAAS,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,EAAE,EAAE,SAAS,CAAA;IACb,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAED,qBAAa,OAAQ,YAAW,SAAS,EAAE,SAAS;IAClD,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAS;gBAEZ,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW;IAUhE,SAAS;IAIH,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAiCvB,IAAI;IAQV,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAEK,KAAK,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB;IA2CjD,MAAM,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB;IA6BxD;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6CrE,SAAS,CACb,EACE,MAAM,EAAE,UAAU,EAAE,eAAe,EACnC,eAAe,EAAE,SAAS,EAAE,EAAE,EAC9B,mBAAmB,EACpB,EAAE,cAAc;IAqCnB;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAUzD;;;;;OAKG;IACH,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAO9C"}
|