diff --git a/.gitignore b/.gitignore index 08c5d8446c..ebcefbd801 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,4 @@ test-results playwright-report example allure-results -packages/local-peer-cache-discovery/mock_local_storage \ No newline at end of file +packages/discovery/mock_local_storage \ No newline at end of file diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2396109c2b..337b3f6d00 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -4,12 +4,9 @@ "packages/interfaces": "0.0.22", "packages/message-hash": "0.1.11", "packages/enr": "0.0.21", - "packages/peer-exchange": "0.0.20", "packages/core": "0.0.27", - "packages/dns-discovery": "0.0.21", "packages/message-encryption": "0.0.25", "packages/relay": "0.0.10", - "packages/sdk": "0.0.23", - "packages/local-peer-cache-discovery": "1.0.0", - "packages/rln": "0.1.2" + "packages/rln": "0.1.2", + "packages/sdk": "0.0.23" } diff --git a/.size-limit.cjs b/.size-limit.cjs index 3fe0b6f7f7..b77b56f9b5 100644 --- a/.size-limit.cjs +++ b/.size-limit.cjs @@ -24,9 +24,19 @@ module.exports = [ }, { name: "DNS discovery", - path: "packages/dns-discovery/bundle/index.js", + path: "packages/discovery/bundle/index.js", import: "{ PeerDiscoveryDns }", }, + { + name: "Peer Exchange discovery", + path: "packages/discovery/bundle/index.js", + import: "{ wakuPeerExchangeDiscovery }", + }, + { + name: "Local Peer Cache Discovery", + path: "packages/discovery/bundle/index.js", + import: "{ wakuLocalPeerCacheDiscovery }", + }, { name: "Privacy preserving protocols", path: "packages/relay/bundle/index.js", diff --git a/package-lock.json b/package-lock.json index c3c59bca1e..93816b0cc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,7 @@ "packages/enr", "packages/core", "packages/relay", - "packages/peer-exchange", - "packages/dns-discovery", - "packages/local-peer-cache-discovery", + "packages/discovery", "packages/message-encryption", "packages/rln", "packages/sdk", @@ -2974,7 +2972,8 @@ }, "node_modules/@libp2p/interfaces": { "version": "3.3.2", - "license": "Apache-2.0 OR MIT", + "resolved": "https://registry.npmjs.org/@libp2p/interfaces/-/interfaces-3.3.2.tgz", + "integrity": "sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==", "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" @@ -5241,9 +5240,10 @@ "link": true }, "node_modules/@waku/create-app": { - "version": "0.1.1-7c24ffa", + "version": "0.1.1-504bcd4", + "resolved": "https://registry.npmjs.org/@waku/create-app/-/create-app-0.1.1-504bcd4.tgz", + "integrity": "sha512-rTGTHLEtEgdmxBTU9ZduEWcZgZG7JsQqIxjHhn3rQNmtggeXjZ5xWo/FAKYcx3Bc1B9igQVUMS/v8NvAGuDd4A==", "dev": true, - "license": "MIT OR Apache-2.0", "dependencies": { "commander": "^9.4.1", "enquirer": "^2.3.6", @@ -5298,10 +5298,26 @@ "node": ">= 10.0.0" } }, - "node_modules/@waku/dns-discovery": { - "resolved": "packages/dns-discovery", + "node_modules/@waku/discovery": { + "resolved": "packages/discovery", "link": true }, + "node_modules/@waku/dns-discovery": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@waku/dns-discovery/-/dns-discovery-0.0.21.tgz", + "integrity": "sha512-l6TVLNiP9HjVrSCWRVP4pKGAADkPzMY2+/tFxnLI1lx3NWmBrkwsEsZHKlfGpdDTT3130nxXkvENcswqWLsc1w==", + "dependencies": { + "@waku/enr": "0.0.21", + "@waku/utils": "0.0.15", + "debug": "^4.3.4", + "dns-query": "^0.11.2", + "hi-base32": "^0.5.1", + "uint8arrays": "^5.0.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@waku/enr": { "resolved": "packages/enr", "link": true @@ -5311,8 +5327,17 @@ "link": true }, "node_modules/@waku/local-peer-cache-discovery": { - "resolved": "packages/local-peer-cache-discovery", - "link": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@waku/local-peer-cache-discovery/-/local-peer-cache-discovery-1.0.0.tgz", + "integrity": "sha512-He3xudQF8cMbQUU2q9nUlinSW8FSwKX51DLwhPhblVVwhrfdmjvfhjCaMaq2YDoA+y88CIqQG0bLxxl5QADpWQ==", + "dependencies": { + "@libp2p/interface": "^1.1.2", + "@waku/interfaces": "^0.0.22", + "@waku/utils": "^0.0.15" + }, + "engines": { + "node": ">=18" + } }, "node_modules/@waku/message-encryption": { "resolved": "packages/message-encryption", @@ -5323,8 +5348,24 @@ "link": true }, "node_modules/@waku/peer-exchange": { - "resolved": "packages/peer-exchange", - "link": true + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@waku/peer-exchange/-/peer-exchange-0.0.20.tgz", + "integrity": "sha512-Tbdw80VAk4Or6sKUX4LPCkuDo4zYB1/6hOLOMbSo1ck7w8ADNkcByyD5W/wVCmE4wM8Yen2Awb/auIsqunM8LQ==", + "dependencies": { + "@libp2p/interfaces": "^3.3.2", + "@waku/core": "0.0.27", + "@waku/enr": "0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15", + "debug": "^4.3.4", + "it-all": "^3.0.4", + "it-length-prefixed": "^9.0.4", + "it-pipe": "^3.0.1" + }, + "engines": { + "node": ">=18" + } }, "node_modules/@waku/proto": { "resolved": "packages/proto", @@ -8167,6 +8208,7 @@ "node": ">= 0.10" } }, +<<<<<<< HEAD "node_modules/cosmiconfig": { "version": "8.0.0", "dev": true, @@ -8181,6 +8223,8 @@ "node": ">=14" } }, +======= +>>>>>>> 5296bfbad8d98d2ee40e6570a6ad4546c86b9fcf "node_modules/cpu-features": { "version": "0.0.9", "hasInstallScript": true, @@ -27138,7 +27182,7 @@ "version": "0.1.0", "devDependencies": { "@playwright/test": "^1.40.1", - "@waku/create-app": "^0.1.1-7c24ffa", + "@waku/create-app": "^0.1.1-504bcd4", "dotenv-flow": "^4.1.0", "serve": "^14.2.1" } @@ -27193,17 +27237,79 @@ }, "peerDependencies": { "@multiformats/multiaddr": "^12.0.0", + "@waku/enr": "^0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/message-hash": "^0.1.11", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15", "libp2p": "^1.1.2" }, "peerDependenciesMeta": { "@multiformats/multiaddr": { "optional": true + }, + "@waku/interfaces": { + "optional": true + } + } + }, + "packages/discovery": { + "name": "@waku/discovery", + "version": "0.0.1", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@waku/enr": "0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/proto": "^0.0.6", + "@waku/utils": "0.0.15", + "debug": "^4.3.4", + "dns-query": "^0.11.2", + "hi-base32": "^0.5.1", + "uint8arrays": "^5.0.1" + }, + "devDependencies": { + "@libp2p/peer-id": "^4.0.4", + "@libp2p/peer-id-factory": "^4.0.5", + "@multiformats/multiaddr": "^12.0.0", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@types/chai": "^4.3.11", + "@types/node-localstorage": "^1.3.3", + "@waku/build-utils": "*", + "chai": "^4.3.10", + "chai-as-promised": "^7.1.1", + "cspell": "^8.3.2", + "mocha": "^10.3.0", + "node-localstorage": "^3.0.5", + "npm-run-all": "^4.1.5", + "rollup": "^4.12.0", + "sinon": "^17.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@libp2p/interface": "^1.1.2", + "@waku/core": "0.0.27", + "@waku/enr": "0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@libp2p/interface": { + "optional": true + }, + "@waku/interfaces": { + "optional": true } } }, "packages/dns-discovery": { "name": "@waku/dns-discovery", - "version": "0.0.21", + "version": "0.0.20", + "extraneous": true, "license": "MIT OR Apache-2.0", "dependencies": { "@waku/enr": "0.0.21", @@ -27231,6 +27337,16 @@ }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@waku/enr": "0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + } } }, "packages/enr": { @@ -27267,6 +27383,19 @@ }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@multiformats/multiaddr": "^12.0.0", + "@waku/interfaces": "0.0.22", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@multiformats/multiaddr": { + "optional": true + }, + "@waku/interfaces": { + "optional": true + } } }, "packages/interfaces": { @@ -27286,7 +27415,8 @@ }, "packages/local-peer-cache-discovery": { "name": "@waku/local-peer-cache-discovery", - "version": "1.0.0", + "version": "0.0.1", + "extraneous": true, "license": "MIT OR Apache-2.0", "dependencies": { "@libp2p/interface": "^1.1.2", @@ -27311,6 +27441,7 @@ }, "engines": { "node": ">=18" +<<<<<<< HEAD } }, "packages/local-peer-cache-discovery/node_modules/@cspell/cspell-bundled-dicts": { @@ -27698,6 +27829,21 @@ }, "funding": { "url": "https://github.com/sponsors/sindresorhus" +======= + }, + "peerDependencies": { + "@libp2p/interface": "^1.1.2", + "@waku/interfaces": "0.0.22", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@libp2p/interface": { + "optional": true + }, + "@waku/interfaces": { + "optional": true + } +>>>>>>> 5296bfbad8d98d2ee40e6570a6ad4546c86b9fcf } }, "packages/message-encryption": { @@ -27731,6 +27877,17 @@ }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@waku/core": "0.0.27", + "@waku/interfaces": "0.0.22", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + } } }, "packages/message-hash": { @@ -27762,11 +27919,21 @@ }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@waku/interfaces": "0.0.22", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + } } }, "packages/peer-exchange": { "name": "@waku/peer-exchange", - "version": "0.0.20", + "version": "0.0.19", + "extraneous": true, "license": "MIT OR Apache-2.0", "dependencies": { "@libp2p/interfaces": "^3.3.2", @@ -27793,6 +27960,18 @@ }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@waku/core": "0.0.27", + "@waku/enr": "0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + } } }, "packages/proto": { @@ -27841,6 +28020,21 @@ }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@chainsafe/libp2p-gossipsub": "^12.0.0", + "@waku/core": "0.0.27", + "@waku/interfaces": "0.0.22", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@chainsafe/libp2p-gossipsub": { + "optional": true + }, + "@waku/interfaces": { + "optional": true + } } }, "packages/rln": { @@ -29463,6 +29657,7 @@ "@libp2p/ping": "^1.0.12", "@libp2p/websockets": "^8.0.11", "@waku/core": "0.0.27", + "@waku/discovery": "0.0.1", "@waku/dns-discovery": "0.0.21", "@waku/interfaces": "0.0.22", "@waku/local-peer-cache-discovery": "^1.0.0", @@ -29486,7 +29681,22 @@ "node": ">=18" }, "peerDependencies": { - "@libp2p/bootstrap": "^10" + "@libp2p/bootstrap": "^10", + "@waku/core": "0.0.27", + "@waku/dns-discovery": "0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/local-peer-cache-discovery": "^1.0.0", + "@waku/peer-exchange": "^0.0.20", + "@waku/relay": "0.0.10", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@libp2p/bootstrap": { + "optional": true + }, + "@waku/interfaces": { + "optional": true + } } }, "packages/tests": { @@ -29518,9 +29728,8 @@ "@types/mocha": "^10.0.6", "@types/sinon": "^17.0.3", "@types/tail": "^2.2.3", - "@waku/dns-discovery": "*", + "@waku/discovery": "*", "@waku/message-encryption": "*", - "@waku/peer-exchange": "*", "@waku/sdk": "*", "allure-commandline": "^2.27.0", "allure-mocha": "^2.9.2", @@ -29561,6 +29770,14 @@ }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@waku/interfaces": "0.0.22" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + } } } }, @@ -31377,7 +31594,9 @@ } }, "@libp2p/interfaces": { - "version": "3.3.2" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@libp2p/interfaces/-/interfaces-3.3.2.tgz", + "integrity": "sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g==" }, "@libp2p/logger": { "version": "4.0.6", @@ -32842,7 +33061,7 @@ "version": "file:packages/browser-tests", "requires": { "@playwright/test": "^1.40.1", - "@waku/create-app": "^0.1.1-7c24ffa", + "@waku/create-app": "^0.1.1-504bcd4", "dotenv-flow": "^4.1.0", "serve": "^14.2.1" } @@ -32888,7 +33107,9 @@ } }, "@waku/create-app": { - "version": "0.1.1-7c24ffa", + "version": "0.1.1-504bcd4", + "resolved": "https://registry.npmjs.org/@waku/create-app/-/create-app-0.1.1-504bcd4.tgz", + "integrity": "sha512-rTGTHLEtEgdmxBTU9ZduEWcZgZG7JsQqIxjHhn3rQNmtggeXjZ5xWo/FAKYcx3Bc1B9igQVUMS/v8NvAGuDd4A==", "dev": true, "requires": { "commander": "^9.4.1", @@ -32925,8 +33146,8 @@ } } }, - "@waku/dns-discovery": { - "version": "file:packages/dns-discovery", + "@waku/discovery": { + "version": "file:packages/discovery", "requires": { "@libp2p/peer-id": "^4.0.4", "@libp2p/peer-id-factory": "^4.0.5", @@ -32935,18 +33156,36 @@ "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.11", + "@types/node-localstorage": "^1.3.3", "@waku/build-utils": "*", "@waku/enr": "0.0.21", "@waku/interfaces": "0.0.22", + "@waku/proto": "^0.0.6", "@waku/utils": "0.0.15", "chai": "^4.3.10", + "chai-as-promised": "^7.1.1", "cspell": "^8.3.2", "debug": "^4.3.4", "dns-query": "^0.11.2", "hi-base32": "^0.5.1", "mocha": "^10.3.0", + "node-localstorage": "^3.0.5", "npm-run-all": "^4.1.5", "rollup": "^4.12.0", + "sinon": "^17.0.1", + "uint8arrays": "^5.0.1" + } + }, + "@waku/dns-discovery": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@waku/dns-discovery/-/dns-discovery-0.0.21.tgz", + "integrity": "sha512-l6TVLNiP9HjVrSCWRVP4pKGAADkPzMY2+/tFxnLI1lx3NWmBrkwsEsZHKlfGpdDTT3130nxXkvENcswqWLsc1w==", + "requires": { + "@waku/enr": "0.0.21", + "@waku/utils": "0.0.15", + "debug": "^4.3.4", + "dns-query": "^0.11.2", + "hi-base32": "^0.5.1", "uint8arrays": "^5.0.1" } }, @@ -32990,16 +33229,13 @@ } }, "@waku/local-peer-cache-discovery": { - "version": "file:packages/local-peer-cache-discovery", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@waku/local-peer-cache-discovery/-/local-peer-cache-discovery-1.0.0.tgz", + "integrity": "sha512-He3xudQF8cMbQUU2q9nUlinSW8FSwKX51DLwhPhblVVwhrfdmjvfhjCaMaq2YDoA+y88CIqQG0bLxxl5QADpWQ==", "requires": { "@libp2p/interface": "^1.1.2", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@types/chai": "^4.3.11", - "@types/node-localstorage": "^1.3.3", - "@waku/build-utils": "*", "@waku/interfaces": "^0.0.22", +<<<<<<< HEAD "@waku/utils": "^0.0.15", "chai": "^4.3.10", "chai-as-promised": "^7.1.1", @@ -33273,6 +33509,9 @@ "version": "1.0.0", "dev": true } +======= + "@waku/utils": "^0.0.15" +>>>>>>> 5296bfbad8d98d2ee40e6570a6ad4546c86b9fcf } }, "@waku/message-encryption": { @@ -33326,27 +33565,20 @@ } }, "@waku/peer-exchange": { - "version": "file:packages/peer-exchange", + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@waku/peer-exchange/-/peer-exchange-0.0.20.tgz", + "integrity": "sha512-Tbdw80VAk4Or6sKUX4LPCkuDo4zYB1/6hOLOMbSo1ck7w8ADNkcByyD5W/wVCmE4wM8Yen2Awb/auIsqunM8LQ==", "requires": { "@libp2p/interfaces": "^3.3.2", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@waku/build-utils": "*", "@waku/core": "0.0.27", "@waku/enr": "0.0.21", "@waku/interfaces": "0.0.22", "@waku/proto": "0.0.6", "@waku/utils": "0.0.15", - "chai": "^4.3.10", - "cspell": "^8.3.2", "debug": "^4.3.4", "it-all": "^3.0.4", "it-length-prefixed": "^9.0.4", - "it-pipe": "^3.0.1", - "npm-run-all": "^4.1.5", - "rollup": "^4.12.0", - "uint8arraylist": "^2.4.3" + "it-pipe": "^3.0.1" } }, "@waku/proto": { @@ -34665,6 +34897,7 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@waku/build-utils": "*", "@waku/core": "0.0.27", + "@waku/discovery": "0.0.1", "@waku/dns-discovery": "0.0.21", "@waku/interfaces": "0.0.22", "@waku/local-peer-cache-discovery": "^1.0.0", @@ -34690,11 +34923,10 @@ "@types/sinon": "^17.0.3", "@types/tail": "^2.2.3", "@waku/core": "*", - "@waku/dns-discovery": "*", + "@waku/discovery": "*", "@waku/enr": "*", "@waku/interfaces": "*", "@waku/message-encryption": "*", - "@waku/peer-exchange": "*", "@waku/sdk": "*", "@waku/utils": "*", "allure-commandline": "^2.27.0", @@ -36455,6 +36687,7 @@ "vary": "^1" } }, +<<<<<<< HEAD "cosmiconfig": { "version": "8.0.0", "dev": true, @@ -36465,6 +36698,8 @@ "path-type": "^4.0.0" } }, +======= +>>>>>>> 5296bfbad8d98d2ee40e6570a6ad4546c86b9fcf "cpu-features": { "version": "0.0.9", "optional": true, diff --git a/package.json b/package.json index 872bb784de..cfb4860935 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,7 @@ "packages/enr", "packages/core", "packages/relay", - "packages/peer-exchange", - "packages/dns-discovery", - "packages/local-peer-cache-discovery", + "packages/discovery", "packages/message-encryption", "packages/rln", "packages/sdk", diff --git a/packages/browser-tests/package.json b/packages/browser-tests/package.json index 6501b603a1..2fa42606f8 100644 --- a/packages/browser-tests/package.json +++ b/packages/browser-tests/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@playwright/test": "^1.40.1", - "@waku/create-app": "^0.1.1-7c24ffa", + "@waku/create-app": "^0.1.1-504bcd4", "dotenv-flow": "^4.1.0", "serve": "^14.2.1" } diff --git a/packages/core/package.json b/packages/core/package.json index 0f52b039de..a00fbd1103 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -109,11 +109,19 @@ }, "peerDependencies": { "@multiformats/multiaddr": "^12.0.0", - "libp2p": "^1.1.2" + "libp2p": "^1.1.2", + "@waku/enr": "^0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/message-hash": "^0.1.11", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15" }, "peerDependenciesMeta": { "@multiformats/multiaddr": { "optional": true + }, + "@waku/interfaces": { + "optional": true } }, "files": [ diff --git a/packages/core/src/lib/light_push/index.ts b/packages/core/src/lib/light_push/index.ts index 5c34160889..3e5dcd6be0 100644 --- a/packages/core/src/lib/light_push/index.ts +++ b/packages/core/src/lib/light_push/index.ts @@ -6,7 +6,7 @@ import { IMessage, Libp2p, ProtocolCreateOptions, - SendError + ProtocolError } from "@waku/interfaces"; import { PushResponse } from "@waku/proto"; import { isMessageSizeUnderCap } from "@waku/utils"; @@ -32,7 +32,7 @@ type PreparePushMessageResult = } | { query: null; - error: SendError; + error: ProtocolError; }; type CoreSendResult = @@ -66,12 +66,12 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { try { if (!message.payload || message.payload.length === 0) { log.error("Failed to send waku light push: payload is empty"); - return { query: null, error: SendError.EMPTY_PAYLOAD }; + return { query: null, error: ProtocolError.EMPTY_PAYLOAD }; } if (!(await isMessageSizeUnderCap(encoder, message))) { log.error("Failed to send waku light push: message is bigger than 1MB"); - return { query: null, error: SendError.SIZE_TOO_BIG }; + return { query: null, error: ProtocolError.SIZE_TOO_BIG }; } const protoMessage = await encoder.toProtoObj(message); @@ -79,7 +79,7 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { log.error("Failed to encode to protoMessage, aborting push"); return { query: null, - error: SendError.ENCODE_FAILED + error: ProtocolError.ENCODE_FAILED }; } @@ -90,7 +90,7 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { return { query: null, - error: SendError.GENERIC_FAIL + error: ProtocolError.GENERIC_FAIL }; } } @@ -126,7 +126,7 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { return { success: null, failure: { - error: SendError.REMOTE_PEER_FAULT, + error: ProtocolError.REMOTE_PEER_FAULT, peerId: peer.id } }; @@ -146,7 +146,7 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { return { success: null, failure: { - error: SendError.GENERIC_FAIL, + error: ProtocolError.GENERIC_FAIL, peerId: peer.id } }; @@ -165,7 +165,7 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { return { success: null, failure: { - error: SendError.DECODE_FAILED, + error: ProtocolError.DECODE_FAILED, peerId: peer.id } }; @@ -176,7 +176,7 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { return { success: null, failure: { - error: SendError.REMOTE_PEER_FAULT, + error: ProtocolError.REMOTE_PEER_FAULT, peerId: peer.id } }; @@ -187,7 +187,7 @@ export class LightPushCore extends BaseProtocol implements IBaseProtocolCore { return { success: null, failure: { - error: SendError.REMOTE_PEER_REJECTED, + error: ProtocolError.REMOTE_PEER_REJECTED, peerId: peer.id } }; diff --git a/packages/core/src/lib/metadata/index.ts b/packages/core/src/lib/metadata/index.ts index 0860294197..4fed198168 100644 --- a/packages/core/src/lib/metadata/index.ts +++ b/packages/core/src/lib/metadata/index.ts @@ -1,10 +1,12 @@ import type { PeerId } from "@libp2p/interface"; import { IncomingStreamData } from "@libp2p/interface"; -import type { - IMetadata, - Libp2pComponents, - PeerIdStr, - ShardInfo +import { + type IMetadata, + type Libp2pComponents, + type PeerIdStr, + ProtocolError, + QueryResult, + type ShardInfo } from "@waku/interfaces"; import { proto_metadata } from "@waku/proto"; import { encodeRelayShard, Logger, shardInfoToPubsubTopics } from "@waku/utils"; @@ -21,7 +23,7 @@ export const MetadataCodec = "/vac/waku/metadata/1.0.0"; class Metadata extends BaseProtocol implements IMetadata { private libp2pComponents: Libp2pComponents; - handshakesConfirmed: Set = new Set(); + handshakesConfirmed: Map = new Map(); constructor( public shardInfo: ShardInfo, @@ -57,13 +59,13 @@ class Metadata extends BaseProtocol implements IMetadata { async (source) => await all(source) ); - const remoteShardInfoResponse = - this.decodeMetadataResponse(encodedResponse); + const { error, shardInfo } = this.decodeMetadataResponse(encodedResponse); - await this.savePeerShardInfo( - connection.remotePeer, - remoteShardInfoResponse - ); + if (error) { + return; + } + + await this.savePeerShardInfo(connection.remotePeer, shardInfo); } catch (error) { log.error("Error handling metadata request", error); } @@ -72,12 +74,15 @@ class Metadata extends BaseProtocol implements IMetadata { /** * Make a metadata query to a peer */ - async query(peerId: PeerId): Promise { + async query(peerId: PeerId): Promise { const request = proto_metadata.WakuMetadataRequest.encode(this.shardInfo); const peer = await this.peerStore.get(peerId); if (!peer) { - throw new Error(`Peer ${peerId.toString()} not found`); + return { + shardInfo: null, + error: ProtocolError.NO_PEER_AVAILABLE + }; } const stream = await this.getStream(peer); @@ -90,22 +95,38 @@ class Metadata extends BaseProtocol implements IMetadata { async (source) => await all(source) ); - const decodedResponse = this.decodeMetadataResponse(encodedResponse); + const { error, shardInfo } = this.decodeMetadataResponse(encodedResponse); - await this.savePeerShardInfo(peerId, decodedResponse); + if (error) { + return { + shardInfo: null, + error + }; + } - return decodedResponse; + await this.savePeerShardInfo(peerId, shardInfo); + + return { + shardInfo, + error: null + }; } - public async confirmOrAttemptHandshake(peerId: PeerId): Promise { - if (this.handshakesConfirmed.has(peerId.toString())) return; + public async confirmOrAttemptHandshake(peerId: PeerId): Promise { + const shardInfo = this.handshakesConfirmed.get(peerId.toString()); + if (shardInfo) { + return { + shardInfo, + error: null + }; + } - await this.query(peerId); - - return; + return await this.query(peerId); } - private decodeMetadataResponse(encodedResponse: Uint8ArrayList[]): ShardInfo { + private decodeMetadataResponse( + encodedResponse: Uint8ArrayList[] + ): QueryResult { const bytes = new Uint8ArrayList(); encodedResponse.forEach((chunk) => { @@ -115,9 +136,18 @@ class Metadata extends BaseProtocol implements IMetadata { bytes ) as ShardInfo; - if (!response) log.error("Error decoding metadata response"); + if (!response) { + log.error("Error decoding metadata response"); + return { + shardInfo: null, + error: ProtocolError.DECODE_FAILED + }; + } - return response; + return { + shardInfo: response, + error: null + }; } private async savePeerShardInfo( @@ -131,7 +161,7 @@ class Metadata extends BaseProtocol implements IMetadata { } }); - this.handshakesConfirmed.add(peerId.toString()); + this.handshakesConfirmed.set(peerId.toString(), shardInfo); } } diff --git a/packages/dns-discovery/.eslintrc.cjs b/packages/discovery/.eslintrc.cjs similarity index 100% rename from packages/dns-discovery/.eslintrc.cjs rename to packages/discovery/.eslintrc.cjs diff --git a/packages/dns-discovery/.mocha.reporters.json b/packages/discovery/.mocha.reporters.json similarity index 100% rename from packages/dns-discovery/.mocha.reporters.json rename to packages/discovery/.mocha.reporters.json diff --git a/packages/dns-discovery/.mocharc.cjs b/packages/discovery/.mocharc.cjs similarity index 100% rename from packages/dns-discovery/.mocharc.cjs rename to packages/discovery/.mocharc.cjs diff --git a/packages/dns-discovery/karma.conf.cjs b/packages/discovery/karma.conf.cjs similarity index 100% rename from packages/dns-discovery/karma.conf.cjs rename to packages/discovery/karma.conf.cjs diff --git a/packages/dns-discovery/package.json b/packages/discovery/package.json similarity index 74% rename from packages/dns-discovery/package.json rename to packages/discovery/package.json index e0f7aee34f..a2b7d2b44e 100644 --- a/packages/dns-discovery/package.json +++ b/packages/discovery/package.json @@ -1,7 +1,7 @@ { - "name": "@waku/dns-discovery", - "version": "0.0.21", - "description": "DNS Peer Discovery (EIP-1459)", + "name": "@waku/discovery", + "version": "0.0.1", + "description": "Contains various discovery mechanisms: DNS Discovery (EIP-1459, Peer Exchange, Local Peer Cache Discovery.", "types": "./dist/index.d.ts", "module": "./dist/index.js", "exports": { @@ -12,7 +12,7 @@ }, "type": "module", "author": "Waku Team", - "homepage": "https://github.com/waku-org/js-waku/tree/master/packages/dns-discovery#readme", + "homepage": "https://github.com/waku-org/js-waku/tree/master/packages/discovery#readme", "repository": { "type": "git", "url": "https://github.com/waku-org/js-waku.git" @@ -51,6 +51,8 @@ "node": ">=18" }, "dependencies": { + "@waku/interfaces": "0.0.22", + "@waku/proto": "^0.0.6", "@waku/enr": "0.0.21", "@waku/utils": "0.0.15", "debug": "^4.3.4", @@ -66,13 +68,32 @@ "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.11", + "@types/node-localstorage": "^1.3.3", "@waku/build-utils": "*", - "@waku/interfaces": "0.0.22", "chai": "^4.3.10", + "chai-as-promised": "^7.1.1", "cspell": "^8.3.2", "mocha": "^10.3.0", + "node-localstorage": "^3.0.5", "npm-run-all": "^4.1.5", - "rollup": "^4.12.0" + "rollup": "^4.12.0", + "sinon": "^17.0.1" + }, + "peerDependencies": { + "@waku/core": "0.0.27", + "@waku/enr": "0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15", + "@libp2p/interface": "^1.1.2" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + }, + "@libp2p/interface": { + "optional": true + } }, "files": [ "dist", diff --git a/packages/dns-discovery/rollup.config.js b/packages/discovery/rollup.config.js similarity index 100% rename from packages/dns-discovery/rollup.config.js rename to packages/discovery/rollup.config.js diff --git a/packages/dns-discovery/src/constants.ts b/packages/discovery/src/dns/constants.ts similarity index 100% rename from packages/dns-discovery/src/constants.ts rename to packages/discovery/src/dns/constants.ts diff --git a/packages/dns-discovery/src/dns.spec.ts b/packages/discovery/src/dns/dns.spec.ts similarity index 100% rename from packages/dns-discovery/src/dns.spec.ts rename to packages/discovery/src/dns/dns.spec.ts diff --git a/packages/dns-discovery/src/dns.ts b/packages/discovery/src/dns/dns.ts similarity index 100% rename from packages/dns-discovery/src/dns.ts rename to packages/discovery/src/dns/dns.ts diff --git a/packages/dns-discovery/src/dns_discovery.ts b/packages/discovery/src/dns/dns_discovery.ts similarity index 100% rename from packages/dns-discovery/src/dns_discovery.ts rename to packages/discovery/src/dns/dns_discovery.ts diff --git a/packages/dns-discovery/src/dns_over_https.ts b/packages/discovery/src/dns/dns_over_https.ts similarity index 100% rename from packages/dns-discovery/src/dns_over_https.ts rename to packages/discovery/src/dns/dns_over_https.ts diff --git a/packages/dns-discovery/src/enrtree.spec.ts b/packages/discovery/src/dns/enrtree.spec.ts similarity index 100% rename from packages/dns-discovery/src/enrtree.spec.ts rename to packages/discovery/src/dns/enrtree.spec.ts diff --git a/packages/dns-discovery/src/enrtree.ts b/packages/discovery/src/dns/enrtree.ts similarity index 100% rename from packages/dns-discovery/src/enrtree.ts rename to packages/discovery/src/dns/enrtree.ts diff --git a/packages/dns-discovery/src/fetch_nodes.spec.ts b/packages/discovery/src/dns/fetch_nodes.spec.ts similarity index 100% rename from packages/dns-discovery/src/fetch_nodes.spec.ts rename to packages/discovery/src/dns/fetch_nodes.spec.ts diff --git a/packages/dns-discovery/src/fetch_nodes.ts b/packages/discovery/src/dns/fetch_nodes.ts similarity index 100% rename from packages/dns-discovery/src/fetch_nodes.ts rename to packages/discovery/src/dns/fetch_nodes.ts diff --git a/packages/dns-discovery/src/index.spec.ts b/packages/discovery/src/dns/index.spec.ts similarity index 100% rename from packages/dns-discovery/src/index.spec.ts rename to packages/discovery/src/dns/index.spec.ts diff --git a/packages/dns-discovery/src/index.ts b/packages/discovery/src/dns/index.ts similarity index 100% rename from packages/dns-discovery/src/index.ts rename to packages/discovery/src/dns/index.ts diff --git a/packages/dns-discovery/src/testdata.json b/packages/discovery/src/dns/testdata.json similarity index 100% rename from packages/dns-discovery/src/testdata.json rename to packages/discovery/src/dns/testdata.json diff --git a/packages/discovery/src/index.ts b/packages/discovery/src/index.ts new file mode 100644 index 0000000000..eb9ba8ea2c --- /dev/null +++ b/packages/discovery/src/index.ts @@ -0,0 +1,21 @@ +// DNS Discovery +export { PeerDiscoveryDns, wakuDnsDiscovery } from "./dns/dns_discovery.js"; +export { enrTree } from "./dns/constants.js"; +export { DnsNodeDiscovery } from "./dns/dns.js"; + +// Peer Exchange Discovery +export { + wakuPeerExchange, + PeerExchangeCodec, + WakuPeerExchange +} from "./peer-exchange/waku_peer_exchange.js"; +export { + wakuPeerExchangeDiscovery, + PeerExchangeDiscovery +} from "./peer-exchange/waku_peer_exchange_discovery.js"; + +// Local Peer Cache Discovery +export { + LocalPeerCacheDiscovery, + wakuLocalPeerCacheDiscovery +} from "./local-peer-cache/index.js"; diff --git a/packages/local-peer-cache-discovery/src/local_discovery.spec.ts b/packages/discovery/src/local-peer-cache/index.spec.ts similarity index 93% rename from packages/local-peer-cache-discovery/src/local_discovery.spec.ts rename to packages/discovery/src/local-peer-cache/index.spec.ts index a180fa117f..28cb0677d5 100644 --- a/packages/local-peer-cache-discovery/src/local_discovery.spec.ts +++ b/packages/discovery/src/local-peer-cache/index.spec.ts @@ -11,14 +11,21 @@ import { LocalStoragePeerInfo } from "@waku/interfaces"; import chai, { expect } from "chai"; import chaiAsPromised from "chai-as-promised"; import { MemoryDatastore } from "datastore-core/memory"; -import { LocalStorage } from "node-localstorage"; import sinon from "sinon"; import { LocalPeerCacheDiscovery } from "./index.js"; chai.use(chaiAsPromised); -global.localStorage = new LocalStorage("./mock_local_storage"); +// dynamically importing the local storage polyfill for node +if (typeof window === "undefined") { + try { + const { LocalStorage } = await import("node-localstorage"); + global.localStorage = new LocalStorage("./scratch"); + } catch (error) { + console.error("Failed to load localStorage polyfill:", error); + } +} const mockPeers = [ { diff --git a/packages/local-peer-cache-discovery/src/index.ts b/packages/discovery/src/local-peer-cache/index.ts similarity index 100% rename from packages/local-peer-cache-discovery/src/index.ts rename to packages/discovery/src/local-peer-cache/index.ts diff --git a/packages/peer-exchange/src/index.ts b/packages/discovery/src/peer-exchange/index.ts similarity index 100% rename from packages/peer-exchange/src/index.ts rename to packages/discovery/src/peer-exchange/index.ts diff --git a/packages/peer-exchange/src/rpc.ts b/packages/discovery/src/peer-exchange/rpc.ts similarity index 100% rename from packages/peer-exchange/src/rpc.ts rename to packages/discovery/src/peer-exchange/rpc.ts diff --git a/packages/peer-exchange/src/waku_peer_exchange.ts b/packages/discovery/src/peer-exchange/waku_peer_exchange.ts similarity index 100% rename from packages/peer-exchange/src/waku_peer_exchange.ts rename to packages/discovery/src/peer-exchange/waku_peer_exchange.ts diff --git a/packages/peer-exchange/src/waku_peer_exchange_discovery.ts b/packages/discovery/src/peer-exchange/waku_peer_exchange_discovery.ts similarity index 100% rename from packages/peer-exchange/src/waku_peer_exchange_discovery.ts rename to packages/discovery/src/peer-exchange/waku_peer_exchange_discovery.ts diff --git a/packages/dns-discovery/tsconfig.dev.json b/packages/discovery/tsconfig.dev.json similarity index 100% rename from packages/dns-discovery/tsconfig.dev.json rename to packages/discovery/tsconfig.dev.json diff --git a/packages/local-peer-cache-discovery/tsconfig.json b/packages/discovery/tsconfig.json similarity index 76% rename from packages/local-peer-cache-discovery/tsconfig.json rename to packages/discovery/tsconfig.json index eebbc51585..92e40cddaf 100644 --- a/packages/local-peer-cache-discovery/tsconfig.json +++ b/packages/discovery/tsconfig.json @@ -6,5 +6,5 @@ "tsBuildInfoFile": "dist/.tsbuildinfo" }, "include": ["src"], - "exclude": ["src/**/*.spec.ts", "src/test_utils"] + "exclude": ["src/**/*.spec.ts"] } diff --git a/packages/dns-discovery/tsconfig.karma.json b/packages/discovery/tsconfig.karma.json similarity index 100% rename from packages/dns-discovery/tsconfig.karma.json rename to packages/discovery/tsconfig.karma.json diff --git a/packages/dns-discovery/CHANGELOG.md b/packages/dns-discovery/CHANGELOG.md deleted file mode 100644 index 7264a8c5a6..0000000000 --- a/packages/dns-discovery/CHANGELOG.md +++ /dev/null @@ -1,305 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The file is maintained by [Release Please](https://github.com/googleapis/release-please) based on [Conventional Commits](https://www.conventionalcommits.org) specification, -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.6 to 0.0.7 - * devDependencies - * @waku/interfaces bumped from 0.0.8 to 0.0.9 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.7 to 0.0.8 - * @waku/utils bumped from 0.0.2 to 0.0.3 - * devDependencies - * @waku/interfaces bumped from 0.0.9 to 0.0.10 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.8 to 0.0.9 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.10 to 0.0.11 - * @waku/utils bumped from 0.0.4 to 0.0.5 - * devDependencies - * @waku/interfaces bumped from 0.0.11 to 0.0.12 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.12 to 0.0.13 - * @waku/utils bumped from 0.0.6 to 0.0.7 - * devDependencies - * @waku/interfaces bumped from 0.0.13 to 0.0.14 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.19 to 0.0.20 - * @waku/utils bumped from 0.0.13 to 0.0.14 - * devDependencies - * @waku/interfaces bumped from 0.0.20 to 0.0.21 - -## [0.0.21](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.20...dns-discovery-v0.0.21) (2024-03-04) - - -### ⚠ BREAKING CHANGES - -* protocols filter peers as per configured shard ([#1756](https://github.com/waku-org/js-waku/issues/1756)) - -### Features - -* Protocols filter peers as per configured shard ([#1756](https://github.com/waku-org/js-waku/issues/1756)) ([477c2a5](https://github.com/waku-org/js-waku/commit/477c2a5918f2f75cd2c14bc6ed75e1687c5a09b4)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.20 to 0.0.21 - * @waku/utils bumped from 0.0.14 to 0.0.15 - * devDependencies - * @waku/interfaces bumped from 0.0.21 to 0.0.22 - -## [0.0.19](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.18...dns-discovery-v0.0.19) (2023-11-01) - - -### Features - -* Logger with log levels ([#1672](https://github.com/waku-org/js-waku/issues/1672)) ([0f7d63e](https://github.com/waku-org/js-waku/commit/0f7d63ef93716223dc8fea7e8cb09e12e267b386)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.18 to 0.0.19 - * @waku/utils bumped from 0.0.12 to 0.0.13 - * devDependencies - * @waku/interfaces bumped from 0.0.19 to 0.0.20 - -## [0.0.18](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.17...dns-discovery-v0.0.18) (2023-10-16) - - -### Features - -* Add Firefox and Webkit to karma ([#1598](https://github.com/waku-org/js-waku/issues/1598)) ([d9e4bcb](https://github.com/waku-org/js-waku/commit/d9e4bcbe3f7bcc092f20621bd362d76426701dab)) -* **static-sharding:** Filter peer connections per shards ([#1626](https://github.com/waku-org/js-waku/issues/1626)) ([124a29e](https://github.com/waku-org/js-waku/commit/124a29ebba59c05fbbf199d969e6ba3f9e57d45b)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.17 to 0.0.18 - * @waku/utils bumped from 0.0.11 to 0.0.12 - * devDependencies - * @waku/interfaces bumped from 0.0.18 to 0.0.19 - -## [0.0.17](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.16...dns-discovery-v0.0.17) (2023-09-11) - - -### ⚠ BREAKING CHANGES - -* upgrade to libp2p@0.45 ([#1400](https://github.com/waku-org/js-waku/issues/1400)) -* @waku/relay ([#1316](https://github.com/waku-org/js-waku/issues/1316)) - -### Features - -* @waku/relay ([#1316](https://github.com/waku-org/js-waku/issues/1316)) ([50c2c25](https://github.com/waku-org/js-waku/commit/50c2c2540f3c5ff78d93f3fea646da0eee246e17)) -* Allow passing of multiple ENR URLs to DNS Discovery & dial multiple peers in parallel ([#1379](https://github.com/waku-org/js-waku/issues/1379)) ([f32d7d9](https://github.com/waku-org/js-waku/commit/f32d7d9fe0b930b4fa9c46b8644e6d21be45d5c1)) -* **dns-discovery:** Set default for `NodeRequirements` ([#1466](https://github.com/waku-org/js-waku/issues/1466)) ([aab9c08](https://github.com/waku-org/js-waku/commit/aab9c08caefb9f72460261ec0c38df88ae0f02ce)) -* Upgrade to libp2p@0.45 ([#1400](https://github.com/waku-org/js-waku/issues/1400)) ([420e6c6](https://github.com/waku-org/js-waku/commit/420e6c698dd8f44d40d34e47d876da5d2e1ce85e)) - - -### Bug Fixes - -* **dns-discovery:** Use DOH list from dns-query ([1dd3210](https://github.com/waku-org/js-waku/commit/1dd32101baf2750527369f7f25981882aa1f9527)) -* Improve connection manager error handling + edge cases ([#1450](https://github.com/waku-org/js-waku/issues/1450)) ([785df52](https://github.com/waku-org/js-waku/commit/785df528fe6e5010a61391994e222028dbc4e4c5)) -* Remove typesVersions ([#1359](https://github.com/waku-org/js-waku/issues/1359)) ([0ad1954](https://github.com/waku-org/js-waku/commit/0ad19540d527309e0174afa7e9fff2924570d361)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.16 to 0.0.17 - * @waku/utils bumped from 0.0.10 to 0.0.11 - * devDependencies - * @waku/interfaces bumped from 0.0.17 to 0.0.18 - -## [0.0.16](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.15...dns-discovery-v0.0.16) (2023-08-02) - - -### Bug Fixes - -* Improve connection manager error handling + edge cases ([#1450](https://github.com/waku-org/js-waku/issues/1450)) ([785df52](https://github.com/waku-org/js-waku/commit/785df528fe6e5010a61391994e222028dbc4e4c5)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.15 to 0.0.16 - * @waku/utils bumped from 0.0.9 to 0.0.10 - * devDependencies - * @waku/interfaces bumped from 0.0.16 to 0.0.17 - -## [0.0.15](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.14...dns-discovery-v0.0.15) (2023-07-26) - - -### ⚠ BREAKING CHANGES - -* upgrade to libp2p@0.45 ([#1400](https://github.com/waku-org/js-waku/issues/1400)) - -### Features - -* Upgrade to libp2p@0.45 ([#1400](https://github.com/waku-org/js-waku/issues/1400)) ([420e6c6](https://github.com/waku-org/js-waku/commit/420e6c698dd8f44d40d34e47d876da5d2e1ce85e)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.14 to 0.0.15 - * @waku/utils bumped from 0.0.8 to 0.0.9 - * devDependencies - * @waku/interfaces bumped from 0.0.15 to 0.0.16 - -## [0.0.14](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.13...dns-discovery-v0.0.14) (2023-06-08) - - -### Features - -* Allow passing of multiple ENR URLs to DNS Discovery & dial multiple peers in parallel ([#1379](https://github.com/waku-org/js-waku/issues/1379)) ([f32d7d9](https://github.com/waku-org/js-waku/commit/f32d7d9fe0b930b4fa9c46b8644e6d21be45d5c1)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.13 to 0.0.14 - * @waku/utils bumped from 0.0.7 to 0.0.8 - * devDependencies - * @waku/interfaces bumped from 0.0.14 to 0.0.15 - -## [0.0.12](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.11...dns-discovery-v0.0.12) (2023-05-18) - - -### ⚠ BREAKING CHANGES - -* @waku/relay ([#1316](https://github.com/waku-org/js-waku/issues/1316)) - -### Features - -* @waku/relay ([#1316](https://github.com/waku-org/js-waku/issues/1316)) ([50c2c25](https://github.com/waku-org/js-waku/commit/50c2c2540f3c5ff78d93f3fea646da0eee246e17)) - - -### Bug Fixes - -* Remove typesVersions ([#1359](https://github.com/waku-org/js-waku/issues/1359)) ([0ad1954](https://github.com/waku-org/js-waku/commit/0ad19540d527309e0174afa7e9fff2924570d361)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from * to 0.0.12 - * @waku/utils bumped from * to 0.0.6 - * devDependencies - * @waku/interfaces bumped from * to 0.0.13 - -## [0.0.10](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.9...dns-discovery-v0.0.10) (2023-04-03) - - -### Bug Fixes - -* **dns-discovery:** Use DOH list from dns-query ([1dd3210](https://github.com/waku-org/js-waku/commit/1dd32101baf2750527369f7f25981882aa1f9527)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.9 to 0.0.10 - * @waku/utils bumped from 0.0.3 to 0.0.4 - * devDependencies - * @waku/interfaces bumped from 0.0.10 to 0.0.11 - -## [0.0.6](https://github.com/waku-org/js-waku/compare/dns-discovery-v0.0.5...dns-discovery-v0.0.6) (2023-03-16) - - -### ⚠ BREAKING CHANGES - -* add exports map to @waku/utils ([#1201](https://github.com/waku-org/js-waku/issues/1201)) -* directly convert from ENR to `PeerInfo`, remove unneeded utility -* extract decoder code -* bump typescript -* bump libp2p dependencies - -### Features - -* Add mocha to dns-discovery ([#1154](https://github.com/waku-org/js-waku/issues/1154)) ([f945eb9](https://github.com/waku-org/js-waku/commit/f945eb90c49bb54322c4cb58c20cfdeee72ff4f2)) -* DNS discovery as default bootstrap discovery ([#1114](https://github.com/waku-org/js-waku/issues/1114)) ([11819fc](https://github.com/waku-org/js-waku/commit/11819fc7b14e18385d421facaf2af0832cad1da8)) - - -### Bug Fixes - -* **dns-discovery/peer-exchange:** Check if peer is already tagged ([952aadd](https://github.com/waku-org/js-waku/commit/952aadd7bbbe1a7265c5126c1678f552bef0648d)) -* Prettier and cspell ignore CHANGELOG ([#1235](https://github.com/waku-org/js-waku/issues/1235)) ([4d7b3e3](https://github.com/waku-org/js-waku/commit/4d7b3e39e6761afaf5d05a13cc4b3c23e15f9bd5)) - - -### Miscellaneous Chores - -* Add exports map to @waku/utils ([#1201](https://github.com/waku-org/js-waku/issues/1201)) ([a30b2bd](https://github.com/waku-org/js-waku/commit/a30b2bd747dedeef69b46cfafb88898ba35d8f67)) -* Bump libp2p dependencies ([803ae7b](https://github.com/waku-org/js-waku/commit/803ae7bd8ed3de665026446c23cde90e7eba9d36)) -* Bump typescript ([12d86e6](https://github.com/waku-org/js-waku/commit/12d86e6abcc68e27c39ca86b4f0dc2b68cdd6000)) -* Directly convert from ENR to `PeerInfo`, remove unneeded utility ([6dbcde0](https://github.com/waku-org/js-waku/commit/6dbcde041ab8fa8c2df75cc25319a0eccf6b0454)) -* Extract decoder code ([130c49b](https://github.com/waku-org/js-waku/commit/130c49b636807063364f309da0da2a24a68f2178)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from * to 0.0.6 - * @waku/utils bumped from * to 0.0.2 - * devDependencies - * @waku/interfaces bumped from * to 0.0.8 - -## [Unreleased] - -## [0.0.5] - 2023-01-25 - -### Changed - -- Replaced OpenDNS with AhaDNS in the default DoH DNS list. - -### Fixed - -- Moved `chai` to `devDependencies`. - -## [0.0.4] - 2023-01-18 - -### Changed - -- Improved test coverage, various fixes. - -[unreleased]: https://github.com/waku-org/js-waku/compare/@waku/dns-discovery@0.0.5...HEAD -[0.0.5]: https://github.com/status-im/js-waku/compare/@waku/dns-discovery@0.0.4...@waku/dns-discovery@0.0.5 -[0.0.4]: https://github.com/status-im/js-waku/compare/f7f28f03b01fa5bc89eaeb083b68981169b45c39...@waku/dns-discovery@0.0.4 diff --git a/packages/dns-discovery/tsconfig.json b/packages/dns-discovery/tsconfig.json deleted file mode 100644 index eebbc51585..0000000000 --- a/packages/dns-discovery/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig", - "compilerOptions": { - "outDir": "dist/", - "rootDir": "src", - "tsBuildInfoFile": "dist/.tsbuildinfo" - }, - "include": ["src"], - "exclude": ["src/**/*.spec.ts", "src/test_utils"] -} diff --git a/packages/dns-discovery/typedoc.json b/packages/dns-discovery/typedoc.json deleted file mode 100644 index 00aa3dc064..0000000000 --- a/packages/dns-discovery/typedoc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"] -} \ No newline at end of file diff --git a/packages/enr/package.json b/packages/enr/package.json index 77fcf5ff8f..27607c9010 100644 --- a/packages/enr/package.json +++ b/packages/enr/package.json @@ -78,6 +78,19 @@ "rollup": "^4.12.0", "uint8arrays": "^5.0.1" }, + "peerDependencies": { + "@waku/utils": "0.0.15", + "@waku/interfaces": "0.0.22", + "@multiformats/multiaddr": "^12.0.0" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + }, + "@multiformats/multiaddr": { + "optional": true + } + }, "files": [ "dist", "bundle", diff --git a/packages/interfaces/src/metadata.ts b/packages/interfaces/src/metadata.ts index a847fce52d..492d3b4168 100644 --- a/packages/interfaces/src/metadata.ts +++ b/packages/interfaces/src/metadata.ts @@ -1,11 +1,25 @@ import type { PeerId } from "@libp2p/interface"; import type { ShardInfo } from "./enr.js"; -import type { IBaseProtocolCore, ShardingParams } from "./protocols.js"; +import type { + IBaseProtocolCore, + ProtocolError, + ShardingParams +} from "./protocols.js"; + +export type QueryResult = + | { + shardInfo: ShardInfo; + error: null; + } + | { + shardInfo: null; + error: ProtocolError; + }; // IMetadata always has shardInfo defined while it is optionally undefined in IBaseProtocol export interface IMetadata extends Omit { shardInfo: ShardingParams; - confirmOrAttemptHandshake(peerId: PeerId): Promise; - query(peerId: PeerId): Promise; + confirmOrAttemptHandshake(peerId: PeerId): Promise; + query(peerId: PeerId): Promise; } diff --git a/packages/interfaces/src/protocols.ts b/packages/interfaces/src/protocols.ts index 8d64e83b46..b1a161058b 100644 --- a/packages/interfaces/src/protocols.ts +++ b/packages/interfaces/src/protocols.ts @@ -101,7 +101,7 @@ export type Callback = ( msg: T ) => void | Promise; -export enum SendError { +export enum ProtocolError { /** Could not determine the origin of the fault. Best to check connectivity and try again */ GENERIC_FAIL = "Generic error", /** @@ -150,7 +150,7 @@ export enum SendError { } export interface Failure { - error: SendError; + error: ProtocolError; peerId?: PeerId; } diff --git a/packages/local-peer-cache-discovery/.eslintrc.cjs b/packages/local-peer-cache-discovery/.eslintrc.cjs deleted file mode 100644 index 2299ed822e..0000000000 --- a/packages/local-peer-cache-discovery/.eslintrc.cjs +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - parserOptions: { - tsconfigRootDir: __dirname, - project: "./tsconfig.dev.json" - } -}; diff --git a/packages/local-peer-cache-discovery/.mocha.reporters.json b/packages/local-peer-cache-discovery/.mocha.reporters.json deleted file mode 100644 index 8c00e441fc..0000000000 --- a/packages/local-peer-cache-discovery/.mocha.reporters.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "reporterEnabled": "spec, allure-mocha", - "allureMochaReporter": { - "outputDir": "allure-results" - } -} diff --git a/packages/local-peer-cache-discovery/.mocharc.cjs b/packages/local-peer-cache-discovery/.mocharc.cjs deleted file mode 100644 index 423c0517bd..0000000000 --- a/packages/local-peer-cache-discovery/.mocharc.cjs +++ /dev/null @@ -1,26 +0,0 @@ -const config = { - extension: ['ts'], - spec: 'src/**/*.spec.ts', - require: ['ts-node/register', 'isomorphic-fetch'], - loader: 'ts-node/esm', - 'node-option': [ - 'experimental-specifier-resolution=node', - 'loader=ts-node/esm' - ], - exit: true -}; - -if (process.env.CI) { - console.log("Running tests in parallel"); - config.parallel = true; - config.jobs = 6; - console.log("Activating allure reporting"); - config.reporter = 'mocha-multi-reporters'; - config.reporterOptions = { - configFile: '.mocha.reporters.json' - }; -} else { - console.log("Running tests serially. To enable parallel execution update mocha config"); -} - -module.exports = config; diff --git a/packages/local-peer-cache-discovery/CHANGELOG.md b/packages/local-peer-cache-discovery/CHANGELOG.md deleted file mode 100644 index 7a6dd3d8c2..0000000000 --- a/packages/local-peer-cache-discovery/CHANGELOG.md +++ /dev/null @@ -1,20 +0,0 @@ -# Changelog - -## 1.0.0 (2024-03-04) - - -### ⚠ BREAKING CHANGES - -* rename local-discovery to local-peer-cache-discovery ([#1867](https://github.com/waku-org/js-waku/issues/1867)) - -### Miscellaneous Chores - -* Rename local-discovery to local-peer-cache-discovery ([#1867](https://github.com/waku-org/js-waku/issues/1867)) ([f3cb10d](https://github.com/waku-org/js-waku/commit/f3cb10d484bac134377b8cfd77e077ffc33bd319)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/interfaces bumped from ^0.0.21 to ^0.0.22 - * @waku/utils bumped from ^0.0.14 to ^0.0.15 diff --git a/packages/local-peer-cache-discovery/karma.conf.cjs b/packages/local-peer-cache-discovery/karma.conf.cjs deleted file mode 100644 index 1acbc3dd2a..0000000000 --- a/packages/local-peer-cache-discovery/karma.conf.cjs +++ /dev/null @@ -1,3 +0,0 @@ -const config = require("../../karma.conf.cjs"); - -module.exports = config; diff --git a/packages/local-peer-cache-discovery/package.json b/packages/local-peer-cache-discovery/package.json deleted file mode 100644 index 04d24052d5..0000000000 --- a/packages/local-peer-cache-discovery/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "@waku/local-peer-cache-discovery", - "version": "1.0.0", - "description": "Local Peer Cache keeps records of healthy peers in the browser's local storage for quicker bootstrapping.", - "types": "./dist/index.d.ts", - "module": "./dist/index.js", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - } - }, - "type": "module", - "author": "Waku Team", - "homepage": "https://github.com/waku-org/js-waku/tree/master/packages/local-peer-cache-discovery#readme", - "repository": { - "type": "git", - "url": "https://github.com/waku-org/js-waku.git" - }, - "bugs": { - "url": "https://github.com/waku-org/js-waku/issues" - }, - "license": "MIT OR Apache-2.0", - "keywords": [ - "waku", - "decentralized", - "secure", - "communication", - "web3", - "ethereum", - "dapps", - "privacy" - ], - "scripts": { - "build": "run-s build:**", - "build:esm": "tsc", - "build:bundle": "rollup --config rollup.config.js", - "fix": "run-s fix:*", - "fix:lint": "eslint src *.js --fix", - "check": "run-s check:*", - "check:lint": "eslint src --ext .ts", - "check:spelling": "cspell \"{README.md,src/**/*.ts}\"", - "check:tsc": "tsc -p tsconfig.dev.json", - "prepublish": "npm run build", - "reset-hard": "git clean -dfx -e .idea && git reset --hard && npm i && npm run build", - "test": "NODE_ENV=test run-s test:*", - "test:node": "NODE_ENV=test TS_NODE_PROJECT=./tsconfig.dev.json mocha" - }, - "engines": { - "node": ">=18" - }, - "dependencies": { - "@libp2p/interface": "^1.1.2", - "@waku/interfaces": "^0.0.22", - "@waku/utils": "^0.0.15" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@types/chai": "^4.3.11", - "@types/node-localstorage": "^1.3.3", - "@waku/build-utils": "*", - "chai": "^4.3.10", - "chai-as-promised": "^7.1.1", - "cspell": "^7.3.2", - "mocha": "^10.2.0", - "node-localstorage": "^3.0.5", - "npm-run-all": "^4.1.5", - "rollup": "^4.12.0", - "sinon": "^17.0.1" - }, - "files": [ - "dist", - "bundle", - "src/**/*.ts", - "!**/*.spec.*", - "!**/*.json", - "CHANGELOG.md", - "LICENSE", - "README.md" - ] -} diff --git a/packages/local-peer-cache-discovery/rollup.config.js b/packages/local-peer-cache-discovery/rollup.config.js deleted file mode 100644 index 4d0757b1c9..0000000000 --- a/packages/local-peer-cache-discovery/rollup.config.js +++ /dev/null @@ -1,24 +0,0 @@ -import commonjs from "@rollup/plugin-commonjs"; -import json from "@rollup/plugin-json"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; -import { extractExports } from "@waku/build-utils"; - -import * as packageJson from "./package.json" assert { type: "json" }; - -const input = extractExports(packageJson); - -export default { - input, - output: { - dir: "bundle", - format: "esm" - }, - plugins: [ - commonjs(), - json(), - nodeResolve({ - browser: true, - preferBuiltins: false - }) - ] -}; diff --git a/packages/local-peer-cache-discovery/tsconfig.dev.json b/packages/local-peer-cache-discovery/tsconfig.dev.json deleted file mode 100644 index 4f7c34af3c..0000000000 --- a/packages/local-peer-cache-discovery/tsconfig.dev.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.dev" -} diff --git a/packages/local-peer-cache-discovery/typedoc.json b/packages/local-peer-cache-discovery/typedoc.json deleted file mode 100644 index 00aa3dc064..0000000000 --- a/packages/local-peer-cache-discovery/typedoc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"] -} \ No newline at end of file diff --git a/packages/message-encryption/package.json b/packages/message-encryption/package.json index 6cc43e9b10..19763a83de 100644 --- a/packages/message-encryption/package.json +++ b/packages/message-encryption/package.json @@ -99,6 +99,17 @@ "process": "^0.11.10", "rollup": "^4.12.0" }, + "peerDependencies": { + "@waku/core": "0.0.27", + "@waku/interfaces": "0.0.22", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + } + }, "files": [ "dist", "bundle", diff --git a/packages/message-hash/package.json b/packages/message-hash/package.json index fd420f6156..e70999dda1 100644 --- a/packages/message-hash/package.json +++ b/packages/message-hash/package.json @@ -72,6 +72,15 @@ "process": "^0.11.10", "rollup": "^4.12.0" }, + "peerDependencies": { + "@waku/interfaces": "0.0.22", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + } + }, "files": [ "dist", "bundle", diff --git a/packages/peer-exchange/.eslintrc.cjs b/packages/peer-exchange/.eslintrc.cjs deleted file mode 100644 index 2299ed822e..0000000000 --- a/packages/peer-exchange/.eslintrc.cjs +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - parserOptions: { - tsconfigRootDir: __dirname, - project: "./tsconfig.dev.json" - } -}; diff --git a/packages/peer-exchange/CHANGELOG.md b/packages/peer-exchange/CHANGELOG.md deleted file mode 100644 index a2251a544e..0000000000 --- a/packages/peer-exchange/CHANGELOG.md +++ /dev/null @@ -1,285 +0,0 @@ -# Changelog - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.12 to 0.0.13 - * @waku/enr bumped from 0.0.7 to 0.0.8 - * @waku/proto bumped from 0.0.3 to 0.0.4 - * @waku/utils bumped from * to 0.0.3 - * devDependencies - * @waku/interfaces bumped from 0.0.9 to 0.0.10 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from 0.0.8 to 0.0.9 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.14 to 0.0.15 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.15 to 0.0.16 - * @waku/enr bumped from 0.0.9 to 0.0.10 - * @waku/utils bumped from 0.0.3 to 0.0.4 - * devDependencies - * @waku/interfaces bumped from 0.0.10 to 0.0.11 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.16 to 0.0.17 - * @waku/enr bumped from 0.0.10 to 0.0.11 - * @waku/utils bumped from 0.0.4 to 0.0.5 - * devDependencies - * @waku/interfaces bumped from 0.0.11 to 0.0.12 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.18 to 0.0.19 - * @waku/enr bumped from 0.0.12 to 0.0.13 - * @waku/proto bumped from * to 0.0.5 - * @waku/utils bumped from 0.0.6 to 0.0.7 - * devDependencies - * @waku/interfaces bumped from 0.0.13 to 0.0.14 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.19 to 0.0.20 - * @waku/enr bumped from 0.0.13 to 0.0.14 - * @waku/utils bumped from 0.0.7 to 0.0.8 - * devDependencies - * @waku/interfaces bumped from 0.0.14 to 0.0.15 - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.25 to 0.0.26 - * @waku/enr bumped from 0.0.19 to 0.0.20 - * @waku/interfaces bumped from 0.0.20 to 0.0.21 - * @waku/proto bumped from 0.0.5 to 0.0.6 - * @waku/utils bumped from 0.0.13 to 0.0.14 - -## [0.0.20](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.19...peer-exchange-v0.0.20) (2024-03-04) - - -### ⚠ BREAKING CHANGES - -* protocols filter peers as per configured shard ([#1756](https://github.com/waku-org/js-waku/issues/1756)) - -### Features - -* Decouple sharding params out of core ([e138b4f](https://github.com/waku-org/js-waku/commit/e138b4f5c49a35a37830e31e8be87d824f53249f)) -* Protocols filter peers as per configured shard ([#1756](https://github.com/waku-org/js-waku/issues/1756)) ([477c2a5](https://github.com/waku-org/js-waku/commit/477c2a5918f2f75cd2c14bc6ed75e1687c5a09b4)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.26 to 0.0.27 - * @waku/enr bumped from 0.0.20 to 0.0.21 - * @waku/interfaces bumped from 0.0.21 to 0.0.22 - * @waku/utils bumped from 0.0.14 to 0.0.15 - -## [0.0.18](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.17...peer-exchange-v0.0.18) (2023-11-01) - - -### Features - -* Logger with log levels ([#1672](https://github.com/waku-org/js-waku/issues/1672)) ([0f7d63e](https://github.com/waku-org/js-waku/commit/0f7d63ef93716223dc8fea7e8cb09e12e267b386)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.24 to 0.0.25 - * @waku/enr bumped from 0.0.18 to 0.0.19 - * @waku/interfaces bumped from 0.0.19 to 0.0.20 - * @waku/utils bumped from 0.0.12 to 0.0.13 - -## [0.0.17](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.16...peer-exchange-v0.0.17) (2023-10-16) - - -### Features - -* **static-sharding:** Filter peer connections per shards ([#1626](https://github.com/waku-org/js-waku/issues/1626)) ([124a29e](https://github.com/waku-org/js-waku/commit/124a29ebba59c05fbbf199d969e6ba3f9e57d45b)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.23 to 0.0.24 - * @waku/enr bumped from 0.0.17 to 0.0.18 - * @waku/interfaces bumped from 0.0.18 to 0.0.19 - * @waku/utils bumped from 0.0.11 to 0.0.12 - -## [0.0.16](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.15...peer-exchange-v0.0.16) (2023-09-11) - - -### ⚠ BREAKING CHANGES - -* set peer-exchange with default bootstrap ([#1469](https://github.com/waku-org/js-waku/issues/1469)) - -### Features - -* Pre-emptive stream creation for protocols ([#1516](https://github.com/waku-org/js-waku/issues/1516)) ([b4f8216](https://github.com/waku-org/js-waku/commit/b4f821676120aa06f4772eed62fb105d5afae7c6)) -* Set peer-exchange with default bootstrap ([#1469](https://github.com/waku-org/js-waku/issues/1469)) ([81a52a8](https://github.com/waku-org/js-waku/commit/81a52a8097ba948783c9d798ba362af0f27e1c10)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.22 to 0.0.23 - * @waku/enr bumped from 0.0.16 to 0.0.17 - * @waku/interfaces bumped from 0.0.17 to 0.0.18 - * @waku/utils bumped from 0.0.10 to 0.0.11 - -## [0.0.15](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.14...peer-exchange-v0.0.15) (2023-08-02) - - -### Bug Fixes - -* Improve connection manager error handling + edge cases ([#1450](https://github.com/waku-org/js-waku/issues/1450)) ([785df52](https://github.com/waku-org/js-waku/commit/785df528fe6e5010a61391994e222028dbc4e4c5)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.21 to 0.0.22 - * @waku/enr bumped from 0.0.15 to 0.0.16 - * @waku/utils bumped from 0.0.9 to 0.0.10 - * @waku/interfaces bumped from 0.0.16 to 0.0.17 - -## [0.0.14](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.13...peer-exchange-v0.0.14) (2023-07-26) - - -### ⚠ BREAKING CHANGES - -* upgrade to libp2p@0.45 ([#1400](https://github.com/waku-org/js-waku/issues/1400)) - -### Features - -* Enable event emission for peer discovery/connection in ConnectionManager ([#1438](https://github.com/waku-org/js-waku/issues/1438)) ([6ce898d](https://github.com/waku-org/js-waku/commit/6ce898d77132f30b5d8f33b48c7f6276992a486e)) -* Upgrade to libp2p@0.45 ([#1400](https://github.com/waku-org/js-waku/issues/1400)) ([420e6c6](https://github.com/waku-org/js-waku/commit/420e6c698dd8f44d40d34e47d876da5d2e1ce85e)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from 0.0.20 to 0.0.21 - * @waku/enr bumped from 0.0.14 to 0.0.15 - * @waku/utils bumped from 0.0.8 to 0.0.9 - * @waku/interfaces bumped from 0.0.15 to 0.0.16 - -## [0.0.11](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.10...peer-exchange-v0.0.11) (2023-05-18) - - -### ⚠ BREAKING CHANGES - -* @waku/relay ([#1316](https://github.com/waku-org/js-waku/issues/1316)) - -### Features - -* @waku/relay ([#1316](https://github.com/waku-org/js-waku/issues/1316)) ([50c2c25](https://github.com/waku-org/js-waku/commit/50c2c2540f3c5ff78d93f3fea646da0eee246e17)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from * to 0.0.18 - * @waku/enr bumped from * to 0.0.12 - * @waku/utils bumped from * to 0.0.6 - * devDependencies - * @waku/interfaces bumped from * to 0.0.13 - -## [0.0.5](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.4...peer-exchange-v0.0.5) (2023-03-23) - - -### Features - -* Compliance test for peer-exchange discovery ([#1186](https://github.com/waku-org/js-waku/issues/1186)) ([5b0c3c3](https://github.com/waku-org/js-waku/commit/5b0c3c3cac3ddb5687d8f59457d6056527a8666c)) - - -### Bug Fixes - -* @waku/peer-exchange uses @waku/core and should depend on it ([e922ed4](https://github.com/waku-org/js-waku/commit/e922ed49ec70553227751518251152c765efd07c)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/core bumped from * to 0.0.12 - * @waku/enr bumped from 0.0.6 to 0.0.7 - * devDependencies - * @waku/interfaces bumped from 0.0.8 to 0.0.9 - -## [0.0.4](https://github.com/waku-org/js-waku/compare/peer-exchange-v0.0.3...peer-exchange-v0.0.4) (2023-03-16) - - -### ⚠ BREAKING CHANGES - -* directly convert from ENR to `PeerInfo`, remove unneeded utility -* extract decoder code -* bump typescript -* bump all prod dependencies -* bump libp2p dependencies - -### Features - -* Codec as a property of the protocol implementations ([a5ff788](https://github.com/waku-org/js-waku/commit/a5ff788eed419556e11319f22ca9e3109c81df92)) -* DNS discovery as default bootstrap discovery ([#1114](https://github.com/waku-org/js-waku/issues/1114)) ([11819fc](https://github.com/waku-org/js-waku/commit/11819fc7b14e18385d421facaf2af0832cad1da8)) - - -### Bug Fixes - -* **dns-discovery/peer-exchange:** Check if peer is already tagged ([952aadd](https://github.com/waku-org/js-waku/commit/952aadd7bbbe1a7265c5126c1678f552bef0648d)) -* Prettier and cspell ignore CHANGELOG ([#1235](https://github.com/waku-org/js-waku/issues/1235)) ([4d7b3e3](https://github.com/waku-org/js-waku/commit/4d7b3e39e6761afaf5d05a13cc4b3c23e15f9bd5)) -* Remove initialising peer-exchange while creating a node ([#1158](https://github.com/waku-org/js-waku/issues/1158)) ([1b41569](https://github.com/waku-org/js-waku/commit/1b4156902387ea35b24b3d6f5d22e4635ea8cf18)) - - -### Miscellaneous Chores - -* Bump all prod dependencies ([88cc76d](https://github.com/waku-org/js-waku/commit/88cc76d2b811e1fa4460207f38704ecfe18fb260)) -* Bump libp2p dependencies ([803ae7b](https://github.com/waku-org/js-waku/commit/803ae7bd8ed3de665026446c23cde90e7eba9d36)) -* Bump typescript ([12d86e6](https://github.com/waku-org/js-waku/commit/12d86e6abcc68e27c39ca86b4f0dc2b68cdd6000)) -* Directly convert from ENR to `PeerInfo`, remove unneeded utility ([6dbcde0](https://github.com/waku-org/js-waku/commit/6dbcde041ab8fa8c2df75cc25319a0eccf6b0454)) -* Extract decoder code ([130c49b](https://github.com/waku-org/js-waku/commit/130c49b636807063364f309da0da2a24a68f2178)) - - -### Dependencies - -* The following workspace dependencies were updated - * dependencies - * @waku/enr bumped from * to 0.0.6 - * @waku/proto bumped from * to 0.0.3 - * devDependencies - * @waku/interfaces bumped from * to 0.0.8 - -## Changelog - -All notable changes to this project will be documented in this file. - -The file is maintained by [Release Please](https://github.com/googleapis/release-please) based on [Conventional Commits](https://www.conventionalcommits.org) specification, -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). diff --git a/packages/peer-exchange/package.json b/packages/peer-exchange/package.json deleted file mode 100644 index 624cd23d14..0000000000 --- a/packages/peer-exchange/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "@waku/peer-exchange", - "version": "0.0.20", - "description": "Peer Exchange (https://rfc.vac.dev/spec/34/) protocol for Waku", - "types": "./dist/index.d.ts", - "module": "./dist/index.js", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - } - }, - "type": "module", - "author": "Waku Team", - "homepage": "https://github.com/waku-org/js-waku/tree/master/packages/peer-exchange#readme", - "repository": { - "type": "git", - "url": "https://github.com/waku-org/js-waku.git" - }, - "bugs": { - "url": "https://github.com/waku-org/js-waku/issues" - }, - "license": "MIT OR Apache-2.0", - "keywords": [ - "waku", - "decentralized", - "secure", - "communication", - "web3", - "ethereum", - "dapps", - "privacy" - ], - "scripts": { - "build": "run-s build:**", - "build:esm": "tsc", - "build:bundle": "rollup --config rollup.config.js", - "fix": "run-s fix:*", - "fix:lint": "eslint src *.js --fix", - "check": "run-s check:*", - "check:lint": "eslint src *.js", - "check:spelling": "cspell \"{README.md,src/**/*.ts}\"", - "check:tsc": "tsc -p tsconfig.dev.json", - "prepublish": "npm run build", - "reset-hard": "git clean -dfx -e .idea && git reset --hard && npm i && npm run build" - }, - "engines": { - "node": ">=18" - }, - "dependencies": { - "@libp2p/interfaces": "^3.3.2", - "@waku/core": "0.0.27", - "@waku/enr": "0.0.21", - "@waku/interfaces": "0.0.22", - "@waku/proto": "0.0.6", - "@waku/utils": "0.0.15", - "debug": "^4.3.4", - "it-all": "^3.0.4", - "it-length-prefixed": "^9.0.4", - "it-pipe": "^3.0.1" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@waku/build-utils": "*", - "chai": "^4.3.10", - "cspell": "^8.3.2", - "npm-run-all": "^4.1.5", - "rollup": "^4.12.0", - "uint8arraylist": "^2.4.3" - }, - "files": [ - "dist", - "bundle", - "src/**/*.ts", - "!**/*.spec.*", - "!**/*.json", - "CHANGELOG.md", - "LICENSE", - "README.md" - ] -} diff --git a/packages/peer-exchange/rollup.config.js b/packages/peer-exchange/rollup.config.js deleted file mode 100644 index 4d0757b1c9..0000000000 --- a/packages/peer-exchange/rollup.config.js +++ /dev/null @@ -1,24 +0,0 @@ -import commonjs from "@rollup/plugin-commonjs"; -import json from "@rollup/plugin-json"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; -import { extractExports } from "@waku/build-utils"; - -import * as packageJson from "./package.json" assert { type: "json" }; - -const input = extractExports(packageJson); - -export default { - input, - output: { - dir: "bundle", - format: "esm" - }, - plugins: [ - commonjs(), - json(), - nodeResolve({ - browser: true, - preferBuiltins: false - }) - ] -}; diff --git a/packages/peer-exchange/tsconfig.dev.json b/packages/peer-exchange/tsconfig.dev.json deleted file mode 100644 index 4f7c34af3c..0000000000 --- a/packages/peer-exchange/tsconfig.dev.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.dev" -} diff --git a/packages/peer-exchange/tsconfig.json b/packages/peer-exchange/tsconfig.json deleted file mode 100644 index eebbc51585..0000000000 --- a/packages/peer-exchange/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig", - "compilerOptions": { - "outDir": "dist/", - "rootDir": "src", - "tsBuildInfoFile": "dist/.tsbuildinfo" - }, - "include": ["src"], - "exclude": ["src/**/*.spec.ts", "src/test_utils"] -} diff --git a/packages/peer-exchange/typedoc.json b/packages/peer-exchange/typedoc.json deleted file mode 100644 index 00aa3dc064..0000000000 --- a/packages/peer-exchange/typedoc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"] -} \ No newline at end of file diff --git a/packages/relay/package.json b/packages/relay/package.json index 9576b053c6..a515a42e48 100644 --- a/packages/relay/package.json +++ b/packages/relay/package.json @@ -66,6 +66,21 @@ "@rollup/plugin-node-resolve": "^15.2.3", "rollup": "^4.12.0" }, + "peerDependencies": { + "@waku/core": "0.0.27", + "@waku/interfaces": "0.0.22", + "@waku/proto": "0.0.6", + "@waku/utils": "0.0.15", + "@chainsafe/libp2p-gossipsub": "^12.0.0" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + }, + "@chainsafe/libp2p-gossipsub": { + "optional": true + } + }, "files": [ "dist", "bundle", diff --git a/packages/relay/src/index.ts b/packages/relay/src/index.ts index e2e524fd3e..bbe10447b9 100644 --- a/packages/relay/src/index.ts +++ b/packages/relay/src/index.ts @@ -20,8 +20,8 @@ import { IRelay, Libp2p, ProtocolCreateOptions, + ProtocolError, PubsubTopic, - SendError, SendResult } from "@waku/interfaces"; import { isWireSizeUnderCap, toAsyncIterator } from "@waku/utils"; @@ -109,7 +109,7 @@ class Relay implements IRelay { successes, failures: [ { - error: SendError.TOPIC_NOT_CONFIGURED + error: ProtocolError.TOPIC_NOT_CONFIGURED } ] }; @@ -122,7 +122,7 @@ class Relay implements IRelay { successes, failures: [ { - error: SendError.ENCODE_FAILED + error: ProtocolError.ENCODE_FAILED } ] }; @@ -134,7 +134,7 @@ class Relay implements IRelay { successes, failures: [ { - error: SendError.SIZE_TOO_BIG + error: ProtocolError.SIZE_TOO_BIG } ] }; diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 0387c2bc12..0005c17723 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -66,6 +66,7 @@ "@libp2p/mplex": "^10.0.12", "@libp2p/ping": "^1.0.12", "@libp2p/websockets": "^8.0.11", + "@waku/discovery": "0.0.1", "@waku/core": "0.0.27", "@waku/dns-discovery": "0.0.21", "@waku/interfaces": "0.0.22", @@ -88,7 +89,22 @@ "rollup": "^4.12.0" }, "peerDependencies": { - "@libp2p/bootstrap": "^10" + "@libp2p/bootstrap": "^10", + "@waku/core": "0.0.27", + "@waku/dns-discovery": "0.0.21", + "@waku/interfaces": "0.0.22", + "@waku/local-peer-cache-discovery": "^1.0.0", + "@waku/peer-exchange": "^0.0.20", + "@waku/relay": "0.0.10", + "@waku/utils": "0.0.15" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + }, + "@libp2p/bootstrap": { + "optional": true + } }, "files": [ "dist", diff --git a/packages/sdk/src/protocols/light_push.ts b/packages/sdk/src/protocols/light_push.ts index aca7d78b8a..0584878d4a 100644 --- a/packages/sdk/src/protocols/light_push.ts +++ b/packages/sdk/src/protocols/light_push.ts @@ -7,7 +7,7 @@ import { type IMessage, type Libp2p, type ProtocolCreateOptions, - SendError, + ProtocolError, type SendResult } from "@waku/interfaces"; import { ensurePubsubTopicIsConfigured, Logger } from "@waku/utils"; @@ -37,7 +37,7 @@ export class LightPushSDK extends BaseProtocolSDK implements ILightPushSDK { return { failures: [ { - error: SendError.TOPIC_NOT_CONFIGURED + error: ProtocolError.TOPIC_NOT_CONFIGURED } ], successes: [] @@ -48,7 +48,7 @@ export class LightPushSDK extends BaseProtocolSDK implements ILightPushSDK { if (!peers.length) { return { successes, - failures: [{ error: SendError.NO_PEER_AVAILABLE }] + failures: [{ error: ProtocolError.NO_PEER_AVAILABLE }] }; } @@ -69,7 +69,7 @@ export class LightPushSDK extends BaseProtocolSDK implements ILightPushSDK { } } else { log.error("Failed to send message to peer", result.reason); - failures.push({ error: SendError.GENERIC_FAIL }); + failures.push({ error: ProtocolError.GENERIC_FAIL }); // TODO: handle renewing faulty peers with new peers (https://github.com/waku-org/js-waku/issues/1463) } } diff --git a/packages/tests/package.json b/packages/tests/package.json index 5d0ed9c669..f532b21f46 100644 --- a/packages/tests/package.json +++ b/packages/tests/package.json @@ -74,9 +74,8 @@ "@types/mocha": "^10.0.6", "@types/sinon": "^17.0.3", "@types/tail": "^2.2.3", - "@waku/dns-discovery": "*", + "@waku/discovery": "*", "@waku/message-encryption": "*", - "@waku/peer-exchange": "*", "@waku/sdk": "*", "allure-commandline": "^2.27.0", "allure-mocha": "^2.9.2", diff --git a/packages/tests/tests/dns-peer-discovery.spec.ts b/packages/tests/tests/dns-peer-discovery.spec.ts index 6df774d3e4..87c09df893 100644 --- a/packages/tests/tests/dns-peer-discovery.spec.ts +++ b/packages/tests/tests/dns-peer-discovery.spec.ts @@ -8,7 +8,7 @@ import { enrTree, PeerDiscoveryDns, wakuDnsDiscovery -} from "@waku/dns-discovery"; +} from "@waku/discovery"; import { Libp2pComponents } from "@waku/interfaces"; import { createLightNode } from "@waku/sdk"; import { expect } from "chai"; diff --git a/packages/tests/tests/light-push/index.node.spec.ts b/packages/tests/tests/light-push/index.node.spec.ts index a4055d10cc..896a9b27fe 100644 --- a/packages/tests/tests/light-push/index.node.spec.ts +++ b/packages/tests/tests/light-push/index.node.spec.ts @@ -3,7 +3,7 @@ import { DefaultPubsubTopic, IRateLimitProof, LightNode, - SendError + ProtocolError } from "@waku/interfaces"; import { utf8ToBytes } from "@waku/sdk"; import { expect } from "chai"; @@ -97,7 +97,7 @@ const runTests = (strictNodeCheck: boolean): void => { expect(pushResponse.successes.length).to.eq(0); console.log("validated 1"); expect(pushResponse.failures?.map((failure) => failure.error)).to.include( - SendError.EMPTY_PAYLOAD + ProtocolError.EMPTY_PAYLOAD ); console.log("validated 2"); expect(await serviceNodes.messageCollector.waitForMessages(1)).to.eq( @@ -190,7 +190,7 @@ const runTests = (strictNodeCheck: boolean): void => { expect(pushResponse.successes.length).to.eq(0); expect( pushResponse.failures?.map((failure) => failure.error) - ).to.include(SendError.REMOTE_PEER_REJECTED); + ).to.include(ProtocolError.REMOTE_PEER_REJECTED); expect(await serviceNodes.messageCollector.waitForMessages(1)).to.eq( false ); @@ -262,7 +262,7 @@ const runTests = (strictNodeCheck: boolean): void => { }); expect(pushResponse.successes.length).to.eq(0); expect(pushResponse.failures?.map((failure) => failure.error)).to.include( - SendError.SIZE_TOO_BIG + ProtocolError.SIZE_TOO_BIG ); expect(await serviceNodes.messageCollector.waitForMessages(1)).to.eq( false diff --git a/packages/tests/tests/light-push/single_node/index.node.spec.ts b/packages/tests/tests/light-push/single_node/index.node.spec.ts index fb1779ae91..f6d5c02b59 100644 --- a/packages/tests/tests/light-push/single_node/index.node.spec.ts +++ b/packages/tests/tests/light-push/single_node/index.node.spec.ts @@ -3,7 +3,7 @@ import { DefaultPubsubTopic, IRateLimitProof, LightNode, - SendError + ProtocolError } from "@waku/interfaces"; import { utf8ToBytes } from "@waku/sdk"; import { expect } from "chai"; @@ -85,7 +85,7 @@ describe("Waku Light Push: Single Node", function () { expect(pushResponse.successes.length).to.eq(0); expect(pushResponse.failures?.map((failure) => failure.error)).to.include( - SendError.EMPTY_PAYLOAD + ProtocolError.EMPTY_PAYLOAD ); expect(await messageCollector.waitForMessages(1)).to.eq(false); }); @@ -167,7 +167,7 @@ describe("Waku Light Push: Single Node", function () { } else { expect(pushResponse.successes.length).to.eq(0); expect(pushResponse.failures?.map((failure) => failure.error)).to.include( - SendError.REMOTE_PEER_REJECTED + ProtocolError.REMOTE_PEER_REJECTED ); expect(await messageCollector.waitForMessages(1)).to.eq(false); } @@ -234,7 +234,7 @@ describe("Waku Light Push: Single Node", function () { }); expect(pushResponse.successes.length).to.eq(0); expect(pushResponse.failures?.map((failure) => failure.error)).to.include( - SendError.SIZE_TOO_BIG + ProtocolError.SIZE_TOO_BIG ); expect(await messageCollector.waitForMessages(1)).to.eq(false); }); diff --git a/packages/tests/tests/metadata.spec.ts b/packages/tests/tests/metadata.spec.ts index 172accb1bb..d121f14c62 100644 --- a/packages/tests/tests/metadata.spec.ts +++ b/packages/tests/tests/metadata.spec.ts @@ -52,11 +52,22 @@ describe("Metadata Protocol", function () { await waku.start(); await waku.libp2p.dialProtocol(nwaku1Ma, MetadataCodec); - const shardInfoRes = - await waku.libp2p.services.metadata?.query(nwaku1PeerId); + if (!waku.libp2p.services.metadata) { + expect(waku.libp2p.services.metadata).to.not.be.undefined; + return; + } + + const { error, shardInfo: shardInfoRes } = + await waku.libp2p.services.metadata.query(nwaku1PeerId); + + if (error) { + expect(error).to.be.null; + return; + } + expect(shardInfoRes).to.not.be.undefined; - expect(shardInfoRes?.clusterId).to.equal(shardInfo.clusterId); - expect(shardInfoRes?.shards).to.deep.equal(shardInfo.shards); + expect(shardInfoRes.clusterId).to.equal(shardInfo.clusterId); + expect(shardInfoRes.shards).to.deep.equal(shardInfo.shards); const activeConnections = waku.libp2p.getConnections(); expect(activeConnections.length).to.equal(1); @@ -89,11 +100,22 @@ describe("Metadata Protocol", function () { await waku.start(); await waku.libp2p.dialProtocol(nwaku1Ma, MetadataCodec); - const shardInfoRes = - await waku.libp2p.services.metadata?.query(nwaku1PeerId); + if (!waku.libp2p.services.metadata) { + expect(waku.libp2p.services.metadata).to.not.be.undefined; + return; + } + + const { error, shardInfo: shardInfoRes } = + await waku.libp2p.services.metadata.query(nwaku1PeerId); + + if (error) { + expect(error).to.be.null; + return; + } + expect(shardInfoRes).to.not.be.undefined; - expect(shardInfoRes?.clusterId).to.equal(shardInfo1.clusterId); - expect(shardInfoRes?.shards).to.deep.equal(shardInfo1.shards); + expect(shardInfoRes.clusterId).to.equal(shardInfo1.clusterId); + expect(shardInfoRes.shards).to.deep.equal(shardInfo1.shards); const activeConnections = waku.libp2p.getConnections(); expect(activeConnections.length).to.equal(1); diff --git a/packages/tests/tests/peer-exchange/compliance.spec.ts b/packages/tests/tests/peer-exchange/compliance.spec.ts index 6fed552a2d..681c5cf0c3 100644 --- a/packages/tests/tests/peer-exchange/compliance.spec.ts +++ b/packages/tests/tests/peer-exchange/compliance.spec.ts @@ -1,6 +1,6 @@ import tests from "@libp2p/interface-compliance-tests/peer-discovery"; +import { PeerExchangeCodec, PeerExchangeDiscovery } from "@waku/discovery"; import type { LightNode } from "@waku/interfaces"; -import { PeerExchangeCodec, PeerExchangeDiscovery } from "@waku/peer-exchange"; import { createLightNode } from "@waku/sdk"; import { singleShardInfoToPubsubTopic } from "@waku/utils"; diff --git a/packages/tests/tests/peer-exchange/index.spec.ts b/packages/tests/tests/peer-exchange/index.spec.ts index 84aea0fb86..42db96e298 100644 --- a/packages/tests/tests/peer-exchange/index.spec.ts +++ b/packages/tests/tests/peer-exchange/index.spec.ts @@ -1,7 +1,7 @@ import { bootstrap } from "@libp2p/bootstrap"; import type { PeerId } from "@libp2p/interface"; +import { wakuPeerExchangeDiscovery } from "@waku/discovery"; import type { LightNode, PeersByDiscoveryResult } from "@waku/interfaces"; -import { wakuPeerExchangeDiscovery } from "@waku/peer-exchange"; import { createLightNode, Tags } from "@waku/sdk"; import { Logger, singleShardInfoToPubsubTopic } from "@waku/utils"; import { expect } from "chai"; diff --git a/packages/tests/tests/peer-exchange/pe.optional.spec.ts b/packages/tests/tests/peer-exchange/pe.optional.spec.ts index 2a1824d74f..fa1f1af647 100644 --- a/packages/tests/tests/peer-exchange/pe.optional.spec.ts +++ b/packages/tests/tests/peer-exchange/pe.optional.spec.ts @@ -3,8 +3,8 @@ import { Fleet, getPredefinedBootstrapNodes } from "@waku/core/lib/predefined_bootstrap_nodes"; +import { wakuPeerExchangeDiscovery } from "@waku/discovery"; import type { LightNode } from "@waku/interfaces"; -import { wakuPeerExchangeDiscovery } from "@waku/peer-exchange"; import { createLightNode, DefaultPubsubTopic } from "@waku/sdk"; import { expect } from "chai"; diff --git a/packages/tests/tests/peer-exchange/query.spec.ts b/packages/tests/tests/peer-exchange/query.spec.ts index dca0ffb965..72e3027e4a 100644 --- a/packages/tests/tests/peer-exchange/query.spec.ts +++ b/packages/tests/tests/peer-exchange/query.spec.ts @@ -2,12 +2,12 @@ import { bootstrap } from "@libp2p/bootstrap"; import type { PeerId } from "@libp2p/interface"; import { multiaddr } from "@multiformats/multiaddr"; import type { Multiaddr } from "@multiformats/multiaddr"; -import type { LightNode, PeerInfo } from "@waku/interfaces"; import { PeerExchangeCodec, WakuPeerExchange, wakuPeerExchangeDiscovery -} from "@waku/peer-exchange"; +} from "@waku/discovery"; +import type { LightNode, PeerInfo } from "@waku/interfaces"; import { createLightNode, Libp2pComponents } from "@waku/sdk"; import { Logger, singleShardInfoToPubsubTopic } from "@waku/utils"; import { expect } from "chai"; diff --git a/packages/tests/tests/relay/publish.node.spec.ts b/packages/tests/tests/relay/publish.node.spec.ts index 50b6fb7340..86caea8fb8 100644 --- a/packages/tests/tests/relay/publish.node.spec.ts +++ b/packages/tests/tests/relay/publish.node.spec.ts @@ -1,5 +1,5 @@ import { createEncoder } from "@waku/core"; -import { IRateLimitProof, RelayNode, SendError } from "@waku/interfaces"; +import { IRateLimitProof, ProtocolError, RelayNode } from "@waku/interfaces"; import { createRelayNode } from "@waku/sdk/relay"; import { utf8ToBytes } from "@waku/utils/bytes"; import { expect } from "chai"; @@ -135,7 +135,7 @@ describe("Waku Relay, Publish", function () { payload: utf8ToBytes("") }); expect(pushResponse.failures?.[0].error).to.eq( - SendError.TOPIC_NOT_CONFIGURED + ProtocolError.TOPIC_NOT_CONFIGURED ); await delay(400); expect(await messageCollector.waitForMessages(1)).to.eq(false); @@ -148,7 +148,7 @@ describe("Waku Relay, Publish", function () { }); expect(pushResponse.successes.length).to.eq(0); expect(pushResponse.failures?.map((failure) => failure.error)).to.include( - SendError.SIZE_TOO_BIG + ProtocolError.SIZE_TOO_BIG ); await delay(400); expect(await messageCollector.waitForMessages(1)).to.eq(false); diff --git a/packages/tests/tests/sharding/peer_management.spec.ts b/packages/tests/tests/sharding/peer_management.spec.ts index 4cf75792bd..5e49f9bb21 100644 --- a/packages/tests/tests/sharding/peer_management.spec.ts +++ b/packages/tests/tests/sharding/peer_management.spec.ts @@ -1,6 +1,6 @@ import { bootstrap } from "@libp2p/bootstrap"; import type { PeerId } from "@libp2p/interface"; -import { wakuPeerExchangeDiscovery } from "@waku/peer-exchange"; +import { wakuPeerExchangeDiscovery } from "@waku/discovery"; import { ContentTopicInfo, createLightNode, diff --git a/packages/tests/tests/sharding/running_nodes.spec.ts b/packages/tests/tests/sharding/running_nodes.spec.ts index 24beb3f519..1d51141990 100644 --- a/packages/tests/tests/sharding/running_nodes.spec.ts +++ b/packages/tests/tests/sharding/running_nodes.spec.ts @@ -1,7 +1,7 @@ import { LightNode, + ProtocolError, Protocols, - SendError, ShardInfo, SingleShardInfo } from "@waku/interfaces"; @@ -93,7 +93,7 @@ describe("Static Sharding: Running Nodes", function () { } const errors = failures?.map((failure) => failure.error); - expect(errors).to.include(SendError.TOPIC_NOT_CONFIGURED); + expect(errors).to.include(ProtocolError.TOPIC_NOT_CONFIGURED); }); }); diff --git a/packages/tests/tests/waku.node.optional.spec.ts b/packages/tests/tests/waku.node.optional.spec.ts index d9a0009349..80299b9530 100644 --- a/packages/tests/tests/waku.node.optional.spec.ts +++ b/packages/tests/tests/waku.node.optional.spec.ts @@ -1,5 +1,5 @@ import { bootstrap } from "@libp2p/bootstrap"; -import { enrTree, wakuDnsDiscovery } from "@waku/dns-discovery"; +import { enrTree, wakuDnsDiscovery } from "@waku/discovery"; import { LightNode } from "@waku/interfaces"; import { createLightNode } from "@waku/sdk"; import { expect } from "chai"; diff --git a/packages/utils/package.json b/packages/utils/package.json index 77341da5aa..f78eac92bd 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -83,6 +83,14 @@ "fast-check": "^3.15.1", "rollup": "^4.12.0" }, + "peerDependencies": { + "@waku/interfaces": "0.0.22" + }, + "peerDependenciesMeta": { + "@waku/interfaces": { + "optional": true + } + }, "files": [ "dist", "bundle", diff --git a/packages/utils/src/common/sharding.ts b/packages/utils/src/common/sharding.ts index c2911234cd..3ad5a77780 100644 --- a/packages/utils/src/common/sharding.ts +++ b/packages/utils/src/common/sharding.ts @@ -100,7 +100,7 @@ export const pubsubTopicToSingleShardInfo = ( }; //TODO: move part of BaseProtocol instead of utils -// return `SendError.TOPIC_NOT_CONFIGURED` instead of throwing +// return `ProtocolError.TOPIC_NOT_CONFIGURED` instead of throwing export function ensurePubsubTopicIsConfigured( pubsubTopic: PubsubTopic, configuredTopics: PubsubTopic[] diff --git a/release-please-config.json b/release-please-config.json index d2a0427252..99230ee43d 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -11,13 +11,11 @@ "packages/interfaces": {}, "packages/message-hash": {}, "packages/enr": {}, - "packages/peer-exchange": {}, "packages/core": {}, - "packages/dns-discovery": {}, "packages/message-encryption": {}, "packages/sdk": {}, "packages/relay": {}, - "packages/local-peer-cache-discovery": {}, - "packages/rln": {} + "packages/rln": {}, + "packages/discovery": {} } }