* remove IBaseProtocol
* fix references, interfaces and integration
* fix ci
* up mock
* up lock
* add mock for local storage
* add missing prop, fix tests
* up lock
* create retry manager
* update tests
* add retry manager tests, update peer manager
* fix start & merge with master
* return send to many logic
* add new error handling
* add sections to protocol errors
* fix check
* up test
* add waku.start in test
* fix check and test
* improve name
* up lock
* make ConnectionManager use ctor
* reform connection manager configurations
* remove log param from peerManager
* make PeerManager use only ConnectionManager, move getPeers to ConnectionManager, remove not needed code
* remove allPeers and connectedPeers from BaseProtocolCore, update tests, add getPeers for IWaku
* use only one peerManager from Waku object
* remove IBaseProtocolSDK and merge with PeerManager
* re-implement peerManager, remove ProtocolUseOptions
* remove not needed test, up lock
* update deps and lock
* remove old test for peerManager, fix check and spell
* rename to getConnectedPeers
* feat: improve filter subscriptions (#2193)
* add message cache to Filter
* remove WakuOptions and use only ProtocolCreateOptions
* move subscribe options to createLightNode Fitler protocol options
* rename SubscriptionManager to Subscription
* rename to CreateNodeOptions
* add warning
* feat: introduce subscription manager (#2202)
* feat: inroduce subscription manager
* fix: make pipeline succeed (#2238)
* fix test
* use hardcoded value
* update playwright
* fix test:browser
* up lock
* make peer retrieval probabilistic
* add comments
* up lightpush tests
* add tests for peer_manager, improve folder structure
* create named files for protocols
* create named files, simplify project structure
* remove only
* setup a generic protocol result type (DRY)
* metadata: use generic
* lightpush: use generic
* peer-exchange: use error codes + generic + update tests
* add issue link to skipped test
* tests: improve while loop readability
* setup a custom Logger with log level support
* refactor codebase for to use new Logger with log levels
* disallow usage of `debug` directly / only allow usage in/through custom Logger
* remove `debug` from logger
* 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>
* 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
* pass log as an arg to baseprotocol
* optimistically create and use streams for light protocols
* refactor BaseProtocol for readability
* use optimistic stream selection in protocols
* use a new stream for every request instead of reusing
* replenish streams correctly
* create StreamManager
* refactor for a single stream
* fix: listener binds
* declare streamManager as a class var isntead of extending
* remove stream destruction as it happens by default
* simplify logic & address comments
* fix: bind typo
* refactor for improvements
* fix typedoc
* rm: lock
* restructure StreamManager for readbility
* remove log as an arg
* use newStream as a facade in BaseProtoocl
* 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