UNPKG

3.02 kBJavaScriptView Raw
1import { loadSchema as loadSchemaToolkit, loadDocuments as loadDocumentsToolkit, } from '@graphql-tools/load';
2import { CodeFileLoader } from '@graphql-tools/code-file-loader';
3import { GitLoader } from '@graphql-tools/git-loader';
4import { GithubLoader } from '@graphql-tools/github-loader';
5import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';
6import { JsonFileLoader } from '@graphql-tools/json-file-loader';
7import { UrlLoader } from '@graphql-tools/url-loader';
8import { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';
9import { PrismaLoader } from '@graphql-tools/prisma-loader';
10import { join, extname } from 'path';
11export const defaultSchemaLoadOptions = {
12 assumeValidSDL: true,
13 sort: true,
14 convertExtensions: true,
15 includeSources: true,
16};
17export const defaultDocumentsLoadOptions = {
18 sort: true,
19 skipGraphQLImport: true,
20};
21export async function loadSchema(schemaPointers, config) {
22 try {
23 const loaders = [
24 new CodeFileLoader(),
25 new GitLoader(),
26 new GithubLoader(),
27 new GraphQLFileLoader(),
28 new JsonFileLoader(),
29 new UrlLoader(),
30 new ApolloEngineLoader(),
31 new PrismaLoader(),
32 ];
33 const schema = await loadSchemaToolkit(schemaPointers, {
34 ...defaultSchemaLoadOptions,
35 loaders,
36 ...config,
37 ...config.config,
38 });
39 return schema;
40 }
41 catch (e) {
42 throw new Error(`
43 Failed to load schema from ${Object.keys(schemaPointers).join(',')}:
44
45 ${e.message || e}
46 ${e.stack || ''}
47
48 GraphQL Code Generator supports:
49 - ES Modules and CommonJS exports (export as default or named export "schema")
50 - Introspection JSON File
51 - URL of GraphQL endpoint
52 - Multiple files with type definitions (glob expression)
53 - String in config file
54
55 Try to use one of above options and run codegen again.
56
57 `);
58 }
59}
60export async function loadDocuments(documentPointers, config) {
61 const loaders = [
62 new CodeFileLoader({
63 pluckConfig: {
64 skipIndent: true,
65 },
66 }),
67 new GitLoader(),
68 new GithubLoader(),
69 new GraphQLFileLoader(),
70 ];
71 const ignore = [];
72 for (const generatePath of Object.keys(config.generates)) {
73 if (extname(generatePath) === '') {
74 // we omit paths that don't resolve to a specific file
75 continue;
76 }
77 ignore.push(join(process.cwd(), generatePath));
78 }
79 try {
80 const loadedFromToolkit = await loadDocumentsToolkit(documentPointers, {
81 ...defaultDocumentsLoadOptions,
82 ignore,
83 loaders,
84 ...config,
85 ...config.config,
86 });
87 return loadedFromToolkit;
88 }
89 catch (error) {
90 if (config.ignoreNoDocuments)
91 return [];
92 throw error;
93 }
94}