cnpmcore 3.83.0 → 3.83.1
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.
|
@@ -10,4 +10,5 @@ export declare class PackageVersionService {
|
|
|
10
10
|
private findRealSpec;
|
|
11
11
|
getVersion(spec: Result, withBugVersion?: boolean): Promise<string | undefined | null>;
|
|
12
12
|
findBlockInfo(fullname: string): Promise<import("../entity/PackageVersionBlock").PackageVersionBlock | null>;
|
|
13
|
+
private findBlockedVersions;
|
|
13
14
|
}
|
|
@@ -113,14 +113,19 @@ let PackageVersionService = class PackageVersionService {
|
|
|
113
113
|
version = versionMatchTag;
|
|
114
114
|
}
|
|
115
115
|
else {
|
|
116
|
+
// Skip blocked versions (both dependency-isolation buffer and permanent blocks)
|
|
117
|
+
// so range resolution matches what the client sees in the manifest — e.g. for
|
|
118
|
+
// ^1.0.0 with 1.1.0 visible and 1.2.0 blocked, resolve to 1.1.0 instead of
|
|
119
|
+
// returning 1.2.0 and forcing a blockReason response.
|
|
120
|
+
const excludeVersions = await this.findBlockedVersions(scope, name);
|
|
116
121
|
const range = new semver_1.Range(spec.fetchSpec);
|
|
117
122
|
const paddingSemVer = new SqlRange_1.SqlRange(range);
|
|
118
123
|
if (paddingSemVer.containPreRelease) {
|
|
119
|
-
const versions = await this.packageVersionRepository.findSatisfyVersionsWithPrerelease(scope, name, paddingSemVer);
|
|
124
|
+
const versions = await this.packageVersionRepository.findSatisfyVersionsWithPrerelease(scope, name, paddingSemVer, excludeVersions);
|
|
120
125
|
version = semver_1.default.maxSatisfying(versions, range);
|
|
121
126
|
}
|
|
122
127
|
else {
|
|
123
|
-
version = await this.packageVersionRepository.findMaxSatisfyVersion(scope, name, paddingSemVer);
|
|
128
|
+
version = await this.packageVersionRepository.findMaxSatisfyVersion(scope, name, paddingSemVer, excludeVersions);
|
|
124
129
|
}
|
|
125
130
|
}
|
|
126
131
|
}
|
|
@@ -143,6 +148,13 @@ let PackageVersionService = class PackageVersionService {
|
|
|
143
148
|
}
|
|
144
149
|
return await this.packageVersionBlockRepository.findPackageBlock(packageId);
|
|
145
150
|
}
|
|
151
|
+
async findBlockedVersions(scope, name) {
|
|
152
|
+
const packageId = await this.packageRepository.findPackageId(scope, name);
|
|
153
|
+
if (!packageId)
|
|
154
|
+
return [];
|
|
155
|
+
const blocks = await this.packageVersionBlockRepository.listBlockedVersions(packageId);
|
|
156
|
+
return blocks.map(b => b.version);
|
|
157
|
+
}
|
|
146
158
|
};
|
|
147
159
|
exports.PackageVersionService = PackageVersionService;
|
|
148
160
|
__decorate([
|
|
@@ -170,4 +182,4 @@ exports.PackageVersionService = PackageVersionService = __decorate([
|
|
|
170
182
|
accessLevel: tegg_1.AccessLevel.PUBLIC,
|
|
171
183
|
})
|
|
172
184
|
], PackageVersionService);
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVZlcnNpb25TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvcmUvc2VydmljZS9QYWNrYWdlVmVyc2lvblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzQ0FBa0U7QUFDbEUsaURBQXVDO0FBRXZDLHdGQUFxRjtBQUNyRiwwREFBMkQ7QUFDM0QsaURBQThDO0FBQzlDLDJEQUF3RDtBQUV4RCxvRUFBaUU7QUFFakUsa0dBQStGO0FBS3hGLElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBZ0JoQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsZUFBd0IsRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUM3RixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxnQkFHUyxDQUFDO1FBQ2QsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEUsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLE1BQU0sRUFBRTtvQkFDVixnQkFBZ0IsR0FBRzt3QkFDakIsTUFBTTt3QkFDTixPQUFPO3FCQUNSLENBQUM7b0JBQ0YsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7aUJBQzFCO2FB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
|
|
@@ -11,6 +11,6 @@ export declare class PackageVersionRepository {
|
|
|
11
11
|
/**
|
|
12
12
|
* if sql version not contains prerelease, find the max version
|
|
13
13
|
*/
|
|
14
|
-
findMaxSatisfyVersion(scope: string, name: string, sqlRange: SqlRange): Promise<string | undefined>;
|
|
15
|
-
findSatisfyVersionsWithPrerelease(scope: string, name: string, sqlRange: SqlRange): Promise<Array<string>>;
|
|
14
|
+
findMaxSatisfyVersion(scope: string, name: string, sqlRange: SqlRange, excludeVersions: string[]): Promise<string | undefined>;
|
|
15
|
+
findSatisfyVersionsWithPrerelease(scope: string, name: string, sqlRange: SqlRange, excludeVersions: string[]): Promise<Array<string>>;
|
|
16
16
|
}
|
|
@@ -46,27 +46,35 @@ let PackageVersionRepository = class PackageVersionRepository {
|
|
|
46
46
|
/**
|
|
47
47
|
* if sql version not contains prerelease, find the max version
|
|
48
48
|
*/
|
|
49
|
-
async findMaxSatisfyVersion(scope, name, sqlRange) {
|
|
50
|
-
const
|
|
51
|
-
.select('packageVersions.version')
|
|
52
|
-
.join(this.Package, 'packageVersions.packageId = packages.packageId')
|
|
53
|
-
.where({
|
|
49
|
+
async findMaxSatisfyVersion(scope, name, sqlRange, excludeVersions) {
|
|
50
|
+
const where = {
|
|
54
51
|
'packages.scope': scope,
|
|
55
52
|
'packages.name': name,
|
|
56
53
|
...sqlRange.condition,
|
|
57
|
-
}
|
|
54
|
+
};
|
|
55
|
+
if (excludeVersions.length > 0) {
|
|
56
|
+
where['packageVersions.version'] = { $notIn: excludeVersions };
|
|
57
|
+
}
|
|
58
|
+
const versions = await this.PackageVersion
|
|
59
|
+
.select('packageVersions.version')
|
|
60
|
+
.join(this.Package, 'packageVersions.packageId = packages.packageId')
|
|
61
|
+
.where(where)
|
|
58
62
|
.order('packageVersions.paddingVersion', 'desc');
|
|
59
63
|
return versions?.[0]?.version;
|
|
60
64
|
}
|
|
61
|
-
async findSatisfyVersionsWithPrerelease(scope, name, sqlRange) {
|
|
62
|
-
const
|
|
63
|
-
.select('version')
|
|
64
|
-
.join(this.Package, 'packageVersions.packageId = packages.packageId')
|
|
65
|
-
.where({
|
|
65
|
+
async findSatisfyVersionsWithPrerelease(scope, name, sqlRange, excludeVersions) {
|
|
66
|
+
const where = {
|
|
66
67
|
scope,
|
|
67
68
|
name,
|
|
68
69
|
...sqlRange.condition,
|
|
69
|
-
}
|
|
70
|
+
};
|
|
71
|
+
if (excludeVersions.length > 0) {
|
|
72
|
+
where['packageVersions.version'] = { $notIn: excludeVersions };
|
|
73
|
+
}
|
|
74
|
+
const versions = await this.PackageVersion
|
|
75
|
+
.select('version')
|
|
76
|
+
.join(this.Package, 'packageVersions.packageId = packages.packageId')
|
|
77
|
+
.where(where);
|
|
70
78
|
return versions.toObject()
|
|
71
79
|
.map((t) => t.version);
|
|
72
80
|
}
|
|
@@ -89,4 +97,4 @@ exports.PackageVersionRepository = PackageVersionRepository = __decorate([
|
|
|
89
97
|
accessLevel: tegg_1.AccessLevel.PUBLIC,
|
|
90
98
|
})
|
|
91
99
|
], PackageVersionRepository);
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVZlcnNpb25SZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL3JlcG9zaXRvcnkvUGFja2FnZVZlcnNpb25SZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHNDQUFrRTtBQUdsRSxrRUFBK0Q7QUFFL0QsMERBQXVEO0FBT2hELElBQU0sd0JBQXdCLEdBQTlCLE1BQU0sd0JBQXdCO0lBV25DLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxFQUFXO1FBQ3pDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUCxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7aUJBQ3pDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBVyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNuQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFZLENBQUM7YUFDNUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2YsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLCtCQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLCtCQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLE9BQVEsYUFBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQW9CLEVBQUUsYUFBNEI7UUFDeEUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxFQUFFO1lBQ25FLGNBQWMsRUFBRSxhQUFhLENBQUMsY0FBYztZQUM1QyxZQUFZLEVB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
|