@@ -324,6 +324,13 @@ export const findAlias = (type: string, body: string, depth = 0) => {
324
324
return aliases
325
325
}
326
326
327
+ const accessor = < T extends string , P extends string > ( parent : T , prop : P ) =>
328
+ [
329
+ parent + '.' + prop ,
330
+ parent + '["' + prop + '"]' ,
331
+ parent + "['" + prop + "']"
332
+ ] as const
333
+
327
334
export const extractMainParameter = ( parameter : string ) => {
328
335
if ( ! parameter ) return
329
336
@@ -357,6 +364,8 @@ export const inferBodyReference = (
357
364
code . includes ( alias + "['" + type + "']" )
358
365
359
366
for ( let alias of aliases ) {
367
+ if ( ! alias ) continue
368
+
360
369
if ( alias . charCodeAt ( 0 ) === 123 ) {
361
370
alias = retrieveRootParamters ( alias )
362
371
@@ -391,7 +400,18 @@ export const inferBodyReference = (
391
400
392
401
if ( ! inference . query && access ( 'query' , alias ) ) inference . query = true
393
402
394
- if ( inference . query )
403
+ if (
404
+ [ 'return' ] . some ( ( type ) =>
405
+ accessor ( type + ' ' + alias , 'query' ) . some ( ( key ) =>
406
+ code . includes ( key )
407
+ )
408
+ )
409
+ ) {
410
+ inference . query = true
411
+ inference . unknownQueries = true
412
+ }
413
+
414
+ if ( inference . query && ! inference . unknownQueries )
395
415
while ( true ) {
396
416
let keyword = alias + '.'
397
417
if ( code . includes ( keyword + 'query' ) ) keyword = alias + '.query'
@@ -677,6 +697,19 @@ export const sucrose = (
677
697
inferBodyReference ( body , aliases , inference )
678
698
}
679
699
700
+ const context = rootParameters || mainParameter
701
+ if (
702
+ context &&
703
+ [ '' , 'return ' ] . some ( ( type ) =>
704
+ accessor ( type + context , 'query' ) . some ( ( key ) =>
705
+ body . includes ( key )
706
+ )
707
+ )
708
+ ) {
709
+ inference . query = true
710
+ inference . unknownQueries = true
711
+ }
712
+
680
713
if ( inference . query ) {
681
714
inferBodyReference ( body , [ 'query' ] , inference )
682
715
0 commit comments