cnpmcore
Version:
Private NPM Registry for Enterprise
49 lines • 3.68 kB
JavaScript
export class BugVersion {
constructor(data) {
this.data = data;
}
/**
* List all package names that have bugs
*/
listAllPackagesHasBugs() {
return Object.keys(this.data);
}
listBugVersions(pkgName) {
const bugVersionPackage = this.data[pkgName];
if (!bugVersionPackage) {
return [];
}
return Object.keys(bugVersionPackage);
}
hasBugVersions(pkgName) {
return pkgName in this.data;
}
/**
* get fix version advice for a package version
*/
fixVersion(pkgName, version) {
const advice = this.data[pkgName] && this.data[pkgName][version];
if (!advice || advice.version === version)
return undefined;
return advice;
}
fixManifest(bugVersionManifest, fixVersionManifest) {
// If the tarball is same, manifest has fixed.
if (bugVersionManifest.dist?.tarball === fixVersionManifest.dist?.tarball) {
return;
}
const advice = this.fixVersion(bugVersionManifest.name, bugVersionManifest.version);
if (!advice) {
return;
}
const newManifest = structuredClone(fixVersionManifest);
const hotfixDeprecated = `[WARNING] Use ${advice.version} instead of ${bugVersionManifest.version}, reason: ${advice.reason}`;
newManifest.deprecated = bugVersionManifest.deprecated
? `${bugVersionManifest.deprecated} (${hotfixDeprecated})`
: hotfixDeprecated;
// don't change version
newManifest.version = bugVersionManifest.version;
return newManifest;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVnVmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL2VudGl0eS9CdWdWZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJCQSxNQUFNLE9BQU8sVUFBVTtJQUdyQixZQUFZLElBQXdCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBZTtRQUM3QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLE9BQWUsRUFBRSxPQUFlO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQ1Qsa0JBQThDLEVBQzlDLGtCQUE4QztRQUU5Qyw4Q0FBOEM7UUFDOUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxLQUFLLGtCQUFrQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMxRSxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsTUFBTSxDQUFDLE9BQU8sZUFBZSxrQkFBa0IsQ0FBQyxPQUFPLGFBQWEsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlILFdBQVcsQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsVUFBVTtZQUNwRCxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLEtBQUssZ0JBQWdCLEdBQUc7WUFDMUQsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1FBQ3JCLHVCQUF1QjtRQUN2QixXQUFXLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUNqRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YifQ==