JavaScript implementation of Waku v2 https://js.waku.org
Go to file
Franck Royer b1dfa9ce55
Apply MIT or Apache V2.0 License
2021-04-28 21:27:26 +10:00
.github Use up to date syntax 2021-04-28 13:38:20 +10:00
.vscode Initial commit 2021-03-05 09:34:01 +11:00
nim-waku@fb2ea06a4f Update waku store as per the latest spec 2021-04-20 15:38:40 +10:00
proto Update waku store as per the latest spec 2021-04-20 15:38:40 +10:00
src Self emit to see own messages 2021-04-22 14:47:43 +10:00
web-chat Relative URL is enough for the homepage 2021-04-28 11:59:59 +10:00
.cspell.json Add new word 2021-04-22 21:06:28 +10:00
.editorconfig Initial commit 2021-03-05 09:34:01 +11:00
.eslintrc.json Allow constant condition for loops 2021-04-13 15:03:14 +10:00
.gitignore Check in protobuf generated files 2021-04-20 15:32:10 +10:00
.gitmodules Re-add nim-waku submodule 2021-03-19 11:23:34 +11:00
.mocharc.json Partial conversion to ts-node/mocha 2021-03-22 15:05:03 +11:00
.prettierignore Use waku messages over waku relay 2021-03-10 16:22:49 +11:00
LICENSE-APACHE-v2 Apply MIT or Apache V2.0 License 2021-04-28 21:27:26 +10:00
LICENSE-MIT Apply MIT or Apache V2.0 License 2021-04-28 21:27:26 +10:00
README.md Apply MIT or Apache V2.0 License 2021-04-28 21:27:26 +10:00
bors.toml Add new test jobs to bors 2021-04-28 10:52:20 +10:00
buf.gen.yaml Implement chat message protobuf to support nick and time handles 2021-04-01 11:01:15 +11:00
buf.yaml Use waku messages over waku relay 2021-03-10 16:22:49 +11:00
jest.config.js Migrate to jest for better debugging experience 2021-03-17 15:34:58 +11:00
package-lock.json Upgrade libp2p to 0.31.0-rc.3 2021-04-21 16:17:32 +10:00
package.json Upgrade libp2p to 0.31.0-rc.3 2021-04-21 16:17:32 +10:00
tsconfig.json Revert unnecessary ts config changes 2021-03-22 22:06:10 +11:00
tsconfig.module.json Initial commit 2021-03-05 09:34:01 +11:00

README.md

js-waku

A JavaScript implementation of the Waku v2 protocol.

Waku Protocol Support

You can track progress on the project board.

  • ✔: Supported
  • 🚧: Implementation in progress
  • : Support is not planned
Spec Implementation Status
6/WAKU1
7/WAKU-DATA
8/WAKU-MAIL
9/WAKU-RPC
10/WAKU2 🚧
11/WAKU2-RELAY
12/WAKU2-FILTER
13/WAKU2-STORE ✔ (querying node only)
14/WAKU2-MESSAGE
15/WAKU2-BRIDGE
16/WAKU2-RPC
17/WAKU2-RLNRELAY
18/WAKU2-SWAP

Bugs, Questions & Features

If you encounter any bug or would like to propose new features, feel free to open an issue.

For support, questions & more general topics, please join the discussion on the Vac forum (use #js-waku tag).

Examples

Web Chat App (ReactJS)

A ReactJS web app is provided as an a show case of the library used in the browser.

A deployed version is available at https://status-im.github.io/js-waku/ Do note that due to some technical restrictions, it does not currently work out-of-the-box. If you wish to try it out, follow the instructions on the Vac forum. It is currently unstable and likely to break.

To run a development version locally, do:

git clone https://github.com/status-im/js-waku/ ; cd js-waku
npm install
npm run build
cd web-chat
npm install
npm run start

Then, you can use /help to change your nick and connect to a server.

CLI Chat App (NodeJS)

A node chat app is provided as a working example of the library. It is interoperable with the nim-waku chat app example. To run the chat app, first ensure you have Node.js v14 or above:

node --version

Then, install and run:

git clone https://github.com/status-im/js-waku/ ; cd js-waku
npm install
npm run chat -- --staticNode /ip4/134.209.139.210/tcp/30303/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ

You can also specify an optional listenAddr parameter (.e.g --listenAddr /ip4/0.0.0.0/tcp/7777/ws). This is only useful if you want a remote node to dial to your chat app, it is not necessary in normal usage when you just connect to the fleet.

Contributing

Build & Test

To build and test this repository, you need:

To ensure interoperability with nim-waku, some tests are run against a nim-waku node. This is why nim-waku is present as a git submodule, which itself contain several submodules. At this stage, it is not possible to exclude nim-waku tests, hence git submodule update --init --recursive is run before testing (see pretest script).

To build nim-waku, you also need Rust.

Guidelines

License

Licensed and distributed under either of

or

at your option. These files may not be copied, modified, or distributed except according to those terms.