1
1
import COMMANDS from '../commands' ;
2
2
import RedisMultiCommand , { MULTI_REPLY , MultiReply , MultiReplyType , RedisMultiQueuedCommand } from '../multi-command' ;
3
3
import { ReplyWithTypeMapping , CommandReply , Command , CommandArguments , CommanderConfig , RedisFunctions , RedisModules , RedisScripts , RespVersions , TransformReply , RedisScript , RedisFunction , TypeMapping } from '../RESP/types' ;
4
- import { attachConfig , functionArgumentsPrefix , getTransformReply , scriptArgumentsPrefix } from '../commander' ;
4
+ import { attachConfig , functionArgumentsPrefix , getTransformReply } from '../commander' ;
5
5
import { BasicCommandParser } from './parser' ;
6
6
import { Tail } from '../commands/generic-transformers' ;
7
7
@@ -92,12 +92,10 @@ export default class RedisClientMultiCommand<REPLIES = []> {
92
92
const transformReply = getTransformReply ( command , resp ) ;
93
93
94
94
return function ( this : RedisClientMultiCommand , ...args : Array < unknown > ) {
95
- let redisArgs : CommandArguments ;
96
-
97
95
const parser = new BasicCommandParser ( resp ) ;
98
96
command . parseCommand ( parser , ...args ) ;
99
97
100
- redisArgs = parser . redisArgs ;
98
+ const redisArgs : CommandArguments = parser . redisArgs ;
101
99
redisArgs . preserve = parser . preserve ;
102
100
103
101
return this . addCommand (
@@ -111,12 +109,10 @@ export default class RedisClientMultiCommand<REPLIES = []> {
111
109
const transformReply = getTransformReply ( command , resp ) ;
112
110
113
111
return function ( this : { _self : RedisClientMultiCommand } , ...args : Array < unknown > ) {
114
- let redisArgs : CommandArguments ;
115
-
116
112
const parser = new BasicCommandParser ( resp ) ;
117
113
command . parseCommand ( parser , ...args ) ;
118
114
119
- redisArgs = parser . redisArgs ;
115
+ const redisArgs : CommandArguments = parser . redisArgs ;
120
116
redisArgs . preserve = parser . preserve ;
121
117
122
118
return this . _self . addCommand (
@@ -131,17 +127,12 @@ export default class RedisClientMultiCommand<REPLIES = []> {
131
127
const transformReply = getTransformReply ( fn , resp ) ;
132
128
133
129
return function ( this : { _self : RedisClientMultiCommand } , ...args : Array < unknown > ) {
134
- let fnArgs : CommandArguments ;
135
-
136
130
const parser = new BasicCommandParser ( resp ) ;
137
- parser . pushVariadic ( prefix ) ;
131
+ parser . push ( ... prefix ) ;
138
132
fn . parseCommand ( parser , ...args ) ;
139
133
140
- fnArgs = parser . redisArgs ;
141
- fnArgs . preserve = parser . preserve ;
142
-
143
- const redisArgs : CommandArguments = prefix . concat ( fnArgs ) ;
144
- redisArgs . preserve = fnArgs . preserve ;
134
+ const redisArgs : CommandArguments = parser . redisArgs ;
135
+ redisArgs . preserve = parser . preserve ;
145
136
146
137
return this . _self . addCommand (
147
138
redisArgs ,
@@ -151,20 +142,17 @@ export default class RedisClientMultiCommand<REPLIES = []> {
151
142
}
152
143
153
144
static #createScriptCommand( script : RedisScript , resp : RespVersions ) {
154
- const prefix = scriptArgumentsPrefix ( script ) ;
155
145
const transformReply = getTransformReply ( script , resp ) ;
156
146
157
147
return function ( this : RedisClientMultiCommand , ...args : Array < unknown > ) {
158
- let redisArgs : CommandArguments ;
159
-
160
148
const parser = new BasicCommandParser ( resp ) ;
161
- parser . pushVariadic ( prefix ) ;
162
149
script . parseCommand ( parser , ...args ) ;
163
150
164
- redisArgs = parser . redisArgs ;
151
+ const redisArgs : CommandArguments = parser . redisArgs ;
165
152
redisArgs . preserve = parser . preserve ;
166
153
167
- return this . addCommand (
154
+ return this . addScript (
155
+ script ,
168
156
redisArgs ,
169
157
transformReply
170
158
) ;
@@ -213,6 +201,16 @@ export default class RedisClientMultiCommand<REPLIES = []> {
213
201
return this ;
214
202
}
215
203
204
+ addScript (
205
+ script : RedisScript ,
206
+ args : CommandArguments ,
207
+ transformReply ?: TransformReply
208
+ ) {
209
+ this . #multi. addScript ( script , args , transformReply ) ;
210
+
211
+ return this ;
212
+ }
213
+
216
214
async exec < T extends MultiReply = MULTI_REPLY [ 'GENERIC' ] > ( execAsPipeline = false ) : Promise < MultiReplyType < T , REPLIES > > {
217
215
if ( execAsPipeline ) return this . execAsPipeline < T > ( ) ;
218
216
0 commit comments