subgraphql
TypeScript icon, indicating that this package has built-in type declarations

0.0.0-rfc.34 • Public • Published

@windranger-io - subgraphql

A Tool to easily launch subgraph flavoured graphql servers via graphql-yoga

SubgraphQL is a tool that helps convert GraphProtocol subgraph-style schema.graphql files into functional graphql-yoga servers.

Simply provide the content of your subgraph's schema.graphql and a valid entities object, and subgraphql will expose the resultant GraphQL schema as a server. It can be used in either a Node.js environment or as a Next.js endpoint.

Getting started

  • Install subgraphql:

    $ yarn add subgraphql
  • Import subgraphql:

    import { createSubgraph } from 'subgraphql'
  • Construct your schema and 1:1 mapped entities:

    const schema = `
      # id = \`\${owner}\`
      type Name @entity {
        id: ID!
        name: String
        owner: Bytes
        number: BigNumber
      }
    `
    const entities = {
      Name: [
        {
          id: '0',
          name: 'grezle',
          owner: '0x0...',
          number: '0848293943825030',
        },
      ],
    }
  • Setup graphql-yoga with subgraphql and expose as a server (example):

    import * as http from 'http'
    
    const subgraph = createSubgraph({
      schema,
      entities,
      name?: ``, // follow graphprotocol naming - `/subgraphs/name/${name}/graphql`
      graphqlEndpoint?: ``, // override name and set the full graphqlEndpoint uri
      defaultQuery?: `
        {
          names {
            id
            name
            number
            owner
          }
        }`
    });
    
    const server = http.createServer(subgraph)
    
    server.listen(4001, () => {
      console.info('Server is running on http://localhost:4001/api/graphql')
    })

    * Start subgraphql with node:

    $ node ./[filename].js
  • Or expose as a next.js endpoint (example):

    import type { NextApiRequest, NextApiResponse } from 'next'
    
    export default createSubgraph<NextApiRequest, NextApiResponse>({
      schema,
      entities,
      graphqlEndpoint: `/api/graphql`, // this _must_ match the current route
      defaultQuery: `
        {
          names {
            id
            name
            number
            owner
          }
        }`,
    })

    * Start next.js as normal:

    $ yarn dev

Checkout the examples directory for more details...

Readme

Keywords

none

Package Sidebar

Install

npm i subgraphql

Weekly Downloads

0

Version

0.0.0-rfc.34

License

none

Unpacked Size

181 kB

Total Files

42

Last publish

Collaborators

  • grezle