You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-07 13:22:56 +03:00
V4 (#1624)
* 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 commit61edd4f1b5
* 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 commit53de279afe
* 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 commitfaab94fab2
* 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 from0feb35a1fb
* 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 fore7bf09644b
* 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 forf1bf0beebf
- 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>
This commit is contained in:
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1 +0,0 @@
|
||||
open_collective: node-redis
|
19
.github/ISSUE_TEMPLATE.md
vendored
19
.github/ISSUE_TEMPLATE.md
vendored
@@ -5,30 +5,17 @@ labels: needs-triage
|
||||
|
||||
### Issue
|
||||
|
||||
<!--
|
||||
Thanks for wanting to report an issue you've found in node_redis. Please delete
|
||||
this text and fill in the template below. Please note that the issue tracker is only
|
||||
for bug reports or feature requests.
|
||||
|
||||
If you have a question, please ask it on Stack Overflow using the `node-redis` tag.
|
||||
|
||||
Note that it will be much easier to fix the issue if a test case that reproduces
|
||||
the problem is provided. It is of course not always possible to reduce your code
|
||||
with a small test case, but it's highly appreciated to have as much data as possible.
|
||||
-->
|
||||
|
||||
> Describe your issue here
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Environment
|
||||
|
||||
<!-- e.g. "node --version" -->
|
||||
- **Node.js Version**: `VERSION_HERE`
|
||||
|
||||
|
||||
<!-- e.g. "redis-server --version" -->
|
||||
- **Redis Version**: `VERSION_HERE`
|
||||
|
||||
- **Redis Server Version**: `VERSION_HERE`
|
||||
|
||||
<!-- e.g. Windows 10, Mac OSX 10.15.2 -->
|
||||
- **Platform**: `PLATFORM_HERE`
|
||||
|
7
.github/PULL_REQUEST_TEMPLATE.md
vendored
7
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,13 +1,10 @@
|
||||
<!-- please ensure you have read the `./CONTRIBUTING.md` guide -->
|
||||
|
||||
### Description
|
||||
|
||||
<!-- Please provide a description of the change below, e.g What was the purpose? -->
|
||||
<!-- Why does it matter to you? What problem are you trying to solve? -->
|
||||
<!-- Why does it matter to you? What problem are you trying to solve? -->
|
||||
<!-- Tag in any linked issues. -->
|
||||
|
||||
> Description your pull request here
|
||||
|
||||
> Describe your pull request here
|
||||
|
||||
---
|
||||
|
||||
|
37
.github/workflows/benchmark.yml
vendored
37
.github/workflows/benchmark.yml
vendored
@@ -1,6 +1,9 @@
|
||||
name: Benchmarking
|
||||
name: Benchmark
|
||||
|
||||
on: [pull_request]
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- v4
|
||||
|
||||
jobs:
|
||||
benchmark:
|
||||
@@ -9,8 +12,8 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [10.x, 12.x, 14.x, 15.x]
|
||||
redis-version: [5.x, 6.x]
|
||||
node-version: [16.x]
|
||||
redis-version: [6.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
@@ -18,21 +21,25 @@ jobs:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v2.1.5
|
||||
uses: actions/setup-node@v2.3.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Setup Redis
|
||||
uses: shogo82148/actions-setup-redis@v1.9.7
|
||||
uses: shogo82148/actions-setup-redis@v1.12.0
|
||||
with:
|
||||
redis-version: ${{ matrix.redis-version }}
|
||||
auto-start: "true"
|
||||
|
||||
- run: npm i --no-audit --prefer-offline
|
||||
- name: Run Benchmark
|
||||
run: npm run benchmark > benchmark-output.txt && cat benchmark-output.txt
|
||||
- name: Upload Benchmark Result
|
||||
uses: actions/upload-artifact@v2.2.2
|
||||
with:
|
||||
name: benchmark-output.txt
|
||||
path: benchmark-output.txt
|
||||
- name: Install Packages
|
||||
run: npm ci
|
||||
|
||||
- name: Build
|
||||
run: npm run build
|
||||
|
||||
- name: Install Benchmark Packages
|
||||
run: npm ci
|
||||
working-directory: ./benchmark
|
||||
|
||||
- name: Benchmark
|
||||
run: npm run start
|
||||
working-directory: ./benchmark
|
||||
|
67
.github/workflows/codeql-analysis.yml
vendored
67
.github/workflows/codeql-analysis.yml
vendored
@@ -1,67 +0,0 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: '35 0 * * 4'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
31
.github/workflows/documentation.yml
vendored
Normal file
31
.github/workflows/documentation.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Documentation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- v4
|
||||
|
||||
jobs:
|
||||
documentation:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v2.3.0
|
||||
|
||||
- name: Install Packages
|
||||
run: npm ci
|
||||
|
||||
- name: Generate Documentation
|
||||
run: npm run documentation
|
||||
|
||||
- name: Upload Documentation to Wiki
|
||||
uses: SwiftDocOrg/github-wiki-publish-action@v1
|
||||
with:
|
||||
path: documentation
|
||||
env:
|
||||
GH_PERSONAL_ACCESS_TOKEN: ${{ secrets.BOT_PERSONAL_ACCESS_TOKEN }}
|
31
.github/workflows/linting.yml
vendored
31
.github/workflows/linting.yml
vendored
@@ -1,31 +0,0 @@
|
||||
name: Linting
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
eslint:
|
||||
name: ESLint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- uses: actions/setup-node@v2.1.5
|
||||
with:
|
||||
node-version: 12
|
||||
- run: npm i --no-audit --prefer-offline
|
||||
- name: Test Code Linting
|
||||
run: npm run lint
|
||||
- name: Save Code Linting Report JSON
|
||||
run: npm run lint:report
|
||||
continue-on-error: true
|
||||
- name: Annotate Code Linting Results
|
||||
uses: ataylorme/eslint-annotate-action@1.1.2
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
report-json: "eslint-report.json"
|
||||
- name: Upload ESLint report
|
||||
uses: actions/upload-artifact@v2.2.2
|
||||
with:
|
||||
name: eslint-report.json
|
||||
path: eslint-report.json
|
51
.github/workflows/tests.yml
vendored
51
.github/workflows/tests.yml
vendored
@@ -1,16 +1,18 @@
|
||||
name: Tests
|
||||
|
||||
on: [push]
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- v4
|
||||
|
||||
jobs:
|
||||
testing:
|
||||
name: Test
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [10.x, 12.x, 14.x, 15.x]
|
||||
redis-version: [4.x, 5.x, 6.x]
|
||||
node-version: [12.x, 14.x, 16.x]
|
||||
redis-version: [5.x, 6.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
@@ -18,35 +20,38 @@ jobs:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v2.1.5
|
||||
uses: actions/setup-node@v2.3.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Setup Redis
|
||||
uses: shogo82148/actions-setup-redis@v1.9.7
|
||||
uses: shogo82148/actions-setup-redis@v1.12.0
|
||||
with:
|
||||
redis-version: ${{ matrix.redis-version }}
|
||||
auto-start: "false"
|
||||
|
||||
- name: Disable IPv6
|
||||
run: sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6';
|
||||
|
||||
- name: Setup Stunnel
|
||||
run: sudo apt-get install stunnel4
|
||||
|
||||
- name: Install Packages
|
||||
run: npm i --no-audit --prefer-offline
|
||||
run: npm ci
|
||||
|
||||
- name: Run Tests
|
||||
run: npm test
|
||||
run: npm run test
|
||||
|
||||
- name: Submit Coverage
|
||||
run: npm run coveralls
|
||||
env:
|
||||
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_TOKEN }}
|
||||
- name: Generate lcov
|
||||
run: ./node_modules/.bin/nyc report -r lcov
|
||||
|
||||
- name: Upload Coverage Report
|
||||
uses: actions/upload-artifact@v2.2.2
|
||||
- name: Coveralls
|
||||
uses: coverallsapp/github-action@1.1.3
|
||||
with:
|
||||
name: coverage
|
||||
path: coverage
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
flag-name: Node ${{ matrix.node-version }} Redis ${{ matrix.redis-version }}
|
||||
parallel: true
|
||||
|
||||
finish:
|
||||
needs: tests
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Coveralls Finished
|
||||
uses: coverallsapp/github-action@1.1.3
|
||||
with:
|
||||
github-token: ${{ secrets.github_token }}
|
||||
parallel-finished: true
|
||||
|
49
.github/workflows/tests_windows.yml
vendored
49
.github/workflows/tests_windows.yml
vendored
@@ -1,49 +0,0 @@
|
||||
name: Tests Windows
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
testing-windows:
|
||||
name: Test Windows
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [10.x, 12.x, 14.x, 15.x]
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Install Redis
|
||||
uses: crazy-max/ghaction-chocolatey@v1.4.0
|
||||
with:
|
||||
args: install redis-64 --version=3.0.503 --no-progress
|
||||
|
||||
- name: Start Redis
|
||||
run: |
|
||||
redis-server --service-install
|
||||
redis-server --service-start
|
||||
redis-cli config set stop-writes-on-bgsave-error no
|
||||
|
||||
- name: Setup Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v2.1.5
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Install Packages
|
||||
run: npm i --no-audit --prefer-offline
|
||||
|
||||
- name: Run Tests
|
||||
run: npm test
|
||||
|
||||
- name: Submit Coverage
|
||||
run: npm run coveralls
|
||||
env:
|
||||
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_TOKEN }}
|
||||
|
||||
- name: Upload Coverage Report
|
||||
uses: actions/upload-artifact@v2.2.2
|
||||
with:
|
||||
name: coverage
|
||||
path: coverage
|
Reference in New Issue
Block a user