renovate 43.26.4 → 43.26.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.
@@ -1,6 +1,5 @@
1
1
  import { coerceString } from "../string.js";
2
2
  import { logger } from "../../logger/index.js";
3
- import { clone } from "../clone.js";
4
3
  import { HttpStats } from "../stats.js";
5
4
  import "./legacy.js";
6
5
  import { coerceNumber } from "../number.js";
@@ -66,11 +65,10 @@ function stream(url, options) {
66
65
  * @returns normalized got options
67
66
  */
68
67
  function normalize(options, keysToRemove) {
69
- const opts = clone(options);
68
+ const opts = { ...options };
70
69
  for (const key of [...GotExtraOptionKeys, ...keysToRemove]) delete opts[key];
71
- const normalizedOptions = opts;
72
- if (isNumber(opts.timeout)) normalizedOptions.timeout = { request: opts.timeout };
73
- return normalizedOptions;
70
+ if (isNumber(opts.timeout)) opts.timeout = { request: opts.timeout };
71
+ return opts;
74
72
  }
75
73
 
76
74
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"got.js","names":[],"sources":["../../../lib/util/http/got.ts"],"sourcesContent":["// TODO: refactor code to remove this (#9651)\nimport './legacy.ts';\n\nimport { isNumber } from '@sindresorhus/is';\nimport type { OptionsInit } from 'got';\nimport { RequestError, got } from 'got';\nimport type { SetRequired } from 'type-fest';\nimport { logger } from '../../logger/index.ts';\nimport { clone } from '../clone.ts';\nimport { coerceNumber } from '../number.ts';\nimport { type HttpRequestStatsDataPoint, HttpStats } from '../stats.ts';\nimport { coerceString } from '../string.ts';\nimport { hooks } from './hooks.ts';\nimport {\n type GotBufferOptions,\n GotExtraOptionKeys,\n type GotOptions,\n type HttpResponse,\n} from './types.ts';\n\nexport { RequestError } from 'got';\n\ntype QueueStatsData = Pick<HttpRequestStatsDataPoint, 'queueMs'>;\n\nexport function configureRejectUnauth(options: OptionsInit): void {\n if (process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0') {\n logger.once.warn(\n 'NODE_TLS_REJECT_UNAUTHORIZED=0 found, this is strongly discouraged.',\n );\n options.https = { ...options.https, rejectUnauthorized: false };\n }\n}\n\nexport async function fetch(\n url: string,\n options: SetRequired<GotOptions, 'method'>,\n queueStats: QueueStatsData,\n): Promise<HttpResponse<unknown>> {\n logger.trace({ url, options }, 'got request');\n configureRejectUnauth(options);\n\n let duration = 0;\n let statusCode = 0;\n try {\n // Cheat the TS compiler using `as` to pick a specific overload.\n // Otherwise it doesn't typecheck.\n const resp = await got(url, { ...options, hooks } as GotBufferOptions);\n statusCode = resp.statusCode;\n duration = coerceNumber(resp.timings.phases.total, 0);\n return resp;\n } catch (error) {\n // v8 ignore else -- TODO: add test #40625\n if (error instanceof RequestError) {\n statusCode = coerceNumber(error.response?.statusCode, -1);\n duration = coerceNumber(error.timings?.phases.total, -1);\n const method = options.method.toUpperCase();\n const code = coerceString(error.code, 'UNKNOWN');\n const retryCount = coerceNumber(error.request?.retryCount, -1);\n logger.debug(\n `${method} ${url} = (code=${code}, statusCode=${statusCode} retryCount=${retryCount}, duration=${duration})`,\n );\n }\n\n throw error;\n /* v8 ignore next: 🐛 https://github.com/bcoe/c8/issues/229 */\n } finally {\n HttpStats.write({\n method: options.method,\n url,\n reqMs: duration,\n queueMs: queueStats.queueMs,\n status: statusCode,\n });\n }\n}\n\nexport function stream(\n url: string,\n options: Omit<OptionsInit, 'isStream'>,\n): NodeJS.ReadableStream {\n configureRejectUnauth(options);\n return got.stream(url, options);\n}\n\n/**\n * Removes non-got options and normalizes some options to match got's expected format.\n * @param options options to normalize\n * @returns normalized got options\n */\nexport function normalize<T extends OptionsInit = OptionsInit>(\n options: T,\n keysToRemove: readonly string[],\n): T {\n const opts = clone(options);\n\n for (const key of [...GotExtraOptionKeys, ...keysToRemove]) {\n // @ts-expect-error -- delete extra options before passing to got\n delete opts[key];\n }\n\n // optimize options for got v12+\n const normalizedOptions = opts as unknown as T;\n\n if (isNumber(opts.timeout)) {\n normalizedOptions.timeout = { request: opts.timeout };\n }\n\n return normalizedOptions;\n}\n"],"mappings":";;;;;;;;;;;;AAwBA,SAAgB,sBAAsB,SAA4B;AAChE,KAAI,QAAQ,IAAI,iCAAiC,KAAK;AACpD,SAAO,KAAK,KACV,sEACD;AACD,UAAQ,QAAQ;GAAE,GAAG,QAAQ;GAAO,oBAAoB;GAAO;;;AAInE,eAAsB,MACpB,KACA,SACA,YACgC;AAChC,QAAO,MAAM;EAAE;EAAK;EAAS,EAAE,cAAc;AAC7C,uBAAsB,QAAQ;CAE9B,IAAI,WAAW;CACf,IAAI,aAAa;AACjB,KAAI;EAGF,MAAM,OAAO,MAAM,IAAI,KAAK;GAAE,GAAG;GAAS;GAAO,CAAqB;AACtE,eAAa,KAAK;AAClB,aAAW,aAAa,KAAK,QAAQ,OAAO,OAAO,EAAE;AACrD,SAAO;UACA,OAAO;;AAEd,MAAI,iBAAiB,cAAc;AACjC,gBAAa,aAAa,MAAM,UAAU,YAAY,GAAG;AACzD,cAAW,aAAa,MAAM,SAAS,OAAO,OAAO,GAAG;GACxD,MAAM,SAAS,QAAQ,OAAO,aAAa;GAC3C,MAAM,OAAO,aAAa,MAAM,MAAM,UAAU;GAChD,MAAM,aAAa,aAAa,MAAM,SAAS,YAAY,GAAG;AAC9D,UAAO,MACL,GAAG,OAAO,GAAG,IAAI,WAAW,KAAK,eAAe,WAAW,cAAc,WAAW,aAAa,SAAS,GAC3G;;AAGH,QAAM;WAEE;AACR,YAAU,MAAM;GACd,QAAQ,QAAQ;GAChB;GACA,OAAO;GACP,SAAS,WAAW;GACpB,QAAQ;GACT,CAAC;;;AAIN,SAAgB,OACd,KACA,SACuB;AACvB,uBAAsB,QAAQ;AAC9B,QAAO,IAAI,OAAO,KAAK,QAAQ;;;;;;;AAQjC,SAAgB,UACd,SACA,cACG;CACH,MAAM,OAAO,MAAM,QAAQ;AAE3B,MAAK,MAAM,OAAO,CAAC,GAAG,oBAAoB,GAAG,aAAa,CAExD,QAAO,KAAK;CAId,MAAM,oBAAoB;AAE1B,KAAI,SAAS,KAAK,QAAQ,CACxB,mBAAkB,UAAU,EAAE,SAAS,KAAK,SAAS;AAGvD,QAAO"}
1
+ {"version":3,"file":"got.js","names":[],"sources":["../../../lib/util/http/got.ts"],"sourcesContent":["// TODO: refactor code to remove this (#9651)\nimport './legacy.ts';\n\nimport { isNumber } from '@sindresorhus/is';\nimport type { OptionsInit } from 'got';\nimport { RequestError, got } from 'got';\nimport type { SetRequired } from 'type-fest';\nimport { logger } from '../../logger/index.ts';\nimport { coerceNumber } from '../number.ts';\nimport { type HttpRequestStatsDataPoint, HttpStats } from '../stats.ts';\nimport { coerceString } from '../string.ts';\nimport { hooks } from './hooks.ts';\nimport {\n type GotBufferOptions,\n GotExtraOptionKeys,\n type GotOptions,\n type HttpResponse,\n} from './types.ts';\n\nexport { RequestError } from 'got';\n\ntype QueueStatsData = Pick<HttpRequestStatsDataPoint, 'queueMs'>;\n\nexport function configureRejectUnauth(options: OptionsInit): void {\n if (process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0') {\n logger.once.warn(\n 'NODE_TLS_REJECT_UNAUTHORIZED=0 found, this is strongly discouraged.',\n );\n options.https = { ...options.https, rejectUnauthorized: false };\n }\n}\n\nexport async function fetch(\n url: string,\n options: SetRequired<GotOptions, 'method'>,\n queueStats: QueueStatsData,\n): Promise<HttpResponse<unknown>> {\n logger.trace({ url, options }, 'got request');\n configureRejectUnauth(options);\n\n let duration = 0;\n let statusCode = 0;\n try {\n // Cheat the TS compiler using `as` to pick a specific overload.\n // Otherwise it doesn't typecheck.\n const resp = await got(url, { ...options, hooks } as GotBufferOptions);\n statusCode = resp.statusCode;\n duration = coerceNumber(resp.timings.phases.total, 0);\n return resp;\n } catch (error) {\n // v8 ignore else -- TODO: add test #40625\n if (error instanceof RequestError) {\n statusCode = coerceNumber(error.response?.statusCode, -1);\n duration = coerceNumber(error.timings?.phases.total, -1);\n const method = options.method.toUpperCase();\n const code = coerceString(error.code, 'UNKNOWN');\n const retryCount = coerceNumber(error.request?.retryCount, -1);\n logger.debug(\n `${method} ${url} = (code=${code}, statusCode=${statusCode} retryCount=${retryCount}, duration=${duration})`,\n );\n }\n\n throw error;\n /* v8 ignore next: 🐛 https://github.com/bcoe/c8/issues/229 */\n } finally {\n HttpStats.write({\n method: options.method,\n url,\n reqMs: duration,\n queueMs: queueStats.queueMs,\n status: statusCode,\n });\n }\n}\n\nexport function stream(\n url: string,\n options: Omit<OptionsInit, 'isStream'>,\n): NodeJS.ReadableStream {\n configureRejectUnauth(options);\n return got.stream(url, options);\n}\n\n/**\n * Removes non-got options and normalizes some options to match got's expected format.\n * @param options options to normalize\n * @returns normalized got options\n */\nexport function normalize<T extends OptionsInit = OptionsInit>(\n options: T,\n keysToRemove: readonly string[],\n): T {\n // flat copy to void mutating the original options object\n const opts = { ...options };\n\n for (const key of [...GotExtraOptionKeys, ...keysToRemove]) {\n // @ts-expect-error -- delete extra options before passing to got\n delete opts[key];\n }\n\n // optimize options for got v12+\n if (isNumber(opts.timeout)) {\n opts.timeout = { request: opts.timeout };\n }\n\n return opts;\n}\n"],"mappings":";;;;;;;;;;;AAuBA,SAAgB,sBAAsB,SAA4B;AAChE,KAAI,QAAQ,IAAI,iCAAiC,KAAK;AACpD,SAAO,KAAK,KACV,sEACD;AACD,UAAQ,QAAQ;GAAE,GAAG,QAAQ;GAAO,oBAAoB;GAAO;;;AAInE,eAAsB,MACpB,KACA,SACA,YACgC;AAChC,QAAO,MAAM;EAAE;EAAK;EAAS,EAAE,cAAc;AAC7C,uBAAsB,QAAQ;CAE9B,IAAI,WAAW;CACf,IAAI,aAAa;AACjB,KAAI;EAGF,MAAM,OAAO,MAAM,IAAI,KAAK;GAAE,GAAG;GAAS;GAAO,CAAqB;AACtE,eAAa,KAAK;AAClB,aAAW,aAAa,KAAK,QAAQ,OAAO,OAAO,EAAE;AACrD,SAAO;UACA,OAAO;;AAEd,MAAI,iBAAiB,cAAc;AACjC,gBAAa,aAAa,MAAM,UAAU,YAAY,GAAG;AACzD,cAAW,aAAa,MAAM,SAAS,OAAO,OAAO,GAAG;GACxD,MAAM,SAAS,QAAQ,OAAO,aAAa;GAC3C,MAAM,OAAO,aAAa,MAAM,MAAM,UAAU;GAChD,MAAM,aAAa,aAAa,MAAM,SAAS,YAAY,GAAG;AAC9D,UAAO,MACL,GAAG,OAAO,GAAG,IAAI,WAAW,KAAK,eAAe,WAAW,cAAc,WAAW,aAAa,SAAS,GAC3G;;AAGH,QAAM;WAEE;AACR,YAAU,MAAM;GACd,QAAQ,QAAQ;GAChB;GACA,OAAO;GACP,SAAS,WAAW;GACpB,QAAQ;GACT,CAAC;;;AAIN,SAAgB,OACd,KACA,SACuB;AACvB,uBAAsB,QAAQ;AAC9B,QAAO,IAAI,OAAO,KAAK,QAAQ;;;;;;;AAQjC,SAAgB,UACd,SACA,cACG;CAEH,MAAM,OAAO,EAAE,GAAG,SAAS;AAE3B,MAAK,MAAM,OAAO,CAAC,GAAG,oBAAoB,GAAG,aAAa,CAExD,QAAO,KAAK;AAId,KAAI,SAAS,KAAK,QAAQ,CACxB,MAAK,UAAU,EAAE,SAAS,KAAK,SAAS;AAG1C,QAAO"}
@@ -1,8 +1,8 @@
1
- import Agent, { HttpsAgent } from "agentkeepalive";
1
+ import { HttpAgent, HttpsAgent } from "agentkeepalive";
2
2
 
3
3
  //#region lib/util/http/keep-alive.ts
4
4
  const keepAliveAgents = {
5
- http: new Agent(),
5
+ http: new HttpAgent(),
6
6
  https: new HttpsAgent()
7
7
  };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"keep-alive.js","names":[],"sources":["../../../lib/util/http/keep-alive.ts"],"sourcesContent":["import Agent, { HttpsAgent } from 'agentkeepalive';\nimport type { Agents } from 'got';\n\nconst http = new Agent();\nconst https = new HttpsAgent();\n\nconst keepAliveAgents: Agents = {\n http,\n https,\n};\n\nexport { keepAliveAgents };\n"],"mappings":";;;AAMA,MAAM,kBAA0B;CAC9B,MAJW,IAAI,OAAO;CAKtB,OAJY,IAAI,YAAY;CAK7B"}
1
+ {"version":3,"file":"keep-alive.js","names":[],"sources":["../../../lib/util/http/keep-alive.ts"],"sourcesContent":["import { HttpAgent, HttpsAgent } from 'agentkeepalive';\nimport type { Agents } from 'got';\n\nconst http = new HttpAgent();\nconst https = new HttpsAgent();\n\nconst keepAliveAgents: Agents = {\n http,\n https,\n};\n\nexport { keepAliveAgents };\n"],"mappings":";;;AAMA,MAAM,kBAA0B;CAC9B,MAJW,IAAI,WAAW;CAK1B,OAJY,IAAI,YAAY;CAK7B"}
@@ -81,6 +81,7 @@ async function validatePresets(config) {
81
81
  }
82
82
  }
83
83
  async function start() {
84
+ logger.info({ renovateVersion: pkg.version }, "Renovate started");
84
85
  // istanbul ignore next
85
86
  if (regexEngineStatus.type === "available") logger.debug("Using RE2 regex engine");
86
87
  else if (regexEngineStatus.type === "unavailable") logger.warn({ err: regexEngineStatus.err }, "RE2 not usable, falling back to RegExp");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["configParser.mergeChildConfig","configParser.filterConfig","hostRules.add","repositoryWorker.renovateRepository"],"sources":["../../../lib/workers/global/index.ts"],"sourcesContent":["import {\n ATTR_VCS_OWNER_NAME,\n ATTR_VCS_PROVIDER_NAME,\n ATTR_VCS_REPOSITORY_NAME,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport {\n isNonEmptyString,\n isNonEmptyStringAndNotWhitespace,\n isString,\n} from '@sindresorhus/is';\nimport { ERROR } from 'bunyan';\nimport fs from 'fs-extra';\nimport semver from 'semver';\nimport upath from 'upath';\nimport { GlobalConfig } from '../../config/global.ts';\nimport * as configParser from '../../config/index.ts';\nimport { resolveConfigPresets } from '../../config/presets/index.ts';\nimport { validateConfigSecretsAndVariables } from '../../config/secrets.ts';\nimport type {\n AllConfig,\n RenovateConfig,\n RenovateRepository,\n} from '../../config/types.ts';\nimport { CONFIG_PRESETS_INVALID } from '../../constants/error-messages.ts';\nimport { pkg } from '../../expose.ts';\nimport { instrument } from '../../instrumentation/index.ts';\nimport {\n exportStats,\n finalizeReport,\n} from '../../instrumentation/reporting.ts';\nimport { getProblems, logLevel, logger, setMeta } from '../../logger/index.ts';\nimport { setGlobalLogLevelRemaps } from '../../logger/remap.ts';\nimport { getEnv } from '../../util/env.ts';\nimport * as hostRules from '../../util/host-rules.ts';\nimport * as queue from '../../util/http/queue.ts';\nimport * as throttle from '../../util/http/throttle.ts';\nimport { regexEngineStatus } from '../../util/regex.ts';\nimport { addSecretForSanitizing } from '../../util/sanitize.ts';\nimport * as repositoryWorker from '../repository/index.ts';\nimport { autodiscoverRepositories } from './autodiscover.ts';\nimport { parseConfigs } from './config/parse/index.ts';\nimport { globalFinalize, globalInitialize } from './initialize.ts';\nimport { isLimitReached } from './limits.ts';\n\nexport async function getRepositoryConfig(\n globalConfig: RenovateConfig,\n repository: RenovateRepository,\n): Promise<RenovateConfig> {\n let repositoryConfig: RenovateRepository;\n if (isString(repository)) {\n repositoryConfig = { repository };\n } else if (repository.extends?.length) {\n // Resolve repository-level presets before merging with global config\n const { config: resolvedRepoConfig } = await resolveConfigPresets(\n repository,\n globalConfig,\n );\n repositoryConfig = {\n ...resolvedRepoConfig,\n repository: repository.repository,\n };\n } else {\n repositoryConfig = repository;\n }\n\n const repoConfig = configParser.mergeChildConfig(\n globalConfig,\n repositoryConfig,\n );\n const repoParts = repoConfig.repository.split('/');\n repoParts.pop();\n repoConfig.parentOrg = repoParts.join('/');\n repoConfig.topLevelOrg = repoParts.shift();\n // TODO: types (#22198)\n const platform = GlobalConfig.get('platform')!;\n repoConfig.localDir =\n platform === 'local'\n ? process.cwd()\n : upath.join(\n repoConfig.baseDir,\n `./repos/${platform}/${repoConfig.repository}`,\n );\n await fs.ensureDir(repoConfig.localDir);\n delete repoConfig.baseDir;\n return configParser.filterConfig(repoConfig, 'repository');\n}\n\nfunction getGlobalConfig(): Promise<RenovateConfig> {\n return parseConfigs(getEnv(), process.argv);\n}\n\nfunction haveReachedLimits(): boolean {\n if (isLimitReached('Commits')) {\n logger.info('Max commits created for this run.');\n return true;\n }\n return false;\n}\n\n/* istanbul ignore next */\nfunction checkEnv(): void {\n const range = pkg.engines.node;\n if (process.release?.name !== 'node' || !process.versions?.node) {\n logger.warn(\n { release: process.release, versions: process.versions },\n 'Unknown node environment detected.',\n );\n } else if (!semver.satisfies(process.versions?.node, range)) {\n logger.error(\n { versions: process.versions, range },\n 'Unsupported node environment detected. Please update your node version.',\n );\n }\n}\n\nexport async function validatePresets(config: AllConfig): Promise<void> {\n logger.debug('validatePresets()');\n try {\n await resolveConfigPresets(config);\n } catch (err) /* istanbul ignore next */ {\n logger.error({ err }, CONFIG_PRESETS_INVALID);\n throw new Error(CONFIG_PRESETS_INVALID);\n }\n}\n\nexport async function start(): Promise<number> {\n // istanbul ignore next\n if (regexEngineStatus.type === 'available') {\n logger.debug('Using RE2 regex engine');\n } else if (regexEngineStatus.type === 'unavailable') {\n logger.warn(\n { err: regexEngineStatus.err },\n 'RE2 not usable, falling back to RegExp',\n );\n } else if (regexEngineStatus.type === 'ignored') {\n logger.debug('RE2 regex engine is ignored via RENOVATE_X_IGNORE_RE2');\n }\n\n let config: AllConfig;\n const env = getEnv();\n try {\n if (isNonEmptyStringAndNotWhitespace(env.AWS_SECRET_ACCESS_KEY)) {\n addSecretForSanitizing(env.AWS_SECRET_ACCESS_KEY, 'global');\n }\n if (isNonEmptyStringAndNotWhitespace(env.AWS_SESSION_TOKEN)) {\n addSecretForSanitizing(env.AWS_SESSION_TOKEN, 'global');\n }\n\n await instrument('config', async () => {\n // read global config from file, env and cli args\n config = await getGlobalConfig();\n\n // Set allowedHeaders and userAgent in case hostRules headers are configured in file config\n GlobalConfig.set({\n allowedHeaders: config.allowedHeaders,\n userAgent: config.userAgent,\n });\n // initialize all submodules\n config = await globalInitialize(config);\n\n // Set platform, endpoint, allowedHeaders and userAgent in case local presets are used\n GlobalConfig.set({\n allowedHeaders: config.allowedHeaders,\n platform: config.platform,\n endpoint: config.endpoint,\n userAgent: config.userAgent,\n });\n\n await validatePresets(config);\n\n setGlobalLogLevelRemaps(config.logLevelRemap);\n\n checkEnv();\n\n // validate secrets and variables. Will throw and abort if invalid\n validateConfigSecretsAndVariables(config);\n });\n\n // autodiscover repositories (needs to come after platform initialization)\n config = await instrument('discover', () =>\n autodiscoverRepositories(config),\n );\n\n if (isNonEmptyString(config.writeDiscoveredRepos)) {\n const content = JSON.stringify(config.repositories);\n await fs.writeFile(config.writeDiscoveredRepos, content);\n logger.info(\n `Written discovered repositories to ${config.writeDiscoveredRepos}`,\n );\n return 0;\n }\n\n // Iterate through repositories sequentially\n for (const repository of config.repositories!) {\n if (haveReachedLimits()) {\n break;\n }\n\n const { owner, repo } = repositoryToOwnerAndRepo(\n typeof repository === 'string' ? repository : repository.repository,\n );\n\n await instrument(\n 'repository',\n async () => {\n const repoConfig = await getRepositoryConfig(config, repository);\n if (repoConfig.hostRules) {\n logger.debug('Reinitializing hostRules for repo');\n hostRules.clear();\n repoConfig.hostRules.forEach((rule) => hostRules.add(rule));\n repoConfig.hostRules = [];\n }\n\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n\n await repositoryWorker.renovateRepository(repoConfig);\n setMeta({});\n },\n {\n attributes: {\n [ATTR_VCS_PROVIDER_NAME]: config.platform,\n [ATTR_VCS_OWNER_NAME]: owner,\n [ATTR_VCS_REPOSITORY_NAME]: repo,\n /** @deprecated TODO remove */\n repository:\n typeof repository === 'string'\n ? repository\n : repository.repository,\n },\n },\n );\n }\n\n finalizeReport();\n await exportStats(config);\n } catch (err) /* istanbul ignore next */ {\n if (err.message.startsWith('Init: ')) {\n logger.fatal(\n { errorMessage: err.message.substring(6) },\n 'Initialization error',\n );\n } else {\n logger.fatal({ err }, 'Unknown error');\n }\n if (!config!) {\n // return early if we can't parse config options\n logger.debug(`Missing config`);\n return 2;\n }\n } finally {\n await globalFinalize(config!);\n if (logLevel() === 'info') {\n logger.info(\n `Renovate was run at log level \"${logLevel()}\". Set LOG_LEVEL=debug in environment variables to see extended debug logs.`,\n );\n }\n }\n const loggerErrors = getProblems().filter((p) => p.level >= ERROR);\n if (loggerErrors.length) {\n logger.info(\n { loggerErrors },\n 'Renovate is exiting with a non-zero code due to the following logged errors',\n );\n return 1;\n }\n return 0;\n}\n\nfunction repositoryToOwnerAndRepo(fullName: string): {\n owner: string;\n repo: string;\n} {\n const parts = fullName.split('/');\n const repo = parts.pop() ?? '';\n const owner = parts.join('/');\n return { owner, repo };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["configParser.mergeChildConfig","configParser.filterConfig","hostRules.add","repositoryWorker.renovateRepository"],"sources":["../../../lib/workers/global/index.ts"],"sourcesContent":["import {\n ATTR_VCS_OWNER_NAME,\n ATTR_VCS_PROVIDER_NAME,\n ATTR_VCS_REPOSITORY_NAME,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport {\n isNonEmptyString,\n isNonEmptyStringAndNotWhitespace,\n isString,\n} from '@sindresorhus/is';\nimport { ERROR } from 'bunyan';\nimport fs from 'fs-extra';\nimport semver from 'semver';\nimport upath from 'upath';\nimport { GlobalConfig } from '../../config/global.ts';\nimport * as configParser from '../../config/index.ts';\nimport { resolveConfigPresets } from '../../config/presets/index.ts';\nimport { validateConfigSecretsAndVariables } from '../../config/secrets.ts';\nimport type {\n AllConfig,\n RenovateConfig,\n RenovateRepository,\n} from '../../config/types.ts';\nimport { CONFIG_PRESETS_INVALID } from '../../constants/error-messages.ts';\nimport { pkg } from '../../expose.ts';\nimport { instrument } from '../../instrumentation/index.ts';\nimport {\n exportStats,\n finalizeReport,\n} from '../../instrumentation/reporting.ts';\nimport { getProblems, logLevel, logger, setMeta } from '../../logger/index.ts';\nimport { setGlobalLogLevelRemaps } from '../../logger/remap.ts';\nimport { getEnv } from '../../util/env.ts';\nimport * as hostRules from '../../util/host-rules.ts';\nimport * as queue from '../../util/http/queue.ts';\nimport * as throttle from '../../util/http/throttle.ts';\nimport { regexEngineStatus } from '../../util/regex.ts';\nimport { addSecretForSanitizing } from '../../util/sanitize.ts';\nimport * as repositoryWorker from '../repository/index.ts';\nimport { autodiscoverRepositories } from './autodiscover.ts';\nimport { parseConfigs } from './config/parse/index.ts';\nimport { globalFinalize, globalInitialize } from './initialize.ts';\nimport { isLimitReached } from './limits.ts';\n\nexport async function getRepositoryConfig(\n globalConfig: RenovateConfig,\n repository: RenovateRepository,\n): Promise<RenovateConfig> {\n let repositoryConfig: RenovateRepository;\n if (isString(repository)) {\n repositoryConfig = { repository };\n } else if (repository.extends?.length) {\n // Resolve repository-level presets before merging with global config\n const { config: resolvedRepoConfig } = await resolveConfigPresets(\n repository,\n globalConfig,\n );\n repositoryConfig = {\n ...resolvedRepoConfig,\n repository: repository.repository,\n };\n } else {\n repositoryConfig = repository;\n }\n\n const repoConfig = configParser.mergeChildConfig(\n globalConfig,\n repositoryConfig,\n );\n const repoParts = repoConfig.repository.split('/');\n repoParts.pop();\n repoConfig.parentOrg = repoParts.join('/');\n repoConfig.topLevelOrg = repoParts.shift();\n // TODO: types (#22198)\n const platform = GlobalConfig.get('platform')!;\n repoConfig.localDir =\n platform === 'local'\n ? process.cwd()\n : upath.join(\n repoConfig.baseDir,\n `./repos/${platform}/${repoConfig.repository}`,\n );\n await fs.ensureDir(repoConfig.localDir);\n delete repoConfig.baseDir;\n return configParser.filterConfig(repoConfig, 'repository');\n}\n\nfunction getGlobalConfig(): Promise<RenovateConfig> {\n return parseConfigs(getEnv(), process.argv);\n}\n\nfunction haveReachedLimits(): boolean {\n if (isLimitReached('Commits')) {\n logger.info('Max commits created for this run.');\n return true;\n }\n return false;\n}\n\n/* istanbul ignore next */\nfunction checkEnv(): void {\n const range = pkg.engines.node;\n if (process.release?.name !== 'node' || !process.versions?.node) {\n logger.warn(\n { release: process.release, versions: process.versions },\n 'Unknown node environment detected.',\n );\n } else if (!semver.satisfies(process.versions?.node, range)) {\n logger.error(\n { versions: process.versions, range },\n 'Unsupported node environment detected. Please update your node version.',\n );\n }\n}\n\nexport async function validatePresets(config: AllConfig): Promise<void> {\n logger.debug('validatePresets()');\n try {\n await resolveConfigPresets(config);\n } catch (err) /* istanbul ignore next */ {\n logger.error({ err }, CONFIG_PRESETS_INVALID);\n throw new Error(CONFIG_PRESETS_INVALID);\n }\n}\n\nexport async function start(): Promise<number> {\n logger.info({ renovateVersion: pkg.version }, 'Renovate started');\n // istanbul ignore next\n if (regexEngineStatus.type === 'available') {\n logger.debug('Using RE2 regex engine');\n } else if (regexEngineStatus.type === 'unavailable') {\n logger.warn(\n { err: regexEngineStatus.err },\n 'RE2 not usable, falling back to RegExp',\n );\n } else if (regexEngineStatus.type === 'ignored') {\n logger.debug('RE2 regex engine is ignored via RENOVATE_X_IGNORE_RE2');\n }\n\n let config: AllConfig;\n const env = getEnv();\n try {\n if (isNonEmptyStringAndNotWhitespace(env.AWS_SECRET_ACCESS_KEY)) {\n addSecretForSanitizing(env.AWS_SECRET_ACCESS_KEY, 'global');\n }\n if (isNonEmptyStringAndNotWhitespace(env.AWS_SESSION_TOKEN)) {\n addSecretForSanitizing(env.AWS_SESSION_TOKEN, 'global');\n }\n\n await instrument('config', async () => {\n // read global config from file, env and cli args\n config = await getGlobalConfig();\n\n // Set allowedHeaders and userAgent in case hostRules headers are configured in file config\n GlobalConfig.set({\n allowedHeaders: config.allowedHeaders,\n userAgent: config.userAgent,\n });\n // initialize all submodules\n config = await globalInitialize(config);\n\n // Set platform, endpoint, allowedHeaders and userAgent in case local presets are used\n GlobalConfig.set({\n allowedHeaders: config.allowedHeaders,\n platform: config.platform,\n endpoint: config.endpoint,\n userAgent: config.userAgent,\n });\n\n await validatePresets(config);\n\n setGlobalLogLevelRemaps(config.logLevelRemap);\n\n checkEnv();\n\n // validate secrets and variables. Will throw and abort if invalid\n validateConfigSecretsAndVariables(config);\n });\n\n // autodiscover repositories (needs to come after platform initialization)\n config = await instrument('discover', () =>\n autodiscoverRepositories(config),\n );\n\n if (isNonEmptyString(config.writeDiscoveredRepos)) {\n const content = JSON.stringify(config.repositories);\n await fs.writeFile(config.writeDiscoveredRepos, content);\n logger.info(\n `Written discovered repositories to ${config.writeDiscoveredRepos}`,\n );\n return 0;\n }\n\n // Iterate through repositories sequentially\n for (const repository of config.repositories!) {\n if (haveReachedLimits()) {\n break;\n }\n\n const { owner, repo } = repositoryToOwnerAndRepo(\n typeof repository === 'string' ? repository : repository.repository,\n );\n\n await instrument(\n 'repository',\n async () => {\n const repoConfig = await getRepositoryConfig(config, repository);\n if (repoConfig.hostRules) {\n logger.debug('Reinitializing hostRules for repo');\n hostRules.clear();\n repoConfig.hostRules.forEach((rule) => hostRules.add(rule));\n repoConfig.hostRules = [];\n }\n\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n\n await repositoryWorker.renovateRepository(repoConfig);\n setMeta({});\n },\n {\n attributes: {\n [ATTR_VCS_PROVIDER_NAME]: config.platform,\n [ATTR_VCS_OWNER_NAME]: owner,\n [ATTR_VCS_REPOSITORY_NAME]: repo,\n /** @deprecated TODO remove */\n repository:\n typeof repository === 'string'\n ? repository\n : repository.repository,\n },\n },\n );\n }\n\n finalizeReport();\n await exportStats(config);\n } catch (err) /* istanbul ignore next */ {\n if (err.message.startsWith('Init: ')) {\n logger.fatal(\n { errorMessage: err.message.substring(6) },\n 'Initialization error',\n );\n } else {\n logger.fatal({ err }, 'Unknown error');\n }\n if (!config!) {\n // return early if we can't parse config options\n logger.debug(`Missing config`);\n return 2;\n }\n } finally {\n await globalFinalize(config!);\n if (logLevel() === 'info') {\n logger.info(\n `Renovate was run at log level \"${logLevel()}\". Set LOG_LEVEL=debug in environment variables to see extended debug logs.`,\n );\n }\n }\n const loggerErrors = getProblems().filter((p) => p.level >= ERROR);\n if (loggerErrors.length) {\n logger.info(\n { loggerErrors },\n 'Renovate is exiting with a non-zero code due to the following logged errors',\n );\n return 1;\n }\n return 0;\n}\n\nfunction repositoryToOwnerAndRepo(fullName: string): {\n owner: string;\n repo: string;\n} {\n const parts = fullName.split('/');\n const repo = parts.pop() ?? '';\n const owner = parts.join('/');\n return { owner, repo };\n}\n"],"mappings":"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"}
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": "43.26.4",
4
+ "version": "43.26.5",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -1,7 +1,7 @@
1
1
  {
2
- "title": "JSON schema for Renovate 43.26.4 config files (https://renovatebot.com/)",
2
+ "title": "JSON schema for Renovate 43.26.5 config files (https://renovatebot.com/)",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
- "x-renovate-version": "43.26.4",
4
+ "x-renovate-version": "43.26.5",
5
5
  "allowComments": true,
6
6
  "type": "object",
7
7
  "properties": {