import { TraceMap } from '@jridgewell/trace-mapping'; import type ts from 'typescript'; import { CodeAction, ColorPresentation, CompletionItem, Diagnostic, FoldingRange, Hover, InsertReplaceEdit, LocationLink, Position, Range, SelectionRange, SymbolInformation, TextDocumentEdit, TextEdit } from 'vscode-languageserver'; import { DocumentSnapshot, ScriptTagDocumentSnapshot } from '../../plugins/typescript/snapshots/DocumentSnapshot'; import { TagInformation } from './utils'; export interface DocumentMapper { /** * Map the generated position to the original position * @param generatedPosition Position in fragment */ getOriginalPosition(generatedPosition: Position): Position; /** * Map the original position to the generated position * @param originalPosition Position in parent */ getGeneratedPosition(originalPosition: Position): Position; /** * Returns true if the given original position is inside of the generated map * @param pos Position in original */ isInGenerated(pos: Position): boolean; /** * Get document URL */ getURL(): string; /** * Implement this if you need teardown logic before this mapper gets cleaned up. */ destroy?(): void; } /** * Does not map, returns positions as is. */ export declare class IdentityMapper implements DocumentMapper { private url; private parent?; constructor(url: string, parent?: DocumentMapper | undefined); getOriginalPosition(generatedPosition: Position): Position; getGeneratedPosition(originalPosition: Position): Position; isInGenerated(position: Position): boolean; getURL(): string; destroy(): void; } /** * Maps positions in a fragment relative to a parent. */ export declare class FragmentMapper implements DocumentMapper { private originalText; private tagInfo; private url; private lineOffsetsOriginal; private lineOffsetsGenerated; constructor(originalText: string, tagInfo: TagInformation, url: string); getOriginalPosition(generatedPosition: Position): Position; private offsetInParent; getGeneratedPosition(originalPosition: Position): Position; isInGenerated(pos: Position): boolean; getURL(): string; } export declare class SourceMapDocumentMapper implements DocumentMapper { protected traceMap: TraceMap; protected sourceUri: string; private parent?; constructor(traceMap: TraceMap, sourceUri: string, parent?: DocumentMapper | undefined); getOriginalPosition(generatedPosition: Position): Position; getGeneratedPosition(originalPosition: Position): Position; isInGenerated(position: Position): boolean; getURL(): string; } export declare class ConsumerDocumentMapper extends SourceMapDocumentMapper { private nrPrependesLines; constructor(traceMap: TraceMap, sourceUri: string, nrPrependesLines: number); getOriginalPosition(generatedPosition: Position): Position; getGeneratedPosition(originalPosition: Position): Position; isInGenerated(): boolean; } export declare function mapRangeToOriginal(fragment: Pick, range: Range): Range; export declare function mapRangeToGenerated(fragment: DocumentMapper, range: Range): Range; export declare function mapCompletionItemToOriginal(fragment: Pick, item: CompletionItem): CompletionItem; export declare function mapHoverToParent(fragment: Pick, hover: Hover): Hover; export declare function mapObjWithRangeToOriginal(fragment: Pick, objWithRange: T): T; export declare function mapInsertReplaceEditToOriginal(fragment: Pick, edit: InsertReplaceEdit): InsertReplaceEdit; export declare function mapEditToOriginal(fragment: Pick, edit: TextEdit | InsertReplaceEdit): TextEdit | InsertReplaceEdit; export declare function mapDiagnosticToGenerated(fragment: DocumentMapper, diagnostic: Diagnostic): Diagnostic; export declare function mapColorPresentationToOriginal(fragment: Pick, presentation: ColorPresentation): ColorPresentation; export declare function mapSymbolInformationToOriginal(fragment: Pick, info: SymbolInformation): SymbolInformation; export declare function mapLocationLinkToOriginal(fragment: DocumentMapper, def: LocationLink): LocationLink; export declare function mapTextDocumentEditToOriginal(fragment: DocumentMapper, edit: TextDocumentEdit): TextDocumentEdit; export declare function mapCodeActionToOriginal(fragment: DocumentMapper, codeAction: CodeAction): CodeAction; export declare function mapScriptSpanStartToSnapshot(span: ts.TextSpan, scriptTagSnapshot: ScriptTagDocumentSnapshot, tsSnapshot: DocumentSnapshot): number; export declare function mapFoldingRangeToParent(fragment: DocumentMapper, foldingRange: FoldingRange): FoldingRange; export declare function mapSelectionRangeToParent(fragment: Pick, selectionRange: SelectionRange): SelectionRange;