@hydre/graphql-batch-executor

3.2.0 • Public • Published

@hydre/graphql-batch-executor

A readable stream executing multiple graphql operations in parallel

This library is made to be used by servers or tools implementer, it can't be used alone.

Install

npm install @hydre/graphql-batch-executor

Usage

Initialize a new Executor per client

import Executor from '@hydre/graphql-batch-executor'
import make_schema from '@hydre/graphql-batch-executor/make_schema'

// i actually wrote a light and efficient version of makeExecutableSchema
// without the shitty code and the 7500 dependencies of graphql-tools
// and using mjs exports of graphql.js
const schema = make_schema({
  document: 'type Query { ping: String! }',
  resolvers: {
    Query: {
      ping: () => 'pong'
    },
    Subscription: {
      ping: {
        resolve: () => 'pong',
        async *subscribe() {
          yield 0
        }
      }
    }
  },
  directives: {
    foo: ({ resolve, // original resolver
            root, // resolver params in the same order
            parameters, // .
            context, // .
            info, // .
            directive_arguments, // parameters for the directive
          }) => {}
  }
})

const executor = new Executor({
  schema, // schema
  context: async () => ({}),
  formatError: x => x // format array of errors
})

The executor generator takes an option object

import stream from 'stream'

stream.pipeline(
    executor.execute({
      document: /* GraphQL */`
          query foo {
            ping
          }

          query bar {
            ping
          }
        `,
      variables: {},
    }),
    async source => {
      for await (const chunk of source) {
        const {
          // query, mutation, subscription
          operation_type,

          // the name
          // note that you can't send queries
          // without names if there are more than one
          operation_name,

          // data result or null
          data,

          // gql errors or []
          errors,
        } = chunk
      }
    },
    () => {
      log('client disconnected')
    },
)

Advanced

see /examples

Readme

Keywords

Package Sidebar

Install

npm i @hydre/graphql-batch-executor

Weekly Downloads

2

Version

3.2.0

License

UNLICENSE

Unpacked Size

24.1 kB

Total Files

15

Last publish

Collaborators

  • sceat
  • hydre-bot
  • deltaevo