Linter rulesGraphQLrequire-selections
require-selections
Since 0.9.0
This rule checks that selections of objects with an identifier select it.
Rule Details
Clients such as Apollo Client and Relay cache and update objects by their identifier; an object fetched without it cannot be normalized. The identifier may be selected directly, in inline fragments or in the fragments of the document.
Configuration
The configuration block can be a string, the name of the identifier field, or an object
with the fieldName property. The name is id by default.
version: "1.0"
commands:
lint:
graphql:
rules:
require-selections: [error, uuid]
The rule can be disabled for a node and everything nested in it with an # apigenie-lint-disable require-selections comment on the node, or for a whole file with the comment at the top of the file, separated from the first definition by a blank line. It applies to operations and fragments.
Examples
Good.
query Me { me { id name } }
Bad. The linter reports Field 'me' should select 'id', which identifies its type 'User'.
query Me { me { name } }
Compatibility
The rule checks operations against the schema files named by the schema property of the configuration, or against the type system of their own document. It reports nothing without a schema.