UNPKG

@graphql-codegen/typescript-type-graphql

Version:

GraphQL Code Generator plugin for generating TypeGraphQL compatible TypeScript types

31 lines (30 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TsIntrospectionVisitor = exports.plugin = void 0; const tslib_1 = require("tslib"); const plugin_helpers_1 = require("@graphql-codegen/plugin-helpers"); const typescript_1 = require("@graphql-codegen/typescript"); Object.defineProperty(exports, "TsIntrospectionVisitor", { enumerable: true, get: function () { return typescript_1.TsIntrospectionVisitor; } }); const visitor_js_1 = require("./visitor.js"); tslib_1.__exportStar(require("./visitor.js"), exports); const TYPE_GRAPHQL_IMPORT = `import * as TypeGraphQL from 'type-graphql';\nexport { TypeGraphQL };`; const isDefinitionInterface = (definition) => definition.includes('@TypeGraphQL.InterfaceType()'); const plugin = (schema, documents, config) => { const visitor = new visitor_js_1.TypeGraphQLVisitor(schema, config); const astNode = (0, plugin_helpers_1.getCachedDocumentNodeFromSchema)(schema); const visitorResult = (0, plugin_helpers_1.oldVisit)(astNode, { leave: visitor }); const introspectionDefinitions = (0, typescript_1.includeIntrospectionTypesDefinitions)(schema, documents, config); const scalars = visitor.scalarsDefinition; const { definitions } = visitorResult; // Sort output by interfaces first, classes last to prevent TypeScript errors definitions.sort((definition1, definition2) => +isDefinitionInterface(definition2) - +isDefinitionInterface(definition1)); return { prepend: [ ...visitor.getEnumsImports(), ...visitor.getWrapperDefinitions(), TYPE_GRAPHQL_IMPORT, ], content: [scalars, ...definitions, ...introspectionDefinitions].join('\n'), }; }; exports.plugin = plugin;