0.0.0-rfc.34 • Published 2 years ago

subgraphql v0.0.0-rfc.34

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

@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...

0.0.0-rfc.34

2 years ago

0.0.0-rfc.33

2 years ago

0.0.0-rfc.32

2 years ago

0.0.0-rfc.31

2 years ago

0.0.0-rfc.30

2 years ago

0.0.0-rfc.29

2 years ago

0.0.0-rfc.28

2 years ago

0.0.0-rfc.27

2 years ago

0.0.0-rfc.26

2 years ago

0.0.0-rfc.25

2 years ago

0.0.0-rfc.24

2 years ago

0.0.0-rfc.23

2 years ago

0.0.0-rfc.22

2 years ago

0.0.0-rfc.21

2 years ago

0.0.0-rfc.20

2 years ago

0.0.0-rfc.19

2 years ago

0.0.0-rfc.18

2 years ago

0.0.0-rfc.17

2 years ago

0.0.0-rfc.16

2 years ago

0.0.0-rfc.15

2 years ago

0.0.0-rfc.14

2 years ago

0.0.0-rfc.13a

2 years ago

0.0.0-rfc.13

2 years ago

0.0.0-rfc.12

2 years ago

0.0.0-rfc.11

2 years ago

0.0.0-rfc.10

2 years ago

0.0.0-rfc.9

2 years ago

0.0.0-rfc.8

2 years ago

0.0.0-rfc.7

2 years ago

0.0.0-rfc.6

2 years ago

0.0.0-rfc.5

2 years ago

0.0.0-rfc.4

2 years ago

0.0.0-rfc.3

2 years ago

0.0.0-rfc.2

2 years ago

0.0.0-rfc.1

2 years ago

0.0.0-rfc.0

2 years ago

0.0.0

2 years ago