diff --git a/examples/dogfooding/index.html b/examples/dogfooding/index.html
index a7e52ab..d9682e7 100644
--- a/examples/dogfooding/index.html
+++ b/examples/dogfooding/index.html
@@ -34,12 +34,17 @@
0
Received (Others)
+
Controls
+
diff --git a/examples/dogfooding/package-lock.json b/examples/dogfooding/package-lock.json
index 04bd2c2..b05e537 100644
--- a/examples/dogfooding/package-lock.json
+++ b/examples/dogfooding/package-lock.json
@@ -10,7 +10,7 @@
"dependencies": {
"@libp2p/crypto": "^5.0.5",
"@multiformats/multiaddr": "^12.3.1",
- "@waku/sdk": "0.0.32-16328a3.0",
+ "@waku/sdk": "0.0.32-4997440.0",
"libp2p": "^2.1.10",
"protobufjs": "^7.3.0",
"uint8arrays": "^5.1.0"
@@ -72,23 +72,6 @@
"wherearewe": "^2.0.1"
}
},
- "node_modules/@chainsafe/libp2p-noise/node_modules/it-length-prefixed": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.1.tgz",
- "integrity": "sha512-O88nBweT6M9ozsmok68/auKH7ik/slNM4pYbM9lrfy2z5QnpokW5SlrepHZDKtN71llhG2sZvd6uY4SAl+lAQg==",
- "license": "Apache-2.0 OR MIT",
- "dependencies": {
- "it-reader": "^6.0.1",
- "it-stream-types": "^2.0.1",
- "uint8-varint": "^2.0.1",
- "uint8arraylist": "^2.0.0",
- "uint8arrays": "^5.0.1"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=7.0.0"
- }
- },
"node_modules/@chainsafe/netmask": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@chainsafe/netmask/-/netmask-2.0.0.tgz",
@@ -108,40 +91,6 @@
"node": ">=10.0.0"
}
},
- "node_modules/@emnapi/core": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz",
- "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/wasi-threads": "1.0.2",
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@emnapi/runtime": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",
- "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@emnapi/wasi-threads": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz",
- "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz",
@@ -728,19 +677,6 @@
"@multiformats/multiaddr": "^12.3.0"
}
},
- "node_modules/@napi-rs/wasm-runtime": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.9.tgz",
- "integrity": "sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/core": "^1.4.0",
- "@emnapi/runtime": "^1.4.0",
- "@tybys/wasm-util": "^0.9.0"
- }
- },
"node_modules/@next/eslint-plugin-next": {
"version": "13.5.6",
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz",
@@ -937,17 +873,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@tybys/wasm-util": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz",
- "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
"node_modules/@types/body-parser": {
"version": "1.19.5",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
@@ -1389,230 +1314,17 @@
"darwin"
]
},
- "node_modules/@unrs/resolver-binding-darwin-x64": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.5.0.tgz",
- "integrity": "sha512-qpUrXgH4e/0xu1LOhPEdfgSY3vIXOxDQv370NEL8npN8h40HcQDA+Pl2r4HBW6tTXezWIjxUFcP7tj529RZtDw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@unrs/resolver-binding-freebsd-x64": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.5.0.tgz",
- "integrity": "sha512-3tX8r8vgjvZzaJZB4jvxUaaFCDCb3aWDCpZN3EjhGnnwhztslI05KSG5NY/jNjlcZ5QWZ7dEZZ/rNBFsmTaSPw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.5.0.tgz",
- "integrity": "sha512-FH+ixzBKaUU9fWOj3TYO+Yn/eO6kYvMLV9eNJlJlkU7OgrxkCmiMS6wUbyT0KA3FOZGxnEQ2z3/BHgYm2jqeLA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.5.0.tgz",
- "integrity": "sha512-pxCgXMgwB/4PfqFQg73lMhmWwcC0j5L+dNXhZoz/0ek0iS/oAWl65fxZeT/OnU7fVs52MgdP2q02EipqJJXHSg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-arm64-gnu": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.5.0.tgz",
- "integrity": "sha512-FX2FV7vpLE/+Z0NZX9/1pwWud5Wocm/2PgpUXbT5aSV3QEB10kBPJAzssOQylvdj8mOHoKl5pVkXpbCwww/T2g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-arm64-musl": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.5.0.tgz",
- "integrity": "sha512-+gF97xst1BZb28T3nwwzEtq2ewCoMDGKsenYsZuvpmNrW0019G1iUAunZN+FG55L21y+uP7zsGX06OXDQ/viKw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.5.0.tgz",
- "integrity": "sha512-5bEmVcQw9js8JYM2LkUBw5SeELSIxX+qKf9bFrfFINKAp4noZ//hUxLpbF7u/3gTBN1GsER6xOzIZlw/VTdXtA==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.5.0.tgz",
- "integrity": "sha512-GGk/8TPUsf1Q99F+lzMdjE6sGL26uJCwQ9TlvBs8zR3cLQNw/MIumPN7zrs3GFGySjnwXc8gA6J3HKbejywmqA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-s390x-gnu": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.5.0.tgz",
- "integrity": "sha512-5uRkFYYVNAeVaA4W/CwugjFN3iDOHCPqsBLCCOoJiMfFMMz4evBRsg+498OFa9w6VcTn2bD5aI+RRayaIgk2Sw==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-x64-gnu": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.5.0.tgz",
- "integrity": "sha512-j905CZH3nehYy6NimNqC2B14pxn4Ltd7guKMyPTzKehbFXTUgihQS/ZfHQTdojkMzbSwBOSgq1dOrY+IpgxDsA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-linux-x64-musl": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.5.0.tgz",
- "integrity": "sha512-dmLevQTuzQRwu5A+mvj54R5aye5I4PVKiWqGxg8tTaYP2k2oTs/3Mo8mgnhPk28VoYCi0fdFYpgzCd4AJndQvQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@unrs/resolver-binding-wasm32-wasi": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.5.0.tgz",
- "integrity": "sha512-LtJMhwu7avhoi+kKfAZOKN773RtzLBVVF90YJbB0wyMpUj9yQPeA+mteVUI9P70OG/opH47FeV5AWeaNWWgqJg==",
- "cpu": [
- "wasm32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@napi-rs/wasm-runtime": "^0.2.8"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@unrs/resolver-binding-win32-arm64-msvc": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.5.0.tgz",
- "integrity": "sha512-FTZBxLL4SO1mgIM86KykzJmPeTPisBDHQV6xtfDXbTMrentuZ6SdQKJUV5BWaoUK3p8kIULlrCcucqdCnk8Npg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@unrs/resolver-binding-win32-ia32-msvc": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.5.0.tgz",
- "integrity": "sha512-i5bB7vJ1waUsFciU/FKLd4Zw0VnAkvhiJ4//jYQXyDUuiLKodmtQZVTcOPU7pp97RrNgCFtXfC1gnvj/DHPJTw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@unrs/resolver-binding-win32-x64-msvc": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.5.0.tgz",
- "integrity": "sha512-wAvXp4k7jhioi4SebXW/yfzzYwsUCr9kIX4gCsUFKpCTUf8Mi7vScJXI3S+kupSUf0LbVHudR8qBbe2wFMSNUw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
"node_modules/@waku/discovery": {
- "version": "0.0.9-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/discovery/-/discovery-0.0.9-16328a3.0.tgz",
- "integrity": "sha512-s3tQpF4t0G/Fa5BCwO+92vf9gPczaz3YIGhrctdU1SYoS5CHhQ0JZ44HKHv/nL+eIzRKwimiGAk3RjLW7Z9pIw==",
+ "version": "0.0.9-4997440.0",
+ "resolved": "https://registry.npmjs.org/@waku/discovery/-/discovery-0.0.9-4997440.0.tgz",
+ "integrity": "sha512-cNJking/6FgHdl0e9x3MC/j7P7jBRn7rF1qU3PPvJ5EiugPcLyrxFRVZocZj4EQzYar7wY909MqNnlA+tGwCaQ==",
"license": "MIT OR Apache-2.0",
"dependencies": {
- "@waku/core": "0.0.36-16328a3.0",
- "@waku/enr": "0.0.30-16328a3.0",
- "@waku/interfaces": "0.0.31-16328a3.0",
- "@waku/proto": "0.0.11-16328a3.0",
- "@waku/utils": "0.0.24-16328a3.0",
+ "@waku/core": "0.0.36-4997440.0",
+ "@waku/enr": "0.0.30-4997440.0",
+ "@waku/interfaces": "0.0.31-4997440.0",
+ "@waku/proto": "0.0.11-4997440.0",
+ "@waku/utils": "0.0.24-4997440.0",
"debug": "^4.3.4",
"dns-over-http-resolver": "^3.0.8",
"hi-base32": "^0.5.1",
@@ -1623,16 +1335,17 @@
}
},
"node_modules/@waku/discovery/node_modules/@waku/core": {
- "version": "0.0.36-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.36-16328a3.0.tgz",
- "integrity": "sha512-+5GNNcy3FYnPKaL0RuJ01oo3+wMqkVhHPKdpRc3T0Rodi6IZsFCFdT1ob3A5rpFo5IURXqNjElUVBItIGrtupw==",
+ "version": "0.0.36-4997440.0",
+ "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.36-4997440.0.tgz",
+ "integrity": "sha512-1Z8bKLL8fFU7DeeAw+7iDazeNOayudnOSHIT4sP0pxnEe2kpLAaF5C5E0TeRj4Jk43f8xzTKmCMXXwN8/IbFgw==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@libp2p/ping": "2.0.1",
- "@waku/enr": "0.0.30-16328a3.0",
- "@waku/interfaces": "0.0.31-16328a3.0",
- "@waku/proto": "0.0.11-16328a3.0",
- "@waku/utils": "0.0.24-16328a3.0",
+ "@noble/hashes": "^1.3.2",
+ "@waku/enr": "0.0.30-4997440.0",
+ "@waku/interfaces": "0.0.31-4997440.0",
+ "@waku/proto": "0.0.11-4997440.0",
+ "@waku/utils": "0.0.24-4997440.0",
"debug": "^4.3.4",
"it-all": "^3.0.4",
"it-length-prefixed": "^9.0.4",
@@ -1706,9 +1419,9 @@
}
},
"node_modules/@waku/enr": {
- "version": "0.0.30-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/enr/-/enr-0.0.30-16328a3.0.tgz",
- "integrity": "sha512-9D4WVJcuL/ncVsHb7KyeIkkDJia6UVdNK9Kf1u9BhvJBtzioPGgXrmp1O7CsXpIKVu4f8IVCu1Lc6hUVG84Chw==",
+ "version": "0.0.30-4997440.0",
+ "resolved": "https://registry.npmjs.org/@waku/enr/-/enr-0.0.30-4997440.0.tgz",
+ "integrity": "sha512-LHSJhCFCgEpHuoRWndUlE3JXXKUnHwokL+Av8zSvJPQTbpmSiH/RtFchk4w58muVGQNNzevGkXcNNEZ6/LhtZg==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@ethersproject/rlp": "^5.7.0",
@@ -1716,7 +1429,7 @@
"@libp2p/peer-id": "^5.0.1",
"@multiformats/multiaddr": "^12.0.0",
"@noble/secp256k1": "^1.7.1",
- "@waku/utils": "0.0.24-16328a3.0",
+ "@waku/utils": "0.0.24-4997440.0",
"debug": "^4.3.4",
"js-sha3": "^0.9.2"
},
@@ -1733,34 +1446,18 @@
}
},
"node_modules/@waku/interfaces": {
- "version": "0.0.31-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/interfaces/-/interfaces-0.0.31-16328a3.0.tgz",
- "integrity": "sha512-2jZCwBSBKd7PX12xJadMmxMpIKGR9SrQTnTqUfDD4aT72GQ9SpaqQDY5h+svMt/qjriZMBSUpITQQF04w0GIaw==",
+ "version": "0.0.31-4997440.0",
+ "resolved": "https://registry.npmjs.org/@waku/interfaces/-/interfaces-0.0.31-4997440.0.tgz",
+ "integrity": "sha512-dV0o08C+NDCPTV1xzw6nfikC+1GnBszcY3/Vf2qD6RiZZxNygt9de0N1/c1xgEdGx1eVSrk/XZg8ImNsSl5qLg==",
"license": "MIT OR Apache-2.0",
- "dependencies": {
- "@waku/proto": "0.0.11-16328a3.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@waku/message-hash": {
- "version": "0.1.20-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/message-hash/-/message-hash-0.1.20-16328a3.0.tgz",
- "integrity": "sha512-j1FHSgeJeKnc9Tet3/NcrNjOV1gKa6U3WXNe/uBRZsvn2P30Qg6a1Am2eMfxpmO3ggXz25ywe2WDNA/K4vk/RQ==",
- "license": "MIT OR Apache-2.0",
- "dependencies": {
- "@noble/hashes": "^1.3.2",
- "@waku/utils": "0.0.24-16328a3.0"
- },
"engines": {
"node": ">=20"
}
},
"node_modules/@waku/proto": {
- "version": "0.0.11-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/proto/-/proto-0.0.11-16328a3.0.tgz",
- "integrity": "sha512-yFGW6UaQC0MrffZV25uVDYC8sUxI6OpnizTfSyebLg84eihYHJyxTed7pD/EyjSl8vL9GFX8nDuksDbkIQ2OQw==",
+ "version": "0.0.11-4997440.0",
+ "resolved": "https://registry.npmjs.org/@waku/proto/-/proto-0.0.11-4997440.0.tgz",
+ "integrity": "sha512-DkFrWxzryt25mBmeRXwu/h3sR4yMGxRCujDc3fswUW8JssKdCu81QBcOaX6XBy6sda8D8lDdN0399MVY5g3Yyw==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"protons-runtime": "^5.4.0"
@@ -1770,9 +1467,9 @@
}
},
"node_modules/@waku/sdk": {
- "version": "0.0.32-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/sdk/-/sdk-0.0.32-16328a3.0.tgz",
- "integrity": "sha512-tHS2+lf7NMQekuxfrZOGsMWya35W8saxjMjPnIRE6FOq0Mlv1ADwso05W7iy9ExNJoFD3+4XVemDvc5RfIM75w==",
+ "version": "0.0.32-4997440.0",
+ "resolved": "https://registry.npmjs.org/@waku/sdk/-/sdk-0.0.32-4997440.0.tgz",
+ "integrity": "sha512-3PMJYOUSj6PNL/JGqsRBvKxd4n8RltCKXJ13S97h4x3iGUR5CCYtN5vXa71ePUIL+wtXEhoGVpOZVsgKrZrXuw==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@chainsafe/libp2p-noise": "16.0.0",
@@ -1782,12 +1479,11 @@
"@libp2p/ping": "2.0.1",
"@libp2p/websockets": "^9.0.1",
"@noble/hashes": "^1.3.3",
- "@waku/core": "0.0.36-16328a3.0",
- "@waku/discovery": "0.0.9-16328a3.0",
- "@waku/interfaces": "0.0.31-16328a3.0",
- "@waku/message-hash": "0.1.20-16328a3.0",
- "@waku/proto": "0.0.11-16328a3.0",
- "@waku/utils": "0.0.24-16328a3.0",
+ "@waku/core": "0.0.36-4997440.0",
+ "@waku/discovery": "0.0.9-4997440.0",
+ "@waku/interfaces": "0.0.31-4997440.0",
+ "@waku/proto": "0.0.11-4997440.0",
+ "@waku/utils": "0.0.24-4997440.0",
"libp2p": "2.1.8"
},
"engines": {
@@ -1795,16 +1491,17 @@
}
},
"node_modules/@waku/sdk/node_modules/@waku/core": {
- "version": "0.0.36-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.36-16328a3.0.tgz",
- "integrity": "sha512-+5GNNcy3FYnPKaL0RuJ01oo3+wMqkVhHPKdpRc3T0Rodi6IZsFCFdT1ob3A5rpFo5IURXqNjElUVBItIGrtupw==",
+ "version": "0.0.36-4997440.0",
+ "resolved": "https://registry.npmjs.org/@waku/core/-/core-0.0.36-4997440.0.tgz",
+ "integrity": "sha512-1Z8bKLL8fFU7DeeAw+7iDazeNOayudnOSHIT4sP0pxnEe2kpLAaF5C5E0TeRj4Jk43f8xzTKmCMXXwN8/IbFgw==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@libp2p/ping": "2.0.1",
- "@waku/enr": "0.0.30-16328a3.0",
- "@waku/interfaces": "0.0.31-16328a3.0",
- "@waku/proto": "0.0.11-16328a3.0",
- "@waku/utils": "0.0.24-16328a3.0",
+ "@noble/hashes": "^1.3.2",
+ "@waku/enr": "0.0.30-4997440.0",
+ "@waku/interfaces": "0.0.31-4997440.0",
+ "@waku/proto": "0.0.11-4997440.0",
+ "@waku/utils": "0.0.24-4997440.0",
"debug": "^4.3.4",
"it-all": "^3.0.4",
"it-length-prefixed": "^9.0.4",
@@ -1876,13 +1573,13 @@
}
},
"node_modules/@waku/utils": {
- "version": "0.0.24-16328a3.0",
- "resolved": "https://registry.npmjs.org/@waku/utils/-/utils-0.0.24-16328a3.0.tgz",
- "integrity": "sha512-zYNeWtRAYGJLVvE/8xnKmO5ctxuPD6/k9NAS/g3ES0o++kBrXNRFy3d1V1nKlnerwJuwYmB0RhfwFmz7ehtwWA==",
+ "version": "0.0.24-4997440.0",
+ "resolved": "https://registry.npmjs.org/@waku/utils/-/utils-0.0.24-4997440.0.tgz",
+ "integrity": "sha512-abWy/tUpJLEEX9lbTIl/1TfDuODc5Og55T5n1vtzrb7xTPdaBxOlx0jbGcQdZO/ZfrunKJEY7Vdb/Ofh4XW/DQ==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@noble/hashes": "^1.3.2",
- "@waku/interfaces": "0.0.31-16328a3.0",
+ "@waku/interfaces": "0.0.31-4997440.0",
"chai": "^4.3.10",
"debug": "^4.3.4",
"uint8arrays": "^5.0.1"
@@ -6039,9 +5736,9 @@
}
},
"node_modules/it-first": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.8.tgz",
- "integrity": "sha512-neaRRwOMCmMKkXJVZ4bvUDVlde+Xh0aTWr7hFaOZeDXzbctGVV/WHmPVqBqy3RjlsP7eRM0vcqNtlM8hivcmGw==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.9.tgz",
+ "integrity": "sha512-ZWYun273Gbl7CwiF6kK5xBtIKR56H1NoRaiJek2QzDirgen24u8XZ0Nk+jdnJSuCTPxC2ul1TuXKxu/7eK6NuA==",
"license": "Apache-2.0 OR MIT"
},
"node_modules/it-foreach": {
diff --git a/examples/dogfooding/package.json b/examples/dogfooding/package.json
index d978ced..ce70105 100644
--- a/examples/dogfooding/package.json
+++ b/examples/dogfooding/package.json
@@ -9,7 +9,7 @@
"dependencies": {
"@libp2p/crypto": "^5.0.5",
"@multiformats/multiaddr": "^12.3.1",
- "@waku/sdk": "0.0.32-16328a3.0",
+ "@waku/sdk": "0.0.32-4997440.0",
"libp2p": "^2.1.10",
"protobufjs": "^7.3.0",
"uint8arrays": "^5.1.0"
diff --git a/examples/dogfooding/src/index.ts b/examples/dogfooding/src/index.ts
index 58ca8a6..1231c4f 100644
--- a/examples/dogfooding/src/index.ts
+++ b/examples/dogfooding/src/index.ts
@@ -16,6 +16,7 @@ import {
incrementSentByMe,
incrementReceivedMine,
incrementReceivedOthers,
+ incrementFailedToSend,
addMessageToLog,
renderMessages,
getSearchTerm,
@@ -23,6 +24,8 @@ import {
const NUM_MESSAGES_PER_BATCH = 5;
let batchCounter = 0;
+let continuousSendingIntervalId: number | null = null;
+let isContinuousSending = false;
async function initializeApp() {
try {
@@ -65,15 +68,92 @@ async function initializeApp() {
addMessageToLog(chatMessage, 'sent');
} else {
console.warn(`Failed to send message ${i + 1} (ID: ${chatMessage.id}):`, result.failures);
+ const failureReason = result.failures.length > 0
+ ? String(result.failures[0].error) || 'Unknown error'
+ : 'No peers available';
+ const failedPeer = result.failures.length > 0
+ ? result.failures[0].peerId?.toString()
+ : undefined;
+
+ const failedMessage: ChatMessage = {
+ ...chatMessage,
+ failureInfo: {
+ error: failureReason,
+ peer: failedPeer
+ }
+ };
+ incrementFailedToSend();
+ addMessageToLog(failedMessage, 'failed');
}
} catch (error) {
console.error(`Error sending message ${i + 1} (ID: ${chatMessage.id}):`, error);
+ const failedMessage: ChatMessage = {
+ ...chatMessage,
+ failureInfo: {
+ error: String(error) || 'Unknown error'
+ }
+ };
+ incrementFailedToSend();
+ addMessageToLog(failedMessage, 'failed');
}
await new Promise(resolve => setTimeout(resolve, 100));
}
console.log("Message batch sending complete.");
};
+ const startContinuousSending = async () => {
+ if (isContinuousSending) return;
+ isContinuousSending = true;
+ const toggleButton = document.getElementById("toggleContinuousSendButton");
+ if (toggleButton) toggleButton.textContent = "Stop Continuous Sending";
+ if (toggleButton) toggleButton.classList.replace("btn-success", "btn-danger");
+
+ console.log("Starting continuous message sending...");
+ continuousSendingIntervalId = window.setInterval(async () => {
+ const encoder = createWakuEncoder();
+ const messageContent = `Continuous Send @ ${new Date().toLocaleTimeString()}`;
+ const payload = encodeMessage(messageContent);
+ const tempDecodedMessage = ProtoChatMessage.decode(payload);
+ const messageId = (tempDecodedMessage as any).id || `temp-id-${Date.now()}`;
+
+ const chatMessage: ChatMessage = {
+ id: messageId,
+ timestamp: Date.now(),
+ senderPeerId: getPeerId() || "unknown",
+ content: messageContent
+ };
+
+ try {
+ const result = await node.lightPush.send(encoder, {
+ payload,
+ timestamp: new Date(chatMessage.timestamp),
+ }, { autoRetry: true });
+
+ if (result.successes.length > 0) {
+ console.log(`Continuous message (ID: ${chatMessage.id}) sent successfully.`);
+ incrementSentByMe();
+ addMessageToLog(chatMessage, 'sent');
+ } else {
+ console.warn(`Failed to send continuous message (ID: ${chatMessage.id}):`, result.failures);
+ }
+ } catch (error) {
+ console.error(`Error sending continuous message (ID: ${chatMessage.id}):`, error);
+ }
+ }, 2000); // Send a message every 2 seconds
+ };
+
+ const stopContinuousSending = () => {
+ if (!isContinuousSending || continuousSendingIntervalId === null) return;
+ isContinuousSending = false;
+ const toggleButton = document.getElementById("toggleContinuousSendButton");
+ if (toggleButton) toggleButton.textContent = "Start Continuous Sending";
+ if (toggleButton) toggleButton.classList.replace("btn-danger", "btn-success");
+
+ console.log("Stopping continuous message sending...");
+ clearInterval(continuousSendingIntervalId);
+ continuousSendingIntervalId = null;
+ };
+
const subscribeToMessages = async () => {
const decoder = createWakuDecoder();
console.log("Subscribing to messages...");
@@ -106,6 +186,17 @@ async function initializeApp() {
});
}
+ const toggleContinuousSendButton = document.getElementById("toggleContinuousSendButton");
+ if (toggleContinuousSendButton) {
+ toggleContinuousSendButton.addEventListener("click", () => {
+ if (isContinuousSending) {
+ stopContinuousSending();
+ } else {
+ startContinuousSending();
+ }
+ });
+ }
+
const searchButton = document.getElementById("searchButton");
if (searchButton) {
searchButton.addEventListener("click", () => {
diff --git a/examples/dogfooding/src/message-service.ts b/examples/dogfooding/src/message-service.ts
index bc1539e..3e68b53 100644
--- a/examples/dogfooding/src/message-service.ts
+++ b/examples/dogfooding/src/message-service.ts
@@ -13,6 +13,10 @@ export interface ChatMessage {
timestamp: number;
senderPeerId: string;
content: string;
+ failureInfo?: {
+ error: string;
+ peer?: string;
+ };
}
export function encodeMessage(content: string): Uint8Array {
diff --git a/examples/dogfooding/src/ui-manager.ts b/examples/dogfooding/src/ui-manager.ts
index 4c0dcc0..b545628 100644
--- a/examples/dogfooding/src/ui-manager.ts
+++ b/examples/dogfooding/src/ui-manager.ts
@@ -6,10 +6,12 @@ const receivedOthersCountEl = document.getElementById("receivedOthersCount") as
const peerIdDisplayEl = document.getElementById("peerIdDisplay") as HTMLSpanElement;
const messageListEl = document.getElementById("messageList") as HTMLDivElement;
const searchInputEl = document.getElementById("searchInput") as HTMLInputElement;
+const failedToSendCountEl = document.getElementById("failedToSendCount") as HTMLSpanElement;
let sentByMe = 0;
let receivedMine = 0;
let receivedOthers = 0;
+let failedToSend = 0;
let currentMessages: ChatMessage[] = [];
let currentPeerId: string | undefined;
@@ -36,7 +38,12 @@ export function incrementReceivedOthers() {
if (receivedOthersCountEl) receivedOthersCountEl.textContent = receivedOthers.toString();
}
-export function addMessageToLog(message: ChatMessage, type: 'sent' | 'received-mine' | 'received-other') {
+export function incrementFailedToSend() {
+ failedToSend++;
+ if (failedToSendCountEl) failedToSendCountEl.textContent = failedToSend.toString();
+}
+
+export function addMessageToLog(message: ChatMessage, type: 'sent' | 'received-mine' | 'received-other' | 'failed') {
currentMessages.push(message);
renderMessages();
}
@@ -66,7 +73,12 @@ export function renderMessages(filterText?: string) {
let typeClass = '';
let senderPrefix = '';
- if (message.senderPeerId === currentPeerId) {
+ if (message.failureInfo) {
+ typeClass = 'failed';
+ senderPrefix = 'Me (Failed)';
+ item.style.backgroundColor = '#ffebee';
+ item.style.borderLeft = '4px solid #f44336';
+ } else if (message.senderPeerId === currentPeerId) {
typeClass = 'sent';
senderPrefix = 'Me';
} else {
@@ -96,6 +108,17 @@ export function renderMessages(filterText?: string) {
item.appendChild(senderInfoP);
item.appendChild(contentP);
item.appendChild(timestampP);
+
+ // Add failure information if present
+ if (message.failureInfo) {
+ const failureInfoP = document.createElement("p");
+ failureInfoP.classList.add("failure-info");
+ failureInfoP.style.color = '#d32f2f';
+ failureInfoP.style.fontWeight = 'bold';
+ failureInfoP.textContent = `Failed: ${message.failureInfo.error}${message.failureInfo.peer ? ` (Peer: ${message.failureInfo.peer.substring(0, 12)}...)` : ''}`;
+ item.appendChild(failureInfoP);
+ }
+
messageListEl.appendChild(item);
});
}
diff --git a/examples/dogfooding/src/waku-service.ts b/examples/dogfooding/src/waku-service.ts
index f2bf83a..9c681b6 100644
--- a/examples/dogfooding/src/waku-service.ts
+++ b/examples/dogfooding/src/waku-service.ts
@@ -26,6 +26,11 @@ export async function getWakuNode(): Promise {
clusterId: 42,
shards: [0]
},
+ discovery: {
+ dns: false,
+ peerExchange: true,
+ localPeerCache: false,
+ },
numPeersToUse: 2,
libp2p: {
privateKey,