renovate 44.111.4 → 44.111.5

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.
@@ -17,6 +17,10 @@ function generateCommitFingerprintConfig(branch) {
17
17
  return branch.upgrades.map((upgrade) => {
18
18
  const filteredUpgrade = {};
19
19
  for (const field of upgradeFingerprintFields) filteredUpgrade[field] = upgrade[field];
20
+ if (upgrade.postUpgradeTasks) filteredUpgrade.postUpgradeTasks = {
21
+ commands: upgrade.postUpgradeTasks.commands,
22
+ fileFilters: upgrade.postUpgradeTasks.fileFilters
23
+ };
20
24
  return filteredUpgrade;
21
25
  });
22
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","names":[],"sources":["../../../../lib/workers/repository/process/write.ts"],"sourcesContent":["import {\n ATTR_VCS_REF_BASE_TYPE,\n ATTR_VCS_REF_HEAD_NAME,\n ATTR_VCS_REF_TYPE,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport { isString } from '@sindresorhus/is';\nimport type { RenovateConfig } from '../../../config/types.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { addMeta, logger, removeMeta } from '../../../logger/index.ts';\nimport { hashMap } from '../../../modules/manager/index.ts';\nimport { scm } from '../../../modules/platform/scm.ts';\nimport { getCache } from '../../../util/cache/repository/index.ts';\nimport type { BranchCache } from '../../../util/cache/repository/types.ts';\nimport { fingerprint } from '../../../util/fingerprint.ts';\nimport { setBranchNewCommit } from '../../../util/git/set-branch-commit.ts';\nimport { incCountValue, setCount } from '../../global/limits.ts';\nimport type {\n BranchConfig,\n CacheFingerprintMatchResult,\n UpgradeFingerprintConfig,\n} from '../../types.ts';\nimport { processBranch } from '../update/branch/index.ts';\nimport { upgradeFingerprintFields } from './fingerprint-fields.ts';\nimport {\n getCommitsHourlyCount,\n getConcurrentBranchesCount,\n getConcurrentPrsCount,\n getPrHourlyCount,\n} from './limits.ts';\n\nexport type WriteUpdateResult = 'done' | 'automerged';\n\nexport function generateCommitFingerprintConfig(\n branch: BranchConfig,\n): UpgradeFingerprintConfig[] {\n const res = branch.upgrades.map((upgrade) => {\n const filteredUpgrade = {} as UpgradeFingerprintConfig;\n for (const field of upgradeFingerprintFields) {\n // TS cannot narrow the type here\n filteredUpgrade[field] = upgrade[field]!;\n }\n return filteredUpgrade;\n });\n\n return res;\n}\n\nexport function compareCacheFingerprint(\n branchState: BranchCache,\n commitFingerprint: string,\n): CacheFingerprintMatchResult {\n if (!branchState.commitFingerprint) {\n logger.trace('branch.isUpToDate(): no fingerprint');\n return 'no-fingerprint';\n }\n\n if (commitFingerprint !== branchState.commitFingerprint) {\n logger.debug('branch.isUpToDate(): needs recalculation');\n return 'no-match';\n }\n\n logger.debug('branch.isUpToDate(): using cached result \"true\"');\n return 'matched';\n}\n\nexport async function syncBranchState(\n branchName: string,\n baseBranch: string,\n): Promise<BranchCache> {\n logger.debug('syncBranchState()');\n const branchSha = await scm.getBranchCommit(branchName);\n const baseBranchSha = await scm.getBranchCommit(baseBranch);\n\n const cache = getCache();\n cache.branches ??= [];\n const { branches: cachedBranches } = cache;\n let branchState = cachedBranches.find((br) => br.branchName === branchName);\n if (!branchState) {\n logger.debug(\n 'syncBranchState(): Branch cache not found, creating minimal branchState',\n );\n // create a minimal branch state\n branchState = {\n branchName,\n sha: branchSha,\n baseBranch,\n baseBranchSha,\n } as BranchCache;\n cachedBranches.push(branchState);\n }\n\n // if base branch name has changed invalidate cached isModified state\n if (baseBranch !== branchState.baseBranch) {\n logger.debug('syncBranchState(): update baseBranch name');\n branchState.baseBranch = baseBranch;\n delete branchState.isModified;\n branchState.pristine = false;\n }\n\n // if base branch sha has changed invalidate cached isBehindBase state\n if (baseBranchSha !== branchState.baseBranchSha) {\n logger.debug('syncBranchState(): update baseBranchSha');\n delete branchState.isBehindBase;\n delete branchState.isConflicted;\n\n // update cached branchSha\n branchState.baseBranchSha = baseBranchSha;\n branchState.pristine = false;\n }\n\n // if branch sha has changed invalidate all cached states\n if (branchSha !== branchState.sha) {\n logger.debug('syncBranchState(): update branchSha');\n delete branchState.isBehindBase;\n delete branchState.isConflicted;\n delete branchState.isModified;\n delete branchState.commitFingerprint;\n\n // Update commit timestamp when SHA changes\n const commitDate = await scm.getBranchUpdateDate(branchName);\n if (commitDate) {\n branchState.commitTimestamp = commitDate.toISO()!;\n }\n\n // update cached branchSha\n branchState.sha = branchSha;\n branchState.pristine = false;\n }\n\n return branchState;\n}\n\nexport async function writeUpdates(\n config: RenovateConfig,\n allBranches: BranchConfig[],\n): Promise<WriteUpdateResult> {\n const branches = allBranches;\n logger.debug(\n `Processing ${branches.length} branch${\n branches.length === 1 ? '' : 'es'\n }: ${branches\n .map((b) => b.branchName)\n .sort()\n .join(', ')}`,\n );\n\n // vulnerability alerts are counted separately so that they get their own limit budget\n const vulnerabilityBranches = branches.filter((b) => b.isVulnerabilityAlert);\n const otherBranches = branches.filter((b) => !b.isVulnerabilityAlert);\n\n setCount('ConcurrentPRs', await getConcurrentPrsCount(config, otherBranches));\n setCount(\n 'VulnerabilityConcurrentPRs',\n await getConcurrentPrsCount(config, vulnerabilityBranches),\n );\n\n setCount('Branches', await getConcurrentBranchesCount(otherBranches));\n setCount(\n 'VulnerabilityBranches',\n await getConcurrentBranchesCount(vulnerabilityBranches),\n );\n\n const prsThisHourCount = await getPrHourlyCount(config);\n setCount('HourlyPRs', prsThisHourCount);\n\n const commitsThisHourCount = await getCommitsHourlyCount(branches);\n setCount('HourlyCommits', commitsThisHourCount);\n\n for (const branch of branches) {\n const { baseBranch, branchName } = branch;\n const res = await instrument(\n branchName,\n async () => {\n const meta: Record<string, string> = { branch: branchName };\n if (config.baseBranchPatterns?.length && baseBranch) {\n meta.baseBranch = baseBranch;\n }\n addMeta(meta);\n const branchExisted = await scm.branchExists(branchName);\n const branchState = await syncBranchState(branchName, baseBranch);\n\n const managers = [\n ...new Set(\n branch.upgrades\n .map((upgrade) => hashMap.get(upgrade.manager) ?? upgrade.manager)\n .filter(isString),\n ),\n ].sort();\n const commitFingerprint = fingerprint({\n commitFingerprintConfig: generateCommitFingerprintConfig(branch),\n managers,\n });\n branch.cacheFingerprintMatch = compareCacheFingerprint(\n branchState,\n commitFingerprint,\n );\n\n const res = await processBranch(branch);\n branch.prBlockedBy = res?.prBlockedBy;\n branch.prNo = res?.prNo;\n branch.result = res?.result;\n branch.commitFingerprint = res?.updatesVerified\n ? commitFingerprint\n : branchState.commitFingerprint;\n\n if (res?.commitSha) {\n // Get the commit timestamp for the new commit\n const commitDate = await scm.getBranchUpdateDate(branchName);\n setBranchNewCommit(branchName, baseBranch, res.commitSha, commitDate);\n }\n if (\n branch.result === 'automerged' &&\n branch.automergeType !== 'pr-comment'\n ) {\n // Stop processing other branches because base branch has been changed\n return 'automerged';\n }\n if (!branchExisted && (await scm.branchExists(branch.branchName))) {\n incCountValue(\n branch.isVulnerabilityAlert ? 'VulnerabilityBranches' : 'Branches',\n );\n }\n },\n {\n attributes: {\n [ATTR_VCS_REF_TYPE]: 'branch',\n [ATTR_VCS_REF_BASE_TYPE]: 'branch',\n [ATTR_VCS_REF_HEAD_NAME]: branchName,\n },\n },\n );\n\n if (res !== undefined) {\n return res;\n }\n }\n removeMeta(['branch', 'baseBranch']);\n return 'done';\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgCA,SAAgB,gCACd,QAC4B;CAU5B,OATY,OAAO,SAAS,KAAK,YAAY;EAC3C,MAAM,kBAAkB,CAAC;EACzB,KAAK,MAAM,SAAS,0BAElB,gBAAgB,SAAS,QAAQ;EAEnC,OAAO;CACT,CAES;AACX;AAEA,SAAgB,wBACd,aACA,mBAC6B;CAC7B,IAAI,CAAC,YAAY,mBAAmB;EAClC,OAAO,MAAM,qCAAqC;EAClD,OAAO;CACT;CAEA,IAAI,sBAAsB,YAAY,mBAAmB;EACvD,OAAO,MAAM,0CAA0C;EACvD,OAAO;CACT;CAEA,OAAO,MAAM,mDAAiD;CAC9D,OAAO;AACT;AAEA,eAAsB,gBACpB,YACA,YACsB;CACtB,OAAO,MAAM,mBAAmB;CAChC,MAAM,YAAY,MAAM,IAAI,gBAAgB,UAAU;CACtD,MAAM,gBAAgB,MAAM,IAAI,gBAAgB,UAAU;CAE1D,MAAM,QAAQ,SAAS;CACvB,MAAM,aAAa,CAAC;CACpB,MAAM,EAAE,UAAU,mBAAmB;CACrC,IAAI,cAAc,eAAe,MAAM,OAAO,GAAG,eAAe,UAAU;CAC1E,IAAI,CAAC,aAAa;EAChB,OAAO,MACL,yEACF;EAEA,cAAc;GACZ;GACA,KAAK;GACL;GACA;EACF;EACA,eAAe,KAAK,WAAW;CACjC;CAGA,IAAI,eAAe,YAAY,YAAY;EACzC,OAAO,MAAM,2CAA2C;EACxD,YAAY,aAAa;EACzB,OAAO,YAAY;EACnB,YAAY,WAAW;CACzB;CAGA,IAAI,kBAAkB,YAAY,eAAe;EAC/C,OAAO,MAAM,yCAAyC;EACtD,OAAO,YAAY;EACnB,OAAO,YAAY;EAGnB,YAAY,gBAAgB;EAC5B,YAAY,WAAW;CACzB;CAGA,IAAI,cAAc,YAAY,KAAK;EACjC,OAAO,MAAM,qCAAqC;EAClD,OAAO,YAAY;EACnB,OAAO,YAAY;EACnB,OAAO,YAAY;EACnB,OAAO,YAAY;EAGnB,MAAM,aAAa,MAAM,IAAI,oBAAoB,UAAU;EAC3D,IAAI,YACF,YAAY,kBAAkB,WAAW,MAAM;EAIjD,YAAY,MAAM;EAClB,YAAY,WAAW;CACzB;CAEA,OAAO;AACT;AAEA,eAAsB,aACpB,QACA,aAC4B;CAC5B,MAAM,WAAW;CACjB,OAAO,MACL,cAAc,SAAS,OAAO,SAC5B,SAAS,WAAW,IAAI,KAAK,KAC9B,IAAI,SACF,KAAK,MAAM,EAAE,UAAU,CAAC,CACxB,KAAK,CAAC,CACN,KAAK,IAAI,GACd;CAGA,MAAM,wBAAwB,SAAS,QAAQ,MAAM,EAAE,oBAAoB;CAC3E,MAAM,gBAAgB,SAAS,QAAQ,MAAM,CAAC,EAAE,oBAAoB;CAEpE,SAAS,iBAAiB,MAAM,sBAAsB,QAAQ,aAAa,CAAC;CAC5E,SACE,8BACA,MAAM,sBAAsB,QAAQ,qBAAqB,CAC3D;CAEA,SAAS,YAAY,MAAM,2BAA2B,aAAa,CAAC;CACpE,SACE,yBACA,MAAM,2BAA2B,qBAAqB,CACxD;CAEA,MAAM,mBAAmB,MAAM,iBAAiB,MAAM;CACtD,SAAS,aAAa,gBAAgB;CAEtC,MAAM,uBAAuB,MAAM,sBAAsB,QAAQ;CACjE,SAAS,iBAAiB,oBAAoB;CAE9C,KAAK,MAAM,UAAU,UAAU;EAC7B,MAAM,EAAE,YAAY,eAAe;EACnC,MAAM,MAAM,MAAM,WAChB,YACA,YAAY;GACV,MAAM,OAA+B,EAAE,QAAQ,WAAW;GAC1D,IAAI,OAAO,oBAAoB,UAAU,YACvC,KAAK,aAAa;GAEpB,QAAQ,IAAI;GACZ,MAAM,gBAAgB,MAAM,IAAI,aAAa,UAAU;GACvD,MAAM,cAAc,MAAM,gBAAgB,YAAY,UAAU;GAEhE,MAAM,WAAW,CACf,GAAG,IAAI,IACL,OAAO,SACJ,KAAK,YAAY,QAAQ,IAAI,QAAQ,OAAO,KAAK,QAAQ,OAAO,CAAC,CACjE,OAAO,QAAQ,CACpB,CACF,CAAC,CAAC,KAAK;GACP,MAAM,oBAAoB,YAAY;IACpC,yBAAyB,gCAAgC,MAAM;IAC/D;GACF,CAAC;GACD,OAAO,wBAAwB,wBAC7B,aACA,iBACF;GAEA,MAAM,MAAM,MAAM,cAAc,MAAM;GACtC,OAAO,cAAc,KAAK;GAC1B,OAAO,OAAO,KAAK;GACnB,OAAO,SAAS,KAAK;GACrB,OAAO,oBAAoB,KAAK,kBAC5B,oBACA,YAAY;GAEhB,IAAI,KAAK,WAAW;IAElB,MAAM,aAAa,MAAM,IAAI,oBAAoB,UAAU;IAC3D,mBAAmB,YAAY,YAAY,IAAI,WAAW,UAAU;GACtE;GACA,IACE,OAAO,WAAW,gBAClB,OAAO,kBAAkB,cAGzB,OAAO;GAET,IAAI,CAAC,iBAAkB,MAAM,IAAI,aAAa,OAAO,UAAU,GAC7D,cACE,OAAO,uBAAuB,0BAA0B,UAC1D;EAEJ,GACA,EACE,YAAY;IACT,oBAAoB;IACpB,yBAAyB;IACzB,yBAAyB;EAC5B,EACF,CACF;EAEA,IAAI,QAAQ,KAAA,GACV,OAAO;CAEX;CACA,WAAW,CAAC,UAAU,YAAY,CAAC;CACnC,OAAO;AACT"}
1
+ {"version":3,"file":"write.js","names":[],"sources":["../../../../lib/workers/repository/process/write.ts"],"sourcesContent":["import {\n ATTR_VCS_REF_BASE_TYPE,\n ATTR_VCS_REF_HEAD_NAME,\n ATTR_VCS_REF_TYPE,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport { isString } from '@sindresorhus/is';\nimport type { RenovateConfig } from '../../../config/types.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { addMeta, logger, removeMeta } from '../../../logger/index.ts';\nimport { hashMap } from '../../../modules/manager/index.ts';\nimport { scm } from '../../../modules/platform/scm.ts';\nimport { getCache } from '../../../util/cache/repository/index.ts';\nimport type { BranchCache } from '../../../util/cache/repository/types.ts';\nimport { fingerprint } from '../../../util/fingerprint.ts';\nimport { setBranchNewCommit } from '../../../util/git/set-branch-commit.ts';\nimport { incCountValue, setCount } from '../../global/limits.ts';\nimport type {\n BranchConfig,\n CacheFingerprintMatchResult,\n UpgradeFingerprintConfig,\n} from '../../types.ts';\nimport { processBranch } from '../update/branch/index.ts';\nimport { upgradeFingerprintFields } from './fingerprint-fields.ts';\nimport {\n getCommitsHourlyCount,\n getConcurrentBranchesCount,\n getConcurrentPrsCount,\n getPrHourlyCount,\n} from './limits.ts';\n\nexport type WriteUpdateResult = 'done' | 'automerged';\n\nexport function generateCommitFingerprintConfig(\n branch: BranchConfig,\n): UpgradeFingerprintConfig[] {\n const res = branch.upgrades.map((upgrade) => {\n const filteredUpgrade = {} as UpgradeFingerprintConfig;\n for (const field of upgradeFingerprintFields) {\n // TS cannot narrow the type here\n filteredUpgrade[field] = upgrade[field]!;\n }\n if (upgrade.postUpgradeTasks) {\n filteredUpgrade.postUpgradeTasks = {\n commands: upgrade.postUpgradeTasks.commands,\n fileFilters: upgrade.postUpgradeTasks.fileFilters,\n };\n }\n return filteredUpgrade;\n });\n\n return res;\n}\n\nexport function compareCacheFingerprint(\n branchState: BranchCache,\n commitFingerprint: string,\n): CacheFingerprintMatchResult {\n if (!branchState.commitFingerprint) {\n logger.trace('branch.isUpToDate(): no fingerprint');\n return 'no-fingerprint';\n }\n\n if (commitFingerprint !== branchState.commitFingerprint) {\n logger.debug('branch.isUpToDate(): needs recalculation');\n return 'no-match';\n }\n\n logger.debug('branch.isUpToDate(): using cached result \"true\"');\n return 'matched';\n}\n\nexport async function syncBranchState(\n branchName: string,\n baseBranch: string,\n): Promise<BranchCache> {\n logger.debug('syncBranchState()');\n const branchSha = await scm.getBranchCommit(branchName);\n const baseBranchSha = await scm.getBranchCommit(baseBranch);\n\n const cache = getCache();\n cache.branches ??= [];\n const { branches: cachedBranches } = cache;\n let branchState = cachedBranches.find((br) => br.branchName === branchName);\n if (!branchState) {\n logger.debug(\n 'syncBranchState(): Branch cache not found, creating minimal branchState',\n );\n // create a minimal branch state\n branchState = {\n branchName,\n sha: branchSha,\n baseBranch,\n baseBranchSha,\n } as BranchCache;\n cachedBranches.push(branchState);\n }\n\n // if base branch name has changed invalidate cached isModified state\n if (baseBranch !== branchState.baseBranch) {\n logger.debug('syncBranchState(): update baseBranch name');\n branchState.baseBranch = baseBranch;\n delete branchState.isModified;\n branchState.pristine = false;\n }\n\n // if base branch sha has changed invalidate cached isBehindBase state\n if (baseBranchSha !== branchState.baseBranchSha) {\n logger.debug('syncBranchState(): update baseBranchSha');\n delete branchState.isBehindBase;\n delete branchState.isConflicted;\n\n // update cached branchSha\n branchState.baseBranchSha = baseBranchSha;\n branchState.pristine = false;\n }\n\n // if branch sha has changed invalidate all cached states\n if (branchSha !== branchState.sha) {\n logger.debug('syncBranchState(): update branchSha');\n delete branchState.isBehindBase;\n delete branchState.isConflicted;\n delete branchState.isModified;\n delete branchState.commitFingerprint;\n\n // Update commit timestamp when SHA changes\n const commitDate = await scm.getBranchUpdateDate(branchName);\n if (commitDate) {\n branchState.commitTimestamp = commitDate.toISO()!;\n }\n\n // update cached branchSha\n branchState.sha = branchSha;\n branchState.pristine = false;\n }\n\n return branchState;\n}\n\nexport async function writeUpdates(\n config: RenovateConfig,\n allBranches: BranchConfig[],\n): Promise<WriteUpdateResult> {\n const branches = allBranches;\n logger.debug(\n `Processing ${branches.length} branch${\n branches.length === 1 ? '' : 'es'\n }: ${branches\n .map((b) => b.branchName)\n .sort()\n .join(', ')}`,\n );\n\n // vulnerability alerts are counted separately so that they get their own limit budget\n const vulnerabilityBranches = branches.filter((b) => b.isVulnerabilityAlert);\n const otherBranches = branches.filter((b) => !b.isVulnerabilityAlert);\n\n setCount('ConcurrentPRs', await getConcurrentPrsCount(config, otherBranches));\n setCount(\n 'VulnerabilityConcurrentPRs',\n await getConcurrentPrsCount(config, vulnerabilityBranches),\n );\n\n setCount('Branches', await getConcurrentBranchesCount(otherBranches));\n setCount(\n 'VulnerabilityBranches',\n await getConcurrentBranchesCount(vulnerabilityBranches),\n );\n\n const prsThisHourCount = await getPrHourlyCount(config);\n setCount('HourlyPRs', prsThisHourCount);\n\n const commitsThisHourCount = await getCommitsHourlyCount(branches);\n setCount('HourlyCommits', commitsThisHourCount);\n\n for (const branch of branches) {\n const { baseBranch, branchName } = branch;\n const res = await instrument(\n branchName,\n async () => {\n const meta: Record<string, string> = { branch: branchName };\n if (config.baseBranchPatterns?.length && baseBranch) {\n meta.baseBranch = baseBranch;\n }\n addMeta(meta);\n const branchExisted = await scm.branchExists(branchName);\n const branchState = await syncBranchState(branchName, baseBranch);\n\n const managers = [\n ...new Set(\n branch.upgrades\n .map((upgrade) => hashMap.get(upgrade.manager) ?? upgrade.manager)\n .filter(isString),\n ),\n ].sort();\n const commitFingerprint = fingerprint({\n commitFingerprintConfig: generateCommitFingerprintConfig(branch),\n managers,\n });\n branch.cacheFingerprintMatch = compareCacheFingerprint(\n branchState,\n commitFingerprint,\n );\n\n const res = await processBranch(branch);\n branch.prBlockedBy = res?.prBlockedBy;\n branch.prNo = res?.prNo;\n branch.result = res?.result;\n branch.commitFingerprint = res?.updatesVerified\n ? commitFingerprint\n : branchState.commitFingerprint;\n\n if (res?.commitSha) {\n // Get the commit timestamp for the new commit\n const commitDate = await scm.getBranchUpdateDate(branchName);\n setBranchNewCommit(branchName, baseBranch, res.commitSha, commitDate);\n }\n if (\n branch.result === 'automerged' &&\n branch.automergeType !== 'pr-comment'\n ) {\n // Stop processing other branches because base branch has been changed\n return 'automerged';\n }\n if (!branchExisted && (await scm.branchExists(branch.branchName))) {\n incCountValue(\n branch.isVulnerabilityAlert ? 'VulnerabilityBranches' : 'Branches',\n );\n }\n },\n {\n attributes: {\n [ATTR_VCS_REF_TYPE]: 'branch',\n [ATTR_VCS_REF_BASE_TYPE]: 'branch',\n [ATTR_VCS_REF_HEAD_NAME]: branchName,\n },\n },\n );\n\n if (res !== undefined) {\n return res;\n }\n }\n removeMeta(['branch', 'baseBranch']);\n return 'done';\n}\n"],"mappings":"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"}
@@ -212,6 +212,10 @@ interface UpgradeFingerprintConfig {
212
212
  newVersion?: string;
213
213
  packageFile?: string;
214
214
  replaceString?: string;
215
+ postUpgradeTasks?: {
216
+ commands?: string[];
217
+ fileFilters?: string[];
218
+ };
215
219
  }
216
220
  interface ExtractResult {
217
221
  extractionFingerprints: Record<string, string | undefined>;
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": "44.111.4",
4
+ "version": "44.111.5",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 44.111.4 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 44.111.5 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "44.111.4",
5
+ "x-renovate-version": "44.111.5",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "definitions": {