Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions packages/language-server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,18 @@
"cosmiconfig": "^6.0.0",
"estree-walker": "^2.0.1",
"lodash": "^4.17.19",
"magic-string": "^0.25.3",
"prettier": "2.0.5",
"prettier-plugin-svelte": "~1.1.1",
"prettier": "2.1.1",
"prettier-plugin-svelte": "~1.2.0",
"source-map": "^0.7.3",
"svelte": "3.24.0",
"svelte-preprocess": "~3.9.11",
"svelte": "3.24.1",
"svelte-preprocess": "~4.2.0",
"svelte2tsx": "*",
"typescript": "*",
"vscode-css-languageservice": "4.1.0",
"vscode-css-languageservice": "4.2.0",
"vscode-emmet-helper": "1.2.17",
"vscode-html-languageservice": "3.0.4-next.15",
"vscode-languageserver": "6.1.1",
"vscode-languageserver-types": "3.15.1",
"vscode-uri": "2.1.1"
"vscode-uri": "2.1.2"
}
}
41 changes: 9 additions & 32 deletions packages/language-server/src/lib/documents/DocumentMapper.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
import {
Position,
Range,
TextEdit,
Location,
CompletionItem,
Hover,
Diagnostic,
ColorInformation,
ColorPresentation,
SymbolInformation,
LocationLink,
Expand Down Expand Up @@ -217,20 +214,6 @@ export function mapRangeToGenerated(fragment: DocumentMapper, range: Range): Ran
);
}

export function mapTextEditToOriginal(
fragment: Pick<DocumentMapper, 'getOriginalPosition'>,
edit: TextEdit,
): TextEdit {
return { ...edit, range: mapRangeToOriginal(fragment, edit.range) };
}

export function mapLocationToOriginal(
fragment: Pick<DocumentMapper, 'getOriginalPosition'>,
loc: Location,
): Location {
return { ...loc, range: mapRangeToOriginal(fragment, loc.range) };
}

export function mapCompletionItemToOriginal(
fragment: Pick<DocumentMapper, 'getOriginalPosition'>,
item: CompletionItem,
Expand All @@ -239,7 +222,7 @@ export function mapCompletionItemToOriginal(
return item;
}

return { ...item, textEdit: mapTextEditToOriginal(fragment, item.textEdit) };
return { ...item, textEdit: mapObjWithRangeToOriginal(fragment, item.textEdit) };
}

export function mapHoverToParent(
Expand All @@ -253,11 +236,11 @@ export function mapHoverToParent(
return { ...hover, range: mapRangeToOriginal(fragment, hover.range) };
}

export function mapDiagnosticToOriginal(
export function mapObjWithRangeToOriginal<T extends {range: Range}>(
fragment: Pick<DocumentMapper, 'getOriginalPosition'>,
diagnostic: Diagnostic,
): Diagnostic {
return { ...diagnostic, range: mapRangeToOriginal(fragment, diagnostic.range) };
objWithRange: T,
): T {
return { ...objWithRange, range: mapRangeToOriginal(fragment, objWithRange.range) };
}

export function mapDiagnosticToGenerated(
Expand All @@ -267,12 +250,6 @@ export function mapDiagnosticToGenerated(
return { ...diagnostic, range: mapRangeToGenerated(fragment, diagnostic.range) };
}

export function mapColorInformationToOriginal(
fragment: Pick<DocumentMapper, 'getOriginalPosition'>,
info: ColorInformation,
): ColorInformation {
return { ...info, range: mapRangeToOriginal(fragment, info.range) };
}

export function mapColorPresentationToOriginal(
fragment: Pick<DocumentMapper, 'getOriginalPosition'>,
Expand All @@ -283,12 +260,12 @@ export function mapColorPresentationToOriginal(
};

if (item.textEdit) {
item.textEdit = mapTextEditToOriginal(fragment, item.textEdit);
item.textEdit = mapObjWithRangeToOriginal(fragment, item.textEdit);
}

if (item.additionalTextEdits) {
item.additionalTextEdits = item.additionalTextEdits.map((edit) =>
mapTextEditToOriginal(fragment, edit),
mapObjWithRangeToOriginal(fragment, edit),
);
}

Expand All @@ -299,7 +276,7 @@ export function mapSymbolInformationToOriginal(
fragment: Pick<DocumentMapper, 'getOriginalPosition'>,
info: SymbolInformation,
): SymbolInformation {
return { ...info, location: mapLocationToOriginal(fragment, info.location) };
return { ...info, location: mapObjWithRangeToOriginal(fragment, info.location) };
}

export function mapLocationLinkToOriginal(
Expand Down Expand Up @@ -327,7 +304,7 @@ export function mapTextDocumentEditToOriginal(fragment: DocumentMapper, edit: Te

return TextDocumentEdit.create(
edit.textDocument,
edit.edits.map((textEdit) => mapTextEditToOriginal(fragment, textEdit)),
edit.edits.map((textEdit) => mapObjWithRangeToOriginal(fragment, textEdit)),
);
}

Expand Down
4 changes: 3 additions & 1 deletion packages/language-server/src/lib/documents/configLoader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ function useFallbackPreprocessor(path: string, foundConfig: boolean): SvelteConf
);
return {
preprocess: importSveltePreprocess(path)({
typescript: { transpileOnly: true, compilerOptions: { sourceMap: true } },
// 4.x does not have transpileOnly anymore, but if the user has version 3.x
// in his repo, that one is loaded instead, for which we still need this.
typescript: <any>{ transpileOnly: true, compilerOptions: { sourceMap: true } },
}),
};
}
9 changes: 4 additions & 5 deletions packages/language-server/src/plugins/css/CSSPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,12 @@ import {
import {
Document,
DocumentManager,
mapColorInformationToOriginal,
mapColorPresentationToOriginal,
mapCompletionItemToOriginal,
mapDiagnosticToOriginal,
mapHoverToParent,
mapRangeToGenerated,
mapSymbolInformationToOriginal,
mapObjWithRangeToOriginal,
mapHoverToParent,
} from '../../lib/documents';
import { LSConfigManager, LSCSSConfig } from '../../ls-config';
import {
Expand Down Expand Up @@ -76,7 +75,7 @@ export class CSSPlugin
return getLanguageService(kind)
.doValidation(cssDocument, cssDocument.stylesheet)
.map((diagnostic) => ({ ...diagnostic, source: getLanguage(kind) }))
.map((diagnostic) => mapDiagnosticToOriginal(cssDocument, diagnostic));
.map((diagnostic) => mapObjWithRangeToOriginal(cssDocument, diagnostic));
}

doHover(document: Document, position: Position): Hover | null {
Expand Down Expand Up @@ -171,7 +170,7 @@ export class CSSPlugin

return getLanguageService(extractLanguage(cssDocument))
.findDocumentColors(cssDocument, cssDocument.stylesheet)
.map((colorInfo) => mapColorInformationToOriginal(cssDocument, colorInfo));
.map((colorInfo) => mapObjWithRangeToOriginal(cssDocument, colorInfo));
}

getColorPresentations(document: Document, range: Range, color: Color): ColorPresentation[] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
TextEdit,
VersionedTextDocumentIdentifier,
} from 'vscode-languageserver';
import { mapTextEditToOriginal, offsetAt, positionAt } from '../../../../lib/documents';
import { mapObjWithRangeToOriginal, offsetAt, positionAt } from '../../../../lib/documents';
import { pathToUrl } from '../../../../utils';
import { SvelteDocument } from '../../SvelteDocument';
import ts from 'typescript';
Expand Down Expand Up @@ -119,7 +119,7 @@ async function getSvelteIgnoreEdit(svelteDoc: SvelteDocument, ast: Ast, diagnost
const ignore = `${indent}<!-- svelte-ignore ${code} -->${EOL}`;
const position = Position.create(nodeStartPosition.line, 0);

return mapTextEditToOriginal(transpiled, TextEdit.insert(position, ignore));
return mapObjWithRangeToOriginal(transpiled, TextEdit.insert(position, ignore));
}

const elementOrComponent = ['Component', 'Element', 'InlineComponent'];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Warning } from 'svelte/types/compiler/interfaces';
import { Diagnostic, DiagnosticSeverity, Position, Range } from 'vscode-languageserver';
import { Document, isInTag, mapDiagnosticToOriginal } from '../../../lib/documents';
import { Document, isInTag, mapObjWithRangeToOriginal } from '../../../lib/documents';
import { Logger } from '../../../logger';
import { SvelteDocument, TranspileErrorSource } from '../SvelteDocument';
import { CompilerWarningsSettings } from '../../../ls-config';
Expand Down Expand Up @@ -53,10 +53,10 @@ async function tryGetDiagnostics(
code: warning.code,
};
})
.map((diag) => mapDiagnosticToOriginal(transpiled, diag));
.map((diag) => mapObjWithRangeToOriginal(transpiled, diag));
} catch (err) {
return (await createParserErrorDiagnostic(err, document)).map((diag) =>
mapDiagnosticToOriginal(transpiled, diag),
mapObjWithRangeToOriginal(transpiled, diag),
);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ts from 'typescript';
import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver';
import { Document, mapDiagnosticToOriginal, getTextInRange } from '../../../lib/documents';
import { Document, mapObjWithRangeToOriginal, getTextInRange } from '../../../lib/documents';
import { DiagnosticsProvider } from '../../interfaces';
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
import { convertRange, mapSeverity } from '../utils';
Expand Down Expand Up @@ -42,7 +42,7 @@ export class DiagnosticsProviderImpl implements DiagnosticsProvider {
message: ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n'),
code: diagnostic.code,
}))
.map((diagnostic) => mapDiagnosticToOriginal(fragment, diagnostic))
.map((diagnostic) => mapObjWithRangeToOriginal(fragment, diagnostic))
.filter(hasNoNegativeLines)
.filter(isNoFalsePositive(document.getText(), tsDoc));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ts from 'typescript';
import { Hover, Position } from 'vscode-languageserver';
import { Document, getWordAt, mapHoverToParent } from '../../../lib/documents';
import { Document, getWordAt, mapObjWithRangeToOriginal } from '../../../lib/documents';
import { HoverProvider } from '../../interfaces';
import { SvelteDocumentSnapshot, SvelteSnapshotFragment } from '../DocumentSnapshot';
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
Expand Down Expand Up @@ -38,7 +38,7 @@ export class HoverProviderImpl implements HoverProvider {
.concat(documentation ? ['---', documentation] : [])
.join('\n');

return mapHoverToParent(fragment, {
return mapObjWithRangeToOriginal(fragment, {
range: convertRange(fragment, info.textSpan),
contents,
});
Expand Down
12 changes: 9 additions & 3 deletions packages/language-server/test/lib/documents/Document.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ describe('Document', () => {
const document = new Document('file:///hello.svelte', '<script>a</script><style>b</style>');
assert.deepEqual(document.scriptInfo, {
content: 'a',
attributes: {},
attributes: {
lang: 'javascript',
},
start: 8,
end: 9,
startPos: Position.create(0, 8),
Expand All @@ -37,7 +39,9 @@ describe('Document', () => {
});
assert.deepEqual(document.styleInfo, {
content: 'b',
attributes: {},
attributes: {
lang: 'css',
},
start: 25,
end: 26,
startPos: Position.create(0, 25),
Expand All @@ -48,7 +52,9 @@ describe('Document', () => {
document.setText('<script>b</script>');
assert.deepEqual(document.scriptInfo, {
content: 'b',
attributes: {},
attributes: {
lang: 'javascript',
},
start: 8,
end: 9,
startPos: Position.create(0, 8),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ describe('CSS Plugin', () => {
value:
'Defines character set of the document.\n\n[MDN Reference](https://developer.mozilla.org/docs/Web/CSS/@charset)',
},
sortText: "d_0000",
textEdit: TextEdit.insert(Position.create(0, 7), '@charset'),
sortText: 'd_0000',
tags: [],
});
});
Expand Down
2 changes: 1 addition & 1 deletion packages/svelte-check/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"vscode-languageserver": "6.1.1",
"vscode-languageserver-protocol": "3.15.3",
"vscode-languageserver-types": "3.15.1",
"vscode-uri": "2.1.1"
"vscode-uri": "2.1.2"
},
"scripts": {
"build": "tsc",
Expand Down
4 changes: 2 additions & 2 deletions packages/svelte2tsx/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"@types/node": "^8.10.53",
"@types/unist": "^2.0.3",
"@types/vfile": "^3.0.2",
"magic-string": "^0.25.4",
"magic-string": "^0.25.7",
"mocha": "^6.2.2",
"periscopic": "^2.0.2",
"rollup": "^1.12.0",
Expand All @@ -32,7 +32,7 @@
"rollup-plugin-typescript": "^1.0.1",
"source-map": "^0.6.1",
"source-map-support": "^0.5.16",
"svelte": "3.24.0",
"svelte": "3.24.1",
"tiny-glob": "^0.2.6",
"tslib": "^1.10.0",
"typescript": "^4.0.2"
Expand Down
Loading