npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

graphql-auto-mutation

v0.0.11

Published

Automatically generate JS methods for flat graphql mutations.

Downloads

26

Readme

Build Status

graphql-auto-mutation

Write less, do more. :rocket:

Automatically generates functions for mutations specified in a GraphQL schema.

Usage

npm install --save graphql-auto-mutation
import createMutations from 'graphql-auto-mutation'

const api = createMutations(YOUR_ENDPOINT_URL)

api.myCoolMutation({arg1: '1', arg2: 2})

Example using graphcool

Please consider the following schema, hosted on graphcool:

type Tweet {
  id: ID!
  text: String!
  author: User! @relation(name: "Tweets")
}

type User {
  id: ID!
  name: String!
  tweets: [Tweet!]! @relation(name: "Tweets")
}

The graphcool BaaS can automatically create mutations for this schema for us. You can easily try it for yourself, using their awesome graphql-up tool.

Since the mutations are all exposed in the schema, we can just let graphql-auto-mutation utilize the endpoint to generate corresponding function calls. graphql-auto-mutation will generate a function for each mutation specified in the schema. The function will have the same name as the mutation. Parameters are passed inside an object. When called, the function returns a promise which resolves to the ID of the mutated node.

import createMutations from 'graphql-auto-mutation'
const url = 'https://api.graph.cool/simple/v1/carnationleg-cloud-268'

// Fetches schema and generates functions for all mutations 
const twitter = await createMutations(url)

// Call your mutations!
const userId = await twitter.createUser({name: 'Hugo'})
const tweetId = await twitter.createTweet({authorId: userId, text: 'Test Tweet'})
await twitter.updateTweet({id: tweetId, text: 'New Text for Tweet'})

Of course, you can also use this tool with your own API!

Options

The following alternative create calls are available:

import createMutations from 'graphql-auto-mutation'

createMutations(url, authorizationHeaderToken)
createMutations.withHeaders(url, headers) 
createMutations.withResolver(url, customResolver)
createMutations.withSchema(url, schema, authorizationHeaderToken)
createMutations.withSchemaAndHeaders(url, schema, headers)
createMutations.withResolverAndSchema(customResolver, headers)

The authorization token is your access token, which will be stored in the authorization header. This library will prepend Bearer before setting the header. If you wish to use a different format, set a custom header using the .withHeaders method.

A custom resolver is essentialy a function which receives the GraphQL query as first parameter and all query variables as second parameter. This way, you can use the GraphQL client of your choice. Also unit testing gets very easy.

What is supported?

At the moment, graphql-auto-mutation only supports mutations with scalar input types. Nested mutations are not supported.

Why should I use this?

GraphQL is awesome when it comes to querying data. However, when nodes are updated or created, calling mutations requires multiple lines of code. Especially for cool BaaS like graphcool, mutations can be very generic. Developers end up writing similar mutations over and over again. Using this tool, executing a mutation becomes as simple as writing a function call.