UNPKG

cnpmcore

Version:

Private NPM Registry for Enterprise

157 lines 12.1 kB
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); }; import { AccessLevel, Inject, SingletonProto } from 'egg'; import pMap from 'p-map'; import { BUG_VERSIONS, LATEST_TAG } from "../../common/constants.js"; import { getScopeAndName } from "../../common/PackageUtil.js"; import { BugVersion } from "../entity/BugVersion.js"; let BugVersionService = class BugVersionService { /** * Get the "config.bug-versions" field in "bug-versions"'s package.json * @see https://github.com/cnpm/bug-versions/blob/master/package.json#L136 * @returns The bug version */ async getBugVersion() { // TODO: performance problem, cache bugVersion and update with schedule const pkg = await this.packageRepository.findPackage('', BUG_VERSIONS); if (!pkg) return; const tag = await this.packageRepository.findPackageTag(pkg.packageId, LATEST_TAG); if (!tag) return; let bugVersion = this.bugVersionStore.getBugVersion(tag.version); if (!bugVersion) { const packageVersionJson = (await this.distRepository.findPackageVersionManifest(pkg.packageId, tag.version)); if (!packageVersionJson) return; const data = packageVersionJson.config?.['bug-versions'] ?? {}; bugVersion = new BugVersion(data); this.bugVersionStore.setBugVersion(bugVersion, tag.version); } return bugVersion; } /** * Check if the package has bug versions * @param fullname - The fullname of the package * @returns True if the package has bug versions, false otherwise */ async hasBugVersions(fullname) { const bugVersion = await this.getBugVersion(); if (!bugVersion) return false; return bugVersion.hasBugVersions(fullname); } async cleanBugVersionPackageCaches(bugVersion) { const fullnames = bugVersion.listAllPackagesHasBugs(); this.logger.info('[BugVersionService] cleaning %s packages cache', fullnames.length); await pMap(fullnames, async (fullname) => { await this.cacheService.removeCache(fullname); }, { concurrency: 50, stopOnError: false, }); this.logger.info('[BugVersionService] cleaned %s packages cache', fullnames.length); } /** * Fix package bug version with all versions * @param bugVersion - The bug version * @param fullname - The fullname of the package * @param manifests - The manifests of the package * @returns The versions of the fixed manifests */ async fixPackageBugVersions(bugVersion, fullname, manifests) { const fixedVersions = []; // If package all version unpublished(like pinyin-tool), versions is undefined if (!manifests) { return fixedVersions; } for (const manifest of Object.values(manifests.versions)) { const fixedVersion = this.fixPackageBugVersionWithAllVersions(fullname, bugVersion, manifest, manifests); if (fixedVersion) { fixedVersions.push(fixedVersion); this.logger.info('[BugVersionService] fixed %s@%s to %s', fullname, manifest?.version, fixedVersion); } } return fixedVersions; } async fixPackageBugVersion(bugVersion, fullname, manifest) { const advice = bugVersion.fixVersion(fullname, manifest.version); if (!advice) { return manifest; } const [scope, name] = getScopeAndName(fullname); const pkg = await this.packageRepository.findPackage(scope, name); if (!pkg) { return manifest; } const packageVersion = await this.packageRepository.findPackageVersion(pkg.packageId, advice.version); if (!packageVersion) { return manifest; } const fixedManifest = await this.distRepository.findPackageVersionManifest(packageVersion.packageId, advice.version); if (!fixedManifest) { return manifest; } return bugVersion.fixManifest(manifest, fixedManifest); } /** * Fix package bug version with all versions * @param fullname - The fullname of the package * @param bugVersion - The bug version * @param manifest - The manifest of the package * @param manifests - The manifests of the package * @returns The version of the fixed manifest */ fixPackageBugVersionWithAllVersions(fullname, bugVersion, manifest, manifests) { const advice = bugVersion.fixVersion(fullname, manifest.version); if (!advice) { return; } const fixedManifest = manifests.versions[advice.version]; if (!fixedManifest) { this.logger.warn('[BugVersionService] not found pkg for %s@%s manifest', fullname, advice.version); return; } const newManifest = bugVersion.fixManifest(manifest, fixedManifest); if (!newManifest) { return; } // update manifests with fixed manifest manifests.versions[manifest.version] = newManifest; return manifest.version; } }; __decorate([ Inject(), __metadata("design:type", Function) ], BugVersionService.prototype, "packageRepository", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], BugVersionService.prototype, "distRepository", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], BugVersionService.prototype, "logger", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], BugVersionService.prototype, "cacheService", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], BugVersionService.prototype, "bugVersionStore", void 0); BugVersionService = __decorate([ SingletonProto({ accessLevel: AccessLevel.PUBLIC, }) ], BugVersionService); export { BugVersionService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVnVmVyc2lvblNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvY29yZS9zZXJ2aWNlL0J1Z1ZlcnNpb25TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBVSxNQUFNLEtBQUssQ0FBQztBQUNsRSxPQUFPLElBQUksTUFBTSxPQUFPLENBQUM7QUFHekIsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUTlDLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBZ0I1Qjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGFBQWE7UUFDakIsdUVBQXVFO1FBQ3ZFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUNqQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsMEJBQTBCLENBQzlFLEdBQUcsQ0FBQyxTQUFTLEVBQ2Is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