import type ts from '../tsmodule'; import { GraphQLError, type ASTNode, type DocumentNode, type FragmentDefinitionNode } from 'graphql'; import { ScriptSourceHelper, ResolvedTemplateInfo, StrictTagCondition } from '../ts-ast-util'; import type { ManifestOutput, OperationType } from './types'; import { ErrorWithLocation } from '../errors'; import { FragmentRegistry } from '../gql-ast-util'; export type ExtractorOptions = { removeDuplicatedFragments: boolean; scriptSourceHelper: ScriptSourceHelper; fragmentRegistry: FragmentRegistry; debug: (msg: string) => void; }; export type ExtractTemplateResolveErrorResult = { fileName: string; templateNode: ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression; resolveTemplateError: { message: string; start: number; end: number; }; documentNode: undefined; resolevedTemplateInfo: undefined; graphqlError: undefined; }; export type ExtractGraphQLErrorResult = { fileName: string; templateNode: ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression; resolevedTemplateInfo: ResolvedTemplateInfo; resolveTemplateError: undefined; graphqlError: GraphQLError; resolveTemplateErrorMessage: undefined; documentNode: undefined; }; export type ExtractSucceededResult = { fileName: string; templateNode: ts.NoSubstitutionTemplateLiteral | ts.TemplateExpression; documentNode: DocumentNode; resolevedTemplateInfo: ResolvedTemplateInfo; resolveTemplateError: undefined; graphqlError: undefined; resolveTemplateErrorMessage: undefined; }; export type ExtractFileResult = ExtractTemplateResolveErrorResult | ExtractGraphQLErrorResult | ExtractSucceededResult; export type ExtractResult = { fileEntries: ExtractFileResult[]; globalFragments: { definitions: FragmentDefinitionNode[]; definitionMap: Map; duplicatedDefinitions: Set; }; }; export declare class Extractor { private readonly _removeDuplicatedFragments; private readonly _helper; private readonly _fragmentRegistry; private readonly _debug; constructor({ debug, removeDuplicatedFragments, fragmentRegistry, scriptSourceHelper }: ExtractorOptions); extract(files: string[], tag: StrictTagCondition): ExtractResult; pickupErrors({ fileEntries: extractResults }: ExtractResult, { ignoreGraphQLError }?: { ignoreGraphQLError: boolean; }): ErrorWithLocation[]; getDominantDefinition(result: ExtractSucceededResult): { type: OperationType | undefined; operationName: string | undefined; fragmentName: string; }; inflateDocument(fileEntry: ExtractSucceededResult, { globalFragments }: { globalFragments: { definitionMap: Map; }; }): { inflatedDocumentNode: DocumentNode; externalFragments: FragmentDefinitionNode[]; additionalDocuments: DocumentNode; isDefinedExternal: (node: ASTNode) => boolean; }; toManifest({ fileEntries: extractResults, globalFragments }: ExtractResult, tag: StrictTagCondition): ManifestOutput; }