renovate 44.30.0 → 44.30.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/migration.js +3 -3
- package/dist/config/migration.js.map +1 -1
- package/dist/config/migrations/custom/azure-gitlab-automerge-migration.js.map +1 -1
- package/dist/config/migrations/custom/dep-types-migration.js.map +1 -1
- package/dist/config/options/env.js +2 -1
- package/dist/config/options/env.js.map +1 -1
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/logger/utils.js +3 -3
- package/dist/logger/utils.js.map +1 -1
- package/dist/modules/datasource/crate/index.js +3 -3
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/go/base.js +1 -1
- package/dist/modules/datasource/go/base.js.map +1 -1
- package/dist/modules/datasource/go/goproxy-parser.js +1 -1
- package/dist/modules/datasource/go/goproxy-parser.js.map +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js +3 -3
- package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
- package/dist/modules/datasource/maven/util.js +1 -1
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/datasource/packagist/schema.js +2 -1
- package/dist/modules/datasource/packagist/schema.js.map +1 -1
- package/dist/modules/datasource/pypi/common.js +1 -1
- package/dist/modules/datasource/pypi/common.js.map +1 -1
- package/dist/modules/datasource/rpm/repomd.js +2 -1
- package/dist/modules/datasource/rpm/repomd.js.map +1 -1
- package/dist/modules/datasource/sbt-package/util.js +3 -3
- package/dist/modules/datasource/sbt-package/util.js.map +1 -1
- package/dist/modules/datasource/terraform-provider/index.js +1 -1
- package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
- package/dist/modules/manager/ansible-galaxy/util.js +4 -4
- package/dist/modules/manager/ansible-galaxy/util.js.map +1 -1
- package/dist/modules/manager/asdf/upgradeable-tooling.js +5 -5
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/bazel-module/extract.js +2 -1
- package/dist/modules/manager/bazel-module/extract.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/repo-rules.js +1 -1
- package/dist/modules/manager/bazel-module/parser/repo-rules.js.map +1 -1
- package/dist/modules/manager/bitbucket-pipelines/extract.js +2 -2
- package/dist/modules/manager/bitbucket-pipelines/extract.js.map +1 -1
- package/dist/modules/manager/bun/utils.js +2 -1
- package/dist/modules/manager/bun/utils.js.map +1 -1
- package/dist/modules/manager/bundler/extract.js +1 -1
- package/dist/modules/manager/bundler/extract.js.map +1 -1
- package/dist/modules/manager/cake/index.js.map +1 -1
- package/dist/modules/manager/composer/schema.js +2 -2
- package/dist/modules/manager/composer/schema.js.map +1 -1
- package/dist/modules/manager/cpanfile/language.js.map +1 -1
- package/dist/modules/manager/cpanfile/parser.js +4 -4
- package/dist/modules/manager/cpanfile/parser.js.map +1 -1
- package/dist/modules/manager/crossplane/extract.js +2 -1
- package/dist/modules/manager/crossplane/extract.js.map +1 -1
- package/dist/modules/manager/deps-edn/extract.js +1 -1
- package/dist/modules/manager/deps-edn/extract.js.map +1 -1
- package/dist/modules/manager/deps-edn/parser.js.map +1 -1
- package/dist/modules/manager/dockerfile/extract.js +2 -2
- package/dist/modules/manager/dockerfile/extract.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +2 -2
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/git-submodules/extract.js +1 -1
- package/dist/modules/manager/git-submodules/extract.js.map +1 -1
- package/dist/modules/manager/gomod/artifacts.js +1 -1
- package/dist/modules/manager/gomod/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/extract/consistent-versions-plugin.js +2 -2
- package/dist/modules/manager/gradle/extract/consistent-versions-plugin.js.map +1 -1
- package/dist/modules/manager/gradle-wrapper/artifacts.js +2 -2
- package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/utils.js +2 -1
- package/dist/modules/manager/helmv3/utils.js.map +1 -1
- package/dist/modules/manager/hermit/extract.js +1 -1
- package/dist/modules/manager/hermit/extract.js.map +1 -1
- package/dist/modules/manager/homebrew/utils.js +3 -3
- package/dist/modules/manager/homebrew/utils.js.map +1 -1
- package/dist/modules/manager/jsonnet-bundler/extract.js +2 -1
- package/dist/modules/manager/jsonnet-bundler/extract.js.map +1 -1
- package/dist/modules/manager/leiningen/extract.js +2 -2
- package/dist/modules/manager/leiningen/extract.js.map +1 -1
- package/dist/modules/manager/maven-wrapper/artifacts.js +6 -6
- package/dist/modules/manager/maven-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/mise/backends.js +3 -3
- package/dist/modules/manager/mise/backends.js.map +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/npm/extract/common/dependency.js +2 -2
- package/dist/modules/manager/npm/extract/common/dependency.js.map +1 -1
- package/dist/modules/manager/npm/extract/post/locked-versions.js +2 -1
- package/dist/modules/manager/npm/extract/post/locked-versions.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +1 -1
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +2 -1
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +2 -2
- package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
- package/dist/modules/manager/npm/schema.js +2 -1
- package/dist/modules/manager/npm/schema.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/get-locked.js +2 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/get-locked.js.map +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/replace.js +1 -1
- package/dist/modules/manager/npm/update/locked-dependency/yarn-lock/replace.js.map +1 -1
- package/dist/modules/manager/nuget/extract.js +1 -1
- package/dist/modules/manager/nuget/extract.js.map +1 -1
- package/dist/modules/manager/nvm/extract.js +2 -1
- package/dist/modules/manager/nvm/extract.js.map +1 -1
- package/dist/modules/manager/osgi/extract.js +2 -1
- package/dist/modules/manager/osgi/extract.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +2 -1
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pip_requirements/extract.js +1 -1
- package/dist/modules/manager/pip_requirements/extract.js.map +1 -1
- package/dist/modules/manager/pip_setup/extract.js +3 -3
- package/dist/modules/manager/pip_setup/extract.js.map +1 -1
- package/dist/modules/manager/pixi/schema.js +2 -1
- package/dist/modules/manager/pixi/schema.js.map +1 -1
- package/dist/modules/manager/setup-cfg/extract.js +1 -1
- package/dist/modules/manager/setup-cfg/extract.js.map +1 -1
- package/dist/modules/manager/sveltos/util.js +1 -1
- package/dist/modules/manager/sveltos/util.js.map +1 -1
- package/dist/modules/manager/typst/extract.js +2 -2
- package/dist/modules/manager/typst/extract.js.map +1 -1
- package/dist/modules/platform/azure/issue.js +2 -1
- package/dist/modules/platform/azure/issue.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js +1 -1
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/schema.js +2 -1
- package/dist/modules/platform/bitbucket/schema.js.map +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js +2 -1
- package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
- package/dist/modules/platform/gerrit/utils.js +1 -1
- package/dist/modules/platform/gerrit/utils.js.map +1 -1
- package/dist/modules/platform/github/index.js +8 -8
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/github/massage-markdown-links.js +6 -3
- package/dist/modules/platform/github/massage-markdown-links.js.map +1 -1
- package/dist/modules/versioning/apk/index.js +15 -15
- package/dist/modules/versioning/apk/index.js.map +1 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.js +3 -2
- package/dist/modules/versioning/bazel-module/bzlmod-version.js.map +1 -1
- package/dist/modules/versioning/bazel-module/index.js +2 -1
- package/dist/modules/versioning/bazel-module/index.js.map +1 -1
- package/dist/modules/versioning/composer/index.js +2 -2
- package/dist/modules/versioning/composer/index.js.map +1 -1
- package/dist/modules/versioning/conan/range.js +4 -3
- package/dist/modules/versioning/conan/range.js.map +1 -1
- package/dist/modules/versioning/conda/index.js +4 -3
- package/dist/modules/versioning/conda/index.js.map +1 -1
- package/dist/modules/versioning/distro.js +2 -1
- package/dist/modules/versioning/distro.js.map +1 -1
- package/dist/modules/versioning/generic.js +2 -1
- package/dist/modules/versioning/generic.js.map +1 -1
- package/dist/modules/versioning/hashicorp/convertor.js +1 -1
- package/dist/modules/versioning/hashicorp/convertor.js.map +1 -1
- package/dist/modules/versioning/npm/range.js +1 -1
- package/dist/modules/versioning/npm/range.js.map +1 -1
- package/dist/modules/versioning/nuget/range.js +2 -1
- package/dist/modules/versioning/nuget/range.js.map +1 -1
- package/dist/modules/versioning/perl/index.js +1 -1
- package/dist/modules/versioning/perl/index.js.map +1 -1
- package/dist/modules/versioning/poetry/transform.js +2 -2
- package/dist/modules/versioning/poetry/transform.js.map +1 -1
- package/dist/modules/versioning/rez/pattern.js.map +1 -1
- package/dist/modules/versioning/ruby/index.js +1 -1
- package/dist/modules/versioning/ruby/index.js.map +1 -1
- package/dist/modules/versioning/semver/index.js +2 -1
- package/dist/modules/versioning/semver/index.js.map +1 -1
- package/dist/modules/versioning/semver-coerced/index.js +1 -1
- package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
- package/dist/util/emoji.js.map +1 -1
- package/dist/util/exec/containerbase.js +2 -1
- package/dist/util/exec/containerbase.js.map +1 -1
- package/dist/util/exec/env.js +2 -1
- package/dist/util/exec/env.js.map +1 -1
- package/dist/util/git/private-key.js +1 -1
- package/dist/util/git/private-key.js.map +1 -1
- package/dist/util/github/graphql/datasource-fetcher.js +2 -1
- package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
- package/dist/util/http/forgejo.js +2 -1
- package/dist/util/http/forgejo.js.map +1 -1
- package/dist/util/http/gitea.js +2 -1
- package/dist/util/http/gitea.js.map +1 -1
- package/dist/util/number.js +2 -1
- package/dist/util/number.js.map +1 -1
- package/dist/util/string-match.js +1 -1
- package/dist/util/string-match.js.map +1 -1
- package/dist/util/url.js +2 -2
- package/dist/util/url.js.map +1 -1
- package/dist/workers/global/config/parse/cli.js +1 -1
- package/dist/workers/global/config/parse/cli.js.map +1 -1
- package/dist/workers/global/config/parse/coersions.js +2 -1
- package/dist/workers/global/config/parse/coersions.js.map +1 -1
- package/dist/workers/global/config/parse/host-rules-from-env.js +2 -1
- package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
- package/dist/workers/repository/model/commit-message.js +2 -1
- package/dist/workers/repository/model/commit-message.js.map +1 -1
- package/dist/workers/repository/model/semantic-commit-message.js +2 -1
- package/dist/workers/repository/model/semantic-commit-message.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/common.js +1 -1
- package/dist/workers/repository/update/pr/changelog/common.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +1 -1
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { regEx } from "../../../../util/regex.js";
|
|
1
2
|
import { logger } from "../../../../logger/index.js";
|
|
2
3
|
import { getDatasourceList } from "../../../../modules/datasource/index.js";
|
|
3
4
|
//#region lib/workers/global/config/parse/host-rules-from-env.ts
|
|
@@ -40,7 +41,7 @@ function hostRulesFromEnv(env) {
|
|
|
40
41
|
logger.trace(`Ignoring npm env: ${envName}`);
|
|
41
42
|
continue;
|
|
42
43
|
}
|
|
43
|
-
const splitEnv = envName.replace(/^RENOVATE_
|
|
44
|
+
const splitEnv = envName.replace(regEx(/^RENOVATE_/), "").toLowerCase().replace(regEx(/__/g), "-").split("_");
|
|
44
45
|
const hostType = splitEnv.shift();
|
|
45
46
|
if (datasources.has(hostType) || platforms.has(hostType) && splitEnv.length > 1) {
|
|
46
47
|
let suffix = splitEnv.pop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-rules-from-env.js","names":[],"sources":["../../../../../lib/workers/global/config/parse/host-rules-from-env.ts"],"sourcesContent":["import { logger } from '../../../../logger/index.ts';\nimport { getDatasourceList } from '../../../../modules/datasource/index.ts';\nimport type { HostRule } from '../../../../types/index.ts';\n\ntype AuthField = 'token' | 'username' | 'password';\n\ntype HttpsAuthField =\n | 'httpscertificate'\n | 'httpsprivatekey'\n | 'httpscertificateauthority';\n\nfunction isAuthField(x: unknown): x is AuthField {\n return x === 'token' || x === 'username' || x === 'password';\n}\n\nfunction isHttpsAuthField(x: unknown): x is HttpsAuthField {\n return (\n x === 'httpscertificate' ||\n x === 'httpsprivatekey' ||\n x === 'httpscertificateauthority'\n );\n}\n\nfunction restoreHttpsAuthField(x: HttpsAuthField | AuthField): string {\n switch (x) {\n case 'httpsprivatekey':\n return 'httpsPrivateKey';\n case 'httpscertificate':\n return 'httpsCertificate';\n case 'httpscertificateauthority':\n return 'httpsCertificateAuthority';\n }\n\n return x;\n}\n\nfunction setHostRuleValue(\n rule: HostRule,\n key: string,\n value: string | undefined,\n): void {\n if (value !== undefined) {\n switch (key) {\n case 'token':\n case 'username':\n case 'password':\n case 'httpsCertificateAuthority':\n case 'httpsCertificate':\n case 'httpsPrivateKey':\n rule[key] = value;\n }\n }\n}\n\nexport function hostRulesFromEnv(env: NodeJS.ProcessEnv): HostRule[] {\n const datasources = new Set(getDatasourceList());\n const platforms = new Set(['github']);\n\n const hostRules: HostRule[] = [];\n\n const npmEnvPrefixes = ['npm_config_', 'npm_lifecycle_', 'npm_package_'];\n\n for (const envName of Object.keys(env).sort()) {\n if (['GITHUB_COM_TOKEN', 'RENOVATE_GITHUB_COM_TOKEN'].includes(envName)) {\n continue;\n }\n if (npmEnvPrefixes.some((prefix) => envName.startsWith(prefix))) {\n logger.trace(`Ignoring npm env: ${envName}`);\n continue;\n }\n // Double underscore __ is used in place of hyphen -\n const splitEnv = envName\n .replace(/^RENOVATE_
|
|
1
|
+
{"version":3,"file":"host-rules-from-env.js","names":[],"sources":["../../../../../lib/workers/global/config/parse/host-rules-from-env.ts"],"sourcesContent":["import { logger } from '../../../../logger/index.ts';\nimport { getDatasourceList } from '../../../../modules/datasource/index.ts';\nimport type { HostRule } from '../../../../types/index.ts';\nimport { regEx } from '../../../../util/regex.ts';\n\ntype AuthField = 'token' | 'username' | 'password';\n\ntype HttpsAuthField =\n | 'httpscertificate'\n | 'httpsprivatekey'\n | 'httpscertificateauthority';\n\nfunction isAuthField(x: unknown): x is AuthField {\n return x === 'token' || x === 'username' || x === 'password';\n}\n\nfunction isHttpsAuthField(x: unknown): x is HttpsAuthField {\n return (\n x === 'httpscertificate' ||\n x === 'httpsprivatekey' ||\n x === 'httpscertificateauthority'\n );\n}\n\nfunction restoreHttpsAuthField(x: HttpsAuthField | AuthField): string {\n switch (x) {\n case 'httpsprivatekey':\n return 'httpsPrivateKey';\n case 'httpscertificate':\n return 'httpsCertificate';\n case 'httpscertificateauthority':\n return 'httpsCertificateAuthority';\n }\n\n return x;\n}\n\nfunction setHostRuleValue(\n rule: HostRule,\n key: string,\n value: string | undefined,\n): void {\n if (value !== undefined) {\n switch (key) {\n case 'token':\n case 'username':\n case 'password':\n case 'httpsCertificateAuthority':\n case 'httpsCertificate':\n case 'httpsPrivateKey':\n rule[key] = value;\n }\n }\n}\n\nexport function hostRulesFromEnv(env: NodeJS.ProcessEnv): HostRule[] {\n const datasources = new Set(getDatasourceList());\n const platforms = new Set(['github']);\n\n const hostRules: HostRule[] = [];\n\n const npmEnvPrefixes = ['npm_config_', 'npm_lifecycle_', 'npm_package_'];\n\n for (const envName of Object.keys(env).sort()) {\n if (['GITHUB_COM_TOKEN', 'RENOVATE_GITHUB_COM_TOKEN'].includes(envName)) {\n continue;\n }\n if (npmEnvPrefixes.some((prefix) => envName.startsWith(prefix))) {\n logger.trace(`Ignoring npm env: ${envName}`);\n continue;\n }\n // Double underscore __ is used in place of hyphen -\n const splitEnv = envName\n .replace(regEx(/^RENOVATE_/), '')\n .toLowerCase()\n .replace(regEx(/__/g), '-')\n .split('_');\n const hostType = splitEnv.shift()!;\n if (\n datasources.has(hostType) ||\n (platforms.has(hostType) && splitEnv.length > 1)\n ) {\n let suffix = splitEnv.pop()!;\n if (isAuthField(suffix) || isHttpsAuthField(suffix)) {\n suffix = restoreHttpsAuthField(suffix);\n\n let matchHost: string | undefined = undefined;\n const rule: HostRule = {};\n setHostRuleValue(rule, suffix, env[envName]);\n if (splitEnv.length === 0) {\n // host-less rule\n } else if (splitEnv.length === 1) {\n logger.warn({ env: envName }, 'Cannot parse env');\n continue;\n } else {\n matchHost = splitEnv.join('.');\n }\n const existingRule = hostRules.find(\n (hr) => hr.hostType === hostType && hr.matchHost === matchHost,\n );\n logger.debug(`Converting ${envName} into a global host rule`);\n if (existingRule) {\n // Add current field to existing rule\n setHostRuleValue(existingRule, suffix, env[envName]);\n } else {\n // Create a new rule\n const newRule: HostRule = {\n hostType,\n };\n if (matchHost) {\n newRule.matchHost = matchHost;\n }\n setHostRuleValue(newRule, suffix, env[envName]);\n hostRules.push(newRule);\n }\n }\n }\n }\n return hostRules;\n}\n"],"mappings":";;;;AAYA,SAAS,YAAY,GAA4B;CAC/C,OAAO,MAAM,WAAW,MAAM,cAAc,MAAM;AACpD;AAEA,SAAS,iBAAiB,GAAiC;CACzD,OACE,MAAM,sBACN,MAAM,qBACN,MAAM;AAEV;AAEA,SAAS,sBAAsB,GAAuC;CACpE,QAAQ,GAAR;EACE,KAAK,mBACH,OAAO;EACT,KAAK,oBACH,OAAO;EACT,KAAK,6BACH,OAAO;CACX;CAEA,OAAO;AACT;AAEA,SAAS,iBACP,MACA,KACA,OACM;CACN,IAAI,UAAU,KAAA,GACZ,QAAQ,KAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,mBACH,KAAK,OAAO;CAChB;AAEJ;AAEA,SAAgB,iBAAiB,KAAoC;CACnE,MAAM,cAAc,IAAI,IAAI,kBAAkB,CAAC;CAC/C,MAAM,4BAAY,IAAI,IAAI,CAAC,QAAQ,CAAC;CAEpC,MAAM,YAAwB,CAAC;CAE/B,MAAM,iBAAiB;EAAC;EAAe;EAAkB;CAAc;CAEvE,KAAK,MAAM,WAAW,OAAO,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;EAC7C,IAAI,CAAC,oBAAoB,2BAA2B,CAAC,CAAC,SAAS,OAAO,GACpE;EAEF,IAAI,eAAe,MAAM,WAAW,QAAQ,WAAW,MAAM,CAAC,GAAG;GAC/D,OAAO,MAAM,qBAAqB,SAAS;GAC3C;EACF;EAEA,MAAM,WAAW,QACd,QAAQ,MAAM,YAAY,GAAG,EAAE,CAAC,CAChC,YAAY,CAAC,CACb,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,CAC1B,MAAM,GAAG;EACZ,MAAM,WAAW,SAAS,MAAM;EAChC,IACE,YAAY,IAAI,QAAQ,KACvB,UAAU,IAAI,QAAQ,KAAK,SAAS,SAAS,GAC9C;GACA,IAAI,SAAS,SAAS,IAAI;GAC1B,IAAI,YAAY,MAAM,KAAK,iBAAiB,MAAM,GAAG;IACnD,SAAS,sBAAsB,MAAM;IAErC,IAAI,YAAgC,KAAA;IAEpC,iBAAiB,CAAG,GAAG,QAAQ,IAAI,QAAQ;IAC3C,IAAI,SAAS,WAAW,GAAG,CAE3B,OAAO,IAAI,SAAS,WAAW,GAAG;KAChC,OAAO,KAAK,EAAE,KAAK,QAAQ,GAAG,kBAAkB;KAChD;IACF,OACE,YAAY,SAAS,KAAK,GAAG;IAE/B,MAAM,eAAe,UAAU,MAC5B,OAAO,GAAG,aAAa,YAAY,GAAG,cAAc,SACvD;IACA,OAAO,MAAM,cAAc,QAAQ,yBAAyB;IAC5D,IAAI,cAEF,iBAAiB,cAAc,QAAQ,IAAI,QAAQ;SAC9C;KAEL,MAAM,UAAoB,EACxB,SACF;KACA,IAAI,WACF,QAAQ,YAAY;KAEtB,iBAAiB,SAAS,QAAQ,IAAI,QAAQ;KAC9C,UAAU,KAAK,OAAO;IACxB;GACF;EACF;CACF;CACA,OAAO;AACT"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { regEx } from "../../../util/regex.js";
|
|
1
2
|
import { isNonEmptyStringAndNotWhitespace } from "@sindresorhus/is";
|
|
2
3
|
//#region lib/workers/repository/model/commit-message.ts
|
|
3
4
|
/**
|
|
@@ -9,7 +10,7 @@ import { isNonEmptyStringAndNotWhitespace } from "@sindresorhus/is";
|
|
|
9
10
|
*/
|
|
10
11
|
var CommitMessage = class CommitMessage {
|
|
11
12
|
static SEPARATOR = ":";
|
|
12
|
-
static EXTRA_WHITESPACES = /\s+/g;
|
|
13
|
+
static EXTRA_WHITESPACES = regEx(/\s+/g);
|
|
13
14
|
_body = "";
|
|
14
15
|
_footer = "";
|
|
15
16
|
_subject = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit-message.js","names":[],"sources":["../../../../lib/workers/repository/model/commit-message.ts"],"sourcesContent":["import { isNonEmptyStringAndNotWhitespace } from '@sindresorhus/is';\nimport type { CommitMessageJSON } from '../../../types/index.ts';\n\n/**\n * @see https://git-scm.com/docs/git-commit#_discussion\n *\n * [optional prefix]: <suject>\n * [optional body]\n * [optional footer]\n */\nexport abstract class CommitMessage {\n private static readonly SEPARATOR: string = ':';\n private static readonly EXTRA_WHITESPACES = /\\s+/g;\n\n private _body = '';\n private _footer = '';\n private _subject = '';\n\n static formatPrefix(prefix: string): string {\n if (!prefix) {\n return '';\n }\n\n if (prefix.endsWith(CommitMessage.SEPARATOR)) {\n return prefix;\n }\n\n return `${prefix}${CommitMessage.SEPARATOR}`;\n }\n\n toJSON(): CommitMessageJSON {\n return {\n body: this._body,\n footer: this._footer,\n subject: this._subject,\n };\n }\n\n toString(): string {\n const parts: readonly (string | undefined)[] = [\n this.title,\n this._body,\n this._footer,\n ];\n\n return parts.filter(isNonEmptyStringAndNotWhitespace).join('\\n\\n');\n }\n\n get title(): string {\n return [CommitMessage.formatPrefix(this.prefix), this.formatSubject()]\n .join(' ')\n .trim();\n }\n\n set body(value: string) {\n this._body = this.normalizeInput(value);\n }\n\n set footer(value: string) {\n this._footer = this.normalizeInput(value);\n }\n\n set subject(value: string) {\n this._subject = this.normalizeInput(value);\n this._subject = this._subject?.replace(\n CommitMessage.EXTRA_WHITESPACES,\n ' ',\n );\n }\n\n formatSubject(): string {\n if (!this._subject) {\n return '';\n }\n\n if (this.prefix) {\n return this._subject.charAt(0).toLowerCase() + this._subject.slice(1);\n }\n\n return this._subject.charAt(0).toUpperCase() + this._subject.slice(1);\n }\n\n protected abstract get prefix(): string;\n\n protected normalizeInput(value: string | null | undefined): string {\n return value?.trim() ?? '';\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"commit-message.js","names":[],"sources":["../../../../lib/workers/repository/model/commit-message.ts"],"sourcesContent":["import { isNonEmptyStringAndNotWhitespace } from '@sindresorhus/is';\nimport type { CommitMessageJSON } from '../../../types/index.ts';\nimport { regEx } from '../../../util/regex.ts';\n\n/**\n * @see https://git-scm.com/docs/git-commit#_discussion\n *\n * [optional prefix]: <suject>\n * [optional body]\n * [optional footer]\n */\nexport abstract class CommitMessage {\n private static readonly SEPARATOR: string = ':';\n private static readonly EXTRA_WHITESPACES = regEx(/\\s+/g);\n\n private _body = '';\n private _footer = '';\n private _subject = '';\n\n static formatPrefix(prefix: string): string {\n if (!prefix) {\n return '';\n }\n\n if (prefix.endsWith(CommitMessage.SEPARATOR)) {\n return prefix;\n }\n\n return `${prefix}${CommitMessage.SEPARATOR}`;\n }\n\n toJSON(): CommitMessageJSON {\n return {\n body: this._body,\n footer: this._footer,\n subject: this._subject,\n };\n }\n\n toString(): string {\n const parts: readonly (string | undefined)[] = [\n this.title,\n this._body,\n this._footer,\n ];\n\n return parts.filter(isNonEmptyStringAndNotWhitespace).join('\\n\\n');\n }\n\n get title(): string {\n return [CommitMessage.formatPrefix(this.prefix), this.formatSubject()]\n .join(' ')\n .trim();\n }\n\n set body(value: string) {\n this._body = this.normalizeInput(value);\n }\n\n set footer(value: string) {\n this._footer = this.normalizeInput(value);\n }\n\n set subject(value: string) {\n this._subject = this.normalizeInput(value);\n this._subject = this._subject?.replace(\n CommitMessage.EXTRA_WHITESPACES,\n ' ',\n );\n }\n\n formatSubject(): string {\n if (!this._subject) {\n return '';\n }\n\n if (this.prefix) {\n return this._subject.charAt(0).toLowerCase() + this._subject.slice(1);\n }\n\n return this._subject.charAt(0).toUpperCase() + this._subject.slice(1);\n }\n\n protected abstract get prefix(): string;\n\n protected normalizeInput(value: string | null | undefined): string {\n return value?.trim() ?? '';\n }\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAsB,gBAAtB,MAAsB,cAAc;CAClC,OAAwB,YAAoB;CAC5C,OAAwB,oBAAoB,MAAM,MAAM;CAExD,QAAgB;CAChB,UAAkB;CAClB,WAAmB;CAEnB,OAAO,aAAa,QAAwB;EAC1C,IAAI,CAAC,QACH,OAAO;EAGT,IAAI,OAAO,SAAS,cAAc,SAAS,GACzC,OAAO;EAGT,OAAO,GAAG,SAAS,cAAc;CACnC;CAEA,SAA4B;EAC1B,OAAO;GACL,MAAM,KAAK;GACX,QAAQ,KAAK;GACb,SAAS,KAAK;EAChB;CACF;CAEA,WAAmB;EAOjB,OAAO;GALL,KAAK;GACL,KAAK;GACL,KAAK;EAGI,CAAC,CAAC,OAAO,gCAAgC,CAAC,CAAC,KAAK,MAAM;CACnE;CAEA,IAAI,QAAgB;EAClB,OAAO,CAAC,cAAc,aAAa,KAAK,MAAM,GAAG,KAAK,cAAc,CAAC,CAAC,CACnE,KAAK,GAAG,CAAC,CACT,KAAK;CACV;CAEA,IAAI,KAAK,OAAe;EACtB,KAAK,QAAQ,KAAK,eAAe,KAAK;CACxC;CAEA,IAAI,OAAO,OAAe;EACxB,KAAK,UAAU,KAAK,eAAe,KAAK;CAC1C;CAEA,IAAI,QAAQ,OAAe;EACzB,KAAK,WAAW,KAAK,eAAe,KAAK;EACzC,KAAK,WAAW,KAAK,UAAU,QAC7B,cAAc,mBACd,GACF;CACF;CAEA,gBAAwB;EACtB,IAAI,CAAC,KAAK,UACR,OAAO;EAGT,IAAI,KAAK,QACP,OAAO,KAAK,SAAS,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,KAAK,SAAS,MAAM,CAAC;EAGtE,OAAO,KAAK,SAAS,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,KAAK,SAAS,MAAM,CAAC;CACtE;CAIA,eAAyB,OAA0C;EACjE,OAAO,OAAO,KAAK,KAAK;CAC1B;AACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { regEx } from "../../../util/regex.js";
|
|
1
2
|
import { CommitMessage } from "./commit-message.js";
|
|
2
3
|
//#region lib/workers/repository/model/semantic-commit-message.ts
|
|
3
4
|
/**
|
|
@@ -8,7 +9,7 @@ import { CommitMessage } from "./commit-message.js";
|
|
|
8
9
|
* [optional footer]
|
|
9
10
|
*/
|
|
10
11
|
var SemanticCommitMessage = class SemanticCommitMessage extends CommitMessage {
|
|
11
|
-
static REGEXP = /^(?<type>[\w]+)(\((?<scope>[\w-]+)\))?(?<breaking>!)?: ((?<issue>([A-Z]+-|#)[\d]+) )?(?<description>.*)
|
|
12
|
+
static REGEXP = regEx(/^(?<type>[\w]+)(\((?<scope>[\w-]+)\))?(?<breaking>!)?: ((?<issue>([A-Z]+-|#)[\d]+) )?(?<description>.*)/);
|
|
12
13
|
_scope = "";
|
|
13
14
|
_type = "";
|
|
14
15
|
static is(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-commit-message.js","names":[],"sources":["../../../../lib/workers/repository/model/semantic-commit-message.ts"],"sourcesContent":["import type { CommitMessageJSON } from '../../../types/index.ts';\nimport { CommitMessage } from './commit-message.ts';\n\nexport interface SemanticCommitMessageJSON extends CommitMessageJSON {\n scope?: string;\n type?: string;\n}\n\n/**\n * @see https://www.conventionalcommits.org/en/v1.0.0/#summary\n *\n * <type>[optional scope]: <description>\n * [optional body]\n * [optional footer]\n */\nexport class SemanticCommitMessage extends CommitMessage {\n private static readonly REGEXP
|
|
1
|
+
{"version":3,"file":"semantic-commit-message.js","names":[],"sources":["../../../../lib/workers/repository/model/semantic-commit-message.ts"],"sourcesContent":["import type { CommitMessageJSON } from '../../../types/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { CommitMessage } from './commit-message.ts';\n\nexport interface SemanticCommitMessageJSON extends CommitMessageJSON {\n scope?: string;\n type?: string;\n}\n\n/**\n * @see https://www.conventionalcommits.org/en/v1.0.0/#summary\n *\n * <type>[optional scope]: <description>\n * [optional body]\n * [optional footer]\n */\nexport class SemanticCommitMessage extends CommitMessage {\n private static readonly REGEXP = regEx(\n /^(?<type>[\\w]+)(\\((?<scope>[\\w-]+)\\))?(?<breaking>!)?: ((?<issue>([A-Z]+-|#)[\\d]+) )?(?<description>.*)/,\n );\n\n private _scope = '';\n private _type = '';\n\n static is(value: unknown): value is SemanticCommitMessage {\n return value instanceof SemanticCommitMessage;\n }\n\n static fromString(value: string): SemanticCommitMessage | undefined {\n const match = value.match(SemanticCommitMessage.REGEXP);\n\n if (!match?.groups) {\n return undefined;\n }\n\n const { groups } = match;\n const message = new SemanticCommitMessage();\n message.type = groups.type;\n message.scope = groups.scope;\n message.subject = groups.description;\n\n return message;\n }\n\n override toJSON(): SemanticCommitMessageJSON {\n const json = super.toJSON();\n\n return {\n ...json,\n scope: this._scope,\n type: this._type,\n };\n }\n\n set scope(value: string) {\n this._scope = this.normalizeInput(value);\n }\n\n set type(value: string) {\n this._type = this.normalizeInput(value);\n }\n\n protected get prefix(): string {\n if (this._type && !this._scope) {\n return this._type;\n }\n\n if (this._scope) {\n return `${this._type}(${this._scope})`;\n }\n\n return '';\n }\n}\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,wBAAb,MAAa,8BAA8B,cAAc;CACvD,OAAwB,SAAS,MAC/B,yGACF;CAEA,SAAiB;CACjB,QAAgB;CAEhB,OAAO,GAAG,OAAgD;EACxD,OAAO,iBAAiB;CAC1B;CAEA,OAAO,WAAW,OAAkD;EAClE,MAAM,QAAQ,MAAM,MAAM,sBAAsB,MAAM;EAEtD,IAAI,CAAC,OAAO,QACV;EAGF,MAAM,EAAE,WAAW;EACnB,MAAM,UAAU,IAAI,sBAAsB;EAC1C,QAAQ,OAAO,OAAO;EACtB,QAAQ,QAAQ,OAAO;EACvB,QAAQ,UAAU,OAAO;EAEzB,OAAO;CACT;CAEA,SAA6C;EAG3C,OAAO;GACL,GAHW,MAAM,OAGX;GACN,OAAO,KAAK;GACZ,MAAM,KAAK;EACb;CACF;CAEA,IAAI,MAAM,OAAe;EACvB,KAAK,SAAS,KAAK,eAAe,KAAK;CACzC;CAEA,IAAI,KAAK,OAAe;EACtB,KAAK,QAAQ,KAAK,eAAe,KAAK;CACxC;CAEA,IAAc,SAAiB;EAC7B,IAAI,KAAK,SAAS,CAAC,KAAK,QACtB,OAAO,KAAK;EAGd,IAAI,KAAK,QACP,OAAO,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO;EAGtC,OAAO;CACT;AACF"}
|
|
@@ -33,7 +33,7 @@ function slugifyUrl(url) {
|
|
|
33
33
|
* @param b path to changelog file
|
|
34
34
|
*/
|
|
35
35
|
function compareChangelogFilePath(a, b) {
|
|
36
|
-
const preferedChangelogRegexList = [/\.(?:md|markdown|mkd)$/i, /\.(?:txt|text)$/i];
|
|
36
|
+
const preferedChangelogRegexList = [regEx(/\.(?:md|markdown|mkd)$/i), regEx(/\.(?:txt|text)$/i)];
|
|
37
37
|
const aPreferedIndex = preferedChangelogRegexList.findIndex((f) => f.test(a));
|
|
38
38
|
const bPreferedIndex = preferedChangelogRegexList.findIndex((f) => f.test(b));
|
|
39
39
|
if (aPreferedIndex === bPreferedIndex) return a.localeCompare(b);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","names":[],"sources":["../../../../../../lib/workers/repository/update/pr/changelog/common.ts"],"sourcesContent":["import _slugify from 'slugify';\nimport { regEx } from '../../../../../util/regex.ts';\n\nconst slugify = _slugify;\n\nexport function slugifyUrl(url: string): string {\n const r = regEx(/[:/.]+/g);\n return slugify(url.replace(r, ' '));\n}\n\n/**\n * A comparator function to sort changelog files by preference,\n * prioritizing markdown files and plain text files over other file types.\n *\n * Avoid selecting files like `CHANGELOG.json` when `CHANGELOG.md` is available.\n * @see https://github.com/renovatebot/renovate/issues/25830\n *\n * @example\n * ```\n * const changelogFiles = [\n * 'CHANGELOG.json',\n * 'CHANGELOG',\n * 'CHANGELOG.md',\n * ].sort(compareChangelogFilePath);\n *\n * console.log(changelogFiles); // =>\n * [\n * 'CHANGELOG.md',\n * 'CHANGELOG',\n * 'CHANGELOG.json',\n * ]\n * ```\n *\n * @param a path to changelog file\n * @param b path to changelog file\n */\nexport function compareChangelogFilePath(a: string, b: string): number {\n const preferedChangelogRegexList = [\n /\\.(?:md|markdown|mkd)$/i,\n /\\.(?:txt|text)$/i,\n ];\n\n const aPreferedIndex = preferedChangelogRegexList.findIndex((f) => f.test(a));\n const bPreferedIndex = preferedChangelogRegexList.findIndex((f) => f.test(b));\n if (aPreferedIndex === bPreferedIndex) {\n return a.localeCompare(b);\n }\n if (aPreferedIndex >= 0 && bPreferedIndex >= 0) {\n return aPreferedIndex - bPreferedIndex;\n }\n return aPreferedIndex >= 0 ? -1 : 1;\n}\n"],"mappings":";;;AAGA,MAAM,UAAU;AAEhB,SAAgB,WAAW,KAAqB;CAC9C,MAAM,IAAI,MAAM,SAAS;CACzB,OAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC;AACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,SAAgB,yBAAyB,GAAW,GAAmB;CACrE,MAAM,6BAA6B,CACjC,
|
|
1
|
+
{"version":3,"file":"common.js","names":[],"sources":["../../../../../../lib/workers/repository/update/pr/changelog/common.ts"],"sourcesContent":["import _slugify from 'slugify';\nimport { regEx } from '../../../../../util/regex.ts';\n\nconst slugify = _slugify;\n\nexport function slugifyUrl(url: string): string {\n const r = regEx(/[:/.]+/g);\n return slugify(url.replace(r, ' '));\n}\n\n/**\n * A comparator function to sort changelog files by preference,\n * prioritizing markdown files and plain text files over other file types.\n *\n * Avoid selecting files like `CHANGELOG.json` when `CHANGELOG.md` is available.\n * @see https://github.com/renovatebot/renovate/issues/25830\n *\n * @example\n * ```\n * const changelogFiles = [\n * 'CHANGELOG.json',\n * 'CHANGELOG',\n * 'CHANGELOG.md',\n * ].sort(compareChangelogFilePath);\n *\n * console.log(changelogFiles); // =>\n * [\n * 'CHANGELOG.md',\n * 'CHANGELOG',\n * 'CHANGELOG.json',\n * ]\n * ```\n *\n * @param a path to changelog file\n * @param b path to changelog file\n */\nexport function compareChangelogFilePath(a: string, b: string): number {\n const preferedChangelogRegexList = [\n regEx(/\\.(?:md|markdown|mkd)$/i),\n regEx(/\\.(?:txt|text)$/i),\n ];\n\n const aPreferedIndex = preferedChangelogRegexList.findIndex((f) => f.test(a));\n const bPreferedIndex = preferedChangelogRegexList.findIndex((f) => f.test(b));\n if (aPreferedIndex === bPreferedIndex) {\n return a.localeCompare(b);\n }\n if (aPreferedIndex >= 0 && bPreferedIndex >= 0) {\n return aPreferedIndex - bPreferedIndex;\n }\n return aPreferedIndex >= 0 ? -1 : 1;\n}\n"],"mappings":";;;AAGA,MAAM,UAAU;AAEhB,SAAgB,WAAW,KAAqB;CAC9C,MAAM,IAAI,MAAM,SAAS;CACzB,OAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC;AACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,SAAgB,yBAAyB,GAAW,GAAmB;CACrE,MAAM,6BAA6B,CACjC,MAAM,yBAAyB,GAC/B,MAAM,kBAAkB,CAC1B;CAEA,MAAM,iBAAiB,2BAA2B,WAAW,MAAM,EAAE,KAAK,CAAC,CAAC;CAC5E,MAAM,iBAAiB,2BAA2B,WAAW,MAAM,EAAE,KAAK,CAAC,CAAC;CAC5E,IAAI,mBAAmB,gBACrB,OAAO,EAAE,cAAc,CAAC;CAE1B,IAAI,kBAAkB,KAAK,kBAAkB,GAC3C,OAAO,iBAAiB;CAE1B,OAAO,kBAAkB,IAAI,KAAK;AACpC"}
|
|
@@ -18,7 +18,7 @@ function prettifyVersion(version) {
|
|
|
18
18
|
return version;
|
|
19
19
|
}
|
|
20
20
|
function isTypesGroup(branchUpgrades) {
|
|
21
|
-
return branchUpgrades.some(({ depName }) => depName?.startsWith("@types/")) && new Set(branchUpgrades.map(({ depName }) => depName?.replace(/^@types
|
|
21
|
+
return branchUpgrades.some(({ depName }) => depName?.startsWith("@types/")) && new Set(branchUpgrades.map(({ depName }) => depName?.replace(regEx(/^@types\//), ""))).size === 1;
|
|
22
22
|
}
|
|
23
23
|
function sortTypesGroup(upgrades) {
|
|
24
24
|
function isTypesUpgrade({ depName }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","names":["template.compile","template\n .compile"],"sources":["../../../../lib/workers/repository/updates/generate.ts"],"sourcesContent":["import { isArray, isNonEmptyString, isString } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { markdownTable } from 'markdown-table';\nimport semver from 'semver';\nimport { mergeChildConfig } from '../../../config/index.ts';\nimport { CONFIG_SECRETS_EXPOSED } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { sanitize } from '../../../util/sanitize.ts';\nimport { safeStringify } from '../../../util/stringify.ts';\nimport * as template from '../../../util/template/index.ts';\nimport type { Timestamp } from '../../../util/timestamp.ts';\nimport { uniq } from '../../../util/uniq.ts';\nimport type { BranchConfig, BranchUpgradeConfig } from '../../types.ts';\nimport { CommitMessage } from '../model/commit-message.ts';\n\nfunction prettifyVersion(version: string): string {\n if (regEx(/^\\d/).test(version)) {\n return `v${version}`;\n }\n\n return version;\n}\n\nfunction isTypesGroup(branchUpgrades: BranchUpgradeConfig[]): boolean {\n return (\n branchUpgrades.some(({ depName }) => depName?.startsWith('@types/')) &&\n new Set(\n branchUpgrades.map(({ depName }) => depName?.replace(/^@types\\//, '')),\n ).size === 1\n );\n}\n\nfunction sortTypesGroup(upgrades: BranchUpgradeConfig[]): void {\n function isTypesUpgrade({ depName }: BranchUpgradeConfig): boolean {\n return !!depName?.startsWith('@types/');\n }\n const regularUpgrades = upgrades.filter(\n (upgrade) => !isTypesUpgrade(upgrade),\n );\n const typesUpgrades = upgrades.filter(isTypesUpgrade);\n upgrades.splice(0, upgrades.length);\n upgrades.push(...regularUpgrades, ...typesUpgrades);\n}\n\nfunction getTableValues(upgrade: BranchUpgradeConfig): string[] | null {\n if (!upgrade.commitBodyTable) {\n return null;\n }\n const { datasource, packageName, depName, currentVersion, newVersion } =\n upgrade;\n const name = packageName ?? depName;\n if (datasource && name && currentVersion && newVersion) {\n return [datasource, name, currentVersion, newVersion];\n }\n logger.trace(\n {\n datasource,\n packageName,\n depName,\n currentVersion,\n newVersion,\n },\n 'Cannot determine table values',\n );\n return null;\n}\n\nfunction compileCommitMessage(upgrade: BranchUpgradeConfig): string {\n if (upgrade.semanticCommits === 'enabled' && !upgrade.commitMessagePrefix) {\n logger.trace('Upgrade has semantic commits enabled');\n let semanticPrefix = upgrade.semanticCommitType;\n if (upgrade.semanticCommitScope) {\n semanticPrefix += `(${template.compile(\n upgrade.semanticCommitScope,\n upgrade,\n )})`;\n }\n upgrade.commitMessagePrefix = CommitMessage.formatPrefix(semanticPrefix!);\n upgrade.toLowerCase =\n regEx(/[A-Z]/).exec(upgrade.semanticCommitType!) === null &&\n !upgrade.semanticCommitType!.startsWith(':');\n }\n\n // Compile a few times in case there are nested templates\n upgrade.commitMessage = template.compile(\n upgrade.commitMessage ?? '',\n upgrade,\n );\n upgrade.commitMessage = template.compile(upgrade.commitMessage, upgrade);\n upgrade.commitMessage = template.compile(upgrade.commitMessage, upgrade);\n // istanbul ignore if\n if (upgrade.commitMessage !== sanitize(upgrade.commitMessage)) {\n logger.debug(\n { branchName: upgrade.branchName },\n 'Secrets exposed in commit message',\n );\n throw new Error(CONFIG_SECRETS_EXPOSED);\n }\n upgrade.commitMessage = upgrade.commitMessage.trim(); // Trim exterior whitespace\n upgrade.commitMessage = upgrade.commitMessage.replace(regEx(/\\s+/g), ' '); // Trim extra whitespace inside string\n upgrade.commitMessage = upgrade.commitMessage.replace(\n regEx(/to vv(\\d)/),\n 'to v$1',\n );\n if (upgrade.toLowerCase && upgrade.commitMessageLowerCase !== 'never') {\n // We only need to lowercase the first line\n const splitMessage = upgrade.commitMessage.split(newlineRegex);\n splitMessage[0] = splitMessage[0].toLowerCase();\n upgrade.commitMessage = splitMessage.join('\\n');\n }\n\n logger.trace(`commitMessage: ${JSON.stringify(upgrade.commitMessage)}`);\n return upgrade.commitMessage;\n}\n\nfunction compilePrTitle(\n upgrade: BranchUpgradeConfig,\n commitMessage: string,\n): void {\n if (upgrade.prTitle) {\n upgrade.prTitle = template.compile(upgrade.prTitle, upgrade);\n upgrade.prTitle = template.compile(upgrade.prTitle, upgrade);\n upgrade.prTitle = template\n .compile(upgrade.prTitle, upgrade)\n .trim()\n .replace(regEx(/\\s+/g), ' ');\n // istanbul ignore if\n if (upgrade.prTitle !== sanitize(upgrade.prTitle)) {\n logger.debug(\n { branchName: upgrade.branchName },\n 'Secrets were exposed in PR title',\n );\n throw new Error(CONFIG_SECRETS_EXPOSED);\n }\n if (upgrade.toLowerCase && upgrade.commitMessageLowerCase !== 'never') {\n upgrade.prTitle = upgrade.prTitle.toLowerCase();\n }\n } else {\n [upgrade.prTitle] = commitMessage.split(newlineRegex);\n }\n if (!upgrade.prTitleStrict) {\n upgrade.prTitle += upgrade.hasBaseBranches ? ' ({{baseBranch}})' : '';\n if (upgrade.isGroup) {\n const hasVersionInTitle = !!semver.coerce(\n template.compile(upgrade.commitMessageExtra ?? '', upgrade),\n );\n if (!hasVersionInTitle) {\n upgrade.prTitle +=\n upgrade.updateType === 'major' && upgrade.separateMajorMinor\n ? ' (major)'\n : '';\n upgrade.prTitle +=\n upgrade.updateType === 'minor' && upgrade.separateMinorPatch\n ? ' (minor)'\n : '';\n upgrade.prTitle +=\n upgrade.updateType === 'patch' && upgrade.separateMinorPatch\n ? ' (patch)'\n : '';\n }\n }\n }\n // Compile again to allow for nested templates\n upgrade.prTitle = template.compile(upgrade.prTitle, upgrade);\n logger.trace(`prTitle: ${JSON.stringify(upgrade.prTitle)}`);\n}\n\nfunction getMinimumGroupSize(upgrades: BranchUpgradeConfig[]): number {\n let minimumGroupSize = 1;\n const groupSizes = new Set<number>();\n\n for (const upg of upgrades) {\n if (upg.minimumGroupSize) {\n groupSizes.add(upg.minimumGroupSize);\n if (minimumGroupSize < upg.minimumGroupSize) {\n minimumGroupSize = upg.minimumGroupSize;\n }\n }\n }\n\n if (groupSizes.size > 1) {\n logger.debug(\n 'Multiple minimumGroupSize values found for this branch, using highest.',\n );\n }\n\n return minimumGroupSize;\n}\n\n// Sorted by priority, from low to high\nconst semanticCommitTypeByPriority = ['chore', 'ci', 'build', 'fix', 'feat'];\n\nexport function generateBranchConfig(\n upgrades: BranchUpgradeConfig[],\n): BranchConfig {\n let branchUpgrades = upgrades;\n if (!branchUpgrades.every((upgrade) => upgrade.pendingChecks)) {\n // If the branch isn't pending, then remove any upgrades within which *are*\n logger.debug(\n { branch: branchUpgrades[0].branchName },\n 'Branch is not pending, removing pending upgrades',\n );\n branchUpgrades = branchUpgrades.filter((upgrade) => !upgrade.pendingChecks);\n }\n logger.trace({ config: branchUpgrades }, 'generateBranchConfig');\n let config: BranchConfig = {\n upgrades: [],\n } as any;\n const hasGroupName = branchUpgrades[0].groupName !== null;\n logger.trace(`hasGroupName: ${hasGroupName}`);\n // Use group settings only if multiple upgrades or lazy grouping is disabled\n const depNames: string[] = [];\n const newValue: string[] = [];\n const toVersions: string[] = [];\n const toValues = new Set<string>();\n const depTypes = new Set<string>();\n for (const upg of branchUpgrades) {\n upg.recreateClosed = upg.recreateWhen === 'always';\n\n if (upg.currentDigest) {\n upg.currentDigestShort =\n upg.currentDigestShort ??\n upg.currentDigest.replace('sha256:', '').substring(0, 7);\n }\n if (upg.newDigest) {\n upg.newDigestShort =\n upg.newDigestShort ??\n upg.newDigest.replace('sha256:', '').substring(0, 7);\n }\n if (upg.isDigest || upg.isPinDigest) {\n upg.displayFrom = upg.currentDigestShort;\n upg.displayTo = upg.newDigestShort;\n } else if (upg.isLockfileUpdate) {\n upg.displayFrom = upg.currentVersion;\n upg.displayTo = upg.newVersion;\n } else if (!upg.isLockFileMaintenance) {\n upg.displayFrom = upg.currentValue;\n upg.displayTo = upg.newValue;\n }\n\n if (upg.isLockFileMaintenance) {\n upg.recreateClosed = upg.recreateWhen !== 'never';\n }\n upg.displayFrom ??= '';\n upg.displayTo ??= '';\n if (!depNames.includes(upg.depName!)) {\n depNames.push(upg.depName!);\n }\n if (!toVersions.includes(upg.newVersion!)) {\n toVersions.push(upg.newVersion!);\n }\n toValues.add(upg.newValue!);\n if (upg.depType) {\n depTypes.add(upg.depType);\n }\n // prettify newVersion and newMajor for printing\n if (upg.newVersion) {\n upg.prettyNewVersion = prettifyVersion(upg.newVersion);\n }\n if (upg.newMajor) {\n upg.prettyNewMajor = `v${upg.newMajor}`;\n }\n if (upg.commitMessageExtra) {\n const extra = template.compile(upg.commitMessageExtra, upg);\n if (!newValue.includes(extra)) {\n newValue.push(extra);\n }\n }\n }\n const groupEligible =\n depNames.length > 1 ||\n toVersions.length > 1 ||\n (!toVersions[0] && newValue.length > 1);\n\n const typesGroup =\n depNames.length > 1 && !hasGroupName && isTypesGroup(branchUpgrades);\n logger.trace(`groupEligible: ${groupEligible}`);\n const singleUpdateGroup =\n hasGroupName && !groupEligible && !branchUpgrades[0].sharedVariableName;\n logger.trace(`singleUpdateGroup: ${singleUpdateGroup}`);\n const useGroupSettings =\n hasGroupName &&\n (groupEligible ||\n (singleUpdateGroup && branchUpgrades[0].groupSingleUpdates === true));\n logger.trace(`useGroupSettings: ${useGroupSettings}`);\n let releaseTimestamp: Timestamp;\n\n if (depTypes.size) {\n config.depTypes = Array.from(depTypes).sort();\n }\n\n for (const branchUpgrade of branchUpgrades) {\n let upgrade: BranchUpgradeConfig = { ...branchUpgrade };\n\n upgrade.depTypes = config.depTypes;\n\n // needs to be done for each upgrade, as we reorder them below\n if (newValue.length > 1 && !groupEligible) {\n upgrade.commitMessageExtra = `to v${toVersions[0]}`;\n }\n\n const pendingVersionsLength = upgrade.pendingVersions?.length;\n if (pendingVersionsLength) {\n upgrade.displayPending = `\\`${upgrade.pendingVersions!.at(-1)!}\\``;\n if (pendingVersionsLength > 1) {\n upgrade.displayPending += ` (+${pendingVersionsLength - 1})`;\n }\n } else {\n upgrade.displayPending = '';\n }\n upgrade.prettyDepType =\n upgrade.prettyDepType ?? upgrade.depType ?? 'dependency';\n if (useGroupSettings) {\n // Now overwrite original config with group config\n upgrade = mergeChildConfig(upgrade, upgrade.group);\n upgrade.isGroup = true;\n if (singleUpdateGroup) {\n // Single update using group name instead of dependency name,\n // so remove version from commit message.\n delete upgrade.commitMessageExtra;\n upgrade.recreateClosed = upgrade.recreateWhen !== 'never';\n }\n } else {\n delete upgrade.groupName;\n }\n // Delete group config regardless of whether it was applied\n delete upgrade.group;\n\n if (\n toVersions.length > 1 &&\n toValues.size > 1 &&\n newValue.length > 1 &&\n !typesGroup\n ) {\n logger.trace({ toVersions });\n logger.trace({ toValues });\n delete upgrade.commitMessageExtra;\n upgrade.recreateClosed = upgrade.recreateWhen !== 'never';\n } else if (\n newValue.length > 1 &&\n (upgrade.isDigest || upgrade.isPinDigest)\n ) {\n logger.trace({ newValue });\n delete upgrade.commitMessageExtra;\n upgrade.recreateClosed = upgrade.recreateWhen !== 'never';\n } else if (semver.valid(toVersions[0])) {\n upgrade.isRange = false;\n }\n config.upgrades.push(upgrade);\n if (upgrade.releaseTimestamp) {\n if (releaseTimestamp!) {\n const existingStamp = DateTime.fromISO(releaseTimestamp);\n const upgradeStamp = DateTime.fromISO(upgrade.releaseTimestamp);\n if (upgradeStamp > existingStamp) {\n releaseTimestamp = upgrade.releaseTimestamp;\n }\n } else {\n releaseTimestamp = upgrade.releaseTimestamp;\n }\n }\n }\n\n if (typesGroup) {\n if (config.upgrades[0].depName?.startsWith('@types/')) {\n logger.debug('Found @types - reversing upgrades to use depName in PR');\n sortTypesGroup(config.upgrades);\n config.upgrades[0].recreateClosed = false;\n config.hasTypes = true;\n }\n } else {\n config.upgrades.sort((a, b) => {\n if (a.fileReplacePosition && b.fileReplacePosition) {\n // This is because we need to replace from the bottom of the file up\n return a.fileReplacePosition > b.fileReplacePosition ? -1 : 1;\n }\n\n // make sure that ordering is consistent :\n // items without position will be first in the list.\n if (a.fileReplacePosition) {\n return 1;\n }\n if (b.fileReplacePosition) {\n return -1;\n }\n\n if (a.depName! < b.depName!) {\n return -1;\n }\n if (a.depName! > b.depName!) {\n return 1;\n }\n return 0;\n });\n }\n // Now assign first upgrade's config as branch config\n config = {\n ...config,\n ...config.upgrades[0],\n releaseTimestamp: releaseTimestamp!,\n }; // TODO: fixme (#9666)\n\n // Enable `semanticCommits` if one of the branches has it enabled\n if (\n config.upgrades.some((upgrade) => upgrade.semanticCommits === 'enabled')\n ) {\n config.semanticCommits = 'enabled';\n // Calculate the highest priority `semanticCommitType`\n let highestIndex = -1;\n for (const upgrade of config.upgrades) {\n if (upgrade.semanticCommits === 'enabled' && upgrade.semanticCommitType) {\n const priorityIndex = semanticCommitTypeByPriority.indexOf(\n upgrade.semanticCommitType,\n );\n\n if (priorityIndex > highestIndex) {\n highestIndex = priorityIndex;\n }\n }\n }\n\n if (highestIndex > -1) {\n config.semanticCommitType = semanticCommitTypeByPriority[highestIndex];\n }\n }\n\n // Use templates to generate strings\n const commitMessage = compileCommitMessage(config);\n compilePrTitle(config, commitMessage);\n\n config.dependencyDashboardApproval = config.upgrades.some(\n (upgrade) => upgrade.dependencyDashboardApproval,\n );\n config.dependencyDashboardPrApproval = config.upgrades.some(\n (upgrade) => upgrade.prCreation === 'approval',\n );\n config.prBodyColumns = [\n ...new Set(\n config.upgrades.reduce(\n (existing: string[], upgrade) =>\n existing.concat(upgrade.prBodyColumns!),\n [],\n ),\n ),\n ].filter(isNonEmptyString);\n // combine excludeCommitPaths for multiple manager experience\n const hasExcludeCommitPaths = config.upgrades.some(\n (u) => u.excludeCommitPaths && u.excludeCommitPaths.length > 0,\n );\n if (hasExcludeCommitPaths) {\n config.excludeCommitPaths = Object.keys(\n config.upgrades.reduce((acc: Record<string, boolean>, upgrade) => {\n if (upgrade.excludeCommitPaths) {\n upgrade.excludeCommitPaths.forEach((p) => {\n acc[p] = true;\n });\n }\n\n return acc;\n }, {}),\n );\n }\n\n config.automerge = config.upgrades.every((upgrade) => upgrade.automerge);\n // combine all labels\n config.labels = [\n ...new Set(\n config.upgrades\n .map((upgrade) => upgrade.labels ?? [])\n .reduce((a, b) => a.concat(b), []),\n ),\n ];\n config.addLabels = [\n ...new Set(\n config.upgrades\n .map((upgrade) => upgrade.addLabels ?? [])\n .reduce((a, b) => a.concat(b), []),\n ),\n ];\n\n if (config.upgrades.some((upgrade) => upgrade.updateType === 'major')) {\n config.updateType = 'major';\n }\n\n config.isBreaking = config.upgrades.some((upgrade) => upgrade.isBreaking);\n\n // explicit set `isLockFileMaintenance` for the branch for groups\n if (config.upgrades.some((upgrade) => upgrade.isLockFileMaintenance)) {\n config.isLockFileMaintenance = true;\n // istanbul ignore if: should never happen\n if (config.upgrades.some((upgrade) => !upgrade.isLockFileMaintenance)) {\n logger.warn(\n 'Grouping lockfile maintenance with other update types is not supported',\n );\n }\n }\n\n config.constraints = {};\n for (const upgrade of config.upgrades) {\n if (upgrade.constraints) {\n config.constraints = { ...config.constraints, ...upgrade.constraints };\n }\n }\n\n config.minimumGroupSize = getMinimumGroupSize(config.upgrades);\n // Set skipInstalls to false if any upgrade in the branch has it false\n config.skipInstalls = config.upgrades.every(\n (upgrade) => upgrade.skipInstalls !== false,\n );\n\n // Artifact updating will only be skipped if every upgrade wants to skip it.\n config.skipArtifactsUpdate = config.upgrades.every(\n (upgrade) => upgrade.skipArtifactsUpdate,\n );\n if (\n !config.skipArtifactsUpdate &&\n config.upgrades.some((upgrade) => upgrade.skipArtifactsUpdate)\n ) {\n logger.debug(\n {\n upgrades: config.upgrades.map((upgrade) => ({\n depName: upgrade.depName,\n skipArtifactsUpdate: upgrade.skipArtifactsUpdate,\n })),\n },\n 'Mixed `skipArtifactsUpdate` values in upgrades. Artifacts will be updated.',\n );\n }\n\n const tableRows = config.upgrades\n .map(getTableValues)\n .filter((x): x is string[] => isArray(x, isString));\n\n if (tableRows.length) {\n const table: string[][] = [];\n table.push(['datasource', 'package', 'from', 'to']);\n\n const seenRows = new Set<string>();\n\n for (const row of tableRows) {\n const key = safeStringify(row);\n if (seenRows.has(key)) {\n continue;\n }\n seenRows.add(key);\n table.push(row);\n }\n config.commitMessage += `\\n\\n${markdownTable(table)}\\n`;\n }\n const additionalReviewers = uniq(\n config.upgrades\n .map((upgrade) => upgrade.additionalReviewers)\n .flat()\n .filter(isNonEmptyString),\n );\n if (additionalReviewers.length > 0) {\n config.additionalReviewers = additionalReviewers;\n }\n return config;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate.js","names":["template.compile","template\n .compile"],"sources":["../../../../lib/workers/repository/updates/generate.ts"],"sourcesContent":["import { isArray, isNonEmptyString, isString } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { markdownTable } from 'markdown-table';\nimport semver from 'semver';\nimport { mergeChildConfig } from '../../../config/index.ts';\nimport { CONFIG_SECRETS_EXPOSED } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { sanitize } from '../../../util/sanitize.ts';\nimport { safeStringify } from '../../../util/stringify.ts';\nimport * as template from '../../../util/template/index.ts';\nimport type { Timestamp } from '../../../util/timestamp.ts';\nimport { uniq } from '../../../util/uniq.ts';\nimport type { BranchConfig, BranchUpgradeConfig } from '../../types.ts';\nimport { CommitMessage } from '../model/commit-message.ts';\n\nfunction prettifyVersion(version: string): string {\n if (regEx(/^\\d/).test(version)) {\n return `v${version}`;\n }\n\n return version;\n}\n\nfunction isTypesGroup(branchUpgrades: BranchUpgradeConfig[]): boolean {\n return (\n branchUpgrades.some(({ depName }) => depName?.startsWith('@types/')) &&\n new Set(\n branchUpgrades.map(({ depName }) =>\n depName?.replace(regEx(/^@types\\//), ''),\n ),\n ).size === 1\n );\n}\n\nfunction sortTypesGroup(upgrades: BranchUpgradeConfig[]): void {\n function isTypesUpgrade({ depName }: BranchUpgradeConfig): boolean {\n return !!depName?.startsWith('@types/');\n }\n const regularUpgrades = upgrades.filter(\n (upgrade) => !isTypesUpgrade(upgrade),\n );\n const typesUpgrades = upgrades.filter(isTypesUpgrade);\n upgrades.splice(0, upgrades.length);\n upgrades.push(...regularUpgrades, ...typesUpgrades);\n}\n\nfunction getTableValues(upgrade: BranchUpgradeConfig): string[] | null {\n if (!upgrade.commitBodyTable) {\n return null;\n }\n const { datasource, packageName, depName, currentVersion, newVersion } =\n upgrade;\n const name = packageName ?? depName;\n if (datasource && name && currentVersion && newVersion) {\n return [datasource, name, currentVersion, newVersion];\n }\n logger.trace(\n {\n datasource,\n packageName,\n depName,\n currentVersion,\n newVersion,\n },\n 'Cannot determine table values',\n );\n return null;\n}\n\nfunction compileCommitMessage(upgrade: BranchUpgradeConfig): string {\n if (upgrade.semanticCommits === 'enabled' && !upgrade.commitMessagePrefix) {\n logger.trace('Upgrade has semantic commits enabled');\n let semanticPrefix = upgrade.semanticCommitType;\n if (upgrade.semanticCommitScope) {\n semanticPrefix += `(${template.compile(\n upgrade.semanticCommitScope,\n upgrade,\n )})`;\n }\n upgrade.commitMessagePrefix = CommitMessage.formatPrefix(semanticPrefix!);\n upgrade.toLowerCase =\n regEx(/[A-Z]/).exec(upgrade.semanticCommitType!) === null &&\n !upgrade.semanticCommitType!.startsWith(':');\n }\n\n // Compile a few times in case there are nested templates\n upgrade.commitMessage = template.compile(\n upgrade.commitMessage ?? '',\n upgrade,\n );\n upgrade.commitMessage = template.compile(upgrade.commitMessage, upgrade);\n upgrade.commitMessage = template.compile(upgrade.commitMessage, upgrade);\n // istanbul ignore if\n if (upgrade.commitMessage !== sanitize(upgrade.commitMessage)) {\n logger.debug(\n { branchName: upgrade.branchName },\n 'Secrets exposed in commit message',\n );\n throw new Error(CONFIG_SECRETS_EXPOSED);\n }\n upgrade.commitMessage = upgrade.commitMessage.trim(); // Trim exterior whitespace\n upgrade.commitMessage = upgrade.commitMessage.replace(regEx(/\\s+/g), ' '); // Trim extra whitespace inside string\n upgrade.commitMessage = upgrade.commitMessage.replace(\n regEx(/to vv(\\d)/),\n 'to v$1',\n );\n if (upgrade.toLowerCase && upgrade.commitMessageLowerCase !== 'never') {\n // We only need to lowercase the first line\n const splitMessage = upgrade.commitMessage.split(newlineRegex);\n splitMessage[0] = splitMessage[0].toLowerCase();\n upgrade.commitMessage = splitMessage.join('\\n');\n }\n\n logger.trace(`commitMessage: ${JSON.stringify(upgrade.commitMessage)}`);\n return upgrade.commitMessage;\n}\n\nfunction compilePrTitle(\n upgrade: BranchUpgradeConfig,\n commitMessage: string,\n): void {\n if (upgrade.prTitle) {\n upgrade.prTitle = template.compile(upgrade.prTitle, upgrade);\n upgrade.prTitle = template.compile(upgrade.prTitle, upgrade);\n upgrade.prTitle = template\n .compile(upgrade.prTitle, upgrade)\n .trim()\n .replace(regEx(/\\s+/g), ' ');\n // istanbul ignore if\n if (upgrade.prTitle !== sanitize(upgrade.prTitle)) {\n logger.debug(\n { branchName: upgrade.branchName },\n 'Secrets were exposed in PR title',\n );\n throw new Error(CONFIG_SECRETS_EXPOSED);\n }\n if (upgrade.toLowerCase && upgrade.commitMessageLowerCase !== 'never') {\n upgrade.prTitle = upgrade.prTitle.toLowerCase();\n }\n } else {\n [upgrade.prTitle] = commitMessage.split(newlineRegex);\n }\n if (!upgrade.prTitleStrict) {\n upgrade.prTitle += upgrade.hasBaseBranches ? ' ({{baseBranch}})' : '';\n if (upgrade.isGroup) {\n const hasVersionInTitle = !!semver.coerce(\n template.compile(upgrade.commitMessageExtra ?? '', upgrade),\n );\n if (!hasVersionInTitle) {\n upgrade.prTitle +=\n upgrade.updateType === 'major' && upgrade.separateMajorMinor\n ? ' (major)'\n : '';\n upgrade.prTitle +=\n upgrade.updateType === 'minor' && upgrade.separateMinorPatch\n ? ' (minor)'\n : '';\n upgrade.prTitle +=\n upgrade.updateType === 'patch' && upgrade.separateMinorPatch\n ? ' (patch)'\n : '';\n }\n }\n }\n // Compile again to allow for nested templates\n upgrade.prTitle = template.compile(upgrade.prTitle, upgrade);\n logger.trace(`prTitle: ${JSON.stringify(upgrade.prTitle)}`);\n}\n\nfunction getMinimumGroupSize(upgrades: BranchUpgradeConfig[]): number {\n let minimumGroupSize = 1;\n const groupSizes = new Set<number>();\n\n for (const upg of upgrades) {\n if (upg.minimumGroupSize) {\n groupSizes.add(upg.minimumGroupSize);\n if (minimumGroupSize < upg.minimumGroupSize) {\n minimumGroupSize = upg.minimumGroupSize;\n }\n }\n }\n\n if (groupSizes.size > 1) {\n logger.debug(\n 'Multiple minimumGroupSize values found for this branch, using highest.',\n );\n }\n\n return minimumGroupSize;\n}\n\n// Sorted by priority, from low to high\nconst semanticCommitTypeByPriority = ['chore', 'ci', 'build', 'fix', 'feat'];\n\nexport function generateBranchConfig(\n upgrades: BranchUpgradeConfig[],\n): BranchConfig {\n let branchUpgrades = upgrades;\n if (!branchUpgrades.every((upgrade) => upgrade.pendingChecks)) {\n // If the branch isn't pending, then remove any upgrades within which *are*\n logger.debug(\n { branch: branchUpgrades[0].branchName },\n 'Branch is not pending, removing pending upgrades',\n );\n branchUpgrades = branchUpgrades.filter((upgrade) => !upgrade.pendingChecks);\n }\n logger.trace({ config: branchUpgrades }, 'generateBranchConfig');\n let config: BranchConfig = {\n upgrades: [],\n } as any;\n const hasGroupName = branchUpgrades[0].groupName !== null;\n logger.trace(`hasGroupName: ${hasGroupName}`);\n // Use group settings only if multiple upgrades or lazy grouping is disabled\n const depNames: string[] = [];\n const newValue: string[] = [];\n const toVersions: string[] = [];\n const toValues = new Set<string>();\n const depTypes = new Set<string>();\n for (const upg of branchUpgrades) {\n upg.recreateClosed = upg.recreateWhen === 'always';\n\n if (upg.currentDigest) {\n upg.currentDigestShort =\n upg.currentDigestShort ??\n upg.currentDigest.replace('sha256:', '').substring(0, 7);\n }\n if (upg.newDigest) {\n upg.newDigestShort =\n upg.newDigestShort ??\n upg.newDigest.replace('sha256:', '').substring(0, 7);\n }\n if (upg.isDigest || upg.isPinDigest) {\n upg.displayFrom = upg.currentDigestShort;\n upg.displayTo = upg.newDigestShort;\n } else if (upg.isLockfileUpdate) {\n upg.displayFrom = upg.currentVersion;\n upg.displayTo = upg.newVersion;\n } else if (!upg.isLockFileMaintenance) {\n upg.displayFrom = upg.currentValue;\n upg.displayTo = upg.newValue;\n }\n\n if (upg.isLockFileMaintenance) {\n upg.recreateClosed = upg.recreateWhen !== 'never';\n }\n upg.displayFrom ??= '';\n upg.displayTo ??= '';\n if (!depNames.includes(upg.depName!)) {\n depNames.push(upg.depName!);\n }\n if (!toVersions.includes(upg.newVersion!)) {\n toVersions.push(upg.newVersion!);\n }\n toValues.add(upg.newValue!);\n if (upg.depType) {\n depTypes.add(upg.depType);\n }\n // prettify newVersion and newMajor for printing\n if (upg.newVersion) {\n upg.prettyNewVersion = prettifyVersion(upg.newVersion);\n }\n if (upg.newMajor) {\n upg.prettyNewMajor = `v${upg.newMajor}`;\n }\n if (upg.commitMessageExtra) {\n const extra = template.compile(upg.commitMessageExtra, upg);\n if (!newValue.includes(extra)) {\n newValue.push(extra);\n }\n }\n }\n const groupEligible =\n depNames.length > 1 ||\n toVersions.length > 1 ||\n (!toVersions[0] && newValue.length > 1);\n\n const typesGroup =\n depNames.length > 1 && !hasGroupName && isTypesGroup(branchUpgrades);\n logger.trace(`groupEligible: ${groupEligible}`);\n const singleUpdateGroup =\n hasGroupName && !groupEligible && !branchUpgrades[0].sharedVariableName;\n logger.trace(`singleUpdateGroup: ${singleUpdateGroup}`);\n const useGroupSettings =\n hasGroupName &&\n (groupEligible ||\n (singleUpdateGroup && branchUpgrades[0].groupSingleUpdates === true));\n logger.trace(`useGroupSettings: ${useGroupSettings}`);\n let releaseTimestamp: Timestamp;\n\n if (depTypes.size) {\n config.depTypes = Array.from(depTypes).sort();\n }\n\n for (const branchUpgrade of branchUpgrades) {\n let upgrade: BranchUpgradeConfig = { ...branchUpgrade };\n\n upgrade.depTypes = config.depTypes;\n\n // needs to be done for each upgrade, as we reorder them below\n if (newValue.length > 1 && !groupEligible) {\n upgrade.commitMessageExtra = `to v${toVersions[0]}`;\n }\n\n const pendingVersionsLength = upgrade.pendingVersions?.length;\n if (pendingVersionsLength) {\n upgrade.displayPending = `\\`${upgrade.pendingVersions!.at(-1)!}\\``;\n if (pendingVersionsLength > 1) {\n upgrade.displayPending += ` (+${pendingVersionsLength - 1})`;\n }\n } else {\n upgrade.displayPending = '';\n }\n upgrade.prettyDepType =\n upgrade.prettyDepType ?? upgrade.depType ?? 'dependency';\n if (useGroupSettings) {\n // Now overwrite original config with group config\n upgrade = mergeChildConfig(upgrade, upgrade.group);\n upgrade.isGroup = true;\n if (singleUpdateGroup) {\n // Single update using group name instead of dependency name,\n // so remove version from commit message.\n delete upgrade.commitMessageExtra;\n upgrade.recreateClosed = upgrade.recreateWhen !== 'never';\n }\n } else {\n delete upgrade.groupName;\n }\n // Delete group config regardless of whether it was applied\n delete upgrade.group;\n\n if (\n toVersions.length > 1 &&\n toValues.size > 1 &&\n newValue.length > 1 &&\n !typesGroup\n ) {\n logger.trace({ toVersions });\n logger.trace({ toValues });\n delete upgrade.commitMessageExtra;\n upgrade.recreateClosed = upgrade.recreateWhen !== 'never';\n } else if (\n newValue.length > 1 &&\n (upgrade.isDigest || upgrade.isPinDigest)\n ) {\n logger.trace({ newValue });\n delete upgrade.commitMessageExtra;\n upgrade.recreateClosed = upgrade.recreateWhen !== 'never';\n } else if (semver.valid(toVersions[0])) {\n upgrade.isRange = false;\n }\n config.upgrades.push(upgrade);\n if (upgrade.releaseTimestamp) {\n if (releaseTimestamp!) {\n const existingStamp = DateTime.fromISO(releaseTimestamp);\n const upgradeStamp = DateTime.fromISO(upgrade.releaseTimestamp);\n if (upgradeStamp > existingStamp) {\n releaseTimestamp = upgrade.releaseTimestamp;\n }\n } else {\n releaseTimestamp = upgrade.releaseTimestamp;\n }\n }\n }\n\n if (typesGroup) {\n if (config.upgrades[0].depName?.startsWith('@types/')) {\n logger.debug('Found @types - reversing upgrades to use depName in PR');\n sortTypesGroup(config.upgrades);\n config.upgrades[0].recreateClosed = false;\n config.hasTypes = true;\n }\n } else {\n config.upgrades.sort((a, b) => {\n if (a.fileReplacePosition && b.fileReplacePosition) {\n // This is because we need to replace from the bottom of the file up\n return a.fileReplacePosition > b.fileReplacePosition ? -1 : 1;\n }\n\n // make sure that ordering is consistent :\n // items without position will be first in the list.\n if (a.fileReplacePosition) {\n return 1;\n }\n if (b.fileReplacePosition) {\n return -1;\n }\n\n if (a.depName! < b.depName!) {\n return -1;\n }\n if (a.depName! > b.depName!) {\n return 1;\n }\n return 0;\n });\n }\n // Now assign first upgrade's config as branch config\n config = {\n ...config,\n ...config.upgrades[0],\n releaseTimestamp: releaseTimestamp!,\n }; // TODO: fixme (#9666)\n\n // Enable `semanticCommits` if one of the branches has it enabled\n if (\n config.upgrades.some((upgrade) => upgrade.semanticCommits === 'enabled')\n ) {\n config.semanticCommits = 'enabled';\n // Calculate the highest priority `semanticCommitType`\n let highestIndex = -1;\n for (const upgrade of config.upgrades) {\n if (upgrade.semanticCommits === 'enabled' && upgrade.semanticCommitType) {\n const priorityIndex = semanticCommitTypeByPriority.indexOf(\n upgrade.semanticCommitType,\n );\n\n if (priorityIndex > highestIndex) {\n highestIndex = priorityIndex;\n }\n }\n }\n\n if (highestIndex > -1) {\n config.semanticCommitType = semanticCommitTypeByPriority[highestIndex];\n }\n }\n\n // Use templates to generate strings\n const commitMessage = compileCommitMessage(config);\n compilePrTitle(config, commitMessage);\n\n config.dependencyDashboardApproval = config.upgrades.some(\n (upgrade) => upgrade.dependencyDashboardApproval,\n );\n config.dependencyDashboardPrApproval = config.upgrades.some(\n (upgrade) => upgrade.prCreation === 'approval',\n );\n config.prBodyColumns = [\n ...new Set(\n config.upgrades.reduce(\n (existing: string[], upgrade) =>\n existing.concat(upgrade.prBodyColumns!),\n [],\n ),\n ),\n ].filter(isNonEmptyString);\n // combine excludeCommitPaths for multiple manager experience\n const hasExcludeCommitPaths = config.upgrades.some(\n (u) => u.excludeCommitPaths && u.excludeCommitPaths.length > 0,\n );\n if (hasExcludeCommitPaths) {\n config.excludeCommitPaths = Object.keys(\n config.upgrades.reduce((acc: Record<string, boolean>, upgrade) => {\n if (upgrade.excludeCommitPaths) {\n upgrade.excludeCommitPaths.forEach((p) => {\n acc[p] = true;\n });\n }\n\n return acc;\n }, {}),\n );\n }\n\n config.automerge = config.upgrades.every((upgrade) => upgrade.automerge);\n // combine all labels\n config.labels = [\n ...new Set(\n config.upgrades\n .map((upgrade) => upgrade.labels ?? [])\n .reduce((a, b) => a.concat(b), []),\n ),\n ];\n config.addLabels = [\n ...new Set(\n config.upgrades\n .map((upgrade) => upgrade.addLabels ?? [])\n .reduce((a, b) => a.concat(b), []),\n ),\n ];\n\n if (config.upgrades.some((upgrade) => upgrade.updateType === 'major')) {\n config.updateType = 'major';\n }\n\n config.isBreaking = config.upgrades.some((upgrade) => upgrade.isBreaking);\n\n // explicit set `isLockFileMaintenance` for the branch for groups\n if (config.upgrades.some((upgrade) => upgrade.isLockFileMaintenance)) {\n config.isLockFileMaintenance = true;\n // istanbul ignore if: should never happen\n if (config.upgrades.some((upgrade) => !upgrade.isLockFileMaintenance)) {\n logger.warn(\n 'Grouping lockfile maintenance with other update types is not supported',\n );\n }\n }\n\n config.constraints = {};\n for (const upgrade of config.upgrades) {\n if (upgrade.constraints) {\n config.constraints = { ...config.constraints, ...upgrade.constraints };\n }\n }\n\n config.minimumGroupSize = getMinimumGroupSize(config.upgrades);\n // Set skipInstalls to false if any upgrade in the branch has it false\n config.skipInstalls = config.upgrades.every(\n (upgrade) => upgrade.skipInstalls !== false,\n );\n\n // Artifact updating will only be skipped if every upgrade wants to skip it.\n config.skipArtifactsUpdate = config.upgrades.every(\n (upgrade) => upgrade.skipArtifactsUpdate,\n );\n if (\n !config.skipArtifactsUpdate &&\n config.upgrades.some((upgrade) => upgrade.skipArtifactsUpdate)\n ) {\n logger.debug(\n {\n upgrades: config.upgrades.map((upgrade) => ({\n depName: upgrade.depName,\n skipArtifactsUpdate: upgrade.skipArtifactsUpdate,\n })),\n },\n 'Mixed `skipArtifactsUpdate` values in upgrades. Artifacts will be updated.',\n );\n }\n\n const tableRows = config.upgrades\n .map(getTableValues)\n .filter((x): x is string[] => isArray(x, isString));\n\n if (tableRows.length) {\n const table: string[][] = [];\n table.push(['datasource', 'package', 'from', 'to']);\n\n const seenRows = new Set<string>();\n\n for (const row of tableRows) {\n const key = safeStringify(row);\n if (seenRows.has(key)) {\n continue;\n }\n seenRows.add(key);\n table.push(row);\n }\n config.commitMessage += `\\n\\n${markdownTable(table)}\\n`;\n }\n const additionalReviewers = uniq(\n config.upgrades\n .map((upgrade) => upgrade.additionalReviewers)\n .flat()\n .filter(isNonEmptyString),\n );\n if (additionalReviewers.length > 0) {\n config.additionalReviewers = additionalReviewers;\n }\n return config;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.30.
|
|
3
|
+
"title": "JSON schema for Renovate 44.30.2 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.30.
|
|
5
|
+
"x-renovate-version": "44.30.2",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|