Skip to content

Commit 02245f3

Browse files
committed
Add all commands to new parser syntax for basic/graph/json
1 parent 657167c commit 02245f3

File tree

733 files changed

+4025
-2564
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

733 files changed

+4025
-2564
lines changed

packages/client/lib/client/parser.ts

+13-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { RedisArgument, RespVersions } from "../..";
1+
import { RedisArgument, RespVersions } from "../RESP/types";
22
import { RedisVariadicArgument } from "../commands/generic-transformers";
33

44
export interface CommandParser {
@@ -8,9 +8,10 @@ export interface CommandParser {
88
respVersion: RespVersions;
99
preserve: unknown;
1010
cachable: boolean;
11-
11+
1212
push: (arg: RedisArgument) => unknown;
1313
pushVariadic: (vals: RedisVariadicArgument) => unknown;
14+
pushVariadicWithLength: (vals: RedisVariadicArgument) => unknown;
1415
pushVariadicNumber: (vals: number | Array<number>) => unknown;
1516
pushKey: (key: RedisArgument) => unknown; // normal push of keys
1617
pushKeys: (keys: RedisVariadicArgument) => unknown; // push multiple keys at a time
@@ -68,6 +69,15 @@ export class BasicCommandParser implements CommandParser {
6869
}
6970
}
7071

72+
pushVariadicWithLength(vals: RedisVariadicArgument) {
73+
if (Array.isArray(vals)) {
74+
this.#redisArgs.push(vals.length.toString());
75+
} else {
76+
this.#redisArgs.push('1');
77+
}
78+
this.pushVariadic(vals);
79+
}
80+
7181
pushVariadicNumber(vals: number | number[]) {
7282
if (Array.isArray(vals)) {
7383
for (const val of vals) {
@@ -109,4 +119,4 @@ export class BasicCommandParser implements CommandParser {
109119
setCachable() {
110120
this.#cachable = true;
111121
};
112-
}
122+
}

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
3+
import { parseArgs } from './generic-transformers';
34
import ACL_CAT from './ACL_CAT';
45

56
describe('ACL CAT', () => {
@@ -8,14 +9,14 @@ describe('ACL CAT', () => {
89
describe('transformArguments', () => {
910
it('simple', () => {
1011
assert.deepEqual(
11-
ACL_CAT.transformArguments(),
12+
parseArgs(ACL_CAT),
1213
['ACL', 'CAT']
1314
);
1415
});
1516

1617
it('with categoryName', () => {
1718
assert.deepEqual(
18-
ACL_CAT.transformArguments('dangerous'),
19+
parseArgs(ACL_CAT, 'dangerous'),
1920
['ACL', 'CAT', 'dangerous']
2021
);
2122
});
+5-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
import { RedisArgument, ArrayReply, BlobStringReply, Command } from '../RESP/types';
2+
import { CommandParser } from '../client/parser';
23

34
export default {
45
FIRST_KEY_INDEX: undefined,
56
IS_READ_ONLY: true,
6-
transformArguments(categoryName?: RedisArgument) {
7-
const args: Array<RedisArgument> = ['ACL', 'CAT'];
8-
7+
parseCommand(parser: CommandParser, categoryName?: RedisArgument) {
8+
parser.pushVariadic(['ACL', 'CAT']);
99
if (categoryName) {
10-
args.push(categoryName);
10+
parser.push(categoryName);
1111
}
12-
13-
return args;
1412
},
13+
transformArguments(categoryName?: RedisArgument) { return [] },
1514
transformReply: undefined as unknown as () => ArrayReply<BlobStringReply>
1615
} as const satisfies Command;

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import ACL_DELUSER from './ACL_DELUSER';
4+
import { parseArgs } from './generic-transformers';
45

56
describe('ACL DELUSER', () => {
67
testUtils.isVersionGreaterThanHook([6]);
78

89
describe('transformArguments', () => {
910
it('string', () => {
1011
assert.deepEqual(
11-
ACL_DELUSER.transformArguments('username'),
12+
parseArgs(ACL_DELUSER, 'username'),
1213
['ACL', 'DELUSER', 'username']
1314
);
1415
});
1516

1617
it('array', () => {
1718
assert.deepEqual(
18-
ACL_DELUSER.transformArguments(['1', '2']),
19+
parseArgs(ACL_DELUSER, ['1', '2']),
1920
['ACL', 'DELUSER', '1', '2']
2021
);
2122
});
+6-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import { NumberReply, Command } from '../RESP/types';
2-
import { RedisVariadicArgument, pushVariadicArguments } from './generic-transformers';
2+
import { CommandParser } from '../client/parser';
3+
import { RedisVariadicArgument } from './generic-transformers';
34

45
export default {
56
FIRST_KEY_INDEX: undefined,
67
IS_READ_ONLY: true,
7-
transformArguments(username: RedisVariadicArgument) {
8-
return pushVariadicArguments(['ACL', 'DELUSER'], username);
8+
parseCommand(parser: CommandParser, username: RedisVariadicArgument) {
9+
parser.pushVariadic(['ACL', 'DELUSER']);
10+
parser.pushVariadic(username);
911
},
12+
transformArguments(username: RedisVariadicArgument) { return []; },
1013
transformReply: undefined as unknown as () => NumberReply
1114
} as const satisfies Command;

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import ACL_DRYRUN from './ACL_DRYRUN';
4+
import { parseArgs } from './generic-transformers';
45

56
describe('ACL DRYRUN', () => {
67
testUtils.isVersionGreaterThanHook([7]);
78

89
it('transformArguments', () => {
910
assert.deepEqual(
10-
ACL_DRYRUN.transformArguments('default', ['GET', 'key']),
11+
parseArgs(ACL_DRYRUN, 'default', ['GET', 'key']),
1112
['ACL', 'DRYRUN', 'default', 'GET', 'key']
1213
);
1314
});
+4-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import { RedisArgument, SimpleStringReply, BlobStringReply, Command } from '../RESP/types';
2+
import { CommandParser } from '../client/parser';
23

34
export default {
45
FIRST_KEY_INDEX: undefined,
56
IS_READ_ONLY: true,
6-
transformArguments(username: RedisArgument, command: Array<RedisArgument>) {
7-
return [
8-
'ACL',
9-
'DRYRUN',
10-
username,
11-
...command
12-
];
7+
parseCommand(parser: CommandParser, username: RedisArgument, command: Array<RedisArgument>) {
8+
parser.pushVariadic(['ACL', 'DRYRUN', username, ...command]);
139
},
10+
transformArguments(username: RedisArgument, command: Array<RedisArgument>) { return [] },
1411
transformReply: undefined as unknown as () => SimpleStringReply<'OK'> | BlobStringReply
1512
} as const satisfies Command;
1613

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import ACL_GENPASS from './ACL_GENPASS';
4+
import { parseArgs } from './generic-transformers';
45

56
describe('ACL GENPASS', () => {
67
testUtils.isVersionGreaterThanHook([6]);
78

89
describe('transformArguments', () => {
910
it('simple', () => {
1011
assert.deepEqual(
11-
ACL_GENPASS.transformArguments(),
12+
parseArgs(ACL_GENPASS),
1213
['ACL', 'GENPASS']
1314
);
1415
});
1516

1617
it('with bits', () => {
1718
assert.deepEqual(
18-
ACL_GENPASS.transformArguments(128),
19+
parseArgs(ACL_GENPASS, 128),
1920
['ACL', 'GENPASS', '128']
2021
);
2122
});
+5-6
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { BlobStringReply, Command } from '../RESP/types';
2+
import { CommandParser } from '../client/parser';
23

34
export default {
45
FIRST_KEY_INDEX: undefined,
56
IS_READ_ONLY: true,
6-
transformArguments(bits?: number) {
7-
const args = ['ACL', 'GENPASS'];
8-
7+
parseCommand(parser: CommandParser, bits?: number) {
8+
parser.pushVariadic(['ACL', 'GENPASS']);
99
if (bits) {
10-
args.push(bits.toString());
10+
parser.push(bits.toString());
1111
}
12-
13-
return args;
1412
},
13+
transformArguments(bits?: number) { return [] },
1514
transformReply: undefined as unknown as () => BlobStringReply
1615
} as const satisfies Command;
1716

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import ACL_GETUSER from './ACL_GETUSER';
4+
import { parseArgs } from './generic-transformers';
45

56
describe('ACL GETUSER', () => {
67
testUtils.isVersionGreaterThanHook([6]);
78

89
it('transformArguments', () => {
910
assert.deepEqual(
10-
ACL_GETUSER.transformArguments('username'),
11+
parseArgs(ACL_GETUSER, 'username'),
1112
['ACL', 'GETUSER', 'username']
1213
);
1314
});

packages/client/lib/commands/ACL_GETUSER.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { RedisArgument, TuplesToMapReply, BlobStringReply, ArrayReply, UnwrapReply, Resp2Reply, Command } from '../RESP/types';
2+
import { CommandParser } from '../client/parser';
23

34
type AclUser = TuplesToMapReply<[
45
[BlobStringReply<'flags'>, ArrayReply<BlobStringReply>],
@@ -19,9 +20,10 @@ type AclUser = TuplesToMapReply<[
1920
export default {
2021
FIRST_KEY_INDEX: undefined,
2122
IS_READ_ONLY: true,
22-
transformArguments(username: RedisArgument) {
23-
return ['ACL', 'GETUSER', username];
23+
parseCommand(parser: CommandParser, username: RedisArgument) {
24+
parser.pushVariadic(['ACL', 'GETUSER', username]);
2425
},
26+
transformArguments(username: RedisArgument) { return [] },
2527
transformReply: {
2628
2: (reply: UnwrapReply<Resp2Reply<AclUser>>) => ({
2729
flags: reply[1],

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import ACL_LIST from './ACL_LIST';
4+
import { parseArgs } from './generic-transformers';
45

56
describe('ACL LIST', () => {
67
testUtils.isVersionGreaterThanHook([6]);
78

89
it('transformArguments', () => {
910
assert.deepEqual(
10-
ACL_LIST.transformArguments(),
11+
parseArgs(ACL_LIST),
1112
['ACL', 'LIST']
1213
);
1314
});
+4-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { ArrayReply, BlobStringReply, Command } from '../RESP/types';
2+
import { CommandParser } from '../client/parser';
23

34
export default {
45
FIRST_KEY_INDEX: undefined,
56
IS_READ_ONLY: true,
6-
transformArguments() {
7-
return ['ACL', 'LIST'];
7+
parseCommand(parser: CommandParser) {
8+
parser.pushVariadic(['ACL', 'LIST']);
89
},
10+
transformArguments() { return [] },
911
transformReply: undefined as unknown as () => ArrayReply<BlobStringReply>
1012
} as const satisfies Command;

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils from '../test-utils';
33
import ACL_LOAD from './ACL_LOAD';
4+
import { parseArgs } from './generic-transformers';
45

56
describe('ACL LOAD', () => {
67
testUtils.isVersionGreaterThanHook([6]);
78

89
it('transformArguments', () => {
910
assert.deepEqual(
10-
ACL_LOAD.transformArguments(),
11+
parseArgs(ACL_LOAD),
1112
['ACL', 'LOAD']
1213
);
1314
});
+4-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { SimpleStringReply, Command } from '../RESP/types';
2+
import { CommandParser } from '../client/parser';
23

34
export default {
45
FIRST_KEY_INDEX: undefined,
56
IS_READ_ONLY: true,
6-
transformArguments() {
7-
return ['ACL', 'LOAD'];
7+
parseCommand(parser: CommandParser) {
8+
parser.pushVariadic(['ACL', 'LOAD']);
89
},
10+
transformArguments() { return [] },
911
transformReply: undefined as unknown as () => SimpleStringReply<'OK'>
1012
} as const satisfies Command;

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import ACL_LOG from './ACL_LOG';
4+
import { parseArgs } from './generic-transformers';
45

56
describe('ACL LOG', () => {
67
testUtils.isVersionGreaterThanHook([6]);
78

89
describe('transformArguments', () => {
910
it('simple', () => {
1011
assert.deepEqual(
11-
ACL_LOG.transformArguments(),
12+
parseArgs(ACL_LOG),
1213
['ACL', 'LOG']
1314
);
1415
});
1516

1617
it('with count', () => {
1718
assert.deepEqual(
18-
ACL_LOG.transformArguments(10),
19+
parseArgs(ACL_LOG, 10),
1920
['ACL', 'LOG', '10']
2021
);
2122
});

packages/client/lib/commands/ACL_LOG.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ArrayReply, TuplesToMapReply, BlobStringReply, NumberReply, DoubleReply, UnwrapReply, Resp2Reply, Command } from '../RESP/types';
2+
import { CommandParser } from '../client/parser';
23

34
export type AclLogReply = ArrayReply<TuplesToMapReply<[
45
[BlobStringReply<'count'>, NumberReply],
@@ -19,15 +20,13 @@ export type AclLogReply = ArrayReply<TuplesToMapReply<[
1920
export default {
2021
FIRST_KEY_INDEX: undefined,
2122
IS_READ_ONLY: true,
22-
transformArguments(count?: number) {
23-
const args = ['ACL', 'LOG'];
24-
25-
if (count !== undefined) {
26-
args.push(count.toString());
23+
parseCommand(parser: CommandParser, count?: number) {
24+
parser.pushVariadic(['ACL', 'LOG']);
25+
if (count != undefined) {
26+
parser.push(count.toString());
2727
}
28-
29-
return args;
3028
},
29+
transformArguments(count?: number) { return [] },
3130
transformReply: {
3231
2: (reply: UnwrapReply<Resp2Reply<AclLogReply>>) => {
3332
return reply.map(item => {

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
33
import ACL_LOG_RESET from './ACL_LOG_RESET';
4+
import { parseArgs } from './generic-transformers';
45

56
describe('ACL LOG RESET', () => {
67
testUtils.isVersionGreaterThanHook([6]);
78

89
it('transformArguments', () => {
910
assert.deepEqual(
10-
ACL_LOG_RESET.transformArguments(),
11+
parseArgs(ACL_LOG_RESET),
1112
['ACL', 'LOG', 'RESET']
1213
);
1314
});
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { SimpleStringReply, Command } from '../RESP/types';
2+
import { CommandParser } from '../client/parser';
23
import ACL_LOG from './ACL_LOG';
34

45
export default {
56
FIRST_KEY_INDEX: undefined,
67
IS_READ_ONLY: ACL_LOG.IS_READ_ONLY,
7-
transformArguments() {
8-
return ['ACL', 'LOG', 'RESET'];
8+
parseCommand(parser: CommandParser) {
9+
parser.pushVariadic(['ACL', 'LOG', 'RESET']);
910
},
11+
transformArguments() { return [] },
1012
transformReply: undefined as unknown as () => SimpleStringReply<'OK'>
1113
} as const satisfies Command;

0 commit comments

Comments
 (0)