Code Monkey home page Code Monkey logo

graphql-field-resolver-to-typescript's Introduction

graphql-field-resolver-to-typescript · CircleCI Status npm version semantic-release

This project started its life as a fork of graphql-typewriter

Usage

  🚗 Local package.json

$ yarn add --dev graphql-field-resolver-to-typescript
$ gqlfr2ts **/*.graphql -o schema.d.ts

 🚙  Global dependency

$ npm install -g graphql-field-resolver-to-typescript
$ gqlfr2ts **/*.graphql -o schema.d.ts

🏎💨  Using npx

$ npx graphql-field-resolver-to-typescript **/*.graphql -o schema.d.ts

API

$ gqlfr2ts <input>

<input>

You can provide a list over files or use stdin to pipe from other cli programs.

--output, -o path

Optionally specify where to write the output. If not specified it'll pipe to stdout so you can pipe it to any cli program you want.

Examples

$ gqlfr2ts schema.graphql

Processes the file schema.graphql and prints to stdout

$ cat schema.graphql | gqlfr2ts --output schema.d.ts

Processes the input from stdin and writes output to schema.d.ts

$ gqlfr2ts RootQuery.graphql User.graphql --output schema.d.ts

Stitch a schema together and output a complete typescript definition for all the related resolvers

$ cat **/*.graphql | gqlfr2ts > schema.d.ts

Stitch a schema together from stdin and pipe it to stdout and use the shell to write output to file. This is the most performant solution when you have a lot of files that combine to a big schema.

.graphql to .ts examples

input

type RootQuery {
  # A field description
  field1: TypeA
  # Another field description
  field2: TypeB
}

# A simple type
# Multiline description
type TypeA {
  name: String
  size: Int
}

# Another more complex type
type TypeB {
  nested: [TypeA]
}

schema {
  query: RootQuery
}

output

/* tslint:disable */
import { GraphQLResolveInfo } from 'graphql'
type ID = string
export type GraphqlField<Source, Args, Result, Ctx> =
  | Result
  | Promise<Result>
  | ((
      source: Source,
      args: Args,
      context: Ctx,
      info: GraphQLResolveInfo
    ) => Result | Promise<Result>)

export interface RootQuery<Ctx> {
  /**
     * A field description
     */
  field1?: GraphqlField<RootQuery<Ctx>, {}, TypeA<Ctx> | undefined, Ctx>
  /**
     * Another field description
     */
  field2?: GraphqlField<RootQuery<Ctx>, {}, TypeB<Ctx> | undefined, Ctx>
}

/**
 * A simple type
 * Multiline description
 */
export interface TypeA<Ctx> {
  name?: GraphqlField<TypeA<Ctx>, {}, string | undefined, Ctx>
  size?: GraphqlField<TypeA<Ctx>, {}, number | undefined, Ctx>
}

/**
 * Another more complex type
 */
export interface TypeB<Ctx> {
  nested?: GraphqlField<
    TypeB<Ctx>,
    {},
    (TypeA<Ctx> | undefined)[] | undefined,
    Ctx
  >
}

export interface field1Args {}

export interface field2Args {}

export const defaultResolvers = {}

usage in resolvers

@TODO this will come soon, this is a very young project and there's a lot of edge cases to iron out

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.