@liquid-js/fragql
    Preparing search index...

    @liquid-js/fragql

    FraGQL

    GitHub license npm scope

    Another GraphQL template literal.

    npm install @liquid-js/fragql
    

    https://liquid-js.github.io/fragql/

    import { gql } from '@liquid-js/fragql'

    const userBasic = gql`
    fragment userBasic on User {
    name
    lastname
    }
    `

    const query = gql`
    query user($id: String){
    user(id: $id){
    ...${userBasic}
    }
    }
    `

    console.log(query.toString())

    Gives

    query user($id: String) {
    user(id: $id) {
    ...userBasic
    }
    }

    fragment userBasic on User {
    name
    lastname
    }
    console.log(query.toString(true));
    

    Gives

    query user($id: String) {
    user(id: $id) {
    name
    lastname
    }
    }

    FraGQL can validate operations against GQL schema. To use validation, you have to pass your schema as a string to loadSchema function.

    The following example obtains GraphQL schema from http://example.com/graphql and validates user query against it.

    Notice userBasic fragment and user query don't wait for the schema to load - upon calling loadSchema, all existing queries are validated against it.

    import { gql, loadSchema } from '@liquid-js/fragql'
    import { buildClientSchema, getIntrospectionQuery } from 'graphql'

    fetch('http://example.com/graphql', {
    method: 'POST',
    mode: 'cors',
    cache: 'no-cache',
    credentials: 'same-origin',
    headers: {
    'Content-Type': 'application/json; charset=utf-8'
    },
    redirect: 'follow',
    referrer: 'no-referrer',
    body: JSON.stringify({ query: getIntrospectionQuery() })
    })
    .then((res) => res.json())
    .then((res) => buildClientSchema(res.data))
    .then((schema) => loadSchema(schema))
    .then((errors) => {
    if (errors.length) throw errors[0]
    })

    const userBasic = gql`
    fragment userBasic on User {
    name
    lastname
    }
    `

    const query = gql`
    query user($id: String){
    user(id: $id){
    ...${userBasic}
    }
    }
    `

    MIT License