mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-31 17:51:49 +00:00
3032c960b3
* fix(npm): remove old dependency when replacement exists * Add coverage ignore comments * Simplify implementation * Rename to removeAsString * Move it after replaceAsString * Improve test case * Improve error message of replaceAsString * Fix coverage * Fix coverage again * Only remove dependency at depType like replaceAsString * Refactor tests * Fix tsc * fix(npm): skip update when replacement dependency already exists * Simplify else * Avoid returning an error * fix(flatten): skip replacement updates when a sibling dependency already exists * Revert the other changes * Also handle it in the Dependency Dashboard * Filter out earlier * Try some other way * Try fix dep dashboard * Try fix again * Extract helper * Improve some stuff * Improve assertion * Remove misleading comment * Address review comments
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { DEBUG, ERROR, FATAL, INFO, TRACE, WARN, nameFromLevel } from 'bunyan';
|
|
import { getProblems } from '../../logger/index.ts';
|
|
import type { PackageDependency } from '../../modules/manager/types.ts';
|
|
import { emojify } from '../../util/emoji.ts';
|
|
|
|
/**
|
|
* Checks whether a replacement target already exists as a sibling dependency
|
|
* in the same package file.
|
|
*/
|
|
export function replacementAlreadyExists(
|
|
deps: PackageDependency[],
|
|
currentDep: PackageDependency,
|
|
newName: string,
|
|
): boolean {
|
|
return deps.some(
|
|
(sibling) =>
|
|
sibling !== currentDep &&
|
|
(sibling.depName === newName || sibling.packageName === newName),
|
|
);
|
|
}
|
|
|
|
export function extractRepoProblems(
|
|
repository: string | undefined,
|
|
): Set<string> {
|
|
return new Set(
|
|
getProblems()
|
|
.filter(
|
|
(problem) =>
|
|
problem.repository === repository && !problem.artifactErrors,
|
|
)
|
|
.map((problem) => `${formatProblemLevel(problem.level)}: ${problem.msg}`),
|
|
);
|
|
}
|
|
|
|
type EmojiLogLevelMapping = Record<number, string>;
|
|
|
|
const logLevelEmojis: EmojiLogLevelMapping = {
|
|
[TRACE]: ':microscope:',
|
|
[DEBUG]: ':mag:',
|
|
[INFO]: ':information_source:',
|
|
[WARN]: ':warning:',
|
|
[ERROR]: ':x:',
|
|
[FATAL]: ':skull:',
|
|
};
|
|
|
|
export function formatProblemLevel(level: number): string {
|
|
const name = nameFromLevel[level].toUpperCase();
|
|
const emojiName = logLevelEmojis[level];
|
|
|
|
return `${emojify(emojiName)} ${name}`;
|
|
}
|