mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-01 02:00:10 +00:00
645a28c77c
* build(deps): update dependency prettier to v3.8.1 | datasource | package | from | to | | ---------- | -------- | ----- | ----- | | npm | prettier | 3.6.2 | 3.8.1 | * fixup prettier --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: secustor <sebastian@poxhofer.at>
73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
import { isNullOrUndefined, isString } from '@sindresorhus/is';
|
|
import type { AllConfig, RenovateConfig } from '../../types.ts';
|
|
import type { MigratableConfig, Migration } from '../types.ts';
|
|
|
|
export abstract class AbstractMigration<
|
|
T extends RenovateConfig = AllConfig,
|
|
> implements Migration {
|
|
readonly deprecated: boolean = false;
|
|
abstract readonly propertyName: string | RegExp;
|
|
private readonly originalConfig: MigratableConfig<T>;
|
|
private readonly migratedConfig: MigratableConfig<T>;
|
|
|
|
constructor(
|
|
originalConfig: MigratableConfig<T>,
|
|
migratedConfig: MigratableConfig<T>,
|
|
) {
|
|
this.originalConfig = originalConfig;
|
|
this.migratedConfig = migratedConfig;
|
|
}
|
|
|
|
abstract run(value: unknown, key: string): void;
|
|
|
|
protected get<Key extends keyof MigratableConfig<T>>(
|
|
key: Key,
|
|
): MigratableConfig<T>[Key] {
|
|
return this.migratedConfig[key] ?? this.originalConfig[key];
|
|
}
|
|
|
|
protected has<Key extends keyof T | string>(key: Key): boolean {
|
|
return key in this.originalConfig;
|
|
}
|
|
|
|
protected setSafely<Key extends keyof MigratableConfig<T>>(
|
|
key: Key,
|
|
value: MigratableConfig<T>[Key],
|
|
): void {
|
|
if (
|
|
isNullOrUndefined(this.originalConfig[key]) &&
|
|
isNullOrUndefined(this.migratedConfig[key])
|
|
) {
|
|
this.migratedConfig[key] = value;
|
|
}
|
|
}
|
|
|
|
protected setHard<Key extends keyof MigratableConfig<T>>(
|
|
key: Key,
|
|
value: MigratableConfig<T>[Key],
|
|
): void {
|
|
this.migratedConfig[key] = value;
|
|
}
|
|
|
|
protected rewrite(value: unknown): void {
|
|
if (!isString(this.propertyName)) {
|
|
throw new Error();
|
|
}
|
|
|
|
// TODO: fix types
|
|
this.setHard(
|
|
this.propertyName as keyof MigratableConfig<T>,
|
|
value as never,
|
|
);
|
|
}
|
|
|
|
protected delete(property = this.propertyName): void {
|
|
if (!isString(property)) {
|
|
throw new Error();
|
|
}
|
|
|
|
// TODO: fix types
|
|
delete this.migratedConfig[property as keyof MigratableConfig<T>];
|
|
}
|
|
}
|