joi2gql

1.3.1 • Public • Published

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

Package Sidebar

Install

npm i joi2gql

Weekly Downloads

4

Version

1.3.1

License

ISC

Last publish

Collaborators

  • samueljoli
  • xogrp