@@ -111,9 +111,93 @@ export function compileOperation(
111111
112112 // Validate query parameters
113113 const queryParameters = ( operation . parameters ?? [ ] ) . filter (
114- ( parameter ) => compiler . resolveMaybeRef ( parameter ) . in === 'path ' ,
114+ ( parameter ) => compiler . resolveMaybeRef ( parameter ) . in === 'query ' ,
115115 ) ;
116- queryParameters . forEach ( ( parameter ) => { } ) ;
116+ queryParameters . forEach ( ( refParameter , index ) => {
117+ const parameter = compiler . resolveMaybeRef ( refParameter ) ;
118+ const paramValueIdentifier = builders . identifier ( `queryParam${ index } ` ) ;
119+ const resultIdentifier = builders . identifier ( `queryParamResult${ index } ` ) ;
120+ const schemaFn = compileValueSchema ( compiler , parameter . schema ) ;
121+
122+ // Assign the query parameter to a variable
123+ nodes . push (
124+ builders . variableDeclaration ( 'const' , [
125+ builders . variableDeclarator (
126+ paramValueIdentifier ,
127+ builders . memberExpression (
128+ builders . memberExpression (
129+ requestIdentifier ,
130+ builders . identifier ( 'query' ) ,
131+ ) ,
132+ builders . literal ( parameter . name ) ,
133+ true ,
134+ ) ,
135+ ) ,
136+ ] ) ,
137+ ) ;
138+
139+ nodes . push (
140+ builders . ifStatement (
141+ builders . binaryExpression (
142+ '===' ,
143+ paramValueIdentifier ,
144+ builders . identifier ( 'undefined' ) ,
145+ ) ,
146+ builders . blockStatement (
147+ parameter . required
148+ ? [
149+ builders . returnStatement (
150+ buildRequestError (
151+ 400 ,
152+ `query parameter ${ parameter . name } is required` ,
153+ ) ,
154+ ) ,
155+ ]
156+ : [ ] ,
157+ ) ,
158+ builders . blockStatement ( [
159+ // Validate the value
160+ builders . variableDeclaration ( 'const' , [
161+ builders . variableDeclarator (
162+ resultIdentifier ,
163+ builders . callExpression ( schemaFn , [
164+ builders . arrayExpression ( [
165+ builders . literal ( 'query' ) ,
166+ builders . literal ( parameter . name ) ,
167+ ] ) ,
168+ paramValueIdentifier ,
169+ contextIdentifier ,
170+ ] ) ,
171+ ) ,
172+ ] ) ,
173+ // Fail if error
174+ builders . ifStatement (
175+ builders . binaryExpression (
176+ 'instanceof' ,
177+ resultIdentifier ,
178+ ValidationErrorIdentifier ,
179+ ) ,
180+ builders . blockStatement ( [ builders . returnStatement ( resultIdentifier ) ] ) ,
181+ ) ,
182+ // Otherwise assign the value
183+ builders . expressionStatement (
184+ builders . assignmentExpression (
185+ '=' ,
186+ builders . memberExpression (
187+ builders . memberExpression (
188+ requestIdentifier ,
189+ builders . identifier ( 'query' ) ,
190+ ) ,
191+ builders . literal ( parameter . name ) ,
192+ true ,
193+ ) ,
194+ resultIdentifier ,
195+ ) ,
196+ ) ,
197+ ] ) ,
198+ ) ,
199+ ) ;
200+ } ) ;
117201
118202 // Validate the body against the schema
119203 if ( operation . requestBody ) {
0 commit comments