UNPKG

cnpmcore

Version:
156 lines 11.5 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); 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 __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; 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.PackageVersionService = void 0; const tegg_1 = require("@eggjs/tegg"); const semver_1 = __importStar(require("semver")); const PackageVersionRepository_1 = require("../../repository/PackageVersionRepository"); const PackageUtil_1 = require("../../common/PackageUtil"); const SqlRange_1 = require("../entity/SqlRange"); const BugVersionService_1 = require("./BugVersionService"); const DistRepository_1 = require("../../repository/DistRepository"); 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(`npmcore not support spec: ${spec.raw}`); } return realSpec; } async getVersion(spec, withBugVersion = true) { let version; const [scope, name] = (0, PackageUtil_1.getScopeAndName)(spec.name); // 优先通过 tag 来进行判断 if (spec.type === 'tag') { version = await this.packageVersionRepository.findVersionByTag(scope, name, spec.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_1.default.valid(spec.fetchSpec, true); } else if (spec.type === 'range') { // a@1.1 情况下,1.1 会解析为 range,如果有对应的 distTag 时会失效 // 这里需要进行兼容 // 仅当 spec 不为 version 时才查询,减少请求次数 const versionMatchTag = await this.packageVersionRepository.findVersionByTag(scope, name, spec.fetchSpec); if (versionMatchTag) { version = versionMatchTag; } else { const range = new semver_1.Range(spec.fetchSpec); const paddingSemVer = new SqlRange_1.SqlRange(range); if (paddingSemVer.containPreRelease) { const versions = await this.packageVersionRepository.findSatisfyVersionsWithPrerelease(scope, name, paddingSemVer); version = semver_1.default.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; } }; exports.PackageVersionService = PackageVersionService; __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", PackageVersionRepository_1.PackageVersionRepository) ], PackageVersionService.prototype, "packageVersionRepository", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", BugVersionService_1.BugVersionService) ], PackageVersionService.prototype, "bugVersionService", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", DistRepository_1.DistRepository) ], PackageVersionService.prototype, "distRepository", void 0); exports.PackageVersionService = PackageVersionService = __decorate([ (0, tegg_1.SingletonProto)({ accessLevel: tegg_1.AccessLevel.PUBLIC, }) ], PackageVersionService); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVZlcnNpb25TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvcmUvc2VydmljZS9QYWNrYWdlVmVyc2lvblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzQ0FBa0U7QUFDbEUsaURBQXVDO0FBRXZDLHdGQUFxRjtBQUNyRiwwREFBMkQ7QUFDM0QsaURBQThDO0FBQzlDLDJEQUF3RDtBQUV4RCxvRUFBaUU7QUFNMUQsSUFBTSxxQkFBcUIsR0FBM0IsTUFBTSxxQkFBcUI7SUFVaEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFFLGVBQXdCLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDN0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUNELElBQUksZ0JBR1MsQ0FBQztRQUNkLElBQUksY0FBYyxFQUFFO1lBQ2xCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2hFLElBQUksVUFBVSxFQUFFO2dCQUNkLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsZ0JBQWdCLEdBQUc7d0JBQ2pCLE1BQU07d0JBQ04sT0FBTztxQkFDUixDQUFDO29CQUNGLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO2lCQUMxQjthQUNGO1NBQ0Y7UUFDRCxJ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