UNPKG

2.48 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.findAndLoadGraphQLConfig = exports.CodegenExtension = void 0;
4const graphql_config_1 = require("graphql-config");
5const apollo_engine_loader_1 = require("@graphql-tools/apollo-engine-loader");
6const code_file_loader_1 = require("@graphql-tools/code-file-loader");
7const git_loader_1 = require("@graphql-tools/git-loader");
8const github_loader_1 = require("@graphql-tools/github-loader");
9const prisma_loader_1 = require("@graphql-tools/prisma-loader");
10const CodegenExtension = (api) => {
11 // Schema
12 api.loaders.schema.register(new code_file_loader_1.CodeFileLoader({
13 pluckConfig: {
14 skipIndent: true,
15 },
16 }));
17 api.loaders.schema.register(new git_loader_1.GitLoader());
18 api.loaders.schema.register(new github_loader_1.GithubLoader());
19 api.loaders.schema.register(new apollo_engine_loader_1.ApolloEngineLoader());
20 api.loaders.schema.register(new prisma_loader_1.PrismaLoader());
21 // Documents
22 api.loaders.documents.register(new code_file_loader_1.CodeFileLoader({
23 pluckConfig: {
24 skipIndent: true,
25 },
26 }));
27 api.loaders.documents.register(new git_loader_1.GitLoader());
28 api.loaders.documents.register(new github_loader_1.GithubLoader());
29 return {
30 name: 'codegen',
31 };
32};
33exports.CodegenExtension = CodegenExtension;
34async function findAndLoadGraphQLConfig(filepath) {
35 const config = await (0, graphql_config_1.loadConfig)({
36 filepath,
37 rootDir: process.cwd(),
38 extensions: [exports.CodegenExtension],
39 throwOnEmpty: false,
40 throwOnMissing: false,
41 });
42 if (isGraphQLConfig(config)) {
43 return config;
44 }
45}
46exports.findAndLoadGraphQLConfig = findAndLoadGraphQLConfig;
47// Kamil: user might load a config that is not GraphQL Config
48// so we need to check if it's a regular config or not
49function isGraphQLConfig(config) {
50 if (!config) {
51 return false;
52 }
53 try {
54 return config.getDefault().hasExtension('codegen');
55 }
56 catch (e) { }
57 try {
58 for (const projectName in config.projects) {
59 if (config.projects.hasOwnProperty(projectName)) {
60 const project = config.projects[projectName];
61 if (project.hasExtension('codegen')) {
62 return true;
63 }
64 }
65 }
66 }
67 catch (e) { }
68 return false;
69}