* refactor: rename as this method does not check empty payloads
* feat: fail early when trying to send empty payload
---------
Co-authored-by: Sasha <oleksandr@status.im>
* `ProtocolCreateOptions` now has `pubSubTopic` as `pubSubTopic[]`
* chore: update encoder & decoder to support `PubSubTopic`
* feat(protocols): allow multiple `PubSubTopic[]`
* feat(relay): allow multiple `PubSubTopic[]`
* chore(tests): update for new API
* chore: minor fixes
* chore: make store more robust
* fix(relay): correctly set types
* chore(address comments): update terminology around configured pubsub topics
* chore(address comments): minor refactoring
* chore(relay): split `subscribe` into smaller functions for readability & modularity
* chore(address comments): refactor `waitForGossipSubPeerInMesh`
* chore(store): only allow to query one `pubSubTopic`
* fix: `store` bug
* feat(tests): add some basic tests
* sharding utils
* address comments
* feat(relay): re-add API for `getMeshPeers`
* update error message
Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>
* refactor for new API
* feat: simplify handling of observers (#1614)
* refactor: simplify handling of observers
* refactor: Remove redundant PubSubTopic from Observer
* use `??` instead of `||`
* update `pubsubTopic` to `pubSubTopic`
* update `interval` typo
* change occurence of `pubsubTopic` to `pubSubTopic`
* relay: rm `getAllMeshPeers` and make `pubSubTopics` public
* relay: use `push_or_init_map` and move to `utils`
* fix: update API for tests
* fix: relay waitForRemotePeer
---------
Co-authored-by: fryorcraken <110212804+fryorcraken@users.noreply.github.com>
* update typescript, define in root package.json
* update typedoc and fix typedoc comments
* update dev version of tsconfig
* set module and resolution for tsconfig dev
* bump ts plugins
* set order of typedoc generation
* turn off warnings as errors setting
* set peer-exchange with default bootstrap
* only initialise protocols with bootstrap peers
* update package
* update package-lock
* refactor `getPeers` while setting up a protocol
* move codecs to `@waku/interfaces`
* lightpush: send messages to multiple peers
* only use multiple peers for LP and Filter
* fix: ts warnings
* lightpush: tests pass
* update breaking changes for new API
* move codecs back into protocol files
* refactor: `getPeers()`
* rm: log as an arg
* add tsdoc for getPeers
* add import
* add prettier rule to eslint
* add: peer exchange to sdk as a dep
* fix eslint error
* add try catch
* revert unecessary diff
* revert unecessary diff
* fix imports
* convert relaycodecs to array
* remove: peerId as an arg for protocol methods
* keep peerId as an arg for peer-exchange
* remove: peerId from getPeers()
* lightpush: extract hardcoded numPeers as a constant
* return all peers if numPeers is 0 and increase readability for random peers
* refactor considering more than 1 bootstrap peers can exist
* use `getPeers`
* change arg for `getPeers` to object
* address comments
* refactor tests for new API
* lightpush: make constant the class variable
* use `maxBootstrapPeers` instead of `includeBootstrap`
* refactor protocols for new API
* add tests for `getPeers`
* skip getPeers test
* rm: only from test
* move tests to `base_protocol.spec.ts`
* break down `getPeers` into a `filter` method
* return all bootstrap peers if arg is 0
* refactor test without stubbing
* address comments
* update test title
* move `filterPeers` to a separate file
* address comments & add more test
* make test title more verbose
* address comments
* remove ProtocolOptions
* chore: refactor tests for new API
* add defaults for getPeers
* address comments
* rm unneeded comment
* address comment: add diversity of node tags to test
* address comments
* fix: imports
* add: test for multi enrtree + static multiaddr
* wrap up test
* rm: only
* move test to optional file
* dns-disc: setup default for node requirements & move to constants
* chore: restructure DNS Discovery for better readability
* fix: build
* fix: type import
* fix: test expect
* rm: only
* update packagelock
* use new libp2p interface
* fix linting errors
* move KeepAliveOptions to dedicated interface file
* update export for KeepAlive
* expose `ConnectionManager` on the waku node
* update ConnectionManager test to use the exposed API
* rm: only for the test
* disable libp2p autodial
* improve logs for peer-exchange
* add a function to fetch discovered and connected peers by discovery
* connection-manager: introduce event emissions by discovery
* write a spec test for events
* minor code improvement for peer-exchange
* rm: comment
* rename peer event result interface
* switch to using libp2p EventEmitter
* rename variables for readability
* reset peer-exchange spec file
* address review
* test: minor refactor
* fix: failing test
* increase peer IDs to test against for attemptDial
* improve structuring
* rm: v1
* fix v2 imports
* remove tests for filter v1
* set filter v1 as default and rm v2 completely
* change import name for filter v2
* rename FilterV2 to Filter completely
* fix run check
* upgrade libp2p version, partially update protocols, rename to IBaseProtocol
* complete transition for protocols
* complete transition of connection maanger
* finish sdk
* complete core
* complete relay
* complete peer-exchange
* complete dns-discovery
* add components field to Libp2p interface and use it in core
* add type hack for Libp2p creation:
* finish waku node test
* complete relay test
* complete peer exchange
* complete dns peer discovery test
* add missing dependency to relay
* fix new peer store integration
* improve initialization of pubsub
* add catch for missing peer
* update test and remove extra dependency
* prevent error throw
* fix edge case with peerStore
* fix peer exchange
* fix protocols used
* fix test with another evnet
* bump libp2p and interfaces
* add missing package
* fix peer-exchange problem
* prefer libp2p peerDiscovery for integration tests
* fix import
* increate timeout
* return test against Test fleet
* remove await for peer:update
* increase timeout
* add await for peerStore
* comment event for testing
* fix lint
* remove bind
* fix stub
* decouple to separate test case
* move back to explicit build
* remove only
* do not test event
* allow passing of multiple ENRs to DNS Discovery
* add test for >1 ENR to DNS Disc
* address comments
* feat: dial multiple peers in parallel (#1380)
* ensure discovered peers are dialed in parallel
* cap parallel dials
* drop connection to bootstrap peer if >set connected
* switch to american english
* improve promises and error logging
* implement proto
* implement filter v2
* add tests
* minor improvements
- make unsubscribe functions private in
filter
- enable all tests
* enable all tests
* readd multiaddrinput
* address comment removals
* unsubscribe based on contentFilters passed
* update unsubscribe function parameters in test
* reset interfaces & filter v1
* refactor filterv2 into 2 classes
- removes generics from types on filter which means
manual typecasting to filter version is required on
consumer side
- defaults to filterv2
- splits filterv2 into 2 classes:
- one to create the subscription object with a
peer which returns the second class
- the other to manage all subscription functions
* updates filter tests for the new API
- also fixes an interface import
* update `toAsyncIterator` test for Filter V1
* implement IReceiver on FilterV2
* remove return values from subscription functions
* update `to_async_iterator`
* address variable naming
* add tsdoc comments for hidden function
* address minor comments
* update docs to default to filter v2
* address comments
* rename `wakuFilter` to `wakuFilterV1`
* chore: Remove static variables (#1371)
* chore: Remove static variables
- Remove internal types from `@core/interfaces`
- Remove data being redundantly stored (pubsub topic)
- Remove usage of static variables
- Clean up callbacks and decoders when using `unsubscribe`
- Clean up callbacks and decoders when using `unsubscribeAll`
* fix setting activeSubscription
---------
Co-authored-by: danisharora099 <danisharora099@gmail.com>
* make activeSub getter and setter private
* update size-limit
---------
Co-authored-by: fryorcraken.eth <110212804+fryorcraken@users.noreply.github.com>
- Replace exception pattern with a result pattern as it better fits the
usage.
- merge few maps to prefer chaining to assign var after var.
- Make `isDefined` type helper a common util function
* initialises ConnectionManager and KeepAliveManager
ports from previous PR and makes necessary improvements and reductions
* address: comments
* map a ConnectionManager instance with a WakuNode
* abstract event listeners logic
* minor fix
* minor cleaning
* instantiate KeepAliveManager instead of extending
* fix build and enable all tests
* fix CI
* address review
* refine event handlers
- only removes the previously attached callback from
the event handlers while shutting down service
- removes the requirement of passing around
`keepAliveOptions` and `relay` inside of
`ConnectionManager`
* add verbosity to interface
* make `dialPeer()` more readable
* use set to push tags to avoid duplicates
* fix: merge build
* remove: logging function
* rename startService and stopService
* remove: future TODO
added that as part of future refactor
* use the new libp2p api
* initialise options in constructor//fix TS error
* remove stale export
* address principal review
* reset test timeout to master
* remove peer-exchange from @waku/core
- also removes the manual test for peer-exchange (assumption is that the
only way to initialise peer-exchange is through libp2p's peerDiscovery and
not manually) (ref:
https://github.com/waku-org/js-waku/pull/1158#discussion_r1108055234)
# Please enter the commit message for your changes. Lines
starting
* fix: build
* update interop test
* decrease test duration for px auto discovery
* rm: only for tests
* address comment
* 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
@waku packages are expected to (dev)depend on @waku/interfaces to
implement them. Hence, to avoid possible cyclic (dev)dependency, define
IEnr interface and use it as a type across @waku/packages.