Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

extractgql

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

extractgql

A build tool for GraphQL projects.

  • 0.2.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-66.67%
Maintainers
1
Weekly downloads
 
Created
Source

ExtractGQL

extractgql is a simple build tool that enables query whitelisting and persisted queries for GraphQL projects that use statically analyze-able GraphQL queries.

It scans a code directory and extracts GraphQL query documents from .graphql files. It then assigns these queries ID values/hashes and produces a JSON file which maps from queries to hashes/IDs. This map can then be used by the client and server to perform query whitelisting, query lookups (i.e. client only sends the hash/id, the server just looks up the corresponding query), etc.

The npm package also provides a network interface for Apollo Client that manages the query lookups in extractgql/lib/browser and middleware for Express servers in extractgql/lib/server. These will likely be moved to their own packages in the future to reduce bundle size.

Installation

For only the CLI tool:

npm install -g extractgql

As a dependency (for Express middlware or Apollo Client network interface):

npm install --save extractgql

Build Tool Semantics

The build tool binary is called extractgql. Running it with no other arguments should give:

Usage: extractgql input_file [output file] [--add_typename]

It can be called on a file containing GraphQL query definitions with extension .graphql:

extractgql queries.graphql

It can also be called on a directory, which it will step through recursively:

extractgql src/

By default, the output will be palced in extracted_queries.json. An output file can be specified as the second argument:

extractgql index.ts output.json

It can also take the --add_typename flag which will apply a query transformation to the query documents, adding the __typename field at every level of the query. You must pass this option if your client code uses this query transformation.

extractgql src/ --add_typename

Apollo Client Network Interface

This package also provides an implementation of an Apollo Client network interface that provides persisted query support. It serves as a drop-in replacement for the standard network interface and uses the query map given by extractgql in order to send only query hashes/ids to the serverather than the query document.

See the implementation as well as some documentation for it within src/network_interface/ApolloNetworkInterface.ts.

Express middleware

This package also provides middleware for Express servers that maps a JSON object such as the following:

{
    id: < query id >,
    variables: < query variables >,
    operationName: < query operation name >
}

to the following:

{
    query: < query >,
    variables: < query variables >,
    operationName: < query operation name >
}

That is, it maps query ids to the query document using the query map given by extractgql. See src/server/serverUtil.ts for the middleware methods and some documentation.

FAQs

Package last updated on 10 Jan 2017

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc