UNPKG

@graphql-tools/external-fragment-loader

Version:

A GraphQL loader that resolves cross-package fragment dependencies from external packages

58 lines (57 loc) • 2.27 kB
import { type DocumentNode } from 'graphql'; import { type GraphQLTagPluckOptions } from '@graphql-tools/graphql-tag-pluck'; interface FragmentInfo { name: string; typeCondition: string; } interface ParsedSource { rawSDL: string; document: DocumentNode; } export interface PackageFragmentMap { fragments: Map<string, { filePath: string; typeCondition: string; }>; spreadsPerFile: Map<string, Set<string>>; defsPerFile: Map<string, FragmentInfo[]>; } export interface ResolvedExternalFile { filePath: string; definitions: FragmentInfo[]; packageName: string; } interface ResolvedExternalFileWithSources extends ResolvedExternalFile { sources: ParsedSource[]; } export interface ExternalFragmentResolverOptions { packageDir: string; externalPackagesDirs: string[]; packageNameFilter?: (packageName: string) => boolean; packageDependencyFilter?: (dependencies: Record<string, string>) => boolean; includeDevDependencies?: boolean; scanInternalDirs?: string[]; extensions?: string[]; excludePatterns?: string[]; pluckConfig?: GraphQLTagPluckOptions; fileContentFilter?: (content: string, filePath: string) => boolean; cacheTTL?: number; invalidateTargetPackageCache?: boolean; } /** * Clears all internal caches. */ export declare function clearCache(): void; /** * Resolves cross-package GraphQL fragment dependencies across external packages. * Async version — reads files in parallel for better performance on large codebases. */ export declare function resolveExternalFragmentsWithSources(options: ExternalFragmentResolverOptions, filterToRequiredFragments?: boolean): Promise<ResolvedExternalFileWithSources[]>; export declare function resolveExternalFragments(options: ExternalFragmentResolverOptions): Promise<ResolvedExternalFile[]>; /** * Resolves cross-package GraphQL fragment dependencies across external packages. * Sync version. */ export declare function resolveExternalFragmentsSyncWithSources(options: ExternalFragmentResolverOptions, filterToRequiredFragments?: boolean): ResolvedExternalFileWithSources[]; export declare function resolveExternalFragmentsSync(options: ExternalFragmentResolverOptions): ResolvedExternalFile[]; export {};