renovate 41.0.0-next.21 → 41.0.0-next.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/decrypt.js +5 -3
- package/dist/config/decrypt.js.map +1 -1
- package/dist/config/options/index.js +45 -3
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/github/index.js +2 -2
- package/dist/config/presets/github/index.js.map +1 -1
- package/dist/config/presets/internal/group.js +21 -0
- package/dist/config/presets/internal/group.js.map +1 -1
- package/dist/config/presets/internal/workarounds.js +11 -0
- package/dist/config/presets/internal/workarounds.js.map +1 -1
- package/dist/config/secrets.d.ts +2 -0
- package/dist/config/secrets.js +10 -77
- package/dist/config/secrets.js.map +1 -1
- package/dist/config/types.d.ts +9 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config-validator.js +4 -2
- package/dist/config-validator.js.map +1 -1
- package/dist/data/monorepo.json +10 -1
- package/dist/data-files.generated.d.ts +1 -1
- package/dist/data-files.generated.js +2 -1
- package/dist/data-files.generated.js.map +1 -1
- package/dist/instrumentation/index.js +5 -3
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/instrumentation/reporting.d.ts +2 -2
- package/dist/instrumentation/reporting.js +3 -7
- package/dist/instrumentation/reporting.js.map +1 -1
- package/dist/instrumentation/types.d.ts +11 -5
- package/dist/instrumentation/types.js.map +1 -1
- package/dist/instrumentation/utils.js +3 -2
- package/dist/instrumentation/utils.js.map +1 -1
- package/dist/logger/once.js +2 -0
- package/dist/logger/once.js.map +1 -1
- package/dist/modules/datasource/aws-eks-addon/schema.d.ts +14 -38
- package/dist/modules/datasource/aws-eks-addon/schema.js +11 -22
- package/dist/modules/datasource/aws-eks-addon/schema.js.map +1 -1
- package/dist/modules/datasource/cdnjs/index.js +2 -1
- package/dist/modules/datasource/cdnjs/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js +7 -2
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/docker/ecr.js +2 -2
- package/dist/modules/datasource/docker/ecr.js.map +1 -1
- package/dist/modules/datasource/docker/index.js +26 -9
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/docker/schema.d.ts +9 -87
- package/dist/modules/datasource/docker/schema.js +1 -1
- package/dist/modules/datasource/docker/schema.js.map +1 -1
- package/dist/modules/datasource/git-refs/base.js +2 -6
- package/dist/modules/datasource/git-refs/base.js.map +1 -1
- package/dist/modules/datasource/go/goproxy-parser.js +6 -2
- package/dist/modules/datasource/go/goproxy-parser.js.map +1 -1
- package/dist/modules/datasource/go/index.js +4 -2
- package/dist/modules/datasource/go/index.js.map +1 -1
- package/dist/modules/datasource/go/releases-goproxy.js +3 -2
- package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
- package/dist/modules/datasource/index.js +1 -1
- package/dist/modules/datasource/index.js.map +1 -1
- package/dist/modules/datasource/maven/index.js +5 -19
- package/dist/modules/datasource/maven/index.js.map +1 -1
- package/dist/modules/datasource/maven/util.js +8 -1
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/datasource/npm/get.js +2 -1
- package/dist/modules/datasource/npm/get.js.map +1 -1
- package/dist/modules/datasource/npm/npmrc.js +2 -1
- package/dist/modules/datasource/npm/npmrc.js.map +1 -1
- package/dist/modules/datasource/nuget/v3.js +3 -2
- package/dist/modules/datasource/nuget/v3.js.map +1 -1
- package/dist/modules/datasource/pod/index.js +3 -1
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/pypi/index.js +2 -1
- package/dist/modules/datasource/pypi/index.js.map +1 -1
- package/dist/modules/datasource/types.d.ts +2 -1
- package/dist/modules/datasource/types.js.map +1 -1
- package/dist/modules/manager/asdf/upgradeable-tooling.js +8 -0
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/bazel/rules/git.d.ts +7 -7
- package/dist/modules/manager/bazel/rules/git.js +6 -1
- package/dist/modules/manager/bazel/rules/git.js.map +1 -1
- package/dist/modules/manager/bazel-module/bazelrc.d.ts +2 -0
- package/dist/modules/manager/bazel-module/bazelrc.js +30 -1
- package/dist/modules/manager/bazel-module/bazelrc.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/rules.js +1 -0
- package/dist/modules/manager/bazel-module/parser/rules.js.map +1 -1
- package/dist/modules/manager/bazel-module/rules.d.ts +62 -24
- package/dist/modules/manager/bazel-module/rules.js +10 -4
- package/dist/modules/manager/bazel-module/rules.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js +2 -1
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/composer/schema.js +1 -1
- package/dist/modules/manager/composer/schema.js.map +1 -1
- package/dist/modules/manager/docker-compose/extract.js +2 -0
- package/dist/modules/manager/docker-compose/extract.js.map +1 -1
- package/dist/modules/manager/docker-compose/schema.d.ts +120 -9
- package/dist/modules/manager/docker-compose/schema.js +35 -4
- package/dist/modules/manager/docker-compose/schema.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +19 -19
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/fleet/extract.js +2 -2
- package/dist/modules/manager/fleet/extract.js.map +1 -1
- package/dist/modules/manager/fleet/schema.d.ts +5 -5
- package/dist/modules/manager/fleet/schema.js +1 -1
- package/dist/modules/manager/fleet/schema.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +1 -1
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/git-submodules/extract.js +2 -6
- package/dist/modules/manager/git-submodules/extract.js.map +1 -1
- package/dist/modules/manager/git-submodules/update.js +3 -7
- package/dist/modules/manager/git-submodules/update.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js +1 -1
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/gleam/artifacts.js +5 -1
- package/dist/modules/manager/gleam/artifacts.js.map +1 -1
- package/dist/modules/manager/gomod/artifacts.js +8 -6
- package/dist/modules/manager/gomod/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/extract.js +4 -1
- package/dist/modules/manager/gradle/extract.js.map +1 -1
- package/dist/modules/manager/gradle/utils.js +8 -14
- package/dist/modules/manager/gradle/utils.js.map +1 -1
- package/dist/modules/manager/helmfile/utils.js +1 -1
- package/dist/modules/manager/helmfile/utils.js.map +1 -1
- package/dist/modules/manager/helmv3/artifacts.js +8 -2
- package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/common.d.ts +1 -1
- package/dist/modules/manager/helmv3/common.js +9 -3
- package/dist/modules/manager/helmv3/common.js.map +1 -1
- package/dist/modules/manager/hermit/artifacts.js +2 -2
- package/dist/modules/manager/hermit/artifacts.js.map +1 -1
- package/dist/modules/manager/kubernetes/extract.js +2 -2
- package/dist/modules/manager/kubernetes/extract.js.map +1 -1
- package/dist/modules/manager/kustomize/artifacts.js +1 -1
- package/dist/modules/manager/kustomize/artifacts.js.map +1 -1
- package/dist/modules/manager/maven/extract.d.ts +1 -1
- package/dist/modules/manager/maven/extract.js +82 -24
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven/index.d.ts +0 -1
- package/dist/modules/manager/maven/index.js +2 -4
- package/dist/modules/manager/maven/index.js.map +1 -1
- package/dist/modules/manager/maven/update.js +15 -0
- package/dist/modules/manager/maven/update.js.map +1 -1
- package/dist/modules/manager/mise/backends.d.ts +48 -0
- package/dist/modules/manager/mise/backends.js +219 -0
- package/dist/modules/manager/mise/backends.js.map +1 -0
- package/dist/modules/manager/mise/extract.js +77 -10
- package/dist/modules/manager/mise/extract.js.map +1 -1
- package/dist/modules/manager/mise/index.js +37 -2
- package/dist/modules/manager/mise/index.js.map +1 -1
- package/dist/modules/manager/mise/schema.d.ts +24 -0
- package/dist/modules/manager/mise/schema.js +7 -1
- package/dist/modules/manager/mise/schema.js.map +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js +210 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/mix/artifacts.js +5 -0
- package/dist/modules/manager/mix/artifacts.js.map +1 -1
- package/dist/modules/manager/npm/extract/index.js +27 -24
- package/dist/modules/manager/npm/extract/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +9 -3
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +8 -5
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js +4 -0
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/utils.js +17 -0
- package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +7 -5
- package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
- package/dist/modules/manager/npm/schema.d.ts +116 -0
- package/dist/modules/manager/npm/schema.js +9 -0
- package/dist/modules/manager/npm/schema.js.map +1 -1
- package/dist/modules/manager/npm/utils.js +1 -1
- package/dist/modules/manager/npm/utils.js.map +1 -1
- package/dist/modules/manager/nuget/util.js +9 -0
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +1 -1
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pip-compile/artifacts.js +6 -4
- package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
- package/dist/modules/manager/pip_requirements/common.js +2 -1
- package/dist/modules/manager/pip_requirements/common.js.map +1 -1
- package/dist/modules/manager/poetry/schema.js +2 -1
- package/dist/modules/manager/poetry/schema.js.map +1 -1
- package/dist/modules/manager/pre-commit/index.js +2 -1
- package/dist/modules/manager/pre-commit/index.js.map +1 -1
- package/dist/modules/manager/renovate-config-presets/index.d.ts +1 -1
- package/dist/modules/manager/renovate-config-presets/index.js +1 -3
- package/dist/modules/manager/renovate-config-presets/index.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/others/modules.js +4 -9
- package/dist/modules/manager/terraform/extractors/others/modules.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.d.ts +1 -0
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js +9 -4
- package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/resources/utils.d.ts +1 -0
- package/dist/modules/manager/terraform/extractors/resources/utils.js +4 -1
- package/dist/modules/manager/terraform/extractors/resources/utils.js.map +1 -1
- package/dist/modules/manager/terraform/hcl/types.d.ts +1 -0
- package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
- package/dist/modules/manager/types.d.ts +3 -0
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js +4 -2
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js +7 -5
- package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
- package/dist/modules/platform/codecommit/index.js +7 -5
- package/dist/modules/platform/codecommit/index.js.map +1 -1
- package/dist/modules/platform/default-scm.d.ts +1 -0
- package/dist/modules/platform/default-scm.js +3 -0
- package/dist/modules/platform/default-scm.js.map +1 -1
- package/dist/modules/platform/gerrit/client.d.ts +6 -7
- package/dist/modules/platform/gerrit/client.js +58 -38
- package/dist/modules/platform/gerrit/client.js.map +1 -1
- package/dist/modules/platform/gerrit/index.d.ts +4 -3
- package/dist/modules/platform/gerrit/index.js +103 -42
- package/dist/modules/platform/gerrit/index.js.map +1 -1
- package/dist/modules/platform/gerrit/scm.d.ts +1 -1
- package/dist/modules/platform/gerrit/scm.js +56 -34
- package/dist/modules/platform/gerrit/scm.js.map +1 -1
- package/dist/modules/platform/gerrit/types.d.ts +23 -12
- package/dist/modules/platform/gerrit/types.js.map +1 -1
- package/dist/modules/platform/gerrit/utils.d.ts +8 -4
- package/dist/modules/platform/gerrit/utils.js +24 -12
- package/dist/modules/platform/gerrit/utils.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +7 -2
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/types.d.ts +2 -1
- package/dist/modules/platform/gitea/types.js.map +1 -1
- package/dist/modules/platform/github/index.js +12 -26
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/gitlab/code-owners.d.ts +2 -0
- package/dist/modules/platform/gitlab/code-owners.js +38 -0
- package/dist/modules/platform/gitlab/code-owners.js.map +1 -0
- package/dist/modules/platform/gitlab/index.d.ts +2 -1
- package/dist/modules/platform/gitlab/index.js +29 -56
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/gitlab/pr-cache.d.ts +21 -0
- package/dist/modules/platform/gitlab/pr-cache.js +124 -0
- package/dist/modules/platform/gitlab/pr-cache.js.map +1 -0
- package/dist/modules/platform/gitlab/types.d.ts +7 -0
- package/dist/modules/platform/gitlab/types.js.map +1 -1
- package/dist/modules/platform/gitlab/utils.js +1 -0
- package/dist/modules/platform/gitlab/utils.js.map +1 -1
- package/dist/modules/platform/types.d.ts +8 -0
- package/dist/modules/platform/types.js.map +1 -1
- package/dist/modules/versioning/api.js +2 -0
- package/dist/modules/versioning/api.js.map +1 -1
- package/dist/modules/versioning/cargo/index.js +20 -0
- package/dist/modules/versioning/cargo/index.js.map +1 -1
- package/dist/modules/versioning/composer/index.js +4 -0
- package/dist/modules/versioning/composer/index.js.map +1 -1
- package/dist/modules/versioning/lambda-node/index.d.ts +8 -0
- package/dist/modules/versioning/lambda-node/index.js +27 -0
- package/dist/modules/versioning/lambda-node/index.js.map +1 -0
- package/dist/modules/versioning/lambda-node/schedule.d.ts +10 -0
- package/dist/modules/versioning/lambda-node/schedule.js +19 -0
- package/dist/modules/versioning/lambda-node/schedule.js.map +1 -0
- package/dist/modules/versioning/npm/index.js +2 -0
- package/dist/modules/versioning/npm/index.js.map +1 -1
- package/dist/modules/versioning/npm/range.js +4 -0
- package/dist/modules/versioning/npm/range.js.map +1 -1
- package/dist/modules/versioning/pep440/index.js +1 -1
- package/dist/modules/versioning/pep440/index.js.map +1 -1
- package/dist/modules/versioning/python/index.d.ts +1 -0
- package/dist/modules/versioning/python/index.js +9 -0
- package/dist/modules/versioning/python/index.js.map +1 -1
- package/dist/modules/versioning/semver/index.d.ts +1 -0
- package/dist/modules/versioning/semver/index.js +15 -0
- package/dist/modules/versioning/semver/index.js.map +1 -1
- package/dist/modules/versioning/semver-coerced/index.js +9 -0
- package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +1 -0
- package/dist/modules/versioning/types.js.map +1 -1
- package/dist/util/cache/memory/index.d.ts +1 -0
- package/dist/util/cache/memory/index.js +17 -6
- package/dist/util/cache/memory/index.js.map +1 -1
- package/dist/util/cache/package/index.js +2 -1
- package/dist/util/cache/package/index.js.map +1 -1
- package/dist/util/cache/package/key.js +1 -1
- package/dist/util/cache/package/key.js.map +1 -1
- package/dist/util/cache/package/types.d.ts +2 -2
- package/dist/util/cache/package/types.js.map +1 -1
- package/dist/util/cache/repository/impl/s3.js +2 -1
- package/dist/util/cache/repository/impl/s3.js.map +1 -1
- package/dist/util/cache/repository/types.d.ts +3 -0
- package/dist/util/cache/repository/types.js.map +1 -1
- package/dist/util/env.d.ts +6 -0
- package/dist/util/env.js +13 -0
- package/dist/util/env.js.map +1 -1
- package/dist/util/exec/common.js +2 -1
- package/dist/util/exec/common.js.map +1 -1
- package/dist/util/exec/containerbase.js +2 -1
- package/dist/util/exec/containerbase.js.map +1 -1
- package/dist/util/exec/env.js +1 -0
- package/dist/util/exec/env.js.map +1 -1
- package/dist/util/exec/utils.d.ts +1 -1
- package/dist/util/exec/utils.js +1 -1
- package/dist/util/exec/utils.js.map +1 -1
- package/dist/util/fs/index.js +2 -2
- package/dist/util/fs/index.js.map +1 -1
- package/dist/util/git/auth.js +4 -2
- package/dist/util/git/auth.js.map +1 -1
- package/dist/util/git/error.js +2 -1
- package/dist/util/git/error.js.map +1 -1
- package/dist/util/git/index.d.ts +20 -0
- package/dist/util/git/index.js +140 -10
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/git/types.d.ts +1 -0
- package/dist/util/git/types.js.map +1 -1
- package/dist/util/github/graphql/datasource-fetcher.js +2 -3
- package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.d.ts +48 -2
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.js +27 -7
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.js.map +1 -1
- package/dist/util/host-rules.js +4 -3
- package/dist/util/host-rules.js.map +1 -1
- package/dist/util/http/cache/package-http-cache-provider.d.ts +4 -4
- package/dist/util/http/cache/package-http-cache-provider.js +4 -4
- package/dist/util/http/cache/package-http-cache-provider.js.map +1 -1
- package/dist/util/http/github.js +20 -12
- package/dist/util/http/github.js.map +1 -1
- package/dist/util/http/gitlab.js +2 -1
- package/dist/util/http/gitlab.js.map +1 -1
- package/dist/util/http/http.js +7 -3
- package/dist/util/http/http.js.map +1 -1
- package/dist/util/interpolator.d.ts +8 -0
- package/dist/util/interpolator.js +85 -0
- package/dist/util/interpolator.js.map +1 -0
- package/dist/util/merge-confidence/index.js +4 -1
- package/dist/util/merge-confidence/index.js.map +1 -1
- package/dist/util/promises.d.ts +4 -4
- package/dist/util/promises.js +3 -4
- package/dist/util/promises.js.map +1 -1
- package/dist/util/regex.js +3 -2
- package/dist/util/regex.js.map +1 -1
- package/dist/util/{schema-utils.d.ts → schema-utils/index.d.ts} +2 -2
- package/dist/util/{schema-utils.js → schema-utils/index.js} +5 -5
- package/dist/util/schema-utils/index.js.map +1 -0
- package/dist/util/schema-utils/v4.d.ts +7 -0
- package/dist/util/schema-utils/v4.js +64 -0
- package/dist/util/schema-utils/v4.js.map +1 -0
- package/dist/util/stats.d.ts +13 -2
- package/dist/util/stats.js +38 -27
- package/dist/util/stats.js.map +1 -1
- package/dist/workers/global/config/parse/codespaces.js +7 -4
- package/dist/workers/global/config/parse/codespaces.js.map +1 -1
- package/dist/workers/global/index.js +7 -5
- package/dist/workers/global/index.js.map +1 -1
- package/dist/workers/repository/config-migration/branch/migrated-data.js +1 -1
- package/dist/workers/repository/config-migration/branch/migrated-data.js.map +1 -1
- package/dist/workers/repository/dependency-dashboard.d.ts +1 -0
- package/dist/workers/repository/dependency-dashboard.js +47 -0
- package/dist/workers/repository/dependency-dashboard.js.map +1 -1
- package/dist/workers/repository/index.js +1 -0
- package/dist/workers/repository/index.js.map +1 -1
- package/dist/workers/repository/init/inherited.js +10 -6
- package/dist/workers/repository/init/inherited.js.map +1 -1
- package/dist/workers/repository/init/merge.d.ts +2 -2
- package/dist/workers/repository/init/merge.js +12 -5
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/package-files.js +11 -1
- package/dist/workers/repository/package-files.js.map +1 -1
- package/dist/workers/repository/process/extract-update.d.ts +1 -1
- package/dist/workers/repository/process/extract-update.js +15 -10
- package/dist/workers/repository/process/extract-update.js.map +1 -1
- package/dist/workers/repository/process/index.d.ts +1 -1
- package/dist/workers/repository/process/index.js +6 -3
- package/dist/workers/repository/process/index.js.map +1 -1
- package/dist/workers/repository/process/libyear.js +15 -7
- package/dist/workers/repository/process/libyear.js.map +1 -1
- package/dist/workers/repository/process/lookup/abandonment.d.ts +3 -0
- package/dist/workers/repository/process/lookup/abandonment.js +50 -0
- package/dist/workers/repository/process/lookup/abandonment.js.map +1 -0
- package/dist/workers/repository/process/lookup/current.js +0 -5
- package/dist/workers/repository/process/lookup/current.js.map +1 -1
- package/dist/workers/repository/process/lookup/generate.js +10 -0
- package/dist/workers/repository/process/lookup/generate.js.map +1 -1
- package/dist/workers/repository/process/lookup/index.js +7 -0
- package/dist/workers/repository/process/lookup/index.js.map +1 -1
- package/dist/workers/repository/process/lookup/timestamps.d.ts +4 -4
- package/dist/workers/repository/process/lookup/timestamps.js +10 -10
- package/dist/workers/repository/process/lookup/timestamps.js.map +1 -1
- package/dist/workers/repository/process/lookup/types.d.ts +4 -0
- package/dist/workers/repository/process/lookup/types.js.map +1 -1
- package/dist/workers/repository/update/branch/auto-replace.js +30 -7
- package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
- package/dist/workers/repository/update/branch/bump-versions.d.ts +2 -0
- package/dist/workers/repository/update/branch/bump-versions.js +192 -0
- package/dist/workers/repository/update/branch/bump-versions.js.map +1 -0
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +14 -8
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
- package/dist/workers/repository/update/branch/get-updated.js +3 -4
- package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
- package/dist/workers/repository/update/branch/index.js +3 -0
- package/dist/workers/repository/update/branch/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/release-notes.js +23 -19
- package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
- package/dist/workers/repository/update/pr/code-owners.js +13 -9
- package/dist/workers/repository/update/pr/code-owners.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +1 -0
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +75 -80
- package/renovate-schema.json +78 -14
- package/dist/util/schema-utils.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dependency-dashboard.js","sourceRoot":"","sources":["../../../lib/workers/repository/dependency-dashboard.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { GlobalConfig } from '../../config/global';\nimport type { RenovateConfig } from '../../config/types';\nimport { logger } from '../../logger';\nimport type { PackageFile } from '../../modules/manager/types';\nimport { platform } from '../../modules/platform';\nimport { regEx } from '../../util/regex';\nimport { coerceString } from '../../util/string';\nimport * as template from '../../util/template';\nimport type { BranchConfig, SelectAllConfig } from '../types';\nimport { extractRepoProblems } from './common';\nimport type { ConfigMigrationResult } from './config-migration';\nimport { getDepWarningsDashboard } from './errors-warnings';\nimport { PackageFiles } from './package-files';\nimport type { Vulnerability } from './process/types';\nimport { Vulnerabilities } from './process/vulnerabilities';\n\ninterface DependencyDashboard {\n dependencyDashboardChecks: Record<string, string>;\n dependencyDashboardRebaseAllOpen: boolean;\n dependencyDashboardAllPending: boolean;\n dependencyDashboardAllRateLimited: boolean;\n}\n\nconst rateLimitedRe = regEx(\n ' - \\\\[ \\\\] <!-- unlimit-branch=([^\\\\s]+) -->',\n 'g',\n);\nconst pendingApprovalRe = regEx(\n ' - \\\\[ \\\\] <!-- approve-branch=([^\\\\s]+) -->',\n 'g',\n);\nconst generalBranchRe = regEx(' <!-- ([a-zA-Z]+)-branch=([^\\\\s]+) -->');\nconst markedBranchesRe = regEx(\n ' - \\\\[x\\\\] <!-- ([a-zA-Z]+)-branch=([^\\\\s]+) -->',\n 'g',\n);\n\nfunction checkOpenAllRateLimitedPR(issueBody: string): boolean {\n return issueBody.includes(' - [x] <!-- create-all-rate-limited-prs -->');\n}\n\nfunction checkApproveAllPendingPR(issueBody: string): boolean {\n return issueBody.includes(' - [x] <!-- approve-all-pending-prs -->');\n}\n\nfunction checkRebaseAll(issueBody: string): boolean {\n return issueBody.includes(' - [x] <!-- rebase-all-open-prs -->');\n}\n\nfunction getConfigMigrationCheckboxState(\n issueBody: string,\n): 'no-checkbox' | 'checked' | 'unchecked' | 'migration-pr-exists' {\n if (issueBody.includes('<!-- config-migration-pr-info -->')) {\n return 'migration-pr-exists';\n }\n\n if (issueBody.includes(' - [x] <!-- create-config-migration-pr -->')) {\n return 'checked';\n }\n\n if (issueBody.includes(' - [ ] <!-- create-config-migration-pr -->')) {\n return 'unchecked';\n }\n\n return 'no-checkbox';\n}\n\nfunction selectAllRelevantBranches(issueBody: string): string[] {\n const checkedBranches = [];\n if (checkOpenAllRateLimitedPR(issueBody)) {\n for (const match of issueBody.matchAll(rateLimitedRe)) {\n checkedBranches.push(match[0]);\n }\n }\n if (checkApproveAllPendingPR(issueBody)) {\n for (const match of issueBody.matchAll(pendingApprovalRe)) {\n checkedBranches.push(match[0]);\n }\n }\n return checkedBranches;\n}\n\nfunction getAllSelectedBranches(\n issueBody: string,\n dependencyDashboardChecks: Record<string, string>,\n): Record<string, string> {\n const allRelevantBranches = selectAllRelevantBranches(issueBody);\n for (const branch of allRelevantBranches) {\n const [, type, branchName] = generalBranchRe.exec(branch)!;\n dependencyDashboardChecks[branchName] = type;\n }\n return dependencyDashboardChecks;\n}\n\nfunction getCheckedBranches(issueBody: string): Record<string, string> {\n let dependencyDashboardChecks: Record<string, string> = {};\n for (const [, type, branchName] of issueBody.matchAll(markedBranchesRe)) {\n dependencyDashboardChecks[branchName] = type;\n }\n dependencyDashboardChecks = getAllSelectedBranches(\n issueBody,\n dependencyDashboardChecks,\n );\n return dependencyDashboardChecks;\n}\n\nfunction parseDashboardIssue(issueBody: string): DependencyDashboard {\n const dependencyDashboardChecks = getCheckedBranches(issueBody);\n const dependencyDashboardRebaseAllOpen = checkRebaseAll(issueBody);\n const dependencyDashboardAllPending = checkApproveAllPendingPR(issueBody);\n const dependencyDashboardAllRateLimited =\n checkOpenAllRateLimitedPR(issueBody);\n dependencyDashboardChecks.configMigrationCheckboxState =\n getConfigMigrationCheckboxState(issueBody);\n return {\n dependencyDashboardChecks,\n dependencyDashboardRebaseAllOpen,\n dependencyDashboardAllPending,\n dependencyDashboardAllRateLimited,\n };\n}\n\nexport async function readDashboardBody(\n config: SelectAllConfig,\n): Promise<void> {\n let dashboardChecks: DependencyDashboard = {\n dependencyDashboardChecks: {},\n dependencyDashboardAllPending: false,\n dependencyDashboardRebaseAllOpen: false,\n dependencyDashboardAllRateLimited: false,\n };\n const stringifiedConfig = JSON.stringify(config);\n if (\n config.dependencyDashboard === true ||\n stringifiedConfig.includes('\"dependencyDashboardApproval\":true') ||\n stringifiedConfig.includes('\"prCreation\":\"approval\"')\n ) {\n config.dependencyDashboardTitle =\n config.dependencyDashboardTitle ?? `Dependency Dashboard`;\n const issue = await platform.findIssue(config.dependencyDashboardTitle);\n if (issue) {\n config.dependencyDashboardIssue = issue.number;\n dashboardChecks = parseDashboardIssue(issue.body ?? '');\n }\n }\n\n if (config.checkedBranches) {\n const checkedBranchesRec: Record<string, string> = Object.fromEntries(\n config.checkedBranches.map((branchName) => [branchName, 'global-config']),\n );\n dashboardChecks.dependencyDashboardChecks = {\n ...dashboardChecks.dependencyDashboardChecks,\n ...checkedBranchesRec,\n };\n }\n\n Object.assign(config, dashboardChecks);\n}\n\nfunction getListItem(branch: BranchConfig, type: string): string {\n let item = ' - [ ] ';\n item += `<!-- ${type}-branch=${branch.branchName} -->`;\n if (branch.prNo) {\n // TODO: types (#22198)\n item += `[${branch.prTitle!}](../pull/${branch.prNo})`;\n } else {\n item += branch.prTitle;\n }\n const uniquePackages = [\n // TODO: types (#22198)\n ...new Set(branch.upgrades.map((upgrade) => `\\`${upgrade.depName!}\\``)),\n ];\n if (uniquePackages.length < 2) {\n return item + '\\n';\n }\n return item + ' (' + uniquePackages.join(', ') + ')\\n';\n}\n\nfunction appendRepoProblems(config: RenovateConfig, issueBody: string): string {\n let newIssueBody = issueBody;\n const repoProblems = extractRepoProblems(config.repository);\n if (repoProblems.size) {\n newIssueBody += '## Repository problems\\n\\n';\n const repoProblemsHeader =\n config.customizeDashboard?.repoProblemsHeader ??\n 'Renovate tried to run on this repository, but found these problems.';\n newIssueBody += template.compile(repoProblemsHeader, config) + '\\n\\n';\n\n for (const repoProblem of repoProblems) {\n newIssueBody += ` - ${repoProblem}\\n`;\n }\n newIssueBody += '\\n';\n }\n return newIssueBody;\n}\n\nexport async function ensureDependencyDashboard(\n config: SelectAllConfig,\n allBranches: BranchConfig[],\n packageFiles: Record<string, PackageFile[]> = {},\n configMigrationRes: ConfigMigrationResult,\n): Promise<void> {\n logger.debug('ensureDependencyDashboard()');\n if (config.mode === 'silent') {\n logger.debug(\n 'Dependency Dashboard issue is not created, updated or closed when mode=silent',\n );\n return;\n }\n // legacy/migrated issue\n const reuseTitle = 'Update Dependencies (Renovate Bot)';\n const branches = allBranches.filter(\n (branch) =>\n branch.result !== 'automerged' &&\n !branch.upgrades?.every((upgrade) => upgrade.remediationNotPossible),\n );\n if (\n !(\n config.dependencyDashboard === true ||\n config.dependencyDashboardApproval === true ||\n config.packageRules?.some((rule) => rule.dependencyDashboardApproval) ===\n true ||\n branches.some(\n (branch) =>\n !!branch.dependencyDashboardApproval ||\n !!branch.dependencyDashboardPrApproval,\n )\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n { title: config.dependencyDashboardTitle },\n 'DRY-RUN: Would close Dependency Dashboard',\n );\n } else {\n logger.debug('Closing Dependency Dashboard');\n await platform.ensureIssueClosing(config.dependencyDashboardTitle!);\n }\n return;\n }\n // istanbul ignore if\n if (config.repoIsOnboarded === false) {\n logger.debug('Repo is onboarding - skipping dependency dashboard');\n return;\n }\n logger.debug('Ensuring Dependency Dashboard');\n\n // Check packageFiles for any deprecations\n let hasDeprecations = false;\n const deprecatedPackages: Record<string, Record<string, boolean>> = {};\n logger.debug('Checking packageFiles for deprecated packages');\n if (is.nonEmptyObject(packageFiles)) {\n for (const [manager, fileNames] of Object.entries(packageFiles)) {\n for (const fileName of fileNames) {\n for (const dep of fileName.deps) {\n const name = dep.packageName ?? dep.depName;\n const hasReplacement = !!dep.updates?.find(\n (updates) => updates.updateType === 'replacement',\n );\n if (name && (dep.deprecationMessage ?? hasReplacement)) {\n hasDeprecations = true;\n deprecatedPackages[manager] ??= {};\n deprecatedPackages[manager][name] ??= hasReplacement;\n }\n }\n }\n }\n }\n\n const hasBranches = is.nonEmptyArray(branches);\n if (config.dependencyDashboardAutoclose && !hasBranches && !hasDeprecations) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n { title: config.dependencyDashboardTitle },\n 'DRY-RUN: Would close Dependency Dashboard',\n );\n } else {\n logger.debug('Closing Dependency Dashboard');\n await platform.ensureIssueClosing(config.dependencyDashboardTitle!);\n }\n return;\n }\n let issueBody = '';\n\n if (config.dependencyDashboardHeader?.length) {\n issueBody +=\n template.compile(config.dependencyDashboardHeader, config) + '\\n\\n';\n }\n\n if (configMigrationRes.result === 'pr-exists') {\n issueBody +=\n '## Config Migration Needed\\n\\n' +\n `<!-- config-migration-pr-info --> See Config Migration PR: #${configMigrationRes.prNumber}.\\n\\n`;\n } else if (configMigrationRes?.result === 'pr-modified') {\n issueBody +=\n '## Config Migration Needed (error)\\n\\n' +\n `<!-- config-migration-pr-info --> The Config Migration branch exists but has been modified by another user. Renovate will not push to this branch unless it is first deleted. \\n\\n See Config Migration PR: #${configMigrationRes.prNumber}.\\n\\n`;\n } else if (configMigrationRes?.result === 'add-checkbox') {\n issueBody +=\n '## Config Migration Needed\\n\\n' +\n ' - [ ] <!-- create-config-migration-pr --> Select this checkbox to let Renovate create an automated Config Migration PR.' +\n '\\n\\n';\n }\n\n issueBody = appendRepoProblems(config, issueBody);\n\n if (hasDeprecations) {\n issueBody += '> ⚠ **Warning**\\n> \\n';\n issueBody += 'These dependencies are deprecated:\\n\\n';\n issueBody += '| Datasource | Name | Replacement PR? |\\n';\n issueBody += '|------------|------|--------------|\\n';\n for (const manager of Object.keys(deprecatedPackages).sort()) {\n const deps = deprecatedPackages[manager];\n for (const depName of Object.keys(deps).sort()) {\n const hasReplacement = deps[depName];\n issueBody += `| ${manager} | \\`${depName}\\` | ${\n hasReplacement\n ? ''\n : ''\n } |\\n`;\n }\n }\n issueBody += '\\n';\n }\n\n const pendingApprovals = branches.filter(\n (branch) => branch.result === 'needs-approval',\n );\n if (pendingApprovals.length) {\n issueBody += '## Pending Approval\\n\\n';\n issueBody += `These branches will be created by Renovate only once you click their checkbox below.\\n\\n`;\n for (const branch of pendingApprovals) {\n issueBody += getListItem(branch, 'approve');\n }\n if (pendingApprovals.length > 1) {\n issueBody += ' - [ ] ';\n issueBody += '<!-- approve-all-pending-prs -->';\n issueBody += '🔐 **Create all pending approval PRs at once** 🔐\\n';\n }\n issueBody += '\\n';\n }\n const awaitingSchedule = branches.filter(\n (branch) => branch.result === 'not-scheduled',\n );\n if (awaitingSchedule.length) {\n issueBody += '## Awaiting Schedule\\n\\n';\n issueBody +=\n 'These updates are awaiting their schedule. Click on a checkbox to get an update now.\\n\\n';\n for (const branch of awaitingSchedule) {\n issueBody += getListItem(branch, 'unschedule');\n }\n issueBody += '\\n';\n }\n const rateLimited = branches.filter(\n (branch) =>\n branch.result === 'branch-limit-reached' ||\n branch.result === 'pr-limit-reached' ||\n branch.result === 'commit-limit-reached',\n );\n if (rateLimited.length) {\n issueBody += '## Rate-Limited\\n\\n';\n issueBody +=\n 'These updates are currently rate-limited. Click on a checkbox below to force their creation now.\\n\\n';\n for (const branch of rateLimited) {\n issueBody += getListItem(branch, 'unlimit');\n }\n if (rateLimited.length > 1) {\n issueBody += ' - [ ] ';\n issueBody += '<!-- create-all-rate-limited-prs -->';\n issueBody += '🔐 **Create all rate-limited PRs at once** 🔐\\n';\n }\n issueBody += '\\n';\n }\n const errorList = branches.filter((branch) => branch.result === 'error');\n if (errorList.length) {\n issueBody += '## Errored\\n\\n';\n issueBody +=\n 'These updates encountered an error and will be retried. Click on a checkbox below to force a retry now.\\n\\n';\n for (const branch of errorList) {\n issueBody += getListItem(branch, 'retry');\n }\n issueBody += '\\n';\n }\n const awaitingPr = branches.filter(\n (branch) => branch.result === 'needs-pr-approval',\n );\n if (awaitingPr.length) {\n issueBody += '## PR Creation Approval Required\\n\\n';\n issueBody +=\n \"These branches exist but PRs won't be created until you approve them by clicking on a checkbox.\\n\\n\";\n for (const branch of awaitingPr) {\n issueBody += getListItem(branch, 'approvePr');\n }\n issueBody += '\\n';\n }\n const prEdited = branches.filter((branch) => branch.result === 'pr-edited');\n if (prEdited.length) {\n issueBody += '## Edited/Blocked\\n\\n';\n issueBody += `These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.\\n\\n`;\n for (const branch of prEdited) {\n issueBody += getListItem(branch, 'rebase');\n }\n issueBody += '\\n';\n }\n const prPending = branches.filter((branch) => branch.result === 'pending');\n if (prPending.length) {\n issueBody += '## Pending Status Checks\\n\\n';\n issueBody += `These updates await pending status checks. To force their creation now, click the checkbox below.\\n\\n`;\n for (const branch of prPending) {\n issueBody += getListItem(branch, 'approvePr');\n }\n issueBody += '\\n';\n }\n const prPendingBranchAutomerge = branches.filter(\n (branch) => branch.prBlockedBy === 'BranchAutomerge',\n );\n if (prPendingBranchAutomerge.length) {\n issueBody += '## Pending Branch Automerge\\n\\n';\n issueBody += `These updates await pending status checks before automerging. Click on a checkbox to abort the branch automerge, and create a PR instead.\\n\\n`;\n for (const branch of prPendingBranchAutomerge) {\n issueBody += getListItem(branch, 'approvePr');\n }\n issueBody += '\\n';\n }\n\n const warn = getDepWarningsDashboard(packageFiles, config);\n if (warn) {\n issueBody += warn;\n issueBody += '\\n';\n }\n\n const otherRes = [\n 'pending',\n 'needs-approval',\n 'needs-pr-approval',\n 'not-scheduled',\n 'pr-limit-reached',\n 'commit-limit-reached',\n 'branch-limit-reached',\n 'already-existed',\n 'error',\n 'automerged',\n 'pr-edited',\n ];\n let inProgress = branches.filter(\n (branch) =>\n !otherRes.includes(branch.result!) &&\n branch.prBlockedBy !== 'BranchAutomerge',\n );\n const otherBranches = inProgress.filter(\n (branch) => !!branch.prBlockedBy || !branch.prNo,\n );\n // istanbul ignore if\n if (otherBranches.length) {\n issueBody += '## Other Branches\\n\\n';\n issueBody += `These updates are pending. To force PRs open, click the checkbox below.\\n\\n`;\n for (const branch of otherBranches) {\n issueBody += getListItem(branch, 'other');\n }\n issueBody += '\\n';\n }\n inProgress = inProgress.filter(\n (branch) => branch.prNo && !branch.prBlockedBy,\n );\n if (inProgress.length) {\n issueBody += '## Open\\n\\n';\n issueBody +=\n 'These updates have all been created already. Click a checkbox below to force a retry/rebase of any.\\n\\n';\n for (const branch of inProgress) {\n issueBody += getListItem(branch, 'rebase');\n }\n if (inProgress.length > 2) {\n issueBody += ' - [ ] ';\n issueBody += '<!-- rebase-all-open-prs -->';\n issueBody += '**Click on this checkbox to rebase all open PRs at once**';\n issueBody += '\\n';\n }\n issueBody += '\\n';\n }\n const alreadyExisted = branches.filter(\n (branch) => branch.result === 'already-existed',\n );\n if (alreadyExisted.length) {\n issueBody += '## Ignored or Blocked\\n\\n';\n issueBody +=\n 'These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.\\n\\n';\n for (const branch of alreadyExisted) {\n issueBody += getListItem(branch, 'recreate');\n }\n issueBody += '\\n';\n }\n\n if (!hasBranches) {\n issueBody +=\n 'This repository currently has no open or pending branches.\\n\\n';\n }\n\n // add CVE section\n issueBody += await getDashboardMarkdownVulnerabilities(config, packageFiles);\n\n // fit the detected dependencies section\n const footer = getFooter(config);\n issueBody += PackageFiles.getDashboardMarkdown(\n platform.maxBodyLength() - issueBody.length - footer.length,\n );\n\n issueBody += footer;\n\n if (config.dependencyDashboardIssue) {\n // If we're not changing the dashboard issue then we can skip checking if the user changed it\n // The cached issue we get back here will reflect its state at the _start_ of our run\n const cachedIssue = await platform.getIssue?.(\n config.dependencyDashboardIssue,\n );\n if (cachedIssue?.body === issueBody) {\n logger.debug('No changes to dependency dashboard issue needed');\n return;\n }\n\n // Skip cache when getting the issue to ensure we get the latest body,\n // including any updates the user made after we started the run\n const updatedIssue = await platform.getIssue?.(\n config.dependencyDashboardIssue,\n false,\n );\n if (updatedIssue) {\n const { dependencyDashboardChecks } = parseDashboardIssue(\n coerceString(updatedIssue.body),\n );\n for (const branchName of Object.keys(config.dependencyDashboardChecks!)) {\n delete dependencyDashboardChecks[branchName];\n }\n for (const branchName of Object.keys(dependencyDashboardChecks)) {\n const checkText = `- [ ] <!-- ${dependencyDashboardChecks[branchName]}-branch=${branchName} -->`;\n issueBody = issueBody.replace(\n checkText,\n checkText.replace('[ ]', '[x]'),\n );\n }\n }\n }\n\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n { title: config.dependencyDashboardTitle },\n 'DRY-RUN: Would ensure Dependency Dashboard',\n );\n } else {\n await platform.ensureIssue({\n title: config.dependencyDashboardTitle!,\n reuseTitle,\n body: platform.massageMarkdown(issueBody),\n labels: config.dependencyDashboardLabels,\n confidential: config.confidential,\n });\n }\n}\n\nfunction getFooter(config: RenovateConfig): string {\n let footer = '';\n if (config.dependencyDashboardFooter?.length) {\n footer +=\n '---\\n' +\n template.compile(config.dependencyDashboardFooter, config) +\n '\\n';\n }\n\n return footer;\n}\n\nexport async function getDashboardMarkdownVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<string> {\n let result = '';\n\n if (\n is.nullOrUndefined(config.dependencyDashboardOSVVulnerabilitySummary) ||\n config.dependencyDashboardOSVVulnerabilitySummary === 'none'\n ) {\n return result;\n }\n\n result += '## Vulnerabilities\\n\\n';\n\n const vulnerabilityFetcher = await Vulnerabilities.create();\n const vulnerabilities = await vulnerabilityFetcher.fetchVulnerabilities(\n config,\n packageFiles,\n );\n\n if (vulnerabilities.length === 0) {\n result +=\n 'Renovate has not found any CVEs on [osv.dev](https://osv.dev).\\n\\n';\n return result;\n }\n\n const unresolvedVulnerabilities = vulnerabilities.filter((value) =>\n is.nullOrUndefined(value.fixedVersion),\n );\n const resolvedVulnerabilitiesLength =\n vulnerabilities.length - unresolvedVulnerabilities.length;\n\n result += `\\`${resolvedVulnerabilitiesLength}\\`/\\`${vulnerabilities.length}\\``;\n if (is.truthy(config.osvVulnerabilityAlerts)) {\n result += ' CVEs have Renovate fixes.\\n';\n } else {\n result +=\n ' CVEs have possible Renovate fixes.\\nSee [`osvVulnerabilityAlerts`](https://docs.renovatebot.com/configuration-options/#osvvulnerabilityalerts) to allow Renovate to supply fixes.\\n';\n }\n\n let renderedVulnerabilities: Vulnerability[];\n switch (config.dependencyDashboardOSVVulnerabilitySummary) {\n // filter vulnerabilities to display based on configuration\n case 'unresolved':\n renderedVulnerabilities = unresolvedVulnerabilities;\n break;\n default:\n renderedVulnerabilities = vulnerabilities;\n }\n\n const managerRecords: Record<\n string,\n Record<string, Record<string, Vulnerability[]>>\n > = {};\n for (const vulnerability of renderedVulnerabilities) {\n const { manager, packageFile } = vulnerability.packageFileConfig;\n if (is.nullOrUndefined(managerRecords[manager!])) {\n managerRecords[manager!] = {};\n }\n if (is.nullOrUndefined(managerRecords[manager!][packageFile])) {\n managerRecords[manager!][packageFile] = {};\n }\n if (\n is.nullOrUndefined(\n managerRecords[manager!][packageFile][vulnerability.packageName],\n )\n ) {\n managerRecords[manager!][packageFile][vulnerability.packageName] = [];\n }\n managerRecords[manager!][packageFile][vulnerability.packageName].push(\n vulnerability,\n );\n }\n\n for (const [manager, packageFileRecords] of Object.entries(managerRecords)) {\n result += `<details><summary>${manager}</summary>\\n<blockquote>\\n\\n`;\n for (const [packageFile, packageNameRecords] of Object.entries(\n packageFileRecords,\n )) {\n result += `<details><summary>${packageFile}</summary>\\n<blockquote>\\n\\n`;\n for (const [packageName, cves] of Object.entries(packageNameRecords)) {\n result += `<details><summary>${packageName}</summary>\\n<blockquote>\\n\\n`;\n for (const vul of cves) {\n const id = vul.vulnerability.id;\n const suffix = is.nonEmptyString(vul.fixedVersion)\n ? ` (fixed in ${vul.fixedVersion})`\n : '';\n result += `- [${id}](https://osv.dev/vulnerability/${id})${suffix}\\n`;\n }\n result += `</blockquote>\\n</details>\\n\\n`;\n }\n result += `</blockquote>\\n</details>\\n\\n`;\n }\n result += `</blockquote>\\n</details>\\n\\n`;\n }\n\n return result;\n}\n"]}
|
1
|
+
{"version":3,"file":"dependency-dashboard.js","sourceRoot":"","sources":["../../../lib/workers/repository/dependency-dashboard.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../config/global';\nimport type { RenovateConfig } from '../../config/types';\nimport { logger } from '../../logger';\nimport type { PackageFile } from '../../modules/manager/types';\nimport { platform } from '../../modules/platform';\nimport { coerceArray } from '../../util/array';\nimport { regEx } from '../../util/regex';\nimport { coerceString } from '../../util/string';\nimport * as template from '../../util/template';\nimport type { BranchConfig, SelectAllConfig } from '../types';\nimport { extractRepoProblems } from './common';\nimport type { ConfigMigrationResult } from './config-migration';\nimport { getDepWarningsDashboard } from './errors-warnings';\nimport { PackageFiles } from './package-files';\nimport type { Vulnerability } from './process/types';\nimport { Vulnerabilities } from './process/vulnerabilities';\n\ninterface DependencyDashboard {\n dependencyDashboardChecks: Record<string, string>;\n dependencyDashboardRebaseAllOpen: boolean;\n dependencyDashboardAllPending: boolean;\n dependencyDashboardAllRateLimited: boolean;\n}\n\nconst rateLimitedRe = regEx(\n ' - \\\\[ \\\\] <!-- unlimit-branch=([^\\\\s]+) -->',\n 'g',\n);\nconst pendingApprovalRe = regEx(\n ' - \\\\[ \\\\] <!-- approve-branch=([^\\\\s]+) -->',\n 'g',\n);\nconst generalBranchRe = regEx(' <!-- ([a-zA-Z]+)-branch=([^\\\\s]+) -->');\nconst markedBranchesRe = regEx(\n ' - \\\\[x\\\\] <!-- ([a-zA-Z]+)-branch=([^\\\\s]+) -->',\n 'g',\n);\n\nfunction checkOpenAllRateLimitedPR(issueBody: string): boolean {\n return issueBody.includes(' - [x] <!-- create-all-rate-limited-prs -->');\n}\n\nfunction checkApproveAllPendingPR(issueBody: string): boolean {\n return issueBody.includes(' - [x] <!-- approve-all-pending-prs -->');\n}\n\nfunction checkRebaseAll(issueBody: string): boolean {\n return issueBody.includes(' - [x] <!-- rebase-all-open-prs -->');\n}\n\nfunction getConfigMigrationCheckboxState(\n issueBody: string,\n): 'no-checkbox' | 'checked' | 'unchecked' | 'migration-pr-exists' {\n if (issueBody.includes('<!-- config-migration-pr-info -->')) {\n return 'migration-pr-exists';\n }\n\n if (issueBody.includes(' - [x] <!-- create-config-migration-pr -->')) {\n return 'checked';\n }\n\n if (issueBody.includes(' - [ ] <!-- create-config-migration-pr -->')) {\n return 'unchecked';\n }\n\n return 'no-checkbox';\n}\n\nfunction selectAllRelevantBranches(issueBody: string): string[] {\n const checkedBranches = [];\n if (checkOpenAllRateLimitedPR(issueBody)) {\n for (const match of issueBody.matchAll(rateLimitedRe)) {\n checkedBranches.push(match[0]);\n }\n }\n if (checkApproveAllPendingPR(issueBody)) {\n for (const match of issueBody.matchAll(pendingApprovalRe)) {\n checkedBranches.push(match[0]);\n }\n }\n return checkedBranches;\n}\n\nfunction getAllSelectedBranches(\n issueBody: string,\n dependencyDashboardChecks: Record<string, string>,\n): Record<string, string> {\n const allRelevantBranches = selectAllRelevantBranches(issueBody);\n for (const branch of allRelevantBranches) {\n const [, type, branchName] = generalBranchRe.exec(branch)!;\n dependencyDashboardChecks[branchName] = type;\n }\n return dependencyDashboardChecks;\n}\n\nfunction getCheckedBranches(issueBody: string): Record<string, string> {\n let dependencyDashboardChecks: Record<string, string> = {};\n for (const [, type, branchName] of issueBody.matchAll(markedBranchesRe)) {\n dependencyDashboardChecks[branchName] = type;\n }\n dependencyDashboardChecks = getAllSelectedBranches(\n issueBody,\n dependencyDashboardChecks,\n );\n return dependencyDashboardChecks;\n}\n\nfunction parseDashboardIssue(issueBody: string): DependencyDashboard {\n const dependencyDashboardChecks = getCheckedBranches(issueBody);\n const dependencyDashboardRebaseAllOpen = checkRebaseAll(issueBody);\n const dependencyDashboardAllPending = checkApproveAllPendingPR(issueBody);\n const dependencyDashboardAllRateLimited =\n checkOpenAllRateLimitedPR(issueBody);\n dependencyDashboardChecks.configMigrationCheckboxState =\n getConfigMigrationCheckboxState(issueBody);\n return {\n dependencyDashboardChecks,\n dependencyDashboardRebaseAllOpen,\n dependencyDashboardAllPending,\n dependencyDashboardAllRateLimited,\n };\n}\n\nexport async function readDashboardBody(\n config: SelectAllConfig,\n): Promise<void> {\n let dashboardChecks: DependencyDashboard = {\n dependencyDashboardChecks: {},\n dependencyDashboardAllPending: false,\n dependencyDashboardRebaseAllOpen: false,\n dependencyDashboardAllRateLimited: false,\n };\n const stringifiedConfig = JSON.stringify(config);\n if (\n config.dependencyDashboard === true ||\n stringifiedConfig.includes('\"dependencyDashboardApproval\":true') ||\n stringifiedConfig.includes('\"prCreation\":\"approval\"')\n ) {\n config.dependencyDashboardTitle =\n config.dependencyDashboardTitle ?? `Dependency Dashboard`;\n const issue = await platform.findIssue(config.dependencyDashboardTitle);\n if (issue) {\n config.dependencyDashboardIssue = issue.number;\n dashboardChecks = parseDashboardIssue(issue.body ?? '');\n }\n }\n\n if (config.checkedBranches) {\n const checkedBranchesRec: Record<string, string> = Object.fromEntries(\n config.checkedBranches.map((branchName) => [branchName, 'global-config']),\n );\n dashboardChecks.dependencyDashboardChecks = {\n ...dashboardChecks.dependencyDashboardChecks,\n ...checkedBranchesRec,\n };\n }\n\n Object.assign(config, dashboardChecks);\n}\n\nfunction getListItem(branch: BranchConfig, type: string): string {\n let item = ' - [ ] ';\n item += `<!-- ${type}-branch=${branch.branchName} -->`;\n if (branch.prNo) {\n // TODO: types (#22198)\n item += `[${branch.prTitle!}](../pull/${branch.prNo})`;\n } else {\n item += branch.prTitle;\n }\n const uniquePackages = [\n // TODO: types (#22198)\n ...new Set(branch.upgrades.map((upgrade) => `\\`${upgrade.depName!}\\``)),\n ];\n if (uniquePackages.length < 2) {\n return item + '\\n';\n }\n return item + ' (' + uniquePackages.join(', ') + ')\\n';\n}\n\nfunction appendRepoProblems(config: RenovateConfig, issueBody: string): string {\n let newIssueBody = issueBody;\n const repoProblems = extractRepoProblems(config.repository);\n if (repoProblems.size) {\n newIssueBody += '## Repository problems\\n\\n';\n const repoProblemsHeader =\n config.customizeDashboard?.repoProblemsHeader ??\n 'Renovate tried to run on this repository, but found these problems.';\n newIssueBody += template.compile(repoProblemsHeader, config) + '\\n\\n';\n\n for (const repoProblem of repoProblems) {\n newIssueBody += ` - ${repoProblem}\\n`;\n }\n newIssueBody += '\\n';\n }\n return newIssueBody;\n}\n\nexport async function ensureDependencyDashboard(\n config: SelectAllConfig,\n allBranches: BranchConfig[],\n packageFiles: Record<string, PackageFile[]> = {},\n configMigrationRes: ConfigMigrationResult,\n): Promise<void> {\n logger.debug('ensureDependencyDashboard()');\n if (config.mode === 'silent') {\n logger.debug(\n 'Dependency Dashboard issue is not created, updated or closed when mode=silent',\n );\n return;\n }\n // legacy/migrated issue\n const reuseTitle = 'Update Dependencies (Renovate Bot)';\n const branches = allBranches.filter(\n (branch) =>\n branch.result !== 'automerged' &&\n !branch.upgrades?.every((upgrade) => upgrade.remediationNotPossible),\n );\n if (\n !(\n config.dependencyDashboard === true ||\n config.dependencyDashboardApproval === true ||\n config.packageRules?.some((rule) => rule.dependencyDashboardApproval) ===\n true ||\n branches.some(\n (branch) =>\n !!branch.dependencyDashboardApproval ||\n !!branch.dependencyDashboardPrApproval,\n )\n )\n ) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n { title: config.dependencyDashboardTitle },\n 'DRY-RUN: Would close Dependency Dashboard',\n );\n } else {\n logger.debug('Closing Dependency Dashboard');\n await platform.ensureIssueClosing(config.dependencyDashboardTitle!);\n }\n return;\n }\n // istanbul ignore if\n if (config.repoIsOnboarded === false) {\n logger.debug('Repo is onboarding - skipping dependency dashboard');\n return;\n }\n logger.debug('Ensuring Dependency Dashboard');\n\n // Check packageFiles for any deprecations\n let hasDeprecations = false;\n const deprecatedPackages: Record<string, Record<string, boolean>> = {};\n logger.debug('Checking packageFiles for deprecated packages');\n if (is.nonEmptyObject(packageFiles)) {\n for (const [manager, fileNames] of Object.entries(packageFiles)) {\n for (const fileName of fileNames) {\n for (const dep of fileName.deps) {\n const name = dep.packageName ?? dep.depName;\n const hasReplacement = !!dep.updates?.find(\n (updates) => updates.updateType === 'replacement',\n );\n if (name && (dep.deprecationMessage ?? hasReplacement)) {\n hasDeprecations = true;\n deprecatedPackages[manager] ??= {};\n deprecatedPackages[manager][name] ??= hasReplacement;\n }\n }\n }\n }\n }\n\n const hasBranches = is.nonEmptyArray(branches);\n if (config.dependencyDashboardAutoclose && !hasBranches && !hasDeprecations) {\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n { title: config.dependencyDashboardTitle },\n 'DRY-RUN: Would close Dependency Dashboard',\n );\n } else {\n logger.debug('Closing Dependency Dashboard');\n await platform.ensureIssueClosing(config.dependencyDashboardTitle!);\n }\n return;\n }\n let issueBody = '';\n\n if (config.dependencyDashboardHeader?.length) {\n issueBody +=\n template.compile(config.dependencyDashboardHeader, config) + '\\n\\n';\n }\n\n if (configMigrationRes.result === 'pr-exists') {\n issueBody +=\n '## Config Migration Needed\\n\\n' +\n `<!-- config-migration-pr-info --> See Config Migration PR: #${configMigrationRes.prNumber}.\\n\\n`;\n } else if (configMigrationRes?.result === 'pr-modified') {\n issueBody +=\n '## Config Migration Needed (error)\\n\\n' +\n `<!-- config-migration-pr-info --> The Config Migration branch exists but has been modified by another user. Renovate will not push to this branch unless it is first deleted. \\n\\n See Config Migration PR: #${configMigrationRes.prNumber}.\\n\\n`;\n } else if (configMigrationRes?.result === 'add-checkbox') {\n issueBody +=\n '## Config Migration Needed\\n\\n' +\n ' - [ ] <!-- create-config-migration-pr --> Select this checkbox to let Renovate create an automated Config Migration PR.' +\n '\\n\\n';\n }\n\n issueBody = appendRepoProblems(config, issueBody);\n\n if (hasDeprecations) {\n issueBody += '> ⚠ **Warning**\\n> \\n';\n issueBody += 'These dependencies are deprecated:\\n\\n';\n issueBody += '| Datasource | Name | Replacement PR? |\\n';\n issueBody += '|------------|------|--------------|\\n';\n for (const manager of Object.keys(deprecatedPackages).sort()) {\n const deps = deprecatedPackages[manager];\n for (const depName of Object.keys(deps).sort()) {\n const hasReplacement = deps[depName];\n issueBody += `| ${manager} | \\`${depName}\\` | ${\n hasReplacement\n ? ''\n : ''\n } |\\n`;\n }\n }\n issueBody += '\\n';\n }\n\n if (config.dependencyDashboardReportAbandonment) {\n issueBody += getAbandonedPackagesMd(packageFiles);\n }\n\n const pendingApprovals = branches.filter(\n (branch) => branch.result === 'needs-approval',\n );\n if (pendingApprovals.length) {\n issueBody += '## Pending Approval\\n\\n';\n issueBody += `These branches will be created by Renovate only once you click their checkbox below.\\n\\n`;\n for (const branch of pendingApprovals) {\n issueBody += getListItem(branch, 'approve');\n }\n if (pendingApprovals.length > 1) {\n issueBody += ' - [ ] ';\n issueBody += '<!-- approve-all-pending-prs -->';\n issueBody += '🔐 **Create all pending approval PRs at once** 🔐\\n';\n }\n issueBody += '\\n';\n }\n const awaitingSchedule = branches.filter(\n (branch) => branch.result === 'not-scheduled',\n );\n if (awaitingSchedule.length) {\n issueBody += '## Awaiting Schedule\\n\\n';\n issueBody +=\n 'These updates are awaiting their schedule. Click on a checkbox to get an update now.\\n\\n';\n for (const branch of awaitingSchedule) {\n issueBody += getListItem(branch, 'unschedule');\n }\n issueBody += '\\n';\n }\n const rateLimited = branches.filter(\n (branch) =>\n branch.result === 'branch-limit-reached' ||\n branch.result === 'pr-limit-reached' ||\n branch.result === 'commit-limit-reached',\n );\n if (rateLimited.length) {\n issueBody += '## Rate-Limited\\n\\n';\n issueBody +=\n 'These updates are currently rate-limited. Click on a checkbox below to force their creation now.\\n\\n';\n for (const branch of rateLimited) {\n issueBody += getListItem(branch, 'unlimit');\n }\n if (rateLimited.length > 1) {\n issueBody += ' - [ ] ';\n issueBody += '<!-- create-all-rate-limited-prs -->';\n issueBody += '🔐 **Create all rate-limited PRs at once** 🔐\\n';\n }\n issueBody += '\\n';\n }\n const errorList = branches.filter((branch) => branch.result === 'error');\n if (errorList.length) {\n issueBody += '## Errored\\n\\n';\n issueBody +=\n 'These updates encountered an error and will be retried. Click on a checkbox below to force a retry now.\\n\\n';\n for (const branch of errorList) {\n issueBody += getListItem(branch, 'retry');\n }\n issueBody += '\\n';\n }\n const awaitingPr = branches.filter(\n (branch) => branch.result === 'needs-pr-approval',\n );\n if (awaitingPr.length) {\n issueBody += '## PR Creation Approval Required\\n\\n';\n issueBody +=\n \"These branches exist but PRs won't be created until you approve them by clicking on a checkbox.\\n\\n\";\n for (const branch of awaitingPr) {\n issueBody += getListItem(branch, 'approvePr');\n }\n issueBody += '\\n';\n }\n const prEdited = branches.filter((branch) => branch.result === 'pr-edited');\n if (prEdited.length) {\n issueBody += '## Edited/Blocked\\n\\n';\n issueBody += `These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.\\n\\n`;\n for (const branch of prEdited) {\n issueBody += getListItem(branch, 'rebase');\n }\n issueBody += '\\n';\n }\n const prPending = branches.filter((branch) => branch.result === 'pending');\n if (prPending.length) {\n issueBody += '## Pending Status Checks\\n\\n';\n issueBody += `These updates await pending status checks. To force their creation now, click the checkbox below.\\n\\n`;\n for (const branch of prPending) {\n issueBody += getListItem(branch, 'approvePr');\n }\n issueBody += '\\n';\n }\n const prPendingBranchAutomerge = branches.filter(\n (branch) => branch.prBlockedBy === 'BranchAutomerge',\n );\n if (prPendingBranchAutomerge.length) {\n issueBody += '## Pending Branch Automerge\\n\\n';\n issueBody += `These updates await pending status checks before automerging. Click on a checkbox to abort the branch automerge, and create a PR instead.\\n\\n`;\n for (const branch of prPendingBranchAutomerge) {\n issueBody += getListItem(branch, 'approvePr');\n }\n issueBody += '\\n';\n }\n\n const warn = getDepWarningsDashboard(packageFiles, config);\n if (warn) {\n issueBody += warn;\n issueBody += '\\n';\n }\n\n const otherRes = [\n 'pending',\n 'needs-approval',\n 'needs-pr-approval',\n 'not-scheduled',\n 'pr-limit-reached',\n 'commit-limit-reached',\n 'branch-limit-reached',\n 'already-existed',\n 'error',\n 'automerged',\n 'pr-edited',\n ];\n let inProgress = branches.filter(\n (branch) =>\n !otherRes.includes(branch.result!) &&\n branch.prBlockedBy !== 'BranchAutomerge',\n );\n const otherBranches = inProgress.filter(\n (branch) => !!branch.prBlockedBy || !branch.prNo,\n );\n // istanbul ignore if\n if (otherBranches.length) {\n issueBody += '## Other Branches\\n\\n';\n issueBody += `These updates are pending. To force PRs open, click the checkbox below.\\n\\n`;\n for (const branch of otherBranches) {\n issueBody += getListItem(branch, 'other');\n }\n issueBody += '\\n';\n }\n inProgress = inProgress.filter(\n (branch) => branch.prNo && !branch.prBlockedBy,\n );\n if (inProgress.length) {\n issueBody += '## Open\\n\\n';\n issueBody +=\n 'These updates have all been created already. Click a checkbox below to force a retry/rebase of any.\\n\\n';\n for (const branch of inProgress) {\n issueBody += getListItem(branch, 'rebase');\n }\n if (inProgress.length > 2) {\n issueBody += ' - [ ] ';\n issueBody += '<!-- rebase-all-open-prs -->';\n issueBody += '**Click on this checkbox to rebase all open PRs at once**';\n issueBody += '\\n';\n }\n issueBody += '\\n';\n }\n const alreadyExisted = branches.filter(\n (branch) => branch.result === 'already-existed',\n );\n if (alreadyExisted.length) {\n issueBody += '## Ignored or Blocked\\n\\n';\n issueBody +=\n 'These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.\\n\\n';\n for (const branch of alreadyExisted) {\n issueBody += getListItem(branch, 'recreate');\n }\n issueBody += '\\n';\n }\n\n if (!hasBranches) {\n issueBody +=\n 'This repository currently has no open or pending branches.\\n\\n';\n }\n\n // add CVE section\n issueBody += await getDashboardMarkdownVulnerabilities(config, packageFiles);\n\n // fit the detected dependencies section\n const footer = getFooter(config);\n issueBody += PackageFiles.getDashboardMarkdown(\n platform.maxBodyLength() - issueBody.length - footer.length,\n );\n\n issueBody += footer;\n\n if (config.dependencyDashboardIssue) {\n // If we're not changing the dashboard issue then we can skip checking if the user changed it\n // The cached issue we get back here will reflect its state at the _start_ of our run\n const cachedIssue = await platform.getIssue?.(\n config.dependencyDashboardIssue,\n );\n if (cachedIssue?.body === issueBody) {\n logger.debug('No changes to dependency dashboard issue needed');\n return;\n }\n\n // Skip cache when getting the issue to ensure we get the latest body,\n // including any updates the user made after we started the run\n const updatedIssue = await platform.getIssue?.(\n config.dependencyDashboardIssue,\n false,\n );\n if (updatedIssue) {\n const { dependencyDashboardChecks } = parseDashboardIssue(\n coerceString(updatedIssue.body),\n );\n for (const branchName of Object.keys(config.dependencyDashboardChecks!)) {\n delete dependencyDashboardChecks[branchName];\n }\n for (const branchName of Object.keys(dependencyDashboardChecks)) {\n const checkText = `- [ ] <!-- ${dependencyDashboardChecks[branchName]}-branch=${branchName} -->`;\n issueBody = issueBody.replace(\n checkText,\n checkText.replace('[ ]', '[x]'),\n );\n }\n }\n }\n\n if (GlobalConfig.get('dryRun')) {\n logger.info(\n { title: config.dependencyDashboardTitle },\n 'DRY-RUN: Would ensure Dependency Dashboard',\n );\n } else {\n await platform.ensureIssue({\n title: config.dependencyDashboardTitle!,\n reuseTitle,\n body: platform.massageMarkdown(issueBody),\n labels: config.dependencyDashboardLabels,\n confidential: config.confidential,\n });\n }\n}\n\nexport function getAbandonedPackagesMd(\n packageFiles: Record<string, PackageFile[]>,\n): string {\n const abandonedPackages: Record<\n string,\n Record<string, string | undefined | null>\n > = {};\n let abandonedCount = 0;\n\n for (const [manager, managerPackageFiles] of Object.entries(packageFiles)) {\n for (const packageFile of managerPackageFiles) {\n for (const dep of coerceArray(packageFile.deps)) {\n if (dep.depName && dep.isAbandoned) {\n abandonedCount++;\n abandonedPackages[manager] = abandonedPackages[manager] || {};\n abandonedPackages[manager][dep.depName] = dep.mostRecentTimestamp;\n }\n }\n }\n }\n\n if (abandonedCount === 0) {\n return '';\n }\n\n let abandonedMd = '> ℹ **Note**\\n> \\n';\n abandonedMd +=\n 'These dependencies have not received updates for an extended period and may be unmaintained:\\n\\n';\n\n abandonedMd += '<details>\\n';\n abandonedMd += `<summary>View abandoned dependencies (${abandonedCount})</summary>\\n\\n`;\n abandonedMd += '| Datasource | Name | Last Updated |\\n';\n abandonedMd += '|------------|------|-------------|\\n';\n\n for (const manager of Object.keys(abandonedPackages).sort()) {\n const deps = abandonedPackages[manager];\n for (const depName of Object.keys(deps).sort()) {\n const mostRecentTimestamp = deps[depName];\n const formattedDate = mostRecentTimestamp\n ? DateTime.fromISO(mostRecentTimestamp).toFormat('yyyy-MM-dd')\n : 'unknown';\n abandonedMd += `| ${manager} | \\`${depName}\\` | \\`${formattedDate}\\` |\\n`;\n }\n }\n\n abandonedMd += '\\n</details>\\n\\n';\n abandonedMd +=\n 'Packages are marked as abandoned when they exceed the [`abandonmentThreshold`](https://docs.renovatebot.com/configuration-options/#abandonmentthreshold) since their last release.\\n';\n abandonedMd +=\n 'Unlike deprecated packages with official notices, abandonment is detected by release inactivity.\\n\\n';\n\n return abandonedMd + '\\n';\n}\n\nfunction getFooter(config: RenovateConfig): string {\n let footer = '';\n if (config.dependencyDashboardFooter?.length) {\n footer +=\n '---\\n' +\n template.compile(config.dependencyDashboardFooter, config) +\n '\\n';\n }\n\n return footer;\n}\n\nexport async function getDashboardMarkdownVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<string> {\n let result = '';\n\n if (\n is.nullOrUndefined(config.dependencyDashboardOSVVulnerabilitySummary) ||\n config.dependencyDashboardOSVVulnerabilitySummary === 'none'\n ) {\n return result;\n }\n\n result += '## Vulnerabilities\\n\\n';\n\n const vulnerabilityFetcher = await Vulnerabilities.create();\n const vulnerabilities = await vulnerabilityFetcher.fetchVulnerabilities(\n config,\n packageFiles,\n );\n\n if (vulnerabilities.length === 0) {\n result +=\n 'Renovate has not found any CVEs on [osv.dev](https://osv.dev).\\n\\n';\n return result;\n }\n\n const unresolvedVulnerabilities = vulnerabilities.filter((value) =>\n is.nullOrUndefined(value.fixedVersion),\n );\n const resolvedVulnerabilitiesLength =\n vulnerabilities.length - unresolvedVulnerabilities.length;\n\n result += `\\`${resolvedVulnerabilitiesLength}\\`/\\`${vulnerabilities.length}\\``;\n if (is.truthy(config.osvVulnerabilityAlerts)) {\n result += ' CVEs have Renovate fixes.\\n';\n } else {\n result +=\n ' CVEs have possible Renovate fixes.\\nSee [`osvVulnerabilityAlerts`](https://docs.renovatebot.com/configuration-options/#osvvulnerabilityalerts) to allow Renovate to supply fixes.\\n';\n }\n\n let renderedVulnerabilities: Vulnerability[];\n switch (config.dependencyDashboardOSVVulnerabilitySummary) {\n // filter vulnerabilities to display based on configuration\n case 'unresolved':\n renderedVulnerabilities = unresolvedVulnerabilities;\n break;\n default:\n renderedVulnerabilities = vulnerabilities;\n }\n\n const managerRecords: Record<\n string,\n Record<string, Record<string, Vulnerability[]>>\n > = {};\n for (const vulnerability of renderedVulnerabilities) {\n const { manager, packageFile } = vulnerability.packageFileConfig;\n if (is.nullOrUndefined(managerRecords[manager!])) {\n managerRecords[manager!] = {};\n }\n if (is.nullOrUndefined(managerRecords[manager!][packageFile])) {\n managerRecords[manager!][packageFile] = {};\n }\n if (\n is.nullOrUndefined(\n managerRecords[manager!][packageFile][vulnerability.packageName],\n )\n ) {\n managerRecords[manager!][packageFile][vulnerability.packageName] = [];\n }\n managerRecords[manager!][packageFile][vulnerability.packageName].push(\n vulnerability,\n );\n }\n\n for (const [manager, packageFileRecords] of Object.entries(managerRecords)) {\n result += `<details><summary>${manager}</summary>\\n<blockquote>\\n\\n`;\n for (const [packageFile, packageNameRecords] of Object.entries(\n packageFileRecords,\n )) {\n result += `<details><summary>${packageFile}</summary>\\n<blockquote>\\n\\n`;\n for (const [packageName, cves] of Object.entries(packageNameRecords)) {\n result += `<details><summary>${packageName}</summary>\\n<blockquote>\\n\\n`;\n for (const vul of cves) {\n const id = vul.vulnerability.id;\n const suffix = is.nonEmptyString(vul.fixedVersion)\n ? ` (fixed in ${vul.fixedVersion})`\n : '';\n result += `- [${id}](https://osv.dev/vulnerability/${id})${suffix}\\n`;\n }\n result += `</blockquote>\\n</details>\\n\\n`;\n }\n result += `</blockquote>\\n</details>\\n\\n`;\n }\n result += `</blockquote>\\n</details>\\n\\n`;\n }\n\n return result;\n}\n"]}
|
@@ -123,6 +123,7 @@ async function renovateRepository(repoConfig, canRetry = true) {
|
|
123
123
|
stats_1.HttpCacheStats.report();
|
124
124
|
stats_1.LookupStats.report();
|
125
125
|
stats_1.ObsoleteCacheHitLogger.report();
|
126
|
+
stats_1.AbandonedPackageStats.report();
|
126
127
|
const cloned = (0, git_1.isCloned)();
|
127
128
|
logger_1.logger.info({ cloned, durationMs: splits.total }, 'Repository finished');
|
128
129
|
(0, remap_1.resetRepositoryLogLevelRemaps)();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/workers/repository/index.ts"],"names":[],"mappings":";;AA6CA,gDA8GC;AAWD,0DAQC;;AA9KD,gEAA0B;AAC1B,gDAAmD;AACnD,kDAA4D;AAE5D,mEAIwC;AACxC,iDAAuC;AACvC,2DAAmD;AACnD,+DAAqE;AACrE,yCAA+C;AAC/C,8CAAmE;AACnE,mDAAkE;AAClE,sCAAiE;AACjE,wCAA0C;AAC1C,sDAAgE;AAChE,qEAA+C;AAC/C,2EAAqD;AACrD,4CAAkE;AAClE,4CAO0B;AAC1B,mCAAyC;AACzC,qCAA+C;AAC/C,yDAAqD;AACrD,iEAAmE;AACnE,4DAAkC;AAClC,yCAA0C;AAC1C,4CAAsD;AACtD,iCAAkC;AAClC,gDAAsD;AACtD,wCAAqD;AACrD,uCAA4D;AAG5D,qCAAyC;AAEzC,uBAAuB;AAChB,KAAK,UAAU,kBAAkB,CACtC,UAA0B,EAC1B,QAAQ,GAAG,IAAI;IAEf,IAAA,iBAAS,GAAE,CAAC;IACZ,IAAI,MAAM,GAAG,qBAAY,CAAC,GAAG,CAC3B,IAAA,8BAAoB,EAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CACnD,CAAC;IACF,MAAM,IAAA,iCAAwB,GAAE,CAAC;IACjC,IAAA,gBAAO,EAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,eAAM,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,gBAAG,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACpE,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzB,IAAI,UAAqC,CAAC;IAC1C,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,MAAM,QAAQ,GAAG,qBAAY,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7B,eAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,CAAC;QAC5C,MAAM,GAAG,MAAM,IAAA,eAAQ,EAAC,MAAM,CAAC,CAAC;QAChC,IAAA,gBAAQ,EAAC,MAAM,CAAC,CAAC;QACjB,MAAM,cAAc,GAClB,MAAM,CAAC,eAAgB;YACvB,CAAC,wBAAe,CAAC,oBAAoB;YACrC,wBAAe,CAAC,iBAAiB,CAAC;QACpC,MAAM,aAAa,GAAG,cAAc;YAClC,CAAC,CAAC,MAAM,IAAA,4BAAU,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAC;YAChE,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzB,IAAA,8BAAkB,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE1C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;QAE7D,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;YACtC,MAAM,CAAC,eAAe,GAAG,MAAM,IAAA,gCAAqB,GAAE,CAAC;QACzD,CAAC;QAED,IACE,qBAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;YACvC,qBAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EACxC,CAAC;YACD,MAAM,IAAA,4BAAU,EAAC,YAAY,EAAE,GAAG,EAAE,CAClC,IAAA,uBAAkB,EAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CACnD,CAAC;YACF,IAAA,gBAAQ,EAAC,YAAY,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAU,EAAC,QAAQ,EAAE,GAAG,EAAE,CAC1C,IAAA,oBAAU,EAAC,MAAM,EAAE,QAAQ,CAAC,CAC7B,CAAC;YACF,IAAA,gBAAO,EAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3C,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;YACnB,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,IAAA,sBAAc,EAAC,QAAQ,CAAC,CAAC,CAAC,8CAA8C;YAChF,CAAC;YACD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;gBACzB,IAAI,QAAQ,EAAE,CAAC;oBACb,eAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;oBAChE,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBACjE,OAAO,YAAY,CAAC;gBACtB,CAAC;gBACD,eAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,kBAAkB,GAAG,MAAM,IAAA,kCAAe,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACrE,MAAM,IAAA,gDAAyB,EAC7B,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,kBAAkB,CACnB,CAAC;YACJ,CAAC;YACD,MAAM,IAAA,uBAAY,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACvC,cAAc;YACd,UAAU,GAAG,IAAA,sBAAa,EAAC,MAAM,EAAE,GAAI,CAAC,CAAC;QAC3C,CAAC;QACD,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,0BAA0B,CAAC,CAAC;QACxC,IAAA,gBAAO,EAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG;YACtB,8CAA6B;YAC7B,kCAAiB;YACjB,qCAAoB;SACrB,CAAC;QACF,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,IAAA,0BAAkB,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,UAAU,GAAG,IAAA,sBAAa,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,IAAA,oBAAe,EAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,wBAAwB,CAAC,CAAC;YACtC,eAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAA,oBAAe,GAAE,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACtC,eAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,gCAAgC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,iBAAS,GAAE,CAAC;IAC3B,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,yCAAyC,CAAC,CAAC;IAChE,yBAAiB,CAAC,MAAM,EAAE,CAAC;IAC3B,4BAAoB,CAAC,MAAM,EAAE,CAAC;IAC9B,iBAAS,CAAC,MAAM,EAAE,CAAC;IACnB,sBAAc,CAAC,MAAM,EAAE,CAAC;IACxB,mBAAW,CAAC,MAAM,EAAE,CAAC;IACrB,8BAAsB,CAAC,MAAM,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAA,cAAQ,GAAE,CAAC;IAC1B,eAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACzE,IAAA,qCAA6B,GAAE,CAAC;IAChC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,sDAAsD;AACtD,SAAS,YAAY,CAAC,MAAsB;IAC1C,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,CAAC,MAAM,CAAC,gBAAiB,CAAC,EAAE,0BAA0B;QAClE,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,UAA8B;IACpE,MAAM,YAAY,GAAG,IAAA,4BAAmB,EAAC,UAAU,CAAC,CAAC;IACrD,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;QACtB,eAAM,CAAC,KAAK,CACV,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAC1C,qBAAqB,CACtB,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import fs from 'fs-extra';\nimport { GlobalConfig } from '../../config/global';\nimport { applySecretsToConfig } from '../../config/secrets';\nimport type { RenovateConfig } from '../../config/types';\nimport {\n REPOSITORY_DISABLED_BY_CONFIG,\n REPOSITORY_FORKED,\n REPOSITORY_NO_CONFIG,\n} from '../../constants/error-messages';\nimport { pkg } from '../../expose.cjs';\nimport { instrument } from '../../instrumentation';\nimport { addExtractionStats } from '../../instrumentation/reporting';\nimport { logger, setMeta } from '../../logger';\nimport { resetRepositoryLogLevelRemaps } from '../../logger/remap';\nimport { removeDanglingContainers } from '../../util/exec/docker';\nimport { deleteLocalFile, privateCacheDir } from '../../util/fs';\nimport { isCloned } from '../../util/git';\nimport { detectSemanticCommits } from '../../util/git/semantic';\nimport * as queue from '../../util/http/queue';\nimport * as throttle from '../../util/http/throttle';\nimport { addSplit, getSplits, splitInit } from '../../util/split';\nimport {\n DatasourceCacheStats,\n HttpCacheStats,\n HttpStats,\n LookupStats,\n ObsoleteCacheHitLogger,\n PackageCacheStats,\n} from '../../util/stats';\nimport { setBranchCache } from './cache';\nimport { extractRepoProblems } from './common';\nimport { configMigration } from './config-migration';\nimport { ensureDependencyDashboard } from './dependency-dashboard';\nimport handleError from './error';\nimport { finalizeRepo } from './finalize';\nimport { pruneStaleBranches } from './finalize/prune';\nimport { initRepo } from './init';\nimport { OnboardingState } from './onboarding/common';\nimport { ensureOnboardingPr } from './onboarding/pr';\nimport { extractDependencies, updateRepo } from './process';\nimport type { ExtractResult } from './process/extract-update';\nimport type { ProcessResult } from './result';\nimport { processResult } from './result';\n\n// istanbul ignore next\nexport async function renovateRepository(\n repoConfig: RenovateConfig,\n canRetry = true,\n): Promise<ProcessResult | undefined> {\n splitInit();\n let config = GlobalConfig.set(\n applySecretsToConfig(repoConfig, undefined, false),\n );\n await removeDanglingContainers();\n setMeta({ repository: config.repository });\n logger.info({ renovateVersion: pkg.version }, 'Repository started');\n logger.trace({ config });\n let repoResult: ProcessResult | undefined;\n queue.clear();\n throttle.clear();\n const localDir = GlobalConfig.get('localDir')!;\n try {\n await fs.ensureDir(localDir);\n logger.debug('Using localDir: ' + localDir);\n config = await initRepo(config);\n addSplit('init');\n const performExtract =\n config.repoIsOnboarded! ||\n !OnboardingState.onboardingCacheValid ||\n OnboardingState.prUpdateRequested;\n const extractResult = performExtract\n ? await instrument('extract', () => extractDependencies(config))\n : emptyExtract(config);\n addExtractionStats(config, extractResult);\n\n const { branches, branchList, packageFiles } = extractResult;\n\n if (config.semanticCommits === 'auto') {\n config.semanticCommits = await detectSemanticCommits();\n }\n\n if (\n GlobalConfig.get('dryRun') !== 'lookup' &&\n GlobalConfig.get('dryRun') !== 'extract'\n ) {\n await instrument('onboarding', () =>\n ensureOnboardingPr(config, packageFiles, branches),\n );\n addSplit('onboarding');\n const res = await instrument('update', () =>\n updateRepo(config, branches),\n );\n setMeta({ repository: config.repository });\n addSplit('update');\n if (performExtract) {\n await setBranchCache(branches); // update branch cache if performed extraction\n }\n if (res === 'automerged') {\n if (canRetry) {\n logger.info('Restarting repository job after automerge result');\n const recursiveRes = await renovateRepository(repoConfig, false);\n return recursiveRes;\n }\n logger.debug(`Automerged but already retried once`);\n } else {\n const configMigrationRes = await configMigration(config, branchList);\n await ensureDependencyDashboard(\n config,\n branches,\n packageFiles,\n configMigrationRes,\n );\n }\n await finalizeRepo(config, branchList);\n // TODO #22198\n repoResult = processResult(config, res!);\n }\n printRepositoryProblems(config.repository);\n } catch (err) /* istanbul ignore next */ {\n setMeta({ repository: config.repository });\n const errorRes = await handleError(config, err);\n const pruneWhenErrors = [\n REPOSITORY_DISABLED_BY_CONFIG,\n REPOSITORY_FORKED,\n REPOSITORY_NO_CONFIG,\n ];\n if (pruneWhenErrors.includes(errorRes)) {\n await pruneStaleBranches(config, []);\n }\n repoResult = processResult(config, errorRes);\n }\n if (localDir && !repoConfig.persistRepoData) {\n try {\n await deleteLocalFile('.');\n } catch (err) /* istanbul ignore if */ {\n logger.warn({ err }, 'localDir deletion error');\n }\n }\n try {\n await fs.remove(privateCacheDir());\n } catch (err) /* istanbul ignore if */ {\n logger.warn({ err }, 'privateCacheDir deletion error');\n }\n const splits = getSplits();\n logger.debug(splits, 'Repository timing splits (milliseconds)');\n PackageCacheStats.report();\n DatasourceCacheStats.report();\n HttpStats.report();\n HttpCacheStats.report();\n LookupStats.report();\n ObsoleteCacheHitLogger.report();\n const cloned = isCloned();\n logger.info({ cloned, durationMs: splits.total }, 'Repository finished');\n resetRepositoryLogLevelRemaps();\n return repoResult;\n}\n\n// istanbul ignore next: renovateRepository is ignored\nfunction emptyExtract(config: RenovateConfig): ExtractResult {\n return {\n branches: [],\n branchList: [config.onboardingBranch!], // to prevent auto closing\n packageFiles: {},\n };\n}\n\nexport function printRepositoryProblems(repository: string | undefined): void {\n const repoProblems = extractRepoProblems(repository);\n if (repoProblems.size) {\n logger.debug(\n { repoProblems: Array.from(repoProblems) },\n 'repository problems',\n );\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/workers/repository/index.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport { GlobalConfig } from '../../config/global';\nimport { applySecretsToConfig } from '../../config/secrets';\nimport type { RenovateConfig } from '../../config/types';\nimport {\n REPOSITORY_DISABLED_BY_CONFIG,\n REPOSITORY_FORKED,\n REPOSITORY_NO_CONFIG,\n} from '../../constants/error-messages';\nimport { pkg } from '../../expose.cjs';\nimport { instrument } from '../../instrumentation';\nimport { addExtractionStats } from '../../instrumentation/reporting';\nimport { logger, setMeta } from '../../logger';\nimport { resetRepositoryLogLevelRemaps } from '../../logger/remap';\nimport { removeDanglingContainers } from '../../util/exec/docker';\nimport { deleteLocalFile, privateCacheDir } from '../../util/fs';\nimport { isCloned } from '../../util/git';\nimport { detectSemanticCommits } from '../../util/git/semantic';\nimport * as queue from '../../util/http/queue';\nimport * as throttle from '../../util/http/throttle';\nimport { addSplit, getSplits, splitInit } from '../../util/split';\nimport {\n AbandonedPackageStats,\n DatasourceCacheStats,\n HttpCacheStats,\n HttpStats,\n LookupStats,\n ObsoleteCacheHitLogger,\n PackageCacheStats,\n} from '../../util/stats';\nimport { setBranchCache } from './cache';\nimport { extractRepoProblems } from './common';\nimport { configMigration } from './config-migration';\nimport { ensureDependencyDashboard } from './dependency-dashboard';\nimport handleError from './error';\nimport { finalizeRepo } from './finalize';\nimport { pruneStaleBranches } from './finalize/prune';\nimport { initRepo } from './init';\nimport { OnboardingState } from './onboarding/common';\nimport { ensureOnboardingPr } from './onboarding/pr';\nimport { extractDependencies, updateRepo } from './process';\nimport type { ExtractResult } from './process/extract-update';\nimport type { ProcessResult } from './result';\nimport { processResult } from './result';\n\n// istanbul ignore next\nexport async function renovateRepository(\n repoConfig: RenovateConfig,\n canRetry = true,\n): Promise<ProcessResult | undefined> {\n splitInit();\n let config = GlobalConfig.set(\n applySecretsToConfig(repoConfig, undefined, false),\n );\n await removeDanglingContainers();\n setMeta({ repository: config.repository });\n logger.info({ renovateVersion: pkg.version }, 'Repository started');\n logger.trace({ config });\n let repoResult: ProcessResult | undefined;\n queue.clear();\n throttle.clear();\n const localDir = GlobalConfig.get('localDir')!;\n try {\n await fs.ensureDir(localDir);\n logger.debug('Using localDir: ' + localDir);\n config = await initRepo(config);\n addSplit('init');\n const performExtract =\n config.repoIsOnboarded! ||\n !OnboardingState.onboardingCacheValid ||\n OnboardingState.prUpdateRequested;\n const extractResult = performExtract\n ? await instrument('extract', () => extractDependencies(config))\n : emptyExtract(config);\n addExtractionStats(config, extractResult);\n\n const { branches, branchList, packageFiles } = extractResult;\n\n if (config.semanticCommits === 'auto') {\n config.semanticCommits = await detectSemanticCommits();\n }\n\n if (\n GlobalConfig.get('dryRun') !== 'lookup' &&\n GlobalConfig.get('dryRun') !== 'extract'\n ) {\n await instrument('onboarding', () =>\n ensureOnboardingPr(config, packageFiles, branches),\n );\n addSplit('onboarding');\n const res = await instrument('update', () =>\n updateRepo(config, branches),\n );\n setMeta({ repository: config.repository });\n addSplit('update');\n if (performExtract) {\n await setBranchCache(branches); // update branch cache if performed extraction\n }\n if (res === 'automerged') {\n if (canRetry) {\n logger.info('Restarting repository job after automerge result');\n const recursiveRes = await renovateRepository(repoConfig, false);\n return recursiveRes;\n }\n logger.debug(`Automerged but already retried once`);\n } else {\n const configMigrationRes = await configMigration(config, branchList);\n await ensureDependencyDashboard(\n config,\n branches,\n packageFiles,\n configMigrationRes,\n );\n }\n await finalizeRepo(config, branchList);\n // TODO #22198\n repoResult = processResult(config, res!);\n }\n printRepositoryProblems(config.repository);\n } catch (err) /* istanbul ignore next */ {\n setMeta({ repository: config.repository });\n const errorRes = await handleError(config, err);\n const pruneWhenErrors = [\n REPOSITORY_DISABLED_BY_CONFIG,\n REPOSITORY_FORKED,\n REPOSITORY_NO_CONFIG,\n ];\n if (pruneWhenErrors.includes(errorRes)) {\n await pruneStaleBranches(config, []);\n }\n repoResult = processResult(config, errorRes);\n }\n if (localDir && !repoConfig.persistRepoData) {\n try {\n await deleteLocalFile('.');\n } catch (err) /* istanbul ignore if */ {\n logger.warn({ err }, 'localDir deletion error');\n }\n }\n try {\n await fs.remove(privateCacheDir());\n } catch (err) /* istanbul ignore if */ {\n logger.warn({ err }, 'privateCacheDir deletion error');\n }\n const splits = getSplits();\n logger.debug(splits, 'Repository timing splits (milliseconds)');\n PackageCacheStats.report();\n DatasourceCacheStats.report();\n HttpStats.report();\n HttpCacheStats.report();\n LookupStats.report();\n ObsoleteCacheHitLogger.report();\n AbandonedPackageStats.report();\n const cloned = isCloned();\n logger.info({ cloned, durationMs: splits.total }, 'Repository finished');\n resetRepositoryLogLevelRemaps();\n return repoResult;\n}\n\n// istanbul ignore next: renovateRepository is ignored\nfunction emptyExtract(config: RenovateConfig): ExtractResult {\n return {\n branches: [],\n branchList: [config.onboardingBranch!], // to prevent auto closing\n packageFiles: {},\n };\n}\n\nexport function printRepositoryProblems(repository: string | undefined): void {\n const repoProblems = extractRepoProblems(repository);\n if (repoProblems.size) {\n logger.debug(\n { repoProblems: Array.from(repoProblems) },\n 'repository problems',\n );\n }\n}\n"]}
|
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
|
|
5
5
|
const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
|
6
6
|
const dequal_1 = require("dequal");
|
7
7
|
const config_1 = require("../../../config");
|
8
|
+
const decrypt_1 = require("../../../config/decrypt");
|
8
9
|
const parse_1 = require("../../../config/parse");
|
9
10
|
const presets_1 = require("../../../config/presets");
|
10
11
|
const secrets_1 = require("../../../config/secrets");
|
@@ -68,9 +69,10 @@ async function mergeInheritedConfig(config) {
|
|
68
69
|
if (res.warnings.length) {
|
69
70
|
logger_1.logger.warn({ warnings: res.warnings }, 'Found warnings in inherited configuration.');
|
70
71
|
}
|
71
|
-
let
|
72
|
-
|
73
|
-
|
72
|
+
let decryptedConfig = await (0, decrypt_1.decryptConfig)(inheritedConfig, config.repository);
|
73
|
+
let filteredConfig = (0, config_1.removeGlobalConfig)(decryptedConfig, true);
|
74
|
+
if (!(0, dequal_1.dequal)(decryptedConfig, filteredConfig)) {
|
75
|
+
logger_1.logger.debug({ inheritedConfig: decryptedConfig, filteredConfig }, 'Removed global config from inherited config.');
|
74
76
|
}
|
75
77
|
if (is_1.default.nullOrUndefined(filteredConfig.extends)) {
|
76
78
|
filteredConfig = (0, secrets_1.applySecretsToConfig)(filteredConfig, config.secrets ?? {});
|
@@ -88,10 +90,12 @@ async function mergeInheritedConfig(config) {
|
|
88
90
|
if (validationRes.warnings.length) {
|
89
91
|
logger_1.logger.warn({ warnings: validationRes.warnings }, 'Found warnings in presets inside the inherited configuration.');
|
90
92
|
}
|
93
|
+
// decrypt again, as resolved presets could contain encrypted values
|
94
|
+
decryptedConfig = await (0, decrypt_1.decryptConfig)(resolvedConfig, config.repository);
|
91
95
|
// remove global config options once again, as resolved presets could have added some
|
92
|
-
filteredConfig = (0, config_1.removeGlobalConfig)(
|
93
|
-
if (!(0, dequal_1.dequal)(
|
94
|
-
logger_1.logger.debug({ inheritedConfig:
|
96
|
+
filteredConfig = (0, config_1.removeGlobalConfig)(decryptedConfig, true);
|
97
|
+
if (!(0, dequal_1.dequal)(decryptedConfig, filteredConfig)) {
|
98
|
+
logger_1.logger.debug({ inheritedConfig: decryptedConfig, filteredConfig }, 'Removed global config from inherited config presets.');
|
95
99
|
}
|
96
100
|
filteredConfig = (0, secrets_1.applySecretsToConfig)(filteredConfig, config.secrets ?? {});
|
97
101
|
setInheritedHostRules(filteredConfig);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"inherited.js","sourceRoot":"","sources":["../../../../lib/workers/repository/init/inherited.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { dequal } from 'dequal';\nimport { mergeChildConfig, removeGlobalConfig } from '../../../config';\nimport { parseFileConfig } from '../../../config/parse';\nimport { resolveConfigPresets } from '../../../config/presets';\nimport { applySecretsToConfig } from '../../../config/secrets';\nimport type { RenovateConfig } from '../../../config/types';\nimport { validateConfig } from '../../../config/validation';\nimport {\n CONFIG_INHERIT_NOT_FOUND,\n CONFIG_INHERIT_PARSE_ERROR,\n CONFIG_VALIDATION,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { platform } from '../../../modules/platform';\nimport * as hostRules from '../../../util/host-rules';\nimport * as queue from '../../../util/http/queue';\nimport * as throttle from '../../../util/http/throttle';\nimport * as template from '../../../util/template';\n\nexport async function mergeInheritedConfig(\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n // typescript doesn't know that repo is defined\n if (!config.repository || !config.inheritConfig) {\n return config;\n }\n if (\n !is.string(config.inheritConfigRepoName) ||\n !is.string(config.inheritConfigFileName)\n ) {\n // Config validation should prevent this error\n logger.error(\n {\n inheritConfigRepoName: config.inheritConfigRepoName,\n inheritConfigFileName: config.inheritConfigFileName,\n },\n 'Invalid inherited config.',\n );\n return config;\n }\n const templateConfig = {\n topLevelOrg: config.topLevelOrg,\n parentOrg: config.parentOrg,\n repository: config.repository,\n };\n const inheritConfigRepoName = template.compile(\n config.inheritConfigRepoName,\n templateConfig,\n false,\n );\n logger.trace(\n { templateConfig, inheritConfigRepoName },\n 'Compiled inheritConfigRepoName result.',\n );\n logger.debug(\n `Checking for inherited config file ${config.inheritConfigFileName} in repo ${inheritConfigRepoName}.`,\n );\n let configFileRaw: string | null = null;\n try {\n configFileRaw = await platform.getRawFile(\n config.inheritConfigFileName,\n inheritConfigRepoName,\n );\n } catch (err) {\n if (config.inheritConfigStrict) {\n logger.debug({ err }, 'Error getting inherited config.');\n throw new Error(CONFIG_INHERIT_NOT_FOUND);\n }\n logger.trace({ err }, `Error getting inherited config.`);\n }\n if (!configFileRaw) {\n logger.debug(`No inherited config found in ${inheritConfigRepoName}.`);\n return config;\n }\n const parseResult = parseFileConfig(\n config.inheritConfigFileName,\n configFileRaw,\n );\n if (!parseResult.success) {\n logger.debug({ parseResult }, 'Error parsing inherited config.');\n throw new Error(CONFIG_INHERIT_PARSE_ERROR);\n }\n const inheritedConfig = parseResult.parsedContents as RenovateConfig;\n logger.debug({ config: inheritedConfig }, `Inherited config`);\n const res = await validateConfig('inherit', inheritedConfig);\n if (res.errors.length) {\n logger.warn(\n { errors: res.errors },\n 'Found errors in inherited configuration.',\n );\n throw new Error(CONFIG_VALIDATION);\n }\n if (res.warnings.length) {\n logger.warn(\n { warnings: res.warnings },\n 'Found warnings in inherited configuration.',\n );\n }\n let filteredConfig = removeGlobalConfig(inheritedConfig, true);\n if (!dequal(inheritedConfig, filteredConfig)) {\n logger.debug(\n { inheritedConfig, filteredConfig },\n 'Removed global config from inherited config.',\n );\n }\n\n if (is.nullOrUndefined(filteredConfig.extends)) {\n filteredConfig = applySecretsToConfig(filteredConfig, config.secrets ?? {});\n setInheritedHostRules(filteredConfig);\n return mergeChildConfig(config, filteredConfig);\n }\n\n logger.debug('Resolving presets found in inherited config');\n const resolvedConfig = await resolveConfigPresets(\n filteredConfig,\n config,\n config.ignorePresets,\n );\n logger.trace({ config: resolvedConfig }, 'Resolved inherited config');\n\n const validationRes = await validateConfig('inherit', resolvedConfig);\n if (validationRes.errors.length) {\n logger.warn(\n { errors: validationRes.errors },\n 'Found errors in presets inside the inherited configuration.',\n );\n throw new Error(CONFIG_VALIDATION);\n }\n if (validationRes.warnings.length) {\n logger.warn(\n { warnings: validationRes.warnings },\n 'Found warnings in presets inside the inherited configuration.',\n );\n }\n\n // remove global config options once again, as resolved presets could have added some\n filteredConfig = removeGlobalConfig(resolvedConfig, true);\n if (!dequal(resolvedConfig, filteredConfig)) {\n logger.debug(\n { inheritedConfig: resolvedConfig, filteredConfig },\n 'Removed global config from inherited config presets.',\n );\n }\n\n filteredConfig = applySecretsToConfig(filteredConfig, config.secrets ?? {});\n setInheritedHostRules(filteredConfig);\n return mergeChildConfig(config, filteredConfig);\n}\n\nfunction setInheritedHostRules(config: RenovateConfig): void {\n if (config.hostRules) {\n logger.debug('Setting hostRules from config');\n for (const rule of config.hostRules) {\n try {\n hostRules.add(rule);\n } catch (err) {\n // istanbul ignore next\n logger.warn(\n { err, config: rule },\n 'Error setting hostRule from config',\n );\n }\n }\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n delete config.hostRules;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"inherited.js","sourceRoot":"","sources":["../../../../lib/workers/repository/init/inherited.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { dequal } from 'dequal';\nimport { mergeChildConfig, removeGlobalConfig } from '../../../config';\nimport { decryptConfig } from '../../../config/decrypt';\nimport { parseFileConfig } from '../../../config/parse';\nimport { resolveConfigPresets } from '../../../config/presets';\nimport { applySecretsToConfig } from '../../../config/secrets';\nimport type { RenovateConfig } from '../../../config/types';\nimport { validateConfig } from '../../../config/validation';\nimport {\n CONFIG_INHERIT_NOT_FOUND,\n CONFIG_INHERIT_PARSE_ERROR,\n CONFIG_VALIDATION,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { platform } from '../../../modules/platform';\nimport * as hostRules from '../../../util/host-rules';\nimport * as queue from '../../../util/http/queue';\nimport * as throttle from '../../../util/http/throttle';\nimport * as template from '../../../util/template';\n\nexport async function mergeInheritedConfig(\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n // typescript doesn't know that repo is defined\n if (!config.repository || !config.inheritConfig) {\n return config;\n }\n if (\n !is.string(config.inheritConfigRepoName) ||\n !is.string(config.inheritConfigFileName)\n ) {\n // Config validation should prevent this error\n logger.error(\n {\n inheritConfigRepoName: config.inheritConfigRepoName,\n inheritConfigFileName: config.inheritConfigFileName,\n },\n 'Invalid inherited config.',\n );\n return config;\n }\n const templateConfig = {\n topLevelOrg: config.topLevelOrg,\n parentOrg: config.parentOrg,\n repository: config.repository,\n };\n const inheritConfigRepoName = template.compile(\n config.inheritConfigRepoName,\n templateConfig,\n false,\n );\n logger.trace(\n { templateConfig, inheritConfigRepoName },\n 'Compiled inheritConfigRepoName result.',\n );\n logger.debug(\n `Checking for inherited config file ${config.inheritConfigFileName} in repo ${inheritConfigRepoName}.`,\n );\n let configFileRaw: string | null = null;\n try {\n configFileRaw = await platform.getRawFile(\n config.inheritConfigFileName,\n inheritConfigRepoName,\n );\n } catch (err) {\n if (config.inheritConfigStrict) {\n logger.debug({ err }, 'Error getting inherited config.');\n throw new Error(CONFIG_INHERIT_NOT_FOUND);\n }\n logger.trace({ err }, `Error getting inherited config.`);\n }\n if (!configFileRaw) {\n logger.debug(`No inherited config found in ${inheritConfigRepoName}.`);\n return config;\n }\n const parseResult = parseFileConfig(\n config.inheritConfigFileName,\n configFileRaw,\n );\n if (!parseResult.success) {\n logger.debug({ parseResult }, 'Error parsing inherited config.');\n throw new Error(CONFIG_INHERIT_PARSE_ERROR);\n }\n const inheritedConfig = parseResult.parsedContents as RenovateConfig;\n logger.debug({ config: inheritedConfig }, `Inherited config`);\n const res = await validateConfig('inherit', inheritedConfig);\n if (res.errors.length) {\n logger.warn(\n { errors: res.errors },\n 'Found errors in inherited configuration.',\n );\n throw new Error(CONFIG_VALIDATION);\n }\n if (res.warnings.length) {\n logger.warn(\n { warnings: res.warnings },\n 'Found warnings in inherited configuration.',\n );\n }\n\n let decryptedConfig = await decryptConfig(inheritedConfig, config.repository);\n\n let filteredConfig = removeGlobalConfig(decryptedConfig, true);\n if (!dequal(decryptedConfig, filteredConfig)) {\n logger.debug(\n { inheritedConfig: decryptedConfig, filteredConfig },\n 'Removed global config from inherited config.',\n );\n }\n\n if (is.nullOrUndefined(filteredConfig.extends)) {\n filteredConfig = applySecretsToConfig(filteredConfig, config.secrets ?? {});\n setInheritedHostRules(filteredConfig);\n return mergeChildConfig(config, filteredConfig);\n }\n\n logger.debug('Resolving presets found in inherited config');\n const resolvedConfig = await resolveConfigPresets(\n filteredConfig,\n config,\n config.ignorePresets,\n );\n logger.trace({ config: resolvedConfig }, 'Resolved inherited config');\n\n const validationRes = await validateConfig('inherit', resolvedConfig);\n if (validationRes.errors.length) {\n logger.warn(\n { errors: validationRes.errors },\n 'Found errors in presets inside the inherited configuration.',\n );\n throw new Error(CONFIG_VALIDATION);\n }\n if (validationRes.warnings.length) {\n logger.warn(\n { warnings: validationRes.warnings },\n 'Found warnings in presets inside the inherited configuration.',\n );\n }\n\n // decrypt again, as resolved presets could contain encrypted values\n decryptedConfig = await decryptConfig(resolvedConfig, config.repository);\n\n // remove global config options once again, as resolved presets could have added some\n filteredConfig = removeGlobalConfig(decryptedConfig, true);\n if (!dequal(decryptedConfig, filteredConfig)) {\n logger.debug(\n { inheritedConfig: decryptedConfig, filteredConfig },\n 'Removed global config from inherited config presets.',\n );\n }\n\n filteredConfig = applySecretsToConfig(filteredConfig, config.secrets ?? {});\n setInheritedHostRules(filteredConfig);\n return mergeChildConfig(config, filteredConfig);\n}\n\nfunction setInheritedHostRules(config: RenovateConfig): void {\n if (config.hostRules) {\n logger.debug('Setting hostRules from config');\n for (const rule of config.hostRules) {\n try {\n hostRules.add(rule);\n } catch (err) {\n // istanbul ignore next\n logger.warn(\n { err, config: rule },\n 'Error setting hostRule from config',\n );\n }\n }\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n delete config.hostRules;\n }\n}\n"]}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import type { AllConfig, RenovateConfig } from '../../../config/types';
|
2
2
|
import type { RepoFileConfig } from './types';
|
3
3
|
export declare function detectConfigFile(): Promise<string | null>;
|
4
|
-
export declare function detectRepoFileConfig(): Promise<RepoFileConfig>;
|
4
|
+
export declare function detectRepoFileConfig(branchName?: string): Promise<RepoFileConfig>;
|
5
5
|
export declare function checkForRepoConfigError(repoConfig: RepoFileConfig): void;
|
6
|
-
export declare function mergeRenovateConfig(config: RenovateConfig): Promise<RenovateConfig>;
|
6
|
+
export declare function mergeRenovateConfig(config: RenovateConfig, branchName?: string): Promise<RenovateConfig>;
|
7
7
|
/** needed when using portal secrets for npmToken */
|
8
8
|
export declare function setNpmTokenInNpmrc(config: RenovateConfig): void;
|
9
9
|
export declare function mergeStaticRepoEnvConfig(config: AllConfig, env: NodeJS.ProcessEnv): Promise<AllConfig>;
|
@@ -57,13 +57,13 @@ async function detectConfigFile() {
|
|
57
57
|
}
|
58
58
|
return null;
|
59
59
|
}
|
60
|
-
async function detectRepoFileConfig() {
|
60
|
+
async function detectRepoFileConfig(branchName) {
|
61
61
|
const cache = (0, repository_1.getCache)();
|
62
62
|
let { configFileName } = cache;
|
63
63
|
if (is_1.default.nonEmptyString(configFileName)) {
|
64
64
|
let configFileRaw;
|
65
65
|
try {
|
66
|
-
configFileRaw = await platform_1.platform.getRawFile(configFileName);
|
66
|
+
configFileRaw = await platform_1.platform.getRawFile(configFileName, undefined, branchName);
|
67
67
|
}
|
68
68
|
catch (err) {
|
69
69
|
// istanbul ignore if
|
@@ -157,11 +157,11 @@ function checkForRepoConfigError(repoConfig) {
|
|
157
157
|
throw error;
|
158
158
|
}
|
159
159
|
// Check for repository config
|
160
|
-
async function mergeRenovateConfig(config) {
|
160
|
+
async function mergeRenovateConfig(config, branchName) {
|
161
161
|
let returnConfig = { ...config };
|
162
162
|
let repoConfig = {};
|
163
163
|
if (config.requireConfig !== 'ignored') {
|
164
|
-
repoConfig = await detectRepoFileConfig();
|
164
|
+
repoConfig = await detectRepoFileConfig(branchName);
|
165
165
|
}
|
166
166
|
if (!repoConfig.configFileParsed && config.mode === 'silent') {
|
167
167
|
logger_1.logger.debug('When mode=silent and repo has no config file, we use the onboarding config as repo config');
|
@@ -172,6 +172,7 @@ async function mergeRenovateConfig(config) {
|
|
172
172
|
};
|
173
173
|
}
|
174
174
|
const configFileParsed = repoConfig?.configFileParsed ?? {};
|
175
|
+
// I think we do not need to use combined env here as static repo config is meant to be in the env var and not file/repo config
|
175
176
|
const configFileAndEnv = await mergeStaticRepoEnvConfig(configFileParsed, process.env);
|
176
177
|
if (is_1.default.nonEmptyArray(returnConfig.extends)) {
|
177
178
|
configFileAndEnv.extends = [
|
@@ -281,6 +282,12 @@ async function mergeStaticRepoEnvConfig(config, env) {
|
|
281
282
|
if (!is_1.default.nonEmptyObject(repoEnvConfig)) {
|
282
283
|
return config;
|
283
284
|
}
|
284
|
-
|
285
|
+
// merge extends
|
286
|
+
if (is_1.default.nonEmptyArray(repoEnvConfig.extends)) {
|
287
|
+
config.extends = [...repoEnvConfig.extends, ...(config.extends ?? [])];
|
288
|
+
delete repoEnvConfig.extends;
|
289
|
+
}
|
290
|
+
// renovate repo config overrides RENOVATE_STATIC_REPO_CONFIG
|
291
|
+
return (0, config_1.mergeChildConfig)(repoEnvConfig, config);
|
285
292
|
}
|
286
293
|
//# sourceMappingURL=merge.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../lib/workers/repository/init/merge.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../config';\nimport { configFileNames } from '../../../config/app-strings';\nimport { decryptConfig } from '../../../config/decrypt';\nimport { migrateAndValidate } from '../../../config/migrate-validate';\nimport { migrateConfig } from '../../../config/migration';\nimport { parseFileConfig } from '../../../config/parse';\nimport * as presets from '../../../config/presets';\nimport { applySecretsToConfig } from '../../../config/secrets';\nimport type { AllConfig, RenovateConfig } from '../../../config/types';\nimport {\n CONFIG_VALIDATION,\n REPOSITORY_CHANGED,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport * as npmApi from '../../../modules/datasource/npm';\nimport { platform } from '../../../modules/platform';\nimport { scm } from '../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { getCache } from '../../../util/cache/repository';\nimport { parseJson } from '../../../util/common';\nimport { setUserEnv } from '../../../util/env';\nimport { readLocalFile } from '../../../util/fs';\nimport * as hostRules from '../../../util/host-rules';\nimport * as queue from '../../../util/http/queue';\nimport * as throttle from '../../../util/http/throttle';\nimport { maskToken } from '../../../util/mask';\nimport { regEx } from '../../../util/regex';\nimport { parseAndValidateOrExit } from '../../global/config/parse/env';\nimport { getOnboardingConfig } from '../onboarding/branch/config';\nimport { getDefaultConfigFileName } from '../onboarding/branch/create';\nimport {\n getOnboardingConfigFromCache,\n getOnboardingFileNameFromCache,\n setOnboardingConfigDetails,\n} from '../onboarding/branch/onboarding-branch-cache';\nimport { OnboardingState } from '../onboarding/common';\nimport type { RepoFileConfig } from './types';\n\nexport async function detectConfigFile(): Promise<string | null> {\n const fileList = await scm.getFileList();\n for (const fileName of configFileNames) {\n if (fileName === 'package.json') {\n try {\n const pJson = JSON.parse(\n (await readLocalFile('package.json', 'utf8'))!,\n );\n if (pJson.renovate) {\n logger.warn(\n 'Using package.json for Renovate config is deprecated - please use a dedicated configuration file instead',\n );\n return 'package.json';\n }\n } catch {\n // Do nothing\n }\n } else if (fileList.includes(fileName)) {\n return fileName;\n }\n }\n return null;\n}\n\nexport async function detectRepoFileConfig(): Promise<RepoFileConfig> {\n const cache = getCache();\n let { configFileName } = cache;\n if (is.nonEmptyString(configFileName)) {\n let configFileRaw: string | null;\n try {\n configFileRaw = await platform.getRawFile(configFileName);\n } catch (err) {\n // istanbul ignore if\n if (err instanceof ExternalHostError) {\n throw err;\n }\n configFileRaw = null;\n }\n if (configFileRaw) {\n let configFileParsed = parseJson(configFileRaw, configFileName) as any;\n if (configFileName === 'package.json') {\n configFileParsed = configFileParsed.renovate;\n }\n return { configFileName, configFileParsed };\n } else {\n logger.debug('Existing config file no longer exists');\n delete cache.configFileName;\n }\n }\n\n if (OnboardingState.onboardingCacheValid) {\n configFileName = getOnboardingFileNameFromCache();\n } else {\n configFileName = (await detectConfigFile()) ?? undefined;\n }\n\n if (!configFileName) {\n logger.debug('No renovate config file found');\n cache.configFileName = '';\n return {};\n }\n cache.configFileName = configFileName;\n logger.debug(`Found ${configFileName} config file`);\n // TODO #22198\n let configFileParsed: any;\n let configFileRaw: string | undefined | null;\n\n if (OnboardingState.onboardingCacheValid) {\n const cachedConfig = getOnboardingConfigFromCache();\n const parsedConfig = cachedConfig ? JSON.parse(cachedConfig) : undefined;\n if (parsedConfig) {\n setOnboardingConfigDetails(configFileName, JSON.stringify(parsedConfig));\n return { configFileName, configFileParsed: parsedConfig };\n }\n }\n\n if (configFileName === 'package.json') {\n // We already know it parses\n configFileParsed = JSON.parse(\n // TODO #22198\n (await readLocalFile('package.json', 'utf8'))!,\n ).renovate;\n if (is.string(configFileParsed)) {\n logger.debug('Massaging string renovate config to extends array');\n configFileParsed = { extends: [configFileParsed] };\n }\n logger.debug({ config: configFileParsed }, 'package.json>renovate config');\n } else {\n configFileRaw = await readLocalFile(configFileName, 'utf8');\n // istanbul ignore if\n if (!is.string(configFileRaw)) {\n logger.warn({ configFileName }, 'Null contents when reading config file');\n throw new Error(REPOSITORY_CHANGED);\n }\n // istanbul ignore if\n if (!configFileRaw.length) {\n configFileRaw = '{}';\n }\n\n const parseResult = parseFileConfig(configFileName, configFileRaw);\n\n if (!parseResult.success) {\n return {\n configFileName,\n configFileParseError: {\n validationError: parseResult.validationError,\n validationMessage: parseResult.validationMessage,\n },\n };\n }\n configFileParsed = parseResult.parsedContents;\n logger.debug(\n { fileName: configFileName, config: configFileParsed },\n 'Repository config',\n );\n }\n\n setOnboardingConfigDetails(configFileName, JSON.stringify(configFileParsed));\n return { configFileName, configFileParsed };\n}\n\nexport function checkForRepoConfigError(repoConfig: RepoFileConfig): void {\n if (!repoConfig.configFileParseError) {\n return;\n }\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = repoConfig.configFileName;\n error.validationError = repoConfig.configFileParseError.validationError;\n error.validationMessage = repoConfig.configFileParseError.validationMessage;\n throw error;\n}\n\n// Check for repository config\nexport async function mergeRenovateConfig(\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n let returnConfig = { ...config };\n let repoConfig: RepoFileConfig = {};\n if (config.requireConfig !== 'ignored') {\n repoConfig = await detectRepoFileConfig();\n }\n if (!repoConfig.configFileParsed && config.mode === 'silent') {\n logger.debug(\n 'When mode=silent and repo has no config file, we use the onboarding config as repo config',\n );\n const configFileName = getDefaultConfigFileName(config);\n repoConfig = {\n configFileName,\n configFileParsed: await getOnboardingConfig(config),\n };\n }\n const configFileParsed = repoConfig?.configFileParsed ?? {};\n const configFileAndEnv = await mergeStaticRepoEnvConfig(\n configFileParsed,\n process.env,\n );\n if (is.nonEmptyArray(returnConfig.extends)) {\n configFileAndEnv.extends = [\n ...returnConfig.extends,\n ...(configFileAndEnv.extends ?? []),\n ];\n delete returnConfig.extends;\n }\n checkForRepoConfigError(repoConfig);\n const migratedConfig = await migrateAndValidate(config, configFileAndEnv);\n if (migratedConfig.errors?.length) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = repoConfig.configFileName;\n error.validationError =\n 'The renovate configuration file contains some invalid settings';\n error.validationMessage = migratedConfig.errors\n .map((e) => e.message)\n .join(', ');\n throw error;\n }\n if (migratedConfig.warnings) {\n returnConfig.warnings = [\n ...(returnConfig.warnings ?? []),\n ...migratedConfig.warnings,\n ];\n }\n delete migratedConfig.errors;\n delete migratedConfig.warnings;\n // TODO #22198\n const repository = config.repository!;\n // Decrypt before resolving in case we need npm authentication for any presets\n const decryptedConfig = await decryptConfig(migratedConfig, repository);\n setNpmTokenInNpmrc(decryptedConfig);\n // istanbul ignore if\n if (is.string(decryptedConfig.npmrc)) {\n logger.debug('Found npmrc in decrypted config - setting');\n npmApi.setNpmrc(decryptedConfig.npmrc);\n }\n // Decrypt after resolving in case the preset contains npm authentication instead\n let resolvedConfig = await decryptConfig(\n await presets.resolveConfigPresets(\n decryptedConfig,\n config,\n config.ignorePresets,\n ),\n repository,\n );\n logger.trace({ config: resolvedConfig }, 'resolved config');\n const migrationResult = migrateConfig(resolvedConfig);\n if (migrationResult.isMigrated) {\n logger.debug('Resolved config needs migrating');\n logger.trace({ config: resolvedConfig }, 'resolved config after migrating');\n resolvedConfig = migrationResult.migratedConfig;\n }\n setNpmTokenInNpmrc(resolvedConfig);\n // istanbul ignore if\n if (is.string(resolvedConfig.npmrc)) {\n logger.debug(\n 'Ignoring any .npmrc files in repository due to configured npmrc',\n );\n npmApi.setNpmrc(resolvedConfig.npmrc);\n }\n resolvedConfig = applySecretsToConfig(\n resolvedConfig,\n mergeChildConfig(config.secrets ?? {}, resolvedConfig.secrets ?? {}),\n );\n // istanbul ignore if\n if (resolvedConfig.hostRules) {\n logger.debug('Setting hostRules from config');\n for (const rule of resolvedConfig.hostRules) {\n try {\n hostRules.add(rule);\n } catch (err) {\n logger.warn(\n { err, config: rule },\n 'Error setting hostRule from config',\n );\n }\n }\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n delete resolvedConfig.hostRules;\n }\n returnConfig = mergeChildConfig(returnConfig, resolvedConfig);\n returnConfig = await presets.resolveConfigPresets(returnConfig, config);\n returnConfig.renovateJsonPresent = true;\n // istanbul ignore if\n if (returnConfig.ignorePaths?.length) {\n logger.debug(\n { ignorePaths: returnConfig.ignorePaths },\n `Found repo ignorePaths`,\n );\n }\n\n setUserEnv(returnConfig.env);\n delete returnConfig.env;\n\n return returnConfig;\n}\n\n/** needed when using portal secrets for npmToken */\nexport function setNpmTokenInNpmrc(config: RenovateConfig): void {\n if (!is.string(config.npmToken)) {\n return;\n }\n\n const token = config.npmToken;\n logger.debug({ npmToken: maskToken(token) }, 'Migrating npmToken to npmrc');\n\n if (!is.string(config.npmrc)) {\n logger.debug('Adding npmrc to config');\n config.npmrc = `//registry.npmjs.org/:_authToken=${token}\\n`;\n delete config.npmToken;\n return;\n }\n\n if (config.npmrc.includes(`\\${NPM_TOKEN}`)) {\n logger.debug(`Replacing \\${NPM_TOKEN} with npmToken`);\n config.npmrc = config.npmrc.replace(regEx(/\\${NPM_TOKEN}/g), token);\n } else {\n logger.debug('Appending _authToken= to end of existing npmrc');\n config.npmrc = config.npmrc.replace(\n regEx(/\\n?$/),\n `\\n_authToken=${token}\\n`,\n );\n }\n\n delete config.npmToken;\n}\n\nexport async function mergeStaticRepoEnvConfig(\n config: AllConfig,\n env: NodeJS.ProcessEnv,\n): Promise<AllConfig> {\n const repoEnvConfig = await parseAndValidateOrExit(\n env,\n 'RENOVATE_STATIC_REPO_CONFIG',\n );\n\n if (!is.nonEmptyObject(repoEnvConfig)) {\n return config;\n }\n\n return mergeChildConfig(config, repoEnvConfig);\n}\n"]}
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../lib/workers/repository/init/merge.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../config';\nimport { configFileNames } from '../../../config/app-strings';\nimport { decryptConfig } from '../../../config/decrypt';\nimport { migrateAndValidate } from '../../../config/migrate-validate';\nimport { migrateConfig } from '../../../config/migration';\nimport { parseFileConfig } from '../../../config/parse';\nimport * as presets from '../../../config/presets';\nimport { applySecretsToConfig } from '../../../config/secrets';\nimport type { AllConfig, RenovateConfig } from '../../../config/types';\nimport {\n CONFIG_VALIDATION,\n REPOSITORY_CHANGED,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport * as npmApi from '../../../modules/datasource/npm';\nimport { platform } from '../../../modules/platform';\nimport { scm } from '../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { getCache } from '../../../util/cache/repository';\nimport { parseJson } from '../../../util/common';\nimport { setUserEnv } from '../../../util/env';\nimport { readLocalFile } from '../../../util/fs';\nimport * as hostRules from '../../../util/host-rules';\nimport * as queue from '../../../util/http/queue';\nimport * as throttle from '../../../util/http/throttle';\nimport { maskToken } from '../../../util/mask';\nimport { regEx } from '../../../util/regex';\nimport { parseAndValidateOrExit } from '../../global/config/parse/env';\nimport { getOnboardingConfig } from '../onboarding/branch/config';\nimport { getDefaultConfigFileName } from '../onboarding/branch/create';\nimport {\n getOnboardingConfigFromCache,\n getOnboardingFileNameFromCache,\n setOnboardingConfigDetails,\n} from '../onboarding/branch/onboarding-branch-cache';\nimport { OnboardingState } from '../onboarding/common';\nimport type { RepoFileConfig } from './types';\n\nexport async function detectConfigFile(): Promise<string | null> {\n const fileList = await scm.getFileList();\n for (const fileName of configFileNames) {\n if (fileName === 'package.json') {\n try {\n const pJson = JSON.parse(\n (await readLocalFile('package.json', 'utf8'))!,\n );\n if (pJson.renovate) {\n logger.warn(\n 'Using package.json for Renovate config is deprecated - please use a dedicated configuration file instead',\n );\n return 'package.json';\n }\n } catch {\n // Do nothing\n }\n } else if (fileList.includes(fileName)) {\n return fileName;\n }\n }\n return null;\n}\n\nexport async function detectRepoFileConfig(\n branchName?: string,\n): Promise<RepoFileConfig> {\n const cache = getCache();\n let { configFileName } = cache;\n if (is.nonEmptyString(configFileName)) {\n let configFileRaw: string | null;\n try {\n configFileRaw = await platform.getRawFile(\n configFileName,\n undefined,\n branchName,\n );\n } catch (err) {\n // istanbul ignore if\n if (err instanceof ExternalHostError) {\n throw err;\n }\n configFileRaw = null;\n }\n if (configFileRaw) {\n let configFileParsed = parseJson(configFileRaw, configFileName) as any;\n if (configFileName === 'package.json') {\n configFileParsed = configFileParsed.renovate;\n }\n return { configFileName, configFileParsed };\n } else {\n logger.debug('Existing config file no longer exists');\n delete cache.configFileName;\n }\n }\n\n if (OnboardingState.onboardingCacheValid) {\n configFileName = getOnboardingFileNameFromCache();\n } else {\n configFileName = (await detectConfigFile()) ?? undefined;\n }\n\n if (!configFileName) {\n logger.debug('No renovate config file found');\n cache.configFileName = '';\n return {};\n }\n cache.configFileName = configFileName;\n logger.debug(`Found ${configFileName} config file`);\n // TODO #22198\n let configFileParsed: any;\n let configFileRaw: string | undefined | null;\n\n if (OnboardingState.onboardingCacheValid) {\n const cachedConfig = getOnboardingConfigFromCache();\n const parsedConfig = cachedConfig ? JSON.parse(cachedConfig) : undefined;\n if (parsedConfig) {\n setOnboardingConfigDetails(configFileName, JSON.stringify(parsedConfig));\n return { configFileName, configFileParsed: parsedConfig };\n }\n }\n\n if (configFileName === 'package.json') {\n // We already know it parses\n configFileParsed = JSON.parse(\n // TODO #22198\n (await readLocalFile('package.json', 'utf8'))!,\n ).renovate;\n if (is.string(configFileParsed)) {\n logger.debug('Massaging string renovate config to extends array');\n configFileParsed = { extends: [configFileParsed] };\n }\n logger.debug({ config: configFileParsed }, 'package.json>renovate config');\n } else {\n configFileRaw = await readLocalFile(configFileName, 'utf8');\n // istanbul ignore if\n if (!is.string(configFileRaw)) {\n logger.warn({ configFileName }, 'Null contents when reading config file');\n throw new Error(REPOSITORY_CHANGED);\n }\n // istanbul ignore if\n if (!configFileRaw.length) {\n configFileRaw = '{}';\n }\n\n const parseResult = parseFileConfig(configFileName, configFileRaw);\n\n if (!parseResult.success) {\n return {\n configFileName,\n configFileParseError: {\n validationError: parseResult.validationError,\n validationMessage: parseResult.validationMessage,\n },\n };\n }\n configFileParsed = parseResult.parsedContents;\n logger.debug(\n { fileName: configFileName, config: configFileParsed },\n 'Repository config',\n );\n }\n\n setOnboardingConfigDetails(configFileName, JSON.stringify(configFileParsed));\n return { configFileName, configFileParsed };\n}\n\nexport function checkForRepoConfigError(repoConfig: RepoFileConfig): void {\n if (!repoConfig.configFileParseError) {\n return;\n }\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = repoConfig.configFileName;\n error.validationError = repoConfig.configFileParseError.validationError;\n error.validationMessage = repoConfig.configFileParseError.validationMessage;\n throw error;\n}\n\n// Check for repository config\nexport async function mergeRenovateConfig(\n config: RenovateConfig,\n branchName?: string,\n): Promise<RenovateConfig> {\n let returnConfig = { ...config };\n let repoConfig: RepoFileConfig = {};\n if (config.requireConfig !== 'ignored') {\n repoConfig = await detectRepoFileConfig(branchName);\n }\n if (!repoConfig.configFileParsed && config.mode === 'silent') {\n logger.debug(\n 'When mode=silent and repo has no config file, we use the onboarding config as repo config',\n );\n const configFileName = getDefaultConfigFileName(config);\n repoConfig = {\n configFileName,\n configFileParsed: await getOnboardingConfig(config),\n };\n }\n const configFileParsed = repoConfig?.configFileParsed ?? {};\n // I think we do not need to use combined env here as static repo config is meant to be in the env var and not file/repo config\n const configFileAndEnv = await mergeStaticRepoEnvConfig(\n configFileParsed,\n process.env,\n );\n if (is.nonEmptyArray(returnConfig.extends)) {\n configFileAndEnv.extends = [\n ...returnConfig.extends,\n ...(configFileAndEnv.extends ?? []),\n ];\n delete returnConfig.extends;\n }\n checkForRepoConfigError(repoConfig);\n const migratedConfig = await migrateAndValidate(config, configFileAndEnv);\n if (migratedConfig.errors?.length) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = repoConfig.configFileName;\n error.validationError =\n 'The renovate configuration file contains some invalid settings';\n error.validationMessage = migratedConfig.errors\n .map((e) => e.message)\n .join(', ');\n throw error;\n }\n if (migratedConfig.warnings) {\n returnConfig.warnings = [\n ...(returnConfig.warnings ?? []),\n ...migratedConfig.warnings,\n ];\n }\n delete migratedConfig.errors;\n delete migratedConfig.warnings;\n // TODO #22198\n const repository = config.repository!;\n // Decrypt before resolving in case we need npm authentication for any presets\n const decryptedConfig = await decryptConfig(migratedConfig, repository);\n setNpmTokenInNpmrc(decryptedConfig);\n // istanbul ignore if\n if (is.string(decryptedConfig.npmrc)) {\n logger.debug('Found npmrc in decrypted config - setting');\n npmApi.setNpmrc(decryptedConfig.npmrc);\n }\n // Decrypt after resolving in case the preset contains npm authentication instead\n let resolvedConfig = await decryptConfig(\n await presets.resolveConfigPresets(\n decryptedConfig,\n config,\n config.ignorePresets,\n ),\n repository,\n );\n logger.trace({ config: resolvedConfig }, 'resolved config');\n const migrationResult = migrateConfig(resolvedConfig);\n if (migrationResult.isMigrated) {\n logger.debug('Resolved config needs migrating');\n logger.trace({ config: resolvedConfig }, 'resolved config after migrating');\n resolvedConfig = migrationResult.migratedConfig;\n }\n setNpmTokenInNpmrc(resolvedConfig);\n // istanbul ignore if\n if (is.string(resolvedConfig.npmrc)) {\n logger.debug(\n 'Ignoring any .npmrc files in repository due to configured npmrc',\n );\n npmApi.setNpmrc(resolvedConfig.npmrc);\n }\n resolvedConfig = applySecretsToConfig(\n resolvedConfig,\n mergeChildConfig(config.secrets ?? {}, resolvedConfig.secrets ?? {}),\n );\n // istanbul ignore if\n if (resolvedConfig.hostRules) {\n logger.debug('Setting hostRules from config');\n for (const rule of resolvedConfig.hostRules) {\n try {\n hostRules.add(rule);\n } catch (err) {\n logger.warn(\n { err, config: rule },\n 'Error setting hostRule from config',\n );\n }\n }\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n delete resolvedConfig.hostRules;\n }\n returnConfig = mergeChildConfig(returnConfig, resolvedConfig);\n returnConfig = await presets.resolveConfigPresets(returnConfig, config);\n returnConfig.renovateJsonPresent = true;\n // istanbul ignore if\n if (returnConfig.ignorePaths?.length) {\n logger.debug(\n { ignorePaths: returnConfig.ignorePaths },\n `Found repo ignorePaths`,\n );\n }\n\n setUserEnv(returnConfig.env);\n delete returnConfig.env;\n\n return returnConfig;\n}\n\n/** needed when using portal secrets for npmToken */\nexport function setNpmTokenInNpmrc(config: RenovateConfig): void {\n if (!is.string(config.npmToken)) {\n return;\n }\n\n const token = config.npmToken;\n logger.debug({ npmToken: maskToken(token) }, 'Migrating npmToken to npmrc');\n\n if (!is.string(config.npmrc)) {\n logger.debug('Adding npmrc to config');\n config.npmrc = `//registry.npmjs.org/:_authToken=${token}\\n`;\n delete config.npmToken;\n return;\n }\n\n if (config.npmrc.includes(`\\${NPM_TOKEN}`)) {\n logger.debug(`Replacing \\${NPM_TOKEN} with npmToken`);\n config.npmrc = config.npmrc.replace(regEx(/\\${NPM_TOKEN}/g), token);\n } else {\n logger.debug('Appending _authToken= to end of existing npmrc');\n config.npmrc = config.npmrc.replace(\n regEx(/\\n?$/),\n `\\n_authToken=${token}\\n`,\n );\n }\n\n delete config.npmToken;\n}\n\nexport async function mergeStaticRepoEnvConfig(\n config: AllConfig,\n env: NodeJS.ProcessEnv,\n): Promise<AllConfig> {\n const repoEnvConfig = await parseAndValidateOrExit(\n env,\n 'RENOVATE_STATIC_REPO_CONFIG',\n );\n\n if (!is.nonEmptyObject(repoEnvConfig)) {\n return config;\n }\n\n // merge extends\n if (is.nonEmptyArray(repoEnvConfig.extends)) {\n config.extends = [...repoEnvConfig.extends, ...(config.extends ?? [])];\n delete repoEnvConfig.extends;\n }\n // renovate repo config overrides RENOVATE_STATIC_REPO_CONFIG\n return mergeChildConfig(repoEnvConfig, config);\n}\n"]}
|
@@ -88,7 +88,17 @@ class PackageFiles {
|
|
88
88
|
for (const dep of packageFile.deps) {
|
89
89
|
const ver = dep.currentValue;
|
90
90
|
const digest = dep.currentDigest;
|
91
|
-
const
|
91
|
+
const lock = dep.lockedVersion;
|
92
|
+
let version;
|
93
|
+
if (ver || digest) {
|
94
|
+
version = ver && digest ? `${ver}@${digest}` : `${digest ?? ver}`;
|
95
|
+
}
|
96
|
+
else if (lock) {
|
97
|
+
version = `lock file @ ${lock}`;
|
98
|
+
}
|
99
|
+
else {
|
100
|
+
version = 'unknown version';
|
101
|
+
}
|
92
102
|
// TODO: types (#22198)
|
93
103
|
deps += ` - \`${dep.depName} ${version}\`\n`;
|
94
104
|
}
|