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-sock

v0.1.0

Published

GraphQL Semantic Output Conversion Kit - converts a cutting edge SDL file that supports semantic nullability into a more traditional SDL file legacy tools can support.

Readme

GraphQL SOCK

SOCK: Semantic Output Conversion Kit

What is it?

Takes as input a GraphQL SDL and outputs a derived SDL wherein all semantic-non-null type modifiers have either been removed (semantic-to-nullable) or have been replaced with strict (traditional) non-null modifiers (semantic-to-strict).

In the latest proposals around semantic nullability, we introduce a new "Semantic Non Null" type modifier that means that the value is "null only on error". However, not all tools support this yet, so this library contains tools to convert a modern SDL into a more traditional one, to be used for code generation and other such functionality.

Which command you use will depend on your setup; if you're using graphql-toe then you'll want semantic-to-strict to really capitalize on the benefits of semantic nullability. If you just want to use a semantic nullability SDL with traditional tools that don't yet understand it, then semantic-to-nullable will just strip out the semantic-non-null types for you.

Installation

Pick the line that relates to your package manager:

npm install --save graphql-sock
yarn add graphql-sock
pnpm install --save graphql-sock

Usage

semantic-to-nullable

If a value is "null only on error" then it can be null. This conversion strips all semantic-non-null type wrappers from the SDL, making a schema that appears as it traditionally would. This means that you won't reap any of the benefits of semantic nullability, but you can support existing tools.

semantic-to-nullable -i input.graphql -o output.graphql

semantic-to-strict

If you're using graphql-toe or a similar technique that means that when you read from an errored field the error will be thrown, then it will not be possible for you to read a null from a "null only on error" position. As such, this position becomes equivalent to a traditional non-null for you, so this conversion converts all semantic-non-null type wrappers into traditional non-null wrappers. Your type generators can therefore generate fewer nullables, and your frontend engineers have to do fewer null checks and are therefore happier.

semantic-to-strict -i input.graphql -o output.graphql