* new tests for static sharding
* store tests
* small fixes after ci run
* small fixes after ci run
* small fixes after ci run
* multiple pubsubtopics on nwaku node
* `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>
* add Firefox and Webkit to karma testing
* try adding install to CI
* add display var
* try container prop
* try FirefoxHeadless
* set env var differently
* apply for all configs
* use root karma config
* fix relative link in karma config
* add log
* return as before
* fix path pattern
* move karma to the root
* try moving tsconfig
* return ts config
* use container for playwright
* add FF for firefox and chrome
* use command for playwright
* add retries
* remove retries
* add tests-browser package
* rename to browser
* add playwright and experiment with karma
* add lock
* remove karma
* remove readme
* replace default app, rename
* add and configure playwright
* up package-lock
* use @waku/create-app, add scripts to handle it
* remove tsconfig
* update playwright script
* move dependency to root
* set folder
* up
* try install step
* add playwright dep
* remove step
* add es module utils
* fix import issue
* run on master
* use image prop
* use dotenv-flow, set .env.local
* add log, use dotenv-flow
* add env var to ci
* add env vars to CI
* return install of deps
* return container & log build step
* upgrade @waku/create-app
* fix firefox in container problem
* 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
* new lightpush tests
* fixes after CI run
* split tests into 2 files
* small fix
* address code review comments
* small fix after CI run
---------
Co-authored-by: Danish Arora <35004822+danisharora099@users.noreply.github.com>
* add bulk of tests
* refactored and improved tests
* add more comments
* fixes after CI run
* split filter tests into mulitple suites
* split filter tests into mulitple suites
* maintain pings in a hashmap
* convert `KeepAliveManager` into a singleton
* chore: fix an unrelated cyclic dependency error
* update `selectPeerForProtocol` to return peer with the lowest latency
* use the new KeepAliveManager API
* use the new API for `selectPeerForProtocol`
* add tests
* use PeerData to hold the ping instead of a new variable
* improve tests for readability
* move back KeepAliveManager from singleton
* reenable all tests
* minor improvements
* improve error handling
* convert .then() syntax to async/await
* 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