ts-lit-plugin
Version:
Typescript plugin that adds type checking and code completion to lit-html
66 lines (65 loc) • 2.32 kB
JavaScript
;
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.translateDefinition = void 0;
var ts_module_1 = require("../../ts-module");
var translate_range_1 = require("./translate-range");
function translateDefinition(definition) {
return {
definitions: __spread((Array.isArray(definition.target) ? definition.target : [definition.target])).map(translateDefinitionInfo),
textSpan: translate_range_1.translateRange(definition.fromRange)
};
}
exports.translateDefinition = translateDefinition;
function translateDefinitionInfo(target) {
var targetStart;
var targetEnd;
var targetFileName;
var targetName;
switch (target.kind) {
case "range":
targetStart = target.range.start;
targetEnd = target.range.end;
targetFileName = target.sourceFile.fileName;
targetName = target.name || "";
break;
case "node": {
var node = target.node;
targetStart = node.getStart();
targetEnd = node.getEnd();
targetFileName = node.getSourceFile().fileName;
targetName = target.name || (ts_module_1.tsModule.ts.isIdentifier(node) ? node.getText() : "");
break;
}
}
return {
name: targetName,
textSpan: {
start: targetStart,
length: targetEnd - targetStart
},
fileName: targetFileName,
containerName: targetFileName,
kind: ts_module_1.tsModule.ts.ScriptElementKind.memberVariableElement,
containerKind: ts_module_1.tsModule.ts.ScriptElementKind.functionElement
};
}