121 lines
3.6 KiB
Plaintext
121 lines
3.6 KiB
Plaintext
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.withRanges = exports.withCallHierarchyOutgoingCalls = exports.withCallHierarchyIncomingCalls = exports.withLocationLinks = exports.withLocations = exports.withDiagnostics = exports.withDocumentChanges = exports.withTextEdits = exports.withCodeAction = exports.createLocationSet = void 0;
|
||
|
function createLocationSet() {
|
||
|
const set = new Set();
|
||
|
return {
|
||
|
add,
|
||
|
has,
|
||
|
};
|
||
|
function add(item) {
|
||
|
if (has(item)) {
|
||
|
return false;
|
||
|
}
|
||
|
set.add(getKey(item));
|
||
|
return true;
|
||
|
}
|
||
|
function has(item) {
|
||
|
return set.has(getKey(item));
|
||
|
}
|
||
|
function getKey(item) {
|
||
|
return [
|
||
|
item.uri,
|
||
|
item.range.start.line,
|
||
|
item.range.start.character,
|
||
|
item.range.end.line,
|
||
|
item.range.end.character,
|
||
|
].join(':');
|
||
|
}
|
||
|
}
|
||
|
exports.createLocationSet = createLocationSet;
|
||
|
function withCodeAction(items) {
|
||
|
return dedupe(items, item => [
|
||
|
item.title
|
||
|
].join(':'));
|
||
|
}
|
||
|
exports.withCodeAction = withCodeAction;
|
||
|
function withTextEdits(items) {
|
||
|
return dedupe(items, item => [
|
||
|
item.range.start.line,
|
||
|
item.range.start.character,
|
||
|
item.range.end.line,
|
||
|
item.range.end.character,
|
||
|
item.newText,
|
||
|
].join(':'));
|
||
|
}
|
||
|
exports.withTextEdits = withTextEdits;
|
||
|
function withDocumentChanges(items) {
|
||
|
return dedupe(items, item => JSON.stringify(item)); // TODO: improve this
|
||
|
}
|
||
|
exports.withDocumentChanges = withDocumentChanges;
|
||
|
function withDiagnostics(items) {
|
||
|
return dedupe(items, item => [
|
||
|
item.range.start.line,
|
||
|
item.range.start.character,
|
||
|
item.range.end.line,
|
||
|
item.range.end.character,
|
||
|
item.source,
|
||
|
item.code,
|
||
|
item.severity,
|
||
|
item.message,
|
||
|
].join(':'));
|
||
|
}
|
||
|
exports.withDiagnostics = withDiagnostics;
|
||
|
function withLocations(items) {
|
||
|
return dedupe(items, item => [
|
||
|
item.uri,
|
||
|
item.range.start.line,
|
||
|
item.range.start.character,
|
||
|
item.range.end.line,
|
||
|
item.range.end.character,
|
||
|
].join(':'));
|
||
|
}
|
||
|
exports.withLocations = withLocations;
|
||
|
function withLocationLinks(items) {
|
||
|
return dedupe(items, item => [
|
||
|
item.targetUri,
|
||
|
item.targetSelectionRange.start.line,
|
||
|
item.targetSelectionRange.start.character,
|
||
|
item.targetSelectionRange.end.line,
|
||
|
item.targetSelectionRange.end.character,
|
||
|
// ignore difference targetRange
|
||
|
].join(':'));
|
||
|
}
|
||
|
exports.withLocationLinks = withLocationLinks;
|
||
|
function withCallHierarchyIncomingCalls(items) {
|
||
|
return dedupe(items, item => [
|
||
|
item.from.uri,
|
||
|
item.from.range.start.line,
|
||
|
item.from.range.start.character,
|
||
|
item.from.range.end.line,
|
||
|
item.from.range.end.character,
|
||
|
].join(':'));
|
||
|
}
|
||
|
exports.withCallHierarchyIncomingCalls = withCallHierarchyIncomingCalls;
|
||
|
function withCallHierarchyOutgoingCalls(items) {
|
||
|
return dedupe(items, item => [
|
||
|
item.to.uri,
|
||
|
item.to.range.start.line,
|
||
|
item.to.range.start.character,
|
||
|
item.to.range.end.line,
|
||
|
item.to.range.end.character,
|
||
|
].join(':'));
|
||
|
}
|
||
|
exports.withCallHierarchyOutgoingCalls = withCallHierarchyOutgoingCalls;
|
||
|
function withRanges(items) {
|
||
|
return dedupe(items, item => [
|
||
|
item.start.line,
|
||
|
item.start.character,
|
||
|
item.end.line,
|
||
|
item.end.character,
|
||
|
].join(':'));
|
||
|
}
|
||
|
exports.withRanges = withRanges;
|
||
|
function dedupe(items, getKey) {
|
||
|
const map = new Map();
|
||
|
for (const item of items.reverse()) {
|
||
|
map.set(getKey(item), item);
|
||
|
}
|
||
|
return [...map.values()];
|
||
|
}
|
||
|
//# sourceMappingURL=dedupe.js.map
|