New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

graphqless

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

graphqless

GraphQLess ⚛️ 🚀🤘 REST and GraphQL really aren't that different. I'll prove it!</

latest
npmnpm
Version
1.3.0
Version published
Weekly downloads
3
200%
Maintainers
1
Weekly downloads
 
Created
Source

GraphQLess

GraphQLess

⚛️ 🚀🤘

REST and GraphQL really aren't that different. I'll prove it!
GraphQLess is a thin wrapper around the official express-graphql project.
GraphQLess lets you write a GraphQL server in an Express.js style.

Setup

yarn add graphqless

And here is how you write a server... Look familiar?

const { GraphQLess } = require('graphqless');
const app = new GraphQLess();

const db = { users: [{ name: 'Tyler' }] };

app.get('/users', (req, res) => {
  const { users } = db;
  res.send(users);
});

app.get('/user', (req, res) => {
  const user = db.users.find(user => user.name === req.body.name);
  res.send(user);
});

app.post('/createUser', (req, res) => {
  const userCount = db.users.push({ name: req.body.name });
  res.send(userCount);
});

app.listen(3000, () => {
  console.log('Visit: http://localhost:3000/playground');
});

I know it looks like Express.js but the code above is a GraphQL server! There is one caveat though...

GraphQL requires us to write a schema that describes the .get and .post functions' inputs and outputs.

Just know that .get === Query && .post === Mutation. Now let's modify the last few lines of the snippet above to include the required schema:

app
  .useSchema(
    `
    type Query {
      users: [User]
      user(name: String): User
    }
    type Mutation {
      createUser(name: String): Int
    }
    type User {
      name: String
    }
  `
  )
  .listen(3000, () => {
    console.log('Visit: http://localhost:3000/playground');
  });

That's the only catch! You now have a fully functioning and extendable GraphQL server.

You can find more examples in the examples folder.

Examples

Queries for examples/example

npx nodemon examples/example.js
mutation createUser {
  createUser(name: "Buchea")
}

query getUsers {
  users {
    name
  }
  user(name: "Tyler") {
    name
  }
}

Queries for examples/exampleWithAuth

npx nodemon examples/exampleWithAuth.js
# Add this to "HTTP HEADERS" in GraphQL Playground:
# { "Authorization": "Bearer eyJhbGciOiJIUzI1NiJ9.YWJj.4noRC-c0ay0hOeZ5Cgc80MVS0P4p4FrR2lJFzMNSnE4" }

query getMe {
  getToken
  me {
    id
    name
  }
}

Queries for examples/exampleWithRouter

npx nodemon examples/exampleWithRouter/index.js
mutation createUser {
  createUser(name: "Buchea")
}

query getUsers {
  users {
    name
  }
  user(name: "Tyler") {
    name
  }
}

Queries for examples/exampleWithReactClient

npx nodemon examples/exampleWithReactClient/index.js
mutation createUser {
  createUser(name: "Buchea") {
    name
  }
}

query getUsers {
  users {
    name
  }
}

Queries for examples/exampleWithSubscription

npx nodemon examples/exampleWithSubscription.js
subscription subscribeToCount {
  count
}

query getDummyData {
  dummy
}

FAQs

Package last updated on 09 Mar 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts