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
selector
that starts with allowedASTNode
names 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)
One of: camelCase
, PascalCase
, snake_case
, UPPER_CASE
This element must be one of the following enum values:
camelCase
PascalCase
snake_case
UPPER_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