Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@fabien0102/graphql-import

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fabien0102/graphql-import

[![CircleCI](https://circleci.com/gh/prismagraphql/graphql-import.svg?style=shield)](https://circleci.com/gh/prismagraphql/graphql-import) [![npm version](https://badge.fury.io/js/graphql-import.svg)](https://badge.fury.io/js/graphql-import)

latest
Source
npmnpm
Version
0.7.0
Version published
Maintainers
1
Created
Source

graphql-import

CircleCI npm version

Import & export definitions in GraphQL SDL (also refered to as GraphQL modules)

There is also a graphql-import-loader for Webpack available.

Install

yarn add graphql-import

Usage

import { importSchema } from 'graphql-import'
import { makeExecutableSchema } from 'graphql-tools'

const typeDefs = importSchema('schema.graphql')
const resolvers = {}

const schema = makeExecutableSchema({ typeDefs, resolvers })

Examples

Importing specific fields

Assume the following directory structure:

.
├── a.graphql
├── b.graphql
└── c.graphql

a.graphql

# import B from "b.graphql"

type A {
  # test 1
  first: String
  second: Float
  b: B
}

b.graphql

# import C from 'c.graphql'

type B {
  c: C
  hello: String!
}

c.graphql

type C {
  id: ID!
}

Running console.log(importSchema('a.graphql')) produces the following output:

type A {
  first: String
  second: Float
  b: B
}

type B {
  c: C
  hello: String!
}

type C {
  id: ID!
}

Extending root fields

It is possible to import from a root field like Query;

queries.graphql

type Query {
  feed: [Post!]!
  drafts: [Post!]!
}

mutations.graphql

type Mutation {
  publish(id: ID!): Post!
  deletePost(id: ID!): Post!
}

schema.graphql

# import Query.* from "queries.graphql"
# import Mutation.publish from "mutations.graphql"

Running console.log(importSchema('schema.graphql')) produces the following output:

type Query {
  feed: [Post!]!
  drafts: [Post!]!
}

type Mutation {
  publish(id: ID!): Post!
}

Importing with globs

You can also import every .graphql files in your project using globs patterns.

Assume the following directory structure:

.
├── a.graphql
├── b.graphql

a.graphql

type Query {
  first: String!
  second: Float
}

b.graphql

type Book {
  id: ID!
  name: String
  read: Boolean!
}

type Query {
  book(id: ID!): Book
}

type Mutation {
  readBook(id: ID!): Book
}

Running console.log(importSchema('*.graphql')) produces the following output:

type Query {
  first: String!
  second: Float
  book(id: ID!): Book
}

type Mutation {
  readBook(id: ID!): Book
}

type Book {
  id: ID!
  name: String
  read: Boolean!
}

Please refer to src/index.test.ts for more examples.

Development

The implementation documentation documents how things are implemented under the hood. You can also use the VSCode test setup to debug your code/tests.

  • Static import step as build time
  • Namespaces
  • Support importing from HTTP endpoints (or Links)
  • Create RFC to add import syntax to GraphQL spec

Prisma

FAQs

Package last updated on 18 Jun 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