cnpmcore 3.74.1 → 3.74.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/core/service/PackageVersionService.d.ts +3 -0
- package/dist/app/core/service/PackageVersionService.js +18 -1
- package/dist/app/port/controller/package/DownloadPackageVersionTar.d.ts +1 -0
- package/dist/app/port/controller/package/DownloadPackageVersionTar.js +13 -1
- package/package.json +1 -1
|
@@ -2,9 +2,12 @@ import { Result } from 'npm-package-arg';
|
|
|
2
2
|
import type { PackageJSONType } from '../../repository/PackageRepository';
|
|
3
3
|
export declare class PackageVersionService {
|
|
4
4
|
private packageVersionRepository;
|
|
5
|
+
private packageRepository;
|
|
6
|
+
private packageVersionBlockRepository;
|
|
5
7
|
private readonly bugVersionService;
|
|
6
8
|
private readonly distRepository;
|
|
7
9
|
readManifest(pkgId: string, spec: Result, isFullManifests: boolean, withBugVersion?: boolean): Promise<PackageJSONType | undefined>;
|
|
8
10
|
private findRealSpec;
|
|
9
11
|
getVersion(spec: Result, withBugVersion?: boolean): Promise<string | undefined | null>;
|
|
12
|
+
findBlockInfo(fullname: string): Promise<import("../entity/PackageVersionBlock").PackageVersionBlock | null>;
|
|
10
13
|
}
|
|
@@ -40,6 +40,7 @@ const PackageUtil_1 = require("../../common/PackageUtil");
|
|
|
40
40
|
const SqlRange_1 = require("../entity/SqlRange");
|
|
41
41
|
const BugVersionService_1 = require("./BugVersionService");
|
|
42
42
|
const DistRepository_1 = require("../../repository/DistRepository");
|
|
43
|
+
const PackageVersionBlockRepository_1 = require("../../repository/PackageVersionBlockRepository");
|
|
43
44
|
let PackageVersionService = class PackageVersionService {
|
|
44
45
|
async readManifest(pkgId, spec, isFullManifests, withBugVersion = true) {
|
|
45
46
|
const realSpec = this.findRealSpec(spec);
|
|
@@ -134,12 +135,28 @@ let PackageVersionService = class PackageVersionService {
|
|
|
134
135
|
}
|
|
135
136
|
return version;
|
|
136
137
|
}
|
|
138
|
+
async findBlockInfo(fullname) {
|
|
139
|
+
const [scope, name] = (0, PackageUtil_1.getScopeAndName)(fullname);
|
|
140
|
+
const pkg = await this.packageRepository.findPackage(scope, name);
|
|
141
|
+
if (!pkg) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
return await this.packageVersionBlockRepository.findPackageBlock(pkg.packageId);
|
|
145
|
+
}
|
|
137
146
|
};
|
|
138
147
|
exports.PackageVersionService = PackageVersionService;
|
|
139
148
|
__decorate([
|
|
140
149
|
(0, tegg_1.Inject)(),
|
|
141
150
|
__metadata("design:type", PackageVersionRepository_1.PackageVersionRepository)
|
|
142
151
|
], PackageVersionService.prototype, "packageVersionRepository", void 0);
|
|
152
|
+
__decorate([
|
|
153
|
+
(0, tegg_1.Inject)(),
|
|
154
|
+
__metadata("design:type", Function)
|
|
155
|
+
], PackageVersionService.prototype, "packageRepository", void 0);
|
|
156
|
+
__decorate([
|
|
157
|
+
(0, tegg_1.Inject)(),
|
|
158
|
+
__metadata("design:type", PackageVersionBlockRepository_1.PackageVersionBlockRepository)
|
|
159
|
+
], PackageVersionService.prototype, "packageVersionBlockRepository", void 0);
|
|
143
160
|
__decorate([
|
|
144
161
|
(0, tegg_1.Inject)(),
|
|
145
162
|
__metadata("design:type", BugVersionService_1.BugVersionService)
|
|
@@ -153,4 +170,4 @@ exports.PackageVersionService = PackageVersionService = __decorate([
|
|
|
153
170
|
accessLevel: tegg_1.AccessLevel.PUBLIC,
|
|
154
171
|
})
|
|
155
172
|
], PackageVersionService);
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVZlcnNpb25TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvcmUvc2VydmljZS9QYWNrYWdlVmVyc2lvblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzQ0FBa0U7QUFDbEUsaURBQXVDO0FBRXZDLHdGQUFxRjtBQUNyRiwwREFBMkQ7QUFDM0QsaURBQThDO0FBQzlDLDJEQUF3RDtBQUV4RCxvRUFBaUU7QUFFakUsa0dBQStGO0FBS3hGLElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBZ0JoQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsZUFBd0IsRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUM3RixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxnQkFHUyxDQUFDO1FBQ2QsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEUsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLE1BQU0sRUFBRTtvQkFDVixnQkFBZ0IsR0FBRzt3QkFDakIsTUFBTTt3QkFDTixPQUFPO3FCQUNSLENBQUM7b0JBQ0YsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7aUJBQzFCO2FB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
|
|
@@ -7,6 +7,7 @@ export declare class DownloadPackageVersionTarController extends AbstractControl
|
|
|
7
7
|
registryManagerService: RegistryManagerService;
|
|
8
8
|
private proxyCacheService;
|
|
9
9
|
private packageSyncerService;
|
|
10
|
+
private packageVersionService;
|
|
10
11
|
private nfsAdapter;
|
|
11
12
|
downloadForOptions(ctx: EggContext): Promise<void>;
|
|
12
13
|
download(ctx: EggContext, fullname: string, filenameWithVersion: string): Promise<import("stream").Readable | undefined>;
|
|
@@ -24,6 +24,7 @@ const PackageManagerService_1 = require("../../../core/service/PackageManagerSer
|
|
|
24
24
|
const ProxyCacheService_1 = require("../../../core/service/ProxyCacheService");
|
|
25
25
|
const PackageSyncerService_1 = require("../../../core/service/PackageSyncerService");
|
|
26
26
|
const RegistryManagerService_1 = require("../../../core/service/RegistryManagerService");
|
|
27
|
+
const PackageVersionService_1 = require("../../../core/service/PackageVersionService");
|
|
27
28
|
let DownloadPackageVersionTarController = class DownloadPackageVersionTarController extends AbstractController_1.AbstractController {
|
|
28
29
|
// Support OPTIONS Request on tgz download
|
|
29
30
|
async downloadForOptions(ctx) {
|
|
@@ -36,6 +37,13 @@ let DownloadPackageVersionTarController = class DownloadPackageVersionTarControl
|
|
|
36
37
|
const version = this.getAndCheckVersionFromFilename(ctx, fullname, filenameWithVersion);
|
|
37
38
|
const storeKey = `/packages/${fullname}/${version}/${filenameWithVersion}.tgz`;
|
|
38
39
|
const downloadUrl = await this.nfsAdapter.getDownloadUrl(storeKey);
|
|
40
|
+
// block tgz only all versions have been blocked
|
|
41
|
+
const blockInfo = await this.packageVersionService.findBlockInfo(fullname);
|
|
42
|
+
if (blockInfo?.reason) {
|
|
43
|
+
this.setCDNHeaders(ctx);
|
|
44
|
+
ctx.logger.info('[PackageController:downloadVersionTar] %s@%s, block for %s', fullname, version, blockInfo.reason);
|
|
45
|
+
throw this.createPackageBlockError(blockInfo.reason, fullname, version);
|
|
46
|
+
}
|
|
39
47
|
if (this.config.cnpmcore.syncMode === constants_1.SyncMode.all && downloadUrl) {
|
|
40
48
|
// try nfs url first, avoid db query
|
|
41
49
|
this.packageManagerService.plusPackageVersionCounter(fullname, version);
|
|
@@ -129,6 +137,10 @@ __decorate([
|
|
|
129
137
|
(0, tegg_1.Inject)(),
|
|
130
138
|
__metadata("design:type", PackageSyncerService_1.PackageSyncerService)
|
|
131
139
|
], DownloadPackageVersionTarController.prototype, "packageSyncerService", void 0);
|
|
140
|
+
__decorate([
|
|
141
|
+
(0, tegg_1.Inject)(),
|
|
142
|
+
__metadata("design:type", PackageVersionService_1.PackageVersionService)
|
|
143
|
+
], DownloadPackageVersionTarController.prototype, "packageVersionService", void 0);
|
|
132
144
|
__decorate([
|
|
133
145
|
(0, tegg_1.Inject)(),
|
|
134
146
|
__metadata("design:type", NFSAdapter_1.NFSAdapter)
|
|
@@ -197,4 +209,4 @@ __decorate([
|
|
|
197
209
|
exports.DownloadPackageVersionTarController = DownloadPackageVersionTarController = __decorate([
|
|
198
210
|
(0, tegg_1.HTTPController)()
|
|
199
211
|
], DownloadPackageVersionTarController);
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG93bmxvYWRQYWNrYWdlVmVyc2lvblRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9wb3J0L2NvbnRyb2xsZXIvcGFja2FnZS9Eb3dubG9hZFBhY2thZ2VWZXJzaW9uVGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEwQztBQUMxQywyQ0FFb0I7QUFDcEIsc0NBUXFCO0FBQ3JCLDhEQUEyRDtBQUMzRCw2REFBbUY7QUFDbkYseURBQXFEO0FBQ3JELG1FQUFnRTtBQUNoRSx1RkFBb0Y7QUFDcEYsK0VBQTRFO0FBQzVFLHFGQUFrRjtBQUNsRix5RkFBc0Y7QUFDdEYsdUZBQW9GO0FBRzdFLElBQU0sbUNBQW1DLEdBQXpDLE1BQU0sbUNBQW9DLFNBQVEsdUNBQWtCO0lBY3pFLDBDQUEwQztJQU1wQyxBQUFOLEtBQUssQ0FBQyxrQkFBa0IsQ0FBWSxHQUFlO1FBQ2pELEdBQUcsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNwRCxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBT0ssQUFBTixLQUFLLENBQUMsUUFBUSxDQUFZLEdBQWUsRUFBZSxRQUFnQixFQUFlLG1CQUEyQjtRQUNoSCx5RUFBeUU7UUFDekUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUN4RixNQUFNLFFBQVEsR0FBRyxhQUFhLFFBQVEsSUFBSSxPQUFPLElBQUksbUJBQW1CLE1BQU0sQ0FBQztRQUMvRSxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRW5FLGdEQUFnRDtRQUNo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
|