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

@hdsydsvenskan/graphql-partials

Package Overview
Dependencies
Maintainers
12
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hdsydsvenskan/graphql-partials

Experimental transformer implementing support for partials in GraphQL Schemas

  • 0.3.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
12
Created
Source

GraphQL Partials

Experimental transformer implementing support for partials in GraphQL Schemas.

This module's sole purpose is as an experimental implementation of the concepts brought up in graphql/graphql-js#703. It's not intended as a long term solution by itself, but as an experiment with a possible future extension of the GraphQL Schema itself.

js-semistandard-style

Usage

Command line

npm install -g @hdsydsvenskan/graphql-partials

Then run it to output the transformed schema:

graphql-partials <path-to-schema-with-partials.graphql>

npm script build step

npm install --save-dev @hdsydsvenskan/graphql-partials

Then:

"scripts": {
  "build": "graphql-partials schema-partials.graphql > schema.graphql"
}

Programmatic use

npm install --save @hdsydsvenskan/graphql-partials
const renderSchemaWithPartials = require('@hdsydsvenskan/graphql-partials');

const schemaWithoutPartials = renderSchemaWithPartials('partial abc { ... } type xyz using abc { ... }');

Experimental GraphQL Schema syntax

This transformer provides a way to import field definitions from a defined partial to an interface and/or type, thus complementing interface:s by providing a mechanism to reduce repition of fields while not messing with any existing semantics.

This model is similar to what eg. PHP does with traits, but as GraphQL Schema's interface and type are more similar than interface and class in PHP, the using keyword here applies to both interface and type, allowing field definitions to be imported into both of them.

Syntax

Entity: partial

This transformer introduced a new experimental entity with the name partial. This entity defines a set of fields, similar to what an interface does, and it's sole purpose is to be referenced by the new using keyword.

Keyword: using

Similar to how a type can reference an interface using the implements keyword both a type and an interface can reference a partial through the experimental keyword using that this transformer introduces. Like implements it accepts a comma separated list if one wants to apply multiple partials to the same definition.

The transformer makes no checks whether multiple partials conflicts with each other or whether any partial and the definition of the interface/type itself conflicts with each other. The only check it makes is whether a partial of the stated name actually exists and then it prepends the field definitions of that partial to the field definitions of the interface/type itself.

FAQs

Package last updated on 27 Nov 2018

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