@graphql-codegen/import-types-preset
Version:
GraphQL Code Generator preset for importing types to operation file
50 lines (49 loc) • 2.03 kB
JavaScript
;
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;