* update workflows & README
* add .deepsource.toml
* fix client.quit, add error events on cluster, fix some "deepsource.io" warnings
* Release 4.0.0-rc.1
* add cluster.duplicate, add some tests
* fix#1650 - add support for Buffer in some commands, add GET_BUFFER command
* fix GET and GET_BUFFER return type
* update FAQ
* Update invalid code example in README.md (#1654)
* Update invalid code example in README.md
* Update README.md
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
* fix#1652
* ref #1653 - better types
* better types
* fix 54124793ad
* Update GEOSEARCHSTORE.spec.ts
* fix#1660 - add support for client.HSET('key', 'field', 'value')
* upgrade dependencies, update README
* fix#1659 - add support for db-number in client options url
* fix README, remove unused import, downgrade typedoc & typedoc-plugin-markdown
* update client-configurations.md
* fix README
* add CLUSTER_SLOTS, add some tests
* fix "createClient with url" test with redis 5
* remove unused imports
* Release 4.0.0-rc.2
* add missing semicolon
* replace empty "transformReply" functions with typescript "declare"
* fix EVAL & EVALSHA, add some tests, npm update
* fix#1665 - add ZRANGEBYLEX, ZRANGEBYSCORE, ZRANGEBYSCORE_WITHSCORES
* new issue templates
* add all COMMAND commands
* run COMMAND & COMMAND INFO tests only on redis >6
* Create SECURITY.md
* fix#1671 - add support for all client configurations in cluster
* ref #1671 - add support for defaults
* remove some commands from cluster, npm update, clean code,
* lock benny version
* fix#1674 - remove `isolationPoolOptions` when creating isolated connection
* increase test coverage
* update .npmignore
* Release 4.0.0-rc.3
* fix README
* remove whitespace from LICENSE
* use "export { x as y }" instead of import & const
* move from "NodeRedis" to "Redis"
* fix#1676
* update comments
* Auth before select database (#1679)
* Auth before select database
* fix#1681
Co-authored-by: leibale <leibale1998@gmail.com>
* Adds connect-as-acl-user example. (#1684)
* Adds connect-as-acl-user example.
* Adds blank line at end.
* Set to private.
* Adds examples folder to npmignore.
* Adds Apple .DS_Store file to .gitignore (#1685)
* Adds Apple .DS_Store file.
* Add .DS_Store to .npmignore too
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
* move examples
* clean some tests
* clean code
* Adds examples table of contents and contribution guidelines. (#1686)
* Updated examples to use named functions. (#1687)
* Updated examples to user named functions.
* Update README.md
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
* update docs, add 6.0.x to the tests matrix, add eslint, npm update, fix some commands, fix some types
Co-authored-by: Simon Prickett <simon@crudworks.org>
* fix tests with redis 6.0.x
* fix ACL GETUSER test
* fix client.quit and client.disconnect
* fix ACL GETUSER
* Adds TypeScript note and corrects a typo.
* Fixes a bug in the Scan Iterator section. (#1694)
* Made examples use local version.
* Add `lua-multi-incr.js` example (#1692)
Also fix syntax error in the lua example in the README
Closes#1689.
* Add(examples): Create an example for blPop & lPush (#1696)
* Add(examples): Create an example for blPop & lPush
Signed-off-by: Aditya Rastogi <adit.rastogi2014@gmail.com>
* Update(examples): fix case, add timeout, update readme
Signed-off-by: Aditya Rastogi <adit.rastogi2014@gmail.com>
Closes#1693.
* Add command-with-modifiers.js example (#1695)
* Adds TypeScript note and corrects a typo.
* Adds command-with-modifiers example. (redis#1688)
* Adds command-with-modifiers example. (redis#1688)
* Adds command-with-modifiers example. (redis#1688)
* Removed callbacks.
Co-authored-by: Simon Prickett <simon@redislabs.com>
Closes#1688.
* Issue # 1697 FIX - creates an example script that shows how to use the SSCAN iterator (#1699)
* #1697 fix for set scan example
* adds the js file
* adds comment
* Minor layout and comment adjustment.
Co-authored-by: srawat2 <shashank19aug>
Co-authored-by: Simon Prickett <simon@redislabs.com>
Closes#1697.
* fix#1706 - HSET return type should be number
* use dockers for tests, fix some bugs
* increase dockers timeout to 30s
* release drafter (#1683)
* release drafter
* fixing contributors
* use dockers for tests, use npm workspaces, add rejson & redisearch modules, fix some bugs
* fix#1712 - fix LINDEX return type
* uncomment TIME tests
* use codecov
* fix tests.yml
* uncomment "should handle live resharding" test
* fix#1714 - update README(s)
* add package-lock.json
* update CONTRIBUTING.md
* update examples
* uncomment some tests
* fix test-utils
* move "all-in-one" to root folder
* fix tests workflow
* fix bug in cluster slots, enhance live resharding test
* fix live resharding test
* fix#1707 - handle number arguments in legacy mode
* Add rejectedUnauthorized and other TLS options (#1708)
* Update socket.ts
* fix#1716 - decode username and password from url
* fix some Z (sorted list) commands, increase commands test coverage
* remove empty lines
* fix 'Scenario' typo (#1720)
* update readmes, add createCluster to the `redis` package
* add .release-it.json files, update some md files
* run tests on pull requests too
* Support esModuleInterop set to false. (#1717)
* Support esModuleInterop set to false.
When testing the upcoming 4.x release, we got a bunch of typescript
errors emitted from this project.
We quickly realized this is because the library uses the esModuleInterop
flag. This makes some imports _slightly_ easier to write, but it comes
at a cost: it forces any application or library using this library to
*also* have esModuleInterop on.
The `esModuleInterop` flag is a bit of a holdover from an earlier time,
and I would not recommend using it in libraries. The main issue is that
if it's set to true, you are forcing any users of the library to also
have `esModuleInterop`, where if you keep have it set to `false` (the
default), you leave the decision to the user.
This change should have no rammifications to users with
`esModuleInterop` on, but it will enable support for those that have it
off.
This is especially good for library authors such as myself, because I
would also like to keep this flag off to not force *my* users into this
feature.
* All tests now pass!
* Move @types/redis-parser into client sub-package
and removed a comma
* npm update, remove html from readme
* add tests and licence badges
* update changelog.md
* update .npmignore and .release-it.json
* update .release-it.json
* Release client@1.0.0-rc.0
* revert d32f1edf8a
* fix .npmignore
* replace @redis with @node-redis
* Release client@1.0.0-rc.0
* update json & search version
* Release json@1.0.0-rc.0
* Release search@1.0.0-rc.0
* update dependencies
* Release redis@4.0.0-rc.4
Co-authored-by: Richard Samuelsson <noobtoothfairy@gmail.com>
Co-authored-by: mustard <mhqnwt@gmail.com>
Co-authored-by: Simon Prickett <simon@redislabs.com>
Co-authored-by: Simon Prickett <simon@crudworks.org>
Co-authored-by: Suze Shardlow <SuzeShardlow@users.noreply.github.com>
Co-authored-by: Joshua T <buildingsomethingfun@gmail.com>
Co-authored-by: Aditya Rastogi <adit.rastogi2014@gmail.com>
Co-authored-by: Rohan Kumar <rohan.kr20@gmail.com>
Co-authored-by: Kalki <shashank.kviit@gmail.com>
Co-authored-by: Chayim <chayim@users.noreply.github.com>
Co-authored-by: Da-Jin Chu <dajinchu@gmail.com>
Co-authored-by: Henrique Corrêa <75134774+HeCorr@users.noreply.github.com>
Co-authored-by: Evert Pot <me@evertpot.com>
* #1697 fix for set scan example
* adds the js file
* adds comment
* Minor layout and comment adjustment.
Co-authored-by: srawat2 <shashank19aug>
Co-authored-by: Simon Prickett <simon@redislabs.com>
Closes#1697.
* init v4
* add .gitignore to benchmark
* spawn redis-servers for tests,
add some tests,
fix client auth on connect
* add tests coverage report
* add tests workflow, replace nyc text reporter with text-summary
* run tests with node 16.x & redis 6.x only (for now)
* add socket events on client,
stop reconnectiong when manually calling disconnect,
remove abort signal listener when a command is written on the socket
* add isOpen boolean getter on client, add maxLength option to command queue, add test for client.multi
* move to use CommonJS
* add MULTI and EXEC commands to when executing multi command, make client.multi return type innerit the module commands, clean some tests, exclute spec files from coverage report
* missing file from commit 61edd4f1b5
* exclude spec files from coverage report
* add support for options in a command function (.get, .set, ...), add support for the SELECT command, implement a couple of commands, fix client socket reconnection strategy, add support for using replicas (RO) in cluster, and more..
* fix client.blPop test
* use which to find redis-server path
* change command options to work with Symbol rather then WeakSet
* implement more commands
* Add support for lua scripts in client & muilti, fix client socket initiator, implement simple cluster nodes discovery strategy
* replace `callbackify` with `legacyMode`
* add the SCAN command and client.scanIterator
* rename scanIterator
* init benchmark workflow
* fix benchmark workflow
* fix benchmark workflow
* fix benchmark workflow
* push coverage report to Coveralls
* fix Coveralls
* generator lcov (for Coveralls)
* fix .nycrc.json
* PubSub
* add support for all set commands (including sScanIterator)
* support pipeline
* fix KEEPTTL in SET
* remove console.log
* add HyperLogLog commands
* update README.md (thanks to @guyroyse)
* add support for most of the "keys commands"
* fix EXPIREAT.spec.ts
* add support for date in both EXPIREAT & EXPIRE
* add tests
* better cluster nodes discorvery strategy after MOVED error, add PubSub test
* fix PubSub UNSUBSCRIBE/PUNSUBSCRIBE without channel and/or listener
* fix PubSub
* add release-it to dev dependencies
* Release 4.0.0-next.0
* fix .npmignore
* Release 4.0.0-next.1
* fix links in README.md
* fix .npmignore
* Release 4.0.0-next.2
* add support for all sorted set commands
* add support for most stream commands
* add missing file from commit 53de279afe
* lots of todo commends
* make PubSub test more stable
* clean ZPOPMAX
* add support for lua scripts and modules in cluster, spawn cluster for tests, add some cluster tests, fix pubsub listener arguments
* GET.spec.ts
* add support for List commands, fix some Sorted Set commands, add some cluster commands, spawn cluster for testing, add support for command options in cluster, and more
* add missing file from commit faab94fab2
* clean ZRANK and ZREVRANK
* add XREAD and XREADGROUP commands
* remove unused files
* implement a couple of more commands, make cluster random iterator be per node (instead of per slot)
* Release 4.0.0-next.3
* app spec files to npmignore
* fix some code analyzers (LGTM, deepsource, codeclimate) issues
* fix CLUSTER_NODES, add some tests
* add HSCAN, clean some commands, add tests for generic transformers
* add missing files from 0feb35a1fb
* update README.md (thanks to @guyroyse)
* handle ASK errors, add some commands and tests
* Release 4.0.0-next.4
* replace "modern" with "v4"
* remove unused imports
* add all ACL subcommands, all MODULE subcommands, and some other commands
* remove 2 unused imports
* fix BITFIELD command
* fix XTRIM spec file
* clean code
* fix package.json types field
* better modules support, fix some bugs in legacy mode, add some tests
* remove unused function
* add test for hScanIterator
* change node mimimum version to 12 (latest LTS)
* update tsconfig.json to support node 12, run tests on Redis 5 & 6 and on all node live versions
* remove future node releases :P
* remove "lib" from ts compiler options
* Update tsconfig.json
* fix build
* run some tests only on supported redis versions, use coveralls parallel mode
* fix tests
* Do not use "timers/promises", fix "isRedisVersionGreaterThan"
* skip AbortController tests when not available
* use 'fs'.promises instead of 'fs/promises'
* add some missing commands
* run GETDEL tests only if the redis version is greater than 6.2
* implement some GEO commands, improve scan generic transformer, expose RPUSHX
* fix GEOSEARCH & GEOSEARCHSTORE
* use socket.setNoDelay and queueMicrotask to improve latency
* commands-queue.ts: String length / byte length counting issue (#1630)
* Update commands-queue.ts
Hopefully fixing #1628
* Reverted 2fa5ea6, and implemented test for byte length check
* Changed back to Buffer.byteLength, due to issue author input. Updated test to look for 4 bytes.
* Fixed. There were two places that length was calculated.
* Removed redundant string assignment
* add 2 bytes test as well
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
* fix scripts in multi
* do not hide bugs in redis
* fix for e7bf09644b
* remove unused import
* implement WATCH command, fix ZRANGESTORE & GEOSEARCHSTORE tests
* update README.md
Co-authored-by: @GuyRoyse
* use typedoc to auto generate documentation
* run "npm install" before "npm run documentation"
* clean documentation workflow
* fix WATCH spec file
* increase "CLUSTER_NODE_TIMEOUT" to 5000ms to avoid "CLUSTERDOWN" errors in tests
* pull cluster state every 100 ms
* await meetPromises before pulling the cluster state
* enhance the way commanders (client/multi/cluster) get extended with modules and scripts
* add test for socket retry strategy
* implement more commands
* set GETEX minimum version to 6.2
* remove unused imports
* add support for multi in cluster
* upgrade dependencies
* Release 4.0.0-next.5
* remove unused imports
* improve benchmarking
* use the same Multi with duplicated clients
* exclude some files from the documentation, add some exports, clean code
* fix#1636 - handle null in multi.exec
* remove unused import
* add supoprt for tuples in HSET
* add FIRST_KEY_INDEX to HSET
* add a bunch of missing commands, fix MSET and HELLO, add some tests
* add FIRST_KEY_INDEX to MSET and MSETNX
* upgrade actions
* fix coverallsapp/github-action version
* Update documentation.yml
* Update documentation.yml
* clean code
* remove unused imports
* use "npm ci" instead of "npm install"
* fix `self` binding on client modules, use connection pool for `duplicateConnection`
* add client.executeIsolated, rename "duplicateConnection" to "isolated", update README.md (thanks to @GuyRoyse and @SimonPrickett)
* update README (thanks to @GuyRoyse), add some tests
* try to fix "cluster is down" errors in tests
* try to fix "cluster is down" errors in tests
* upgrade dependencies
* update package-lock
* Release 4.0.0-next.6
* fix#1636 - fix WatchError
* fix for f1bf0beebf - remove .only from multi tests
* Release 4.0.0-next.7
* update README and other markdown files
Co-authored-by: @GuyRoyse & @SimonPrickett
* Doc updates. (#1640)
* update docs, upgrade dependencies
* fix README
* Release 4.0.0-rc.0
* Update README.md
* update docs, add `connectTimeout` options, fix tls
Co-authored-by: Guy Royse <guy@guyroyse.com>
* npm update, "fix" some tests, clean code
* fix AssertionError import
* fix#1642 - fix XREAD, XREADGROUP and XTRIM
* fix#1644 - add the QUIT command
* add socket.noDelay and socket.keepAlive configurations
* Update README.md (#1645)
* Update README.md
Fixed issue with how connection string was specified.
Now you can have user@host without having to specify a password, which just makes more sense
* Update client-configuration.md as well
Co-authored-by: Leibale Eidelman <leibale1998@gmail.com>
* update socket.reconnectStrategy description
* fix borken link in v3-to-v4.md
* increase test coverage, fix bug in cluster redirection strategy, implement CLIENT_ID, remove unused EXEC command
Co-authored-by: Nova <novaw@warrenservices.co.uk>
Co-authored-by: Simon Prickett <simon@crudworks.org>
Co-authored-by: Guy Royse <guy@guyroyse.com>
* Update redis errors and redis parser
* Fix lint errors
* Add node 12 to travis ci
* Add appveyor node 12
* Fix some of existing errors
This drops support for hiredis.
* authentication retry while server is loading db (danmaz74) [GH-101]
* command arguments processing issue with arrays
New features:
* Auto update of new commands from redis.io (Dave Hoover)
* Performance improvements and backpressure controls.
* Commands now return the true/false value from the underlying socket write(s).
* Implement command_queue high water and low water for more better control of queueing.
See `examples/backpressure_drain.js` for more information.