From 49d851e5fd3a6bcd4667fb243880488bbfd46ccb Mon Sep 17 00:00:00 2001 From: Michael Kriese <michael.kriese@visualon.de> Date: Thu, 9 Jun 2022 14:17:05 +0200 Subject: [PATCH] refactor: tighten typescript types (#15965) --- lib/config/migration.spec.ts | 4 +++- lib/config/migration.ts | 3 ++- .../custom/compatibility-migration.ts | 2 +- lib/config/types.ts | 18 +++++++++++++----- lib/config/validation.spec.ts | 2 +- lib/modules/datasource/npm/npmrc.ts | 4 +++- lib/workers/types.ts | 1 - tools/docs/presets.ts | 2 +- 8 files changed, 24 insertions(+), 12 deletions(-) diff --git a/lib/config/migration.spec.ts b/lib/config/migration.spec.ts index 4376df82f8..e7b8dccef2 100644 --- a/lib/config/migration.spec.ts +++ b/lib/config/migration.spec.ts @@ -304,8 +304,10 @@ describe('config/migration', () => { expect(isMigrated).toBeTrue(); expect(migratedConfig).toMatchSnapshot(); expect(migratedConfig.lockFileMaintenance?.packageRules).toHaveLength(1); + // TODO: fix types #7154 expect( - migratedConfig.lockFileMaintenance?.packageRules[0].respectLatest + (migratedConfig.lockFileMaintenance as RenovateConfig) + ?.packageRules?.[0].respectLatest ).toBeFalse(); }); diff --git a/lib/config/migration.ts b/lib/config/migration.ts index 3567714432..ac75c9d1db 100644 --- a/lib/config/migration.ts +++ b/lib/config/migration.ts @@ -221,7 +221,8 @@ export function migrateConfig(config: RenovateConfig): MigratedConfig { for (const [oldKey, ruleVal] of Object.entries(packageRule)) { const newKey = renameMap[oldKey as keyof typeof renameMap]; if (newKey) { - packageRule[newKey] = ruleVal; + // TODO: fix types #7154 + packageRule[newKey] = ruleVal as never; delete packageRule[oldKey]; } } diff --git a/lib/config/migrations/custom/compatibility-migration.ts b/lib/config/migrations/custom/compatibility-migration.ts index a22ddb1485..69c44322bc 100644 --- a/lib/config/migrations/custom/compatibility-migration.ts +++ b/lib/config/migrations/custom/compatibility-migration.ts @@ -7,7 +7,7 @@ export class CompatibilityMigration extends AbstractMigration { override run(value: unknown): void { if (is.object(value)) { - this.setSafely('constraints', value); + this.setSafely('constraints', value as Record<string, string>); } } } diff --git a/lib/config/types.ts b/lib/config/types.ts index e49d86f2d5..962e19bbef 100644 --- a/lib/config/types.ts +++ b/lib/config/types.ts @@ -38,6 +38,7 @@ export interface RenovateSharedConfig { enabledManagers?: string[]; extends?: string[]; fileMatch?: string[]; + force?: RenovateConfig; group?: GroupConfig; groupName?: string; groupSlug?: string; @@ -58,6 +59,7 @@ export interface RenovateSharedConfig { productLinks?: Record<string, string>; prPriority?: number; rebaseLabel?: string; + respectLatest?: boolean; stopUpdatingLabel?: string; rebaseWhen?: string; recreateClosed?: boolean; @@ -140,16 +142,18 @@ export interface LegacyAdminConfig { requireConfig?: RequiredConfig; } + export type ExecutionMode = 'branch' | 'update'; -export type PostUpgradeTasks = { +export interface PostUpgradeTasks { commands?: string[]; fileFilters?: string[]; executionMode: ExecutionMode; -}; +} -type UpdateConfig<T extends RenovateSharedConfig = RenovateSharedConfig> = - Partial<Record<UpdateType, T | null>>; +export type UpdateConfig< + T extends RenovateSharedConfig = RenovateSharedConfig +> = Partial<Record<UpdateType, T | null>>; export type RenovateRepository = | string @@ -228,6 +232,8 @@ export interface RenovateConfig fetchReleaseNotes?: boolean; secrets?: Record<string, string>; + + constraints?: Record<string, string>; } export interface AllConfig extends RenovateConfig, GlobalOnlyConfig {} @@ -269,7 +275,8 @@ export type MergeStrategy = export interface PackageRule extends RenovateSharedConfig, UpdateConfig, - Record<string, any> { + Record<string, unknown> { + description?: string | string[]; matchFiles?: string[]; matchPaths?: string[]; matchLanguages?: string[]; @@ -287,6 +294,7 @@ export interface PackageRule matchSourceUrlPrefixes?: string[]; matchSourceUrls?: string[]; matchUpdateTypes?: UpdateType[]; + registryUrls?: string[]; } export interface ValidationMessage { diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts index 1d7f324648..e61740dc75 100644 --- a/lib/config/validation.spec.ts +++ b/lib/config/validation.spec.ts @@ -488,7 +488,7 @@ describe('config/validation', () => { constraints: { packageRules: [{}] }, }; const { warnings, errors } = await configValidation.validateConfig( - config, + config as never, // TODO: #15963 true ); expect(warnings).toHaveLength(0); diff --git a/lib/modules/datasource/npm/npmrc.ts b/lib/modules/datasource/npm/npmrc.ts index a643ea56df..fccb2d7fd4 100644 --- a/lib/modules/datasource/npm/npmrc.ts +++ b/lib/modules/datasource/npm/npmrc.ts @@ -173,7 +173,9 @@ export function resolveRegistryUrl(packageName: string): string { !matchPackagePrefixes || packageName.startsWith(matchPackagePrefixes[0]) ) { - registryUrl = registryUrls[0]; + // TODO: fix types #7154 + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + registryUrl = registryUrls![0]; } } return registryUrl; diff --git a/lib/workers/types.ts b/lib/workers/types.ts index 8b1f69c890..9abae80d88 100644 --- a/lib/workers/types.ts +++ b/lib/workers/types.ts @@ -40,7 +40,6 @@ export interface BranchUpgradeConfig excludeCommitPaths?: string[]; githubName?: string; group?: GroupConfig; - constraints?: Record<string, string>; groupName?: string; groupSlug?: string; language?: string; diff --git a/tools/docs/presets.ts b/tools/docs/presets.ts index 9bbfa8c876..307cb31698 100644 --- a/tools/docs/presets.ts +++ b/tools/docs/presets.ts @@ -38,7 +38,7 @@ export async function generatePresets(dist: string): Promise<void> { delete value.description; if (!presetDescription) { if (value.packageRules?.[0].description) { - presetDescription = value.packageRules[0].description; + presetDescription = value.packageRules[0].description as string; delete value.packageRules[0].description; } } -- GitLab