UNPKG

cnpmcore

Version:
107 lines 9.37 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CheckRecentlyUpdatedPackages = void 0; const schedule_1 = require("@eggjs/tegg/schedule"); const tegg_1 = require("@eggjs/tegg"); const PackageSyncerService_1 = require("../../core/service/PackageSyncerService"); const PackageRepository_1 = require("../../repository/PackageRepository"); const PackageUtil_1 = require("../../common/PackageUtil"); const constants_1 = require("../../common/constants"); // https://github.com/cnpm/cnpmcore/issues/9 let CheckRecentlyUpdatedPackages = class CheckRecentlyUpdatedPackages { async subscribe() { const notAllowUpdateModeList = [constants_1.SyncMode.none, constants_1.SyncMode.admin]; if (notAllowUpdateModeList.includes(this.config.cnpmcore.syncMode) || !this.config.cnpmcore.enableCheckRecentlyUpdated) return; const pageSize = 36; const pageCount = this.config.env === 'unittest' ? 2 : 5; for (let pageIndex = 0; pageIndex < pageCount; pageIndex++) { const offset = pageSize * pageIndex; const pageUrl = `https://www.npmjs.com/browse/updated?offset=${offset}`; let html = ''; try { const { status, data } = await this.httpclient.request(pageUrl, { followRedirect: true, timeout: 10000, }); this.logger.info('[CheckRecentlyUpdatedPackages.subscribe][%s] request %s status: %s, data size: %s', pageIndex, pageUrl, status, data.length); if (status === 200) { html = data.toString(); } } catch (err) { this.logger.info('[CheckRecentlyUpdatedPackages.subscribe:error][%s] request %s error: %s', pageIndex, pageUrl, err); this.logger.error(err); continue; } const matchs = /window\.__context__ = ([^<]+?)<\/script>/.exec(html); if (!matchs) continue; try { const data = JSON.parse(matchs[1]); const packages = data.context.packages || []; if (Array.isArray(packages)) { this.logger.info('[CheckRecentlyUpdatedPackages.subscribe][%s] parse %d packages on %s', pageIndex, packages.length, pageUrl); for (const pkg of packages) { // skip update when package does not exist if (this.config.cnpmcore.syncMode === 'exist') { const [scope, name] = (0, PackageUtil_1.getScopeAndName)(pkg.name); const pkgId = await this.packageRepository.findPackageId(scope, name); if (!pkgId) { continue; } } const task = await this.packageSyncerService.createTask(pkg.name, { tips: `Sync cause by recently updated packages ${pageUrl}`, }); this.logger.info('[CheckRecentlyUpdatedPackages.subscribe:createTask][%s] taskId: %s, targetName: %s', pageIndex, task.taskId, task.targetName); } } } catch (err) { this.logger.info('[CheckRecentlyUpdatedPackages.subscribe:error][%s] parse %s context json error: %s', pageIndex, pageUrl, err); this.logger.error(err); } } } }; exports.CheckRecentlyUpdatedPackages = CheckRecentlyUpdatedPackages; __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", PackageSyncerService_1.PackageSyncerService) ], CheckRecentlyUpdatedPackages.prototype, "packageSyncerService", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", PackageRepository_1.PackageRepository) ], CheckRecentlyUpdatedPackages.prototype, "packageRepository", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], CheckRecentlyUpdatedPackages.prototype, "config", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], CheckRecentlyUpdatedPackages.prototype, "logger", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], CheckRecentlyUpdatedPackages.prototype, "httpclient", void 0); exports.CheckRecentlyUpdatedPackages = CheckRecentlyUpdatedPackages = __decorate([ (0, schedule_1.Schedule)({ type: schedule_1.ScheduleType.WORKER, scheduleData: { // every 5 mins interval: 60000 * 5, }, }) ], CheckRecentlyUpdatedPackages); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hlY2tSZWNlbnRseVVwZGF0ZWRQYWNrYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9wb3J0L3NjaGVkdWxlL0NoZWNrUmVjZW50bHlVcGRhdGVkUGFja2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsbURBQThFO0FBQzlFLHNDQUFxQztBQUNyQyxrRkFBK0U7QUFDL0UsMEVBQXVFO0FBQ3ZFLDBEQUEyRDtBQUMzRCxzREFBa0Q7QUFFbEQsNENBQTRDO0FBUXJDLElBQU0sNEJBQTRCLEdBQWxDLE1BQU0sNEJBQTRCO0lBZXZDLEtBQUssQ0FBQyxTQUFTO1FBQ2IsTUFBTSxzQkFBc0IsR0FBRyxDQUFFLG9CQUFRLENBQUMsSUFBSSxFQUFFLG9CQUFRLENBQUMsS0FBSyxDQUFFLENBQUM7UUFDakUsSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEI7WUFBRSxPQUFPO1FBQy9ILE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELEtBQUssSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDMUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxHQUFHLFNBQVMsQ0FBQztZQUNwQyxNQUFNLE9BQU8sR0FBRywrQ0FBK0MsTUFBTSxFQUFFLENBQUM7WUFDeEUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSTtnQkFDRixNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFH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