@@ -37,7 +37,6 @@ class SafeActionClient<const ServerError, const Ctx = null, const Metadata = nul
37
37
> ;
38
38
39
39
#middlewareFns: MiddlewareFn < ServerError , any , any , Metadata > [ ] ;
40
- #metadata = null as Metadata ;
41
40
42
41
constructor (
43
42
opts : { middlewareFns : MiddlewareFn < ServerError , any , any , Metadata > [ ] } & Omit <
@@ -84,33 +83,43 @@ class SafeActionClient<const ServerError, const Ctx = null, const Metadata = nul
84
83
* @returns {Function } Define a new action
85
84
*/
86
85
public metadata ( data : Metadata ) {
87
- this . #metadata = data ;
88
-
89
86
return {
90
87
schema : < const S extends Schema | undefined = undefined , const FVE = ValidationErrors < S > > (
91
88
schema ?: S ,
92
89
utils ?: {
93
90
formatValidationErrors ?: FormatValidationErrorsFn < S , FVE > ;
94
91
}
95
- ) => this . schema < S , FVE , Metadata > ( schema , utils ) ,
92
+ ) =>
93
+ this . #schema< S , FVE , Metadata > ( {
94
+ schema,
95
+ formatValidationErrors : utils ?. formatValidationErrors ,
96
+ metadata : data ,
97
+ } ) ,
96
98
} ;
97
99
}
98
-
99
100
/**
100
101
* Pass an input schema to define safe action arguments.
101
102
* @param schema An input schema supported by [TypeSchema](https://typeschema.com/#coverage).
102
103
* @returns {Function } The `define` function, which is used to define a new safe action.
103
104
*/
104
- public schema <
105
- const S extends Schema | undefined = undefined ,
106
- const FVE = ValidationErrors < S > ,
107
- const MD = null ,
108
- > (
105
+ public schema < const S extends Schema | undefined = undefined , const FVE = ValidationErrors < S > > (
109
106
schema ?: S ,
110
107
utils ?: {
111
108
formatValidationErrors ?: FormatValidationErrorsFn < S , FVE > ;
112
109
}
113
110
) {
111
+ return this . #schema< S , FVE , null > ( {
112
+ schema,
113
+ formatValidationErrors : utils ?. formatValidationErrors ,
114
+ metadata : null ,
115
+ } ) ;
116
+ }
117
+
118
+ #schema<
119
+ const S extends Schema | undefined = undefined ,
120
+ const FVE = ValidationErrors < S > ,
121
+ const MD = null ,
122
+ > ( args : { schema ?: S ; formatValidationErrors ?: FormatValidationErrorsFn < S , FVE > ; metadata : MD } ) {
114
123
return {
115
124
bindArgsSchemas : <
116
125
const BAS extends readonly Schema [ ] ,
@@ -122,17 +131,19 @@ class SafeActionClient<const ServerError, const Ctx = null, const Metadata = nul
122
131
}
123
132
) =>
124
133
this . #bindArgsSchemas< S , BAS , FVE , FBAVE , MD > ( {
125
- mainSchema : schema ,
134
+ mainSchema : args . schema ,
126
135
bindArgsSchemas,
127
- formatValidationErrors : utils ? .formatValidationErrors ,
136
+ formatValidationErrors : args . formatValidationErrors ,
128
137
formatBindArgsValidationErrors : bindArgsUtils ?. formatBindArgsValidationErrors ,
138
+ metadata : args . metadata ,
129
139
} ) ,
130
140
action : < const Data = null > ( serverCodeFn : ServerCodeFn < S , [ ] , Data , Ctx , MD > ) =>
131
141
this . #action( {
132
- schema,
142
+ schema : args . schema ,
133
143
bindArgsSchemas : [ ] ,
134
144
serverCodeFn,
135
- formatValidationErrors : utils ?. formatValidationErrors ,
145
+ formatValidationErrors : args . formatValidationErrors ,
146
+ metadata : args . metadata ,
136
147
} ) ,
137
148
} ;
138
149
}
@@ -148,6 +159,7 @@ class SafeActionClient<const ServerError, const Ctx = null, const Metadata = nul
148
159
bindArgsSchemas : BAS ;
149
160
formatValidationErrors ?: FormatValidationErrorsFn < S , FVE > ;
150
161
formatBindArgsValidationErrors ?: FormatBindArgsValidationErrorsFn < BAS , FBAVE > ;
162
+ metadata : MD ;
151
163
} ) {
152
164
return {
153
165
action : < const Data = null > ( serverCodeFn : ServerCodeFn < S , BAS , Data , Ctx , MD > ) =>
@@ -157,6 +169,7 @@ class SafeActionClient<const ServerError, const Ctx = null, const Metadata = nul
157
169
serverCodeFn,
158
170
formatValidationErrors : args . formatValidationErrors ,
159
171
formatBindArgsValidationErrors : args . formatBindArgsValidationErrors ,
172
+ metadata : args . metadata ,
160
173
} ) ,
161
174
} ;
162
175
}
@@ -179,6 +192,7 @@ class SafeActionClient<const ServerError, const Ctx = null, const Metadata = nul
179
192
serverCodeFn : ServerCodeFn < S , BAS , Data , Ctx , MD > ;
180
193
formatValidationErrors ?: FormatValidationErrorsFn < S , FVE > ;
181
194
formatBindArgsValidationErrors ?: FormatBindArgsValidationErrorsFn < BAS , FBAVE > ;
195
+ metadata : MD ;
182
196
} ) : SafeActionFn < ServerError , S , BAS , FVE , FBAVE , Data > {
183
197
return async ( ...clientInputs ) => {
184
198
let prevCtx : any = null ;
@@ -205,7 +219,7 @@ class SafeActionClient<const ServerError, const Ctx = null, const Metadata = nul
205
219
clientInput : clientInputs . at ( - 1 ) , // pass raw client input
206
220
bindArgsClientInputs : args . bindArgsSchemas . length ? clientInputs . slice ( 0 , - 1 ) : [ ] ,
207
221
ctx : prevCtx ,
208
- metadata : this . # metadata,
222
+ metadata : args . metadata as Metadata | null ,
209
223
next : async ( { ctx } ) => {
210
224
prevCtx = ctx ;
211
225
await executeMiddlewareChain ( idx + 1 ) ;
@@ -285,7 +299,7 @@ class SafeActionClient<const ServerError, const Ctx = null, const Metadata = nul
285
299
parsedInput : parsedInputDatas . at ( - 1 ) as S extends Schema ? Infer < S > : undefined ,
286
300
bindArgsParsedInputs : parsedInputDatas . slice ( 0 , - 1 ) as InferArray < BAS > ,
287
301
ctx : prevCtx ,
288
- metadata : this . # metadata as any as MD ,
302
+ metadata : args . metadata ,
289
303
} ) ) ?? null ;
290
304
291
305
middlewareResult . success = true ;
0 commit comments