@a11ywatch/core
Version:
a11ywatch central API
74 lines • 4 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateWebsiteScore = void 0;
const analytics_1 = require("../../../analytics");
const utils_1 = require("../../../../utils");
const PAGE_LIMIT = 10;
const getDataUntil = (baseProps, offset, prevIssuesInfo) => __awaiter(void 0, void 0, void 0, function* () {
const { domain, perfectScore, userId, all, resolve } = baseProps;
const pages = (yield (0, analytics_1.getAnalyticsPaging)({
domain,
userId,
offset,
all,
limit: PAGE_LIMIT,
}, false));
let websiteErrors = (prevIssuesInfo === null || prevIssuesInfo === void 0 ? void 0 : prevIssuesInfo.errorCount) || 0;
let websiteWarnings = (prevIssuesInfo === null || prevIssuesInfo === void 0 ? void 0 : prevIssuesInfo.warningCount) || 0;
let websiteNotices = (prevIssuesInfo === null || prevIssuesInfo === void 0 ? void 0 : prevIssuesInfo.noticeCount) || 0;
let websiteIssuesFixedByCdn = (prevIssuesInfo === null || prevIssuesInfo === void 0 ? void 0 : prevIssuesInfo.issuesFixedByCdn) || 0;
let websitePossibleIssuesFixedByCdn = (prevIssuesInfo === null || prevIssuesInfo === void 0 ? void 0 : prevIssuesInfo.possibleIssuesFixedByCdn) || 0;
const accessScores = [];
const pageCounter = (pages === null || pages === void 0 ? void 0 : pages.length) || 0;
const pageCount = ((prevIssuesInfo === null || prevIssuesInfo === void 0 ? void 0 : prevIssuesInfo.pageCount) || 0) + pageCounter;
for (const page of pages) {
const { warningCount, errorCount, noticeCount, accessScore, issuesFixedByCdn, possibleIssuesFixedByCdn, } = page !== null && page !== void 0 ? page : {
warningCount: 0,
errorCount: 0,
noticeCount: 0,
accessScoreAverage: 0,
issuesFixedByCdn: 0,
possibleIssuesFixedByCdn: 0,
};
accessScores.push(Number(accessScore));
websiteErrors += Number(errorCount || 0);
websiteWarnings += Number(warningCount || 0);
websiteNotices += Number(noticeCount || 0);
websiteIssuesFixedByCdn += Number(issuesFixedByCdn || 0);
websiteIssuesFixedByCdn += Number(possibleIssuesFixedByCdn || 0);
}
const averageItems = (0, utils_1.arrayAverage)(accessScores);
const avgScore = Math.round(isNaN(averageItems) || perfectScore ? 100 : averageItems);
const issuesInfo = {
accessScoreAverage: avgScore,
possibleIssuesFixedByCdn: websitePossibleIssuesFixedByCdn,
totalIssues: websiteErrors + websiteWarnings + websiteNotices,
issuesFixedByCdn: websiteIssuesFixedByCdn,
errorCount: websiteErrors,
warningCount: websiteWarnings,
noticeCount: websiteNotices,
pageCount,
};
if (pageCounter === PAGE_LIMIT) {
yield getDataUntil(baseProps, pageCount, issuesInfo);
}
else {
resolve({ issuesInfo });
}
});
const generateWebsiteScore = (props) => __awaiter(void 0, void 0, void 0, function* () {
return new Promise((resolve) => __awaiter(void 0, void 0, void 0, function* () {
return yield getDataUntil(Object.assign(Object.assign({}, props), { resolve }));
}));
});
exports.generateWebsiteScore = generateWebsiteScore;
//# sourceMappingURL=domain.js.map
;