1.0.11 • Published 5 years ago

gql2dts v1.0.11

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

gql2dts

A tool to parse graphql schema to typescript defs.

Installation

npm install gql2dts

Usage

import gql2dts from 'gql2dts'
import fs from 'fs'

const dts = gql2dts.parse(graphqlSchema, option)
fs.writeFileSync('/path/to/gql.d.ts', dts)

Options

using option argument, you can set your code style.

now, there is a graphql file like:

enum Gender{
	male
	female
	unknown
}
type User{
	id: ID!
	name: String!
	gender: Gender
}
type Query{
	user(id:ID!): User
	users: [User!]!
}

enumType

tell parser program how to parse graphql enum type, default 'type'.

when enum

const enum Gender {
	male = 'male',
	female = 'female'
	unknown = 'unknown'
}

when type

type Gender = 'male' | 'female' | 'unknown'

objectType

tell parser how to parse graphql object type, default 'interface'.

when interface:

interface User {
	id: ID
	name: String
	gender: Gender | null | undefined
}

when type

type User = {
	id: ID
	name: String
	gender: Gender | null | undefined
}

namespaceName

set namespace name of ts defs, default 'gql'

namespace gql{
	//... ...
}

outputType

eh, this is only a string before namespace

//when 'declare'
declare namespace gql{}
//when 'export'
export namespace gql{}
//when 'none'
namespace gql{}

argument2interface

to parse argument to interface ?

when true

interface IUserOnQueryArguments {
	id: ID
}
interface Query {
	user:GQLFunction<IUserOnQueryArguments, User|null|undefined>
	users: Array<User>
}

and when false

interface Query {
	user:GQLFunction<{ id: ID }, User|null|undefined>
	users: Array<User>
}

customscalarTypes

set types for graphql scalar types, such as:

{Int: 'number', String:'string', ... ...}

nullableType

when get nullable type, how to parse it?

// {object: type=>type+' | null' }
interface User {
	id: ID
	name: String
	gender: Gender | null
}
// {object: type=>type }
interface User {
	id: ID
	name: String
	gender: Gender
}
1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago