renovate 41.0.0-next.21 → 41.0.0-next.23
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/decrypt.js +5 -3
- package/dist/config/decrypt.js.map +1 -1
- package/dist/config/options/index.js +45 -3
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/github/index.js +2 -2
- package/dist/config/presets/github/index.js.map +1 -1
- package/dist/config/presets/internal/group.js +21 -0
- package/dist/config/presets/internal/group.js.map +1 -1
- package/dist/config/presets/internal/workarounds.js +11 -0
- package/dist/config/presets/internal/workarounds.js.map +1 -1
- package/dist/config/secrets.d.ts +2 -0
- package/dist/config/secrets.js +10 -77
- package/dist/config/secrets.js.map +1 -1
- package/dist/config/types.d.ts +9 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config-validator.js +4 -2
- package/dist/config-validator.js.map +1 -1
- package/dist/data/monorepo.json +10 -1
- package/dist/data-files.generated.d.ts +1 -1
- package/dist/data-files.generated.js +2 -1
- package/dist/data-files.generated.js.map +1 -1
- package/dist/instrumentation/index.js +5 -3
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/instrumentation/reporting.d.ts +2 -2
- package/dist/instrumentation/reporting.js +3 -7
- package/dist/instrumentation/reporting.js.map +1 -1
- package/dist/instrumentation/types.d.ts +11 -5
- package/dist/instrumentation/types.js.map +1 -1
- package/dist/instrumentation/utils.js +3 -2
- package/dist/instrumentation/utils.js.map +1 -1
- package/dist/logger/once.js +2 -0
- package/dist/logger/once.js.map +1 -1
- package/dist/modules/datasource/aws-eks-addon/schema.d.ts +14 -38
- package/dist/modules/datasource/aws-eks-addon/schema.js +11 -22
- package/dist/modules/datasource/aws-eks-addon/schema.js.map +1 -1
- package/dist/modules/datasource/cdnjs/index.js +2 -1
- package/dist/modules/datasource/cdnjs/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js +7 -2
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/docker/ecr.js +2 -2
- package/dist/modules/datasource/docker/ecr.js.map +1 -1
- package/dist/modules/datasource/docker/index.js +26 -9
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/docker/schema.d.ts +9 -87
- package/dist/modules/datasource/docker/schema.js +1 -1
- package/dist/modules/datasource/docker/schema.js.map +1 -1
- package/dist/modules/datasource/git-refs/base.js +2 -6
- package/dist/modules/datasource/git-refs/base.js.map +1 -1
- package/dist/modules/datasource/go/goproxy-parser.js +6 -2
- package/dist/modules/datasource/go/goproxy-parser.js.map +1 -1
- package/dist/modules/datasource/go/index.js +4 -2
- package/dist/modules/datasource/go/index.js.map +1 -1
- package/dist/modules/datasource/go/releases-goproxy.js +3 -2
- package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
- package/dist/modules/datasource/index.js +1 -1
- package/dist/modules/datasource/index.js.map +1 -1
- package/dist/modules/datasource/maven/index.js +5 -19
- package/dist/modules/datasource/maven/index.js.map +1 -1
- package/dist/modules/datasource/maven/util.js +8 -1
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/datasource/npm/get.js +2 -1
- package/dist/modules/datasource/npm/get.js.map +1 -1
- package/dist/modules/datasource/npm/npmrc.js +2 -1
- package/dist/modules/datasource/npm/npmrc.js.map +1 -1
- package/dist/modules/datasource/nuget/v3.js +3 -2
- package/dist/modules/datasource/nuget/v3.js.map +1 -1
- package/dist/modules/datasource/pod/index.js +3 -1
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/pypi/index.js +2 -1
- package/dist/modules/datasource/pypi/index.js.map +1 -1
- package/dist/modules/datasource/types.d.ts +2 -1
- package/dist/modules/datasource/types.js.map +1 -1
- package/dist/modules/manager/asdf/upgradeable-tooling.js +8 -0
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/bazel/rules/git.d.ts +7 -7
- package/dist/modules/manager/bazel/rules/git.js +6 -1
- package/dist/modules/manager/bazel/rules/git.js.map +1 -1
- package/dist/modules/manager/bazel-module/bazelrc.d.ts +2 -0
- package/dist/modules/manager/bazel-module/bazelrc.js +30 -1
- package/dist/modules/manager/bazel-module/bazelrc.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/rules.js +1 -0
- package/dist/modules/manager/bazel-module/parser/rules.js.map +1 -1
- package/dist/modules/manager/bazel-module/rules.d.ts +62 -24
- package/dist/modules/manager/bazel-module/rules.js +10 -4
- package/dist/modules/manager/bazel-module/rules.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js +2 -1
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/composer/schema.js +1 -1
- package/dist/modules/manager/composer/schema.js.map +1 -1
- package/dist/modules/manager/docker-compose/extract.js +2 -0
- package/dist/modules/manager/docker-compose/extract.js.map +1 -1
- package/dist/modules/manager/docker-compose/schema.d.ts +120 -9
- package/dist/modules/manager/docker-compose/schema.js +35 -4
- package/dist/modules/manager/docker-compose/schema.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +19 -19
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/fleet/extract.js +2 -2
- package/dist/modules/manager/fleet/extract.js.map +1 -1
- package/dist/modules/manager/fleet/schema.d.ts +5 -5
- package/dist/modules/manager/fleet/schema.js +1 -1
- package/dist/modules/manager/fleet/schema.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +1 -1
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/git-submodules/extract.js +2 -6
- package/dist/modules/manager/git-submodules/extract.js.map +1 -1
- package/dist/modules/manager/git-submodules/update.js +3 -7
- package/dist/modules/manager/git-submodules/update.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js +1 -1
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/gleam/artifacts.js +5 -1
- package/dist/modules/manager/gleam/artifacts.js.map +1 -1
- package/dist/modules/manager/gomod/artifacts.js +8 -6
- package/dist/modules/manager/gomod/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/extract.js +4 -1
- package/dist/modules/manager/gradle/extract.js.map +1 -1
- package/dist/modules/manager/gradle/utils.js +8 -14
- package/dist/modules/manager/gradle/utils.js.map +1 -1
- package/dist/modules/manager/helmfile/utils.js +1 -1
- package/dist/modules/manager/helmfile/utils.js.map +1 -1
- package/dist/modules/manager/helmv3/artifacts.js +8 -2
- package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/common.d.ts +1 -1
- package/dist/modules/manager/helmv3/common.js +9 -3
- package/dist/modules/manager/helmv3/common.js.map +1 -1
- package/dist/modules/manager/hermit/artifacts.js +2 -2
- package/dist/modules/manager/hermit/artifacts.js.map +1 -1
- package/dist/modules/manager/kubernetes/extract.js +2 -2
- package/dist/modules/manager/kubernetes/extract.js.map +1 -1
- package/dist/modules/manager/kustomize/artifacts.js +1 -1
- package/dist/modules/manager/kustomize/artifacts.js.map +1 -1
- package/dist/modules/manager/maven/extract.d.ts +1 -1
- package/dist/modules/manager/maven/extract.js +82 -24
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven/index.d.ts +0 -1
- package/dist/modules/manager/maven/index.js +2 -4
- package/dist/modules/manager/maven/index.js.map +1 -1
- package/dist/modules/manager/maven/update.js +15 -0
- package/dist/modules/manager/maven/update.js.map +1 -1
- package/dist/modules/manager/mise/backends.d.ts +48 -0
- package/dist/modules/manager/mise/backends.js +219 -0
- package/dist/modules/manager/mise/backends.js.map +1 -0
- package/dist/modules/manager/mise/extract.js +77 -10
- package/dist/modules/manager/mise/extract.js.map +1 -1
- package/dist/modules/manager/mise/index.js +37 -2
- package/dist/modules/manager/mise/index.js.map +1 -1
- package/dist/modules/manager/mise/schema.d.ts +24 -0
- package/dist/modules/manager/mise/schema.js +7 -1
- package/dist/modules/manager/mise/schema.js.map +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js +210 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/mix/artifacts.js +5 -0
- package/dist/modules/manager/mix/artifacts.js.map +1 -1
- package/dist/modules/manager/npm/extract/index.js +27 -24
- package/dist/modules/manager/npm/extract/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +9 -3
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +8 -5
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js +4 -0
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/utils.js +17 -0
- package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +7 -5
- package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
- package/dist/modules/manager/npm/schema.d.ts +116 -0
- package/dist/modules/manager/npm/schema.js +9 -0
- package/dist/modules/manager/npm/schema.js.map +1 -1
- package/dist/modules/manager/npm/utils.js +1 -1
- package/dist/modules/manager/npm/utils.js.map +1 -1
- package/dist/modules/manager/nuget/util.js +9 -0
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +1 -1
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pip-compile/artifacts.js +6 -4
- package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
- package/dist/modules/manager/pip_requirements/common.js +2 -1
- package/dist/modules/manager/pip_requirements/common.js.map +1 -1
- package/dist/modules/manager/poetry/schema.js +2 -1
- package/dist/modules/manager/poetry/schema.js.map +1 -1
- package/dist/modules/manager/pre-commit/index.js +2 -1
- package/dist/modules/manager/pre-commit/index.js.map +1 -1
- package/dist/modules/manager/renovate-config-presets/index.d.ts +1 -1
- package/dist/modules/manager/renovate-config-presets/index.js +1 -3
- package/dist/modules/manager/renovate-config-presets/index.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/others/modules.js +4 -9
- package/dist/modules/manager/terraform/extractors/others/modules.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.d.ts +1 -0
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js +9 -4
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/resources/utils.d.ts +1 -0
- package/dist/modules/manager/terraform/extractors/resources/utils.js +4 -1
- package/dist/modules/manager/terraform/extractors/resources/utils.js.map +1 -1
- package/dist/modules/manager/terraform/hcl/types.d.ts +1 -0
- package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
- package/dist/modules/manager/types.d.ts +3 -0
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js +4 -2
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js +7 -5
- package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
- package/dist/modules/platform/codecommit/index.js +7 -5
- package/dist/modules/platform/codecommit/index.js.map +1 -1
- package/dist/modules/platform/default-scm.d.ts +1 -0
- package/dist/modules/platform/default-scm.js +3 -0
- package/dist/modules/platform/default-scm.js.map +1 -1
- package/dist/modules/platform/gerrit/client.d.ts +6 -7
- package/dist/modules/platform/gerrit/client.js +58 -38
- package/dist/modules/platform/gerrit/client.js.map +1 -1
- package/dist/modules/platform/gerrit/index.d.ts +4 -3
- package/dist/modules/platform/gerrit/index.js +103 -42
- package/dist/modules/platform/gerrit/index.js.map +1 -1
- package/dist/modules/platform/gerrit/scm.d.ts +1 -1
- package/dist/modules/platform/gerrit/scm.js +56 -34
- package/dist/modules/platform/gerrit/scm.js.map +1 -1
- package/dist/modules/platform/gerrit/types.d.ts +23 -12
- package/dist/modules/platform/gerrit/types.js.map +1 -1
- package/dist/modules/platform/gerrit/utils.d.ts +8 -4
- package/dist/modules/platform/gerrit/utils.js +24 -12
- package/dist/modules/platform/gerrit/utils.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +7 -2
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/types.d.ts +2 -1
- package/dist/modules/platform/gitea/types.js.map +1 -1
- package/dist/modules/platform/github/index.js +12 -26
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/gitlab/code-owners.d.ts +2 -0
- package/dist/modules/platform/gitlab/code-owners.js +38 -0
- package/dist/modules/platform/gitlab/code-owners.js.map +1 -0
- package/dist/modules/platform/gitlab/index.d.ts +2 -1
- package/dist/modules/platform/gitlab/index.js +29 -56
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/gitlab/pr-cache.d.ts +21 -0
- package/dist/modules/platform/gitlab/pr-cache.js +124 -0
- package/dist/modules/platform/gitlab/pr-cache.js.map +1 -0
- package/dist/modules/platform/gitlab/types.d.ts +7 -0
- package/dist/modules/platform/gitlab/types.js.map +1 -1
- package/dist/modules/platform/gitlab/utils.js +1 -0
- package/dist/modules/platform/gitlab/utils.js.map +1 -1
- package/dist/modules/platform/types.d.ts +8 -0
- package/dist/modules/platform/types.js.map +1 -1
- package/dist/modules/versioning/api.js +2 -0
- package/dist/modules/versioning/api.js.map +1 -1
- package/dist/modules/versioning/cargo/index.js +20 -0
- package/dist/modules/versioning/cargo/index.js.map +1 -1
- package/dist/modules/versioning/composer/index.js +4 -0
- package/dist/modules/versioning/composer/index.js.map +1 -1
- package/dist/modules/versioning/lambda-node/index.d.ts +8 -0
- package/dist/modules/versioning/lambda-node/index.js +27 -0
- package/dist/modules/versioning/lambda-node/index.js.map +1 -0
- package/dist/modules/versioning/lambda-node/schedule.d.ts +10 -0
- package/dist/modules/versioning/lambda-node/schedule.js +19 -0
- package/dist/modules/versioning/lambda-node/schedule.js.map +1 -0
- package/dist/modules/versioning/npm/index.js +2 -0
- package/dist/modules/versioning/npm/index.js.map +1 -1
- package/dist/modules/versioning/npm/range.js +4 -0
- package/dist/modules/versioning/npm/range.js.map +1 -1
- package/dist/modules/versioning/pep440/index.js +1 -1
- package/dist/modules/versioning/pep440/index.js.map +1 -1
- package/dist/modules/versioning/python/index.d.ts +1 -0
- package/dist/modules/versioning/python/index.js +9 -0
- package/dist/modules/versioning/python/index.js.map +1 -1
- package/dist/modules/versioning/semver/index.d.ts +1 -0
- package/dist/modules/versioning/semver/index.js +15 -0
- package/dist/modules/versioning/semver/index.js.map +1 -1
- package/dist/modules/versioning/semver-coerced/index.js +9 -0
- package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +1 -0
- package/dist/modules/versioning/types.js.map +1 -1
- package/dist/util/cache/memory/index.d.ts +1 -0
- package/dist/util/cache/memory/index.js +17 -6
- package/dist/util/cache/memory/index.js.map +1 -1
- package/dist/util/cache/package/index.js +2 -1
- package/dist/util/cache/package/index.js.map +1 -1
- package/dist/util/cache/package/key.js +1 -1
- package/dist/util/cache/package/key.js.map +1 -1
- package/dist/util/cache/package/types.d.ts +2 -2
- package/dist/util/cache/package/types.js.map +1 -1
- package/dist/util/cache/repository/impl/s3.js +2 -1
- package/dist/util/cache/repository/impl/s3.js.map +1 -1
- package/dist/util/cache/repository/types.d.ts +3 -0
- package/dist/util/cache/repository/types.js.map +1 -1
- package/dist/util/env.d.ts +6 -0
- package/dist/util/env.js +13 -0
- package/dist/util/env.js.map +1 -1
- package/dist/util/exec/common.js +2 -1
- package/dist/util/exec/common.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 +1 -0
- package/dist/util/exec/env.js.map +1 -1
- package/dist/util/exec/utils.d.ts +1 -1
- package/dist/util/exec/utils.js +1 -1
- package/dist/util/exec/utils.js.map +1 -1
- package/dist/util/fs/index.js +2 -2
- package/dist/util/fs/index.js.map +1 -1
- package/dist/util/git/auth.js +4 -2
- package/dist/util/git/auth.js.map +1 -1
- package/dist/util/git/error.js +2 -1
- package/dist/util/git/error.js.map +1 -1
- package/dist/util/git/index.d.ts +20 -0
- package/dist/util/git/index.js +140 -10
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/git/types.d.ts +1 -0
- package/dist/util/git/types.js.map +1 -1
- package/dist/util/github/graphql/datasource-fetcher.js +2 -3
- package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.d.ts +48 -2
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.js +27 -7
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.js.map +1 -1
- package/dist/util/host-rules.js +4 -3
- package/dist/util/host-rules.js.map +1 -1
- package/dist/util/http/cache/package-http-cache-provider.d.ts +4 -4
- package/dist/util/http/cache/package-http-cache-provider.js +4 -4
- package/dist/util/http/cache/package-http-cache-provider.js.map +1 -1
- package/dist/util/http/github.js +20 -12
- package/dist/util/http/github.js.map +1 -1
- package/dist/util/http/gitlab.js +2 -1
- package/dist/util/http/gitlab.js.map +1 -1
- package/dist/util/http/http.js +7 -3
- package/dist/util/http/http.js.map +1 -1
- package/dist/util/interpolator.d.ts +8 -0
- package/dist/util/interpolator.js +85 -0
- package/dist/util/interpolator.js.map +1 -0
- package/dist/util/merge-confidence/index.js +4 -1
- package/dist/util/merge-confidence/index.js.map +1 -1
- package/dist/util/promises.d.ts +4 -4
- package/dist/util/promises.js +3 -4
- package/dist/util/promises.js.map +1 -1
- package/dist/util/regex.js +3 -2
- package/dist/util/regex.js.map +1 -1
- package/dist/util/{schema-utils.d.ts → schema-utils/index.d.ts} +2 -2
- package/dist/util/{schema-utils.js → schema-utils/index.js} +5 -5
- package/dist/util/schema-utils/index.js.map +1 -0
- package/dist/util/schema-utils/v4.d.ts +7 -0
- package/dist/util/schema-utils/v4.js +64 -0
- package/dist/util/schema-utils/v4.js.map +1 -0
- package/dist/util/stats.d.ts +13 -2
- package/dist/util/stats.js +38 -27
- package/dist/util/stats.js.map +1 -1
- package/dist/workers/global/config/parse/codespaces.js +7 -4
- package/dist/workers/global/config/parse/codespaces.js.map +1 -1
- package/dist/workers/global/index.js +7 -5
- package/dist/workers/global/index.js.map +1 -1
- package/dist/workers/repository/config-migration/branch/migrated-data.js +1 -1
- package/dist/workers/repository/config-migration/branch/migrated-data.js.map +1 -1
- package/dist/workers/repository/dependency-dashboard.d.ts +1 -0
- package/dist/workers/repository/dependency-dashboard.js +47 -0
- package/dist/workers/repository/dependency-dashboard.js.map +1 -1
- package/dist/workers/repository/index.js +1 -0
- package/dist/workers/repository/index.js.map +1 -1
- package/dist/workers/repository/init/inherited.js +10 -6
- package/dist/workers/repository/init/inherited.js.map +1 -1
- package/dist/workers/repository/init/merge.d.ts +2 -2
- package/dist/workers/repository/init/merge.js +12 -5
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/package-files.js +11 -1
- package/dist/workers/repository/package-files.js.map +1 -1
- package/dist/workers/repository/process/extract-update.d.ts +1 -1
- package/dist/workers/repository/process/extract-update.js +15 -10
- package/dist/workers/repository/process/extract-update.js.map +1 -1
- package/dist/workers/repository/process/index.d.ts +1 -1
- package/dist/workers/repository/process/index.js +6 -3
- package/dist/workers/repository/process/index.js.map +1 -1
- package/dist/workers/repository/process/libyear.js +15 -7
- package/dist/workers/repository/process/libyear.js.map +1 -1
- package/dist/workers/repository/process/lookup/abandonment.d.ts +3 -0
- package/dist/workers/repository/process/lookup/abandonment.js +50 -0
- package/dist/workers/repository/process/lookup/abandonment.js.map +1 -0
- package/dist/workers/repository/process/lookup/current.js +0 -5
- package/dist/workers/repository/process/lookup/current.js.map +1 -1
- package/dist/workers/repository/process/lookup/generate.js +10 -0
- package/dist/workers/repository/process/lookup/generate.js.map +1 -1
- package/dist/workers/repository/process/lookup/index.js +7 -0
- package/dist/workers/repository/process/lookup/index.js.map +1 -1
- package/dist/workers/repository/process/lookup/timestamps.d.ts +4 -4
- package/dist/workers/repository/process/lookup/timestamps.js +10 -10
- package/dist/workers/repository/process/lookup/timestamps.js.map +1 -1
- package/dist/workers/repository/process/lookup/types.d.ts +4 -0
- package/dist/workers/repository/process/lookup/types.js.map +1 -1
- package/dist/workers/repository/update/branch/auto-replace.js +30 -7
- package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
- package/dist/workers/repository/update/branch/bump-versions.d.ts +2 -0
- package/dist/workers/repository/update/branch/bump-versions.js +192 -0
- package/dist/workers/repository/update/branch/bump-versions.js.map +1 -0
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +14 -8
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
- package/dist/workers/repository/update/branch/get-updated.js +3 -4
- package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
- package/dist/workers/repository/update/branch/index.js +3 -0
- package/dist/workers/repository/update/branch/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/release-notes.js +23 -19
- package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
- package/dist/workers/repository/update/pr/code-owners.js +13 -9
- package/dist/workers/repository/update/pr/code-owners.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +1 -0
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +75 -80
- package/renovate-schema.json +78 -14
- package/dist/util/schema-utils.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/update/branch/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../../config/global';\nimport type { RenovateConfig } from '../../../../config/types';\nimport {\n CONFIG_VALIDATION,\n MANAGER_LOCKFILE_ERROR,\n PLATFORM_AUTHENTICATION_ERROR,\n PLATFORM_BAD_CREDENTIALS,\n PLATFORM_INTEGRATION_UNAUTHORIZED,\n PLATFORM_RATE_LIMIT_EXCEEDED,\n REPOSITORY_CHANGED,\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n WORKER_FILE_UPDATE_FAILED,\n} from '../../../../constants/error-messages';\nimport { logger, removeMeta } from '../../../../logger';\nimport { getAdditionalFiles } from '../../../../modules/manager/npm/post-update';\nimport type { Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport {\n ensureComment,\n ensureCommentRemoval,\n} from '../../../../modules/platform/comment';\nimport { scm } from '../../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { getElapsedMs } from '../../../../util/date';\nimport { emojify } from '../../../../util/emoji';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { toMs } from '../../../../util/pretty-time';\nimport * as template from '../../../../util/template';\nimport { getCount, isLimitReached } from '../../../global/limits';\nimport type { BranchConfig, BranchResult, PrBlockedBy } from '../../../types';\nimport { embedChangelogs } from '../../changelog';\nimport { ensurePr, getPlatformPrOptions } from '../pr';\nimport { checkAutoMerge } from '../pr/automerge';\nimport { setArtifactErrorStatus } from './artifacts';\nimport { tryBranchAutomerge } from './automerge';\nimport { prAlreadyExisted } from './check-existing';\nimport { commitFilesToBranch } from './commit';\nimport executePostUpgradeCommands from './execute-post-upgrade-commands';\nimport { getUpdatedPackageFiles } from './get-updated';\nimport { handleClosedPr, handleModifiedPr } from './handle-existing';\nimport { shouldReuseExistingBranch } from './reuse';\nimport { isScheduledNow } from './schedule';\nimport { setConfidence, setStability } from './status-checks';\n\nasync function rebaseCheck(\n config: RenovateConfig,\n branchPr: Pr,\n): Promise<boolean> {\n const titleRebase = branchPr.title?.startsWith('rebase!');\n if (titleRebase) {\n logger.debug(\n `Manual rebase requested via PR title for #${branchPr.number}`,\n );\n return true;\n }\n const labelRebase = !!branchPr.labels?.includes(config.rebaseLabel!);\n if (labelRebase) {\n logger.debug(\n `Manual rebase requested via PR labels for #${branchPr.number}`,\n );\n // istanbul ignore if\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would delete label ${config.rebaseLabel!} from #${\n branchPr.number\n }`,\n );\n } else {\n await platform.deleteLabel(branchPr.number, config.rebaseLabel!);\n }\n return true;\n }\n const prRebaseChecked = !!branchPr.bodyStruct?.rebaseRequested;\n if (prRebaseChecked) {\n logger.debug(\n `Manual rebase requested via PR checkbox for #${branchPr.number}`,\n );\n return true;\n }\n\n return false;\n}\n\nasync function deleteBranchSilently(branchName: string): Promise<void> {\n try {\n await scm.deleteBranch(branchName);\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ branchName, err }, 'Branch auto-remove failed');\n }\n}\n\nfunction userChangedTargetBranch(pr: Pr): boolean {\n const oldTargetBranch = pr.bodyStruct?.debugData?.targetBranch;\n if (oldTargetBranch && pr.targetBranch) {\n return pr.targetBranch !== oldTargetBranch;\n }\n return false;\n}\n\nexport interface ProcessBranchResult {\n branchExists: boolean;\n updatesVerified?: boolean;\n prBlockedBy?: PrBlockedBy;\n prNo?: number;\n result: BranchResult;\n commitSha?: string | null;\n}\n\nexport async function processBranch(\n branchConfig: BranchConfig,\n): Promise<ProcessBranchResult> {\n let commitSha: string | null = null;\n let config: BranchConfig = { ...branchConfig };\n logger.trace({ config }, 'processBranch()');\n let branchExists = await scm.branchExists(config.branchName);\n let updatesVerified = false;\n if (!branchExists && config.branchPrefix !== config.branchPrefixOld) {\n const branchName = config.branchName.replace(\n config.branchPrefix!,\n config.branchPrefixOld!,\n );\n branchExists = await scm.branchExists(branchName);\n if (branchExists) {\n config.branchName = branchName;\n logger.debug('Found existing branch with branchPrefixOld');\n }\n }\n\n let branchPr = await platform.getBranchPr(\n config.branchName,\n config.baseBranch,\n );\n logger.debug(`branchExists=${branchExists}`);\n const dependencyDashboardCheck =\n config.dependencyDashboardChecks?.[config.branchName];\n logger.debug(`dependencyDashboardCheck=${dependencyDashboardCheck!}`);\n if (branchPr) {\n config.rebaseRequested = await rebaseCheck(config, branchPr);\n logger.debug(`PR rebase requested=${config.rebaseRequested}`);\n }\n const keepUpdatedLabel = config.keepUpdatedLabel;\n const artifactErrorTopic = emojify(':warning: Artifact update problem');\n const artifactNoticeTopic = emojify(\n ':information_source: Artifact update notice',\n );\n try {\n // Check if branch already existed\n const existingPr =\n !branchPr || config.automerge\n ? await prAlreadyExisted(config)\n : undefined;\n if (existingPr?.state === 'merged') {\n logger.debug(`Matching PR #${existingPr.number} was merged previously`);\n if (config.automerge) {\n logger.debug('Disabling automerge because PR was merged previously');\n config.automerge = false;\n config.automergedPreviously = true;\n }\n } else if (!branchPr && existingPr && !dependencyDashboardCheck) {\n logger.debug(\n { prTitle: config.prTitle },\n 'Closed PR already exists. Skipping branch.',\n );\n await handleClosedPr(config, existingPr);\n return {\n branchExists: false,\n prNo: existingPr.number,\n result: 'already-existed',\n };\n }\n if (\n !branchExists &&\n branchConfig.pendingChecks &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because internalChecksFilter was not met`,\n );\n return {\n branchExists: false,\n prNo: branchPr?.number,\n result: 'pending',\n };\n }\n if (!branchExists) {\n if (config.mode === 'silent' && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because mode=silent`,\n );\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'needs-approval',\n };\n }\n if (config.dependencyDashboardApproval && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because dependencyDashboardApproval=true`,\n );\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'needs-approval',\n };\n }\n }\n\n logger.debug(\n `Open PR Count: ${getCount('ConcurrentPRs')}, Existing Branch Count: ${getCount('Branches')}, Hourly PR Count: ${getCount('HourlyPRs')}`,\n );\n\n if (\n !branchExists &&\n isLimitReached('Branches', branchConfig) &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached branch limit - skipping branch creation');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'branch-limit-reached',\n };\n }\n if (\n isLimitReached('Commits') &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached commits limit - skipping branch');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'commit-limit-reached',\n };\n }\n if (branchExists) {\n // check if branch is labelled to stop\n config.stopUpdating = branchPr?.labels?.includes(\n config.stopUpdatingLabel!,\n );\n\n const prRebaseChecked = !!branchPr?.bodyStruct?.rebaseRequested;\n\n if (branchExists && !dependencyDashboardCheck && config.stopUpdating) {\n if (!prRebaseChecked) {\n logger.info(\n 'Branch updating is skipped because stopUpdatingLabel is present in config',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n }\n\n logger.debug('Checking if PR has been edited');\n const branchIsModified = await scm.isBranchModified(\n config.branchName,\n config.baseBranch,\n );\n if (branchPr) {\n logger.debug('Found existing branch PR');\n if (branchPr.state !== 'open') {\n logger.debug(\n 'PR has been closed or merged since this run started - aborting',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n if (branchIsModified || userChangedTargetBranch(branchPr)) {\n logger.debug(`PR has been edited, PrNo:${branchPr.number}`);\n await handleModifiedPr(config, branchPr);\n if (!(!!dependencyDashboardCheck || config.rebaseRequested)) {\n return {\n branchExists,\n prNo: branchPr.number,\n result: 'pr-edited',\n };\n }\n }\n } else if (branchIsModified) {\n const oldPr = await platform.findPr({\n branchName: config.branchName,\n state: '!open',\n targetBranch: config.baseBranch,\n });\n if (!oldPr) {\n logger.debug('Branch has been edited but found no PR - skipping');\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n const branchSha = await scm.getBranchCommit(config.branchName);\n const oldPrSha = oldPr?.sha;\n if (!oldPrSha || oldPrSha === branchSha) {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR matching this branch - will override it',\n );\n } else {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR but the SHA is different',\n );\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n }\n }\n\n // Check schedule\n config.isScheduledNow = isScheduledNow(config, 'schedule');\n if (!config.isScheduledNow && !dependencyDashboardCheck) {\n if (!branchExists) {\n logger.debug('Skipping branch creation as not within schedule');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'not-scheduled',\n };\n }\n if (config.updateNotScheduled === false && !config.rebaseRequested) {\n logger.debug('Skipping branch update as not within schedule');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'update-not-scheduled',\n };\n }\n if (\n !branchPr &&\n !(config.automerge && config.automergeType === 'branch') // if branch is configured for automerge there's no need for a PR\n ) {\n logger.debug('Skipping PR creation out of schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n logger.debug(\n 'Branch + PR exists but is not scheduled -- will update if necessary',\n );\n }\n //stability checks\n if (\n config.upgrades.some(\n (upgrade) =>\n (is.nonEmptyString(upgrade.minimumReleaseAge) &&\n is.nonEmptyString(upgrade.releaseTimestamp)) ||\n isActiveConfidenceLevel(upgrade.minimumConfidence!),\n )\n ) {\n // Only set a stability status check if one or more of the updates contain\n // both a minimumReleaseAge setting and a releaseTimestamp\n config.stabilityStatus = 'green';\n // Default to 'success' but set 'pending' if any update is pending\n for (const upgrade of config.upgrades) {\n if (\n is.nonEmptyString(upgrade.minimumReleaseAge) &&\n upgrade.releaseTimestamp\n ) {\n const timeElapsed = getElapsedMs(upgrade.releaseTimestamp);\n if (timeElapsed < coerceNumber(toMs(upgrade.minimumReleaseAge))) {\n logger.debug(\n {\n depName: upgrade.depName,\n timeElapsed,\n minimumReleaseAge: upgrade.minimumReleaseAge,\n },\n 'Update has not passed minimum release age',\n );\n config.stabilityStatus = 'yellow';\n continue;\n }\n }\n const datasource = upgrade.datasource!;\n const depName = upgrade.depName!;\n const minimumConfidence = upgrade.minimumConfidence!;\n const updateType = upgrade.updateType!;\n const currentVersion = upgrade.currentVersion!;\n const newVersion = upgrade.newVersion!;\n if (isActiveConfidenceLevel(minimumConfidence)) {\n const confidence =\n (await getMergeConfidenceLevel(\n datasource,\n depName,\n currentVersion,\n newVersion,\n updateType,\n )) ?? 'neutral';\n if (satisfiesConfidenceLevel(confidence, minimumConfidence)) {\n config.confidenceStatus = 'green';\n } else {\n logger.debug(\n { depName, confidence, minimumConfidence },\n 'Update does not meet minimum confidence scores',\n );\n config.confidenceStatus = 'yellow';\n continue;\n }\n }\n }\n // Don't create a branch if we know it will be status 'pending'\n if (\n !dependencyDashboardCheck &&\n !branchExists &&\n config.stabilityStatus === 'yellow' &&\n ['not-pending', 'status-success'].includes(config.prCreation!)\n ) {\n logger.debug(\n 'Skipping branch creation due to internal status checks not met',\n );\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'pending',\n };\n }\n }\n\n let userRebaseRequested =\n dependencyDashboardCheck === 'rebase' ||\n !!config.dependencyDashboardRebaseAllOpen ||\n !!config.rebaseRequested;\n const userApproveAllPendingPR = !!config.dependencyDashboardAllPending;\n const userOpenAllRateLimtedPR = !!config.dependencyDashboardAllRateLimited;\n if (userRebaseRequested) {\n logger.debug('User has requested rebase');\n config.reuseExistingBranch = false;\n } else if (dependencyDashboardCheck === 'global-config') {\n logger.debug(`Manual create/rebase requested via checkedBranches`);\n config.reuseExistingBranch = false;\n userRebaseRequested = true;\n } else if (userApproveAllPendingPR) {\n logger.debug(\n 'A user manually approved all pending PRs via the Dependency Dashboard.',\n );\n } else if (userOpenAllRateLimtedPR) {\n logger.debug(\n 'A user manually approved all rate-limited PRs via the Dependency Dashboard.',\n );\n } else if (\n branchExists &&\n config.rebaseWhen === 'never' &&\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel)) &&\n !dependencyDashboardCheck\n ) {\n logger.debug('rebaseWhen=never so skipping branch update check');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n // if the base branch has been changed by user in renovate config, rebase onto the new baseBranch\n // we have already confirmed earlier that branch isn't modified, so its safe to use targetBranch here\n else if (\n branchPr?.targetBranch &&\n branchPr.targetBranch !== config.baseBranch\n ) {\n logger.debug(\n 'Base branch changed by user, rebasing the branch onto new base',\n );\n config.reuseExistingBranch = false;\n } else {\n config = await shouldReuseExistingBranch(config);\n }\n // TODO: types (#22198)\n logger.debug(`Using reuseExistingBranch: ${config.reuseExistingBranch!}`);\n if (!(config.reuseExistingBranch && config.skipBranchUpdate)) {\n await scm.checkoutBranch(config.baseBranch);\n const res = await getUpdatedPackageFiles(config);\n // istanbul ignore if\n if (res.artifactErrors && config.artifactErrors) {\n res.artifactErrors = config.artifactErrors.concat(res.artifactErrors);\n }\n config = { ...config, ...res };\n if (config.updatedPackageFiles?.length) {\n logger.debug(\n `Updated ${config.updatedPackageFiles.length} package files`,\n );\n } else {\n logger.debug('No package files need updating');\n }\n const additionalFiles = await getAdditionalFiles(\n config,\n branchConfig.packageFiles!,\n );\n config.artifactErrors = (config.artifactErrors ?? []).concat(\n additionalFiles.artifactErrors,\n );\n config.updatedArtifacts = (config.updatedArtifacts ?? []).concat(\n additionalFiles.updatedArtifacts,\n );\n if (config.updatedArtifacts?.length) {\n logger.debug(\n {\n updatedArtifacts: config.updatedArtifacts.map((f) =>\n f.type === 'deletion' ? `${f.path} (delete)` : f.path,\n ),\n },\n `Updated ${config.updatedArtifacts.length} lock files`,\n );\n } else {\n logger.debug('No updated lock files in branch');\n }\n if (config.fetchChangeLogs === 'branch') {\n await embedChangelogs(config.upgrades);\n }\n\n const postUpgradeCommandResults =\n await executePostUpgradeCommands(config);\n\n if (postUpgradeCommandResults !== null) {\n const { updatedArtifacts, artifactErrors } = postUpgradeCommandResults;\n config.updatedArtifacts = updatedArtifacts;\n config.artifactErrors = artifactErrors;\n }\n\n removeMeta(['dep']);\n\n if (config.artifactErrors?.length) {\n if (config.releaseTimestamp) {\n logger.debug(`Branch timestamp: ` + config.releaseTimestamp);\n const releaseTimestamp = DateTime.fromISO(config.releaseTimestamp);\n if (releaseTimestamp.plus({ hours: 2 }) < DateTime.local()) {\n logger.debug(\n 'PR is older than 2 hours, raise PR with lock file errors',\n );\n } else if (branchExists) {\n logger.debug(\n 'PR is less than 2 hours old but branchExists so updating anyway',\n );\n } else {\n logger.debug(\n 'PR is less than 2 hours old - raise error instead of PR',\n );\n throw new Error(MANAGER_LOCKFILE_ERROR);\n }\n } else {\n logger.debug('PR has no releaseTimestamp');\n }\n } else if (config.updatedArtifacts?.length && branchPr) {\n // If there are artifacts, no errors, and an existing PR then ensure any artifacts error comment is removed\n // istanbul ignore if\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure comment removal in PR #${branchPr.number}`,\n );\n } else {\n // Remove artifacts error comment only if this run has successfully updated artifacts\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactErrorTopic,\n });\n\n if (!config.artifactNotices?.length) {\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactNoticeTopic,\n });\n }\n }\n }\n const forcedManually = userRebaseRequested || !branchExists;\n\n config.isConflicted ??=\n branchExists &&\n (await scm.isBranchConflicted(config.baseBranch, config.branchName));\n config.forceCommit = forcedManually || config.isConflicted;\n\n // compile commit message with body, which maybe needs changelogs\n if (config.commitBody) {\n // changelog is on first upgrade\n config.commitMessage = `${config.commitMessage!}\\n\\n${template.compile(\n config.commitBody,\n {\n ...config,\n logJSON: config.upgrades[0].logJSON,\n releases: config.upgrades[0].releases,\n },\n )}`;\n\n logger.trace(`commitMessage: ` + JSON.stringify(config.commitMessage));\n }\n\n commitSha = await commitFilesToBranch(config);\n // Checkout to base branch to ensure that the next branch processing always starts with git being on the baseBranch\n // baseBranch is not checked out at the start of processBranch() due to pull/16246\n await scm.checkoutBranch(config.baseBranch);\n updatesVerified = true;\n }\n\n if (branchPr) {\n const platformPrOptions = getPlatformPrOptions(config);\n if (\n platformPrOptions.usePlatformAutomerge &&\n platform.reattemptPlatformAutomerge\n ) {\n await platform.reattemptPlatformAutomerge({\n number: branchPr.number,\n platformPrOptions,\n });\n }\n // istanbul ignore if\n if (platform.refreshPr) {\n await platform.refreshPr(branchPr.number);\n }\n }\n if (!commitSha && !branchExists) {\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n if (commitSha) {\n const action = branchExists ? 'updated' : 'created';\n logger.info({ commitSha }, `Branch ${action}`);\n }\n // Set branch statuses\n await setArtifactErrorStatus(config);\n await setStability(config);\n await setConfidence(config);\n\n // new commit means status check are pretty sure pending but maybe not reported yet\n // if PR has not been created + new commit + prCreation !== immediate skip\n // but do not break when there are artifact errors\n if (\n !branchPr &&\n !config.artifactErrors?.length &&\n !userRebaseRequested &&\n commitSha &&\n config.prCreation !== 'immediate'\n ) {\n logger.debug(`Branch status pending, current sha: ${commitSha}`);\n return {\n branchExists: true,\n updatesVerified,\n result: 'pending',\n commitSha,\n };\n }\n\n // Try to automerge branch and finish if successful, but only if branch already existed before this run\n // skip if we have a non-immediate pr and there is an existing PR,\n // we want to update the PR and skip the Auto merge since status checks aren't done yet\n if (!config.artifactErrors?.length && (!commitSha || config.ignoreTests)) {\n const mergeStatus = await tryBranchAutomerge(config);\n logger.debug(`mergeStatus=${mergeStatus}`);\n if (mergeStatus === 'automerged') {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would delete branch' + config.branchName);\n } else {\n await deleteBranchSilently(config.branchName);\n }\n logger.debug('Branch is automerged - returning');\n return { branchExists: false, result: 'automerged' };\n }\n if (mergeStatus === 'off schedule') {\n logger.debug(\n 'Branch cannot automerge now because automergeSchedule is off schedule - skipping',\n );\n return {\n branchExists,\n result: 'not-scheduled',\n commitSha,\n };\n }\n if (\n mergeStatus === 'stale' &&\n ['conflicted', 'never'].includes(config.rebaseWhen!) &&\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel))\n ) {\n logger.warn(\n 'Branch cannot automerge because it is behind base branch and rebaseWhen setting disallows rebasing - raising a PR instead',\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n if (\n mergeStatus === 'automerge aborted - PR exists' ||\n mergeStatus === 'branch status error' ||\n mergeStatus === 'failed'\n ) {\n logger.debug(\n `Branch automerge not possible, mergeStatus:${mergeStatus}`,\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 404) {\n logger.debug({ err }, 'Received a 404 error - aborting run');\n throw new Error(REPOSITORY_CHANGED);\n }\n if (err.message === PLATFORM_RATE_LIMIT_EXCEEDED) {\n logger.debug('Passing rate-limit-exceeded error up');\n throw err;\n }\n if (err.message === REPOSITORY_CHANGED) {\n logger.debug('Passing repository-changed error up');\n throw err;\n }\n if (err.message?.startsWith('remote: Invalid username or password')) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n if (\n err.message?.startsWith(\n 'ssh_exchange_identification: Connection closed by remote host',\n )\n ) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n if (err.message === PLATFORM_BAD_CREDENTIALS) {\n logger.debug('Passing bad-credentials error up');\n throw err;\n }\n if (err.message === PLATFORM_INTEGRATION_UNAUTHORIZED) {\n logger.debug('Passing integration-unauthorized error up');\n throw err;\n }\n if (err.message === MANAGER_LOCKFILE_ERROR) {\n logger.debug('Passing lockfile-error up');\n throw err;\n }\n if (err.message?.includes('space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n if (err.message === SYSTEM_INSUFFICIENT_DISK_SPACE) {\n logger.debug('Passing disk-space error up');\n throw err;\n }\n if (err.message.startsWith('Resource not accessible by integration')) {\n logger.debug('Passing 403 error up');\n throw err;\n }\n if (err.message === WORKER_FILE_UPDATE_FAILED) {\n logger.warn('Error updating branch: update failure');\n } else if (err.message.startsWith('bundler-')) {\n // we have already warned inside the bundler artifacts error handling, so just return\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n } else if (\n err.messagee &&\n err.message.includes('fatal: Authentication failed')\n ) {\n throw new Error(PLATFORM_AUTHENTICATION_ERROR);\n } else if (err.message?.includes('fatal: bad revision')) {\n logger.debug({ err }, 'Aborting job due to bad revision error');\n throw new Error(REPOSITORY_CHANGED);\n } else if (err.message === CONFIG_VALIDATION) {\n logger.debug('Passing config validation error up');\n throw err;\n } else if (err.message === TEMPORARY_ERROR) {\n logger.debug('Passing TEMPORARY_ERROR error up');\n throw err;\n } else if (!(err instanceof ExternalHostError)) {\n logger.warn({ err }, `Error updating branch`);\n }\n // Don't throw here - we don't want to stop the other renovations\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n }\n try {\n logger.debug('Ensuring PR');\n logger.debug(\n `There are ${config.errors!.length} errors and ${\n config.warnings!.length\n } warnings`,\n );\n const ensurePrResult = await ensurePr(config);\n if (ensurePrResult.type === 'without-pr') {\n const { prBlockedBy } = ensurePrResult;\n branchPr = null;\n if (prBlockedBy === 'RateLimited' && !config.isVulnerabilityAlert) {\n logger.debug('Reached PR limit - skipping PR creation');\n return {\n branchExists,\n prBlockedBy,\n result: 'pr-limit-reached',\n commitSha,\n };\n }\n // TODO: ensurePr should check for automerge itself (#9719)\n if (prBlockedBy === 'NeedsApproval') {\n return {\n branchExists,\n prBlockedBy,\n result: 'needs-pr-approval',\n commitSha,\n };\n }\n if (prBlockedBy === 'AwaitingTests') {\n return {\n branchExists,\n prBlockedBy,\n result: 'pending',\n commitSha,\n };\n }\n if (prBlockedBy === 'BranchAutomerge') {\n return {\n branchExists,\n prBlockedBy,\n result: 'done',\n commitSha,\n };\n }\n if (prBlockedBy === 'Error') {\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n logger.warn({ prBlockedBy }, 'Unknown PrBlockedBy result');\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n if (ensurePrResult.type === 'with-pr') {\n const { pr } = ensurePrResult;\n branchPr = pr;\n if (config.artifactErrors?.length) {\n logger.warn(\n { artifactErrors: config.artifactErrors },\n 'artifactErrors',\n );\n let content = `Renovate failed to update `;\n content +=\n config.artifactErrors.length > 1 ? 'artifacts' : 'an artifact';\n content +=\n ' related to this branch. You probably do not want to merge this PR as-is.';\n content += emojify(\n `\\n\\n:recycle: Renovate will retry this branch, including artifacts, only when one of the following happens:\\n\\n`,\n );\n content +=\n ' - any of the package files in this branch needs updating, or \\n';\n content += ' - the branch becomes conflicted, or\\n';\n content +=\n ' - you click the rebase/retry checkbox if found above, or\\n';\n content +=\n ' - you rename this PR\\'s title to start with \"rebase!\" to trigger it manually';\n content += '\\n\\nThe artifact failure details are included below:\\n\\n';\n // TODO: types (#22198)\n config.artifactErrors.forEach((error) => {\n content += `##### File name: ${error.lockFile!}\\n\\n`;\n content += `\\`\\`\\`\\n${error.stderr!}\\n\\`\\`\\`\\n\\n`;\n });\n content = platform.massageMarkdown(content);\n if (\n !(\n config.suppressNotifications!.includes('artifactErrors') ||\n config.suppressNotifications!.includes('lockFileErrors')\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure lock file error comment in PR #${pr.number}`,\n );\n } else {\n await ensureComment({\n number: pr.number,\n topic: artifactErrorTopic,\n content,\n });\n }\n }\n } else {\n if (config.artifactNotices?.length) {\n const contentLines: string[] = [];\n for (const notice of config.artifactNotices) {\n contentLines.push(`##### File name: ${notice.file}`);\n contentLines.push(notice.message);\n }\n const content = contentLines.join('\\n\\n');\n await ensureComment({\n number: pr.number,\n topic: artifactNoticeTopic,\n content,\n });\n }\n\n if (config.automerge) {\n logger.debug('PR is configured for automerge');\n // skip automerge if there is a new commit since status checks aren't done yet\n if (config.ignoreTests === true || !commitSha) {\n logger.debug('checking auto-merge');\n const prAutomergeResult = await checkAutoMerge(pr, config);\n if (prAutomergeResult?.automerged) {\n return {\n branchExists,\n result: 'automerged',\n commitSha,\n };\n }\n }\n } else {\n logger.debug('PR is not configured for automerge');\n }\n }\n }\n } catch (err) /* istanbul ignore next */ {\n if (\n err instanceof ExternalHostError ||\n [PLATFORM_RATE_LIMIT_EXCEEDED, REPOSITORY_CHANGED].includes(err.message)\n ) {\n logger.debug('Passing PR error up');\n throw err;\n }\n // Otherwise don't throw here - we don't want to stop the other renovations\n logger.error({ err }, `Error ensuring PR`);\n }\n if (!branchExists) {\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'pr-created',\n commitSha,\n };\n }\n return {\n branchExists,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'done',\n commitSha,\n };\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/update/branch/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../../config/global';\nimport type { RenovateConfig } from '../../../../config/types';\nimport {\n CONFIG_VALIDATION,\n MANAGER_LOCKFILE_ERROR,\n PLATFORM_AUTHENTICATION_ERROR,\n PLATFORM_BAD_CREDENTIALS,\n PLATFORM_INTEGRATION_UNAUTHORIZED,\n PLATFORM_RATE_LIMIT_EXCEEDED,\n REPOSITORY_CHANGED,\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n WORKER_FILE_UPDATE_FAILED,\n} from '../../../../constants/error-messages';\nimport { logger, removeMeta } from '../../../../logger';\nimport { getAdditionalFiles } from '../../../../modules/manager/npm/post-update';\nimport type { Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport {\n ensureComment,\n ensureCommentRemoval,\n} from '../../../../modules/platform/comment';\nimport { scm } from '../../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../../types/errors/external-host-error';\nimport { getElapsedMs } from '../../../../util/date';\nimport { emojify } from '../../../../util/emoji';\nimport {\n getMergeConfidenceLevel,\n isActiveConfidenceLevel,\n satisfiesConfidenceLevel,\n} from '../../../../util/merge-confidence';\nimport { coerceNumber } from '../../../../util/number';\nimport { toMs } from '../../../../util/pretty-time';\nimport * as template from '../../../../util/template';\nimport { getCount, isLimitReached } from '../../../global/limits';\nimport type { BranchConfig, BranchResult, PrBlockedBy } from '../../../types';\nimport { embedChangelogs } from '../../changelog';\nimport { ensurePr, getPlatformPrOptions } from '../pr';\nimport { checkAutoMerge } from '../pr/automerge';\nimport { setArtifactErrorStatus } from './artifacts';\nimport { tryBranchAutomerge } from './automerge';\nimport { bumpVersions } from './bump-versions';\nimport { prAlreadyExisted } from './check-existing';\nimport { commitFilesToBranch } from './commit';\nimport executePostUpgradeCommands from './execute-post-upgrade-commands';\nimport { getUpdatedPackageFiles } from './get-updated';\nimport { handleClosedPr, handleModifiedPr } from './handle-existing';\nimport { shouldReuseExistingBranch } from './reuse';\nimport { isScheduledNow } from './schedule';\nimport { setConfidence, setStability } from './status-checks';\n\nasync function rebaseCheck(\n config: RenovateConfig,\n branchPr: Pr,\n): Promise<boolean> {\n const titleRebase = branchPr.title?.startsWith('rebase!');\n if (titleRebase) {\n logger.debug(\n `Manual rebase requested via PR title for #${branchPr.number}`,\n );\n return true;\n }\n const labelRebase = !!branchPr.labels?.includes(config.rebaseLabel!);\n if (labelRebase) {\n logger.debug(\n `Manual rebase requested via PR labels for #${branchPr.number}`,\n );\n // istanbul ignore if\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would delete label ${config.rebaseLabel!} from #${\n branchPr.number\n }`,\n );\n } else {\n await platform.deleteLabel(branchPr.number, config.rebaseLabel!);\n }\n return true;\n }\n const prRebaseChecked = !!branchPr.bodyStruct?.rebaseRequested;\n if (prRebaseChecked) {\n logger.debug(\n `Manual rebase requested via PR checkbox for #${branchPr.number}`,\n );\n return true;\n }\n\n return false;\n}\n\nasync function deleteBranchSilently(branchName: string): Promise<void> {\n try {\n await scm.deleteBranch(branchName);\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ branchName, err }, 'Branch auto-remove failed');\n }\n}\n\nfunction userChangedTargetBranch(pr: Pr): boolean {\n const oldTargetBranch = pr.bodyStruct?.debugData?.targetBranch;\n if (oldTargetBranch && pr.targetBranch) {\n return pr.targetBranch !== oldTargetBranch;\n }\n return false;\n}\n\nexport interface ProcessBranchResult {\n branchExists: boolean;\n updatesVerified?: boolean;\n prBlockedBy?: PrBlockedBy;\n prNo?: number;\n result: BranchResult;\n commitSha?: string | null;\n}\n\nexport async function processBranch(\n branchConfig: BranchConfig,\n): Promise<ProcessBranchResult> {\n let commitSha: string | null = null;\n let config: BranchConfig = { ...branchConfig };\n logger.trace({ config }, 'processBranch()');\n let branchExists = await scm.branchExists(config.branchName);\n let updatesVerified = false;\n if (!branchExists && config.branchPrefix !== config.branchPrefixOld) {\n const branchName = config.branchName.replace(\n config.branchPrefix!,\n config.branchPrefixOld!,\n );\n branchExists = await scm.branchExists(branchName);\n if (branchExists) {\n config.branchName = branchName;\n logger.debug('Found existing branch with branchPrefixOld');\n }\n }\n\n let branchPr = await platform.getBranchPr(\n config.branchName,\n config.baseBranch,\n );\n logger.debug(`branchExists=${branchExists}`);\n const dependencyDashboardCheck =\n config.dependencyDashboardChecks?.[config.branchName];\n logger.debug(`dependencyDashboardCheck=${dependencyDashboardCheck!}`);\n if (branchPr) {\n config.rebaseRequested = await rebaseCheck(config, branchPr);\n logger.debug(`PR rebase requested=${config.rebaseRequested}`);\n }\n const keepUpdatedLabel = config.keepUpdatedLabel;\n const artifactErrorTopic = emojify(':warning: Artifact update problem');\n const artifactNoticeTopic = emojify(\n ':information_source: Artifact update notice',\n );\n try {\n // Check if branch already existed\n const existingPr =\n !branchPr || config.automerge\n ? await prAlreadyExisted(config)\n : undefined;\n if (existingPr?.state === 'merged') {\n logger.debug(`Matching PR #${existingPr.number} was merged previously`);\n if (config.automerge) {\n logger.debug('Disabling automerge because PR was merged previously');\n config.automerge = false;\n config.automergedPreviously = true;\n }\n } else if (!branchPr && existingPr && !dependencyDashboardCheck) {\n logger.debug(\n { prTitle: config.prTitle },\n 'Closed PR already exists. Skipping branch.',\n );\n await handleClosedPr(config, existingPr);\n return {\n branchExists: false,\n prNo: existingPr.number,\n result: 'already-existed',\n };\n }\n if (\n !branchExists &&\n branchConfig.pendingChecks &&\n !dependencyDashboardCheck\n ) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because internalChecksFilter was not met`,\n );\n return {\n branchExists: false,\n prNo: branchPr?.number,\n result: 'pending',\n };\n }\n if (!branchExists) {\n if (config.mode === 'silent' && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because mode=silent`,\n );\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'needs-approval',\n };\n }\n if (config.dependencyDashboardApproval && !dependencyDashboardCheck) {\n logger.debug(\n `Branch ${config.branchName} creation is disabled because dependencyDashboardApproval=true`,\n );\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'needs-approval',\n };\n }\n }\n\n logger.debug(\n `Open PR Count: ${getCount('ConcurrentPRs')}, Existing Branch Count: ${getCount('Branches')}, Hourly PR Count: ${getCount('HourlyPRs')}`,\n );\n\n if (\n !branchExists &&\n isLimitReached('Branches', branchConfig) &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached branch limit - skipping branch creation');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'branch-limit-reached',\n };\n }\n if (\n isLimitReached('Commits') &&\n !dependencyDashboardCheck &&\n !config.isVulnerabilityAlert\n ) {\n logger.debug('Reached commits limit - skipping branch');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'commit-limit-reached',\n };\n }\n if (branchExists) {\n // check if branch is labelled to stop\n config.stopUpdating = branchPr?.labels?.includes(\n config.stopUpdatingLabel!,\n );\n\n const prRebaseChecked = !!branchPr?.bodyStruct?.rebaseRequested;\n\n if (branchExists && !dependencyDashboardCheck && config.stopUpdating) {\n if (!prRebaseChecked) {\n logger.info(\n 'Branch updating is skipped because stopUpdatingLabel is present in config',\n );\n return {\n branchExists: true,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n }\n\n logger.debug('Checking if PR has been edited');\n const branchIsModified = await scm.isBranchModified(\n config.branchName,\n config.baseBranch,\n );\n if (branchPr) {\n logger.debug('Found existing branch PR');\n if (branchPr.state !== 'open') {\n logger.debug(\n 'PR has been closed or merged since this run started - aborting',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n if (branchIsModified || userChangedTargetBranch(branchPr)) {\n logger.debug(`PR has been edited, PrNo:${branchPr.number}`);\n await handleModifiedPr(config, branchPr);\n if (!(!!dependencyDashboardCheck || config.rebaseRequested)) {\n return {\n branchExists,\n prNo: branchPr.number,\n result: 'pr-edited',\n };\n }\n }\n } else if (branchIsModified) {\n const oldPr = await platform.findPr({\n branchName: config.branchName,\n state: '!open',\n targetBranch: config.baseBranch,\n });\n if (!oldPr) {\n logger.debug('Branch has been edited but found no PR - skipping');\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n const branchSha = await scm.getBranchCommit(config.branchName);\n const oldPrSha = oldPr?.sha;\n if (!oldPrSha || oldPrSha === branchSha) {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR matching this branch - will override it',\n );\n } else {\n logger.debug(\n { oldPrNumber: oldPr.number, oldPrSha, branchSha },\n 'Found old PR but the SHA is different',\n );\n return {\n branchExists,\n result: 'pr-edited',\n };\n }\n }\n }\n\n // Check schedule\n config.isScheduledNow = isScheduledNow(config, 'schedule');\n if (!config.isScheduledNow && !dependencyDashboardCheck) {\n if (!branchExists) {\n logger.debug('Skipping branch creation as not within schedule');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'not-scheduled',\n };\n }\n if (config.updateNotScheduled === false && !config.rebaseRequested) {\n logger.debug('Skipping branch update as not within schedule');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'update-not-scheduled',\n };\n }\n if (\n !branchPr &&\n !(config.automerge && config.automergeType === 'branch') // if branch is configured for automerge there's no need for a PR\n ) {\n logger.debug('Skipping PR creation out of schedule');\n return {\n branchExists,\n result: 'not-scheduled',\n };\n }\n logger.debug(\n 'Branch + PR exists but is not scheduled -- will update if necessary',\n );\n }\n //stability checks\n if (\n config.upgrades.some(\n (upgrade) =>\n (is.nonEmptyString(upgrade.minimumReleaseAge) &&\n is.nonEmptyString(upgrade.releaseTimestamp)) ||\n isActiveConfidenceLevel(upgrade.minimumConfidence!),\n )\n ) {\n // Only set a stability status check if one or more of the updates contain\n // both a minimumReleaseAge setting and a releaseTimestamp\n config.stabilityStatus = 'green';\n // Default to 'success' but set 'pending' if any update is pending\n for (const upgrade of config.upgrades) {\n if (\n is.nonEmptyString(upgrade.minimumReleaseAge) &&\n upgrade.releaseTimestamp\n ) {\n const timeElapsed = getElapsedMs(upgrade.releaseTimestamp);\n if (timeElapsed < coerceNumber(toMs(upgrade.minimumReleaseAge))) {\n logger.debug(\n {\n depName: upgrade.depName,\n timeElapsed,\n minimumReleaseAge: upgrade.minimumReleaseAge,\n },\n 'Update has not passed minimum release age',\n );\n config.stabilityStatus = 'yellow';\n continue;\n }\n }\n const datasource = upgrade.datasource!;\n const depName = upgrade.depName!;\n const minimumConfidence = upgrade.minimumConfidence!;\n const updateType = upgrade.updateType!;\n const currentVersion = upgrade.currentVersion!;\n const newVersion = upgrade.newVersion!;\n if (isActiveConfidenceLevel(minimumConfidence)) {\n const confidence =\n (await getMergeConfidenceLevel(\n datasource,\n depName,\n currentVersion,\n newVersion,\n updateType,\n )) ?? 'neutral';\n if (satisfiesConfidenceLevel(confidence, minimumConfidence)) {\n config.confidenceStatus = 'green';\n } else {\n logger.debug(\n { depName, confidence, minimumConfidence },\n 'Update does not meet minimum confidence scores',\n );\n config.confidenceStatus = 'yellow';\n continue;\n }\n }\n }\n // Don't create a branch if we know it will be status 'pending'\n if (\n !dependencyDashboardCheck &&\n !branchExists &&\n config.stabilityStatus === 'yellow' &&\n ['not-pending', 'status-success'].includes(config.prCreation!)\n ) {\n logger.debug(\n 'Skipping branch creation due to internal status checks not met',\n );\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'pending',\n };\n }\n }\n\n let userRebaseRequested =\n dependencyDashboardCheck === 'rebase' ||\n !!config.dependencyDashboardRebaseAllOpen ||\n !!config.rebaseRequested;\n const userApproveAllPendingPR = !!config.dependencyDashboardAllPending;\n const userOpenAllRateLimtedPR = !!config.dependencyDashboardAllRateLimited;\n if (userRebaseRequested) {\n logger.debug('User has requested rebase');\n config.reuseExistingBranch = false;\n } else if (dependencyDashboardCheck === 'global-config') {\n logger.debug(`Manual create/rebase requested via checkedBranches`);\n config.reuseExistingBranch = false;\n userRebaseRequested = true;\n } else if (userApproveAllPendingPR) {\n logger.debug(\n 'A user manually approved all pending PRs via the Dependency Dashboard.',\n );\n } else if (userOpenAllRateLimtedPR) {\n logger.debug(\n 'A user manually approved all rate-limited PRs via the Dependency Dashboard.',\n );\n } else if (\n branchExists &&\n config.rebaseWhen === 'never' &&\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel)) &&\n !dependencyDashboardCheck\n ) {\n logger.debug('rebaseWhen=never so skipping branch update check');\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n // if the base branch has been changed by user in renovate config, rebase onto the new baseBranch\n // we have already confirmed earlier that branch isn't modified, so its safe to use targetBranch here\n else if (\n branchPr?.targetBranch &&\n branchPr.targetBranch !== config.baseBranch\n ) {\n logger.debug(\n 'Base branch changed by user, rebasing the branch onto new base',\n );\n config.reuseExistingBranch = false;\n } else {\n config = await shouldReuseExistingBranch(config);\n }\n // TODO: types (#22198)\n logger.debug(`Using reuseExistingBranch: ${config.reuseExistingBranch!}`);\n if (!(config.reuseExistingBranch && config.skipBranchUpdate)) {\n await scm.checkoutBranch(config.baseBranch);\n const res = await getUpdatedPackageFiles(config);\n // istanbul ignore if\n if (res.artifactErrors && config.artifactErrors) {\n res.artifactErrors = config.artifactErrors.concat(res.artifactErrors);\n }\n config = { ...config, ...res };\n if (config.updatedPackageFiles?.length) {\n logger.debug(\n `Updated ${config.updatedPackageFiles.length} package files`,\n );\n } else {\n logger.debug('No package files need updating');\n }\n const additionalFiles = await getAdditionalFiles(\n config,\n branchConfig.packageFiles!,\n );\n config.artifactErrors = (config.artifactErrors ?? []).concat(\n additionalFiles.artifactErrors,\n );\n config.updatedArtifacts = (config.updatedArtifacts ?? []).concat(\n additionalFiles.updatedArtifacts,\n );\n if (config.updatedArtifacts?.length) {\n logger.debug(\n {\n updatedArtifacts: config.updatedArtifacts.map((f) =>\n f.type === 'deletion' ? `${f.path} (delete)` : f.path,\n ),\n },\n `Updated ${config.updatedArtifacts.length} lock files`,\n );\n } else {\n logger.debug('No updated lock files in branch');\n }\n if (config.fetchChangeLogs === 'branch') {\n await embedChangelogs(config.upgrades);\n }\n\n const postUpgradeCommandResults =\n await executePostUpgradeCommands(config);\n\n if (postUpgradeCommandResults !== null) {\n const { updatedArtifacts, artifactErrors } = postUpgradeCommandResults;\n config.updatedArtifacts = updatedArtifacts;\n config.artifactErrors = artifactErrors;\n }\n\n // modifies the file changes in place to allow having a version bump in a packageFile or artifact\n await bumpVersions(config);\n\n removeMeta(['dep']);\n\n if (config.artifactErrors?.length) {\n if (config.releaseTimestamp) {\n logger.debug(`Branch timestamp: ` + config.releaseTimestamp);\n const releaseTimestamp = DateTime.fromISO(config.releaseTimestamp);\n if (releaseTimestamp.plus({ hours: 2 }) < DateTime.local()) {\n logger.debug(\n 'PR is older than 2 hours, raise PR with lock file errors',\n );\n } else if (branchExists) {\n logger.debug(\n 'PR is less than 2 hours old but branchExists so updating anyway',\n );\n } else {\n logger.debug(\n 'PR is less than 2 hours old - raise error instead of PR',\n );\n throw new Error(MANAGER_LOCKFILE_ERROR);\n }\n } else {\n logger.debug('PR has no releaseTimestamp');\n }\n } else if (config.updatedArtifacts?.length && branchPr) {\n // If there are artifacts, no errors, and an existing PR then ensure any artifacts error comment is removed\n // istanbul ignore if\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure comment removal in PR #${branchPr.number}`,\n );\n } else {\n // Remove artifacts error comment only if this run has successfully updated artifacts\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactErrorTopic,\n });\n\n if (!config.artifactNotices?.length) {\n await ensureCommentRemoval({\n type: 'by-topic',\n number: branchPr.number,\n topic: artifactNoticeTopic,\n });\n }\n }\n }\n const forcedManually = userRebaseRequested || !branchExists;\n\n config.isConflicted ??=\n branchExists &&\n (await scm.isBranchConflicted(config.baseBranch, config.branchName));\n config.forceCommit = forcedManually || config.isConflicted;\n\n // compile commit message with body, which maybe needs changelogs\n if (config.commitBody) {\n // changelog is on first upgrade\n config.commitMessage = `${config.commitMessage!}\\n\\n${template.compile(\n config.commitBody,\n {\n ...config,\n logJSON: config.upgrades[0].logJSON,\n releases: config.upgrades[0].releases,\n },\n )}`;\n\n logger.trace(`commitMessage: ` + JSON.stringify(config.commitMessage));\n }\n\n commitSha = await commitFilesToBranch(config);\n // Checkout to base branch to ensure that the next branch processing always starts with git being on the baseBranch\n // baseBranch is not checked out at the start of processBranch() due to pull/16246\n await scm.checkoutBranch(config.baseBranch);\n updatesVerified = true;\n }\n\n if (branchPr) {\n const platformPrOptions = getPlatformPrOptions(config);\n if (\n platformPrOptions.usePlatformAutomerge &&\n platform.reattemptPlatformAutomerge\n ) {\n await platform.reattemptPlatformAutomerge({\n number: branchPr.number,\n platformPrOptions,\n });\n }\n // istanbul ignore if\n if (platform.refreshPr) {\n await platform.refreshPr(branchPr.number);\n }\n }\n if (!commitSha && !branchExists) {\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'no-work',\n };\n }\n if (commitSha) {\n const action = branchExists ? 'updated' : 'created';\n logger.info({ commitSha }, `Branch ${action}`);\n }\n // Set branch statuses\n await setArtifactErrorStatus(config);\n await setStability(config);\n await setConfidence(config);\n\n // new commit means status check are pretty sure pending but maybe not reported yet\n // if PR has not been created + new commit + prCreation !== immediate skip\n // but do not break when there are artifact errors\n if (\n !branchPr &&\n !config.artifactErrors?.length &&\n !userRebaseRequested &&\n commitSha &&\n config.prCreation !== 'immediate'\n ) {\n logger.debug(`Branch status pending, current sha: ${commitSha}`);\n return {\n branchExists: true,\n updatesVerified,\n result: 'pending',\n commitSha,\n };\n }\n\n // Try to automerge branch and finish if successful, but only if branch already existed before this run\n // skip if we have a non-immediate pr and there is an existing PR,\n // we want to update the PR and skip the Auto merge since status checks aren't done yet\n if (!config.artifactErrors?.length && (!commitSha || config.ignoreTests)) {\n const mergeStatus = await tryBranchAutomerge(config);\n logger.debug(`mergeStatus=${mergeStatus}`);\n if (mergeStatus === 'automerged') {\n if (GlobalConfig.get('dryRun')) {\n logger.info('DRY-RUN: Would delete branch' + config.branchName);\n } else {\n await deleteBranchSilently(config.branchName);\n }\n logger.debug('Branch is automerged - returning');\n return { branchExists: false, result: 'automerged' };\n }\n if (mergeStatus === 'off schedule') {\n logger.debug(\n 'Branch cannot automerge now because automergeSchedule is off schedule - skipping',\n );\n return {\n branchExists,\n result: 'not-scheduled',\n commitSha,\n };\n }\n if (\n mergeStatus === 'stale' &&\n ['conflicted', 'never'].includes(config.rebaseWhen!) &&\n !(keepUpdatedLabel && branchPr?.labels?.includes(keepUpdatedLabel))\n ) {\n logger.warn(\n 'Branch cannot automerge because it is behind base branch and rebaseWhen setting disallows rebasing - raising a PR instead',\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n if (\n mergeStatus === 'automerge aborted - PR exists' ||\n mergeStatus === 'branch status error' ||\n mergeStatus === 'failed'\n ) {\n logger.debug(\n `Branch automerge not possible, mergeStatus:${mergeStatus}`,\n );\n config.forcePr = true;\n config.branchAutomergeFailureMessage = mergeStatus;\n }\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 404) {\n logger.debug({ err }, 'Received a 404 error - aborting run');\n throw new Error(REPOSITORY_CHANGED);\n }\n if (err.message === PLATFORM_RATE_LIMIT_EXCEEDED) {\n logger.debug('Passing rate-limit-exceeded error up');\n throw err;\n }\n if (err.message === REPOSITORY_CHANGED) {\n logger.debug('Passing repository-changed error up');\n throw err;\n }\n if (err.message?.startsWith('remote: Invalid username or password')) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n if (\n err.message?.startsWith(\n 'ssh_exchange_identification: Connection closed by remote host',\n )\n ) {\n logger.debug('Throwing bad credentials');\n throw new Error(PLATFORM_BAD_CREDENTIALS);\n }\n if (err.message === PLATFORM_BAD_CREDENTIALS) {\n logger.debug('Passing bad-credentials error up');\n throw err;\n }\n if (err.message === PLATFORM_INTEGRATION_UNAUTHORIZED) {\n logger.debug('Passing integration-unauthorized error up');\n throw err;\n }\n if (err.message === MANAGER_LOCKFILE_ERROR) {\n logger.debug('Passing lockfile-error up');\n throw err;\n }\n if (err.message?.includes('space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n if (err.message === SYSTEM_INSUFFICIENT_DISK_SPACE) {\n logger.debug('Passing disk-space error up');\n throw err;\n }\n if (err.message.startsWith('Resource not accessible by integration')) {\n logger.debug('Passing 403 error up');\n throw err;\n }\n if (err.message === WORKER_FILE_UPDATE_FAILED) {\n logger.warn('Error updating branch: update failure');\n } else if (err.message.startsWith('bundler-')) {\n // we have already warned inside the bundler artifacts error handling, so just return\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n } else if (\n err.messagee &&\n err.message.includes('fatal: Authentication failed')\n ) {\n throw new Error(PLATFORM_AUTHENTICATION_ERROR);\n } else if (err.message?.includes('fatal: bad revision')) {\n logger.debug({ err }, 'Aborting job due to bad revision error');\n throw new Error(REPOSITORY_CHANGED);\n } else if (err.message === CONFIG_VALIDATION) {\n logger.debug('Passing config validation error up');\n throw err;\n } else if (err.message === TEMPORARY_ERROR) {\n logger.debug('Passing TEMPORARY_ERROR error up');\n throw err;\n } else if (!(err instanceof ExternalHostError)) {\n logger.warn({ err }, `Error updating branch`);\n }\n // Don't throw here - we don't want to stop the other renovations\n return {\n branchExists,\n prNo: branchPr?.number,\n result: 'error',\n commitSha,\n };\n }\n try {\n logger.debug('Ensuring PR');\n logger.debug(\n `There are ${config.errors!.length} errors and ${\n config.warnings!.length\n } warnings`,\n );\n const ensurePrResult = await ensurePr(config);\n if (ensurePrResult.type === 'without-pr') {\n const { prBlockedBy } = ensurePrResult;\n branchPr = null;\n if (prBlockedBy === 'RateLimited' && !config.isVulnerabilityAlert) {\n logger.debug('Reached PR limit - skipping PR creation');\n return {\n branchExists,\n prBlockedBy,\n result: 'pr-limit-reached',\n commitSha,\n };\n }\n // TODO: ensurePr should check for automerge itself (#9719)\n if (prBlockedBy === 'NeedsApproval') {\n return {\n branchExists,\n prBlockedBy,\n result: 'needs-pr-approval',\n commitSha,\n };\n }\n if (prBlockedBy === 'AwaitingTests') {\n return {\n branchExists,\n prBlockedBy,\n result: 'pending',\n commitSha,\n };\n }\n if (prBlockedBy === 'BranchAutomerge') {\n return {\n branchExists,\n prBlockedBy,\n result: 'done',\n commitSha,\n };\n }\n if (prBlockedBy === 'Error') {\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n logger.warn({ prBlockedBy }, 'Unknown PrBlockedBy result');\n return {\n branchExists,\n prBlockedBy,\n result: 'error',\n commitSha,\n };\n }\n if (ensurePrResult.type === 'with-pr') {\n const { pr } = ensurePrResult;\n branchPr = pr;\n if (config.artifactErrors?.length) {\n logger.warn(\n { artifactErrors: config.artifactErrors },\n 'artifactErrors',\n );\n let content = `Renovate failed to update `;\n content +=\n config.artifactErrors.length > 1 ? 'artifacts' : 'an artifact';\n content +=\n ' related to this branch. You probably do not want to merge this PR as-is.';\n content += emojify(\n `\\n\\n:recycle: Renovate will retry this branch, including artifacts, only when one of the following happens:\\n\\n`,\n );\n content +=\n ' - any of the package files in this branch needs updating, or \\n';\n content += ' - the branch becomes conflicted, or\\n';\n content +=\n ' - you click the rebase/retry checkbox if found above, or\\n';\n content +=\n ' - you rename this PR\\'s title to start with \"rebase!\" to trigger it manually';\n content += '\\n\\nThe artifact failure details are included below:\\n\\n';\n // TODO: types (#22198)\n config.artifactErrors.forEach((error) => {\n content += `##### File name: ${error.lockFile!}\\n\\n`;\n content += `\\`\\`\\`\\n${error.stderr!}\\n\\`\\`\\`\\n\\n`;\n });\n content = platform.massageMarkdown(content);\n if (\n !(\n config.suppressNotifications!.includes('artifactErrors') ||\n config.suppressNotifications!.includes('lockFileErrors')\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n `DRY-RUN: Would ensure lock file error comment in PR #${pr.number}`,\n );\n } else {\n await ensureComment({\n number: pr.number,\n topic: artifactErrorTopic,\n content,\n });\n }\n }\n } else {\n if (config.artifactNotices?.length) {\n const contentLines: string[] = [];\n for (const notice of config.artifactNotices) {\n contentLines.push(`##### File name: ${notice.file}`);\n contentLines.push(notice.message);\n }\n const content = contentLines.join('\\n\\n');\n await ensureComment({\n number: pr.number,\n topic: artifactNoticeTopic,\n content,\n });\n }\n\n if (config.automerge) {\n logger.debug('PR is configured for automerge');\n // skip automerge if there is a new commit since status checks aren't done yet\n if (config.ignoreTests === true || !commitSha) {\n logger.debug('checking auto-merge');\n const prAutomergeResult = await checkAutoMerge(pr, config);\n if (prAutomergeResult?.automerged) {\n return {\n branchExists,\n result: 'automerged',\n commitSha,\n };\n }\n }\n } else {\n logger.debug('PR is not configured for automerge');\n }\n }\n }\n } catch (err) /* istanbul ignore next */ {\n if (\n err instanceof ExternalHostError ||\n [PLATFORM_RATE_LIMIT_EXCEEDED, REPOSITORY_CHANGED].includes(err.message)\n ) {\n logger.debug('Passing PR error up');\n throw err;\n }\n // Otherwise don't throw here - we don't want to stop the other renovations\n logger.error({ err }, `Error ensuring PR`);\n }\n if (!branchExists) {\n return {\n branchExists: true,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'pr-created',\n commitSha,\n };\n }\n return {\n branchExists,\n updatesVerified,\n prNo: branchPr?.number,\n result: 'done',\n commitSha,\n };\n}\n"]}
|
@@ -266,29 +266,19 @@ async function getReleaseNotesMd(project, release) {
|
|
266
266
|
.replace((0, regex_1.regEx)(/^\s*#*\s*/), '')
|
267
267
|
.split(' ')
|
268
268
|
.filter(Boolean);
|
269
|
-
|
269
|
+
const body = section.replace((0, regex_1.regEx)(/.*?\n(-{3,}\n)?/), '').trim();
|
270
|
+
const notesSourceUrl = getNotesSourceUrl(baseUrl, repository, project, changelogFile);
|
271
|
+
const mdHeadingLink = title
|
272
|
+
.filter((word) => !(0, url_1.isHttpUrl)(word))
|
273
|
+
.join('-')
|
274
|
+
.replace((0, regex_1.regEx)(/[^A-Za-z0-9-]/g), '');
|
275
|
+
const url = `${notesSourceUrl}#${mdHeadingLink}`;
|
276
|
+
// Look for version in title
|
270
277
|
for (const word of title) {
|
271
278
|
if (word.includes(version) && !(0, url_1.isHttpUrl)(word)) {
|
272
279
|
logger_1.logger.trace({ body }, 'Found release notes for v' + version);
|
273
|
-
const notesSourceUrl = getNotesSourceUrl(baseUrl, repository, project, changelogFile);
|
274
|
-
const mdHeadingLink = title
|
275
|
-
.filter((word) => !(0, url_1.isHttpUrl)(word))
|
276
|
-
.join('-')
|
277
|
-
.replace((0, regex_1.regEx)(/[^A-Za-z0-9-]/g), '');
|
278
|
-
const url = `${notesSourceUrl}#${mdHeadingLink}`;
|
279
|
-
body = massageBody(body, baseUrl);
|
280
|
-
if (body?.length) {
|
281
|
-
try {
|
282
|
-
body = await (0, markdown_1.linkify)(body, {
|
283
|
-
repository: `${baseUrl}${repository}`,
|
284
|
-
});
|
285
|
-
}
|
286
|
-
catch (err) /* istanbul ignore next */ {
|
287
|
-
logger_1.logger.warn({ body, err }, 'linkify error');
|
288
|
-
}
|
289
|
-
}
|
290
280
|
return {
|
291
|
-
body,
|
281
|
+
body: await linkifyBody(project, body),
|
292
282
|
url,
|
293
283
|
notesSourceUrl,
|
294
284
|
};
|
@@ -376,4 +366,18 @@ function getNotesSourceUrl(baseUrl, repository, project, changelogFile) {
|
|
376
366
|
}
|
377
367
|
return (0, url_1.joinUrlParts)(baseUrl, repository, project.type === 'bitbucket' ? 'src' : 'blob', 'HEAD', changelogFile);
|
378
368
|
}
|
369
|
+
async function linkifyBody({ baseUrl, repository }, bodyStr) {
|
370
|
+
const body = massageBody(bodyStr, baseUrl);
|
371
|
+
if (body?.length) {
|
372
|
+
try {
|
373
|
+
return await (0, markdown_1.linkify)(body, {
|
374
|
+
repository: `${baseUrl}${repository}`,
|
375
|
+
});
|
376
|
+
}
|
377
|
+
catch (err) /* istanbul ignore next */ {
|
378
|
+
logger_1.logger.warn({ body, err }, 'linkify error');
|
379
|
+
}
|
380
|
+
}
|
381
|
+
return body;
|
382
|
+
}
|
379
383
|
//# sourceMappingURL=release-notes.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"release-notes.js","sourceRoot":"","sources":["../../../../../../lib/workers/repository/update/pr/changelog/release-notes.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport MarkdownIt from 'markdown-it';\nimport { logger } from '../../../../../logger';\nimport * as memCache from '../../../../../util/cache/memory';\nimport * as packageCache from '../../../../../util/cache/package';\nimport type { PackageCacheNamespace } from '../../../../../util/cache/package/types';\nimport { detectPlatform } from '../../../../../util/common';\nimport { linkify } from '../../../../../util/markdown';\nimport { newlineRegex, regEx } from '../../../../../util/regex';\nimport { coerceString } from '../../../../../util/string';\nimport { isHttpUrl, joinUrlParts } from '../../../../../util/url';\nimport type { BranchUpgradeConfig } from '../../../../types';\nimport * as bitbucket from './bitbucket';\nimport * as bitbucketServer from './bitbucket-server';\nimport * as gitea from './gitea';\nimport * as github from './github';\nimport * as gitlab from './gitlab';\nimport type {\n ChangeLogFile,\n ChangeLogNotes,\n ChangeLogProject,\n ChangeLogRelease,\n ChangeLogResult,\n} from './types';\n\nconst markdown = new MarkdownIt('zero');\nmarkdown.enable(['heading', 'lheading']);\n\nconst repositoriesToSkipMdFetching = ['facebook/react-native'];\n\nexport async function getReleaseList(\n project: ChangeLogProject,\n release: ChangeLogRelease,\n): Promise<ChangeLogNotes[]> {\n logger.trace('getReleaseList()');\n const { apiBaseUrl, repository, type } = project;\n try {\n switch (type) {\n case 'gitea':\n return await gitea.getReleaseList(project, release);\n case 'gitlab':\n return await gitlab.getReleaseList(project, release);\n case 'github':\n return await github.getReleaseList(project, release);\n case 'bitbucket':\n return bitbucket.getReleaseList(project, release);\n case 'bitbucket-server':\n logger.trace(\n 'Unsupported Bitbucket Server feature. Skipping release fetching.',\n );\n return [];\n default:\n logger.warn({ apiBaseUrl, repository, type }, 'Invalid project type');\n return [];\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 404) {\n logger.debug({ repository, type, apiBaseUrl }, 'getReleaseList 404');\n } else {\n logger.debug(\n { repository, type, apiBaseUrl, err },\n 'getReleaseList error',\n );\n }\n }\n return [];\n}\n\nexport function getCachedReleaseList(\n project: ChangeLogProject,\n release: ChangeLogRelease,\n): Promise<ChangeLogNotes[]> {\n const { repository, apiBaseUrl } = project;\n // TODO: types (#22198)\n const cacheKey = `getReleaseList-${apiBaseUrl}-${repository}`;\n const cachedResult = memCache.get<Promise<ChangeLogNotes[]>>(cacheKey);\n // istanbul ignore if\n if (cachedResult !== undefined) {\n return cachedResult;\n }\n const promisedRes = getReleaseList(project, release);\n memCache.set(cacheKey, promisedRes);\n return promisedRes;\n}\n\nexport function massageBody(\n input: string | undefined | null,\n baseUrl: string,\n): string {\n let body = coerceString(input);\n // Convert line returns\n body = body.replace(regEx(/\\r\\n/g), '\\n');\n // semantic-release cleanup\n body = body.replace(regEx(/^<a name=\"[^\"]*\"><\\/a>\\n/), '');\n body = body.replace(\n regEx(\n `^##? \\\\[[^\\\\]]*\\\\]\\\\(${baseUrl}[^/]*/[^/]*/compare/.*?\\\\n`,\n undefined,\n false,\n ),\n '',\n );\n // Clean-up unnecessary commits link\n body = `\\n${body}\\n`.replace(\n regEx(`\\\\n${baseUrl}[^/]+/[^/]+/compare/[^\\\\n]+(\\\\n|$)`),\n '\\n',\n );\n // Reduce headings size\n body = body\n .replace(regEx(/\\n\\s*####? /g), '\\n##### ')\n .replace(regEx(/\\n\\s*## /g), '\\n#### ')\n .replace(regEx(/\\n\\s*# /g), '\\n### ');\n // Trim whitespace\n return body.trim();\n}\n\nexport function massageName(\n input: string | undefined | null,\n version: string | undefined,\n): string | undefined {\n let name = input ?? '';\n\n if (version) {\n name = name.replace(RegExp(`^(Release )?v?${version}`, 'i'), '').trim();\n }\n\n name = name.trim();\n if (!name.length) {\n return undefined;\n }\n\n return name;\n}\n\nexport async function getReleaseNotes(\n project: ChangeLogProject,\n release: ChangeLogRelease,\n config: BranchUpgradeConfig,\n): Promise<ChangeLogNotes | null> {\n const { packageName, depName, repository } = project;\n const { version, gitRef } = release;\n // TODO: types (#22198)\n logger.trace(\n `getReleaseNotes(${repository}, ${version}, ${packageName!}, ${depName!})`,\n );\n const releases = await getCachedReleaseList(project, release);\n logger.trace({ releases }, 'Release list from getReleaseList');\n let releaseNotes: ChangeLogNotes | null = null;\n\n let matchedRelease = getExactReleaseMatch(\n packageName!,\n depName!,\n version,\n releases,\n );\n if (is.undefined(matchedRelease)) {\n // no exact match of a release then check other cases\n matchedRelease = releases.find(\n (r) =>\n r.tag === version ||\n r.tag === `v${version}` ||\n r.tag === gitRef ||\n r.tag === `v${gitRef}`,\n );\n }\n if (is.undefined(matchedRelease) && config.extractVersion) {\n const extractVersionRegEx = regEx(config.extractVersion);\n matchedRelease = releases.find((r) => {\n const extractedVersion = extractVersionRegEx.exec(r.tag!)?.groups\n ?.version;\n return version === extractedVersion;\n });\n }\n releaseNotes = await releaseNotesResult(matchedRelease, project);\n logger.trace({ releaseNotes });\n return releaseNotes;\n}\n\nfunction getExactReleaseMatch(\n packageName: string,\n depName: string,\n version: string,\n releases: ChangeLogNotes[],\n): ChangeLogNotes | undefined {\n const exactReleaseReg = regEx(\n `(?:^|/)(?:${packageName}|${depName})[@_-]v?${version}`,\n );\n const candidateReleases = releases.filter((r) => r.tag?.endsWith(version));\n const matchedRelease = candidateReleases.find((r) =>\n exactReleaseReg.test(r.tag!),\n );\n return matchedRelease;\n}\n\nasync function releaseNotesResult(\n releaseMatch: ChangeLogNotes | undefined,\n project: ChangeLogProject,\n): Promise<ChangeLogNotes | null> {\n if (!releaseMatch) {\n return null;\n }\n const { baseUrl, repository } = project;\n const releaseNotes: ChangeLogNotes = releaseMatch;\n if (detectPlatform(baseUrl) === 'gitlab') {\n releaseNotes.url = `${baseUrl}${repository}/tags/${releaseMatch.tag!}`;\n } else {\n releaseNotes.url = releaseMatch.url\n ? releaseMatch.url\n : /* istanbul ignore next */\n `${baseUrl}${repository}/releases/${releaseMatch.tag!}`;\n }\n // set body for release notes\n releaseNotes.body = massageBody(releaseNotes.body, baseUrl);\n releaseNotes.name = massageName(releaseNotes.name, releaseNotes.tag);\n if (releaseNotes.body.length || releaseNotes.name?.length) {\n try {\n if (baseUrl !== 'https://gitlab.com/') {\n releaseNotes.body = await linkify(releaseNotes.body, {\n repository: `${baseUrl}${repository}`,\n });\n }\n } catch (err) /* istanbul ignore next */ {\n logger.warn({ err, baseUrl, repository }, 'Error linkifying');\n }\n } else {\n return null;\n }\n\n return releaseNotes;\n}\n\nfunction sectionize(text: string, level: number): string[] {\n const sections: [number, number][] = [];\n const lines = text.split(newlineRegex);\n const tokens = markdown.parse(text, undefined);\n tokens.forEach((token) => {\n if (token.type === 'heading_open') {\n const lev = +token.tag.substring(1);\n if (lev <= level) {\n sections.push([lev, token.map![0]]);\n }\n }\n });\n sections.push([-1, lines.length]);\n const result: string[] = [];\n for (let i = 1; i < sections.length; i += 1) {\n const [lev, start] = sections[i - 1];\n const [, end] = sections[i];\n if (lev === level) {\n result.push(lines.slice(start, end).join('\\n'));\n }\n }\n return result;\n}\n\nexport async function getReleaseNotesMdFileInner(\n project: ChangeLogProject,\n): Promise<ChangeLogFile | null> {\n const { repository, type } = project;\n const apiBaseUrl = project.apiBaseUrl;\n const sourceDirectory = project.sourceDirectory!;\n try {\n switch (type) {\n case 'gitea':\n return await gitea.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n case 'gitlab':\n return await gitlab.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n case 'github':\n return await github.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n case 'bitbucket':\n return await bitbucket.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n case 'bitbucket-server':\n return await bitbucketServer.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n default:\n logger.warn({ apiBaseUrl, repository, type }, 'Invalid project type');\n return null;\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 404) {\n logger.debug(\n { repository, type, apiBaseUrl },\n 'Error 404 getting changelog md',\n );\n } else {\n logger.debug(\n { err, repository, type, apiBaseUrl },\n 'Error getting changelog md',\n );\n }\n }\n return null;\n}\n\nexport function getReleaseNotesMdFile(\n project: ChangeLogProject,\n): Promise<ChangeLogFile | null> {\n const { sourceDirectory, repository, apiBaseUrl } = project;\n // TODO: types (#22198)\n const cacheKey = sourceDirectory\n ? `getReleaseNotesMdFile@v2-${repository}-${sourceDirectory}-${apiBaseUrl}`\n : `getReleaseNotesMdFile@v2-${repository}-${apiBaseUrl}`;\n const cachedResult = memCache.get<Promise<ChangeLogFile | null>>(cacheKey);\n // istanbul ignore if\n if (cachedResult !== undefined) {\n return cachedResult;\n }\n const promisedRes = getReleaseNotesMdFileInner(project);\n memCache.set(cacheKey, promisedRes);\n return promisedRes;\n}\n\nexport async function getReleaseNotesMd(\n project: ChangeLogProject,\n release: ChangeLogRelease,\n): Promise<ChangeLogNotes | null> {\n const { baseUrl, repository } = project;\n const version = release.version;\n logger.trace(`getReleaseNotesMd(${repository}, ${version})`);\n\n if (shouldSkipChangelogMd(repository)) {\n return null;\n }\n\n const changelog = await getReleaseNotesMdFile(project);\n if (!changelog) {\n return null;\n }\n const { changelogFile } = changelog;\n const changelogMd = changelog.changelogMd.replace(\n regEx(/\\n\\s*<a name=\"[^\"]*\">.*?<\\/a>\\n/g),\n '\\n',\n );\n for (const level of [1, 2, 3, 4, 5, 6, 7]) {\n const changelogParsed = sectionize(changelogMd, level);\n if (changelogParsed.length >= 2) {\n for (const section of changelogParsed) {\n try {\n // replace brackets and parenthesis with space\n const deParenthesizedSection = section.replace(\n regEx(/[[\\]()]/g),\n ' ',\n );\n const [heading] = deParenthesizedSection.split(newlineRegex);\n const title = heading\n .replace(regEx(/^\\s*#*\\s*/), '')\n .split(' ')\n .filter(Boolean);\n let body = section.replace(regEx(/.*?\\n(-{3,}\\n)?/), '').trim();\n for (const word of title) {\n if (word.includes(version) && !isHttpUrl(word)) {\n logger.trace({ body }, 'Found release notes for v' + version);\n const notesSourceUrl = getNotesSourceUrl(\n baseUrl,\n repository,\n project,\n changelogFile,\n );\n const mdHeadingLink = title\n .filter((word) => !isHttpUrl(word))\n .join('-')\n .replace(regEx(/[^A-Za-z0-9-]/g), '');\n const url = `${notesSourceUrl}#${mdHeadingLink}`;\n body = massageBody(body, baseUrl);\n if (body?.length) {\n try {\n body = await linkify(body, {\n repository: `${baseUrl}${repository}`,\n });\n } catch (err) /* istanbul ignore next */ {\n logger.warn({ body, err }, 'linkify error');\n }\n }\n return {\n body,\n url,\n notesSourceUrl,\n };\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.warn(\n { file: changelogFile, err },\n `Error parsing changelog file`,\n );\n }\n }\n }\n logger.trace({ repository }, `No level ${level} changelogs headings found`);\n }\n logger.trace({ repository, version }, `No entry found in ${changelogFile}`);\n return null;\n}\n\n/**\n * Determine how long to cache release notes based on when the version was released.\n *\n * It's not uncommon for release notes to be updated shortly after the release itself,\n * so only cache for about an hour when the release is less than a week old. Otherwise,\n * cache for days.\n */\nexport function releaseNotesCacheMinutes(releaseDate?: string | Date): number {\n const dt = is.date(releaseDate)\n ? DateTime.fromJSDate(releaseDate)\n : DateTime.fromISO(releaseDate!);\n\n const now = DateTime.local();\n\n if (!dt.isValid || now.diff(dt, 'days').days < 7) {\n return 55;\n }\n\n if (now.diff(dt, 'months').months < 6) {\n return 1435; // 5 minutes shy of one day\n }\n\n return 14495; // 5 minutes shy of 10 days\n}\n\nexport async function addReleaseNotes(\n input: ChangeLogResult | null | undefined,\n config: BranchUpgradeConfig,\n): Promise<ChangeLogResult | null> {\n if (!input?.versions || !input.project?.type) {\n logger.debug('Missing project or versions');\n return input ?? null;\n }\n const output: ChangeLogResult = {\n ...input,\n versions: [],\n hasReleaseNotes: false,\n };\n\n const { repository, sourceDirectory, type: projectType } = input.project;\n const cacheNamespace: PackageCacheNamespace = `changelog-${projectType}-notes@v2`;\n const cacheKeyPrefix = sourceDirectory\n ? `${repository}:${sourceDirectory}`\n : `${repository}`;\n\n for (const v of input.versions) {\n let releaseNotes: ChangeLogNotes | null | undefined;\n const cacheKey = `${cacheKeyPrefix}:${v.version}`;\n releaseNotes = await packageCache.get(cacheNamespace, cacheKey);\n releaseNotes ??= await getReleaseNotesMd(input.project, v);\n releaseNotes ??= await getReleaseNotes(input.project, v, config);\n\n // If there is no release notes, at least try to show the compare URL\n if (!releaseNotes && v.compare.url) {\n releaseNotes = { url: v.compare.url, notesSourceUrl: '' };\n }\n\n const cacheMinutes = releaseNotesCacheMinutes(v.date);\n await packageCache.set(\n cacheNamespace,\n cacheKey,\n releaseNotes,\n cacheMinutes,\n );\n output.versions!.push({\n ...v,\n releaseNotes: releaseNotes!,\n });\n\n if (releaseNotes) {\n output.hasReleaseNotes = true;\n }\n }\n return output;\n}\n\n/**\n * Skip fetching changelog/release-notes markdown files.\n * Will force a fallback to using GitHub release notes\n */\nexport function shouldSkipChangelogMd(repository: string): boolean {\n return repositoriesToSkipMdFetching.includes(repository);\n}\n\nfunction getNotesSourceUrl(\n baseUrl: string,\n repository: string,\n project: ChangeLogProject,\n changelogFile: string,\n): string {\n if (project.type === 'bitbucket-server') {\n const [projectKey, repositorySlug] = repository.split('/');\n return joinUrlParts(\n baseUrl,\n 'projects',\n projectKey,\n 'repos',\n repositorySlug,\n 'browse',\n changelogFile,\n '?at=HEAD',\n );\n }\n\n return joinUrlParts(\n baseUrl,\n repository,\n project.type === 'bitbucket' ? 'src' : 'blob',\n 'HEAD',\n changelogFile,\n );\n}\n"]}
|
1
|
+
{"version":3,"file":"release-notes.js","sourceRoot":"","sources":["../../../../../../lib/workers/repository/update/pr/changelog/release-notes.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport MarkdownIt from 'markdown-it';\nimport { logger } from '../../../../../logger';\nimport * as memCache from '../../../../../util/cache/memory';\nimport * as packageCache from '../../../../../util/cache/package';\nimport type { PackageCacheNamespace } from '../../../../../util/cache/package/types';\nimport { detectPlatform } from '../../../../../util/common';\nimport { linkify } from '../../../../../util/markdown';\nimport { newlineRegex, regEx } from '../../../../../util/regex';\nimport { coerceString } from '../../../../../util/string';\nimport { isHttpUrl, joinUrlParts } from '../../../../../util/url';\nimport type { BranchUpgradeConfig } from '../../../../types';\nimport * as bitbucket from './bitbucket';\nimport * as bitbucketServer from './bitbucket-server';\nimport * as gitea from './gitea';\nimport * as github from './github';\nimport * as gitlab from './gitlab';\nimport type {\n ChangeLogFile,\n ChangeLogNotes,\n ChangeLogProject,\n ChangeLogRelease,\n ChangeLogResult,\n} from './types';\n\nconst markdown = new MarkdownIt('zero');\nmarkdown.enable(['heading', 'lheading']);\n\nconst repositoriesToSkipMdFetching = ['facebook/react-native'];\n\nexport async function getReleaseList(\n project: ChangeLogProject,\n release: ChangeLogRelease,\n): Promise<ChangeLogNotes[]> {\n logger.trace('getReleaseList()');\n const { apiBaseUrl, repository, type } = project;\n try {\n switch (type) {\n case 'gitea':\n return await gitea.getReleaseList(project, release);\n case 'gitlab':\n return await gitlab.getReleaseList(project, release);\n case 'github':\n return await github.getReleaseList(project, release);\n case 'bitbucket':\n return bitbucket.getReleaseList(project, release);\n case 'bitbucket-server':\n logger.trace(\n 'Unsupported Bitbucket Server feature. Skipping release fetching.',\n );\n return [];\n default:\n logger.warn({ apiBaseUrl, repository, type }, 'Invalid project type');\n return [];\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 404) {\n logger.debug({ repository, type, apiBaseUrl }, 'getReleaseList 404');\n } else {\n logger.debug(\n { repository, type, apiBaseUrl, err },\n 'getReleaseList error',\n );\n }\n }\n return [];\n}\n\nexport function getCachedReleaseList(\n project: ChangeLogProject,\n release: ChangeLogRelease,\n): Promise<ChangeLogNotes[]> {\n const { repository, apiBaseUrl } = project;\n // TODO: types (#22198)\n const cacheKey = `getReleaseList-${apiBaseUrl}-${repository}`;\n const cachedResult = memCache.get<Promise<ChangeLogNotes[]>>(cacheKey);\n // istanbul ignore if\n if (cachedResult !== undefined) {\n return cachedResult;\n }\n const promisedRes = getReleaseList(project, release);\n memCache.set(cacheKey, promisedRes);\n return promisedRes;\n}\n\nexport function massageBody(\n input: string | undefined | null,\n baseUrl: string,\n): string {\n let body = coerceString(input);\n // Convert line returns\n body = body.replace(regEx(/\\r\\n/g), '\\n');\n // semantic-release cleanup\n body = body.replace(regEx(/^<a name=\"[^\"]*\"><\\/a>\\n/), '');\n body = body.replace(\n regEx(\n `^##? \\\\[[^\\\\]]*\\\\]\\\\(${baseUrl}[^/]*/[^/]*/compare/.*?\\\\n`,\n undefined,\n false,\n ),\n '',\n );\n // Clean-up unnecessary commits link\n body = `\\n${body}\\n`.replace(\n regEx(`\\\\n${baseUrl}[^/]+/[^/]+/compare/[^\\\\n]+(\\\\n|$)`),\n '\\n',\n );\n // Reduce headings size\n body = body\n .replace(regEx(/\\n\\s*####? /g), '\\n##### ')\n .replace(regEx(/\\n\\s*## /g), '\\n#### ')\n .replace(regEx(/\\n\\s*# /g), '\\n### ');\n // Trim whitespace\n return body.trim();\n}\n\nexport function massageName(\n input: string | undefined | null,\n version: string | undefined,\n): string | undefined {\n let name = input ?? '';\n\n if (version) {\n name = name.replace(RegExp(`^(Release )?v?${version}`, 'i'), '').trim();\n }\n\n name = name.trim();\n if (!name.length) {\n return undefined;\n }\n\n return name;\n}\n\nexport async function getReleaseNotes(\n project: ChangeLogProject,\n release: ChangeLogRelease,\n config: BranchUpgradeConfig,\n): Promise<ChangeLogNotes | null> {\n const { packageName, depName, repository } = project;\n const { version, gitRef } = release;\n // TODO: types (#22198)\n logger.trace(\n `getReleaseNotes(${repository}, ${version}, ${packageName!}, ${depName!})`,\n );\n const releases = await getCachedReleaseList(project, release);\n logger.trace({ releases }, 'Release list from getReleaseList');\n let releaseNotes: ChangeLogNotes | null = null;\n\n let matchedRelease = getExactReleaseMatch(\n packageName!,\n depName!,\n version,\n releases,\n );\n if (is.undefined(matchedRelease)) {\n // no exact match of a release then check other cases\n matchedRelease = releases.find(\n (r) =>\n r.tag === version ||\n r.tag === `v${version}` ||\n r.tag === gitRef ||\n r.tag === `v${gitRef}`,\n );\n }\n if (is.undefined(matchedRelease) && config.extractVersion) {\n const extractVersionRegEx = regEx(config.extractVersion);\n matchedRelease = releases.find((r) => {\n const extractedVersion = extractVersionRegEx.exec(r.tag!)?.groups\n ?.version;\n return version === extractedVersion;\n });\n }\n releaseNotes = await releaseNotesResult(matchedRelease, project);\n logger.trace({ releaseNotes });\n return releaseNotes;\n}\n\nfunction getExactReleaseMatch(\n packageName: string,\n depName: string,\n version: string,\n releases: ChangeLogNotes[],\n): ChangeLogNotes | undefined {\n const exactReleaseReg = regEx(\n `(?:^|/)(?:${packageName}|${depName})[@_-]v?${version}`,\n );\n const candidateReleases = releases.filter((r) => r.tag?.endsWith(version));\n const matchedRelease = candidateReleases.find((r) =>\n exactReleaseReg.test(r.tag!),\n );\n return matchedRelease;\n}\n\nasync function releaseNotesResult(\n releaseMatch: ChangeLogNotes | undefined,\n project: ChangeLogProject,\n): Promise<ChangeLogNotes | null> {\n if (!releaseMatch) {\n return null;\n }\n const { baseUrl, repository } = project;\n const releaseNotes: ChangeLogNotes = releaseMatch;\n if (detectPlatform(baseUrl) === 'gitlab') {\n releaseNotes.url = `${baseUrl}${repository}/tags/${releaseMatch.tag!}`;\n } else {\n releaseNotes.url = releaseMatch.url\n ? releaseMatch.url\n : /* istanbul ignore next */\n `${baseUrl}${repository}/releases/${releaseMatch.tag!}`;\n }\n // set body for release notes\n releaseNotes.body = massageBody(releaseNotes.body, baseUrl);\n releaseNotes.name = massageName(releaseNotes.name, releaseNotes.tag);\n if (releaseNotes.body.length || releaseNotes.name?.length) {\n try {\n if (baseUrl !== 'https://gitlab.com/') {\n releaseNotes.body = await linkify(releaseNotes.body, {\n repository: `${baseUrl}${repository}`,\n });\n }\n } catch (err) /* istanbul ignore next */ {\n logger.warn({ err, baseUrl, repository }, 'Error linkifying');\n }\n } else {\n return null;\n }\n\n return releaseNotes;\n}\n\nfunction sectionize(text: string, level: number): string[] {\n const sections: [number, number][] = [];\n const lines = text.split(newlineRegex);\n const tokens = markdown.parse(text, undefined);\n tokens.forEach((token) => {\n if (token.type === 'heading_open') {\n const lev = +token.tag.substring(1);\n if (lev <= level) {\n sections.push([lev, token.map![0]]);\n }\n }\n });\n sections.push([-1, lines.length]);\n const result: string[] = [];\n for (let i = 1; i < sections.length; i += 1) {\n const [lev, start] = sections[i - 1];\n const [, end] = sections[i];\n if (lev === level) {\n result.push(lines.slice(start, end).join('\\n'));\n }\n }\n return result;\n}\n\nexport async function getReleaseNotesMdFileInner(\n project: ChangeLogProject,\n): Promise<ChangeLogFile | null> {\n const { repository, type } = project;\n const apiBaseUrl = project.apiBaseUrl;\n const sourceDirectory = project.sourceDirectory!;\n try {\n switch (type) {\n case 'gitea':\n return await gitea.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n case 'gitlab':\n return await gitlab.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n case 'github':\n return await github.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n case 'bitbucket':\n return await bitbucket.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n case 'bitbucket-server':\n return await bitbucketServer.getReleaseNotesMd(\n repository,\n apiBaseUrl,\n sourceDirectory,\n );\n default:\n logger.warn({ apiBaseUrl, repository, type }, 'Invalid project type');\n return null;\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 404) {\n logger.debug(\n { repository, type, apiBaseUrl },\n 'Error 404 getting changelog md',\n );\n } else {\n logger.debug(\n { err, repository, type, apiBaseUrl },\n 'Error getting changelog md',\n );\n }\n }\n return null;\n}\n\nexport function getReleaseNotesMdFile(\n project: ChangeLogProject,\n): Promise<ChangeLogFile | null> {\n const { sourceDirectory, repository, apiBaseUrl } = project;\n // TODO: types (#22198)\n const cacheKey = sourceDirectory\n ? `getReleaseNotesMdFile@v2-${repository}-${sourceDirectory}-${apiBaseUrl}`\n : `getReleaseNotesMdFile@v2-${repository}-${apiBaseUrl}`;\n const cachedResult = memCache.get<Promise<ChangeLogFile | null>>(cacheKey);\n // istanbul ignore if\n if (cachedResult !== undefined) {\n return cachedResult;\n }\n const promisedRes = getReleaseNotesMdFileInner(project);\n memCache.set(cacheKey, promisedRes);\n return promisedRes;\n}\n\nexport async function getReleaseNotesMd(\n project: ChangeLogProject,\n release: ChangeLogRelease,\n): Promise<ChangeLogNotes | null> {\n const { baseUrl, repository } = project;\n const version = release.version;\n logger.trace(`getReleaseNotesMd(${repository}, ${version})`);\n\n if (shouldSkipChangelogMd(repository)) {\n return null;\n }\n\n const changelog = await getReleaseNotesMdFile(project);\n if (!changelog) {\n return null;\n }\n const { changelogFile } = changelog;\n const changelogMd = changelog.changelogMd.replace(\n regEx(/\\n\\s*<a name=\"[^\"]*\">.*?<\\/a>\\n/g),\n '\\n',\n );\n for (const level of [1, 2, 3, 4, 5, 6, 7]) {\n const changelogParsed = sectionize(changelogMd, level);\n if (changelogParsed.length >= 2) {\n for (const section of changelogParsed) {\n try {\n // replace brackets and parenthesis with space\n const deParenthesizedSection = section.replace(\n regEx(/[[\\]()]/g),\n ' ',\n );\n const [heading] = deParenthesizedSection.split(newlineRegex);\n const title = heading\n .replace(regEx(/^\\s*#*\\s*/), '')\n .split(' ')\n .filter(Boolean);\n const body = section.replace(regEx(/.*?\\n(-{3,}\\n)?/), '').trim();\n const notesSourceUrl = getNotesSourceUrl(\n baseUrl,\n repository,\n project,\n changelogFile,\n );\n const mdHeadingLink = title\n .filter((word) => !isHttpUrl(word))\n .join('-')\n .replace(regEx(/[^A-Za-z0-9-]/g), '');\n const url = `${notesSourceUrl}#${mdHeadingLink}`;\n // Look for version in title\n for (const word of title) {\n if (word.includes(version) && !isHttpUrl(word)) {\n logger.trace({ body }, 'Found release notes for v' + version);\n return {\n body: await linkifyBody(project, body),\n url,\n notesSourceUrl,\n };\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.warn(\n { file: changelogFile, err },\n `Error parsing changelog file`,\n );\n }\n }\n }\n logger.trace({ repository }, `No level ${level} changelogs headings found`);\n }\n logger.trace({ repository, version }, `No entry found in ${changelogFile}`);\n return null;\n}\n\n/**\n * Determine how long to cache release notes based on when the version was released.\n *\n * It's not uncommon for release notes to be updated shortly after the release itself,\n * so only cache for about an hour when the release is less than a week old. Otherwise,\n * cache for days.\n */\nexport function releaseNotesCacheMinutes(releaseDate?: string | Date): number {\n const dt = is.date(releaseDate)\n ? DateTime.fromJSDate(releaseDate)\n : DateTime.fromISO(releaseDate!);\n\n const now = DateTime.local();\n\n if (!dt.isValid || now.diff(dt, 'days').days < 7) {\n return 55;\n }\n\n if (now.diff(dt, 'months').months < 6) {\n return 1435; // 5 minutes shy of one day\n }\n\n return 14495; // 5 minutes shy of 10 days\n}\n\nexport async function addReleaseNotes(\n input: ChangeLogResult | null | undefined,\n config: BranchUpgradeConfig,\n): Promise<ChangeLogResult | null> {\n if (!input?.versions || !input.project?.type) {\n logger.debug('Missing project or versions');\n return input ?? null;\n }\n const output: ChangeLogResult = {\n ...input,\n versions: [],\n hasReleaseNotes: false,\n };\n\n const { repository, sourceDirectory, type: projectType } = input.project;\n const cacheNamespace: PackageCacheNamespace = `changelog-${projectType}-notes@v2`;\n const cacheKeyPrefix = sourceDirectory\n ? `${repository}:${sourceDirectory}`\n : `${repository}`;\n\n for (const v of input.versions) {\n let releaseNotes: ChangeLogNotes | null | undefined;\n const cacheKey = `${cacheKeyPrefix}:${v.version}`;\n releaseNotes = await packageCache.get(cacheNamespace, cacheKey);\n releaseNotes ??= await getReleaseNotesMd(input.project, v);\n releaseNotes ??= await getReleaseNotes(input.project, v, config);\n\n // If there is no release notes, at least try to show the compare URL\n if (!releaseNotes && v.compare.url) {\n releaseNotes = { url: v.compare.url, notesSourceUrl: '' };\n }\n\n const cacheMinutes = releaseNotesCacheMinutes(v.date);\n await packageCache.set(\n cacheNamespace,\n cacheKey,\n releaseNotes,\n cacheMinutes,\n );\n output.versions!.push({\n ...v,\n releaseNotes: releaseNotes!,\n });\n\n if (releaseNotes) {\n output.hasReleaseNotes = true;\n }\n }\n return output;\n}\n\n/**\n * Skip fetching changelog/release-notes markdown files.\n * Will force a fallback to using GitHub release notes\n */\nexport function shouldSkipChangelogMd(repository: string): boolean {\n return repositoriesToSkipMdFetching.includes(repository);\n}\n\nfunction getNotesSourceUrl(\n baseUrl: string,\n repository: string,\n project: ChangeLogProject,\n changelogFile: string,\n): string {\n if (project.type === 'bitbucket-server') {\n const [projectKey, repositorySlug] = repository.split('/');\n return joinUrlParts(\n baseUrl,\n 'projects',\n projectKey,\n 'repos',\n repositorySlug,\n 'browse',\n changelogFile,\n '?at=HEAD',\n );\n }\n\n return joinUrlParts(\n baseUrl,\n repository,\n project.type === 'bitbucket' ? 'src' : 'blob',\n 'HEAD',\n changelogFile,\n );\n}\n\nasync function linkifyBody(\n { baseUrl, repository }: ChangeLogProject,\n bodyStr: string,\n): Promise<string> {\n const body = massageBody(bodyStr, baseUrl);\n if (body?.length) {\n try {\n return await linkify(body, {\n repository: `${baseUrl}${repository}`,\n });\n } catch (err) /* istanbul ignore next */ {\n logger.warn({ body, err }, 'linkify error');\n }\n }\n return body;\n}\n"]}
|
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
|
|
5
5
|
const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
|
6
6
|
const ignore_1 = tslib_1.__importDefault(require("ignore"));
|
7
7
|
const logger_1 = require("../../../../logger");
|
8
|
+
const platform_1 = require("../../../../modules/platform");
|
8
9
|
const fs_1 = require("../../../../util/fs");
|
9
10
|
const git_1 = require("../../../../util/git");
|
10
11
|
const regex_1 = require("../../../../util/regex");
|
@@ -48,6 +49,15 @@ function getOwnerList(filesWithOwners) {
|
|
48
49
|
fileScoreMap: value,
|
49
50
|
}));
|
50
51
|
}
|
52
|
+
function parseCodeOwnersContent(codeOwnersFile) {
|
53
|
+
return (codeOwnersFile
|
54
|
+
.split(regex_1.newlineRegex)
|
55
|
+
// Remove comments
|
56
|
+
.map((line) => line.split('#')[0])
|
57
|
+
// Remove empty lines
|
58
|
+
.map((line) => line.trim())
|
59
|
+
.filter(is_1.default.nonEmptyString));
|
60
|
+
}
|
51
61
|
async function codeOwnersForPr(pr) {
|
52
62
|
logger_1.logger.debug('Searching for CODEOWNERS file');
|
53
63
|
try {
|
@@ -69,15 +79,9 @@ async function codeOwnersForPr(pr) {
|
|
69
79
|
return [];
|
70
80
|
}
|
71
81
|
// Convert CODEOWNERS file into list of matching rules
|
72
|
-
const
|
73
|
-
|
74
|
-
|
75
|
-
.map((line) => line.split('#')[0])
|
76
|
-
// Remove empty lines
|
77
|
-
.map((line) => line.trim())
|
78
|
-
.filter(is_1.default.nonEmptyString)
|
79
|
-
// Extract pattern & usernames
|
80
|
-
.map(extractOwnersFromLine);
|
82
|
+
const cleanedLines = parseCodeOwnersContent(codeOwnersFile);
|
83
|
+
const fileOwnerRules = platform_1.platform.extractRulesFromCodeOwnersLines?.(cleanedLines) ??
|
84
|
+
cleanedLines.map(extractOwnersFromLine);
|
81
85
|
logger_1.logger.debug({ prFiles, fileOwnerRules }, 'PR files and rules to match for CODEOWNERS');
|
82
86
|
// Apply rules & get list of owners for each prFile
|
83
87
|
const emptyRules = fileOwnerRules.filter((rule) => rule.usernames.length === 0);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"code-owners.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/update/pr/code-owners.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"code-owners.js","sourceRoot":"","sources":["../../../../../lib/workers/repository/update/pr/code-owners.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport ignore from 'ignore';\nimport { logger } from '../../../../logger';\nimport type { FileOwnerRule, Pr } from '../../../../modules/platform';\nimport { platform } from '../../../../modules/platform';\nimport { readLocalFile } from '../../../../util/fs';\nimport { getBranchFiles } from '../../../../util/git';\nimport { newlineRegex, regEx } from '../../../../util/regex';\n\ninterface FileOwnersScore {\n file: string;\n userScoreMap: Map<string, number>;\n}\n\nfunction extractOwnersFromLine(line: string): FileOwnerRule {\n const [pattern, ...usernames] = line.split(regEx(/\\s+/));\n const matchPattern = ignore().add(pattern);\n return {\n usernames,\n pattern,\n score: pattern.length,\n match: (path: string) => matchPattern.ignores(path),\n };\n}\n\nfunction matchFileToOwners(\n file: string,\n rules: FileOwnerRule[],\n): FileOwnersScore {\n const usernames = new Map<string, number>();\n\n for (const rule of rules) {\n if (!rule.match(file)) {\n continue;\n }\n\n for (const user of rule.usernames) {\n usernames.set(user, rule.score);\n }\n }\n\n return { file, userScoreMap: usernames };\n}\n\ninterface OwnerFileScore {\n username: string;\n fileScoreMap: Map<string, number>;\n}\n\nfunction getOwnerList(filesWithOwners: FileOwnersScore[]): OwnerFileScore[] {\n const userFileMap = new Map<string, Map<string, number>>();\n\n for (const fileName of filesWithOwners) {\n for (const [username, score] of fileName.userScoreMap.entries()) {\n // Get / create user file score\n const fileMap = userFileMap.get(username) ?? new Map<string, number>();\n if (!userFileMap.has(username)) {\n userFileMap.set(username, fileMap);\n }\n\n // Add file to user\n fileMap.set(fileName.file, (fileMap.get(fileName.file) ?? 0) + score);\n }\n }\n\n return Array.from(userFileMap.entries()).map(([key, value]) => ({\n username: key,\n fileScoreMap: value,\n }));\n}\n\nfunction parseCodeOwnersContent(codeOwnersFile: string): string[] {\n return (\n codeOwnersFile\n .split(newlineRegex)\n // Remove comments\n .map((line) => line.split('#')[0])\n // Remove empty lines\n .map((line) => line.trim())\n .filter(is.nonEmptyString)\n );\n}\n\nexport async function codeOwnersForPr(pr: Pr): Promise<string[]> {\n logger.debug('Searching for CODEOWNERS file');\n try {\n // Find CODEOWNERS file\n const codeOwnersFile =\n (await readLocalFile('CODEOWNERS', 'utf8')) ??\n (await readLocalFile('.bitbucket/CODEOWNERS', 'utf8')) ??\n (await readLocalFile('.github/CODEOWNERS', 'utf8')) ??\n (await readLocalFile('.gitlab/CODEOWNERS', 'utf8')) ??\n (await readLocalFile('docs/CODEOWNERS', 'utf8'));\n\n if (!codeOwnersFile) {\n logger.debug('No CODEOWNERS file found');\n return [];\n }\n\n logger.debug(`Found CODEOWNERS file: ${codeOwnersFile}`);\n\n // Get list of modified files in PR\n const prFiles = await getBranchFiles(pr.sourceBranch);\n\n if (!prFiles?.length) {\n logger.debug('PR includes no files');\n return [];\n }\n\n // Convert CODEOWNERS file into list of matching rules\n const cleanedLines = parseCodeOwnersContent(codeOwnersFile);\n\n const fileOwnerRules =\n platform.extractRulesFromCodeOwnersLines?.(cleanedLines) ??\n cleanedLines.map(extractOwnersFromLine);\n\n logger.debug(\n { prFiles, fileOwnerRules },\n 'PR files and rules to match for CODEOWNERS',\n );\n\n // Apply rules & get list of owners for each prFile\n const emptyRules = fileOwnerRules.filter(\n (rule) => rule.usernames.length === 0,\n );\n const fileOwners =\n // Map through all prFiles and match said file(s) with all the rules\n prFiles\n .map((file) => matchFileToOwners(file, fileOwnerRules))\n\n // Match file again but this time only with emptyRules, to ensure that files which have no owner set remain owner-less\n .map((matchedFile) => {\n const matchEmpty = emptyRules.find((rule) =>\n rule.match(matchedFile.file),\n );\n if (matchEmpty) {\n return { ...matchedFile, userScoreMap: new Map<string, number>() };\n }\n return matchedFile;\n });\n\n logger.debug(\n `CODEOWNERS matched the following files: ${fileOwners\n .map((f) => f.file)\n .join(', ')}`,\n );\n\n // Get list of all matched users and the files they own (reverse keys of fileOwners)\n const usersWithOwnedFiles = getOwnerList(fileOwners);\n\n // Calculate a match score for each user. This allows sorting of the final user array in a way that guarantees that users matched with more precise patterns are first and users matched with less precise patterns are last (wildcards)\n const userScore = usersWithOwnedFiles\n .map((userMatch) => ({\n user: userMatch.username,\n score: Array.from(userMatch.fileScoreMap.values()).reduce(\n (acc, score) => acc + score,\n 0,\n ),\n }))\n .sort((a, b) => b.score - a.score);\n\n logger.debug(\n `CODEOWNERS matched the following users: ${JSON.stringify(userScore)}`,\n );\n\n return userScore.map((u) => u.user);\n } catch (err) {\n logger.warn({ err, pr }, 'Failed to determine CODEOWNERS for PR.');\n return [];\n }\n}\n"]}
|
@@ -360,6 +360,7 @@ function generateBranchConfig(upgrades) {
|
|
360
360
|
if (config.upgrades.some((upgrade) => upgrade.updateType === 'major')) {
|
361
361
|
config.updateType = 'major';
|
362
362
|
}
|
363
|
+
config.isBreaking = config.upgrades.some((upgrade) => upgrade.isBreaking);
|
363
364
|
// explicit set `isLockFileMaintenance` for the branch for groups
|
364
365
|
if (config.upgrades.some((upgrade) => upgrade.isLockFileMaintenance)) {
|
365
366
|
config.isLockFileMaintenance = true;
|