* Parser support with all commands
* remove "dist" from all imports for consistency
* address most of my review comments
* small tweak to multi type mapping handling
* tweak multi commands / fix addScript cases
* nits
* addressed all in person review comments
* revert addCommand/addScript changes to multi-commands
addCommand needs to be there for sendCommand like ability within a multi.
If its there, it might as well be used by createCommand() et al, to avoid repeating code.
addScript is there (even though only used once), but now made private to keep the logic for bookkeeping near each other.
RESP3 Support
- Some commands responses in RESP3 aren't stable yet and therefore return an "untyped" ReplyUnion.
Sentinel
TypeMapping
Correctly types Multi commands
Note: some API changes to be further documented in v4-to-v5.md
* Support the NOVALUES option of HSCAN
Issue #2705
The NOVALUES option instructs HSCAN to only return keys, without their
values. This is materialized as a new command, `hScanNoValues`, given
that the return type is different from the usual return type of `hScan`.
Also a new iterator is provided, `hScanNoValuesIterator`, for the same
reason.
* skip hscan novalues test if redis < 7.4
* Also don't test hscan no values iterator < 7.4
---------
Co-authored-by: Shaya Potter <spotter@gmail.com>
* fix#2665 - handle errors in multi/pipeline replies
* fix MultiErrorReply replies type
* run tests on all versions, remove console.log, fix bug
* add errors iterator helper
* test `.errors()` as well
* Add SETINFO support to client connection, with the ability to disable sending the user agent if the end user desires. * Also enables modifying the user-agent with a tag to enable distinguishing different usages.
* 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>