Skip to content

Releases: dimaMachina/graphql-eslint

@graphql-eslint/eslint-plugin@3.1.0

08 Dec 12:45
75e41ed
Compare
Choose a tag to compare

Minor Changes

  • 37c1579: feat: convert fix to suggestions in no-unreachable-types and no-unused-fields rules

Patch Changes

  • 988e445: fix: ignore operations and fragments in no-hashtag-description rule

@graphql-eslint/eslint-plugin@3.0.1

28 Nov 07:43
6a1b6cc
Compare
Choose a tag to compare

Patch Changes

  • 32ec2cb: fix: ignore arguments in require-field-of-type-query-in-mutation-result rule
  • 5a259ce: chore: remove unique-enum-value-names rule from recommended config
  • 36d5334: fix: ignore arguments in no-scalar-result-type-on-mutation rule

@graphql-eslint/eslint-plugin@3.0.0

21 Nov 11:45
7c5e23f
Compare
Choose a tag to compare

Major Changes

  • a69f0be: ❗ BREAKING CHANGE ❗

    Split recommended config to 2 modes: "schema" and "operations".

    This was done in order to use recommended and all configs in schema-only projects where it is not possible to provide operations.

    recommended and all configs were divided to 4 configs:

    • schema-recommended - enables recommended rules for schema (SDL) development
    • schema-all - enables all rules for schema (SDL) development
    • operations-recommended - enables recommended rules for consuming GraphQL (operations) development
    • operations-all - enables all rules for consuming GraphQL (operations) development

    If you are migrating from v2 where recommended was introduced, please change the following:

    {
      "overrides": [
        {
          "files": ["*.js"],
          "processor": "@graphql-eslint/graphql"
        },
        {
          "files": ["*.graphql"],
    -     "extends": "plugin:@graphql-eslint/recommended"
    +     "extends": "plugin:@graphql-eslint/schema-recommended"
        }
      ]
    }

    If you are in a project that develops the GraphQL schema, you'll need schema rules.

    If you are in a project that develops GraphQL operations (query/mutation/subscription), you'll need operations rules.

    If you are in a monorepo project, you probably need both sets of rules.

  • a69f0be: ❗ BREAKING CHANGE ❗

    feat: description-style now have default description style block.

  • a69f0be: ❗ BREAKING CHANGE ❗

    feat: remove query option in no-root-type as it's impossible to have write-only schema.

  • a69f0be: ❗ BREAKING CHANGE ❗

    • rename avoid prefix in rules to no.
    • remove avoid-operation-name-prefix and no-operation-name-suffix

    All rules that had a avoid prefix now have a no prefix.

    Rules avoid-operation-name-prefix and no-operation-name-suffix were removed because the same things can be validated by naming-convention rule.

    Before

    {
      "@graphql-eslint/avoid-operation-name-prefix": [
        "error",
        {
          "keywords": ["Query", "Mutation", "Subscription", "Get"]
        }
      ],
      "@graphql-eslint/no-operation-name-suffix": "error"
    }

    After

    {
      "@graphql-eslint/naming-convention": [
        "error",
        {
          "OperationDefinition": {
            "style": "PascalCase",
            "forbiddenPrefixes": ["Query", "Mutation", "Subscription", "Get"],
            "forbiddenSuffixes": ["Query", "Mutation", "Subscription"]
          }
        }
      ]
    }
  • a69f0be: ❗ BREAKING CHANGE ❗

    feat: add new options for naming-convention rule

    Options for naming-convention are changed. New option types includes the following kinds:

    • ObjectTypeDefinition
    • InterfaceTypeDefinition
    • EnumTypeDefinition
    • ScalarTypeDefinition
    • InputObjectTypeDefinition
    • UnionTypeDefinition

    Added new options:

    • Argument
    • DirectiveDefinition
    • VariableDefinition

    Option QueryDefinition was removed in favor of AST specific selector FieldDefinition[parent.name.value=Query].

    Before

    {
      "@graphql-eslint/naming-convention": [
        "error",
        {
          "ObjectTypeDefinition": "PascalCase",
          "InterfaceTypeDefinition": "PascalCase",
          "EnumTypeDefinition": "PascalCase",
          "ScalarTypeDefinition": "PascalCase",
          "InputObjectTypeDefinition": "PascalCase",
          "UnionTypeDefinition": "PascalCase",
          "FieldDefinition": "camelCase",
          "InputValueDefinition": "camelCase",
          "QueryDefinition": {
            "forbiddenPrefixes": ["get"]
          },
          "leadingUnderscore": "allow",
          "trailingUnderscore": "allow"
        }
      ]
    }

    After

    {
      "@graphql-eslint/naming-convention": [
        "error",
        {
          "types": "PascalCase",
          "FieldDefinition": "camelCase",
          "InputValueDefinition": "camelCase",
          "FieldDefinition[parent.name.value=Query]": {
            "forbiddenPrefixes": ["get"]
          },
          "allowLeadingUnderscore": true,
          "allowTrailingUnderscore": true
        }
      ]
    }
  • a69f0be: ❗ BREAKING CHANGE ❗

    feat: add new options for require-description rule

    Options for require-description are changed. New option types includes the following kinds:

    • ObjectTypeDefinition
    • InterfaceTypeDefinition
    • EnumTypeDefinition
    • ScalarTypeDefinition (new in v3)
    • InputObjectTypeDefinition
    • UnionTypeDefinition

    Before

    {
      "@graphql-eslint/require-description": [
        "error",
        {
          "on": [
            "ObjectTypeDefinition",
            "InterfaceTypeDefinition",
            "EnumTypeDefinition",
            "InputObjectTypeDefinition",
            "UnionTypeDefinition",
            "FieldDefinition",
            "InputValueDefinition",
            "EnumValueDefinition",
            "DirectiveDefinition"
          ]
        }
      ]
    }

    After

    {
      "@graphql-eslint/require-description": [
        "error",
        {
          "types": true,
          "FieldDefinition": true,
          "InputValueDefinition": true,
          "EnumValueDefinition": true,
          "DirectiveDefinition": true
        }
      ]
    }

@graphql-eslint/eslint-plugin@2.5.0

13 Nov 07:11
40401a0
Compare
Choose a tag to compare

Minor Changes

  • 64c302c: feat: add new rule no-root-type
  • c837c99: fix false positive case in no-unreachable-types rule when directive on root schema is used
  • 1914d6a: fix false positive case in known-fragment-names when import nested fragment

Patch Changes

  • 4c29de7: fix: make works graphql-eslint in yarn berry

@graphql-eslint/eslint-plugin@2.4.1

09 Nov 20:04
62cf3ea
Compare
Choose a tag to compare

Patch Changes

  • dc29c27: update graphql-js peer dependency range

@graphql-eslint/eslint-plugin@2.4.0

02 Nov 07:50
4e5fac5
Compare
Choose a tag to compare

Minor Changes

@graphql-eslint/eslint-plugin@2.3.2

31 Oct 15:56
2ef4f2b
Compare
Choose a tag to compare

Patch Changes

  • 86b3709: fix error report for no-unused-fields and no-unreachable-types rule
  • cf3cc4f: fix error report for require-deprecation-reason and require-field-of-type-query-in-mutation-result rule
  • 578b890: fix error report for require-deprecation-date rule
  • ebab010: fix error report for alphabetize rule
  • 7dacfe5: fix error report for avoid-scalar-result-type-on-mutation rule
  • f712780: fix error report for unique-fragment-name and unique-operation-name rule
  • d081fcc: fix error report for selection-set-depth rule and for graphql-js rules
  • 46f03f7: fix error report for description-style rule
  • b36a32c: fix error report for strict-id-in-types and naming-convention rule
  • 7aa8157: fix error report for input-name rule
  • a285de3: fix error report for require-deprecation-reason and require-field-of-type-query-in-mutation-result rule
  • ced6789: fix error report for no-deprecated rule

@graphql-eslint/eslint-plugin@2.3.1

28 Oct 07:56
d133f39
Compare
Choose a tag to compare

Patch Changes

  • 98b6bcb: fix: adjust report location for no-operation-name-suffix rule
  • 1bacedd: fix: adjust report location for no-anonymous-operations rule
  • c42cee5: fix: adjust report location for avoid-typename-prefix rule
  • eb4a851: fix: adjust report location for require-description rule

@graphql-eslint/eslint-plugin@2.3.0

20 Oct 15:11
e118413
Compare
Choose a tag to compare

Minor Changes

  • f2a6635: add new rule require-field-of-type-query-in-mutation-result
  • 44a6c73: fix false negative case for no-undefined-variables rule
  • ed6644b: feat: support ESLint 8
  • f713823: fix false positive case for no-unused-variables rule
  • c7a8b33: add new rule alphabetize

@graphql-eslint/eslint-plugin@2.2.0

20 Sep 06:13
4b01482
Compare
Choose a tag to compare

Minor Changes

  • 1dd2f43: feat: add recommended and all configs
  • 1dd2f43: add new rule require-deprecation-date
  • 1dd2f43: add new rule avoid-scalar-result-type-on-mutation