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

graphiql-spark

v0.1.0

Published

Demo a GraphQL schema without a GraphQL endpoint.

Downloads

3

Readme

GraphiQL Spark

Demo a GraphQL schema without a GraphQL endpoint.

What & Why?

GraphiQL Spark allows you to run queries or mutations completely client side! In addition the query/mutation response is rendered once GraphiQL is mounted, which makes it ideal for blog posts.

Note: Out of the box GraphiQL requires you to press the play button to run the query and see the results.

How is it different to GraphiQL?

Not by much. GraphiQL Spark is thin convinience layer on top of GraphiQL.

Benefits

  • No Downtime (your static site might work, but the GraphQL endpoint might be down)
  • No Server Cost (why pay for demoing a GraphQL concept on your blog?)
  • Faster feedback loop (no network request)

Downsides

  • Requires the packages graphql & graphl-tool which adds ~64kb (minified + gzipped) to the bundle.

Install

# npm
npm install --save graphiql-spark
# yarn
yarn add graphiql-spark

Usage

import React from "react";
import GraphiQlSpark from "graphiql-spark";
import "graphiql/graphiql.css";

// Schema defined in the Schema Definition Language
const typeDefs = `
  type Post {
    title: String
  }

  type Query {
    posts: [Post]
  }
`;

// Client-side resolvers
const resolvers = {
  Query: {
    posts: () => [
      { title: "Advanced GraphQL Concepts" },
      { title: "Why I Write CSS in JavaScript" }
    ]
  }
};

// Example query
const query = `query {
  posts {
    title
  }
}
`;

export default function SimpleExample() {
  return (
    <div style={{ height: "25rem", border: "1px solid #e0e0e0" }}>
      <GraphiQLSpark query={query} resolvers={resolvers} typeDefs={typeDefs} />
    </div>
  );
}

More Examples

Please check out the docs at https://nikgraf.github.io/graphiql-spark/

FAQ

Are relations (mutually-recursive resolver) possible?

Yes

Are Mutations supported?

Yes

Are Subscriptions supported?

No, but I would welcome a proposal on how this could be done.

How does it work?

GraphiQL Spark builds a Schema locally in the browser and then directly can invoke the Schema instead of using a Transport Layer like HTTP.

Can I use it with GraphQL Nexus or other Code-First Schema Generators?

Not yet, but probably makes sense to publish such a version. Ping me if you are interested to help. Ideally it would be a named export, but we make sure non-used dependencies are tree-shaked.

Inspiration

Once upon a time I was giving a GraphQL beginner workshop using the The Star Wars API example. I wanted that in this example every GraphQL request is not more than a simple HTTP request. My attempt to demo this live failed since the example was built in a way that the production version would include a client side schema.

Once I started working on a new personal blog covering GraphQL concepts I was looking for a way to provide executable examples (instead of pasting text or images). And instead of finishing my blog post I procrastinated and built this tool 😄

Contributing

yarn start

This builds to /dist and runs the project in watch mode so any edits you save inside src causes a rebuild to /dist.

To do a one-off build for production, use yarn build.

Docs / Examples

To run the docs locally (the examples are helpful during development) inside another tab run:

cd example
yarn # install dependencies
yarn start

The build command yarn build inside the example directory is optimized for generating the docs.