cnpmcore 1.3.2 → 1.4.0
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/History.md
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
|
|
2
|
+
1.4.0 / 2022-06-28
|
|
3
|
+
==================
|
|
4
|
+
|
|
5
|
+
**features**
|
|
6
|
+
* [[`57da0a3`](http://github.com/cnpm/cnpmcore/commit/57da0a3c7e56d6613b57391948949ffea24ec058)] - feat: add configuration enableNopmClientAndVersionCheck (laibao101 <<369632567@qq.com>>)
|
|
7
|
+
|
|
8
|
+
**others**
|
|
9
|
+
* [[`bf62932`](http://github.com/cnpm/cnpmcore/commit/bf62932f2e5224de6e34b873bf690a6e887b94b0)] - 🤖 TEST: Fix unstable test cases on OSS env (#254) (fengmk2 <<fengmk2@gmail.com>>)
|
|
10
|
+
|
|
2
11
|
1.3.2 / 2022-06-27
|
|
3
12
|
==================
|
|
4
13
|
|
|
@@ -59,7 +59,8 @@ let UserRoleManager = class UserRoleManager {
|
|
|
59
59
|
throw new egg_errors_1.UnauthorizedError(message);
|
|
60
60
|
}
|
|
61
61
|
const { user, token } = authorizedUserAndToken;
|
|
62
|
-
|
|
62
|
+
// only enable npm client and version check setting will go into this condition
|
|
63
|
+
if (this.config.cnpmcore.enableNpmClientAndVersionCheck && role === 'publish') {
|
|
63
64
|
if (token.isReadonly) {
|
|
64
65
|
throw new egg_errors_1.ForbiddenError(`Read-only Token "${token.tokenMark}" can't publish`);
|
|
65
66
|
}
|
|
@@ -94,6 +95,11 @@ let UserRoleManager = class UserRoleManager {
|
|
|
94
95
|
}
|
|
95
96
|
throw new egg_errors_1.ForbiddenError(`Can\'t modify npm public package "${pkg.fullname}"`);
|
|
96
97
|
}
|
|
98
|
+
// admins can modified private package (publish to cnpmcore)
|
|
99
|
+
if (pkg.isPrivate && this.config.cnpmcore.admins[user.name] === user.email) {
|
|
100
|
+
this.logger.warn('[UserRoleManager.requiredPackageMaintainer] admin "%s" modified private package "%s"', user.name, pkg.fullname);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
97
103
|
const maintainers = await this.packageRepository.listPackageMaintainers(pkg.packageId);
|
|
98
104
|
const maintainer = maintainers.find(m => m.userId === user.userId);
|
|
99
105
|
if (!maintainer) {
|
|
@@ -143,4 +149,4 @@ UserRoleManager = __decorate([
|
|
|
143
149
|
})
|
|
144
150
|
], UserRoleManager);
|
|
145
151
|
exports.UserRoleManager = UserRoleManager;
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlclJvbGVNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL3BvcnQvVXNlclJvbGVNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHNDQUtxQjtBQUVyQiwyQ0FBK0Q7QUFNL0QsaURBQTRDO0FBUzVDLElBQWEsZUFBZSxHQUE1QixNQUFhLGVBQWU7SUFBNUI7UUFVVSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUEwSG5DLENBQUM7SUF0SEMsSUFBSTtJQUNKLDJFQUEyRTtJQUMzRSw4QkFBOEI7SUFDOUIsa0VBQWtFO0lBQ2xFLHdDQUF3QztJQUN4QyxtQkFBbUI7SUFDbkIsNkJBQTZCO0lBQzdCLHVDQUF1QztJQUN2Qyw0QkFBNEI7SUFDNUIsNkJBQTZCO0lBQzdCLElBQUk7SUFDRyxLQUFLLENBQUMseUJBQXlCLENBQUMsR0FBZTtRQUNwRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUM3QyxPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsc0JBQXNCO2dCQUNsQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjthQUNqQyxDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUN6QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsTUFBTSxRQUFR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
|
|
@@ -72,6 +72,8 @@ exports.default = (appInfo) => {
|
|
|
72
72
|
cdnVaryHeader: 'Accept, Accept-Encoding',
|
|
73
73
|
// store full package version manifests data to database table(package_version_manifests), default is false
|
|
74
74
|
enableStoreFullPackageVersionManifestsToDatabase: false,
|
|
75
|
+
// only support npm as client and npm >= 7.0.0 allow publish action
|
|
76
|
+
enableNpmClientAndVersionCheck: true,
|
|
75
77
|
};
|
|
76
78
|
// override config from framework / plugin
|
|
77
79
|
config.dataDir = (0, path_1.join)(appInfo.root, '.cnpmcore');
|
|
@@ -148,4 +150,4 @@ exports.default = (appInfo) => {
|
|
|
148
150
|
config.typeboxValidate = { patchAjv: typebox_1.patchAjv };
|
|
149
151
|
return config;
|
|
150
152
|
};
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jb25maWcvY29uZmlnLmRlZmF1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsK0JBQTRCO0FBRTVCLHdEQUFpQztBQUNqQyxpREFBK0M7QUFFL0Msa0JBQWUsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBZ0MsQ0FBQztJQUVoRCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLElBQUksRUFBRSxNQUFNO1FBQ1osY0FBYyxFQUFFLDRCQUE0QjtRQUM1QyxpREFBaUQ7UUFDakQsZ0VBQWdFO1FBQ2hFLG9CQUFvQixFQUFFLEtBQUs7UUFDM0IsaUJBQWlCLEVBQUUsS0FBSztRQUN4QixTQUFTO1FBQ1QseUJBQXlCLEVBQUUsTUFBTTtRQUNqQyxzQkFBc0IsRUFBRSxHQUFHO1FBQzNCLFlBQVk7UUFDWixzRUFBc0U7UUFDdEUsZ0NBQWdDO1FBQ2hDLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLG1DQUFtQyxFQUFFLEVBQUU7UUFDdkMsd0NBQXdDO1FBQ3hDLG9CQUFvQixFQUFFLEVBQUU7UUFDeEIsMEdBQTBHO1FBQzFHLDhCQUE4QjtRQUM5QiwwQkFBMEIsRUFBRSxJQUFJO1FBQ2hDLGtDQUFrQztRQUNsQyxnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLDhDQUE4QztRQUM5Qyx1QkFBdUIsRUFBRSxFQUFFO1FBQzNCLDhGQUE4RjtRQUM5RiwwRUFBMEU7UUFDMUUsc0JBQXNCLEVBQUUsS0FBSztRQUM3Qiw4QkFBOEIsRUFBRSxFQUFFO1FBQ2xDLHVCQUF1QixFQUFFLEVBQUU7UUFDM0Isb0RBQW9EO1FBQ3BELG1CQUFtQixFQUFFLEtBQUs7UUFDMUIsMEJBQTBCLEVBQUUsR0FBRztRQUMvQixxQkFBcUIsRUFBRSw2QkFBNkI7UUFDcEQsMEdBQTBHO1FBQzFHLHlCQUF5QixFQUFFLFdBQVc7UUFDdEMs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
|