Skip to content
🕵️‍♀️ Tooling for GraphQL. Compare schemas, validate documents, find breaking changes, find similar types, schema coverage
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
.vscode GUI (#15) Dec 3, 2018
actions fix(deps): update dependency actions-toolkit to v2.1.0 (#288) May 21, 2019
assets Beautiful readme (#42) Jan 6, 2019
docs docs: wrong command in `introspect` secion (#280) May 15, 2019
example docs: wrong command in `introspect` secion (#280) May 15, 2019
functions Use handler export (#48) Jan 6, 2019
packages chore(deps): update dependency graphql to v14.3.1 (#303) May 24, 2019
scripts Github - improve a bit (#67) Jan 25, 2019
website chore(deps): update dependency graphql to v14.3.1 (#303) May 24, 2019
.dockerignore Github Actions and v0.7.0 (#39) Jan 4, 2019
.editorconfig Setup Nov 16, 2018
.gitignore Added diff support for arrays and objects (#95) Mar 10, 2019
.npmrc Init Nov 15, 2018
.prettierignore @graphql-inspector organization (#14) Nov 23, 2018
.prettierrc
CHANGELOG.md Release v1.19.0 (#304) May 24, 2019
Dockerfile Release v1.19.0 (#304) May 24, 2019
LICENSE License Nov 16, 2018
README.md Remove `head/` also from READMEs (#110) Mar 27, 2019
app.js
entrypoint.sh Github Actions and v0.7.0 (#39) Jan 4, 2019
jest.config.js New optional argument or input field is dangerous + tests (#147) Mar 29, 2019
lerna.json Release v1.19.0 (#304) May 24, 2019
netlify.toml Live editor (#81) Feb 1, 2019
package.json fix(deps): update dependency netlify-lambda to v1.4.13 (#301) May 23, 2019
renovate.json Add label after PR was merged (#155) Mar 29, 2019
yarn.lock chore(deps): update dependency graphql to v14.3.1 (#303) May 24, 2019

README.md

GraphQL Inspector

npm version code style: prettier renovate-app badge Join the community on Spectrum

GraphQL Inspector ouputs a list of changes between two GraphQL schemas. Every change is precisely explained and marked as breaking, non-breaking or dangerous. It helps you validate documents and fragments against a schema and even find similar or duplicated types.

GraphQL Inspector

Features

Major features:

  • Compares schemas
  • Finds breaking or dangerous changes
  • Validates documents against a schema
  • Finds similar / duplicated types
  • Schema coverage based on documents
  • Serves a GraphQL server with faked data and GraphQL Playground
  • Github Bot
  • Github Actions

GraphQL Inspector has a CLI and also a programatic API, so you can use it however you want to and even build tools on top of it.

Example

Installation

# CLI
yarn add @graphql-inspector/cli

# Core API for programatic usage
yarn add @graphql-inspector/core

Compare schemas

Compares schemas and finds breaking or dangerous changes.

CLI:

$ graphql-inspector diff OLD_SCHEMA NEW_SCHEMA

API:

import {diff, Change} from '@graphql-inspector/core';

const changes: Change[] = diff(schemaA, schemaB);

Diff

Find similar types

Finds similar / duplicated types.

CLI:

$ graphql-inspector similar SCHEMA

API:

import {similar, SimilarMap} from '@graphql-inspector/core';

const similar: SimilarMap = similar(schema, typename, threshold);

Similar

Check coverage

Schema coverage based on documents. Find out how many times types and fields are used in your application.

CLI:

$ graphql-inspector coverage DOCUMENTS SCHEMA

API:

import {coverage, SchemaCoverage} from '@graphql-inspector/core';

const schemaCoverage: SchemaCoverage = coverage(schema, documents);

Coverage

Validate documents

Validates documents against a schema and looks for deprecated usage.

CLI:

$ graphql-inspector validate DOCUMENTS SCHEMA

API:

import {validate, InvalidDocument} from '@graphql-inspector/core';

const invalid: InvalidDocument[] = validate(documentsGlob, schema);

Validate

Serve faked GraphQL API

Serves a GraphQL server with faked data and GraphQL Playground

CLI:

$ graphql-inspector serve SCHEMA
✅ Serving the GraphQL API on http://localhost:4000/

Introspect GraphQL server

Introspects a GraphQL Server and writes the result to a file

CLI:

$ graphql-inspector introspect SCHEMA --write schema.json
✅ Introspection result saved to schema.json

Github Bot and Github Actions

Have a per-repository, self-hosted GraphQL Inspector service or deploy it with Docker.

# install
yarn global add @graphql-inspector/actions

# use

$ graphql-inspector-github
{
  "name": "app",
  "scripts": {
    "precommit": "graphql-inspector introspect schema.js --write schema.graphql && git add schema.graphql"
  },
  "graphql-inspector": {
    "diff": true,
    "schema": {
      "ref": "master",
      "path": "schema.graphql"
    }
  }
}

Get Github annotations in your PRs.

Github

CLI in more details

SCHEMA

Path to a CommonJS or ES Module that exports an object

Example:

graphql-inspector coverage ./src/schema.js

Example with TypeScript:

graphql-inspector coverage ./src/schema.ts --require ts-node/register
// String
export default `
  type Query {
    hello: String
  }
`

// GraphQLSchema
export default makeExecutableSchema({...});

// GraphQL Document
export default gql`
  type Query {
    hello: String
  }
`

// IntrospectionQuery result
export default {
  data: {
    __schema: {
      ...
    }
  }
}

Pointer to a Github repository

Example:

graphql-inspector coverage github:kamilkisiela/graphql-inspector-example#master:schema.graphql

Pattern:

github:owner/name#ref:path/to/file

GraphQL File

Example:

graphql-inspector coverage schema.graphql
graphql-inspector coverage schema.gql

JSON File

Example:

graphql-inspector coverage introspected-schema.json

URL to a GraphQL endpoint

Example:

graphql-inspector coverage https://localhost:3000/graphql

DOCUMENTS

Glob pattern

Example:

graphql-inspector validate ./src/**/*.{js,jsx,tsx,graphql} https://localhost:3000/graphql

Supports TypeScript, JavaScript and GraphQL Files (Extensions: ts,tsx,js,jsx,graphql,gql,graphqls).

Help

Find out what the CLI is capable of:

graphql-inspector --help
graphql-inspector similar --help

Related

Some part of the library was ported to NodeJS from Ruby's GraphQL Schema Comparator

License

MIT © Kamil Kisiela

You can’t perform that action at this time.