naming-convention
âś… The "extends": "plugin:@graphql-eslint/schema-recommended" and
"plugin:@graphql-eslint/operations-recommended" property in a configuration file enables this
rule.
đź’ˇ This rule provides suggestions
- Category: Schema & Operations
- Rule name: @graphql-eslint/naming-convention
- Requires GraphQL Schema: falseℹ️
- Requires GraphQL Operations: falseℹ️
Require names to follow specified conventions.
Usage Examples
Incorrect
# eslint @graphql-eslint/naming-convention: ['error', { types: 'PascalCase', FieldDefinition: 'camelCase' }]
 
type user {
  first_name: String!
}Incorrect
# eslint @graphql-eslint/naming-convention: ['error', { FragmentDefinition: { style: 'PascalCase', forbiddenSuffixes: ['Fragment'] } }]
 
fragment UserFragment on User {
  # ...
}Incorrect
# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[parent.name.value=Query]': { forbiddenPrefixes: ['get'] } }]
 
type Query {
  getUsers: [User!]!
}Correct
# eslint @graphql-eslint/naming-convention: ['error', { types: 'PascalCase', FieldDefinition: 'camelCase' }]
 
type User {
  firstName: String
}Correct
# eslint @graphql-eslint/naming-convention: ['error', { FragmentDefinition: { style: 'PascalCase', forbiddenSuffixes: ['Fragment'] } }]
 
fragment UserFields on User {
  # ...
}Correct
# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[parent.name.value=Query]': { forbiddenPrefixes: ['get'] } }]
 
type Query {
  users: [User!]!
}Correct
# eslint @graphql-eslint/naming-convention: ['error', { FieldDefinition: { style: 'camelCase', ignorePattern: '^(EAN13|UPC|UK)' } }]
 
type Product {
  EAN13: String
  UPC: String
  UKFlag: String
}Correct
# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[gqlType.name.value=Boolean]': { style: 'camelCase', requiredPrefixes: ['is', 'has'] }, 'FieldDefinition[gqlType.gqlType.name.value=Boolean]': { style: 'camelCase', requiredPrefixes: ['is', 'has'] } }]
 
type Product {
  isBackordered: Boolean
  isNew: Boolean!
  hasDiscount: Boolean!
}Correct
# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[gqlType.gqlType.name.value=SensitiveSecret]': { style: 'camelCase', requiredSuffixes: ['SensitiveSecret'] } }]
 
scalar SensitiveSecret
 
type Account {
  accountSensitiveSecret: SensitiveSecret!
}Config Schema
It’s possible to use a
selectorthat starts with allowedASTNodenames which are described below.Paste or drop code into the editor in ASTExplorer and inspect the generated AST to compose your selector.
Example: pattern property
FieldDefinition[parent.name.value=Query]will match only fields for typeQuery.
The schema defines the following properties:
types
Includes:
- ObjectTypeDefinition
- InterfaceTypeDefinition
- EnumTypeDefinition
- ScalarTypeDefinition
- InputObjectTypeDefinition
- UnionTypeDefinition
The object must be one of the following types:
- asString
- asObject
Argument
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
DirectiveDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
EnumTypeDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
EnumValueDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
FieldDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
FragmentDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
InputObjectTypeDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
InputValueDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
InterfaceTypeDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
ObjectTypeDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
OperationDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
ScalarTypeDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
UnionTypeDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
VariableDefinition
Read more about this kind on spec.graphql.org.
The object must be one of the following types:
- asString
- asObject
allowLeadingUnderscore (boolean)
Default: false
allowTrailingUnderscore (boolean)
Default: false
Sub Schemas
The schema defines the following additional types:
asString (enum)
One of: camelCase, PascalCase, snake_case, UPPER_CASE
asObject (object)
Properties of the asObject object:
style (enum)
This element must be one of the following enum values:
- camelCase
- PascalCase
- snake_case
- UPPER_CASE
prefix (string)
suffix (string)
forbiddenPrefixes (array)
The object is an array with all elements of the type string.
Additional restrictions:
- Minimum items: 1
- Unique items: true
forbiddenSuffixes (array)
The object is an array with all elements of the type string.
Additional restrictions:
- Minimum items: 1
- Unique items: true
requiredPrefixes (array)
The object is an array with all elements of the type string.
Additional restrictions:
- Minimum items: 1
- Unique items: true
requiredSuffixes (array)
The object is an array with all elements of the type string.
Additional restrictions:
- Minimum items: 1
- Unique items: true
ignorePattern (string)
Option to skip validation of some words, e.g. acronyms