0.0.0-rfc.34 • Published 1 year ago

subgraphql v0.0.0-rfc.34

Weekly downloads
-
License
-
Repository
-
Last release
1 year 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

1 year ago

0.0.0-rfc.33

1 year ago

0.0.0-rfc.32

1 year ago

0.0.0-rfc.31

1 year ago

0.0.0-rfc.30

1 year ago

0.0.0-rfc.29

1 year ago

0.0.0-rfc.28

1 year ago

0.0.0-rfc.27

1 year ago

0.0.0-rfc.26

1 year ago

0.0.0-rfc.25

1 year ago

0.0.0-rfc.24

1 year ago

0.0.0-rfc.23

1 year ago

0.0.0-rfc.22

1 year ago

0.0.0-rfc.21

1 year ago

0.0.0-rfc.20

1 year ago

0.0.0-rfc.19

1 year ago

0.0.0-rfc.18

1 year ago

0.0.0-rfc.17

1 year ago

0.0.0-rfc.16

1 year ago

0.0.0-rfc.15

1 year ago

0.0.0-rfc.14

1 year ago

0.0.0-rfc.13a

1 year ago

0.0.0-rfc.13

1 year ago

0.0.0-rfc.12

1 year ago

0.0.0-rfc.11

1 year ago

0.0.0-rfc.10

1 year ago

0.0.0-rfc.9

1 year ago

0.0.0-rfc.8

1 year ago

0.0.0-rfc.7

1 year ago

0.0.0-rfc.6

1 year ago

0.0.0-rfc.5

1 year ago

0.0.0-rfc.4

1 year ago

0.0.0-rfc.3

1 year ago

0.0.0-rfc.2

1 year ago

0.0.0-rfc.1

1 year ago

0.0.0-rfc.0

1 year ago

0.0.0

1 year ago