* handle a breaking edge case
- changes interval from static to increasing
- handles an edge case which resulted in unwanted return
from a function
* modularise code & make defaults configurable
- breaks the backoff code into a separate function
- makes default values configurable
- improve interval handling
* clean code for checking peer in peerStore
* address comments
* rename `backoff` to `abort`
* add locally run nwaku interop test for peer-exchange
* replace `--listen-address` with `--nat:extip`
* address improvements
* use DNS discovery as default bootstrap discovery
* fix: failing CI
* fix: typo
* introduce tagging, components & explicit tests
libp2p wasn't by default tagging peers with dns-discovery as
"bootstrap"
-- we are manually now tagging peers with "dns-discovery", and then
running tests according to that
* fix: package installs
* fix: typedoc CI
* change tag name from dns-discovery to bootstrap
* update tag name in test
* fix CI
* address review
* add: prod enrtree and use as default
* fix: change DoH DNS provider
opendns did not support CORS -- switched it with AhaDNS that does not
persist logs
* Update packages/dns-discovery/src/dns_over_https.ts
Co-authored-by: fryorcraken.eth <110212804+fryorcraken@users.noreply.github.com>
* add ahadns to cspell
* increase timeout on compliance test
possibly the new dns provider we use is taking longer than
opendns to resolve is why the test did not pass with
5000ms
Co-authored-by: fryorcraken.eth <110212804+fryorcraken@users.noreply.github.com>
* temp-add: debugging
* fix: ENR root signature verification
the nodes in the TXT/fleet were updated causing the publicKey to change
and verification to fail
* add: libp2p compliance tests
* fix: bind function
`bind` was being passed an empty object reference
* fix: tests
* merge with master
* chore: address review
- move compliance test to dev dependency
- move global mocha timeout to test specific timeout
* chore: update enrtree pubkey and fqdn
ref: https://github.com/status-im/infra-nim-waku/issues/64
* chore: update libp2p-peer-discovery-compliance-tests
ref: https://github.com/libp2p/js-libp2p-interfaces/pull/328
* chore: fix typedoc errors
* add: dns-discovery to dependencies
* fix: discovery for peer-exchange
use the bootstrap node as a starter to send a
peer-exchange query to, and emit the response
peers received from it for further connection to
libp2p using the peer-discovery interface
* init: test for libp2p bootstrap/discovery for
peer-exchange
* temp-add: console.logs for easier debugging
* add: peer discovery test & rm: console.logs
* chore: rm and redundant spec test
* add: interval for peer exchange queries
we set an interval to query a peer every 5 minutes
for peer exchange, and add new peers if found
* address: reviews
- add `type` for imports not using values
- better handling for peer-exchange query interval
* chore: fix tsc for peer-exchange
use node16 for module resolution
* chore: add extra exports to fix typedoc warnings
ref: https://github.com/TypeStrong/typedoc/issues/1739
This is because `IDecodedMessage` does not include all possible field of
messages from a specific decoder (ie, signature public key, etc) so
usage of the `DecodedMessage` class associated with the used decoder is
preferred.
* chore: change `localhost` -> `127.0.0.1`
There is a change in how Node does DNS resolution in Node 18 vs
16 -- `localhost` resolves to `::1`, which is the equivalent of
`127.0.0.1` but in IPv6 instead of IPv4. The server however is
only listening on IPv4.
Reference:
https://github.com/nodejs/node/issues/40702#issuecomment-958143154
* refactor: change node version on CI from 16 to 18
`createEncoder`, `createDecoder` and `DecodedMessage` are function/types
useful to the user so they should have easy access to it.
We still export `Decoder` and `Encoder` but in a path so it cam be
re-used by `@waku/message-encryption`.
Reasoning: by exposing the `Decoder` and `Encoder` classes to the user,
the user may care about them, try to use the method etc.
By "hiding" them away and providing `create*` help, the aim is for the
user to just call a function instead of instantiating a class.
Also, `V0` does not provide much information to the user so removing it.
The messages were sent at the same time over light push so there was
no strong order preservation from the behaviour.
Correction: order does not matter, just check that messages aren't
present.
Messages were only checked for `ephemeral` being false + one test was
doing several checks.
Correction: split the test and use light push + filter to check
ephemeral field value preservation.