Merge pull request #987 from waku-org/chore/monorepo

This commit is contained in:
fryorcraken.eth 2022-10-31 11:46:07 +11:00 committed by GitHub
commit fdd617de3c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
111 changed files with 13332 additions and 1874 deletions

View File

@ -1,7 +1,6 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"parserOptions": { "project": "./tsconfig.dev.json" },
"env": { "es6": true },
"ignorePatterns": ["node_modules", "build", "coverage", "proto"],
"plugins": ["import", "eslint-comments", "functional"],

View File

@ -21,11 +21,8 @@ jobs:
with:
node-version: ${{ env.NODE_JS }}
- uses: bahmutov/npm-install@v1
- run: npm run test:lint
- run: npm run test:prettier
- run: npm run test:spelling
- run: npm run test:tsc
- run: npm run doc:html
- run: npm run check
- run: npm run doc
build:
runs-on: ubuntu-latest
@ -102,7 +99,7 @@ jobs:
runs-on: ubuntu-latest
env:
GO_WAKU_VERSION: "0.2.2"
WAKU_SERVICE_NODE_DIR: ./go-waku
WAKU_SERVICE_NODE_DIR: ../../go-waku
WAKU_SERVICE_NODE_BIN: ./waku
WAKU_SERVICE_NODE_PARAMS: "--min-relay-peers-to-publish=0" # Can be removed once https://github.com/status-im/nwaku/issues/1004 is done
DEBUG: "waku*"
@ -123,6 +120,7 @@ jobs:
shell: bash
run: |
uname -a
cd packages/core
cd "${WAKU_SERVICE_NODE_DIR}"
"${WAKU_SERVICE_NODE_BIN}" --version
@ -143,27 +141,3 @@ jobs:
with:
name: go-waku-logs
path: log/
release_next:
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
needs: [check, build, proto, browser, node]
steps:
- uses: actions/checkout@v2.3.3
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_JS }}
- uses: bahmutov/npm-install@v1
- name: Append git hash to version
shell: bash
run: |
CURR_VERSION=$(cat package.json | jq .version | tr -d '"')
GIT_HASH=$(git rev-parse --short HEAD)
cat package.json| jq --arg version "$CURR_VERSION-$GIT_HASH" '.version |= $version' > _package.json
mv -f _package.json package.json
- name: Authenticate with registry
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ./.npmrc
- run: npm publish --tag next --access public

View File

@ -1,4 +1,4 @@
name: "Semantic PR"
name: "Conventional PR"
on:
pull_request_target:
@ -16,9 +16,14 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# fix: bug fix on prod code
# feat: new feature on prod code
# test: only modify test or test utils
# doc: only modify docs/comments
# chore: anything else
types: |
fix # Bug fix on prod code
feat # New feature on prod code
test # Only modify test or test utils
doc # Only modify docs/comments
chore # Anything else
fix
feat
test
doc
chore

5
.gitignore vendored
View File

@ -1,11 +1,10 @@
.idea/*
.angular
build
bundle
dist
node_modules
src/**.js
coverage
*.log
/tsconfig.tsbuildinfo
/tsconfig.dev.tsbuildinfo
/bundle/
*.tsbuildinfo

View File

@ -1,42 +1,46 @@
module.exports = [
{
name: "Waku core",
path: "bundle/index.js",
path: "packages/core/bundle/index.js",
import: "{ WakuNode }",
},
{
name: "Waku default setup",
path: ["bundle/index.js", "bundle/lib/create_waku.js"],
path: [
"packages/core/bundle/index.js",
"packages/core/bundle/lib/create_waku.js",
],
import: {
"./bundle/lib/create_waku.js": "{ createLightNode }",
"./bundle/lib/wait_for_remote_peer.js": "{ waitForRemotePeer }",
"./bundle/lib/waku_message/version_0.js":
"./packages/core/bundle/lib/create_waku.js": "{ createLightNode }",
"./packages/core/bundle/lib/wait_for_remote_peer.js":
"{ waitForRemotePeer }",
"./packages/core/bundle/lib/waku_message/version_0.js":
"{ MessageV0, DecoderV0, EncoderV0 }",
},
},
{
name: "Asymmetric, symmetric encryption and signature",
path: "bundle/lib/waku_message/version_1.js",
path: "packages/core/bundle/lib/waku_message/version_1.js",
import: "{ MessageV1, AsymEncoder, AsymDecoder, SymEncoder, SymDecoder }",
},
{
name: "DNS discovery",
path: "bundle/lib/peer_discovery_dns.js",
path: "packages/core/bundle/lib/peer_discovery_dns.js",
import: "{ PeerDiscoveryDns }",
},
{
name: "Privacy preserving protocols",
path: "bundle/index.js",
path: "packages/core/bundle/index.js",
import: "{ WakuRelay }",
},
{
name: "Light protocols",
path: "bundle/index.js",
path: "packages/core/bundle/index.js",
import: "{ WakuLightPush, WakuFilter }",
},
{
name: "History retrieval protocols",
path: "bundle/index.js",
path: "packages/core/bundle/index.js",
import: "{ WakuStore }",
},
];

View File

@ -1,3 +0,0 @@
## Examples
Moved to https://github.com/waku-org/js-waku-examples.

View File

@ -1 +0,0 @@
Moved to https://docs.wakuconnect.dev/docs/guides/

5
lerna.json Normal file
View File

@ -0,0 +1,5 @@
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"useWorkspaces": true,
"version": "0.0.0"
}

40
nx.json Normal file
View File

@ -0,0 +1,40 @@
{
"tasksRunnerOptions": {
"default": {
"runner": "nx/tasks-runners/default",
"options": {
"cacheableOperations": [
"build",
"build:esm",
"build:bundle",
"fix",
"fix:prettier",
"fix:lint",
"check",
"check:lint",
"check:prettier",
"check:spelling",
"check:tsc",
"test",
"test:node",
"test:browser",
"proto"
]
}
}
},
"targetDefaults": {
"build": {
"dependsOn": ["^build"],
"outputs": ["{projectRoot}/dist, {projectRoot}/bundle"]
},
"build:esm": {
"dependsOn": ["^build:esm"],
"outputs": ["{projectRoot}/dist"]
},
"build:bundle": {
"dependsOn": ["^build:bundle"],
"outputs": ["{projectRoot}/bundle"]
}
}
}

14398
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,208 +1,33 @@
{
"name": "js-waku",
"version": "0.30.0",
"description": "TypeScript implementation of the Waku v2 protocol",
"types": "./dist/index.d.ts",
"module": "./dist/index.js",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
},
"./lib/create_waku": {
"types": "./dist/lib/create_waku.d.ts",
"import": "./dist/lib/create_waku.js"
},
"./lib/interfaces": {
"types": "./dist/lib/interfaces.d.ts"
},
"./lib/peer_discovery_dns": {
"types": "./dist/lib/peer_discovery_dns/index.d.ts",
"import": "./dist/lib/peer_discovery_dns/index.js"
},
"./lib/peer_discovery_static_list": {
"types": "./dist/lib/peer_discovery_static_list.d.ts",
"import": "./dist/lib/peer_discovery_static_list.js"
},
"./lib/predefined_bootstrap_nodes": {
"types": "./dist/lib/predefined_bootstrap_nodes.d.ts",
"import": "./dist/lib/predefined_bootstrap_nodes.js"
},
"./lib/wait_for_remote_peer": {
"types": "./dist/lib/wait_for_remote_peer.d.ts",
"import": "./dist/lib/wait_for_remote_peer.js"
},
"./lib/waku_message/version_0": {
"types": "./dist/lib/waku_message/version_0.d.ts",
"import": "./dist/lib/waku_message/version_0.js"
},
"./lib/waku_message/version_1": {
"types": "./dist/lib/waku_message/version_1.d.ts",
"import": "./dist/lib/waku_message/version_1.js"
},
"./lib/waku_message/topic_only_message": {
"types": "./dist/lib/waku_message/topic_only_message.d.ts",
"import": "./dist/lib/waku_message/topic_only_message.js"
}
},
"typesVersions": {
"*": {
"lib/*": [
"dist/lib/*"
]
}
},
"type": "module",
"repository": "https://github.com/status-im/js-waku",
"license": "MIT OR Apache-2.0",
"keywords": [
"waku",
"decentralised",
"communication",
"web3",
"ethereum",
"dapps"
"name": "root",
"private": true,
"workspaces": [
"packages/*"
],
"scripts": {
"prepare": "husky install",
"build": "run-s build:**",
"build:esm": "tsc && node build-scripts/fix-imports.js",
"build:bundle": "rollup --config rollup.config.js",
"build": "lerna run build",
"size": "npm run build && size-limit",
"fix": "run-s fix:*",
"fix:prettier": "prettier \"src/**/*.ts\" \"./*.json\" \"*.*js\" \".github/**/*.yml\" --write",
"fix:lint": "eslint src --ext .ts --ext .cjs --fix",
"pretest": "run-s pretest:*",
"pretest:1-init-git-submodules": "[ -f './nwaku/build/wakunode2' ] || git submodule update --init --recursive",
"pretest:2-build-nwaku": "[ -f './nwaku/build/wakunode2' ] || run-s nwaku:build",
"nwaku:build": "(cd nwaku; make update; NIMFLAGS=\"-d:chronicles_colors=off -d:chronicles_sinks=textlines -d:chronicles_log_level=TRACE\" make -j$(nproc --all 2>/dev/null || echo 2) wakunode2)",
"nwaku:force-build": "(cd nwaku && rm -rf ./build/ ./vendor && make -j$(nproc --all 2>/dev/null || echo 2) update) && run-s nwaku:build",
"test": "run-s test:*",
"test:lint": "eslint src --ext .ts",
"test:prettier": "prettier \"src/**/*.ts\" \"./*.json\" \"*.*js\" \".github/**/*.yml\" --list-different",
"test:spelling": "cspell \"{README.md,.github/*.md,guides/*.md,src/**/*.ts}\"",
"test:tsc": "tsc -p tsconfig.dev.json",
"test:node": "TS_NODE_PROJECT=./tsconfig.dev.json mocha",
"test:browser": "karma start karma.conf.cjs",
"proto": "rimraf src/proto/*.ts; protons src/proto/*.proto",
"watch:build": "tsc -p tsconfig.json -w",
"watch:test": "mocha --watch",
"doc": "run-s doc:*",
"doc:html": "typedoc --treatWarningsAsErrors",
"doc:cname": "echo 'js.waku.org' > build/docs/CNAME",
"prepublish": "npm run build",
"deploy": "node ci/deploy.js",
"reset-hard": "git clean -dfx -e .idea && git reset --hard && npm i && npm run build"
},
"browser": {
"crypto": false
},
"engines": {
"node": ">=16"
},
"dependencies": {
"@chainsafe/libp2p-gossipsub": "^4.1.1",
"@chainsafe/libp2p-noise": "^8.0.1",
"@ethersproject/rlp": "^5.5.0",
"@libp2p/crypto": "^1.0.4",
"@libp2p/interface-connection": "3.0.1",
"@libp2p/interface-peer-discovery": "^1.0.0",
"@libp2p/interface-peer-id": "^1.0.2",
"@libp2p/interface-peer-info": "^1.0.1",
"@libp2p/interface-peer-store": "^1.0.0",
"@libp2p/interface-pubsub": "^2.0.1",
"@libp2p/interfaces": "^3.0.2",
"@libp2p/mplex": "^5.1.1",
"@libp2p/peer-id": "^1.1.10",
"@libp2p/websockets": "^3.0.3",
"@multiformats/multiaddr": "^10.4.0",
"@noble/secp256k1": "^1.3.4",
"debug": "^4.3.4",
"dns-query": "^0.11.2",
"hi-base32": "^0.5.1",
"it-all": "^1.0.6",
"it-length-prefixed": "^8.0.2",
"it-pipe": "^2.0.4",
"js-sha3": "^0.8.0",
"libp2p": "0.38.0",
"p-event": "^5.0.1",
"protons-runtime": "^3.1.0",
"uint8arraylist": "^2.3.2",
"uint8arrays": "^3.0.0",
"uuid": "^8.3.2"
"fix": "lerna run fix",
"check": "lerna run check",
"test": "lerna run test",
"test:browser": "lerna run test:browser",
"test:node": "lerna run test:node",
"proto": "lerna run proto",
"doc": "lerna run doc"
},
"devDependencies": {
"@libp2p/peer-id-factory": "^1.0.15",
"@rollup/plugin-commonjs": "^22.0.0",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^13.3.0",
"@size-limit/preset-big-lib": "^8.0.0",
"@types/app-root-path": "^1.2.4",
"@types/chai": "^4.2.15",
"@types/debug": "^4.1.7",
"@types/mocha": "^9.1.0",
"@types/node": "^17.0.6",
"@types/tail": "^2.0.0",
"@types/uuid": "^8.3.0",
"@typescript-eslint/eslint-plugin": "^5.8.1",
"@typescript-eslint/parser": "^5.8.1",
"app-root-path": "^3.0.0",
"chai": "^4.3.4",
"cspell": "^5.14.0",
"eslint": "^8.6.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-functional": "^4.0.2",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-prettier": "^4.0.0",
"fast-check": "^2.14.0",
"gh-pages": "^3.2.3",
"husky": "^7.0.4",
"ignore-loader": "^0.1.2",
"isomorphic-fetch": "^3.0.0",
"jsdom": "^19.0.0",
"jsdom-global": "^3.0.2",
"karma": "^6.3.12",
"karma-chrome-launcher": "^3.1.0",
"karma-mocha": "^2.0.1",
"karma-webpack": "^5.0.0",
"@size-limit/preset-big-lib": "^8.1.0",
"husky": "^8.0.1",
"lerna": "^6.0.1",
"lint-staged": "^13.0.3",
"mocha": "^9.1.3",
"npm-run-all": "^4.1.5",
"p-timeout": "^6.0.0",
"portfinder": "^1.0.28",
"prettier": "^2.1.1",
"process": "^0.11.10",
"protons": "^5.1.0",
"puppeteer": "^13.0.1",
"rollup": "^2.75.0",
"size-limit": "^8.0.0",
"tail": "^2.2.0",
"ts-loader": "^9.3.1",
"ts-node": "^10.9.1",
"typedoc": "^0.23.10",
"typescript": "^4.6.3"
"size-limit": "^8.1.0"
},
"files": [
"dist",
"bundle",
"src/*.ts",
"src/lib/**/*.ts",
"src/proto/**/*.ts",
"!**/*.spec.*",
"!**/*.json",
"CHANGELOG.md",
"LICENSE",
"README.md"
],
"lint-staged": {
"*.ts": [
"eslint --fix"
],
"*.{ts,json,conf*.*js}": [
"prettier --write"
],
"./*.*js": [
"*.{ts,json,js}": [
"prettier --write"
]
}

View File

@ -0,0 +1,6 @@
module.exports = {
parserOptions: {
tsconfigRootDir: __dirname,
project: "./tsconfig.dev.json",
},
};

View File

@ -0,0 +1,4 @@
build
bundle
dist
node_modules

View File

@ -156,7 +156,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Support of the `waku2` ENR key: When using DNS Discovery, wanted node capabilities (e.g. relay, store) must be passed.
- Support of the `waku2` ENR key: When using DNS Discovery, wanted node capabilities (e.g. relay, store) must be passed.
### Changed
@ -248,7 +248,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Test: Upgrade nim-waku node to v0.7.
- Test: Upgrade nim-waku node to v0.7.
- Doc: Renamed "DappConnect" to "Waku Connect".
- Docs: API Docs are now available at https://js-waku.wakuconnect.dev/.
- **Breaking**: Replace `waitForConnectedPeer` with `waitForRemotePeer`; the new method checks that the peer is ready before resolving the promise.
@ -292,19 +292,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.14.1] - 2021-10-22
### Fixed
- Issue when importing the `utils` module.
## [0.14.0] - 2021-10-13
### Added
- If the `callback` function passed to`WakuStore.queryHistory` returns `true`, then no further pages are retrieved from the store.
- Use webpack to build UMD bundle of the library, see [README](./README.md) for usage.
### Changed
- **Breaking**: Renamed `WakuStore.QueryOptions`'s `direction` to `pageDirection` (and its type) as it only affects the page ordering,
not the ordering of messages with the page.
### Fixed
- Docs: Ensure that `WakuStore`'s `QueryOptions` documentation is available [online](https://js-waku.wakuconnect.dev/).
## [0.13.1] - 2021-09-21
@ -316,8 +320,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.13.0] - 2021-09-16
### Changed
- Upgrade libp2p libraries: @chainsafe/libp2p-noise@4.1.1, libp2p@0.32.4, libp2p-gossipsub@0.11.1.
- Connects to a limited number of bootstrap nodes, defaults to 1.
- Connects to a limited number of bootstrap nodes, defaults to 1.
## [0.12.2] - 2021-09-21
@ -328,12 +333,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.12.1] - 2021-09-16
### Changed
- **hot fix**: Connects to a limited number of bootstrap nodes, defaults to 1.
## [0.12.0] - 2021-09-2
### Added
- Examples (eth-pm): Encrypt Public Key Messages using symmetric encryption.
- Examples (eth-pm): Encrypt Public Key Messages using symmetric encryption.
- Guides: Encrypt messages using Waku Message Version 1.
- Allow passing decryption keys in hex string format.
- Allow passing decryption keys to `WakuStore` instance to avoid having to pass them at every `queryHistory` call.
@ -341,32 +348,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `Waku.waitForConnectedPeer` helper to ensure that we are connected to Waku peers when using the bootstrap option.
### Changed
- **Breaking**: Moved `startTime` and `endTime` for history queries to a `timeFilter` property as both or neither must be passed; passing only one parameter is not supported.
- Renamed and promote the usage of `generateSymmetricKey()` to generate random symmetric keys.
- Improved errors thrown by `WakuStore.queryHistory`.
### Fixed
- Buffer concat error when using symmetric encryption in the browser.
## [0.11.0] - 2021-08-20
### Added
- Examples: New [Ethereum Private Message Using Wallet Encryption Web App](./examples/eth-pm-wallet-encryption/README.md)
example that demonstrates the usage of `eth_encrypt` API (available on Metamask) and EIP-712 for typed structured data signing.
- New `bootstrap` option for `Waku.create` to easily connect to Waku nodes upon start up.
- Support for `startTime` and `endTime` in Store queries to filter by time window as per [21/WAKU2-FTSTORE](https://rfc.vac.dev/spec/21/).
### Changed
- Renamed `discover.getStatusFleetNodes` to `discovery.getBootstrapNodes`;
- Renamed `discover.getStatusFleetNodes` to `discovery.getBootstrapNodes`;
Changed the API to allow retrieval of bootstrap nodes from other sources.
- Examples: Renamed `eth-dm` to `eth-pm`; "Direct Message" can lead to confusion with "Direct Connection" that
refers to low latency network connections.
- Examples (eth-pm): Use sign typed data EIP-712 instead of personal sign.
- Examples (eth-pm): Use sign typed data EIP-712 instead of personal sign.
- Upgraded dependencies to remove warning at installation.
- **Breaking**: Moved `DefaultPubSubTopic` to `waku.ts` and fixed the casing.
- **Breaking**: Rename all `pubsubTopic` occurrences to `pubSubTopic`, across all interfaces.
### Removed
- Examples (cli-chat): The focus of this library is Web environment;
Several examples now cover usage of Waku Relay and Waku Store making cli-chat example obsolete;
web-chat POC should be preferred to use the [TOY-CHAT](https://rfc.vac.dev/spec/22/) protocol.
@ -378,32 +390,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.10.0] - 2021-08-06
### Added
- Relay and ReactJS guides and examples
([#56](https://github.com/status-im/js-waku/issues/56)).
### Changed
- **Breaking**: The `WakuMessage` APIs have been changed to move `contentTopic` out of the optional parameters.
- **Breaking**: Move `contentTopics` out the `WakuStore.queryHistory`'s optional parameters.
- **Breaking**: `WakuStore.queryHistory` throws when encountering an error instead of returning a `null` value.
### Removed
- Examples (web-chat): Remove broken `/fleet` command.
- **Breaking**: Removed `DefaultContentTopic` as developers must choose a content topic for their app;
recommendations for content topic can be found at https://rfc.vac.dev/spec/23/.
### Fixed
- `WakuMessage.payloadAsUtf8` returning garbage on utf-8 non-ascii characters.
- `ChatMessage.payloadAsUtf8` returning garbage on utf-8 non-ascii characters.
## [0.9.0] - 2021-07-26
### Changed
- **Breaking**: Store Response Protobuf changed to align with nim-waku v0.5
([nim-waku#676](https://github.com/status-im/nim-waku/pull/676)).
## [0.8.1] - 2021-07-16
### Added
- Examples (web-chat): New `/fleet` command to switch connection between Status prod and test fleets.
- Export `generatePrivateKey` and `getPublicKey` directly from the root.
- Usage of the encryption and signature APIs to the readme.
@ -411,6 +429,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#238](https://github.com/status-im/js-waku/issues/238)).
### Changed
- **Breaking**: Renamed `WakuRelay.(add|delete)PrivateDecryptionKey` to `WakuRelay.(add|delete)DecryptionKey` to make it clearer that it accepts both symmetric keys and asymmetric private keys.
- Upgrade libp2p to 0.32.0.
- **Breaking**: Rename `keepAlive` option to `pingKeepAlive`.
@ -419,13 +438,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#185](https://github.com/status-im/js-waku/issues/185), [js-libp2p#939](https://github.com/libp2p/js-libp2p/issues/939))
### Fixed
- Align `WakuMessage` readme example with actual code behaviour.
- Remove infinite loop when an error with Waku Store is encountered.
## [0.8.0] - 2021-07-15
### Added
- `WakuRelay.deleteObserver` to allow removal of observers, useful when a React component add observers when mounting and needs to delete it when unmounting.
- `WakuRelay.deleteObserver` to allow removal of observers, useful when a React component add observers when mounting and needs to delete it when unmounting.
- Keep alive feature that pings host regularly, reducing the chance of connections being dropped due to idle.
Can be disabled or default frequency (10s) can be changed when calling `Waku.create`.
- New `lib/utils` module for easy, dependency-less hex/bytes conversions.
@ -436,6 +457,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add support for Waku Message version 1: Asymmetric encryption, symmetric encryption, and signature of the data.
### Changed
- **Breaking**: Auto select peer if none provided for store and light push protocols.
- Upgrade to `libp2p@0.31.7` and `libp2p-gossipsub@0.10.0` to avoid `TextEncoder` errors in ReactJS tests.
- Disable keep alive by default as latest nim-waku release does not support ping protocol.
@ -448,11 +470,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Examples (eth-dm): Use Protobuf for direct messages instead of JSON ([#214](https://github.com/status-im/js-waku/issues/214)).
### Fixed
- Disable `keepAlive` if set to `0`.
## [0.7.0] - 2021-06-15
### Changed
- Test: Upgrade nim-waku node to v0.4.
- Waku Light Push upgraded to `2.0.0-beta1`.
- Examples (web chat): Catch error if chat message decoding fails.
@ -461,13 +485,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.6.0] - 2021-06-09
### Changed
- **Breaking**: Websocket protocol is not automatically added anymore if the user specifies a protocol in `libp2p.modules`
when using `Waku.create`.
- **Breaking**: Options passed to `Waku.create` used to be passed to `Libp2p.create`;
Now, only the `libp2p` property is passed to `Libp2p.create`, allowing for a cleaner interface.
- Examples (cli chat): Use tcp protocol instead of websocket.
- Examples (cli chat): Use tcp protocol instead of websocket.
### Added
- Enable access to `WakuMessage.timestamp`.
- Examples (web chat): Use `WakuMessage.timestamp` as unique key for list items.
- Doc: Link to new [topic guidelines](https://rfc.vac.dev/spec/23/) in README.
@ -475,11 +501,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Examples (web chat): Persist nick.
- Support for custom PubSub Topics to `Waku`, `WakuRelay`, `WakuStore` and `WakuLightPush`;
Passing a PubSub Topic is optional and still defaults to `/waku/2/default-waku/proto`;
JS-Waku currently supports one, and only, PubSub topic per instance.
JS-Waku currently supports one, and only, PubSub topic per instance.
## [0.5.0] - 2021-05-21
### Added
- Implement [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
- Expose `Direction` enum from js-waku root (it was only accessible via the proto module).
- Examples (cli chat): Use light push to send messages if `--lightPush` is passed.
@ -488,11 +515,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.4.0] - 2021-05-18
### Added
- `callback` argument to `WakuStore.queryHistory()`, called as messages are retrieved
; Messages are retrieved using pagination, and it may take some time to retrieve all messages,
with the `callback` function, messages are processed as soon as they are received.
with the `callback` function, messages are processed as soon as they are received.
### Changed
- Testing: Upgrade nim-waku node to v0.3.
- **Breaking**: Modify `WakuStore.queryHistory()` to accept one `Object` instead of multiple individual arguments.
- `getStatusFleetNodes` return prod nodes by default, instead of test nodes.
@ -500,26 +529,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Examples (cli chat): Connect to test fleet by default, use `--prod` to connect to prod fleet.
### Fixed
- Expose `Enviroment` and `Protocol` enums to pass to `getStatusFleetNodes`.
## [0.3.0] - 2021-05-15
### Added
- `getStatusFleetNodes` to connect to Status' nim-waku nodes.
### Changed
- Clarify content topic format in README.md.
## Removed
- Unused dependencies.
## [0.2.0] - 2021-05-14
### Added
- `WakuRelay.getPeers` method.
- Use `WakuRelay.getPeers` in web chat app example to disable send button.
### Changed
- Enable passing `string`s to `addPeerToAddressBook`.
- Use `addPeerToAddressBook` in examples and usage doc.
- Settle on `js-waku` name across the board.
@ -528,6 +563,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.1.0] - 2021-05-12
### Added
- Add usage section to the README.
- Support of [Waku v2 Relay](https://rfc.vac.dev/spec/11/).
- Support of [Waku v2 Store](https://rfc.vac.dev/spec/13/).
@ -535,7 +571,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [ReactJS Chat App example](./examples/web-chat).
- [Typedoc Documentation](https://js-waku.wakuconnect.dev/).
[Unreleased]: https://github.com/status-im/js-waku/compare/v0.30.0...HEAD
[unreleased]: https://github.com/status-im/js-waku/compare/v0.30.0...HEAD
[0.30.0]: https://github.com/status-im/js-waku/compare/v0.29.0...v0.30.0
[0.29.0]: https://github.com/status-im/js-waku/compare/v0.28.0...v0.29.0
[0.28.1]: https://github.com/status-im/js-waku/compare/v0.28.0...v0.28.1

193
packages/core/package.json Normal file
View File

@ -0,0 +1,193 @@
{
"name": "@waku/core",
"version": "0.0.1",
"description": "TypeScript implementation of the Waku v2 protocol",
"types": "./dist/index.d.ts",
"module": "./dist/index.js",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
},
"./lib/create_waku": {
"types": "./dist/lib/create_waku.d.ts",
"import": "./dist/lib/create_waku.js"
},
"./lib/interfaces": {
"types": "./dist/lib/interfaces.d.ts"
},
"./lib/peer_discovery_dns": {
"types": "./dist/lib/peer_discovery_dns/index.d.ts",
"import": "./dist/lib/peer_discovery_dns/index.js"
},
"./lib/peer_discovery_static_list": {
"types": "./dist/lib/peer_discovery_static_list.d.ts",
"import": "./dist/lib/peer_discovery_static_list.js"
},
"./lib/predefined_bootstrap_nodes": {
"types": "./dist/lib/predefined_bootstrap_nodes.d.ts",
"import": "./dist/lib/predefined_bootstrap_nodes.js"
},
"./lib/wait_for_remote_peer": {
"types": "./dist/lib/wait_for_remote_peer.d.ts",
"import": "./dist/lib/wait_for_remote_peer.js"
},
"./lib/waku_message/version_0": {
"types": "./dist/lib/waku_message/version_0.d.ts",
"import": "./dist/lib/waku_message/version_0.js"
},
"./lib/waku_message/version_1": {
"types": "./dist/lib/waku_message/version_1.d.ts",
"import": "./dist/lib/waku_message/version_1.js"
},
"./lib/waku_message/topic_only_message": {
"types": "./dist/lib/waku_message/topic_only_message.d.ts",
"import": "./dist/lib/waku_message/topic_only_message.js"
}
},
"typesVersions": {
"*": {
"lib/*": [
"dist/lib/*"
]
}
},
"type": "module",
"repository": "https://github.com/status-im/js-waku",
"license": "MIT OR Apache-2.0",
"keywords": [
"waku",
"decentralised",
"communication",
"web3",
"ethereum",
"dapps"
],
"scripts": {
"build": "run-s build:**",
"build:esm": "tsc && node build-scripts/fix-imports.js",
"build:bundle": "rollup --config rollup.config.js",
"fix": "run-s fix:*",
"fix:prettier": "prettier . --write",
"fix:lint": "eslint src --ext .ts --ext .cjs --fix",
"pretest": "run-s pretest:*",
"pretest:1-init-git-submodules": "[ -f '../../nwaku/build/wakunode2' ] || git submodule update --init --recursive",
"pretest:2-build-nwaku": "[ -f '../../nwaku/build/wakunode2' ] || run-s nwaku:build",
"nwaku:build": "(PROC=$(nproc --all 2>/dev/null || echo 2); cd ../../nwaku; make -j$PROC update; NIMFLAGS=\"-d:chronicles_colors=off -d:chronicles_sinks=textlines -d:chronicles_log_level=TRACE\" make -j$PROC wakunode2)",
"nwaku:force-build": "(cd ../../nwaku && rm -rf ./build/ ./vendor) && run-s nwaku:build",
"check": "run-s check:*",
"check:lint": "eslint src --ext .ts",
"check:prettier": "prettier . --list-different",
"check:spelling": "cspell \"{README.md,src/**/*.ts}\"",
"check:tsc": "tsc -p tsconfig.dev.json",
"test": "run-s test:*",
"test:node": "TS_NODE_PROJECT=./tsconfig.dev.json mocha",
"test:browser": "karma start karma.conf.cjs",
"proto": "rimraf src/proto/*.ts; protons src/proto/*.proto",
"watch:build": "tsc -p tsconfig.json -w",
"watch:test": "mocha --watch",
"doc": "run-s doc:*",
"doc:html": "typedoc --treatWarningsAsErrors",
"doc:cname": "echo 'js.waku.org' > build/docs/CNAME",
"prepublish": "npm run build",
"deploy": "node ci/deploy.js",
"reset-hard": "git clean -dfx -e .idea && git reset --hard && npm i && npm run build"
},
"browser": {
"crypto": false
},
"engines": {
"node": ">=16"
},
"dependencies": {
"@chainsafe/libp2p-gossipsub": "^4.1.1",
"@chainsafe/libp2p-noise": "^8.0.1",
"@ethersproject/rlp": "^5.5.0",
"@libp2p/crypto": "^1.0.4",
"@libp2p/interface-connection": "3.0.1",
"@libp2p/interface-peer-discovery": "^1.0.0",
"@libp2p/interface-peer-id": "^1.0.2",
"@libp2p/interface-peer-info": "^1.0.1",
"@libp2p/interface-peer-store": "^1.0.0",
"@libp2p/interface-pubsub": "^2.0.1",
"@libp2p/interfaces": "^3.0.2",
"@libp2p/mplex": "^5.1.1",
"@libp2p/peer-id": "^1.1.10",
"@libp2p/websockets": "^3.0.3",
"@multiformats/multiaddr": "^11.0.6",
"@noble/secp256k1": "^1.3.4",
"debug": "^4.3.4",
"dns-query": "^0.11.2",
"hi-base32": "^0.5.1",
"it-all": "^1.0.6",
"it-length-prefixed": "^8.0.2",
"it-pipe": "^2.0.4",
"js-sha3": "^0.8.0",
"libp2p": "0.38.0",
"p-event": "^5.0.1",
"protons-runtime": "^3.1.0",
"uint8arraylist": "^2.3.2",
"uint8arrays": "^3.0.0",
"uuid": "^8.3.2"
},
"devDependencies": {
"@libp2p/peer-id-factory": "^1.0.15",
"@rollup/plugin-commonjs": "^22.0.0",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^13.3.0",
"@types/app-root-path": "^1.2.4",
"@types/chai": "^4.2.15",
"@types/debug": "^4.1.7",
"@types/mocha": "^9.1.0",
"@types/node": "^17.0.6",
"@types/tail": "^2.0.0",
"@types/uuid": "^8.3.0",
"@typescript-eslint/eslint-plugin": "^5.8.1",
"@typescript-eslint/parser": "^5.8.1",
"app-root-path": "^3.0.0",
"chai": "^4.3.4",
"cspell": "^5.14.0",
"eslint": "^8.6.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-functional": "^4.0.2",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-prettier": "^4.0.0",
"fast-check": "^2.14.0",
"gh-pages": "^3.2.3",
"ignore-loader": "^0.1.2",
"isomorphic-fetch": "^3.0.0",
"jsdom": "^19.0.0",
"jsdom-global": "^3.0.2",
"karma": "^6.3.12",
"karma-chrome-launcher": "^3.1.0",
"karma-mocha": "^2.0.1",
"karma-webpack": "^5.0.0",
"mocha": "^9.1.3",
"npm-run-all": "^4.1.5",
"p-timeout": "^6.0.0",
"portfinder": "^1.0.28",
"prettier": "^2.1.1",
"process": "^0.11.10",
"protons": "^5.1.0",
"puppeteer": "^13.0.1",
"rollup": "^2.75.0",
"tail": "^2.2.0",
"ts-loader": "^9.3.1",
"ts-node": "^10.9.1",
"typedoc": "^0.23.10",
"typescript": "^4.6.3"
},
"files": [
"dist",
"bundle",
"src/*.ts",
"src/lib/**/*.ts",
"src/proto/**/*.ts",
"!**/*.spec.*",
"!**/*.json",
"CHANGELOG.md",
"LICENSE",
"README.md"
]
}

View File

@ -1,5 +1,5 @@
import { createSecp256k1PeerId } from "@libp2p/peer-id-factory";
import { Multiaddr } from "@multiformats/multiaddr";
import { multiaddr } from "@multiformats/multiaddr";
import { assert, expect } from "chai";
import { equals } from "uint8arrays/equals";
@ -17,15 +17,11 @@ describe("ENR", function () {
const peerId = await createSecp256k1PeerId();
const enr = await ENR.createFromPeerId(peerId);
const keypair = await createKeypairFromPeerId(peerId);
enr.setLocationMultiaddr(new Multiaddr("/ip4/18.223.219.100/udp/9000"));
enr.setLocationMultiaddr(multiaddr("/ip4/18.223.219.100/udp/9000"));
enr.multiaddrs = [
new Multiaddr(
"/dns4/node1.do-ams.wakuv2.test.statusim.net/tcp/443/wss"
),
new Multiaddr(
"/dns6/node2.ac-chi.wakuv2.test.statusim.net/tcp/443/wss"
),
new Multiaddr(
multiaddr("/dns4/node1.do-ams.wakuv2.test.statusim.net/tcp/443/wss"),
multiaddr("/dns6/node2.ac-chi.wakuv2.test.statusim.net/tcp/443/wss"),
multiaddr(
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
),
];
@ -44,8 +40,8 @@ describe("ENR", function () {
if (!enr2.signature) throw "enr.signature is undefined";
expect(bytesToHex(enr2.signature)).to.be.equal(bytesToHex(enr.signature));
const multiaddr = enr2.getLocationMultiaddr("udp")!;
expect(multiaddr.toString()).to.be.equal("/ip4/18.223.219.100/udp/9000");
const ma = enr2.getLocationMultiaddr("udp")!;
expect(ma.toString()).to.be.equal("/ip4/18.223.219.100/udp/9000");
expect(enr2.multiaddrs).to.not.be.undefined;
expect(enr2.multiaddrs!.length).to.be.equal(3);
const multiaddrsAsStr = enr2.multiaddrs!.map((ma) => ma.toString());
@ -113,12 +109,12 @@ describe("ENR", function () {
const peerId = await createSecp256k1PeerId();
const enr = await ENR.createFromPeerId(peerId);
const keypair = await createKeypairFromPeerId(peerId);
enr.setLocationMultiaddr(new Multiaddr("/ip4/18.223.219.100/udp/9000"));
enr.setLocationMultiaddr(multiaddr("/ip4/18.223.219.100/udp/9000"));
enr.set("id", new Uint8Array([0]));
const txt = await enr.encodeTxt(keypair.privateKey);
ENR.decodeTxt(txt);
await ENR.decodeTxt(txt);
assert.fail("Expect error here");
} catch (err: unknown) {
const e = err as Error;
@ -200,7 +196,7 @@ describe("ENR", function () {
"b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291"
);
record = await ENR.createV4(getPublicKey(privateKey));
record.setLocationMultiaddr(new Multiaddr("/ip4/127.0.0.1/udp/30303"));
record.setLocationMultiaddr(multiaddr("/ip4/127.0.0.1/udp/30303"));
record.seq = seq;
await record.encodeTxt(privateKey);
});
@ -248,7 +244,7 @@ describe("ENR", function () {
});
it("should get / set UDP multiaddr", () => {
const multi0 = new Multiaddr("/ip4/127.0.0.1/udp/30303");
const multi0 = multiaddr("/ip4/127.0.0.1/udp/30303");
const tuples0 = multi0.tuples();
if (!tuples0[0][1] || !tuples0[1][1]) {
@ -262,7 +258,7 @@ describe("ENR", function () {
multi0.toString()
);
// set the multiaddr
const multi1 = new Multiaddr("/ip4/0.0.0.0/udp/30300");
const multi1 = multiaddr("/ip4/0.0.0.0/udp/30300");
record.setLocationMultiaddr(multi1);
// and get the multiaddr
expect(record.getLocationMultiaddr("udp")!.toString()).to.equal(
@ -275,7 +271,7 @@ describe("ENR", function () {
});
it("should get / set TCP multiaddr", () => {
const multi0 = new Multiaddr("/ip4/127.0.0.1/tcp/30303");
const multi0 = multiaddr("/ip4/127.0.0.1/tcp/30303");
const tuples0 = multi0.tuples();
if (!tuples0[0][1] || !tuples0[1][1]) {
@ -290,7 +286,7 @@ describe("ENR", function () {
multi0.toString()
);
// set the multiaddr
const multi1 = new Multiaddr("/ip4/0.0.0.0/tcp/30300");
const multi1 = multiaddr("/ip4/0.0.0.0/tcp/30300");
record.setLocationMultiaddr(multi1);
// and get the multiaddr
expect(record.getLocationMultiaddr("tcp")!.toString()).to.equal(
@ -324,43 +320,43 @@ describe("ENR", function () {
it("should properly create location multiaddrs - udp4", () => {
expect(enr.getLocationMultiaddr("udp4")).to.deep.equal(
new Multiaddr(`/ip4/${ip4}/udp/${udp}`)
multiaddr(`/ip4/${ip4}/udp/${udp}`)
);
});
it("should properly create location multiaddrs - tcp4", () => {
expect(enr.getLocationMultiaddr("tcp4")).to.deep.equal(
new Multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
);
});
it("should properly create location multiaddrs - udp6", () => {
expect(enr.getLocationMultiaddr("udp6")).to.deep.equal(
new Multiaddr(`/ip6/${ip6}/udp/${udp}`)
multiaddr(`/ip6/${ip6}/udp/${udp}`)
);
});
it("should properly create location multiaddrs - tcp6", () => {
expect(enr.getLocationMultiaddr("tcp6")).to.deep.equal(
new Multiaddr(`/ip6/${ip6}/tcp/${tcp}`)
multiaddr(`/ip6/${ip6}/tcp/${tcp}`)
);
});
it("should properly create location multiaddrs - udp", () => {
// default to ip4
expect(enr.getLocationMultiaddr("udp")).to.deep.equal(
new Multiaddr(`/ip4/${ip4}/udp/${udp}`)
multiaddr(`/ip4/${ip4}/udp/${udp}`)
);
// if ip6 is set, use it
enr.ip = undefined;
expect(enr.getLocationMultiaddr("udp")).to.deep.equal(
new Multiaddr(`/ip6/${ip6}/udp/${udp}`)
multiaddr(`/ip6/${ip6}/udp/${udp}`)
);
// if ip6 does not exist, use ip4
enr.ip6 = undefined;
enr.ip = ip4;
expect(enr.getLocationMultiaddr("udp")).to.deep.equal(
new Multiaddr(`/ip4/${ip4}/udp/${udp}`)
multiaddr(`/ip4/${ip4}/udp/${udp}`)
);
enr.ip6 = ip6;
});
@ -368,18 +364,18 @@ describe("ENR", function () {
it("should properly create location multiaddrs - tcp", () => {
// default to ip4
expect(enr.getLocationMultiaddr("tcp")).to.deep.equal(
new Multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
);
// if ip6 is set, use it
enr.ip = undefined;
expect(enr.getLocationMultiaddr("tcp")).to.deep.equal(
new Multiaddr(`/ip6/${ip6}/tcp/${tcp}`)
multiaddr(`/ip6/${ip6}/tcp/${tcp}`)
);
// if ip6 does not exist, use ip4
enr.ip6 = undefined;
enr.ip = ip4;
expect(enr.getLocationMultiaddr("tcp")).to.deep.equal(
new Multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
);
enr.ip6 = ip6;
});

View File

@ -0,0 +1,18 @@
import { multiaddr } from "@multiformats/multiaddr";
import type { Multiaddr } from "@multiformats/multiaddr";
import { convertToString } from "@multiformats/multiaddr/convert";
export function multiaddrFromFields(
ipFamily: string,
protocol: string,
ipBytes: Uint8Array,
protocolBytes: Uint8Array
): Multiaddr {
let ma = multiaddr("/" + ipFamily + "/" + convertToString(ipFamily, ipBytes));
ma = ma.encapsulate(
multiaddr("/" + protocol + "/" + convertToString(protocol, protocolBytes))
);
return ma;
}

View File

@ -1,4 +1,4 @@
import { Multiaddr } from "@multiformats/multiaddr";
import { multiaddr } from "@multiformats/multiaddr";
import { expect } from "chai";
import { decodeMultiaddrs, encodeMultiaddrs } from "./multiaddrs_codec";
@ -6,13 +6,11 @@ import { decodeMultiaddrs, encodeMultiaddrs } from "./multiaddrs_codec";
describe("ENR multiaddrs codec", function () {
it("Sample", async () => {
const multiaddrs = [
new Multiaddr(
"/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/443/wss"
),
new Multiaddr(
multiaddr("/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/443/wss"),
multiaddr(
"/dns6/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/443/wss"
),
new Multiaddr(
multiaddr(
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
),
];

View File

@ -1,4 +1,5 @@
import { Multiaddr } from "@multiformats/multiaddr";
import { multiaddr } from "@multiformats/multiaddr";
import type { Multiaddr } from "@multiformats/multiaddr";
import { MULTIADDR_LENGTH_SIZE } from "./constants";
@ -19,8 +20,7 @@ export function decodeMultiaddrs(bytes: Uint8Array): Multiaddr[] {
const multiaddrBytes = bytes.slice(index, index + size);
index += size;
const multiaddr = new Multiaddr(multiaddrBytes);
multiaddrs.push(multiaddr);
multiaddrs.push(multiaddr(multiaddrBytes));
}
return multiaddrs;
}

View File

@ -1,5 +1,5 @@
import { createSecp256k1PeerId } from "@libp2p/peer-id-factory";
import { Multiaddr } from "@multiformats/multiaddr";
import { multiaddr } from "@multiformats/multiaddr";
import { expect } from "chai";
import { ENR, Waku2 } from "../enr";
@ -9,11 +9,11 @@ import { fetchNodesUntilCapabilitiesFulfilled } from "./fetch_nodes";
async function createEnr(waku2: Waku2): Promise<ENR> {
const peerId = await createSecp256k1PeerId();
const enr = await ENR.createFromPeerId(peerId);
enr.setLocationMultiaddr(new Multiaddr("/ip4/18.223.219.100/udp/9000"));
enr.setLocationMultiaddr(multiaddr("/ip4/18.223.219.100/udp/9000"));
enr.multiaddrs = [
new Multiaddr("/dns4/node1.do-ams.wakuv2.test.statusim.net/tcp/443/wss"),
new Multiaddr("/dns6/node2.ac-chi.wakuv2.test.statusim.net/tcp/443/wss"),
new Multiaddr(
multiaddr("/dns4/node1.do-ams.wakuv2.test.statusim.net/tcp/443/wss"),
multiaddr("/dns6/node2.ac-chi.wakuv2.test.statusim.net/tcp/443/wss"),
multiaddr(
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
),
];

View File

@ -5,7 +5,8 @@ import type {
import { symbol } from "@libp2p/interface-peer-discovery";
import type { PeerInfo } from "@libp2p/interface-peer-info";
import { CustomEvent, EventEmitter } from "@libp2p/interfaces/events";
import { Multiaddr } from "@multiformats/multiaddr";
import type { Multiaddr } from "@multiformats/multiaddr";
import { multiaddr } from "@multiformats/multiaddr";
import debug from "debug";
import { multiaddrsToPeerInfo } from "./multiaddr_to_peer_info";
@ -52,7 +53,7 @@ export class PeerDiscoveryStaticPeers
const peerMas = peers.map((peer: string | Multiaddr) => {
if (typeof peer === "string") {
return new Multiaddr(peer);
return multiaddr(peer);
} else {
return peer;
}

View File

@ -1,4 +1,5 @@
import { Multiaddr } from "@multiformats/multiaddr";
import type { Multiaddr } from "@multiformats/multiaddr";
import { multiaddr } from "@multiformats/multiaddr";
import { getPseudoRandomSubset } from "./random_subset";
@ -41,7 +42,7 @@ export function getPredefinedBootstrapNodes(
nodes = Object.values(nodes) as string[];
nodes = nodes.map((node: string) => new Multiaddr(node));
nodes = nodes.map((node: string) => multiaddr(node));
return getPseudoRandomSubset(nodes, wantedNumber);
}

View File

@ -141,6 +141,9 @@ describe("Decryption Keys", () => {
waku1.addPeerToAddressBook(
waku2.libp2p.peerId,
// TODO: Upgrade libp2p package.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore: New multiaddr type but they seem mostly compatible
waku2.libp2p.getMultiaddrs()
);

View File

@ -137,6 +137,8 @@ export class WakuNode implements Waku {
codecs.push(FilterCodec);
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore: new Multiaddr is not backward compatible
return this.libp2p.dialProtocol(peer, codecs);
}

View File

@ -64,6 +64,9 @@ describe("Waku Relay [node only]", () => {
log("Instances started, adding waku2 to waku1's address book");
waku1.addPeerToAddressBook(
waku2.libp2p.peerId,
// TODO: Upgrade libp2p package.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore: New multiaddr type but they seem mostly compatible
waku2.libp2p.getMultiaddrs()
);
@ -279,10 +282,16 @@ describe("Waku Relay [node only]", () => {
waku1.addPeerToAddressBook(
waku2.libp2p.peerId,
// TODO: Upgrade libp2p package.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore: New multiaddr type but they seem mostly compatible
waku2.libp2p.getMultiaddrs()
);
waku3.addPeerToAddressBook(
waku2.libp2p.peerId,
// TODO: Upgrade libp2p package.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore: New multiaddr type but they seem mostly compatible
waku2.libp2p.getMultiaddrs()
);

Some files were not shown because too many files have changed in this diff Show More