11import COMMANDS from '../commands' ;
22import RedisMultiCommand , { MULTI_REPLY , MultiReply , MultiReplyType , RedisMultiQueuedCommand } from '../multi-command' ;
33import { 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' ;
55import { BasicCommandParser } from './parser' ;
66import { Tail } from '../commands/generic-transformers' ;
77
@@ -92,12 +92,10 @@ export default class RedisClientMultiCommand<REPLIES = []> {
9292 const transformReply = getTransformReply ( command , resp ) ;
9393
9494 return function ( this : RedisClientMultiCommand , ...args : Array < unknown > ) {
95- let redisArgs : CommandArguments ;
96-
9795 const parser = new BasicCommandParser ( resp ) ;
9896 command . parseCommand ( parser , ...args ) ;
9997
100- redisArgs = parser . redisArgs ;
98+ const redisArgs : CommandArguments = parser . redisArgs ;
10199 redisArgs . preserve = parser . preserve ;
102100
103101 return this . addCommand (
@@ -111,12 +109,10 @@ export default class RedisClientMultiCommand<REPLIES = []> {
111109 const transformReply = getTransformReply ( command , resp ) ;
112110
113111 return function ( this : { _self : RedisClientMultiCommand } , ...args : Array < unknown > ) {
114- let redisArgs : CommandArguments ;
115-
116112 const parser = new BasicCommandParser ( resp ) ;
117113 command . parseCommand ( parser , ...args ) ;
118114
119- redisArgs = parser . redisArgs ;
115+ const redisArgs : CommandArguments = parser . redisArgs ;
120116 redisArgs . preserve = parser . preserve ;
121117
122118 return this . _self . addCommand (
@@ -131,17 +127,12 @@ export default class RedisClientMultiCommand<REPLIES = []> {
131127 const transformReply = getTransformReply ( fn , resp ) ;
132128
133129 return function ( this : { _self : RedisClientMultiCommand } , ...args : Array < unknown > ) {
134- let fnArgs : CommandArguments ;
135-
136130 const parser = new BasicCommandParser ( resp ) ;
137- parser . pushVariadic ( prefix ) ;
131+ parser . push ( ... prefix ) ;
138132 fn . parseCommand ( parser , ...args ) ;
139133
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 ;
145136
146137 return this . _self . addCommand (
147138 redisArgs ,
@@ -151,20 +142,17 @@ export default class RedisClientMultiCommand<REPLIES = []> {
151142 }
152143
153144 static #createScriptCommand( script : RedisScript , resp : RespVersions ) {
154- const prefix = scriptArgumentsPrefix ( script ) ;
155145 const transformReply = getTransformReply ( script , resp ) ;
156146
157147 return function ( this : RedisClientMultiCommand , ...args : Array < unknown > ) {
158- let redisArgs : CommandArguments ;
159-
160148 const parser = new BasicCommandParser ( resp ) ;
161- parser . pushVariadic ( prefix ) ;
162149 script . parseCommand ( parser , ...args ) ;
163150
164- redisArgs = parser . redisArgs ;
151+ const redisArgs : CommandArguments = parser . redisArgs ;
165152 redisArgs . preserve = parser . preserve ;
166153
167- return this . addCommand (
154+ return this . addScript (
155+ script ,
168156 redisArgs ,
169157 transformReply
170158 ) ;
@@ -213,6 +201,16 @@ export default class RedisClientMultiCommand<REPLIES = []> {
213201 return this ;
214202 }
215203
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+
216214 async exec < T extends MultiReply = MULTI_REPLY [ 'GENERIC' ] > ( execAsPipeline = false ) : Promise < MultiReplyType < T , REPLIES > > {
217215 if ( execAsPipeline ) return this . execAsPipeline < T > ( ) ;
218216
0 commit comments