ut-tools
Version:
Build and Release management automation package.
98 lines • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sortResults = exports.compareResults = exports.comparePosition = exports.prepareResults = void 0;
const computeResultFingerprint = (rule) => {
let id = String(rule.code);
if (rule.path.length > 0) {
id += JSON.stringify(rule.path);
}
else {
id += JSON.stringify(rule.range);
}
if (rule.source !== void 0) {
id += rule.source;
}
if (rule.message !== void 0) {
id += rule.message;
}
return id;
};
const prepareResults = (results) => {
return (0, exports.sortResults)(deduplicateResults(results));
};
exports.prepareResults = prepareResults;
const deduplicateResults = (results) => {
const fingerprints = new Set();
return results.filter(result => {
const fingerprint = computeResultFingerprint(result);
if (fingerprints.has(fingerprint)) {
return false;
}
fingerprints.add(fingerprint);
return true;
});
};
const compareCode = (left, right) => {
if (left === void 0 && right === void 0) {
return 0;
}
if (left === void 0) {
return -1;
}
if (right === void 0) {
return 1;
}
return String(left).localeCompare(String(right), void 0, { numeric: true });
};
const compareSource = (left, right) => {
if (left === void 0 && right === void 0) {
return 0;
}
if (left === void 0) {
return -1;
}
if (right === void 0) {
return 1;
}
return left.localeCompare(right);
};
const normalize = (value) => {
if (value < 0) {
return -1;
}
if (value > 0) {
return 1;
}
return 0;
};
const comparePosition = (left, right) => {
const diffLine = left.line - right.line;
if (diffLine !== 0) {
return normalize(diffLine);
}
const diffChar = left.character - right.character;
return normalize(diffChar);
};
exports.comparePosition = comparePosition;
const compareResults = (left, right) => {
const diffSource = compareSource(left.source, right.source);
if (diffSource !== 0) {
return normalize(diffSource);
}
const diffStart = (0, exports.comparePosition)(left.range.start, right.range.start);
if (diffStart !== 0) {
return diffStart;
}
const diffCode = compareCode(left.code, right.code);
if (diffCode !== 0) {
return normalize(diffCode);
}
const diffPath = left.path.join().localeCompare(right.path.join());
return normalize(diffPath);
};
exports.compareResults = compareResults;
const sortResults = (results) => {
return [...results].sort(exports.compareResults);
};
exports.sortResults = sortResults;
//# sourceMappingURL=results.js.map