UNPKG

@graphql-cli/init

Version:

Creates a GraphQL project using a template or GraphQL Config file for your existing project.

105 lines 4.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.askForCodegen = void 0; const inquirer_1 = require("inquirer"); const common_1 = require("../common"); async function askForCodegen({ context, project }) { if (!context.graphqlConfig.extensions.codegen) { const { isCodegenAsked } = await inquirer_1.prompt([ { type: 'confirm', name: 'isCodegenAsked', message: 'Do you want to use GraphQL Code Generator?', default: true, }, ]); if (isCodegenAsked) { project.addDependency('@graphql-cli/codegen'); project.addScript('graphql:codegen', 'graphql codegen'); context.graphqlConfig.extensions.codegen = { generates: {}, }; let codegenPlugins = new Set(); if (context.type === common_1.ProjectType.FullStack || context.type === common_1.ProjectType.BackendOnly) { const backendType = await common_1.askForEnum({ enum: common_1.BackendType, message: 'What type of backend do you use?', defaultValue: common_1.BackendType.TS, }); switch (backendType) { case common_1.BackendType.TS: codegenPlugins.add('typescript'); codegenPlugins.add('typescript-resolvers'); break; case common_1.BackendType.Java: codegenPlugins.add('java'); codegenPlugins.add('java-resolvers'); break; case common_1.BackendType.Kotlin: codegenPlugins.add('java'); codegenPlugins.add('java-kotlin'); break; } const { backendGeneratedFile } = await inquirer_1.prompt([ { type: 'input', name: 'backendGeneratedFile', message: 'Where do you want to have generated backend code?', default: './generated-backend.ts', }, ]); context.graphqlConfig.extensions.codegen.generates[backendGeneratedFile] = { plugins: [...codegenPlugins], }; } if (context.type === common_1.ProjectType.FullStack || context.type === common_1.ProjectType.FrontendOnly) { const frontendType = await common_1.askForEnum({ enum: common_1.FrontendType, message: 'What type of frontend do you use?', defaultValue: common_1.FrontendType.TSReactApollo, }); switch (frontendType) { case common_1.FrontendType.TSReactApollo: codegenPlugins.add('typescript'); codegenPlugins.add('typescript-react-apollo'); break; case common_1.FrontendType.ApolloAngular: codegenPlugins.add('typescript'); codegenPlugins.add('typescript-apollo-angular'); break; case common_1.FrontendType.StencilApollo: codegenPlugins.add('typescript'); codegenPlugins.add('typescript-stencil-apollo'); break; case common_1.FrontendType.TSUrql: codegenPlugins.add('typescript'); codegenPlugins.add('typescript-urql'); break; case common_1.FrontendType.GraphQLRequest: codegenPlugins.add('typescript'); codegenPlugins.add('typescript-graphql-request'); break; case common_1.FrontendType.ApolloAndroid: codegenPlugins.add('java-apollo-android'); break; } const { frontendGeneratedFile } = await inquirer_1.prompt([ { type: 'input', name: 'frontendGeneratedFile', message: 'Where do you want to have generated frontend code?', default: './generated-frontend.ts', }, ]); context.graphqlConfig.extensions.codegen.generates[frontendGeneratedFile] = { plugins: [...codegenPlugins], }; } for (const codegenPlugin of codegenPlugins) { project.addDependency('@graphql-codegen/' + codegenPlugin); } } } } exports.askForCodegen = askForCodegen; //# sourceMappingURL=codegen.js.map