From 0cf6470993bba77e978be08f234f841efc1c47e9 Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Wed, 7 Jun 2023 10:01:40 +0800 Subject: [PATCH] fix: auto fix invalid version to any version (#499) --- app/core/entity/PackageVersion.ts | 13 ++++++++++--- app/core/entity/PaddingSemVer.ts | 8 +++++++- app/core/service/FixNoPaddingVersionService.ts | 12 ++---------- .../BugVersionService/fixPackageBugVersion.test.ts | 2 ++ 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/app/core/entity/PackageVersion.ts b/app/core/entity/PackageVersion.ts index 6b82ed92..d50b21f5 100644 --- a/app/core/entity/PackageVersion.ts +++ b/app/core/entity/PackageVersion.ts @@ -12,6 +12,8 @@ interface PackageVersionData extends EntityData { tarDist: Dist; readmeDist: Dist; publishTime: Date; + paddingVersion?: string | null; + isPreRelease?: boolean | null; } export class PackageVersion extends Entity { @@ -36,9 +38,14 @@ export class PackageVersion extends Entity { this.tarDist = data.tarDist; this.readmeDist = data.readmeDist; this.publishTime = data.publishTime; - const paddingSemVer = new PaddingSemVer(this.version); - this.paddingVersion = paddingSemVer.paddingVersion; - this.isPreRelease = paddingSemVer.isPreRelease; + if (data.paddingVersion && typeof data.isPreRelease === 'boolean') { + this.paddingVersion = data.paddingVersion; + this.isPreRelease = data.isPreRelease; + } else { + const paddingSemVer = new PaddingSemVer(this.version); + this.paddingVersion = paddingSemVer.paddingVersion; + this.isPreRelease = paddingSemVer.isPreRelease; + } } static create(data: EasyData): PackageVersion { diff --git a/app/core/entity/PaddingSemVer.ts b/app/core/entity/PaddingSemVer.ts index adc5e062..6ae0b035 100644 --- a/app/core/entity/PaddingSemVer.ts +++ b/app/core/entity/PaddingSemVer.ts @@ -1,4 +1,4 @@ -import { SemVer } from 'semver'; +import { SemVer, valid } from 'semver'; export class PaddingSemVer { private readonly semver: SemVer; @@ -7,6 +7,12 @@ export class PaddingSemVer { readonly isPreRelease: boolean; constructor(semver: string | SemVer) { + // ignore invalid version, e.g.: '1000000000000000000.0.0' on https://registry.npmjs.com/latentflip-test + if (!valid(semver)) { + this.isPreRelease = true; + this._paddingVersion = PaddingSemVer.anyVersion(); + return; + } this.semver = new SemVer(semver); if ((this.semver as any).includePrerelease) { this.isPreRelease = true; diff --git a/app/core/service/FixNoPaddingVersionService.ts b/app/core/service/FixNoPaddingVersionService.ts index bb28243d..232e7486 100644 --- a/app/core/service/FixNoPaddingVersionService.ts +++ b/app/core/service/FixNoPaddingVersionService.ts @@ -1,7 +1,6 @@ import { SingletonProto, AccessLevel, Inject } from '@eggjs/tegg'; import { EggLogger } from 'egg'; import pMap from 'p-map'; -import semver from 'semver'; import { PackageVersionRepository } from '../../repository/PackageVersionRepository'; import { PaddingSemVer } from '../entity/PaddingSemVer'; @@ -26,15 +25,8 @@ export class FixNoPaddingVersionService { this.logger.info('[FixNoPaddingVersionService] fix padding version ids %j', packageVersions.map(t => t.id)); await pMap(packageVersions, async packageVersion => { - // ignore invalid version, e.g.: '1000000000000000000.0.0' on https://registry.npmjs.com/latentflip-test - if (!semver.valid(packageVersion.version)) return; - try { - const paddingSemver = new PaddingSemVer(packageVersion.version); - await this.packageVersionRepository.fixPaddingVersion(packageVersion.packageVersionId, paddingSemver); - } catch (err) { - this.logger.error('[FixNoPaddingVersionService:error] package_version_id: %s, version: %j, error: %s', packageVersion.packageVersionId, packageVersion.version, err); - throw err; - } + const paddingSemver = new PaddingSemVer(packageVersion.version); + await this.packageVersionRepository.fixPaddingVersion(packageVersion.packageVersionId, paddingSemver); }, { concurrency: 30 }); } } diff --git a/test/core/service/BugVersionService/fixPackageBugVersion.test.ts b/test/core/service/BugVersionService/fixPackageBugVersion.test.ts index 8e0e32d2..c0e39e65 100644 --- a/test/core/service/BugVersionService/fixPackageBugVersion.test.ts +++ b/test/core/service/BugVersionService/fixPackageBugVersion.test.ts @@ -101,6 +101,8 @@ describe('test/core/service/BugVersionService/fixPackageBugVersion.test.ts', () tarDist: dist, readmeDist: dist, publishTime: new Date(), + paddingVersion: null, + isPreRelease: null, }); }); });