1
0
mirror of https://github.com/redis/node-redis.git synced 2025-12-15 23:55:38 +03:00

V5 bringing RESP3, Sentinel and TypeMapping to node-redis

RESP3 Support
   - Some commands responses in RESP3 aren't stable yet and therefore return an "untyped" ReplyUnion.
 
Sentinel

TypeMapping

Correctly types Multi commands

Note: some API changes to be further documented in v4-to-v5.md
This commit is contained in:
Shaya Potter
2024-10-15 17:46:52 +03:00
committed by GitHub
parent 2fc79bdfb3
commit b2d35c5286
1174 changed files with 45931 additions and 36274 deletions

View File

@@ -1,72 +1,39 @@
import { strict as assert } from 'assert';
import { strict as assert } from 'node:assert';
import testUtils, { GLOBAL } from '../test-utils';
import { transformArguments, transformReply } from './XINFO_STREAM';
import XINFO_STREAM from './XINFO_STREAM';
describe('XINFO STREAM', () => {
it('transformArguments', () => {
assert.deepEqual(
transformArguments('key'),
['XINFO', 'STREAM', 'key']
);
it('transformArguments', () => {
assert.deepEqual(
XINFO_STREAM.transformArguments('key'),
['XINFO', 'STREAM', 'key']
);
});
testUtils.testAll('xInfoStream', async client => {
const [, reply] = await Promise.all([
client.xGroupCreate('key', 'group', '$', {
MKSTREAM: true
}),
client.xInfoStream('key')
]);
assert.deepEqual(reply, {
length: 0,
'radix-tree-keys': 0,
'radix-tree-nodes': 1,
'last-generated-id': '0-0',
...testUtils.isVersionGreaterThan([7, 0]) && {
'max-deleted-entry-id': '0-0',
'entries-added': 0,
'recorded-first-entry-id': '0-0',
},
groups: 1,
'first-entry': null,
'last-entry': null
});
it('transformReply', () => {
assert.deepEqual(
transformReply([
'length', 2,
'radix-tree-keys', 1,
'radix-tree-nodes', 2,
'last-generated-id', '1538385846314-0',
'groups', 2,
'first-entry', ['1538385820729-0', ['foo', 'bar']],
'last-entry', ['1538385846314-0', ['field', 'value']]
]),
{
length: 2,
radixTreeKeys: 1,
radixTreeNodes: 2,
groups: 2,
lastGeneratedId: '1538385846314-0',
firstEntry: {
id: '1538385820729-0',
message: Object.create(null, {
foo: {
value: 'bar',
configurable: true,
enumerable: true
}
})
},
lastEntry: {
id: '1538385846314-0',
message: Object.create(null, {
field: {
value: 'value',
configurable: true,
enumerable: true
}
})
}
}
);
});
testUtils.testWithClient('client.xInfoStream', async client => {
await client.xGroupCreate('key', 'group', '$', {
MKSTREAM: true
});
assert.deepEqual(
await client.xInfoStream('key'),
{
length: 0,
radixTreeKeys: 0,
radixTreeNodes: 1,
groups: 1,
lastGeneratedId: '0-0',
firstEntry: null,
lastEntry: null
}
);
}, GLOBAL.SERVERS.OPEN);
}, {
client: GLOBAL.SERVERS.OPEN,
cluster: GLOBAL.CLUSTERS.OPEN
});
});