Skip to content

Commit

Permalink
chore: update dependencies
Browse files Browse the repository at this point in the history
BREAKING CHANGE: new multiaddr used with different API
  • Loading branch information
vasco-santos committed May 3, 2021
1 parent 7f2d5ef commit d8d8a0a
Show file tree
Hide file tree
Showing 18 changed files with 624 additions and 515 deletions.
11 changes: 5 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,18 +54,17 @@
"typescript": "^3.8.3"
},
"dependencies": {
"@types/err-code": "^2.0.0",
"base64url": "^3.0.1",
"bcrypto": "^5.4.0",
"bigint-buffer": "^1.1.5",
"debug": "^4.1.1",
"debug": "^4.3.1",
"dgram": "^1.0.1",
"err-code": "^2.0.3",
"err-code": "^3.0.1",
"ip6addr": "^0.2.3",
"is-ip": "^3.1.0",
"libp2p-crypto": "^0.18.0",
"multiaddr": "^8.0.0",
"peer-id": "^0.14.1",
"libp2p-crypto": "^0.19.4",
"multiaddr": "^9.0.0",
"peer-id": "^0.14.8",
"rlp": "^2.2.6",
"strict-event-emitter-types": "^2.0.0"
}
Expand Down
32 changes: 18 additions & 14 deletions src/enr/enr.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Multiaddr = require("multiaddr");
import { Multiaddr, protocols } from "multiaddr";
import base64url from "base64url";
import { toBigIntBE } from "bigint-buffer";
import * as RLP from "rlp";
Expand Down Expand Up @@ -114,15 +114,15 @@ export class ENR extends Map<ENRKey, ENRValue> {
get ip(): string | undefined {
const raw = this.get("ip");
if (raw) {
return muConvert.toString(Multiaddr.protocols.names.ip4.code, raw) as string;
return muConvert.toString(protocols.names.ip4.code, raw) as string;
} else {
return undefined;
}
}

set ip(ip: string | undefined) {
if (ip) {
this.set("ip", muConvert.toBytes(Multiaddr.protocols.names.ip4.code, ip));
this.set("ip", muConvert.toBytes(protocols.names.ip4.code, ip));
} else {
this.delete("ip");
}
Expand All @@ -131,7 +131,7 @@ export class ENR extends Map<ENRKey, ENRValue> {
get tcp(): number | undefined {
const raw = this.get("tcp");
if (raw) {
return muConvert.toString(Multiaddr.protocols.names.tcp.code, toNewUint8Array(raw)) as number;
return muConvert.toString(protocols.names.tcp.code, toNewUint8Array(raw)) as number;
} else {
return undefined;
}
Expand All @@ -141,14 +141,14 @@ export class ENR extends Map<ENRKey, ENRValue> {
if (port === undefined) {
this.delete("tcp");
} else {
this.set("tcp", muConvert.toBytes(Multiaddr.protocols.names.tcp.code, port));
this.set("tcp", muConvert.toBytes(protocols.names.tcp.code, port));
}
}

get udp(): number | undefined {
const raw = this.get("udp");
if (raw) {
return muConvert.toString(Multiaddr.protocols.names.udp.code, toNewUint8Array(raw)) as number;
return muConvert.toString(protocols.names.udp.code, toNewUint8Array(raw)) as number;
} else {
return undefined;
}
Expand All @@ -158,22 +158,22 @@ export class ENR extends Map<ENRKey, ENRValue> {
if (port === undefined) {
this.delete("udp");
} else {
this.set("udp", muConvert.toBytes(Multiaddr.protocols.names.udp.code, port));
this.set("udp", muConvert.toBytes(protocols.names.udp.code, port));
}
}

get ip6(): string | undefined {
const raw = this.get("ip6");
if (raw) {
return muConvert.toString(Multiaddr.protocols.names.ip6.code, raw) as string;
return muConvert.toString(protocols.names.ip6.code, raw) as string;
} else {
return undefined;
}
}

set ip6(ip: string | undefined) {
if (ip) {
this.set("ip6", muConvert.toBytes(Multiaddr.protocols.names.ip6.code, ip));
this.set("ip6", muConvert.toBytes(protocols.names.ip6.code, ip));
} else {
this.delete("ip6");
}
Expand All @@ -182,7 +182,7 @@ export class ENR extends Map<ENRKey, ENRValue> {
get tcp6(): number | undefined {
const raw = this.get("tcp6");
if (raw) {
return muConvert.toString(Multiaddr.protocols.names.tcp.code, raw) as number;
return muConvert.toString(protocols.names.tcp.code, raw) as number;
} else {
return undefined;
}
Expand All @@ -192,14 +192,14 @@ export class ENR extends Map<ENRKey, ENRValue> {
if (port === undefined) {
this.delete("tcp6");
} else {
this.set("tcp6", muConvert.toBytes(Multiaddr.protocols.names.tcp.code, port));
this.set("tcp6", muConvert.toBytes(protocols.names.tcp.code, port));
}
}

get udp6(): number | undefined {
const raw = this.get("udp6");
if (raw) {
return muConvert.toString(Multiaddr.protocols.names.udp.code, raw) as number;
return muConvert.toString(protocols.names.udp.code, raw) as number;
} else {
return undefined;
}
Expand All @@ -209,7 +209,7 @@ export class ENR extends Map<ENRKey, ENRValue> {
if (port === undefined) {
this.delete("udp6");
} else {
this.set("udp6", muConvert.toBytes(Multiaddr.protocols.names.udp.code, port));
this.set("udp6", muConvert.toBytes(protocols.names.udp.code, port));
}
}

Expand All @@ -236,14 +236,18 @@ export class ENR extends Map<ENRKey, ENRValue> {
if (!protoVal) {
return undefined;
}
return Multiaddr(`/${ipName}/${ipVal}/${protoName}/${protoVal}`);
return new Multiaddr(`/${ipName}/${ipVal}/${protoName}/${protoVal}`);
}
setLocationMultiaddr(multiaddr: Multiaddr): void {
const protoNames = multiaddr.protoNames();
if (protoNames.length !== 2 && protoNames[1] !== "udp" && protoNames[1] !== "tcp") {
throw new Error("Invalid multiaddr");
}
const tuples = multiaddr.tuples();
if (!tuples[0][1] || !tuples[1][1]) {
return
}

// IPv4
if (tuples[0][0] === 4) {
this.set("ip", tuples[0][1]);
Expand Down
4 changes: 2 additions & 2 deletions src/libp2p/discv5.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { EventEmitter } from "events";
import PeerId = require("peer-id");
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";
import { randomBytes } from "libp2p-crypto";

import { Discv5, ENRInput } from "../service";
Expand Down Expand Up @@ -48,7 +48,7 @@ export class Discv5Discovery extends EventEmitter {
this.discv5 = Discv5.create({
enr: options.enr,
peerId: options.peerId,
multiaddr: Multiaddr(options.bindAddr),
multiaddr: new Multiaddr(options.bindAddr),
config: options,
});
this.started = false;
Expand Down
10 changes: 7 additions & 3 deletions src/message/encode.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as RLP from "rlp";
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";
import isIp = require("is-ip");

import {
Expand Down Expand Up @@ -56,10 +56,14 @@ export function encodePingMessage(m: IPingMessage): Buffer {
}

export function encodePongMessage(m: IPongMessage): Buffer {
const ipMultiaddr = Multiaddr(`/${isIp.v4(m.recipientIp) ? "ip4" : "ip6"}/${m.recipientIp}`);
const ipMultiaddr = new Multiaddr(`/${isIp.v4(m.recipientIp) ? "ip4" : "ip6"}/${m.recipientIp}`);
const tuple = ipMultiaddr.tuples()[0][1]
if (!tuple) {
throw new Error('invalid address for encoding')
}
return Buffer.concat([
Buffer.from([MessageType.PONG]),
RLP.encode([toBuffer(m.id), toBuffer(m.enrSeq), ipMultiaddr.tuples()[0][1], m.recipientPort]),
RLP.encode([toBuffer(m.id), toBuffer(m.enrSeq), tuple, m.recipientPort]),
]);
}

Expand Down
6 changes: 3 additions & 3 deletions src/service/addrVotes.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";

import { NodeId } from "../enr";
import { TimeoutMap } from "../util";
Expand Down Expand Up @@ -47,7 +47,7 @@ export class AddrVotes {
if (!this.votes.size) {
return undefined;
}
tiebreaker = Multiaddr(Object.keys(this.tallies)[0]);
tiebreaker = new Multiaddr(Object.keys(this.tallies)[0]);
}
const tiebreakerStr = tiebreaker.toString();
let best: [string, number] = [tiebreakerStr, this.tallies[tiebreakerStr]];
Expand All @@ -56,6 +56,6 @@ export class AddrVotes {
best = [addrStr, total];
}
}
return Multiaddr(best[0]);
return new Multiaddr(best[0]);
}
}
4 changes: 2 additions & 2 deletions src/service/service.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { EventEmitter } from "events";
import debug from "debug";
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";
import isIp = require("is-ip");
import PeerId = require("peer-id");

Expand Down Expand Up @@ -519,7 +519,7 @@ export class Discv5 extends (EventEmitter as { new (): Discv5EventEmitter }) {
if (this.config.enrUpdate) {
this.addrVotes.addVote(
srcId,
Multiaddr(
new Multiaddr(
`/${isIp.v4(message.recipientIp) ? "ip4" : "ip6"}/${message.recipientIp}/udp/${message.recipientPort}`
)
);
Expand Down
2 changes: 1 addition & 1 deletion src/service/types.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { EventEmitter } from "events";
import StrictEventEmitter from "strict-event-emitter-types";
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";

import { ENR, NodeId } from "../enr";
import { RequestMessage } from "../message";
Expand Down
2 changes: 1 addition & 1 deletion src/session/service.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { EventEmitter } from "events";
import StrictEventEmitter from "strict-event-emitter-types";
import debug from "debug";
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";

import { ITransportService } from "../transport";
import {
Expand Down
6 changes: 3 additions & 3 deletions src/session/session.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";

import { NodeId, ENR, SequenceNumber } from "../enr";
import { SessionState, TrustedState, IKeys, ISessionState } from "./types";
Expand Down Expand Up @@ -87,7 +87,7 @@ export class Session {
state: { state: SessionState.RandomSent },
trusted: TrustedState.Untrusted,
remoteEnr,
lastSeenMultiaddr: Multiaddr("/ip4/0.0.0.0/udp/0"),
lastSeenMultiaddr: new Multiaddr("/ip4/0.0.0.0/udp/0"),
}),
createRandomPacket(localId),
];
Expand All @@ -105,7 +105,7 @@ export class Session {
state: { state: SessionState.WhoAreYouSent, challengeData },
trusted: TrustedState.Untrusted,
remoteEnr: remoteEnr as ENR,
lastSeenMultiaddr: Multiaddr("/ip4/0.0.0.0/udp/0"),
lastSeenMultiaddr: new Multiaddr("/ip4/0.0.0.0/udp/0"),
}),
packet,
];
Expand Down
2 changes: 1 addition & 1 deletion src/session/types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";

import { NodeId, ENR } from "../enr";
import { IPacket } from "../packet";
Expand Down
2 changes: 1 addition & 1 deletion src/transport/types.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { EventEmitter } from "events";
import StrictEventEmitter from "strict-event-emitter-types";
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";

import { IPacket } from "../packet";

Expand Down
6 changes: 3 additions & 3 deletions src/transport/udp.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as dgram from "dgram";
import { EventEmitter } from "events";
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";

import { decodePacket, encodePacket, IPacket, MAX_PACKET_SIZE } from "../packet";
import { IRemoteInfo, ITransportService, TransportEventEmitter } from "./types";
Expand Down Expand Up @@ -30,7 +30,7 @@ export class UDPTransportService
this.socket = dgram.createSocket({
recvBufferSize: 16 * MAX_PACKET_SIZE,
sendBufferSize: MAX_PACKET_SIZE,
type: opts.family === "ipv4" ? "udp4" : "udp6",
type: opts.family === 4 ? "udp4" : "udp6",
});
this.socket.on("message", this.handleIncoming);
return new Promise((resolve) => this.socket.bind(opts.port, opts.host, resolve));
Expand All @@ -49,7 +49,7 @@ export class UDPTransportService
}

public handleIncoming = (data: Buffer, rinfo: IRemoteInfo): void => {
const multiaddr = Multiaddr(`/${rinfo.family === "IPv4" ? "ip4" : "ip6"}/${rinfo.address}/udp/${rinfo.port}`);
const multiaddr = new Multiaddr(`/${rinfo.family === "IPv4" ? "ip4" : "ip6"}/${rinfo.address}/udp/${rinfo.port}`);
try {
const packet = decodePacket(this.srcId, data);
this.emit("packet", multiaddr, packet);
Expand Down
19 changes: 14 additions & 5 deletions test/enr.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-env mocha */
import { expect } from "chai";
import Multiaddr = require("multiaddr");
import { Multiaddr } from "multiaddr";
import { ENR, v4 } from "../src/enr";

describe("ENR", () => {
Expand Down Expand Up @@ -49,15 +49,19 @@ describe("ENR Multiformats support", () => {
});

it("should get / set UDP multiaddr", () => {
const multi0 = Multiaddr("/ip4/127.0.0.1/udp/30303");
const multi0 = new Multiaddr("/ip4/127.0.0.1/udp/30303");
const tuples0 = multi0.tuples();

if (!tuples0[0][1] || !tuples0[1][1]) {
throw new Error('invalid multiaddr')
}
// set underlying records
record.set("ip", tuples0[0][1]);
record.set("udp", tuples0[1][1]);
// and get the multiaddr
expect(record.getLocationMultiaddr("udp")!.toString()).to.equal(multi0.toString());
// set the multiaddr
const multi1 = Multiaddr("/ip4/0.0.0.0/udp/30300");
const multi1 = new Multiaddr("/ip4/0.0.0.0/udp/30300");
record.setLocationMultiaddr(multi1);
// and get the multiaddr
expect(record.getLocationMultiaddr("udp")!.toString()).to.equal(multi1.toString());
Expand All @@ -67,15 +71,20 @@ describe("ENR Multiformats support", () => {
expect(record.get("udp")).to.deep.equal(tuples1[1][1]);
});
it("should get / set TCP multiaddr", () => {
const multi0 = Multiaddr("/ip4/127.0.0.1/tcp/30303");
const multi0 = new Multiaddr("/ip4/127.0.0.1/tcp/30303");
const tuples0 = multi0.tuples();

if (!tuples0[0][1] || !tuples0[1][1]) {
throw new Error('invalid multiaddr')
}

// set underlying records
record.set("ip", tuples0[0][1]);
record.set("tcp", tuples0[1][1]);
// and get the multiaddr
expect(record.getLocationMultiaddr("tcp")!.toString()).to.equal(multi0.toString());
// set the multiaddr
const multi1 = Multiaddr("/ip4/0.0.0.0/tcp/30300");
const multi1 = new Multiaddr("/ip4/0.0.0.0/tcp/30300");
record.setLocationMultiaddr(multi1);
// and get the multiaddr
expect(record.getLocationMultiaddr("tcp")!.toString()).to.equal(multi1.toString());
Expand Down
2 changes: 1 addition & 1 deletion test/enr/enr.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { ENR } from "../../src/enr/enr";
import { createKeypairFromPeerId } from "../../src/keypair";
import { toHex } from "../../src/util";
import { ERR_INVALID_ID } from "../../src/enr/constants";
import Multiaddr from "multiaddr";
import { Multiaddr } from "multiaddr";

describe("ENR", function () {
describe("decodeTxt", () => {
Expand Down
Loading

0 comments on commit d8d8a0a

Please sign in to comment.