@@ -2174,17 +2174,20 @@ scalar UUID @specifiedBy(url: "https://tools.ietf.org/html/rfc4122")
21742174SchemaCoordinate :
21752175
21762176- TypeCoordinate
2177- - MemberCoordinate
2177+ - FieldCoordinate
21782178- ArgumentCoordinate
2179+ - ValueCoordinate
21792180- DirectiveCoordinate
21802181- DirectiveArgumentCoordinate
21812182
21822183TypeCoordinate : Name
21832184
2184- MemberCoordinate : Name . Name
2185+ FieldCoordinate : Name . Name
21852186
21862187ArgumentCoordinate : Name . Name ( Name : )
21872188
2189+ ValueCoordinate : Name :: Name
2190+
21882191DirectiveCoordinate : @ Name
21892192
21902193DirectiveArgumentCoordinate : @ Name ( Name : )
@@ -2195,6 +2198,16 @@ _schema element_ within a GraphQL Schema.
21952198:: A _schema element_ can be a named type , a field , an input field , an enum
21962199value , a field argument , a directive , or a directive argument .
21972200
2201+ :: The _containing element_ of a _schema element_ is the schema element with one
2202+ fewer {Name } token that syntactically contains it . For example :
2203+
2204+ - The containing element of an {ArgumentCoordinate } or
2205+ {DirectiveArgumentCoordinate } is the corresponding {FieldCoordinate } or
2206+ {DirectiveCoordinate } respectively .
2207+ - The containing element of a {FieldCoordinate } or {ValueCoordinate } is its
2208+ containing {TypeCoordinate }.
2209+ - {TypeCoordinate } and {DirectiveCoordinate } have no containing element .
2210+
21982211A _schema coordinate_ is always unique . Each _schema element_ can be referenced
21992212by exactly one possible schema coordinate .
22002213
@@ -2220,31 +2233,27 @@ production.
22202233To refer to a _schema element_ , a _schema coordinate_ must be interpreted in the
22212234context of a GraphQL {schema }.
22222235
2223- If the _schema element_ cannot be found , the resolve function will not yield a
2224- value (without raising an error). However , an error will be raised if any
2225- non - leaf nodes within a _schema coordinate_ cannot be found in the { schema } .
2236+ If the _schema element_ cannot be found , and either it has no _containing
2237+ element_ or its _containing element_ exists and is of the expected type , the
2238+ resolve function returns { null }. Otherwise , an error is raised .
22262239
22272240TypeCoordinate : Name
22282241
222922421. Let {typeName } be the value of {Name }.
223022432. Return the type in the {schema } named {typeName }, or {null } if no such type
22312244 exists .
22322245
2233- MemberCoordinate : Name . Name
2246+ FieldCoordinate : Name . Name
22342247
223522481. Let {typeName } be the value of the first {Name }.
223622492. Let {type } be the type in the {schema } named {typeName }.
2237- 3. Assert : {type } must exist , and must be an Enum , Input Object , Object or
2238- Interface type .
2239- 4. If {type } is an Enum type :
2240- 1. Let {enumValueName } be the value of the second {Name }.
2241- 2. Return the enum value of {type } named {enumValueName }, or {null } if no
2242- such value exists .
2243- 5. Otherwise , if {type } is an Input Object type :
2250+ 3. Assert : {type } must exist , and must be an Input Object , Object or Interface
2251+ type .
2252+ 4. If {type } is an Input Object type :
22442253 1. Let {inputFieldName } be the value of the second {Name }.
22452254 2. Return the input field of {type } named {inputFieldName }, or {null } if no
22462255 such input field exists .
2247- 6 . Otherwise :
2256+ 5 . Otherwise :
22482257 1. Let {fieldName } be the value of the second {Name }.
22492258 2. Return the field of {type } named {fieldName }, or {null } if no such field
22502259 exists .
@@ -2261,6 +2270,15 @@ ArgumentCoordinate : Name . Name ( Name : )
226122708. Return the argument of {field } named {fieldArgumentName }, or {null } if no
22622271 such argument exists .
22632272
2273+ ValueCoordinate : Name :: Name
2274+
2275+ 1. Let {typeName } be the value of the first {Name }.
2276+ 2. Let {type } be the type in the {schema } named {typeName }.
2277+ 3. Assert : {type } must exist , and must be an Enum type .
2278+ 4. Let {enumValueName } be the value of the second {Name }.
2279+ 5. Return the enum value of {type } named {enumValueName }, or {null } if no such
2280+ value exists .
2281+
22642282DirectiveCoordinate : @ Name
22652283
226622841. Let {directiveName } be the value of {Name }.
@@ -2283,8 +2301,8 @@ DirectiveArgumentCoordinate : @ Name ( Name : )
22832301| Named Type | `Business ` | `Business ` type |
22842302| Field | `Business .name ` | `name ` field on the `Business ` type |
22852303| Input Field | `SearchCriteria .filter ` | `filter ` input field on the `SearchCriteria ` input object type |
2286- | Enum Value | `SearchFilter .OPEN_NOW ` | `OPEN_NOW ` value of the `SearchFilter ` enum |
22872304| Field Argument | `Query .searchBusiness (criteria :)` | `criteria ` argument on the `searchBusiness ` field on the `Query ` type |
2305+ | Enum Value | `SearchFilter ::OPEN_NOW ` | `OPEN_NOW ` value of the `SearchFilter ` enum |
22882306| Directive | `@private ` | `@private ` directive |
22892307| Directive Argument | `@private (scope :)` | `scope ` argument on the `@private ` directive |
22902308
0 commit comments