renovate 42.57.0 → 42.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/types.d.ts +3 -1
- package/dist/config/types.js.map +1 -1
- package/dist/modules/platform/github/schema.d.ts +26 -1
- package/dist/modules/platform/github/schema.js +8 -3
- package/dist/modules/platform/github/schema.js.map +1 -1
- package/dist/util/interpolator.js +1 -1
- package/dist/util/interpolator.js.map +1 -1
- package/dist/workers/repository/update/branch/index.js +4 -0
- package/dist/workers/repository/update/branch/index.js.map +1 -1
- package/dist/workers/types.d.ts +2 -0
- package/dist/workers/types.js.map +1 -1
- package/package.json +3 -3
- package/renovate-schema.json +2 -2
package/dist/config/types.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export interface RenovateSharedConfig {
|
|
|
36
36
|
abandonmentThreshold?: Nullish<string>;
|
|
37
37
|
addLabels?: string[];
|
|
38
38
|
assignAutomerge?: boolean;
|
|
39
|
+
autoApprove?: boolean;
|
|
39
40
|
autoReplaceGlobalMatch?: boolean;
|
|
40
41
|
automerge?: boolean;
|
|
41
42
|
automergeSchedule?: string[];
|
|
@@ -101,6 +102,7 @@ export interface RenovateSharedConfig {
|
|
|
101
102
|
prHeader?: string;
|
|
102
103
|
prPriority?: number;
|
|
103
104
|
prTitle?: string;
|
|
105
|
+
prTitleStrict?: boolean;
|
|
104
106
|
productLinks?: Record<string, string>;
|
|
105
107
|
pruneBranchAfterAutomerge?: boolean;
|
|
106
108
|
rangeStrategy?: RangeStrategy;
|
|
@@ -228,7 +230,7 @@ export interface LegacyAdminConfig {
|
|
|
228
230
|
onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';
|
|
229
231
|
onboardingRebaseCheckbox?: boolean;
|
|
230
232
|
onboardingPrTitle?: string;
|
|
231
|
-
onboardingConfig?:
|
|
233
|
+
onboardingConfig?: RenovateConfig;
|
|
232
234
|
onboardingConfigFileName?: string;
|
|
233
235
|
optimizeForDisabled?: boolean;
|
|
234
236
|
persistRepoData?: boolean;
|
package/dist/config/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/config/types.ts"],"names":[],"mappings":";;;AAoTa,QAAA,yBAAyB,GAAG;IACvC,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;CACP,CAAC;AA8IX,MAAM,uBAAuB,GAAG;IAC9B,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;CACE,CAAC;AAgDX,0DAA0D;AAC7C,QAAA,kBAAkB,GAAG;IAChC,OAAO;IACP,OAAO;IACP,OAAO;IACP,KAAK;IACL,QAAQ;IACR,WAAW;IACX,qBAAqB;IACrB,UAAU;IACV,aAAa;CACL,CAAC","sourcesContent":["import type { Category, PlatformId } from '../constants';\nimport type { LogLevelRemap } from '../logger/types';\nimport type { ManagerName } from '../manager-list.generated';\nimport type { CustomManager } from '../modules/manager/custom/types';\nimport type { RepoSortMethod, SortMethod } from '../modules/platform/types';\nimport type {\n AutoMergeType,\n HostRule,\n Nullish,\n RangeStrategy,\n SkipReason,\n} from '../types';\nimport type { StageName } from '../types/skip-reason';\nimport type { GitNoVerifyOption } from '../util/git/types';\nimport type { MergeConfidence } from '../util/merge-confidence/types';\nimport type { Timestamp } from '../util/timestamp';\n\nexport type RenovateConfigStage =\n | 'global'\n | 'inherit'\n | 'repository'\n | 'package'\n | 'branch'\n | 'pr';\n\nexport type RenovateSplit =\n | 'init'\n | 'onboarding'\n | 'extract'\n | 'lookup'\n | 'update';\n\nexport type RepositoryCacheConfig = 'disabled' | 'enabled' | 'reset';\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type RepositoryCacheType = 'local' | string;\nexport type DryRunConfig = 'extract' | 'lookup' | 'full';\nexport type RequiredConfig = 'required' | 'optional' | 'ignored';\n\nexport interface GroupConfig extends Record<string, unknown> {\n branchName?: string;\n branchTopic?: string;\n}\n\nexport type RecreateWhen = 'auto' | 'never' | 'always';\nexport type PlatformCommitOptions = 'auto' | 'disabled' | 'enabled';\n\nexport type BinarySource = 'docker' | 'global' | 'install' | 'hermit';\n\n// TODO: Proper typings\n/**\n * Any configuration that could be used either top-level in a repository config (or Global, Inherited or Shareable Preset configuration), or:\n *\n * - in a datasource-specific configuration\n * - in a manager-specific configuration\n * - in a Package Rule\n *\n * @see RenovateConfig for the superset of all configuration allowed in a given repository\n *\n */\nexport interface RenovateSharedConfig {\n $schema?: string;\n abandonmentThreshold?: Nullish<string>;\n addLabels?: string[];\n assignAutomerge?: boolean;\n autoReplaceGlobalMatch?: boolean;\n automerge?: boolean;\n automergeSchedule?: string[];\n automergeStrategy?: MergeStrategy;\n automergeType?: AutoMergeType;\n azureWorkItemId?: number;\n branchName?: string;\n branchNameStrict?: boolean;\n branchPrefix?: string;\n branchPrefixOld?: string;\n bumpVersions?: BumpVersionConfig[];\n commitBody?: string;\n commitBodyTable?: boolean;\n commitMessage?: string;\n commitMessageAction?: string;\n commitMessageExtra?: string;\n commitMessageLowerCase?: 'auto' | 'never';\n commitMessagePrefix?: string;\n commitMessageTopic?: string;\n confidential?: boolean;\n configValidationError?: boolean;\n changelogUrl?: string;\n dependencyDashboardApproval?: boolean;\n draftPR?: boolean;\n enabled?: boolean;\n enabledManagers?: string[];\n encrypted?: Record<string, string>;\n extends?: string[];\n extractVersion?: string;\n managerFilePatterns?: string[];\n followTag?: string;\n force?: RenovateConfig;\n gitIgnoredAuthors?: string[];\n group?: GroupConfig;\n groupName?: string;\n groupSlug?: string;\n hashedBranchLength?: number;\n ignoreDeps?: string[];\n ignorePaths?: string[];\n ignoreTests?: boolean;\n ignoreUnstable?: boolean;\n includePaths?: string[];\n internalChecksAsSuccess?: boolean;\n internalChecksFilter?: 'strict' | 'flexible' | 'none';\n keepUpdatedLabel?: string;\n labels?: string[];\n manager?: string;\n milestone?: number;\n minimumReleaseAge?: Nullish<string>;\n npmrc?: string;\n npmrcMerge?: boolean;\n npmToken?: string;\n\n pinDigests?: boolean;\n platformAutomerge?: boolean;\n platformCommit?: PlatformCommitOptions;\n postUpgradeTasks?: PostUpgradeTasks;\n prBodyColumns?: string[];\n prBodyDefinitions?: Record<string, string>;\n prBodyHeadingDefinitions?: Record<string, string>;\n prBodyNotes?: string[];\n prCreation?: 'immediate' | 'not-pending' | 'status-success' | 'approval';\n prFooter?: string;\n prHeader?: string;\n prPriority?: number;\n prTitle?: string;\n productLinks?: Record<string, string>;\n pruneBranchAfterAutomerge?: boolean;\n rangeStrategy?: RangeStrategy;\n rebaseLabel?: string;\n rebaseWhen?: string;\n recreateClosed?: boolean;\n recreateWhen?: RecreateWhen;\n repository?: string;\n repositoryCache?: RepositoryCacheConfig;\n repositoryCacheType?: RepositoryCacheType;\n respectLatest?: boolean;\n rollbackPrs?: boolean;\n schedule?: string[];\n semanticCommitScope?: string | null;\n semanticCommitType?: string;\n semanticCommits?: 'auto' | 'enabled' | 'disabled';\n separateMajorMinor?: boolean;\n separateMinorPatch?: boolean;\n separateMultipleMajor?: boolean;\n separateMultipleMinor?: boolean;\n skipArtifactsUpdate?: boolean;\n stopUpdatingLabel?: string;\n suppressNotifications?: string[];\n timezone?: string;\n unicodeEmoji?: boolean;\n updateNotScheduled?: boolean;\n versioning?: string;\n versionCompatibility?: string;\n}\n\n// Config options used only within the global worker\n// The below should contain config options where stage=global\n/** @deprecated use `RepoGlobalConfig` instead **/\nexport interface GlobalOnlyConfigLegacy {\n autodiscover?: boolean;\n autodiscoverFilter?: string[] | string;\n autodiscoverNamespaces?: string[];\n autodiscoverProjects?: string[];\n autodiscoverTopics?: string[];\n baseDir?: string;\n cacheDir?: string;\n containerbaseDir?: string;\n detectHostRulesFromEnv?: boolean;\n dockerCliOptions?: string;\n endpoint?: string;\n forceCli?: boolean;\n gitNoVerify?: GitNoVerifyOption[];\n gitPrivateKey?: string;\n gitPrivateKeyPassphrase?: string;\n globalExtends?: string[];\n mergeConfidenceDatasources?: string[];\n mergeConfidenceEndpoint?: string;\n platform?: PlatformId;\n processEnv?: Record<string, string>;\n prCommitsPerRunLimit?: number;\n privateKey?: string;\n privateKeyOld?: string;\n privateKeyPath?: string;\n privateKeyPathOld?: string;\n redisPrefix?: string;\n redisUrl?: string;\n repositories?: RenovateRepository[];\n useCloudMetadataServices?: boolean;\n deleteConfigFile?: boolean;\n deleteAdditionalConfigFile?: boolean;\n}\n\n/**\n * Any global-only configuration set by self-hosted administrators.\n *\n * Used within the repository worker.\n *\n * Should only contain config options where globalOnly=true.\n */\nexport interface RepoGlobalConfig {\n allowedCommands?: string[];\n allowCustomCrateRegistries?: boolean;\n allowPlugins?: boolean;\n allowScripts?: boolean;\n allowedEnv?: string[];\n allowedHeaders?: string[];\n binarySource?: BinarySource;\n cacheDir?: string;\n cacheHardTtlMinutes?: number;\n cacheTtlOverride?: Record<string, number>;\n containerbaseDir?: string;\n customEnvVariables?: Record<string, string>;\n dockerChildPrefix?: string;\n dockerCliOptions?: string;\n dockerSidecarImage?: string;\n dockerUser?: string;\n dryRun?: DryRunConfig;\n encryptedWarning?: string;\n endpoint?: string;\n executionTimeout?: number;\n exposeAllEnv?: boolean;\n gitTimeout?: number;\n githubTokenWarn?: boolean;\n includeMirrors?: boolean;\n localDir?: string;\n migratePresets?: Record<string, string>;\n platform?: PlatformId;\n presetCachePersistence?: boolean;\n httpCacheTtlDays?: number;\n autodiscoverRepoSort?: RepoSortMethod;\n autodiscoverRepoOrder?: SortMethod;\n userAgent?: string;\n dockerMaxPages?: number;\n s3Endpoint?: string;\n s3PathStyle?: boolean;\n cachePrivatePackages?: boolean;\n configFileNames?: string[];\n ignorePrAuthor?: boolean;\n allowedUnsafeExecutions?: AllowedUnsafeExecution[];\n onboardingAutoCloseAge?: number;\n}\n\n/**\n * Those options are global only but still passed into the repository worker config.\n *\n * @deprecated https://github.com/renovatebot/renovate/issues/39693\n */\nexport interface LegacyAdminConfig {\n baseDir?: string;\n localDir?: string;\n\n logContext?: string;\n\n onboarding?: boolean;\n onboardingBranch?: string;\n onboardingCommitMessage?: string;\n onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';\n onboardingRebaseCheckbox?: boolean;\n onboardingPrTitle?: string;\n onboardingConfig?: RenovateSharedConfig;\n onboardingConfigFileName?: string;\n\n optimizeForDisabled?: boolean;\n\n persistRepoData?: boolean;\n\n prCommitsPerRunLimit?: number;\n\n requireConfig?: RequiredConfig;\n\n useCloudMetadataServices?: boolean;\n\n writeDiscoveredRepos?: string;\n}\n\nexport type ExecutionMode = 'branch' | 'update';\n\nexport interface PostUpgradeTasks {\n commands?: string[];\n workingDirTemplate?: string;\n dataFileTemplate?: string;\n fileFilters?: string[];\n executionMode: ExecutionMode;\n}\n\nexport type UpdateConfig<\n T extends RenovateSharedConfig = RenovateSharedConfig,\n> = Partial<Record<UpdateType, T | null>>;\n\nexport type RenovateRepository =\n | string\n | {\n repository: string;\n secrets?: Record<string, string>;\n variables?: Record<string, string>;\n };\n\nexport type UseBaseBranchConfigType = 'merge' | 'none';\nexport type ConstraintsFilter = 'strict' | 'none';\nexport type MinimumReleaseAgeBehaviour =\n | 'timestamp-required'\n | 'timestamp-optional';\n\nexport const allowedStatusCheckStrings = [\n 'minimumReleaseAge',\n 'mergeConfidence',\n 'configValidation',\n 'artifactError',\n] as const;\nexport type StatusCheckKey = (typeof allowedStatusCheckStrings)[number];\ntype UserEnv = Record<string, string>;\n\n/**\n * Computed properties, for internal use only\n */\nexport interface RenovateInternalConfig {\n /** computed base branch from patterns - for internal use only */\n baseBranches?: string[];\n currentCompatibility?: string;\n datasource?: string;\n hasBaseBranches?: boolean;\n isFork?: boolean;\n isVulnerabilityAlert?: boolean;\n\n /** What is this used for? */\n remediations?: unknown;\n /** What is this used for? */\n vulnerabilityAlertsOnly?: boolean;\n}\n\n// TODO: Proper typings\n/**\n * Configuration that could be used either top-level in a repository config (or Global, Inherited or Shareable Preset configuration).\n *\n * This is a superset of any configuration that a Renovate user (not self-hosted administrator) can set.\n */\nexport interface RenovateConfig\n extends LegacyAdminConfig,\n RenovateSharedConfig,\n UpdateConfig<PackageRule>,\n AssigneesAndReviewersConfig,\n ConfigMigration,\n RenovateInternalConfig {\n s3Endpoint?: string;\n s3PathStyle?: boolean;\n reportPath?: string;\n reportType?: 'logging' | 'file' | 's3' | null;\n depName?: string;\n /** user configurable base branch patterns*/\n baseBranchPatterns?: string[];\n useBaseBranchConfig?: UseBaseBranchConfigType;\n baseBranch?: string;\n defaultBranch?: string;\n branchList?: string[];\n cloneSubmodules?: boolean;\n cloneSubmodulesFilter?: string[];\n description?: string | string[];\n detectGlobalManagerConfig?: boolean;\n errors?: ValidationMessage[];\n forkModeDisallowMaintainerEdits?: boolean;\n forkProcessing?: 'auto' | 'enabled' | 'disabled';\n forkToken?: string;\n\n gitAuthor?: string;\n\n hostRules?: HostRule[];\n\n inheritConfig?: boolean;\n inheritConfigFileName?: string;\n inheritConfigRepoName?: string;\n inheritConfigStrict?: boolean;\n\n ignorePresets?: string[];\n\n fileList?: string[];\n configWarningReuseIssue?: boolean;\n dependencyDashboard?: boolean;\n dependencyDashboardAutoclose?: boolean;\n dependencyDashboardChecks?: Record<string, string>;\n dependencyDashboardIssue?: number;\n dependencyDashboardTitle?: string;\n dependencyDashboardHeader?: string;\n dependencyDashboardFooter?: string;\n dependencyDashboardLabels?: string[];\n dependencyDashboardOSVVulnerabilitySummary?: 'none' | 'all' | 'unresolved';\n dependencyDashboardReportAbandonment?: boolean;\n mode?: 'silent' | 'full';\n packageFile?: string;\n packageRules?: PackageRule[];\n postUpdateOptions?: string[];\n branchConcurrentLimit?: number | null;\n parentOrg?: string;\n prConcurrentLimit?: number;\n prHourlyLimit?: number;\n\n printConfig?: boolean;\n\n pruneStaleBranches?: boolean;\n\n defaultRegistryUrls?: string[];\n registryUrls?: string[] | null;\n registryAliases?: Record<string, string>;\n\n /**\n * What is this used for?\n * @deprecated\n */\n renovateJsonPresent?: boolean;\n\n repoIsOnboarded?: boolean;\n repoIsActivated?: boolean;\n\n topLevelOrg?: string;\n updateInternalDeps?: boolean;\n updateType?: UpdateType;\n\n warnings?: ValidationMessage[];\n vulnerabilityAlerts?: RenovateSharedConfig;\n osvVulnerabilityAlerts?: boolean;\n vulnerabilitySeverity?: string;\n customManagers?: CustomManager[];\n customDatasources?: Record<string, CustomDatasourceConfig>;\n\n fetchChangeLogs?: FetchChangeLogsOptions;\n secrets?: Record<string, string>;\n variables?: Record<string, string>;\n\n constraints?: Record<string, string>;\n skipInstalls?: boolean | null;\n\n constraintsFiltering?: ConstraintsFilter;\n\n checkedBranches?: string[];\n customizeDashboard?: Record<string, string>;\n\n statusCheckNames?: Record<StatusCheckKey, string | null>;\n /**\n * User configured environment variables that Renovate uses when executing package manager commands\n */\n env?: UserEnv;\n logLevelRemap?: LogLevelRemap[];\n\n branchTopic?: string;\n additionalBranchPrefix?: string;\n sharedVariableName?: string;\n minimumGroupSize?: number;\n configFileNames?: string[];\n minimumReleaseAgeBehaviour?: MinimumReleaseAgeBehaviour;\n}\n\nconst CustomDatasourceFormats = [\n 'html',\n 'json',\n 'plain',\n 'toml',\n 'yaml',\n] as const;\nexport type CustomDatasourceFormats = (typeof CustomDatasourceFormats)[number];\n\nexport interface CustomDatasourceConfig {\n defaultRegistryUrlTemplate?: string;\n format?: CustomDatasourceFormats;\n transformTemplates?: string[];\n}\n\n/**\n * The superset of all configuration that a self-hosted administrator can set, alongside all repository-level configuration.\n *\n */\nexport interface AllConfig\n extends RenovateConfig,\n GlobalOnlyConfigLegacy,\n RepoGlobalConfig {\n password?: string;\n token?: string;\n username?: string;\n}\n\nexport interface AssigneesAndReviewersConfig {\n assigneesFromCodeOwners?: boolean;\n expandCodeOwnersGroups?: boolean;\n assignees?: string[];\n assigneesSampleSize?: number;\n ignoreReviewers?: string[];\n reviewersFromCodeOwners?: boolean;\n reviewers?: string[];\n reviewersSampleSize?: number;\n additionalReviewers?: string[];\n filterUnavailableUsers?: boolean;\n}\n\nexport type UpdateType =\n | 'major'\n | 'minor'\n | 'patch'\n | 'pin'\n | 'digest'\n | 'pinDigest'\n | 'lockFileMaintenance'\n | 'lockfileUpdate'\n | 'rollback'\n | 'bump'\n | 'replacement';\n\n// These are the update types which can have configuration\nexport const UpdateTypesOptions = [\n 'major',\n 'minor',\n 'patch',\n 'pin',\n 'digest',\n 'pinDigest',\n 'lockFileMaintenance',\n 'rollback',\n 'replacement',\n] as const;\n\nexport type UpdateTypeOptions = (typeof UpdateTypesOptions)[number];\n\nexport type FetchChangeLogsOptions = 'off' | 'branch' | 'pr';\n\nexport type MatchStringsStrategy = 'any' | 'recursive' | 'combination';\n\nexport type MergeStrategy =\n | 'auto'\n | 'fast-forward'\n | 'merge-commit'\n | 'rebase'\n | 'rebase-merge'\n | 'squash';\n\n// ref: https://github.com/renovatebot/renovate/issues/39458\n// This list should be added to as any new unsafe execution commands should be permitted\nexport type AllowedUnsafeExecution = 'goGenerate';\n\n// TODO: Proper typings\nexport interface PackageRule\n extends RenovateSharedConfig,\n RenovateInternalConfig,\n UpdateConfig {\n allowedVersions?: string;\n description?: string | string[];\n matchBaseBranches?: string[];\n matchCategories?: string[];\n matchConfidence?: MergeConfidence[];\n matchCurrentAge?: string;\n matchCurrentValue?: string;\n matchCurrentVersion?: string;\n matchDatasources?: string[];\n matchDepNames?: string[];\n matchDepTypes?: string[];\n matchFileNames?: string[];\n matchManagers?: string[];\n matchNewValue?: string;\n matchPackageNames?: string[];\n matchRepositories?: string[];\n matchSourceUrls?: string[];\n matchUpdateTypes?: UpdateType[];\n matchJsonata?: string[];\n overrideDatasource?: string;\n overrideDepName?: string;\n overridePackageName?: string;\n registryUrls?: string[] | null;\n replacementName?: string;\n replacementVersion?: string;\n sourceUrl?: string;\n sourceDirectory?: string;\n vulnerabilitySeverity?: string;\n vulnerabilityFixVersion?: string;\n}\n\nexport interface ValidationMessage {\n topic: string;\n message: string;\n}\n\nexport type AllowedParents =\n | '.'\n | 'bumpVersions'\n | 'customDatasources'\n | 'customManagers'\n | 'hostRules'\n | 'logLevelRemap'\n | 'packageRules'\n | 'postUpgradeTasks'\n | 'vulnerabilityAlerts'\n | ManagerName\n | UpdateTypeOptions;\nexport interface RenovateOptionBase {\n /**\n * If true, the option can only be configured by people with access to the Renovate instance.\n * Furthermore, the option should be documented in docs/usage/self-hosted-configuration.md.\n */\n globalOnly?: boolean;\n\n inheritConfigSupport?: boolean;\n\n allowedValues?: string[];\n\n allowString?: boolean;\n\n cli?: boolean;\n\n description: string;\n\n env?: false | string;\n\n /**\n * Do not validate object children\n */\n freeChoice?: boolean;\n\n mergeable?: boolean;\n\n autogenerated?: boolean;\n\n name: string;\n\n parents?: AllowedParents[];\n\n stage?: RenovateConfigStage;\n\n experimental?: boolean;\n\n experimentalDescription?: string;\n\n experimentalIssues?: number[];\n\n advancedUse?: boolean;\n\n /**\n * This is used to add a deprecation message in the docs\n */\n deprecationMsg?: string;\n\n /**\n * For internal use only: add it to any config option that supports regex or glob matching\n */\n patternMatch?: boolean;\n\n /**\n * For internal use only: add it to any config option of type integer that supports negative integers\n */\n allowNegative?: boolean;\n\n /**\n * Managers which support this option, leave undefined if all managers support it.\n */\n supportedManagers?: string[];\n\n /**\n * Platforms which support this option, leave undefined if all platforms support it.\n */\n supportedPlatforms?: PlatformId[];\n\n /**\n * Conditions that must be met for this option to be required.\n */\n requiredIf?: RenovateRequiredOption[];\n}\n\nexport interface RenovateRequiredOption {\n siblingProperties: { property: string; value: string }[];\n}\n\nexport interface RenovateArrayOption<\n T extends string | number | Record<string, unknown> = Record<string, unknown>,\n> extends RenovateOptionBase {\n default?: T[] | null;\n mergeable?: boolean;\n type: 'array';\n subType?: 'string' | 'object' | 'number';\n}\n\nexport interface RenovateStringArrayOption extends RenovateArrayOption<string> {\n format?: 'regex';\n subType: 'string';\n}\n\nexport interface RenovateNumberArrayOption extends RenovateArrayOption<number> {\n subType: 'number';\n}\n\nexport interface RenovateBooleanOption extends RenovateOptionBase {\n default?: boolean | null;\n type: 'boolean';\n}\n\nexport interface RenovateIntegerOption extends RenovateOptionBase {\n default?: number | null;\n type: 'integer';\n}\n\nexport interface RenovateStringOption extends RenovateOptionBase {\n default?: string | null;\n format?: 'regex';\n\n // Not used\n replaceLineReturns?: boolean;\n type: 'string';\n}\n\nexport interface RenovateObjectOption extends RenovateOptionBase {\n default?: any;\n additionalProperties?: Record<string, unknown> | boolean;\n mergeable?: boolean;\n type: 'object';\n}\n\nexport type RenovateOptions =\n | RenovateStringOption\n | RenovateNumberArrayOption\n | RenovateStringArrayOption\n | RenovateIntegerOption\n | RenovateBooleanOption\n | RenovateArrayOption\n | RenovateObjectOption;\n\nexport interface PackageRuleInputConfig extends RenovateConfig {\n versioning?: string;\n packageFile?: string;\n lockFiles?: string[];\n depType?: string;\n depTypes?: string[];\n depName?: string;\n packageName?: string | null;\n newValue?: string | null;\n currentValue?: string | null;\n currentVersion?: string;\n lockedVersion?: string;\n updateType?: UpdateType;\n mergeConfidenceLevel?: MergeConfidence | undefined;\n isBump?: boolean;\n sourceUrl?: string | null;\n categories?: string[];\n baseBranch?: string;\n manager?: string;\n datasource?: string;\n packageRules?: (PackageRule & PackageRuleInputConfig)[];\n releaseTimestamp?: Timestamp | null;\n repository?: string;\n currentVersionAgeInDays?: number;\n currentVersionTimestamp?: string;\n enabled?: boolean;\n skipReason?: SkipReason;\n skipStage?: StageName;\n}\n\nexport interface ConfigMigration {\n configMigration?: boolean;\n}\n\nexport interface MigratedConfig {\n /**\n * Indicates whether there was a migration applied to the configuration.\n *\n * @returns\n * `false` if the configuration does not need migrating, and `migratedConfig` can be ignored\n * `true` if the configuration was migrated, and if so, `migratedConfig` should be used instead of the provided config\n */\n isMigrated: boolean;\n migratedConfig: RenovateConfig;\n}\n\nexport interface MigratedRenovateConfig extends RenovateConfig {\n endpoints?: HostRule[];\n pathRules: PackageRule[];\n packages: PackageRule[];\n\n node?: RenovateConfig;\n travis?: RenovateConfig;\n gradle?: RenovateConfig;\n}\n\nexport interface ManagerConfig extends RenovateConfig {\n manager: string;\n categories?: Category[];\n}\n\nexport interface ValidationResult {\n errors: ValidationMessage[];\n warnings: ValidationMessage[];\n}\n\nexport interface BumpVersionConfig {\n bumpType?: string;\n filePatterns: string[];\n matchStrings: string[];\n name?: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/config/types.ts"],"names":[],"mappings":";;;AAsTa,QAAA,yBAAyB,GAAG;IACvC,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;CACP,CAAC;AA8IX,MAAM,uBAAuB,GAAG;IAC9B,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;CACE,CAAC;AAgDX,0DAA0D;AAC7C,QAAA,kBAAkB,GAAG;IAChC,OAAO;IACP,OAAO;IACP,OAAO;IACP,KAAK;IACL,QAAQ;IACR,WAAW;IACX,qBAAqB;IACrB,UAAU;IACV,aAAa;CACL,CAAC","sourcesContent":["import type { Category, PlatformId } from '../constants';\nimport type { LogLevelRemap } from '../logger/types';\nimport type { ManagerName } from '../manager-list.generated';\nimport type { CustomManager } from '../modules/manager/custom/types';\nimport type { RepoSortMethod, SortMethod } from '../modules/platform/types';\nimport type {\n AutoMergeType,\n HostRule,\n Nullish,\n RangeStrategy,\n SkipReason,\n} from '../types';\nimport type { StageName } from '../types/skip-reason';\nimport type { GitNoVerifyOption } from '../util/git/types';\nimport type { MergeConfidence } from '../util/merge-confidence/types';\nimport type { Timestamp } from '../util/timestamp';\n\nexport type RenovateConfigStage =\n | 'global'\n | 'inherit'\n | 'repository'\n | 'package'\n | 'branch'\n | 'pr';\n\nexport type RenovateSplit =\n | 'init'\n | 'onboarding'\n | 'extract'\n | 'lookup'\n | 'update';\n\nexport type RepositoryCacheConfig = 'disabled' | 'enabled' | 'reset';\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type RepositoryCacheType = 'local' | string;\nexport type DryRunConfig = 'extract' | 'lookup' | 'full';\nexport type RequiredConfig = 'required' | 'optional' | 'ignored';\n\nexport interface GroupConfig extends Record<string, unknown> {\n branchName?: string;\n branchTopic?: string;\n}\n\nexport type RecreateWhen = 'auto' | 'never' | 'always';\nexport type PlatformCommitOptions = 'auto' | 'disabled' | 'enabled';\n\nexport type BinarySource = 'docker' | 'global' | 'install' | 'hermit';\n\n// TODO: Proper typings\n/**\n * Any configuration that could be used either top-level in a repository config (or Global, Inherited or Shareable Preset configuration), or:\n *\n * - in a datasource-specific configuration\n * - in a manager-specific configuration\n * - in a Package Rule\n *\n * @see RenovateConfig for the superset of all configuration allowed in a given repository\n *\n */\nexport interface RenovateSharedConfig {\n $schema?: string;\n abandonmentThreshold?: Nullish<string>;\n addLabels?: string[];\n assignAutomerge?: boolean;\n autoApprove?: boolean;\n autoReplaceGlobalMatch?: boolean;\n automerge?: boolean;\n automergeSchedule?: string[];\n automergeStrategy?: MergeStrategy;\n automergeType?: AutoMergeType;\n azureWorkItemId?: number;\n branchName?: string;\n branchNameStrict?: boolean;\n branchPrefix?: string;\n branchPrefixOld?: string;\n bumpVersions?: BumpVersionConfig[];\n commitBody?: string;\n commitBodyTable?: boolean;\n commitMessage?: string;\n commitMessageAction?: string;\n commitMessageExtra?: string;\n commitMessageLowerCase?: 'auto' | 'never';\n commitMessagePrefix?: string;\n commitMessageTopic?: string;\n confidential?: boolean;\n configValidationError?: boolean;\n changelogUrl?: string;\n dependencyDashboardApproval?: boolean;\n draftPR?: boolean;\n enabled?: boolean;\n enabledManagers?: string[];\n encrypted?: Record<string, string>;\n extends?: string[];\n extractVersion?: string;\n managerFilePatterns?: string[];\n followTag?: string;\n force?: RenovateConfig;\n gitIgnoredAuthors?: string[];\n group?: GroupConfig;\n groupName?: string;\n groupSlug?: string;\n hashedBranchLength?: number;\n ignoreDeps?: string[];\n ignorePaths?: string[];\n ignoreTests?: boolean;\n ignoreUnstable?: boolean;\n includePaths?: string[];\n internalChecksAsSuccess?: boolean;\n internalChecksFilter?: 'strict' | 'flexible' | 'none';\n keepUpdatedLabel?: string;\n labels?: string[];\n manager?: string;\n milestone?: number;\n minimumReleaseAge?: Nullish<string>;\n npmrc?: string;\n npmrcMerge?: boolean;\n npmToken?: string;\n\n pinDigests?: boolean;\n platformAutomerge?: boolean;\n platformCommit?: PlatformCommitOptions;\n postUpgradeTasks?: PostUpgradeTasks;\n prBodyColumns?: string[];\n prBodyDefinitions?: Record<string, string>;\n prBodyHeadingDefinitions?: Record<string, string>;\n prBodyNotes?: string[];\n prCreation?: 'immediate' | 'not-pending' | 'status-success' | 'approval';\n prFooter?: string;\n prHeader?: string;\n prPriority?: number;\n prTitle?: string;\n prTitleStrict?: boolean;\n productLinks?: Record<string, string>;\n pruneBranchAfterAutomerge?: boolean;\n rangeStrategy?: RangeStrategy;\n rebaseLabel?: string;\n rebaseWhen?: string;\n recreateClosed?: boolean;\n recreateWhen?: RecreateWhen;\n repository?: string;\n repositoryCache?: RepositoryCacheConfig;\n repositoryCacheType?: RepositoryCacheType;\n respectLatest?: boolean;\n rollbackPrs?: boolean;\n schedule?: string[];\n semanticCommitScope?: string | null;\n semanticCommitType?: string;\n semanticCommits?: 'auto' | 'enabled' | 'disabled';\n separateMajorMinor?: boolean;\n separateMinorPatch?: boolean;\n separateMultipleMajor?: boolean;\n separateMultipleMinor?: boolean;\n skipArtifactsUpdate?: boolean;\n stopUpdatingLabel?: string;\n suppressNotifications?: string[];\n timezone?: string;\n unicodeEmoji?: boolean;\n updateNotScheduled?: boolean;\n versioning?: string;\n versionCompatibility?: string;\n}\n\n// Config options used only within the global worker\n// The below should contain config options where stage=global\n/** @deprecated use `RepoGlobalConfig` instead **/\nexport interface GlobalOnlyConfigLegacy {\n autodiscover?: boolean;\n autodiscoverFilter?: string[] | string;\n autodiscoverNamespaces?: string[];\n autodiscoverProjects?: string[];\n autodiscoverTopics?: string[];\n baseDir?: string;\n cacheDir?: string;\n containerbaseDir?: string;\n detectHostRulesFromEnv?: boolean;\n dockerCliOptions?: string;\n endpoint?: string;\n forceCli?: boolean;\n gitNoVerify?: GitNoVerifyOption[];\n gitPrivateKey?: string;\n gitPrivateKeyPassphrase?: string;\n globalExtends?: string[];\n mergeConfidenceDatasources?: string[];\n mergeConfidenceEndpoint?: string;\n platform?: PlatformId;\n processEnv?: Record<string, string>;\n prCommitsPerRunLimit?: number;\n privateKey?: string;\n privateKeyOld?: string;\n privateKeyPath?: string;\n privateKeyPathOld?: string;\n redisPrefix?: string;\n redisUrl?: string;\n repositories?: RenovateRepository[];\n useCloudMetadataServices?: boolean;\n deleteConfigFile?: boolean;\n deleteAdditionalConfigFile?: boolean;\n}\n\n/**\n * Any global-only configuration set by self-hosted administrators.\n *\n * Used within the repository worker.\n *\n * Should only contain config options where globalOnly=true.\n */\nexport interface RepoGlobalConfig {\n allowedCommands?: string[];\n allowCustomCrateRegistries?: boolean;\n allowPlugins?: boolean;\n allowScripts?: boolean;\n allowedEnv?: string[];\n allowedHeaders?: string[];\n binarySource?: BinarySource;\n cacheDir?: string;\n cacheHardTtlMinutes?: number;\n cacheTtlOverride?: Record<string, number>;\n containerbaseDir?: string;\n customEnvVariables?: Record<string, string>;\n dockerChildPrefix?: string;\n dockerCliOptions?: string;\n dockerSidecarImage?: string;\n dockerUser?: string;\n dryRun?: DryRunConfig;\n encryptedWarning?: string;\n endpoint?: string;\n executionTimeout?: number;\n exposeAllEnv?: boolean;\n gitTimeout?: number;\n githubTokenWarn?: boolean;\n includeMirrors?: boolean;\n localDir?: string;\n migratePresets?: Record<string, string>;\n platform?: PlatformId;\n presetCachePersistence?: boolean;\n httpCacheTtlDays?: number;\n autodiscoverRepoSort?: RepoSortMethod;\n autodiscoverRepoOrder?: SortMethod;\n userAgent?: string;\n dockerMaxPages?: number;\n s3Endpoint?: string;\n s3PathStyle?: boolean;\n cachePrivatePackages?: boolean;\n configFileNames?: string[];\n ignorePrAuthor?: boolean;\n allowedUnsafeExecutions?: AllowedUnsafeExecution[];\n onboardingAutoCloseAge?: number;\n}\n\n/**\n * Those options are global only but still passed into the repository worker config.\n *\n * @deprecated https://github.com/renovatebot/renovate/issues/39693\n */\nexport interface LegacyAdminConfig {\n baseDir?: string;\n localDir?: string;\n\n logContext?: string;\n\n onboarding?: boolean;\n onboardingBranch?: string;\n onboardingCommitMessage?: string;\n onboardingNoDeps?: 'auto' | 'enabled' | 'disabled';\n onboardingRebaseCheckbox?: boolean;\n onboardingPrTitle?: string;\n onboardingConfig?: RenovateConfig;\n onboardingConfigFileName?: string;\n\n optimizeForDisabled?: boolean;\n\n persistRepoData?: boolean;\n\n prCommitsPerRunLimit?: number;\n\n requireConfig?: RequiredConfig;\n\n useCloudMetadataServices?: boolean;\n\n writeDiscoveredRepos?: string;\n}\n\nexport type ExecutionMode = 'branch' | 'update';\n\nexport interface PostUpgradeTasks {\n commands?: string[];\n workingDirTemplate?: string;\n dataFileTemplate?: string;\n fileFilters?: string[];\n executionMode: ExecutionMode;\n}\n\nexport type UpdateConfig<\n T extends RenovateSharedConfig = RenovateSharedConfig,\n> = Partial<Record<UpdateType, T | null>>;\n\nexport type RenovateRepository =\n | string\n | {\n repository: string;\n secrets?: Record<string, string>;\n variables?: Record<string, string>;\n };\n\nexport type UseBaseBranchConfigType = 'merge' | 'none';\nexport type ConstraintsFilter = 'strict' | 'none';\nexport type MinimumReleaseAgeBehaviour =\n | 'timestamp-required'\n | 'timestamp-optional';\n\nexport const allowedStatusCheckStrings = [\n 'minimumReleaseAge',\n 'mergeConfidence',\n 'configValidation',\n 'artifactError',\n] as const;\nexport type StatusCheckKey = (typeof allowedStatusCheckStrings)[number];\ntype UserEnv = Record<string, string>;\n\n/**\n * Computed properties, for internal use only\n */\nexport interface RenovateInternalConfig {\n /** computed base branch from patterns - for internal use only */\n baseBranches?: string[];\n currentCompatibility?: string;\n datasource?: string;\n hasBaseBranches?: boolean;\n isFork?: boolean;\n isVulnerabilityAlert?: boolean;\n\n /** What is this used for? */\n remediations?: unknown;\n /** What is this used for? */\n vulnerabilityAlertsOnly?: boolean;\n}\n\n// TODO: Proper typings\n/**\n * Configuration that could be used either top-level in a repository config (or Global, Inherited or Shareable Preset configuration).\n *\n * This is a superset of any configuration that a Renovate user (not self-hosted administrator) can set.\n */\nexport interface RenovateConfig\n extends LegacyAdminConfig,\n RenovateSharedConfig,\n UpdateConfig<PackageRule>,\n AssigneesAndReviewersConfig,\n ConfigMigration,\n RenovateInternalConfig {\n s3Endpoint?: string;\n s3PathStyle?: boolean;\n reportPath?: string;\n reportType?: 'logging' | 'file' | 's3' | null;\n depName?: string;\n /** user configurable base branch patterns*/\n baseBranchPatterns?: string[];\n useBaseBranchConfig?: UseBaseBranchConfigType;\n baseBranch?: string;\n defaultBranch?: string;\n branchList?: string[];\n cloneSubmodules?: boolean;\n cloneSubmodulesFilter?: string[];\n description?: string | string[];\n detectGlobalManagerConfig?: boolean;\n errors?: ValidationMessage[];\n forkModeDisallowMaintainerEdits?: boolean;\n forkProcessing?: 'auto' | 'enabled' | 'disabled';\n forkToken?: string;\n\n gitAuthor?: string;\n\n hostRules?: HostRule[];\n\n inheritConfig?: boolean;\n inheritConfigFileName?: string;\n inheritConfigRepoName?: string;\n inheritConfigStrict?: boolean;\n\n ignorePresets?: string[];\n\n fileList?: string[];\n configWarningReuseIssue?: boolean;\n dependencyDashboard?: boolean;\n dependencyDashboardAutoclose?: boolean;\n dependencyDashboardChecks?: Record<string, string>;\n dependencyDashboardIssue?: number;\n dependencyDashboardTitle?: string;\n dependencyDashboardHeader?: string;\n dependencyDashboardFooter?: string;\n dependencyDashboardLabels?: string[];\n dependencyDashboardOSVVulnerabilitySummary?: 'none' | 'all' | 'unresolved';\n dependencyDashboardReportAbandonment?: boolean;\n mode?: 'silent' | 'full';\n packageFile?: string;\n packageRules?: PackageRule[];\n postUpdateOptions?: string[];\n branchConcurrentLimit?: number | null;\n parentOrg?: string;\n prConcurrentLimit?: number;\n prHourlyLimit?: number;\n\n printConfig?: boolean;\n\n pruneStaleBranches?: boolean;\n\n defaultRegistryUrls?: string[];\n registryUrls?: string[] | null;\n registryAliases?: Record<string, string>;\n\n /**\n * What is this used for?\n * @deprecated\n */\n renovateJsonPresent?: boolean;\n\n repoIsOnboarded?: boolean;\n repoIsActivated?: boolean;\n\n topLevelOrg?: string;\n updateInternalDeps?: boolean;\n updateType?: UpdateType;\n\n warnings?: ValidationMessage[];\n vulnerabilityAlerts?: RenovateSharedConfig;\n osvVulnerabilityAlerts?: boolean;\n vulnerabilitySeverity?: string;\n customManagers?: CustomManager[];\n customDatasources?: Record<string, CustomDatasourceConfig>;\n\n fetchChangeLogs?: FetchChangeLogsOptions;\n secrets?: Record<string, string>;\n variables?: Record<string, string>;\n\n constraints?: Record<string, string>;\n skipInstalls?: boolean | null;\n\n constraintsFiltering?: ConstraintsFilter;\n\n checkedBranches?: string[];\n customizeDashboard?: Record<string, string>;\n\n statusCheckNames?: Record<StatusCheckKey, string | null>;\n /**\n * User configured environment variables that Renovate uses when executing package manager commands\n */\n env?: UserEnv;\n logLevelRemap?: LogLevelRemap[];\n\n branchTopic?: string;\n additionalBranchPrefix?: string;\n sharedVariableName?: string;\n minimumGroupSize?: number;\n configFileNames?: string[];\n minimumReleaseAgeBehaviour?: MinimumReleaseAgeBehaviour;\n}\n\nconst CustomDatasourceFormats = [\n 'html',\n 'json',\n 'plain',\n 'toml',\n 'yaml',\n] as const;\nexport type CustomDatasourceFormats = (typeof CustomDatasourceFormats)[number];\n\nexport interface CustomDatasourceConfig {\n defaultRegistryUrlTemplate?: string;\n format?: CustomDatasourceFormats;\n transformTemplates?: string[];\n}\n\n/**\n * The superset of all configuration that a self-hosted administrator can set, alongside all repository-level configuration.\n *\n */\nexport interface AllConfig\n extends RenovateConfig,\n GlobalOnlyConfigLegacy,\n RepoGlobalConfig {\n password?: string;\n token?: string;\n username?: string;\n}\n\nexport interface AssigneesAndReviewersConfig {\n assigneesFromCodeOwners?: boolean;\n expandCodeOwnersGroups?: boolean;\n assignees?: string[];\n assigneesSampleSize?: number;\n ignoreReviewers?: string[];\n reviewersFromCodeOwners?: boolean;\n reviewers?: string[];\n reviewersSampleSize?: number;\n additionalReviewers?: string[];\n filterUnavailableUsers?: boolean;\n}\n\nexport type UpdateType =\n | 'major'\n | 'minor'\n | 'patch'\n | 'pin'\n | 'digest'\n | 'pinDigest'\n | 'lockFileMaintenance'\n | 'lockfileUpdate'\n | 'rollback'\n | 'bump'\n | 'replacement';\n\n// These are the update types which can have configuration\nexport const UpdateTypesOptions = [\n 'major',\n 'minor',\n 'patch',\n 'pin',\n 'digest',\n 'pinDigest',\n 'lockFileMaintenance',\n 'rollback',\n 'replacement',\n] as const;\n\nexport type UpdateTypeOptions = (typeof UpdateTypesOptions)[number];\n\nexport type FetchChangeLogsOptions = 'off' | 'branch' | 'pr';\n\nexport type MatchStringsStrategy = 'any' | 'recursive' | 'combination';\n\nexport type MergeStrategy =\n | 'auto'\n | 'fast-forward'\n | 'merge-commit'\n | 'rebase'\n | 'rebase-merge'\n | 'squash';\n\n// ref: https://github.com/renovatebot/renovate/issues/39458\n// This list should be added to as any new unsafe execution commands should be permitted\nexport type AllowedUnsafeExecution = 'goGenerate';\n\n// TODO: Proper typings\nexport interface PackageRule\n extends RenovateSharedConfig,\n RenovateInternalConfig,\n UpdateConfig {\n allowedVersions?: string;\n description?: string | string[];\n matchBaseBranches?: string[];\n matchCategories?: string[];\n matchConfidence?: MergeConfidence[];\n matchCurrentAge?: string;\n matchCurrentValue?: string;\n matchCurrentVersion?: string;\n matchDatasources?: string[];\n matchDepNames?: string[];\n matchDepTypes?: string[];\n matchFileNames?: string[];\n matchManagers?: string[];\n matchNewValue?: string;\n matchPackageNames?: string[];\n matchRepositories?: string[];\n matchSourceUrls?: string[];\n matchUpdateTypes?: UpdateType[];\n matchJsonata?: string[];\n overrideDatasource?: string;\n overrideDepName?: string;\n overridePackageName?: string;\n registryUrls?: string[] | null;\n replacementName?: string;\n replacementVersion?: string;\n sourceUrl?: string;\n sourceDirectory?: string;\n vulnerabilitySeverity?: string;\n vulnerabilityFixVersion?: string;\n}\n\nexport interface ValidationMessage {\n topic: string;\n message: string;\n}\n\nexport type AllowedParents =\n | '.'\n | 'bumpVersions'\n | 'customDatasources'\n | 'customManagers'\n | 'hostRules'\n | 'logLevelRemap'\n | 'packageRules'\n | 'postUpgradeTasks'\n | 'vulnerabilityAlerts'\n | ManagerName\n | UpdateTypeOptions;\nexport interface RenovateOptionBase {\n /**\n * If true, the option can only be configured by people with access to the Renovate instance.\n * Furthermore, the option should be documented in docs/usage/self-hosted-configuration.md.\n */\n globalOnly?: boolean;\n\n inheritConfigSupport?: boolean;\n\n allowedValues?: string[];\n\n allowString?: boolean;\n\n cli?: boolean;\n\n description: string;\n\n env?: false | string;\n\n /**\n * Do not validate object children\n */\n freeChoice?: boolean;\n\n mergeable?: boolean;\n\n autogenerated?: boolean;\n\n name: string;\n\n parents?: AllowedParents[];\n\n stage?: RenovateConfigStage;\n\n experimental?: boolean;\n\n experimentalDescription?: string;\n\n experimentalIssues?: number[];\n\n advancedUse?: boolean;\n\n /**\n * This is used to add a deprecation message in the docs\n */\n deprecationMsg?: string;\n\n /**\n * For internal use only: add it to any config option that supports regex or glob matching\n */\n patternMatch?: boolean;\n\n /**\n * For internal use only: add it to any config option of type integer that supports negative integers\n */\n allowNegative?: boolean;\n\n /**\n * Managers which support this option, leave undefined if all managers support it.\n */\n supportedManagers?: string[];\n\n /**\n * Platforms which support this option, leave undefined if all platforms support it.\n */\n supportedPlatforms?: PlatformId[];\n\n /**\n * Conditions that must be met for this option to be required.\n */\n requiredIf?: RenovateRequiredOption[];\n}\n\nexport interface RenovateRequiredOption {\n siblingProperties: { property: string; value: string }[];\n}\n\nexport interface RenovateArrayOption<\n T extends string | number | Record<string, unknown> = Record<string, unknown>,\n> extends RenovateOptionBase {\n default?: T[] | null;\n mergeable?: boolean;\n type: 'array';\n subType?: 'string' | 'object' | 'number';\n}\n\nexport interface RenovateStringArrayOption extends RenovateArrayOption<string> {\n format?: 'regex';\n subType: 'string';\n}\n\nexport interface RenovateNumberArrayOption extends RenovateArrayOption<number> {\n subType: 'number';\n}\n\nexport interface RenovateBooleanOption extends RenovateOptionBase {\n default?: boolean | null;\n type: 'boolean';\n}\n\nexport interface RenovateIntegerOption extends RenovateOptionBase {\n default?: number | null;\n type: 'integer';\n}\n\nexport interface RenovateStringOption extends RenovateOptionBase {\n default?: string | null;\n format?: 'regex';\n\n // Not used\n replaceLineReturns?: boolean;\n type: 'string';\n}\n\nexport interface RenovateObjectOption extends RenovateOptionBase {\n default?: any;\n additionalProperties?: Record<string, unknown> | boolean;\n mergeable?: boolean;\n type: 'object';\n}\n\nexport type RenovateOptions =\n | RenovateStringOption\n | RenovateNumberArrayOption\n | RenovateStringArrayOption\n | RenovateIntegerOption\n | RenovateBooleanOption\n | RenovateArrayOption\n | RenovateObjectOption;\n\nexport interface PackageRuleInputConfig extends RenovateConfig {\n versioning?: string;\n packageFile?: string;\n lockFiles?: string[];\n depType?: string;\n depTypes?: string[];\n depName?: string;\n packageName?: string | null;\n newValue?: string | null;\n currentValue?: string | null;\n currentVersion?: string;\n lockedVersion?: string;\n updateType?: UpdateType;\n mergeConfidenceLevel?: MergeConfidence | undefined;\n isBump?: boolean;\n sourceUrl?: string | null;\n categories?: string[];\n baseBranch?: string;\n manager?: string;\n datasource?: string;\n packageRules?: (PackageRule & PackageRuleInputConfig)[];\n releaseTimestamp?: Timestamp | null;\n repository?: string;\n currentVersionAgeInDays?: number;\n currentVersionTimestamp?: string;\n enabled?: boolean;\n skipReason?: SkipReason;\n skipStage?: StageName;\n}\n\nexport interface ConfigMigration {\n configMigration?: boolean;\n}\n\nexport interface MigratedConfig {\n /**\n * Indicates whether there was a migration applied to the configuration.\n *\n * @returns\n * `false` if the configuration does not need migrating, and `migratedConfig` can be ignored\n * `true` if the configuration was migrated, and if so, `migratedConfig` should be used instead of the provided config\n */\n isMigrated: boolean;\n migratedConfig: RenovateConfig;\n}\n\nexport interface MigratedRenovateConfig extends RenovateConfig {\n endpoints?: HostRule[];\n pathRules: PackageRule[];\n packages: PackageRule[];\n\n node?: RenovateConfig;\n travis?: RenovateConfig;\n gradle?: RenovateConfig;\n}\n\nexport interface ManagerConfig extends RenovateConfig {\n manager: string;\n categories?: Category[];\n}\n\nexport interface ValidationResult {\n errors: ValidationMessage[];\n warnings: ValidationMessage[];\n}\n\nexport interface BumpVersionConfig {\n bumpType?: string;\n filePatterns: string[];\n matchStrings: string[];\n name?: string;\n}\n"]}
|
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const GithubVulnerabilityAlert: z.ZodEffects<z.ZodArray<z.ZodAny, "many">, {
|
|
2
|
+
export declare const GithubVulnerabilityAlert: z.ZodEffects<z.ZodEffects<z.ZodArray<z.ZodAny, "many">, {
|
|
3
|
+
dependency: {
|
|
4
|
+
manifest_path: string;
|
|
5
|
+
};
|
|
6
|
+
security_advisory: {
|
|
7
|
+
description: string;
|
|
8
|
+
identifiers: {
|
|
9
|
+
value: string;
|
|
10
|
+
type: string;
|
|
11
|
+
}[];
|
|
12
|
+
references?: {
|
|
13
|
+
url: string;
|
|
14
|
+
}[] | undefined;
|
|
15
|
+
};
|
|
16
|
+
security_vulnerability: {
|
|
17
|
+
package: {
|
|
18
|
+
name: string;
|
|
19
|
+
ecosystem: "rust" | "composer" | "maven" | "npm" | "nuget" | "pip" | "rubygems" | "go";
|
|
20
|
+
};
|
|
21
|
+
vulnerable_version_range: string;
|
|
22
|
+
first_patched_version?: {
|
|
23
|
+
identifier: string;
|
|
24
|
+
} | null | undefined;
|
|
25
|
+
} | null;
|
|
26
|
+
dismissed_reason?: string | null | undefined;
|
|
27
|
+
}[], any[]>, {
|
|
3
28
|
dependency: {
|
|
4
29
|
manifest_path: string;
|
|
5
30
|
};
|
|
@@ -5,7 +5,8 @@ const zod_1 = require("zod");
|
|
|
5
5
|
const logger_1 = require("../../../logger");
|
|
6
6
|
const schema_utils_1 = require("../../../util/schema-utils");
|
|
7
7
|
const Package = zod_1.z.object({
|
|
8
|
-
ecosystem: zod_1.z
|
|
8
|
+
ecosystem: zod_1.z
|
|
9
|
+
.union([
|
|
9
10
|
zod_1.z.literal('maven'),
|
|
10
11
|
zod_1.z.literal('npm'),
|
|
11
12
|
zod_1.z.literal('nuget'),
|
|
@@ -14,7 +15,11 @@ const Package = zod_1.z.object({
|
|
|
14
15
|
zod_1.z.literal('rust'),
|
|
15
16
|
zod_1.z.literal('composer'),
|
|
16
17
|
zod_1.z.literal('go'),
|
|
17
|
-
])
|
|
18
|
+
])
|
|
19
|
+
.catch((ctx) => {
|
|
20
|
+
logger_1.logger.debug({ ecosystem: ctx.input }, 'Skipping vulnerability alert with unsupported ecosystem');
|
|
21
|
+
return undefined;
|
|
22
|
+
}),
|
|
18
23
|
name: zod_1.z.string(),
|
|
19
24
|
});
|
|
20
25
|
const SecurityVulnerability = zod_1.z
|
|
@@ -44,7 +49,7 @@ exports.GithubVulnerabilityAlert = (0, schema_utils_1.LooseArray)(zod_1.z.object
|
|
|
44
49
|
onError: ({ error }) => {
|
|
45
50
|
logger_1.logger.debug({ error }, 'Vulnerability Alert: Failed to parse some alerts');
|
|
46
51
|
},
|
|
47
|
-
});
|
|
52
|
+
}).transform((alerts) => alerts.filter((alert) => alert.security_vulnerability?.package?.ecosystem));
|
|
48
53
|
// https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28#get-repository-content
|
|
49
54
|
const GithubResponseMetadata = zod_1.z.object({
|
|
50
55
|
name: zod_1.z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/platform/github/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4CAAyC;AACzC,6DAAwD;AAExD,MAAM,OAAO,GAAG,OAAC,CAAC,MAAM,CAAC;IACvB,SAAS,EAAE,OAAC,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/platform/github/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport { logger } from '../../../logger';\nimport { LooseArray } from '../../../util/schema-utils';\n\nconst Package = z.object({\n ecosystem: z\n .union([\n z.literal('maven'),\n z.literal('npm'),\n z.literal('nuget'),\n z.literal('pip'),\n z.literal('rubygems'),\n z.literal('rust'),\n z.literal('composer'),\n z.literal('go'),\n ])\n .catch((ctx) => {\n logger.debug(\n { ecosystem: ctx.input },\n 'Skipping vulnerability alert with unsupported ecosystem',\n );\n return undefined as any;\n }),\n name: z.string(),\n});\n\nconst SecurityVulnerability = z\n .object({\n first_patched_version: z.object({ identifier: z.string() }).nullish(),\n package: Package,\n vulnerable_version_range: z.string(),\n })\n .nullable();\n\nconst SecurityAdvisory = z.object({\n description: z.string(),\n identifiers: z.array(\n z.object({\n type: z.string(),\n value: z.string(),\n }),\n ),\n references: z.array(z.object({ url: z.string() })).optional(),\n});\n\nexport const GithubVulnerabilityAlert = LooseArray(\n z.object({\n dismissed_reason: z.string().nullish(),\n security_advisory: SecurityAdvisory,\n security_vulnerability: SecurityVulnerability,\n dependency: z.object({\n manifest_path: z.string(),\n }),\n }),\n {\n /* v8 ignore next */\n onError: ({ error }) => {\n logger.debug(\n { error },\n 'Vulnerability Alert: Failed to parse some alerts',\n );\n },\n },\n).transform((alerts) =>\n alerts.filter((alert) => alert.security_vulnerability?.package?.ecosystem),\n);\nexport type GithubVulnerabilityAlert = z.infer<typeof GithubVulnerabilityAlert>;\n\n// https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28#get-repository-content\nconst GithubResponseMetadata = z.object({\n name: z.string(),\n path: z.string(),\n});\n\nexport const GithubFileMeta = GithubResponseMetadata.extend({\n type: z.literal('file'),\n});\nexport type GithubFileMeta = z.infer<typeof GithubFileMeta>;\n\nexport const GithubFile = GithubFileMeta.extend({\n content: z.string(),\n encoding: z.string(),\n});\nexport type GithubFile = z.infer<typeof GithubFile>;\n\nexport const GithubDirectory = GithubResponseMetadata.extend({\n type: z.literal('dir'),\n});\n\nexport type GithubDirectory = z.infer<typeof GithubDirectory>;\n\nexport const GithubOtherContent = GithubResponseMetadata.extend({\n type: z.literal('symlink').or(z.literal('submodule')),\n});\n\nexport type GithubOtherContent = z.infer<typeof GithubOtherContent>;\n\nexport const GithubElement = GithubFile.or(GithubFileMeta)\n .or(GithubDirectory)\n .or(GithubOtherContent);\nexport type GithubElement = z.infer<typeof GithubElement>;\n\nexport const GithubContentResponse = z.array(GithubElement).or(GithubElement);\n\nexport const GithubBranchProtection = z.object({\n required_status_checks: z\n .object({\n strict: z.boolean(),\n })\n .nullish()\n .optional(),\n});\nexport type GithubBranchProtection = z.infer<typeof GithubBranchProtection>;\n\nconst GithubRulesetRule = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('non_fast_forward'),\n }),\n z.object({\n type: z.literal('required_status_checks'),\n parameters: z.object({\n strict_required_status_checks_policy: z.boolean().optional(),\n }),\n }),\n // prevents deletion\n z.object({\n type: z.literal('deletion'),\n }),\n]);\n\nexport const GithubBranchRulesets = LooseArray(GithubRulesetRule);\nexport type GithubBranchRulesets = z.infer<typeof GithubBranchRulesets>;\n"]}
|
|
@@ -64,7 +64,7 @@ function replaceInterpolatedValuesInObject(config_, input, options, deleteValues
|
|
|
64
64
|
delete config[name];
|
|
65
65
|
}
|
|
66
66
|
for (const [key, value] of Object.entries(config)) {
|
|
67
|
-
if ((0, is_1.isPlainObject)(value)) {
|
|
67
|
+
if ((0, is_1.isPlainObject)(value) && key !== 'onboardingConfig') {
|
|
68
68
|
// @ts-expect-error -- type can't be narrowed
|
|
69
69
|
config[key] = replaceInterpolatedValuesInObject(value, input, options, deleteValues);
|
|
70
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpolator.js","sourceRoot":"","sources":["../../lib/util/interpolator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interpolator.js","sourceRoot":"","sources":["../../lib/util/interpolator.ts"],"names":[],"mappings":"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","sourcesContent":["import { isArray, isPlainObject, isString } from '@sindresorhus/is';\nimport type { RenovateConfig } from '../config/types';\nimport {\n CONFIG_SECRETS_INVALID,\n CONFIG_VALIDATION,\n CONFIG_VARIABLES_INVALID,\n} from '../constants/error-messages';\nimport { logger } from '../logger';\nimport { capitalize } from './string';\n\nexport interface InterpolatorOptions {\n name: 'secrets' | 'variables';\n templateRegex: RegExp;\n nameRegex: RegExp;\n}\n\nexport function validateInterpolatedValues(\n input: unknown,\n options: InterpolatorOptions,\n): void {\n if (!input) {\n return;\n }\n\n const { name, nameRegex } = options;\n\n const validationErrors: string[] = [];\n if (isPlainObject(input)) {\n for (const [key, value] of Object.entries(input)) {\n if (!nameRegex.test(key)) {\n validationErrors.push(`Invalid ${name} name \"${key}\"`);\n }\n if (!isString(value)) {\n validationErrors.push(\n `${capitalize(name)} values must be strings. Found type ${typeof value} for ${name} ${key}`,\n );\n }\n }\n } else {\n validationErrors.push(\n `Config ${name}s must be a plain object. Found: ${typeof input}`,\n );\n }\n\n if (validationErrors.length) {\n logger.error({ validationErrors }, `Invalid ${name}s configured`);\n throw new Error(\n name === 'secrets' ? CONFIG_SECRETS_INVALID : CONFIG_VARIABLES_INVALID,\n );\n }\n}\n\nfunction replaceInterpolatedValuesInString(\n key: string,\n value: string,\n input: Record<string, string>,\n options: InterpolatorOptions,\n): string {\n const { name, templateRegex } = options;\n // Reset regex lastIndex for global regexes to ensure consistent behavior\n templateRegex.lastIndex = 0;\n\n // do nothing if no interpolator template found\n if (!templateRegex.test(value)) {\n return value;\n }\n\n const disallowedPrefixes = ['branch', 'commit', 'group', 'pr', 'semantic'];\n if (disallowedPrefixes.some((prefix) => key.startsWith(prefix))) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = `Disallowed ${name} substitution`;\n error.validationMessage = `The field \\`${key}\\` may not use ${name} substitution`;\n throw error;\n }\n return value.replace(templateRegex, (_, key) => {\n if (input?.[key]) {\n return input[key];\n }\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = `Unknown ${name} name`;\n error.validationMessage = `The following ${name} name was not found in config: ${String(\n key,\n )}`;\n throw error;\n });\n}\n\nexport function replaceInterpolatedValuesInObject(\n config_: RenovateConfig,\n input: Record<string, string>,\n options: InterpolatorOptions,\n deleteValues = true,\n): RenovateConfig {\n const config = { ...config_ };\n const { name } = options;\n if (deleteValues) {\n delete config[name];\n }\n for (const [key, value] of Object.entries(config)) {\n if (isPlainObject(value) && key !== 'onboardingConfig') {\n // @ts-expect-error -- type can't be narrowed\n config[key] = replaceInterpolatedValuesInObject(\n value,\n input,\n options,\n deleteValues,\n );\n }\n if (isString(value)) {\n // @ts-expect-error -- type can't be narrowed\n config[key] = replaceInterpolatedValuesInString(\n key,\n value,\n input,\n options,\n );\n }\n if (isArray(value)) {\n for (const [arrayIndex, arrayItem] of value.entries()) {\n if (isPlainObject(arrayItem)) {\n value[arrayIndex] = replaceInterpolatedValuesInObject(\n arrayItem,\n input,\n options,\n deleteValues,\n );\n } else if (isString(arrayItem)) {\n value[arrayIndex] = replaceInterpolatedValuesInString(\n key,\n arrayItem,\n input,\n options,\n );\n }\n }\n }\n }\n return config;\n}\n"]}
|
|
@@ -367,6 +367,7 @@ async function processBranch(branchConfig, forceRebase = false) {
|
|
|
367
367
|
!!config.rebaseRequested;
|
|
368
368
|
const userApproveAllPendingPR = !!config.dependencyDashboardAllPending;
|
|
369
369
|
const userOpenAllRateLimtedPR = !!config.dependencyDashboardAllRateLimited;
|
|
370
|
+
const userOpenAllSchedulePendingPR = !!config.dependencyDashboardAllAwaitingSchedule;
|
|
370
371
|
if (forceRebase) {
|
|
371
372
|
logger_1.logger.debug('Force rebase because branch needs updating');
|
|
372
373
|
config.reuseExistingBranch = false;
|
|
@@ -386,6 +387,9 @@ async function processBranch(branchConfig, forceRebase = false) {
|
|
|
386
387
|
else if (userOpenAllRateLimtedPR) {
|
|
387
388
|
logger_1.logger.debug('A user manually approved all rate-limited PRs via the Dependency Dashboard.');
|
|
388
389
|
}
|
|
390
|
+
else if (userOpenAllSchedulePendingPR) {
|
|
391
|
+
logger_1.logger.debug('A user manually requested all awaiting schedule PRs via the Dependency Dashboard.');
|
|
392
|
+
}
|
|
389
393
|
else if (branchExists &&
|
|
390
394
|
config.rebaseWhen === 'never' &&
|
|
391
395
|
!(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel)) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/update/branch/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../../config/global';\nimport {\n type MinimumReleaseAgeBehaviour,\n type RenovateConfig,\n type UpdateType,\n} from '../../../../config/types';\nimport {\n CONFIG_VALIDATION,\n MANAGER_LOCKFILE_ERROR,\n PLATFORM_AUTHENTICATION_ERROR,\n PLATFORM_BAD_CREDENTIALS,\n PLATFORM_INTEGRATION_UNAUTHORIZED,\n PLATFORM_RATE_LIMIT_EXCEEDED,\n REPOSITORY_CHANGED,\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n WORKER_FILE_UPDATE_FAILED,\n} from '../../../../constants/error-messages';\nimport { logger, removeMeta } from '../../../../logger';\nimport { getAdditionalFiles } from '../../../../modules/manager/npm/post-update';\nimport type { Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport {\n ensureComment,\n ensureCommentRemoval,\n} from '../../../../modules/platform/comment';\nimport { scm } from '../../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { getElapsedMs } from '../../../../util/date';\nimport { emojify } from '../../../../util/emoji';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { toMs } from '../../../../util/pretty-time';\nimport * as template from '../../../../util/template';\nimport { getCount, isLimitReached } from '../../../global/limits';\nimport type { BranchConfig, BranchResult, PrBlockedBy } from '../../../types';\nimport { embedChangelogs } from '../../changelog';\nimport { ensurePr, getPlatformPrOptions } from '../pr';\nimport { checkAutoMerge } from '../pr/automerge';\nimport { setArtifactErrorStatus } from './artifacts';\nimport { tryBranchAutomerge } from './automerge';\nimport { bumpVersions } from './bump-versions';\nimport { prAlreadyExisted } from './check-existing';\nimport { commitFilesToBranch } from './commit';\nimport executePostUpgradeCommands from './execute-post-upgrade-commands';\nimport { getUpdatedPackageFiles } from './get-updated';\nimport { handleClosedPr, handleModifiedPr } from './handle-existing';\nimport { shouldReuseExistingBranch } from './reuse';\nimport { isScheduledNow } from './schedule';\nimport { setConfidence, setStability } from './status-checks';\n\nasync function rebaseCheck(\n config: RenovateConfig,\n branchPr: Pr,\n): Promise<boolean> {\n const titleRebase = branchPr.title?.startsWith('rebase!');\n if (titleRebase) {\n logger.debug(\n `Manual rebase requested via PR title for #${branchPr.number}`,\n );\n return true;\n }\n const labelRebase = !!branchPr.labels?.includes(config.rebaseLabel!);\n if (labelRebase) {\n logger.debug(\n `Manual rebase requested via PR labels for #${branchPr.number}`,\n );\n /* v8 ignore next -- needs test */\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would delete label ${config.rebaseLabel!} from #${\n branchPr.number\n }`,\n );\n } else {\n await platform.deleteLabel(branchPr.number, config.rebaseLabel!);\n }\n return true;\n }\n const prRebaseChecked = !!branchPr.bodyStruct?.rebaseRequested;\n if (prRebaseChecked) {\n logger.debug(\n `Manual rebase requested via PR checkbox for #${branchPr.number}`,\n );\n return true;\n }\n\n return false;\n}\n\nasync function deleteBranchSilently(branchName: string): Promise<void> {\n try {\n await scm.deleteBranch(branchName);\n } catch (err) {\n /* v8 ignore next -- needs test */\n logger.debug({ branchName, err }, 'Branch auto-remove failed');\n }\n}\n\nfunction userChangedTargetBranch(pr: Pr): boolean {\n const oldTargetBranch = pr.bodyStruct?.debugData?.targetBranch;\n if (oldTargetBranch && pr.targetBranch) {\n return pr.targetBranch !== oldTargetBranch;\n }\n return false;\n}\n\nexport interface ProcessBranchResult {\n branchExists: boolean;\n updatesVerified?: boolean;\n prBlockedBy?: PrBlockedBy;\n prNo?: number;\n result: BranchResult;\n commitSha?: string | null;\n}\n\nexport async function processBranch(\n branchConfig: BranchConfig,\n forceRebase = false,\n): Promise<ProcessBranchResult> {\n let commitSha: string | null = null;\n let config: BranchConfig = { ...branchConfig };\n logger.trace({ config }, 'processBranch()');\n let branchExists = await scm.branchExists(config.branchName);\n const dependencyDashboardCheck =\n config.dependencyDashboardChecks?.[config.branchName];\n let updatesVerified = false;\n if (!branchExists && config.branchPrefix !== config.branchPrefixOld) {\n const branchName = config.branchName.replace(\n config.branchPrefix!,\n config.branchPrefixOld!,\n );\n branchExists = await scm.branchExists(branchName);\n if (branchExists) {\n config.branchName = branchName;\n logger.debug('Found existing branch with branchPrefixOld');\n }\n }\n\n if (\n !branchExists &&\n branchConfig.minimumGroupSize &&\n branchConfig.minimumGroupSize > branchConfig.upgrades.length &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Skipping branch creation as minimumGroupSize: ${branchConfig.minimumGroupSize} is not met`,\n );\n return {\n branchExists: false,\n result: 'minimum-group-size-not-met',\n };\n }\n\n let branchPr = await platform.getBranchPr(\n config.branchName,\n config.baseBranch,\n );\n logger.debug(`branchExists=${branchExists}`);\n logger.debug(`dependencyDashboardCheck=${dependencyDashboardCheck!}`);\n if (branchPr) {\n config.rebaseRequested = await rebaseCheck(config, branchPr);\n logger.debug(`PR rebase requested=${config.rebaseRequested}`);\n }\n const keepUpdatedLabel = config.keepUpdatedLabel;\n const artifactErrorTopic = emojify(':warning: Artifact update problem');\n const artifactNoticeTopic = emojify(\n ':information_source: Artifact update notice',\n );\n try {\n // Check if branch already existed\n const existingPr =\n !branchPr || config.automerge\n ? await prAlreadyExisted(config)\n : undefined;\n if (existingPr?.state === 'merged') {\n logger.debug(`Matching PR #${existingPr.number} was merged previously`);\n if (config.automerge) {\n logger.debug('Disabling automerge because PR was merged previously');\n config.automerge = false;\n config.automergedPreviously = true;\n }\n } else if (!branchPr && existingPr && !dependencyDashboardCheck) {\n logger.debug(\n { prTitle: config.prTitle },\n 'Closed PR already exists. Skipping branch.',\n );\n await handleClosedPr(config, existingPr);\n return {\n branchExists: false,\n prNo: existingPr.number,\n result: 'already-existed',\n };\n }\n if (\n !branchExists &&\n branchConfig.pendingChecks &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because internalChecksFilter was not met`,\n );\n return {\n branchExists: false,\n result: 'pending',\n };\n }\n if (!branchExists) {\n if (config.mode === 'silent' && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because mode=silent`,\n );\n return {\n branchExists,\n result: 'needs-approval',\n };\n }\n if (config.dependencyDashboardApproval && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because dependencyDashboardApproval=true`,\n );\n return {\n branchExists,\n result: 'needs-approval',\n };\n }\n }\n\n logger.debug(\n `Open PR Count: ${getCount('ConcurrentPRs')}, Existing Branch Count: ${getCount('Branches')}, Hourly PR Count: ${getCount('HourlyPRs')}`,\n );\n\n if (\n !branchExists &&\n isLimitReached('Branches', branchConfig) &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached branch limit - skipping branch creation');\n return {\n branchExists,\n result: 'branch-limit-reached',\n };\n }\n if (\n isLimitReached('Commits') &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached commits limit - skipping branch');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'commit-limit-reached',\n };\n }\n if (branchExists) {\n // check if branch is labelled to stop\n config.stopUpdating = branchPr?.labels?.includes(\n config.stopUpdatingLabel!,\n );\n\n const prRebaseChecked = !!branchPr?.bodyStruct?.rebaseRequested;\n\n if (branchExists && !dependencyDashboardCheck && !prRebaseChecked) {\n if (config.stopUpdating) {\n logger.info(\n 'Branch updating is skipped because stopUpdatingLabel is present in config',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n\n if (config.pendingChecks) {\n logger.info(\n 'Branch updating is skipped because internalChecksFilter was not met',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'pending',\n };\n }\n }\n\n logger.debug('Checking if PR has been edited');\n const branchIsModified = await scm.isBranchModified(\n config.branchName,\n config.baseBranch,\n );\n if (branchPr) {\n logger.debug('Found existing branch PR');\n if (branchPr.state !== 'open') {\n logger.debug(\n 'PR has been closed or merged since this run started - aborting',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n if (branchIsModified || userChangedTargetBranch(branchPr)) {\n logger.debug(`PR has been edited, PrNo:${branchPr.number}`);\n await handleModifiedPr(config, branchPr);\n if (!(!!dependencyDashboardCheck || config.rebaseRequested)) {\n return {\n branchExists,\n prNo: branchPr.number,\n result: 'pr-edited',\n };\n }\n }\n } else if (branchIsModified) {\n const oldPr = await platform.findPr({\n branchName: config.branchName,\n state: '!open',\n targetBranch: config.baseBranch,\n });\n if (!oldPr) {\n logger.debug('Branch has been edited but found no PR - skipping');\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n const branchSha = await scm.getBranchCommit(config.branchName);\n const oldPrSha = oldPr?.sha;\n if (!oldPrSha || oldPrSha === branchSha) {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR matching this branch - will override it',\n );\n } else {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR but the SHA is different',\n );\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n }\n }\n\n // Check schedule\n config.isScheduledNow = isScheduledNow(config, 'schedule');\n if (!config.isScheduledNow && !dependencyDashboardCheck) {\n if (!branchExists) {\n logger.debug('Skipping branch creation as not within schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n if (config.updateNotScheduled === false && !config.rebaseRequested) {\n logger.debug('Skipping branch update as not within schedule');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'update-not-scheduled',\n };\n }\n if (\n !branchPr &&\n !(config.automerge && config.automergeType === 'branch') // if branch is configured for automerge there's no need for a PR\n ) {\n logger.debug('Skipping PR creation out of schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n logger.debug(\n 'Branch + PR exists but is not scheduled -- will update if necessary',\n );\n }\n //stability checks\n if (\n config.upgrades.some(\n (upgrade) =>\n isNonEmptyString(upgrade.minimumReleaseAge) ||\n isActiveConfidenceLevel(upgrade.minimumConfidence!),\n )\n ) {\n const depNamesWithoutReleaseTimestamp: Record<\n MinimumReleaseAgeBehaviour,\n {\n depName: string;\n updateType: UpdateType;\n }[]\n > = {\n 'timestamp-required': [],\n 'timestamp-optional': [],\n };\n\n // Only set a stability status check if one or more of the updates contain\n // both a minimumReleaseAge setting and a releaseTimestamp\n config.stabilityStatus = 'green';\n // Default to 'success' but set 'pending' if any update is pending\n for (const upgrade of config.upgrades) {\n const minimumReleaseAgeMs = isNonEmptyString(upgrade.minimumReleaseAge)\n ? coerceNumber(toMs(upgrade.minimumReleaseAge), 0)\n : 0;\n\n if (minimumReleaseAgeMs) {\n const minimumReleaseAgeBehaviour: MinimumReleaseAgeBehaviour =\n upgrade.minimumReleaseAgeBehaviour ?? 'timestamp-required';\n\n // regardless of the value of `minimumReleaseAgeBehaviour`, if there is a timestamp, we will process it according to `minimumReleaseAge`\n if (upgrade.releaseTimestamp) {\n const timeElapsed = getElapsedMs(upgrade.releaseTimestamp);\n if (timeElapsed < minimumReleaseAgeMs) {\n logger.debug(\n {\n depName: upgrade.depName,\n timeElapsed,\n minimumReleaseAge: upgrade.minimumReleaseAge,\n },\n 'Update has not passed minimum release age',\n );\n config.stabilityStatus = 'yellow';\n continue;\n }\n } else {\n // if we're set to `minimumReleaseAgeBehaviour=timestamp-required`, and there isn't a timestamp, always mark the update as pending\n if (minimumReleaseAgeBehaviour === 'timestamp-required') {\n depNamesWithoutReleaseTimestamp['timestamp-required'].push({\n depName: upgrade.depName!,\n updateType: upgrade.updateType!,\n });\n config.stabilityStatus = 'yellow';\n continue;\n } else {\n // if there is no timestamp, and we're running in `optional` mode, we can allow it, but make sure to warn the user\n depNamesWithoutReleaseTimestamp['timestamp-optional'].push({\n depName: upgrade.depName!,\n updateType: upgrade.updateType!,\n });\n }\n }\n }\n const datasource = upgrade.datasource!;\n const depName = upgrade.depName!;\n const packageName = upgrade.packageName!;\n const minimumConfidence = upgrade.minimumConfidence!;\n const updateType = upgrade.updateType!;\n const currentVersion = upgrade.currentVersion!;\n const newVersion = upgrade.newVersion!;\n if (isActiveConfidenceLevel(minimumConfidence)) {\n const confidence =\n (await getMergeConfidenceLevel(\n datasource,\n packageName,\n currentVersion,\n newVersion,\n updateType,\n )) ?? 'neutral';\n if (satisfiesConfidenceLevel(confidence, minimumConfidence)) {\n config.confidenceStatus = 'green';\n } else {\n logger.debug(\n { depName, confidence, minimumConfidence },\n 'Update does not meet minimum confidence scores',\n );\n config.confidenceStatus = 'yellow';\n continue;\n }\n }\n }\n\n if (depNamesWithoutReleaseTimestamp['timestamp-required'].length) {\n logger.once.debug(\n { updates: depNamesWithoutReleaseTimestamp['timestamp-required'] },\n `Marking ${depNamesWithoutReleaseTimestamp['timestamp-required'].length} release(s) as pending, as they do not have a releaseTimestamp and we're running with minimumReleaseAgeBehaviour=timestamp-required`,\n );\n }\n if (depNamesWithoutReleaseTimestamp['timestamp-optional'].length) {\n logger.once.warn(\n \"Some upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding. See debug logs for more information\",\n );\n logger.once.debug(\n { updates: depNamesWithoutReleaseTimestamp['timestamp-optional'] },\n `${depNamesWithoutReleaseTimestamp['timestamp-optional'].length} upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding`,\n );\n }\n\n // Don't create a branch if we know it will be status 'pending'\n if (\n !dependencyDashboardCheck &&\n !branchExists &&\n config.stabilityStatus === 'yellow' &&\n ['not-pending', 'status-success'].includes(config.prCreation!)\n ) {\n logger.debug(\n 'Skipping branch creation due to internal status checks not met',\n );\n return {\n branchExists,\n result: 'pending',\n };\n }\n }\n\n let userRebaseRequested =\n dependencyDashboardCheck === 'rebase' ||\n !!config.dependencyDashboardRebaseAllOpen ||\n !!config.rebaseRequested;\n const userApproveAllPendingPR = !!config.dependencyDashboardAllPending;\n const userOpenAllRateLimtedPR = !!config.dependencyDashboardAllRateLimited;\n if (forceRebase) {\n logger.debug('Force rebase because branch needs updating');\n config.reuseExistingBranch = false;\n } else if (userRebaseRequested) {\n logger.debug('User has requested rebase');\n config.reuseExistingBranch = false;\n } else if (dependencyDashboardCheck === 'global-config') {\n logger.debug(`Manual create/rebase requested via checkedBranches`);\n config.reuseExistingBranch = false;\n userRebaseRequested = true;\n } else if (userApproveAllPendingPR) {\n logger.debug(\n 'A user manually approved all pending PRs via the Dependency Dashboard.',\n );\n } else if (userOpenAllRateLimtedPR) {\n logger.debug(\n 'A user manually approved all rate-limited PRs via the Dependency Dashboard.',\n );\n } else if (\n branchExists &&\n config.rebaseWhen === 'never' &&\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel)) &&\n !dependencyDashboardCheck\n ) {\n logger.debug('rebaseWhen=never so skipping branch update check');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n // if the base branch has been changed by user in renovate config, rebase onto the new baseBranch\n // we have already confirmed earlier that branch isn't modified, so its safe to use targetBranch here\n else if (\n branchPr?.targetBranch &&\n branchPr.targetBranch !== config.baseBranch\n ) {\n logger.debug(\n 'Base branch changed by user, rebasing the branch onto new base',\n );\n config.reuseExistingBranch = false;\n } else if (config.cacheFingerprintMatch === 'no-match') {\n logger.debug(\n 'Cache fingerprint does not match, cannot reuse existing branch',\n );\n config.reuseExistingBranch = false;\n } else {\n config = await shouldReuseExistingBranch(config);\n }\n // TODO: types (#22198)\n logger.debug(`Using reuseExistingBranch: ${config.reuseExistingBranch!}`);\n if (\n !(\n config.reuseExistingBranch && config.cacheFingerprintMatch === 'matched'\n )\n ) {\n await scm.checkoutBranch(config.baseBranch);\n const res = await getUpdatedPackageFiles(config);\n if (res.artifactErrors && config.artifactErrors) {\n res.artifactErrors = config.artifactErrors.concat(res.artifactErrors);\n }\n config = { ...config, ...res };\n if (config.updatedPackageFiles?.length) {\n logger.debug(\n `Updated ${config.updatedPackageFiles.length} package files`,\n );\n if (config.reuseExistingBranch && !forceRebase) {\n logger.debug(\n 'Existing branch needs updating. Restarting processBranch() with a clean branch',\n );\n return processBranch(branchConfig, true);\n }\n } else {\n logger.debug('No package files need updating');\n }\n const additionalFiles = await getAdditionalFiles(\n config,\n branchConfig.packageFiles!,\n );\n config.artifactErrors = (config.artifactErrors ?? []).concat(\n additionalFiles.artifactErrors,\n );\n config.updatedArtifacts = (config.updatedArtifacts ?? []).concat(\n additionalFiles.updatedArtifacts,\n );\n if (config.updatedArtifacts?.length) {\n logger.debug(\n {\n updatedArtifacts: config.updatedArtifacts.map((f) =>\n f.type === 'deletion' ? `${f.path} (delete)` : f.path,\n ),\n },\n `Updated ${config.updatedArtifacts.length} lock files`,\n );\n if (config.reuseExistingBranch && !forceRebase) {\n logger.debug(\n 'Existing branch needs updating. Restarting processBranch() with a clean branch',\n );\n return processBranch(branchConfig, true);\n }\n } else {\n logger.debug('No updated lock files in branch');\n }\n if (config.fetchChangeLogs === 'branch') {\n await embedChangelogs(config.upgrades);\n }\n\n const postUpgradeCommandResults =\n await executePostUpgradeCommands(config);\n\n if (postUpgradeCommandResults !== null) {\n const { updatedArtifacts, artifactErrors } = postUpgradeCommandResults;\n config.updatedArtifacts = updatedArtifacts;\n config.artifactErrors = artifactErrors;\n }\n\n // modifies the file changes in place to allow having a version bump in a packageFile or artifact\n await bumpVersions(config);\n\n removeMeta(['dep']);\n\n if (config.artifactErrors?.length) {\n if (config.releaseTimestamp) {\n logger.debug(`Branch timestamp: ` + config.releaseTimestamp);\n const releaseTimestamp = DateTime.fromISO(config.releaseTimestamp);\n if (releaseTimestamp.plus({ hours: 2 }) < DateTime.local()) {\n logger.debug(\n 'PR is older than 2 hours, raise PR with lock file errors',\n );\n } else if (branchExists) {\n logger.debug(\n 'PR is less than 2 hours old but branchExists so updating anyway',\n );\n } else {\n logger.debug(\n 'PR is less than 2 hours old - raise error instead of PR',\n );\n throw new Error(MANAGER_LOCKFILE_ERROR);\n }\n } else {\n logger.debug('PR has no releaseTimestamp');\n }\n } else if (config.updatedArtifacts?.length && branchPr) {\n // If there are artifacts, no errors, and an existing PR then ensure any artifacts error comment is removed\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure comment removal in PR #${branchPr.number}`,\n );\n } else {\n // Remove artifacts error comment only if this run has successfully updated artifacts\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactErrorTopic,\n });\n\n if (!config.artifactNotices?.length) {\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactNoticeTopic,\n });\n }\n }\n }\n const forcedManually = userRebaseRequested || !branchExists;\n\n config.isConflicted ??=\n branchExists &&\n (await scm.isBranchConflicted(config.baseBranch, config.branchName));\n config.forceCommit = forcedManually || config.isConflicted;\n\n // compile commit message with body, which maybe needs changelogs\n if (config.commitBody) {\n // changelog is on first upgrade\n config.commitMessage = `${config.commitMessage!}\\n\\n${template.compile(\n config.commitBody,\n {\n ...config,\n logJSON: config.upgrades[0].logJSON,\n releases: config.upgrades[0].releases,\n },\n )}`;\n\n logger.trace(`commitMessage: ` + JSON.stringify(config.commitMessage));\n }\n\n commitSha = await commitFilesToBranch(config);\n // Checkout to base branch to ensure that the next branch processing always starts with git being on the baseBranch\n // baseBranch is not checked out at the start of processBranch() due to pull/16246\n await scm.checkoutBranch(config.baseBranch);\n updatesVerified = true;\n }\n\n if (branchPr) {\n const platformPrOptions = getPlatformPrOptions(config);\n if (\n platformPrOptions.usePlatformAutomerge &&\n platform.reattemptPlatformAutomerge\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would reattempt platform automerge for PR #${branchPr.number}`,\n );\n } else {\n await platform.reattemptPlatformAutomerge({\n number: branchPr.number,\n platformPrOptions,\n });\n }\n }\n if (platform.refreshPr) {\n await platform.refreshPr(branchPr.number);\n }\n }\n if (!commitSha && !branchExists) {\n return {\n branchExists,\n result: 'no-work',\n };\n }\n if (commitSha) {\n const action = branchExists ? 'updated' : 'created';\n logger.info({ commitSha }, `Branch ${action}`);\n }\n // Set branch statuses\n await setArtifactErrorStatus(config);\n await setStability(config);\n await setConfidence(config);\n\n // new commit means status check are pretty sure pending but maybe not reported yet\n // if PR has not been created + new commit + prCreation !== immediate skip\n // but do not break when there are artifact errors\n if (\n !branchPr &&\n !config.artifactErrors?.length &&\n !userRebaseRequested &&\n commitSha &&\n config.prCreation !== 'immediate'\n ) {\n logger.debug(`Branch status pending, current sha: ${commitSha}`);\n return {\n branchExists: true,\n updatesVerified,\n result: 'pending',\n commitSha,\n };\n }\n\n // Try to automerge branch and finish if successful, but only if branch already existed before this run\n // skip if we have a non-immediate pr and there is an existing PR,\n // we want to update the PR and skip the Auto merge since status checks aren't done yet\n if (!config.artifactErrors?.length && (!commitSha || config.ignoreTests)) {\n const mergeStatus = await tryBranchAutomerge(config);\n logger.debug(`mergeStatus=${mergeStatus}`);\n if (mergeStatus === 'automerged') {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would delete branch' + config.branchName);\n } else {\n await deleteBranchSilently(config.branchName);\n }\n logger.debug('Branch is automerged - returning');\n return { branchExists: false, result: 'automerged' };\n }\n if (mergeStatus === 'off schedule') {\n if (userRebaseRequested) {\n config.forcePr = true;\n } else {\n logger.debug(\n 'Branch cannot automerge now because automergeSchedule is off schedule - skipping',\n );\n return {\n branchExists,\n result: 'not-scheduled',\n commitSha,\n };\n }\n }\n if (\n mergeStatus === 'stale' &&\n ['conflicted', 'never'].includes(config.rebaseWhen!) &&\n /* v8 ignore next -- needs test */\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel))\n ) {\n logger.warn(\n 'Branch cannot automerge because it is behind base branch and rebaseWhen setting disallows rebasing - raising a PR instead',\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n if (\n mergeStatus === 'automerge aborted - PR exists' ||\n mergeStatus === 'branch status error' ||\n mergeStatus === 'failed'\n ) {\n logger.debug(\n `Branch automerge not possible, mergeStatus:${mergeStatus}`,\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n }\n } catch (err) {\n /* v8 ignore if -- needs test */\n if (err.statusCode === 404) {\n logger.debug({ err }, 'Received a 404 error - aborting run');\n throw new Error(REPOSITORY_CHANGED);\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_RATE_LIMIT_EXCEEDED) {\n logger.debug('Passing rate-limit-exceeded error up');\n throw err;\n }\n if (err.message === REPOSITORY_CHANGED) {\n logger.debug('Passing repository-changed error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message?.startsWith('remote: Invalid username or password')) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n /* v8 ignore if -- needs test */\n if (\n err.message?.startsWith(\n 'ssh_exchange_identification: Connection closed by remote host',\n )\n ) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_BAD_CREDENTIALS) {\n logger.debug('Passing bad-credentials error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_INTEGRATION_UNAUTHORIZED) {\n logger.debug('Passing integration-unauthorized error up');\n throw err;\n }\n if (err.message === MANAGER_LOCKFILE_ERROR) {\n logger.debug('Passing lockfile-error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message?.includes('space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n /* v8 ignore if -- needs test */\n if (err.message === SYSTEM_INSUFFICIENT_DISK_SPACE) {\n logger.debug('Passing disk-space error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message.startsWith('Resource not accessible by integration')) {\n logger.debug('Passing 403 error up');\n throw err;\n }\n /* v8 ignore next -- needs test */\n if (err.message === WORKER_FILE_UPDATE_FAILED) {\n logger.warn('Error updating branch: update failure');\n } else if (err.message.startsWith('bundler-')) {\n // we have already warned inside the bundler artifacts error handling, so just return\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n } else if (err.message?.includes('fatal: Authentication failed')) {\n throw new Error(PLATFORM_AUTHENTICATION_ERROR);\n } else if (err.message?.includes('fatal: bad revision')) {\n logger.debug({ err }, 'Aborting job due to bad revision error');\n throw new Error(REPOSITORY_CHANGED);\n } else if (err.message === CONFIG_VALIDATION) {\n logger.debug('Passing config validation error up');\n throw err;\n } else if (err.message === TEMPORARY_ERROR) {\n logger.debug('Passing TEMPORARY_ERROR error up');\n throw err;\n } else if (!(err instanceof ExternalHostError)) {\n logger.warn({ err }, `Error updating branch`);\n }\n // Don't throw here - we don't want to stop the other renovations\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n }\n try {\n logger.debug('Ensuring PR');\n logger.debug(\n `There are ${config.errors!.length} errors and ${\n config.warnings!.length\n } warnings`,\n );\n const ensurePrResult = await ensurePr(config);\n if (ensurePrResult.type === 'without-pr') {\n const { prBlockedBy } = ensurePrResult;\n branchPr = null;\n if (prBlockedBy === 'RateLimited' && !config.isVulnerabilityAlert) {\n logger.debug('Reached PR limit - skipping PR creation');\n return {\n branchExists,\n prBlockedBy,\n result: 'pr-limit-reached',\n commitSha,\n };\n }\n // TODO: ensurePr should check for automerge itself (#9719)\n if (prBlockedBy === 'NeedsApproval') {\n return {\n branchExists,\n prBlockedBy,\n result: 'needs-pr-approval',\n commitSha,\n };\n }\n if (prBlockedBy === 'AwaitingTests') {\n return {\n branchExists,\n prBlockedBy,\n result: 'pending',\n commitSha,\n };\n }\n if (prBlockedBy === 'BranchAutomerge') {\n return {\n branchExists,\n prBlockedBy,\n result: 'done',\n commitSha,\n };\n }\n if (prBlockedBy === 'Error') {\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n logger.warn({ prBlockedBy }, 'Unknown PrBlockedBy result');\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n if (ensurePrResult.type === 'with-pr') {\n const { pr } = ensurePrResult;\n branchPr = pr;\n if (config.artifactErrors?.length) {\n logger.warn(\n { artifactErrors: config.artifactErrors },\n 'artifactErrors',\n );\n let content = `Renovate failed to update `;\n content +=\n config.artifactErrors.length > 1 ? 'artifacts' : 'an artifact';\n content += ' related to this branch. ';\n content += template.compile(\n config.userStrings!.artifactErrorWarning,\n config,\n );\n content += emojify(\n `\\n\\n:recycle: Renovate will retry this branch, including artifacts, only when one of the following happens:\\n\\n`,\n );\n content +=\n ' - any of the package files in this branch needs updating, or \\n';\n content += ' - the branch becomes conflicted, or\\n';\n content +=\n ' - you click the rebase/retry checkbox if found above, or\\n';\n content +=\n ' - you rename this PR\\'s title to start with \"rebase!\" to trigger it manually';\n content += '\\n\\nThe artifact failure details are included below:\\n\\n';\n // TODO: types (#22198)\n config.artifactErrors.forEach((error) => {\n content += `##### File name: ${error.lockFile!}\\n\\n`;\n content += `\\`\\`\\`\\n${error.stderr!}\\n\\`\\`\\`\\n\\n`;\n });\n content = platform.massageMarkdown(content, config.rebaseLabel);\n if (\n !(\n config.suppressNotifications!.includes('artifactErrors') ||\n config.suppressNotifications!.includes('lockFileErrors')\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure lock file error comment in PR #${pr.number}`,\n );\n } else {\n await ensureComment({\n number: pr.number,\n topic: artifactErrorTopic,\n content,\n });\n }\n }\n } else {\n if (config.artifactNotices?.length) {\n const contentLines: string[] = [];\n for (const notice of config.artifactNotices) {\n contentLines.push(`##### File name: ${notice.file}`);\n contentLines.push(notice.message);\n }\n const content = contentLines.join('\\n\\n');\n await ensureComment({\n number: pr.number,\n topic: artifactNoticeTopic,\n content,\n });\n }\n\n if (config.automerge) {\n logger.debug('PR is configured for automerge');\n // skip automerge if there is a new commit since status checks aren't done yet\n if (config.ignoreTests === true || !commitSha) {\n logger.debug('checking auto-merge');\n const prAutomergeResult = await checkAutoMerge(pr, config);\n if (prAutomergeResult?.automerged) {\n return {\n branchExists,\n result: 'automerged',\n commitSha,\n };\n }\n }\n } else {\n logger.debug('PR is not configured for automerge');\n }\n }\n }\n } catch (err) {\n /* v8 ignore if -- needs test */\n if (\n err instanceof ExternalHostError ||\n [PLATFORM_RATE_LIMIT_EXCEEDED, REPOSITORY_CHANGED].includes(err.message)\n ) {\n logger.debug('Passing PR error up');\n throw err;\n }\n // Otherwise don't throw here - we don't want to stop the other renovations\n logger.error({ err }, `Error ensuring PR`);\n }\n if (!branchExists) {\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'pr-created',\n commitSha,\n };\n }\n return {\n branchExists,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'done',\n commitSha,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/update/branch/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../../config/global';\nimport {\n type MinimumReleaseAgeBehaviour,\n type RenovateConfig,\n type UpdateType,\n} from '../../../../config/types';\nimport {\n CONFIG_VALIDATION,\n MANAGER_LOCKFILE_ERROR,\n PLATFORM_AUTHENTICATION_ERROR,\n PLATFORM_BAD_CREDENTIALS,\n PLATFORM_INTEGRATION_UNAUTHORIZED,\n PLATFORM_RATE_LIMIT_EXCEEDED,\n REPOSITORY_CHANGED,\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n WORKER_FILE_UPDATE_FAILED,\n} from '../../../../constants/error-messages';\nimport { logger, removeMeta } from '../../../../logger';\nimport { getAdditionalFiles } from '../../../../modules/manager/npm/post-update';\nimport type { Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport {\n ensureComment,\n ensureCommentRemoval,\n} from '../../../../modules/platform/comment';\nimport { scm } from '../../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { getElapsedMs } from '../../../../util/date';\nimport { emojify } from '../../../../util/emoji';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { toMs } from '../../../../util/pretty-time';\nimport * as template from '../../../../util/template';\nimport { getCount, isLimitReached } from '../../../global/limits';\nimport type { BranchConfig, BranchResult, PrBlockedBy } from '../../../types';\nimport { embedChangelogs } from '../../changelog';\nimport { ensurePr, getPlatformPrOptions } from '../pr';\nimport { checkAutoMerge } from '../pr/automerge';\nimport { setArtifactErrorStatus } from './artifacts';\nimport { tryBranchAutomerge } from './automerge';\nimport { bumpVersions } from './bump-versions';\nimport { prAlreadyExisted } from './check-existing';\nimport { commitFilesToBranch } from './commit';\nimport executePostUpgradeCommands from './execute-post-upgrade-commands';\nimport { getUpdatedPackageFiles } from './get-updated';\nimport { handleClosedPr, handleModifiedPr } from './handle-existing';\nimport { shouldReuseExistingBranch } from './reuse';\nimport { isScheduledNow } from './schedule';\nimport { setConfidence, setStability } from './status-checks';\n\nasync function rebaseCheck(\n config: RenovateConfig,\n branchPr: Pr,\n): Promise<boolean> {\n const titleRebase = branchPr.title?.startsWith('rebase!');\n if (titleRebase) {\n logger.debug(\n `Manual rebase requested via PR title for #${branchPr.number}`,\n );\n return true;\n }\n const labelRebase = !!branchPr.labels?.includes(config.rebaseLabel!);\n if (labelRebase) {\n logger.debug(\n `Manual rebase requested via PR labels for #${branchPr.number}`,\n );\n /* v8 ignore next -- needs test */\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would delete label ${config.rebaseLabel!} from #${\n branchPr.number\n }`,\n );\n } else {\n await platform.deleteLabel(branchPr.number, config.rebaseLabel!);\n }\n return true;\n }\n const prRebaseChecked = !!branchPr.bodyStruct?.rebaseRequested;\n if (prRebaseChecked) {\n logger.debug(\n `Manual rebase requested via PR checkbox for #${branchPr.number}`,\n );\n return true;\n }\n\n return false;\n}\n\nasync function deleteBranchSilently(branchName: string): Promise<void> {\n try {\n await scm.deleteBranch(branchName);\n } catch (err) {\n /* v8 ignore next -- needs test */\n logger.debug({ branchName, err }, 'Branch auto-remove failed');\n }\n}\n\nfunction userChangedTargetBranch(pr: Pr): boolean {\n const oldTargetBranch = pr.bodyStruct?.debugData?.targetBranch;\n if (oldTargetBranch && pr.targetBranch) {\n return pr.targetBranch !== oldTargetBranch;\n }\n return false;\n}\n\nexport interface ProcessBranchResult {\n branchExists: boolean;\n updatesVerified?: boolean;\n prBlockedBy?: PrBlockedBy;\n prNo?: number;\n result: BranchResult;\n commitSha?: string | null;\n}\n\nexport async function processBranch(\n branchConfig: BranchConfig,\n forceRebase = false,\n): Promise<ProcessBranchResult> {\n let commitSha: string | null = null;\n let config: BranchConfig = { ...branchConfig };\n logger.trace({ config }, 'processBranch()');\n let branchExists = await scm.branchExists(config.branchName);\n const dependencyDashboardCheck =\n config.dependencyDashboardChecks?.[config.branchName];\n let updatesVerified = false;\n if (!branchExists && config.branchPrefix !== config.branchPrefixOld) {\n const branchName = config.branchName.replace(\n config.branchPrefix!,\n config.branchPrefixOld!,\n );\n branchExists = await scm.branchExists(branchName);\n if (branchExists) {\n config.branchName = branchName;\n logger.debug('Found existing branch with branchPrefixOld');\n }\n }\n\n if (\n !branchExists &&\n branchConfig.minimumGroupSize &&\n branchConfig.minimumGroupSize > branchConfig.upgrades.length &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Skipping branch creation as minimumGroupSize: ${branchConfig.minimumGroupSize} is not met`,\n );\n return {\n branchExists: false,\n result: 'minimum-group-size-not-met',\n };\n }\n\n let branchPr = await platform.getBranchPr(\n config.branchName,\n config.baseBranch,\n );\n logger.debug(`branchExists=${branchExists}`);\n logger.debug(`dependencyDashboardCheck=${dependencyDashboardCheck!}`);\n if (branchPr) {\n config.rebaseRequested = await rebaseCheck(config, branchPr);\n logger.debug(`PR rebase requested=${config.rebaseRequested}`);\n }\n const keepUpdatedLabel = config.keepUpdatedLabel;\n const artifactErrorTopic = emojify(':warning: Artifact update problem');\n const artifactNoticeTopic = emojify(\n ':information_source: Artifact update notice',\n );\n try {\n // Check if branch already existed\n const existingPr =\n !branchPr || config.automerge\n ? await prAlreadyExisted(config)\n : undefined;\n if (existingPr?.state === 'merged') {\n logger.debug(`Matching PR #${existingPr.number} was merged previously`);\n if (config.automerge) {\n logger.debug('Disabling automerge because PR was merged previously');\n config.automerge = false;\n config.automergedPreviously = true;\n }\n } else if (!branchPr && existingPr && !dependencyDashboardCheck) {\n logger.debug(\n { prTitle: config.prTitle },\n 'Closed PR already exists. Skipping branch.',\n );\n await handleClosedPr(config, existingPr);\n return {\n branchExists: false,\n prNo: existingPr.number,\n result: 'already-existed',\n };\n }\n if (\n !branchExists &&\n branchConfig.pendingChecks &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because internalChecksFilter was not met`,\n );\n return {\n branchExists: false,\n result: 'pending',\n };\n }\n if (!branchExists) {\n if (config.mode === 'silent' && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because mode=silent`,\n );\n return {\n branchExists,\n result: 'needs-approval',\n };\n }\n if (config.dependencyDashboardApproval && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because dependencyDashboardApproval=true`,\n );\n return {\n branchExists,\n result: 'needs-approval',\n };\n }\n }\n\n logger.debug(\n `Open PR Count: ${getCount('ConcurrentPRs')}, Existing Branch Count: ${getCount('Branches')}, Hourly PR Count: ${getCount('HourlyPRs')}`,\n );\n\n if (\n !branchExists &&\n isLimitReached('Branches', branchConfig) &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached branch limit - skipping branch creation');\n return {\n branchExists,\n result: 'branch-limit-reached',\n };\n }\n if (\n isLimitReached('Commits') &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached commits limit - skipping branch');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'commit-limit-reached',\n };\n }\n if (branchExists) {\n // check if branch is labelled to stop\n config.stopUpdating = branchPr?.labels?.includes(\n config.stopUpdatingLabel!,\n );\n\n const prRebaseChecked = !!branchPr?.bodyStruct?.rebaseRequested;\n\n if (branchExists && !dependencyDashboardCheck && !prRebaseChecked) {\n if (config.stopUpdating) {\n logger.info(\n 'Branch updating is skipped because stopUpdatingLabel is present in config',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n\n if (config.pendingChecks) {\n logger.info(\n 'Branch updating is skipped because internalChecksFilter was not met',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'pending',\n };\n }\n }\n\n logger.debug('Checking if PR has been edited');\n const branchIsModified = await scm.isBranchModified(\n config.branchName,\n config.baseBranch,\n );\n if (branchPr) {\n logger.debug('Found existing branch PR');\n if (branchPr.state !== 'open') {\n logger.debug(\n 'PR has been closed or merged since this run started - aborting',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n if (branchIsModified || userChangedTargetBranch(branchPr)) {\n logger.debug(`PR has been edited, PrNo:${branchPr.number}`);\n await handleModifiedPr(config, branchPr);\n if (!(!!dependencyDashboardCheck || config.rebaseRequested)) {\n return {\n branchExists,\n prNo: branchPr.number,\n result: 'pr-edited',\n };\n }\n }\n } else if (branchIsModified) {\n const oldPr = await platform.findPr({\n branchName: config.branchName,\n state: '!open',\n targetBranch: config.baseBranch,\n });\n if (!oldPr) {\n logger.debug('Branch has been edited but found no PR - skipping');\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n const branchSha = await scm.getBranchCommit(config.branchName);\n const oldPrSha = oldPr?.sha;\n if (!oldPrSha || oldPrSha === branchSha) {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR matching this branch - will override it',\n );\n } else {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR but the SHA is different',\n );\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n }\n }\n\n // Check schedule\n config.isScheduledNow = isScheduledNow(config, 'schedule');\n if (!config.isScheduledNow && !dependencyDashboardCheck) {\n if (!branchExists) {\n logger.debug('Skipping branch creation as not within schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n if (config.updateNotScheduled === false && !config.rebaseRequested) {\n logger.debug('Skipping branch update as not within schedule');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'update-not-scheduled',\n };\n }\n if (\n !branchPr &&\n !(config.automerge && config.automergeType === 'branch') // if branch is configured for automerge there's no need for a PR\n ) {\n logger.debug('Skipping PR creation out of schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n logger.debug(\n 'Branch + PR exists but is not scheduled -- will update if necessary',\n );\n }\n //stability checks\n if (\n config.upgrades.some(\n (upgrade) =>\n isNonEmptyString(upgrade.minimumReleaseAge) ||\n isActiveConfidenceLevel(upgrade.minimumConfidence!),\n )\n ) {\n const depNamesWithoutReleaseTimestamp: Record<\n MinimumReleaseAgeBehaviour,\n {\n depName: string;\n updateType: UpdateType;\n }[]\n > = {\n 'timestamp-required': [],\n 'timestamp-optional': [],\n };\n\n // Only set a stability status check if one or more of the updates contain\n // both a minimumReleaseAge setting and a releaseTimestamp\n config.stabilityStatus = 'green';\n // Default to 'success' but set 'pending' if any update is pending\n for (const upgrade of config.upgrades) {\n const minimumReleaseAgeMs = isNonEmptyString(upgrade.minimumReleaseAge)\n ? coerceNumber(toMs(upgrade.minimumReleaseAge), 0)\n : 0;\n\n if (minimumReleaseAgeMs) {\n const minimumReleaseAgeBehaviour: MinimumReleaseAgeBehaviour =\n upgrade.minimumReleaseAgeBehaviour ?? 'timestamp-required';\n\n // regardless of the value of `minimumReleaseAgeBehaviour`, if there is a timestamp, we will process it according to `minimumReleaseAge`\n if (upgrade.releaseTimestamp) {\n const timeElapsed = getElapsedMs(upgrade.releaseTimestamp);\n if (timeElapsed < minimumReleaseAgeMs) {\n logger.debug(\n {\n depName: upgrade.depName,\n timeElapsed,\n minimumReleaseAge: upgrade.minimumReleaseAge,\n },\n 'Update has not passed minimum release age',\n );\n config.stabilityStatus = 'yellow';\n continue;\n }\n } else {\n // if we're set to `minimumReleaseAgeBehaviour=timestamp-required`, and there isn't a timestamp, always mark the update as pending\n if (minimumReleaseAgeBehaviour === 'timestamp-required') {\n depNamesWithoutReleaseTimestamp['timestamp-required'].push({\n depName: upgrade.depName!,\n updateType: upgrade.updateType!,\n });\n config.stabilityStatus = 'yellow';\n continue;\n } else {\n // if there is no timestamp, and we're running in `optional` mode, we can allow it, but make sure to warn the user\n depNamesWithoutReleaseTimestamp['timestamp-optional'].push({\n depName: upgrade.depName!,\n updateType: upgrade.updateType!,\n });\n }\n }\n }\n const datasource = upgrade.datasource!;\n const depName = upgrade.depName!;\n const packageName = upgrade.packageName!;\n const minimumConfidence = upgrade.minimumConfidence!;\n const updateType = upgrade.updateType!;\n const currentVersion = upgrade.currentVersion!;\n const newVersion = upgrade.newVersion!;\n if (isActiveConfidenceLevel(minimumConfidence)) {\n const confidence =\n (await getMergeConfidenceLevel(\n datasource,\n packageName,\n currentVersion,\n newVersion,\n updateType,\n )) ?? 'neutral';\n if (satisfiesConfidenceLevel(confidence, minimumConfidence)) {\n config.confidenceStatus = 'green';\n } else {\n logger.debug(\n { depName, confidence, minimumConfidence },\n 'Update does not meet minimum confidence scores',\n );\n config.confidenceStatus = 'yellow';\n continue;\n }\n }\n }\n\n if (depNamesWithoutReleaseTimestamp['timestamp-required'].length) {\n logger.once.debug(\n { updates: depNamesWithoutReleaseTimestamp['timestamp-required'] },\n `Marking ${depNamesWithoutReleaseTimestamp['timestamp-required'].length} release(s) as pending, as they do not have a releaseTimestamp and we're running with minimumReleaseAgeBehaviour=timestamp-required`,\n );\n }\n if (depNamesWithoutReleaseTimestamp['timestamp-optional'].length) {\n logger.once.warn(\n \"Some upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding. See debug logs for more information\",\n );\n logger.once.debug(\n { updates: depNamesWithoutReleaseTimestamp['timestamp-optional'] },\n `${depNamesWithoutReleaseTimestamp['timestamp-optional'].length} upgrade(s) did not have a releaseTimestamp, but as we're running with minimumReleaseAgeBehaviour=timestamp-optional, proceeding`,\n );\n }\n\n // Don't create a branch if we know it will be status 'pending'\n if (\n !dependencyDashboardCheck &&\n !branchExists &&\n config.stabilityStatus === 'yellow' &&\n ['not-pending', 'status-success'].includes(config.prCreation!)\n ) {\n logger.debug(\n 'Skipping branch creation due to internal status checks not met',\n );\n return {\n branchExists,\n result: 'pending',\n };\n }\n }\n\n let userRebaseRequested =\n dependencyDashboardCheck === 'rebase' ||\n !!config.dependencyDashboardRebaseAllOpen ||\n !!config.rebaseRequested;\n const userApproveAllPendingPR = !!config.dependencyDashboardAllPending;\n const userOpenAllRateLimtedPR = !!config.dependencyDashboardAllRateLimited;\n const userOpenAllSchedulePendingPR =\n !!config.dependencyDashboardAllAwaitingSchedule;\n\n if (forceRebase) {\n logger.debug('Force rebase because branch needs updating');\n config.reuseExistingBranch = false;\n } else if (userRebaseRequested) {\n logger.debug('User has requested rebase');\n config.reuseExistingBranch = false;\n } else if (dependencyDashboardCheck === 'global-config') {\n logger.debug(`Manual create/rebase requested via checkedBranches`);\n config.reuseExistingBranch = false;\n userRebaseRequested = true;\n } else if (userApproveAllPendingPR) {\n logger.debug(\n 'A user manually approved all pending PRs via the Dependency Dashboard.',\n );\n } else if (userOpenAllRateLimtedPR) {\n logger.debug(\n 'A user manually approved all rate-limited PRs via the Dependency Dashboard.',\n );\n } else if (userOpenAllSchedulePendingPR) {\n logger.debug(\n 'A user manually requested all awaiting schedule PRs via the Dependency Dashboard.',\n );\n } else if (\n branchExists &&\n config.rebaseWhen === 'never' &&\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel)) &&\n !dependencyDashboardCheck\n ) {\n logger.debug('rebaseWhen=never so skipping branch update check');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n // if the base branch has been changed by user in renovate config, rebase onto the new baseBranch\n // we have already confirmed earlier that branch isn't modified, so its safe to use targetBranch here\n else if (\n branchPr?.targetBranch &&\n branchPr.targetBranch !== config.baseBranch\n ) {\n logger.debug(\n 'Base branch changed by user, rebasing the branch onto new base',\n );\n config.reuseExistingBranch = false;\n } else if (config.cacheFingerprintMatch === 'no-match') {\n logger.debug(\n 'Cache fingerprint does not match, cannot reuse existing branch',\n );\n config.reuseExistingBranch = false;\n } else {\n config = await shouldReuseExistingBranch(config);\n }\n // TODO: types (#22198)\n logger.debug(`Using reuseExistingBranch: ${config.reuseExistingBranch!}`);\n if (\n !(\n config.reuseExistingBranch && config.cacheFingerprintMatch === 'matched'\n )\n ) {\n await scm.checkoutBranch(config.baseBranch);\n const res = await getUpdatedPackageFiles(config);\n if (res.artifactErrors && config.artifactErrors) {\n res.artifactErrors = config.artifactErrors.concat(res.artifactErrors);\n }\n config = { ...config, ...res };\n if (config.updatedPackageFiles?.length) {\n logger.debug(\n `Updated ${config.updatedPackageFiles.length} package files`,\n );\n if (config.reuseExistingBranch && !forceRebase) {\n logger.debug(\n 'Existing branch needs updating. Restarting processBranch() with a clean branch',\n );\n return processBranch(branchConfig, true);\n }\n } else {\n logger.debug('No package files need updating');\n }\n const additionalFiles = await getAdditionalFiles(\n config,\n branchConfig.packageFiles!,\n );\n config.artifactErrors = (config.artifactErrors ?? []).concat(\n additionalFiles.artifactErrors,\n );\n config.updatedArtifacts = (config.updatedArtifacts ?? []).concat(\n additionalFiles.updatedArtifacts,\n );\n if (config.updatedArtifacts?.length) {\n logger.debug(\n {\n updatedArtifacts: config.updatedArtifacts.map((f) =>\n f.type === 'deletion' ? `${f.path} (delete)` : f.path,\n ),\n },\n `Updated ${config.updatedArtifacts.length} lock files`,\n );\n if (config.reuseExistingBranch && !forceRebase) {\n logger.debug(\n 'Existing branch needs updating. Restarting processBranch() with a clean branch',\n );\n return processBranch(branchConfig, true);\n }\n } else {\n logger.debug('No updated lock files in branch');\n }\n if (config.fetchChangeLogs === 'branch') {\n await embedChangelogs(config.upgrades);\n }\n\n const postUpgradeCommandResults =\n await executePostUpgradeCommands(config);\n\n if (postUpgradeCommandResults !== null) {\n const { updatedArtifacts, artifactErrors } = postUpgradeCommandResults;\n config.updatedArtifacts = updatedArtifacts;\n config.artifactErrors = artifactErrors;\n }\n\n // modifies the file changes in place to allow having a version bump in a packageFile or artifact\n await bumpVersions(config);\n\n removeMeta(['dep']);\n\n if (config.artifactErrors?.length) {\n if (config.releaseTimestamp) {\n logger.debug(`Branch timestamp: ` + config.releaseTimestamp);\n const releaseTimestamp = DateTime.fromISO(config.releaseTimestamp);\n if (releaseTimestamp.plus({ hours: 2 }) < DateTime.local()) {\n logger.debug(\n 'PR is older than 2 hours, raise PR with lock file errors',\n );\n } else if (branchExists) {\n logger.debug(\n 'PR is less than 2 hours old but branchExists so updating anyway',\n );\n } else {\n logger.debug(\n 'PR is less than 2 hours old - raise error instead of PR',\n );\n throw new Error(MANAGER_LOCKFILE_ERROR);\n }\n } else {\n logger.debug('PR has no releaseTimestamp');\n }\n } else if (config.updatedArtifacts?.length && branchPr) {\n // If there are artifacts, no errors, and an existing PR then ensure any artifacts error comment is removed\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure comment removal in PR #${branchPr.number}`,\n );\n } else {\n // Remove artifacts error comment only if this run has successfully updated artifacts\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactErrorTopic,\n });\n\n if (!config.artifactNotices?.length) {\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactNoticeTopic,\n });\n }\n }\n }\n const forcedManually = userRebaseRequested || !branchExists;\n\n config.isConflicted ??=\n branchExists &&\n (await scm.isBranchConflicted(config.baseBranch, config.branchName));\n config.forceCommit = forcedManually || config.isConflicted;\n\n // compile commit message with body, which maybe needs changelogs\n if (config.commitBody) {\n // changelog is on first upgrade\n config.commitMessage = `${config.commitMessage!}\\n\\n${template.compile(\n config.commitBody,\n {\n ...config,\n logJSON: config.upgrades[0].logJSON,\n releases: config.upgrades[0].releases,\n },\n )}`;\n\n logger.trace(`commitMessage: ` + JSON.stringify(config.commitMessage));\n }\n\n commitSha = await commitFilesToBranch(config);\n // Checkout to base branch to ensure that the next branch processing always starts with git being on the baseBranch\n // baseBranch is not checked out at the start of processBranch() due to pull/16246\n await scm.checkoutBranch(config.baseBranch);\n updatesVerified = true;\n }\n\n if (branchPr) {\n const platformPrOptions = getPlatformPrOptions(config);\n if (\n platformPrOptions.usePlatformAutomerge &&\n platform.reattemptPlatformAutomerge\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would reattempt platform automerge for PR #${branchPr.number}`,\n );\n } else {\n await platform.reattemptPlatformAutomerge({\n number: branchPr.number,\n platformPrOptions,\n });\n }\n }\n if (platform.refreshPr) {\n await platform.refreshPr(branchPr.number);\n }\n }\n if (!commitSha && !branchExists) {\n return {\n branchExists,\n result: 'no-work',\n };\n }\n if (commitSha) {\n const action = branchExists ? 'updated' : 'created';\n logger.info({ commitSha }, `Branch ${action}`);\n }\n // Set branch statuses\n await setArtifactErrorStatus(config);\n await setStability(config);\n await setConfidence(config);\n\n // new commit means status check are pretty sure pending but maybe not reported yet\n // if PR has not been created + new commit + prCreation !== immediate skip\n // but do not break when there are artifact errors\n if (\n !branchPr &&\n !config.artifactErrors?.length &&\n !userRebaseRequested &&\n commitSha &&\n config.prCreation !== 'immediate'\n ) {\n logger.debug(`Branch status pending, current sha: ${commitSha}`);\n return {\n branchExists: true,\n updatesVerified,\n result: 'pending',\n commitSha,\n };\n }\n\n // Try to automerge branch and finish if successful, but only if branch already existed before this run\n // skip if we have a non-immediate pr and there is an existing PR,\n // we want to update the PR and skip the Auto merge since status checks aren't done yet\n if (!config.artifactErrors?.length && (!commitSha || config.ignoreTests)) {\n const mergeStatus = await tryBranchAutomerge(config);\n logger.debug(`mergeStatus=${mergeStatus}`);\n if (mergeStatus === 'automerged') {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would delete branch' + config.branchName);\n } else {\n await deleteBranchSilently(config.branchName);\n }\n logger.debug('Branch is automerged - returning');\n return { branchExists: false, result: 'automerged' };\n }\n if (mergeStatus === 'off schedule') {\n if (userRebaseRequested) {\n config.forcePr = true;\n } else {\n logger.debug(\n 'Branch cannot automerge now because automergeSchedule is off schedule - skipping',\n );\n return {\n branchExists,\n result: 'not-scheduled',\n commitSha,\n };\n }\n }\n if (\n mergeStatus === 'stale' &&\n ['conflicted', 'never'].includes(config.rebaseWhen!) &&\n /* v8 ignore next -- needs test */\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel))\n ) {\n logger.warn(\n 'Branch cannot automerge because it is behind base branch and rebaseWhen setting disallows rebasing - raising a PR instead',\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n if (\n mergeStatus === 'automerge aborted - PR exists' ||\n mergeStatus === 'branch status error' ||\n mergeStatus === 'failed'\n ) {\n logger.debug(\n `Branch automerge not possible, mergeStatus:${mergeStatus}`,\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n }\n } catch (err) {\n /* v8 ignore if -- needs test */\n if (err.statusCode === 404) {\n logger.debug({ err }, 'Received a 404 error - aborting run');\n throw new Error(REPOSITORY_CHANGED);\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_RATE_LIMIT_EXCEEDED) {\n logger.debug('Passing rate-limit-exceeded error up');\n throw err;\n }\n if (err.message === REPOSITORY_CHANGED) {\n logger.debug('Passing repository-changed error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message?.startsWith('remote: Invalid username or password')) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n /* v8 ignore if -- needs test */\n if (\n err.message?.startsWith(\n 'ssh_exchange_identification: Connection closed by remote host',\n )\n ) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_BAD_CREDENTIALS) {\n logger.debug('Passing bad-credentials error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message === PLATFORM_INTEGRATION_UNAUTHORIZED) {\n logger.debug('Passing integration-unauthorized error up');\n throw err;\n }\n if (err.message === MANAGER_LOCKFILE_ERROR) {\n logger.debug('Passing lockfile-error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message?.includes('space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n /* v8 ignore if -- needs test */\n if (err.message === SYSTEM_INSUFFICIENT_DISK_SPACE) {\n logger.debug('Passing disk-space error up');\n throw err;\n }\n /* v8 ignore if -- needs test */\n if (err.message.startsWith('Resource not accessible by integration')) {\n logger.debug('Passing 403 error up');\n throw err;\n }\n /* v8 ignore next -- needs test */\n if (err.message === WORKER_FILE_UPDATE_FAILED) {\n logger.warn('Error updating branch: update failure');\n } else if (err.message.startsWith('bundler-')) {\n // we have already warned inside the bundler artifacts error handling, so just return\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n } else if (err.message?.includes('fatal: Authentication failed')) {\n throw new Error(PLATFORM_AUTHENTICATION_ERROR);\n } else if (err.message?.includes('fatal: bad revision')) {\n logger.debug({ err }, 'Aborting job due to bad revision error');\n throw new Error(REPOSITORY_CHANGED);\n } else if (err.message === CONFIG_VALIDATION) {\n logger.debug('Passing config validation error up');\n throw err;\n } else if (err.message === TEMPORARY_ERROR) {\n logger.debug('Passing TEMPORARY_ERROR error up');\n throw err;\n } else if (!(err instanceof ExternalHostError)) {\n logger.warn({ err }, `Error updating branch`);\n }\n // Don't throw here - we don't want to stop the other renovations\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n }\n try {\n logger.debug('Ensuring PR');\n logger.debug(\n `There are ${config.errors!.length} errors and ${\n config.warnings!.length\n } warnings`,\n );\n const ensurePrResult = await ensurePr(config);\n if (ensurePrResult.type === 'without-pr') {\n const { prBlockedBy } = ensurePrResult;\n branchPr = null;\n if (prBlockedBy === 'RateLimited' && !config.isVulnerabilityAlert) {\n logger.debug('Reached PR limit - skipping PR creation');\n return {\n branchExists,\n prBlockedBy,\n result: 'pr-limit-reached',\n commitSha,\n };\n }\n // TODO: ensurePr should check for automerge itself (#9719)\n if (prBlockedBy === 'NeedsApproval') {\n return {\n branchExists,\n prBlockedBy,\n result: 'needs-pr-approval',\n commitSha,\n };\n }\n if (prBlockedBy === 'AwaitingTests') {\n return {\n branchExists,\n prBlockedBy,\n result: 'pending',\n commitSha,\n };\n }\n if (prBlockedBy === 'BranchAutomerge') {\n return {\n branchExists,\n prBlockedBy,\n result: 'done',\n commitSha,\n };\n }\n if (prBlockedBy === 'Error') {\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n logger.warn({ prBlockedBy }, 'Unknown PrBlockedBy result');\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n if (ensurePrResult.type === 'with-pr') {\n const { pr } = ensurePrResult;\n branchPr = pr;\n if (config.artifactErrors?.length) {\n logger.warn(\n { artifactErrors: config.artifactErrors },\n 'artifactErrors',\n );\n let content = `Renovate failed to update `;\n content +=\n config.artifactErrors.length > 1 ? 'artifacts' : 'an artifact';\n content += ' related to this branch. ';\n content += template.compile(\n config.userStrings!.artifactErrorWarning,\n config,\n );\n content += emojify(\n `\\n\\n:recycle: Renovate will retry this branch, including artifacts, only when one of the following happens:\\n\\n`,\n );\n content +=\n ' - any of the package files in this branch needs updating, or \\n';\n content += ' - the branch becomes conflicted, or\\n';\n content +=\n ' - you click the rebase/retry checkbox if found above, or\\n';\n content +=\n ' - you rename this PR\\'s title to start with \"rebase!\" to trigger it manually';\n content += '\\n\\nThe artifact failure details are included below:\\n\\n';\n // TODO: types (#22198)\n config.artifactErrors.forEach((error) => {\n content += `##### File name: ${error.lockFile!}\\n\\n`;\n content += `\\`\\`\\`\\n${error.stderr!}\\n\\`\\`\\`\\n\\n`;\n });\n content = platform.massageMarkdown(content, config.rebaseLabel);\n if (\n !(\n config.suppressNotifications!.includes('artifactErrors') ||\n config.suppressNotifications!.includes('lockFileErrors')\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure lock file error comment in PR #${pr.number}`,\n );\n } else {\n await ensureComment({\n number: pr.number,\n topic: artifactErrorTopic,\n content,\n });\n }\n }\n } else {\n if (config.artifactNotices?.length) {\n const contentLines: string[] = [];\n for (const notice of config.artifactNotices) {\n contentLines.push(`##### File name: ${notice.file}`);\n contentLines.push(notice.message);\n }\n const content = contentLines.join('\\n\\n');\n await ensureComment({\n number: pr.number,\n topic: artifactNoticeTopic,\n content,\n });\n }\n\n if (config.automerge) {\n logger.debug('PR is configured for automerge');\n // skip automerge if there is a new commit since status checks aren't done yet\n if (config.ignoreTests === true || !commitSha) {\n logger.debug('checking auto-merge');\n const prAutomergeResult = await checkAutoMerge(pr, config);\n if (prAutomergeResult?.automerged) {\n return {\n branchExists,\n result: 'automerged',\n commitSha,\n };\n }\n }\n } else {\n logger.debug('PR is not configured for automerge');\n }\n }\n }\n } catch (err) {\n /* v8 ignore if -- needs test */\n if (\n err instanceof ExternalHostError ||\n [PLATFORM_RATE_LIMIT_EXCEEDED, REPOSITORY_CHANGED].includes(err.message)\n ) {\n logger.debug('Passing PR error up');\n throw err;\n }\n // Otherwise don't throw here - we don't want to stop the other renovations\n logger.error({ err }, `Error ensuring PR`);\n }\n if (!branchExists) {\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'pr-created',\n commitSha,\n };\n }\n return {\n branchExists,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'done',\n commitSha,\n };\n}\n"]}
|
package/dist/workers/types.d.ts
CHANGED
|
@@ -101,6 +101,7 @@ export interface BranchConfig extends BranchUpgradeConfig, LegacyAdminConfig, Pl
|
|
|
101
101
|
dependencyDashboardRebaseAllOpen?: boolean;
|
|
102
102
|
dependencyDashboardAllPending?: boolean;
|
|
103
103
|
dependencyDashboardAllRateLimited?: boolean;
|
|
104
|
+
dependencyDashboardAllAwaitingSchedule?: boolean;
|
|
104
105
|
errors?: ValidationMessage[];
|
|
105
106
|
forcePr?: boolean;
|
|
106
107
|
hasTypes?: boolean;
|
|
@@ -159,6 +160,7 @@ export interface SelectAllConfig extends RenovateConfig {
|
|
|
159
160
|
dependencyDashboardRebaseAllOpen?: boolean;
|
|
160
161
|
dependencyDashboardAllPending?: boolean;
|
|
161
162
|
dependencyDashboardAllRateLimited?: boolean;
|
|
163
|
+
dependencyDashboardAllAwaitingSchedule?: boolean;
|
|
162
164
|
}
|
|
163
165
|
export interface UpgradeFingerprintConfig {
|
|
164
166
|
autoReplaceStringTemplate?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/workers/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Merge } from 'type-fest';\nimport type {\n GroupConfig,\n LegacyAdminConfig,\n RenovateConfig,\n RenovateSharedConfig,\n ValidationMessage,\n} from '../config/types';\nimport type { Release } from '../modules/datasource/types';\nimport type {\n ArtifactError,\n ArtifactNotice,\n ExtractConfig,\n LookupUpdate,\n PackageDependency,\n PackageFile,\n} from '../modules/manager/types';\nimport type { PlatformPrOptions } from '../modules/platform/types';\nimport type { BranchStatus } from '../types';\nimport type { FileChange } from '../util/git/types';\nimport type { MergeConfidence } from '../util/merge-confidence/types';\nimport type { Timestamp } from '../util/timestamp';\nimport type {\n ChangeLogRelease,\n ChangeLogResult,\n} from './repository/update/pr/changelog/types';\n\nexport type ReleaseWithNotes = Release & Partial<ChangeLogRelease>;\n\nexport interface BranchUpgradeConfig\n extends Merge<RenovateConfig, PackageDependency>,\n Partial<LookupUpdate>,\n RenovateSharedConfig {\n artifactErrors?: ArtifactError[];\n artifactNotices?: ArtifactNotice[];\n autoReplaceStringTemplate?: string;\n baseDeps?: PackageDependency[];\n branchName: string;\n commitBody?: string;\n commitMessage?: string;\n commitMessageExtra?: string;\n currentDigest?: string;\n currentDigestShort?: string;\n currentValue?: string;\n\n currentValueTemplate?: string;\n\n dependencyDashboardCategory?: string;\n depIndex?: number;\n depNameLinked?: string;\n depNameSanitized?: string;\n depNameTemplate?: string;\n depTypes?: string[];\n\n displayFrom?: string;\n displayPending?: string;\n displayTo?: string;\n\n excludeCommitPaths?: string[];\n githubName?: string;\n group?: GroupConfig;\n groupName?: string;\n groupSlug?: string;\n\n isDigest?: boolean;\n isGroup?: boolean;\n isLockFileMaintenance?: boolean;\n isMajor?: boolean;\n isMinor?: boolean;\n isPatch?: boolean;\n isRemediation?: boolean;\n\n manager: string;\n newDigestShort?: string;\n newNameLinked?: string;\n\n packageFile?: string;\n packageFileDir?: string;\n parentDir?: string;\n\n lockFile?: string;\n lockFiles?: string[];\n reuseExistingBranch?: boolean;\n prHeader?: string;\n prFooter?: string;\n prBodyNotes?: string[];\n prBodyTemplate?: string;\n prPriority?: number;\n prTitle?: string;\n prTitleStrict?: boolean;\n prettyNewMajor?: string;\n prettyNewVersion?: string;\n references?: string;\n releases?: ReleaseWithNotes[];\n releaseTimestamp?: Timestamp;\n remediationNotPossible?: boolean;\n repoName?: string;\n minimumConfidence?: MergeConfidence | undefined;\n sourceDirectory?: string;\n sourceRepoSlug?: string;\n\n toLowerCase?: boolean;\n\n updatedPackageFiles?: FileChange[];\n updatedArtifacts?: FileChange[];\n\n logJSON?: ChangeLogResult | null;\n\n hasReleaseNotes?: boolean;\n homepage?: string;\n\n changelogContent?: string;\n changelogUrl?: string;\n dependencyUrl?: string;\n minimumGroupSize?: number;\n releaseNotesSummaryTitle?: string;\n sourceUrl?: string;\n sourceRepo?: string;\n sourceRepoOrg?: string;\n sourceRepoName?: string;\n}\n\nexport type PrBlockedBy =\n | 'BranchAutomerge'\n | 'NeedsApproval'\n | 'AwaitingTests'\n | 'RateLimited'\n | 'Error';\n\nexport type BranchResult =\n | 'already-existed'\n | 'automerged'\n | 'done'\n | 'error'\n | 'needs-approval'\n | 'needs-pr-approval'\n | 'not-scheduled'\n | 'no-work'\n | 'pending'\n | 'pr-created'\n | 'pr-edited'\n | 'pr-limit-reached'\n | 'commit-limit-reached'\n | 'branch-limit-reached'\n | 'rebase'\n | 'update-not-scheduled'\n | 'minimum-group-size-not-met';\n\nexport type CacheFingerprintMatchResult =\n | 'matched'\n | 'no-match'\n | 'no-fingerprint';\n\nexport interface BranchConfig\n extends BranchUpgradeConfig,\n LegacyAdminConfig,\n PlatformPrOptions {\n automergeComment?: string;\n automergedPreviously?: boolean;\n baseBranch: string;\n branchAutomergeFailureMessage?: string;\n\n /** ??? never set\n * @deprecated never set\n */\n committedFiles?: unknown;\n confidenceStatus?: BranchStatus;\n\n dependencyDashboardRebaseAllOpen?: boolean;\n dependencyDashboardAllPending?: boolean;\n dependencyDashboardAllRateLimited?: boolean;\n\n errors?: ValidationMessage[];\n forcePr?: boolean;\n hasTypes?: boolean;\n isModified?: boolean;\n isScheduledNow?: boolean;\n dependencyDashboardChecks?: Record<string, string>;\n dependencyDashboardPrApproval?: boolean;\n releaseTimestamp?: Timestamp;\n forceCommit?: boolean;\n rebaseRequested?: boolean;\n result?: BranchResult;\n upgrades: BranchUpgradeConfig[];\n packageFiles?: Record<string, PackageFile[]>;\n prBlockedBy?: PrBlockedBy;\n prNo?: number;\n stabilityStatus?: BranchStatus;\n stopUpdating?: boolean;\n isConflicted?: boolean;\n commitFingerprint?: string;\n cacheFingerprintMatch?: CacheFingerprintMatchResult;\n prNotPendingHours?: number;\n}\n\nexport interface BranchMetadata {\n branchName: string;\n branchSha?: string | null;\n baseBranch?: string;\n baseBranchSha?: string | null;\n automerge?: boolean;\n isModified?: boolean;\n isPristine?: boolean;\n}\n\nexport interface BaseBranchMetadata {\n branchName: string;\n sha: string;\n}\n\nexport interface BranchSummary {\n baseBranches: BaseBranchMetadata[];\n branches: BranchMetadata[];\n cacheModified?: boolean;\n defaultBranch?: string;\n inactiveBranches: string[];\n}\n\nexport interface WorkerExtractConfig extends ExtractConfig {\n manager: string;\n fileList: string[];\n managerFilePatterns?: string[];\n includePaths?: string[];\n ignorePaths?: string[];\n enabled?: boolean;\n}\n\nexport interface DepWarnings {\n warnings: string[];\n warningFiles: string[];\n}\n\nexport interface SelectAllConfig extends RenovateConfig {\n dependencyDashboardRebaseAllOpen?: boolean;\n dependencyDashboardAllPending?: boolean;\n dependencyDashboardAllRateLimited?: boolean;\n}\n\nexport interface UpgradeFingerprintConfig {\n autoReplaceStringTemplate?: string;\n currentDigest?: string;\n currentValue?: string;\n currentVersion?: string;\n datasource?: string;\n depName?: string;\n lockFile?: string;\n lockedVersion?: string;\n manager?: string | null;\n newName?: string;\n newDigest?: string;\n newValue?: string;\n newVersion?: string;\n packageFile?: string;\n replaceString?: string;\n}\n\nexport interface ExtractResult {\n extractionFingerprints: Record<string, string | undefined>;\n packageFiles: Record<string, PackageFile[]>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/workers/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Merge } from 'type-fest';\nimport type {\n GroupConfig,\n LegacyAdminConfig,\n RenovateConfig,\n RenovateSharedConfig,\n ValidationMessage,\n} from '../config/types';\nimport type { Release } from '../modules/datasource/types';\nimport type {\n ArtifactError,\n ArtifactNotice,\n ExtractConfig,\n LookupUpdate,\n PackageDependency,\n PackageFile,\n} from '../modules/manager/types';\nimport type { PlatformPrOptions } from '../modules/platform/types';\nimport type { BranchStatus } from '../types';\nimport type { FileChange } from '../util/git/types';\nimport type { MergeConfidence } from '../util/merge-confidence/types';\nimport type { Timestamp } from '../util/timestamp';\nimport type {\n ChangeLogRelease,\n ChangeLogResult,\n} from './repository/update/pr/changelog/types';\n\nexport type ReleaseWithNotes = Release & Partial<ChangeLogRelease>;\n\nexport interface BranchUpgradeConfig\n extends Merge<RenovateConfig, PackageDependency>,\n Partial<LookupUpdate>,\n RenovateSharedConfig {\n artifactErrors?: ArtifactError[];\n artifactNotices?: ArtifactNotice[];\n autoReplaceStringTemplate?: string;\n baseDeps?: PackageDependency[];\n branchName: string;\n commitBody?: string;\n commitMessage?: string;\n commitMessageExtra?: string;\n currentDigest?: string;\n currentDigestShort?: string;\n currentValue?: string;\n\n currentValueTemplate?: string;\n\n dependencyDashboardCategory?: string;\n depIndex?: number;\n depNameLinked?: string;\n depNameSanitized?: string;\n depNameTemplate?: string;\n depTypes?: string[];\n\n displayFrom?: string;\n displayPending?: string;\n displayTo?: string;\n\n excludeCommitPaths?: string[];\n githubName?: string;\n group?: GroupConfig;\n groupName?: string;\n groupSlug?: string;\n\n isDigest?: boolean;\n isGroup?: boolean;\n isLockFileMaintenance?: boolean;\n isMajor?: boolean;\n isMinor?: boolean;\n isPatch?: boolean;\n isRemediation?: boolean;\n\n manager: string;\n newDigestShort?: string;\n newNameLinked?: string;\n\n packageFile?: string;\n packageFileDir?: string;\n parentDir?: string;\n\n lockFile?: string;\n lockFiles?: string[];\n reuseExistingBranch?: boolean;\n prHeader?: string;\n prFooter?: string;\n prBodyNotes?: string[];\n prBodyTemplate?: string;\n prPriority?: number;\n prTitle?: string;\n prTitleStrict?: boolean;\n prettyNewMajor?: string;\n prettyNewVersion?: string;\n references?: string;\n releases?: ReleaseWithNotes[];\n releaseTimestamp?: Timestamp;\n remediationNotPossible?: boolean;\n repoName?: string;\n minimumConfidence?: MergeConfidence | undefined;\n sourceDirectory?: string;\n sourceRepoSlug?: string;\n\n toLowerCase?: boolean;\n\n updatedPackageFiles?: FileChange[];\n updatedArtifacts?: FileChange[];\n\n logJSON?: ChangeLogResult | null;\n\n hasReleaseNotes?: boolean;\n homepage?: string;\n\n changelogContent?: string;\n changelogUrl?: string;\n dependencyUrl?: string;\n minimumGroupSize?: number;\n releaseNotesSummaryTitle?: string;\n sourceUrl?: string;\n sourceRepo?: string;\n sourceRepoOrg?: string;\n sourceRepoName?: string;\n}\n\nexport type PrBlockedBy =\n | 'BranchAutomerge'\n | 'NeedsApproval'\n | 'AwaitingTests'\n | 'RateLimited'\n | 'Error';\n\nexport type BranchResult =\n | 'already-existed'\n | 'automerged'\n | 'done'\n | 'error'\n | 'needs-approval'\n | 'needs-pr-approval'\n | 'not-scheduled'\n | 'no-work'\n | 'pending'\n | 'pr-created'\n | 'pr-edited'\n | 'pr-limit-reached'\n | 'commit-limit-reached'\n | 'branch-limit-reached'\n | 'rebase'\n | 'update-not-scheduled'\n | 'minimum-group-size-not-met';\n\nexport type CacheFingerprintMatchResult =\n | 'matched'\n | 'no-match'\n | 'no-fingerprint';\n\nexport interface BranchConfig\n extends BranchUpgradeConfig,\n LegacyAdminConfig,\n PlatformPrOptions {\n automergeComment?: string;\n automergedPreviously?: boolean;\n baseBranch: string;\n branchAutomergeFailureMessage?: string;\n\n /** ??? never set\n * @deprecated never set\n */\n committedFiles?: unknown;\n confidenceStatus?: BranchStatus;\n\n dependencyDashboardRebaseAllOpen?: boolean;\n dependencyDashboardAllPending?: boolean;\n dependencyDashboardAllRateLimited?: boolean;\n dependencyDashboardAllAwaitingSchedule?: boolean;\n\n errors?: ValidationMessage[];\n forcePr?: boolean;\n hasTypes?: boolean;\n isModified?: boolean;\n isScheduledNow?: boolean;\n dependencyDashboardChecks?: Record<string, string>;\n dependencyDashboardPrApproval?: boolean;\n releaseTimestamp?: Timestamp;\n forceCommit?: boolean;\n rebaseRequested?: boolean;\n result?: BranchResult;\n upgrades: BranchUpgradeConfig[];\n packageFiles?: Record<string, PackageFile[]>;\n prBlockedBy?: PrBlockedBy;\n prNo?: number;\n stabilityStatus?: BranchStatus;\n stopUpdating?: boolean;\n isConflicted?: boolean;\n commitFingerprint?: string;\n cacheFingerprintMatch?: CacheFingerprintMatchResult;\n prNotPendingHours?: number;\n}\n\nexport interface BranchMetadata {\n branchName: string;\n branchSha?: string | null;\n baseBranch?: string;\n baseBranchSha?: string | null;\n automerge?: boolean;\n isModified?: boolean;\n isPristine?: boolean;\n}\n\nexport interface BaseBranchMetadata {\n branchName: string;\n sha: string;\n}\n\nexport interface BranchSummary {\n baseBranches: BaseBranchMetadata[];\n branches: BranchMetadata[];\n cacheModified?: boolean;\n defaultBranch?: string;\n inactiveBranches: string[];\n}\n\nexport interface WorkerExtractConfig extends ExtractConfig {\n manager: string;\n fileList: string[];\n managerFilePatterns?: string[];\n includePaths?: string[];\n ignorePaths?: string[];\n enabled?: boolean;\n}\n\nexport interface DepWarnings {\n warnings: string[];\n warningFiles: string[];\n}\n\nexport interface SelectAllConfig extends RenovateConfig {\n dependencyDashboardRebaseAllOpen?: boolean;\n dependencyDashboardAllPending?: boolean;\n dependencyDashboardAllRateLimited?: boolean;\n dependencyDashboardAllAwaitingSchedule?: boolean;\n}\n\nexport interface UpgradeFingerprintConfig {\n autoReplaceStringTemplate?: string;\n currentDigest?: string;\n currentValue?: string;\n currentVersion?: string;\n datasource?: string;\n depName?: string;\n lockFile?: string;\n lockedVersion?: string;\n manager?: string | null;\n newName?: string;\n newDigest?: string;\n newValue?: string;\n newVersion?: string;\n packageFile?: string;\n replaceString?: string;\n}\n\nexport interface ExtractResult {\n extractionFingerprints: Record<string, string | undefined>;\n packageFiles: Record<string, PackageFile[]>;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "renovate",
|
|
3
3
|
"description": "Automated dependency updates. Flexible so you don't need to be.",
|
|
4
|
-
"version": "42.
|
|
4
|
+
"version": "42.58.0",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"bin": {
|
|
7
7
|
"renovate": "dist/renovate.js",
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
"@types/mdast": "4.0.4",
|
|
253
253
|
"@types/moo": "0.5.10",
|
|
254
254
|
"@types/ms": "2.1.0",
|
|
255
|
-
"@types/node": "22.19.
|
|
255
|
+
"@types/node": "22.19.2",
|
|
256
256
|
"@types/parse-link-header": "2.0.3",
|
|
257
257
|
"@types/punycode": "2.1.4",
|
|
258
258
|
"@types/sax": "1.2.7",
|
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
"tsx": "4.21.0",
|
|
298
298
|
"type-fest": "5.3.1",
|
|
299
299
|
"typescript": "5.9.3",
|
|
300
|
-
"typescript-eslint": "8.
|
|
300
|
+
"typescript-eslint": "8.49.0",
|
|
301
301
|
"unified": "11.0.5",
|
|
302
302
|
"vite": "npm:rolldown-vite@7.2.9",
|
|
303
303
|
"vite-tsconfig-paths": "5.1.4",
|
package/renovate-schema.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"title": "JSON schema for Renovate 42.
|
|
2
|
+
"title": "JSON schema for Renovate 42.58.0 config files (https://renovatebot.com/)",
|
|
3
3
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
-
"x-renovate-version": "42.
|
|
4
|
+
"x-renovate-version": "42.58.0",
|
|
5
5
|
"allowComments": true,
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|