mirror of
https://github.com/logos-messaging/logos-messaging-js.git
synced 2026-08-11 04:23:19 +00:00
Connects to nim-waku using waku-relay protocol
This commit is contained in:
parent
512115ae8c
commit
be47223bae
@ -10,7 +10,6 @@
|
|||||||
"plugin:eslint-comments/recommended",
|
"plugin:eslint-comments/recommended",
|
||||||
"plugin:@typescript-eslint/recommended",
|
"plugin:@typescript-eslint/recommended",
|
||||||
"plugin:import/typescript",
|
"plugin:import/typescript",
|
||||||
"plugin:functional/lite",
|
|
||||||
"prettier",
|
"prettier",
|
||||||
"prettier/@typescript-eslint"
|
"prettier/@typescript-eslint"
|
||||||
],
|
],
|
||||||
|
|||||||
2581
package-lock.json
generated
2581
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
10
package.json
10
package.json
@ -42,7 +42,15 @@
|
|||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@bitauth/libauth": "^1.17.1"
|
"@bitauth/libauth": "^1.17.1",
|
||||||
|
"libp2p": "^0.30.9",
|
||||||
|
"libp2p-gossipsub": "^0.8.0",
|
||||||
|
"libp2p-mplex": "^0.10.2",
|
||||||
|
"libp2p-noise": "^2.0.5",
|
||||||
|
"libp2p-secio": "^0.13.1",
|
||||||
|
"libp2p-tcp": "^0.15.3",
|
||||||
|
"multiaddr": "^8.1.2",
|
||||||
|
"yarg": "^1.0.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@ava/typescript": "^1.1.1",
|
"@ava/typescript": "^1.1.1",
|
||||||
|
|||||||
76
src/index.ts
76
src/index.ts
@ -1,2 +1,74 @@
|
|||||||
export * from './lib/async';
|
import Libp2p from 'libp2p';
|
||||||
export * from './lib/number';
|
import Mplex from 'libp2p-mplex';
|
||||||
|
import { NOISE } from 'libp2p-noise';
|
||||||
|
import Secio from 'libp2p-secio';
|
||||||
|
import TCP from 'libp2p-tcp';
|
||||||
|
import Multiaddr from 'multiaddr';
|
||||||
|
import multiaddr from 'multiaddr';
|
||||||
|
|
||||||
|
import { CODEC, WakuRelay } from './lib/waku_relay';
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
// Handle arguments
|
||||||
|
const { peer } = args();
|
||||||
|
|
||||||
|
const libp2p = await Libp2p.create({
|
||||||
|
addresses: {
|
||||||
|
listen: ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/tcp/0/ws'],
|
||||||
|
},
|
||||||
|
modules: {
|
||||||
|
transport: [TCP],
|
||||||
|
streamMuxer: [Mplex],
|
||||||
|
connEncryption: [NOISE, Secio],
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore: Key missing, see https://github.com/libp2p/js-libp2p/issues/830#issuecomment-791040021
|
||||||
|
pubsub: WakuRelay,
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
pubsub: {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore
|
||||||
|
enabled: true,
|
||||||
|
emitSelf: true,
|
||||||
|
signMessages: false,
|
||||||
|
strictSigning: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
libp2p.connectionManager.on('peer:connect', (connection) => {
|
||||||
|
console.info(`Connected to ${connection.remotePeer.toB58String()}!`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Start libp2p
|
||||||
|
await libp2p.start();
|
||||||
|
|
||||||
|
console.log('listening on addresses:');
|
||||||
|
libp2p.multiaddrs.forEach((addr) => {
|
||||||
|
console.log(`${addr.toString()}/p2p/${libp2p.peerId.toB58String()}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('\nNode supports protocols:');
|
||||||
|
libp2p.upgrader.protocols.forEach((_, p) => console.log(p));
|
||||||
|
|
||||||
|
// Dial nim-waku using waku relay protocol
|
||||||
|
if (process.argv.length >= 3) {
|
||||||
|
console.log(`dialing remote peer at ${peer}`);
|
||||||
|
await libp2p.dialProtocol(peer, CODEC);
|
||||||
|
console.log(`dialed ${peer}`);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
function args(): { peer: Multiaddr } {
|
||||||
|
const args = process.argv.slice(2);
|
||||||
|
|
||||||
|
if (args.length != 1) {
|
||||||
|
console.log(`Usage:
|
||||||
|
${process.argv[0]} ${process.argv[1]} <peer multiaddress>`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const peer = multiaddr(args[0]);
|
||||||
|
|
||||||
|
return { peer };
|
||||||
|
}
|
||||||
|
|||||||
15
src/lib/waku_relay.ts
Normal file
15
src/lib/waku_relay.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import Libp2p from 'libp2p';
|
||||||
|
import Gossipsub from 'libp2p-gossipsub';
|
||||||
|
|
||||||
|
export const CODEC = '/vac/waku/relay/2.0.0-beta2';
|
||||||
|
|
||||||
|
export class WakuRelay extends Gossipsub {
|
||||||
|
constructor(libp2p: Libp2p) {
|
||||||
|
super(libp2p);
|
||||||
|
|
||||||
|
const multicodecs = [CODEC];
|
||||||
|
|
||||||
|
// This is the downside of using `libp2p-gossipsub` instead of `libp2p-interfaces/src/pubsub`
|
||||||
|
Object.assign(this, { multicodecs });
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/types/example.d.ts
vendored
24
src/types/example.d.ts
vendored
@ -1,24 +0,0 @@
|
|||||||
/**
|
|
||||||
* If you import a dependency which does not include its own type definitions,
|
|
||||||
* TypeScript will try to find a definition for it by following the `typeRoots`
|
|
||||||
* compiler option in tsconfig.json. For this project, we've configured it to
|
|
||||||
* fall back to this folder if nothing is found in node_modules/@types.
|
|
||||||
*
|
|
||||||
* Often, you can install the DefinitelyTyped
|
|
||||||
* (https://github.com/DefinitelyTyped/DefinitelyTyped) type definition for the
|
|
||||||
* dependency in question. However, if no one has yet contributed definitions
|
|
||||||
* for the package, you may want to declare your own. (If you're using the
|
|
||||||
* `noImplicitAny` compiler options, you'll be required to declare it.)
|
|
||||||
*
|
|
||||||
* This is an example type definition which allows import from `module-name`,
|
|
||||||
* e.g.:
|
|
||||||
* ```ts
|
|
||||||
* import something from 'module-name';
|
|
||||||
* something();
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
declare module 'module-name' {
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
const whatever: any;
|
|
||||||
export = whatever;
|
|
||||||
}
|
|
||||||
15
src/types/types.d.ts
vendored
Normal file
15
src/types/types.d.ts
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
declare module 'libp2p-tcp' {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
const TCP: any;
|
||||||
|
export = TCP;
|
||||||
|
}
|
||||||
|
declare module 'libp2p-mplex' {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
const Mplex: any;
|
||||||
|
export = Mplex;
|
||||||
|
}
|
||||||
|
declare module 'libp2p-secio' {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
const Secio: any;
|
||||||
|
export = Secio;
|
||||||
|
}
|
||||||
@ -33,6 +33,9 @@
|
|||||||
"listFiles": false /* Print names of files part of the compilation. */,
|
"listFiles": false /* Print names of files part of the compilation. */,
|
||||||
"pretty": true /* Stylize errors and messages using color and context. */,
|
"pretty": true /* Stylize errors and messages using color and context. */,
|
||||||
|
|
||||||
|
// Due to broken types in indirect dependencies
|
||||||
|
"skipLibCheck": true,
|
||||||
|
|
||||||
/* Experimental Options */
|
/* Experimental Options */
|
||||||
// "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */,
|
// "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */,
|
||||||
// "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */,
|
// "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user