UNPKG

@a11ywatch/core

Version:
55 lines 2.72 kB
"use strict"; 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