apex-code-coverage-transformer
Version:
Transform Salesforce Apex code coverage JSONs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
63 lines • 2.05 kB
JavaScript
;
function isObject(val) {
return typeof val === 'object' && val !== null;
}
function isValidPosition(pos) {
return isObject(pos) && typeof pos.line === 'number' && typeof pos.column === 'number';
}
function isValidStatementMap(statementMap) {
if (!isObject(statementMap))
return false;
return Object.values(statementMap).every((statement) => {
if (!isObject(statement))
return false;
const { start, end } = statement;
return isValidPosition(start) && isValidPosition(end);
});
}
function isValidDeployItem(item) {
if (!isObject(item))
return false;
const { path, fnMap, branchMap, f, b, s, statementMap } = item;
const checks = [
typeof path === 'string',
isObject(fnMap),
isObject(branchMap),
isObject(f),
isObject(b),
isObject(s),
isValidStatementMap(statementMap),
];
return checks.every(Boolean);
}
function isDeployCoverageData(data) {
if (!isObject(data))
return false;
return Object.entries(data).every(([, item]) => isValidDeployItem(item));
}
function isSingleTestCoverageData(data) {
if (!isObject(data))
return false;
const { id, name, totalLines, lines, totalCovered, coveredPercent } = data;
const checks = [
typeof id === 'string',
typeof name === 'string',
typeof totalLines === 'number',
typeof totalCovered === 'number',
typeof coveredPercent === 'number',
isObject(lines),
isObject(lines) && Object.values(lines).every((line) => typeof line === 'number'),
];
return checks.every(Boolean);
}
function isTestCoverageDataArray(data) {
return Array.isArray(data) && data.every(isSingleTestCoverageData);
}
export function checkCoverageDataType(data) {
if (isDeployCoverageData(data))
return 'DeployCoverageData';
if (isTestCoverageDataArray(data))
return 'TestCoverageData';
return 'Unknown';
}
//# sourceMappingURL=setCoverageDataType.js.map