@@ -467,24 +467,25 @@ function fragmentDefinition(): ast.FragmentDefinitionNode {
467
467
} ;
468
468
}
469
469
470
- function document ( input : string , noLoc : boolean ) : ast . DocumentNode {
471
- ignored ( ) ;
472
- const definitions : ast . ExecutableDefinitionNode [ ] = [ ] ;
470
+ function definitions ( ) : ast . DefinitionNode [ ] {
471
+ const _definitions : ast . ExecutableDefinitionNode [ ] = [ ] ;
473
472
do {
474
473
if ( input . charCodeAt ( idx ) === 123 /*'{'*/ ) {
475
- definitions . push ( {
474
+ idx ++ ;
475
+ ignored ( ) ;
476
+ _definitions . push ( {
476
477
kind : 'OperationDefinition' as Kind . OPERATION_DEFINITION ,
477
478
operation : 'query' as OperationTypeNode . QUERY ,
478
479
name : undefined ,
479
480
variableDefinitions : undefined ,
480
481
directives : undefined ,
481
- selectionSet : selectionSetStart ( ) ,
482
+ selectionSet : selectionSet ( ) ,
482
483
} ) ;
483
484
} else {
484
485
const definition = name ( ) ;
485
486
switch ( definition ) {
486
487
case 'fragment' :
487
- definitions . push ( fragmentDefinition ( ) ) ;
488
+ _definitions . push ( fragmentDefinition ( ) ) ;
488
489
break ;
489
490
case 'query' :
490
491
case 'mutation' :
@@ -498,7 +499,7 @@ function document(input: string, noLoc: boolean): ast.DocumentNode {
498
499
) {
499
500
name = nameNode ( ) ;
500
501
}
501
- definitions . push ( {
502
+ _definitions . push ( {
502
503
kind : 'OperationDefinition' as Kind . OPERATION_DEFINITION ,
503
504
operation : definition as OperationTypeNode ,
504
505
name,
@@ -512,41 +513,7 @@ function document(input: string, noLoc: boolean): ast.DocumentNode {
512
513
}
513
514
}
514
515
} while ( idx < input . length ) ;
515
-
516
- if ( ! noLoc ) {
517
- let loc : Location | undefined ;
518
- return {
519
- kind : 'Document' as Kind . DOCUMENT ,
520
- definitions,
521
- /* v8 ignore start */
522
- set loc ( _loc : Location ) {
523
- loc = _loc ;
524
- } ,
525
- /* v8 ignore stop */
526
- // @ts -ignore
527
- get loc ( ) {
528
- if ( ! loc ) {
529
- loc = {
530
- start : 0 ,
531
- end : input . length ,
532
- startToken : undefined ,
533
- endToken : undefined ,
534
- source : {
535
- body : input ,
536
- name : 'graphql.web' ,
537
- locationOffset : { line : 1 , column : 1 } ,
538
- } ,
539
- } ;
540
- }
541
- return loc ;
542
- } ,
543
- } ;
544
- }
545
-
546
- return {
547
- kind : 'Document' as Kind . DOCUMENT ,
548
- definitions,
549
- } ;
516
+ return _definitions ;
550
517
}
551
518
552
519
type ParseOptions = {
@@ -559,7 +526,29 @@ export function parse(
559
526
) : ast . DocumentNode {
560
527
input = string . body ? string . body : string ;
561
528
idx = 0 ;
562
- return document ( input , options && options . noLocation ) ;
529
+ ignored ( ) ;
530
+ if ( options && options . noLocation ) {
531
+ return {
532
+ kind : 'Document' as Kind . DOCUMENT ,
533
+ definitions : definitions ( ) ,
534
+ } ;
535
+ } else {
536
+ return {
537
+ kind : 'Document' as Kind . DOCUMENT ,
538
+ definitions : definitions ( ) ,
539
+ loc : {
540
+ start : 0 ,
541
+ end : input . length ,
542
+ startToken : undefined ,
543
+ endToken : undefined ,
544
+ source : {
545
+ body : input ,
546
+ name : 'graphql.web' ,
547
+ locationOffset : { line : 1 , column : 1 } ,
548
+ } ,
549
+ } ,
550
+ } as Location ;
551
+ }
563
552
}
564
553
565
554
export function parseValue (
0 commit comments