renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
453 lines (452 loc) • 16.2 kB
TypeScript
import type { PlatformId } from '../constants';
import type { LogLevelRemap } from '../logger/types';
import type { ManagerName } from '../manager-list.generated';
import type { CustomManager } from '../modules/manager/custom/types';
import type { RepoSortMethod, SortMethod } from '../modules/platform/types';
import type { HostRule, SkipReason } from '../types';
import type { StageName } from '../types/skip-reason';
import type { GitNoVerifyOption } from '../util/git/types';
import type { MergeConfidence } from '../util/merge-confidence/types';
import type { Timestamp } from '../util/timestamp';
export type RenovateConfigStage = 'global' | 'inherit' | 'repository' | 'package' | 'branch' | 'pr';
export type RepositoryCacheConfig = 'disabled' | 'enabled' | 'reset';
export type RepositoryCacheType = 'local' | string;
export type DryRunConfig = 'extract' | 'lookup' | 'full';
export type RequiredConfig = 'required' | 'optional' | 'ignored';
export interface GroupConfig extends Record<string, unknown> {
branchName?: string;
branchTopic?: string;
}
export type RecreateWhen = 'auto' | 'never' | 'always';
export type PlatformCommitOptions = 'auto' | 'disabled' | 'enabled';
export interface RenovateSharedConfig {
$schema?: string;
addLabels?: string[];
autoReplaceGlobalMatch?: boolean;
automerge?: boolean;
automergeSchedule?: string[];
automergeStrategy?: MergeStrategy;
bumpVersions?: BumpVersionConfig[];
branchName?: string;
branchNameStrict?: boolean;
branchPrefix?: string;
branchPrefixOld?: string;
commitMessage?: string;
commitMessageAction?: string;
commitMessageExtra?: string;
commitMessageLowerCase?: 'auto' | 'never';
commitMessagePrefix?: string;
commitMessageTopic?: string;
confidential?: boolean;
changelogUrl?: string;
dependencyDashboardApproval?: boolean;
draftPR?: boolean;
enabled?: boolean;
enabledManagers?: string[];
extends?: string[];
managerFilePatterns?: string[];
force?: RenovateConfig;
gitIgnoredAuthors?: string[];
group?: GroupConfig;
groupName?: string;
groupSlug?: string;
hashedBranchLength?: number;
ignoreDeps?: string[];
ignorePaths?: string[];
ignoreTests?: boolean;
includePaths?: string[];
internalChecksAsSuccess?: boolean;
keepUpdatedLabel?: string;
labels?: string[];
manager?: string;
milestone?: number;
npmrc?: string;
npmrcMerge?: boolean;
platformCommit?: PlatformCommitOptions;
postUpgradeTasks?: PostUpgradeTasks;
prBodyColumns?: string[];
prBodyDefinitions?: Record<string, string>;
prCreation?: 'immediate' | 'not-pending' | 'status-success' | 'approval';
prPriority?: number;
productLinks?: Record<string, string>;
pruneBranchAfterAutomerge?: boolean;
rebaseLabel?: string;
rebaseWhen?: string;
recreateClosed?: boolean;
recreateWhen?: RecreateWhen;
repository?: string;
repositoryCache?: RepositoryCacheConfig;
repositoryCacheType?: RepositoryCacheType;
respectLatest?: boolean;
schedule?: string[];
semanticCommitScope?: string | null;
semanticCommitType?: string;
semanticCommits?: 'auto' | 'enabled' | 'disabled';
stopUpdatingLabel?: string;
suppressNotifications?: string[];
timezone?: string;
unicodeEmoji?: boolean;
}
export interface GlobalOnlyConfig {
autodiscover?: boolean;
autodiscoverFilter?: string[] | string;
autodiscoverNamespaces?: string[];
autodiscoverProjects?: string[];
autodiscoverTopics?: string[];
baseDir?: string;
cacheDir?: string;
containerbaseDir?: string;
detectHostRulesFromEnv?: boolean;
dockerCliOptions?: string;
endpoint?: string;
forceCli?: boolean;
gitNoVerify?: GitNoVerifyOption[];
gitPrivateKey?: string;
globalExtends?: string[];
mergeConfidenceDatasources?: string[];
mergeConfidenceEndpoint?: string;
platform?: PlatformId;
prCommitsPerRunLimit?: number;
privateKey?: string;
privateKeyOld?: string;
privateKeyPath?: string;
privateKeyPathOld?: string;
redisPrefix?: string;
redisUrl?: string;
repositories?: RenovateRepository[];
useCloudMetadataServices?: boolean;
deleteConfigFile?: boolean;
}
export interface RepoGlobalConfig {
allowedCommands?: string[];
allowCustomCrateRegistries?: boolean;
allowPlugins?: boolean;
allowScripts?: boolean;
allowedEnv?: string[];
allowedHeaders?: string[];
binarySource?: 'docker' | 'global' | 'install' | 'hermit';
cacheDir?: string;
cacheHardTtlMinutes?: number;
cacheTtlOverride?: Record<string, number>;
containerbaseDir?: string;
customEnvVariables?: Record<string, string>;
dockerChildPrefix?: string;
dockerCliOptions?: string;
dockerSidecarImage?: string;
dockerUser?: string;
dryRun?: DryRunConfig;
encryptedWarning?: string;
endpoint?: string;
executionTimeout?: number;
exposeAllEnv?: boolean;
gitTimeout?: number;
githubTokenWarn?: boolean;
includeMirrors?: boolean;
localDir?: string;
migratePresets?: Record<string, string>;
platform?: PlatformId;
presetCachePersistence?: boolean;
httpCacheTtlDays?: number;
autodiscoverRepoSort?: RepoSortMethod;
autodiscoverRepoOrder?: SortMethod;
userAgent?: string;
dockerMaxPages?: number;
s3Endpoint?: string;
s3PathStyle?: boolean;
cachePrivatePackages?: boolean;
}
export interface LegacyAdminConfig {
localDir?: string;
logContext?: string;
onboarding?: boolean;
onboardingBranch?: string;
onboardingCommitMessage?: string;
onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';
onboardingRebaseCheckbox?: boolean;
onboardingPrTitle?: string;
onboardingConfig?: RenovateSharedConfig;
onboardingConfigFileName?: string;
requireConfig?: RequiredConfig;
}
export type ExecutionMode = 'branch' | 'update';
export interface PostUpgradeTasks {
commands?: string[];
fileFilters?: string[];
executionMode: ExecutionMode;
}
export type UpdateConfig<T extends RenovateSharedConfig = RenovateSharedConfig> = Partial<Record<UpdateType, T | null>>;
export type RenovateRepository = string | {
repository: string;
secrets?: Record<string, string>;
};
export type UseBaseBranchConfigType = 'merge' | 'none';
export type ConstraintsFilter = 'strict' | 'none';
export declare const allowedStatusCheckStrings: readonly ["minimumReleaseAge", "mergeConfidence", "configValidation", "artifactError"];
export type StatusCheckKey = (typeof allowedStatusCheckStrings)[number];
type UserEnv = Record<string, string>;
export interface RenovateConfig extends LegacyAdminConfig, RenovateSharedConfig, UpdateConfig<PackageRule>, AssigneesAndReviewersConfig, ConfigMigration, Record<string, unknown> {
s3Endpoint?: string;
s3PathStyle?: boolean;
reportPath?: string;
reportType?: 'logging' | 'file' | 's3' | null;
depName?: string;
baseBranches?: string[];
commitBody?: string;
useBaseBranchConfig?: UseBaseBranchConfigType;
baseBranch?: string;
defaultBranch?: string;
branchList?: string[];
cloneSubmodulesFilter?: string[];
description?: string | string[];
force?: RenovateConfig;
errors?: ValidationMessage[];
gitAuthor?: string;
hostRules?: HostRule[];
inheritConfig?: boolean;
inheritConfigFileName?: string;
inheritConfigRepoName?: string;
inheritConfigStrict?: boolean;
ignorePresets?: string[];
forkProcessing?: 'auto' | 'enabled' | 'disabled';
isFork?: boolean;
fileList?: string[];
configWarningReuseIssue?: boolean;
dependencyDashboard?: boolean;
dependencyDashboardAutoclose?: boolean;
dependencyDashboardChecks?: Record<string, string>;
dependencyDashboardIssue?: number;
dependencyDashboardTitle?: string;
dependencyDashboardHeader?: string;
dependencyDashboardFooter?: string;
dependencyDashboardLabels?: string[];
dependencyDashboardOSVVulnerabilitySummary?: 'none' | 'all' | 'unresolved';
dependencyDashboardReportAbandonment?: boolean;
packageFile?: string;
packageRules?: PackageRule[];
postUpdateOptions?: string[];
branchConcurrentLimit?: number | null;
prConcurrentLimit?: number;
prHourlyLimit?: number;
forkModeDisallowMaintainerEdits?: boolean;
defaultRegistryUrls?: string[];
registryUrls?: string[] | null;
registryAliases?: Record<string, string>;
repoIsOnboarded?: boolean;
repoIsActivated?: boolean;
updateInternalDeps?: boolean;
updateType?: UpdateType;
warnings?: ValidationMessage[];
vulnerabilityAlerts?: RenovateSharedConfig;
osvVulnerabilityAlerts?: boolean;
vulnerabilitySeverity?: string;
customManagers?: CustomManager[];
customDatasources?: Record<string, CustomDatasourceConfig>;
fetchChangeLogs?: FetchChangeLogsOptions;
secrets?: Record<string, string>;
constraints?: Record<string, string>;
skipInstalls?: boolean | null;
constraintsFiltering?: ConstraintsFilter;
checkedBranches?: string[];
customizeDashboard?: Record<string, string>;
statusCheckNames?: Record<StatusCheckKey, string | null>;
/**
* User configured environment variables that Renovate uses when executing package manager commands
*/
env?: UserEnv;
logLevelRemap?: LogLevelRemap[];
branchTopic?: string;
additionalBranchPrefix?: string;
sharedVariableName?: string;
}
declare const CustomDatasourceFormats: readonly ["json", "plain", "yaml", "html"];
export type CustomDatasourceFormats = (typeof CustomDatasourceFormats)[number];
export interface CustomDatasourceConfig {
defaultRegistryUrlTemplate?: string;
format?: CustomDatasourceFormats;
transformTemplates?: string[];
}
export interface AllConfig extends RenovateConfig, GlobalOnlyConfig, RepoGlobalConfig {
}
export interface AssigneesAndReviewersConfig {
assigneesFromCodeOwners?: boolean;
expandCodeOwnersGroups?: boolean;
assignees?: string[];
assigneesSampleSize?: number;
ignoreReviewers?: string[];
reviewersFromCodeOwners?: boolean;
reviewers?: string[];
reviewersSampleSize?: number;
additionalReviewers?: string[];
filterUnavailableUsers?: boolean;
}
export type UpdateType = 'major' | 'minor' | 'patch' | 'pin' | 'digest' | 'pinDigest' | 'lockFileMaintenance' | 'lockfileUpdate' | 'rollback' | 'bump' | 'replacement';
export type FetchChangeLogsOptions = 'off' | 'branch' | 'pr';
export type MatchStringsStrategy = 'any' | 'recursive' | 'combination';
export type MergeStrategy = 'auto' | 'fast-forward' | 'merge-commit' | 'rebase' | 'squash';
export interface PackageRule extends RenovateSharedConfig, UpdateConfig, Record<string, unknown> {
description?: string | string[];
isVulnerabilityAlert?: boolean;
matchBaseBranches?: string[];
matchCategories?: string[];
matchConfidence?: MergeConfidence[];
matchCurrentAge?: string;
matchCurrentValue?: string;
matchCurrentVersion?: string;
matchDatasources?: string[];
matchDepNames?: string[];
matchDepTypes?: string[];
matchFileNames?: string[];
matchManagers?: string[];
matchNewValue?: string;
matchPackageNames?: string[];
matchRepositories?: string[];
matchSourceUrls?: string[];
matchUpdateTypes?: UpdateType[];
matchJsonata?: string[];
registryUrls?: string[] | null;
vulnerabilitySeverity?: string;
vulnerabilityFixVersion?: string;
}
export interface ValidationMessage {
topic: string;
message: string;
}
export type AllowedParents = 'bumpVersions' | 'customDatasources' | 'customManagers' | 'hostRules' | 'logLevelRemap' | 'packageRules' | 'postUpgradeTasks' | 'vulnerabilityAlerts' | ManagerName;
export interface RenovateOptionBase {
/**
* If true, the option can only be configured by people with access to the Renovate instance.
* Furthermore, the option should be documented in docs/usage/self-hosted-configuration.md.
*/
globalOnly?: boolean;
inheritConfigSupport?: boolean;
allowedValues?: string[];
allowString?: boolean;
cli?: boolean;
description: string;
env?: false | string;
/**
* Do not validate object children
*/
freeChoice?: boolean;
mergeable?: boolean;
autogenerated?: boolean;
name: string;
parents?: AllowedParents[];
stage?: RenovateConfigStage;
experimental?: boolean;
experimentalDescription?: string;
experimentalIssues?: number[];
advancedUse?: boolean;
/**
* This is used to add depreciation message in the docs
*/
deprecationMsg?: string;
/**
* For internal use only: add it to any config option that supports regex or glob matching
*/
patternMatch?: boolean;
/**
* For internal use only: add it to any config option of type integer that supports negative integers
*/
allowNegative?: boolean;
/**
* Managers which support this option, leave undefined if all managers support it.
*/
supportedManagers?: string[];
/**
* Platforms which support this option, leave undefined if all platforms support it.
*/
supportedPlatforms?: PlatformId[];
}
export interface RenovateArrayOption<T extends string | number | Record<string, unknown> = Record<string, unknown>> extends RenovateOptionBase {
default?: T[] | null;
mergeable?: boolean;
type: 'array';
subType?: 'string' | 'object' | 'number';
}
export interface RenovateStringArrayOption extends RenovateArrayOption<string> {
format?: 'regex';
subType: 'string';
}
export interface RenovateNumberArrayOption extends RenovateArrayOption<number> {
subType: 'number';
}
export interface RenovateBooleanOption extends RenovateOptionBase {
default?: boolean | null;
type: 'boolean';
}
export interface RenovateIntegerOption extends RenovateOptionBase {
default?: number | null;
type: 'integer';
}
export interface RenovateStringOption extends RenovateOptionBase {
default?: string | null;
format?: 'regex';
replaceLineReturns?: boolean;
type: 'string';
}
export interface RenovateObjectOption extends RenovateOptionBase {
default?: any;
additionalProperties?: Record<string, unknown> | boolean;
mergeable?: boolean;
type: 'object';
}
export type RenovateOptions = RenovateStringOption | RenovateNumberArrayOption | RenovateStringArrayOption | RenovateIntegerOption | RenovateBooleanOption | RenovateArrayOption | RenovateObjectOption;
export interface PackageRuleInputConfig extends Record<string, unknown> {
versioning?: string;
packageFile?: string;
lockFiles?: string[];
depType?: string;
depTypes?: string[];
depName?: string;
packageName?: string | null;
newValue?: string | null;
currentValue?: string | null;
currentVersion?: string;
lockedVersion?: string;
updateType?: UpdateType;
mergeConfidenceLevel?: MergeConfidence | undefined;
isBump?: boolean;
sourceUrl?: string | null;
categories?: string[];
baseBranch?: string;
manager?: string;
datasource?: string;
packageRules?: (PackageRule & PackageRuleInputConfig)[];
releaseTimestamp?: Timestamp | null;
repository?: string;
currentVersionAgeInDays?: number;
currentVersionTimestamp?: string;
enabled?: boolean;
skipReason?: SkipReason;
skipStage?: StageName;
}
export interface ConfigMigration {
configMigration?: boolean;
}
export interface MigratedConfig {
isMigrated: boolean;
migratedConfig: RenovateConfig;
}
export interface MigratedRenovateConfig extends RenovateConfig {
endpoints?: HostRule[];
pathRules: PackageRule[];
packages: PackageRule[];
node?: RenovateConfig;
travis?: RenovateConfig;
gradle?: RenovateConfig;
}
export interface ManagerConfig extends RenovateConfig {
manager: string;
}
export interface ValidationResult {
errors: ValidationMessage[];
warnings: ValidationMessage[];
}
export interface BumpVersionConfig {
bumpType?: string;
filePatterns: string[];
matchStrings: string[];
name?: string;
}
export {};