renovate 42.90.0 → 42.90.1

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.
@@ -1,4 +1,4 @@
1
- export declare function getElapsedDays(timestamp: string): number;
1
+ export declare function getElapsedDays(timestamp: string, floor?: boolean): number;
2
2
  export declare function getElapsedMinutes(date: Date): number;
3
3
  export declare function getElapsedHours(date: Date | string): number;
4
4
  export declare function getElapsedMs(timestamp: string): number;
package/dist/util/date.js CHANGED
@@ -6,12 +6,14 @@ exports.getElapsedHours = getElapsedHours;
6
6
  exports.getElapsedMs = getElapsedMs;
7
7
  const luxon_1 = require("luxon");
8
8
  const ONE_MINUTE_MS = 60 * 1000;
9
- function getElapsedDays(timestamp) {
9
+ function getElapsedDays(timestamp, floor = true) {
10
10
  const currentVersionTimestampDate = luxon_1.DateTime.fromISO(timestamp);
11
11
  const now = luxon_1.DateTime.now();
12
12
  const diffInDays = now.diff(currentVersionTimestampDate, 'days').as('days');
13
- const ageInDays = Math.floor(diffInDays);
14
- return ageInDays;
13
+ if (floor) {
14
+ return Math.floor(diffInDays);
15
+ }
16
+ return diffInDays;
15
17
  }
16
18
  function getElapsedMinutes(date) {
17
19
  return Math.floor((new Date().getTime() - date.getTime()) / ONE_MINUTE_MS);
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../lib/util/date.ts"],"names":[],"mappings":";;AAIA,wCAMC;AAED,8CAEC;AAED,0CAYC;AAED,oCAEC;AAhCD,iCAAiC;AAEjC,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhC,SAAgB,cAAc,CAAC,SAAiB;IAC9C,MAAM,2BAA2B,GAAG,gBAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAU;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,eAAe,CAAC,IAAmB;IACjD,MAAM,QAAQ,GACZ,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,gBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,CAAC,CAAC,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY,CAAC,SAAiB;IAC5C,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9D,CAAC","sourcesContent":["import { DateTime } from 'luxon';\n\nconst ONE_MINUTE_MS = 60 * 1000;\n\nexport function getElapsedDays(timestamp: string): number {\n const currentVersionTimestampDate = DateTime.fromISO(timestamp);\n const now = DateTime.now();\n const diffInDays = now.diff(currentVersionTimestampDate, 'days').as('days');\n const ageInDays = Math.floor(diffInDays);\n return ageInDays;\n}\n\nexport function getElapsedMinutes(date: Date): number {\n return Math.floor((new Date().getTime() - date.getTime()) / ONE_MINUTE_MS);\n}\n\nexport function getElapsedHours(date: Date | string): number {\n const pastDate =\n typeof date === 'string'\n ? DateTime.fromISO(date)\n : DateTime.fromJSDate(date);\n\n if (!pastDate.isValid) {\n return 0;\n }\n\n const diff = DateTime.now().diff(pastDate, 'hours');\n return Math.floor(diff.hours);\n}\n\nexport function getElapsedMs(timestamp: string): number {\n return new Date().getTime() - new Date(timestamp).getTime();\n}\n"]}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../lib/util/date.ts"],"names":[],"mappings":";;AAIA,wCASC;AAED,8CAEC;AAED,0CAYC;AAED,oCAEC;AAnCD,iCAAiC;AAEjC,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhC,SAAgB,cAAc,CAAC,SAAiB,EAAE,KAAK,GAAG,IAAI;IAC5D,MAAM,2BAA2B,GAAG,gBAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC5E,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAU;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,eAAe,CAAC,IAAmB;IACjD,MAAM,QAAQ,GACZ,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,gBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,CAAC,CAAC,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY,CAAC,SAAiB;IAC5C,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9D,CAAC","sourcesContent":["import { DateTime } from 'luxon';\n\nconst ONE_MINUTE_MS = 60 * 1000;\n\nexport function getElapsedDays(timestamp: string, floor = true): number {\n const currentVersionTimestampDate = DateTime.fromISO(timestamp);\n const now = DateTime.now();\n const diffInDays = now.diff(currentVersionTimestampDate, 'days').as('days');\n if (floor) {\n return Math.floor(diffInDays);\n }\n\n return diffInDays;\n}\n\nexport function getElapsedMinutes(date: Date): number {\n return Math.floor((new Date().getTime() - date.getTime()) / ONE_MINUTE_MS);\n}\n\nexport function getElapsedHours(date: Date | string): number {\n const pastDate =\n typeof date === 'string'\n ? DateTime.fromISO(date)\n : DateTime.fromJSDate(date);\n\n if (!pastDate.isValid) {\n return 0;\n }\n\n const diff = DateTime.now().diff(pastDate, 'hours');\n return Math.floor(diff.hours);\n}\n\nexport function getElapsedMs(timestamp: string): number {\n return new Date().getTime() - new Date(timestamp).getTime();\n}\n"]}
@@ -138,14 +138,14 @@ async function isOnboarded(config) {
138
138
  }
139
139
  logger_1.logger.debug('Repo is not onboarded and no merged PRs exist');
140
140
  if (!config.suppressNotifications.includes('onboardingClose')) {
141
- const ageOfOnboardingPr = (0, date_1.getElapsedDays)(closedOnboardingPr.createdAt);
141
+ const ageOfOnboardingPr = (0, date_1.getElapsedDays)(closedOnboardingPr.createdAt, false);
142
142
  const onboardingAutoCloseAge = global_1.GlobalConfig.get('onboardingAutoCloseAge');
143
143
  if (onboardingAutoCloseAge) {
144
144
  logger_1.logger.debug({
145
145
  onboardingAutoCloseAge,
146
146
  createdAt: closedOnboardingPr.createdAt,
147
147
  ageOfOnboardingPr,
148
- }, `Determining that the closed onboarding PR was created at \`${closedOnboardingPr.createdAt}\` was created ${ageOfOnboardingPr} days ago`);
148
+ }, `Determining that the closed onboarding PR was created at \`${closedOnboardingPr.createdAt}\` was created ${ageOfOnboardingPr.toFixed(2)} days ago`);
149
149
  }
150
150
  // if we have onboardingAutoCloseAge, and it hasn't yet passed onboardingAutoCloseAge, add a comment
151
151
  // if it /has/ passed, we'll comment this appropriately in `ensureOnboardingPr`, so there doesn't need to be a comment here
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/onboarding/branch/check.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyObject } from '@sindresorhus/is';\nimport { getConfigFileNames } from '../../../../config/app-strings';\nimport { GlobalConfig } from '../../../../config/global';\nimport type { RenovateConfig } from '../../../../config/types';\nimport {\n REPOSITORY_CLOSED_ONBOARDING,\n REPOSITORY_NO_CONFIG,\n} from '../../../../constants/error-messages';\nimport { logger } from '../../../../logger';\nimport type { Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport { ensureComment } from '../../../../modules/platform/comment';\nimport { scm } from '../../../../modules/platform/scm';\nimport { getCache } from '../../../../util/cache/repository';\nimport { getElapsedDays } from '../../../../util/date';\nimport { readLocalFile } from '../../../../util/fs';\nimport { getBranchCommit } from '../../../../util/git';\nimport { getSemanticCommitPrTitle } from '../common';\n\nasync function findFile(fileName: string): Promise<boolean> {\n logger.debug(`findFile(${fileName})`);\n const fileList = await scm.getFileList();\n return fileList.includes(fileName);\n}\n\nasync function configFileExists(): Promise<boolean> {\n for (const fileName of getConfigFileNames()) {\n if (fileName !== 'package.json' && (await findFile(fileName))) {\n logger.debug(`Config file exists, fileName: ${fileName}`);\n return true;\n }\n }\n return false;\n}\n\nasync function packageJsonConfigExists(): Promise<boolean> {\n try {\n // TODO #22198\n const pJson = JSON.parse((await readLocalFile('package.json', 'utf8'))!);\n if (pJson.renovate) {\n return true;\n }\n } catch {\n // Do nothing\n }\n return false;\n}\n\nasync function closedPrExists(config: RenovateConfig): Promise<Pr | null> {\n return (\n (await platform.findPr({\n branchName: config.onboardingBranch!,\n prTitle: config.onboardingPrTitle,\n state: '!open',\n targetBranch: config.baseBranch,\n })) ??\n (await platform.findPr({\n branchName: config.onboardingBranch!,\n prTitle: getSemanticCommitPrTitle(config),\n state: '!open',\n targetBranch: config.baseBranch,\n }))\n );\n}\n\nexport async function isOnboarded(config: RenovateConfig): Promise<boolean> {\n logger.debug('isOnboarded()');\n const title = `Action required: Add a Renovate config`;\n\n // Repo is onboarded if in silent mode\n if (config.mode === 'silent') {\n logger.debug('Silent mode enabled so repo is considered onboarded');\n return true;\n }\n\n // Repo is onboarded if global config is bypassing onboarding and does not require a\n // configuration file.\n // The repo is considered \"not onboarded\" if:\n // - An onboarding cache is present, and\n // - The current default branch SHA matches the default SHA found in the cache\n // Also if there is a closed pr skip using cache as it is outdated\n if (config.requireConfig === 'optional' && config.onboarding === false) {\n // Return early and avoid checking for config files\n return true;\n }\n if (config.requireConfig === 'ignored') {\n logger.debug('Config file will be ignored');\n return true;\n }\n\n const closedOnboardingPr = await closedPrExists(config);\n const cache = getCache();\n const onboardingBranchCache = cache?.onboardingBranchCache;\n // if onboarding cache is present and base branch has not been updated; branch is not onboarded\n // if closed pr exists then presence of onboarding cache doesn't matter as we need to skip onboarding\n if (\n config.onboarding &&\n !closedOnboardingPr &&\n isNonEmptyObject(onboardingBranchCache) &&\n onboardingBranchCache.defaultBranchSha ===\n getBranchCommit(config.defaultBranch!)\n ) {\n logger.debug('Onboarding cache is valid. Repo is not onboarded');\n return false;\n }\n\n // when bot is ran is fork mode ... do not fetch file using api call instead use the git.fileList so we get sync first and get the latest config\n // prevents https://github.com/renovatebot/renovate/discussions/37328\n if (cache.configFileName && !config.forkToken) {\n logger.debug('Checking cached config file name');\n try {\n const configFileContent = await platform.getJsonFile(\n cache.configFileName,\n );\n if (configFileContent) {\n if (\n cache.configFileName !== 'package.json' ||\n configFileContent.renovate\n ) {\n logger.debug('Existing config file confirmed');\n logger.debug(\n { fileName: cache.configFileName, config: configFileContent },\n 'Repository config',\n );\n return true;\n }\n }\n } catch {\n // probably file doesn't exist\n }\n logger.debug('Existing config file no longer exists');\n delete cache.configFileName;\n }\n if (await configFileExists()) {\n await platform.ensureIssueClosing(title);\n return true;\n }\n logger.debug('config file not found');\n if (await packageJsonConfigExists()) {\n logger.debug('package.json contains config');\n await platform.ensureIssueClosing(title);\n return true;\n }\n\n // If onboarding has been disabled and config files are required then the\n // repository has not been onboarded yet\n if (config.requireConfig === 'required' && config.onboarding === false) {\n throw new Error(REPOSITORY_NO_CONFIG);\n }\n\n if (!closedOnboardingPr) {\n logger.debug('Found no closed onboarding PR');\n return false;\n }\n logger.debug('Found closed onboarding PR');\n if (config.requireConfig === 'optional') {\n logger.debug('Config not mandatory so repo is considered onboarded');\n return true;\n }\n logger.debug('Repo is not onboarded and no merged PRs exist');\n if (!config.suppressNotifications!.includes('onboardingClose')) {\n const ageOfOnboardingPr = getElapsedDays(closedOnboardingPr.createdAt!);\n const onboardingAutoCloseAge = GlobalConfig.get('onboardingAutoCloseAge');\n if (onboardingAutoCloseAge) {\n logger.debug(\n {\n onboardingAutoCloseAge,\n createdAt: closedOnboardingPr.createdAt!,\n ageOfOnboardingPr,\n },\n `Determining that the closed onboarding PR was created at \\`${closedOnboardingPr.createdAt!}\\` was created ${ageOfOnboardingPr} days ago`,\n );\n }\n // if we have onboardingAutoCloseAge, and it hasn't yet passed onboardingAutoCloseAge, add a comment\n // if it /has/ passed, we'll comment this appropriately in `ensureOnboardingPr`, so there doesn't need to be a comment here\n if (\n !onboardingAutoCloseAge ||\n ageOfOnboardingPr <= onboardingAutoCloseAge\n ) {\n // ensure PR comment\n await ensureComment({\n number: closedOnboardingPr.number,\n topic: `Renovate is disabled`,\n content: `Renovate is disabled because there is no Renovate configuration file. To enable Renovate, you can either (a) change this PR's title to get a new onboarding PR, and merge the new onboarding PR, or (b) create a Renovate config file, and commit that file to your base branch.`,\n });\n }\n }\n throw new Error(REPOSITORY_CLOSED_ONBOARDING);\n}\n\nexport async function getOnboardingPr(\n config: RenovateConfig,\n): Promise<Pr | null> {\n return await platform.getBranchPr(\n config.onboardingBranch!,\n config.baseBranch,\n );\n}\n"]}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/onboarding/branch/check.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyObject } from '@sindresorhus/is';\nimport { getConfigFileNames } from '../../../../config/app-strings';\nimport { GlobalConfig } from '../../../../config/global';\nimport type { RenovateConfig } from '../../../../config/types';\nimport {\n REPOSITORY_CLOSED_ONBOARDING,\n REPOSITORY_NO_CONFIG,\n} from '../../../../constants/error-messages';\nimport { logger } from '../../../../logger';\nimport type { Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport { ensureComment } from '../../../../modules/platform/comment';\nimport { scm } from '../../../../modules/platform/scm';\nimport { getCache } from '../../../../util/cache/repository';\nimport { getElapsedDays } from '../../../../util/date';\nimport { readLocalFile } from '../../../../util/fs';\nimport { getBranchCommit } from '../../../../util/git';\nimport { getSemanticCommitPrTitle } from '../common';\n\nasync function findFile(fileName: string): Promise<boolean> {\n logger.debug(`findFile(${fileName})`);\n const fileList = await scm.getFileList();\n return fileList.includes(fileName);\n}\n\nasync function configFileExists(): Promise<boolean> {\n for (const fileName of getConfigFileNames()) {\n if (fileName !== 'package.json' && (await findFile(fileName))) {\n logger.debug(`Config file exists, fileName: ${fileName}`);\n return true;\n }\n }\n return false;\n}\n\nasync function packageJsonConfigExists(): Promise<boolean> {\n try {\n // TODO #22198\n const pJson = JSON.parse((await readLocalFile('package.json', 'utf8'))!);\n if (pJson.renovate) {\n return true;\n }\n } catch {\n // Do nothing\n }\n return false;\n}\n\nasync function closedPrExists(config: RenovateConfig): Promise<Pr | null> {\n return (\n (await platform.findPr({\n branchName: config.onboardingBranch!,\n prTitle: config.onboardingPrTitle,\n state: '!open',\n targetBranch: config.baseBranch,\n })) ??\n (await platform.findPr({\n branchName: config.onboardingBranch!,\n prTitle: getSemanticCommitPrTitle(config),\n state: '!open',\n targetBranch: config.baseBranch,\n }))\n );\n}\n\nexport async function isOnboarded(config: RenovateConfig): Promise<boolean> {\n logger.debug('isOnboarded()');\n const title = `Action required: Add a Renovate config`;\n\n // Repo is onboarded if in silent mode\n if (config.mode === 'silent') {\n logger.debug('Silent mode enabled so repo is considered onboarded');\n return true;\n }\n\n // Repo is onboarded if global config is bypassing onboarding and does not require a\n // configuration file.\n // The repo is considered \"not onboarded\" if:\n // - An onboarding cache is present, and\n // - The current default branch SHA matches the default SHA found in the cache\n // Also if there is a closed pr skip using cache as it is outdated\n if (config.requireConfig === 'optional' && config.onboarding === false) {\n // Return early and avoid checking for config files\n return true;\n }\n if (config.requireConfig === 'ignored') {\n logger.debug('Config file will be ignored');\n return true;\n }\n\n const closedOnboardingPr = await closedPrExists(config);\n const cache = getCache();\n const onboardingBranchCache = cache?.onboardingBranchCache;\n // if onboarding cache is present and base branch has not been updated; branch is not onboarded\n // if closed pr exists then presence of onboarding cache doesn't matter as we need to skip onboarding\n if (\n config.onboarding &&\n !closedOnboardingPr &&\n isNonEmptyObject(onboardingBranchCache) &&\n onboardingBranchCache.defaultBranchSha ===\n getBranchCommit(config.defaultBranch!)\n ) {\n logger.debug('Onboarding cache is valid. Repo is not onboarded');\n return false;\n }\n\n // when bot is ran is fork mode ... do not fetch file using api call instead use the git.fileList so we get sync first and get the latest config\n // prevents https://github.com/renovatebot/renovate/discussions/37328\n if (cache.configFileName && !config.forkToken) {\n logger.debug('Checking cached config file name');\n try {\n const configFileContent = await platform.getJsonFile(\n cache.configFileName,\n );\n if (configFileContent) {\n if (\n cache.configFileName !== 'package.json' ||\n configFileContent.renovate\n ) {\n logger.debug('Existing config file confirmed');\n logger.debug(\n { fileName: cache.configFileName, config: configFileContent },\n 'Repository config',\n );\n return true;\n }\n }\n } catch {\n // probably file doesn't exist\n }\n logger.debug('Existing config file no longer exists');\n delete cache.configFileName;\n }\n if (await configFileExists()) {\n await platform.ensureIssueClosing(title);\n return true;\n }\n logger.debug('config file not found');\n if (await packageJsonConfigExists()) {\n logger.debug('package.json contains config');\n await platform.ensureIssueClosing(title);\n return true;\n }\n\n // If onboarding has been disabled and config files are required then the\n // repository has not been onboarded yet\n if (config.requireConfig === 'required' && config.onboarding === false) {\n throw new Error(REPOSITORY_NO_CONFIG);\n }\n\n if (!closedOnboardingPr) {\n logger.debug('Found no closed onboarding PR');\n return false;\n }\n logger.debug('Found closed onboarding PR');\n if (config.requireConfig === 'optional') {\n logger.debug('Config not mandatory so repo is considered onboarded');\n return true;\n }\n logger.debug('Repo is not onboarded and no merged PRs exist');\n if (!config.suppressNotifications!.includes('onboardingClose')) {\n const ageOfOnboardingPr = getElapsedDays(\n closedOnboardingPr.createdAt!,\n false,\n );\n const onboardingAutoCloseAge = GlobalConfig.get('onboardingAutoCloseAge');\n if (onboardingAutoCloseAge) {\n logger.debug(\n {\n onboardingAutoCloseAge,\n createdAt: closedOnboardingPr.createdAt!,\n ageOfOnboardingPr,\n },\n `Determining that the closed onboarding PR was created at \\`${closedOnboardingPr.createdAt!}\\` was created ${ageOfOnboardingPr.toFixed(2)} days ago`,\n );\n }\n // if we have onboardingAutoCloseAge, and it hasn't yet passed onboardingAutoCloseAge, add a comment\n // if it /has/ passed, we'll comment this appropriately in `ensureOnboardingPr`, so there doesn't need to be a comment here\n if (\n !onboardingAutoCloseAge ||\n ageOfOnboardingPr <= onboardingAutoCloseAge\n ) {\n // ensure PR comment\n await ensureComment({\n number: closedOnboardingPr.number,\n topic: `Renovate is disabled`,\n content: `Renovate is disabled because there is no Renovate configuration file. To enable Renovate, you can either (a) change this PR's title to get a new onboarding PR, and merge the new onboarding PR, or (b) create a Renovate config file, and commit that file to your base branch.`,\n });\n }\n }\n throw new Error(REPOSITORY_CLOSED_ONBOARDING);\n}\n\nexport async function getOnboardingPr(\n config: RenovateConfig,\n): Promise<Pr | null> {\n return await platform.getBranchPr(\n config.onboardingBranch!,\n config.baseBranch,\n );\n}\n"]}
@@ -35,14 +35,14 @@ async function ensureOnboardingPr(config, packageFiles, branches) {
35
35
  const existingPr = await platform_1.platform.getBranchPr(config.onboardingBranch, config.defaultBranch);
36
36
  if (existingPr) {
37
37
  // check if the existing pr crosses the onboarding autoclose age
38
- const ageOfOnboardingPr = (0, date_1.getElapsedDays)(existingPr.createdAt);
38
+ const ageOfOnboardingPr = (0, date_1.getElapsedDays)(existingPr.createdAt, false);
39
39
  const onboardingAutoCloseAge = global_1.GlobalConfig.get('onboardingAutoCloseAge');
40
40
  if (onboardingAutoCloseAge) {
41
41
  logger_1.logger.debug({
42
42
  onboardingAutoCloseAge,
43
43
  createdAt: existingPr.createdAt,
44
44
  ageOfOnboardingPr,
45
- }, `Determining that the onboarding PR created at \`${existingPr.createdAt}\` was created ${ageOfOnboardingPr} days ago`);
45
+ }, `Determining that the onboarding PR created at \`${existingPr.createdAt}\` was created ${ageOfOnboardingPr.toFixed(2)} days ago`);
46
46
  }
47
47
  if ((0, is_1.isNumber)(onboardingAutoCloseAge) &&
48
48
  ageOfOnboardingPr > onboardingAutoCloseAge) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/onboarding/pr/index.ts"],"names":[],"mappings":";;AAiCA,gDAmOC;;AApQD,yCAAsD;AACtD,sDAAyD;AAEzD,+CAA4C;AAE5C,2DAAwD;AACxD,kEAAqE;AACrE,kEAAgE;AAChE,0DAAuD;AACvD,gDAAuD;AACvD,kDAAiD;AACjD,8CAA+C;AAC/C,gDAAiD;AACjD,4EAAsD;AAEtD,2DAI+B;AAC/B,wCAAuD;AACvD,mDAAuD;AACvD,+DAA+D;AAC/D,+EAAiF;AACjF,sCAImB;AACnB,+CAAkD;AAClD,6DAAqD;AACrD,uCAA8C;AAEvC,KAAK,UAAU,kBAAkB,CACtC,MAAsB,EACtB,YAAkD,EAClD,QAAwB;IAExB,IACE,MAAM,CAAC,eAAe,KAAK,IAAI;QAC/B,wBAAe,CAAC,oBAAoB;QACpC,CAAC,MAAM,CAAC,wBAAwB,IAAI,CAAC,wBAAe,CAAC,iBAAiB,CAAC,EACvE,CAAC;QACD,OAAO;IACT,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrC,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzB,cAAc;IACd,MAAM,UAAU,GAAG,MAAM,mBAAQ,CAAC,WAAW,CAC3C,MAAM,CAAC,gBAAiB,EACxB,MAAM,CAAC,aAAa,CACrB,CAAC;IACF,IAAI,UAAU,EAAE,CAAC;QACf,gEAAgE;QAChE,MAAM,iBAAiB,GAAG,IAAA,qBAAc,EAAC,UAAU,CAAC,SAAU,CAAC,CAAC;QAChE,MAAM,sBAAsB,GAAG,qBAAY,CAAC,GAAG,CAAC,wBAAwB,CAAE,CAAC;QAC3E,IAAI,sBAAsB,EAAE,CAAC;YAC3B,eAAM,CAAC,KAAK,CACV;gBACE,sBAAsB;gBACtB,SAAS,EAAE,UAAU,CAAC,SAAU;gBAChC,iBAAiB;aAClB,EACD,mDAAmD,UAAU,CAAC,SAAU,kBAAkB,iBAAiB,WAAW,CACvH,CAAC;QACJ,CAAC;QACD,IACE,IAAA,aAAQ,EAAC,sBAAsB,CAAC;YAChC,iBAAiB,GAAG,sBAAsB,EAC1C,CAAC;YACD,eAAe;YACf,MAAM,mBAAQ,CAAC,QAAQ,CAAC;gBACtB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,UAAU,CAAC,KAAK;aAC1B,CAAC,CAAC;YACH,iBAAiB;YACjB,MAAM,IAAA,uBAAa,EAAC;gBAClB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,KAAK,EAAE,sBAAsB;gBAC7B,OAAO,EAAE,kFAAkF,sBAAsB,mNAAmN;aACrU,CAAC,CAAC;YACH,eAAM,CAAC,KAAK,CACV;gBACE,iBAAiB;gBACjB,sBAAsB;aACvB,EACD,uGAAuG,sBAAsB,OAAO,CACrI,CAAC;YACF,OAAO;QACT,CAAC;QACD,yCAAyC;QACzC,IACE,MAAM,IAAA,sDAA4B,EAChC,MAAM,CAAC,aAAc,EACrB,MAAM,CAAC,gBAAiB,CACzB,EACD,CAAC;YACD,IAAI,qBAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,eAAM,CAAC,IAAI,CACT,oFAAoF,CACrF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,IAAA,uBAAa,EAAC;gBAClB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAE,IAAA,eAAO,EACd,6LAA6L,CAC9L;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC;IACD,MAAM,2BAA2B,GAC/B,MAAM,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC1E,eAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAClD,IAAI,UAAU,GAAG,yBACf,MAAM,CAAC,YAAa,CAAC,QACvB,mHAAmH,CAAC;IACpH,UAAU;QACR,MAAM,CAAC,aAAa,KAAK,UAAU;YACjC,CAAC,CAAC,IAAA,eAAO,EACL,2IAA2I,CAC5I;YACH,CAAC,CAAC,IAAA,eAAO,EACL,uIAAuI,CACxI,CAAC;IACR,cAAc;IACd,UAAU,IAAI,IAAA,eAAO,EACnB;;;;;;;;;;;;wDAaE,MAAM,CAAC,YAAa,CAAC,aACvB;2EAEE,MAAM,CAAC,YAAa,CAAC,IACvB;CACH,CACE,CAAC;IACF,UAAU,IAAI,cAAc,CAAC;IAC7B,IAAI,MAAM,GAAG,UAAU,CAAC;IACxB,IAAI,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QACxD,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,KAAK,GAAG,KAAK,CAAC,MAAM,CAClB,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,GAAG,CAAC,CACtE,CAAC;QACJ,CAAC;QACD,MAAM;YACJ,MAAM,CAAC,OAAO,CACZ,mBAAmB,EACnB,gCAAgC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACpD,GAAG,IAAI,CAAC;IACb,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,qBAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,uBAAuB;QACvB,eAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,gBAAiB,EAAE,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,IAAA,kCAAa,EAAC,MAAM,EAAE,YAAa,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,gBAAgB,EAChB,IAAA,6BAAW,EAAC,MAAM,CAAC,GAAG,IAAA,4CAA0B,EAAC,YAAa,EAAE,MAAM,CAAC,CACxE,CAAC;IACF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,IAAA,2BAAS,EAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAA,+BAAiB,EAAC,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,IAAA,2BAAiB,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7E,IAAI,IAAA,aAAQ,EAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,MAAM,EAAE,CAAC;IACvE,CAAC;IACD,IAAI,IAAA,aAAQ,EAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,YAAY,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;IAC9E,CAAC;IAED,MAAM,IAAI,2BAA2B,CAAC;IAEtC,eAAM,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;IAEnC,MAAM,GAAG,mBAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAE9D,IAAI,UAAU,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACzC,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAA,kBAAQ,EAAC,MAAM,CAAC,CAAC;QACpC,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/C,eAAM,CAAC,KAAK,CAAC,iBAAiB,UAAU,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,wBAAwB;QACxB,IAAI,qBAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,eAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,mBAAQ,CAAC,QAAQ,CAAC;gBACtB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,UAAU,CAAC,KAAK;gBACzB,MAAM;aACP,CAAC,CAAC;YACH,eAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAClE,CAAC;QACD,OAAO;IACT,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvC,MAAM,MAAM,GAAa,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,IAAI,qBAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,eAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,cAAc;YACd,MAAM,OAAO,GACX,MAAM,CAAC,eAAe,KAAK,SAAS;gBAClC,CAAC,CAAC,IAAA,iCAAwB,EAAC,MAAM,CAAC;gBAClC,CAAC,CAAC,MAAM,CAAC,iBAAkB,CAAC;YAChC,MAAM,EAAE,GAAG,MAAM,mBAAQ,CAAC,QAAQ,CAAC;gBACjC,YAAY,EAAE,MAAM,CAAC,gBAAiB;gBACtC,YAAY,EAAE,MAAM,CAAC,aAAc;gBACnC,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,iBAAiB,EAAE,IAAA,yBAAoB,EAAC;oBACtC,GAAG,MAAM;oBACT,SAAS,EAAE,KAAK;iBACjB,CAAC;aACH,CAAC,CAAC;YACH,eAAM,CAAC,IAAI,CACT,EAAE,EAAE,EAAE,iBAAiB,EAAG,CAAC,MAAM,EAAE,EAAE,EACrC,uBAAuB,CACxB,CAAC;YACF,MAAM,IAAA,8BAAe,EAAC,MAAM,EAAE,EAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IACE,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK,GAAG;YAChC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAClD,+BAA+B,CAChC,EACD,CAAC;YACD,eAAM,CAAC,IAAI,CACT,+FAA+F,CAChG,CAAC;YACF,MAAM,SAAG,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAiB,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,wBAAkC;IAC3D,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,wBAAwB,EAAE,CAAC;QAC7B,2BAA2B;QAC3B,cAAc,GAAG,oGAAoG,CAAC;IACxH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,MAAsB;IAEtB,MAAM,UAAU,GAAG,IAAA,iCAAwB,EAAC,MAAM,CAAC,CAAC;IACpD,MAAM,gBAAgB,GACpB,CAAC,MAAM,IAAA,aAAO,EAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAA,eAAQ,EAAC,gBAAgB,CAAC,CAAC;IAExC,OAAO,8BAA8B,IAAI,OAAO,CAAC;AACnD,CAAC","sourcesContent":["import { isNumber, isString } from '@sindresorhus/is';\nimport { GlobalConfig } from '../../../../config/global';\nimport type { RenovateConfig } from '../../../../config/types';\nimport { logger } from '../../../../logger';\nimport type { PackageFile } from '../../../../modules/manager/types';\nimport { platform } from '../../../../modules/platform';\nimport { ensureComment } from '../../../../modules/platform/comment';\nimport { hashBody } from '../../../../modules/platform/pr-body';\nimport { scm } from '../../../../modules/platform/scm';\nimport { getElapsedDays } from '../../../../util/date';\nimport { emojify } from '../../../../util/emoji';\nimport { getFile } from '../../../../util/git';\nimport { toSha256 } from '../../../../util/hash';\nimport * as template from '../../../../util/template';\nimport type { BranchConfig } from '../../../types';\nimport {\n getDepWarningsOnboardingPR,\n getErrors,\n getWarnings,\n} from '../../errors-warnings';\nimport { getPlatformPrOptions } from '../../update/pr';\nimport { prepareLabels } from '../../update/pr/labels';\nimport { addParticipants } from '../../update/pr/participants';\nimport { isOnboardingBranchConflicted } from '../branch/onboarding-branch-cache';\nimport {\n OnboardingState,\n getDefaultConfigFileName,\n getSemanticCommitPrTitle,\n} from '../common';\nimport { getBaseBranchDesc } from './base-branch';\nimport { getConfigDesc } from './config-description';\nimport { getExpectedPrList } from './pr-list';\n\nexport async function ensureOnboardingPr(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]> | null,\n branches: BranchConfig[],\n): Promise<void> {\n if (\n config.repoIsOnboarded === true ||\n OnboardingState.onboardingCacheValid ||\n (config.onboardingRebaseCheckbox && !OnboardingState.prUpdateRequested)\n ) {\n return;\n }\n logger.debug('ensureOnboardingPr()');\n logger.trace({ config });\n // TODO #22198\n const existingPr = await platform.getBranchPr(\n config.onboardingBranch!,\n config.defaultBranch,\n );\n if (existingPr) {\n // check if the existing pr crosses the onboarding autoclose age\n const ageOfOnboardingPr = getElapsedDays(existingPr.createdAt!);\n const onboardingAutoCloseAge = GlobalConfig.get('onboardingAutoCloseAge')!;\n if (onboardingAutoCloseAge) {\n logger.debug(\n {\n onboardingAutoCloseAge,\n createdAt: existingPr.createdAt!,\n ageOfOnboardingPr,\n },\n `Determining that the onboarding PR created at \\`${existingPr.createdAt!}\\` was created ${ageOfOnboardingPr} days ago`,\n );\n }\n if (\n isNumber(onboardingAutoCloseAge) &&\n ageOfOnboardingPr > onboardingAutoCloseAge\n ) {\n // close the pr\n await platform.updatePr({\n number: existingPr.number,\n state: 'closed',\n prTitle: existingPr.title,\n });\n // ensure comment\n await ensureComment({\n number: existingPr.number,\n topic: `Renovate is disabled`,\n content: `Renovate is disabled because the onboarding PR has been unmerged for more than ${onboardingAutoCloseAge} days. To enable Renovate, you can either (a) change this PR's title to get a new onboarding PR, and merge the new onboarding PR, or (b) create a Renovate config file, and commit that file to your base branch.`,\n });\n logger.debug(\n {\n ageOfOnboardingPr,\n onboardingAutoCloseAge,\n },\n `Renovate is being disabled for this repository as the onboarding PR has been unmerged for more than ${onboardingAutoCloseAge} days`,\n );\n return;\n }\n // skip pr-update if branch is conflicted\n if (\n await isOnboardingBranchConflicted(\n config.defaultBranch!,\n config.onboardingBranch!,\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n 'DRY-RUN: Would comment that Onboarding PR is conflicted and needs manual resolving',\n );\n return;\n }\n await ensureComment({\n number: existingPr.number,\n topic: 'Branch Conflicted',\n content: emojify(\n `:warning: This PR has a merge conflict which Renovate is unable to automatically resolve, so updates to this PR description are now paused. Please resolve the merge conflict manually.\\n\\n`,\n ),\n });\n return;\n }\n }\n const onboardingConfigHashComment =\n await getOnboardingConfigHashComment(config);\n const rebaseCheckBox = getRebaseCheckbox(config.onboardingRebaseCheckbox);\n logger.debug('Filling in onboarding PR template');\n let prTemplate = `Welcome to [Renovate](${\n config.productLinks!.homepage\n })! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.\\n\\n`;\n prTemplate +=\n config.requireConfig === 'required'\n ? emojify(\n `:vertical_traffic_light: To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.\\n\\n`,\n )\n : emojify(\n `:vertical_traffic_light: Renovate will begin keeping your dependencies up-to-date only once you merge or close this Pull Request.\\n\\n`,\n );\n // TODO #22198\n prTemplate += emojify(\n `\n\n---\n{{PACKAGE FILES}}\n{{CONFIG}}\n{{BASEBRANCH}}\n{{PRLIST}}\n{{WARNINGS}}\n{{ERRORS}}\n\n---\n\n:question: Got questions? Check out Renovate's [Docs](${\n config.productLinks!.documentation\n }), particularly the Getting Started section.\nIf you need any further assistance then you can also [request help here](${\n config.productLinks!.help\n }).\n`,\n );\n prTemplate += rebaseCheckBox;\n let prBody = prTemplate;\n if (packageFiles && Object.entries(packageFiles).length) {\n let files: string[] = [];\n for (const [manager, managerFiles] of Object.entries(packageFiles)) {\n files = files.concat(\n managerFiles.map((file) => ` * \\`${file.packageFile}\\` (${manager})`),\n );\n }\n prBody =\n prBody.replace(\n '{{PACKAGE FILES}}',\n '### Detected Package Files\\n\\n' + files.join('\\n'),\n ) + '\\n';\n } else {\n prBody = prBody.replace('{{PACKAGE FILES}}\\n', '');\n }\n let configDesc = '';\n if (GlobalConfig.get('dryRun')) {\n // TODO: types (#22198)\n logger.info(`DRY-RUN: Would check branch ${config.onboardingBranch!}`);\n } else {\n configDesc = getConfigDesc(config, packageFiles!);\n }\n prBody = prBody.replace('{{CONFIG}}\\n', configDesc);\n prBody = prBody.replace(\n '{{WARNINGS}}\\n',\n getWarnings(config) + getDepWarningsOnboardingPR(packageFiles!, config),\n );\n prBody = prBody.replace('{{ERRORS}}\\n', getErrors(config));\n prBody = prBody.replace('{{BASEBRANCH}}\\n', getBaseBranchDesc(config));\n prBody = prBody.replace('{{PRLIST}}\\n', getExpectedPrList(config, branches));\n if (isString(config.prHeader)) {\n prBody = `${template.compile(config.prHeader, config)}\\n\\n${prBody}`;\n }\n if (isString(config.prFooter)) {\n prBody = `${prBody}\\n---\\n\\n${template.compile(config.prFooter, config)}\\n`;\n }\n\n prBody += onboardingConfigHashComment;\n\n logger.trace('prBody:\\n' + prBody);\n\n prBody = platform.massageMarkdown(prBody, config.rebaseLabel);\n\n if (existingPr) {\n logger.debug('Found open onboarding PR');\n // Check if existing PR needs updating\n const prBodyHash = hashBody(prBody);\n if (existingPr.bodyStruct?.hash === prBodyHash) {\n logger.debug(`Pull Request #${existingPr.number} does not need updating`);\n return;\n }\n // PR must need updating\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would update onboarding PR');\n } else {\n await platform.updatePr({\n number: existingPr.number,\n prTitle: existingPr.title,\n prBody,\n });\n logger.info({ pr: existingPr.number }, 'Onboarding PR updated');\n }\n return;\n }\n logger.debug('Creating onboarding PR');\n const labels: string[] = prepareLabels(config);\n try {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would create onboarding PR');\n } else {\n // TODO #22198\n const prTitle =\n config.semanticCommits === 'enabled'\n ? getSemanticCommitPrTitle(config)\n : config.onboardingPrTitle!;\n const pr = await platform.createPr({\n sourceBranch: config.onboardingBranch!,\n targetBranch: config.defaultBranch!,\n prTitle,\n prBody,\n labels,\n platformPrOptions: getPlatformPrOptions({\n ...config,\n automerge: false,\n }),\n });\n logger.info(\n { pr: `Pull Request #${pr!.number}` },\n 'Onboarding PR created',\n );\n await addParticipants(config, pr!);\n }\n } catch (err) {\n if (\n err.response?.statusCode === 422 &&\n err.response?.body?.errors?.[0]?.message?.startsWith(\n 'A pull request already exists',\n )\n ) {\n logger.warn(\n 'Onboarding PR already exists but cannot find it. It was probably created by a different user.',\n );\n await scm.deleteBranch(config.onboardingBranch!);\n return;\n }\n throw err;\n }\n}\n\nfunction getRebaseCheckbox(onboardingRebaseCheckbox?: boolean): string {\n let rebaseCheckBox = '';\n if (onboardingRebaseCheckbox) {\n // Create markdown checkbox\n rebaseCheckBox = `\\n\\n---\\n\\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.\\n`;\n }\n\n return rebaseCheckBox;\n}\n\nasync function getOnboardingConfigHashComment(\n config: RenovateConfig,\n): Promise<string> {\n const configFile = getDefaultConfigFileName(config);\n const existingContents =\n (await getFile(configFile, config.onboardingBranch)) ?? '';\n const hash = toSha256(existingContents);\n\n return `\\n<!--renovate-config-hash:${hash}-->\\n`;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/onboarding/pr/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNumber, isString } from '@sindresorhus/is';\nimport { GlobalConfig } from '../../../../config/global';\nimport type { RenovateConfig } from '../../../../config/types';\nimport { logger } from '../../../../logger';\nimport type { PackageFile } from '../../../../modules/manager/types';\nimport { platform } from '../../../../modules/platform';\nimport { ensureComment } from '../../../../modules/platform/comment';\nimport { hashBody } from '../../../../modules/platform/pr-body';\nimport { scm } from '../../../../modules/platform/scm';\nimport { getElapsedDays } from '../../../../util/date';\nimport { emojify } from '../../../../util/emoji';\nimport { getFile } from '../../../../util/git';\nimport { toSha256 } from '../../../../util/hash';\nimport * as template from '../../../../util/template';\nimport type { BranchConfig } from '../../../types';\nimport {\n getDepWarningsOnboardingPR,\n getErrors,\n getWarnings,\n} from '../../errors-warnings';\nimport { getPlatformPrOptions } from '../../update/pr';\nimport { prepareLabels } from '../../update/pr/labels';\nimport { addParticipants } from '../../update/pr/participants';\nimport { isOnboardingBranchConflicted } from '../branch/onboarding-branch-cache';\nimport {\n OnboardingState,\n getDefaultConfigFileName,\n getSemanticCommitPrTitle,\n} from '../common';\nimport { getBaseBranchDesc } from './base-branch';\nimport { getConfigDesc } from './config-description';\nimport { getExpectedPrList } from './pr-list';\n\nexport async function ensureOnboardingPr(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]> | null,\n branches: BranchConfig[],\n): Promise<void> {\n if (\n config.repoIsOnboarded === true ||\n OnboardingState.onboardingCacheValid ||\n (config.onboardingRebaseCheckbox && !OnboardingState.prUpdateRequested)\n ) {\n return;\n }\n logger.debug('ensureOnboardingPr()');\n logger.trace({ config });\n // TODO #22198\n const existingPr = await platform.getBranchPr(\n config.onboardingBranch!,\n config.defaultBranch,\n );\n if (existingPr) {\n // check if the existing pr crosses the onboarding autoclose age\n const ageOfOnboardingPr = getElapsedDays(existingPr.createdAt!, false);\n const onboardingAutoCloseAge = GlobalConfig.get('onboardingAutoCloseAge')!;\n if (onboardingAutoCloseAge) {\n logger.debug(\n {\n onboardingAutoCloseAge,\n createdAt: existingPr.createdAt!,\n ageOfOnboardingPr,\n },\n `Determining that the onboarding PR created at \\`${existingPr.createdAt!}\\` was created ${ageOfOnboardingPr.toFixed(2)} days ago`,\n );\n }\n if (\n isNumber(onboardingAutoCloseAge) &&\n ageOfOnboardingPr > onboardingAutoCloseAge\n ) {\n // close the pr\n await platform.updatePr({\n number: existingPr.number,\n state: 'closed',\n prTitle: existingPr.title,\n });\n // ensure comment\n await ensureComment({\n number: existingPr.number,\n topic: `Renovate is disabled`,\n content: `Renovate is disabled because the onboarding PR has been unmerged for more than ${onboardingAutoCloseAge} days. To enable Renovate, you can either (a) change this PR's title to get a new onboarding PR, and merge the new onboarding PR, or (b) create a Renovate config file, and commit that file to your base branch.`,\n });\n logger.debug(\n {\n ageOfOnboardingPr,\n onboardingAutoCloseAge,\n },\n `Renovate is being disabled for this repository as the onboarding PR has been unmerged for more than ${onboardingAutoCloseAge} days`,\n );\n return;\n }\n // skip pr-update if branch is conflicted\n if (\n await isOnboardingBranchConflicted(\n config.defaultBranch!,\n config.onboardingBranch!,\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n 'DRY-RUN: Would comment that Onboarding PR is conflicted and needs manual resolving',\n );\n return;\n }\n await ensureComment({\n number: existingPr.number,\n topic: 'Branch Conflicted',\n content: emojify(\n `:warning: This PR has a merge conflict which Renovate is unable to automatically resolve, so updates to this PR description are now paused. Please resolve the merge conflict manually.\\n\\n`,\n ),\n });\n return;\n }\n }\n const onboardingConfigHashComment =\n await getOnboardingConfigHashComment(config);\n const rebaseCheckBox = getRebaseCheckbox(config.onboardingRebaseCheckbox);\n logger.debug('Filling in onboarding PR template');\n let prTemplate = `Welcome to [Renovate](${\n config.productLinks!.homepage\n })! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.\\n\\n`;\n prTemplate +=\n config.requireConfig === 'required'\n ? emojify(\n `:vertical_traffic_light: To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.\\n\\n`,\n )\n : emojify(\n `:vertical_traffic_light: Renovate will begin keeping your dependencies up-to-date only once you merge or close this Pull Request.\\n\\n`,\n );\n // TODO #22198\n prTemplate += emojify(\n `\n\n---\n{{PACKAGE FILES}}\n{{CONFIG}}\n{{BASEBRANCH}}\n{{PRLIST}}\n{{WARNINGS}}\n{{ERRORS}}\n\n---\n\n:question: Got questions? Check out Renovate's [Docs](${\n config.productLinks!.documentation\n }), particularly the Getting Started section.\nIf you need any further assistance then you can also [request help here](${\n config.productLinks!.help\n }).\n`,\n );\n prTemplate += rebaseCheckBox;\n let prBody = prTemplate;\n if (packageFiles && Object.entries(packageFiles).length) {\n let files: string[] = [];\n for (const [manager, managerFiles] of Object.entries(packageFiles)) {\n files = files.concat(\n managerFiles.map((file) => ` * \\`${file.packageFile}\\` (${manager})`),\n );\n }\n prBody =\n prBody.replace(\n '{{PACKAGE FILES}}',\n '### Detected Package Files\\n\\n' + files.join('\\n'),\n ) + '\\n';\n } else {\n prBody = prBody.replace('{{PACKAGE FILES}}\\n', '');\n }\n let configDesc = '';\n if (GlobalConfig.get('dryRun')) {\n // TODO: types (#22198)\n logger.info(`DRY-RUN: Would check branch ${config.onboardingBranch!}`);\n } else {\n configDesc = getConfigDesc(config, packageFiles!);\n }\n prBody = prBody.replace('{{CONFIG}}\\n', configDesc);\n prBody = prBody.replace(\n '{{WARNINGS}}\\n',\n getWarnings(config) + getDepWarningsOnboardingPR(packageFiles!, config),\n );\n prBody = prBody.replace('{{ERRORS}}\\n', getErrors(config));\n prBody = prBody.replace('{{BASEBRANCH}}\\n', getBaseBranchDesc(config));\n prBody = prBody.replace('{{PRLIST}}\\n', getExpectedPrList(config, branches));\n if (isString(config.prHeader)) {\n prBody = `${template.compile(config.prHeader, config)}\\n\\n${prBody}`;\n }\n if (isString(config.prFooter)) {\n prBody = `${prBody}\\n---\\n\\n${template.compile(config.prFooter, config)}\\n`;\n }\n\n prBody += onboardingConfigHashComment;\n\n logger.trace('prBody:\\n' + prBody);\n\n prBody = platform.massageMarkdown(prBody, config.rebaseLabel);\n\n if (existingPr) {\n logger.debug('Found open onboarding PR');\n // Check if existing PR needs updating\n const prBodyHash = hashBody(prBody);\n if (existingPr.bodyStruct?.hash === prBodyHash) {\n logger.debug(`Pull Request #${existingPr.number} does not need updating`);\n return;\n }\n // PR must need updating\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would update onboarding PR');\n } else {\n await platform.updatePr({\n number: existingPr.number,\n prTitle: existingPr.title,\n prBody,\n });\n logger.info({ pr: existingPr.number }, 'Onboarding PR updated');\n }\n return;\n }\n logger.debug('Creating onboarding PR');\n const labels: string[] = prepareLabels(config);\n try {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would create onboarding PR');\n } else {\n // TODO #22198\n const prTitle =\n config.semanticCommits === 'enabled'\n ? getSemanticCommitPrTitle(config)\n : config.onboardingPrTitle!;\n const pr = await platform.createPr({\n sourceBranch: config.onboardingBranch!,\n targetBranch: config.defaultBranch!,\n prTitle,\n prBody,\n labels,\n platformPrOptions: getPlatformPrOptions({\n ...config,\n automerge: false,\n }),\n });\n logger.info(\n { pr: `Pull Request #${pr!.number}` },\n 'Onboarding PR created',\n );\n await addParticipants(config, pr!);\n }\n } catch (err) {\n if (\n err.response?.statusCode === 422 &&\n err.response?.body?.errors?.[0]?.message?.startsWith(\n 'A pull request already exists',\n )\n ) {\n logger.warn(\n 'Onboarding PR already exists but cannot find it. It was probably created by a different user.',\n );\n await scm.deleteBranch(config.onboardingBranch!);\n return;\n }\n throw err;\n }\n}\n\nfunction getRebaseCheckbox(onboardingRebaseCheckbox?: boolean): string {\n let rebaseCheckBox = '';\n if (onboardingRebaseCheckbox) {\n // Create markdown checkbox\n rebaseCheckBox = `\\n\\n---\\n\\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.\\n`;\n }\n\n return rebaseCheckBox;\n}\n\nasync function getOnboardingConfigHashComment(\n config: RenovateConfig,\n): Promise<string> {\n const configFile = getDefaultConfigFileName(config);\n const existingContents =\n (await getFile(configFile, config.onboardingBranch)) ?? '';\n const hash = toSha256(existingContents);\n\n return `\\n<!--renovate-config-hash:${hash}-->\\n`;\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.90.0",
4
+ "version": "42.90.1",
5
5
  "type": "commonjs",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -338,6 +338,7 @@
338
338
  "vitest": "GIT_ALLOW_PROTOCOL=file LOG_LEVEL=fatal vitest run --logHeapUsage",
339
339
  "lint": "run-s ls-lint type-check oxlint eslint prettier markdown-lint git-check doc-fence-check",
340
340
  "lint-fix": "run-s oxlint-fix eslint-fix prettier-fix markdown-lint-fix",
341
+ "check": "tsx tools/check/index.ts",
341
342
  "ls-lint": "ls-lint",
342
343
  "markdown-lint": "markdownlint-cli2",
343
344
  "markdown-lint-fix": "markdownlint-cli2 --fix",
@@ -1,7 +1,7 @@
1
1
  {
2
- "title": "JSON schema for Renovate 42.90.0 config files (https://renovatebot.com/)",
2
+ "title": "JSON schema for Renovate 42.90.1 config files (https://renovatebot.com/)",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
- "x-renovate-version": "42.90.0",
4
+ "x-renovate-version": "42.90.1",
5
5
  "allowComments": true,
6
6
  "type": "object",
7
7
  "properties": {