cnpmcore
Version:
Private NPM Registry for Enterprise
157 lines • 12.1 kB
JavaScript
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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