apollo-language-server
Version:
A language server for Apollo GraphQL projects
72 lines • 3.15 kB
TypeScript
import { TypeSystemDefinitionNode, TypeSystemExtensionNode, DefinitionNode, GraphQLSchema } from "graphql";
import { TextDocument, NotificationHandler, PublishDiagnosticsParams, Position } from "vscode-languageserver";
import { GraphQLDocument } from "../document";
import { LoadingHandler } from "../loadingHandler";
import { FileSet } from "../fileSet";
import { ApolloConfig } from "../config";
import { GraphQLSchemaProvider, SchemaResolveConfig } from "../providers/schema";
import { ApolloEngineClient, ClientIdentity } from "../engine";
export declare type DocumentUri = string;
export interface GraphQLProjectConfig {
clientIdentity?: ClientIdentity;
config: ApolloConfig;
fileSet: FileSet;
loadingHandler: LoadingHandler;
}
export interface TypeStats {
service?: number;
client?: number;
total?: number;
}
export interface ProjectStats {
type: string;
loaded: boolean;
serviceId?: string;
types?: TypeStats;
tag?: string;
lastFetch?: number;
}
export declare abstract class GraphQLProject implements GraphQLSchemaProvider {
schemaProvider: GraphQLSchemaProvider;
protected _onDiagnostics?: NotificationHandler<PublishDiagnosticsParams>;
private _isReady;
private readyPromise;
protected engineClient?: ApolloEngineClient;
private needsValidation;
protected documentsByFile: Map<DocumentUri, GraphQLDocument[]>;
config: ApolloConfig;
schema?: GraphQLSchema;
private fileSet;
protected loadingHandler: LoadingHandler;
protected lastLoadDate?: number;
constructor({ config, fileSet, loadingHandler, clientIdentity, }: GraphQLProjectConfig);
abstract get displayName(): string;
protected abstract initialize(): Promise<void>[];
abstract getProjectStats(): ProjectStats;
get isReady(): boolean;
get engine(): ApolloEngineClient;
get whenReady(): Promise<void>;
updateConfig(config: ApolloConfig): Promise<void>[];
resolveSchema(config: SchemaResolveConfig): Promise<GraphQLSchema>;
resolveFederatedServiceSDL(): Promise<string | void>;
onSchemaChange(handler: NotificationHandler<GraphQLSchema>): import("../providers/schema").SchemaChangeUnsubscribeHandler;
onDiagnostics(handler: NotificationHandler<PublishDiagnosticsParams>): void;
includesFile(uri: DocumentUri): boolean;
scanAllIncludedFiles(): Promise<void>;
fileDidChange(uri: DocumentUri): void;
fileWasDeleted(uri: DocumentUri): void;
documentDidChange(document: TextDocument): void;
checkForDuplicateOperations(): void;
private removeGraphQLDocumentsFor;
protected invalidate(): void;
private validateIfNeeded;
abstract validate(): void;
clearAllDiagnostics(): void;
documentsAt(uri: DocumentUri): GraphQLDocument[] | undefined;
documentAt(uri: DocumentUri, position: Position): GraphQLDocument | undefined;
get documents(): GraphQLDocument[];
get definitions(): DefinitionNode[];
definitionsAt(uri: DocumentUri): DefinitionNode[];
get typeSystemDefinitionsAndExtensions(): (TypeSystemDefinitionNode | TypeSystemExtensionNode)[];
}
//# sourceMappingURL=base.d.ts.map