UNPKG

1.7 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.TsIntrospectionVisitor = exports.plugin = void 0;
4const tslib_1 = require("tslib");
5const plugin_helpers_1 = require("@graphql-codegen/plugin-helpers");
6const visitor_js_1 = require("./visitor.js");
7const typescript_1 = require("@graphql-codegen/typescript");
8Object.defineProperty(exports, "TsIntrospectionVisitor", { enumerable: true, get: function () { return typescript_1.TsIntrospectionVisitor; } });
9tslib_1.__exportStar(require("./visitor.js"), exports);
10const TYPE_GRAPHQL_IMPORT = `import * as TypeGraphQL from 'type-graphql';\nexport { TypeGraphQL };`;
11const isDefinitionInterface = (definition) => definition.includes('@TypeGraphQL.InterfaceType()');
12const plugin = (schema, documents, config) => {
13 const visitor = new visitor_js_1.TypeGraphQLVisitor(schema, config);
14 const astNode = (0, plugin_helpers_1.getCachedDocumentNodeFromSchema)(schema);
15 const visitorResult = (0, plugin_helpers_1.oldVisit)(astNode, { leave: visitor });
16 const introspectionDefinitions = (0, typescript_1.includeIntrospectionTypesDefinitions)(schema, documents, config);
17 const scalars = visitor.scalarsDefinition;
18 const { definitions } = visitorResult;
19 // Sort output by interfaces first, classes last to prevent TypeScript errors
20 definitions.sort((definition1, definition2) => +isDefinitionInterface(definition2) - +isDefinitionInterface(definition1));
21 return {
22 prepend: [...visitor.getEnumsImports(), ...visitor.getWrapperDefinitions(), TYPE_GRAPHQL_IMPORT],
23 content: [scalars, ...definitions, ...introspectionDefinitions].join('\n'),
24 };
25};
26exports.plugin = plugin;