* refactor pubsub, add support for sharded pub sub
* run tests in redis 7 only, fix PUBSUB SHARDCHANNELS test
* add some comments and fix some bugs
* PubSubType, not PubSubTypes 🤦♂️
* remove test.txt
* fix some bugs, add tests
* add some tests
* fix#2345 - allow PING in PubSub mode (remove client side validation)
* remove .only
* revert changes in cluster/index.ts
* fix tests minimum version
* handle server sunsubscribe
* add 'sharded-channel-moved' event to docs, improve the events section in the main README (fix#2302)
* exit "resubscribe" if pubsub not active
* Update commands-queue.ts
* Release client@1.5.0-rc.0
* WIP
* use `node:util` instead of `node:util/types` (to support node 14)
* run PubSub resharding test with Redis 7+
* fix inconsistency in live resharding test
* add some tests
* fix iterateAllNodes when starting from a replica
* fix iterateAllNodes random
* fix slotNodesIterator
* fix slotNodesIterator
* clear pubSubNode when node in use
* wait for all nodes cluster state to be ok before testing
* `cluster.minimizeConections` tests
* `client.reconnectStrategry = false | 0` tests
* sharded pubsub + cluster 🎉
* add minimum version to sharded pubsub tests
* add cluster sharded pubsub live reshard test, use stable dockers for tests, make sure to close pubsub clients when a node disconnects from the cluster
* fix "ssubscribe & sunsubscribe" test
* lock search docker to 2.4.9
* change numberOfMasters default to 2
* use edge for bloom
* add tests
* add back getMasters and getSlotMaster as deprecated functions
* add some tests
* fix reconnect strategy + docs
* sharded pubsub docs
* Update pub-sub.md
* some jsdoc, docs, cluster topology test
* clean pub-sub docs
Co-authored-by: Simon Prickett <simon@redislabs.com>
* reconnect startegy docs and bug fix
Co-authored-by: Simon Prickett <simon@redislabs.com>
* refine jsdoc and some docs
Co-authored-by: Simon Prickett <simon@redislabs.com>
* I'm stupid
* fix cluster topology test
* fix cluster topology test
* Update README.md
* Update clustering.md
* Update pub-sub.md
Co-authored-by: Simon Prickett <simon@redislabs.com>
* Add a test for legacyMode pingInterval
* Apply patch to fix legacy mode ping interval
* use this.#sendCommand instead of this.#v4
Co-authored-by: Leibale <me@leibale.com>
* Ensure that transformReply is optionally passed through to commands in legacy mode within multi
* Execute transformReply on legacy #sendCommand
* Scope transform changes to hGetAll
* Extensible method of transforming legacy replies, expands RedisCommand interface
* check `TRANSFORM_LEGACY_REPLY` on client creation (rather then on command exec), add tests
Co-authored-by: Leibale Eidelman <me@leibale.com>
* fix#1598fix#2276 - add `pingInterval` to client config
* setPingTimer on ready (instead of on connect)
* use isReady (instead of isOpen) and fix test
* Update client-configuration.md
* Add reject multi chain on client disconnect assertion to client test suite
* Reject multi chain exec with client closed error after client disconnect
* Export setOptions type
* Export setOptions type in commands
* Revert "Export setOptions type in commands"
* Export SetOptions type in redis client
* Export SetOptions type in @redis/client
* Fix lint
* fix: loop over arguments instead of spreading
* update to use concat
* use the returned array from pushVerdictArguments (instead of assuming it'll push to the original array)
* fix "Type 'RedisCommandArguments' is not assignable to type 'string[]'."
* fix "Argument of type 'RedisCommandArgument | RedisCommandArguments[]' is not assignable to parameter of type 'RedisCommandArgument | RedisCommandArgument[]'"
* fix "Type 'RedisCommandArguments' is not assignable to type 'string[]'"
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
* Fix issue with buffers in objects using hSet
When using hSet with an object, any buffer values inside the object are converted to strings instead of left as buffers.
This fix specifically handles the special case of buffers, whilst casting everything else strings (to continue "gracefully" handling the case where the value not a valid type).
* Update HSET.ts
* Update HSET.spec.ts
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>