Skip to content

Commit 6ca420f

Browse files
committed
fix #2561
1 parent 9e1ec97 commit 6ca420f

File tree

9 files changed

+45
-44
lines changed

9 files changed

+45
-44
lines changed

docs/v4-to-v5.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ Some command arguments/replies have changed to align more closely to data types
131131
- `LCS IDX`: `length` has been changed to `len`, `matches` has been changed from `Array<{ key1: RangeReply; key2: RangeReply; }>` to `Array<[key1: RangeReply, key2: RangeReply]>`
132132
- `HEXISTS`: `boolean` -> `number` [^boolean-to-number]
133133
- `HRANDFIELD_COUNT_WITHVALUES`: `Record<BlobString, BlobString>` -> `Array<{ field: BlobString; value: BlobString; }>` (it can return duplicates).
134-
- `SCAN`, `HSCAN`, `SSCAN`, and `ZSCAN`: cursor type is `string` instead of `number`?
134+
- `SCAN`, `HSCAN`, `SSCAN`, and `ZSCAN`: `cursor` type is `string | Buffer` instead of `number`
135135
- `HSETNX`: `boolean` -> `number` [^boolean-to-number]
136136
- `ZINTER`: instead of `client.ZINTER('key', { WEIGHTS: [1] })` use `client.ZINTER({ key: 'key', weight: 1 }])`
137137
- `ZINTER_WITHSCORES`: instead of `client.ZINTER_WITHSCORES('key', { WEIGHTS: [1] })` use `client.ZINTER_WITHSCORES({ key: 'key', weight: 1 }])`

packages/client/lib/commands/HSCAN.spec.ts

+16-15
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ describe('HSCAN', () => {
66
describe('transformArguments', () => {
77
it('cusror only', () => {
88
assert.deepEqual(
9-
HSCAN.transformArguments('key', 0),
9+
HSCAN.transformArguments('key', '0'),
1010
['HSCAN', 'key', '0']
1111
);
1212
});
1313

1414
it('with MATCH', () => {
1515
assert.deepEqual(
16-
HSCAN.transformArguments('key', 0, {
16+
HSCAN.transformArguments('key', '0', {
1717
MATCH: 'pattern'
1818
}),
1919
['HSCAN', 'key', '0', 'MATCH', 'pattern']
@@ -22,7 +22,7 @@ describe('HSCAN', () => {
2222

2323
it('with COUNT', () => {
2424
assert.deepEqual(
25-
HSCAN.transformArguments('key', 0, {
25+
HSCAN.transformArguments('key', '0', {
2626
COUNT: 1
2727
}),
2828
['HSCAN', 'key', '0', 'COUNT', '1']
@@ -31,7 +31,7 @@ describe('HSCAN', () => {
3131

3232
it('with MATCH & COUNT', () => {
3333
assert.deepEqual(
34-
HSCAN.transformArguments('key', 0, {
34+
HSCAN.transformArguments('key', '0', {
3535
MATCH: 'pattern',
3636
COUNT: 1
3737
}),
@@ -41,16 +41,17 @@ describe('HSCAN', () => {
4141
});
4242

4343
testUtils.testWithClient('client.hScan', async client => {
44-
await client.hSet('key', 'field', 'value');
45-
assert.deepEqual(
46-
await client.hScan('key', 0),
47-
{
48-
cursor: 0,
49-
entries: [{
50-
field: 'field',
51-
value: 'value'
52-
}]
53-
}
54-
);
44+
const [, reply] = await Promise.all([
45+
client.hSet('key', 'field', 'value'),
46+
client.hScan('key', '0')
47+
]);
48+
49+
assert.deepEqual(reply, {
50+
cursor: '0',
51+
entries: [{
52+
field: 'field',
53+
value: 'value'
54+
}]
55+
});
5556
}, GLOBAL.SERVERS.OPEN);
5657
});

packages/client/lib/commands/HSCAN.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default {
1111
IS_READ_ONLY: true,
1212
transformArguments(
1313
key: RedisArgument,
14-
cursor: number,
14+
cursor: RedisArgument,
1515
options?: ScanCommonOptions
1616
) {
1717
return pushScanArguments(['HSCAN', key], cursor, options);
@@ -27,7 +27,7 @@ export default {
2727
}
2828

2929
return {
30-
cursor: Number(cursor),
30+
cursor,
3131
entries
3232
};
3333
}

packages/client/lib/commands/SCAN.spec.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ describe('SCAN', () => {
66
describe('transformArguments', () => {
77
it('cusror only', () => {
88
assert.deepEqual(
9-
SCAN.transformArguments(0),
9+
SCAN.transformArguments('0'),
1010
['SCAN', '0']
1111
);
1212
});
1313

1414
it('with MATCH', () => {
1515
assert.deepEqual(
16-
SCAN.transformArguments(0, {
16+
SCAN.transformArguments('0', {
1717
MATCH: 'pattern'
1818
}),
1919
['SCAN', '0', 'MATCH', 'pattern']
@@ -22,7 +22,7 @@ describe('SCAN', () => {
2222

2323
it('with COUNT', () => {
2424
assert.deepEqual(
25-
SCAN.transformArguments(0, {
25+
SCAN.transformArguments('0', {
2626
COUNT: 1
2727
}),
2828
['SCAN', '0', 'COUNT', '1']
@@ -31,7 +31,7 @@ describe('SCAN', () => {
3131

3232
it('with TYPE', () => {
3333
assert.deepEqual(
34-
SCAN.transformArguments(0, {
34+
SCAN.transformArguments('0', {
3535
TYPE: 'stream'
3636
}),
3737
['SCAN', '0', 'TYPE', 'stream']
@@ -40,7 +40,7 @@ describe('SCAN', () => {
4040

4141
it('with MATCH & COUNT & TYPE', () => {
4242
assert.deepEqual(
43-
SCAN.transformArguments(0, {
43+
SCAN.transformArguments('0', {
4444
MATCH: 'pattern',
4545
COUNT: 1,
4646
TYPE: 'stream'
@@ -52,9 +52,9 @@ describe('SCAN', () => {
5252

5353
testUtils.testAll('scan', async client => {
5454
assert.deepEqual(
55-
await client.scan(0),
55+
await client.scan('0'),
5656
{
57-
cursor: 0,
57+
cursor: '0',
5858
keys: []
5959
}
6060
);

packages/client/lib/commands/SCAN.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export interface ScanCommonOptions {
77

88
export function pushScanArguments(
99
args: CommandArguments,
10-
cursor: number,
10+
cursor: RedisArgument,
1111
options?: ScanOptions
1212
): CommandArguments {
1313
args.push(cursor.toString());
@@ -30,7 +30,7 @@ export interface ScanOptions extends ScanCommonOptions {
3030
export default {
3131
FIRST_KEY_INDEX: undefined,
3232
IS_READ_ONLY: true,
33-
transformArguments(cursor: number, options?: ScanOptions) {
33+
transformArguments(cursor: string, options?: ScanOptions) {
3434
const args = pushScanArguments(['SCAN'], cursor, options);
3535

3636
if (options?.TYPE) {
@@ -41,7 +41,7 @@ export default {
4141
},
4242
transformReply([cursor, keys]: [BlobStringReply, ArrayReply<BlobStringReply>]) {
4343
return {
44-
cursor: Number(cursor),
44+
cursor,
4545
keys
4646
};
4747
}

packages/client/lib/commands/SSCAN.spec.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ describe('SSCAN', () => {
66
describe('transformArguments', () => {
77
it('cusror only', () => {
88
assert.deepEqual(
9-
SSCAN.transformArguments('key', 0),
9+
SSCAN.transformArguments('key', '0'),
1010
['SSCAN', 'key', '0']
1111
);
1212
});
1313

1414
it('with MATCH', () => {
1515
assert.deepEqual(
16-
SSCAN.transformArguments('key', 0, {
16+
SSCAN.transformArguments('key', '0', {
1717
MATCH: 'pattern'
1818
}),
1919
['SSCAN', 'key', '0', 'MATCH', 'pattern']
@@ -22,7 +22,7 @@ describe('SSCAN', () => {
2222

2323
it('with COUNT', () => {
2424
assert.deepEqual(
25-
SSCAN.transformArguments('key', 0, {
25+
SSCAN.transformArguments('key', '0', {
2626
COUNT: 1
2727
}),
2828
['SSCAN', 'key', '0', 'COUNT', '1']
@@ -31,7 +31,7 @@ describe('SSCAN', () => {
3131

3232
it('with MATCH & COUNT', () => {
3333
assert.deepEqual(
34-
SSCAN.transformArguments('key', 0, {
34+
SSCAN.transformArguments('key', '0', {
3535
MATCH: 'pattern',
3636
COUNT: 1
3737
}),
@@ -42,9 +42,9 @@ describe('SSCAN', () => {
4242

4343
testUtils.testAll('sScan', async client => {
4444
assert.deepEqual(
45-
await client.sScan('key', 0),
45+
await client.sScan('key', '0'),
4646
{
47-
cursor: 0,
47+
cursor: '0',
4848
members: []
4949
}
5050
);

packages/client/lib/commands/SSCAN.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ export default {
66
IS_READ_ONLY: true,
77
transformArguments(
88
key: RedisArgument,
9-
cursor: number,
9+
cursor: RedisArgument,
1010
options?: ScanCommonOptions
1111
) {
1212
return pushScanArguments(['SSCAN', key], cursor, options);
1313
},
1414
transformReply([cursor, members]: [BlobStringReply, Array<BlobStringReply>]) {
1515
return {
16-
cursor: Number(cursor),
16+
cursor,
1717
members
1818
};
1919
}

packages/client/lib/commands/ZSCAN.spec.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ describe('ZSCAN', () => {
66
describe('transformArguments', () => {
77
it('cusror only', () => {
88
assert.deepEqual(
9-
ZSCAN.transformArguments('key', 0),
9+
ZSCAN.transformArguments('key', '0'),
1010
['ZSCAN', 'key', '0']
1111
);
1212
});
1313

1414
it('with MATCH', () => {
1515
assert.deepEqual(
16-
ZSCAN.transformArguments('key', 0, {
16+
ZSCAN.transformArguments('key', '0', {
1717
MATCH: 'pattern'
1818
}),
1919
['ZSCAN', 'key', '0', 'MATCH', 'pattern']
@@ -22,7 +22,7 @@ describe('ZSCAN', () => {
2222

2323
it('with COUNT', () => {
2424
assert.deepEqual(
25-
ZSCAN.transformArguments('key', 0, {
25+
ZSCAN.transformArguments('key', '0', {
2626
COUNT: 1
2727
}),
2828
['ZSCAN', 'key', '0', 'COUNT', '1']
@@ -31,7 +31,7 @@ describe('ZSCAN', () => {
3131

3232
it('with MATCH & COUNT', () => {
3333
assert.deepEqual(
34-
ZSCAN.transformArguments('key', 0, {
34+
ZSCAN.transformArguments('key', '0', {
3535
MATCH: 'pattern',
3636
COUNT: 1
3737
}),
@@ -42,9 +42,9 @@ describe('ZSCAN', () => {
4242

4343
testUtils.testWithClient('zScan', async client => {
4444
assert.deepEqual(
45-
await client.zScan('key', 0),
45+
await client.zScan('key', '0'),
4646
{
47-
cursor: 0,
47+
cursor: '0',
4848
members: []
4949
}
5050
);

packages/client/lib/commands/ZSCAN.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ export default {
1212
IS_READ_ONLY: true,
1313
transformArguments(
1414
key: RedisArgument,
15-
cursor: number,
15+
cursor: RedisArgument,
1616
options?: ScanCommonOptions
1717
) {
1818
return pushScanArguments(['ZSCAN', key], cursor, options);
1919
},
2020
transformReply([cursor, rawMembers]: [BlobStringReply, ArrayReply<BlobStringReply>]) {
2121
return {
22-
cursor: Number(cursor),
22+
cursor,
2323
members: transformSortedSetReply[2](rawMembers)
2424
};
2525
}

0 commit comments

Comments
 (0)