graphql-import
Version:
 # graphql-import
64 lines (59 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
const core = require('@graphql-toolkit/core');
const urlLoader = require('@graphql-toolkit/url-loader');
const jsonFileLoader = require('@graphql-toolkit/json-file-loader');
const graphqlFileLoader = require('@graphql-toolkit/graphql-file-loader');
const codeFileLoader = require('@graphql-toolkit/code-file-loader');
const gitLoader = require('@graphql-toolkit/git-loader');
const githubLoader = require('@graphql-toolkit/github-loader');
const apolloEngineLoader = require('@graphql-toolkit/apollo-engine-loader');
const prismaLoader = require('@graphql-toolkit/prisma-loader');
const graphql = require('graphql');
const schemaMerging = require('@graphql-toolkit/schema-merging');
const DEFAULT_SCHEMA_LOADERS = [
new urlLoader.UrlLoader(),
new jsonFileLoader.JsonFileLoader(),
new graphqlFileLoader.GraphQLFileLoader(),
new codeFileLoader.CodeFileLoader(),
new gitLoader.GitLoader(),
new githubLoader.GithubLoader(),
new apolloEngineLoader.ApolloEngineLoader(),
new prismaLoader.PrismaLoader()
];
async function importSchema(pointerOrPointers, options = {}) {
const allOptions = {
loaders: DEFAULT_SCHEMA_LOADERS,
filterKinds: core.OPERATION_KINDS,
sort: false,
forceGraphQLImport: true,
useSchemaDefinition: false,
...options,
};
const out = options.out;
if (out === 'GraphQLSchema') {
return core.loadSchema(pointerOrPointers, allOptions);
}
else {
const results = await core.loadTypedefs(pointerOrPointers, allOptions);
const mergedDocuments = schemaMerging.mergeTypeDefs(results.map(r => r.document), allOptions);
if (out === 'DocumentNode') {
if (typeof mergedDocuments === 'string') {
return graphql.parse(mergedDocuments);
}
else {
return mergedDocuments;
}
}
else {
if (typeof mergedDocuments === 'string') {
return mergedDocuments;
}
else if (mergedDocuments) {
return graphql.print(mergedDocuments);
}
return '';
}
}
}
exports.importSchema = importSchema;