Skip to content

jakubfiala/graphql-json-schema

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

graphql-json-schema

Converts GraphQL Schema Language to JSON Schema

Installation

npm install graphql-json-schema

Usage

 const transform = require('graphql-json-schema'); const schema = transform(`  scalar Foo   union MyUnion = Foo | String | Float   enum MyEnum {  FIRST_ITEM  SECOND_ITEM  THIRD_ITEM  }   type Stuff {  my_field: Int  req_field: String!  recursion: MoreStuff  custom_scalar: Foo  enum: MyEnum  }   type MoreStuff {  first: [Float]  identifier: [ID]!  reference: Stuff!  bool: Boolean!  union: MyUnion  with_params(param1: Int, param2: [Float]): Int  }   input InputType {  an_int: Int!  a_string: String  }  `); console.log(schema);

the code above prints the following JSON as a plain JS object:

{ "$schema": "http://json-schema.org/draft-04/schema#", "definitions": { "Foo": { "title": "Foo", "type": "GRAPHQL_SCALAR" }, "MyUnion": { "title": "MyUnion", "type": "GRAPHQL_UNION", "oneOf": [ { "$ref": "#/definitions/Foo" }, { "type": "string", "required": false }, { "type": "number", "required": false } ] }, "MyEnum": { "title": "MyEnum", "type": "GRAPHQL_ENUM", "enum": [ "FIRST_ITEM", "SECOND_ITEM", "THIRD_ITEM" ] }, "Stuff": { "title": "Stuff", "type": "object", "properties": { "my_field": { "type": "integer", "required": false, "title": "my_field", "arguments": [] }, "req_field": { "type": "string", "required": true, "title": "req_field", "arguments": [] }, "recursion": { "allOf": [ { "$ref": "#/definitions/MoreStuff" }, { "title": "recursion" } ] }, "custom_scalar": { "allOf": [ { "$ref": "#/definitions/Foo" }, { "title": "custom_scalar" } ] }, "enum": { "allOf": [ { "$ref": "#/definitions/MyEnum" }, { "title": "enum" } ] } }, "required": [ "req_field" ] }, "MoreStuff": { "title": "MoreStuff", "type": "object", "properties": { "first": { "type": "array", "items": { "type": { "type": "number", "required": false } }, "title": "first", "arguments": [] }, "identifier": { "type": "array", "items": { "type": { "type": "string", "required": false } }, "required": true, "title": "identifier", "arguments": [] }, "reference": { "allOf": [ { "$ref": "#/definitions/Stuff", "required": true }, { "title": "reference" } ] }, "bool": { "type": "boolean", "required": true, "title": "bool", "arguments": [] }, "union": { "allOf": [ { "$ref": "#/definitions/MyUnion" }, { "title": "union" } ] }, "with_params": { "type": "integer", "required": false, "title": "with_params", "arguments": [ { "title": "param1", "type": { "type": "integer", "required": false }, "defaultValue": null }, { "title": "param2", "type": { "type": "array", "items": { "type": { "type": "number", "required": false } } }, "defaultValue": null } ] } }, "required": [ "identifier", "bool" ] }, "InputType": { "title": "InputType", "type": "object", "input": true, "properties": { "an_int": { "type": "integer", "required": true, "title": "an_int" }, "a_string": { "type": "string", "required": false, "title": "a_string" } }, "required": [ "an_int" ] } } }

About

Converts from GraphQL Schema Language to JSON Schema

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors