0.2.2 • Published 9 months ago

tiny-graphql-query-compiler v0.2.2

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

tiny-graphql-query-compiler

tiny-graphql-query-compiler provides a JavaScript-land DSL for constructing GraphQL queries.

Example:

import { compile } from "tiny-graphql-query-compiler";

const query = compile({
  type: "query",
  fields: {
    id: true,
    name: true,
    age: true,
  },
});

// query =>
`
query {
  id
  name
  age
}
`;

To pass arguments, you can use the Call helper:

import { compile, Call } from "tiny-graphql-query-compiler";

const query = compile({
  type: "query",
  fields: {
    user: Call(
      { id: 1 },
      {
        id: true,
        name: true,
        age: true,
      }
    ),
  },
});

// query =>
`
query {
  user(id: 1) {
    id
    name
    age
  }
}
`;

To pass arguments using GraphQL variables, you can use the Call helper with the Var helper:

import { compile, Call, Var } from "tiny-graphql-query-compiler";

const query = compile({
  type: "query",
  fields: {
    user: Call(
      { id: Var({ type: "ID!" }) },
      {
        id: true,
        name: true,
        age: true,
      }
    ),
  },
});

// query =>
`
query ($id: ID!) {
  user(id: $id) {
    id
    name
    age
  }
}
`;

To get back a query and a set of variables to pass to that query, use the compileWithVariableValues function, and pass a value to each one of your variables:

import { compile, Call, Var } from "tiny-graphql-query-compiler";

const { query, variables } = compileWithVariableValues({
  type: "query",
  fields: {
    user: Call(
      { id: Var({ type: "ID!", value: 1 }) },
      {
        id: true,
        name: true,
        age: true,
      }
    ),
  },
});

// query =>
`
query ($id: ID!) {
  user(id: $id) {
    id
    name
    age
  }
}
`;

// variables =>
{
  id: 1;
}

await someClient.execute({ query, variables });
0.2.2

9 months ago

0.2.1

9 months ago

0.2.0

9 months ago

0.1.0

10 months ago