...
1 package validator
2
3 import (
4 "github.com/vektah/gqlparser/v2/ast"
5
6
7 . "github.com/vektah/gqlparser/v2/validator"
8 )
9
10 func init() {
11 AddRule("NoUnusedFragments", func(observers *Events, addError AddErrFunc) {
12
13 inFragmentDefinition := false
14 fragmentNameUsed := make(map[string]bool)
15
16 observers.OnFragmentSpread(func(walker *Walker, fragmentSpread *ast.FragmentSpread) {
17 if !inFragmentDefinition {
18 fragmentNameUsed[fragmentSpread.Name] = true
19 }
20 })
21
22 observers.OnFragment(func(walker *Walker, fragment *ast.FragmentDefinition) {
23 inFragmentDefinition = true
24 if !fragmentNameUsed[fragment.Name] {
25 addError(
26 Message(`Fragment "%s" is never used.`, fragment.Name),
27 At(fragment.Position),
28 )
29 }
30 })
31 })
32 }
33
View as plain text