@a11ywatch/core
Version:
a11ywatch central API
55 lines • 2.72 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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.qWebsiteWorker = exports.bindTaskQ = exports.getCWLimit = exports.q = exports.asyncWorkerCrawlComplete = void 0;
const fastq_1 = __importDefault(require("fastq"));
const os_1 = require("os");
const crawl_group_1 = require("../../core/actions/accessibility/crawl-group");
const score_1 = require("../../core/utils/stats/score");
function asyncWorker(arg) {
return __awaiter(this, void 0, void 0, function* () {
return yield (0, crawl_group_1.crawlWebsite)(arg);
});
}
function asyncWorkerCrawlComplete(arg) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
const { userId, meta } = arg;
const { domain, duration, shutdown } = (_a = meta === null || meta === void 0 ? void 0 : meta.extra) !== null && _a !== void 0 ? _a : {};
setImmediate(() => __awaiter(this, void 0, void 0, function* () {
yield (0, score_1.setWebsiteScore)({
domain,
userId: Number(userId),
duration,
shutdown: !!shutdown,
});
}));
});
}
exports.asyncWorkerCrawlComplete = asyncWorkerCrawlComplete;
let cwLimit = 4;
if (process.env.CRAWL_QUEUE_LIMIT &&
!Number.isNaN(Number(process.env.CRAWL_QUEUE_LIMIT))) {
cwLimit = Number(process.env.CRAWL_QUEUE_LIMIT);
}
else {
cwLimit = Math.max(Math.floor(5 * ((0, os_1.cpus)().length || 1)), 4);
}
exports.q = fastq_1.default.promise(asyncWorker, cwLimit);
const getCWLimit = (limit = 1) => Math.floor(cwLimit / (limit || 1)) || 1;
exports.getCWLimit = getCWLimit;
const bindTaskQ = (limit = 1) => fastq_1.default.promise(asyncWorker.bind({}), (0, exports.getCWLimit)(limit));
exports.bindTaskQ = bindTaskQ;
exports.qWebsiteWorker = fastq_1.default.promise(asyncWorkerCrawlComplete, cwLimit * 2);
//# sourceMappingURL=handle.js.map
;