@@ -165,7 +165,8 @@ adds additional operation types, or additional directives to an existing schema.
165165Schema extensions have the potential to be invalid if incorrectly defined.
166166
1671671 . The Schema must already be defined.
168- 2 . Any non-` repeatable ` directives provided must not already apply to the original Schema.
168+ 2 . Any non-repeatable directives provided must not already apply to the
169+ original Schema.
169170
170171
171172## Descriptions
@@ -544,7 +545,8 @@ GraphQL tool or service which adds directives to an existing scalar.
544545Scalar type extensions have the potential to be invalid if incorrectly defined.
545546
5465471 . The named type must already be defined and must be a Scalar type.
547- 2 . Any non-` repeatable ` directives provided must not already apply to the original Scalar type.
548+ 2 . Any non-repeatable directives provided must not already apply to the
549+ original Scalar type.
548550
549551
550552## Objects
@@ -934,7 +936,8 @@ Object type extensions have the potential to be invalid if incorrectly defined.
934936 may share the same name .
9359373. Any fields of an Object type extension must not be already defined on the
936938 original Object type .
937- 4. Any non -`repeatable ` directives provided must not already apply to the original Object type .
939+ 4. Any non -repeatable directives provided must not already apply to the
940+ original Object type .
9389415. Any interfaces provided must not be already implemented by the original
939942 Object type .
9409436. The resulting extended object type must be a super -set of all interfaces it
@@ -1116,7 +1119,8 @@ Interface type extensions have the potential to be invalid if incorrectly define
111611194. Any Object type which implemented the original Interface type must also be a
11171120 super -set of the fields of the Interface type extension (which may be due to
11181121 Object type extension).
1119- 5. Any non -`repeatable ` directives provided must not already apply to the original Interface type .
1122+ 5. Any non -repeatable directives provided must not already apply to the
1123+ original Interface type .
11201124
11211125
11221126## Unions
@@ -1239,7 +1243,8 @@ Union type extensions have the potential to be invalid if incorrectly defined.
123912433 . All member types of a Union type extension must be unique.
124012444 . All member types of a Union type extension must not already be a member of
12411245 the original Union type.
1242- 5 . Any non-` repeatable ` directives provided must not already apply to the original Union type.
1246+ 5 . Any non-repeatable directives provided must not already apply to the
1247+ original Union type.
12431248
12441249## Enums
12451250
@@ -1308,7 +1313,8 @@ Enum type extensions have the potential to be invalid if incorrectly defined.
130813132 . All values of an Enum type extension must be unique.
130913143 . All values of an Enum type extension must not already be a value of
13101315 the original Enum.
1311- 4 . Any non-` repeatable ` directives provided must not already apply to the original Enum type.
1316+ 4 . Any non-repeatable directives provided must not already apply to the
1317+ original Enum type.
13121318
13131319
13141320## Input Objects
@@ -1437,7 +1443,8 @@ Input object type extensions have the potential to be invalid if incorrectly def
143714433. All fields of an Input Object type extension must have unique names .
143814444. All fields of an Input Object type extension must not already be a field of
14391445 the original Input Object .
1440- 5. Any non -`repeatable ` directives provided must not already apply to the original Input Object type .
1446+ 5. Any non -repeatable directives provided must not already apply to the
1447+ original Input Object type .
14411448
14421449
14431450## List
@@ -1660,21 +1667,6 @@ fragment SomeFragment on SomeType {
16601667}
16611668```
16621669
1663- A directive may be defined as repeatable at any permitted location with the ` repeatable `
1664- keyword. Repeatable directives are often useful when the same directive should be used with
1665- different arguments at a single location, especially in cases where additional information
1666- needs to be provided to a type or schema extension via a directive:
1667-
1668- ``` graphql example
1669- directive @delegateField (name : String ! ) repeatable on OBJECT | INTERFACE
1670-
1671- type Book @delegateField (name : " pageCount" ) @delegateField (name : " author" ) {
1672- id : ID !
1673- }
1674-
1675- extend type Book @delegateField (name : " index" )
1676- ```
1677-
16781670Directive locations may be defined with an optional leading ` | ` character to aid
16791671formatting when representing a longer list of possible locations:
16801672
@@ -1700,12 +1692,31 @@ type SomeType {
17001692}
17011693```
17021694
1695+ A directive may be defined as repeatable by including the "repeatable" keyword .
1696+ Repeatable directives are often useful when the same directive should be used
1697+ with different arguments at a single location , especially in cases where
1698+ additional information needs to be provided to a type or schema extension via
1699+ a directive:
1700+
1701+ ```graphql example
1702+ directive @delegateField (name : String !) repeatable on OBJECT | INTERFACE
1703+
1704+ type Book @delegateField (name : " pageCount" ) @delegateField (name : " author" ) {
1705+ id : ID !
1706+ }
1707+
1708+ extend type Book @delegateField (name : " index" )
1709+ ```
1710+
17031711While defining a directive , it must not reference itself directly or indirectly :
17041712
17051713```graphql counter -example
17061714directive @invalidExample (arg : String @invalidExample ) on ARGUMENT_DEFINITION
17071715```
17081716
1717+ Note : The order in which directives appear may be significant , including
1718+ repeatable directives .
1719+
17091720**Validation **
17101721
171117221. A directive definition must not contain the use of a directive which
0 commit comments