UNPKG

@eddeee888/gcg-typescript-resolver-files

Version:

This [GraphQL Code Generator](https://www.the-guild.dev/graphql/codegen) plugin creates resolvers given GraphQL schema.

165 lines (164 loc) 6.06 kB
import type { SourceFile, Project } from 'ts-morph'; import type * as typeScriptResolversPlugin from '@graphql-codegen/typescript-resolvers'; import type { GraphQLObjectTypeResolversToGenerate } from '../getGraphQLObjectTypeResolversToGenerate'; import type { TypeMappersMap } from '../parseTypeMappers'; import type { ImportLineMeta, RootObjectType } from '../utils'; import type { ParsedPresetConfig } from '../validatePresetConfig'; import type { NormalizedResolverName } from '../parseGraphQLSchema'; import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema'; export type GeneratedTypesFileMeta = { generatedResolverTypes: NonNullable<Awaited<ReturnType<typeof typeScriptResolversPlugin.plugin>>['meta']>['generatedResolverTypes']; }; interface BaseVirtualFile { __filetype: string; filesystem: { type: 'virtual' | 'filesystem'; contentUpdated: boolean; }; content: string; mainImportIdentifier: string; } export interface StandardFile extends BaseVirtualFile { __filetype: 'file'; } export interface InterfacelResolverFile extends BaseVirtualFile { __filetype: 'interfaceResolver'; meta: { moduleName: string; relativePathFromBaseToModule: string[]; resolverTypeImportDeclaration: string; variableStatement: string; resolverType: { baseImport: string; final: string; }; normalizedResolverName: NormalizedResolverName; }; } export interface UnionResolverFile extends BaseVirtualFile { __filetype: 'unionResolver'; meta: { moduleName: string; relativePathFromBaseToModule: string[]; resolverTypeImportDeclaration: string; variableStatement: string; resolverType: { baseImport: string; final: string; }; normalizedResolverName: NormalizedResolverName; }; } export interface ScalarResolverFile extends BaseVirtualFile { __filetype: 'scalarResolver'; meta: { moduleName: string; relativePathFromBaseToModule: string[]; resolverTypeImportDeclaration: string; variableStatement: string; resolverType: { baseImport: string; final: string; }; normalizedResolverName: NormalizedResolverName; }; } export interface EnumResolverFile extends BaseVirtualFile { __filetype: 'enumResolver'; meta: { moduleName: string; relativePathFromBaseToModule: string[]; resolverTypeImportDeclaration: string; variableStatement: string; resolverType: { baseImport: string; final: string; }; normalizedResolverName: NormalizedResolverName; allowedValues: string[]; }; } export interface RootObjectTypeFieldResolverFile extends BaseVirtualFile { __filetype: 'rootObjectTypeFieldResolver'; meta: { moduleName: string; relativePathFromBaseToModule: string[]; belongsToRootObject: RootObjectType; resolverTypeImportDeclaration: string; variableStatement: string; resolverType: { baseImport: string; resolver: string; final: string; }; normalizedResolverName: NormalizedResolverName; }; } export interface ObjectTypeFile extends BaseVirtualFile { __filetype: 'objectType'; meta: { moduleName: string; relativePathFromBaseToModule: string[]; resolverTypeImportDeclaration: string; variableStatement: string; resolverType: { baseImport: string; final: string; otherVariants: string[]; }; normalizedResolverName: NormalizedResolverName; resolversToGenerate?: GraphQLObjectTypeResolversToGenerate[number]; }; } export type ResolverFile = RootObjectTypeFieldResolverFile | ObjectTypeFile | InterfacelResolverFile | UnionResolverFile | ScalarResolverFile | EnumResolverFile; export interface GenerateResolverFilesContext { config: { baseOutputDir: string; resolverTypesPath: string; resolverRelativeTargetDir: string; resolverMainFile: string; resolverMainFileMode: ParsedPresetConfig['resolverMainFileMode']; resolverGeneration: ParsedPresetConfig['resolverGeneration']; unmanagedResolvers: Record<string, string>; tsMorph: { project: Project; typesSourceFile: SourceFile; }; typeMappersMap: TypeMappersMap; parsedGraphQLSchemaMeta: ParsedGraphQLSchemaMeta; graphQLObjectTypeResolversToGenerate: GraphQLObjectTypeResolversToGenerate; fixObjectTypeResolvers: ParsedPresetConfig['fixObjectTypeResolvers']; emitLegacyCommonJSImports: boolean; generatedTypesFileMeta: GeneratedTypesFileMeta; }; result: { files: Record<string, StandardFile | ResolverFile>; externalImports: Record<string, { moduleName: string; relativePathFromBaseToModule: string[]; importLineMeta: ImportLineMeta; identifierUsages: { identifierName: string; normalizedResolverName: string; }[]; }>; }; } export interface GraphQLTypeHandlerParams<BelongsToRootObject = null> { moduleName: string; relativePathFromBaseToModule: string[]; fieldFilePath: string; resolverName: string; isFileAlreadyOnFilesystem: boolean; belongsToRootObject: BelongsToRootObject; normalizedResolverName: NormalizedResolverName; resolversTypeMeta: { typeNamedImport: string; module: ImportLineMeta['module']; moduleType: ImportLineMeta['moduleType']; typeString: string; }; generatedTypesFileMeta: GeneratedTypesFileMeta; } export type GraphQLTypeHandler<BelongsToRootObject = null, ExtraParams = Record<string, unknown>> = (params: GraphQLTypeHandlerParams<BelongsToRootObject> & ExtraParams, ctx: GenerateResolverFilesContext) => void; export {};