Skip to Content
🚧 This is WIP documentation for v4 of the plugin. For v3 click here.
ESLGraphQL-ESLint
Rulesalphabetize

alphabetize

🔧 The --fix option on the command line  can automatically fix some of the problems reported by this rule.

  • Category: Schema & Operations
  • Rule name: @graphql-eslint/alphabetize
  • Requires GraphQL Schema: false ℹ️
  • Requires GraphQL Operations: false ℹ️
Enforce arrange in alphabetical order for type fields, enum values, input object fields, operation selections and more.

Usage Examples

Incorrect

# eslint @graphql-eslint/alphabetize: ['error', { fields: ['ObjectTypeDefinition'] }]
 
type User {
  password: String
  firstName: String! # should be before "password"
  age: Int # should be before "firstName"
  lastName: String!
}

Correct

# eslint @graphql-eslint/alphabetize: ['error', { fields: ['ObjectTypeDefinition'] }]
 
type User {
  age: Int
  firstName: String!
  lastName: String!
  password: String
}

Incorrect

# eslint @graphql-eslint/alphabetize: ['error', { values: true }]
 
enum Role {
  SUPER_ADMIN
  ADMIN # should be before "SUPER_ADMIN"
  USER
  GOD # should be before "USER"
}

Correct

# eslint @graphql-eslint/alphabetize: ['error', { values: true }]
 
enum Role {
  ADMIN
  GOD
  SUPER_ADMIN
  USER
}

Incorrect

# eslint @graphql-eslint/alphabetize: ['error', { selections: ['OperationDefinition'] }]
 
query {
  me {
    firstName
    lastName
    email # should be before "lastName"
  }
}

Correct

# eslint @graphql-eslint/alphabetize: ['error', { selections: ['OperationDefinition'] }]
 
query {
  me {
    email
    firstName
    lastName
  }
}

Config Schema

The schema defines the following properties:

fields (array)

Fields of type, interface, and input.

The elements of the array can contain the following enum values:

  • ObjectTypeDefinition
  • InterfaceTypeDefinition
  • InputObjectTypeDefinition

Additional restrictions:

  • Minimum items: 1
  • Unique items: true

values (boolean)

Values of enum.

selections (array)

Selections of fragment and operations query, mutation and subscription.

The elements of the array can contain the following enum values:

  • OperationDefinition
  • FragmentDefinition

Additional restrictions:

  • Minimum items: 1
  • Unique items: true

variables (boolean)

Variables of operations query, mutation and subscription.

arguments (array)

Arguments of fields and directives.

The elements of the array can contain the following enum values:

  • FieldDefinition
  • Field
  • DirectiveDefinition
  • Directive

Additional restrictions:

  • Minimum items: 1
  • Unique items: true

definitions (boolean)

Definitions – type, interface, enum, scalar, input, union and directive.

groups (array)

Order group. Example: ['...', 'id', '*', '{'] where:

  • ... stands for fragment spreads
  • id stands for field with name id
  • * stands for everything else
  • { stands for fields selection set

The object is an array with all elements of the type string.

Additional restrictions:

  • Minimum items: 2
  • Unique items: true

Resources

Last updated on