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ℹ️
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', forbiddenPatterns: ['/(^fragment)|(fragment$)/i'] } }]
fragment UserFragment on User {
# ...
}Incorrect
# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[parent.name.value=Query]': { forbiddenPatterns: ['/^get/i'] } }]
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', forbiddenPatterns: ['/(^fragment)|(fragment$)/i'] } }]
fragment UserFields on User {
# ...
}Correct
# eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[parent.name.value=Query]': { forbiddenPatterns: ['/^get/i'] } }]
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', requiredPattern: '/^(is|has)/' }, 'FieldDefinition[gqlType.gqlType.name.value=Boolean]': { style: 'camelCase', requiredPattern: '/^(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', requiredPattern: '/SensitiveSecret$/' } }]
scalar SensitiveSecret
type Account {
accountSensitiveSecret: SensitiveSecret!
}Correct (Relay fragment convention <module_name>_<property_name>)
# eslint @graphql-eslint/naming-convention: ['error', { FragmentDefinition: { style: 'PascalCase', requiredPattern: '/_(?<camelCase>.+?)$/' } }]
# schema
type User {
# ...
}
# operations
fragment UserFields_data on User {
# ...
}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:
ObjectTypeDefinitionInterfaceTypeDefinitionEnumTypeDefinitionScalarTypeDefinitionInputObjectTypeDefinitionUnionTypeDefinition
The object must be one of the following types:
asStringasObject
Argument
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
DirectiveDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
EnumTypeDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
EnumValueDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
FieldDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
FragmentDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
InputObjectTypeDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
InputValueDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
InterfaceTypeDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
ObjectTypeDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
OperationDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
ScalarTypeDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
UnionTypeDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
VariableDefinition
Read more about this kind on spec.graphql.org .
The object must be one of the following types:
asStringasObject
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)
One of: camelCase, PascalCase, snake_case, UPPER_CASE
This element must be one of the following enum values:
camelCasePascalCasesnake_caseUPPER_CASE
prefix (string)
suffix (string)
forbiddenPatterns (array)
Should be of instance of RegEx
The object is an array with all elements of the type object.
The array object has the following properties:
Additional restrictions:
- Minimum items:
1 - Unique items:
true
requiredPattern (object)
Should be of instance of RegEx
forbiddenPrefixes (array)
This option is deprecated and will be removed in the next major release. Use
forbiddenPatterns instead.
The object is an array with all elements of the type string.
Additional restrictions:
- Minimum items:
1 - Unique items:
true
forbiddenSuffixes (array)
This option is deprecated and will be removed in the next major release. Use
forbiddenPatterns instead.
The object is an array with all elements of the type string.
Additional restrictions:
- Minimum items:
1 - Unique items:
true
requiredPrefixes (array)
This option is deprecated and will be removed in the next major release. Use
requiredPattern instead.
The object is an array with all elements of the type string.
Additional restrictions:
- Minimum items:
1 - Unique items:
true
requiredSuffixes (array)
This option is deprecated and will be removed in the next major release. Use
requiredPattern instead.
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