- Export LightPushCodecV3 and LightPushCodecs from core package
- Add v3 protocol support tests with status code validation
- Add mock functions for v3 responses and RLN errors
- Test mixed v2/v3 peer scenarios
- Validate protocol error mapping and status code handling
- Fix linting errors by adding explicit return types
* add FF for auto recovery
* implement connection locking, connection maintenance, auto recovery, bootstrap connections maintenance and fix bootstrap peers dropping
* add ut for peer manager changes
* implement UT for Connection Limiter
* increase connection maintenance interval
* update e2e test
* make dialer use dial queue
* skip undiable peers
* cover new cases in tests
* expose dialer config at connection manager
* update tests with new config
* add more tests
* feat: implement shard retrieval for store and improve set store peers usage
* remove log
* remove only, improve condition
* implement smarter way to retrieve peers
* up tests
* update mock
* address nits, add target to eslint, revert to es2022
* 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 new filter api
* implement await on main methods on new Filter
* add info logs in new filter
* add logs to subscription impl
* remove lint supress
* add unit tests
* introduce E2E tests
* update e2e tests and add case for testing filter recovery after nwaku nodes replacement
* add new test cases for max limits and enable decoders as array on new filter
* fix edge case testing, correct test cases
* skip test
* update error message
* up text
* up text
* fix lint
* implement unsubscribeAll
* add js-dock to new filter
* add cspell
* implement TTL set for message history
* 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
* feat: API allows using specific nodes for protocol
* chore: dial provided now
* chore: store uses the node
* chore: update API
* chore: use protocol-level class for getting peer
* chore: use ConnectionManager for dial ops
* chore: address comments
* chore: fix type error
* chore: Waku.dial() proxies through ConnectionManager.dialPeer
* chore: fix dial
* chore: add ts-doc for dialPeer()
* chore: remove log
* chore: reduce ts-doc for an internal function
* chore: address comments
* chore: return types from connmanager.dialpeer()
* chore: reduce diff by not introducing breaking changes
* fix comment of default number of peers
* export default number of peers from base protocol sdk
* rename to light_push, move class to separate file
* move waitForRemotePeer to sdk package
* add todo to move waitForGossipSubPeerInMesh into @waku/relay
* clean up waitForRemotePeer, split metadata await from event and optimise, decouple from protocol implementations
* simplify and rename ILightPush interface
* use only connected peers in light push based on connections instead of peer renewal mechanism
* improve readability of result processing in light push
* fix check & update tests
* address tests, add new test cases, fix racing condition in StreamManager
* use libp2p.getPeers
* feat: confirm metadata and protocols needed in waitForRemotePeer
* rely on passed protocols and fallback to mounted
* add I prefix to Waku interface
* implement waku.connect method
* add docs to IWaku interface
* remove export and usage of waitForRemotePeer
* move wait for remote peer related to Realy out of @waku/sdk
* change tests to use new API
* fix linting
* update size limit
* rename .connect to .waitForPeer
* export waitForRemotePeer and mark as deprecated
* feat: add mocha tests to @waku/sdk and cover waitForRemotePeer (#2163)
* feat: add mocha tests to @waku/sdk and cover waitForRemotePeer
* add waitForRemote UTs
* remove junk
* feat: expose peerId and protocols from WakuNode (#2166)
* chore: expose peerId and protocols from WakuNode
* remove unused method
* move to private method
* rename to waitForPeers
* up test
* fix comment of default number of peers
* export default number of peers from base protocol sdk
* rename to light_push, move class to separate file
* move waitForRemotePeer to sdk package
* add todo to move waitForGossipSubPeerInMesh into @waku/relay
* clean up waitForRemotePeer, split metadata await from event and optimise, decouple from protocol implementations
* simplify and rename ILightPush interface
* use only connected peers in light push based on connections instead of peer renewal mechanism
* improve readability of result processing in light push
* fix check & update tests
* address tests, add new test cases, fix racing condition in StreamManager
* use libp2p.getPeers
* chore: upgrade libp2p and related packages
* fix: public key on peer id can now be undefined
* chore: upgrade remainder packages
* chore: fix tests
* chore: address comments
* chore: upgrade playwright and proto
* feat: write proto
* chore: move store v2 to a subdir
* chore: update v3 proto
* feat: create custom RPC
* feat: implement storev3 core
* chore: set store v3 as default
* chore: move v2 related code
* chore: update v2 imports
* feat: add store-v3 sdk implementation
* fix: rebase
* chore: add ts-doc for store query request params
* chore: update tests for new API
* fix: use nanoseconds instead of millisecond for timerange
* chore: improve store
* chore: remove store v2
* chore: update tests
* chore: fix legacy imports & proto
* tests: remove manual reversal as its part of the API, update incorrect cursor error msg
* chore: update default page size
* chore: account for MAX_PAGE_SIZE from nwaku
* fix: test
* fix: sorting tests
* chore: rename IReceiver subscribe
* feat!: new `subscribe() API that only takes in decoders and callback
* chore: `to_async_iterator` uses new function name
* chore: make `createSubscription` private, and shorten error handling
* chore: update subscribe return type
* tests: use new API
* fix: tests
* feat: introduce HealthManager
* feat: make health accessible on Waku object
* feat: update health from protocols
* chore: add access modifiers to healthmanager
* feat: use a HealthManager singleton
* chore: add tests for Filter, LightPush and Store
* feat: add overall node health
* chore: update protocol health to consider Store protocol
* chore: setup generic test utils instead of using filter utils
* tests: add a health status matrix check from 0-3
* chore: increase timeout for failing tests in CI
tests pass locally without an increased timeout, but fail in CI
* chore: move name inference to HealthManager
* tests: abstract away node creation and teardown utils
* fix: import
* feat: validate messages for individual filter nodes & perform renewals
* chore: fix spell check
* chore: use a max threshold before peer renewal
* chore: switch from a validation cycle timer to adhoc validation
* chore: add test
* fix: test
* chore: address comments
* fix: renewal without a new peer available
* chore: validating messages should be non-blocking
* chore: minor improvements
* chore: rm only
* chore: fix test
* chore: renewPeer() returns the new found peer
* feat: ping & peer renewal
* chore: add tests
* fix: tests
* chore: remove only
* chore: remove comments
* chore(tests): decrease timeout
* chore: add array index validation
* chore: remove only
* chore: move defaults into a separate variable
* chore: update lightpush with new API
* chore: include peer renewals within `ping` instead of `interval`
* chore: update tests
* chore: add new test
* chore: address comments
* chore: make `dropConnection` to be a public function
* feat: peers are maintained for protocols
- passes `ConnectionManager` to ProtocolSDK to allow disconnecting from within protocol
- maintains `numPeersToUse` for each protocol within BaseProtocolSDK
* fix: pass options to protocols
* chore: update interfaces to allow public access
* chore: improve logging on protocol
* fix: renew peer upon failure
* chore(tests): allow DefaultPubsubTopic
* feat(lightpush): write peer management tests
* chore: rename test
* feat: add lock to `maintainPeers()` to handle parallelisation of requests
fixes parallelisation of lightpush.send() requests
* fix: concurrent lightpush requests
* fix: test & improve peers fetching
* chore: use getter
* address comments
* chore: smaller improvements
* feat: attempt to improve time for first lightpush.send()
* chore: use `window.interval` for type-safety
* chore: remove delays
* feat: add autoRetry
* feat: `forceUseAllPeers` to wait for all connected peers to be resoled