renovate 40.0.0-next.3 → 40.0.0-next.31
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/legacy.js +0 -1
- package/dist/config/decrypt/legacy.js.map +1 -1
- package/dist/config/decrypt.d.ts +3 -1
- package/dist/config/decrypt.js +56 -13
- package/dist/config/decrypt.js.map +1 -1
- package/dist/config/migrate-validate.js +3 -2
- package/dist/config/migrate-validate.js.map +1 -1
- package/dist/config/migration.js +2 -1
- package/dist/config/migration.js.map +1 -1
- package/dist/config/migrations/custom/rebase-stale-prs-migration.js +1 -1
- package/dist/config/migrations/custom/rebase-stale-prs-migration.js.map +1 -1
- package/dist/config/options/index.js +4 -3
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/parse.js +2 -2
- package/dist/config/parse.js.map +1 -1
- package/dist/config/presets/gitea/index.js +0 -1
- package/dist/config/presets/gitea/index.js.map +1 -1
- package/dist/config/presets/github/index.js +0 -1
- package/dist/config/presets/github/index.js.map +1 -1
- package/dist/config/presets/gitlab/index.js +1 -1
- package/dist/config/presets/gitlab/index.js.map +1 -1
- package/dist/config/presets/http/index.js +1 -2
- package/dist/config/presets/http/index.js.map +1 -1
- package/dist/config/presets/index.js +0 -7
- package/dist/config/presets/index.js.map +1 -1
- package/dist/config/presets/internal/custom-managers.js +3 -4
- package/dist/config/presets/internal/custom-managers.js.map +1 -1
- package/dist/config/presets/internal/group.js +30 -1
- package/dist/config/presets/internal/group.js.map +1 -1
- package/dist/config/presets/internal/index.js +1 -3
- package/dist/config/presets/internal/index.js.map +1 -1
- package/dist/config/presets/internal/workarounds.js +1 -0
- package/dist/config/presets/internal/workarounds.js.map +1 -1
- package/dist/config/presets/parse.js +2 -1
- package/dist/config/presets/parse.js.map +1 -1
- package/dist/config/schema.d.ts +2 -2
- package/dist/config/types.d.ts +4 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validation.js +3 -5
- package/dist/config/validation.js.map +1 -1
- package/dist/config-validator.js +0 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/constants/category.js +0 -1
- package/dist/constants/category.js.map +1 -1
- package/dist/data/monorepo.json +5 -1
- package/dist/data/source-urls.json +1 -0
- package/dist/instrumentation/index.js +17 -13
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/instrumentation/utils.js +1 -1
- package/dist/instrumentation/utils.js.map +1 -1
- package/dist/logger/cmd-serializer.js +0 -1
- package/dist/logger/cmd-serializer.js.map +1 -1
- package/dist/logger/config-serializer.js +0 -1
- package/dist/logger/config-serializer.js.map +1 -1
- package/dist/logger/index.js +1 -4
- package/dist/logger/index.js.map +1 -1
- package/dist/logger/once.js +4 -2
- package/dist/logger/once.js.map +1 -1
- package/dist/logger/pretty-stdout.js +0 -1
- package/dist/logger/pretty-stdout.js.map +1 -1
- package/dist/logger/renovate-logger.js +1 -1
- package/dist/logger/renovate-logger.js.map +1 -1
- package/dist/logger/utils.js +6 -11
- package/dist/logger/utils.js.map +1 -1
- package/dist/modules/datasource/api.js +2 -0
- package/dist/modules/datasource/api.js.map +1 -1
- package/dist/modules/datasource/artifactory/index.js +1 -2
- package/dist/modules/datasource/artifactory/index.js.map +1 -1
- package/dist/modules/datasource/aws-eks-addon/index.d.ts +11 -0
- package/dist/modules/datasource/aws-eks-addon/index.js +75 -0
- package/dist/modules/datasource/aws-eks-addon/index.js.map +1 -0
- package/dist/modules/datasource/aws-eks-addon/schema.d.ts +40 -0
- package/dist/modules/datasource/aws-eks-addon/schema.js +31 -0
- package/dist/modules/datasource/aws-eks-addon/schema.js.map +1 -0
- package/dist/modules/datasource/aws-machine-image/index.js +6 -5
- package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
- package/dist/modules/datasource/azure-pipelines-tasks/index.js +11 -1
- package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
- package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +16 -0
- package/dist/modules/datasource/azure-pipelines-tasks/schema.js +2 -0
- package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
- package/dist/modules/datasource/bazel/index.js +0 -1
- package/dist/modules/datasource/bazel/index.js.map +1 -1
- package/dist/modules/datasource/bitrise/index.js +1 -1
- package/dist/modules/datasource/bitrise/index.js.map +1 -1
- package/dist/modules/datasource/cdnjs/schema.d.ts +2 -2
- package/dist/modules/datasource/conda/index.js +18 -1
- package/dist/modules/datasource/conda/index.js.map +1 -1
- package/dist/modules/datasource/conda/prefix-dev.d.ts +3 -0
- package/dist/modules/datasource/conda/prefix-dev.js +83 -0
- package/dist/modules/datasource/conda/prefix-dev.js.map +1 -0
- package/dist/modules/datasource/conda/schema/prefix-dev.d.ts +189 -0
- package/dist/modules/datasource/conda/schema/prefix-dev.js +31 -0
- package/dist/modules/datasource/conda/schema/prefix-dev.js.map +1 -0
- package/dist/modules/datasource/conda/types.d.ts +1 -20
- package/dist/modules/datasource/conda/types.js.map +1 -1
- package/dist/modules/datasource/cpan/index.js +1 -1
- package/dist/modules/datasource/cpan/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js +3 -3
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/custom/formats/html.js +1 -1
- package/dist/modules/datasource/custom/formats/html.js.map +1 -1
- package/dist/modules/datasource/custom/formats/yaml.js +1 -1
- package/dist/modules/datasource/custom/formats/yaml.js.map +1 -1
- package/dist/modules/datasource/custom/index.js +4 -2
- package/dist/modules/datasource/custom/index.js.map +1 -1
- package/dist/modules/datasource/custom/schema.d.ts +22 -22
- package/dist/modules/datasource/custom/utils.js +1 -0
- package/dist/modules/datasource/custom/utils.js.map +1 -1
- package/dist/modules/datasource/dart/index.js +1 -1
- package/dist/modules/datasource/dart/index.js.map +1 -1
- package/dist/modules/datasource/dart-version/index.js +1 -1
- package/dist/modules/datasource/dart-version/index.js.map +1 -1
- package/dist/modules/datasource/datasource.js +0 -1
- package/dist/modules/datasource/datasource.js.map +1 -1
- package/dist/modules/datasource/deb/index.js +2 -2
- package/dist/modules/datasource/deb/index.js.map +1 -1
- package/dist/modules/datasource/deno/index.js +1 -1
- package/dist/modules/datasource/deno/index.js.map +1 -1
- package/dist/modules/datasource/deno/schema.d.ts +1 -1
- package/dist/modules/datasource/devbox/index.js +0 -1
- package/dist/modules/datasource/devbox/index.js.map +1 -1
- package/dist/modules/datasource/docker/common.js +5 -2
- package/dist/modules/datasource/docker/common.js.map +1 -1
- package/dist/modules/datasource/docker/index.js +10 -8
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/docker/schema.d.ts +5 -5
- package/dist/modules/datasource/docker/schema.js +2 -1
- package/dist/modules/datasource/docker/schema.js.map +1 -1
- package/dist/modules/datasource/flutter-version/index.js +1 -1
- package/dist/modules/datasource/flutter-version/index.js.map +1 -1
- package/dist/modules/datasource/galaxy/schema.d.ts +1 -1
- package/dist/modules/datasource/galaxy-collection/schema.d.ts +8 -8
- package/dist/modules/datasource/git-refs/index.js +1 -1
- package/dist/modules/datasource/git-refs/index.js.map +1 -1
- package/dist/modules/datasource/gitea-releases/schema.d.ts +2 -2
- package/dist/modules/datasource/gitea-tags/schema.d.ts +4 -4
- package/dist/modules/datasource/github-release-attachments/index.js +2 -2
- package/dist/modules/datasource/github-release-attachments/index.js.map +1 -1
- package/dist/modules/datasource/gitlab-packages/index.js +1 -1
- package/dist/modules/datasource/gitlab-packages/index.js.map +1 -1
- package/dist/modules/datasource/gitlab-releases/index.js +1 -3
- package/dist/modules/datasource/gitlab-releases/index.js.map +1 -1
- package/dist/modules/datasource/go/base.js +1 -1
- package/dist/modules/datasource/go/base.js.map +1 -1
- package/dist/modules/datasource/go/index.js +1 -1
- package/dist/modules/datasource/go/index.js.map +1 -1
- package/dist/modules/datasource/go/releases-direct.js +7 -4
- package/dist/modules/datasource/go/releases-direct.js.map +1 -1
- package/dist/modules/datasource/go/releases-goproxy.js +1 -1
- package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
- package/dist/modules/datasource/golang-version/index.js +2 -2
- package/dist/modules/datasource/golang-version/index.js.map +1 -1
- package/dist/modules/datasource/gradle-version/index.js +1 -1
- package/dist/modules/datasource/gradle-version/index.js.map +1 -1
- package/dist/modules/datasource/helm/index.js +1 -1
- package/dist/modules/datasource/helm/index.js.map +1 -1
- package/dist/modules/datasource/hex/index.js +1 -1
- package/dist/modules/datasource/hex/index.js.map +1 -1
- package/dist/modules/datasource/hex/schema.d.ts +11 -11
- package/dist/modules/datasource/hexpm-bob/index.js +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
- package/dist/modules/datasource/index.js +4 -4
- package/dist/modules/datasource/index.js.map +1 -1
- package/dist/modules/datasource/java-version/index.js +0 -1
- package/dist/modules/datasource/java-version/index.js.map +1 -1
- package/dist/modules/datasource/jenkins-plugins/index.js +1 -1
- package/dist/modules/datasource/jenkins-plugins/index.js.map +1 -1
- package/dist/modules/datasource/maven/index.js +35 -27
- package/dist/modules/datasource/maven/index.js.map +1 -1
- package/dist/modules/datasource/maven/types.d.ts +3 -6
- package/dist/modules/datasource/maven/types.js.map +1 -1
- package/dist/modules/datasource/maven/util.d.ts +4 -5
- package/dist/modules/datasource/maven/util.js +94 -157
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/datasource/node-version/index.js +1 -1
- package/dist/modules/datasource/node-version/index.js.map +1 -1
- package/dist/modules/datasource/npm/index.js +1 -1
- package/dist/modules/datasource/npm/index.js.map +1 -1
- package/dist/modules/datasource/npm/npmrc.js +1 -1
- package/dist/modules/datasource/npm/npmrc.js.map +1 -1
- package/dist/modules/datasource/nuget/index.js +1 -1
- package/dist/modules/datasource/nuget/index.js.map +1 -1
- package/dist/modules/datasource/nuget/v2.js +1 -1
- package/dist/modules/datasource/nuget/v2.js.map +1 -1
- package/dist/modules/datasource/nuget/v3.js +6 -6
- package/dist/modules/datasource/nuget/v3.js.map +1 -1
- package/dist/modules/datasource/orb/index.js +1 -1
- package/dist/modules/datasource/orb/index.js.map +1 -1
- package/dist/modules/datasource/packagist/index.js +2 -2
- package/dist/modules/datasource/packagist/index.js.map +1 -1
- package/dist/modules/datasource/packagist/schema.d.ts +25 -25
- package/dist/modules/datasource/pod/index.js +2 -2
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/postprocess-release.js +1 -1
- package/dist/modules/datasource/postprocess-release.js.map +1 -1
- package/dist/modules/datasource/pypi/index.js +1 -1
- package/dist/modules/datasource/pypi/index.js.map +1 -1
- package/dist/modules/datasource/python-version/index.js +1 -1
- package/dist/modules/datasource/python-version/index.js.map +1 -1
- package/dist/modules/datasource/repology/index.js +1 -1
- package/dist/modules/datasource/repology/index.js.map +1 -1
- package/dist/modules/datasource/ruby-version/index.js +1 -1
- package/dist/modules/datasource/ruby-version/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/index.js +2 -2
- package/dist/modules/datasource/rubygems/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/versions-endpoint-cache.js +2 -2
- package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
- package/dist/modules/datasource/sbt-package/index.js +1 -1
- package/dist/modules/datasource/sbt-package/index.js.map +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
- package/dist/modules/datasource/schema.d.ts +4 -4
- package/dist/modules/datasource/terraform-module/index.js +1 -1
- package/dist/modules/datasource/terraform-module/index.js.map +1 -1
- package/dist/modules/datasource/terraform-provider/index.js +2 -3
- package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
- package/dist/modules/datasource/types.d.ts +1 -0
- package/dist/modules/datasource/types.js.map +1 -1
- package/dist/modules/datasource/unity3d/index.d.ts +4 -1
- package/dist/modules/datasource/unity3d/index.js +36 -42
- package/dist/modules/datasource/unity3d/index.js.map +1 -1
- package/dist/modules/datasource/unity3d/schema.d.ts +47 -0
- package/dist/modules/datasource/unity3d/schema.js +17 -0
- package/dist/modules/datasource/unity3d/schema.js.map +1 -0
- package/dist/modules/manager/api.js +2 -0
- package/dist/modules/manager/api.js.map +1 -1
- package/dist/modules/manager/argocd/extract.js +1 -1
- package/dist/modules/manager/argocd/extract.js.map +1 -1
- package/dist/modules/manager/argocd/schema.d.ts +10 -10
- package/dist/modules/manager/asdf/upgradeable-tooling.js +94 -0
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/azure-pipelines/schema.d.ts +32 -32
- package/dist/modules/manager/batect/schema.d.ts +4 -4
- package/dist/modules/manager/batect-wrapper/artifacts.js +1 -1
- package/dist/modules/manager/batect-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/bazel/rules/docker.d.ts +6 -6
- package/dist/modules/manager/bazel/rules/git.d.ts +10 -10
- package/dist/modules/manager/bazel/rules/git.js +9 -2
- package/dist/modules/manager/bazel/rules/git.js.map +1 -1
- package/dist/modules/manager/bazel/rules/go.d.ts +5 -5
- package/dist/modules/manager/bazel/rules/maven.d.ts +7 -7
- package/dist/modules/manager/bazel/rules/oci.d.ts +6 -6
- package/dist/modules/manager/bazel-module/parser/fragments.d.ts +40 -40
- package/dist/modules/manager/bazel-module/parser/maven.d.ts +40 -40
- package/dist/modules/manager/bazel-module/parser/oci.d.ts +17 -17
- package/dist/modules/manager/bazel-module/rules.d.ts +40 -40
- package/dist/modules/manager/bun/artifacts.js +0 -1
- package/dist/modules/manager/bun/artifacts.js.map +1 -1
- package/dist/modules/manager/bundler/artifacts.js +0 -1
- package/dist/modules/manager/bundler/artifacts.js.map +1 -1
- package/dist/modules/manager/bundler/extract.js +2 -1
- package/dist/modules/manager/bundler/extract.js.map +1 -1
- package/dist/modules/manager/cake/index.js +4 -2
- package/dist/modules/manager/cake/index.js.map +1 -1
- package/dist/modules/manager/cargo/artifacts.js +5 -7
- package/dist/modules/manager/cargo/artifacts.js.map +1 -1
- package/dist/modules/manager/cargo/schema.d.ts +114 -114
- package/dist/modules/manager/cocoapods/artifacts.js +1 -2
- package/dist/modules/manager/cocoapods/artifacts.js.map +1 -1
- package/dist/modules/manager/composer/artifacts.js +1 -2
- package/dist/modules/manager/composer/artifacts.js.map +1 -1
- package/dist/modules/manager/composer/schema.d.ts +26 -26
- package/dist/modules/manager/composer/schema.js +1 -1
- package/dist/modules/manager/composer/schema.js.map +1 -1
- package/dist/modules/manager/composer/utils.d.ts +1 -0
- package/dist/modules/manager/composer/utils.js +18 -6
- package/dist/modules/manager/composer/utils.js.map +1 -1
- package/dist/modules/manager/copier/artifacts.js +0 -1
- package/dist/modules/manager/copier/artifacts.js.map +1 -1
- package/dist/modules/manager/crossplane/schema.d.ts +2 -2
- package/dist/modules/manager/custom/jsonata/index.js +4 -0
- package/dist/modules/manager/custom/jsonata/index.js.map +1 -1
- package/dist/modules/manager/custom/jsonata/schema.d.ts +21 -21
- package/dist/modules/manager/custom/regex/index.js +2 -0
- package/dist/modules/manager/custom/regex/index.js.map +1 -1
- package/dist/modules/manager/deps-edn/extract.js +2 -1
- package/dist/modules/manager/deps-edn/extract.js.map +1 -1
- package/dist/modules/manager/devbox/artifacts.d.ts +1 -1
- package/dist/modules/manager/devbox/artifacts.js +28 -11
- package/dist/modules/manager/devbox/artifacts.js.map +1 -1
- package/dist/modules/manager/devbox/schema.js +1 -1
- package/dist/modules/manager/devbox/schema.js.map +1 -1
- package/dist/modules/manager/devcontainer/extract.js +43 -1
- package/dist/modules/manager/devcontainer/extract.js.map +1 -1
- package/dist/modules/manager/devcontainer/index.js +11 -1
- package/dist/modules/manager/devcontainer/index.js.map +1 -1
- package/dist/modules/manager/devcontainer/schema.d.ts +7 -3
- package/dist/modules/manager/devcontainer/schema.js +3 -1
- package/dist/modules/manager/devcontainer/schema.js.map +1 -1
- package/dist/modules/manager/docker-compose/schema.d.ts +6 -6
- package/dist/modules/manager/fingerprint.generated.js +86 -85
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/flux/artifacts.js +0 -1
- package/dist/modules/manager/flux/artifacts.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +27 -24
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/flux/schema.d.ts +94 -94
- package/dist/modules/manager/github-actions/extract.js +60 -39
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/github-actions/schema.d.ts +66 -0
- package/dist/modules/manager/github-actions/schema.js +38 -0
- package/dist/modules/manager/github-actions/schema.js.map +1 -0
- package/dist/modules/manager/gitlabci/extract.d.ts +1 -5
- package/dist/modules/manager/gitlabci/extract.js +27 -126
- package/dist/modules/manager/gitlabci/extract.js.map +1 -1
- package/dist/modules/manager/gitlabci/schema.d.ts +55 -0
- package/dist/modules/manager/gitlabci/schema.js +63 -0
- package/dist/modules/manager/gitlabci/schema.js.map +1 -0
- package/dist/modules/manager/gitlabci-include/extract.js +6 -54
- package/dist/modules/manager/gitlabci-include/extract.js.map +1 -1
- package/dist/modules/manager/gitlabci-include/schema.d.ts +13 -0
- package/dist/modules/manager/gitlabci-include/schema.js +46 -0
- package/dist/modules/manager/gitlabci-include/schema.js.map +1 -0
- package/dist/modules/manager/glasskube/schema.d.ts +8 -8
- package/dist/modules/manager/gomod/artifacts.js +24 -10
- package/dist/modules/manager/gomod/artifacts.js.map +1 -1
- package/dist/modules/manager/gomod/extract.js +23 -0
- package/dist/modules/manager/gomod/extract.js.map +1 -1
- package/dist/modules/manager/gomod/line-parser.js +16 -0
- package/dist/modules/manager/gomod/line-parser.js.map +1 -1
- package/dist/modules/manager/gomod/update.js +2 -2
- package/dist/modules/manager/gomod/update.js.map +1 -1
- package/dist/modules/manager/gradle/artifacts.js +0 -1
- package/dist/modules/manager/gradle/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
- package/dist/modules/manager/gradle/parser/assignments.js +2 -2
- package/dist/modules/manager/gradle/parser/assignments.js.map +1 -1
- package/dist/modules/manager/gradle/parser/handlers.d.ts +1 -2
- package/dist/modules/manager/gradle/parser/handlers.js +10 -25
- package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
- package/dist/modules/manager/gradle/parser/registry-urls.js +11 -3
- package/dist/modules/manager/gradle/parser/registry-urls.js.map +1 -1
- package/dist/modules/manager/gradle-wrapper/artifacts.js +1 -2
- package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/helmfile/artifacts.js +0 -1
- package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
- package/dist/modules/manager/helmfile/extract.js +4 -0
- package/dist/modules/manager/helmfile/extract.js.map +1 -1
- package/dist/modules/manager/helmfile/schema.d.ts +9 -9
- package/dist/modules/manager/helmv3/artifacts.js +0 -1
- package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/utils.js +3 -1
- package/dist/modules/manager/helmv3/utils.js.map +1 -1
- package/dist/modules/manager/hermit/artifacts.js +0 -1
- package/dist/modules/manager/hermit/artifacts.js.map +1 -1
- package/dist/modules/manager/homebrew/extract.js +0 -1
- package/dist/modules/manager/homebrew/extract.js.map +1 -1
- package/dist/modules/manager/jsonnet-bundler/artifacts.js +0 -1
- package/dist/modules/manager/jsonnet-bundler/artifacts.js.map +1 -1
- package/dist/modules/manager/kustomize/artifacts.d.ts +2 -0
- package/dist/modules/manager/kustomize/artifacts.js +154 -0
- package/dist/modules/manager/kustomize/artifacts.js.map +1 -0
- package/dist/modules/manager/kustomize/common.d.ts +3 -0
- package/dist/modules/manager/kustomize/common.js +22 -0
- package/dist/modules/manager/kustomize/common.js.map +1 -0
- package/dist/modules/manager/kustomize/index.d.ts +1 -0
- package/dist/modules/manager/kustomize/index.js +3 -1
- package/dist/modules/manager/kustomize/index.js.map +1 -1
- package/dist/modules/manager/kustomize/types.d.ts +4 -0
- package/dist/modules/manager/kustomize/types.js.map +1 -1
- package/dist/modules/manager/maven/extract.js +3 -1
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven-wrapper/artifacts.js +0 -1
- package/dist/modules/manager/maven-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/mise/extract.js +1 -1
- package/dist/modules/manager/mise/extract.js.map +1 -1
- package/dist/modules/manager/mix/artifacts.js +64 -14
- package/dist/modules/manager/mix/artifacts.js.map +1 -1
- package/dist/modules/manager/mix/index.d.ts +1 -0
- package/dist/modules/manager/mix/index.js +2 -1
- package/dist/modules/manager/mix/index.js.map +1 -1
- package/dist/modules/manager/nix/artifacts.js +0 -1
- package/dist/modules/manager/nix/artifacts.js.map +1 -1
- package/dist/modules/manager/nix/extract.js +1 -1
- package/dist/modules/manager/nix/extract.js.map +1 -1
- package/dist/modules/manager/nix/schema.d.ts +18 -18
- package/dist/modules/manager/npm/artifacts.js +0 -1
- package/dist/modules/manager/npm/artifacts.js.map +1 -1
- package/dist/modules/manager/npm/extract/yarn.js +2 -2
- package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +0 -1
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js +13 -2
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/rules.js +11 -1
- package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +0 -1
- package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
- package/dist/modules/manager/npm/schema.d.ts +13 -13
- package/dist/modules/manager/npm/update/dependency/index.js +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/nuget/artifacts.js +1 -2
- package/dist/modules/manager/nuget/artifacts.js.map +1 -1
- package/dist/modules/manager/nuget/package-tree.js +4 -0
- package/dist/modules/manager/nuget/package-tree.js.map +1 -1
- package/dist/modules/manager/nuget/schema.d.ts +8 -8
- package/dist/modules/manager/nuget/util.js +4 -1
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/ocb/schema.d.ts +6 -6
- package/dist/modules/manager/pep621/processors/pdm.js +0 -1
- package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +0 -1
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pep621/schema.d.ts +59 -54
- package/dist/modules/manager/pep621/schema.js +2 -0
- package/dist/modules/manager/pep621/schema.js.map +1 -1
- package/dist/modules/manager/pep621/utils.js +1 -1
- package/dist/modules/manager/pep621/utils.js.map +1 -1
- package/dist/modules/manager/pip-compile/common.js +0 -1
- package/dist/modules/manager/pip-compile/common.js.map +1 -1
- package/dist/modules/manager/pip_requirements/artifacts.js +0 -1
- package/dist/modules/manager/pip_requirements/artifacts.js.map +1 -1
- package/dist/modules/manager/pipenv/artifacts.js +0 -1
- package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
- package/dist/modules/manager/pixi/artifacts.d.ts +3 -0
- package/dist/modules/manager/pixi/artifacts.js +84 -0
- package/dist/modules/manager/pixi/artifacts.js.map +1 -0
- package/dist/modules/manager/pixi/extract.d.ts +2 -0
- package/dist/modules/manager/pixi/extract.js +53 -0
- package/dist/modules/manager/pixi/extract.js.map +1 -0
- package/dist/modules/manager/pixi/index.d.ts +11 -0
- package/dist/modules/manager/pixi/index.js +22 -0
- package/dist/modules/manager/pixi/index.js.map +1 -0
- package/dist/modules/manager/pixi/lockfile.d.ts +6 -0
- package/dist/modules/manager/pixi/lockfile.js +25 -0
- package/dist/modules/manager/pixi/lockfile.js.map +1 -0
- package/dist/modules/manager/pixi/schema.d.ts +14 -0
- package/dist/modules/manager/pixi/schema.js +14 -0
- package/dist/modules/manager/pixi/schema.js.map +1 -0
- package/dist/modules/manager/poetry/artifacts.js +3 -4
- package/dist/modules/manager/poetry/artifacts.js.map +1 -1
- package/dist/modules/manager/poetry/extract.js +2 -1
- package/dist/modules/manager/poetry/extract.js.map +1 -1
- package/dist/modules/manager/poetry/schema.d.ts +48 -48
- package/dist/modules/manager/pub/artifacts.js +0 -1
- package/dist/modules/manager/pub/artifacts.js.map +1 -1
- package/dist/modules/manager/pub/schema.d.ts +8 -8
- package/dist/modules/manager/scalafmt/extract.js +1 -1
- package/dist/modules/manager/scalafmt/extract.js.map +1 -1
- package/dist/modules/manager/sveltos/schema.d.ts +12 -12
- package/dist/modules/manager/terraform/lockfile/hash.d.ts +1 -1
- package/dist/modules/manager/types.d.ts +6 -2
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/manager/vendir/schema.d.ts +4 -4
- package/dist/modules/platform/api.d.ts +1 -1
- package/dist/modules/platform/azure/azure-helper.js +2 -2
- package/dist/modules/platform/azure/azure-helper.js.map +1 -1
- package/dist/modules/platform/azure/index.js +14 -14
- package/dist/modules/platform/azure/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/comments.js +4 -4
- package/dist/modules/platform/bitbucket/comments.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.d.ts +1 -0
- package/dist/modules/platform/bitbucket/index.js +54 -44
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/schema.d.ts +11 -11
- package/dist/modules/platform/bitbucket/utils.js +3 -3
- package/dist/modules/platform/bitbucket/utils.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.d.ts +3 -3
- package/dist/modules/platform/bitbucket-server/index.js +81 -81
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/pr-cache.d.ts +23 -0
- package/dist/modules/platform/bitbucket-server/pr-cache.js +125 -0
- package/dist/modules/platform/bitbucket-server/pr-cache.js.map +1 -0
- package/dist/modules/platform/bitbucket-server/schema.d.ts +75 -0
- package/dist/modules/platform/bitbucket-server/schema.js +14 -1
- package/dist/modules/platform/bitbucket-server/schema.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/types.d.ts +8 -2
- package/dist/modules/platform/bitbucket-server/types.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/utils.d.ts +0 -2
- package/dist/modules/platform/bitbucket-server/utils.js +6 -52
- package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js +6 -6
- package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
- package/dist/modules/platform/codecommit/index.js +24 -24
- package/dist/modules/platform/codecommit/index.js.map +1 -1
- package/dist/modules/platform/gerrit/client.js +13 -2
- package/dist/modules/platform/gerrit/client.js.map +1 -1
- package/dist/modules/platform/gerrit/utils.js +1 -1
- package/dist/modules/platform/gerrit/utils.js.map +1 -1
- package/dist/modules/platform/gitea/gitea-helper.d.ts +1 -0
- package/dist/modules/platform/gitea/gitea-helper.js +16 -0
- package/dist/modules/platform/gitea/gitea-helper.js.map +1 -1
- package/dist/modules/platform/gitea/index.d.ts +1 -0
- package/dist/modules/platform/gitea/index.js +26 -7
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/schema.d.ts +8 -8
- package/dist/modules/platform/gitea/types.d.ts +1 -1
- package/dist/modules/platform/gitea/types.js.map +1 -1
- package/dist/modules/platform/github/common.d.ts +2 -0
- package/dist/modules/platform/github/common.js +16 -0
- package/dist/modules/platform/github/common.js.map +1 -1
- package/dist/modules/platform/github/index.d.ts +1 -1
- package/dist/modules/platform/github/index.js +87 -82
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/github/issue.d.ts +12 -12
- package/dist/modules/platform/github/massage-markdown-links.js +2 -2
- package/dist/modules/platform/github/massage-markdown-links.js.map +1 -1
- package/dist/modules/platform/github/pr.js +3 -3
- package/dist/modules/platform/github/pr.js.map +1 -1
- package/dist/modules/platform/github/schema.d.ts +76 -76
- package/dist/modules/platform/github/schema.js +3 -1
- package/dist/modules/platform/github/schema.js.map +1 -1
- package/dist/modules/platform/gitlab/index.d.ts +1 -0
- package/dist/modules/platform/gitlab/index.js +70 -43
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/index.js +0 -1
- package/dist/modules/platform/index.js.map +1 -1
- package/dist/modules/platform/scm.d.ts +1 -1
- package/dist/modules/versioning/api.js +2 -0
- package/dist/modules/versioning/api.js.map +1 -1
- package/dist/modules/versioning/composer/index.js +10 -0
- package/dist/modules/versioning/composer/index.js.map +1 -1
- package/dist/modules/versioning/conda/index.d.ts +41 -0
- package/dist/modules/versioning/conda/index.js +178 -0
- package/dist/modules/versioning/conda/index.js.map +1 -0
- package/dist/modules/versioning/hashicorp/convertor.d.ts +2 -1
- package/dist/modules/versioning/hashicorp/convertor.js +13 -8
- package/dist/modules/versioning/hashicorp/convertor.js.map +1 -1
- package/dist/modules/versioning/hex/index.js +3 -3
- package/dist/modules/versioning/hex/index.js.map +1 -1
- package/dist/modules/versioning/npm/index.js +2 -1
- package/dist/modules/versioning/npm/index.js.map +1 -1
- package/dist/modules/versioning/schema.js +1 -1
- package/dist/modules/versioning/schema.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +4 -0
- package/dist/modules/versioning/types.js.map +1 -1
- package/dist/proxy.js +2 -1
- package/dist/proxy.js.map +1 -1
- package/dist/renovate.js +2 -2
- package/dist/renovate.js.map +1 -1
- package/dist/util/cache/package/decorator.js +2 -2
- package/dist/util/cache/package/decorator.js.map +1 -1
- package/dist/util/cache/package/redis.js +0 -1
- package/dist/util/cache/package/redis.js.map +1 -1
- package/dist/util/cache/package/types.d.ts +1 -1
- package/dist/util/cache/package/types.js.map +1 -1
- package/dist/util/cache/repository/impl/base.d.ts +1 -1
- package/dist/util/cache/repository/schema.d.ts +4 -4
- 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 +4 -0
- package/dist/util/env.js +22 -0
- package/dist/util/env.js.map +1 -0
- package/dist/util/exec/containerbase.js +18 -12
- package/dist/util/exec/containerbase.js.map +1 -1
- package/dist/util/exec/index.js +5 -2
- package/dist/util/exec/index.js.map +1 -1
- package/dist/util/exec/types.d.ts +0 -2
- package/dist/util/exec/types.js.map +1 -1
- package/dist/util/exec/utils.d.ts +1 -1
- package/dist/util/exec/utils.js +6 -5
- package/dist/util/exec/utils.js.map +1 -1
- package/dist/util/git/author.js +1 -1
- package/dist/util/git/author.js.map +1 -1
- package/dist/util/git/config.js +0 -1
- package/dist/util/git/config.js.map +1 -1
- package/dist/util/git/error.js +4 -2
- package/dist/util/git/error.js.map +1 -1
- package/dist/util/git/index.js +73 -46
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/git/private-key.js +1 -1
- package/dist/util/git/private-key.js.map +1 -1
- package/dist/util/github/graphql/query-adapters/releases-query-adapter.d.ts +2 -2
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.d.ts +2 -2
- package/dist/util/http/auth.js +0 -1
- package/dist/util/http/auth.js.map +1 -1
- package/dist/util/http/bitbucket-server.d.ts +5 -4
- package/dist/util/http/bitbucket-server.js +21 -20
- package/dist/util/http/bitbucket-server.js.map +1 -1
- package/dist/util/http/bitbucket.d.ts +6 -5
- package/dist/util/http/bitbucket.js +34 -31
- package/dist/util/http/bitbucket.js.map +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js +2 -2
- package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
- package/dist/util/http/cache/memory-http-cache-provider.d.ts +10 -0
- package/dist/util/http/cache/memory-http-cache-provider.js +29 -0
- package/dist/util/http/cache/memory-http-cache-provider.js.map +1 -0
- package/dist/util/http/cache/schema.d.ts +2 -2
- package/dist/util/http/errors.d.ts +2 -0
- package/dist/util/http/errors.js +8 -0
- package/dist/util/http/errors.js.map +1 -0
- package/dist/util/http/gerrit.d.ts +6 -4
- package/dist/util/http/gerrit.js +11 -12
- package/dist/util/http/gerrit.js.map +1 -1
- package/dist/util/http/gitea.d.ts +5 -4
- package/dist/util/http/gitea.js +14 -13
- package/dist/util/http/gitea.js.map +1 -1
- package/dist/util/http/github.d.ts +14 -8
- package/dist/util/http/github.js +65 -60
- package/dist/util/http/github.js.map +1 -1
- package/dist/util/http/gitlab.d.ts +7 -5
- package/dist/util/http/gitlab.js +58 -46
- package/dist/util/http/gitlab.js.map +1 -1
- package/dist/util/http/got.d.ts +9 -0
- package/dist/util/http/got.js +54 -0
- package/dist/util/http/got.js.map +1 -0
- package/dist/util/http/host-rules.d.ts +2 -1
- package/dist/util/http/host-rules.js +5 -4
- package/dist/util/http/host-rules.js.map +1 -1
- package/dist/util/http/http.d.ts +93 -0
- package/dist/util/http/http.js +346 -0
- package/dist/util/http/http.js.map +1 -0
- package/dist/util/http/index.d.ts +6 -74
- package/dist/util/http/index.js +5 -359
- package/dist/util/http/index.js.map +1 -1
- package/dist/util/http/legacy.js +4 -1
- package/dist/util/http/legacy.js.map +1 -1
- package/dist/util/http/types.d.ts +9 -16
- package/dist/util/http/types.js.map +1 -1
- package/dist/util/stats.d.ts +10 -0
- package/dist/util/stats.js +45 -1
- package/dist/util/stats.js.map +1 -1
- package/dist/util/string.d.ts +15 -0
- package/dist/util/string.js +75 -0
- package/dist/util/string.js.map +1 -1
- package/dist/util/toml.d.ts +1 -0
- package/dist/util/toml.js +6 -0
- package/dist/util/toml.js.map +1 -1
- package/dist/util/url.js +3 -8
- package/dist/util/url.js.map +1 -1
- package/dist/util/yaml.js +2 -6
- package/dist/util/yaml.js.map +1 -1
- package/dist/workers/global/config/parse/env.js +3 -2
- package/dist/workers/global/config/parse/env.js.map +1 -1
- package/dist/workers/global/config/parse/file.js +19 -9
- package/dist/workers/global/config/parse/file.js.map +1 -1
- package/dist/workers/global/config/parse/host-rules-from-env.js +6 -2
- package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
- package/dist/workers/global/config/parse/index.js +5 -0
- package/dist/workers/global/config/parse/index.js.map +1 -1
- package/dist/workers/repository/cache.js +1 -2
- package/dist/workers/repository/cache.js.map +1 -1
- package/dist/workers/repository/config-migration/branch/migrated-data.js +2 -0
- package/dist/workers/repository/config-migration/branch/migrated-data.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/merge.js +6 -3
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/onboarding/pr/config-description.js +3 -1
- package/dist/workers/repository/onboarding/pr/config-description.js.map +1 -1
- package/dist/workers/repository/process/extract-update.js +0 -1
- package/dist/workers/repository/process/extract-update.js.map +1 -1
- package/dist/workers/repository/process/fingerprint-fields.js +0 -1
- package/dist/workers/repository/process/fingerprint-fields.js.map +1 -1
- package/dist/workers/repository/process/libyear.js +2 -2
- package/dist/workers/repository/process/libyear.js.map +1 -1
- package/dist/workers/repository/process/lookup/index.js +13 -4
- package/dist/workers/repository/process/lookup/index.js.map +1 -1
- package/dist/workers/repository/process/vulnerabilities.js +1 -1
- package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
- package/dist/workers/repository/process/write.js +1 -8
- package/dist/workers/repository/process/write.js.map +1 -1
- package/dist/workers/repository/reconfigure/validate.js +1 -0
- package/dist/workers/repository/reconfigure/validate.js.map +1 -1
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +10 -1
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/bitbucket/index.js +1 -1
- package/dist/workers/repository/update/pr/changelog/bitbucket/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/github/index.js +6 -3
- package/dist/workers/repository/update/pr/changelog/github/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/gitlab/index.js +1 -1
- package/dist/workers/repository/update/pr/changelog/gitlab/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/source.js +1 -0
- package/dist/workers/repository/update/pr/changelog/source.js.map +1 -1
- package/dist/workers/repository/updates/flatten.js +8 -4
- package/dist/workers/repository/updates/flatten.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +1 -2
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/dist/workers/types.d.ts +1 -4
- package/dist/workers/types.js.map +1 -1
- package/package.json +69 -72
- package/renovate-schema.json +15 -1
- package/dist/modules/manager/github-actions/types.d.ts +0 -30
- package/dist/modules/manager/github-actions/types.js +0 -3
- package/dist/modules/manager/github-actions/types.js.map +0 -1
- package/dist/modules/manager/gitlabci/common.d.ts +0 -6
- package/dist/modules/manager/gitlabci/common.js +0 -30
- package/dist/modules/manager/gitlabci/common.js.map +0 -1
- package/dist/modules/manager/gitlabci/types.d.ts +0 -35
- package/dist/modules/manager/gitlabci/types.js +0 -3
- package/dist/modules/manager/gitlabci/types.js.map +0 -1
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.id = void 0;
|
4
|
+
exports.resetPlatform = resetPlatform;
|
4
5
|
exports.initPlatform = initPlatform;
|
5
6
|
exports.getRepos = getRepos;
|
6
7
|
exports.getRawFile = getRawFile;
|
@@ -36,6 +37,7 @@ const common_1 = require("../../../util/common");
|
|
36
37
|
const git = tslib_1.__importStar(require("../../../util/git"));
|
37
38
|
const hostRules = tslib_1.__importStar(require("../../../util/host-rules"));
|
38
39
|
const bitbucket_1 = require("../../../util/http/bitbucket");
|
40
|
+
const memory_http_cache_provider_1 = require("../../../util/http/cache/memory-http-cache-provider");
|
39
41
|
const repository_http_cache_provider_1 = require("../../../util/http/cache/repository-http-cache-provider");
|
40
42
|
const regex_1 = require("../../../util/regex");
|
41
43
|
const sanitize_1 = require("../../../util/sanitize");
|
@@ -52,6 +54,10 @@ exports.id = 'bitbucket';
|
|
52
54
|
const bitbucketHttp = new bitbucket_1.BitbucketHttp();
|
53
55
|
const BITBUCKET_PROD_ENDPOINT = 'https://api.bitbucket.org/';
|
54
56
|
let config = {};
|
57
|
+
function resetPlatform() {
|
58
|
+
config = {};
|
59
|
+
renovateUserUuid = null;
|
60
|
+
}
|
55
61
|
const defaults = { endpoint: BITBUCKET_PROD_ENDPOINT };
|
56
62
|
const pathSeparator = '/';
|
57
63
|
let renovateUserUuid = null;
|
@@ -65,9 +71,7 @@ async function initPlatform({ endpoint, username, password, token, }) {
|
|
65
71
|
}
|
66
72
|
(0, bitbucket_1.setBaseUrl)(defaults.endpoint);
|
67
73
|
renovateUserUuid = null;
|
68
|
-
const options = {
|
69
|
-
memCache: false,
|
70
|
-
};
|
74
|
+
const options = { memCache: false };
|
71
75
|
if (token) {
|
72
76
|
options.token = token;
|
73
77
|
}
|
@@ -109,10 +113,10 @@ async function getRepos(config) {
|
|
109
113
|
}
|
110
114
|
return repos.map(({ owner, name }) => `${owner}/${name}`);
|
111
115
|
}
|
112
|
-
catch (err) /*
|
116
|
+
catch (err) /* v8 ignore start */ {
|
113
117
|
logger_1.logger.error({ err }, `bitbucket getRepos error`);
|
114
118
|
throw err;
|
115
|
-
}
|
119
|
+
} /* v8 ignore stop */
|
116
120
|
}
|
117
121
|
async function getRawFile(fileName, repoName, branchOrTag) {
|
118
122
|
// See: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D/src/%7Bcommit%7D/%7Bpath%7D
|
@@ -126,9 +130,8 @@ async function getRawFile(fileName, repoName, branchOrTag) {
|
|
126
130
|
const url = `/2.0/repositories/${repo}/src/` +
|
127
131
|
(finalBranchOrTag ?? `HEAD`) +
|
128
132
|
`/${path}`;
|
129
|
-
const res = await bitbucketHttp.
|
133
|
+
const res = await bitbucketHttp.getText(url, {
|
130
134
|
cacheProvider: repository_http_cache_provider_1.repoCacheProvider,
|
131
|
-
memCache: true,
|
132
135
|
});
|
133
136
|
return res.body;
|
134
137
|
}
|
@@ -171,13 +174,13 @@ async function initRepo({ repository, cloneSubmodules, cloneSubmodulesFilter, ig
|
|
171
174
|
};
|
172
175
|
logger_1.logger.debug(`${repository} owner = ${config.owner}`);
|
173
176
|
}
|
174
|
-
catch (err) /*
|
177
|
+
catch (err) /* v8 ignore start */ {
|
175
178
|
if (err.statusCode === 404) {
|
176
179
|
throw new Error(error_messages_1.REPOSITORY_NOT_FOUND);
|
177
180
|
}
|
178
181
|
logger_1.logger.debug({ err }, 'Unknown Bitbucket initRepo error');
|
179
182
|
throw err;
|
180
|
-
}
|
183
|
+
} /* v8 ignore stop */
|
181
184
|
const { hostname } = node_url_1.default.parse(defaults.endpoint);
|
182
185
|
// Converts API hostnames to their respective HTTP git hosts:
|
183
186
|
// `api.bitbucket.org` to `bitbucket.org`
|
@@ -206,7 +209,7 @@ async function initRepo({ repository, cloneSubmodules, cloneSubmodulesFilter, ig
|
|
206
209
|
};
|
207
210
|
return repoConfig;
|
208
211
|
}
|
209
|
-
|
212
|
+
/* v8 ignore start */
|
210
213
|
function matchesState(state, desiredState) {
|
211
214
|
if (desiredState === 'all') {
|
212
215
|
return true;
|
@@ -215,7 +218,7 @@ function matchesState(state, desiredState) {
|
|
215
218
|
return state !== desiredState.substring(1);
|
216
219
|
}
|
217
220
|
return state === desiredState;
|
218
|
-
}
|
221
|
+
} /* v8 ignore stop */
|
219
222
|
async function getPrList() {
|
220
223
|
logger_1.logger.trace('getPrList()');
|
221
224
|
return await pr_cache_1.BitbucketPrCache.getPrs(bitbucketHttp, config.repository, renovateUserUuid);
|
@@ -224,7 +227,7 @@ async function findPr({ branchName, prTitle, state = 'all', includeOtherAuthors,
|
|
224
227
|
logger_1.logger.debug(`findPr(${branchName}, ${prTitle}, ${state})`);
|
225
228
|
if (includeOtherAuthors) {
|
226
229
|
// PR might have been created by anyone, so don't use the cached Renovate PR list
|
227
|
-
const prs = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/pullrequests?q=source.branch.name="${branchName}"&state=open
|
230
|
+
const prs = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/pullrequests?q=source.branch.name="${branchName}"&state=open`, { cacheProvider: memory_http_cache_provider_1.memCacheProvider })).body.values;
|
228
231
|
if (prs.length === 0) {
|
229
232
|
logger_1.logger.debug(`No PR found for branch ${branchName}`);
|
230
233
|
return null;
|
@@ -263,11 +266,11 @@ async function findPr({ branchName, prTitle, state = 'all', includeOtherAuthors,
|
|
263
266
|
}
|
264
267
|
// Gets details for a PR
|
265
268
|
async function getPr(prNo) {
|
266
|
-
const pr = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/pullrequests/${prNo}
|
267
|
-
|
269
|
+
const pr = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/pullrequests/${prNo}`, { cacheProvider: memory_http_cache_provider_1.memCacheProvider })).body;
|
270
|
+
/* v8 ignore start */
|
268
271
|
if (!pr) {
|
269
272
|
return null;
|
270
|
-
}
|
273
|
+
} /* v8 ignore stop */
|
271
274
|
const res = {
|
272
275
|
...utils.prInfo(pr),
|
273
276
|
};
|
@@ -282,13 +285,13 @@ const escapeHash = (input) => input?.replace((0, regex_1.regEx)(/#/g), '%23');
|
|
282
285
|
// Return the commit SHA for a branch
|
283
286
|
async function getBranchCommit(branchName) {
|
284
287
|
try {
|
285
|
-
const branch = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/refs/branches/${escapeHash(branchName)}
|
288
|
+
const branch = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/refs/branches/${escapeHash(branchName)}`, { cacheProvider: memory_http_cache_provider_1.memCacheProvider })).body;
|
286
289
|
return branch.target.hash;
|
287
290
|
}
|
288
|
-
catch (err) /*
|
291
|
+
catch (err) /* v8 ignore start */ {
|
289
292
|
logger_1.logger.debug({ err }, `getBranchCommit('${branchName}') failed'`);
|
290
293
|
return undefined;
|
291
|
-
}
|
294
|
+
} /* v8 ignore stop */
|
292
295
|
}
|
293
296
|
// Returns the Pull Request for a branch. Null if not exists.
|
294
297
|
async function getBranchPr(branchName) {
|
@@ -301,10 +304,15 @@ async function getBranchPr(branchName) {
|
|
301
304
|
}
|
302
305
|
async function getStatus(branchName, memCache = true) {
|
303
306
|
const sha = await getBranchCommit(branchName);
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
307
|
+
const opts = { paginate: true };
|
308
|
+
/* v8 ignore start: temporary code */
|
309
|
+
if (memCache) {
|
310
|
+
opts.cacheProvider = memory_http_cache_provider_1.memCacheProvider;
|
311
|
+
}
|
312
|
+
else {
|
313
|
+
opts.memCache = false;
|
314
|
+
} /* v8 ignore stop */
|
315
|
+
return (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/commit/${sha}/statuses`, opts)).body.values;
|
308
316
|
}
|
309
317
|
// Returns the combined status for a branch.
|
310
318
|
async function getBranchStatus(branchName, internalChecksAsSuccess) {
|
@@ -344,7 +352,8 @@ async function getBranchStatusCheck(branchName, context) {
|
|
344
352
|
async function setBranchStatus({ branchName, context, description, state, url: targetUrl, }) {
|
345
353
|
const sha = await getBranchCommit(branchName);
|
346
354
|
// TargetUrl can not be empty so default to bitbucket
|
347
|
-
|
355
|
+
/* v8 ignore next */
|
356
|
+
const url = targetUrl ?? 'https://bitbucket.org';
|
348
357
|
const body = {
|
349
358
|
name: context,
|
350
359
|
state: utils.buildStates[state],
|
@@ -366,20 +375,20 @@ async function findOpenIssues(title) {
|
|
366
375
|
filters.push(`reporter.uuid="${renovateUserUuid}"`);
|
367
376
|
}
|
368
377
|
const filter = encodeURIComponent(filters.join(' AND '));
|
369
|
-
return ((await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/issues?q=${filter}
|
378
|
+
return ((await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/issues?q=${filter}`, { cacheProvider: memory_http_cache_provider_1.memCacheProvider })).body.values /* v8 ignore start */ || [] /* v8 ignore stop */);
|
370
379
|
}
|
371
|
-
catch (err) /*
|
380
|
+
catch (err) /* v8 ignore start */ {
|
372
381
|
logger_1.logger.warn({ err }, 'Error finding issues');
|
373
382
|
return [];
|
374
|
-
}
|
383
|
+
} /* v8 ignore stop */
|
375
384
|
}
|
376
385
|
async function findIssue(title) {
|
377
386
|
logger_1.logger.debug(`findIssue(${title})`);
|
378
|
-
/*
|
387
|
+
/* v8 ignore start */
|
379
388
|
if (!config.has_issues) {
|
380
389
|
logger_1.logger.debug('Issues are disabled - cannot findIssue');
|
381
390
|
return null;
|
382
|
-
}
|
391
|
+
} /* v8 ignore stop */
|
383
392
|
const issues = await findOpenIssues(title);
|
384
393
|
if (!issues.length) {
|
385
394
|
return null;
|
@@ -411,12 +420,12 @@ function maxBodyLength() {
|
|
411
420
|
}
|
412
421
|
async function ensureIssue({ title, reuseTitle, body, }) {
|
413
422
|
logger_1.logger.debug(`ensureIssue()`);
|
414
|
-
/*
|
423
|
+
/* v8 ignore start */
|
415
424
|
if (!config.has_issues) {
|
416
425
|
logger_1.logger.debug('Issues are disabled - cannot ensureIssue');
|
417
426
|
logger_1.logger.debug(`Failed to ensure Issue with title:${title}`);
|
418
427
|
return null;
|
419
|
-
}
|
428
|
+
} /* v8 ignore stop */
|
420
429
|
try {
|
421
430
|
let issues = await findOpenIssues(title);
|
422
431
|
const description = massageMarkdown((0, sanitize_1.sanitize)(body));
|
@@ -457,17 +466,17 @@ async function ensureIssue({ title, reuseTitle, body, }) {
|
|
457
466
|
return 'created';
|
458
467
|
}
|
459
468
|
}
|
460
|
-
catch (err) /*
|
469
|
+
catch (err) /* v8 ignore start */ {
|
461
470
|
if (err.message.startsWith('Repository has no issue tracker.')) {
|
462
471
|
logger_1.logger.debug(`Issues are disabled, so could not create issue: ${title}`);
|
463
472
|
}
|
464
473
|
else {
|
465
474
|
logger_1.logger.warn({ err }, 'Could not ensure issue');
|
466
475
|
}
|
467
|
-
}
|
476
|
+
} /* v8 ignore stop */
|
468
477
|
return null;
|
469
478
|
}
|
470
|
-
/*
|
479
|
+
/* v8 ignore start */
|
471
480
|
async function getIssueList() {
|
472
481
|
logger_1.logger.debug(`getIssueList()`);
|
473
482
|
if (!config.has_issues) {
|
@@ -490,13 +499,13 @@ async function getIssueList() {
|
|
490
499
|
logger_1.logger.warn({ err }, 'Error finding issues');
|
491
500
|
return [];
|
492
501
|
}
|
493
|
-
}
|
502
|
+
} /* v8 ignore stop */
|
494
503
|
async function ensureIssueClosing(title) {
|
495
|
-
/*
|
504
|
+
/* v8 ignore start */
|
496
505
|
if (!config.has_issues) {
|
497
506
|
logger_1.logger.debug('Issues are disabled - cannot ensureIssueClosing');
|
498
507
|
return;
|
499
|
-
}
|
508
|
+
} /* v8 ignore stop */
|
500
509
|
const issues = await findOpenIssues(title);
|
501
510
|
for (const issue of issues) {
|
502
511
|
await closeIssue(issue.id);
|
@@ -527,10 +536,10 @@ async function addReviewers(prId, reviewers) {
|
|
527
536
|
body,
|
528
537
|
});
|
529
538
|
}
|
530
|
-
/*
|
539
|
+
/* v8 ignore start */
|
531
540
|
function deleteLabel() {
|
532
541
|
throw new Error('deleteLabel not implemented');
|
533
|
-
}
|
542
|
+
} /* v8 ignore stop */
|
534
543
|
function ensureComment({ number, topic, content, }) {
|
535
544
|
// https://developer.atlassian.com/bitbucket/api/2/reference/search?q=pullrequest+comment
|
536
545
|
return comments.ensureComment({
|
@@ -555,7 +564,7 @@ async function sanitizeReviewers(reviewers, err) {
|
|
555
564
|
logger_1.logger.debug({ err }, 'PR contains reviewers that may be either inactive or no longer a member of this workspace. Will try setting only active reviewers');
|
556
565
|
// Validate that each previous PR reviewer account is still active
|
557
566
|
for (const reviewer of reviewers) {
|
558
|
-
const reviewerUser = (await bitbucketHttp.getJsonUnchecked(`/2.0/users/${reviewer.uuid}`, {
|
567
|
+
const reviewerUser = (await bitbucketHttp.getJsonUnchecked(`/2.0/users/${reviewer.uuid}`, { cacheProvider: memory_http_cache_provider_1.memCacheProvider })).body;
|
559
568
|
if (reviewerUser.account_status === 'active') {
|
560
569
|
// There are cases where an active user may still not be a member of a workspace
|
561
570
|
if (await isAccountMemberOfWorkspace(reviewer, config.repository)) {
|
@@ -594,7 +603,7 @@ async function sanitizeReviewers(reviewers, err) {
|
|
594
603
|
async function isAccountMemberOfWorkspace(reviewer, repository) {
|
595
604
|
const workspace = repository.split('/')[0];
|
596
605
|
try {
|
597
|
-
await bitbucketHttp.get(`/2.0/workspaces/${workspace}/members/${reviewer.uuid}`, {
|
606
|
+
await bitbucketHttp.get(`/2.0/workspaces/${workspace}/members/${reviewer.uuid}`, { cacheProvider: memory_http_cache_provider_1.memCacheProvider });
|
598
607
|
return true;
|
599
608
|
}
|
600
609
|
catch (err) {
|
@@ -615,6 +624,7 @@ async function createPr({ sourceBranch, targetBranch, prTitle: title, prBody: de
|
|
615
624
|
if (platformPrOptions?.bbUseDefaultReviewers) {
|
616
625
|
const reviewersResponse = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/effective-default-reviewers`, {
|
617
626
|
paginate: true,
|
627
|
+
cacheProvider: memory_http_cache_provider_1.memCacheProvider,
|
618
628
|
})).body;
|
619
629
|
reviewers = reviewersResponse.values.map((reviewer) => ({
|
620
630
|
uuid: reviewer.user.uuid,
|
@@ -648,7 +658,7 @@ async function createPr({ sourceBranch, targetBranch, prTitle: title, prBody: de
|
|
648
658
|
}
|
649
659
|
return pr;
|
650
660
|
}
|
651
|
-
catch (err) /*
|
661
|
+
catch (err) /* v8 ignore start */ {
|
652
662
|
// Try sanitizing reviewers
|
653
663
|
const sanitizedReviewers = await sanitizeReviewers(reviewers, err);
|
654
664
|
if (sanitizedReviewers === undefined) {
|
@@ -669,7 +679,7 @@ async function createPr({ sourceBranch, targetBranch, prTitle: title, prBody: de
|
|
669
679
|
}
|
670
680
|
return pr;
|
671
681
|
}
|
672
|
-
}
|
682
|
+
} /* v8 ignore stop */
|
673
683
|
}
|
674
684
|
async function autoResolvePrTasks(pr) {
|
675
685
|
logger_1.logger.debug(`Auto resolve PR tasks in #${pr.number}`);
|
@@ -753,11 +763,11 @@ async function mergePr({ branchName, id: prNo, strategy: mergeStrategy, }) {
|
|
753
763
|
});
|
754
764
|
logger_1.logger.debug('Automerging succeeded');
|
755
765
|
}
|
756
|
-
catch (err) /*
|
766
|
+
catch (err) /* v8 ignore start */ {
|
757
767
|
logger_1.logger.debug({ err }, `PR merge error`);
|
758
768
|
logger_1.logger.info({ pr: prNo }, 'PR automerge failed');
|
759
769
|
return false;
|
760
|
-
}
|
770
|
+
} /* v8 ignore stop */
|
761
771
|
return true;
|
762
772
|
}
|
763
773
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/bitbucket/index.ts"],"names":[],"mappings":"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","sourcesContent":["import URL from 'node:url';\nimport is from '@sindresorhus/is';\nimport { REPOSITORY_NOT_FOUND } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { parseJson } from '../../../util/common';\nimport * as git from '../../../util/git';\nimport * as hostRules from '../../../util/host-rules';\nimport { BitbucketHttp, setBaseUrl } from '../../../util/http/bitbucket';\nimport { repoCacheProvider } from '../../../util/http/cache/repository-http-cache-provider';\nimport type { HttpOptions } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { sanitize } from '../../../util/sanitize';\nimport { UUIDRegex, matchRegexOrGlobList } from '../../../util/string-match';\nimport type {\n AutodiscoverConfig,\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfig,\n EnsureIssueConfig,\n EnsureIssueResult,\n FindPRConfig,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\nimport { smartTruncate } from '../utils/pr-body';\nimport { readOnlyIssueBody } from '../utils/read-only-issue-body';\nimport * as comments from './comments';\nimport { BitbucketPrCache } from './pr-cache';\nimport { RepoInfo, Repositories, UnresolvedPrTasks } from './schema';\nimport type {\n Account,\n BitbucketStatus,\n BranchResponse,\n Config,\n EffectiveReviewer,\n PagedResult,\n PrResponse,\n RepoBranchingModel,\n} from './types';\nimport * as utils from './utils';\nimport { mergeBodyTransformer } from './utils';\n\nexport const id = 'bitbucket';\n\nconst bitbucketHttp = new BitbucketHttp();\n\nconst BITBUCKET_PROD_ENDPOINT = 'https://api.bitbucket.org/';\n\nlet config: Config = {} as any;\n\nconst defaults = { endpoint: BITBUCKET_PROD_ENDPOINT };\n\nconst pathSeparator = '/';\n\nlet renovateUserUuid: string | null = null;\n\nexport async function initPlatform({\n endpoint,\n username,\n password,\n token,\n}: PlatformParams): Promise<PlatformResult> {\n if (!(username && password) && !token) {\n throw new Error(\n 'Init: You must configure either a Bitbucket token or username and password',\n );\n }\n if (endpoint && endpoint !== BITBUCKET_PROD_ENDPOINT) {\n logger.warn(\n `Init: Bitbucket Cloud endpoint should generally be ${BITBUCKET_PROD_ENDPOINT} but is being configured to a different value. Did you mean to use Bitbucket Server?`,\n );\n defaults.endpoint = endpoint;\n }\n setBaseUrl(defaults.endpoint);\n renovateUserUuid = null;\n const options: HttpOptions = {\n memCache: false,\n };\n if (token) {\n options.token = token;\n } else {\n options.username = username;\n options.password = password;\n }\n try {\n const { uuid } = (\n await bitbucketHttp.getJsonUnchecked<Account>('/2.0/user', options)\n ).body;\n renovateUserUuid = uuid;\n } catch (err) {\n if (\n err.statusCode === 403 &&\n err.body?.error?.detail?.required?.includes('account')\n ) {\n logger.warn(`Bitbucket: missing 'account' scope for password`);\n } else {\n logger.debug({ err }, 'Unknown error fetching Bitbucket user identity');\n }\n }\n // TODO: Add a connection check that endpoint/username/password combination are valid (#9594)\n const platformConfig: PlatformResult = {\n endpoint: endpoint ?? BITBUCKET_PROD_ENDPOINT,\n };\n return Promise.resolve(platformConfig);\n}\n\n// Get all repositories that the user has access to\nexport async function getRepos(config: AutodiscoverConfig): Promise<string[]> {\n logger.debug('Autodiscovering Bitbucket Cloud repositories');\n try {\n let { body: repos } = await bitbucketHttp.getJson(\n `/2.0/repositories/?role=contributor`,\n { paginate: true },\n Repositories,\n );\n\n // if autodiscoverProjects is configured\n // filter the repos list\n const autodiscoverProjects = config.projects;\n if (is.nonEmptyArray(autodiscoverProjects)) {\n logger.debug(\n { autodiscoverProjects: config.projects },\n 'Applying autodiscoverProjects filter',\n );\n repos = repos.filter(\n (repo) =>\n repo.projectName &&\n matchRegexOrGlobList(repo.projectName, autodiscoverProjects),\n );\n }\n\n return repos.map(({ owner, name }) => `${owner}/${name}`);\n } catch (err) /* istanbul ignore next */ {\n logger.error({ err }, `bitbucket getRepos error`);\n throw err;\n }\n}\n\nexport async function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n // See: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D/src/%7Bcommit%7D/%7Bpath%7D\n const repo = repoName ?? config.repository;\n const path = fileName;\n\n let finalBranchOrTag = branchOrTag;\n if (branchOrTag?.includes(pathSeparator)) {\n // Branch name contains slash, so we have to replace branch name with SHA1 of the head commit; otherwise the API will not work.\n finalBranchOrTag = await getBranchCommit(branchOrTag);\n }\n\n const url =\n `/2.0/repositories/${repo}/src/` +\n (finalBranchOrTag ?? `HEAD`) +\n `/${path}`;\n const res = await bitbucketHttp.get(url, {\n cacheProvider: repoCacheProvider,\n memCache: true,\n });\n return res.body;\n}\n\nexport async function getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<any> {\n // TODO #22198\n const raw = await getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n}\n\n// Initialize bitbucket by getting base branch and SHA\nexport async function initRepo({\n repository,\n cloneSubmodules,\n cloneSubmodulesFilter,\n ignorePrAuthor,\n bbUseDevelopmentBranch,\n}: RepoParams): Promise<RepoResult> {\n logger.debug(`initRepo(\"${repository}\")`);\n const opts = hostRules.find({\n hostType: 'bitbucket',\n url: defaults.endpoint,\n });\n config = {\n repository,\n ignorePrAuthor,\n } as Config;\n let info: RepoInfo;\n let mainBranch: string;\n try {\n const { body: repoInfo } = await bitbucketHttp.getJson(\n `/2.0/repositories/${repository}`,\n RepoInfo,\n );\n info = repoInfo;\n\n mainBranch = info.mainbranch;\n\n if (bbUseDevelopmentBranch) {\n // Fetch Bitbucket development branch\n const developmentBranch = (\n await bitbucketHttp.getJsonUnchecked<RepoBranchingModel>(\n `/2.0/repositories/${repository}/branching-model`,\n )\n ).body.development?.branch?.name;\n\n if (developmentBranch) {\n mainBranch = developmentBranch;\n }\n }\n\n config.defaultBranch = mainBranch;\n\n config = {\n ...config,\n owner: info.owner,\n mergeMethod: info.mergeMethod,\n has_issues: info.has_issues,\n is_private: info.is_private,\n };\n\n logger.debug(`${repository} owner = ${config.owner}`);\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 404) {\n throw new Error(REPOSITORY_NOT_FOUND);\n }\n logger.debug({ err }, 'Unknown Bitbucket initRepo error');\n throw err;\n }\n\n const { hostname } = URL.parse(defaults.endpoint);\n\n // Converts API hostnames to their respective HTTP git hosts:\n // `api.bitbucket.org` to `bitbucket.org`\n // `api-staging.<host>` to `staging.<host>`\n // TODO #22198\n const hostnameWithoutApiPrefix = regEx(/api[.|-](.+)/).exec(hostname!)?.[1];\n\n const auth = opts.token\n ? `x-token-auth:${opts.token}`\n : `${opts.username!}:${opts.password!}`;\n const url = git.getUrl({\n protocol: 'https',\n auth,\n hostname: hostnameWithoutApiPrefix,\n repository,\n });\n\n await git.initRepo({\n ...config,\n url,\n cloneSubmodules,\n cloneSubmodulesFilter,\n });\n const repoConfig: RepoResult = {\n defaultBranch: mainBranch,\n isFork: info.isFork,\n repoFingerprint: repoFingerprint(info.uuid, defaults.endpoint),\n };\n return repoConfig;\n}\n\n// istanbul ignore next\nfunction matchesState(state: string, desiredState: string): boolean {\n if (desiredState === 'all') {\n return true;\n }\n if (desiredState.startsWith('!')) {\n return state !== desiredState.substring(1);\n }\n return state === desiredState;\n}\n\nexport async function getPrList(): Promise<Pr[]> {\n logger.trace('getPrList()');\n return await BitbucketPrCache.getPrs(\n bitbucketHttp,\n config.repository,\n renovateUserUuid,\n );\n}\n\nexport async function findPr({\n branchName,\n prTitle,\n state = 'all',\n includeOtherAuthors,\n}: FindPRConfig): Promise<Pr | null> {\n logger.debug(`findPr(${branchName}, ${prTitle}, ${state})`);\n\n if (includeOtherAuthors) {\n // PR might have been created by anyone, so don't use the cached Renovate PR list\n const prs = (\n await bitbucketHttp.getJsonUnchecked<PagedResult<PrResponse>>(\n `/2.0/repositories/${config.repository}/pullrequests?q=source.branch.name=\"${branchName}\"&state=open`,\n )\n ).body.values;\n\n if (prs.length === 0) {\n logger.debug(`No PR found for branch ${branchName}`);\n return null;\n }\n\n return utils.prInfo(prs[0]);\n }\n\n const prList = await getPrList();\n const pr = prList.find(\n (p) =>\n p.sourceBranch === branchName &&\n (!prTitle || p.title.toUpperCase() === prTitle.toUpperCase()) &&\n matchesState(p.state, state),\n );\n\n if (!pr) {\n return null;\n }\n logger.debug(`Found PR #${pr.number}`);\n\n /**\n * Bitbucket doesn't support renaming or reopening declined PRs.\n * Instead, we have to use comment-driven signals.\n */\n if (pr.state === 'closed') {\n const reopenComments = await comments.reopenComments(config, pr.number);\n\n if (is.nonEmptyArray(reopenComments)) {\n if (config.is_private) {\n // Only workspace members could have commented on a private repository\n logger.debug(\n `Found '${comments.REOPEN_PR_COMMENT_KEYWORD}' comment from workspace member. Renovate will reopen PR ${pr.number} as a new PR`,\n );\n return null;\n }\n\n for (const comment of reopenComments) {\n if (await isAccountMemberOfWorkspace(comment.user, config.repository)) {\n logger.debug(\n `Found '${comments.REOPEN_PR_COMMENT_KEYWORD}' comment from workspace member. Renovate will reopen PR ${pr.number} as a new PR`,\n );\n return null;\n }\n }\n }\n }\n\n return pr;\n}\n\n// Gets details for a PR\nexport async function getPr(prNo: number): Promise<Pr | null> {\n const pr = (\n await bitbucketHttp.getJsonUnchecked<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}`,\n )\n ).body;\n\n // istanbul ignore if\n if (!pr) {\n return null;\n }\n\n const res: Pr = {\n ...utils.prInfo(pr),\n };\n\n if (is.nonEmptyArray(pr.reviewers)) {\n res.reviewers = pr.reviewers\n .map(({ uuid }) => uuid)\n .filter(is.nonEmptyString);\n }\n\n return res;\n}\n\nconst escapeHash = (input: string): string =>\n input?.replace(regEx(/#/g), '%23');\n\n// Return the commit SHA for a branch\nasync function getBranchCommit(\n branchName: string,\n): Promise<string | undefined> {\n try {\n const branch = (\n await bitbucketHttp.getJsonUnchecked<BranchResponse>(\n `/2.0/repositories/${config.repository}/refs/branches/${escapeHash(\n branchName,\n )}`,\n )\n ).body;\n return branch.target.hash;\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, `getBranchCommit('${branchName}') failed'`);\n return undefined;\n }\n}\n\n// Returns the Pull Request for a branch. Null if not exists.\nexport async function getBranchPr(branchName: string): Promise<Pr | null> {\n logger.debug(`getBranchPr(${branchName})`);\n const existingPr = await findPr({\n branchName,\n state: 'open',\n });\n return existingPr ? getPr(existingPr.number) : null;\n}\n\nasync function getStatus(\n branchName: string,\n memCache = true,\n): Promise<BitbucketStatus[]> {\n const sha = await getBranchCommit(branchName);\n return (\n await bitbucketHttp.getJsonUnchecked<PagedResult<BitbucketStatus>>(\n `/2.0/repositories/${config.repository}/commit/${sha!}/statuses`,\n {\n paginate: true,\n memCache,\n },\n )\n ).body.values;\n}\n// Returns the combined status for a branch.\nexport async function getBranchStatus(\n branchName: string,\n internalChecksAsSuccess: boolean,\n): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n const statuses = await getStatus(branchName);\n logger.debug({ branch: branchName, statuses }, 'branch status check result');\n if (!statuses.length) {\n logger.debug('empty branch status check result = returning \"pending\"');\n return 'yellow';\n }\n const noOfFailures = statuses.filter(\n (status: { state: string }) =>\n status.state === 'FAILED' || status.state === 'STOPPED',\n ).length;\n if (noOfFailures) {\n return 'red';\n }\n const noOfPending = statuses.filter(\n (status: { state: string }) => status.state === 'INPROGRESS',\n ).length;\n if (noOfPending) {\n return 'yellow';\n }\n if (\n !internalChecksAsSuccess &&\n statuses.every(\n (status) =>\n status.state === 'SUCCESSFUL' && status.key?.startsWith('renovate/'),\n )\n ) {\n logger.debug(\n 'Successful checks are all internal renovate/ checks, so returning \"pending\" branch status',\n );\n return 'yellow';\n }\n return 'green';\n}\n\nconst bbToRenovateStatusMapping: Record<string, BranchStatus> = {\n SUCCESSFUL: 'green',\n INPROGRESS: 'yellow',\n FAILED: 'red',\n};\n\nexport async function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n const statuses = await getStatus(branchName);\n const bbState = statuses.find((status) => status.key === context)?.state;\n // TODO #22198\n return bbToRenovateStatusMapping[bbState!] || null;\n}\n\nexport async function setBranchStatus({\n branchName,\n context,\n description,\n state,\n url: targetUrl,\n}: BranchStatusConfig): Promise<void> {\n const sha = await getBranchCommit(branchName);\n\n // TargetUrl can not be empty so default to bitbucket\n const url = targetUrl ?? /* istanbul ignore next */ 'https://bitbucket.org';\n\n const body = {\n name: context,\n state: utils.buildStates[state],\n key: context,\n description,\n url,\n };\n\n await bitbucketHttp.postJson(\n `/2.0/repositories/${config.repository}/commit/${sha}/statuses/build`,\n { body },\n );\n // update status cache\n await getStatus(branchName, false);\n}\n\ninterface BbIssue {\n id: number;\n title: string;\n content?: { raw: string };\n}\n\nasync function findOpenIssues(title: string): Promise<BbIssue[]> {\n try {\n const filters = [\n `title=${JSON.stringify(title)}`,\n '(state = \"new\" OR state = \"open\")',\n ];\n if (renovateUserUuid) {\n filters.push(`reporter.uuid=\"${renovateUserUuid}\"`);\n }\n const filter = encodeURIComponent(filters.join(' AND '));\n return (\n (\n await bitbucketHttp.getJsonUnchecked<{ values: BbIssue[] }>(\n `/2.0/repositories/${config.repository}/issues?q=${filter}`,\n )\n ).body.values || /* istanbul ignore next */ []\n );\n } catch (err) /* istanbul ignore next */ {\n logger.warn({ err }, 'Error finding issues');\n return [];\n }\n}\n\nexport async function findIssue(title: string): Promise<Issue | null> {\n logger.debug(`findIssue(${title})`);\n\n /* istanbul ignore if */\n if (!config.has_issues) {\n logger.debug('Issues are disabled - cannot findIssue');\n return null;\n }\n const issues = await findOpenIssues(title);\n if (!issues.length) {\n return null;\n }\n const [issue] = issues;\n return {\n number: issue.id,\n body: issue.content?.raw,\n };\n}\n\nasync function closeIssue(issueNumber: number): Promise<void> {\n await bitbucketHttp.putJson(\n `/2.0/repositories/${config.repository}/issues/${issueNumber}`,\n {\n body: { state: 'closed' },\n },\n );\n}\n\nexport function massageMarkdown(input: string): string {\n // Remove any HTML we use\n return smartTruncate(input, maxBodyLength())\n .replace(\n 'you tick the rebase/retry checkbox',\n 'by renaming this PR to start with \"rebase!\"',\n )\n .replace(\n 'checking the rebase/retry box above',\n 'renaming the PR to start with \"rebase!\"',\n )\n .replace(regEx(/<\\/?summary>/g), '**')\n .replace(regEx(/<\\/?(details|blockquote)>/g), '')\n .replace(regEx(`\\n---\\n\\n.*?<!-- rebase-check -->.*?\\n`), '')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](../../pull-requests/')\n .replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), '');\n}\n\nexport function maxBodyLength(): number {\n return 50000;\n}\n\nexport async function ensureIssue({\n title,\n reuseTitle,\n body,\n}: EnsureIssueConfig): Promise<EnsureIssueResult | null> {\n logger.debug(`ensureIssue()`);\n /* istanbul ignore if */\n if (!config.has_issues) {\n logger.debug('Issues are disabled - cannot ensureIssue');\n logger.debug(`Failed to ensure Issue with title:${title}`);\n return null;\n }\n try {\n let issues = await findOpenIssues(title);\n const description = massageMarkdown(sanitize(body));\n\n if (!issues.length && reuseTitle) {\n issues = await findOpenIssues(reuseTitle);\n }\n if (issues.length) {\n // Close any duplicates\n for (const issue of issues.slice(1)) {\n await closeIssue(issue.id);\n }\n const [issue] = issues;\n\n if (\n issue.title !== title ||\n String(issue.content?.raw).trim() !== description.trim()\n ) {\n logger.debug('Issue updated');\n await bitbucketHttp.putJson(\n `/2.0/repositories/${config.repository}/issues/${issue.id}`,\n {\n body: {\n content: {\n raw: readOnlyIssueBody(description),\n markup: 'markdown',\n },\n },\n },\n );\n return 'updated';\n }\n } else {\n logger.info('Issue created');\n await bitbucketHttp.postJson(\n `/2.0/repositories/${config.repository}/issues`,\n {\n body: {\n title,\n content: {\n raw: readOnlyIssueBody(description),\n markup: 'markdown',\n },\n },\n },\n );\n return 'created';\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.message.startsWith('Repository has no issue tracker.')) {\n logger.debug(`Issues are disabled, so could not create issue: ${title}`);\n } else {\n logger.warn({ err }, 'Could not ensure issue');\n }\n }\n return null;\n}\n\n/* istanbul ignore next */\nexport async function getIssueList(): Promise<Issue[]> {\n logger.debug(`getIssueList()`);\n\n if (!config.has_issues) {\n logger.debug('Issues are disabled - cannot getIssueList');\n return [];\n }\n try {\n const filters = ['(state = \"new\" OR state = \"open\")'];\n if (renovateUserUuid) {\n filters.push(`reporter.uuid=\"${renovateUserUuid}\"`);\n }\n const filter = encodeURIComponent(filters.join(' AND '));\n const url = `/2.0/repositories/${config.repository}/issues?q=${filter}`;\n const res = await bitbucketHttp.getJsonUnchecked<{ values: Issue[] }>(url, {\n cacheProvider: repoCacheProvider,\n });\n return res.body.values || [];\n } catch (err) {\n logger.warn({ err }, 'Error finding issues');\n return [];\n }\n}\n\nexport async function ensureIssueClosing(title: string): Promise<void> {\n /* istanbul ignore if */\n if (!config.has_issues) {\n logger.debug('Issues are disabled - cannot ensureIssueClosing');\n return;\n }\n const issues = await findOpenIssues(title);\n for (const issue of issues) {\n await closeIssue(issue.id);\n }\n}\n\nexport function addAssignees(\n _prNr: number,\n _assignees: string[],\n): Promise<void> {\n // Bitbucket supports \"participants\" and \"reviewers\" so does not seem to have the concept of \"assignee\"\n logger.warn('Cannot add assignees');\n return Promise.resolve();\n}\n\nexport async function addReviewers(\n prId: number,\n reviewers: string[],\n): Promise<void> {\n logger.debug(`Adding reviewers '${reviewers.join(', ')}' to #${prId}`);\n\n // TODO #22198\n const { title } = (await getPr(prId))!;\n\n const body = {\n title,\n reviewers: reviewers.map((username: string) => {\n const isUUID =\n username.startsWith('{') &&\n username.endsWith('}') &&\n UUIDRegex.test(username.slice(1, -1));\n const key = isUUID ? 'uuid' : 'username';\n return {\n [key]: username,\n };\n }),\n };\n\n await bitbucketHttp.putJson(\n `/2.0/repositories/${config.repository}/pullrequests/${prId}`,\n {\n body,\n },\n );\n}\n\n/* istanbul ignore next */\nexport function deleteLabel(): never {\n throw new Error('deleteLabel not implemented');\n}\n\nexport function ensureComment({\n number,\n topic,\n content,\n}: EnsureCommentConfig): Promise<boolean> {\n // https://developer.atlassian.com/bitbucket/api/2/reference/search?q=pullrequest+comment\n return comments.ensureComment({\n config,\n number,\n topic,\n content: sanitize(content),\n });\n}\n\nexport function ensureCommentRemoval(\n deleteConfig: EnsureCommentRemovalConfig,\n): Promise<void> {\n return comments.ensureCommentRemoval(config, deleteConfig);\n}\n\nasync function sanitizeReviewers(\n reviewers: Account[],\n err: any,\n): Promise<Account[] | undefined> {\n if (err.statusCode === 400 && err.body?.error?.fields?.reviewers) {\n const sanitizedReviewers: Account[] = [];\n\n const MSG_AUTHOR_AND_REVIEWER =\n 'is the author and cannot be included as a reviewer.';\n const MSG_MALFORMED_REVIEWERS_LIST = 'Malformed reviewers list';\n const MSG_NOT_WORKSPACE_MEMBER =\n 'is not a member of this workspace and cannot be added to this pull request';\n\n for (const msg of err.body.error.fields.reviewers) {\n // Bitbucket returns a 400 if any of the PR reviewer accounts are now inactive (ie: disabled/suspended)\n if (msg === MSG_MALFORMED_REVIEWERS_LIST) {\n logger.debug(\n { err },\n 'PR contains reviewers that may be either inactive or no longer a member of this workspace. Will try setting only active reviewers',\n );\n\n // Validate that each previous PR reviewer account is still active\n for (const reviewer of reviewers) {\n const reviewerUser = (\n await bitbucketHttp.getJsonUnchecked<Account>(\n `/2.0/users/${reviewer.uuid}`,\n { memCache: true },\n )\n ).body;\n\n if (reviewerUser.account_status === 'active') {\n // There are cases where an active user may still not be a member of a workspace\n if (await isAccountMemberOfWorkspace(reviewer, config.repository)) {\n sanitizedReviewers.push(reviewer);\n }\n }\n }\n // Bitbucket returns a 400 if any of the PR reviewer accounts are no longer members of this workspace\n } else if (msg.endsWith(MSG_NOT_WORKSPACE_MEMBER)) {\n logger.debug(\n { err },\n 'PR contains reviewer accounts which are no longer member of this workspace. Will try setting only member reviewers',\n );\n\n // Validate that each previous PR reviewer account is still a member of this workspace\n for (const reviewer of reviewers) {\n if (await isAccountMemberOfWorkspace(reviewer, config.repository)) {\n sanitizedReviewers.push(reviewer);\n }\n }\n } else if (msg.endsWith(MSG_AUTHOR_AND_REVIEWER)) {\n logger.debug(\n { err },\n 'PR contains reviewer accounts which are also the author. Will try setting only non-author reviewers',\n );\n const author = msg.replace(MSG_AUTHOR_AND_REVIEWER, '').trim();\n for (const reviewer of reviewers) {\n if (reviewer.display_name !== author) {\n sanitizedReviewers.push(reviewer);\n }\n }\n } else {\n return undefined;\n }\n }\n\n return sanitizedReviewers;\n }\n\n return undefined;\n}\n\nasync function isAccountMemberOfWorkspace(\n reviewer: Account,\n repository: string,\n): Promise<boolean> {\n const workspace = repository.split('/')[0];\n\n try {\n await bitbucketHttp.get(\n `/2.0/workspaces/${workspace}/members/${reviewer.uuid}`,\n { memCache: true },\n );\n\n return true;\n } catch (err) {\n // HTTP 404: User cannot be found, or the user is not a member of this workspace.\n if (err.statusCode === 404) {\n logger.debug(\n { err },\n `User ${reviewer.display_name} is not a member of the workspace ${workspace}. Will be removed from the PR`,\n );\n\n return false;\n }\n throw err;\n }\n}\n\n// Creates PR and returns PR number\nexport async function createPr({\n sourceBranch,\n targetBranch,\n prTitle: title,\n prBody: description,\n platformPrOptions,\n}: CreatePRConfig): Promise<Pr> {\n // labels is not supported in Bitbucket: https://bitbucket.org/site/master/issues/11976/ability-to-add-labels-to-pull-requests-bb\n\n const base = targetBranch;\n\n logger.debug({ repository: config.repository, title, base }, 'Creating PR');\n\n let reviewers: Account[] = [];\n\n if (platformPrOptions?.bbUseDefaultReviewers) {\n const reviewersResponse = (\n await bitbucketHttp.getJsonUnchecked<PagedResult<EffectiveReviewer>>(\n `/2.0/repositories/${config.repository}/effective-default-reviewers`,\n {\n paginate: true,\n },\n )\n ).body;\n reviewers = reviewersResponse.values.map((reviewer: EffectiveReviewer) => ({\n uuid: reviewer.user.uuid,\n display_name: reviewer.user.display_name,\n }));\n }\n\n const body = {\n title,\n description: sanitize(description),\n source: {\n branch: {\n name: sourceBranch,\n },\n },\n destination: {\n branch: {\n name: base,\n },\n },\n close_source_branch: true,\n reviewers,\n };\n\n try {\n const prRes = (\n await bitbucketHttp.postJson<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests`,\n {\n body,\n },\n )\n ).body;\n const pr = utils.prInfo(prRes);\n await BitbucketPrCache.setPr(\n bitbucketHttp,\n config.repository,\n renovateUserUuid,\n pr,\n );\n if (platformPrOptions?.bbAutoResolvePrTasks) {\n await autoResolvePrTasks(pr);\n }\n return pr;\n } catch (err) /* istanbul ignore next */ {\n // Try sanitizing reviewers\n const sanitizedReviewers = await sanitizeReviewers(reviewers, err);\n\n if (sanitizedReviewers === undefined) {\n logger.warn({ err }, 'Error creating pull request');\n throw err;\n } else {\n const prRes = (\n await bitbucketHttp.postJson<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests`,\n {\n body: {\n ...body,\n reviewers: sanitizedReviewers,\n },\n },\n )\n ).body;\n const pr = utils.prInfo(prRes);\n await BitbucketPrCache.setPr(\n bitbucketHttp,\n config.repository,\n renovateUserUuid,\n pr,\n );\n if (platformPrOptions?.bbAutoResolvePrTasks) {\n await autoResolvePrTasks(pr);\n }\n return pr;\n }\n }\n}\n\nasync function autoResolvePrTasks(pr: Pr): Promise<void> {\n logger.debug(`Auto resolve PR tasks in #${pr.number}`);\n try {\n const unResolvedTasks = (\n await bitbucketHttp.getJson(\n `/2.0/repositories/${config.repository}/pullrequests/${pr.number}/tasks`,\n { paginate: true, pagelen: 100 },\n UnresolvedPrTasks,\n )\n ).body;\n\n logger.trace(\n {\n prId: pr.number,\n listTaskRes: unResolvedTasks,\n },\n 'List PR tasks',\n );\n\n for (const task of unResolvedTasks) {\n const res = await bitbucketHttp.putJson(\n `/2.0/repositories/${config.repository}/pullrequests/${pr.number}/tasks/${task.id}`,\n {\n body: {\n state: 'RESOLVED',\n content: {\n raw: task.content.raw,\n },\n },\n },\n );\n logger.trace(\n {\n prId: pr.number,\n updateTaskResponse: res,\n },\n 'Put PR tasks - mark resolved',\n );\n }\n } catch (err) {\n logger.warn({ prId: pr.number, err }, 'Error resolving PR tasks');\n }\n}\n\nexport async function updatePr({\n number: prNo,\n prTitle: title,\n prBody: description,\n state,\n targetBranch,\n}: UpdatePrConfig): Promise<void> {\n logger.debug(`updatePr(${prNo}, ${title}, body)`);\n // Updating a PR in Bitbucket will clear the reviewers if reviewers is not present\n const pr = (\n await bitbucketHttp.getJsonUnchecked<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}`,\n )\n ).body;\n\n let updatedPrRes: PrResponse;\n try {\n const body: any = {\n title,\n description: sanitize(description),\n reviewers: pr.reviewers,\n };\n if (targetBranch) {\n body.destination = {\n branch: {\n name: targetBranch,\n },\n };\n }\n\n updatedPrRes = (\n await bitbucketHttp.putJson<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}`,\n { body },\n )\n ).body;\n } catch (err) {\n // Try sanitizing reviewers\n const sanitizedReviewers = await sanitizeReviewers(pr.reviewers, err);\n\n if (sanitizedReviewers === undefined) {\n throw err;\n } else {\n updatedPrRes = (\n await bitbucketHttp.putJson<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}`,\n {\n body: {\n title,\n description: sanitize(description),\n reviewers: sanitizedReviewers,\n },\n },\n )\n ).body;\n }\n }\n\n if (state === 'closed' && pr) {\n await bitbucketHttp.postJson(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}/decline`,\n );\n }\n\n // update pr cache\n await BitbucketPrCache.setPr(\n bitbucketHttp,\n config.repository,\n renovateUserUuid,\n utils.prInfo({ ...updatedPrRes, ...(state && { state }) }),\n );\n}\n\nexport async function mergePr({\n branchName,\n id: prNo,\n strategy: mergeStrategy,\n}: MergePRConfig): Promise<boolean> {\n logger.debug(`mergePr(${prNo}, ${branchName}, ${mergeStrategy})`);\n\n // Bitbucket Cloud does not support a rebase-alike; https://jira.atlassian.com/browse/BCLOUD-16610\n if (mergeStrategy === 'rebase') {\n logger.warn('Bitbucket Cloud does not support a \"rebase\" strategy.');\n return false;\n }\n\n try {\n await bitbucketHttp.postJson(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}/merge`,\n {\n body: mergeBodyTransformer(mergeStrategy),\n },\n );\n logger.debug('Automerging succeeded');\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, `PR merge error`);\n logger.info({ pr: prNo }, 'PR automerge failed');\n return false;\n }\n return true;\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/bitbucket/index.ts"],"names":[],"mappings":"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","sourcesContent":["import URL from 'node:url';\nimport is from '@sindresorhus/is';\nimport { REPOSITORY_NOT_FOUND } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { parseJson } from '../../../util/common';\nimport * as git from '../../../util/git';\nimport * as hostRules from '../../../util/host-rules';\nimport type { BitbucketHttpOptions } from '../../../util/http/bitbucket';\nimport { BitbucketHttp, setBaseUrl } from '../../../util/http/bitbucket';\nimport { memCacheProvider } from '../../../util/http/cache/memory-http-cache-provider';\nimport { repoCacheProvider } from '../../../util/http/cache/repository-http-cache-provider';\nimport type { HttpOptions } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { sanitize } from '../../../util/sanitize';\nimport { UUIDRegex, matchRegexOrGlobList } from '../../../util/string-match';\nimport type {\n AutodiscoverConfig,\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfig,\n EnsureIssueConfig,\n EnsureIssueResult,\n FindPRConfig,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\nimport { smartTruncate } from '../utils/pr-body';\nimport { readOnlyIssueBody } from '../utils/read-only-issue-body';\nimport * as comments from './comments';\nimport { BitbucketPrCache } from './pr-cache';\nimport { RepoInfo, Repositories, UnresolvedPrTasks } from './schema';\nimport type {\n Account,\n BitbucketStatus,\n BranchResponse,\n Config,\n EffectiveReviewer,\n PagedResult,\n PrResponse,\n RepoBranchingModel,\n} from './types';\nimport * as utils from './utils';\nimport { mergeBodyTransformer } from './utils';\n\nexport const id = 'bitbucket';\n\nconst bitbucketHttp = new BitbucketHttp();\n\nconst BITBUCKET_PROD_ENDPOINT = 'https://api.bitbucket.org/';\n\nlet config: Config = {} as any;\n\nexport function resetPlatform(): void {\n config = {} as any;\n renovateUserUuid = null;\n}\n\nconst defaults = { endpoint: BITBUCKET_PROD_ENDPOINT };\n\nconst pathSeparator = '/';\n\nlet renovateUserUuid: string | null = null;\n\nexport async function initPlatform({\n endpoint,\n username,\n password,\n token,\n}: PlatformParams): Promise<PlatformResult> {\n if (!(username && password) && !token) {\n throw new Error(\n 'Init: You must configure either a Bitbucket token or username and password',\n );\n }\n if (endpoint && endpoint !== BITBUCKET_PROD_ENDPOINT) {\n logger.warn(\n `Init: Bitbucket Cloud endpoint should generally be ${BITBUCKET_PROD_ENDPOINT} but is being configured to a different value. Did you mean to use Bitbucket Server?`,\n );\n defaults.endpoint = endpoint;\n }\n setBaseUrl(defaults.endpoint);\n renovateUserUuid = null;\n const options: HttpOptions = { memCache: false };\n if (token) {\n options.token = token;\n } else {\n options.username = username;\n options.password = password;\n }\n try {\n const { uuid } = (\n await bitbucketHttp.getJsonUnchecked<Account>('/2.0/user', options)\n ).body;\n renovateUserUuid = uuid;\n } catch (err) {\n if (\n err.statusCode === 403 &&\n err.body?.error?.detail?.required?.includes('account')\n ) {\n logger.warn(`Bitbucket: missing 'account' scope for password`);\n } else {\n logger.debug({ err }, 'Unknown error fetching Bitbucket user identity');\n }\n }\n // TODO: Add a connection check that endpoint/username/password combination are valid (#9594)\n const platformConfig: PlatformResult = {\n endpoint: endpoint ?? BITBUCKET_PROD_ENDPOINT,\n };\n return Promise.resolve(platformConfig);\n}\n\n// Get all repositories that the user has access to\nexport async function getRepos(config: AutodiscoverConfig): Promise<string[]> {\n logger.debug('Autodiscovering Bitbucket Cloud repositories');\n try {\n let { body: repos } = await bitbucketHttp.getJson(\n `/2.0/repositories/?role=contributor`,\n { paginate: true },\n Repositories,\n );\n\n // if autodiscoverProjects is configured\n // filter the repos list\n const autodiscoverProjects = config.projects;\n if (is.nonEmptyArray(autodiscoverProjects)) {\n logger.debug(\n { autodiscoverProjects: config.projects },\n 'Applying autodiscoverProjects filter',\n );\n repos = repos.filter(\n (repo) =>\n repo.projectName &&\n matchRegexOrGlobList(repo.projectName, autodiscoverProjects),\n );\n }\n\n return repos.map(({ owner, name }) => `${owner}/${name}`);\n } catch (err) /* v8 ignore start */ {\n logger.error({ err }, `bitbucket getRepos error`);\n throw err;\n } /* v8 ignore stop */\n}\n\nexport async function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n // See: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D/src/%7Bcommit%7D/%7Bpath%7D\n const repo = repoName ?? config.repository;\n const path = fileName;\n\n let finalBranchOrTag = branchOrTag;\n if (branchOrTag?.includes(pathSeparator)) {\n // Branch name contains slash, so we have to replace branch name with SHA1 of the head commit; otherwise the API will not work.\n finalBranchOrTag = await getBranchCommit(branchOrTag);\n }\n\n const url =\n `/2.0/repositories/${repo}/src/` +\n (finalBranchOrTag ?? `HEAD`) +\n `/${path}`;\n const res = await bitbucketHttp.getText(url, {\n cacheProvider: repoCacheProvider,\n });\n return res.body;\n}\n\nexport async function getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<any> {\n // TODO #22198\n const raw = await getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n}\n\n// Initialize bitbucket by getting base branch and SHA\nexport async function initRepo({\n repository,\n cloneSubmodules,\n cloneSubmodulesFilter,\n ignorePrAuthor,\n bbUseDevelopmentBranch,\n}: RepoParams): Promise<RepoResult> {\n logger.debug(`initRepo(\"${repository}\")`);\n const opts = hostRules.find({\n hostType: 'bitbucket',\n url: defaults.endpoint,\n });\n config = {\n repository,\n ignorePrAuthor,\n } as Config;\n let info: RepoInfo;\n let mainBranch: string;\n try {\n const { body: repoInfo } = await bitbucketHttp.getJson(\n `/2.0/repositories/${repository}`,\n RepoInfo,\n );\n info = repoInfo;\n\n mainBranch = info.mainbranch;\n\n if (bbUseDevelopmentBranch) {\n // Fetch Bitbucket development branch\n const developmentBranch = (\n await bitbucketHttp.getJsonUnchecked<RepoBranchingModel>(\n `/2.0/repositories/${repository}/branching-model`,\n )\n ).body.development?.branch?.name;\n\n if (developmentBranch) {\n mainBranch = developmentBranch;\n }\n }\n\n config.defaultBranch = mainBranch;\n\n config = {\n ...config,\n owner: info.owner,\n mergeMethod: info.mergeMethod,\n has_issues: info.has_issues,\n is_private: info.is_private,\n };\n\n logger.debug(`${repository} owner = ${config.owner}`);\n } catch (err) /* v8 ignore start */ {\n if (err.statusCode === 404) {\n throw new Error(REPOSITORY_NOT_FOUND);\n }\n logger.debug({ err }, 'Unknown Bitbucket initRepo error');\n throw err;\n } /* v8 ignore stop */\n\n const { hostname } = URL.parse(defaults.endpoint);\n\n // Converts API hostnames to their respective HTTP git hosts:\n // `api.bitbucket.org` to `bitbucket.org`\n // `api-staging.<host>` to `staging.<host>`\n // TODO #22198\n const hostnameWithoutApiPrefix = regEx(/api[.|-](.+)/).exec(hostname!)?.[1];\n\n const auth = opts.token\n ? `x-token-auth:${opts.token}`\n : `${opts.username!}:${opts.password!}`;\n const url = git.getUrl({\n protocol: 'https',\n auth,\n hostname: hostnameWithoutApiPrefix,\n repository,\n });\n\n await git.initRepo({\n ...config,\n url,\n cloneSubmodules,\n cloneSubmodulesFilter,\n });\n const repoConfig: RepoResult = {\n defaultBranch: mainBranch,\n isFork: info.isFork,\n repoFingerprint: repoFingerprint(info.uuid, defaults.endpoint),\n };\n return repoConfig;\n}\n\n/* v8 ignore start */\nfunction matchesState(state: string, desiredState: string): boolean {\n if (desiredState === 'all') {\n return true;\n }\n if (desiredState.startsWith('!')) {\n return state !== desiredState.substring(1);\n }\n return state === desiredState;\n} /* v8 ignore stop */\n\nexport async function getPrList(): Promise<Pr[]> {\n logger.trace('getPrList()');\n return await BitbucketPrCache.getPrs(\n bitbucketHttp,\n config.repository,\n renovateUserUuid,\n );\n}\n\nexport async function findPr({\n branchName,\n prTitle,\n state = 'all',\n includeOtherAuthors,\n}: FindPRConfig): Promise<Pr | null> {\n logger.debug(`findPr(${branchName}, ${prTitle}, ${state})`);\n\n if (includeOtherAuthors) {\n // PR might have been created by anyone, so don't use the cached Renovate PR list\n const prs = (\n await bitbucketHttp.getJsonUnchecked<PagedResult<PrResponse>>(\n `/2.0/repositories/${config.repository}/pullrequests?q=source.branch.name=\"${branchName}\"&state=open`,\n { cacheProvider: memCacheProvider },\n )\n ).body.values;\n\n if (prs.length === 0) {\n logger.debug(`No PR found for branch ${branchName}`);\n return null;\n }\n\n return utils.prInfo(prs[0]);\n }\n\n const prList = await getPrList();\n const pr = prList.find(\n (p) =>\n p.sourceBranch === branchName &&\n (!prTitle || p.title.toUpperCase() === prTitle.toUpperCase()) &&\n matchesState(p.state, state),\n );\n\n if (!pr) {\n return null;\n }\n logger.debug(`Found PR #${pr.number}`);\n\n /**\n * Bitbucket doesn't support renaming or reopening declined PRs.\n * Instead, we have to use comment-driven signals.\n */\n if (pr.state === 'closed') {\n const reopenComments = await comments.reopenComments(config, pr.number);\n\n if (is.nonEmptyArray(reopenComments)) {\n if (config.is_private) {\n // Only workspace members could have commented on a private repository\n logger.debug(\n `Found '${comments.REOPEN_PR_COMMENT_KEYWORD}' comment from workspace member. Renovate will reopen PR ${pr.number} as a new PR`,\n );\n return null;\n }\n\n for (const comment of reopenComments) {\n if (await isAccountMemberOfWorkspace(comment.user, config.repository)) {\n logger.debug(\n `Found '${comments.REOPEN_PR_COMMENT_KEYWORD}' comment from workspace member. Renovate will reopen PR ${pr.number} as a new PR`,\n );\n return null;\n }\n }\n }\n }\n\n return pr;\n}\n\n// Gets details for a PR\nexport async function getPr(prNo: number): Promise<Pr | null> {\n const pr = (\n await bitbucketHttp.getJsonUnchecked<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}`,\n { cacheProvider: memCacheProvider },\n )\n ).body;\n\n /* v8 ignore start */\n if (!pr) {\n return null;\n } /* v8 ignore stop */\n\n const res: Pr = {\n ...utils.prInfo(pr),\n };\n\n if (is.nonEmptyArray(pr.reviewers)) {\n res.reviewers = pr.reviewers\n .map(({ uuid }) => uuid)\n .filter(is.nonEmptyString);\n }\n\n return res;\n}\n\nconst escapeHash = (input: string): string =>\n input?.replace(regEx(/#/g), '%23');\n\n// Return the commit SHA for a branch\nasync function getBranchCommit(\n branchName: string,\n): Promise<string | undefined> {\n try {\n const branch = (\n await bitbucketHttp.getJsonUnchecked<BranchResponse>(\n `/2.0/repositories/${config.repository}/refs/branches/${escapeHash(\n branchName,\n )}`,\n { cacheProvider: memCacheProvider },\n )\n ).body;\n return branch.target.hash;\n } catch (err) /* v8 ignore start */ {\n logger.debug({ err }, `getBranchCommit('${branchName}') failed'`);\n return undefined;\n } /* v8 ignore stop */\n}\n\n// Returns the Pull Request for a branch. Null if not exists.\nexport async function getBranchPr(branchName: string): Promise<Pr | null> {\n logger.debug(`getBranchPr(${branchName})`);\n const existingPr = await findPr({\n branchName,\n state: 'open',\n });\n return existingPr ? getPr(existingPr.number) : null;\n}\n\nasync function getStatus(\n branchName: string,\n memCache = true,\n): Promise<BitbucketStatus[]> {\n const sha = await getBranchCommit(branchName);\n const opts: BitbucketHttpOptions = { paginate: true };\n /* v8 ignore start: temporary code */\n if (memCache) {\n opts.cacheProvider = memCacheProvider;\n } else {\n opts.memCache = false;\n } /* v8 ignore stop */\n return (\n await bitbucketHttp.getJsonUnchecked<PagedResult<BitbucketStatus>>(\n `/2.0/repositories/${config.repository}/commit/${sha!}/statuses`,\n opts,\n )\n ).body.values;\n}\n// Returns the combined status for a branch.\nexport async function getBranchStatus(\n branchName: string,\n internalChecksAsSuccess: boolean,\n): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n const statuses = await getStatus(branchName);\n logger.debug({ branch: branchName, statuses }, 'branch status check result');\n if (!statuses.length) {\n logger.debug('empty branch status check result = returning \"pending\"');\n return 'yellow';\n }\n const noOfFailures = statuses.filter(\n (status: { state: string }) =>\n status.state === 'FAILED' || status.state === 'STOPPED',\n ).length;\n if (noOfFailures) {\n return 'red';\n }\n const noOfPending = statuses.filter(\n (status: { state: string }) => status.state === 'INPROGRESS',\n ).length;\n if (noOfPending) {\n return 'yellow';\n }\n if (\n !internalChecksAsSuccess &&\n statuses.every(\n (status) =>\n status.state === 'SUCCESSFUL' && status.key?.startsWith('renovate/'),\n )\n ) {\n logger.debug(\n 'Successful checks are all internal renovate/ checks, so returning \"pending\" branch status',\n );\n return 'yellow';\n }\n return 'green';\n}\n\nconst bbToRenovateStatusMapping: Record<string, BranchStatus> = {\n SUCCESSFUL: 'green',\n INPROGRESS: 'yellow',\n FAILED: 'red',\n};\n\nexport async function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n const statuses = await getStatus(branchName);\n const bbState = statuses.find((status) => status.key === context)?.state;\n // TODO #22198\n return bbToRenovateStatusMapping[bbState!] || null;\n}\n\nexport async function setBranchStatus({\n branchName,\n context,\n description,\n state,\n url: targetUrl,\n}: BranchStatusConfig): Promise<void> {\n const sha = await getBranchCommit(branchName);\n\n // TargetUrl can not be empty so default to bitbucket\n /* v8 ignore next */\n const url = targetUrl ?? 'https://bitbucket.org';\n\n const body = {\n name: context,\n state: utils.buildStates[state],\n key: context,\n description,\n url,\n };\n\n await bitbucketHttp.postJson(\n `/2.0/repositories/${config.repository}/commit/${sha}/statuses/build`,\n { body },\n );\n // update status cache\n await getStatus(branchName, false);\n}\n\ninterface BbIssue {\n id: number;\n title: string;\n content?: { raw: string };\n}\n\nasync function findOpenIssues(title: string): Promise<BbIssue[]> {\n try {\n const filters = [\n `title=${JSON.stringify(title)}`,\n '(state = \"new\" OR state = \"open\")',\n ];\n if (renovateUserUuid) {\n filters.push(`reporter.uuid=\"${renovateUserUuid}\"`);\n }\n const filter = encodeURIComponent(filters.join(' AND '));\n return (\n (\n await bitbucketHttp.getJsonUnchecked<{ values: BbIssue[] }>(\n `/2.0/repositories/${config.repository}/issues?q=${filter}`,\n { cacheProvider: memCacheProvider },\n )\n ).body.values /* v8 ignore start */ || [] /* v8 ignore stop */\n );\n } catch (err) /* v8 ignore start */ {\n logger.warn({ err }, 'Error finding issues');\n return [];\n } /* v8 ignore stop */\n}\n\nexport async function findIssue(title: string): Promise<Issue | null> {\n logger.debug(`findIssue(${title})`);\n\n /* v8 ignore start */\n if (!config.has_issues) {\n logger.debug('Issues are disabled - cannot findIssue');\n return null;\n } /* v8 ignore stop */\n const issues = await findOpenIssues(title);\n if (!issues.length) {\n return null;\n }\n const [issue] = issues;\n return {\n number: issue.id,\n body: issue.content?.raw,\n };\n}\n\nasync function closeIssue(issueNumber: number): Promise<void> {\n await bitbucketHttp.putJson(\n `/2.0/repositories/${config.repository}/issues/${issueNumber}`,\n {\n body: { state: 'closed' },\n },\n );\n}\n\nexport function massageMarkdown(input: string): string {\n // Remove any HTML we use\n return smartTruncate(input, maxBodyLength())\n .replace(\n 'you tick the rebase/retry checkbox',\n 'by renaming this PR to start with \"rebase!\"',\n )\n .replace(\n 'checking the rebase/retry box above',\n 'renaming the PR to start with \"rebase!\"',\n )\n .replace(regEx(/<\\/?summary>/g), '**')\n .replace(regEx(/<\\/?(details|blockquote)>/g), '')\n .replace(regEx(`\\n---\\n\\n.*?<!-- rebase-check -->.*?\\n`), '')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](../../pull-requests/')\n .replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), '');\n}\n\nexport function maxBodyLength(): number {\n return 50000;\n}\n\nexport async function ensureIssue({\n title,\n reuseTitle,\n body,\n}: EnsureIssueConfig): Promise<EnsureIssueResult | null> {\n logger.debug(`ensureIssue()`);\n /* v8 ignore start */\n if (!config.has_issues) {\n logger.debug('Issues are disabled - cannot ensureIssue');\n logger.debug(`Failed to ensure Issue with title:${title}`);\n return null;\n } /* v8 ignore stop */\n try {\n let issues = await findOpenIssues(title);\n const description = massageMarkdown(sanitize(body));\n\n if (!issues.length && reuseTitle) {\n issues = await findOpenIssues(reuseTitle);\n }\n if (issues.length) {\n // Close any duplicates\n for (const issue of issues.slice(1)) {\n await closeIssue(issue.id);\n }\n const [issue] = issues;\n\n if (\n issue.title !== title ||\n String(issue.content?.raw).trim() !== description.trim()\n ) {\n logger.debug('Issue updated');\n await bitbucketHttp.putJson(\n `/2.0/repositories/${config.repository}/issues/${issue.id}`,\n {\n body: {\n content: {\n raw: readOnlyIssueBody(description),\n markup: 'markdown',\n },\n },\n },\n );\n return 'updated';\n }\n } else {\n logger.info('Issue created');\n await bitbucketHttp.postJson(\n `/2.0/repositories/${config.repository}/issues`,\n {\n body: {\n title,\n content: {\n raw: readOnlyIssueBody(description),\n markup: 'markdown',\n },\n },\n },\n );\n return 'created';\n }\n } catch (err) /* v8 ignore start */ {\n if (err.message.startsWith('Repository has no issue tracker.')) {\n logger.debug(`Issues are disabled, so could not create issue: ${title}`);\n } else {\n logger.warn({ err }, 'Could not ensure issue');\n }\n } /* v8 ignore stop */\n return null;\n}\n\n/* v8 ignore start */\nexport async function getIssueList(): Promise<Issue[]> {\n logger.debug(`getIssueList()`);\n\n if (!config.has_issues) {\n logger.debug('Issues are disabled - cannot getIssueList');\n return [];\n }\n try {\n const filters = ['(state = \"new\" OR state = \"open\")'];\n if (renovateUserUuid) {\n filters.push(`reporter.uuid=\"${renovateUserUuid}\"`);\n }\n const filter = encodeURIComponent(filters.join(' AND '));\n const url = `/2.0/repositories/${config.repository}/issues?q=${filter}`;\n const res = await bitbucketHttp.getJsonUnchecked<{ values: Issue[] }>(url, {\n cacheProvider: repoCacheProvider,\n });\n return res.body.values || [];\n } catch (err) {\n logger.warn({ err }, 'Error finding issues');\n return [];\n }\n} /* v8 ignore stop */\n\nexport async function ensureIssueClosing(title: string): Promise<void> {\n /* v8 ignore start */\n if (!config.has_issues) {\n logger.debug('Issues are disabled - cannot ensureIssueClosing');\n return;\n } /* v8 ignore stop */\n const issues = await findOpenIssues(title);\n for (const issue of issues) {\n await closeIssue(issue.id);\n }\n}\n\nexport function addAssignees(\n _prNr: number,\n _assignees: string[],\n): Promise<void> {\n // Bitbucket supports \"participants\" and \"reviewers\" so does not seem to have the concept of \"assignee\"\n logger.warn('Cannot add assignees');\n return Promise.resolve();\n}\n\nexport async function addReviewers(\n prId: number,\n reviewers: string[],\n): Promise<void> {\n logger.debug(`Adding reviewers '${reviewers.join(', ')}' to #${prId}`);\n\n // TODO #22198\n const { title } = (await getPr(prId))!;\n\n const body = {\n title,\n reviewers: reviewers.map((username: string) => {\n const isUUID =\n username.startsWith('{') &&\n username.endsWith('}') &&\n UUIDRegex.test(username.slice(1, -1));\n const key = isUUID ? 'uuid' : 'username';\n return {\n [key]: username,\n };\n }),\n };\n\n await bitbucketHttp.putJson(\n `/2.0/repositories/${config.repository}/pullrequests/${prId}`,\n {\n body,\n },\n );\n}\n\n/* v8 ignore start */\nexport function deleteLabel(): never {\n throw new Error('deleteLabel not implemented');\n} /* v8 ignore stop */\n\nexport function ensureComment({\n number,\n topic,\n content,\n}: EnsureCommentConfig): Promise<boolean> {\n // https://developer.atlassian.com/bitbucket/api/2/reference/search?q=pullrequest+comment\n return comments.ensureComment({\n config,\n number,\n topic,\n content: sanitize(content),\n });\n}\n\nexport function ensureCommentRemoval(\n deleteConfig: EnsureCommentRemovalConfig,\n): Promise<void> {\n return comments.ensureCommentRemoval(config, deleteConfig);\n}\n\nasync function sanitizeReviewers(\n reviewers: Account[],\n err: any,\n): Promise<Account[] | undefined> {\n if (err.statusCode === 400 && err.body?.error?.fields?.reviewers) {\n const sanitizedReviewers: Account[] = [];\n\n const MSG_AUTHOR_AND_REVIEWER =\n 'is the author and cannot be included as a reviewer.';\n const MSG_MALFORMED_REVIEWERS_LIST = 'Malformed reviewers list';\n const MSG_NOT_WORKSPACE_MEMBER =\n 'is not a member of this workspace and cannot be added to this pull request';\n\n for (const msg of err.body.error.fields.reviewers) {\n // Bitbucket returns a 400 if any of the PR reviewer accounts are now inactive (ie: disabled/suspended)\n if (msg === MSG_MALFORMED_REVIEWERS_LIST) {\n logger.debug(\n { err },\n 'PR contains reviewers that may be either inactive or no longer a member of this workspace. Will try setting only active reviewers',\n );\n\n // Validate that each previous PR reviewer account is still active\n for (const reviewer of reviewers) {\n const reviewerUser = (\n await bitbucketHttp.getJsonUnchecked<Account>(\n `/2.0/users/${reviewer.uuid}`,\n { cacheProvider: memCacheProvider },\n )\n ).body;\n\n if (reviewerUser.account_status === 'active') {\n // There are cases where an active user may still not be a member of a workspace\n if (await isAccountMemberOfWorkspace(reviewer, config.repository)) {\n sanitizedReviewers.push(reviewer);\n }\n }\n }\n // Bitbucket returns a 400 if any of the PR reviewer accounts are no longer members of this workspace\n } else if (msg.endsWith(MSG_NOT_WORKSPACE_MEMBER)) {\n logger.debug(\n { err },\n 'PR contains reviewer accounts which are no longer member of this workspace. Will try setting only member reviewers',\n );\n\n // Validate that each previous PR reviewer account is still a member of this workspace\n for (const reviewer of reviewers) {\n if (await isAccountMemberOfWorkspace(reviewer, config.repository)) {\n sanitizedReviewers.push(reviewer);\n }\n }\n } else if (msg.endsWith(MSG_AUTHOR_AND_REVIEWER)) {\n logger.debug(\n { err },\n 'PR contains reviewer accounts which are also the author. Will try setting only non-author reviewers',\n );\n const author = msg.replace(MSG_AUTHOR_AND_REVIEWER, '').trim();\n for (const reviewer of reviewers) {\n if (reviewer.display_name !== author) {\n sanitizedReviewers.push(reviewer);\n }\n }\n } else {\n return undefined;\n }\n }\n\n return sanitizedReviewers;\n }\n\n return undefined;\n}\n\nasync function isAccountMemberOfWorkspace(\n reviewer: Account,\n repository: string,\n): Promise<boolean> {\n const workspace = repository.split('/')[0];\n\n try {\n await bitbucketHttp.get(\n `/2.0/workspaces/${workspace}/members/${reviewer.uuid}`,\n { cacheProvider: memCacheProvider },\n );\n\n return true;\n } catch (err) {\n // HTTP 404: User cannot be found, or the user is not a member of this workspace.\n if (err.statusCode === 404) {\n logger.debug(\n { err },\n `User ${reviewer.display_name} is not a member of the workspace ${workspace}. Will be removed from the PR`,\n );\n\n return false;\n }\n throw err;\n }\n}\n\n// Creates PR and returns PR number\nexport async function createPr({\n sourceBranch,\n targetBranch,\n prTitle: title,\n prBody: description,\n platformPrOptions,\n}: CreatePRConfig): Promise<Pr> {\n // labels is not supported in Bitbucket: https://bitbucket.org/site/master/issues/11976/ability-to-add-labels-to-pull-requests-bb\n\n const base = targetBranch;\n\n logger.debug({ repository: config.repository, title, base }, 'Creating PR');\n\n let reviewers: Account[] = [];\n\n if (platformPrOptions?.bbUseDefaultReviewers) {\n const reviewersResponse = (\n await bitbucketHttp.getJsonUnchecked<PagedResult<EffectiveReviewer>>(\n `/2.0/repositories/${config.repository}/effective-default-reviewers`,\n {\n paginate: true,\n cacheProvider: memCacheProvider,\n },\n )\n ).body;\n reviewers = reviewersResponse.values.map((reviewer: EffectiveReviewer) => ({\n uuid: reviewer.user.uuid,\n display_name: reviewer.user.display_name,\n }));\n }\n\n const body = {\n title,\n description: sanitize(description),\n source: {\n branch: {\n name: sourceBranch,\n },\n },\n destination: {\n branch: {\n name: base,\n },\n },\n close_source_branch: true,\n reviewers,\n };\n\n try {\n const prRes = (\n await bitbucketHttp.postJson<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests`,\n {\n body,\n },\n )\n ).body;\n const pr = utils.prInfo(prRes);\n await BitbucketPrCache.setPr(\n bitbucketHttp,\n config.repository,\n renovateUserUuid,\n pr,\n );\n if (platformPrOptions?.bbAutoResolvePrTasks) {\n await autoResolvePrTasks(pr);\n }\n return pr;\n } catch (err) /* v8 ignore start */ {\n // Try sanitizing reviewers\n const sanitizedReviewers = await sanitizeReviewers(reviewers, err);\n\n if (sanitizedReviewers === undefined) {\n logger.warn({ err }, 'Error creating pull request');\n throw err;\n } else {\n const prRes = (\n await bitbucketHttp.postJson<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests`,\n {\n body: {\n ...body,\n reviewers: sanitizedReviewers,\n },\n },\n )\n ).body;\n const pr = utils.prInfo(prRes);\n await BitbucketPrCache.setPr(\n bitbucketHttp,\n config.repository,\n renovateUserUuid,\n pr,\n );\n if (platformPrOptions?.bbAutoResolvePrTasks) {\n await autoResolvePrTasks(pr);\n }\n return pr;\n }\n } /* v8 ignore stop */\n}\n\nasync function autoResolvePrTasks(pr: Pr): Promise<void> {\n logger.debug(`Auto resolve PR tasks in #${pr.number}`);\n try {\n const unResolvedTasks = (\n await bitbucketHttp.getJson(\n `/2.0/repositories/${config.repository}/pullrequests/${pr.number}/tasks`,\n { paginate: true, pagelen: 100 },\n UnresolvedPrTasks,\n )\n ).body;\n\n logger.trace(\n {\n prId: pr.number,\n listTaskRes: unResolvedTasks,\n },\n 'List PR tasks',\n );\n\n for (const task of unResolvedTasks) {\n const res = await bitbucketHttp.putJson(\n `/2.0/repositories/${config.repository}/pullrequests/${pr.number}/tasks/${task.id}`,\n {\n body: {\n state: 'RESOLVED',\n content: {\n raw: task.content.raw,\n },\n },\n },\n );\n logger.trace(\n {\n prId: pr.number,\n updateTaskResponse: res,\n },\n 'Put PR tasks - mark resolved',\n );\n }\n } catch (err) {\n logger.warn({ prId: pr.number, err }, 'Error resolving PR tasks');\n }\n}\n\nexport async function updatePr({\n number: prNo,\n prTitle: title,\n prBody: description,\n state,\n targetBranch,\n}: UpdatePrConfig): Promise<void> {\n logger.debug(`updatePr(${prNo}, ${title}, body)`);\n // Updating a PR in Bitbucket will clear the reviewers if reviewers is not present\n const pr = (\n await bitbucketHttp.getJsonUnchecked<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}`,\n )\n ).body;\n\n let updatedPrRes: PrResponse;\n try {\n const body: any = {\n title,\n description: sanitize(description),\n reviewers: pr.reviewers,\n };\n if (targetBranch) {\n body.destination = {\n branch: {\n name: targetBranch,\n },\n };\n }\n\n updatedPrRes = (\n await bitbucketHttp.putJson<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}`,\n { body },\n )\n ).body;\n } catch (err) {\n // Try sanitizing reviewers\n const sanitizedReviewers = await sanitizeReviewers(pr.reviewers, err);\n\n if (sanitizedReviewers === undefined) {\n throw err;\n } else {\n updatedPrRes = (\n await bitbucketHttp.putJson<PrResponse>(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}`,\n {\n body: {\n title,\n description: sanitize(description),\n reviewers: sanitizedReviewers,\n },\n },\n )\n ).body;\n }\n }\n\n if (state === 'closed' && pr) {\n await bitbucketHttp.postJson(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}/decline`,\n );\n }\n\n // update pr cache\n await BitbucketPrCache.setPr(\n bitbucketHttp,\n config.repository,\n renovateUserUuid,\n utils.prInfo({ ...updatedPrRes, ...(state && { state }) }),\n );\n}\n\nexport async function mergePr({\n branchName,\n id: prNo,\n strategy: mergeStrategy,\n}: MergePRConfig): Promise<boolean> {\n logger.debug(`mergePr(${prNo}, ${branchName}, ${mergeStrategy})`);\n\n // Bitbucket Cloud does not support a rebase-alike; https://jira.atlassian.com/browse/BCLOUD-16610\n if (mergeStrategy === 'rebase') {\n logger.warn('Bitbucket Cloud does not support a \"rebase\" strategy.');\n return false;\n }\n\n try {\n await bitbucketHttp.postJson(\n `/2.0/repositories/${config.repository}/pullrequests/${prNo}/merge`,\n {\n body: mergeBodyTransformer(mergeStrategy),\n },\n );\n logger.debug('Automerging succeeded');\n } catch (err) /* v8 ignore start */ {\n logger.debug({ err }, `PR merge error`);\n logger.info({ pr: prNo }, 'PR automerge failed');\n return false;\n } /* v8 ignore stop */\n return true;\n}\n"]}
|