UNPKG

graphql-import

Version:

![IMPORT_1](https://user-images.githubusercontent.com/25294569/76310705-fc621b00-62d7-11ea-9643-1670cfe6be18.gif) # graphql-import

60 lines (57 loc) 2.11 kB
import { loadSchema, loadTypedefs, OPERATION_KINDS } from '@graphql-toolkit/core'; import { UrlLoader } from '@graphql-toolkit/url-loader'; import { JsonFileLoader } from '@graphql-toolkit/json-file-loader'; import { GraphQLFileLoader } from '@graphql-toolkit/graphql-file-loader'; import { CodeFileLoader } from '@graphql-toolkit/code-file-loader'; import { GitLoader } from '@graphql-toolkit/git-loader'; import { GithubLoader } from '@graphql-toolkit/github-loader'; import { ApolloEngineLoader } from '@graphql-toolkit/apollo-engine-loader'; import { PrismaLoader } from '@graphql-toolkit/prisma-loader'; import { parse, print } from 'graphql'; import { mergeTypeDefs } from '@graphql-toolkit/schema-merging'; const DEFAULT_SCHEMA_LOADERS = [ new UrlLoader(), new JsonFileLoader(), new GraphQLFileLoader(), new CodeFileLoader(), new GitLoader(), new GithubLoader(), new ApolloEngineLoader(), new PrismaLoader() ]; async function importSchema(pointerOrPointers, options = {}) { const allOptions = { loaders: DEFAULT_SCHEMA_LOADERS, filterKinds: OPERATION_KINDS, sort: false, forceGraphQLImport: true, useSchemaDefinition: false, ...options, }; const out = options.out; if (out === 'GraphQLSchema') { return loadSchema(pointerOrPointers, allOptions); } else { const results = await loadTypedefs(pointerOrPointers, allOptions); const mergedDocuments = mergeTypeDefs(results.map(r => r.document), allOptions); if (out === 'DocumentNode') { if (typeof mergedDocuments === 'string') { return parse(mergedDocuments); } else { return mergedDocuments; } } else { if (typeof mergedDocuments === 'string') { return mergedDocuments; } else if (mergedDocuments) { return print(mergedDocuments); } return ''; } } } export { importSchema };