@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
TypeScript
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 {};