3 releases

0.1.3 Apr 26, 2024
0.1.2 Apr 26, 2024
0.1.1 Apr 26, 2024
0.1.0 Apr 26, 2024

#1458 in Database interfaces

Download history 17/week @ 2024-11-13 38/week @ 2024-11-20 14/week @ 2024-11-27 25/week @ 2024-12-04 39/week @ 2024-12-11 13/week @ 2024-12-18 11/week @ 2025-01-15 9/week @ 2025-01-22 45/week @ 2025-01-29 36/week @ 2025-02-05 8/week @ 2025-02-12 50/week @ 2025-02-19 14/week @ 2025-02-26

110 downloads per month
Used in gqlint

Apache-2.0

30KB
609 lines

graphql-lint

A Rust based linter for GraphQL SDL schemas.

graphql-lint is used in the Grafbase Platform and CLI.

Currently Supported Lints

  • Naming conventions
    • Types: PascalCase
      • Forbidden prefixes: "Type"
      • Forbidden suffixes: "Type"
    • Fields: camelCase
    • Input values: camelCase
    • Arguments: camelCase
    • Directives: camelCase
    • Enums: PascalCase
      • Forbidden prefixes: "Enum"
      • Forbidden suffixes: "Enum"
    • Unions
      • Forbidden prefixes: "Union"
      • Forbidden suffixes: "Union"
    • Enum values: SCREAMING_SNAKE_CASE
    • Interfaces
      • Forbidden prefixes: "Interface"
      • Forbidden suffixes: "Interface"
    • Query fields
      • Forbidden prefixes: ["query", "get", "list"]
      • Forbidden suffixes: "Query"
    • Mutation fields
      • Forbidden prefixes: ["mutation", "put", "post", "patch"]
      • Forbidden suffixes: "Mutation"
    • Subscription fields
      • Forbidden prefixes: "subscription"
      • Forbidden suffixes: "Subscription"
  • Usage of the @deprecated directive requires specifying the reason argument

Usage

[dependencies]
graphql-lint = "0.1.3"
use graphql_lint::lint;

fn main () {
    let schema = r#"
        type Query {
          hello: String!
        }
    "#;

    let violations = lint(schema).unwrap();
}

Dependencies

~4.5MB
~65K SLoC