@@ -33,20 +33,20 @@ export function duplicateDirectiveMessage(directiveName: string): string {
33
33
export function UniqueDirectivesPerLocation (
34
34
context : ValidationContext | SDLValidationContext ,
35
35
) : ASTVisitor {
36
- const repeatableMap = Object . create ( null ) ;
36
+ const uniqueDirectiveMap = Object . create ( null ) ;
37
37
38
38
const schema = context . getSchema ( ) ;
39
39
const definedDirectives = schema
40
40
? schema . getDirectives ( )
41
41
: specifiedDirectives ;
42
42
for ( const directive of definedDirectives ) {
43
- repeatableMap [ directive . name ] = directive . repeatable ;
43
+ uniqueDirectiveMap [ directive . name ] = ! directive . repeatable ;
44
44
}
45
45
46
46
const astDefinitions = context . getDocument ( ) . definitions ;
47
47
for ( const def of astDefinitions ) {
48
48
if ( def . kind === Kind . DIRECTIVE_DEFINITION ) {
49
- repeatableMap [ def . name . value ] = def . repeatable ;
49
+ uniqueDirectiveMap [ def . name . value ] = ! def . repeatable ;
50
50
}
51
51
}
52
52
@@ -62,21 +62,18 @@ export function UniqueDirectivesPerLocation(
62
62
const knownDirectives = Object . create ( null ) ;
63
63
for ( const directive of directives ) {
64
64
const directiveName = directive . name . value ;
65
- const repeatable = repeatableMap [ directiveName ] ;
66
65
67
- if ( repeatable === undefined || repeatable ) {
68
- continue;
69
- }
70
-
71
- if ( knownDirectives [ directiveName ] ) {
72
- context . reportError (
73
- new GraphQLError ( duplicateDirectiveMessage ( directiveName ) , [
74
- knownDirectives [ directiveName ] ,
75
- directive ,
76
- ] ) ,
77
- ) ;
78
- } else {
79
- knownDirectives [ directiveName ] = directive ;
66
+ if ( uniqueDirectiveMap [ directiveName ] ) {
67
+ if ( knownDirectives [ directiveName ] ) {
68
+ context . reportError (
69
+ new GraphQLError ( duplicateDirectiveMessage ( directiveName ) , [
70
+ knownDirectives [ directiveName ] ,
71
+ directive ,
72
+ ] ) ,
73
+ ) ;
74
+ } else {
75
+ knownDirectives [ directiveName ] = directive ;
76
+ }
80
77
}
81
78
}
82
79
}
0 commit comments