UNPKG

@nestjs/graphql

Version:

Nest - modern, fast, powerful node.js web framework (@graphql)

78 lines (77 loc) 4.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TypeDefinitionsGenerator = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const enum_definition_factory_1 = require("./factories/enum-definition.factory"); const input_type_definition_factory_1 = require("./factories/input-type-definition.factory"); const interface_definition_factory_1 = require("./factories/interface-definition.factory"); const object_type_definition_factory_1 = require("./factories/object-type-definition.factory"); const union_definition_factory_1 = require("./factories/union-definition.factory"); const type_definitions_storage_1 = require("./storages/type-definitions.storage"); const type_metadata_storage_1 = require("./storages/type-metadata.storage"); let TypeDefinitionsGenerator = class TypeDefinitionsGenerator { constructor(typeDefinitionsStorage, enumDefinitionFactory, inputTypeDefinitionFactory, objectTypeDefinitionFactory, interfaceDefinitionFactory, unionDefinitionFactory) { this.typeDefinitionsStorage = typeDefinitionsStorage; this.enumDefinitionFactory = enumDefinitionFactory; this.inputTypeDefinitionFactory = inputTypeDefinitionFactory; this.objectTypeDefinitionFactory = objectTypeDefinitionFactory; this.interfaceDefinitionFactory = interfaceDefinitionFactory; this.unionDefinitionFactory = unionDefinitionFactory; } generate(options, includeModules) { // Clear previous type definitions to support multiple schema generation this.typeDefinitionsStorage.clear(); if (includeModules?.length) { // Filter metadata by modules this.generateUnionDefs(type_metadata_storage_1.TypeMetadataStorage.getUnionsMetadataByModules(includeModules)); this.generateEnumDefs(type_metadata_storage_1.TypeMetadataStorage.getEnumsMetadataByModules(includeModules)); this.generateInterfaceDefs(options, type_metadata_storage_1.TypeMetadataStorage.getInterfacesMetadataByModules(includeModules)); this.generateObjectTypeDefs(options, type_metadata_storage_1.TypeMetadataStorage.getObjectTypesMetadataByModules(includeModules)); this.generateInputTypeDefs(options, type_metadata_storage_1.TypeMetadataStorage.getInputTypesMetadataByModules(includeModules)); } else { // Use all metadata when no module filter is specified this.generateUnionDefs(); this.generateEnumDefs(); this.generateInterfaceDefs(options); this.generateObjectTypeDefs(options); this.generateInputTypeDefs(options); } } generateInputTypeDefs(options, metadata) { const inputTypeMetadata = metadata ?? type_metadata_storage_1.TypeMetadataStorage.getInputTypesMetadata(); const inputTypeDefs = inputTypeMetadata.map((item) => this.inputTypeDefinitionFactory.create(item, options)); this.typeDefinitionsStorage.addInputTypes(inputTypeDefs); } generateObjectTypeDefs(options, metadata) { const objectTypeMetadata = metadata ?? type_metadata_storage_1.TypeMetadataStorage.getObjectTypesMetadata(); const objectTypeDefs = objectTypeMetadata.map((item) => this.objectTypeDefinitionFactory.create(item, options)); this.typeDefinitionsStorage.addObjectTypes(objectTypeDefs); } generateInterfaceDefs(options, metadata) { const interfaceMetadata = metadata ?? type_metadata_storage_1.TypeMetadataStorage.getInterfacesMetadata(); const interfaceDefs = interfaceMetadata.map((item) => this.interfaceDefinitionFactory.create(item, options)); this.typeDefinitionsStorage.addInterfaces(interfaceDefs); } generateEnumDefs(metadata) { const enumMetadata = metadata ?? type_metadata_storage_1.TypeMetadataStorage.getEnumsMetadata(); const enumDefs = enumMetadata.map((item) => this.enumDefinitionFactory.create(item)); this.typeDefinitionsStorage.addEnums(enumDefs); } generateUnionDefs(metadata) { const unionMetadata = metadata ?? type_metadata_storage_1.TypeMetadataStorage.getUnionsMetadata(); const unionDefs = unionMetadata.map((item) => this.unionDefinitionFactory.create(item)); this.typeDefinitionsStorage.addUnions(unionDefs); } }; exports.TypeDefinitionsGenerator = TypeDefinitionsGenerator; exports.TypeDefinitionsGenerator = TypeDefinitionsGenerator = tslib_1.__decorate([ (0, common_1.Injectable)(), tslib_1.__metadata("design:paramtypes", [type_definitions_storage_1.TypeDefinitionsStorage, enum_definition_factory_1.EnumDefinitionFactory, input_type_definition_factory_1.InputTypeDefinitionFactory, object_type_definition_factory_1.ObjectTypeDefinitionFactory, interface_definition_factory_1.InterfaceDefinitionFactory, union_definition_factory_1.UnionDefinitionFactory]) ], TypeDefinitionsGenerator);