You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
use dockers for tests, use npm workspaces, add rejson & redisearch modules, fix some bugs
This commit is contained in:
1
.github/release-drafter-config.yml
vendored
1
.github/release-drafter-config.yml
vendored
@@ -41,4 +41,3 @@ template: |
|
|||||||
We'd like to thank all the contributors who worked on this release!
|
We'd like to thank all the contributors who worked on this release!
|
||||||
|
|
||||||
$CONTRIBUTORS
|
$CONTRIBUTORS
|
||||||
|
|
||||||
|
46
.github/workflows/benchmark.yml
vendored
46
.github/workflows/benchmark.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
name: Benchmark
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- v4.0
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
benchmark:
|
|
||||||
name: Benchmark
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
node-version: [16.x]
|
|
||||||
redis-version: [6.x]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2.3.4
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
|
||||||
uses: actions/setup-node@v2.3.0
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node-version }}
|
|
||||||
|
|
||||||
- name: Setup Redis
|
|
||||||
uses: shogo82148/actions-setup-redis@v1.12.0
|
|
||||||
with:
|
|
||||||
redis-version: ${{ matrix.redis-version }}
|
|
||||||
|
|
||||||
- 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
|
|
3
.github/workflows/tests.yml
vendored
3
.github/workflows/tests.yml
vendored
@@ -28,6 +28,9 @@ jobs:
|
|||||||
- name: Install Packages
|
- name: Install Packages
|
||||||
run: npm ci
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build tests tools
|
||||||
|
run: npm run build:tests-tools
|
||||||
|
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
run: npm run test -- --forbid-only --redis-version=${{ matrix.redis-version }}
|
run: npm run test -- --forbid-only --redis-version=${{ matrix.redis-version }}
|
||||||
|
|
||||||
|
9
.gitignore
vendored
9
.gitignore
vendored
@@ -1,9 +1,8 @@
|
|||||||
.vscode/
|
|
||||||
.idea/
|
.idea/
|
||||||
node_modules/
|
|
||||||
dist/
|
|
||||||
.nyc_output/
|
.nyc_output/
|
||||||
|
.vscode/
|
||||||
coverage/
|
coverage/
|
||||||
dump.rdb
|
dist/
|
||||||
documentation/
|
node_modules/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
dump.rdb
|
||||||
|
20
.npmignore
20
.npmignore
@@ -1,20 +0,0 @@
|
|||||||
.vscode/
|
|
||||||
.idea/
|
|
||||||
node_modules/
|
|
||||||
.nyc_output/
|
|
||||||
coverage/
|
|
||||||
dump.rdb
|
|
||||||
documentation/
|
|
||||||
CONTRIBUTING.md
|
|
||||||
tsconfig.json
|
|
||||||
.deepsource.toml
|
|
||||||
.nycrc.json
|
|
||||||
benchmark/
|
|
||||||
.github/
|
|
||||||
scripts/
|
|
||||||
lib/
|
|
||||||
index.ts
|
|
||||||
*.spec.*
|
|
||||||
dist/lib/test-utils.*
|
|
||||||
.DS_Store
|
|
||||||
examples/
|
|
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "@istanbuljs/nyc-config-typescript",
|
|
||||||
"exclude": ["**/*.spec.ts", "lib/test-utils/**/*.ts"]
|
|
||||||
}
|
|
@@ -47,10 +47,7 @@ Node Redis has a full test suite with coverage setup.
|
|||||||
|
|
||||||
To run the tests, run `npm install` to install dependencies, then run `npm test`.
|
To run the tests, run `npm install` to install dependencies, then run `npm test`.
|
||||||
|
|
||||||
Note that the test suite assumes that a few tools are installed in your environment, such as:
|
Note that the test suite assumes that [`docker`](https://www.docker.com/) is installed in your environment.
|
||||||
|
|
||||||
- redis (make sure redis-server is not running when starting the tests, it's part of the test-suite to start it and you'll end up with a "port already in use" error)
|
|
||||||
- stunnel (for TLS tests)
|
|
||||||
|
|
||||||
### Submitting Code for Review
|
### Submitting Code for Review
|
||||||
|
|
||||||
|
300
README.md
300
README.md
@@ -1,296 +1,18 @@
|
|||||||
<p align="center">
|
# Node-Redis monorpo
|
||||||
<a href="https://github.com/redis/node-redis">
|
|
||||||
<img width="128" src="https://static.invertase.io/assets/node_redis_logo.png" />
|
|
||||||
</a>
|
|
||||||
<h2 align="center">Node Redis</h2>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div align="center">
|
### Clients
|
||||||
<a href="https://coveralls.io/github/redis/node-redis">
|
|
||||||
<img src="https://coveralls.io/repos/github/redis/node-redis/badge.svg" alt="Coverage Status"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://www.npmjs.com/package/redis/v/next">
|
|
||||||
<img src="https://img.shields.io/npm/dm/redis.svg" alt="Downloads"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://www.npmjs.com/package/redis/v/next">
|
|
||||||
<img src="https://img.shields.io/npm/v/redis/next.svg" alt="Version"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://discord.gg/XMMVgxUm">
|
|
||||||
<img src="https://img.shields.io/discord/697882427875393627" alt="Chat"/>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
| Name | Description |
|
||||||
|
|------------------------------------|-------------|
|
||||||
|
| [redis](./packages/all-in-one) | |
|
||||||
|
| [@redis/client](./packages/client) | |
|
||||||
|
|
||||||
## Installation
|
### [Modules](https://redis.io/modules)
|
||||||
|
|
||||||
```bash
|
| Name | Description |
|
||||||
npm install redis@next
|
|------------------------------------|------------------------------------------------------------|
|
||||||
```
|
| [@redis/json](./packages/json) | [Redis JSON](https://oss.redis.com/redisjson/) commands |
|
||||||
|
| [@redis/search](./packages/search) | [Redis Search](https://oss.redis.com/redisearch/) commands |
|
||||||
> :warning: The new interface is clean and cool, but if you have an existing code base, you'll want to read the [migration guide](./docs/v3-to-v4.md).
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Basic Example
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
import { createClient } from 'redis';
|
|
||||||
|
|
||||||
(async () => {
|
|
||||||
const client = createClient();
|
|
||||||
|
|
||||||
client.on('error', (err) => console.log('Redis Client Error', err));
|
|
||||||
|
|
||||||
await client.connect();
|
|
||||||
|
|
||||||
await client.set('key', 'value');
|
|
||||||
const value = await client.get('key');
|
|
||||||
})();
|
|
||||||
```
|
|
||||||
|
|
||||||
The above code connects to localhost on port 6379. To connect to a different host or port, use a connection string in the format `redis[s]://[[username][:password]@][host][:port][/db-number]`:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
createClient({
|
|
||||||
url: 'redis://alice:foobared@awesome.redis.server:6380'
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also use discrete parameters, UNIX sockets, and even TLS to connect. Details can be found in the [client configuration guide](./docs/client-configuration.md).
|
|
||||||
|
|
||||||
### Redis Commands
|
|
||||||
|
|
||||||
There is built-in support for all of the [out-of-the-box Redis commands](https://redis.io/commands). They are exposed using the raw Redis command names (`HSET`, `HGETALL`, etc.) and a friendlier camel-cased version (`hSet`, `hGetAll`, etc.):
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
// raw Redis commands
|
|
||||||
await client.HSET('key', 'field', 'value');
|
|
||||||
await client.HGETALL('key');
|
|
||||||
|
|
||||||
// friendly JavaScript commands
|
|
||||||
await client.hSet('key', 'field', 'value');
|
|
||||||
await client.hGetAll('key');
|
|
||||||
```
|
|
||||||
|
|
||||||
Modifiers to commands are specified using a JavaScript object:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
await client.set('key', 'value', {
|
|
||||||
EX: 10,
|
|
||||||
NX: true
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
Replies will be transformed into useful data structures:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
await client.hGetAll('key'); // { field1: 'value1', field2: 'value2' }
|
|
||||||
await client.hVals('key'); // ['value1', 'value2']
|
|
||||||
```
|
|
||||||
|
|
||||||
### Unsupported Redis Commands
|
|
||||||
|
|
||||||
If you want to run commands and/or use arguments that Node Redis doesn't know about (yet!) use `.sendCommand()`:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
await client.sendCommand(['SET', 'key', 'value', 'NX']); // 'OK'
|
|
||||||
|
|
||||||
await client.sendCommand(['HGETALL', 'key']); // ['key1', 'field1', 'key2', 'field2']
|
|
||||||
```
|
|
||||||
|
|
||||||
### Transactions (Multi/Exec)
|
|
||||||
|
|
||||||
Start a [transaction](https://redis.io/topics/transactions) by calling `.multi()`, then chaining your commands. When you're done, call `.exec()` and you'll get an array back with your results:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
await client.set('another-key', 'another-value');
|
|
||||||
|
|
||||||
const [setKeyReply, otherKeyValue] = await client
|
|
||||||
.multi()
|
|
||||||
.set('key', 'value')
|
|
||||||
.get('another-key')
|
|
||||||
.exec(); // ['OK', 'another-value']
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also [watch](https://redis.io/topics/transactions#optimistic-locking-using-check-and-set) keys by calling `.watch()`. Your transaction will abort if any of the watched keys change.
|
|
||||||
|
|
||||||
To dig deeper into transactions, check out the [Isolated Execution Guide](./docs/isolated-execution.md).
|
|
||||||
|
|
||||||
### Blocking Commands
|
|
||||||
|
|
||||||
Any command can be run on a new connection by specifying the `isolated` option. The newly created connection is closed when the command's `Promise` is fulfilled.
|
|
||||||
|
|
||||||
This pattern works especially well for blocking commands—such as `BLPOP` and `BLMOVE`:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
import { commandOptions } from 'redis';
|
|
||||||
|
|
||||||
const blPopPromise = client.blPop(commandOptions({ isolated: true }), 'key', 0);
|
|
||||||
|
|
||||||
await client.lPush('key', ['1', '2']);
|
|
||||||
|
|
||||||
await blPopPromise; // '2'
|
|
||||||
```
|
|
||||||
|
|
||||||
To learn more about isolated execution, check out the [guide](./docs/isolated-execution.md).
|
|
||||||
|
|
||||||
### Pub/Sub
|
|
||||||
|
|
||||||
Subscribing to a channel requires a dedicated stand-alone connection. You can easily get one by `.duplicate()`ing an existing Redis connection.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const subscriber = client.duplicate();
|
|
||||||
|
|
||||||
await subscriber.connect();
|
|
||||||
```
|
|
||||||
|
|
||||||
Once you have one, simply subscribe and unsubscribe as needed:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
await subscriber.subscribe('channel', (message) => {
|
|
||||||
console.log(message); // 'message'
|
|
||||||
});
|
|
||||||
|
|
||||||
await subscriber.pSubscribe('channe*', (message, channel) => {
|
|
||||||
console.log(message, channel); // 'message', 'channel'
|
|
||||||
});
|
|
||||||
|
|
||||||
await subscriber.unsubscribe('channel');
|
|
||||||
|
|
||||||
await subscriber.pUnsubscribe('channe*');
|
|
||||||
```
|
|
||||||
|
|
||||||
Publish a message on a channel:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
await publisher.publish('channel', 'message');
|
|
||||||
```
|
|
||||||
|
|
||||||
### Scan Iterator
|
|
||||||
|
|
||||||
[`SCAN`](https://redis.io/commands/scan) results can be looped over using [async iterators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator):
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
for await (const key of client.scanIterator()) {
|
|
||||||
// use the key!
|
|
||||||
await client.get(key);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
This works with `HSCAN`, `SSCAN`, and `ZSCAN` too:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
for await (const { field, value } of client.hScanIterator('hash')) {}
|
|
||||||
for await (const member of client.sScanIterator('set')) {}
|
|
||||||
for await (const { score, member } of client.zScanIterator('sorted-set')) {}
|
|
||||||
```
|
|
||||||
|
|
||||||
You can override the default options by providing a configuration object:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
client.scanIterator({
|
|
||||||
TYPE: 'string', // `SCAN` only
|
|
||||||
MATCH: 'patter*',
|
|
||||||
COUNT: 100
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
### Lua Scripts
|
|
||||||
|
|
||||||
Define new functions using [Lua scripts](https://redis.io/commands/eval) which execute on the Redis server:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
import { createClient, defineScript } from 'redis';
|
|
||||||
|
|
||||||
(async () => {
|
|
||||||
const client = createClient({
|
|
||||||
scripts: {
|
|
||||||
add: defineScript({
|
|
||||||
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.set('key', '1');
|
|
||||||
await client.add('key', 2); // 3
|
|
||||||
})();
|
|
||||||
```
|
|
||||||
|
|
||||||
### Disconnecting
|
|
||||||
|
|
||||||
There are two functions that disconnect a client from the Redis server. In most scenarios you should use `.quit()` to ensure that pending commands are sent to Redis before closing a connection.
|
|
||||||
|
|
||||||
#### `.QUIT()`/`.quit()`
|
|
||||||
|
|
||||||
Gracefully close a client's connection to Redis, by sending the [`QUIT`](https://redis.io/commands/quit) command to the server. Before quitting, the client executes any remaining commands in its queue, and will receive replies from Redis for each of them.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const [ping, get, quit] = await Promise.all([
|
|
||||||
client.ping(),
|
|
||||||
client.get('key'),
|
|
||||||
client.quit()
|
|
||||||
]); // ['PONG', null, 'OK']
|
|
||||||
|
|
||||||
try {
|
|
||||||
await client.get('key');
|
|
||||||
} catch (err) {
|
|
||||||
// ClosedClient Error
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### `.disconnect()`
|
|
||||||
|
|
||||||
Forcibly close a client's connection to Redis immediately. Calling `disconnect` will not send further pending commands to the Redis server, or wait for or parse outstanding responses.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
await client.disconnect();
|
|
||||||
```
|
|
||||||
|
|
||||||
### Auto-Pipelining
|
|
||||||
|
|
||||||
Node Redis will automatically pipeline requests that are made during the same "tick".
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
client.set('Tm9kZSBSZWRpcw==', 'users:1');
|
|
||||||
client.sAdd('users:1:tokens', 'Tm9kZSBSZWRpcw==');
|
|
||||||
```
|
|
||||||
|
|
||||||
Of course, if you don't do something with your Promises you're certain to get [unhandled Promise exceptions](https://nodejs.org/api/process.html#process_event_unhandledrejection). To take advantage of auto-pipelining and handle your Promises, use `Promise.all()`.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
await Promise.all([
|
|
||||||
client.set('Tm9kZSBSZWRpcw==', 'users:1'),
|
|
||||||
client.sAdd('users:1:tokens', 'Tm9kZSBSZWRpcw==')
|
|
||||||
]);
|
|
||||||
```
|
|
||||||
|
|
||||||
### Clustering
|
|
||||||
|
|
||||||
Check out the [Clustering Guide](./docs/clustering.md) when using Node Redis to connect to a Redis Cluster.
|
|
||||||
|
|
||||||
## Supported Redis versions
|
|
||||||
|
|
||||||
Node Redis is supported with the following versions of Redis:
|
|
||||||
|
|
||||||
| Version | Supported |
|
|
||||||
|---------|--------------------|
|
|
||||||
| 6.2.z | :heavy_check_mark: |
|
|
||||||
| 6.0.z | :heavy_check_mark: |
|
|
||||||
| 5.y.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.
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
1
benchmark/.gitignore
vendored
1
benchmark/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
node_modules
|
|
@@ -1,81 +0,0 @@
|
|||||||
import { add, suite, cycle, complete } from 'benny';
|
|
||||||
import v4 from 'v4';
|
|
||||||
import v3 from 'v3';
|
|
||||||
import { once } from 'events';
|
|
||||||
|
|
||||||
const v4Client = v4.createClient(),
|
|
||||||
v4LegacyClient = v4.createClient({
|
|
||||||
legacyMode: true
|
|
||||||
}),
|
|
||||||
v3Client = v3.createClient();
|
|
||||||
|
|
||||||
await Promise.all([
|
|
||||||
v4Client.connect(),
|
|
||||||
v4LegacyClient.connect(),
|
|
||||||
once(v3Client, 'connect')
|
|
||||||
]);
|
|
||||||
|
|
||||||
const key = random(100),
|
|
||||||
value = random(100);
|
|
||||||
|
|
||||||
function random(size) {
|
|
||||||
const result = [];
|
|
||||||
|
|
||||||
for (let i = 0; i < size; i++) {
|
|
||||||
result.push(Math.floor(Math.random() * 10));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result.join('');
|
|
||||||
}
|
|
||||||
|
|
||||||
suite(
|
|
||||||
'SET GET',
|
|
||||||
add('v4', async () => {
|
|
||||||
await Promise.all([
|
|
||||||
v4Client.set(key, value),
|
|
||||||
v4Client.get(key)
|
|
||||||
]);
|
|
||||||
}),
|
|
||||||
add('v4 - legacy mode', () => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
v4LegacyClient.set(key, value);
|
|
||||||
v4LegacyClient.get(key, (err, reply) => {
|
|
||||||
if (err) {
|
|
||||||
reject(err);
|
|
||||||
} else {
|
|
||||||
resolve(reply);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}),
|
|
||||||
add('v3', () => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
v3Client.set(key, value);
|
|
||||||
v3Client.get(key, (err, reply) => {
|
|
||||||
if (err) {
|
|
||||||
reject(err);
|
|
||||||
} else {
|
|
||||||
resolve(reply);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}),
|
|
||||||
cycle(),
|
|
||||||
complete(),
|
|
||||||
complete(() => {
|
|
||||||
return Promise.all([
|
|
||||||
v4Client.disconnect(),
|
|
||||||
v4LegacyClient.disconnect(),
|
|
||||||
new Promise((resolve, reject) => {
|
|
||||||
v3Client.quit((err) => {
|
|
||||||
if (err) {
|
|
||||||
reject(err);
|
|
||||||
} else {
|
|
||||||
resolve(err);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
]);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
849
benchmark/package-lock.json
generated
849
benchmark/package-lock.json
generated
@@ -1,849 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "benchmark",
|
|
||||||
"lockfileVersion": 2,
|
|
||||||
"requires": true,
|
|
||||||
"packages": {
|
|
||||||
"": {
|
|
||||||
"name": "benchmark",
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"benny": "3.6.15",
|
|
||||||
"v3": "npm:redis@3.1.2",
|
|
||||||
"v4": "file:../"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"..": {
|
|
||||||
"name": "redis",
|
|
||||||
"version": "4.0.0-rc.2",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"cluster-key-slot": "1.1.0",
|
|
||||||
"generic-pool": "3.8.2",
|
|
||||||
"redis-parser": "3.0.0",
|
|
||||||
"yallist": "4.0.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
|
||||||
"@tsconfig/node12": "^1.0.9",
|
|
||||||
"@types/mocha": "^9.0.0",
|
|
||||||
"@types/node": "^16.10.3",
|
|
||||||
"@types/sinon": "^10.0.4",
|
|
||||||
"@types/which": "^2.0.1",
|
|
||||||
"@types/yallist": "^4.0.1",
|
|
||||||
"mocha": "^9.1.2",
|
|
||||||
"nyc": "^15.1.0",
|
|
||||||
"release-it": "^14.11.6",
|
|
||||||
"sinon": "^11.1.2",
|
|
||||||
"source-map-support": "^0.5.20",
|
|
||||||
"ts-node": "^10.3.0",
|
|
||||||
"typedoc": "^0.22.5",
|
|
||||||
"typedoc-github-wiki-theme": "^0.6.0",
|
|
||||||
"typedoc-plugin-markdown": "^3.11.3",
|
|
||||||
"typescript": "^4.4.3",
|
|
||||||
"which": "^2.0.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@arrows/array": {
|
|
||||||
"version": "1.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/array/-/array-1.4.1.tgz",
|
|
||||||
"integrity": "sha512-MGYS8xi3c4tTy1ivhrVntFvufoNzje0PchjEz6G/SsWRgUKxL4tKwS6iPdO8vsaJYldagAeWMd5KRD0aX3Q39g==",
|
|
||||||
"dependencies": {
|
|
||||||
"@arrows/composition": "^1.2.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@arrows/composition": {
|
|
||||||
"version": "1.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/composition/-/composition-1.2.2.tgz",
|
|
||||||
"integrity": "sha512-9fh1yHwrx32lundiB3SlZ/VwuStPB4QakPsSLrGJFH6rCXvdrd060ivAZ7/2vlqPnEjBkPRRXOcG1YOu19p2GQ=="
|
|
||||||
},
|
|
||||||
"node_modules/@arrows/dispatch": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/dispatch/-/dispatch-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-v/HwvrFonitYZM2PmBlAlCqVqxrkIIoiEuy5bQgn0BdfvlL0ooSBzcPzTMrtzY8eYktPyYcHg8fLbSgyybXEqw==",
|
|
||||||
"dependencies": {
|
|
||||||
"@arrows/composition": "^1.2.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@arrows/error": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/error/-/error-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-yvkiv1ay4Z3+Z6oQsUkedsQm5aFdyPpkBUQs8vejazU/RmANABx6bMMcBPPHI4aW43VPQmXFfBzr/4FExwWTEA=="
|
|
||||||
},
|
|
||||||
"node_modules/@arrows/multimethod": {
|
|
||||||
"version": "1.1.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/multimethod/-/multimethod-1.1.7.tgz",
|
|
||||||
"integrity": "sha512-EjHD3XuGAV4G28rm7mu8k7zQJh/EOizh104/p9i2ofGcnL5mgKONFH/Bq6H3SJjM+WDAlKcR9WBpNhaAKCnH2g==",
|
|
||||||
"dependencies": {
|
|
||||||
"@arrows/array": "^1.4.0",
|
|
||||||
"@arrows/composition": "^1.2.2",
|
|
||||||
"@arrows/error": "^1.0.2",
|
|
||||||
"fast-deep-equal": "^3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/ansi-escapes": {
|
|
||||||
"version": "4.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
|
|
||||||
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"type-fest": "^0.21.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/ansi-regex": {
|
|
||||||
"version": "5.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
|
||||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/ansi-styles": {
|
|
||||||
"version": "4.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
|
||||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
|
||||||
"dependencies": {
|
|
||||||
"color-convert": "^2.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/astral-regex": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/at-least-node": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/benchmark": {
|
|
||||||
"version": "2.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz",
|
|
||||||
"integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=",
|
|
||||||
"dependencies": {
|
|
||||||
"lodash": "^4.17.4",
|
|
||||||
"platform": "^1.3.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/benny": {
|
|
||||||
"version": "3.6.15",
|
|
||||||
"resolved": "https://registry.npmjs.org/benny/-/benny-3.6.15.tgz",
|
|
||||||
"integrity": "sha512-kq6XVGGYVou3Y8KNPs3SEF881vi5fJ8sIf9w69D2rreiNfRicWVWK6u6/mObMw6BiexoHHumtipn5gcu0Tngng==",
|
|
||||||
"dependencies": {
|
|
||||||
"@arrows/composition": "^1.0.0",
|
|
||||||
"@arrows/dispatch": "^1.0.2",
|
|
||||||
"@arrows/multimethod": "^1.1.6",
|
|
||||||
"benchmark": "^2.1.4",
|
|
||||||
"fs-extra": "^9.0.1",
|
|
||||||
"json2csv": "^5.0.4",
|
|
||||||
"kleur": "^4.1.3",
|
|
||||||
"log-update": "^4.0.0",
|
|
||||||
"prettier": "^2.1.2",
|
|
||||||
"stats-median": "^1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/cli-cursor": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
|
|
||||||
"dependencies": {
|
|
||||||
"restore-cursor": "^3.1.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/color-convert": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"color-name": "~1.1.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=7.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/color-name": {
|
|
||||||
"version": "1.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
|
||||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
|
||||||
},
|
|
||||||
"node_modules/commander": {
|
|
||||||
"version": "6.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
|
||||||
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"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/emoji-regex": {
|
|
||||||
"version": "8.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
|
||||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
|
||||||
},
|
|
||||||
"node_modules/fast-deep-equal": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
|
||||||
},
|
|
||||||
"node_modules/fs-extra": {
|
|
||||||
"version": "9.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
|
||||||
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"at-least-node": "^1.0.0",
|
|
||||||
"graceful-fs": "^4.2.0",
|
|
||||||
"jsonfile": "^6.0.1",
|
|
||||||
"universalify": "^2.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/graceful-fs": {
|
|
||||||
"version": "4.2.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
|
|
||||||
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
|
|
||||||
},
|
|
||||||
"node_modules/is-fullwidth-code-point": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/json2csv": {
|
|
||||||
"version": "5.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.6.tgz",
|
|
||||||
"integrity": "sha512-0/4Lv6IenJV0qj2oBdgPIAmFiKKnh8qh7bmLFJ+/ZZHLjSeiL3fKKGX3UryvKPbxFbhV+JcYo9KUC19GJ/Z/4A==",
|
|
||||||
"dependencies": {
|
|
||||||
"commander": "^6.1.0",
|
|
||||||
"jsonparse": "^1.3.1",
|
|
||||||
"lodash.get": "^4.4.2"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"json2csv": "bin/json2csv.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 10",
|
|
||||||
"npm": ">= 6.13.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jsonfile": {
|
|
||||||
"version": "6.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
|
||||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"universalify": "^2.0.0"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"graceful-fs": "^4.1.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jsonparse": {
|
|
||||||
"version": "1.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
|
|
||||||
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
|
|
||||||
"engines": [
|
|
||||||
"node >= 0.2.0"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/kleur": {
|
|
||||||
"version": "4.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz",
|
|
||||||
"integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/lodash": {
|
|
||||||
"version": "4.17.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
|
||||||
},
|
|
||||||
"node_modules/lodash.get": {
|
|
||||||
"version": "4.4.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
|
|
||||||
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
|
|
||||||
},
|
|
||||||
"node_modules/log-update": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
|
|
||||||
"dependencies": {
|
|
||||||
"ansi-escapes": "^4.3.0",
|
|
||||||
"cli-cursor": "^3.1.0",
|
|
||||||
"slice-ansi": "^4.0.0",
|
|
||||||
"wrap-ansi": "^6.2.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/mimic-fn": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/onetime": {
|
|
||||||
"version": "5.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
|
||||||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
|
||||||
"dependencies": {
|
|
||||||
"mimic-fn": "^2.1.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/platform": {
|
|
||||||
"version": "1.3.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
|
|
||||||
"integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
|
|
||||||
},
|
|
||||||
"node_modules/prettier": {
|
|
||||||
"version": "2.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz",
|
|
||||||
"integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==",
|
|
||||||
"bin": {
|
|
||||||
"prettier": "bin-prettier.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10.13.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"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",
|
|
||||||
"integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/redis-parser": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
|
|
||||||
"integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=",
|
|
||||||
"dependencies": {
|
|
||||||
"redis-errors": "^1.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/restore-cursor": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
|
|
||||||
"dependencies": {
|
|
||||||
"onetime": "^5.1.0",
|
|
||||||
"signal-exit": "^3.0.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/signal-exit": {
|
|
||||||
"version": "3.0.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz",
|
|
||||||
"integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ=="
|
|
||||||
},
|
|
||||||
"node_modules/slice-ansi": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"ansi-styles": "^4.0.0",
|
|
||||||
"astral-regex": "^2.0.0",
|
|
||||||
"is-fullwidth-code-point": "^3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/stats-median": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/stats-median/-/stats-median-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-IYsheLg6dasD3zT/w9+8Iq9tcIQqqu91ZIpJOnIEM25C3X/g4Tl8mhXwW2ZQpbrsJISr9+wizEYgsibN5/b32Q=="
|
|
||||||
},
|
|
||||||
"node_modules/string-width": {
|
|
||||||
"version": "4.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
|
||||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
|
||||||
"dependencies": {
|
|
||||||
"emoji-regex": "^8.0.0",
|
|
||||||
"is-fullwidth-code-point": "^3.0.0",
|
|
||||||
"strip-ansi": "^6.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/strip-ansi": {
|
|
||||||
"version": "6.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
||||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
|
||||||
"dependencies": {
|
|
||||||
"ansi-regex": "^5.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/type-fest": {
|
|
||||||
"version": "0.21.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
|
|
||||||
"integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/universalify": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 10.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/v3": {
|
|
||||||
"name": "redis",
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
|
|
||||||
"dependencies": {
|
|
||||||
"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/v4": {
|
|
||||||
"resolved": "..",
|
|
||||||
"link": true
|
|
||||||
},
|
|
||||||
"node_modules/wrap-ansi": {
|
|
||||||
"version": "6.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
|
|
||||||
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
|
|
||||||
"dependencies": {
|
|
||||||
"ansi-styles": "^4.0.0",
|
|
||||||
"string-width": "^4.1.0",
|
|
||||||
"strip-ansi": "^6.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@arrows/array": {
|
|
||||||
"version": "1.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/array/-/array-1.4.1.tgz",
|
|
||||||
"integrity": "sha512-MGYS8xi3c4tTy1ivhrVntFvufoNzje0PchjEz6G/SsWRgUKxL4tKwS6iPdO8vsaJYldagAeWMd5KRD0aX3Q39g==",
|
|
||||||
"requires": {
|
|
||||||
"@arrows/composition": "^1.2.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@arrows/composition": {
|
|
||||||
"version": "1.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/composition/-/composition-1.2.2.tgz",
|
|
||||||
"integrity": "sha512-9fh1yHwrx32lundiB3SlZ/VwuStPB4QakPsSLrGJFH6rCXvdrd060ivAZ7/2vlqPnEjBkPRRXOcG1YOu19p2GQ=="
|
|
||||||
},
|
|
||||||
"@arrows/dispatch": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/dispatch/-/dispatch-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-v/HwvrFonitYZM2PmBlAlCqVqxrkIIoiEuy5bQgn0BdfvlL0ooSBzcPzTMrtzY8eYktPyYcHg8fLbSgyybXEqw==",
|
|
||||||
"requires": {
|
|
||||||
"@arrows/composition": "^1.2.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@arrows/error": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/error/-/error-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-yvkiv1ay4Z3+Z6oQsUkedsQm5aFdyPpkBUQs8vejazU/RmANABx6bMMcBPPHI4aW43VPQmXFfBzr/4FExwWTEA=="
|
|
||||||
},
|
|
||||||
"@arrows/multimethod": {
|
|
||||||
"version": "1.1.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/@arrows/multimethod/-/multimethod-1.1.7.tgz",
|
|
||||||
"integrity": "sha512-EjHD3XuGAV4G28rm7mu8k7zQJh/EOizh104/p9i2ofGcnL5mgKONFH/Bq6H3SJjM+WDAlKcR9WBpNhaAKCnH2g==",
|
|
||||||
"requires": {
|
|
||||||
"@arrows/array": "^1.4.0",
|
|
||||||
"@arrows/composition": "^1.2.2",
|
|
||||||
"@arrows/error": "^1.0.2",
|
|
||||||
"fast-deep-equal": "^3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ansi-escapes": {
|
|
||||||
"version": "4.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
|
|
||||||
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
|
|
||||||
"requires": {
|
|
||||||
"type-fest": "^0.21.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ansi-regex": {
|
|
||||||
"version": "5.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
|
||||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
|
|
||||||
},
|
|
||||||
"ansi-styles": {
|
|
||||||
"version": "4.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
|
||||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
|
||||||
"requires": {
|
|
||||||
"color-convert": "^2.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"astral-regex": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="
|
|
||||||
},
|
|
||||||
"at-least-node": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
|
|
||||||
},
|
|
||||||
"benchmark": {
|
|
||||||
"version": "2.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz",
|
|
||||||
"integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=",
|
|
||||||
"requires": {
|
|
||||||
"lodash": "^4.17.4",
|
|
||||||
"platform": "^1.3.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"benny": {
|
|
||||||
"version": "3.6.15",
|
|
||||||
"resolved": "https://registry.npmjs.org/benny/-/benny-3.6.15.tgz",
|
|
||||||
"integrity": "sha512-kq6XVGGYVou3Y8KNPs3SEF881vi5fJ8sIf9w69D2rreiNfRicWVWK6u6/mObMw6BiexoHHumtipn5gcu0Tngng==",
|
|
||||||
"requires": {
|
|
||||||
"@arrows/composition": "^1.0.0",
|
|
||||||
"@arrows/dispatch": "^1.0.2",
|
|
||||||
"@arrows/multimethod": "^1.1.6",
|
|
||||||
"benchmark": "^2.1.4",
|
|
||||||
"fs-extra": "^9.0.1",
|
|
||||||
"json2csv": "^5.0.4",
|
|
||||||
"kleur": "^4.1.3",
|
|
||||||
"log-update": "^4.0.0",
|
|
||||||
"prettier": "^2.1.2",
|
|
||||||
"stats-median": "^1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cli-cursor": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
|
|
||||||
"requires": {
|
|
||||||
"restore-cursor": "^3.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"color-convert": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
|
||||||
"requires": {
|
|
||||||
"color-name": "~1.1.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"color-name": {
|
|
||||||
"version": "1.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
|
||||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
|
||||||
},
|
|
||||||
"commander": {
|
|
||||||
"version": "6.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
|
||||||
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="
|
|
||||||
},
|
|
||||||
"denque": {
|
|
||||||
"version": "1.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
|
|
||||||
"integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw=="
|
|
||||||
},
|
|
||||||
"emoji-regex": {
|
|
||||||
"version": "8.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
|
||||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
|
||||||
},
|
|
||||||
"fast-deep-equal": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
|
||||||
},
|
|
||||||
"fs-extra": {
|
|
||||||
"version": "9.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
|
||||||
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
|
|
||||||
"requires": {
|
|
||||||
"at-least-node": "^1.0.0",
|
|
||||||
"graceful-fs": "^4.2.0",
|
|
||||||
"jsonfile": "^6.0.1",
|
|
||||||
"universalify": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"graceful-fs": {
|
|
||||||
"version": "4.2.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
|
|
||||||
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
|
|
||||||
},
|
|
||||||
"is-fullwidth-code-point": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
|
||||||
},
|
|
||||||
"json2csv": {
|
|
||||||
"version": "5.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.6.tgz",
|
|
||||||
"integrity": "sha512-0/4Lv6IenJV0qj2oBdgPIAmFiKKnh8qh7bmLFJ+/ZZHLjSeiL3fKKGX3UryvKPbxFbhV+JcYo9KUC19GJ/Z/4A==",
|
|
||||||
"requires": {
|
|
||||||
"commander": "^6.1.0",
|
|
||||||
"jsonparse": "^1.3.1",
|
|
||||||
"lodash.get": "^4.4.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"jsonfile": {
|
|
||||||
"version": "6.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
|
||||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
|
||||||
"requires": {
|
|
||||||
"graceful-fs": "^4.1.6",
|
|
||||||
"universalify": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"jsonparse": {
|
|
||||||
"version": "1.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
|
|
||||||
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
|
|
||||||
},
|
|
||||||
"kleur": {
|
|
||||||
"version": "4.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz",
|
|
||||||
"integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA=="
|
|
||||||
},
|
|
||||||
"lodash": {
|
|
||||||
"version": "4.17.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
|
||||||
},
|
|
||||||
"lodash.get": {
|
|
||||||
"version": "4.4.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
|
|
||||||
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
|
|
||||||
},
|
|
||||||
"log-update": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
|
|
||||||
"requires": {
|
|
||||||
"ansi-escapes": "^4.3.0",
|
|
||||||
"cli-cursor": "^3.1.0",
|
|
||||||
"slice-ansi": "^4.0.0",
|
|
||||||
"wrap-ansi": "^6.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mimic-fn": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
|
|
||||||
},
|
|
||||||
"onetime": {
|
|
||||||
"version": "5.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
|
||||||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
|
||||||
"requires": {
|
|
||||||
"mimic-fn": "^2.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"platform": {
|
|
||||||
"version": "1.3.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
|
|
||||||
"integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
|
|
||||||
},
|
|
||||||
"prettier": {
|
|
||||||
"version": "2.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz",
|
|
||||||
"integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA=="
|
|
||||||
},
|
|
||||||
"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",
|
|
||||||
"integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60="
|
|
||||||
},
|
|
||||||
"redis-parser": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
|
|
||||||
"integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=",
|
|
||||||
"requires": {
|
|
||||||
"redis-errors": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"restore-cursor": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
|
|
||||||
"requires": {
|
|
||||||
"onetime": "^5.1.0",
|
|
||||||
"signal-exit": "^3.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"signal-exit": {
|
|
||||||
"version": "3.0.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz",
|
|
||||||
"integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ=="
|
|
||||||
},
|
|
||||||
"slice-ansi": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
|
|
||||||
"requires": {
|
|
||||||
"ansi-styles": "^4.0.0",
|
|
||||||
"astral-regex": "^2.0.0",
|
|
||||||
"is-fullwidth-code-point": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"stats-median": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/stats-median/-/stats-median-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-IYsheLg6dasD3zT/w9+8Iq9tcIQqqu91ZIpJOnIEM25C3X/g4Tl8mhXwW2ZQpbrsJISr9+wizEYgsibN5/b32Q=="
|
|
||||||
},
|
|
||||||
"string-width": {
|
|
||||||
"version": "4.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
|
||||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
|
||||||
"requires": {
|
|
||||||
"emoji-regex": "^8.0.0",
|
|
||||||
"is-fullwidth-code-point": "^3.0.0",
|
|
||||||
"strip-ansi": "^6.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"strip-ansi": {
|
|
||||||
"version": "6.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
||||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
|
||||||
"requires": {
|
|
||||||
"ansi-regex": "^5.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type-fest": {
|
|
||||||
"version": "0.21.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
|
|
||||||
"integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="
|
|
||||||
},
|
|
||||||
"universalify": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
|
|
||||||
},
|
|
||||||
"v3": {
|
|
||||||
"version": "npm:redis@3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
|
|
||||||
"requires": {
|
|
||||||
"denque": "^1.5.0",
|
|
||||||
"redis-commands": "^1.7.0",
|
|
||||||
"redis-errors": "^1.2.0",
|
|
||||||
"redis-parser": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"v4": {
|
|
||||||
"version": "file:..",
|
|
||||||
"requires": {
|
|
||||||
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
|
||||||
"@tsconfig/node12": "^1.0.9",
|
|
||||||
"@types/mocha": "^9.0.0",
|
|
||||||
"@types/node": "^16.10.3",
|
|
||||||
"@types/sinon": "^10.0.4",
|
|
||||||
"@types/which": "^2.0.1",
|
|
||||||
"@types/yallist": "^4.0.1",
|
|
||||||
"cluster-key-slot": "1.1.0",
|
|
||||||
"generic-pool": "3.8.2",
|
|
||||||
"mocha": "^9.1.2",
|
|
||||||
"nyc": "^15.1.0",
|
|
||||||
"redis-parser": "3.0.0",
|
|
||||||
"release-it": "^14.11.6",
|
|
||||||
"sinon": "^11.1.2",
|
|
||||||
"source-map-support": "^0.5.20",
|
|
||||||
"ts-node": "^10.3.0",
|
|
||||||
"typedoc": "^0.22.5",
|
|
||||||
"typedoc-github-wiki-theme": "^0.6.0",
|
|
||||||
"typedoc-plugin-markdown": "^3.11.3",
|
|
||||||
"typescript": "^4.4.3",
|
|
||||||
"which": "^2.0.2",
|
|
||||||
"yallist": "4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"wrap-ansi": {
|
|
||||||
"version": "6.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
|
|
||||||
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
|
|
||||||
"requires": {
|
|
||||||
"ansi-styles": "^4.0.0",
|
|
||||||
"string-width": "^4.1.0",
|
|
||||||
"strip-ansi": "^6.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "benchmark",
|
|
||||||
"private": true,
|
|
||||||
"description": "",
|
|
||||||
"main": "index.js",
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"start": "node ./"
|
|
||||||
},
|
|
||||||
"author": "",
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"benny": "3.6.15",
|
|
||||||
"v3": "npm:redis@3.1.2",
|
|
||||||
"v4": "file:../"
|
|
||||||
}
|
|
||||||
}
|
|
616
package-lock.json
generated
616
package-lock.json
generated
@@ -1,44 +1,15 @@
|
|||||||
{
|
{
|
||||||
"name": "redis",
|
"name": "redis-monorepo",
|
||||||
"version": "4.0.0-rc.3",
|
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "redis",
|
"name": "redis-monorepo",
|
||||||
"version": "4.0.0-rc.3",
|
"workspaces": [
|
||||||
"license": "MIT",
|
"./packages/*"
|
||||||
"dependencies": {
|
],
|
||||||
"cluster-key-slot": "1.1.0",
|
|
||||||
"generic-pool": "3.8.2",
|
|
||||||
"redis-parser": "3.0.0",
|
|
||||||
"yallist": "4.0.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
"@tsconfig/node12": "^1.0.9"
|
||||||
"@tsconfig/node12": "^1.0.9",
|
|
||||||
"@types/mocha": "^9.0.0",
|
|
||||||
"@types/node": "^16.11.6",
|
|
||||||
"@types/sinon": "^10.0.6",
|
|
||||||
"@types/yallist": "^4.0.1",
|
|
||||||
"@types/yargs": "^17.0.5",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^5.2.0",
|
|
||||||
"@typescript-eslint/parser": "^5.2.0",
|
|
||||||
"eslint": "^8.1.0",
|
|
||||||
"mocha": "^9.1.3",
|
|
||||||
"nyc": "^15.1.0",
|
|
||||||
"release-it": "^14.11.6",
|
|
||||||
"sinon": "^11.1.2",
|
|
||||||
"source-map-support": "^0.5.20",
|
|
||||||
"ts-node": "^10.4.0",
|
|
||||||
"typedoc": "^0.22.7",
|
|
||||||
"typedoc-github-wiki-theme": "^0.6.0",
|
|
||||||
"typedoc-plugin-markdown": "^3.11.3",
|
|
||||||
"typescript": "^4.4.4",
|
|
||||||
"yargs": "^17.2.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
@@ -392,9 +363,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.16.0",
|
"version": "7.16.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz",
|
||||||
"integrity": "sha512-TEHWXf0xxpi9wKVyBCmRcSSDjbJ/cl6LUdlbYUHEaNQUJGhreJbZrXT6sR4+fZLxVUJqNRB4KyOvjuy/D9009A==",
|
"integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"parser": "bin/babel-parser.js"
|
"parser": "bin/babel-parser.js"
|
||||||
@@ -481,9 +452,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/eslintrc": {
|
"node_modules/@eslint/eslintrc": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
|
||||||
"integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==",
|
"integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": "^6.12.4",
|
"ajv": "^6.12.4",
|
||||||
@@ -492,7 +463,7 @@
|
|||||||
"globals": "^13.9.0",
|
"globals": "^13.9.0",
|
||||||
"ignore": "^4.0.6",
|
"ignore": "^4.0.6",
|
||||||
"import-fresh": "^3.2.1",
|
"import-fresh": "^3.2.1",
|
||||||
"js-yaml": "^3.13.1",
|
"js-yaml": "^4.1.0",
|
||||||
"minimatch": "^3.0.4",
|
"minimatch": "^3.0.4",
|
||||||
"strip-json-comments": "^3.1.1"
|
"strip-json-comments": "^3.1.1"
|
||||||
},
|
},
|
||||||
@@ -500,15 +471,6 @@
|
|||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/eslintrc/node_modules/argparse": {
|
|
||||||
"version": "1.0.10",
|
|
||||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
|
||||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"sprintf-js": "~1.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@eslint/eslintrc/node_modules/ignore": {
|
"node_modules/@eslint/eslintrc/node_modules/ignore": {
|
||||||
"version": "4.0.6",
|
"version": "4.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
|
||||||
@@ -518,19 +480,6 @@
|
|||||||
"node": ">= 4"
|
"node": ">= 4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/eslintrc/node_modules/js-yaml": {
|
|
||||||
"version": "3.14.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
|
||||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"argparse": "^1.0.7",
|
|
||||||
"esprima": "^4.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"js-yaml": "bin/js-yaml.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@humanwhocodes/config-array": {
|
"node_modules/@humanwhocodes/config-array": {
|
||||||
"version": "0.6.0",
|
"version": "0.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
|
||||||
@@ -546,9 +495,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@humanwhocodes/object-schema": {
|
"node_modules/@humanwhocodes/object-schema": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
|
||||||
"integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
|
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@iarna/toml": {
|
"node_modules/@iarna/toml": {
|
||||||
@@ -849,6 +798,26 @@
|
|||||||
"@octokit/openapi-types": "^11.2.0"
|
"@octokit/openapi-types": "^11.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@redis/client": {
|
||||||
|
"resolved": "packages/client",
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
|
"node_modules/@redis/json": {
|
||||||
|
"resolved": "packages/json",
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
|
"node_modules/@redis/search": {
|
||||||
|
"resolved": "packages/search",
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
|
"node_modules/@redis/test-utils": {
|
||||||
|
"resolved": "packages/test-utils",
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
|
"node_modules/@redis/time-series": {
|
||||||
|
"resolved": "packages/time-series",
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
"node_modules/@sindresorhus/is": {
|
"node_modules/@sindresorhus/is": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
|
||||||
@@ -972,9 +941,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "16.11.6",
|
"version": "16.11.7",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz",
|
||||||
"integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==",
|
"integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/parse-json": {
|
"node_modules/@types/parse-json": {
|
||||||
@@ -1023,13 +992,13 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz",
|
||||||
"integrity": "sha512-qQwg7sqYkBF4CIQSyRQyqsYvP+g/J0To9ZPVNJpfxfekl5RmdvQnFFTVVwpRtaUDFNvjfe/34TgY/dpc3MgNTw==",
|
"integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/experimental-utils": "5.2.0",
|
"@typescript-eslint/experimental-utils": "5.3.1",
|
||||||
"@typescript-eslint/scope-manager": "5.2.0",
|
"@typescript-eslint/scope-manager": "5.3.1",
|
||||||
"debug": "^4.3.2",
|
"debug": "^4.3.2",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
"ignore": "^5.1.8",
|
"ignore": "^5.1.8",
|
||||||
@@ -1055,15 +1024,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/experimental-utils": {
|
"node_modules/@typescript-eslint/experimental-utils": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz",
|
||||||
"integrity": "sha512-fWyT3Agf7n7HuZZRpvUYdFYbPk3iDCq6fgu3ulia4c7yxmPnwVBovdSOX7RL+k8u6hLbrXcdAehlWUVpGh6IEw==",
|
"integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@typescript-eslint/scope-manager": "5.2.0",
|
"@typescript-eslint/scope-manager": "5.3.1",
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"@typescript-eslint/typescript-estree": "5.2.0",
|
"@typescript-eslint/typescript-estree": "5.3.1",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0"
|
"eslint-utils": "^3.0.0"
|
||||||
},
|
},
|
||||||
@@ -1079,14 +1048,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz",
|
||||||
"integrity": "sha512-Uyy4TjJBlh3NuA8/4yIQptyJb95Qz5PX//6p8n7zG0QnN4o3NF9Je3JHbVU7fxf5ncSXTmnvMtd/LDQWDk0YqA==",
|
"integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "5.2.0",
|
"@typescript-eslint/scope-manager": "5.3.1",
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"@typescript-eslint/typescript-estree": "5.2.0",
|
"@typescript-eslint/typescript-estree": "5.3.1",
|
||||||
"debug": "^4.3.2"
|
"debug": "^4.3.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1106,13 +1075,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz",
|
||||||
"integrity": "sha512-RW+wowZqPzQw8MUFltfKYZfKXqA2qgyi6oi/31J1zfXJRpOn6tCaZtd9b5u9ubnDG2n/EMvQLeZrsLNPpaUiFQ==",
|
"integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"@typescript-eslint/visitor-keys": "5.2.0"
|
"@typescript-eslint/visitor-keys": "5.3.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@@ -1123,9 +1092,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz",
|
||||||
"integrity": "sha512-cTk6x08qqosps6sPyP2j7NxyFPlCNsJwSDasqPNjEQ8JMD5xxj2NHxcLin5AJQ8pAVwpQ8BMI3bTxR0zxmK9qQ==",
|
"integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@@ -1136,13 +1105,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz",
|
||||||
"integrity": "sha512-RsdXq2XmVgKbm9nLsE3mjNUM7BTr/K4DYR9WfFVMUuozHWtH5gMpiNZmtrMG8GR385EOSQ3kC9HiEMJWimxd/g==",
|
"integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"@typescript-eslint/visitor-keys": "5.2.0",
|
"@typescript-eslint/visitor-keys": "5.3.1",
|
||||||
"debug": "^4.3.2",
|
"debug": "^4.3.2",
|
||||||
"globby": "^11.0.4",
|
"globby": "^11.0.4",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
@@ -1163,12 +1132,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz",
|
||||||
"integrity": "sha512-Nk7HizaXWWCUBfLA/rPNKMzXzWS8Wg9qHMuGtT+v2/YpPij4nVXrVJc24N/r5WrrmqK31jCrZxeHqIgqRzs0Xg==",
|
"integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"eslint-visitor-keys": "^3.0.0"
|
"eslint-visitor-keys": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1495,13 +1464,13 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.17.5",
|
"version": "4.17.6",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz",
|
||||||
"integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==",
|
"integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"caniuse-lite": "^1.0.30001271",
|
"caniuse-lite": "^1.0.30001274",
|
||||||
"electron-to-chromium": "^1.3.878",
|
"electron-to-chromium": "^1.3.886",
|
||||||
"escalade": "^3.1.1",
|
"escalade": "^3.1.1",
|
||||||
"node-releases": "^2.0.1",
|
"node-releases": "^2.0.1",
|
||||||
"picocolors": "^1.0.0"
|
"picocolors": "^1.0.0"
|
||||||
@@ -1636,9 +1605,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001274",
|
"version": "1.0.30001278",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001274.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz",
|
||||||
"integrity": "sha512-+Nkvv0fHyhISkiMIjnyjmf5YJcQ1IQHZN6U9TLUMroWR38FNwpsC51Gb68yueafX1V6ifOisInSgP9WJFS13ew==",
|
"integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -2097,9 +2066,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.3.885",
|
"version": "1.3.891",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.885.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.891.tgz",
|
||||||
"integrity": "sha512-JXKFJcVWrdHa09n4CNZYfYaK6EW5aAew7/wr3L1OnsD1L+JHL+RCtd7QgIsxUbFPeTwPlvnpqNNTOLkoefmtXg==",
|
"integrity": "sha512-3cpwR82QkIS01CN/dup/4Yr3BiOiRLlZlcAFn/5FbNCunMO9ojqDgEP9JEo1QNLflu3pEnPWve50gHOEKc7r6w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
@@ -2175,12 +2144,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "8.1.0",
|
"version": "8.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz",
|
||||||
"integrity": "sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==",
|
"integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/eslintrc": "^1.0.3",
|
"@eslint/eslintrc": "^1.0.4",
|
||||||
"@humanwhocodes/config-array": "^0.6.0",
|
"@humanwhocodes/config-array": "^0.6.0",
|
||||||
"ajv": "^6.10.0",
|
"ajv": "^6.10.0",
|
||||||
"chalk": "^4.0.0",
|
"chalk": "^4.0.0",
|
||||||
@@ -2214,7 +2183,7 @@
|
|||||||
"progress": "^2.0.0",
|
"progress": "^2.0.0",
|
||||||
"regexpp": "^3.2.0",
|
"regexpp": "^3.2.0",
|
||||||
"semver": "^7.2.1",
|
"semver": "^7.2.1",
|
||||||
"strip-ansi": "^6.0.0",
|
"strip-ansi": "^6.0.1",
|
||||||
"strip-json-comments": "^3.1.0",
|
"strip-json-comments": "^3.1.0",
|
||||||
"text-table": "^0.2.0",
|
"text-table": "^0.2.0",
|
||||||
"v8-compile-cache": "^2.0.3"
|
"v8-compile-cache": "^2.0.3"
|
||||||
@@ -2270,9 +2239,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-visitor-keys": {
|
"node_modules/eslint-visitor-keys": {
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
|
||||||
"integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
|
"integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@@ -3060,9 +3029,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/ignore": {
|
"node_modules/ignore": {
|
||||||
"version": "5.1.8",
|
"version": "5.1.9",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz",
|
||||||
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
|
"integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 4"
|
"node": ">= 4"
|
||||||
@@ -5096,6 +5065,10 @@
|
|||||||
"node": ">= 0.10"
|
"node": ">= 0.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/redis": {
|
||||||
|
"resolved": "packages/all-in-one",
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
"node_modules/redis-errors": {
|
"node_modules/redis-errors": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
||||||
@@ -5883,9 +5856,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/typedoc": {
|
"node_modules/typedoc": {
|
||||||
"version": "0.22.7",
|
"version": "0.22.8",
|
||||||
"resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.7.tgz",
|
"resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.8.tgz",
|
||||||
"integrity": "sha512-ndxxp+tU1Wczvdxp4u2/PvT1qjD6hdFdSdehpORHjE+JXmMkl2bftXCR0upHmsnesBG7VCcr8vfgloGHIH8glQ==",
|
"integrity": "sha512-92S+YzyhospdXN5rnkYUTgirdTYqNWY7NP9vco+IqQQoiSXzVSUsawVro+tMyEEsWUS7EMaJ2YOjB9uE0CBi6A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob": "^7.2.0",
|
"glob": "^7.2.0",
|
||||||
@@ -5960,9 +5933,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/uglify-js": {
|
"node_modules/uglify-js": {
|
||||||
"version": "3.14.2",
|
"version": "3.14.3",
|
||||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz",
|
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz",
|
||||||
"integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==",
|
"integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -6385,6 +6358,124 @@
|
|||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"packages/all-in-one": {
|
||||||
|
"name": "redis",
|
||||||
|
"version": "4.0.0-rc.3",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@redis/client": "^4.0.0-rc",
|
||||||
|
"@redis/json": "^1.0.0-rc",
|
||||||
|
"@redis/search": "^1.0.0-rc"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"packages/client": {
|
||||||
|
"name": "@redis/client",
|
||||||
|
"version": "4.0.0-rc.3",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"cluster-key-slot": "1.1.0",
|
||||||
|
"generic-pool": "3.8.2",
|
||||||
|
"redis-parser": "3.0.0",
|
||||||
|
"yallist": "4.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@redis/test-utils": "*",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"@types/sinon": "^10.0.6",
|
||||||
|
"@types/yallist": "^4.0.1",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.2.0",
|
||||||
|
"@typescript-eslint/parser": "^5.2.0",
|
||||||
|
"eslint": "^8.1.0",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"sinon": "^11.1.2",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typedoc": "^0.22.7",
|
||||||
|
"typedoc-github-wiki-theme": "^0.6.0",
|
||||||
|
"typedoc-plugin-markdown": "^3.11.3",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"packages/json": {
|
||||||
|
"name": "@redis/json",
|
||||||
|
"version": "1.0.0-rc.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@redis/test-utils": "*",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@redis/client": "^4.0.0-rc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"packages/search": {
|
||||||
|
"name": "@redis/search",
|
||||||
|
"version": "1.0.0-rc.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@redis/test-utils": "*",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@redis/client": "^4.0.0-rc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"packages/test-utils": {
|
||||||
|
"name": "@redis/test-utils",
|
||||||
|
"devDependencies": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@tsconfig/node12": "^1.0.9",
|
||||||
|
"@types/mocha": "^9.0.0",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"@types/yargs": "^17.0.5",
|
||||||
|
"mocha": "^9.1.3",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typescript": "^4.4.4",
|
||||||
|
"yargs": "^17.2.1"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@redis/client": "^4.0.0-rc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"packages/time-series": {
|
||||||
|
"name": "@redis/time-series",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@redis/test-utils": "*",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -6660,9 +6751,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@babel/parser": {
|
"@babel/parser": {
|
||||||
"version": "7.16.0",
|
"version": "7.16.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz",
|
||||||
"integrity": "sha512-TEHWXf0xxpi9wKVyBCmRcSSDjbJ/cl6LUdlbYUHEaNQUJGhreJbZrXT6sR4+fZLxVUJqNRB4KyOvjuy/D9009A==",
|
"integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@babel/template": {
|
"@babel/template": {
|
||||||
@@ -6727,9 +6818,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@eslint/eslintrc": {
|
"@eslint/eslintrc": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
|
||||||
"integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==",
|
"integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ajv": "^6.12.4",
|
"ajv": "^6.12.4",
|
||||||
@@ -6738,35 +6829,16 @@
|
|||||||
"globals": "^13.9.0",
|
"globals": "^13.9.0",
|
||||||
"ignore": "^4.0.6",
|
"ignore": "^4.0.6",
|
||||||
"import-fresh": "^3.2.1",
|
"import-fresh": "^3.2.1",
|
||||||
"js-yaml": "^3.13.1",
|
"js-yaml": "^4.1.0",
|
||||||
"minimatch": "^3.0.4",
|
"minimatch": "^3.0.4",
|
||||||
"strip-json-comments": "^3.1.1"
|
"strip-json-comments": "^3.1.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"argparse": {
|
|
||||||
"version": "1.0.10",
|
|
||||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
|
||||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"sprintf-js": "~1.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ignore": {
|
"ignore": {
|
||||||
"version": "4.0.6",
|
"version": "4.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
|
||||||
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
|
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
|
||||||
"js-yaml": {
|
|
||||||
"version": "3.14.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
|
||||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"argparse": "^1.0.7",
|
|
||||||
"esprima": "^4.0.0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -6782,9 +6854,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@humanwhocodes/object-schema": {
|
"@humanwhocodes/object-schema": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
|
||||||
"integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
|
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@iarna/toml": {
|
"@iarna/toml": {
|
||||||
@@ -7035,6 +7107,88 @@
|
|||||||
"@octokit/openapi-types": "^11.2.0"
|
"@octokit/openapi-types": "^11.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@redis/client": {
|
||||||
|
"version": "file:packages/client",
|
||||||
|
"requires": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@redis/test-utils": "*",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"@types/sinon": "^10.0.6",
|
||||||
|
"@types/yallist": "^4.0.1",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.2.0",
|
||||||
|
"@typescript-eslint/parser": "^5.2.0",
|
||||||
|
"cluster-key-slot": "1.1.0",
|
||||||
|
"eslint": "^8.1.0",
|
||||||
|
"generic-pool": "3.8.2",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"redis-parser": "3.0.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"sinon": "^11.1.2",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typedoc": "^0.22.7",
|
||||||
|
"typedoc-github-wiki-theme": "^0.6.0",
|
||||||
|
"typedoc-plugin-markdown": "^3.11.3",
|
||||||
|
"typescript": "^4.4.4",
|
||||||
|
"yallist": "4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@redis/json": {
|
||||||
|
"version": "file:packages/json",
|
||||||
|
"requires": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@redis/test-utils": "*",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@redis/search": {
|
||||||
|
"version": "file:packages/search",
|
||||||
|
"requires": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@redis/test-utils": "*",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@redis/test-utils": {
|
||||||
|
"version": "file:packages/test-utils",
|
||||||
|
"requires": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@tsconfig/node12": "^1.0.9",
|
||||||
|
"@types/mocha": "^9.0.0",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"@types/yargs": "^17.0.5",
|
||||||
|
"mocha": "^9.1.3",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typescript": "^4.4.4",
|
||||||
|
"yargs": "^17.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@redis/time-series": {
|
||||||
|
"version": "file:packages/time-series",
|
||||||
|
"requires": {
|
||||||
|
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
||||||
|
"@redis/test-utils": "*",
|
||||||
|
"@types/node": "^16.11.6",
|
||||||
|
"nyc": "^15.1.0",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"source-map-support": "^0.5.20",
|
||||||
|
"ts-node": "^10.4.0",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@sindresorhus/is": {
|
"@sindresorhus/is": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
|
||||||
@@ -7149,9 +7303,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "16.11.6",
|
"version": "16.11.7",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz",
|
||||||
"integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==",
|
"integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/parse-json": {
|
"@types/parse-json": {
|
||||||
@@ -7200,13 +7354,13 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@typescript-eslint/eslint-plugin": {
|
"@typescript-eslint/eslint-plugin": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz",
|
||||||
"integrity": "sha512-qQwg7sqYkBF4CIQSyRQyqsYvP+g/J0To9ZPVNJpfxfekl5RmdvQnFFTVVwpRtaUDFNvjfe/34TgY/dpc3MgNTw==",
|
"integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/experimental-utils": "5.2.0",
|
"@typescript-eslint/experimental-utils": "5.3.1",
|
||||||
"@typescript-eslint/scope-manager": "5.2.0",
|
"@typescript-eslint/scope-manager": "5.3.1",
|
||||||
"debug": "^4.3.2",
|
"debug": "^4.3.2",
|
||||||
"functional-red-black-tree": "^1.0.1",
|
"functional-red-black-tree": "^1.0.1",
|
||||||
"ignore": "^5.1.8",
|
"ignore": "^5.1.8",
|
||||||
@@ -7216,55 +7370,55 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/experimental-utils": {
|
"@typescript-eslint/experimental-utils": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz",
|
||||||
"integrity": "sha512-fWyT3Agf7n7HuZZRpvUYdFYbPk3iDCq6fgu3ulia4c7yxmPnwVBovdSOX7RL+k8u6hLbrXcdAehlWUVpGh6IEw==",
|
"integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@typescript-eslint/scope-manager": "5.2.0",
|
"@typescript-eslint/scope-manager": "5.3.1",
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"@typescript-eslint/typescript-estree": "5.2.0",
|
"@typescript-eslint/typescript-estree": "5.3.1",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0"
|
"eslint-utils": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/parser": {
|
"@typescript-eslint/parser": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz",
|
||||||
"integrity": "sha512-Uyy4TjJBlh3NuA8/4yIQptyJb95Qz5PX//6p8n7zG0QnN4o3NF9Je3JHbVU7fxf5ncSXTmnvMtd/LDQWDk0YqA==",
|
"integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/scope-manager": "5.2.0",
|
"@typescript-eslint/scope-manager": "5.3.1",
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"@typescript-eslint/typescript-estree": "5.2.0",
|
"@typescript-eslint/typescript-estree": "5.3.1",
|
||||||
"debug": "^4.3.2"
|
"debug": "^4.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/scope-manager": {
|
"@typescript-eslint/scope-manager": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz",
|
||||||
"integrity": "sha512-RW+wowZqPzQw8MUFltfKYZfKXqA2qgyi6oi/31J1zfXJRpOn6tCaZtd9b5u9ubnDG2n/EMvQLeZrsLNPpaUiFQ==",
|
"integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"@typescript-eslint/visitor-keys": "5.2.0"
|
"@typescript-eslint/visitor-keys": "5.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/types": {
|
"@typescript-eslint/types": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz",
|
||||||
"integrity": "sha512-cTk6x08qqosps6sPyP2j7NxyFPlCNsJwSDasqPNjEQ8JMD5xxj2NHxcLin5AJQ8pAVwpQ8BMI3bTxR0zxmK9qQ==",
|
"integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@typescript-eslint/typescript-estree": {
|
"@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz",
|
||||||
"integrity": "sha512-RsdXq2XmVgKbm9nLsE3mjNUM7BTr/K4DYR9WfFVMUuozHWtH5gMpiNZmtrMG8GR385EOSQ3kC9HiEMJWimxd/g==",
|
"integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"@typescript-eslint/visitor-keys": "5.2.0",
|
"@typescript-eslint/visitor-keys": "5.3.1",
|
||||||
"debug": "^4.3.2",
|
"debug": "^4.3.2",
|
||||||
"globby": "^11.0.4",
|
"globby": "^11.0.4",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
@@ -7273,12 +7427,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/visitor-keys": {
|
"@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz",
|
||||||
"integrity": "sha512-Nk7HizaXWWCUBfLA/rPNKMzXzWS8Wg9qHMuGtT+v2/YpPij4nVXrVJc24N/r5WrrmqK31jCrZxeHqIgqRzs0Xg==",
|
"integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.2.0",
|
"@typescript-eslint/types": "5.3.1",
|
||||||
"eslint-visitor-keys": "^3.0.0"
|
"eslint-visitor-keys": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -7519,13 +7673,13 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"browserslist": {
|
"browserslist": {
|
||||||
"version": "4.17.5",
|
"version": "4.17.6",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz",
|
||||||
"integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==",
|
"integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"caniuse-lite": "^1.0.30001271",
|
"caniuse-lite": "^1.0.30001274",
|
||||||
"electron-to-chromium": "^1.3.878",
|
"electron-to-chromium": "^1.3.886",
|
||||||
"escalade": "^3.1.1",
|
"escalade": "^3.1.1",
|
||||||
"node-releases": "^2.0.1",
|
"node-releases": "^2.0.1",
|
||||||
"picocolors": "^1.0.0"
|
"picocolors": "^1.0.0"
|
||||||
@@ -7614,9 +7768,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001274",
|
"version": "1.0.30001278",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001274.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz",
|
||||||
"integrity": "sha512-+Nkvv0fHyhISkiMIjnyjmf5YJcQ1IQHZN6U9TLUMroWR38FNwpsC51Gb68yueafX1V6ifOisInSgP9WJFS13ew==",
|
"integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
@@ -7963,9 +8117,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"electron-to-chromium": {
|
"electron-to-chromium": {
|
||||||
"version": "1.3.885",
|
"version": "1.3.891",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.885.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.891.tgz",
|
||||||
"integrity": "sha512-JXKFJcVWrdHa09n4CNZYfYaK6EW5aAew7/wr3L1OnsD1L+JHL+RCtd7QgIsxUbFPeTwPlvnpqNNTOLkoefmtXg==",
|
"integrity": "sha512-3cpwR82QkIS01CN/dup/4Yr3BiOiRLlZlcAFn/5FbNCunMO9ojqDgEP9JEo1QNLflu3pEnPWve50gHOEKc7r6w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"emoji-regex": {
|
"emoji-regex": {
|
||||||
@@ -8026,12 +8180,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"eslint": {
|
"eslint": {
|
||||||
"version": "8.1.0",
|
"version": "8.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz",
|
||||||
"integrity": "sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==",
|
"integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@eslint/eslintrc": "^1.0.3",
|
"@eslint/eslintrc": "^1.0.4",
|
||||||
"@humanwhocodes/config-array": "^0.6.0",
|
"@humanwhocodes/config-array": "^0.6.0",
|
||||||
"ajv": "^6.10.0",
|
"ajv": "^6.10.0",
|
||||||
"chalk": "^4.0.0",
|
"chalk": "^4.0.0",
|
||||||
@@ -8065,7 +8219,7 @@
|
|||||||
"progress": "^2.0.0",
|
"progress": "^2.0.0",
|
||||||
"regexpp": "^3.2.0",
|
"regexpp": "^3.2.0",
|
||||||
"semver": "^7.2.1",
|
"semver": "^7.2.1",
|
||||||
"strip-ansi": "^6.0.0",
|
"strip-ansi": "^6.0.1",
|
||||||
"strip-json-comments": "^3.1.0",
|
"strip-json-comments": "^3.1.0",
|
||||||
"text-table": "^0.2.0",
|
"text-table": "^0.2.0",
|
||||||
"v8-compile-cache": "^2.0.3"
|
"v8-compile-cache": "^2.0.3"
|
||||||
@@ -8123,9 +8277,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"eslint-visitor-keys": {
|
"eslint-visitor-keys": {
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
|
||||||
"integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
|
"integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"espree": {
|
"espree": {
|
||||||
@@ -8667,9 +8821,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"ignore": {
|
"ignore": {
|
||||||
"version": "5.1.8",
|
"version": "5.1.9",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz",
|
||||||
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
|
"integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"import-cwd": {
|
"import-cwd": {
|
||||||
@@ -10220,6 +10374,16 @@
|
|||||||
"resolve": "^1.1.6"
|
"resolve": "^1.1.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"redis": {
|
||||||
|
"version": "file:packages/all-in-one",
|
||||||
|
"requires": {
|
||||||
|
"@redis/client": "^4.0.0-rc",
|
||||||
|
"@redis/json": "^1.0.0-rc",
|
||||||
|
"@redis/search": "^1.0.0-rc",
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"redis-errors": {
|
"redis-errors": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
||||||
@@ -10803,9 +10967,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"typedoc": {
|
"typedoc": {
|
||||||
"version": "0.22.7",
|
"version": "0.22.8",
|
||||||
"resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.7.tgz",
|
"resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.8.tgz",
|
||||||
"integrity": "sha512-ndxxp+tU1Wczvdxp4u2/PvT1qjD6hdFdSdehpORHjE+JXmMkl2bftXCR0upHmsnesBG7VCcr8vfgloGHIH8glQ==",
|
"integrity": "sha512-92S+YzyhospdXN5rnkYUTgirdTYqNWY7NP9vco+IqQQoiSXzVSUsawVro+tMyEEsWUS7EMaJ2YOjB9uE0CBi6A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^7.2.0",
|
"glob": "^7.2.0",
|
||||||
@@ -10854,9 +11018,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"uglify-js": {
|
"uglify-js": {
|
||||||
"version": "3.14.2",
|
"version": "3.14.3",
|
||||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz",
|
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz",
|
||||||
"integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==",
|
"integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
67
package.json
67
package.json
@@ -1,60 +1,19 @@
|
|||||||
{
|
{
|
||||||
"name": "redis",
|
"name": "redis-monorepo",
|
||||||
"version": "4.0.0-rc.3",
|
"private": true,
|
||||||
"description": "A high performance Redis client.",
|
"workspaces": [
|
||||||
"keywords": [
|
"./packages/*"
|
||||||
"database",
|
|
||||||
"redis",
|
|
||||||
"pubsub"
|
|
||||||
],
|
],
|
||||||
"author": "Matt Ranney <mjr@ranney.com>",
|
|
||||||
"license": "MIT",
|
|
||||||
"main": "./dist/index.js",
|
|
||||||
"types": "./dist/index.d.ts",
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "nyc -r text-summary -r html mocha -r source-map-support/register -r ts-node/register './lib/**/*.spec.ts'",
|
"test": "npm run test -ws --if-present",
|
||||||
"build": "tsc",
|
"build:client": "npm run build -w ./packages/client",
|
||||||
"lint": "eslint ./*.ts ./lib/**/*.ts",
|
"build:test-utils": "npm run build -w ./packages/test-utils",
|
||||||
"documentation": "typedoc"
|
"build:tests-tools": "npm run build:client && npm run build:test-utils",
|
||||||
},
|
"build:modules": "find ./packages -mindepth 1 -maxdepth 1 -type d ! -name 'client' ! -name 'test-utils' ! -name 'all-in-one' -exec npm run build -w {} \\;",
|
||||||
"dependencies": {
|
"build:all-in-one": "npm run build -w ./packages/all-in-one",
|
||||||
"cluster-key-slot": "1.1.0",
|
"build": "npm run build:client && npm run build:test-utils && npm run build:modules && npm run build:all-in-one"
|
||||||
"generic-pool": "3.8.2",
|
|
||||||
"redis-parser": "3.0.0",
|
|
||||||
"yallist": "4.0.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@istanbuljs/nyc-config-typescript": "^1.0.1",
|
"@tsconfig/node12": "^1.0.9"
|
||||||
"@tsconfig/node12": "^1.0.9",
|
}
|
||||||
"@types/mocha": "^9.0.0",
|
|
||||||
"@types/node": "^16.11.6",
|
|
||||||
"@types/sinon": "^10.0.6",
|
|
||||||
"@types/yallist": "^4.0.1",
|
|
||||||
"@types/yargs": "^17.0.5",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^5.2.0",
|
|
||||||
"@typescript-eslint/parser": "^5.2.0",
|
|
||||||
"eslint": "^8.1.0",
|
|
||||||
"mocha": "^9.1.3",
|
|
||||||
"nyc": "^15.1.0",
|
|
||||||
"release-it": "^14.11.6",
|
|
||||||
"sinon": "^11.1.2",
|
|
||||||
"source-map-support": "^0.5.20",
|
|
||||||
"ts-node": "^10.4.0",
|
|
||||||
"typedoc": "^0.22.7",
|
|
||||||
"typedoc-github-wiki-theme": "^0.6.0",
|
|
||||||
"typedoc-plugin-markdown": "^3.11.3",
|
|
||||||
"typescript": "^4.4.4",
|
|
||||||
"yargs": "^17.2.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git://github.com/redis/node-redis.git"
|
|
||||||
},
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/redis/node-redis/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/redis/node-redis"
|
|
||||||
}
|
}
|
||||||
|
19
packages/all-in-one/index.ts
Normal file
19
packages/all-in-one/index.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import { createClient as _createClient } from '@redis/client';
|
||||||
|
import { RedisScripts } from '@redis/client/dist/lib/commands';
|
||||||
|
import { RedisClientOptions, RedisClientType } from '@redis/client/dist/lib/client';
|
||||||
|
import RedisJSON from '@redis/json';
|
||||||
|
import RediSearch from '@redis/search';
|
||||||
|
|
||||||
|
const modules = {
|
||||||
|
json: RedisJSON,
|
||||||
|
ft: RediSearch
|
||||||
|
};
|
||||||
|
|
||||||
|
export function createClient<S extends RedisScripts = Record<string, never>>(
|
||||||
|
options?: Omit<RedisClientOptions<never, S>, 'modules'>
|
||||||
|
): RedisClientType<typeof modules, S> {
|
||||||
|
return _createClient({
|
||||||
|
...options,
|
||||||
|
modules
|
||||||
|
});
|
||||||
|
}
|
27
packages/all-in-one/package.json
Normal file
27
packages/all-in-one/package.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"name": "redis",
|
||||||
|
"version": "4.0.0-rc.3",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "./dist/index.js",
|
||||||
|
"types": "./dist/index.ts",
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@redis/client": "^4.0.0-rc",
|
||||||
|
"@redis/json": "^1.0.0-rc",
|
||||||
|
"@redis/search": "^1.0.0-rc"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"release-it": "^14.11.6",
|
||||||
|
"typescript": "^4.4.4"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/redis/node-redis.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/redis/node-redis/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/redis/node-redis"
|
||||||
|
}
|
9
packages/all-in-one/tsconfig.json
Normal file
9
packages/all-in-one/tsconfig.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "./dist"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"./index.ts"
|
||||||
|
]
|
||||||
|
}
|
1
packages/client/.gitignore
vendored
Normal file
1
packages/client/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
documentation/
|
9
packages/client/.npmignore
Normal file
9
packages/client/.npmignore
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
.nyc_output/
|
||||||
|
coverage/
|
||||||
|
documentation/
|
||||||
|
examples/
|
||||||
|
lib/
|
||||||
|
.nycrc.json
|
||||||
|
dump.rdb
|
||||||
|
index.ts
|
||||||
|
tsconfig.json
|
4
packages/client/.nycrc.json
Normal file
4
packages/client/.nycrc.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"extends": "@istanbuljs/nyc-config-typescript",
|
||||||
|
"exclude": ["**/*.spec.ts", "lib/test-utils.ts"]
|
||||||
|
}
|
24
packages/client/LICENSE
Normal file
24
packages/client/LICENSE
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2016-present Node Redis contributors.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
294
packages/client/README.md
Normal file
294
packages/client/README.md
Normal file
@@ -0,0 +1,294 @@
|
|||||||
|
<p align="center">
|
||||||
|
<a href="https://github.com/redis/node-redis">
|
||||||
|
<img width="128" src="https://static.invertase.io/assets/node_redis_logo.png" />
|
||||||
|
</a>
|
||||||
|
<h2 align="center">Node Redis</h2>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<a href="https://coveralls.io/github/redis/node-redis">
|
||||||
|
<img src="https://coveralls.io/repos/github/redis/node-redis/badge.svg" alt="Coverage Status"/>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.npmjs.com/package/redis/v/next">
|
||||||
|
<img src="https://img.shields.io/npm/dm/redis.svg" alt="Downloads"/>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.npmjs.com/package/redis/v/next">
|
||||||
|
<img src="https://img.shields.io/npm/v/redis/next.svg" alt="Version"/>
|
||||||
|
</a>
|
||||||
|
<a href="https://discord.gg/XMMVgxUm">
|
||||||
|
<img src="https://img.shields.io/discord/697882427875393627" alt="Chat"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install redis@next
|
||||||
|
```
|
||||||
|
|
||||||
|
> :warning: The new interface is clean and cool, but if you have an existing code base, you'll want to read the [migration guide](./docs/v3-to-v4.md).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Basic Example
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { createClient } from 'redis';
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
const client = createClient();
|
||||||
|
|
||||||
|
client.on('error', (err) => console.log('Redis Client Error', err));
|
||||||
|
|
||||||
|
await client.connect();
|
||||||
|
|
||||||
|
await client.set('key', 'value');
|
||||||
|
const value = await client.get('key');
|
||||||
|
})();
|
||||||
|
```
|
||||||
|
|
||||||
|
The above code connects to localhost on port 6379. To connect to a different host or port, use a connection string in the format `redis[s]://[[username][:password]@][host][:port][/db-number]`:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
createClient({
|
||||||
|
url: 'redis://alice:foobared@awesome.redis.server:6380'
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also use discrete parameters, UNIX sockets, and even TLS to connect. Details can be found in the [client configuration guide](./docs/client-configuration.md).
|
||||||
|
|
||||||
|
### Redis Commands
|
||||||
|
|
||||||
|
There is built-in support for all of the [out-of-the-box Redis commands](https://redis.io/commands). They are exposed using the raw Redis command names (`HSET`, `HGETALL`, etc.) and a friendlier camel-cased version (`hSet`, `hGetAll`, etc.):
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// raw Redis commands
|
||||||
|
await client.HSET('key', 'field', 'value');
|
||||||
|
await client.HGETALL('key');
|
||||||
|
|
||||||
|
// friendly JavaScript commands
|
||||||
|
await client.hSet('key', 'field', 'value');
|
||||||
|
await client.hGetAll('key');
|
||||||
|
```
|
||||||
|
|
||||||
|
Modifiers to commands are specified using a JavaScript object:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await client.set('key', 'value', {
|
||||||
|
EX: 10,
|
||||||
|
NX: true
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Replies will be transformed into useful data structures:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await client.hGetAll('key'); // { field1: 'value1', field2: 'value2' }
|
||||||
|
await client.hVals('key'); // ['value1', 'value2']
|
||||||
|
```
|
||||||
|
|
||||||
|
### Unsupported Redis Commands
|
||||||
|
|
||||||
|
If you want to run commands and/or use arguments that Node Redis doesn't know about (yet!) use `.sendCommand()`:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await client.sendCommand(['SET', 'key', 'value', 'NX']); // 'OK'
|
||||||
|
|
||||||
|
await client.sendCommand(['HGETALL', 'key']); // ['key1', 'field1', 'key2', 'field2']
|
||||||
|
```
|
||||||
|
|
||||||
|
### Transactions (Multi/Exec)
|
||||||
|
|
||||||
|
Start a [transaction](https://redis.io/topics/transactions) by calling `.multi()`, then chaining your commands. When you're done, call `.exec()` and you'll get an array back with your results:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await client.set('another-key', 'another-value');
|
||||||
|
|
||||||
|
const [setKeyReply, otherKeyValue] = await client
|
||||||
|
.multi()
|
||||||
|
.set('key', 'value')
|
||||||
|
.get('another-key')
|
||||||
|
.exec(); // ['OK', 'another-value']
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also [watch](https://redis.io/topics/transactions#optimistic-locking-using-check-and-set) keys by calling `.watch()`. Your transaction will abort if any of the watched keys change.
|
||||||
|
|
||||||
|
To dig deeper into transactions, check out the [Isolated Execution Guide](./docs/isolated-execution.md).
|
||||||
|
|
||||||
|
### Blocking Commands
|
||||||
|
|
||||||
|
Any command can be run on a new connection by specifying the `isolated` option. The newly created connection is closed when the command's `Promise` is fulfilled.
|
||||||
|
|
||||||
|
This pattern works especially well for blocking commands—such as `BLPOP` and `BLMOVE`:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { commandOptions } from 'redis';
|
||||||
|
|
||||||
|
const blPopPromise = client.blPop(commandOptions({ isolated: true }), 'key', 0);
|
||||||
|
|
||||||
|
await client.lPush('key', ['1', '2']);
|
||||||
|
|
||||||
|
await blPopPromise; // '2'
|
||||||
|
```
|
||||||
|
|
||||||
|
To learn more about isolated execution, check out the [guide](./docs/isolated-execution.md).
|
||||||
|
|
||||||
|
### Pub/Sub
|
||||||
|
|
||||||
|
Subscribing to a channel requires a dedicated stand-alone connection. You can easily get one by `.duplicate()`ing an existing Redis connection.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const subscriber = client.duplicate();
|
||||||
|
|
||||||
|
await subscriber.connect();
|
||||||
|
```
|
||||||
|
|
||||||
|
Once you have one, simply subscribe and unsubscribe as needed:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await subscriber.subscribe('channel', (message) => {
|
||||||
|
console.log(message); // 'message'
|
||||||
|
});
|
||||||
|
|
||||||
|
await subscriber.pSubscribe('channe*', (message, channel) => {
|
||||||
|
console.log(message, channel); // 'message', 'channel'
|
||||||
|
});
|
||||||
|
|
||||||
|
await subscriber.unsubscribe('channel');
|
||||||
|
|
||||||
|
await subscriber.pUnsubscribe('channe*');
|
||||||
|
```
|
||||||
|
|
||||||
|
Publish a message on a channel:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await publisher.publish('channel', 'message');
|
||||||
|
```
|
||||||
|
|
||||||
|
### Scan Iterator
|
||||||
|
|
||||||
|
[`SCAN`](https://redis.io/commands/scan) results can be looped over using [async iterators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator):
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
for await (const key of client.scanIterator()) {
|
||||||
|
// use the key!
|
||||||
|
await client.get(key);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This works with `HSCAN`, `SSCAN`, and `ZSCAN` too:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
for await (const { field, value } of client.hScanIterator('hash')) {}
|
||||||
|
for await (const member of client.sScanIterator('set')) {}
|
||||||
|
for await (const { score, member } of client.zScanIterator('sorted-set')) {}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can override the default options by providing a configuration object:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
client.scanIterator({
|
||||||
|
TYPE: 'string', // `SCAN` only
|
||||||
|
MATCH: 'patter*',
|
||||||
|
COUNT: 100
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lua Scripts
|
||||||
|
|
||||||
|
Define new functions using [Lua scripts](https://redis.io/commands/eval) which execute on the Redis server:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { createClient, defineScript } from 'redis';
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
const client = createClient({
|
||||||
|
scripts: {
|
||||||
|
add: defineScript({
|
||||||
|
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.set('key', '1');
|
||||||
|
await client.add('key', 2); // 3
|
||||||
|
})();
|
||||||
|
```
|
||||||
|
|
||||||
|
### Disconnecting
|
||||||
|
|
||||||
|
There are two functions that disconnect a client from the Redis server. In most scenarios you should use `.quit()` to ensure that pending commands are sent to Redis before closing a connection.
|
||||||
|
|
||||||
|
#### `.QUIT()`/`.quit()`
|
||||||
|
|
||||||
|
Gracefully close a client's connection to Redis, by sending the [`QUIT`](https://redis.io/commands/quit) command to the server. Before quitting, the client executes any remaining commands in its queue, and will receive replies from Redis for each of them.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const [ping, get, quit] = await Promise.all([
|
||||||
|
client.ping(),
|
||||||
|
client.get('key'),
|
||||||
|
client.quit()
|
||||||
|
]); // ['PONG', null, 'OK']
|
||||||
|
|
||||||
|
try {
|
||||||
|
await client.get('key');
|
||||||
|
} catch (err) {
|
||||||
|
// ClosedClient Error
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `.disconnect()`
|
||||||
|
|
||||||
|
Forcibly close a client's connection to Redis immediately. Calling `disconnect` will not send further pending commands to the Redis server, or wait for or parse outstanding responses.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await client.disconnect();
|
||||||
|
```
|
||||||
|
|
||||||
|
### Auto-Pipelining
|
||||||
|
|
||||||
|
Node Redis will automatically pipeline requests that are made during the same "tick".
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
client.set('Tm9kZSBSZWRpcw==', 'users:1');
|
||||||
|
client.sAdd('users:1:tokens', 'Tm9kZSBSZWRpcw==');
|
||||||
|
```
|
||||||
|
|
||||||
|
Of course, if you don't do something with your Promises you're certain to get [unhandled Promise exceptions](https://nodejs.org/api/process.html#process_event_unhandledrejection). To take advantage of auto-pipelining and handle your Promises, use `Promise.all()`.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await Promise.all([
|
||||||
|
client.set('Tm9kZSBSZWRpcw==', 'users:1'),
|
||||||
|
client.sAdd('users:1:tokens', 'Tm9kZSBSZWRpcw==')
|
||||||
|
]);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Clustering
|
||||||
|
|
||||||
|
Check out the [Clustering Guide](./docs/clustering.md) when using Node Redis to connect to a Redis Cluster.
|
||||||
|
|
||||||
|
## Supported Redis versions
|
||||||
|
|
||||||
|
Node Redis is supported with the following versions of Redis:
|
||||||
|
|
||||||
|
| Version | Supported |
|
||||||
|
|---------|--------------------|
|
||||||
|
| 6.2.z | :heavy_check_mark: |
|
||||||
|
| 6.0.z | :heavy_check_mark: |
|
||||||
|
| 5.y.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.
|
@@ -15,7 +15,7 @@
|
|||||||
| username | | ACL username ([see ACL guide](https://redis.io/topics/acl)) |
|
| username | | ACL username ([see ACL guide](https://redis.io/topics/acl)) |
|
||||||
| password | | ACL password or the old "--requirepass" password |
|
| password | | ACL password or the old "--requirepass" password |
|
||||||
| database | | Database number to connect to (see [`SELECT`](https://redis.io/commands/select) command) |
|
| database | | Database number to connect to (see [`SELECT`](https://redis.io/commands/select) command) |
|
||||||
| modules | | Object defining which [Redis Modules](https://redis.io/modules) to include (TODO - document) |
|
| 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)) |
|
| scripts | | Object defining Lua Scripts to use with this client (see [Lua Scripts](../README.md#lua-scripts)) |
|
||||||
| commandsQueueMaxLength | | Maximum length of the client's internal command queue |
|
| commandsQueueMaxLength | | Maximum length of the client's internal command queue |
|
||||||
| readonly | `false` | Connect in [`READONLY`](https://redis.io/commands/readonly) mode |
|
| readonly | `false` | Connect in [`READONLY`](https://redis.io/commands/readonly) mode |
|
@@ -37,7 +37,9 @@ import { createCluster } from 'redis';
|
|||||||
| rootNodes | | An array of root nodes that are part of the cluster, which will be used to get the cluster topology. Each element in the array is a client configuration object. There is no need to specify every node in the cluster, 3 should be enough to reliably connect and obtain the cluster configuration from the server |
|
| rootNodes | | An array of root nodes that are part of the cluster, which will be used to get the cluster topology. Each element in the array is a client configuration object. There is no need to specify every node in the cluster, 3 should be enough to reliably connect and obtain the cluster configuration from the server |
|
||||||
| defaults | | The default configuration values for every client in the cluster. Use this for example when specifying an ACL user to connect with |
|
| 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 |
|
| 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 | |
|
| maxCommandRedirections | `16` | The maximum number of times a command will be redirected due to `MOVED` or `ASK` errors |
|
||||||
|
| 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)) |
|
||||||
|
|
||||||
## Command Routing
|
## Command Routing
|
||||||
|
|
@@ -4,11 +4,6 @@
|
|||||||
"description": "node-redis 4 example script",
|
"description": "node-redis 4 example script",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"type": "module"
|
||||||
},
|
|
||||||
"type": "module",
|
|
||||||
"dependencies": {
|
|
||||||
"redis": "../"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@@ -444,16 +444,16 @@ describe('Client', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
testUtils.testWithClient('executeIsolated', async client => {
|
// testUtils.testWithClient('executeIsolated', async client => {
|
||||||
await client.sendCommand(['CLIENT', 'SETNAME', 'client']);
|
// await client.sendCommand(['CLIENT', 'SETNAME', 'client']);
|
||||||
|
|
||||||
assert.equal(
|
// assert.equal(
|
||||||
await client.executeIsolated(isolatedClient =>
|
// await client.executeIsolated(isolatedClient =>
|
||||||
isolatedClient.sendCommand(['CLIENT', 'GETNAME'])
|
// isolatedClient.sendCommand(['CLIENT', 'GETNAME'])
|
||||||
),
|
// ),
|
||||||
null
|
// null
|
||||||
);
|
// );
|
||||||
}, GLOBAL.SERVERS.OPEN);
|
// }, GLOBAL.SERVERS.OPEN);
|
||||||
|
|
||||||
async function killClient<M extends RedisModules, S extends RedisScripts>(client: RedisClientType<M, S>): Promise<void> {
|
async function killClient<M extends RedisModules, S extends RedisScripts>(client: RedisClientType<M, S>): Promise<void> {
|
||||||
const onceErrorPromise = once(client, 'error');
|
const onceErrorPromise = once(client, 'error');
|
@@ -47,47 +47,47 @@ describe('Cluster', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
testUtils.testWithCluster('should handle live resharding', async cluster => {
|
// testUtils.testWithCluster('should handle live resharding', async cluster => {
|
||||||
const key = 'key',
|
// const key = 'key',
|
||||||
value = 'value';
|
// value = 'value';
|
||||||
await cluster.set(key, value);
|
// await cluster.set(key, value);
|
||||||
|
|
||||||
const slot = calculateSlot(key),
|
// const slot = calculateSlot(key),
|
||||||
from = cluster.getSlotMaster(slot),
|
// from = cluster.getSlotMaster(slot),
|
||||||
to = cluster.getMasters().find(node => node.id !== from.id);
|
// to = cluster.getMasters().find(node => node.id !== from.id);
|
||||||
|
|
||||||
await to!.client.clusterSetSlot(slot, ClusterSlotStates.IMPORTING, from.id);
|
// await to!.client.clusterSetSlot(slot, ClusterSlotStates.IMPORTING, from.id);
|
||||||
|
|
||||||
// should be able to get the key from the original node before it was migrated
|
// // should be able to get the key from the original node before it was migrated
|
||||||
assert.equal(
|
// assert.equal(
|
||||||
await cluster.get(key),
|
// await cluster.get(key),
|
||||||
value
|
// value
|
||||||
);
|
// );
|
||||||
|
|
||||||
await from.client.clusterSetSlot(slot, ClusterSlotStates.MIGRATING, to!.id);
|
// await from.client.clusterSetSlot(slot, ClusterSlotStates.MIGRATING, to!.id);
|
||||||
|
|
||||||
// should be able to get the key from the original node using the "ASKING" command
|
// // should be able to get the key from the original node using the "ASKING" command
|
||||||
assert.equal(
|
// assert.equal(
|
||||||
await cluster.get(key),
|
// await cluster.get(key),
|
||||||
value
|
// value
|
||||||
);
|
// );
|
||||||
|
|
||||||
const { port: toPort } = <any>to!.client.options!.socket;
|
// const { port: toPort } = <any>to!.client.options!.socket;
|
||||||
|
|
||||||
await from.client.migrate(
|
// await from.client.migrate(
|
||||||
'127.0.0.1',
|
// '127.0.0.1',
|
||||||
toPort,
|
// toPort,
|
||||||
key,
|
// key,
|
||||||
0,
|
// 0,
|
||||||
10
|
// 10
|
||||||
);
|
// );
|
||||||
|
|
||||||
// should be able to get the key from the new node
|
// // should be able to get the key from the new node
|
||||||
assert.equal(
|
// assert.equal(
|
||||||
await cluster.get(key),
|
// await cluster.get(key),
|
||||||
value
|
// value
|
||||||
);
|
// );
|
||||||
}, {
|
// }, {
|
||||||
serverArguments: []
|
// serverArguments: []
|
||||||
});
|
// });
|
||||||
});
|
});
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user