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-schema-loader

v0.0.6

Published

I provide a boilerplate GraphQL schema structure and compiling utilities in module-style packaging

Downloads

15

Readme

graphql-schema-loader

This is a boilerplate schema structure and loader utils to provide file-based organization for GraphQL schemas. Included in this module is a basic Github public API example.

Usage is simple

Install as npm module

$ npm install graphql-schema-loader --save

Install as standalone plugin

$ git clone [email protected]:dangerdespain/graphql-schema-loader.git [schema title]

$ cd [schema title]

npm install && rm .git && cd ../

Usage

var GraphQL = require('graphql');
var schema = require('./graphql-schema-loader').schema

var query, rootValue, variables, operationName

graphql(schema, query, rootValue, variables, operationName)
.then(function(res){
  if(res.errors){ } // Errors happened... GraphQL takes care of populating the API response but you can add more logic here.
  res = res // Handle your data and/or complete your response here
  return res
}) // if this function pattern doesn't make sense, check out Promises! BluebirdJS is my favorite Promise lib.

Advanced usage

My goal here was extendable schema definitions. Imagine being able to chain in a pre-built User Management/Stripe/Facebook Login schema to your primary app schema. I love the idea of being able to modularize and re-use chunks of schema endpoints and functions and hope that this catches on. This will be how I plan to build my GraphQL plugins from now on.

var utils = require('./graphql-schema-loader').utils

utils = {
  collectObjects : function(){
    // Smart-load and collect the items in the objects directory.
  },
  collectMutations : function(){}
  collectQueries : function(){}

  extendSchema : function(schemaObjects={}){
    // Builds the schema from the objects/queries/mutations directories.
    // If schemaObjects is included, this extends that schema with the new objects, queries, and mutations.
  },

  compileSchema : function(schemaObjects={}){
  // Calls extendSchema and returns a GraphQL Schema Object
  // If schemaObjects is included, this extends that schema with the new objects, queries, and mutations before creating the Schema object. This should be the last method called if chaining schemas.
  }
}

This module can easily be extended to dynamically generate schemas from a set of inputs, or to pass in a seeded schema object set.