Skip to content

Commit

Permalink
feat: use new log in network package
Browse files Browse the repository at this point in the history
  • Loading branch information
winprn committed Oct 29, 2024
1 parent 08e18c2 commit c08e858
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 82 deletions.
115 changes: 59 additions & 56 deletions packages/network/package.json
Original file line number Diff line number Diff line change
@@ -1,59 +1,62 @@
{
"name": "@topology-foundation/network",
"version": "0.2.0",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/topology-foundation/ts-topology.git"
},
"type": "module",
"types": "./dist/src/index.d.ts",
"files": [
"src",
"dist",
"!dist/test",
"!**/*.tsbuildinfo"
],
"exports": {
".": {
"types": "./dist/src/index.d.ts",
"import": "./dist/src/index.js"
"name": "@topology-foundation/network",
"version": "0.2.0",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/topology-foundation/ts-topology.git"
},
"type": "module",
"types": "./dist/src/index.d.ts",
"files": [
"src",
"dist",
"!dist/test",
"!**/*.tsbuildinfo"
],
"exports": {
".": {
"types": "./dist/src/index.d.ts",
"import": "./dist/src/index.js"
}
},
"scripts": {
"build": "tsc -b",
"clean": "rm -rf dist/ node_modules/",
"prepack": "tsc -b",
"test": "vitest"
},
"devDependencies": {
"@libp2p/interface": "^2.1.3",
"react-native-webrtc": "^124.0.3"
},
"dependencies": {
"@bufbuild/protobuf": "^2.0.0",
"@chainsafe/libp2p-gossipsub": "^14.1.0",
"@chainsafe/libp2p-noise": "^16.0.0",
"@chainsafe/libp2p-yamux": "^7.0.1",
"@libp2p/autonat": "^2.0.6",
"@libp2p/bootstrap": "^11.0.6",
"@libp2p/circuit-relay-v2": "^2.1.2",
"@libp2p/crypto": "^5.0.5",
"@libp2p/dcutr": "^2.0.6",
"@libp2p/devtools-metrics": "^1.1.5",
"@libp2p/identify": "^3.0.6",
"@libp2p/mdns": "^11.0.8",
"@libp2p/peer-id": "^5.0.4",
"@libp2p/pubsub-peer-discovery": "^11.0.0",
"@libp2p/webrtc": "^5.0.9",
"@libp2p/websockets": "^9.0.7",
"@libp2p/webtransport": "^5.0.9",
"@multiformats/multiaddr": "^12.3.1",
"@topology-foundation/logger": "0.2.0",
"it-length-prefixed": "^9.1.0",
"it-map": "^3.1.1",
"it-pipe": "^3.0.1",
"libp2p": "^2.1.6",
"loglevel": "^1.9.2",
"loglevel-plugin-prefix": "^0.8.4",
"ts-proto": "^2.2.4",
"uint8arrays": "^5.1.0"
}
},
"scripts": {
"build": "tsc -b",
"clean": "rm -rf dist/ node_modules/",
"prepack": "tsc -b",
"test": "vitest"
},
"devDependencies": {
"@libp2p/interface": "^2.1.3",
"react-native-webrtc": "^124.0.3"
},
"dependencies": {
"@bufbuild/protobuf": "^2.0.0",
"@chainsafe/libp2p-gossipsub": "^14.1.0",
"@chainsafe/libp2p-noise": "^16.0.0",
"@chainsafe/libp2p-yamux": "^7.0.1",
"@libp2p/autonat": "^2.0.6",
"@libp2p/bootstrap": "^11.0.6",
"@libp2p/circuit-relay-v2": "^2.1.2",
"@libp2p/crypto": "^5.0.5",
"@libp2p/dcutr": "^2.0.6",
"@libp2p/devtools-metrics": "^1.1.5",
"@libp2p/identify": "^3.0.6",
"@libp2p/mdns": "^11.0.8",
"@libp2p/peer-id": "^5.0.4",
"@libp2p/pubsub-peer-discovery": "^11.0.0",
"@libp2p/webrtc": "^5.0.9",
"@libp2p/websockets": "^9.0.7",
"@libp2p/webtransport": "^5.0.9",
"@multiformats/multiaddr": "^12.3.1",
"it-length-prefixed": "^9.1.0",
"it-map": "^3.1.1",
"it-pipe": "^3.0.1",
"libp2p": "^2.1.6",
"ts-proto": "^2.2.4",
"uint8arrays": "^5.1.0"
}
}
56 changes: 30 additions & 26 deletions packages/network/src/node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,22 @@ import { type Libp2p, createLibp2p } from "libp2p";
import { fromString as uint8ArrayFromString } from "uint8arrays/from-string";
import { Message } from "./proto/messages_pb.js";
import { uint8ArrayToStream } from "./stream.js";
import type { LoggerOptions } from "@topology-foundation/logger";
import loglevel from "loglevel";
import prefix from "loglevel-plugin-prefix";

export * from "./stream.js";

let log: loglevel.Logger;

// snake_casing to match the JSON config
export interface TopologyNetworkNodeConfig {
addresses?: string[];
bootstrap?: boolean;
bootstrap_peers?: string[];
browser_metrics?: boolean;
private_key_seed?: string;
log_config?: LoggerOptions;
}

export class TopologyNetworkNode {
Expand All @@ -52,6 +58,14 @@ export class TopologyNetworkNode {

constructor(config?: TopologyNetworkNodeConfig) {
this._config = config;
log = loglevel.getLogger("topology::network");
log.setLevel(
(this._config?.log_config?.level as loglevel.LogLevelDesc) || "info",
);
prefix.reg(loglevel);
prefix.apply(log, {
template: "%n",
});
}

async start() {
Expand Down Expand Up @@ -130,62 +144,52 @@ export class TopologyNetworkNode {
this._pubsub = this._node.services.pubsub as PubSub<GossipsubEvents>;
this.peerId = this._node.peerId.toString();

console.log(
"topology::network::start: Successfuly started topology network w/ peer_id",
log.info(
"::start: Successfuly started topology network w/ peer_id",
this.peerId,
);

this._node.addEventListener("peer:connect", (e) =>
console.log("::start::peer::connect", e.detail),
log.info("::start::peer::connect", e.detail),
);
this._node.addEventListener("peer:discovery", (e) => {
// current bug in v11.0.0 requires manual dial (https://github.com/libp2p/js-libp2p-pubsub-peer-discovery/issues/149)
for (const ma of e.detail.multiaddrs) {
this._node?.dial(ma);
}
console.log("::start::peer::discovery", e.detail);
log.info("::start::peer::discovery", e.detail);
});
this._node.addEventListener("peer:identify", (e) =>
console.log("::start::peer::identify", e.detail),
log.info("::start::peer::identify", e.detail),
);
}

subscribe(topic: string) {
if (!this._node) {
console.error(
"topology::network::subscribe: Node not initialized, please run .start()",
);
log.error("::subscribe: Node not initialized, please run .start()");
return;
}

try {
this._pubsub?.subscribe(topic);
this._pubsub?.getPeers();
console.log(
"topology::network::subscribe: Successfuly subscribed the topic",
topic,
);
log.info("::subscribe: Successfuly subscribed the topic", topic);
} catch (e) {
console.error("topology::network::subscribe:", e);
log.error("::subscribe:", e);
}
}

unsubscribe(topic: string) {
if (!this._node) {
console.error(
"topology::network::unsubscribe: Node not initialized, please run .start()",
);
log.error("::unsubscribe: Node not initialized, please run .start()");
return;
}

try {
this._pubsub?.unsubscribe(topic);
console.log(
"topology::network::unsubscribe: Successfuly unsubscribed the topic",
topic,
);
log.info("::unsubscribe: Successfuly unsubscribed the topic", topic);
} catch (e) {
console.error("topology::network::unsubscribe:", e);
log.error("::unsubscribe:", e);
}
}

Expand All @@ -206,12 +210,12 @@ export class TopologyNetworkNode {
const messageBuffer = Message.encode(message).finish();
await this._pubsub?.publish(topic, messageBuffer);

console.log(
"topology::network::broadcastMessage: Successfuly broadcasted message to topic",
log.info(
"::broadcastMessage: Successfuly broadcasted message to topic",
topic,
);
} catch (e) {
console.error("topology::network::broadcastMessage:", e);
log.error("::broadcastMessage:", e);
}
}

Expand All @@ -222,7 +226,7 @@ export class TopologyNetworkNode {
const messageBuffer = Message.encode(message).finish();
uint8ArrayToStream(stream, messageBuffer);
} catch (e) {
console.error("topology::network::sendMessage:", e);
log.error("::sendMessage:", e);
}
}

Expand All @@ -241,7 +245,7 @@ export class TopologyNetworkNode {
const messageBuffer = Message.encode(message).finish();
uint8ArrayToStream(stream, messageBuffer);
} catch (e) {
console.error("topology::network::sendMessageRandomTopicPeer:", e);
log.error("::sendMessageRandomTopicPeer:", e);
}
}

Expand Down
5 changes: 5 additions & 0 deletions packages/network/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,10 @@
"compilerOptions": {
"outDir": "dist"
},
"references": [
{
"path": "../logger"
}
],
"include": ["src/**/*.ts"]
}

0 comments on commit c08e858

Please sign in to comment.