UNPKG

@graphql-codegen/import-types-preset

Version:

GraphQL Code Generator preset for importing types to operation file

50 lines (49 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.preset = void 0; const tslib_1 = require("tslib"); const add_1 = tslib_1.__importDefault(require("@graphql-codegen/add")); const plugin_helpers_1 = require("@graphql-codegen/plugin-helpers"); exports.preset = { buildGeneratesSection: options => { if (!options.presetConfig.typesPath) { throw new Error(`Preset "import-types" requires you to specify "typesPath" configuration and point it to your base types file (generated by "typescript" plugin)!`); } const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types'; const pluginMap = { ...options.pluginMap, add: add_1.default, }; const plugins = [...options.plugins]; const config = { ...options.config, // This is for the operations plugin namespacedImportName: importTypesNamespace, // This is for the client-side runtime plugins importOperationTypesFrom: importTypesNamespace, externalFragments: [], }; options.documents.map(documentFile => { if ((0, plugin_helpers_1.isUsingTypes)(documentFile.document, config.externalFragments.map(m => m.name), options.schemaAst)) { const importType = options.config.useTypeImports ? 'import type' : 'import'; plugins.unshift({ add: { content: `${importType} * as ${importTypesNamespace} from '${options.presetConfig.typesPath}';\n`, }, }); } }); return [ { filename: options.baseOutputDir, plugins, pluginMap, config, schema: options.schema, schemaAst: options.schemaAst, documents: options.documents, }, ]; }, }; exports.default = exports.preset;