UNPKG

cnpmcore

Version:

Private NPM Registry for Enterprise

155 lines 12.3 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 semver, { Range } from 'semver'; import { getScopeAndName } from "../../common/PackageUtil.js"; import { SqlRange } from "../entity/SqlRange.js"; let PackageVersionService = class PackageVersionService { async readManifest(pkgId, spec, isFullManifests, withBugVersion = true) { const realSpec = this.findRealSpec(spec); let version = await this.getVersion(realSpec, false); if (!version) { return undefined; } let bugVersionAdvice; if (withBugVersion) { const bugVersion = await this.bugVersionService.getBugVersion(); if (bugVersion) { const advice = bugVersion.fixVersion(spec.name, version); if (advice) { bugVersionAdvice = { advice, version, }; version = advice.version; } } } let manifest; if (isFullManifests) { manifest = await this.distRepository.findPackageVersionManifest(pkgId, version); } else { manifest = await this.distRepository.findPackageAbbreviatedManifest(pkgId, version); } if (manifest && bugVersionAdvice) { manifest.deprecated = `[WARNING] Use ${bugVersionAdvice.advice.version} instead of ${bugVersionAdvice.version}, reason: ${bugVersionAdvice.advice.reason}`; manifest.version = bugVersionAdvice.version; } return manifest; } findRealSpec(spec) { let realSpec; switch (spec.type) { case 'alias': { realSpec = spec.subSpec; break; } case 'version': case 'tag': case 'range': { realSpec = spec; break; } default: { throw new Error(`cnpmcore not support spec: ${spec.raw}`); } } return realSpec; } async getVersion(spec, withBugVersion = true) { let version; const [scope, name] = getScopeAndName(spec.name); const fetchSpec = spec.fetchSpec; // 优先通过 tag 来进行判断 if (spec.type === 'tag') { version = await this.packageVersionRepository.findVersionByTag(scope, name, fetchSpec); } else if (spec.type === 'version') { // 1.0.0 // '=1.0.0' => '1.0.0' // https://github.com/npm/npm-package-arg/blob/main/lib/npa.js#L392 version = semver.valid(fetchSpec, true); } else if (spec.type === 'range') { // a@1.1 情况下,1.1 会解析为 range,如果有对应的 distTag 时会失效 // 这里需要进行兼容 // 仅当 spec 不为 version 时才查询,减少请求次数 const versionMatchTag = await this.packageVersionRepository.findVersionByTag(scope, name, fetchSpec); if (versionMatchTag) { version = versionMatchTag; } else { const range = new Range(fetchSpec); // Prefer latest tag version if it satisfies the range // e.g., latest=4.1.0, newest=4.2.0, range=^4 should return 4.1.0 const latestVersion = await this.packageVersionRepository.findVersionByTag(scope, name, 'latest'); if (latestVersion && semver.satisfies(latestVersion, range)) { version = latestVersion; } else { const paddingSemVer = new SqlRange(range); if (paddingSemVer.containPreRelease) { const versions = await this.packageVersionRepository.findSatisfyVersionsWithPrerelease(scope, name, paddingSemVer); version = semver.maxSatisfying(versions, range); } else { version = await this.packageVersionRepository.findMaxSatisfyVersion(scope, name, paddingSemVer); } } } } if (version && withBugVersion) { const bugVersion = await this.bugVersionService.getBugVersion(); if (bugVersion) { const advice = bugVersion.fixVersion(spec.name, version); if (advice) { version = advice.version; } } } return version; } async findBlockInfo(fullname) { const [scope, name] = getScopeAndName(fullname); const packageId = await this.packageRepository.findPackageId(scope, name); if (!packageId) { return null; } return await this.packageVersionBlockRepository.findPackageBlock(packageId); } }; __decorate([ Inject(), __metadata("design:type", Function) ], PackageVersionService.prototype, "packageVersionRepository", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], PackageVersionService.prototype, "packageRepository", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], PackageVersionService.prototype, "packageVersionBlockRepository", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], PackageVersionService.prototype, "bugVersionService", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], PackageVersionService.prototype, "distRepository", void 0); PackageVersionService = __decorate([ SingletonProto({ accessLevel: AccessLevel.PUBLIC, }) ], PackageVersionService); export { PackageVersionService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVZlcnNpb25TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvcmUvc2VydmljZS9QYWNrYWdlVmVyc2lvblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTFELE9BQU8sTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU05RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNMUMsSUFBTSxxQkFBcUIsR0FBM0IsTUFBTSxxQkFBcUI7SUFnQmhDLEtBQUssQ0FBQyxZQUFZLENBQ2hCLEtBQWEsRUFDYixJQUFZLEVBQ1osZUFBd0IsRUFDeEIsY0FBYyxHQUFHLElBQUk7UUFFckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLGdCQUtTLENBQUM7UUFDZCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2hFLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLE1BQU0sRUFBRSxDQUFDO29C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