# graphql-compose-typescript

> [![Build Status](https://travis-ci.org/janexpando/graphql-compose-typescript.svg?branch=master)](https://travis-ci.org/janexpando/graphql-compose-typescript) [![codecov](https://codecov.io/gh/janexpando/graphql-compose-typescript/branch/master/graph/badge

Latest version **0.12.0** (published 2019-04-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install graphql-compose-typescript
pnpm add graphql-compose-typescript
yarn add graphql-compose-typescript
bun add graphql-compose-typescript
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.12.0 |
| Published | 2019-04-10 |
| First published | 2019-01-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 206.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Jan Kremeň |
| Maintainers | yeneek |

## Links

- npm: https://www.npmjs.com/package/graphql-compose-typescript
- Repository: https://github.com/janexpando/graphql-compose-typescript
- Homepage: https://github.com/janexpando/graphql-compose-typescript#readme
- Issues: https://github.com/janexpando/graphql-compose-typescript/issues
- npm.io page: https://npm.io/package/graphql-compose-typescript

## Dependencies (3)

- [lodash](https://npm.io/package/lodash.md) ^4.17.11
- [prettier](https://npm.io/package/prettier.md) ^1.16.4
- [immutable](https://npm.io/package/immutable.md) ^4.0.0-rc.12

## Recent versions

- 0.12.0 (latest) — 2019-04-10
- 0.11.0 — 2019-04-10
- 0.10.0 — 2019-04-06
- 0.9.0 — 2019-03-23
- 0.8.1 — 2019-03-23
- 0.8.0 — 2019-03-23
- 0.7.0 — 2019-03-09
- 0.6.0 — 2019-02-09
- 0.5.0 — 2019-02-09
- 0.4.0 — 2019-02-09
- 0.3.0 — 2019-02-07
- 0.2.0 — 2019-02-07
- 0.1.1 — 2019-02-02
- 0.1.0 — 2019-02-02
- 0.0.11 — 2019-01-27
- … 6 more at https://npm.io/package/graphql-compose-typescript/versions

## README

# GraphQL-compose-typescript
[![Build Status](https://travis-ci.org/janexpando/graphql-compose-typescript.svg?branch=master)](https://travis-ci.org/janexpando/graphql-compose-typescript)
[![codecov](https://codecov.io/gh/janexpando/graphql-compose-typescript/branch/master/graph/badge.svg)](https://codecov.io/gh/janexpando/graphql-compose-typescript)
[![npm](https://img.shields.io/npm/dt/graphql-compose-typescript.svg)](http://www.npmtrends.com/graphql-compose-typescript)
[![Maintainability](https://api.codeclimate.com/v1/badges/d073d992107279199958/maintainability)](https://codeclimate.com/github/janexpando/graphql-compose-typescript/maintainability)
Keep in mind, that this module is in early stage of development. 
Feel free to create issue or pr.

## Examples 
```ts
import 'reflect-metadata';
import {graphql} from "graphql";
import {schemaComposer} from "graphql-compose";
import {$field, $resolver, GraphqlComposeTypescript} from "graphql-compose-typescript";

class Order {
    @$field() id: string;
    @$field() quantity: number;

    constructor(id: string, quantity: number){
        this.id = id;
        this.quantity = quantity;
    }
}

class OrderService {
    @$resolver(()=> Order)
    getOrders(): Order[]{
        return [new Order('a', 1), new Order('b',2)];
    }
}

async function main(){
    let orderService = new OrderService();

    let compose = GraphqlComposeTypescript.create()
    let typeComposer = compose.getComposer(orderService);
    schemaComposer.Query.setField('getOrders', typeComposer.getResolver('getOrders'));
    let schema = schemaComposer.buildSchema();
    let result = await graphql(schema, `{
        getOrders{
            id
            quantity
        }
    }`);
    console.log(JSON.stringify(result.data.getOrders));
    /**
     * [{"id":"a","quantity":1},{"id":"b","quantity":2}]
     */
}
main();

```

## Roadmap
 * using whole type configs in decorators
 * enums
 * solve argument names without explicit declaration

---
_Source: https://npm.io/package/graphql-compose-typescript · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
