UNPKG

@eddeee888/gcg-typescript-resolver-files

Version:

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

65 lines (64 loc) 2.89 kB
import { type GraphQLSchema } from 'graphql'; import type { ParseSourcesResult } from '../parseSources'; import type { TypeMappersMap } from '../parseTypeMappers'; import type { ParsedPresetConfig, ScalarsOverridesType } from '../validatePresetConfig'; import { normalizeResolverName } from './normalizeResolverName'; import type { GeneratedTypesFileMeta } from '../generateResolverFiles'; interface ParseGraphQLSchemaParams { schemaAst: GraphQLSchema; sourceMap: ParseSourcesResult['sourceMap']; resolverTypesPath: string; typeMappersMap: TypeMappersMap; scalarsModule: ParsedPresetConfig['scalarsModule']; scalarsOverrides: ParsedPresetConfig['scalarsOverrides']; mode: ParsedPresetConfig['mode']; baseOutputDir: string; resolverRelativeTargetDir: string; whitelistedModules: ParsedPresetConfig['whitelistedModules']; blacklistedModules: ParsedPresetConfig['blacklistedModules']; } export interface ResolverDetails { schemaType: string; moduleName: string; resolverFile: { name: string; path: string; isOnFilesystem: boolean; }; relativePathFromBaseToModule: string[]; normalizedResolverName: ReturnType<typeof normalizeResolverName>; typeNamedImport: (generatedTypesFileMeta: GeneratedTypesFileMeta) => string; typeString: (generatedTypesFileMeta: GeneratedTypesFileMeta) => string; relativePathToResolverTypesFile: string; } type ObjectResolverDetails = ResolverDetails & { fieldsToPick: string[]; }; type EnumResolverDetails = ResolverDetails & { allowedValues: string[]; }; export interface ParsedGraphQLSchemaMeta { userDefinedSchemaTypeMap: { query: Record<string, // normalized resolver name ResolverDetails>; mutation: Record<string, // normalized resolver name ResolverDetails>; subscription: Record<string, // normalized resolver name ResolverDetails>; object: Record<string, // schema name e.g. `User`, `Job`, etc. Record<string, // normalized name e.g. `user.User` (modules) or `.User` (merged) ObjectResolverDetails>>; scalar: Record<string, ResolverDetails>; interface: Record<string, ResolverDetails>; union: Record<string, ResolverDetails>; enum: Record<string, EnumResolverDetails>; }; pluginsConfig: { defaultScalarTypesMap: Record<string, ScalarsOverridesType>; scalarsModuleResolvers: Record<string, string>; unmanagedScalarResolvers: Record<string, string>; defaultTypeMappers: Record<string, string>; }; } export declare const parseGraphQLSchema: ({ schemaAst, sourceMap, resolverTypesPath, typeMappersMap, scalarsModule, scalarsOverrides, mode, baseOutputDir, resolverRelativeTargetDir, whitelistedModules, blacklistedModules, }: ParseGraphQLSchemaParams) => Promise<ParsedGraphQLSchemaMeta>; export {};