mirror of
https://github.com/status-im/js-waku.git
synced 2025-02-24 02:48:11 +00:00
Merge pull request #987 from waku-org/chore/monorepo
This commit is contained in:
commit
fdd617de3c
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"root": true,
|
"root": true,
|
||||||
"parser": "@typescript-eslint/parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"parserOptions": { "project": "./tsconfig.dev.json" },
|
|
||||||
"env": { "es6": true },
|
"env": { "es6": true },
|
||||||
"ignorePatterns": ["node_modules", "build", "coverage", "proto"],
|
"ignorePatterns": ["node_modules", "build", "coverage", "proto"],
|
||||||
"plugins": ["import", "eslint-comments", "functional"],
|
"plugins": ["import", "eslint-comments", "functional"],
|
||||||
|
34
.github/workflows/ci.yml
vendored
34
.github/workflows/ci.yml
vendored
@ -21,11 +21,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: ${{ env.NODE_JS }}
|
node-version: ${{ env.NODE_JS }}
|
||||||
- uses: bahmutov/npm-install@v1
|
- uses: bahmutov/npm-install@v1
|
||||||
- run: npm run test:lint
|
- run: npm run check
|
||||||
- run: npm run test:prettier
|
- run: npm run doc
|
||||||
- run: npm run test:spelling
|
|
||||||
- run: npm run test:tsc
|
|
||||||
- run: npm run doc:html
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -102,7 +99,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
GO_WAKU_VERSION: "0.2.2"
|
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_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
|
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*"
|
DEBUG: "waku*"
|
||||||
@ -123,6 +120,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
uname -a
|
uname -a
|
||||||
|
cd packages/core
|
||||||
cd "${WAKU_SERVICE_NODE_DIR}"
|
cd "${WAKU_SERVICE_NODE_DIR}"
|
||||||
"${WAKU_SERVICE_NODE_BIN}" --version
|
"${WAKU_SERVICE_NODE_BIN}" --version
|
||||||
|
|
||||||
@ -143,27 +141,3 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: go-waku-logs
|
name: go-waku-logs
|
||||||
path: log/
|
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
|
|
||||||
|
17
.github/workflows/conventional-commits.yml
vendored
17
.github/workflows/conventional-commits.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: "Semantic PR"
|
name: "Conventional PR"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
@ -16,9 +16,14 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
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: |
|
types: |
|
||||||
fix # Bug fix on prod code
|
fix
|
||||||
feat # New feature on prod code
|
feat
|
||||||
test # Only modify test or test utils
|
test
|
||||||
doc # Only modify docs/comments
|
doc
|
||||||
chore # Anything else
|
chore
|
||||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,11 +1,10 @@
|
|||||||
.idea/*
|
.idea/*
|
||||||
.angular
|
.angular
|
||||||
build
|
build
|
||||||
|
bundle
|
||||||
dist
|
dist
|
||||||
node_modules
|
node_modules
|
||||||
src/**.js
|
src/**.js
|
||||||
coverage
|
coverage
|
||||||
*.log
|
*.log
|
||||||
/tsconfig.tsbuildinfo
|
*.tsbuildinfo
|
||||||
/tsconfig.dev.tsbuildinfo
|
|
||||||
/bundle/
|
|
||||||
|
@ -1,42 +1,46 @@
|
|||||||
module.exports = [
|
module.exports = [
|
||||||
{
|
{
|
||||||
name: "Waku core",
|
name: "Waku core",
|
||||||
path: "bundle/index.js",
|
path: "packages/core/bundle/index.js",
|
||||||
import: "{ WakuNode }",
|
import: "{ WakuNode }",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Waku default setup",
|
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: {
|
import: {
|
||||||
"./bundle/lib/create_waku.js": "{ createLightNode }",
|
"./packages/core/bundle/lib/create_waku.js": "{ createLightNode }",
|
||||||
"./bundle/lib/wait_for_remote_peer.js": "{ waitForRemotePeer }",
|
"./packages/core/bundle/lib/wait_for_remote_peer.js":
|
||||||
"./bundle/lib/waku_message/version_0.js":
|
"{ waitForRemotePeer }",
|
||||||
|
"./packages/core/bundle/lib/waku_message/version_0.js":
|
||||||
"{ MessageV0, DecoderV0, EncoderV0 }",
|
"{ MessageV0, DecoderV0, EncoderV0 }",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Asymmetric, symmetric encryption and signature",
|
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 }",
|
import: "{ MessageV1, AsymEncoder, AsymDecoder, SymEncoder, SymDecoder }",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "DNS discovery",
|
name: "DNS discovery",
|
||||||
path: "bundle/lib/peer_discovery_dns.js",
|
path: "packages/core/bundle/lib/peer_discovery_dns.js",
|
||||||
import: "{ PeerDiscoveryDns }",
|
import: "{ PeerDiscoveryDns }",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Privacy preserving protocols",
|
name: "Privacy preserving protocols",
|
||||||
path: "bundle/index.js",
|
path: "packages/core/bundle/index.js",
|
||||||
import: "{ WakuRelay }",
|
import: "{ WakuRelay }",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Light protocols",
|
name: "Light protocols",
|
||||||
path: "bundle/index.js",
|
path: "packages/core/bundle/index.js",
|
||||||
import: "{ WakuLightPush, WakuFilter }",
|
import: "{ WakuLightPush, WakuFilter }",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "History retrieval protocols",
|
name: "History retrieval protocols",
|
||||||
path: "bundle/index.js",
|
path: "packages/core/bundle/index.js",
|
||||||
import: "{ WakuStore }",
|
import: "{ WakuStore }",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
## Examples
|
|
||||||
|
|
||||||
Moved to https://github.com/waku-org/js-waku-examples.
|
|
@ -1 +0,0 @@
|
|||||||
Moved to https://docs.wakuconnect.dev/docs/guides/
|
|
5
lerna.json
Normal file
5
lerna.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
||||||
|
"useWorkspaces": true,
|
||||||
|
"version": "0.0.0"
|
||||||
|
}
|
40
nx.json
Normal file
40
nx.json
Normal 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
14398
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
209
package.json
209
package.json
@ -1,208 +1,33 @@
|
|||||||
{
|
{
|
||||||
"name": "js-waku",
|
"name": "root",
|
||||||
"version": "0.30.0",
|
"private": true,
|
||||||
"description": "TypeScript implementation of the Waku v2 protocol",
|
"workspaces": [
|
||||||
"types": "./dist/index.d.ts",
|
"packages/*"
|
||||||
"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": {
|
"scripts": {
|
||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
"build": "run-s build:**",
|
"build": "lerna run build",
|
||||||
"build:esm": "tsc && node build-scripts/fix-imports.js",
|
|
||||||
"build:bundle": "rollup --config rollup.config.js",
|
|
||||||
"size": "npm run build && size-limit",
|
"size": "npm run build && size-limit",
|
||||||
"fix": "run-s fix:*",
|
"fix": "lerna run fix",
|
||||||
"fix:prettier": "prettier \"src/**/*.ts\" \"./*.json\" \"*.*js\" \".github/**/*.yml\" --write",
|
"check": "lerna run check",
|
||||||
"fix:lint": "eslint src --ext .ts --ext .cjs --fix",
|
"test": "lerna run test",
|
||||||
"pretest": "run-s pretest:*",
|
"test:browser": "lerna run test:browser",
|
||||||
"pretest:1-init-git-submodules": "[ -f './nwaku/build/wakunode2' ] || git submodule update --init --recursive",
|
"test:node": "lerna run test:node",
|
||||||
"pretest:2-build-nwaku": "[ -f './nwaku/build/wakunode2' ] || run-s nwaku:build",
|
"proto": "lerna run proto",
|
||||||
"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)",
|
"doc": "lerna run doc"
|
||||||
"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"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@libp2p/peer-id-factory": "^1.0.15",
|
"@size-limit/preset-big-lib": "^8.1.0",
|
||||||
"@rollup/plugin-commonjs": "^22.0.0",
|
"husky": "^8.0.1",
|
||||||
"@rollup/plugin-json": "^4.1.0",
|
"lerna": "^6.0.1",
|
||||||
"@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",
|
|
||||||
"lint-staged": "^13.0.3",
|
"lint-staged": "^13.0.3",
|
||||||
"mocha": "^9.1.3",
|
"size-limit": "^8.1.0"
|
||||||
"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"
|
|
||||||
},
|
},
|
||||||
"files": [
|
|
||||||
"dist",
|
|
||||||
"bundle",
|
|
||||||
"src/*.ts",
|
|
||||||
"src/lib/**/*.ts",
|
|
||||||
"src/proto/**/*.ts",
|
|
||||||
"!**/*.spec.*",
|
|
||||||
"!**/*.json",
|
|
||||||
"CHANGELOG.md",
|
|
||||||
"LICENSE",
|
|
||||||
"README.md"
|
|
||||||
],
|
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"*.ts": [
|
"*.ts": [
|
||||||
"eslint --fix"
|
"eslint --fix"
|
||||||
],
|
],
|
||||||
"*.{ts,json,conf*.*js}": [
|
"*.{ts,json,js}": [
|
||||||
"prettier --write"
|
|
||||||
],
|
|
||||||
"./*.*js": [
|
|
||||||
"prettier --write"
|
"prettier --write"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
6
packages/core/.eslintrc.cjs
Normal file
6
packages/core/.eslintrc.cjs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
parserOptions: {
|
||||||
|
tsconfigRootDir: __dirname,
|
||||||
|
project: "./tsconfig.dev.json",
|
||||||
|
},
|
||||||
|
};
|
4
packages/core/.prettierignore
Normal file
4
packages/core/.prettierignore
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
build
|
||||||
|
bundle
|
||||||
|
dist
|
||||||
|
node_modules
|
@ -156,7 +156,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Added
|
### 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
|
### Changed
|
||||||
|
|
||||||
@ -248,7 +248,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Test: Upgrade nim-waku node to v0.7.
|
- Test: Upgrade nim-waku node to v0.7.
|
||||||
- Doc: Renamed "DappConnect" to "Waku Connect".
|
- Doc: Renamed "DappConnect" to "Waku Connect".
|
||||||
- Docs: API Docs are now available at https://js-waku.wakuconnect.dev/.
|
- 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.
|
- **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
|
## [0.14.1] - 2021-10-22
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Issue when importing the `utils` module.
|
- Issue when importing the `utils` module.
|
||||||
|
|
||||||
## [0.14.0] - 2021-10-13
|
## [0.14.0] - 2021-10-13
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- If the `callback` function passed to`WakuStore.queryHistory` returns `true`, then no further pages are retrieved from the store.
|
- 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.
|
- Use webpack to build UMD bundle of the library, see [README](./README.md) for usage.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Breaking**: Renamed `WakuStore.QueryOptions`'s `direction` to `pageDirection` (and its type) as it only affects the page ordering,
|
- **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.
|
not the ordering of messages with the page.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Docs: Ensure that `WakuStore`'s `QueryOptions` documentation is available [online](https://js-waku.wakuconnect.dev/).
|
- Docs: Ensure that `WakuStore`'s `QueryOptions` documentation is available [online](https://js-waku.wakuconnect.dev/).
|
||||||
|
|
||||||
## [0.13.1] - 2021-09-21
|
## [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
|
## [0.13.0] - 2021-09-16
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Upgrade libp2p libraries: @chainsafe/libp2p-noise@4.1.1, libp2p@0.32.4, libp2p-gossipsub@0.11.1.
|
- 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
|
## [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
|
## [0.12.1] - 2021-09-16
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **hot fix**: Connects to a limited number of bootstrap nodes, defaults to 1.
|
- **hot fix**: Connects to a limited number of bootstrap nodes, defaults to 1.
|
||||||
|
|
||||||
## [0.12.0] - 2021-09-2
|
## [0.12.0] - 2021-09-2
|
||||||
|
|
||||||
### Added
|
### 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.
|
- Guides: Encrypt messages using Waku Message Version 1.
|
||||||
- Allow passing decryption keys in hex string format.
|
- 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.
|
- 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.
|
- `Waku.waitForConnectedPeer` helper to ensure that we are connected to Waku peers when using the bootstrap option.
|
||||||
|
|
||||||
### Changed
|
### 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.
|
- **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.
|
- Renamed and promote the usage of `generateSymmetricKey()` to generate random symmetric keys.
|
||||||
- Improved errors thrown by `WakuStore.queryHistory`.
|
- Improved errors thrown by `WakuStore.queryHistory`.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Buffer concat error when using symmetric encryption in the browser.
|
- Buffer concat error when using symmetric encryption in the browser.
|
||||||
|
|
||||||
## [0.11.0] - 2021-08-20
|
## [0.11.0] - 2021-08-20
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Examples: New [Ethereum Private Message Using Wallet Encryption Web App](./examples/eth-pm-wallet-encryption/README.md)
|
- 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.
|
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.
|
- 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/).
|
- 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
|
### 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.
|
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
|
- Examples: Renamed `eth-dm` to `eth-pm`; "Direct Message" can lead to confusion with "Direct Connection" that
|
||||||
refers to low latency network connections.
|
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.
|
- Upgraded dependencies to remove warning at installation.
|
||||||
- **Breaking**: Moved `DefaultPubSubTopic` to `waku.ts` and fixed the casing.
|
- **Breaking**: Moved `DefaultPubSubTopic` to `waku.ts` and fixed the casing.
|
||||||
- **Breaking**: Rename all `pubsubTopic` occurrences to `pubSubTopic`, across all interfaces.
|
- **Breaking**: Rename all `pubsubTopic` occurrences to `pubSubTopic`, across all interfaces.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- Examples (cli-chat): The focus of this library is Web environment;
|
- 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;
|
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.
|
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
|
## [0.10.0] - 2021-08-06
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Relay and ReactJS guides and examples
|
- Relay and ReactJS guides and examples
|
||||||
([#56](https://github.com/status-im/js-waku/issues/56)).
|
([#56](https://github.com/status-im/js-waku/issues/56)).
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Breaking**: The `WakuMessage` APIs have been changed to move `contentTopic` out of the optional parameters.
|
- **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**: Move `contentTopics` out the `WakuStore.queryHistory`'s optional parameters.
|
||||||
- **Breaking**: `WakuStore.queryHistory` throws when encountering an error instead of returning a `null` value.
|
- **Breaking**: `WakuStore.queryHistory` throws when encountering an error instead of returning a `null` value.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- Examples (web-chat): Remove broken `/fleet` command.
|
- Examples (web-chat): Remove broken `/fleet` command.
|
||||||
- **Breaking**: Removed `DefaultContentTopic` as developers must choose a content topic for their app;
|
- **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/.
|
recommendations for content topic can be found at https://rfc.vac.dev/spec/23/.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- `WakuMessage.payloadAsUtf8` returning garbage on utf-8 non-ascii characters.
|
- `WakuMessage.payloadAsUtf8` returning garbage on utf-8 non-ascii characters.
|
||||||
- `ChatMessage.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
|
## [0.9.0] - 2021-07-26
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Breaking**: Store Response Protobuf changed to align with nim-waku v0.5
|
- **Breaking**: Store Response Protobuf changed to align with nim-waku v0.5
|
||||||
([nim-waku#676](https://github.com/status-im/nim-waku/pull/676)).
|
([nim-waku#676](https://github.com/status-im/nim-waku/pull/676)).
|
||||||
|
|
||||||
## [0.8.1] - 2021-07-16
|
## [0.8.1] - 2021-07-16
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Examples (web-chat): New `/fleet` command to switch connection between Status prod and test fleets.
|
- Examples (web-chat): New `/fleet` command to switch connection between Status prod and test fleets.
|
||||||
- Export `generatePrivateKey` and `getPublicKey` directly from the root.
|
- Export `generatePrivateKey` and `getPublicKey` directly from the root.
|
||||||
- Usage of the encryption and signature APIs to the readme.
|
- 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)).
|
([#238](https://github.com/status-im/js-waku/issues/238)).
|
||||||
|
|
||||||
### Changed
|
### 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.
|
- **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.
|
- Upgrade libp2p to 0.32.0.
|
||||||
- **Breaking**: Rename `keepAlive` option to `pingKeepAlive`.
|
- **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))
|
([#185](https://github.com/status-im/js-waku/issues/185), [js-libp2p#939](https://github.com/libp2p/js-libp2p/issues/939))
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Align `WakuMessage` readme example with actual code behaviour.
|
- Align `WakuMessage` readme example with actual code behaviour.
|
||||||
- Remove infinite loop when an error with Waku Store is encountered.
|
- Remove infinite loop when an error with Waku Store is encountered.
|
||||||
|
|
||||||
## [0.8.0] - 2021-07-15
|
## [0.8.0] - 2021-07-15
|
||||||
|
|
||||||
### Added
|
### 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.
|
- 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`.
|
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.
|
- 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.
|
- Add support for Waku Message version 1: Asymmetric encryption, symmetric encryption, and signature of the data.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Breaking**: Auto select peer if none provided for store and light push protocols.
|
- **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.
|
- 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.
|
- 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)).
|
- Examples (eth-dm): Use Protobuf for direct messages instead of JSON ([#214](https://github.com/status-im/js-waku/issues/214)).
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Disable `keepAlive` if set to `0`.
|
- Disable `keepAlive` if set to `0`.
|
||||||
|
|
||||||
## [0.7.0] - 2021-06-15
|
## [0.7.0] - 2021-06-15
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Test: Upgrade nim-waku node to v0.4.
|
- Test: Upgrade nim-waku node to v0.4.
|
||||||
- Waku Light Push upgraded to `2.0.0-beta1`.
|
- Waku Light Push upgraded to `2.0.0-beta1`.
|
||||||
- Examples (web chat): Catch error if chat message decoding fails.
|
- 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
|
## [0.6.0] - 2021-06-09
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **Breaking**: Websocket protocol is not automatically added anymore if the user specifies a protocol in `libp2p.modules`
|
- **Breaking**: Websocket protocol is not automatically added anymore if the user specifies a protocol in `libp2p.modules`
|
||||||
when using `Waku.create`.
|
when using `Waku.create`.
|
||||||
- **Breaking**: Options passed to `Waku.create` used to be passed to `Libp2p.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.
|
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
|
### Added
|
||||||
|
|
||||||
- Enable access to `WakuMessage.timestamp`.
|
- Enable access to `WakuMessage.timestamp`.
|
||||||
- Examples (web chat): Use `WakuMessage.timestamp` as unique key for list items.
|
- 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.
|
- 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.
|
- Examples (web chat): Persist nick.
|
||||||
- Support for custom PubSub Topics to `Waku`, `WakuRelay`, `WakuStore` and `WakuLightPush`;
|
- 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`;
|
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
|
## [0.5.0] - 2021-05-21
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Implement [Waku v2 Light Push protocol](https://rfc.vac.dev/spec/19/).
|
- 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).
|
- 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.
|
- 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
|
## [0.4.0] - 2021-05-18
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- `callback` argument to `WakuStore.queryHistory()`, called as messages are retrieved
|
- `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,
|
; 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
|
### Changed
|
||||||
|
|
||||||
- Testing: Upgrade nim-waku node to v0.3.
|
- Testing: Upgrade nim-waku node to v0.3.
|
||||||
- **Breaking**: Modify `WakuStore.queryHistory()` to accept one `Object` instead of multiple individual arguments.
|
- **Breaking**: Modify `WakuStore.queryHistory()` to accept one `Object` instead of multiple individual arguments.
|
||||||
- `getStatusFleetNodes` return prod nodes by default, instead of test nodes.
|
- `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.
|
- Examples (cli chat): Connect to test fleet by default, use `--prod` to connect to prod fleet.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Expose `Enviroment` and `Protocol` enums to pass to `getStatusFleetNodes`.
|
- Expose `Enviroment` and `Protocol` enums to pass to `getStatusFleetNodes`.
|
||||||
|
|
||||||
## [0.3.0] - 2021-05-15
|
## [0.3.0] - 2021-05-15
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- `getStatusFleetNodes` to connect to Status' nim-waku nodes.
|
- `getStatusFleetNodes` to connect to Status' nim-waku nodes.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Clarify content topic format in README.md.
|
- Clarify content topic format in README.md.
|
||||||
|
|
||||||
## Removed
|
## Removed
|
||||||
|
|
||||||
- Unused dependencies.
|
- Unused dependencies.
|
||||||
|
|
||||||
## [0.2.0] - 2021-05-14
|
## [0.2.0] - 2021-05-14
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- `WakuRelay.getPeers` method.
|
- `WakuRelay.getPeers` method.
|
||||||
- Use `WakuRelay.getPeers` in web chat app example to disable send button.
|
- Use `WakuRelay.getPeers` in web chat app example to disable send button.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Enable passing `string`s to `addPeerToAddressBook`.
|
- Enable passing `string`s to `addPeerToAddressBook`.
|
||||||
- Use `addPeerToAddressBook` in examples and usage doc.
|
- Use `addPeerToAddressBook` in examples and usage doc.
|
||||||
- Settle on `js-waku` name across the board.
|
- 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
|
## [0.1.0] - 2021-05-12
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Add usage section to the README.
|
- Add usage section to the README.
|
||||||
- Support of [Waku v2 Relay](https://rfc.vac.dev/spec/11/).
|
- Support of [Waku v2 Relay](https://rfc.vac.dev/spec/11/).
|
||||||
- Support of [Waku v2 Store](https://rfc.vac.dev/spec/13/).
|
- 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).
|
- [ReactJS Chat App example](./examples/web-chat).
|
||||||
- [Typedoc Documentation](https://js-waku.wakuconnect.dev/).
|
- [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.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.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
|
[0.28.1]: https://github.com/status-im/js-waku/compare/v0.28.0...v0.28.1
|
193
packages/core/package.json
Normal file
193
packages/core/package.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
import { createSecp256k1PeerId } from "@libp2p/peer-id-factory";
|
import { createSecp256k1PeerId } from "@libp2p/peer-id-factory";
|
||||||
import { Multiaddr } from "@multiformats/multiaddr";
|
import { multiaddr } from "@multiformats/multiaddr";
|
||||||
import { assert, expect } from "chai";
|
import { assert, expect } from "chai";
|
||||||
import { equals } from "uint8arrays/equals";
|
import { equals } from "uint8arrays/equals";
|
||||||
|
|
||||||
@ -17,15 +17,11 @@ describe("ENR", function () {
|
|||||||
const peerId = await createSecp256k1PeerId();
|
const peerId = await createSecp256k1PeerId();
|
||||||
const enr = await ENR.createFromPeerId(peerId);
|
const enr = await ENR.createFromPeerId(peerId);
|
||||||
const keypair = await createKeypairFromPeerId(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 = [
|
enr.multiaddrs = [
|
||||||
new Multiaddr(
|
multiaddr("/dns4/node1.do-ams.wakuv2.test.statusim.net/tcp/443/wss"),
|
||||||
"/dns4/node1.do-ams.wakuv2.test.statusim.net/tcp/443/wss"
|
multiaddr("/dns6/node2.ac-chi.wakuv2.test.statusim.net/tcp/443/wss"),
|
||||||
),
|
multiaddr(
|
||||||
new Multiaddr(
|
|
||||||
"/dns6/node2.ac-chi.wakuv2.test.statusim.net/tcp/443/wss"
|
|
||||||
),
|
|
||||||
new Multiaddr(
|
|
||||||
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
|
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
@ -44,8 +40,8 @@ describe("ENR", function () {
|
|||||||
if (!enr2.signature) throw "enr.signature is undefined";
|
if (!enr2.signature) throw "enr.signature is undefined";
|
||||||
|
|
||||||
expect(bytesToHex(enr2.signature)).to.be.equal(bytesToHex(enr.signature));
|
expect(bytesToHex(enr2.signature)).to.be.equal(bytesToHex(enr.signature));
|
||||||
const multiaddr = enr2.getLocationMultiaddr("udp")!;
|
const ma = enr2.getLocationMultiaddr("udp")!;
|
||||||
expect(multiaddr.toString()).to.be.equal("/ip4/18.223.219.100/udp/9000");
|
expect(ma.toString()).to.be.equal("/ip4/18.223.219.100/udp/9000");
|
||||||
expect(enr2.multiaddrs).to.not.be.undefined;
|
expect(enr2.multiaddrs).to.not.be.undefined;
|
||||||
expect(enr2.multiaddrs!.length).to.be.equal(3);
|
expect(enr2.multiaddrs!.length).to.be.equal(3);
|
||||||
const multiaddrsAsStr = enr2.multiaddrs!.map((ma) => ma.toString());
|
const multiaddrsAsStr = enr2.multiaddrs!.map((ma) => ma.toString());
|
||||||
@ -113,12 +109,12 @@ describe("ENR", function () {
|
|||||||
const peerId = await createSecp256k1PeerId();
|
const peerId = await createSecp256k1PeerId();
|
||||||
const enr = await ENR.createFromPeerId(peerId);
|
const enr = await ENR.createFromPeerId(peerId);
|
||||||
const keypair = await createKeypairFromPeerId(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]));
|
enr.set("id", new Uint8Array([0]));
|
||||||
const txt = await enr.encodeTxt(keypair.privateKey);
|
const txt = await enr.encodeTxt(keypair.privateKey);
|
||||||
|
|
||||||
ENR.decodeTxt(txt);
|
await ENR.decodeTxt(txt);
|
||||||
assert.fail("Expect error here");
|
assert.fail("Expect error here");
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
const e = err as Error;
|
const e = err as Error;
|
||||||
@ -200,7 +196,7 @@ describe("ENR", function () {
|
|||||||
"b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291"
|
"b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291"
|
||||||
);
|
);
|
||||||
record = await ENR.createV4(getPublicKey(privateKey));
|
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;
|
record.seq = seq;
|
||||||
await record.encodeTxt(privateKey);
|
await record.encodeTxt(privateKey);
|
||||||
});
|
});
|
||||||
@ -248,7 +244,7 @@ describe("ENR", function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should get / set UDP multiaddr", () => {
|
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();
|
const tuples0 = multi0.tuples();
|
||||||
|
|
||||||
if (!tuples0[0][1] || !tuples0[1][1]) {
|
if (!tuples0[0][1] || !tuples0[1][1]) {
|
||||||
@ -262,7 +258,7 @@ describe("ENR", function () {
|
|||||||
multi0.toString()
|
multi0.toString()
|
||||||
);
|
);
|
||||||
// set the multiaddr
|
// 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);
|
record.setLocationMultiaddr(multi1);
|
||||||
// and get the multiaddr
|
// and get the multiaddr
|
||||||
expect(record.getLocationMultiaddr("udp")!.toString()).to.equal(
|
expect(record.getLocationMultiaddr("udp")!.toString()).to.equal(
|
||||||
@ -275,7 +271,7 @@ describe("ENR", function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should get / set TCP multiaddr", () => {
|
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();
|
const tuples0 = multi0.tuples();
|
||||||
|
|
||||||
if (!tuples0[0][1] || !tuples0[1][1]) {
|
if (!tuples0[0][1] || !tuples0[1][1]) {
|
||||||
@ -290,7 +286,7 @@ describe("ENR", function () {
|
|||||||
multi0.toString()
|
multi0.toString()
|
||||||
);
|
);
|
||||||
// set the multiaddr
|
// 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);
|
record.setLocationMultiaddr(multi1);
|
||||||
// and get the multiaddr
|
// and get the multiaddr
|
||||||
expect(record.getLocationMultiaddr("tcp")!.toString()).to.equal(
|
expect(record.getLocationMultiaddr("tcp")!.toString()).to.equal(
|
||||||
@ -324,43 +320,43 @@ describe("ENR", function () {
|
|||||||
|
|
||||||
it("should properly create location multiaddrs - udp4", () => {
|
it("should properly create location multiaddrs - udp4", () => {
|
||||||
expect(enr.getLocationMultiaddr("udp4")).to.deep.equal(
|
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", () => {
|
it("should properly create location multiaddrs - tcp4", () => {
|
||||||
expect(enr.getLocationMultiaddr("tcp4")).to.deep.equal(
|
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", () => {
|
it("should properly create location multiaddrs - udp6", () => {
|
||||||
expect(enr.getLocationMultiaddr("udp6")).to.deep.equal(
|
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", () => {
|
it("should properly create location multiaddrs - tcp6", () => {
|
||||||
expect(enr.getLocationMultiaddr("tcp6")).to.deep.equal(
|
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", () => {
|
it("should properly create location multiaddrs - udp", () => {
|
||||||
// default to ip4
|
// default to ip4
|
||||||
expect(enr.getLocationMultiaddr("udp")).to.deep.equal(
|
expect(enr.getLocationMultiaddr("udp")).to.deep.equal(
|
||||||
new Multiaddr(`/ip4/${ip4}/udp/${udp}`)
|
multiaddr(`/ip4/${ip4}/udp/${udp}`)
|
||||||
);
|
);
|
||||||
// if ip6 is set, use it
|
// if ip6 is set, use it
|
||||||
enr.ip = undefined;
|
enr.ip = undefined;
|
||||||
expect(enr.getLocationMultiaddr("udp")).to.deep.equal(
|
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
|
// if ip6 does not exist, use ip4
|
||||||
enr.ip6 = undefined;
|
enr.ip6 = undefined;
|
||||||
enr.ip = ip4;
|
enr.ip = ip4;
|
||||||
expect(enr.getLocationMultiaddr("udp")).to.deep.equal(
|
expect(enr.getLocationMultiaddr("udp")).to.deep.equal(
|
||||||
new Multiaddr(`/ip4/${ip4}/udp/${udp}`)
|
multiaddr(`/ip4/${ip4}/udp/${udp}`)
|
||||||
);
|
);
|
||||||
enr.ip6 = ip6;
|
enr.ip6 = ip6;
|
||||||
});
|
});
|
||||||
@ -368,18 +364,18 @@ describe("ENR", function () {
|
|||||||
it("should properly create location multiaddrs - tcp", () => {
|
it("should properly create location multiaddrs - tcp", () => {
|
||||||
// default to ip4
|
// default to ip4
|
||||||
expect(enr.getLocationMultiaddr("tcp")).to.deep.equal(
|
expect(enr.getLocationMultiaddr("tcp")).to.deep.equal(
|
||||||
new Multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
|
multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
|
||||||
);
|
);
|
||||||
// if ip6 is set, use it
|
// if ip6 is set, use it
|
||||||
enr.ip = undefined;
|
enr.ip = undefined;
|
||||||
expect(enr.getLocationMultiaddr("tcp")).to.deep.equal(
|
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
|
// if ip6 does not exist, use ip4
|
||||||
enr.ip6 = undefined;
|
enr.ip6 = undefined;
|
||||||
enr.ip = ip4;
|
enr.ip = ip4;
|
||||||
expect(enr.getLocationMultiaddr("tcp")).to.deep.equal(
|
expect(enr.getLocationMultiaddr("tcp")).to.deep.equal(
|
||||||
new Multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
|
multiaddr(`/ip4/${ip4}/tcp/${tcp}`)
|
||||||
);
|
);
|
||||||
enr.ip6 = ip6;
|
enr.ip6 = ip6;
|
||||||
});
|
});
|
18
packages/core/src/lib/enr/multiaddr_from_fields.ts
Normal file
18
packages/core/src/lib/enr/multiaddr_from_fields.ts
Normal 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;
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import { Multiaddr } from "@multiformats/multiaddr";
|
import { multiaddr } from "@multiformats/multiaddr";
|
||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
|
|
||||||
import { decodeMultiaddrs, encodeMultiaddrs } from "./multiaddrs_codec";
|
import { decodeMultiaddrs, encodeMultiaddrs } from "./multiaddrs_codec";
|
||||||
@ -6,13 +6,11 @@ import { decodeMultiaddrs, encodeMultiaddrs } from "./multiaddrs_codec";
|
|||||||
describe("ENR multiaddrs codec", function () {
|
describe("ENR multiaddrs codec", function () {
|
||||||
it("Sample", async () => {
|
it("Sample", async () => {
|
||||||
const multiaddrs = [
|
const multiaddrs = [
|
||||||
new Multiaddr(
|
multiaddr("/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/443/wss"),
|
||||||
"/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/443/wss"
|
multiaddr(
|
||||||
),
|
|
||||||
new Multiaddr(
|
|
||||||
"/dns6/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/443/wss"
|
"/dns6/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/443/wss"
|
||||||
),
|
),
|
||||||
new Multiaddr(
|
multiaddr(
|
||||||
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
|
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
|
||||||
),
|
),
|
||||||
];
|
];
|
@ -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";
|
import { MULTIADDR_LENGTH_SIZE } from "./constants";
|
||||||
|
|
||||||
@ -19,8 +20,7 @@ export function decodeMultiaddrs(bytes: Uint8Array): Multiaddr[] {
|
|||||||
const multiaddrBytes = bytes.slice(index, index + size);
|
const multiaddrBytes = bytes.slice(index, index + size);
|
||||||
index += size;
|
index += size;
|
||||||
|
|
||||||
const multiaddr = new Multiaddr(multiaddrBytes);
|
multiaddrs.push(multiaddr(multiaddrBytes));
|
||||||
multiaddrs.push(multiaddr);
|
|
||||||
}
|
}
|
||||||
return multiaddrs;
|
return multiaddrs;
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
import { createSecp256k1PeerId } from "@libp2p/peer-id-factory";
|
import { createSecp256k1PeerId } from "@libp2p/peer-id-factory";
|
||||||
import { Multiaddr } from "@multiformats/multiaddr";
|
import { multiaddr } from "@multiformats/multiaddr";
|
||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
|
|
||||||
import { ENR, Waku2 } from "../enr";
|
import { ENR, Waku2 } from "../enr";
|
||||||
@ -9,11 +9,11 @@ import { fetchNodesUntilCapabilitiesFulfilled } from "./fetch_nodes";
|
|||||||
async function createEnr(waku2: Waku2): Promise<ENR> {
|
async function createEnr(waku2: Waku2): Promise<ENR> {
|
||||||
const peerId = await createSecp256k1PeerId();
|
const peerId = await createSecp256k1PeerId();
|
||||||
const enr = await ENR.createFromPeerId(peerId);
|
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 = [
|
enr.multiaddrs = [
|
||||||
new Multiaddr("/dns4/node1.do-ams.wakuv2.test.statusim.net/tcp/443/wss"),
|
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"),
|
multiaddr("/dns6/node2.ac-chi.wakuv2.test.statusim.net/tcp/443/wss"),
|
||||||
new Multiaddr(
|
multiaddr(
|
||||||
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
|
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234/wss"
|
||||||
),
|
),
|
||||||
];
|
];
|
@ -5,7 +5,8 @@ import type {
|
|||||||
import { symbol } from "@libp2p/interface-peer-discovery";
|
import { symbol } from "@libp2p/interface-peer-discovery";
|
||||||
import type { PeerInfo } from "@libp2p/interface-peer-info";
|
import type { PeerInfo } from "@libp2p/interface-peer-info";
|
||||||
import { CustomEvent, EventEmitter } from "@libp2p/interfaces/events";
|
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 debug from "debug";
|
||||||
|
|
||||||
import { multiaddrsToPeerInfo } from "./multiaddr_to_peer_info";
|
import { multiaddrsToPeerInfo } from "./multiaddr_to_peer_info";
|
||||||
@ -52,7 +53,7 @@ export class PeerDiscoveryStaticPeers
|
|||||||
|
|
||||||
const peerMas = peers.map((peer: string | Multiaddr) => {
|
const peerMas = peers.map((peer: string | Multiaddr) => {
|
||||||
if (typeof peer === "string") {
|
if (typeof peer === "string") {
|
||||||
return new Multiaddr(peer);
|
return multiaddr(peer);
|
||||||
} else {
|
} else {
|
||||||
return peer;
|
return peer;
|
||||||
}
|
}
|
@ -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";
|
import { getPseudoRandomSubset } from "./random_subset";
|
||||||
|
|
||||||
@ -41,7 +42,7 @@ export function getPredefinedBootstrapNodes(
|
|||||||
|
|
||||||
nodes = Object.values(nodes) as string[];
|
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);
|
return getPseudoRandomSubset(nodes, wantedNumber);
|
||||||
}
|
}
|
||||||
|
|
@ -141,6 +141,9 @@ describe("Decryption Keys", () => {
|
|||||||
|
|
||||||
waku1.addPeerToAddressBook(
|
waku1.addPeerToAddressBook(
|
||||||
waku2.libp2p.peerId,
|
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()
|
waku2.libp2p.getMultiaddrs()
|
||||||
);
|
);
|
||||||
|
|
@ -137,6 +137,8 @@ export class WakuNode implements Waku {
|
|||||||
codecs.push(FilterCodec);
|
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);
|
return this.libp2p.dialProtocol(peer, codecs);
|
||||||
}
|
}
|
||||||
|
|
@ -64,6 +64,9 @@ describe("Waku Relay [node only]", () => {
|
|||||||
log("Instances started, adding waku2 to waku1's address book");
|
log("Instances started, adding waku2 to waku1's address book");
|
||||||
waku1.addPeerToAddressBook(
|
waku1.addPeerToAddressBook(
|
||||||
waku2.libp2p.peerId,
|
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()
|
waku2.libp2p.getMultiaddrs()
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -279,10 +282,16 @@ describe("Waku Relay [node only]", () => {
|
|||||||
|
|
||||||
waku1.addPeerToAddressBook(
|
waku1.addPeerToAddressBook(
|
||||||
waku2.libp2p.peerId,
|
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()
|
waku2.libp2p.getMultiaddrs()
|
||||||
);
|
);
|
||||||
waku3.addPeerToAddressBook(
|
waku3.addPeerToAddressBook(
|
||||||
waku2.libp2p.peerId,
|
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()
|
waku2.libp2p.getMultiaddrs()
|
||||||
);
|
);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user