joi2gql
Plugin
Last updated 9 years ago by xogrp .
ISC · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install joi2gql 
SYNC missed versions from official npm registry.

alt text

Build Status npm version

Easily convert Joi schemas into GraphQL data types.

Lead Mainter: Samuel Joli

Installation

npm install --save joi2gql

graphql-js is listed as a peer dependency. joi2gql does not install it's own instance of graphql and instead requires parent module to provide it. This avoids any version collisions.

Example

const Joi    = require('joi');
const Joi2GQL = require('joi2gql');

const joiSchema = Joi.object().keys({
    key1: Joi.string(),
    key2: Joi.number().integer(),
    key3: Joi.array().items(Joi.string()),
    key4: Joi.object().keys({
        subKey1: Joi.string(),
        subKey2: Joi.number()
    })
});

const GraphQLDataType = Joi2GQL.transmuteType(joiSchema);

Usage

const {
    Server
} = require('hapi');
const {
    graphqlHapi 
} = require('apollo-server-hapi');

const Joi    = require('joi');
const Joi2GQL = require('joi2gql');

const port   = '3000';
const host   = 'localhost';
const server = new Server();

server.connection({ port, host });

const songSchema = Joi.object().keys({
    artist: Joi.string(),
    title : Joi.string(),
    length: Joi.number().integer(),
});

const config = {
    name: 'Song',
    args: {
        id: Joi.number().integer()
    },
    resolve: (root, args) => {
        return {
            artist: 'Tycho',
            title : 'Awake',
            length: 4.43
        };
    }
};

const Song = Joi2GQL.transmuteType(songSchema, config);
const rootGQLSchema = {
    query: {
        song: Song
    }
};

server.register({
    register: graphqlHapi,
    options : {
        path          : '/graphql',
        graphqlOptions: {
            schema: Joi2GQL.transmuteSchema( rootGQLSchema )
        }
    }
});

server.start(() => {
    if (err) {
        throw new Error(err);
    }
    
    console.log(`Entering the matrix on port: ${server.info.port}`
});

API

See the detailed API reference.

Contributing

We love community and contributions! Please check out our guidelines before making any PRs.

Setting up for development

Install dependencies and run test.

npm install && npm test

GraphQL types not yet supported.

  • GraphQLInterfaceType
  • GraphQLUnionType

Current Tags

  • 1.3.1                                ...           latest (9 years ago)

4 Versions

  • 1.3.1                                ...           9 years ago
  • 1.3.0                                ...           9 years ago
  • 1.2.0                                ...           9 years ago
  • 1.1.3                                ...           9 years ago
Maintainers (2)
Downloads
Today 0
This Week 4
This Month 4
Last Day 0
Last Week 0
Last Month 4
Dependencies (1)
Dev Dependencies (7)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |