You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
prepare 4.1.0 (#2111)
* increase test coverage * @node-redis to @redis * ugprade deps * fix benchmark * use 7.0 docker (not rc), update readmes, clean code, fix @-redis import * update readme * fix function in cluster * update docs Co-authored-by: Chayim <chayim@users.noreply.github.com> * Update clustering.md * add subpackages move warning * drop support for node 12 * upgrade deps * fix tsconfig.base.json Co-authored-by: Chayim <chayim@users.noreply.github.com>
This commit is contained in:
4
.github/workflows/tests.yml
vendored
4
.github/workflows/tests.yml
vendored
@@ -16,8 +16,8 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: ['12', '14', '16']
|
||||
redis-version: ['5', '6.0', '6.2', '7.0-rc3']
|
||||
node-version: ['14', '16', '17', '18']
|
||||
redis-version: ['5', '6.0', '6.2', '7.0']
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
with:
|
||||
|
111
README.md
111
README.md
@@ -4,22 +4,28 @@
|
||||
[](https://codecov.io/gh/redis/node-redis)
|
||||
[](https://github.com/redis/node-redis/blob/master/LICENSE)
|
||||
[](https://lgtm.com/projects/g/redis/node-redis/alerts)
|
||||
[](https://discord.gg/redis)
|
||||
|
||||
node-redis is a modern, high performance [Redis](https://redis.io) client for Node.js with built-in support for Redis 6.2 commands and modules including [RediSearch](https://redisearch.io) and [RedisJSON](https://redisjson.io).
|
||||
[](https://discord.gg/redis)
|
||||
[](https://www.twitch.tv/redisinc)
|
||||
[](https://www.youtube.com/redisinc)
|
||||
[](https://twitter.com/redisinc)
|
||||
|
||||
node-redis is a modern, high performance [Redis](https://redis.io) client for Node.js.
|
||||
|
||||
|
||||
## Packages
|
||||
|
||||
| Name | Description |
|
||||
|---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| [redis](./) | [](https://www.npmjs.com/package/redis) [](https://www.npmjs.com/package/redis) |
|
||||
| [@node-redis/client](./packages/client) | [](https://www.npmjs.com/package/@node-redis/client) [](https://www.npmjs.com/package/@node-redis/client) [](https://redis.js.org/documentation/client/) |
|
||||
| [@node-redis/bloom](./packages/bloom) | [](https://www.npmjs.com/package/@node-redis/bloom) [](https://www.npmjs.com/package/@node-redis/bloom) [](https://redis.js.org/documentation/bloom/) [Redis Bloom](https://oss.redis.com/redisbloom/) commands |
|
||||
| [@node-redis/graph](./packages/graph) | [](https://www.npmjs.com/package/@node-redis/graph) [](https://www.npmjs.com/package/@node-redis/graph) [](https://redis.js.org/documentation/graph/) [Redis Graph](https://oss.redis.com/redisgraph/) commands |
|
||||
| [@node-redis/json](./packages/json) | [](https://www.npmjs.com/package/@node-redis/json) [](https://www.npmjs.com/package/@node-redis/json) [](https://redis.js.org/documentation/json/) [Redis JSON](https://oss.redis.com/redisjson/) commands |
|
||||
| [@node-redis/search](./packages/search) | [](https://www.npmjs.com/package/@node-redis/search) [](https://www.npmjs.com/package/@node-redis/search) [](https://redis.js.org/documentation/search/) [Redis Search](https://oss.redis.com/redisearch/) commands |
|
||||
| [@node-redis/time-series](./packages/time-series) | [](https://www.npmjs.com/package/@node-redis/time-series) [](https://www.npmjs.com/package/@node-redis/time-series) [](https://redis.js.org/documentation/time-series/) [Redis Time-Series](https://oss.redis.com/redistimeseries/) commands |
|
||||
| Name | Description |
|
||||
|----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| [redis](./) | [](https://www.npmjs.com/package/redis) [](https://www.npmjs.com/package/redis) |
|
||||
| [@redis/client](./packages/client) | [](https://www.npmjs.com/package/@redis/client) [](https://www.npmjs.com/package/@redis/client) [](https://redis.js.org/documentation/client/) |
|
||||
| [@redis/bloom](./packages/bloom) | [](https://www.npmjs.com/package/@redis/bloom) [](https://www.npmjs.com/package/@redis/bloom) [](https://redis.js.org/documentation/bloom/) [Redis Bloom](https://oss.redis.com/redisbloom/) commands |
|
||||
| [@redis/graph](./packages/graph) | [](https://www.npmjs.com/package/@redis/graph) [](https://www.npmjs.com/package/@redis/graph) [](https://redis.js.org/documentation/graph/) [Redis Graph](https://oss.redis.com/redisgraph/) commands |
|
||||
| [@redis/json](./packages/json) | [](https://www.npmjs.com/package/@redis/json) [](https://www.npmjs.com/package/@redis/json) [](https://redis.js.org/documentation/json/) [Redis JSON](https://oss.redis.com/redisjson/) commands |
|
||||
| [@redis/search](./packages/search) | [](https://www.npmjs.com/package/@redis/search) [](https://www.npmjs.com/package/@redis/search) [](https://redis.js.org/documentation/search/) [Redis Search](https://oss.redis.com/redisearch/) commands |
|
||||
| [@redis/time-series](./packages/time-series) | [](https://www.npmjs.com/package/@redis/time-series) [](https://www.npmjs.com/package/@redis/time-series) [](https://redis.js.org/documentation/time-series/) [Redis Time-Series](https://oss.redis.com/redistimeseries/) commands |
|
||||
|
||||
> :warning: In version 4.1.0 we moved our subpackages from `@node-redis` to `@redis`. If you're just using `npm install redis`, you don't need to do anything—it'll upgrade automatically. If you're using the subpackages directly, you'll need to point to the new scope (e.g. `@redis/client` instead of `@node-redis/client`).
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -219,36 +225,84 @@ client.scanIterator({
|
||||
});
|
||||
```
|
||||
|
||||
### Lua Scripts
|
||||
### [Programmability](https://redis.io/docs/manual/programmability/)
|
||||
|
||||
Define new functions using [Lua scripts](https://redis.io/commands/eval) which execute on the Redis server:
|
||||
Redis provides a programming interface allowing code execution on the redis server.
|
||||
|
||||
#### [Functions](https://redis.io/docs/manual/programmability/functions-intro/)
|
||||
|
||||
The following example retrieves a key in redis, returning the value of the key, incremented by an integer. For example, if your key _foo_ has the value _17_ and we run `add('foo', 25)`, it returns the answer to Life, the Universe and Everything.
|
||||
|
||||
```lua
|
||||
#!lua name=library
|
||||
|
||||
redis.register_function {
|
||||
function_name = 'add',
|
||||
callback = function(keys, args) return redis.call('GET', keys[1]) + args[1] end,
|
||||
flags = { 'no-writes' }
|
||||
}
|
||||
```
|
||||
|
||||
Here is the same example, but in a format that can be pasted into the `redis-cli`.
|
||||
|
||||
```
|
||||
FUNCTION LOAD "#!lua name=library\nredis.register_function{function_name=\"add\", callback=function(keys, args) return redis.call('GET', keys[1])+args[1] end, flags={\"no-writes\"}}"
|
||||
```
|
||||
|
||||
Load the prior redis function on the _redis server_ before running the example below.
|
||||
|
||||
```typescript
|
||||
import { createClient, defineScript } from 'redis';
|
||||
import { createClient } from 'redis';
|
||||
|
||||
(async () => {
|
||||
const client = createClient({
|
||||
scripts: {
|
||||
add: defineScript({
|
||||
const client = createClient({
|
||||
functions: {
|
||||
library: {
|
||||
add: {
|
||||
NUMBER_OF_KEYS: 1,
|
||||
SCRIPT:
|
||||
'local val = redis.pcall("GET", KEYS[1]);' +
|
||||
'return val + ARGV[1];',
|
||||
transformArguments(key: string, toAdd: number): Array<string> {
|
||||
return [key, toAdd.toString()];
|
||||
},
|
||||
transformReply(reply: number): number {
|
||||
return reply;
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
await client.connect();
|
||||
await client.connect();
|
||||
|
||||
await client.set('key', '1');
|
||||
await client.add('key', 2); // 3
|
||||
})();
|
||||
await client.set('key', '1');
|
||||
await client.library.add('key', 2); // 3
|
||||
```
|
||||
|
||||
#### [Lua Scripts](https://redis.io/docs/manual/programmability/eval-intro/)
|
||||
|
||||
The following is an end-to-end example of the prior concept.
|
||||
|
||||
```typescript
|
||||
import { createClient, defineScript } from 'redis';
|
||||
|
||||
const client = createClient({
|
||||
scripts: {
|
||||
add: defineScript({
|
||||
NUMBER_OF_KEYS: 1,
|
||||
SCRIPT:
|
||||
'return redis.call("GET", KEYS[1]) + ARGV[1];',
|
||||
transformArguments(key: string, toAdd: number): Array<string> {
|
||||
return [key, toAdd.toString()];
|
||||
},
|
||||
transformReply(reply: number): number {
|
||||
return reply;
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
await client.connect();
|
||||
|
||||
await client.set('key', '1');
|
||||
await client.add('key', 2); // 3
|
||||
```
|
||||
|
||||
### Disconnecting
|
||||
@@ -323,9 +377,10 @@ Node Redis is supported with the following versions of Redis:
|
||||
|
||||
| Version | Supported |
|
||||
|---------|--------------------|
|
||||
| 7.0.z | :heavy_check_mark: |
|
||||
| 6.2.z | :heavy_check_mark: |
|
||||
| 6.0.z | :heavy_check_mark: |
|
||||
| 5.y.z | :heavy_check_mark: |
|
||||
| 5.0.z | :heavy_check_mark: |
|
||||
| < 5.0 | :x: |
|
||||
|
||||
> Node Redis should work with older versions of Redis, but it is not fully tested and we cannot offer support.
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { createClient } from '@node-redis/client';
|
||||
import { createClient } from '@redis/client';
|
||||
|
||||
export default async (host) => {
|
||||
const client = createClient({
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { createClient } from '@node-redis/client';
|
||||
import { createClient } from '@redis/client';
|
||||
|
||||
export default async (host, { randomString }) => {
|
||||
const client = createClient({
|
||||
|
164
benchmark/package-lock.json
generated
164
benchmark/package-lock.json
generated
@@ -1,20 +1,20 @@
|
||||
{
|
||||
"name": "@node-redis/client-benchmark",
|
||||
"name": "@redis/client-benchmark",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@node-redis/client-benchmark",
|
||||
"name": "@redis/client-benchmark",
|
||||
"dependencies": {
|
||||
"@node-redis/client": "../packages/client",
|
||||
"@redis/client": "../packages/client",
|
||||
"hdr-histogram-js": "3.0.0",
|
||||
"ioredis": "5.0.4",
|
||||
"redis-v3": "npm:redis@4.0.6",
|
||||
"redis-v3": "npm:redis@3.1.2",
|
||||
"yargs": "17.4.1"
|
||||
}
|
||||
},
|
||||
"../packages/client": {
|
||||
"name": "@node-redis/client",
|
||||
"name": "@redis/client",
|
||||
"version": "1.0.5",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -24,12 +24,12 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@node-redis/test-utils": "*",
|
||||
"@types/node": "^17.0.26",
|
||||
"@redis/test-utils": "*",
|
||||
"@types/node": "^17.0.29",
|
||||
"@types/sinon": "^10.0.11",
|
||||
"@types/yallist": "^4.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.20.0",
|
||||
"@typescript-eslint/parser": "^5.20.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.21.0",
|
||||
"@typescript-eslint/parser": "^5.21.0",
|
||||
"eslint": "^8.14.0",
|
||||
"nyc": "^15.1.0",
|
||||
"release-it": "^14.14.2",
|
||||
@@ -53,50 +53,10 @@
|
||||
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.1.1.tgz",
|
||||
"integrity": "sha512-fsR4P/ROllzf/7lXYyElUJCheWdTJVJvOTps8v9IWKFATxR61ANOlnoPqhH099xYLrJGpc2ZQ28B3rMeUt5VQg=="
|
||||
},
|
||||
"node_modules/@node-redis/bloom": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/bloom/-/bloom-1.0.1.tgz",
|
||||
"integrity": "sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw==",
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@node-redis/client": {
|
||||
"node_modules/@redis/client": {
|
||||
"resolved": "../packages/client",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@node-redis/graph": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/graph/-/graph-1.0.0.tgz",
|
||||
"integrity": "sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g==",
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@node-redis/json": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/json/-/json-1.0.2.tgz",
|
||||
"integrity": "sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==",
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@node-redis/search": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/search/-/search-1.0.5.tgz",
|
||||
"integrity": "sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ==",
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@node-redis/time-series": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/time-series/-/time-series-1.0.2.tgz",
|
||||
"integrity": "sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==",
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
@@ -281,6 +241,11 @@
|
||||
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
||||
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
|
||||
},
|
||||
"node_modules/redis-commands": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
|
||||
"integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
|
||||
},
|
||||
"node_modules/redis-errors": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
||||
@@ -302,16 +267,29 @@
|
||||
},
|
||||
"node_modules/redis-v3": {
|
||||
"name": "redis",
|
||||
"version": "4.0.6",
|
||||
"resolved": "https://registry.npmjs.org/redis/-/redis-4.0.6.tgz",
|
||||
"integrity": "sha512-IaPAxgF5dV0jx+A9l6yd6R9/PAChZIoAskDVRzUODeLDNhsMlq7OLLTmu0AwAr0xjrJ1bibW5xdpRwqIQ8Q0Xg==",
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
|
||||
"integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
|
||||
"dependencies": {
|
||||
"@node-redis/bloom": "1.0.1",
|
||||
"@node-redis/client": "1.0.5",
|
||||
"@node-redis/graph": "1.0.0",
|
||||
"@node-redis/json": "1.0.2",
|
||||
"@node-redis/search": "1.0.5",
|
||||
"@node-redis/time-series": "1.0.2"
|
||||
"denque": "^1.5.0",
|
||||
"redis-commands": "^1.7.0",
|
||||
"redis-errors": "^1.2.0",
|
||||
"redis-parser": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/node-redis"
|
||||
}
|
||||
},
|
||||
"node_modules/redis-v3/node_modules/denque": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
|
||||
"integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==",
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/require-directory": {
|
||||
@@ -412,22 +390,16 @@
|
||||
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.1.1.tgz",
|
||||
"integrity": "sha512-fsR4P/ROllzf/7lXYyElUJCheWdTJVJvOTps8v9IWKFATxR61ANOlnoPqhH099xYLrJGpc2ZQ28B3rMeUt5VQg=="
|
||||
},
|
||||
"@node-redis/bloom": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/bloom/-/bloom-1.0.1.tgz",
|
||||
"integrity": "sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw==",
|
||||
"requires": {}
|
||||
},
|
||||
"@node-redis/client": {
|
||||
"@redis/client": {
|
||||
"version": "file:../packages/client",
|
||||
"requires": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@node-redis/test-utils": "*",
|
||||
"@types/node": "^17.0.26",
|
||||
"@redis/test-utils": "*",
|
||||
"@types/node": "^17.0.29",
|
||||
"@types/sinon": "^10.0.11",
|
||||
"@types/yallist": "^4.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.20.0",
|
||||
"@typescript-eslint/parser": "^5.20.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.21.0",
|
||||
"@typescript-eslint/parser": "^5.21.0",
|
||||
"cluster-key-slot": "1.1.0",
|
||||
"eslint": "^8.14.0",
|
||||
"generic-pool": "3.8.2",
|
||||
@@ -441,30 +413,6 @@
|
||||
"yallist": "4.0.0"
|
||||
}
|
||||
},
|
||||
"@node-redis/graph": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/graph/-/graph-1.0.0.tgz",
|
||||
"integrity": "sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g==",
|
||||
"requires": {}
|
||||
},
|
||||
"@node-redis/json": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/json/-/json-1.0.2.tgz",
|
||||
"integrity": "sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==",
|
||||
"requires": {}
|
||||
},
|
||||
"@node-redis/search": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/search/-/search-1.0.5.tgz",
|
||||
"integrity": "sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ==",
|
||||
"requires": {}
|
||||
},
|
||||
"@node-redis/time-series": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@node-redis/time-series/-/time-series-1.0.2.tgz",
|
||||
"integrity": "sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==",
|
||||
"requires": {}
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
@@ -590,6 +538,11 @@
|
||||
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
||||
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
|
||||
},
|
||||
"redis-commands": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
|
||||
"integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
|
||||
},
|
||||
"redis-errors": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
||||
@@ -604,16 +557,21 @@
|
||||
}
|
||||
},
|
||||
"redis-v3": {
|
||||
"version": "npm:redis@4.0.6",
|
||||
"resolved": "https://registry.npmjs.org/redis/-/redis-4.0.6.tgz",
|
||||
"integrity": "sha512-IaPAxgF5dV0jx+A9l6yd6R9/PAChZIoAskDVRzUODeLDNhsMlq7OLLTmu0AwAr0xjrJ1bibW5xdpRwqIQ8Q0Xg==",
|
||||
"version": "npm:redis@3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
|
||||
"integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
|
||||
"requires": {
|
||||
"@node-redis/bloom": "1.0.1",
|
||||
"@node-redis/client": "1.0.5",
|
||||
"@node-redis/graph": "1.0.0",
|
||||
"@node-redis/json": "1.0.2",
|
||||
"@node-redis/search": "1.0.5",
|
||||
"@node-redis/time-series": "1.0.2"
|
||||
"denque": "^1.5.0",
|
||||
"redis-commands": "^1.7.0",
|
||||
"redis-errors": "^1.2.0",
|
||||
"redis-parser": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"denque": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
|
||||
"integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"require-directory": {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@node-redis/client-benchmark",
|
||||
"name": "@redis/client-benchmark",
|
||||
"private": true,
|
||||
"main": "./lib",
|
||||
"type": "module",
|
||||
@@ -7,10 +7,10 @@
|
||||
"start": "node ."
|
||||
},
|
||||
"dependencies": {
|
||||
"@node-redis/client": "../packages/client",
|
||||
"@redis/client": "../packages/client",
|
||||
"hdr-histogram-js": "3.0.0",
|
||||
"ioredis": "5.0.4",
|
||||
"redis-v3": "npm:redis@4.0.6",
|
||||
"redis-v3": "npm:redis@3.1.2",
|
||||
"yargs": "17.4.1"
|
||||
}
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ If `socket.write()` returns `false`—meaning that ["all or part of the data was
|
||||
Redis has support for [modules](https://redis.io/modules) and running [Lua scripts](../README.md#lua-scripts) within the Redis context. To take advantage of typing within these scenarios, `RedisClient` and `RedisCluster` should be used with [typeof](https://www.typescriptlang.org/docs/handbook/2/typeof-types.html), rather than the base types `RedisClientType` and `RedisClusterType`.
|
||||
|
||||
```typescript
|
||||
import { createClient } from '@node-redis/client';
|
||||
import { createClient } from '@redis/client';
|
||||
|
||||
export const client = createClient();
|
||||
|
||||
|
@@ -3,24 +3,25 @@
|
||||
| Property | Default | Description |
|
||||
|--------------------------|------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| url | | `redis[s]://[[username][:password]@][host][:port][/db-number]` (see [`redis`](https://www.iana.org/assignments/uri-schemes/prov/redis) and [`rediss`](https://www.iana.org/assignments/uri-schemes/prov/rediss) IANA registration for more details) |
|
||||
| socket | | Object defining socket connection properties. Any [`net.createConnection`](https://nodejs.org/api/net.html#netcreateconnectionoptions-connectlistener) option that is not listed here is supported as well |
|
||||
| socket.port | `6379` | Port to connect to |
|
||||
| socket.host | `'localhost'` | Hostname to connect to |
|
||||
| socket.family | `0` | Version of IP stack. Must be `4 \| 6 \| 0`. The value `0` indicates that both IPv4 and IPv6 addresses are allowed. |
|
||||
| socket.path | | UNIX Socket to connect to |
|
||||
| socket.connectTimeout | `5000` | The timeout for connecting to the Redis Server (in milliseconds) |
|
||||
| socket.noDelay | `true` | Enable/disable the use of [`Nagle's algorithm`](https://nodejs.org/api/net.html#net_socket_setnodelay_nodelay) |
|
||||
| socket.keepAlive | `5000` | Enable/disable the [`keep-alive`](https://nodejs.org/api/net.html#net_socket_setkeepalive_enable_initialdelay) functionality |
|
||||
| socket | | Socket connection properties. Unlisted [`net.connect`](https://nodejs.org/api/net.html#socketconnectoptions-connectlistener) properties (and [`tls.connect`](https://nodejs.org/api/tls.html#tlsconnectoptions-callback)) are also supported |
|
||||
| socket.port | `6379` | Redis server port |
|
||||
| socket.host | `'localhost'` | Redis server hostname |
|
||||
| socket.family | `0` | IP Stack version (one of `4 \| 6 \| 0`) |
|
||||
| socket.path | | Path to the UNIX Socket |
|
||||
| socket.connectTimeout | `5000` | Connection Timeout (in milliseconds) |
|
||||
| socket.noDelay | `true` | Toggle [`Nagle's algorithm`](https://nodejs.org/api/net.html#net_socket_setnodelay_nodelay) |
|
||||
| socket.keepAlive | `5000` | Toggle [`keep-alive`](https://nodejs.org/api/net.html#net_socket_setkeepalive_enable_initialdelay) functionality |
|
||||
| socket.tls | | See explanation and examples [below](#TLS) |
|
||||
| socket.reconnectStrategy | `retries => Math.min(retries * 50, 500)` | A function containing the [Reconnect Strategy](#reconnect-strategy) logic |
|
||||
| username | | ACL username ([see ACL guide](https://redis.io/topics/acl)) |
|
||||
| password | | ACL password or the old "--requirepass" password |
|
||||
| name | | Connection name ([see `CLIENT SETNAME`](https://redis.io/commands/client-setname)) |
|
||||
| database | | Database number to connect to (see [`SELECT`](https://redis.io/commands/select) command) |
|
||||
| modules | | Object defining which [Redis Modules](../README.md#packages) to include |
|
||||
| scripts | | Object defining Lua Scripts to use with this client (see [Lua Scripts](../README.md#lua-scripts)) |
|
||||
| database | | Redis database number (see [`SELECT`](https://redis.io/commands/select) command) |
|
||||
| modules | | Included [Redis Modules](../README.md#packages) |
|
||||
| scripts | | Script definitions (see [Lua Scripts](../README.md#lua-scripts)) |
|
||||
| functions | | Function definitions (see [Functions](../README.md#functions)) |
|
||||
| commandsQueueMaxLength | | Maximum length of the client's internal command queue |
|
||||
| disableOfflineQueue | `false` | Disables offline queuing, see the [FAQ](./FAQ.md#what-happens-when-the-network-goes-down) for details |
|
||||
| disableOfflineQueue | `false` | Disables offline queuing, see [FAQ](./FAQ.md#what-happens-when-the-network-goes-down) |
|
||||
| readonly | `false` | Connect in [`READONLY`](https://redis.io/commands/readonly) mode |
|
||||
| legacyMode | `false` | Maintain some backwards compatibility (see the [Migration Guide](./v3-to-v4.md)) |
|
||||
| isolationPoolOptions | | See the [Isolated Execution Guide](./isolated-execution.md) |
|
||||
@@ -31,12 +32,12 @@ You can implement a custom reconnect strategy as a function:
|
||||
|
||||
- Receives the number of retries attempted so far.
|
||||
- Returns `number | Error`:
|
||||
- `number`: the wait time in milliseconds prior attempting to reconnect.
|
||||
- `Error`: closes the client and flushes the internal command queues.
|
||||
- `number`: wait time in milliseconds prior to attempting a reconnect.
|
||||
- `Error`: closes the client and flushes internal command queues.
|
||||
|
||||
## TLS
|
||||
|
||||
When creating a client, set `socket.tls` to `true` to enable TLS. Below are some basic examples.
|
||||
To enable TLS, set `socket.tls` to `true`. Below are some basic examples.
|
||||
|
||||
> For configuration options see [tls.connect](https://nodejs.org/api/tls.html#tlsconnectoptions-callback) and [tls.createSecureContext](https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions), as those are the underlying functions used by this library.
|
||||
|
||||
|
@@ -7,25 +7,23 @@ Connecting to a cluster is a bit different. Create the client by specifying some
|
||||
```typescript
|
||||
import { createCluster } from 'redis';
|
||||
|
||||
(async () => {
|
||||
const cluster = createCluster({
|
||||
rootNodes: [
|
||||
{
|
||||
url: 'redis://10.0.0.1:30001'
|
||||
},
|
||||
{
|
||||
url: 'redis://10.0.0.2:30002'
|
||||
}
|
||||
]
|
||||
});
|
||||
const cluster = createCluster({
|
||||
rootNodes: [
|
||||
{
|
||||
url: 'redis://10.0.0.1:30001'
|
||||
},
|
||||
{
|
||||
url: 'redis://10.0.0.2:30002'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
cluster.on('error', (err) => console.log('Redis Cluster Error', err));
|
||||
cluster.on('error', (err) => console.log('Redis Cluster Error', err));
|
||||
|
||||
await cluster.connect();
|
||||
await cluster.connect();
|
||||
|
||||
await cluster.set('key', 'value');
|
||||
const value = await cluster.get('key');
|
||||
})();
|
||||
await cluster.set('key', 'value');
|
||||
const value = await cluster.get('key');
|
||||
```
|
||||
|
||||
## `createCluster` configuration
|
||||
@@ -38,15 +36,15 @@ import { createCluster } from 'redis';
|
||||
| defaults | | The default configuration values for every client in the cluster. Use this for example when specifying an ACL user to connect with |
|
||||
| useReplicas | `false` | When `true`, distribute load by executing readonly commands (such as `GET`, `GEOSEARCH`, etc.) across all cluster nodes. When `false`, only use master nodes |
|
||||
| maxCommandRedirections | `16` | The maximum number of times a command will be redirected due to `MOVED` or `ASK` errors |
|
||||
| nodeAddressMap | | Object defining the [node address mapping](#node-address-map) |
|
||||
| modules | | Object defining which [Redis Modules](../README.md#modules) to include |
|
||||
| scripts | | Object defining Lua Scripts to use with this client (see [Lua Scripts](../README.md#lua-scripts)) |
|
||||
| nodeAddressMap | | Defines the [node address mapping](#node-address-map) |
|
||||
| modules | | Included [Redis Modules](../README.md#packages) |
|
||||
| scripts | | Script definitions (see [Lua Scripts](../README.md#lua-scripts)) |
|
||||
| functions | | Function definitions (see [Functions](../README.md#functions)) |
|
||||
|
||||
## Node Address Map
|
||||
|
||||
Your cluster might be configured to work within an internal network that your local environment doesn't have access to. For example, your development machine could only have access to external addresses, but the cluster returns its internal addresses. In this scenario, it's useful to provide a map from those internal addresses to the external ones.
|
||||
|
||||
The configuration for this is a simple mapping. Just provide a `nodeAddressMap` property mapping the internal addresses and ports to the external addresses and ports. Then, any address provided to `rootNodes` or returned from the cluster will be mapped accordingly:
|
||||
A node address map is required when a redis cluster is configured with addresses that are inaccessible by the machine running the redis client.
|
||||
This is a mapping of addresses and ports, with the values being the accessible address/port combination. Example:
|
||||
|
||||
```javascript
|
||||
createCluster({
|
||||
@@ -68,12 +66,12 @@ createCluster({
|
||||
|
||||
### Commands that operate on Redis Keys
|
||||
|
||||
Commands such as `GET`, `SET`, etc. will be routed by the first key, for instance `MGET 1 2 3` will be routed by the key `1`.
|
||||
Commands such as `GET`, `SET`, etc. are routed by the first key, for instance `MGET 1 2 3` will be routed by the key `1`.
|
||||
|
||||
### [Server Commands](https://redis.io/commands#server)
|
||||
|
||||
Admin commands such as `MEMORY STATS`, `FLUSHALL`, etc. are not attached to the cluster, and should be executed on a specific node using `.getSlot()` or `.getAllMasters()`.
|
||||
Admin commands such as `MEMORY STATS`, `FLUSHALL`, etc. are not attached to the cluster, and must be executed on a specific node via `.getSlotMaster()`.
|
||||
|
||||
### "Forwarded Commands"
|
||||
|
||||
Some commands (e.g. `PUBLISH`) are forwarded to other cluster nodes by the Redis server. The client will send these commands to a random node in order to spread the load across the cluster.
|
||||
Certain commands (e.g. `PUBLISH`) are forwarded to other cluster nodes by the Redis server. This client sends these commands to a random node in order to spread the load across the cluster.
|
||||
|
@@ -2,7 +2,7 @@
|
||||
// Requires the RedisTimeSeries module: https://redistimeseries.io/
|
||||
|
||||
import { createClient } from 'redis';
|
||||
import { TimeSeriesDuplicatePolicies, TimeSeriesEncoding, TimeSeriesAggregationType } from '@node-redis/time-series';
|
||||
import { TimeSeriesDuplicatePolicies, TimeSeriesEncoding, TimeSeriesAggregationType } from '@redis/time-series';
|
||||
|
||||
async function timeSeries() {
|
||||
const client = createClient();
|
||||
@@ -11,7 +11,7 @@ async function timeSeries() {
|
||||
await client.del('mytimeseries');
|
||||
|
||||
try {
|
||||
// Create a timeseries
|
||||
// Create a timeseries
|
||||
// https://oss.redis.com/redistimeseries/commands/#tscreate
|
||||
const created = await client.ts.create('mytimeseries', {
|
||||
RETENTION: 86400000, // 1 day in milliseconds
|
||||
@@ -97,7 +97,7 @@ async function timeSeries() {
|
||||
// Get some information about the state of the timeseries.
|
||||
// https://oss.redis.com/redistimeseries/commands/#tsinfo
|
||||
const tsInfo = await client.ts.info('mytimeseries');
|
||||
|
||||
|
||||
// tsInfo looks like this:
|
||||
// {
|
||||
// totalSamples: 1440,
|
||||
|
24
index.ts
24
index.ts
@@ -8,19 +8,19 @@ import {
|
||||
createCluster as _createCluster,
|
||||
RedisClusterOptions,
|
||||
RedisClusterType as _RedisClusterType
|
||||
} from '@node-redis/client';
|
||||
import RedisBloomModules from '@node-redis/bloom';
|
||||
import RedisGraph from '@node-redis/graph';
|
||||
import RedisJSON from '@node-redis/json';
|
||||
import RediSearch from '@node-redis/search';
|
||||
import RedisTimeSeries from '@node-redis/time-series';
|
||||
} from '@redis/client';
|
||||
import RedisBloomModules from '@redis/bloom';
|
||||
import RedisGraph from '@redis/graph';
|
||||
import RedisJSON from '@redis/json';
|
||||
import RediSearch from '@redis/search';
|
||||
import RedisTimeSeries from '@redis/time-series';
|
||||
|
||||
export * from '@node-redis/client';
|
||||
export * from '@node-redis/bloom';
|
||||
export * from '@node-redis/graph';
|
||||
export * from '@node-redis/json';
|
||||
export * from '@node-redis/search';
|
||||
export * from '@node-redis/time-series';
|
||||
export * from '@redis/client';
|
||||
export * from '@redis/bloom';
|
||||
export * from '@redis/graph';
|
||||
export * from '@redis/json';
|
||||
export * from '@redis/search';
|
||||
export * from '@redis/time-series';
|
||||
|
||||
const modules = {
|
||||
...RedisBloomModules,
|
||||
|
5004
package-lock.json
generated
5004
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
18
package.json
18
package.json
@@ -23,18 +23,18 @@
|
||||
"gh-pages": "gh-pages -d ./documentation -e ./documentation -u 'documentation-bot <documentation@bot>'"
|
||||
},
|
||||
"dependencies": {
|
||||
"@node-redis/bloom": "1.0.1",
|
||||
"@node-redis/client": "1.0.6",
|
||||
"@node-redis/graph": "1.0.0",
|
||||
"@node-redis/json": "1.0.2",
|
||||
"@node-redis/search": "1.0.5",
|
||||
"@node-redis/time-series": "1.0.2"
|
||||
"@redis/bloom": "1.0.1",
|
||||
"@redis/client": "1.0.6",
|
||||
"@redis/graph": "1.0.0",
|
||||
"@redis/json": "1.0.2",
|
||||
"@redis/search": "1.0.5",
|
||||
"@redis/time-series": "1.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tsconfig/node12": "^1.0.9",
|
||||
"@tsconfig/node14": "^1.0.1",
|
||||
"gh-pages": "^3.2.3",
|
||||
"release-it": "^14.14.2",
|
||||
"typescript": "^4.6.3"
|
||||
"release-it": "^15.0.0",
|
||||
"typescript": "^4.6.4"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# @node-redis/bloom
|
||||
# @redis/bloom
|
||||
|
||||
This package provides support for the [RedisBloom](https://redisbloom.io) module, which adds additional probabilistic data structures to Redis. It extends the [Node Redis client](https://github.com/redis/node-redis) to include functions for each of the RediBloom commands.
|
||||
|
||||
|
@@ -4,4 +4,4 @@ export function transformArguments(key: string, item: string): Array<string> {
|
||||
return ['BF.ADD', key, item];
|
||||
}
|
||||
|
||||
export { transformBooleanReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -6,4 +6,4 @@ export function transformArguments(key: string, item: string): Array<string> {
|
||||
return ['BF.EXISTS', key, item];
|
||||
}
|
||||
|
||||
export { transformBooleanReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
||||
@@ -43,4 +43,4 @@ export function transformArguments(
|
||||
return args;
|
||||
}
|
||||
|
||||
export { transformBooleanArrayReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
||||
|
@@ -4,4 +4,4 @@ export function transformArguments(key: string, items: Array<string>): Array<str
|
||||
return ['BF.MADD', key, ...items];
|
||||
}
|
||||
|
||||
export { transformBooleanArrayReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -6,4 +6,4 @@ export function transformArguments(key: string, items: Array<string>): Array<str
|
||||
return ['BF.MEXISTS', key, ...items];
|
||||
}
|
||||
|
||||
export { transformBooleanArrayReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
||||
|
@@ -4,4 +4,4 @@ export function transformArguments(key: string, item: string): Array<string> {
|
||||
return ['CF.ADD', key, item];
|
||||
}
|
||||
|
||||
export { transformBooleanReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -4,4 +4,4 @@ export function transformArguments(key: string, item: string): Array<string> {
|
||||
return ['CF.ADDNX', key, item];
|
||||
}
|
||||
|
||||
export { transformBooleanReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -4,4 +4,4 @@ export function transformArguments(key: string, item: string): Array<string> {
|
||||
return ['CF.DEL', key, item];
|
||||
}
|
||||
|
||||
export { transformBooleanReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -6,4 +6,4 @@ export function transformArguments(key: string, item: string): Array<string> {
|
||||
return ['CF.EXISTS', key, item];
|
||||
}
|
||||
|
||||
export { transformBooleanReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { InsertOptions, pushInsertOptions } from ".";
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
@@ -15,4 +15,4 @@ export function transformArguments(
|
||||
);
|
||||
}
|
||||
|
||||
export { transformBooleanArrayReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { InsertOptions, pushInsertOptions } from ".";
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
@@ -15,4 +15,4 @@ export function transformArguments(
|
||||
);
|
||||
}
|
||||
|
||||
export { transformBooleanArrayReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
||||
|
@@ -10,8 +10,8 @@ import * as INSERTNX from './INSERTNX';
|
||||
import * as LOADCHUNK from './LOADCHUNK';
|
||||
import * as RESERVE from './RESERVE';
|
||||
import * as SCANDUMP from './SCANDUMP';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
|
||||
export default {
|
||||
ADD,
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import TestUtils from '@node-redis/test-utils';
|
||||
import TestUtils from '@redis/test-utils';
|
||||
import RedisBloomModules from '.';
|
||||
|
||||
export default new TestUtils({
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@node-redis/bloom",
|
||||
"name": "@redis/bloom",
|
||||
"version": "1.0.1",
|
||||
"license": "MIT",
|
||||
"main": "./dist/index.js",
|
||||
@@ -13,17 +13,17 @@
|
||||
"documentation": "typedoc"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
"@redis/client": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@node-redis/test-utils": "*",
|
||||
"@types/node": "^17.0.26",
|
||||
"@redis/test-utils": "*",
|
||||
"@types/node": "^17.0.31",
|
||||
"nyc": "^15.1.0",
|
||||
"release-it": "^14.14.2",
|
||||
"release-it": "^15.0.0",
|
||||
"source-map-support": "^0.5.21",
|
||||
"ts-node": "^10.7.0",
|
||||
"typedoc": "^0.22.15",
|
||||
"typescript": "^4.6.3"
|
||||
"typescript": "^4.6.4"
|
||||
}
|
||||
}
|
||||
|
@@ -1,3 +1,3 @@
|
||||
# @node-redis/client
|
||||
# @redis/client
|
||||
|
||||
The source code and documentation for this package are in the main [node-redis](https://github.com/redis/node-redis) repo.
|
||||
|
@@ -347,10 +347,6 @@ export default class RedisCommandsQueue {
|
||||
return encoded;
|
||||
}
|
||||
|
||||
rejectLastCommand(err: unknown): void {
|
||||
this.#waitingForReply.pop()!.reject(err);
|
||||
}
|
||||
|
||||
onReplyChunk(chunk: Buffer): void {
|
||||
this.#decoder.write(chunk);
|
||||
}
|
||||
|
@@ -29,6 +29,7 @@ export const MATH_FUNCTION = {
|
||||
library: {
|
||||
square: {
|
||||
NAME: 'square',
|
||||
IS_READ_ONLY: true,
|
||||
NUMBER_OF_KEYS: 0,
|
||||
transformArguments(number: number): Array<string> {
|
||||
return [number.toString()];
|
||||
@@ -722,8 +723,11 @@ describe('Client', () => {
|
||||
await subscriber.connect();
|
||||
|
||||
try {
|
||||
const listener = spy();
|
||||
await subscriber.subscribe('channel', listener);
|
||||
const channelListener = spy();
|
||||
await subscriber.subscribe('channel', channelListener);
|
||||
|
||||
const patternListener = spy();
|
||||
await subscriber.pSubscribe('channe*', patternListener);
|
||||
|
||||
await Promise.all([
|
||||
once(subscriber, 'error'),
|
||||
@@ -736,7 +740,8 @@ describe('Client', () => {
|
||||
await once(subscriber, 'ready');
|
||||
|
||||
await Promise.all([
|
||||
waitTillBeenCalled(listener),
|
||||
waitTillBeenCalled(channelListener),
|
||||
waitTillBeenCalled(patternListener),
|
||||
publisher.publish('channel', 'message')
|
||||
]);
|
||||
} finally {
|
||||
|
@@ -399,23 +399,25 @@ export default class RedisClient<
|
||||
|
||||
async functionsExecuter<F extends RedisFunction>(
|
||||
fn: F,
|
||||
args: Array<unknown>
|
||||
args: Array<unknown>,
|
||||
name: string
|
||||
): Promise<RedisCommandReply<F>> {
|
||||
const { args: redisArgs, options } = transformCommandArguments(fn, args);
|
||||
return transformCommandReply(
|
||||
fn,
|
||||
await this.executeFunction(fn, redisArgs, options),
|
||||
await this.executeFunction(name, fn, redisArgs, options),
|
||||
redisArgs.preserve
|
||||
);
|
||||
}
|
||||
|
||||
executeFunction(
|
||||
name: string,
|
||||
fn: RedisFunction,
|
||||
args: RedisCommandArguments,
|
||||
options?: ClientCommandOptions
|
||||
): Promise<RedisCommandRawReply> {
|
||||
return this.#sendCommand(
|
||||
fCallArguments(fn, args),
|
||||
fCallArguments(name, fn, args),
|
||||
options
|
||||
);
|
||||
}
|
||||
|
@@ -141,8 +141,8 @@ export default class RedisClientMultiCommand {
|
||||
return this;
|
||||
}
|
||||
|
||||
functionsExecutor(fn: RedisFunction, args: Array<unknown>): this {
|
||||
this.#multi.addFunction(fn, args);
|
||||
functionsExecutor(fn: RedisFunction, args: Array<unknown>, name: string): this {
|
||||
this.#multi.addFunction(name, fn, args);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@@ -124,12 +124,14 @@ export default class RedisCluster<
|
||||
|
||||
async functionsExecutor<F extends RedisFunction>(
|
||||
fn: F,
|
||||
args: Array<unknown>
|
||||
args: Array<unknown>,
|
||||
name: string,
|
||||
): Promise<RedisCommandReply<F>> {
|
||||
const { args: redisArgs, options } = transformCommandArguments(fn, args);
|
||||
return transformCommandReply(
|
||||
fn,
|
||||
await this.executeFunction(
|
||||
name,
|
||||
fn,
|
||||
args,
|
||||
redisArgs,
|
||||
@@ -140,6 +142,7 @@ export default class RedisCluster<
|
||||
}
|
||||
|
||||
async executeFunction(
|
||||
name: string,
|
||||
fn: RedisFunction,
|
||||
originalArgs: Array<unknown>,
|
||||
redisArgs: RedisCommandArguments,
|
||||
@@ -148,7 +151,7 @@ export default class RedisCluster<
|
||||
return this.#execute(
|
||||
RedisCluster.extractFirstKey(fn, originalArgs, redisArgs),
|
||||
fn.IS_READ_ONLY,
|
||||
client => client.executeFunction(fn, redisArgs, options)
|
||||
client => client.executeFunction(name, fn, redisArgs, options)
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -103,8 +103,8 @@ export default class RedisClusterMultiCommand {
|
||||
return this;
|
||||
}
|
||||
|
||||
functionsExecutor(fn: RedisFunction, args: Array<unknown>): this {
|
||||
const transformedArguments = this.#multi.addFunction(fn, args);
|
||||
functionsExecutor(fn: RedisFunction, args: Array<unknown>, name: string): this {
|
||||
const transformedArguments = this.#multi.addFunction(name, fn, args);
|
||||
this.#firstKey ??= RedisCluster.extractFirstKey(fn, args, transformedArguments);
|
||||
return this;
|
||||
}
|
||||
|
@@ -1,11 +1,11 @@
|
||||
|
||||
import { CommandOptions, isCommandOptions } from './command-options';
|
||||
import { RedisCommand, RedisCommandArguments, RedisCommandReply, RedisFunction, RedisFunctions, RedisModules, RedisScript, RedisScripts } from './commands';
|
||||
import { RedisCommand, RedisCommandArgument, RedisCommandArguments, RedisCommandReply, RedisFunction, RedisFunctions, RedisModules, RedisScript, RedisScripts } from './commands';
|
||||
|
||||
type Instantiable<T = any> = new (...args: Array<any>) => T;
|
||||
|
||||
type CommandsExecutor<C extends RedisCommand = RedisCommand> =
|
||||
(command: C, args: Array<unknown>) => unknown;
|
||||
(command: C, args: Array<unknown>, name: string) => unknown;
|
||||
|
||||
interface AttachCommandsConfig<C extends RedisCommand> {
|
||||
BaseClass: Instantiable;
|
||||
@@ -20,7 +20,7 @@ export function attachCommands<C extends RedisCommand>({
|
||||
}: AttachCommandsConfig<C>): void {
|
||||
for (const [name, command] of Object.entries(commands)) {
|
||||
BaseClass.prototype[name] = function (...args: Array<unknown>): unknown {
|
||||
return executor.call(this, command, args);
|
||||
return executor.call(this, command, args, name);
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -95,7 +95,7 @@ function attachWithNamespaces<C extends RedisCommand>({
|
||||
Commander.prototype[namespace] = {};
|
||||
for (const [name, command] of Object.entries(commands)) {
|
||||
Commander.prototype[namespace][name] = function (...args: Array<unknown>): unknown {
|
||||
return executor.call(this.self, command, args);
|
||||
return executor.call(this.self, command, args, name);
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -138,10 +138,14 @@ export function transformCommandReply<C extends RedisCommand>(
|
||||
return command.transformReply(rawReply, preserved);
|
||||
}
|
||||
|
||||
export function fCallArguments(fn: RedisFunction, args: RedisCommandArguments): RedisCommandArguments {
|
||||
export function fCallArguments(
|
||||
name: RedisCommandArgument,
|
||||
fn: RedisFunction,
|
||||
args: RedisCommandArguments
|
||||
): RedisCommandArguments {
|
||||
const actualArgs: RedisCommandArguments = [
|
||||
fn.IS_READ_ONLY ? 'FCALL_RO' : 'FCALL',
|
||||
fn.NAME
|
||||
name
|
||||
];
|
||||
|
||||
if (fn.NUMBER_OF_KEYS !== undefined) {
|
||||
|
@@ -60,7 +60,6 @@ export interface RedisModules {
|
||||
}
|
||||
|
||||
export interface RedisFunction extends RedisCommand {
|
||||
NAME: string;
|
||||
NUMBER_OF_KEYS?: number;
|
||||
}
|
||||
|
||||
|
@@ -23,8 +23,9 @@ export default class RedisMultiCommand {
|
||||
});
|
||||
}
|
||||
|
||||
addFunction(fn: RedisFunction, args: Array<unknown>): RedisCommandArguments {
|
||||
addFunction(name: string, fn: RedisFunction, args: Array<unknown>): RedisCommandArguments {
|
||||
const transformedArguments = fCallArguments(
|
||||
name,
|
||||
fn,
|
||||
fn.transformArguments(...args)
|
||||
);
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import TestUtils from '@node-redis/test-utils';
|
||||
import TestUtils from '@redis/test-utils';
|
||||
import { SinonSpy } from 'sinon';
|
||||
import { promiseTimeout } from './utils';
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@node-redis/client",
|
||||
"name": "@redis/client",
|
||||
"version": "1.0.5",
|
||||
"license": "MIT",
|
||||
"main": "./dist/index.js",
|
||||
@@ -20,23 +20,23 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@node-redis/test-utils": "*",
|
||||
"@types/node": "^17.0.26",
|
||||
"@redis/test-utils": "*",
|
||||
"@types/node": "^17.0.31",
|
||||
"@types/sinon": "^10.0.11",
|
||||
"@types/yallist": "^4.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.20.0",
|
||||
"@typescript-eslint/parser": "^5.20.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.21.0",
|
||||
"@typescript-eslint/parser": "^5.21.0",
|
||||
"eslint": "^8.14.0",
|
||||
"nyc": "^15.1.0",
|
||||
"release-it": "^14.14.2",
|
||||
"release-it": "^15.0.0",
|
||||
"sinon": "^13.0.2",
|
||||
"source-map-support": "^0.5.21",
|
||||
"ts-node": "^10.7.0",
|
||||
"typedoc": "^0.22.15",
|
||||
"typescript": "^4.6.3"
|
||||
"typescript": "^4.6.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
"node": ">=14"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@@ -1 +1 @@
|
||||
# @node-redis/graph
|
||||
# @redis/graph
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@node-redis/client/dist/lib/commands/index';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands/index';
|
||||
import { pushQueryArguments } from '.';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushQueryArguments } from '.';
|
||||
|
||||
export { FIRST_KEY_INDEX } from './QUERY';
|
||||
|
@@ -7,7 +7,7 @@ import * as PROFILE from './PROFILE';
|
||||
import * as QUERY_RO from './QUERY_RO';
|
||||
import * as QUERY from './QUERY';
|
||||
import * as SLOWLOG from './SLOWLOG';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
|
||||
export default {
|
||||
CONFIG_GET,
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import TestUtils from '@node-redis/test-utils';
|
||||
import TestUtils from '@redis/test-utils';
|
||||
import RedisGraph from '.';
|
||||
|
||||
export default new TestUtils({
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@node-redis/graph",
|
||||
"name": "@redis/graph",
|
||||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"main": "./dist/index.js",
|
||||
@@ -13,17 +13,17 @@
|
||||
"documentation": "typedoc"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
"@redis/client": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@node-redis/test-utils": "*",
|
||||
"@types/node": "^17.0.26",
|
||||
"@redis/test-utils": "*",
|
||||
"@types/node": "^17.0.31",
|
||||
"nyc": "^15.1.0",
|
||||
"release-it": "^14.14.2",
|
||||
"release-it": "^15.0.0",
|
||||
"source-map-support": "^0.5.21",
|
||||
"ts-node": "^10.7.0",
|
||||
"typedoc": "^0.22.15",
|
||||
"typescript": "^4.6.3"
|
||||
"typescript": "^4.6.4"
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# @node-redis/json
|
||||
# @redis/json
|
||||
|
||||
This package provides support for the [RedisJSON](https://redisjson.io) module, which adds JSON as a native data type to Redis. It extends the [Node Redis client](https://github.com/redis/node-redis) to include functions for each of the RedisJSON commands.
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import TestUtils from '@node-redis/test-utils';
|
||||
import TestUtils from '@redis/test-utils';
|
||||
import RedisJSON from '.';
|
||||
|
||||
export default new TestUtils({
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@node-redis/json",
|
||||
"name": "@redis/json",
|
||||
"version": "1.0.2",
|
||||
"license": "MIT",
|
||||
"main": "./dist/index.js",
|
||||
@@ -13,17 +13,17 @@
|
||||
"documentation": "typedoc"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
"@redis/client": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@node-redis/test-utils": "*",
|
||||
"@types/node": "^17.0.26",
|
||||
"@redis/test-utils": "*",
|
||||
"@types/node": "^17.0.31",
|
||||
"nyc": "^15.1.0",
|
||||
"release-it": "^14.14.2",
|
||||
"release-it": "^15.0.0",
|
||||
"source-map-support": "^0.5.21",
|
||||
"ts-node": "^10.7.0",
|
||||
"typedoc": "^0.22.15",
|
||||
"typescript": "^4.6.3"
|
||||
"typescript": "^4.6.4"
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# @node-redis/search
|
||||
# @redis/search
|
||||
|
||||
This package provides support for the [RediSearch](https://redisearch.io) module, which adds indexing and querying support for data stored in Redis Hashes or as JSON documents with the RedisJSON module. It extends the [Node Redis client](https://github.com/redis/node-redis) to include functions for each of the RediSearch commands.
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArgument, transformTuplesReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArgument, transformTuplesReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
import { Params, PropertyName, pushArgumentsWithLength, pushParamsArgs, pushSortByArguments, SortByProperty } from '.';
|
||||
|
||||
export enum AggregateSteps {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { pushOptionalVerdictArgument } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { pushOptionalVerdictArgument } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisSearchLanguages, PropertyName, RediSearchSchema, pushSchema } from '.';
|
||||
|
||||
interface CreateOptions {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export function transformArguments(dictionary: string, term: string | Array<string>): RedisCommandArguments {
|
||||
return pushVerdictArguments(['FT.DICTADD', dictionary], term);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export function transformArguments(dictionary: string, term: string | Array<string>): RedisCommandArguments {
|
||||
return pushVerdictArguments(['FT.DICTDEL', dictionary], term);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArgument } from '@node-redis/client/dist/lib/commands';
|
||||
import { transformTuplesReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArgument } from '@redis/client/dist/lib/commands';
|
||||
import { transformTuplesReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export function transformArguments(index: string): Array<string> {
|
||||
return ['FT.INFO', index];
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import { SearchOptions, SearchRawReply, transformReply as transformSearchReply } from './SEARCH';
|
||||
import { pushSearchOptions, ProfileOptions, ProfileRawReply, ProfileReply, transformProfile } from '.';
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
|
||||
export const IS_READ_ONLY = true;
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { transformTuplesReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { transformTuplesReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
import { pushSearchOptions, RedisSearchLanguages, Params, PropertyName, SortByProperty, SearchReply } from '.';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
@@ -2,4 +2,4 @@ export function transformArguments(key: string, string: string): Array<string> {
|
||||
return ['FT.SUGDEL', key, string];
|
||||
}
|
||||
|
||||
export { transformBooleanReply as transformReply } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
|
||||
interface SynUpdateOptions {
|
||||
SKIPINITIALSCAN?: true;
|
||||
|
@@ -28,8 +28,8 @@ import * as SUGLEN from './SUGLEN';
|
||||
import * as SYNDUMP from './SYNDUMP';
|
||||
import * as SYNUPDATE from './SYNUPDATE';
|
||||
import * as TAGVALS from './TAGVALS';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushOptionalVerdictArgument, pushVerdictArgument } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushOptionalVerdictArgument, pushVerdictArgument } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
import { SearchOptions } from './SEARCH';
|
||||
|
||||
export default {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import TestUtils from '@node-redis/test-utils';
|
||||
import TestUtils from '@redis/test-utils';
|
||||
import RediSearch from '.';
|
||||
|
||||
export default new TestUtils({
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@node-redis/search",
|
||||
"name": "@redis/search",
|
||||
"version": "1.0.5",
|
||||
"license": "MIT",
|
||||
"main": "./dist/index.js",
|
||||
@@ -13,17 +13,17 @@
|
||||
"documentation": "typedoc"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
"@redis/client": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@node-redis/test-utils": "*",
|
||||
"@types/node": "^17.0.26",
|
||||
"@redis/test-utils": "*",
|
||||
"@types/node": "^17.0.31",
|
||||
"nyc": "^15.1.0",
|
||||
"release-it": "^14.14.2",
|
||||
"release-it": "^15.0.0",
|
||||
"source-map-support": "^0.5.21",
|
||||
"ts-node": "^10.7.0",
|
||||
"typedoc": "^0.22.15",
|
||||
"typescript": "^4.6.3"
|
||||
"typescript": "^4.6.4"
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,8 @@
|
||||
import { createConnection } from 'net';
|
||||
import { once } from 'events';
|
||||
import { RedisModules, RedisFunctions, RedisScripts } from '@node-redis/client/lib/commands';
|
||||
import RedisClient, { RedisClientType } from '@node-redis/client/lib/client';
|
||||
import { promiseTimeout } from '@node-redis/client/lib/utils';
|
||||
import { RedisModules, RedisFunctions, RedisScripts } from '@redis/client/lib/commands';
|
||||
import RedisClient, { RedisClientType } from '@redis/client/lib/client';
|
||||
import { promiseTimeout } from '@redis/client/lib/utils';
|
||||
import * as path from 'path';
|
||||
import { promisify } from 'util';
|
||||
import { exec } from 'child_process';
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import { RedisModules, RedisFunctions, RedisScripts } from '@node-redis/client/lib/commands';
|
||||
import RedisClient, { RedisClientOptions, RedisClientType } from '@node-redis/client/lib/client';
|
||||
import RedisCluster, { RedisClusterOptions, RedisClusterType } from '@node-redis/client/lib/cluster';
|
||||
import { RedisModules, RedisFunctions, RedisScripts } from '@redis/client/lib/commands';
|
||||
import RedisClient, { RedisClientOptions, RedisClientType } from '@redis/client/lib/client';
|
||||
import RedisCluster, { RedisClusterOptions, RedisClusterType } from '@redis/client/lib/cluster';
|
||||
import { RedisServerDockerConfig, spawnRedisServer, spawnRedisCluster } from './dockers';
|
||||
import yargs from 'yargs';
|
||||
import { hideBin } from 'yargs/helpers';
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@node-redis/test-utils",
|
||||
"name": "@redis/test-utils",
|
||||
"private": true,
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -7,18 +7,18 @@
|
||||
"build": "tsc"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
"@redis/client": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@types/mocha": "^9.1.1",
|
||||
"@types/node": "^17.0.26",
|
||||
"@types/node": "^17.0.31",
|
||||
"@types/yargs": "^17.0.10",
|
||||
"mocha": "^9.2.2",
|
||||
"mocha": "^10.0.0",
|
||||
"nyc": "^15.1.0",
|
||||
"source-map-support": "^0.5.21",
|
||||
"ts-node": "^10.7.0",
|
||||
"typescript": "^4.6.3",
|
||||
"typescript": "^4.6.4",
|
||||
"yargs": "^17.4.1"
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# @node-redis/time-series
|
||||
# @redis/time-series
|
||||
|
||||
This package provides support for the [RedisTimeSeries](https://redistimeseries.io) module, which adds a time series data structure to Redis. It extends the [Node Redis client](https://github.com/redis/node-redis) to include functions for each of the RedisTimeSeries commands.
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { IncrDecrOptions, transformIncrDecrArguments } from '.';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { Timestamp, transformTimestampArgument } from '.';
|
||||
|
||||
export const FIRTS_KEY_INDEX = 1;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { IncrDecrOptions, transformIncrDecrArguments } from '.';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { Filter, pushFilterArgument, RawLabels, SampleRawReply, SampleReply, transformSampleReply } from '.';
|
||||
|
||||
export const IS_READ_ONLY = true;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { MRangeOptions, Timestamp, pushMRangeArguments, Filter } from '.';
|
||||
|
||||
export const IS_READ_ONLY = true;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { Timestamp, MRangeWithLabelsOptions, pushMRangeWithLabelsArguments } from '.';
|
||||
|
||||
export const IS_READ_ONLY = true;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { MRangeOptions, Timestamp, pushMRangeArguments, Filter } from '.';
|
||||
|
||||
export const IS_READ_ONLY = true;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { Timestamp, MRangeWithLabelsOptions, pushMRangeWithLabelsArguments, Filter } from '.';
|
||||
|
||||
export const IS_READ_ONLY = true;
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
import { Filter } from '.';
|
||||
|
||||
export const IS_READ_ONLY = true;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { RangeOptions, Timestamp, pushRangeArguments, SampleRawReply, SampleReply, transformRangeReply } from '.';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { RangeOptions, Timestamp, pushRangeArguments, SampleRawReply, SampleReply, transformRangeReply } from '.';
|
||||
|
||||
export const FIRST_KEY_INDEX = 1;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { strict as assert } from 'assert';
|
||||
import {
|
||||
transformTimestampArgument,
|
||||
|
@@ -19,8 +19,8 @@ import * as MRANGE from './MRANGE';
|
||||
import * as MRANGE_WITHLABELS from './MRANGE_WITHLABELS';
|
||||
import * as MREVRANGE from './MREVRANGE';
|
||||
import * as MREVRANGE_WITHLABELS from './MREVRANGE_WITHLABELS';
|
||||
import { RedisCommandArguments } from '@node-redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@node-redis/client/dist/lib/commands/generic-transformers';
|
||||
import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
|
||||
import { pushVerdictArguments } from '@redis/client/dist/lib/commands/generic-transformers';
|
||||
|
||||
export default {
|
||||
ADD,
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import TestUtils from '@node-redis/test-utils';
|
||||
import TestUtils from '@redis/test-utils';
|
||||
import TimeSeries from '.';
|
||||
|
||||
export default new TestUtils({
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "@node-redis/time-series",
|
||||
"name": "@redis/time-series",
|
||||
"version": "1.0.2",
|
||||
"license": "MIT",
|
||||
"main": "./dist/index.js",
|
||||
@@ -13,17 +13,17 @@
|
||||
"documentation": "typedoc"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@node-redis/client": "^1.0.0"
|
||||
"@redis/client": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
||||
"@node-redis/test-utils": "*",
|
||||
"@types/node": "^17.0.26",
|
||||
"@redis/test-utils": "*",
|
||||
"@types/node": "^17.0.31",
|
||||
"nyc": "^15.1.0",
|
||||
"release-it": "^14.14.2",
|
||||
"release-it": "^15.0.0",
|
||||
"source-map-support": "^0.5.21",
|
||||
"ts-node": "^10.7.0",
|
||||
"typedoc": "^0.22.15",
|
||||
"typescript": "^4.6.3"
|
||||
"typescript": "^4.6.4"
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@tsconfig/node12/tsconfig.json",
|
||||
"extends": "@tsconfig/node14/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"declaration": true,
|
||||
"allowJs": true,
|
||||
|
Reference in New Issue
Block a user