* fix(client): XCLAIM & XAUTOCLAIM after a TRIM might return nils
* fix(client): Fix race condition in specs
* revert test utils changes
* make tests faster
---------
Co-authored-by: Leibale Eidelman <me@leibale.com>
* Add support for command 'PUBSUB SHARDNUMSUB'
* Use import from PUBSUB_SHARDNUMSUB
* Add test case for non-empty reply
* clean tests
* run tests in redis >= 7, fix integration test
---------
Co-authored-by: Leibale Eidelman <me@leibale.com>
* - Added RESTORE functionality
* add FIRST_KEY_INDEX, fix tests, clean example, add example to examples table
* use returnBuffers in test
---------
Co-authored-by: Leibale Eidelman <me@leibale.com>
* Connect returns the instance of the client
* Added a test
* No auto setup
* Added a bit of docs
* fix the return type, test, and the docs
* fix return type
* Update packages/client/lib/client/index.spec.ts
Co-authored-by: Francisco Presencia <franciscop@users.noreply.github.com>
---------
Co-authored-by: Leibale Eidelman <me@leibale.com>
* cluster extractFirstKey skip commandOptions() passed to args
* cluster with commandOptions unit test
* improve performance
* fix type
* fix type
---------
Co-authored-by: Leibale Eidelman <me@leibale.com>
* Fix multi.exec with empty queue and previous watch
When calling exec on a multi instance which you did not use, no command is sent currently.
This is a problem for watched keys, because no EXEC means no unwatch, which might cause hard-to-debug problems.
Proposed Fix: Sending UNWATCH
* execute empty multi command (instead of skipping)
* Update index.ts
* Update index.ts
* Update multi-command.ts
* Update multi-command.ts
* Update multi-command.ts
* Update multi-command.ts
* short circuit empty pipelines
* Update index.ts
---------
Co-authored-by: Leibale <me@leibale.com>
* 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>