UNPKG

ts-lit-plugin

Version:

Typescript plugin that adds type checking and code completion to lit-html

131 lines (130 loc) 7.7 kB
"use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TsLitPlugin = void 0; var lit_analyzer_1 = require("lit-analyzer"); var translate_code_fixes_1 = require("./translate/translate-code-fixes"); var translate_completion_details_1 = require("./translate/translate-completion-details"); var translate_completions_1 = require("./translate/translate-completions"); var translate_definition_1 = require("./translate/translate-definition"); var translate_diagnostics_1 = require("./translate/translate-diagnostics"); var translate_format_edits_1 = require("./translate/translate-format-edits"); var translate_outlining_spans_1 = require("./translate/translate-outlining-spans"); var translate_quick_info_1 = require("./translate/translate-quick-info"); var translate_rename_info_1 = require("./translate/translate-rename-info"); var translate_rename_locations_1 = require("./translate/translate-rename-locations"); var TsLitPlugin = /** @class */ (function () { function TsLitPlugin(prevLangService, context) { this.prevLangService = prevLangService; this.context = context; this.litAnalyzer = new lit_analyzer_1.LitAnalyzer(this.context); } Object.defineProperty(TsLitPlugin.prototype, "program", { get: function () { return this.prevLangService.getProgram(); }, enumerable: false, configurable: true }); TsLitPlugin.prototype.getCompletionEntryDetails = function (fileName, position, name, formatOptions, source, preferences) { var file = this.program.getSourceFile(fileName); var result = this.litAnalyzer.getCompletionDetailsAtPosition(file, position, name); return ((result && translate_completion_details_1.translateCompletionDetails(result, this.context)) || this.prevLangService.getCompletionEntryDetails(fileName, position, name, formatOptions, source, preferences)); }; TsLitPlugin.prototype.getCompletionsAtPosition = function (fileName, position, options) { var file = this.program.getSourceFile(fileName); var result = this.litAnalyzer.getCompletionsAtPosition(file, position); return (result && translate_completions_1.translateCompletions(result)) || this.prevLangService.getCompletionsAtPosition(fileName, position, options); }; TsLitPlugin.prototype.getSemanticDiagnostics = function (fileName) { var file = this.program.getSourceFile(fileName); var result = this.litAnalyzer.getDiagnosticsInFile(file); var prevResult = this.prevLangService.getSemanticDiagnostics(fileName) || []; return __spread(prevResult, translate_diagnostics_1.translateDiagnostics(result, file, this.context)); }; TsLitPlugin.prototype.getDefinitionAndBoundSpan = function (fileName, position) { var file = this.program.getSourceFile(fileName); var definition = this.litAnalyzer.getDefinitionAtPosition(file, position); return (definition && translate_definition_1.translateDefinition(definition)) || this.prevLangService.getDefinitionAndBoundSpan(fileName, position); }; TsLitPlugin.prototype.getCodeFixesAtPosition = function (fileName, start, end, errorCodes, formatOptions, preferences) { var file = this.program.getSourceFile(fileName); var prevResult = this.prevLangService.getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences) || []; var codeFixes = translate_code_fixes_1.translateCodeFixes(this.litAnalyzer.getCodeFixesAtPositionRange(file, { start: start, end: end }), file); return __spread(prevResult, codeFixes); }; TsLitPlugin.prototype.getQuickInfoAtPosition = function (fileName, position) { var file = this.program.getSourceFile(fileName); var quickInfo = this.litAnalyzer.getQuickInfoAtPosition(file, position); return (quickInfo && translate_quick_info_1.translateQuickInfo(quickInfo)) || this.prevLangService.getQuickInfoAtPosition(fileName, position); }; TsLitPlugin.prototype.getOutliningSpans = function (fileName) { var file = this.program.getSourceFile(fileName); var prev = this.prevLangService.getOutliningSpans(fileName); var outliningSpans = translate_outlining_spans_1.translateOutliningSpans(this.litAnalyzer.getOutliningSpansInFile(file)); return __spread(prev, outliningSpans); }; TsLitPlugin.prototype.getJsxClosingTagAtPosition = function (fileName, position) { var file = this.program.getSourceFile(fileName); var result = this.litAnalyzer.getClosingTagAtPosition(file, position); return result || this.prevLangService.getJsxClosingTagAtPosition(fileName, position); }; TsLitPlugin.prototype.getSignatureHelpItems = function (fileName, position, options) { var result = this.prevLangService.getSignatureHelpItems(fileName, position, options); // Test if the signature is "html" or "css // Don't return a signature if trying to show signature for the html/css tagged template literal if (result != null && result.items.length === 1) { var displayPart = result.items[0].prefixDisplayParts[0]; if (displayPart.kind === "aliasName" && (displayPart.text === "html" || displayPart.text === "css")) { return undefined; } } return result; }; TsLitPlugin.prototype.findRenameLocations = function (fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename) { var file = this.program.getSourceFile(fileName); var prev = this.prevLangService.findRenameLocations(fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename); var renameLocations = translate_rename_locations_1.translateRenameLocations(this.litAnalyzer.getRenameLocationsAtPosition(file, position)); if (prev == null) { return renameLocations; } return __spread(prev, renameLocations); }; TsLitPlugin.prototype.getRenameInfo = function (fileName, position, options) { var file = this.program.getSourceFile(fileName); var result = this.litAnalyzer.getRenameInfoAtPosition(file, position); return (result && translate_rename_info_1.translateRenameInfo(result)) || this.prevLangService.getRenameInfo(fileName, position, options); }; TsLitPlugin.prototype.getFormattingEditsForRange = function (fileName, start, end, settings) { var prev = this.prevLangService.getFormattingEditsForRange(fileName, start, end, settings); // Return previous result if we need to skip formatting. if (this.context.config.format.disable) { return prev; } var file = this.program.getSourceFile(fileName); var edits = translate_format_edits_1.translateFormatEdits(this.litAnalyzer.getFormatEditsInFile(file, settings)); return __spread(prev, edits); }; return TsLitPlugin; }()); exports.TsLitPlugin = TsLitPlugin;