renovate 40.0.0-next.3 → 40.0.0-next.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/decrypt/legacy.js +0 -1
- package/dist/config/decrypt/legacy.js.map +1 -1
- package/dist/config/decrypt.d.ts +3 -1
- package/dist/config/decrypt.js +56 -13
- package/dist/config/decrypt.js.map +1 -1
- package/dist/config/migrate-validate.js +3 -2
- package/dist/config/migrate-validate.js.map +1 -1
- package/dist/config/migration.js +2 -1
- package/dist/config/migration.js.map +1 -1
- package/dist/config/migrations/custom/rebase-stale-prs-migration.js +1 -1
- package/dist/config/migrations/custom/rebase-stale-prs-migration.js.map +1 -1
- package/dist/config/options/index.js +4 -3
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/parse.js +2 -2
- package/dist/config/parse.js.map +1 -1
- package/dist/config/presets/gitea/index.js +0 -1
- package/dist/config/presets/gitea/index.js.map +1 -1
- package/dist/config/presets/github/index.js +0 -1
- package/dist/config/presets/github/index.js.map +1 -1
- package/dist/config/presets/gitlab/index.js +1 -1
- package/dist/config/presets/gitlab/index.js.map +1 -1
- package/dist/config/presets/http/index.js +1 -2
- package/dist/config/presets/http/index.js.map +1 -1
- package/dist/config/presets/index.js +0 -7
- package/dist/config/presets/index.js.map +1 -1
- package/dist/config/presets/internal/custom-managers.js +3 -4
- package/dist/config/presets/internal/custom-managers.js.map +1 -1
- package/dist/config/presets/internal/group.js +30 -1
- package/dist/config/presets/internal/group.js.map +1 -1
- package/dist/config/presets/internal/index.js +1 -3
- package/dist/config/presets/internal/index.js.map +1 -1
- package/dist/config/presets/internal/workarounds.js +1 -0
- package/dist/config/presets/internal/workarounds.js.map +1 -1
- package/dist/config/presets/parse.js +2 -1
- package/dist/config/presets/parse.js.map +1 -1
- package/dist/config/schema.d.ts +2 -2
- package/dist/config/types.d.ts +4 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validation.js +3 -5
- package/dist/config/validation.js.map +1 -1
- package/dist/config-validator.js +0 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/constants/category.js +0 -1
- package/dist/constants/category.js.map +1 -1
- package/dist/data/monorepo.json +5 -1
- package/dist/data/source-urls.json +1 -0
- package/dist/instrumentation/index.js +17 -13
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/instrumentation/utils.js +1 -1
- package/dist/instrumentation/utils.js.map +1 -1
- package/dist/logger/cmd-serializer.js +0 -1
- package/dist/logger/cmd-serializer.js.map +1 -1
- package/dist/logger/config-serializer.js +0 -1
- package/dist/logger/config-serializer.js.map +1 -1
- package/dist/logger/index.js +1 -4
- package/dist/logger/index.js.map +1 -1
- package/dist/logger/once.js +4 -2
- package/dist/logger/once.js.map +1 -1
- package/dist/logger/pretty-stdout.js +0 -1
- package/dist/logger/pretty-stdout.js.map +1 -1
- package/dist/logger/renovate-logger.js +1 -1
- package/dist/logger/renovate-logger.js.map +1 -1
- package/dist/logger/utils.js +6 -11
- package/dist/logger/utils.js.map +1 -1
- package/dist/modules/datasource/api.js +2 -0
- package/dist/modules/datasource/api.js.map +1 -1
- package/dist/modules/datasource/artifactory/index.js +1 -2
- package/dist/modules/datasource/artifactory/index.js.map +1 -1
- package/dist/modules/datasource/aws-eks-addon/index.d.ts +11 -0
- package/dist/modules/datasource/aws-eks-addon/index.js +75 -0
- package/dist/modules/datasource/aws-eks-addon/index.js.map +1 -0
- package/dist/modules/datasource/aws-eks-addon/schema.d.ts +40 -0
- package/dist/modules/datasource/aws-eks-addon/schema.js +31 -0
- package/dist/modules/datasource/aws-eks-addon/schema.js.map +1 -0
- package/dist/modules/datasource/aws-machine-image/index.js +6 -5
- package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
- package/dist/modules/datasource/azure-pipelines-tasks/index.js +11 -1
- package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
- package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +16 -0
- package/dist/modules/datasource/azure-pipelines-tasks/schema.js +2 -0
- package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
- package/dist/modules/datasource/bazel/index.js +0 -1
- package/dist/modules/datasource/bazel/index.js.map +1 -1
- package/dist/modules/datasource/bitrise/index.js +1 -1
- package/dist/modules/datasource/bitrise/index.js.map +1 -1
- package/dist/modules/datasource/cdnjs/schema.d.ts +2 -2
- package/dist/modules/datasource/conda/index.js +18 -1
- package/dist/modules/datasource/conda/index.js.map +1 -1
- package/dist/modules/datasource/conda/prefix-dev.d.ts +3 -0
- package/dist/modules/datasource/conda/prefix-dev.js +83 -0
- package/dist/modules/datasource/conda/prefix-dev.js.map +1 -0
- package/dist/modules/datasource/conda/schema/prefix-dev.d.ts +189 -0
- package/dist/modules/datasource/conda/schema/prefix-dev.js +31 -0
- package/dist/modules/datasource/conda/schema/prefix-dev.js.map +1 -0
- package/dist/modules/datasource/conda/types.d.ts +1 -20
- package/dist/modules/datasource/conda/types.js.map +1 -1
- package/dist/modules/datasource/cpan/index.js +1 -1
- package/dist/modules/datasource/cpan/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js +3 -3
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/custom/formats/html.js +1 -1
- package/dist/modules/datasource/custom/formats/html.js.map +1 -1
- package/dist/modules/datasource/custom/formats/yaml.js +1 -1
- package/dist/modules/datasource/custom/formats/yaml.js.map +1 -1
- package/dist/modules/datasource/custom/index.js +4 -2
- package/dist/modules/datasource/custom/index.js.map +1 -1
- package/dist/modules/datasource/custom/schema.d.ts +22 -22
- package/dist/modules/datasource/custom/utils.js +1 -0
- package/dist/modules/datasource/custom/utils.js.map +1 -1
- package/dist/modules/datasource/dart/index.js +1 -1
- package/dist/modules/datasource/dart/index.js.map +1 -1
- package/dist/modules/datasource/dart-version/index.js +1 -1
- package/dist/modules/datasource/dart-version/index.js.map +1 -1
- package/dist/modules/datasource/datasource.js +0 -1
- package/dist/modules/datasource/datasource.js.map +1 -1
- package/dist/modules/datasource/deb/index.js +2 -2
- package/dist/modules/datasource/deb/index.js.map +1 -1
- package/dist/modules/datasource/deno/index.js +1 -1
- package/dist/modules/datasource/deno/index.js.map +1 -1
- package/dist/modules/datasource/deno/schema.d.ts +1 -1
- package/dist/modules/datasource/devbox/index.js +0 -1
- package/dist/modules/datasource/devbox/index.js.map +1 -1
- package/dist/modules/datasource/docker/common.js +5 -2
- package/dist/modules/datasource/docker/common.js.map +1 -1
- package/dist/modules/datasource/docker/index.js +10 -8
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/docker/schema.d.ts +5 -5
- package/dist/modules/datasource/docker/schema.js +2 -1
- package/dist/modules/datasource/docker/schema.js.map +1 -1
- package/dist/modules/datasource/flutter-version/index.js +1 -1
- package/dist/modules/datasource/flutter-version/index.js.map +1 -1
- package/dist/modules/datasource/galaxy/schema.d.ts +1 -1
- package/dist/modules/datasource/galaxy-collection/schema.d.ts +8 -8
- package/dist/modules/datasource/git-refs/index.js +1 -1
- package/dist/modules/datasource/git-refs/index.js.map +1 -1
- package/dist/modules/datasource/gitea-releases/schema.d.ts +2 -2
- package/dist/modules/datasource/gitea-tags/schema.d.ts +4 -4
- package/dist/modules/datasource/github-release-attachments/index.js +2 -2
- package/dist/modules/datasource/github-release-attachments/index.js.map +1 -1
- package/dist/modules/datasource/gitlab-packages/index.js +1 -1
- package/dist/modules/datasource/gitlab-packages/index.js.map +1 -1
- package/dist/modules/datasource/gitlab-releases/index.js +1 -3
- package/dist/modules/datasource/gitlab-releases/index.js.map +1 -1
- package/dist/modules/datasource/go/base.js +1 -1
- package/dist/modules/datasource/go/base.js.map +1 -1
- package/dist/modules/datasource/go/index.js +1 -1
- package/dist/modules/datasource/go/index.js.map +1 -1
- package/dist/modules/datasource/go/releases-direct.js +7 -4
- package/dist/modules/datasource/go/releases-direct.js.map +1 -1
- package/dist/modules/datasource/go/releases-goproxy.js +1 -1
- package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
- package/dist/modules/datasource/golang-version/index.js +2 -2
- package/dist/modules/datasource/golang-version/index.js.map +1 -1
- package/dist/modules/datasource/gradle-version/index.js +1 -1
- package/dist/modules/datasource/gradle-version/index.js.map +1 -1
- package/dist/modules/datasource/helm/index.js +1 -1
- package/dist/modules/datasource/helm/index.js.map +1 -1
- package/dist/modules/datasource/hex/index.js +1 -1
- package/dist/modules/datasource/hex/index.js.map +1 -1
- package/dist/modules/datasource/hex/schema.d.ts +11 -11
- package/dist/modules/datasource/hexpm-bob/index.js +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
- package/dist/modules/datasource/index.js +4 -4
- package/dist/modules/datasource/index.js.map +1 -1
- package/dist/modules/datasource/java-version/index.js +0 -1
- package/dist/modules/datasource/java-version/index.js.map +1 -1
- package/dist/modules/datasource/jenkins-plugins/index.js +1 -1
- package/dist/modules/datasource/jenkins-plugins/index.js.map +1 -1
- package/dist/modules/datasource/maven/index.js +35 -27
- package/dist/modules/datasource/maven/index.js.map +1 -1
- package/dist/modules/datasource/maven/types.d.ts +3 -6
- package/dist/modules/datasource/maven/types.js.map +1 -1
- package/dist/modules/datasource/maven/util.d.ts +4 -5
- package/dist/modules/datasource/maven/util.js +94 -157
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/datasource/node-version/index.js +1 -1
- package/dist/modules/datasource/node-version/index.js.map +1 -1
- package/dist/modules/datasource/npm/index.js +1 -1
- package/dist/modules/datasource/npm/index.js.map +1 -1
- package/dist/modules/datasource/npm/npmrc.js +1 -1
- package/dist/modules/datasource/npm/npmrc.js.map +1 -1
- package/dist/modules/datasource/nuget/index.js +1 -1
- package/dist/modules/datasource/nuget/index.js.map +1 -1
- package/dist/modules/datasource/nuget/v2.js +1 -1
- package/dist/modules/datasource/nuget/v2.js.map +1 -1
- package/dist/modules/datasource/nuget/v3.js +6 -6
- package/dist/modules/datasource/nuget/v3.js.map +1 -1
- package/dist/modules/datasource/orb/index.js +1 -1
- package/dist/modules/datasource/orb/index.js.map +1 -1
- package/dist/modules/datasource/packagist/index.js +2 -2
- package/dist/modules/datasource/packagist/index.js.map +1 -1
- package/dist/modules/datasource/packagist/schema.d.ts +25 -25
- package/dist/modules/datasource/pod/index.js +2 -2
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/postprocess-release.js +1 -1
- package/dist/modules/datasource/postprocess-release.js.map +1 -1
- package/dist/modules/datasource/pypi/index.js +1 -1
- package/dist/modules/datasource/pypi/index.js.map +1 -1
- package/dist/modules/datasource/python-version/index.js +1 -1
- package/dist/modules/datasource/python-version/index.js.map +1 -1
- package/dist/modules/datasource/repology/index.js +1 -1
- package/dist/modules/datasource/repology/index.js.map +1 -1
- package/dist/modules/datasource/ruby-version/index.js +1 -1
- package/dist/modules/datasource/ruby-version/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/index.js +2 -2
- package/dist/modules/datasource/rubygems/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/versions-endpoint-cache.js +2 -2
- package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
- package/dist/modules/datasource/sbt-package/index.js +1 -1
- package/dist/modules/datasource/sbt-package/index.js.map +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
- package/dist/modules/datasource/schema.d.ts +4 -4
- package/dist/modules/datasource/terraform-module/index.js +1 -1
- package/dist/modules/datasource/terraform-module/index.js.map +1 -1
- package/dist/modules/datasource/terraform-provider/index.js +2 -3
- package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
- package/dist/modules/datasource/types.d.ts +1 -0
- package/dist/modules/datasource/types.js.map +1 -1
- package/dist/modules/datasource/unity3d/index.d.ts +4 -1
- package/dist/modules/datasource/unity3d/index.js +36 -42
- package/dist/modules/datasource/unity3d/index.js.map +1 -1
- package/dist/modules/datasource/unity3d/schema.d.ts +47 -0
- package/dist/modules/datasource/unity3d/schema.js +17 -0
- package/dist/modules/datasource/unity3d/schema.js.map +1 -0
- package/dist/modules/manager/api.js +2 -0
- package/dist/modules/manager/api.js.map +1 -1
- package/dist/modules/manager/argocd/extract.js +1 -1
- package/dist/modules/manager/argocd/extract.js.map +1 -1
- package/dist/modules/manager/argocd/schema.d.ts +10 -10
- package/dist/modules/manager/asdf/upgradeable-tooling.js +94 -0
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/azure-pipelines/schema.d.ts +32 -32
- package/dist/modules/manager/batect/schema.d.ts +4 -4
- package/dist/modules/manager/batect-wrapper/artifacts.js +1 -1
- package/dist/modules/manager/batect-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/bazel/rules/docker.d.ts +6 -6
- package/dist/modules/manager/bazel/rules/git.d.ts +10 -10
- package/dist/modules/manager/bazel/rules/git.js +9 -2
- package/dist/modules/manager/bazel/rules/git.js.map +1 -1
- package/dist/modules/manager/bazel/rules/go.d.ts +5 -5
- package/dist/modules/manager/bazel/rules/maven.d.ts +7 -7
- package/dist/modules/manager/bazel/rules/oci.d.ts +6 -6
- package/dist/modules/manager/bazel-module/parser/fragments.d.ts +40 -40
- package/dist/modules/manager/bazel-module/parser/maven.d.ts +40 -40
- package/dist/modules/manager/bazel-module/parser/oci.d.ts +17 -17
- package/dist/modules/manager/bazel-module/rules.d.ts +40 -40
- package/dist/modules/manager/bun/artifacts.js +0 -1
- package/dist/modules/manager/bun/artifacts.js.map +1 -1
- package/dist/modules/manager/bundler/artifacts.js +0 -1
- package/dist/modules/manager/bundler/artifacts.js.map +1 -1
- package/dist/modules/manager/bundler/extract.js +2 -1
- package/dist/modules/manager/bundler/extract.js.map +1 -1
- package/dist/modules/manager/cake/index.js +4 -2
- package/dist/modules/manager/cake/index.js.map +1 -1
- package/dist/modules/manager/cargo/artifacts.js +5 -7
- package/dist/modules/manager/cargo/artifacts.js.map +1 -1
- package/dist/modules/manager/cargo/schema.d.ts +114 -114
- package/dist/modules/manager/cocoapods/artifacts.js +1 -2
- package/dist/modules/manager/cocoapods/artifacts.js.map +1 -1
- package/dist/modules/manager/composer/artifacts.js +1 -2
- package/dist/modules/manager/composer/artifacts.js.map +1 -1
- package/dist/modules/manager/composer/schema.d.ts +26 -26
- package/dist/modules/manager/composer/schema.js +1 -1
- package/dist/modules/manager/composer/schema.js.map +1 -1
- package/dist/modules/manager/composer/utils.d.ts +1 -0
- package/dist/modules/manager/composer/utils.js +18 -6
- package/dist/modules/manager/composer/utils.js.map +1 -1
- package/dist/modules/manager/copier/artifacts.js +0 -1
- package/dist/modules/manager/copier/artifacts.js.map +1 -1
- package/dist/modules/manager/crossplane/schema.d.ts +2 -2
- package/dist/modules/manager/custom/jsonata/index.js +4 -0
- package/dist/modules/manager/custom/jsonata/index.js.map +1 -1
- package/dist/modules/manager/custom/jsonata/schema.d.ts +21 -21
- package/dist/modules/manager/custom/regex/index.js +2 -0
- package/dist/modules/manager/custom/regex/index.js.map +1 -1
- package/dist/modules/manager/deps-edn/extract.js +2 -1
- package/dist/modules/manager/deps-edn/extract.js.map +1 -1
- package/dist/modules/manager/devbox/artifacts.d.ts +1 -1
- package/dist/modules/manager/devbox/artifacts.js +28 -11
- package/dist/modules/manager/devbox/artifacts.js.map +1 -1
- package/dist/modules/manager/devbox/schema.js +1 -1
- package/dist/modules/manager/devbox/schema.js.map +1 -1
- package/dist/modules/manager/devcontainer/extract.js +43 -1
- package/dist/modules/manager/devcontainer/extract.js.map +1 -1
- package/dist/modules/manager/devcontainer/index.js +11 -1
- package/dist/modules/manager/devcontainer/index.js.map +1 -1
- package/dist/modules/manager/devcontainer/schema.d.ts +7 -3
- package/dist/modules/manager/devcontainer/schema.js +3 -1
- package/dist/modules/manager/devcontainer/schema.js.map +1 -1
- package/dist/modules/manager/docker-compose/schema.d.ts +6 -6
- package/dist/modules/manager/fingerprint.generated.js +86 -85
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/flux/artifacts.js +0 -1
- package/dist/modules/manager/flux/artifacts.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +27 -24
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/flux/schema.d.ts +94 -94
- package/dist/modules/manager/github-actions/extract.js +60 -39
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/github-actions/schema.d.ts +66 -0
- package/dist/modules/manager/github-actions/schema.js +38 -0
- package/dist/modules/manager/github-actions/schema.js.map +1 -0
- package/dist/modules/manager/gitlabci/extract.d.ts +1 -5
- package/dist/modules/manager/gitlabci/extract.js +27 -126
- package/dist/modules/manager/gitlabci/extract.js.map +1 -1
- package/dist/modules/manager/gitlabci/schema.d.ts +55 -0
- package/dist/modules/manager/gitlabci/schema.js +63 -0
- package/dist/modules/manager/gitlabci/schema.js.map +1 -0
- package/dist/modules/manager/gitlabci-include/extract.js +6 -54
- package/dist/modules/manager/gitlabci-include/extract.js.map +1 -1
- package/dist/modules/manager/gitlabci-include/schema.d.ts +13 -0
- package/dist/modules/manager/gitlabci-include/schema.js +46 -0
- package/dist/modules/manager/gitlabci-include/schema.js.map +1 -0
- package/dist/modules/manager/glasskube/schema.d.ts +8 -8
- package/dist/modules/manager/gomod/artifacts.js +24 -10
- package/dist/modules/manager/gomod/artifacts.js.map +1 -1
- package/dist/modules/manager/gomod/extract.js +23 -0
- package/dist/modules/manager/gomod/extract.js.map +1 -1
- package/dist/modules/manager/gomod/line-parser.js +16 -0
- package/dist/modules/manager/gomod/line-parser.js.map +1 -1
- package/dist/modules/manager/gomod/update.js +2 -2
- package/dist/modules/manager/gomod/update.js.map +1 -1
- package/dist/modules/manager/gradle/artifacts.js +0 -1
- package/dist/modules/manager/gradle/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
- package/dist/modules/manager/gradle/parser/assignments.js +2 -2
- package/dist/modules/manager/gradle/parser/assignments.js.map +1 -1
- package/dist/modules/manager/gradle/parser/handlers.d.ts +1 -2
- package/dist/modules/manager/gradle/parser/handlers.js +10 -25
- package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
- package/dist/modules/manager/gradle/parser/registry-urls.js +11 -3
- package/dist/modules/manager/gradle/parser/registry-urls.js.map +1 -1
- package/dist/modules/manager/gradle-wrapper/artifacts.js +1 -2
- package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/helmfile/artifacts.js +0 -1
- package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
- package/dist/modules/manager/helmfile/extract.js +4 -0
- package/dist/modules/manager/helmfile/extract.js.map +1 -1
- package/dist/modules/manager/helmfile/schema.d.ts +9 -9
- package/dist/modules/manager/helmv3/artifacts.js +0 -1
- package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/utils.js +3 -1
- package/dist/modules/manager/helmv3/utils.js.map +1 -1
- package/dist/modules/manager/hermit/artifacts.js +0 -1
- package/dist/modules/manager/hermit/artifacts.js.map +1 -1
- package/dist/modules/manager/homebrew/extract.js +0 -1
- package/dist/modules/manager/homebrew/extract.js.map +1 -1
- package/dist/modules/manager/jsonnet-bundler/artifacts.js +0 -1
- package/dist/modules/manager/jsonnet-bundler/artifacts.js.map +1 -1
- package/dist/modules/manager/kustomize/artifacts.d.ts +2 -0
- package/dist/modules/manager/kustomize/artifacts.js +154 -0
- package/dist/modules/manager/kustomize/artifacts.js.map +1 -0
- package/dist/modules/manager/kustomize/common.d.ts +3 -0
- package/dist/modules/manager/kustomize/common.js +22 -0
- package/dist/modules/manager/kustomize/common.js.map +1 -0
- package/dist/modules/manager/kustomize/index.d.ts +1 -0
- package/dist/modules/manager/kustomize/index.js +3 -1
- package/dist/modules/manager/kustomize/index.js.map +1 -1
- package/dist/modules/manager/kustomize/types.d.ts +4 -0
- package/dist/modules/manager/kustomize/types.js.map +1 -1
- package/dist/modules/manager/maven/extract.js +3 -1
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven-wrapper/artifacts.js +0 -1
- package/dist/modules/manager/maven-wrapper/artifacts.js.map +1 -1
- package/dist/modules/manager/mise/extract.js +1 -1
- package/dist/modules/manager/mise/extract.js.map +1 -1
- package/dist/modules/manager/mix/artifacts.js +64 -14
- package/dist/modules/manager/mix/artifacts.js.map +1 -1
- package/dist/modules/manager/mix/index.d.ts +1 -0
- package/dist/modules/manager/mix/index.js +2 -1
- package/dist/modules/manager/mix/index.js.map +1 -1
- package/dist/modules/manager/nix/artifacts.js +0 -1
- package/dist/modules/manager/nix/artifacts.js.map +1 -1
- package/dist/modules/manager/nix/extract.js +1 -1
- package/dist/modules/manager/nix/extract.js.map +1 -1
- package/dist/modules/manager/nix/schema.d.ts +18 -18
- package/dist/modules/manager/npm/artifacts.js +0 -1
- package/dist/modules/manager/npm/artifacts.js.map +1 -1
- package/dist/modules/manager/npm/extract/yarn.js +2 -2
- package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
- package/dist/modules/manager/npm/post-update/npm.js +0 -1
- package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js +13 -2
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/rules.js +11 -1
- package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
- package/dist/modules/manager/npm/post-update/yarn.js +0 -1
- package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
- package/dist/modules/manager/npm/schema.d.ts +13 -13
- package/dist/modules/manager/npm/update/dependency/index.js +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/nuget/artifacts.js +1 -2
- package/dist/modules/manager/nuget/artifacts.js.map +1 -1
- package/dist/modules/manager/nuget/package-tree.js +4 -0
- package/dist/modules/manager/nuget/package-tree.js.map +1 -1
- package/dist/modules/manager/nuget/schema.d.ts +8 -8
- package/dist/modules/manager/nuget/util.js +4 -1
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/ocb/schema.d.ts +6 -6
- package/dist/modules/manager/pep621/processors/pdm.js +0 -1
- package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +0 -1
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pep621/schema.d.ts +59 -54
- package/dist/modules/manager/pep621/schema.js +2 -0
- package/dist/modules/manager/pep621/schema.js.map +1 -1
- package/dist/modules/manager/pep621/utils.js +1 -1
- package/dist/modules/manager/pep621/utils.js.map +1 -1
- package/dist/modules/manager/pip-compile/common.js +0 -1
- package/dist/modules/manager/pip-compile/common.js.map +1 -1
- package/dist/modules/manager/pip_requirements/artifacts.js +0 -1
- package/dist/modules/manager/pip_requirements/artifacts.js.map +1 -1
- package/dist/modules/manager/pipenv/artifacts.js +0 -1
- package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
- package/dist/modules/manager/pixi/artifacts.d.ts +3 -0
- package/dist/modules/manager/pixi/artifacts.js +84 -0
- package/dist/modules/manager/pixi/artifacts.js.map +1 -0
- package/dist/modules/manager/pixi/extract.d.ts +2 -0
- package/dist/modules/manager/pixi/extract.js +53 -0
- package/dist/modules/manager/pixi/extract.js.map +1 -0
- package/dist/modules/manager/pixi/index.d.ts +11 -0
- package/dist/modules/manager/pixi/index.js +22 -0
- package/dist/modules/manager/pixi/index.js.map +1 -0
- package/dist/modules/manager/pixi/lockfile.d.ts +6 -0
- package/dist/modules/manager/pixi/lockfile.js +25 -0
- package/dist/modules/manager/pixi/lockfile.js.map +1 -0
- package/dist/modules/manager/pixi/schema.d.ts +14 -0
- package/dist/modules/manager/pixi/schema.js +14 -0
- package/dist/modules/manager/pixi/schema.js.map +1 -0
- package/dist/modules/manager/poetry/artifacts.js +3 -4
- package/dist/modules/manager/poetry/artifacts.js.map +1 -1
- package/dist/modules/manager/poetry/extract.js +2 -1
- package/dist/modules/manager/poetry/extract.js.map +1 -1
- package/dist/modules/manager/poetry/schema.d.ts +48 -48
- package/dist/modules/manager/pub/artifacts.js +0 -1
- package/dist/modules/manager/pub/artifacts.js.map +1 -1
- package/dist/modules/manager/pub/schema.d.ts +8 -8
- package/dist/modules/manager/scalafmt/extract.js +1 -1
- package/dist/modules/manager/scalafmt/extract.js.map +1 -1
- package/dist/modules/manager/sveltos/schema.d.ts +12 -12
- package/dist/modules/manager/terraform/lockfile/hash.d.ts +1 -1
- package/dist/modules/manager/types.d.ts +6 -2
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/manager/vendir/schema.d.ts +4 -4
- package/dist/modules/platform/api.d.ts +1 -1
- package/dist/modules/platform/azure/azure-helper.js +2 -2
- package/dist/modules/platform/azure/azure-helper.js.map +1 -1
- package/dist/modules/platform/azure/index.js +14 -14
- package/dist/modules/platform/azure/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/comments.js +4 -4
- package/dist/modules/platform/bitbucket/comments.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.d.ts +1 -0
- package/dist/modules/platform/bitbucket/index.js +54 -44
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/schema.d.ts +11 -11
- package/dist/modules/platform/bitbucket/utils.js +3 -3
- package/dist/modules/platform/bitbucket/utils.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.d.ts +3 -3
- package/dist/modules/platform/bitbucket-server/index.js +81 -81
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/pr-cache.d.ts +23 -0
- package/dist/modules/platform/bitbucket-server/pr-cache.js +125 -0
- package/dist/modules/platform/bitbucket-server/pr-cache.js.map +1 -0
- package/dist/modules/platform/bitbucket-server/schema.d.ts +75 -0
- package/dist/modules/platform/bitbucket-server/schema.js +14 -1
- package/dist/modules/platform/bitbucket-server/schema.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/types.d.ts +8 -2
- package/dist/modules/platform/bitbucket-server/types.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/utils.d.ts +0 -2
- package/dist/modules/platform/bitbucket-server/utils.js +6 -52
- package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js +6 -6
- package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
- package/dist/modules/platform/codecommit/index.js +24 -24
- package/dist/modules/platform/codecommit/index.js.map +1 -1
- package/dist/modules/platform/gerrit/client.js +13 -2
- package/dist/modules/platform/gerrit/client.js.map +1 -1
- package/dist/modules/platform/gerrit/utils.js +1 -1
- package/dist/modules/platform/gerrit/utils.js.map +1 -1
- package/dist/modules/platform/gitea/gitea-helper.d.ts +1 -0
- package/dist/modules/platform/gitea/gitea-helper.js +16 -0
- package/dist/modules/platform/gitea/gitea-helper.js.map +1 -1
- package/dist/modules/platform/gitea/index.d.ts +1 -0
- package/dist/modules/platform/gitea/index.js +26 -7
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/schema.d.ts +8 -8
- package/dist/modules/platform/gitea/types.d.ts +1 -1
- package/dist/modules/platform/gitea/types.js.map +1 -1
- package/dist/modules/platform/github/common.d.ts +2 -0
- package/dist/modules/platform/github/common.js +16 -0
- package/dist/modules/platform/github/common.js.map +1 -1
- package/dist/modules/platform/github/index.d.ts +1 -1
- package/dist/modules/platform/github/index.js +87 -82
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/github/issue.d.ts +12 -12
- package/dist/modules/platform/github/massage-markdown-links.js +2 -2
- package/dist/modules/platform/github/massage-markdown-links.js.map +1 -1
- package/dist/modules/platform/github/pr.js +3 -3
- package/dist/modules/platform/github/pr.js.map +1 -1
- package/dist/modules/platform/github/schema.d.ts +76 -76
- package/dist/modules/platform/github/schema.js +3 -1
- package/dist/modules/platform/github/schema.js.map +1 -1
- package/dist/modules/platform/gitlab/index.d.ts +1 -0
- package/dist/modules/platform/gitlab/index.js +70 -43
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/index.js +0 -1
- package/dist/modules/platform/index.js.map +1 -1
- package/dist/modules/platform/scm.d.ts +1 -1
- package/dist/modules/versioning/api.js +2 -0
- package/dist/modules/versioning/api.js.map +1 -1
- package/dist/modules/versioning/composer/index.js +10 -0
- package/dist/modules/versioning/composer/index.js.map +1 -1
- package/dist/modules/versioning/conda/index.d.ts +41 -0
- package/dist/modules/versioning/conda/index.js +178 -0
- package/dist/modules/versioning/conda/index.js.map +1 -0
- package/dist/modules/versioning/hashicorp/convertor.d.ts +2 -1
- package/dist/modules/versioning/hashicorp/convertor.js +13 -8
- package/dist/modules/versioning/hashicorp/convertor.js.map +1 -1
- package/dist/modules/versioning/hex/index.js +3 -3
- package/dist/modules/versioning/hex/index.js.map +1 -1
- package/dist/modules/versioning/npm/index.js +2 -1
- package/dist/modules/versioning/npm/index.js.map +1 -1
- package/dist/modules/versioning/schema.js +1 -1
- package/dist/modules/versioning/schema.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +4 -0
- package/dist/modules/versioning/types.js.map +1 -1
- package/dist/proxy.js +2 -1
- package/dist/proxy.js.map +1 -1
- package/dist/renovate.js +2 -2
- package/dist/renovate.js.map +1 -1
- package/dist/util/cache/package/decorator.js +2 -2
- package/dist/util/cache/package/decorator.js.map +1 -1
- package/dist/util/cache/package/redis.js +0 -1
- package/dist/util/cache/package/redis.js.map +1 -1
- package/dist/util/cache/package/types.d.ts +1 -1
- package/dist/util/cache/package/types.js.map +1 -1
- package/dist/util/cache/repository/impl/base.d.ts +1 -1
- package/dist/util/cache/repository/schema.d.ts +4 -4
- package/dist/util/cache/repository/types.d.ts +3 -0
- package/dist/util/cache/repository/types.js.map +1 -1
- package/dist/util/env.d.ts +4 -0
- package/dist/util/env.js +22 -0
- package/dist/util/env.js.map +1 -0
- package/dist/util/exec/containerbase.js +18 -12
- package/dist/util/exec/containerbase.js.map +1 -1
- package/dist/util/exec/index.js +5 -2
- package/dist/util/exec/index.js.map +1 -1
- package/dist/util/exec/types.d.ts +0 -2
- package/dist/util/exec/types.js.map +1 -1
- package/dist/util/exec/utils.d.ts +1 -1
- package/dist/util/exec/utils.js +6 -5
- package/dist/util/exec/utils.js.map +1 -1
- package/dist/util/git/author.js +1 -1
- package/dist/util/git/author.js.map +1 -1
- package/dist/util/git/config.js +0 -1
- package/dist/util/git/config.js.map +1 -1
- package/dist/util/git/error.js +4 -2
- package/dist/util/git/error.js.map +1 -1
- package/dist/util/git/index.js +73 -46
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/git/private-key.js +1 -1
- package/dist/util/git/private-key.js.map +1 -1
- package/dist/util/github/graphql/query-adapters/releases-query-adapter.d.ts +2 -2
- package/dist/util/github/graphql/query-adapters/tags-query-adapter.d.ts +2 -2
- package/dist/util/http/auth.js +0 -1
- package/dist/util/http/auth.js.map +1 -1
- package/dist/util/http/bitbucket-server.d.ts +5 -4
- package/dist/util/http/bitbucket-server.js +21 -20
- package/dist/util/http/bitbucket-server.js.map +1 -1
- package/dist/util/http/bitbucket.d.ts +6 -5
- package/dist/util/http/bitbucket.js +34 -31
- package/dist/util/http/bitbucket.js.map +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js +2 -2
- package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
- package/dist/util/http/cache/memory-http-cache-provider.d.ts +10 -0
- package/dist/util/http/cache/memory-http-cache-provider.js +29 -0
- package/dist/util/http/cache/memory-http-cache-provider.js.map +1 -0
- package/dist/util/http/cache/schema.d.ts +2 -2
- package/dist/util/http/errors.d.ts +2 -0
- package/dist/util/http/errors.js +8 -0
- package/dist/util/http/errors.js.map +1 -0
- package/dist/util/http/gerrit.d.ts +6 -4
- package/dist/util/http/gerrit.js +11 -12
- package/dist/util/http/gerrit.js.map +1 -1
- package/dist/util/http/gitea.d.ts +5 -4
- package/dist/util/http/gitea.js +14 -13
- package/dist/util/http/gitea.js.map +1 -1
- package/dist/util/http/github.d.ts +14 -8
- package/dist/util/http/github.js +65 -60
- package/dist/util/http/github.js.map +1 -1
- package/dist/util/http/gitlab.d.ts +7 -5
- package/dist/util/http/gitlab.js +58 -46
- package/dist/util/http/gitlab.js.map +1 -1
- package/dist/util/http/got.d.ts +9 -0
- package/dist/util/http/got.js +54 -0
- package/dist/util/http/got.js.map +1 -0
- package/dist/util/http/host-rules.d.ts +2 -1
- package/dist/util/http/host-rules.js +5 -4
- package/dist/util/http/host-rules.js.map +1 -1
- package/dist/util/http/http.d.ts +93 -0
- package/dist/util/http/http.js +346 -0
- package/dist/util/http/http.js.map +1 -0
- package/dist/util/http/index.d.ts +6 -74
- package/dist/util/http/index.js +5 -359
- package/dist/util/http/index.js.map +1 -1
- package/dist/util/http/legacy.js +4 -1
- package/dist/util/http/legacy.js.map +1 -1
- package/dist/util/http/types.d.ts +9 -16
- package/dist/util/http/types.js.map +1 -1
- package/dist/util/stats.d.ts +10 -0
- package/dist/util/stats.js +45 -1
- package/dist/util/stats.js.map +1 -1
- package/dist/util/string.d.ts +15 -0
- package/dist/util/string.js +75 -0
- package/dist/util/string.js.map +1 -1
- package/dist/util/toml.d.ts +1 -0
- package/dist/util/toml.js +6 -0
- package/dist/util/toml.js.map +1 -1
- package/dist/util/url.js +3 -8
- package/dist/util/url.js.map +1 -1
- package/dist/util/yaml.js +2 -6
- package/dist/util/yaml.js.map +1 -1
- package/dist/workers/global/config/parse/env.js +3 -2
- package/dist/workers/global/config/parse/env.js.map +1 -1
- package/dist/workers/global/config/parse/file.js +19 -9
- package/dist/workers/global/config/parse/file.js.map +1 -1
- package/dist/workers/global/config/parse/host-rules-from-env.js +6 -2
- package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
- package/dist/workers/global/config/parse/index.js +5 -0
- package/dist/workers/global/config/parse/index.js.map +1 -1
- package/dist/workers/repository/cache.js +1 -2
- package/dist/workers/repository/cache.js.map +1 -1
- package/dist/workers/repository/config-migration/branch/migrated-data.js +2 -0
- package/dist/workers/repository/config-migration/branch/migrated-data.js.map +1 -1
- package/dist/workers/repository/index.js +1 -0
- package/dist/workers/repository/index.js.map +1 -1
- package/dist/workers/repository/init/merge.js +6 -3
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/onboarding/pr/config-description.js +3 -1
- package/dist/workers/repository/onboarding/pr/config-description.js.map +1 -1
- package/dist/workers/repository/process/extract-update.js +0 -1
- package/dist/workers/repository/process/extract-update.js.map +1 -1
- package/dist/workers/repository/process/fingerprint-fields.js +0 -1
- package/dist/workers/repository/process/fingerprint-fields.js.map +1 -1
- package/dist/workers/repository/process/libyear.js +2 -2
- package/dist/workers/repository/process/libyear.js.map +1 -1
- package/dist/workers/repository/process/lookup/index.js +13 -4
- package/dist/workers/repository/process/lookup/index.js.map +1 -1
- package/dist/workers/repository/process/vulnerabilities.js +1 -1
- package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
- package/dist/workers/repository/process/write.js +1 -8
- package/dist/workers/repository/process/write.js.map +1 -1
- package/dist/workers/repository/reconfigure/validate.js +1 -0
- package/dist/workers/repository/reconfigure/validate.js.map +1 -1
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +10 -1
- package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/bitbucket/index.js +1 -1
- package/dist/workers/repository/update/pr/changelog/bitbucket/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/github/index.js +6 -3
- package/dist/workers/repository/update/pr/changelog/github/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/gitlab/index.js +1 -1
- package/dist/workers/repository/update/pr/changelog/gitlab/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/source.js +1 -0
- package/dist/workers/repository/update/pr/changelog/source.js.map +1 -1
- package/dist/workers/repository/updates/flatten.js +8 -4
- package/dist/workers/repository/updates/flatten.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +1 -2
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/dist/workers/types.d.ts +1 -4
- package/dist/workers/types.js.map +1 -1
- package/package.json +69 -72
- package/renovate-schema.json +15 -1
- package/dist/modules/manager/github-actions/types.d.ts +0 -30
- package/dist/modules/manager/github-actions/types.js +0 -3
- package/dist/modules/manager/github-actions/types.js.map +0 -1
- package/dist/modules/manager/gitlabci/common.d.ts +0 -6
- package/dist/modules/manager/gitlabci/common.js +0 -30
- package/dist/modules/manager/gitlabci/common.js.map +0 -1
- package/dist/modules/manager/gitlabci/types.d.ts +0 -35
- package/dist/modules/manager/gitlabci/types.js +0 -3
- package/dist/modules/manager/gitlabci/types.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/packagist/index.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,6BAAwB;AACxB,4CAAyC;AACzC,mFAA8E;AAC9E,qEAA8D;AAC9D,4EAAsD;AAEtD,kEAA4C;AAC5C,2CAAmE;AACnE,sFAAgE;AAChE,8CAA2C;AAG3C,qCAMkB;AAElB,MAAa,mBAAoB,SAAQ,uBAAU;IACjD,MAAM,CAAU,EAAE,GAAG,WAAW,CAAC;IAEjC;QACE,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAEiB,mBAAmB,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAEhD,iBAAiB,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAE1C,gBAAgB,GAAG,MAAM,CAAC;IAE1B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,2EAA2E,CAAC;IAC9E,qHAAqH;IACnG,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,kEAAkE,CAAC;IAErE,mGAAmG;IAC3F,MAAM,CAAC,WAAW,CAAC,GAAW;QACpC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;YAC5C,QAAQ,EAAE,mBAAmB,CAAC,EAAE;YAChC,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,GAAW,EACX,MAAc;QAEd,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAMK,AAAN,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,GAAG,GAAG,IAAA,oBAAc,EAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,qBAAY,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,MAAc;QAC5C,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAChC,MAAc,EACd,OAAqB;QAErB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI;YACnB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC7B,CAAC,CAAC,wCAAwC,CAAC,GAAG,CAAC;QACjD,MAAM,GAAG,GAAG,IAAA,oBAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC;IAUK,AAAN,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,OAAqB;QAErB,MAAM,GAAG,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,sBAAa,CAAC,CAAC;QAC7D,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,IAAkB;QAElB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,IAAkB;QAElB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAA,2BAAkB,EAAC,GAAG,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAQK,AAAN,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,MAAM,GAAG,IAAA,oBAAc,EAC3B,WAAW,EACX,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAC9C,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,IAAA,oBAAc,EAC3B,WAAW,EACX,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,WAAW,MAAM,CAAC,CACvD,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EACR,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;QAEF,MAAM,SAAS,GAA2B,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1D,UAAU;YACV,UAAU;SACX,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,YAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,OAAO,IAAA,+BAAsB,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAEM,SAAS,CACd,WAAmB,EACnB,WAAmB,EACnB,YAA0B;QAE1B,IACE,YAAY,CAAC,YAAY;YACzB,WAAW,IAAI,YAAY,CAAC,gBAAgB,EAC5C,CAAC;YACD,IAAI,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,IAAI,EAAE,CAAC;gBACT,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,IAAA,oBAAc,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,YAAY,CAAC,gBAAgB,EAAE,CAAC;YAClC,OAAO,IAAA,oBAAc,EACnB,WAAW,EACX,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAChE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,EAChC,WAAW,EACX,WAAW,GACO;QAClB,eAAM,CAAC,KAAK,CAAC,eAAe,WAAW,GAAG,CAAC,CAAC;QAE5C,qBAAqB;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAErD,IACE,IAAI,CAAC,iBAAiB;gBACtB,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC7C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAClD,WAAW,EACX,IAAI,CAAC,WAAW,EAChB,WAAW,CACZ,CAAC;gBACF,OAAO,eAAe,CAAC;YACzB,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAA,2BAAkB,EAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC9D,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAgB,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,IAAA,2BAAkB,EAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7D,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7B,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,0BAA0B,CAAC,CAAC;YACxC,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACjC,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAC1D,MAAM,IAAI,uCAAiB,CAAC,GAAG,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;oBACpE,MAAM,IAAI,uCAAiB,CAAC,GAAG,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;;AAlOH,kDAmOC;AAxLO;IAJL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,mBAAmB,CAAC,EAAE,EAAE;QACjD,GAAG,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,mBAAmB,MAAM,EAAE;KACrD,CAAC;0DAKD;AA2BK;IARL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,mBAAmB,CAAC,EAAE,EAAE;QACjD,GAAG,EAAE,CAAC,MAAc,EAAE,OAAqB,EAAE,EAAE,CAC7C,oBAAoB,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;QAChF,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAC5B,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC/C,UAAU,EAAE,IAAI;KACjB,CAAC;2DAQD;AA8BK;IANL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,mBAAmB,CAAC,EAAE,EAAE;QACjD,GAAG,EAAE,CAAC,WAAmB,EAAE,WAAmB,EAAE,WAAmB,EAAE,EAAE,CACrE,qBAAqB,WAAW,IAAI,WAAW,IAAI,WAAW,EAAE;QAClE,UAAU,EAAE,EAAE;KACf,CAAC;4DA0BD","sourcesContent":["import is from '@sindresorhus/is';\nimport { z } from 'zod';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport * as hostRules from '../../../util/host-rules';\nimport type { HttpOptions } from '../../../util/http/types';\nimport * as p from '../../../util/promises';\nimport { replaceUrlPath, resolveBaseUrl } from '../../../util/url';\nimport * as composerVersioning from '../../versioning/composer';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport type { RegistryFile } from './schema';\nimport {\n PackagesResponse,\n PackagistFile,\n RegistryMeta,\n extractDepReleases,\n parsePackagesResponses,\n} from './schema';\n\nexport class PackagistDatasource extends Datasource {\n static readonly id = 'packagist';\n\n constructor() {\n super(PackagistDatasource.id);\n }\n\n override readonly defaultRegistryUrls = ['https://packagist.org'];\n\n override readonly defaultVersioning = composerVersioning.id;\n\n override readonly registryStrategy = 'hunt';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `time` field in the results.';\n // Note: this can be changed to 'release', as the source is present in each release but we remove it while processing\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from `source` field in the results.';\n\n // We calculate auth at this datasource layer so that we can know whether it's safe to cache or not\n private static getHostOpts(url: string): HttpOptions {\n const { username, password } = hostRules.find({\n hostType: PackagistDatasource.id,\n url,\n });\n return username && password ? { username, password } : {};\n }\n\n private async getJson<Schema extends z.ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<z.infer<Schema>> {\n const opts = PackagistDatasource.getHostOpts(url);\n const { body } = await this.http.getJson(url, opts, schema);\n return body;\n }\n\n @cache({\n namespace: `datasource-${PackagistDatasource.id}`,\n key: (regUrl: string) => `getRegistryMeta:${regUrl}`,\n })\n async getRegistryMeta(regUrl: string): Promise<RegistryMeta> {\n const url = resolveBaseUrl(regUrl, 'packages.json');\n const result = await this.getJson(url, RegistryMeta);\n return result;\n }\n\n private static isPrivatePackage(regUrl: string): boolean {\n const opts = PackagistDatasource.getHostOpts(regUrl);\n return !!opts.password;\n }\n\n private static getPackagistFileUrl(\n regUrl: string,\n regFile: RegistryFile,\n ): string {\n const { key, hash } = regFile;\n const fileName = hash\n ? key.replace('%hash%', hash)\n : /* istanbul ignore next: hard to test */ key;\n const url = resolveBaseUrl(regUrl, fileName);\n return url;\n }\n\n @cache({\n namespace: `datasource-${PackagistDatasource.id}`,\n key: (regUrl: string, regFile: RegistryFile) =>\n `getPackagistFile:${PackagistDatasource.getPackagistFileUrl(regUrl, regFile)}`,\n cacheable: (regUrl: string) =>\n !PackagistDatasource.isPrivatePackage(regUrl),\n ttlMinutes: 1440,\n })\n async getPackagistFile(\n regUrl: string,\n regFile: RegistryFile,\n ): Promise<PackagistFile> {\n const url = PackagistDatasource.getPackagistFileUrl(regUrl, regFile);\n const packagistFile = await this.getJson(url, PackagistFile);\n return packagistFile;\n }\n\n async fetchProviderPackages(\n regUrl: string,\n meta: RegistryMeta,\n ): Promise<void> {\n await p.map(meta.files, async (file) => {\n const res = await this.getPackagistFile(regUrl, file);\n Object.assign(meta.providerPackages, res.providers);\n });\n }\n\n async fetchIncludesPackages(\n regUrl: string,\n meta: RegistryMeta,\n ): Promise<void> {\n await p.map(meta.includesFiles, async (file) => {\n const res = await this.getPackagistFile(regUrl, file);\n for (const [key, val] of Object.entries(res.packages)) {\n meta.includesPackages[key] = extractDepReleases(val);\n }\n });\n }\n\n @cache({\n namespace: `datasource-${PackagistDatasource.id}`,\n key: (registryUrl: string, metadataUrl: string, packageName: string) =>\n `packagistV2Lookup:${registryUrl}:${metadataUrl}:${packageName}`,\n ttlMinutes: 10,\n })\n async packagistV2Lookup(\n registryUrl: string,\n metadataUrl: string,\n packageName: string,\n ): Promise<ReleaseResult | null> {\n const pkgUrl = replaceUrlPath(\n registryUrl,\n metadataUrl.replace('%package%', packageName),\n );\n const pkgPromise = this.getJson(pkgUrl, z.unknown());\n\n const devUrl = replaceUrlPath(\n registryUrl,\n metadataUrl.replace('%package%', `${packageName}~dev`),\n );\n const devPromise = this.getJson(devUrl, z.unknown()).then(\n (x) => x,\n () => null,\n );\n\n const responses: NonNullable<unknown>[] = await Promise.all([\n pkgPromise,\n devPromise,\n ]).then((responses) => responses.filter(is.object));\n return parsePackagesResponses(packageName, responses);\n }\n\n public getPkgUrl(\n packageName: string,\n registryUrl: string,\n registryMeta: RegistryMeta,\n ): string | null {\n if (\n registryMeta.providersUrl &&\n packageName in registryMeta.providerPackages\n ) {\n let url = registryMeta.providersUrl.replace('%package%', packageName);\n const hash = registryMeta.providerPackages[packageName];\n if (hash) {\n url = url.replace('%hash%', hash);\n }\n return replaceUrlPath(registryUrl, url);\n }\n\n if (registryMeta.providersLazyUrl) {\n return replaceUrlPath(\n registryUrl,\n registryMeta.providersLazyUrl.replace('%package%', packageName),\n );\n }\n\n return null;\n }\n\n public override async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n logger.trace(`getReleases(${packageName})`);\n\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n try {\n const meta = await this.getRegistryMeta(registryUrl);\n\n if (\n meta.availablePackages &&\n !meta.availablePackages.includes(packageName)\n ) {\n return null;\n }\n\n if (meta.metadataUrl) {\n const packagistResult = await this.packagistV2Lookup(\n registryUrl,\n meta.metadataUrl,\n packageName,\n );\n return packagistResult;\n }\n\n if (meta.packages[packageName]) {\n const result = extractDepReleases(meta.packages[packageName]);\n return result;\n }\n\n await this.fetchIncludesPackages(registryUrl, meta);\n if (meta.includesPackages[packageName]) {\n return meta.includesPackages[packageName];\n }\n\n await this.fetchProviderPackages(registryUrl, meta);\n const pkgUrl = this.getPkgUrl(packageName, registryUrl, meta);\n if (!pkgUrl) {\n return null;\n }\n\n const pkgRes = await this.getJson(pkgUrl, PackagesResponse);\n const dep = extractDepReleases(pkgRes.packages[packageName]);\n logger.trace({ dep }, 'dep');\n return dep;\n } catch (err) /* istanbul ignore next */ {\n if (err.host === 'packagist.org') {\n if (err.code === 'ECONNRESET' || err.code === 'ETIMEDOUT') {\n throw new ExternalHostError(err);\n }\n if (err.statusCode && err.statusCode >= 500 && err.statusCode < 600) {\n throw new ExternalHostError(err);\n }\n }\n throw err;\n }\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/packagist/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { z } from 'zod';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport * as hostRules from '../../../util/host-rules';\nimport type { HttpOptions } from '../../../util/http/types';\nimport * as p from '../../../util/promises';\nimport { replaceUrlPath, resolveBaseUrl } from '../../../util/url';\nimport * as composerVersioning from '../../versioning/composer';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport type { RegistryFile } from './schema';\nimport {\n PackagesResponse,\n PackagistFile,\n RegistryMeta,\n extractDepReleases,\n parsePackagesResponses,\n} from './schema';\n\nexport class PackagistDatasource extends Datasource {\n static readonly id = 'packagist';\n\n constructor() {\n super(PackagistDatasource.id);\n }\n\n override readonly defaultRegistryUrls = ['https://repo.packagist.org'];\n\n override readonly defaultVersioning = composerVersioning.id;\n\n override readonly registryStrategy = 'hunt';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `time` field in the results.';\n // Note: this can be changed to 'release', as the source is present in each release but we remove it while processing\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from `source` field in the results.';\n\n // We calculate auth at this datasource layer so that we can know whether it's safe to cache or not\n private static getHostOpts(url: string): HttpOptions {\n const { username, password } = hostRules.find({\n hostType: PackagistDatasource.id,\n url,\n });\n return username && password ? { username, password } : {};\n }\n\n private async getJson<Schema extends z.ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<z.infer<Schema>> {\n const opts = PackagistDatasource.getHostOpts(url);\n const { body } = await this.http.getJson(url, opts, schema);\n return body;\n }\n\n @cache({\n namespace: `datasource-${PackagistDatasource.id}`,\n key: (regUrl: string) => `getRegistryMeta:${regUrl}`,\n })\n async getRegistryMeta(regUrl: string): Promise<RegistryMeta> {\n const url = resolveBaseUrl(regUrl, 'packages.json');\n const result = await this.getJson(url, RegistryMeta);\n return result;\n }\n\n private static isPrivatePackage(regUrl: string): boolean {\n const opts = PackagistDatasource.getHostOpts(regUrl);\n return !!opts.password;\n }\n\n private static getPackagistFileUrl(\n regUrl: string,\n regFile: RegistryFile,\n ): string {\n const { key, hash } = regFile;\n const fileName = hash\n ? key.replace('%hash%', hash)\n : /* istanbul ignore next: hard to test */ key;\n const url = resolveBaseUrl(regUrl, fileName);\n return url;\n }\n\n @cache({\n namespace: `datasource-${PackagistDatasource.id}`,\n key: (regUrl: string, regFile: RegistryFile) =>\n `getPackagistFile:${PackagistDatasource.getPackagistFileUrl(regUrl, regFile)}`,\n cacheable: (regUrl: string) =>\n !PackagistDatasource.isPrivatePackage(regUrl),\n ttlMinutes: 1440,\n })\n async getPackagistFile(\n regUrl: string,\n regFile: RegistryFile,\n ): Promise<PackagistFile> {\n const url = PackagistDatasource.getPackagistFileUrl(regUrl, regFile);\n const packagistFile = await this.getJson(url, PackagistFile);\n return packagistFile;\n }\n\n async fetchProviderPackages(\n regUrl: string,\n meta: RegistryMeta,\n ): Promise<void> {\n await p.map(meta.files, async (file) => {\n const res = await this.getPackagistFile(regUrl, file);\n Object.assign(meta.providerPackages, res.providers);\n });\n }\n\n async fetchIncludesPackages(\n regUrl: string,\n meta: RegistryMeta,\n ): Promise<void> {\n await p.map(meta.includesFiles, async (file) => {\n const res = await this.getPackagistFile(regUrl, file);\n for (const [key, val] of Object.entries(res.packages)) {\n meta.includesPackages[key] = extractDepReleases(val);\n }\n });\n }\n\n @cache({\n namespace: `datasource-${PackagistDatasource.id}`,\n key: (registryUrl: string, metadataUrl: string, packageName: string) =>\n `packagistV2Lookup:${registryUrl}:${metadataUrl}:${packageName}`,\n ttlMinutes: 10,\n })\n async packagistV2Lookup(\n registryUrl: string,\n metadataUrl: string,\n packageName: string,\n ): Promise<ReleaseResult | null> {\n const pkgUrl = replaceUrlPath(\n registryUrl,\n metadataUrl.replace('%package%', packageName),\n );\n const pkgPromise = this.getJson(pkgUrl, z.unknown());\n\n const devUrl = replaceUrlPath(\n registryUrl,\n metadataUrl.replace('%package%', `${packageName}~dev`),\n );\n const devPromise = this.getJson(devUrl, z.unknown()).then(\n (x) => x,\n () => null,\n );\n\n const responses: NonNullable<unknown>[] = await Promise.all([\n pkgPromise,\n devPromise,\n ]).then((responses) => responses.filter(is.object));\n return parsePackagesResponses(packageName, responses);\n }\n\n public getPkgUrl(\n packageName: string,\n registryUrl: string,\n registryMeta: RegistryMeta,\n ): string | null {\n if (\n registryMeta.providersUrl &&\n packageName in registryMeta.providerPackages\n ) {\n let url = registryMeta.providersUrl.replace('%package%', packageName);\n const hash = registryMeta.providerPackages[packageName];\n if (hash) {\n url = url.replace('%hash%', hash);\n }\n return replaceUrlPath(registryUrl, url);\n }\n\n if (registryMeta.providersLazyUrl) {\n return replaceUrlPath(\n registryUrl,\n registryMeta.providersLazyUrl.replace('%package%', packageName),\n );\n }\n\n return null;\n }\n\n public override async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n logger.trace(`getReleases(${packageName})`);\n\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n try {\n const meta = await this.getRegistryMeta(registryUrl);\n\n if (\n meta.availablePackages &&\n !meta.availablePackages.includes(packageName)\n ) {\n return null;\n }\n\n if (meta.metadataUrl) {\n const packagistResult = await this.packagistV2Lookup(\n registryUrl,\n meta.metadataUrl,\n packageName,\n );\n return packagistResult;\n }\n\n if (meta.packages[packageName]) {\n const result = extractDepReleases(meta.packages[packageName]);\n return result;\n }\n\n await this.fetchIncludesPackages(registryUrl, meta);\n if (meta.includesPackages[packageName]) {\n return meta.includesPackages[packageName];\n }\n\n await this.fetchProviderPackages(registryUrl, meta);\n const pkgUrl = this.getPkgUrl(packageName, registryUrl, meta);\n if (!pkgUrl) {\n return null;\n }\n\n const pkgRes = await this.getJson(pkgUrl, PackagesResponse);\n const dep = extractDepReleases(pkgRes.packages[packageName]);\n logger.trace({ dep }, 'dep');\n return dep;\n } catch (err) /* istanbul ignore next */ {\n if (err.host === 'packagist.org') {\n if (err.code === 'ECONNRESET' || err.code === 'ETIMEDOUT') {\n throw new ExternalHostError(err);\n }\n if (err.statusCode && err.statusCode >= 500 && err.statusCode < 600) {\n throw new ExternalHostError(err);\n }\n }\n throw err;\n }\n }\n}\n"]}
|
@@ -22,52 +22,52 @@ export declare const ComposerRelease: z.ZodObject<{
|
|
22
22
|
}>>>;
|
23
23
|
}, "strip", z.ZodTypeAny, {
|
24
24
|
time: import("../../../util/timestamp").Timestamp | null;
|
25
|
+
version: string;
|
26
|
+
homepage: string | null;
|
25
27
|
source: {
|
26
28
|
url: string;
|
27
29
|
} | null;
|
28
30
|
require: {
|
29
31
|
php: string;
|
30
32
|
} | null;
|
31
|
-
version: string;
|
32
|
-
homepage: string | null;
|
33
33
|
}, {
|
34
34
|
version: string;
|
35
35
|
time?: unknown;
|
36
|
+
homepage?: unknown;
|
36
37
|
source?: unknown;
|
37
38
|
require?: unknown;
|
38
|
-
homepage?: unknown;
|
39
39
|
}>;
|
40
40
|
export type ComposerRelease = z.infer<typeof ComposerRelease>;
|
41
41
|
export declare const ComposerReleases: z.ZodCatch<z.ZodUnion<[z.ZodPipeline<z.ZodEffects<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">, Record<string, unknown>[], Record<string, unknown>[]>, z.ZodEffects<z.ZodArray<z.ZodAny, "many">, {
|
42
42
|
time: import("../../../util/timestamp").Timestamp | null;
|
43
|
+
version: string;
|
44
|
+
homepage: string | null;
|
43
45
|
source: {
|
44
46
|
url: string;
|
45
47
|
} | null;
|
46
48
|
require: {
|
47
49
|
php: string;
|
48
50
|
} | null;
|
49
|
-
version: string;
|
50
|
-
homepage: string | null;
|
51
51
|
}[], any[]>>, z.ZodEffects<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodAny>, Record<string, {
|
52
52
|
time: import("../../../util/timestamp").Timestamp | null;
|
53
|
+
version: string;
|
54
|
+
homepage: string | null;
|
53
55
|
source: {
|
54
56
|
url: string;
|
55
57
|
} | null;
|
56
58
|
require: {
|
57
59
|
php: string;
|
58
60
|
} | null;
|
59
|
-
version: string;
|
60
|
-
homepage: string | null;
|
61
61
|
}>, Record<string, any>>, {
|
62
62
|
time: import("../../../util/timestamp").Timestamp | null;
|
63
|
+
version: string;
|
64
|
+
homepage: string | null;
|
63
65
|
source: {
|
64
66
|
url: string;
|
65
67
|
} | null;
|
66
68
|
require: {
|
67
69
|
php: string;
|
68
70
|
} | null;
|
69
|
-
version: string;
|
70
|
-
homepage: string | null;
|
71
71
|
}[], Record<string, any>>]>>;
|
72
72
|
export type ComposerReleases = z.infer<typeof ComposerReleases>;
|
73
73
|
export declare const ComposerPackagesResponse: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
@@ -96,14 +96,14 @@ export declare const ComposerPackagesResponse: z.ZodEffects<z.ZodEffects<z.ZodOb
|
|
96
96
|
};
|
97
97
|
}>, {
|
98
98
|
time: import("../../../util/timestamp").Timestamp | null;
|
99
|
+
version: string;
|
100
|
+
homepage: string | null;
|
99
101
|
source: {
|
100
102
|
url: string;
|
101
103
|
} | null;
|
102
104
|
require: {
|
103
105
|
php: string;
|
104
106
|
} | null;
|
105
|
-
version: string;
|
106
|
-
homepage: string | null;
|
107
107
|
}[], {
|
108
108
|
packageName: string;
|
109
109
|
packagesResponse: {
|
@@ -168,26 +168,26 @@ export type RegistryFile = z.infer<typeof RegistryFile>;
|
|
168
168
|
export declare const PackagesResponse: z.ZodObject<{
|
169
169
|
packages: z.ZodCatch<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodAny>, Record<string, {
|
170
170
|
time: import("../../../util/timestamp").Timestamp | null;
|
171
|
+
version: string;
|
172
|
+
homepage: string | null;
|
171
173
|
source: {
|
172
174
|
url: string;
|
173
175
|
} | null;
|
174
176
|
require: {
|
175
177
|
php: string;
|
176
178
|
} | null;
|
177
|
-
version: string;
|
178
|
-
homepage: string | null;
|
179
179
|
}[]>, Record<string, any>>>;
|
180
180
|
}, "strip", z.ZodTypeAny, {
|
181
181
|
packages: Record<string, {
|
182
182
|
time: import("../../../util/timestamp").Timestamp | null;
|
183
|
+
version: string;
|
184
|
+
homepage: string | null;
|
183
185
|
source: {
|
184
186
|
url: string;
|
185
187
|
} | null;
|
186
188
|
require: {
|
187
189
|
php: string;
|
188
190
|
} | null;
|
189
|
-
version: string;
|
190
|
-
homepage: string | null;
|
191
191
|
}[]>;
|
192
192
|
}, {
|
193
193
|
packages?: unknown;
|
@@ -196,14 +196,14 @@ export type PackagesResponse = z.infer<typeof PackagesResponse>;
|
|
196
196
|
export declare const PackagistFile: z.ZodObject<z.objectUtil.extendShape<{
|
197
197
|
packages: z.ZodCatch<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodAny>, Record<string, {
|
198
198
|
time: import("../../../util/timestamp").Timestamp | null;
|
199
|
+
version: string;
|
200
|
+
homepage: string | null;
|
199
201
|
source: {
|
200
202
|
url: string;
|
201
203
|
} | null;
|
202
204
|
require: {
|
203
205
|
php: string;
|
204
206
|
} | null;
|
205
|
-
version: string;
|
206
|
-
homepage: string | null;
|
207
207
|
}[]>, Record<string, any>>>;
|
208
208
|
}, {
|
209
209
|
providers: z.ZodCatch<z.ZodEffects<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodAny>, Record<string, {
|
@@ -216,14 +216,14 @@ export declare const PackagistFile: z.ZodObject<z.objectUtil.extendShape<{
|
|
216
216
|
}>, "strip", z.ZodTypeAny, {
|
217
217
|
packages: Record<string, {
|
218
218
|
time: import("../../../util/timestamp").Timestamp | null;
|
219
|
+
version: string;
|
220
|
+
homepage: string | null;
|
219
221
|
source: {
|
220
222
|
url: string;
|
221
223
|
} | null;
|
222
224
|
require: {
|
223
225
|
php: string;
|
224
226
|
} | null;
|
225
|
-
version: string;
|
226
|
-
homepage: string | null;
|
227
227
|
}[]>;
|
228
228
|
providers: {
|
229
229
|
[k: string]: string | null;
|
@@ -236,14 +236,14 @@ export type PackagistFile = z.infer<typeof PackagistFile>;
|
|
236
236
|
export declare const RegistryMeta: z.ZodEffects<z.ZodPipeline<z.ZodCatch<z.ZodRecord<z.ZodString, z.ZodUnknown>>, z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<{
|
237
237
|
packages: z.ZodCatch<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodAny>, Record<string, {
|
238
238
|
time: import("../../../util/timestamp").Timestamp | null;
|
239
|
+
version: string;
|
240
|
+
homepage: string | null;
|
239
241
|
source: {
|
240
242
|
url: string;
|
241
243
|
} | null;
|
242
244
|
require: {
|
243
245
|
php: string;
|
244
246
|
} | null;
|
245
|
-
version: string;
|
246
|
-
homepage: string | null;
|
247
247
|
}[]>, Record<string, any>>>;
|
248
248
|
}, {
|
249
249
|
providers: z.ZodCatch<z.ZodEffects<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodAny>, Record<string, {
|
@@ -281,14 +281,14 @@ export declare const RegistryMeta: z.ZodEffects<z.ZodPipeline<z.ZodCatch<z.ZodRe
|
|
281
281
|
}[];
|
282
282
|
packages: Record<string, {
|
283
283
|
time: import("../../../util/timestamp").Timestamp | null;
|
284
|
+
version: string;
|
285
|
+
homepage: string | null;
|
284
286
|
source: {
|
285
287
|
url: string;
|
286
288
|
} | null;
|
287
289
|
require: {
|
288
290
|
php: string;
|
289
291
|
} | null;
|
290
|
-
version: string;
|
291
|
-
homepage: string | null;
|
292
292
|
}[]>;
|
293
293
|
providers: {
|
294
294
|
[k: string]: string | null;
|
@@ -313,14 +313,14 @@ export declare const RegistryMeta: z.ZodEffects<z.ZodPipeline<z.ZodCatch<z.ZodRe
|
|
313
313
|
}>>, {
|
314
314
|
packages: Record<string, {
|
315
315
|
time: import("../../../util/timestamp").Timestamp | null;
|
316
|
+
version: string;
|
317
|
+
homepage: string | null;
|
316
318
|
source: {
|
317
319
|
url: string;
|
318
320
|
} | null;
|
319
321
|
require: {
|
320
322
|
php: string;
|
321
323
|
} | null;
|
322
|
-
version: string;
|
323
|
-
homepage: string | null;
|
324
324
|
}[]>;
|
325
325
|
includesFiles: {
|
326
326
|
key: string;
|
@@ -77,7 +77,7 @@ class PodDatasource extends datasource_1.Datasource {
|
|
77
77
|
}
|
78
78
|
async requestCDN(url, packageName) {
|
79
79
|
try {
|
80
|
-
const resp = await this.http.
|
80
|
+
const resp = await this.http.getText(url);
|
81
81
|
if (resp?.body) {
|
82
82
|
return resp.body;
|
83
83
|
}
|
@@ -135,7 +135,7 @@ class PodDatasource extends datasource_1.Datasource {
|
|
135
135
|
return null;
|
136
136
|
}
|
137
137
|
async getReleases({ packageName, registryUrl, }) {
|
138
|
-
|
138
|
+
/* v8 ignore next 3 -- should never happen */
|
139
139
|
if (!registryUrl) {
|
140
140
|
return null;
|
141
141
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/pod/index.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'node:crypto';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport type { HttpError } from '../../../util/http';\nimport { GithubHttp } from '../../../util/http/github';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { Datasource } from '../datasource';\nimport { massageGithubUrl } from '../metadata';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\n\ntype URLFormatOptions =\n | 'withShardWithSpec'\n | 'withShardWithoutSpec'\n | 'withSpecsWithoutShard'\n | 'withoutSpecsWithoutShard';\n\nfunction shardParts(packageName: string): string[] {\n return crypto\n .createHash('md5')\n .update(packageName)\n .digest('hex')\n .slice(0, 3)\n .split('');\n}\n\nconst githubRegex = regEx(\n /(?<hostURL>^https:\\/\\/[a-zA-Z0-9-.]+)\\/(?<account>[^/]+)\\/(?<repo>[^/]+?)(?:\\.git|\\/.*)?$/,\n);\n\nfunction releasesGithubUrl(\n packageName: string,\n opts: {\n hostURL: string;\n account: string;\n repo: string;\n useShard: boolean;\n useSpecs: boolean;\n },\n): string {\n const { hostURL, account, repo, useShard, useSpecs } = opts;\n const prefix =\n hostURL && hostURL !== 'https://github.com'\n ? `${hostURL}/api/v3/repos`\n : 'https://api.github.com/repos';\n const shard = shardParts(packageName).join('/');\n // `Specs` in the pods repo URL is a new requirement for legacy support also allow pod repo URL without `Specs`\n const packageNamePath = useSpecs ? `Specs/${packageName}` : packageName;\n const shardPath = useSpecs\n ? `Specs/${shard}/${packageName}`\n : `${shard}/${packageName}`;\n const suffix = useShard ? shardPath : packageNamePath;\n return `${prefix}/${account}/${repo}/contents/${suffix}`;\n}\n\nfunction handleError(packageName: string, err: HttpError): void {\n const errorData = { packageName, err };\n\n const statusCode = err.response?.statusCode ?? 0;\n if (statusCode === 429 || (statusCode >= 500 && statusCode < 600)) {\n logger.warn({ packageName, err }, `CocoaPods registry failure`);\n throw new ExternalHostError(err);\n }\n\n if (statusCode === 401) {\n logger.debug(errorData, 'Authorization error');\n } else if (statusCode === 404) {\n logger.debug(errorData, 'Package lookup error');\n } else if (err.message === HOST_DISABLED) {\n logger.trace(errorData, 'Host disabled');\n } else {\n logger.warn(errorData, 'CocoaPods lookup failure: Unknown error');\n }\n}\n\nfunction isDefaultRepo(url: string): boolean {\n const match = githubRegex.exec(url);\n if (match?.groups) {\n const { account, repo } = match.groups;\n return (\n account.toLowerCase() === 'cocoapods' && repo.toLowerCase() === 'specs'\n ); // https://github.com/CocoaPods/Specs.git\n }\n return false;\n}\n\nfunction releasesCDNUrl(packageName: string, registryUrl: string): string {\n const shard = shardParts(packageName).join('_');\n return `${registryUrl}/all_pods_versions_${shard}.txt`;\n}\n\nexport class PodDatasource extends Datasource {\n static readonly id = 'pod';\n\n override readonly defaultRegistryUrls = ['https://cdn.cocoapods.org'];\n\n override readonly registryStrategy = 'hunt';\n\n githubHttp: GithubHttp;\n\n constructor() {\n super(PodDatasource.id);\n this.githubHttp = new GithubHttp(PodDatasource.id);\n }\n\n private async requestCDN(\n url: string,\n packageName: string,\n ): Promise<string | null> {\n try {\n const resp = await this.http.get(url);\n if (resp?.body) {\n return resp.body;\n }\n } catch (err) {\n handleError(packageName, err);\n }\n\n return null;\n }\n\n private async requestGithub<T = unknown>(\n url: string,\n packageName: string,\n ): Promise<T | null> {\n try {\n const resp = await this.githubHttp.getJsonUnchecked<T>(url);\n if (resp?.body) {\n return resp.body;\n }\n } catch (err) {\n handleError(packageName, err);\n }\n\n return null;\n }\n\n private async getReleasesFromGithub(\n packageName: string,\n opts: { hostURL: string; account: string; repo: string },\n useShard = true,\n useSpecs = true,\n urlFormatOptions: URLFormatOptions = 'withShardWithSpec',\n ): Promise<ReleaseResult | null> {\n const url = releasesGithubUrl(packageName, { ...opts, useShard, useSpecs });\n const resp = await this.requestGithub<{ name: string }[]>(url, packageName);\n if (resp) {\n const releases = resp.map(({ name }) => ({ version: name }));\n return { releases };\n }\n\n // support different url formats\n switch (urlFormatOptions) {\n case 'withShardWithSpec':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n true,\n false,\n 'withShardWithoutSpec',\n );\n case 'withShardWithoutSpec':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n false,\n true,\n 'withSpecsWithoutShard',\n );\n case 'withSpecsWithoutShard':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n false,\n false,\n 'withoutSpecsWithoutShard',\n );\n case 'withoutSpecsWithoutShard':\n default:\n return null;\n }\n }\n\n private async getReleasesFromCDN(\n packageName: string,\n registryUrl: string,\n ): Promise<ReleaseResult | null> {\n const url = releasesCDNUrl(packageName, registryUrl);\n const resp = await this.requestCDN(url, packageName);\n if (resp) {\n const lines = resp.split(newlineRegex);\n for (const line of lines) {\n const [name, ...versions] = line.split('/');\n if (name === packageName.replace(regEx(/\\/.*$/), '')) {\n const releases = versions.map((version) => ({ version }));\n return { releases };\n }\n }\n }\n return null;\n }\n\n @cache({\n ttlMinutes: 30,\n namespace: `datasource-${PodDatasource.id}`,\n key: ({ packageName, registryUrl }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl}:${packageName}`,\n })\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const podName = packageName.replace(regEx(/\\/.*$/), '');\n let baseUrl = registryUrl.replace(regEx(/\\/+$/), '');\n // In order to not abuse github API limits, query CDN instead\n if (isDefaultRepo(baseUrl)) {\n [baseUrl] = this.defaultRegistryUrls;\n }\n\n let result: ReleaseResult | null = null;\n const match = githubRegex.exec(baseUrl);\n if (match?.groups) {\n baseUrl = massageGithubUrl(baseUrl);\n const { hostURL, account, repo } = match.groups;\n const opts = { hostURL, account, repo };\n result = await this.getReleasesFromGithub(podName, opts);\n } else {\n result = await this.getReleasesFromCDN(podName, baseUrl);\n }\n\n return result;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/pod/index.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'node:crypto';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport type { HttpError } from '../../../util/http';\nimport { GithubHttp } from '../../../util/http/github';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { Datasource } from '../datasource';\nimport { massageGithubUrl } from '../metadata';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\n\ntype URLFormatOptions =\n | 'withShardWithSpec'\n | 'withShardWithoutSpec'\n | 'withSpecsWithoutShard'\n | 'withoutSpecsWithoutShard';\n\nfunction shardParts(packageName: string): string[] {\n return crypto\n .createHash('md5')\n .update(packageName)\n .digest('hex')\n .slice(0, 3)\n .split('');\n}\n\nconst githubRegex = regEx(\n /(?<hostURL>^https:\\/\\/[a-zA-Z0-9-.]+)\\/(?<account>[^/]+)\\/(?<repo>[^/]+?)(?:\\.git|\\/.*)?$/,\n);\n\nfunction releasesGithubUrl(\n packageName: string,\n opts: {\n hostURL: string;\n account: string;\n repo: string;\n useShard: boolean;\n useSpecs: boolean;\n },\n): string {\n const { hostURL, account, repo, useShard, useSpecs } = opts;\n const prefix =\n hostURL && hostURL !== 'https://github.com'\n ? `${hostURL}/api/v3/repos`\n : 'https://api.github.com/repos';\n const shard = shardParts(packageName).join('/');\n // `Specs` in the pods repo URL is a new requirement for legacy support also allow pod repo URL without `Specs`\n const packageNamePath = useSpecs ? `Specs/${packageName}` : packageName;\n const shardPath = useSpecs\n ? `Specs/${shard}/${packageName}`\n : `${shard}/${packageName}`;\n const suffix = useShard ? shardPath : packageNamePath;\n return `${prefix}/${account}/${repo}/contents/${suffix}`;\n}\n\nfunction handleError(packageName: string, err: HttpError): void {\n const errorData = { packageName, err };\n\n const statusCode = err.response?.statusCode ?? 0;\n if (statusCode === 429 || (statusCode >= 500 && statusCode < 600)) {\n logger.warn({ packageName, err }, `CocoaPods registry failure`);\n throw new ExternalHostError(err);\n }\n\n if (statusCode === 401) {\n logger.debug(errorData, 'Authorization error');\n } else if (statusCode === 404) {\n logger.debug(errorData, 'Package lookup error');\n } else if (err.message === HOST_DISABLED) {\n logger.trace(errorData, 'Host disabled');\n } else {\n logger.warn(errorData, 'CocoaPods lookup failure: Unknown error');\n }\n}\n\nfunction isDefaultRepo(url: string): boolean {\n const match = githubRegex.exec(url);\n if (match?.groups) {\n const { account, repo } = match.groups;\n return (\n account.toLowerCase() === 'cocoapods' && repo.toLowerCase() === 'specs'\n ); // https://github.com/CocoaPods/Specs.git\n }\n return false;\n}\n\nfunction releasesCDNUrl(packageName: string, registryUrl: string): string {\n const shard = shardParts(packageName).join('_');\n return `${registryUrl}/all_pods_versions_${shard}.txt`;\n}\n\nexport class PodDatasource extends Datasource {\n static readonly id = 'pod';\n\n override readonly defaultRegistryUrls = ['https://cdn.cocoapods.org'];\n\n override readonly registryStrategy = 'hunt';\n\n githubHttp: GithubHttp;\n\n constructor() {\n super(PodDatasource.id);\n this.githubHttp = new GithubHttp(PodDatasource.id);\n }\n\n private async requestCDN(\n url: string,\n packageName: string,\n ): Promise<string | null> {\n try {\n const resp = await this.http.getText(url);\n if (resp?.body) {\n return resp.body;\n }\n } catch (err) {\n handleError(packageName, err);\n }\n\n return null;\n }\n\n private async requestGithub<T = unknown>(\n url: string,\n packageName: string,\n ): Promise<T | null> {\n try {\n const resp = await this.githubHttp.getJsonUnchecked<T>(url);\n if (resp?.body) {\n return resp.body;\n }\n } catch (err) {\n handleError(packageName, err);\n }\n\n return null;\n }\n\n private async getReleasesFromGithub(\n packageName: string,\n opts: { hostURL: string; account: string; repo: string },\n useShard = true,\n useSpecs = true,\n urlFormatOptions: URLFormatOptions = 'withShardWithSpec',\n ): Promise<ReleaseResult | null> {\n const url = releasesGithubUrl(packageName, { ...opts, useShard, useSpecs });\n const resp = await this.requestGithub<{ name: string }[]>(url, packageName);\n if (resp) {\n const releases = resp.map(({ name }) => ({ version: name }));\n return { releases };\n }\n\n // support different url formats\n switch (urlFormatOptions) {\n case 'withShardWithSpec':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n true,\n false,\n 'withShardWithoutSpec',\n );\n case 'withShardWithoutSpec':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n false,\n true,\n 'withSpecsWithoutShard',\n );\n case 'withSpecsWithoutShard':\n return this.getReleasesFromGithub(\n packageName,\n opts,\n false,\n false,\n 'withoutSpecsWithoutShard',\n );\n case 'withoutSpecsWithoutShard':\n default:\n return null;\n }\n }\n\n private async getReleasesFromCDN(\n packageName: string,\n registryUrl: string,\n ): Promise<ReleaseResult | null> {\n const url = releasesCDNUrl(packageName, registryUrl);\n const resp = await this.requestCDN(url, packageName);\n if (resp) {\n const lines = resp.split(newlineRegex);\n for (const line of lines) {\n const [name, ...versions] = line.split('/');\n if (name === packageName.replace(regEx(/\\/.*$/), '')) {\n const releases = versions.map((version) => ({ version }));\n return { releases };\n }\n }\n }\n return null;\n }\n\n @cache({\n ttlMinutes: 30,\n namespace: `datasource-${PodDatasource.id}`,\n key: ({ packageName, registryUrl }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl}:${packageName}`,\n })\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const podName = packageName.replace(regEx(/\\/.*$/), '');\n let baseUrl = registryUrl.replace(regEx(/\\/+$/), '');\n // In order to not abuse github API limits, query CDN instead\n if (isDefaultRepo(baseUrl)) {\n [baseUrl] = this.defaultRegistryUrls;\n }\n\n let result: ReleaseResult | null = null;\n const match = githubRegex.exec(baseUrl);\n if (match?.groups) {\n baseUrl = massageGithubUrl(baseUrl);\n const { hostURL, account, repo } = match.groups;\n const opts = { hostURL, account, repo };\n result = await this.getReleasesFromGithub(podName, opts);\n } else {\n result = await this.getReleasesFromCDN(podName, baseUrl);\n }\n\n return result;\n }\n}\n"]}
|
@@ -20,7 +20,7 @@ async function postprocessRelease(config, release) {
|
|
20
20
|
logger_1.logger.once.warn({ datasource }, 'Release postprocessing is not supported for empty `packageName` field');
|
21
21
|
return release;
|
22
22
|
}
|
23
|
-
const registryUrl = config.registryUrl ?? null;
|
23
|
+
const registryUrl = config.registryUrl ?? config.registryUrls?.at(0) ?? null;
|
24
24
|
try {
|
25
25
|
const result = await ds.postprocessRelease({ packageName, registryUrl }, release);
|
26
26
|
if (result === 'reject') {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"postprocess-release.js","sourceRoot":"","sources":["../../../lib/modules/datasource/postprocess-release.ts"],"names":[],"mappings":";;AAWA,gDA0DC;AArED,yCAAsC;AAKtC,qCAA4C;AAC5C,6CAA0C;AAKnC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,OAAgB;IAEhB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE9B,MAAM,EAAE,GAAG,UAAU,IAAI,IAAA,yBAAgB,EAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,eAAM,CAAC,IAAI,CAAC,IAAI,CACd,EAAE,UAAU,EAAE,EACd,4DAA4D,CAC7D,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IACE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,kBAAkB;QAC3C,uBAAU,CAAC,SAAS,CAAC,kBAAkB,EACvC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,eAAM,CAAC,IAAI,CAAC,IAAI,CACd,EAAE,UAAU,EAAE,EACd,uEAAuE,CACxE,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"postprocess-release.js","sourceRoot":"","sources":["../../../lib/modules/datasource/postprocess-release.ts"],"names":[],"mappings":";;AAWA,gDA0DC;AArED,yCAAsC;AAKtC,qCAA4C;AAC5C,6CAA0C;AAKnC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,OAAgB;IAEhB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE9B,MAAM,EAAE,GAAG,UAAU,IAAI,IAAA,yBAAgB,EAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,eAAM,CAAC,IAAI,CAAC,IAAI,CACd,EAAE,UAAU,EAAE,EACd,4DAA4D,CAC7D,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IACE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,kBAAkB;QAC3C,uBAAU,CAAC,SAAS,CAAC,kBAAkB,EACvC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,eAAM,CAAC,IAAI,CAAC,IAAI,CACd,EAAE,UAAU,EAAE,EACd,uEAAuE,CACxE,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,kBAAkB,CACxC,EAAE,WAAW,EAAE,WAAW,EAAE,EAC5B,OAAO,CACR,CAAC;QAEF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,eAAM,CAAC,KAAK,CACV;gBACE,UAAU;gBACV,WAAW;gBACX,WAAW;gBACX,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,EACD,kBAAkB,CACnB,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,mCAAmC,UAAU,GAAG,CAAC,CAAC;QAC5E,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC","sourcesContent":["import { logger } from '../../logger';\nimport type {\n LookupUpdateConfig,\n UpdateResult,\n} from '../../workers/repository/process/lookup/types';\nimport { getDatasourceFor } from './common';\nimport { Datasource } from './datasource';\nimport type { Release } from './types';\n\ntype Config = Partial<LookupUpdateConfig & UpdateResult>;\n\nexport async function postprocessRelease(\n config: Config,\n release: Release,\n): Promise<Release | null> {\n const { datasource } = config;\n\n const ds = datasource && getDatasourceFor(datasource);\n if (!ds) {\n logger.once.warn(\n { datasource },\n 'Failed to resolve datasource during release postprocessing',\n );\n return release;\n }\n\n if (\n ds.constructor.prototype.postprocessRelease ===\n Datasource.prototype.postprocessRelease\n ) {\n return release;\n }\n\n const { packageName } = config;\n if (!packageName) {\n logger.once.warn(\n { datasource },\n 'Release postprocessing is not supported for empty `packageName` field',\n );\n return release;\n }\n\n const registryUrl = config.registryUrl ?? config.registryUrls?.at(0) ?? null;\n\n try {\n const result = await ds.postprocessRelease(\n { packageName, registryUrl },\n release,\n );\n\n if (result === 'reject') {\n logger.debug(\n {\n datasource,\n packageName,\n registryUrl,\n version: release.version,\n versionOrig: release.versionOrig,\n },\n 'Rejected release',\n );\n return null;\n }\n\n return result;\n } catch (err) {\n logger.once.warn({ err }, `Release interceptor failed for \"${datasource}\"`);\n return release;\n }\n}\n"]}
|
@@ -185,7 +185,7 @@ class PypiDatasource extends datasource_1.Datasource {
|
|
185
185
|
const lookupUrl = node_url_1.default.resolve(hostUrl, (0, url_1.ensureTrailingSlash)((0, common_1.normalizePythonDepName)(packageName)));
|
186
186
|
const dependency = { releases: [] };
|
187
187
|
const headers = await this.getAuthHeaders(lookupUrl);
|
188
|
-
const response = await this.http.
|
188
|
+
const response = await this.http.getText(lookupUrl, { headers });
|
189
189
|
const dep = response?.body;
|
190
190
|
if (!dep) {
|
191
191
|
logger_1.logger.trace({ dependency: packageName }, 'pip package not found');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/pypi/index.ts"],"names":[],"mappings":"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","sourcesContent":["import url from 'node:url';\nimport is from '@sindresorhus/is';\nimport changelogFilenameRegex from 'changelog-filename-regex';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { parse } from '../../../util/html';\nimport type { OutgoingHttpHeaders } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash, parseUrl } from '../../../util/url';\nimport * as pep440 from '../../versioning/pep440';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport { getGoogleAuthToken } from '../util';\nimport { isGitHubRepo, normalizePythonDepName } from './common';\nimport type { PypiJSON, PypiJSONRelease, Releases } from './types';\n\nexport class PypiDatasource extends Datasource {\n static readonly id = 'pypi';\n\n constructor() {\n super(PypiDatasource.id);\n }\n\n override readonly caching = true;\n\n override readonly customRegistrySupport = true;\n\n static readonly defaultURL =\n process.env.PIP_INDEX_URL ?? 'https://pypi.org/pypi/';\n override readonly defaultRegistryUrls = [PypiDatasource.defaultURL];\n\n override readonly defaultVersioning = pep440.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampNote =\n 'The relase timestamp is determined from the `upload_time` field in the results.';\n override readonly sourceUrlSupport = 'release';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `homepage` field if it is a github repository, else we use the `project_urls` field.';\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n let dependency: ReleaseResult | null = null;\n // TODO: null check (#22198)\n const hostUrl = ensureTrailingSlash(\n registryUrl!.replace('https://pypi.org/simple', 'https://pypi.org/pypi'),\n );\n const normalizedLookupName = normalizePythonDepName(packageName);\n\n // not all simple indexes use this identifier, but most do\n if (hostUrl.endsWith('/simple/') || hostUrl.endsWith('/+simple/')) {\n logger.trace(\n { packageName, hostUrl },\n 'Looking up pypi simple dependency',\n );\n dependency = await this.getSimpleDependency(\n normalizedLookupName,\n hostUrl,\n );\n } else {\n logger.trace({ packageName, hostUrl }, 'Looking up pypi api dependency');\n try {\n // we need to resolve early here so we can catch any 404s and fallback to a simple lookup\n dependency = await this.getDependency(normalizedLookupName, hostUrl);\n } catch (err) {\n // error contacting json-style api -- attempt to fallback to a simple-style api\n logger.trace(\n { packageName, hostUrl, err },\n 'Looking up pypi simple dependency via fallback',\n );\n dependency = await this.getSimpleDependency(\n normalizedLookupName,\n hostUrl,\n );\n }\n }\n return dependency;\n }\n\n private async getAuthHeaders(\n lookupUrl: string,\n ): Promise<OutgoingHttpHeaders> {\n const parsedUrl = parseUrl(lookupUrl);\n if (!parsedUrl) {\n logger.once.debug({ lookupUrl }, 'Failed to parse URL');\n return {};\n }\n if (parsedUrl.hostname.endsWith('.pkg.dev')) {\n const auth = await getGoogleAuthToken();\n if (auth) {\n return { authorization: `Basic ${auth}` };\n }\n logger.once.debug({ lookupUrl }, 'Could not get Google access token');\n return {};\n }\n return {};\n }\n\n private async getDependency(\n packageName: string,\n hostUrl: string,\n ): Promise<ReleaseResult | null> {\n const lookupUrl = url.resolve(\n hostUrl,\n `${normalizePythonDepName(packageName)}/json`,\n );\n const dependency: ReleaseResult = { releases: [] };\n logger.trace({ lookupUrl }, 'Pypi api got lookup');\n const headers = await this.getAuthHeaders(lookupUrl);\n const rep = await this.http.getJsonUnchecked<PypiJSON>(lookupUrl, {\n headers,\n });\n const dep = rep?.body;\n if (!dep) {\n logger.trace({ dependency: packageName }, 'pip package not found');\n return null;\n }\n if (rep.authorization) {\n dependency.isPrivate = true;\n }\n logger.trace({ lookupUrl }, 'Got pypi api result');\n\n if (dep.info?.home_page) {\n dependency.homepage = dep.info.home_page;\n if (isGitHubRepo(dep.info.home_page)) {\n dependency.sourceUrl = dep.info.home_page.replace(\n 'http://',\n 'https://',\n );\n }\n }\n\n if (dep.info?.project_urls) {\n for (const [name, projectUrl] of Object.entries(dep.info.project_urls)) {\n const lower = name.toLowerCase();\n\n if (\n !dependency.sourceUrl &&\n (lower.startsWith('repo') ||\n lower === 'code' ||\n lower === 'source' ||\n isGitHubRepo(projectUrl))\n ) {\n dependency.sourceUrl = projectUrl;\n }\n\n if (\n !dependency.changelogUrl &&\n ([\n 'changelog',\n 'change log',\n 'changes',\n 'release notes',\n 'news',\n \"what's new\",\n ].includes(lower) ||\n changelogFilenameRegex.exec(lower))\n ) {\n // from https://github.com/pypa/warehouse/blob/418c7511dc367fb410c71be139545d0134ccb0df/warehouse/templates/packaging/detail.html#L24\n dependency.changelogUrl = projectUrl;\n }\n }\n }\n\n if (dep.releases) {\n const versions = Object.keys(dep.releases);\n dependency.releases = versions.map((version) => {\n const releases = coerceArray(dep.releases?.[version]);\n const { upload_time: releaseTimestamp } = releases[0] || {};\n const isDeprecated = releases.some(({ yanked }) => yanked);\n const result: Release = {\n version,\n releaseTimestamp: asTimestamp(releaseTimestamp),\n };\n if (isDeprecated) {\n result.isDeprecated = isDeprecated;\n }\n // There may be multiple releases with different requires_python, so we return all in an array\n const pythonConstraints = releases\n .map(({ requires_python }) => requires_python)\n .filter(is.string);\n result.constraints = {\n python: Array.from(new Set(pythonConstraints)),\n };\n return result;\n });\n }\n return dependency;\n }\n\n private static extractVersionFromLinkText(\n text: string,\n packageName: string,\n ): string | null {\n // source packages\n const lcText = text.toLowerCase();\n const normalizedSrcText = normalizePythonDepName(text);\n const srcPrefix = `${packageName}-`;\n\n // source distribution format: `{name}-{version}.tar.gz` (https://packaging.python.org/en/latest/specifications/source-distribution-format/#source-distribution-file-name)\n // binary distribution: `{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl` (https://packaging.python.org/en/latest/specifications/binary-distribution-format/#file-name-convention)\n // officially both `name` and `distribution` should be normalized and then the - replaced with _, but in reality this is not the case\n // We therefore normalize the name we have (replacing `_-.` with -) and then check if the text starts with the normalized name\n\n if (!normalizedSrcText.startsWith(srcPrefix)) {\n return null;\n }\n\n // strip off the prefix using the prefix length as we may have normalized the srcPrefix/packageName\n // We assume that neither the version nor the suffix contains multiple `-` like `0.1.2---rc1.tar.gz`\n // and use the difference in length to strip off the prefix in case the name contains double `--` characters\n const normalizedLengthDiff = lcText.length - normalizedSrcText.length;\n const res = lcText.slice(srcPrefix.length + normalizedLengthDiff);\n\n // source distribution\n const srcSuffixes = ['.tar.gz', '.tar.bz2', '.tar.xz', '.zip', '.tgz'];\n const srcSuffix = srcSuffixes.find((suffix) => lcText.endsWith(suffix));\n if (srcSuffix) {\n // strip off the suffix using character length\n return res.slice(0, -srcSuffix.length);\n }\n\n // binary distribution\n // for binary distributions the version is the first part after the removed distribution name\n const wheelSuffix = '.whl';\n if (lcText.endsWith(wheelSuffix) && lcText.split('-').length > 2) {\n return res.split('-')[0];\n }\n return null;\n }\n\n private static cleanSimpleHtml(html: string): string {\n return (\n html\n .replace(regEx(/<\\/?pre>/), '')\n // Certain simple repositories like artifactory don't escape > and <\n .replace(\n regEx(/data-requires-python=\"([^\"]*?)>([^\"]*?)\"/g),\n 'data-requires-python=\"$1>$2\"',\n )\n .replace(\n regEx(/data-requires-python=\"([^\"]*?)<([^\"]*?)\"/g),\n 'data-requires-python=\"$1<$2\"',\n )\n );\n }\n\n private async getSimpleDependency(\n packageName: string,\n hostUrl: string,\n ): Promise<ReleaseResult | null> {\n const lookupUrl = url.resolve(\n hostUrl,\n ensureTrailingSlash(normalizePythonDepName(packageName)),\n );\n const dependency: ReleaseResult = { releases: [] };\n const headers = await this.getAuthHeaders(lookupUrl);\n const response = await this.http.get(lookupUrl, { headers });\n const dep = response?.body;\n if (!dep) {\n logger.trace({ dependency: packageName }, 'pip package not found');\n return null;\n }\n if (response.authorization) {\n dependency.isPrivate = true;\n }\n const root = parse(PypiDatasource.cleanSimpleHtml(dep));\n const links = root.querySelectorAll('a');\n const releases: Releases = {};\n for (const link of Array.from(links)) {\n const version = PypiDatasource.extractVersionFromLinkText(\n link.text?.trim(),\n packageName,\n );\n if (version) {\n const release: PypiJSONRelease = {\n yanked: link.hasAttribute('data-yanked'),\n };\n const requiresPython = link.getAttribute('data-requires-python');\n if (requiresPython) {\n release.requires_python = requiresPython;\n }\n if (!releases[version]) {\n releases[version] = [];\n }\n releases[version].push(release);\n }\n }\n const versions = Object.keys(releases);\n dependency.releases = versions.map((version) => {\n const versionReleases = coerceArray(releases[version]);\n const isDeprecated = versionReleases.some(({ yanked }) => yanked);\n const result: Release = { version };\n if (isDeprecated) {\n result.isDeprecated = isDeprecated;\n }\n // There may be multiple releases with different requires_python, so we return all in an array\n result.constraints = {\n // TODO: string[] isn't allowed here\n python: versionReleases.map(\n ({ requires_python }) => requires_python,\n ) as any,\n };\n return result;\n });\n return dependency;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/pypi/index.ts"],"names":[],"mappings":"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","sourcesContent":["import url from 'node:url';\nimport is from '@sindresorhus/is';\nimport changelogFilenameRegex from 'changelog-filename-regex';\nimport { logger } from '../../../logger';\nimport { coerceArray } from '../../../util/array';\nimport { parse } from '../../../util/html';\nimport type { OutgoingHttpHeaders } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash, parseUrl } from '../../../util/url';\nimport * as pep440 from '../../versioning/pep440';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport { getGoogleAuthToken } from '../util';\nimport { isGitHubRepo, normalizePythonDepName } from './common';\nimport type { PypiJSON, PypiJSONRelease, Releases } from './types';\n\nexport class PypiDatasource extends Datasource {\n static readonly id = 'pypi';\n\n constructor() {\n super(PypiDatasource.id);\n }\n\n override readonly caching = true;\n\n override readonly customRegistrySupport = true;\n\n static readonly defaultURL =\n process.env.PIP_INDEX_URL ?? 'https://pypi.org/pypi/';\n override readonly defaultRegistryUrls = [PypiDatasource.defaultURL];\n\n override readonly defaultVersioning = pep440.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampNote =\n 'The relase timestamp is determined from the `upload_time` field in the results.';\n override readonly sourceUrlSupport = 'release';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `homepage` field if it is a github repository, else we use the `project_urls` field.';\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n let dependency: ReleaseResult | null = null;\n // TODO: null check (#22198)\n const hostUrl = ensureTrailingSlash(\n registryUrl!.replace('https://pypi.org/simple', 'https://pypi.org/pypi'),\n );\n const normalizedLookupName = normalizePythonDepName(packageName);\n\n // not all simple indexes use this identifier, but most do\n if (hostUrl.endsWith('/simple/') || hostUrl.endsWith('/+simple/')) {\n logger.trace(\n { packageName, hostUrl },\n 'Looking up pypi simple dependency',\n );\n dependency = await this.getSimpleDependency(\n normalizedLookupName,\n hostUrl,\n );\n } else {\n logger.trace({ packageName, hostUrl }, 'Looking up pypi api dependency');\n try {\n // we need to resolve early here so we can catch any 404s and fallback to a simple lookup\n dependency = await this.getDependency(normalizedLookupName, hostUrl);\n } catch (err) {\n // error contacting json-style api -- attempt to fallback to a simple-style api\n logger.trace(\n { packageName, hostUrl, err },\n 'Looking up pypi simple dependency via fallback',\n );\n dependency = await this.getSimpleDependency(\n normalizedLookupName,\n hostUrl,\n );\n }\n }\n return dependency;\n }\n\n private async getAuthHeaders(\n lookupUrl: string,\n ): Promise<OutgoingHttpHeaders> {\n const parsedUrl = parseUrl(lookupUrl);\n if (!parsedUrl) {\n logger.once.debug({ lookupUrl }, 'Failed to parse URL');\n return {};\n }\n if (parsedUrl.hostname.endsWith('.pkg.dev')) {\n const auth = await getGoogleAuthToken();\n if (auth) {\n return { authorization: `Basic ${auth}` };\n }\n logger.once.debug({ lookupUrl }, 'Could not get Google access token');\n return {};\n }\n return {};\n }\n\n private async getDependency(\n packageName: string,\n hostUrl: string,\n ): Promise<ReleaseResult | null> {\n const lookupUrl = url.resolve(\n hostUrl,\n `${normalizePythonDepName(packageName)}/json`,\n );\n const dependency: ReleaseResult = { releases: [] };\n logger.trace({ lookupUrl }, 'Pypi api got lookup');\n const headers = await this.getAuthHeaders(lookupUrl);\n const rep = await this.http.getJsonUnchecked<PypiJSON>(lookupUrl, {\n headers,\n });\n const dep = rep?.body;\n if (!dep) {\n logger.trace({ dependency: packageName }, 'pip package not found');\n return null;\n }\n if (rep.authorization) {\n dependency.isPrivate = true;\n }\n logger.trace({ lookupUrl }, 'Got pypi api result');\n\n if (dep.info?.home_page) {\n dependency.homepage = dep.info.home_page;\n if (isGitHubRepo(dep.info.home_page)) {\n dependency.sourceUrl = dep.info.home_page.replace(\n 'http://',\n 'https://',\n );\n }\n }\n\n if (dep.info?.project_urls) {\n for (const [name, projectUrl] of Object.entries(dep.info.project_urls)) {\n const lower = name.toLowerCase();\n\n if (\n !dependency.sourceUrl &&\n (lower.startsWith('repo') ||\n lower === 'code' ||\n lower === 'source' ||\n isGitHubRepo(projectUrl))\n ) {\n dependency.sourceUrl = projectUrl;\n }\n\n if (\n !dependency.changelogUrl &&\n ([\n 'changelog',\n 'change log',\n 'changes',\n 'release notes',\n 'news',\n \"what's new\",\n ].includes(lower) ||\n changelogFilenameRegex.exec(lower))\n ) {\n // from https://github.com/pypa/warehouse/blob/418c7511dc367fb410c71be139545d0134ccb0df/warehouse/templates/packaging/detail.html#L24\n dependency.changelogUrl = projectUrl;\n }\n }\n }\n\n if (dep.releases) {\n const versions = Object.keys(dep.releases);\n dependency.releases = versions.map((version) => {\n const releases = coerceArray(dep.releases?.[version]);\n const { upload_time: releaseTimestamp } = releases[0] || {};\n const isDeprecated = releases.some(({ yanked }) => yanked);\n const result: Release = {\n version,\n releaseTimestamp: asTimestamp(releaseTimestamp),\n };\n if (isDeprecated) {\n result.isDeprecated = isDeprecated;\n }\n // There may be multiple releases with different requires_python, so we return all in an array\n const pythonConstraints = releases\n .map(({ requires_python }) => requires_python)\n .filter(is.string);\n result.constraints = {\n python: Array.from(new Set(pythonConstraints)),\n };\n return result;\n });\n }\n return dependency;\n }\n\n private static extractVersionFromLinkText(\n text: string,\n packageName: string,\n ): string | null {\n // source packages\n const lcText = text.toLowerCase();\n const normalizedSrcText = normalizePythonDepName(text);\n const srcPrefix = `${packageName}-`;\n\n // source distribution format: `{name}-{version}.tar.gz` (https://packaging.python.org/en/latest/specifications/source-distribution-format/#source-distribution-file-name)\n // binary distribution: `{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl` (https://packaging.python.org/en/latest/specifications/binary-distribution-format/#file-name-convention)\n // officially both `name` and `distribution` should be normalized and then the - replaced with _, but in reality this is not the case\n // We therefore normalize the name we have (replacing `_-.` with -) and then check if the text starts with the normalized name\n\n if (!normalizedSrcText.startsWith(srcPrefix)) {\n return null;\n }\n\n // strip off the prefix using the prefix length as we may have normalized the srcPrefix/packageName\n // We assume that neither the version nor the suffix contains multiple `-` like `0.1.2---rc1.tar.gz`\n // and use the difference in length to strip off the prefix in case the name contains double `--` characters\n const normalizedLengthDiff = lcText.length - normalizedSrcText.length;\n const res = lcText.slice(srcPrefix.length + normalizedLengthDiff);\n\n // source distribution\n const srcSuffixes = ['.tar.gz', '.tar.bz2', '.tar.xz', '.zip', '.tgz'];\n const srcSuffix = srcSuffixes.find((suffix) => lcText.endsWith(suffix));\n if (srcSuffix) {\n // strip off the suffix using character length\n return res.slice(0, -srcSuffix.length);\n }\n\n // binary distribution\n // for binary distributions the version is the first part after the removed distribution name\n const wheelSuffix = '.whl';\n if (lcText.endsWith(wheelSuffix) && lcText.split('-').length > 2) {\n return res.split('-')[0];\n }\n return null;\n }\n\n private static cleanSimpleHtml(html: string): string {\n return (\n html\n .replace(regEx(/<\\/?pre>/), '')\n // Certain simple repositories like artifactory don't escape > and <\n .replace(\n regEx(/data-requires-python=\"([^\"]*?)>([^\"]*?)\"/g),\n 'data-requires-python=\"$1>$2\"',\n )\n .replace(\n regEx(/data-requires-python=\"([^\"]*?)<([^\"]*?)\"/g),\n 'data-requires-python=\"$1<$2\"',\n )\n );\n }\n\n private async getSimpleDependency(\n packageName: string,\n hostUrl: string,\n ): Promise<ReleaseResult | null> {\n const lookupUrl = url.resolve(\n hostUrl,\n ensureTrailingSlash(normalizePythonDepName(packageName)),\n );\n const dependency: ReleaseResult = { releases: [] };\n const headers = await this.getAuthHeaders(lookupUrl);\n const response = await this.http.getText(lookupUrl, { headers });\n const dep = response?.body;\n if (!dep) {\n logger.trace({ dependency: packageName }, 'pip package not found');\n return null;\n }\n if (response.authorization) {\n dependency.isPrivate = true;\n }\n const root = parse(PypiDatasource.cleanSimpleHtml(dep));\n const links = root.querySelectorAll('a');\n const releases: Releases = {};\n for (const link of Array.from(links)) {\n const version = PypiDatasource.extractVersionFromLinkText(\n link.text?.trim(),\n packageName,\n );\n if (version) {\n const release: PypiJSONRelease = {\n yanked: link.hasAttribute('data-yanked'),\n };\n const requiresPython = link.getAttribute('data-requires-python');\n if (requiresPython) {\n release.requires_python = requiresPython;\n }\n if (!releases[version]) {\n releases[version] = [];\n }\n releases[version].push(release);\n }\n }\n const versions = Object.keys(releases);\n dependency.releases = versions.map((version) => {\n const versionReleases = coerceArray(releases[version]);\n const isDeprecated = versionReleases.some(({ yanked }) => yanked);\n const result: Release = { version };\n if (isDeprecated) {\n result.isDeprecated = isDeprecated;\n }\n // There may be multiple releases with different requires_python, so we return all in an array\n result.constraints = {\n // TODO: string[] isn't allowed here\n python: versionReleases.map(\n ({ requires_python }) => requires_python,\n ) as any,\n };\n return result;\n });\n return dependency;\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/python-version/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,oDAA2D;AAC3D,8CAA2C;AAC3C,sDAA4D;AAC5D,qDAAyE;AACzE,wDAA8D;AAE9D,qCAAyE;AACzE,qCAAyC;AAEzC,MAAa,uBAAwB,SAAQ,uBAAU;IACrD,MAAM,CAAU,EAAE,GAAG,mBAAU,CAAC;IAChC,wBAAwB,CAA2B;IACnD,mBAAmB,CAA0B;IAE7C;QACE,KAAK,CAAC,mBAAU,CAAC,CAAC;QAClB,IAAI,CAAC,wBAAwB,GAAG,IAAI,0CAAwB,EAAE,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,wCAAuB,EAAE,CAAC;IAC3D,CAAC;IAEiB,qBAAqB,GAAG,KAAK,CAAC;IAE9B,mBAAmB,GAAG,CAAC,2BAAkB,CAAC,CAAC;IAE3C,iBAAiB,GAAG,WAAU,CAAC;IAE/B,OAAO,GAAG,IAAI,CAAC;IAEjC,KAAK,CAAC,mBAAmB;QACvB,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;YACrD,WAAW,EAAE,sBAAa;YAC1B,WAAW,EAAE,+BAA+B;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;YAChD,WAAW,EAAE,oBAAc;YAC3B,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC;IACL,CAAC;IAMK,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,GACO;QAClB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/python-version/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,oDAA2D;AAC3D,8CAA2C;AAC3C,sDAA4D;AAC5D,qDAAyE;AACzE,wDAA8D;AAE9D,qCAAyE;AACzE,qCAAyC;AAEzC,MAAa,uBAAwB,SAAQ,uBAAU;IACrD,MAAM,CAAU,EAAE,GAAG,mBAAU,CAAC;IAChC,wBAAwB,CAA2B;IACnD,mBAAmB,CAA0B;IAE7C;QACE,KAAK,CAAC,mBAAU,CAAC,CAAC;QAClB,IAAI,CAAC,wBAAwB,GAAG,IAAI,0CAAwB,EAAE,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,wCAAuB,EAAE,CAAC;IAC3D,CAAC;IAEiB,qBAAqB,GAAG,KAAK,CAAC;IAE9B,mBAAmB,GAAG,CAAC,2BAAkB,CAAC,CAAC;IAE3C,iBAAiB,GAAG,WAAU,CAAC;IAE/B,OAAO,GAAG,IAAI,CAAC;IAEjC,KAAK,CAAC,mBAAmB;QACvB,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;YACrD,WAAW,EAAE,sBAAa;YAC1B,WAAW,EAAE,+BAA+B;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;YAChD,WAAW,EAAE,oBAAc;YAC3B,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC;IACL,CAAC;IAMK,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,GACO;QAClB,6CAA6C;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChE,MAAM,sBAAsB,GAAG,IAAI,GAAG,CACpC,sBAAsB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CACnE,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACtD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,iBAAiB,EAAE,QAAQ;aACxB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC;aACvD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAChD,OAAO,CAAC,YAAY;SACrB,CAAC,CACL,CAAC;QACF,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE,oBAAoB;YAC9B,SAAS,EAAE,mCAAmC;YAC9C,WAAW;YACX,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sBAAa,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,GAAG,QAAQ,CAAC,IAAI;iBACb,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;iBACrC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACpE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAC1C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACjD,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;;AAhFH,0DAiFC;AA5CO;IAJL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,mBAAU,EAAE;QACrC,GAAG,EAAE,CAAC,EAAE,WAAW,EAAqB,EAAE,EAAE,CAAC,GAAG,WAAW,EAAE;KAC9D,CAAC;0DA4CD","sourcesContent":["import { cache } from '../../../util/cache/package/decorator';\nimport { id as versioning } from '../../versioning/python';\nimport { Datasource } from '../datasource';\nimport { EndoflifeDateDatasource } from '../endoflife-date';\nimport { registryUrl as eolRegistryUrl } from '../endoflife-date/common';\nimport { GithubReleasesDatasource } from '../github-releases';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { datasource, defaultRegistryUrl, githubBaseUrl } from './common';\nimport { PythonRelease } from './schema';\n\nexport class PythonVersionDatasource extends Datasource {\n static readonly id = datasource;\n pythonPrebuildDatasource: GithubReleasesDatasource;\n pythonEolDatasource: EndoflifeDateDatasource;\n\n constructor() {\n super(datasource);\n this.pythonPrebuildDatasource = new GithubReleasesDatasource();\n this.pythonEolDatasource = new EndoflifeDateDatasource();\n }\n\n override readonly customRegistrySupport = false;\n\n override readonly defaultRegistryUrls = [defaultRegistryUrl];\n\n override readonly defaultVersioning = versioning;\n\n override readonly caching = true;\n\n async getPrebuildReleases(): Promise<ReleaseResult | null> {\n return await this.pythonPrebuildDatasource.getReleases({\n registryUrl: githubBaseUrl,\n packageName: 'containerbase/python-prebuild',\n });\n }\n\n async getEolReleases(): Promise<ReleaseResult | null> {\n return await this.pythonEolDatasource.getReleases({\n registryUrl: eolRegistryUrl,\n packageName: 'python',\n });\n }\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,\n })\n async getReleases({\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n const pythonPrebuildReleases = await this.getPrebuildReleases();\n const pythonPrebuildVersions = new Set<string>(\n pythonPrebuildReleases?.releases.map((release) => release.version),\n );\n const pythonEolReleases = await this.getEolReleases();\n const pythonEolVersions = new Map(\n pythonEolReleases?.releases\n .filter((release) => release.isDeprecated !== undefined)\n .map((release) => [\n release.version.split('.').slice(0, 2).join('.'),\n release.isDeprecated,\n ]),\n );\n const result: ReleaseResult = {\n homepage: 'https://python.org',\n sourceUrl: 'https://github.com/python/cpython',\n registryUrl,\n releases: [],\n };\n try {\n const response = await this.http.getJson(registryUrl, PythonRelease);\n result.releases.push(\n ...response.body\n .filter((release) => release.isStable)\n .filter((release) => pythonPrebuildVersions.has(release.version)),\n );\n } catch (err) {\n this.handleGenericErrors(err);\n }\n for (const release of result.releases) {\n release.isDeprecated = pythonEolVersions.get(\n release.version.split('.').slice(0, 2).join('.'),\n );\n }\n\n return result.releases.length ? result : null;\n }\n}\n"]}
|
@@ -121,7 +121,7 @@ class RepologyDatasource extends datasource_1.Datasource {
|
|
121
121
|
return undefined;
|
122
122
|
}
|
123
123
|
async getReleases({ packageName, registryUrl, }) {
|
124
|
-
|
124
|
+
/* v8 ignore next 3 -- should never happen */
|
125
125
|
if (!registryUrl) {
|
126
126
|
return null;
|
127
127
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/repology/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { getQueryString, joinUrlParts } from '../../../util/url';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport type { RepologyPackage, RepologyPackageType } from './types';\n\nconst packageTypes: RepologyPackageType[] = ['binname', 'srcname'];\n\nfunction findPackageInResponse(\n response: RepologyPackage[],\n repoName: string,\n pkgName: string,\n types: RepologyPackageType[],\n): RepologyPackage[] | null {\n const repoPackages = response.filter((pkg) => pkg.repo === repoName);\n\n if (repoPackages.length === 0) {\n // no packages associated with repoName\n return null;\n }\n\n if (repoPackages.length === 1) {\n // repo contains exactly one package, so we can return them safely\n return repoPackages;\n }\n\n // In some cases Repology bundles multiple packages into a single project, which might result in ambiguous results.\n // We need to do additional filtering by matching allowed package types passed as params with package description.\n // Remaining packages are the one we are looking for\n const packagesWithType = repoPackages.filter((pkg) => {\n for (const pkgType of types) {\n if (pkg[pkgType] && pkg[pkgType] === pkgName) {\n return true;\n }\n }\n return false;\n });\n\n return packagesWithType.length > 0 ? packagesWithType : null;\n}\n\nexport class RepologyDatasource extends Datasource {\n static readonly id = 'repology';\n\n override readonly defaultRegistryUrls = ['https://repology.org/'];\n\n override readonly registryStrategy = 'hunt';\n\n constructor() {\n super(RepologyDatasource.id);\n }\n\n private async queryPackages(url: string): Promise<RepologyPackage[]> {\n try {\n const res = await this.http.getJsonUnchecked<RepologyPackage[]>(url);\n return res.body;\n } catch (err) {\n if (err.statusCode === 404) {\n // Return an array here because the api does not return proper http codes\n // and instead of an 404 error an empty array with code 200 is returned\n // When querying the resolver 404 is thrown if package could not be resolved\n // and 403 if the repo is not supported\n // 403 is handled later because in this case we are trying the API\n return [];\n }\n\n throw err;\n }\n }\n\n private async queryPackagesViaResolver(\n registryUrl: string,\n repoName: string,\n packageName: string,\n packageType: RepologyPackageType,\n ): Promise<RepologyPackage[]> {\n const query = getQueryString({\n repo: repoName,\n name_type: packageType,\n target_page: 'api_v1_project',\n noautoresolve: 'on',\n name: packageName,\n });\n\n // Retrieve list of packages by looking up Repology project\n const packages = await this.queryPackages(\n joinUrlParts(registryUrl, `tools/project-by?${query}`),\n );\n\n return packages;\n }\n\n private async queryPackagesViaAPI(\n registryUrl: string,\n packageName: string,\n ): Promise<RepologyPackage[]> {\n // Directly query the package via the API. This will only work if `packageName` has the\n // same name as the repology project\n const packages = await this.queryPackages(\n joinUrlParts(registryUrl, `api/v1/project`, packageName),\n );\n\n return packages;\n }\n\n @cache({\n ttlMinutes: 60,\n namespace: `datasource-${RepologyDatasource.id}`,\n key: (registryUrl: string, repoName: string, pkgName: string) =>\n joinUrlParts(registryUrl, repoName, pkgName),\n })\n async queryPackage(\n registryUrl: string,\n repoName: string,\n pkgName: string,\n ): Promise<RepologyPackage[] | undefined> {\n let response: RepologyPackage[];\n // Try getting the packages from tools/project-by first for type binname and\n // afterwards for srcname. This needs to be done first, because some packages\n // resolve to repology projects which have a different name than the package\n // e.g. `pulseaudio-utils` resolves to project `pulseaudio`, BUT there is also\n // a project called `pulseaudio-utils` but it does not contain the package we\n // are looking for.\n try {\n for (const pkgType of packageTypes) {\n response = await this.queryPackagesViaResolver(\n registryUrl,\n repoName,\n pkgName,\n pkgType,\n );\n\n if (response) {\n const pkg = findPackageInResponse(response, repoName, pkgName, [\n pkgType,\n ]);\n if (is.nonEmptyArray(pkg)) {\n // exit immediately if package found\n return pkg;\n }\n }\n }\n } catch (err) {\n if (err.statusCode === 403) {\n logger.debug(\n { repoName, pkgName },\n 'Repology does not support tools/project-by lookups for repository. Will try direct API access now',\n );\n\n // If the repository is not supported in tools/project-by we try directly accessing the\n // API. This will support all repositories but requires that the project name is equal to the\n // package name. This won't be always the case but for a good portion we might be able to resolve\n // the package this way.\n response = await this.queryPackagesViaAPI(registryUrl, pkgName);\n const pkg = findPackageInResponse(\n response,\n repoName,\n pkgName,\n packageTypes,\n );\n if (is.nonEmptyArray(pkg)) {\n // exit immediately if package found\n return pkg;\n }\n } else if (err.statusCode === 300) {\n logger.warn(\n { repoName, pkgName },\n 'Ambiguous redirection from package name to project name in Repology. Skipping this package',\n );\n return undefined;\n }\n\n throw err;\n }\n\n logger.debug(\n { repoName, pkgName },\n 'Repository or package not found on Repology',\n );\n\n return undefined;\n }\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n // Ensure lookup name contains both repository and package\n const [repoName, pkgName] = packageName.split('/', 2);\n if (!repoName || !pkgName) {\n throw new ExternalHostError(\n new Error(\n 'Repology lookup name must contain repository and package separated by slash (<repo>/<pkg>)',\n ),\n );\n }\n\n logger.trace(`repology.getReleases(${repoName}, ${pkgName})`);\n try {\n // Try to retrieve (cached) package information from Repology\n const pkg = await this.queryPackage(registryUrl, repoName, pkgName);\n if (!pkg) {\n return null;\n }\n\n // Always prefer origversion if available, otherwise default to version\n // This is required as source packages usually have no origversion\n const releases = pkg.map((item) => ({\n version: item.origversion ?? item.version,\n }));\n return { releases };\n } catch (err) {\n if (err.message === HOST_DISABLED) {\n logger.trace({ packageName, err }, 'Host disabled');\n } else {\n logger.warn(\n { packageName, err },\n 'Repology lookup failed with unexpected error',\n );\n }\n\n throw new ExternalHostError(err);\n }\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/repology/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { getQueryString, joinUrlParts } from '../../../util/url';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport type { RepologyPackage, RepologyPackageType } from './types';\n\nconst packageTypes: RepologyPackageType[] = ['binname', 'srcname'];\n\nfunction findPackageInResponse(\n response: RepologyPackage[],\n repoName: string,\n pkgName: string,\n types: RepologyPackageType[],\n): RepologyPackage[] | null {\n const repoPackages = response.filter((pkg) => pkg.repo === repoName);\n\n if (repoPackages.length === 0) {\n // no packages associated with repoName\n return null;\n }\n\n if (repoPackages.length === 1) {\n // repo contains exactly one package, so we can return them safely\n return repoPackages;\n }\n\n // In some cases Repology bundles multiple packages into a single project, which might result in ambiguous results.\n // We need to do additional filtering by matching allowed package types passed as params with package description.\n // Remaining packages are the one we are looking for\n const packagesWithType = repoPackages.filter((pkg) => {\n for (const pkgType of types) {\n if (pkg[pkgType] && pkg[pkgType] === pkgName) {\n return true;\n }\n }\n return false;\n });\n\n return packagesWithType.length > 0 ? packagesWithType : null;\n}\n\nexport class RepologyDatasource extends Datasource {\n static readonly id = 'repology';\n\n override readonly defaultRegistryUrls = ['https://repology.org/'];\n\n override readonly registryStrategy = 'hunt';\n\n constructor() {\n super(RepologyDatasource.id);\n }\n\n private async queryPackages(url: string): Promise<RepologyPackage[]> {\n try {\n const res = await this.http.getJsonUnchecked<RepologyPackage[]>(url);\n return res.body;\n } catch (err) {\n if (err.statusCode === 404) {\n // Return an array here because the api does not return proper http codes\n // and instead of an 404 error an empty array with code 200 is returned\n // When querying the resolver 404 is thrown if package could not be resolved\n // and 403 if the repo is not supported\n // 403 is handled later because in this case we are trying the API\n return [];\n }\n\n throw err;\n }\n }\n\n private async queryPackagesViaResolver(\n registryUrl: string,\n repoName: string,\n packageName: string,\n packageType: RepologyPackageType,\n ): Promise<RepologyPackage[]> {\n const query = getQueryString({\n repo: repoName,\n name_type: packageType,\n target_page: 'api_v1_project',\n noautoresolve: 'on',\n name: packageName,\n });\n\n // Retrieve list of packages by looking up Repology project\n const packages = await this.queryPackages(\n joinUrlParts(registryUrl, `tools/project-by?${query}`),\n );\n\n return packages;\n }\n\n private async queryPackagesViaAPI(\n registryUrl: string,\n packageName: string,\n ): Promise<RepologyPackage[]> {\n // Directly query the package via the API. This will only work if `packageName` has the\n // same name as the repology project\n const packages = await this.queryPackages(\n joinUrlParts(registryUrl, `api/v1/project`, packageName),\n );\n\n return packages;\n }\n\n @cache({\n ttlMinutes: 60,\n namespace: `datasource-${RepologyDatasource.id}`,\n key: (registryUrl: string, repoName: string, pkgName: string) =>\n joinUrlParts(registryUrl, repoName, pkgName),\n })\n async queryPackage(\n registryUrl: string,\n repoName: string,\n pkgName: string,\n ): Promise<RepologyPackage[] | undefined> {\n let response: RepologyPackage[];\n // Try getting the packages from tools/project-by first for type binname and\n // afterwards for srcname. This needs to be done first, because some packages\n // resolve to repology projects which have a different name than the package\n // e.g. `pulseaudio-utils` resolves to project `pulseaudio`, BUT there is also\n // a project called `pulseaudio-utils` but it does not contain the package we\n // are looking for.\n try {\n for (const pkgType of packageTypes) {\n response = await this.queryPackagesViaResolver(\n registryUrl,\n repoName,\n pkgName,\n pkgType,\n );\n\n if (response) {\n const pkg = findPackageInResponse(response, repoName, pkgName, [\n pkgType,\n ]);\n if (is.nonEmptyArray(pkg)) {\n // exit immediately if package found\n return pkg;\n }\n }\n }\n } catch (err) {\n if (err.statusCode === 403) {\n logger.debug(\n { repoName, pkgName },\n 'Repology does not support tools/project-by lookups for repository. Will try direct API access now',\n );\n\n // If the repository is not supported in tools/project-by we try directly accessing the\n // API. This will support all repositories but requires that the project name is equal to the\n // package name. This won't be always the case but for a good portion we might be able to resolve\n // the package this way.\n response = await this.queryPackagesViaAPI(registryUrl, pkgName);\n const pkg = findPackageInResponse(\n response,\n repoName,\n pkgName,\n packageTypes,\n );\n if (is.nonEmptyArray(pkg)) {\n // exit immediately if package found\n return pkg;\n }\n } else if (err.statusCode === 300) {\n logger.warn(\n { repoName, pkgName },\n 'Ambiguous redirection from package name to project name in Repology. Skipping this package',\n );\n return undefined;\n }\n\n throw err;\n }\n\n logger.debug(\n { repoName, pkgName },\n 'Repository or package not found on Repology',\n );\n\n return undefined;\n }\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n // Ensure lookup name contains both repository and package\n const [repoName, pkgName] = packageName.split('/', 2);\n if (!repoName || !pkgName) {\n throw new ExternalHostError(\n new Error(\n 'Repology lookup name must contain repository and package separated by slash (<repo>/<pkg>)',\n ),\n );\n }\n\n logger.trace(`repology.getReleases(${repoName}, ${pkgName})`);\n try {\n // Try to retrieve (cached) package information from Repology\n const pkg = await this.queryPackage(registryUrl, repoName, pkgName);\n if (!pkg) {\n return null;\n }\n\n // Always prefer origversion if available, otherwise default to version\n // This is required as source packages usually have no origversion\n const releases = pkg.map((item) => ({\n version: item.origversion ?? item.version,\n }));\n return { releases };\n } catch (err) {\n if (err.message === HOST_DISABLED) {\n logger.trace({ packageName, err }, 'Host disabled');\n } else {\n logger.warn(\n { packageName, err },\n 'Repology lookup failed with unexpected error',\n );\n }\n\n throw new ExternalHostError(err);\n }\n }\n}\n"]}
|
@@ -30,7 +30,7 @@ class RubyVersionDatasource extends datasource_1.Datasource {
|
|
30
30
|
// TODO: types (#22198)
|
31
31
|
const rubyVersionsUrl = `${registryUrl}en/downloads/releases/`;
|
32
32
|
try {
|
33
|
-
const response = await this.http.
|
33
|
+
const response = await this.http.getText(rubyVersionsUrl);
|
34
34
|
const root = (0, html_1.parse)(response.body);
|
35
35
|
const rows = root.querySelector('.release-list')?.querySelectorAll('tr') ?? [];
|
36
36
|
rows.forEach((row) => {
|