* churn(test): use redislabs/client-libs-test for testing
This switches our testing infrastructure from redis/redis-stack to
redislabs/client-libs-test Docker image across all packages. This change
also updates the default Docker version from 7.4.0-v1 to 8.0-M04-pre.
* churn(test): verify CONFIG SET / GET compatibility with Redis 8
- Add tests for Redis 8 search configuration settings
- Deprecate Redis Search CONFIG commands in favor of standard CONFIG
- Test read-only config restrictions for Redis 8
* churn(test): handle Redis 8 coordinate precision in GEOPOS
- Update GEOPOS tests to handle increased precision in Redis 8 (17 decimal places vs 14)
- Add precision-aware coordinate comparison helper
- Add comprehensive test suite for coordinate comparison function
* test(search): adapt SUGGET tests for Redis 8 empty results
- Update tests to expect empty array ([]) instead of null for SUGGET variants
- Affects sugGet, sugGetWithPayloads, sugGetWithScores, and sugGetWithScoresWithPayloads
* test(search): support Redis 8 INFO indexes_all field
- Add indexes_all field introduced in Redis 8 to index definition test
* refactor!(search): simplify PROFILE commands to return raw response
- BREAKING CHANGE: FT.PROFILE now returns raw response, letting users implement their own parsing
* test: improve version-specific test coverage
- Add `testWithClientIfVersionWithinRange` method to run tests for specific Redis versions
- Refactor TestUtils to handle version comparisons more accurately
- Update test utilities across Redis modules to run tests against multiple versions, and not against latest only
* feat(auth): refactor authentication mechanism to use CredentialsProvider
- Introduce new credential providers: AsyncCredentialsProvider, StreamingCredentialsProvider
- Update client handshake process to use the new CredentialsProviders and to support async credentials fetch / credentials refresh
- Internal conversion of username/password to a CredentialsProvider
- Modify URL parsing to accommodate the new authentication structure
- Tests
* feat(auth): auth extensions
Introduces TokenManager and supporting classes to handle token acquisition, automatic
refresh, and updates via identity providers. This foundation enables consistent
authentication token management across different identity provider implementations.
Key additions:
- Add TokenManager to obtain and maintain auth tokens from identity providers
with automated refresh scheduling based on TTL and configurable thresholds
- Add IdentityProvider interface for token acquisition from auth providers
- Implement Token class for managing token state and TTL tracking
- Include configurable retry mechanism with exponential backoff and jitter
- Add comprehensive test suite covering refresh cycles and error handling
This change establishes the core infrastructure needed for reliable token
lifecycle management across different authentication providers.
* feat(auth): add Entra ID identity provider integration
Introduces Entra ID (former Azure AD) authentication support with multiple authentication flows
and automated token lifecycle management.
Key additions:
- Add EntraIdCredentialsProvider for handling Entra ID authentication flows
- Implement MSALIdentityProvider to integrate with MSAL/EntraID authentication library
- Add support for multiple authentication methods:
- Managed identities (system and user-assigned)
- Client credentials with certificate
- Client credentials with secret
- Authorization Code flow with PKCE
- Add factory class with builder methods for each authentication flow
- Include sample Express server implementation for Authorization Code flow
- Add comprehensive configuration options for authority and token management
* feat(test-utils): improve cluster testing
- Add support for configuring replica authentication with 'masterauth'
- Allow default client configuration during test cluster creation
This improves the testing framework's flexibility by automatically
configuring replica authentication when '--requirepass' is used and
enabling custom client configurations across cluster nodes.
* feat(auth): add EntraId integration tests
- Add integration tests for token renewal and re-authentication flows
- Update credentials provider to use uniqueId as username instead of account username
- Add test utilities for loading Redis endpoint configurations
- Split TypeScript configs into separate files for samples and integration tests
- Remove `@redis/authx` package and nest it under `@`
* 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>