renovate 44.195.0 → 44.196.0
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/presets/internal/workarounds.preset.js +6 -0
- package/dist/config/presets/internal/workarounds.preset.js.map +1 -1
- package/dist/data/monorepo.js +6 -1
- package/dist/data/replacements.js +10 -0
- package/dist/modules/manager/cargo/artifacts.js +25 -22
- package/dist/modules/manager/cargo/artifacts.js.map +1 -1
- package/dist/modules/manager/conan/artifacts.js +12 -17
- package/dist/modules/manager/conan/artifacts.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +2 -2
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js +1 -1
- package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
- package/dist/util/markdown.js +1 -1
- package/dist/util/markdown.js.map +1 -1
- package/dist/workers/repository/process/index.js +1 -1
- package/dist/workers/repository/process/index.js.map +1 -1
- package/dist/workers/repository/process/vulnerabilities.js +2 -2
- package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +2 -2
|
@@ -118,6 +118,12 @@ const presets = {
|
|
|
118
118
|
matchDatasources: ["npm"],
|
|
119
119
|
matchPackageNames: ["@commander-js/extra-typings", "commander"],
|
|
120
120
|
matchUpdateTypes: ["major"]
|
|
121
|
+
}, {
|
|
122
|
+
description: "Group SimpleWebAuthn major updates to keep browser and server compatible.",
|
|
123
|
+
groupName: "SimpleWebAuthn",
|
|
124
|
+
matchDatasources: ["npm"],
|
|
125
|
+
matchPackageNames: ["@simplewebauthn/browser", "@simplewebauthn/server"],
|
|
126
|
+
matchUpdateTypes: ["major"]
|
|
121
127
|
}]
|
|
122
128
|
},
|
|
123
129
|
guavaVariants: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workarounds.preset.js","names":[],"sources":["../../../../lib/config/presets/internal/workarounds.preset.ts"],"sourcesContent":["import type { Preset } from '../types.ts';\n\nexport const presets: Record<string, Preset> = {\n all: {\n extends: [\n 'workarounds:mavenCommonsAncientVersion',\n 'workarounds:ignoreSpringCloudNumeric',\n 'workarounds:ignoreWeb3jCoreWithOldReleaseTimestamp',\n 'workarounds:ignoreHttp4sDigestMilestones',\n 'workarounds:typesNodeVersioning',\n 'workarounds:nodeDockerVersioning',\n 'workarounds:doNotUpgradeFromAlpineStableToEdge',\n 'workarounds:supportRedHatImageVersion',\n 'workarounds:javaLTSVersions',\n 'workarounds:disableEclipseLifecycleMapping',\n 'workarounds:disableGradleReplacements',\n 'workarounds:disableMavenParentRoot',\n 'workarounds:containerbase',\n 'workarounds:bitnamiDockerImageVersioning',\n 'workarounds:clamavDockerImageVersioning',\n 'workarounds:grafanaDockerImageVersioning',\n 'workarounds:k3sKubernetesVersioning',\n 'workarounds:rke2KubernetesVersioning',\n 'workarounds:libericaJdkDockerVersioning',\n 'workarounds:ubuntuDockerVersioning',\n 'workarounds:groupings',\n 'workarounds:helmDocs',\n 'workarounds:guavaVariants',\n ],\n overrideDescription: [\n 'Apply crowd-sourced workarounds for known problems with packages.',\n ],\n },\n bitnamiDockerImageVersioning: {\n description: 'Use custom regex versioning for bitnami images',\n packageRules: [\n {\n matchCurrentValue:\n '/^(?<major>\\\\d+)(?:\\\\.(?<minor>\\\\d+)(?:\\\\.(?<patch>\\\\d+))?)?-(?<compatibility>.+)-(?<build>\\\\d+)(?:-r(?<revision>\\\\d+))?$/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bitnami/**',\n 'docker.io/bitnami/**',\n 'gcr.io/bitnami-containers/**',\n '*-docker.pkg.dev/vmw-app-catalog/**',\n ],\n versioning:\n 'regex:^(?<major>\\\\d+)(?:\\\\.(?<minor>\\\\d+)(?:\\\\.(?<patch>\\\\d+))?)?(:?-(?<compatibility>.+)-(?<build>\\\\d+)(?:-r(?<revision>\\\\d+))?)?$',\n },\n ],\n },\n clamavDockerImageVersioning: {\n description: 'Use custom regex versioning for ClamAV images',\n packageRules: [\n {\n matchDatasources: ['docker'],\n matchPackageNames: ['clamav/clamav', 'clamav/clamav-debian'],\n versioning:\n 'regex:^(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)(\\\\.(?<patch>\\\\d+))?(-(?<build>\\\\d+))?(_(?<compatibility>.+))?$',\n },\n ],\n },\n containerbase: {\n description: 'Add some containerbase overrides.',\n packageRules: [\n {\n description:\n 'Use node versioning for `(containerbase|renovate)/node` images',\n matchDatasources: ['docker'],\n matchPackageNames: [\n '/^(?:(?:docker|ghcr)\\\\.io/)?(?:containerbase|renovate)/node$/',\n ],\n versioning: 'node',\n },\n ],\n },\n disableEclipseLifecycleMapping: {\n description: 'Disable Eclipse m2e lifecycle-mapping placeholder package.',\n packageRules: [\n {\n enabled: false,\n matchDatasources: ['maven'],\n matchPackageNames: ['org.eclipse.m2e:lifecycle-mapping'],\n },\n ],\n },\n disableGradleReplacements: {\n description: 'Disable package replacement updates for gradle dependencies.',\n packageRules: [\n {\n enabled: false,\n matchManagers: ['gradle'],\n matchUpdateTypes: ['replacement'],\n },\n ],\n },\n disableMavenParentRoot: {\n description:\n 'Avoid version fetching for Maven packages detected as project root.',\n packageRules: [\n {\n enabled: false,\n matchDepTypes: ['parent-root'],\n matchManagers: ['maven'],\n },\n ],\n },\n doNotUpgradeFromAlpineStableToEdge: {\n description: 'Do not upgrade from Alpine stable to edge.',\n packageRules: [\n {\n allowedVersions: '<20000000',\n matchCurrentVersion: '!/^\\\\d{8}$/',\n matchDatasources: ['docker'],\n matchDepNames: ['alpine'],\n },\n {\n allowedVersions: '<20000000',\n matchCurrentVersion: '!/^\\\\d{8}$/',\n matchDatasources: ['docker'],\n matchPackageNames: ['alpine'],\n },\n ],\n },\n grafanaDockerImageVersioning: {\n description: 'Support security releases on Grafana (product) images',\n packageRules: [\n {\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'grafana/grafana',\n 'docker.io/grafana/grafana',\n 'grafana/grafana-enterprise',\n 'docker.io/grafana/grafana-enterprise',\n ],\n versioning:\n 'regex:^(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)\\\\.(?<patch>\\\\d+)(?:-security-(?<build>\\\\d+))?(?:-(?<compatibility>.*))?$',\n },\n ],\n },\n groupings: {\n description: 'Groupings for specific package updates.',\n packageRules: [\n {\n description:\n 'Group commander major updates, they depend on each other.',\n groupName: 'commander',\n matchDatasources: ['npm'],\n matchPackageNames: ['@commander-js/extra-typings', 'commander'],\n matchUpdateTypes: ['major'],\n },\n ],\n },\n guavaVariants: {\n description: 'Keep Guava on its `-jre` or `-android` variant.',\n packageRules: [\n {\n matchDatasources: ['maven', 'sbt-package'],\n matchPackageNames: ['com.google.guava:guava'],\n versionCompatibility: '^(?<version>.+)-(?<compatibility>jre|android)$',\n },\n ],\n },\n helmDocs: {\n description: 'Block helm-docs calver-like versions from 2019',\n packageRules: [\n {\n allowedVersions: '!/^19\\\\.(0614|0110)$/',\n matchPackageNames: ['norwoodj/helm-docs'],\n },\n ],\n },\n ignoreHttp4sDigestMilestones: {\n description: 'Ignore `http4s` digest-based `1.x` milestones.',\n packageRules: [\n {\n allowedVersions: `!/^1\\\\.0-\\\\d+-[a-fA-F0-9]{7}$/`,\n matchManagers: ['sbt'],\n matchPackageNames: ['org.http4s:**'],\n },\n ],\n },\n ignoreSpringCloudNumeric: {\n description: 'Ignore spring cloud `1.x` releases.',\n packageRules: [\n {\n allowedVersions: '/^[A-Z]/',\n matchDatasources: ['maven'],\n matchPackageNames: [\n 'org.springframework.cloud:spring-cloud-starter-parent',\n ],\n },\n ],\n },\n ignoreWeb3jCoreWithOldReleaseTimestamp: {\n description: 'Ignore `web3j` `5.0.0` release.',\n packageRules: [\n {\n allowedVersions: '!/^5\\\\.0\\\\.0/',\n matchDatasources: ['maven'],\n matchPackageNames: ['org.web3j:core'],\n },\n ],\n },\n javaLTSVersions: {\n description: 'Limit Java runtime versions to LTS releases.',\n packageRules: [\n {\n allowedVersions: '/^(?:8|11|17|21|25)(?:\\\\.|-|$)/',\n description:\n 'Limit Java runtime versions to LTS releases. To receive all major releases add `workarounds:javaLTSVersions` to the `ignorePresets` array.',\n matchDatasources: ['docker', 'java-version'],\n matchPackageNames: [\n 'eclipse-temurin',\n 'amazoncorretto',\n 'adoptopenjdk',\n 'openjdk',\n 'java',\n 'java-jdk',\n 'java-jre',\n 'sapmachine',\n '/^azul/zulu-openjdk/',\n '/^bellsoft/liberica-openj(dk|re)-/',\n '/^cimg/openjdk/',\n ],\n versioning:\n 'regex:^(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+)(LTS)?)?(-(?<compatibility>.*))?$',\n },\n {\n allowedVersions: '/^(?:8|11|17|21|25)(?:\\\\.|-|$)/',\n description:\n 'Limit Java runtime versions to LTS releases. To receive all major releases add `workarounds:javaLTSVersions` to the `ignorePresets` array.',\n matchDatasources: ['docker', 'java-version'],\n matchDepNames: [\n 'eclipse-temurin',\n 'amazoncorretto',\n 'adoptopenjdk',\n 'openjdk',\n 'java',\n 'java-jre',\n 'sapmachine',\n ],\n versioning:\n 'regex:^(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+)(LTS)?)?(-(?<compatibility>.*))?$',\n },\n {\n description:\n 'Use docker versioning for major-only Java image tags so rolling tags (e.g. 21-jre) are not upgraded to full-precision tags (e.g. 21.0.11_10-jre).',\n matchCurrentValue: '/^\\\\d+(-|$)/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'eclipse-temurin',\n 'amazoncorretto',\n 'adoptopenjdk',\n 'openjdk',\n 'java',\n 'java-jdk',\n 'java-jre',\n 'sapmachine',\n '/^azul/zulu-openjdk/',\n '/^bellsoft/liberica-openj(dk|re)-/',\n '/^cimg/openjdk/',\n ],\n versioning: 'docker',\n },\n {\n description:\n 'Use docker versioning for major-only Java image tags so rolling tags (e.g. 21-jre) are not upgraded to full-precision tags (e.g. 21.0.11_10-jre).',\n matchCurrentValue: '/^\\\\d+(-|$)/',\n matchDatasources: ['docker'],\n matchDepNames: [\n 'eclipse-temurin',\n 'amazoncorretto',\n 'adoptopenjdk',\n 'openjdk',\n 'java',\n 'java-jre',\n 'sapmachine',\n ],\n versioning: 'docker',\n },\n {\n description:\n 'Use partial semver versioning for partial mise and GitHub Actions Java versions so rolling versions (e.g. 21) are not upgraded to full-precision versions (e.g. 21.0.11+9.0.LTS).',\n matchCurrentValue: '/^\\\\d+(?:\\\\.\\\\d+)?$/',\n matchDatasources: ['java-version'],\n matchManagers: ['github-actions', 'mise'],\n versioning: 'semver-partial',\n },\n {\n allowedVersions: '/^(?:jdk|jdk-all|jre)-(?:8|11|17|21|25)(?:\\\\.|-|$)/',\n description:\n 'Limit Java runtime versions to LTS releases. To receive all major releases add `workarounds:javaLTSVersions` to the `ignorePresets` array.',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bellsoft/hardened-liberica-runtime-container',\n 'bellsoft/liberica-runtime-container',\n ],\n },\n ],\n },\n k3sKubernetesVersioning: {\n description: 'Use custom regex versioning for k3s-io/k3s',\n packageRules: [\n {\n matchDatasources: ['github-releases'],\n matchPackageNames: ['k3s-io/k3s'],\n versioning:\n 'regex:^v(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)\\\\.(?<patch>\\\\d+)(?:-(?<prerelease>[a-z]+\\\\d+))?(?<compatibility>\\\\+k3s)(?<build>\\\\d+)$',\n },\n ],\n },\n libericaJdkDockerVersioning: {\n description:\n 'Use custom regex versioning for bellsoft/liberica-runtime-container',\n packageRules: [\n {\n description: 'Liberica JDK Lite version optimized for the Cloud',\n matchCurrentValue: '/^jdk-[^a][^l]{2}/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bellsoft/hardened-liberica-runtime-container',\n 'bellsoft/liberica-runtime-container',\n ],\n versioning:\n 'regex:^jdk-(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+))?(-(?<compatibility>.*))?$',\n },\n {\n description:\n 'Liberica JDK that can be used to create a custom runtime with a help of jlink tool',\n matchCurrentValue: '/^jdk-all/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bellsoft/hardened-liberica-runtime-container',\n 'bellsoft/liberica-runtime-container',\n ],\n versioning:\n 'regex:^jdk-all-(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+))?(-(?<compatibility>.*))?$',\n },\n {\n description:\n 'Liberica JRE (only the runtime without the rest of JDK tools) for running Java applications',\n matchCurrentValue: '/^jre-/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bellsoft/hardened-liberica-runtime-container',\n 'bellsoft/liberica-runtime-container',\n ],\n versioning:\n 'regex:^jre-(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+))?(-(?<compatibility>.*))?$',\n },\n ],\n },\n mavenCommonsAncientVersion: {\n description: 'Fix some problems with very old Maven commons versions.',\n packageRules: [\n {\n allowedVersions: '!/^200\\\\d{5}(\\\\.\\\\d+)?/',\n matchDatasources: ['maven', 'sbt-package'],\n matchPackageNames: ['commons-**'],\n },\n ],\n },\n nodeDockerVersioning: {\n description: 'Use node versioning for `node` docker images.',\n packageRules: [\n {\n matchDatasources: ['docker'],\n // copied from https://github.com/renovatebot/renovate/blob/a471762e137619c06e73a678d6b63ca984da7dba/lib/config/presets/internal/group.ts#L351\n matchPackageNames: [\n '/(?:^|/)node$/', // node or ends with \"/node, except those below\"\n '!calico/node',\n '!docker.io/calico/node',\n '!ghcr.io/devcontainers/features/node',\n '!kindest/node',\n '!docker.io/kindest/node',\n ],\n versionCompatibility: '^(?<version>[^-]+)(?<compatibility>-.*)?$',\n versioning: 'node',\n },\n ],\n },\n rke2KubernetesVersioning: {\n description: 'Use custom regex versioning for rancher/rke2',\n packageRules: [\n {\n matchDatasources: ['github-releases'],\n matchPackageNames: ['rancher/rke2'],\n versioning:\n 'regex:^v(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)\\\\.(?<patch>\\\\d+)(?:-(?<prerelease>[a-z]+\\\\d+))?(?<compatibility>\\\\+rke2r)(?<build>\\\\d+)$',\n },\n ],\n },\n supportRedHatImageVersion: {\n description:\n 'Use specific versioning for Red Hat-maintained container images.',\n packageRules: [\n {\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'registry.access.redhat.com/rhel',\n 'registry.access.redhat.com/rhel-atomic',\n 'registry.access.redhat.com/rhel-init',\n 'registry.access.redhat.com/rhel-minimal',\n 'registry.access.redhat.com/rhceph/**',\n 'registry.access.redhat.com/rhgs3/**',\n 'registry.access.redhat.com/rhel7**',\n 'registry.access.redhat.com/rhel8/**',\n 'registry.access.redhat.com/rhel9/**',\n 'registry.access.redhat.com/rhscl/**',\n 'registry.access.redhat.com/ubi*{,/}**',\n 'redhat/**',\n ],\n versioning: 'redhat',\n },\n ],\n },\n typesNodeVersioning: {\n description: 'Use node versioning for `@types/node`.',\n packageRules: [\n {\n matchManagers: ['npm'],\n matchPackageNames: ['@types/node'],\n versioning: `node`,\n },\n ],\n },\n ubuntuDockerVersioning: {\n description: 'Use ubuntu versioning for `ubuntu` docker images.',\n packageRules: [\n {\n matchDatasources: ['docker'],\n matchDepNames: ['ubuntu'],\n versioning: 'ubuntu',\n },\n ],\n },\n};\n"],"mappings":";AAEA,MAAa,UAAkC;CAC7C,KAAK;EACH,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EACA,qBAAqB,CACnB,mEACF;CACF;CACA,8BAA8B;EAC5B,aAAa;EACb,cAAc,CACZ;GACE,mBACE;GACF,kBAAkB,CAAC,QAAQ;GAC3B,mBAAmB;IACjB;IACA;IACA;IACA;GACF;GACA,YACE;EACJ,CACF;CACF;CACA,6BAA6B;EAC3B,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,QAAQ;GAC3B,mBAAmB,CAAC,iBAAiB,sBAAsB;GAC3D,YACE;EACJ,CACF;CACF;CACA,eAAe;EACb,aAAa;EACb,cAAc,CACZ;GACE,aACE;GACF,kBAAkB,CAAC,QAAQ;GAC3B,mBAAmB,CACjB,+DACF;GACA,YAAY;EACd,CACF;CACF;CACA,gCAAgC;EAC9B,aAAa;EACb,cAAc,CACZ;GACE,SAAS;GACT,kBAAkB,CAAC,OAAO;GAC1B,mBAAmB,CAAC,mCAAmC;EACzD,CACF;CACF;CACA,2BAA2B;EACzB,aAAa;EACb,cAAc,CACZ;GACE,SAAS;GACT,eAAe,CAAC,QAAQ;GACxB,kBAAkB,CAAC,aAAa;EAClC,CACF;CACF;CACA,wBAAwB;EACtB,aACE;EACF,cAAc,CACZ;GACE,SAAS;GACT,eAAe,CAAC,aAAa;GAC7B,eAAe,CAAC,OAAO;EACzB,CACF;CACF;CACA,oCAAoC;EAClC,aAAa;EACb,cAAc,CACZ;GACE,iBAAiB;GACjB,qBAAqB;GACrB,kBAAkB,CAAC,QAAQ;GAC3B,eAAe,CAAC,QAAQ;EAC1B,GACA;GACE,iBAAiB;GACjB,qBAAqB;GACrB,kBAAkB,CAAC,QAAQ;GAC3B,mBAAmB,CAAC,QAAQ;EAC9B,CACF;CACF;CACA,8BAA8B;EAC5B,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,QAAQ;GAC3B,mBAAmB;IACjB;IACA;IACA;IACA;GACF;GACA,YACE;EACJ,CACF;CACF;CACA,WAAW;EACT,aAAa;EACb,cAAc,CACZ;GACE,aACE;GACF,WAAW;GACX,kBAAkB,CAAC,KAAK;GACxB,mBAAmB,CAAC,+BAA+B,WAAW;GAC9D,kBAAkB,CAAC,OAAO;EAC5B,CACF;CACF;CACA,eAAe;EACb,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,SAAS,aAAa;GACzC,mBAAmB,CAAC,wBAAwB;GAC5C,sBAAsB;EACxB,CACF;CACF;CACA,UAAU;EACR,aAAa;EACb,cAAc,CACZ;GACE,iBAAiB;GACjB,mBAAmB,CAAC,oBAAoB;EAC1C,CACF;CACF;CACA,8BAA8B;EAC5B,aAAa;EACb,cAAc,CACZ;GACE,iBAAiB;GACjB,eAAe,CAAC,KAAK;GACrB,mBAAmB,CAAC,eAAe;EACrC,CACF;CACF;CACA,0BAA0B;EACxB,aAAa;EACb,cAAc,CACZ;GACE,iBAAiB;GACjB,kBAAkB,CAAC,OAAO;GAC1B,mBAAmB,CACjB,uDACF;EACF,CACF;CACF;CACA,wCAAwC;EACtC,aAAa;EACb,cAAc,CACZ;GACE,iBAAiB;GACjB,kBAAkB,CAAC,OAAO;GAC1B,mBAAmB,CAAC,gBAAgB;EACtC,CACF;CACF;CACA,iBAAiB;EACf,aAAa;EACb,cAAc;GACZ;IACE,iBAAiB;IACjB,aACE;IACF,kBAAkB,CAAC,UAAU,cAAc;IAC3C,mBAAmB;KACjB;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACF;IACA,YACE;GACJ;GACA;IACE,iBAAiB;IACjB,aACE;IACF,kBAAkB,CAAC,UAAU,cAAc;IAC3C,eAAe;KACb;KACA;KACA;KACA;KACA;KACA;KACA;IACF;IACA,YACE;GACJ;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB;KACjB;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACF;IACA,YAAY;GACd;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,eAAe;KACb;KACA;KACA;KACA;KACA;KACA;KACA;IACF;IACA,YAAY;GACd;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,cAAc;IACjC,eAAe,CAAC,kBAAkB,MAAM;IACxC,YAAY;GACd;GACA;IACE,iBAAiB;IACjB,aACE;IACF,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB,CACjB,gDACA,qCACF;GACF;EACF;CACF;CACA,yBAAyB;EACvB,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,iBAAiB;GACpC,mBAAmB,CAAC,YAAY;GAChC,YACE;EACJ,CACF;CACF;CACA,6BAA6B;EAC3B,aACE;EACF,cAAc;GACZ;IACE,aAAa;IACb,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB,CACjB,gDACA,qCACF;IACA,YACE;GACJ;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB,CACjB,gDACA,qCACF;IACA,YACE;GACJ;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB,CACjB,gDACA,qCACF;IACA,YACE;GACJ;EACF;CACF;CACA,4BAA4B;EAC1B,aAAa;EACb,cAAc,CACZ;GACE,iBAAiB;GACjB,kBAAkB,CAAC,SAAS,aAAa;GACzC,mBAAmB,CAAC,YAAY;EAClC,CACF;CACF;CACA,sBAAsB;EACpB,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,QAAQ;GAE3B,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;GACF;GACA,sBAAsB;GACtB,YAAY;EACd,CACF;CACF;CACA,0BAA0B;EACxB,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,iBAAiB;GACpC,mBAAmB,CAAC,cAAc;GAClC,YACE;EACJ,CACF;CACF;CACA,2BAA2B;EACzB,aACE;EACF,cAAc,CACZ;GACE,kBAAkB,CAAC,QAAQ;GAC3B,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,YAAY;EACd,CACF;CACF;CACA,qBAAqB;EACnB,aAAa;EACb,cAAc,CACZ;GACE,eAAe,CAAC,KAAK;GACrB,mBAAmB,CAAC,aAAa;GACjC,YAAY;EACd,CACF;CACF;CACA,wBAAwB;EACtB,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,QAAQ;GAC3B,eAAe,CAAC,QAAQ;GACxB,YAAY;EACd,CACF;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"workarounds.preset.js","names":[],"sources":["../../../../lib/config/presets/internal/workarounds.preset.ts"],"sourcesContent":["import type { Preset } from '../types.ts';\n\nexport const presets: Record<string, Preset> = {\n all: {\n extends: [\n 'workarounds:mavenCommonsAncientVersion',\n 'workarounds:ignoreSpringCloudNumeric',\n 'workarounds:ignoreWeb3jCoreWithOldReleaseTimestamp',\n 'workarounds:ignoreHttp4sDigestMilestones',\n 'workarounds:typesNodeVersioning',\n 'workarounds:nodeDockerVersioning',\n 'workarounds:doNotUpgradeFromAlpineStableToEdge',\n 'workarounds:supportRedHatImageVersion',\n 'workarounds:javaLTSVersions',\n 'workarounds:disableEclipseLifecycleMapping',\n 'workarounds:disableGradleReplacements',\n 'workarounds:disableMavenParentRoot',\n 'workarounds:containerbase',\n 'workarounds:bitnamiDockerImageVersioning',\n 'workarounds:clamavDockerImageVersioning',\n 'workarounds:grafanaDockerImageVersioning',\n 'workarounds:k3sKubernetesVersioning',\n 'workarounds:rke2KubernetesVersioning',\n 'workarounds:libericaJdkDockerVersioning',\n 'workarounds:ubuntuDockerVersioning',\n 'workarounds:groupings',\n 'workarounds:helmDocs',\n 'workarounds:guavaVariants',\n ],\n overrideDescription: [\n 'Apply crowd-sourced workarounds for known problems with packages.',\n ],\n },\n bitnamiDockerImageVersioning: {\n description: 'Use custom regex versioning for bitnami images',\n packageRules: [\n {\n matchCurrentValue:\n '/^(?<major>\\\\d+)(?:\\\\.(?<minor>\\\\d+)(?:\\\\.(?<patch>\\\\d+))?)?-(?<compatibility>.+)-(?<build>\\\\d+)(?:-r(?<revision>\\\\d+))?$/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bitnami/**',\n 'docker.io/bitnami/**',\n 'gcr.io/bitnami-containers/**',\n '*-docker.pkg.dev/vmw-app-catalog/**',\n ],\n versioning:\n 'regex:^(?<major>\\\\d+)(?:\\\\.(?<minor>\\\\d+)(?:\\\\.(?<patch>\\\\d+))?)?(:?-(?<compatibility>.+)-(?<build>\\\\d+)(?:-r(?<revision>\\\\d+))?)?$',\n },\n ],\n },\n clamavDockerImageVersioning: {\n description: 'Use custom regex versioning for ClamAV images',\n packageRules: [\n {\n matchDatasources: ['docker'],\n matchPackageNames: ['clamav/clamav', 'clamav/clamav-debian'],\n versioning:\n 'regex:^(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)(\\\\.(?<patch>\\\\d+))?(-(?<build>\\\\d+))?(_(?<compatibility>.+))?$',\n },\n ],\n },\n containerbase: {\n description: 'Add some containerbase overrides.',\n packageRules: [\n {\n description:\n 'Use node versioning for `(containerbase|renovate)/node` images',\n matchDatasources: ['docker'],\n matchPackageNames: [\n '/^(?:(?:docker|ghcr)\\\\.io/)?(?:containerbase|renovate)/node$/',\n ],\n versioning: 'node',\n },\n ],\n },\n disableEclipseLifecycleMapping: {\n description: 'Disable Eclipse m2e lifecycle-mapping placeholder package.',\n packageRules: [\n {\n enabled: false,\n matchDatasources: ['maven'],\n matchPackageNames: ['org.eclipse.m2e:lifecycle-mapping'],\n },\n ],\n },\n disableGradleReplacements: {\n description: 'Disable package replacement updates for gradle dependencies.',\n packageRules: [\n {\n enabled: false,\n matchManagers: ['gradle'],\n matchUpdateTypes: ['replacement'],\n },\n ],\n },\n disableMavenParentRoot: {\n description:\n 'Avoid version fetching for Maven packages detected as project root.',\n packageRules: [\n {\n enabled: false,\n matchDepTypes: ['parent-root'],\n matchManagers: ['maven'],\n },\n ],\n },\n doNotUpgradeFromAlpineStableToEdge: {\n description: 'Do not upgrade from Alpine stable to edge.',\n packageRules: [\n {\n allowedVersions: '<20000000',\n matchCurrentVersion: '!/^\\\\d{8}$/',\n matchDatasources: ['docker'],\n matchDepNames: ['alpine'],\n },\n {\n allowedVersions: '<20000000',\n matchCurrentVersion: '!/^\\\\d{8}$/',\n matchDatasources: ['docker'],\n matchPackageNames: ['alpine'],\n },\n ],\n },\n grafanaDockerImageVersioning: {\n description: 'Support security releases on Grafana (product) images',\n packageRules: [\n {\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'grafana/grafana',\n 'docker.io/grafana/grafana',\n 'grafana/grafana-enterprise',\n 'docker.io/grafana/grafana-enterprise',\n ],\n versioning:\n 'regex:^(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)\\\\.(?<patch>\\\\d+)(?:-security-(?<build>\\\\d+))?(?:-(?<compatibility>.*))?$',\n },\n ],\n },\n groupings: {\n description: 'Groupings for specific package updates.',\n packageRules: [\n {\n description:\n 'Group commander major updates, they depend on each other.',\n groupName: 'commander',\n matchDatasources: ['npm'],\n matchPackageNames: ['@commander-js/extra-typings', 'commander'],\n matchUpdateTypes: ['major'],\n },\n {\n description:\n 'Group SimpleWebAuthn major updates to keep browser and server compatible.',\n groupName: 'SimpleWebAuthn',\n matchDatasources: ['npm'],\n matchPackageNames: [\n '@simplewebauthn/browser',\n '@simplewebauthn/server',\n ],\n matchUpdateTypes: ['major'],\n },\n ],\n },\n guavaVariants: {\n description: 'Keep Guava on its `-jre` or `-android` variant.',\n packageRules: [\n {\n matchDatasources: ['maven', 'sbt-package'],\n matchPackageNames: ['com.google.guava:guava'],\n versionCompatibility: '^(?<version>.+)-(?<compatibility>jre|android)$',\n },\n ],\n },\n helmDocs: {\n description: 'Block helm-docs calver-like versions from 2019',\n packageRules: [\n {\n allowedVersions: '!/^19\\\\.(0614|0110)$/',\n matchPackageNames: ['norwoodj/helm-docs'],\n },\n ],\n },\n ignoreHttp4sDigestMilestones: {\n description: 'Ignore `http4s` digest-based `1.x` milestones.',\n packageRules: [\n {\n allowedVersions: `!/^1\\\\.0-\\\\d+-[a-fA-F0-9]{7}$/`,\n matchManagers: ['sbt'],\n matchPackageNames: ['org.http4s:**'],\n },\n ],\n },\n ignoreSpringCloudNumeric: {\n description: 'Ignore spring cloud `1.x` releases.',\n packageRules: [\n {\n allowedVersions: '/^[A-Z]/',\n matchDatasources: ['maven'],\n matchPackageNames: [\n 'org.springframework.cloud:spring-cloud-starter-parent',\n ],\n },\n ],\n },\n ignoreWeb3jCoreWithOldReleaseTimestamp: {\n description: 'Ignore `web3j` `5.0.0` release.',\n packageRules: [\n {\n allowedVersions: '!/^5\\\\.0\\\\.0/',\n matchDatasources: ['maven'],\n matchPackageNames: ['org.web3j:core'],\n },\n ],\n },\n javaLTSVersions: {\n description: 'Limit Java runtime versions to LTS releases.',\n packageRules: [\n {\n allowedVersions: '/^(?:8|11|17|21|25)(?:\\\\.|-|$)/',\n description:\n 'Limit Java runtime versions to LTS releases. To receive all major releases add `workarounds:javaLTSVersions` to the `ignorePresets` array.',\n matchDatasources: ['docker', 'java-version'],\n matchPackageNames: [\n 'eclipse-temurin',\n 'amazoncorretto',\n 'adoptopenjdk',\n 'openjdk',\n 'java',\n 'java-jdk',\n 'java-jre',\n 'sapmachine',\n '/^azul/zulu-openjdk/',\n '/^bellsoft/liberica-openj(dk|re)-/',\n '/^cimg/openjdk/',\n ],\n versioning:\n 'regex:^(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+)(LTS)?)?(-(?<compatibility>.*))?$',\n },\n {\n allowedVersions: '/^(?:8|11|17|21|25)(?:\\\\.|-|$)/',\n description:\n 'Limit Java runtime versions to LTS releases. To receive all major releases add `workarounds:javaLTSVersions` to the `ignorePresets` array.',\n matchDatasources: ['docker', 'java-version'],\n matchDepNames: [\n 'eclipse-temurin',\n 'amazoncorretto',\n 'adoptopenjdk',\n 'openjdk',\n 'java',\n 'java-jre',\n 'sapmachine',\n ],\n versioning:\n 'regex:^(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+)(LTS)?)?(-(?<compatibility>.*))?$',\n },\n {\n description:\n 'Use docker versioning for major-only Java image tags so rolling tags (e.g. 21-jre) are not upgraded to full-precision tags (e.g. 21.0.11_10-jre).',\n matchCurrentValue: '/^\\\\d+(-|$)/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'eclipse-temurin',\n 'amazoncorretto',\n 'adoptopenjdk',\n 'openjdk',\n 'java',\n 'java-jdk',\n 'java-jre',\n 'sapmachine',\n '/^azul/zulu-openjdk/',\n '/^bellsoft/liberica-openj(dk|re)-/',\n '/^cimg/openjdk/',\n ],\n versioning: 'docker',\n },\n {\n description:\n 'Use docker versioning for major-only Java image tags so rolling tags (e.g. 21-jre) are not upgraded to full-precision tags (e.g. 21.0.11_10-jre).',\n matchCurrentValue: '/^\\\\d+(-|$)/',\n matchDatasources: ['docker'],\n matchDepNames: [\n 'eclipse-temurin',\n 'amazoncorretto',\n 'adoptopenjdk',\n 'openjdk',\n 'java',\n 'java-jre',\n 'sapmachine',\n ],\n versioning: 'docker',\n },\n {\n description:\n 'Use partial semver versioning for partial mise and GitHub Actions Java versions so rolling versions (e.g. 21) are not upgraded to full-precision versions (e.g. 21.0.11+9.0.LTS).',\n matchCurrentValue: '/^\\\\d+(?:\\\\.\\\\d+)?$/',\n matchDatasources: ['java-version'],\n matchManagers: ['github-actions', 'mise'],\n versioning: 'semver-partial',\n },\n {\n allowedVersions: '/^(?:jdk|jdk-all|jre)-(?:8|11|17|21|25)(?:\\\\.|-|$)/',\n description:\n 'Limit Java runtime versions to LTS releases. To receive all major releases add `workarounds:javaLTSVersions` to the `ignorePresets` array.',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bellsoft/hardened-liberica-runtime-container',\n 'bellsoft/liberica-runtime-container',\n ],\n },\n ],\n },\n k3sKubernetesVersioning: {\n description: 'Use custom regex versioning for k3s-io/k3s',\n packageRules: [\n {\n matchDatasources: ['github-releases'],\n matchPackageNames: ['k3s-io/k3s'],\n versioning:\n 'regex:^v(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)\\\\.(?<patch>\\\\d+)(?:-(?<prerelease>[a-z]+\\\\d+))?(?<compatibility>\\\\+k3s)(?<build>\\\\d+)$',\n },\n ],\n },\n libericaJdkDockerVersioning: {\n description:\n 'Use custom regex versioning for bellsoft/liberica-runtime-container',\n packageRules: [\n {\n description: 'Liberica JDK Lite version optimized for the Cloud',\n matchCurrentValue: '/^jdk-[^a][^l]{2}/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bellsoft/hardened-liberica-runtime-container',\n 'bellsoft/liberica-runtime-container',\n ],\n versioning:\n 'regex:^jdk-(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+))?(-(?<compatibility>.*))?$',\n },\n {\n description:\n 'Liberica JDK that can be used to create a custom runtime with a help of jlink tool',\n matchCurrentValue: '/^jdk-all/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bellsoft/hardened-liberica-runtime-container',\n 'bellsoft/liberica-runtime-container',\n ],\n versioning:\n 'regex:^jdk-all-(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+))?(-(?<compatibility>.*))?$',\n },\n {\n description:\n 'Liberica JRE (only the runtime without the rest of JDK tools) for running Java applications',\n matchCurrentValue: '/^jre-/',\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'bellsoft/hardened-liberica-runtime-container',\n 'bellsoft/liberica-runtime-container',\n ],\n versioning:\n 'regex:^jre-(?<major>\\\\d+)?(\\\\.(?<minor>\\\\d+))?(\\\\.(?<patch>\\\\d+))?([\\\\._+](?<build>(\\\\d\\\\.?)+))?(-(?<compatibility>.*))?$',\n },\n ],\n },\n mavenCommonsAncientVersion: {\n description: 'Fix some problems with very old Maven commons versions.',\n packageRules: [\n {\n allowedVersions: '!/^200\\\\d{5}(\\\\.\\\\d+)?/',\n matchDatasources: ['maven', 'sbt-package'],\n matchPackageNames: ['commons-**'],\n },\n ],\n },\n nodeDockerVersioning: {\n description: 'Use node versioning for `node` docker images.',\n packageRules: [\n {\n matchDatasources: ['docker'],\n // copied from https://github.com/renovatebot/renovate/blob/a471762e137619c06e73a678d6b63ca984da7dba/lib/config/presets/internal/group.ts#L351\n matchPackageNames: [\n '/(?:^|/)node$/', // node or ends with \"/node, except those below\"\n '!calico/node',\n '!docker.io/calico/node',\n '!ghcr.io/devcontainers/features/node',\n '!kindest/node',\n '!docker.io/kindest/node',\n ],\n versionCompatibility: '^(?<version>[^-]+)(?<compatibility>-.*)?$',\n versioning: 'node',\n },\n ],\n },\n rke2KubernetesVersioning: {\n description: 'Use custom regex versioning for rancher/rke2',\n packageRules: [\n {\n matchDatasources: ['github-releases'],\n matchPackageNames: ['rancher/rke2'],\n versioning:\n 'regex:^v(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)\\\\.(?<patch>\\\\d+)(?:-(?<prerelease>[a-z]+\\\\d+))?(?<compatibility>\\\\+rke2r)(?<build>\\\\d+)$',\n },\n ],\n },\n supportRedHatImageVersion: {\n description:\n 'Use specific versioning for Red Hat-maintained container images.',\n packageRules: [\n {\n matchDatasources: ['docker'],\n matchPackageNames: [\n 'registry.access.redhat.com/rhel',\n 'registry.access.redhat.com/rhel-atomic',\n 'registry.access.redhat.com/rhel-init',\n 'registry.access.redhat.com/rhel-minimal',\n 'registry.access.redhat.com/rhceph/**',\n 'registry.access.redhat.com/rhgs3/**',\n 'registry.access.redhat.com/rhel7**',\n 'registry.access.redhat.com/rhel8/**',\n 'registry.access.redhat.com/rhel9/**',\n 'registry.access.redhat.com/rhscl/**',\n 'registry.access.redhat.com/ubi*{,/}**',\n 'redhat/**',\n ],\n versioning: 'redhat',\n },\n ],\n },\n typesNodeVersioning: {\n description: 'Use node versioning for `@types/node`.',\n packageRules: [\n {\n matchManagers: ['npm'],\n matchPackageNames: ['@types/node'],\n versioning: `node`,\n },\n ],\n },\n ubuntuDockerVersioning: {\n description: 'Use ubuntu versioning for `ubuntu` docker images.',\n packageRules: [\n {\n matchDatasources: ['docker'],\n matchDepNames: ['ubuntu'],\n versioning: 'ubuntu',\n },\n ],\n },\n};\n"],"mappings":"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CA;KACA;KACA;KACA;IACF;IACA,YAAY;GACd;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,eAAe;KACb;KACA;KACA;KACA;KACA;KACA;KACA;IACF;IACA,YAAY;GACd;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,cAAc;IACjC,eAAe,CAAC,kBAAkB,MAAM;IACxC,YAAY;GACd;GACA;IACE,iBAAiB;IACjB,aACE;IACF,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB,CACjB,gDACA,qCACF;GACF;EACF;CACF;CACA,yBAAyB;EACvB,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,iBAAiB;GACpC,mBAAmB,CAAC,YAAY;GAChC,YACE;EACJ,CACF;CACF;CACA,6BAA6B;EAC3B,aACE;EACF,cAAc;GACZ;IACE,aAAa;IACb,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB,CACjB,gDACA,qCACF;IACA,YACE;GACJ;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB,CACjB,gDACA,qCACF;IACA,YACE;GACJ;GACA;IACE,aACE;IACF,mBAAmB;IACnB,kBAAkB,CAAC,QAAQ;IAC3B,mBAAmB,CACjB,gDACA,qCACF;IACA,YACE;GACJ;EACF;CACF;CACA,4BAA4B;EAC1B,aAAa;EACb,cAAc,CACZ;GACE,iBAAiB;GACjB,kBAAkB,CAAC,SAAS,aAAa;GACzC,mBAAmB,CAAC,YAAY;EAClC,CACF;CACF;CACA,sBAAsB;EACpB,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,QAAQ;GAE3B,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;GACF;GACA,sBAAsB;GACtB,YAAY;EACd,CACF;CACF;CACA,0BAA0B;EACxB,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,iBAAiB;GACpC,mBAAmB,CAAC,cAAc;GAClC,YACE;EACJ,CACF;CACF;CACA,2BAA2B;EACzB,aACE;EACF,cAAc,CACZ;GACE,kBAAkB,CAAC,QAAQ;GAC3B,mBAAmB;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,YAAY;EACd,CACF;CACF;CACA,qBAAqB;EACnB,aAAa;EACb,cAAc,CACZ;GACE,eAAe,CAAC,KAAK;GACrB,mBAAmB,CAAC,aAAa;GACjC,YAAY;EACd,CACF;CACF;CACA,wBAAwB;EACtB,aAAa;EACb,cAAc,CACZ;GACE,kBAAkB,CAAC,QAAQ;GAC3B,eAAe,CAAC,QAAQ;GACxB,YAAY;EACd,CACF;CACF;AACF"}
|
package/dist/data/monorepo.js
CHANGED
|
@@ -512,6 +512,7 @@ var repoGroups = {
|
|
|
512
512
|
"linkifyjs": "https://github.com/nfrasser/linkifyjs",
|
|
513
513
|
"log4j2": "https://github.com/apache/logging-log4j2",
|
|
514
514
|
"logback": "https://github.com/qos-ch/logback",
|
|
515
|
+
"logtape": "https://github.com/dahlia/logtape",
|
|
515
516
|
"loopback": ["https://github.com/strongloop/loopback-next", "https://github.com/loopbackio/loopback-next"],
|
|
516
517
|
"lrnwebcomponents": "https://github.com/elmsln/lrnwebcomponents",
|
|
517
518
|
"lucide": "https://github.com/lucide-icons/lucide",
|
|
@@ -597,7 +598,11 @@ var repoGroups = {
|
|
|
597
598
|
"pothos": "https://github.com/hayes/pothos",
|
|
598
599
|
"pouchdb": "https://github.com/pouchdb/pouchdb",
|
|
599
600
|
"powermock": "https://github.com/powermock/powermock",
|
|
600
|
-
"prisma":
|
|
601
|
+
"prisma": [
|
|
602
|
+
"https://github.com/prisma/orm",
|
|
603
|
+
"https://github.com/prisma/prisma",
|
|
604
|
+
"https://github.com/prisma/prisma-cli"
|
|
605
|
+
],
|
|
601
606
|
"prometheus-net": "https://github.com/prometheus-net/prometheus-net",
|
|
602
607
|
"promster": "https://github.com/tdeekens/promster",
|
|
603
608
|
"protobuf": "https://github.com/protocolbuffers/protobuf",
|
|
@@ -35,6 +35,7 @@ var replacements_default = {
|
|
|
35
35
|
"replacements:kotlin-logging-to-oshai",
|
|
36
36
|
"replacements:mem-rename",
|
|
37
37
|
"replacements:middie-to-scoped",
|
|
38
|
+
"replacements:monochromata-cucumber-reporting-plugin-to-jvt",
|
|
38
39
|
"replacements:now-to-vercel",
|
|
39
40
|
"replacements:npm-run-all-to-maintenance-fork",
|
|
40
41
|
"replacements:ojdbc-to-ojdbc11",
|
|
@@ -864,6 +865,15 @@ var replacements_default = {
|
|
|
864
865
|
"replacementVersion": "8.0.0"
|
|
865
866
|
}]
|
|
866
867
|
},
|
|
868
|
+
"monochromata-cucumber-reporting-plugin-to-jvt": {
|
|
869
|
+
"description": "`de.monochromata.cucumber:reporting-plugin` was moved to `me.jvt.cucumber:reporting-plugin`.",
|
|
870
|
+
"packageRules": [{
|
|
871
|
+
"matchDatasources": ["maven"],
|
|
872
|
+
"matchPackageNames": ["de.monochromata.cucumber:reporting-plugin"],
|
|
873
|
+
"replacementName": "me.jvt.cucumber:reporting-plugin",
|
|
874
|
+
"replacementVersion": "5.0.0"
|
|
875
|
+
}]
|
|
876
|
+
},
|
|
867
877
|
"now-to-vercel": {
|
|
868
878
|
"description": "`now` was renamed to `vercel`.",
|
|
869
879
|
"packageRules": [{
|
|
@@ -2,9 +2,9 @@ import "../../../constants/error-messages.js";
|
|
|
2
2
|
import { regEx } from "../../../util/regex.js";
|
|
3
3
|
import { coerceArray } from "../../../util/array.js";
|
|
4
4
|
import { logger } from "../../../logger/index.js";
|
|
5
|
-
import { findLocalSiblingOrParent, readLocalFile
|
|
5
|
+
import { findLocalSiblingOrParent, readLocalFile } from "../../../util/fs/index.js";
|
|
6
6
|
import { CrateDatasource } from "../../datasource/crate/index.js";
|
|
7
|
-
import { artifactErrorResult, fileAddition, resolveToolConstraint } from "../util.js";
|
|
7
|
+
import { artifactErrorResult, fileAddition, resolveToolConstraint, updateLockFile } from "../util.js";
|
|
8
8
|
import { withGitEnvironment } from "../../../util/git/exec.js";
|
|
9
9
|
import { extractLockFileContentVersions } from "./locked-version.js";
|
|
10
10
|
import { quote } from "shlex";
|
|
@@ -42,7 +42,7 @@ async function updateArtifacts(updateArtifact) {
|
|
|
42
42
|
async function updateArtifactsImpl({ packageFileName, updatedDeps, newPackageFileContent, config }, recursionLimit = 10) {
|
|
43
43
|
logger.debug(`cargo.updateArtifacts(${packageFileName})`);
|
|
44
44
|
const lockFileName = await findLocalSiblingOrParent(packageFileName, "Cargo.lock");
|
|
45
|
-
const existingLockFileContent = lockFileName ? await readLocalFile(lockFileName) : null;
|
|
45
|
+
const existingLockFileContent = lockFileName ? await readLocalFile(lockFileName, "utf8") : null;
|
|
46
46
|
if (!existingLockFileContent || !lockFileName) {
|
|
47
47
|
logger.debug("No Cargo.lock found");
|
|
48
48
|
return null;
|
|
@@ -54,25 +54,28 @@ async function updateArtifactsImpl({ packageFileName, updatedDeps, newPackageFil
|
|
|
54
54
|
}
|
|
55
55
|
const rustConstraint = await resolveToolConstraint(config, "rust");
|
|
56
56
|
try {
|
|
57
|
-
await
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
57
|
+
return await updateLockFile({
|
|
58
|
+
lockFileName,
|
|
59
|
+
existingLockFileContent,
|
|
60
|
+
packageFile: {
|
|
61
|
+
path: packageFileName,
|
|
62
|
+
contents: newPackageFileContent
|
|
63
|
+
},
|
|
64
|
+
run: async () => {
|
|
65
|
+
logger.debug(`Updating ${lockFileName}`);
|
|
66
|
+
if (isLockFileMaintenance) {
|
|
67
|
+
await cargoUpdate(packageFileName, true, rustConstraint);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const hasNonCrateDep = updatedDeps.some((dep) => dep.datasource !== CrateDatasource.id);
|
|
71
|
+
const crateDepWithoutLockedVersion = updatedDeps.find((dep) => !dep.lockedVersion && dep.datasource === CrateDatasource.id);
|
|
72
|
+
if (hasNonCrateDep || crateDepWithoutLockedVersion) {
|
|
73
|
+
// v8 ignore else -- needs a workspace update driven only by a non-crate dep
|
|
74
|
+
if (crateDepWithoutLockedVersion) logger.warn({ dependency: crateDepWithoutLockedVersion.depName }, "Missing locked version for dependency");
|
|
75
|
+
await cargoUpdate(packageFileName, false, rustConstraint);
|
|
76
|
+
} else await cargoUpdatePrecise(packageFileName, updatedDeps, rustConstraint);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
76
79
|
} catch (err) {
|
|
77
80
|
// istanbul ignore if
|
|
78
81
|
if (err.message === "temporary-error") throw err;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/cargo/artifacts.ts"],"sourcesContent":["import { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n
|
|
1
|
+
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/cargo/artifacts.ts"],"sourcesContent":["import { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n} from '../../../util/fs/index.ts';\nimport { withGitEnvironment } from '../../../util/git/exec.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { CrateDatasource } from '../../datasource/crate/index.ts';\nimport type {\n UpdateArtifact,\n UpdateArtifactsResult,\n Upgrade,\n} from '../types.ts';\nimport {\n artifactErrorResult,\n fileAddition,\n resolveToolConstraint,\n updateLockFile,\n} from '../util.ts';\nimport { extractLockFileContentVersions } from './locked-version.ts';\n\nconst gitExec = withGitEnvironment(['cargo', CrateDatasource.id]);\n\nasync function cargoUpdate(\n manifestPath: string,\n isLockFileMaintenance: boolean,\n constraint: string | undefined,\n): Promise<void> {\n let cmd = `cargo update --config net.git-fetch-with-cli=true --manifest-path ${quote(\n manifestPath,\n )}`;\n // If we're updating a specific crate, `cargo-update` requires `--workspace`\n // for more information, see: https://github.com/renovatebot/renovate/issues/12332\n if (!isLockFileMaintenance) {\n cmd += ` --workspace`;\n }\n\n const execOptions: ExecOptions = {\n docker: {},\n toolConstraints: [{ toolName: 'rust', constraint }],\n };\n await gitExec(cmd, execOptions);\n}\n\nasync function cargoUpdatePrecise(\n manifestPath: string,\n updatedDeps: Upgrade[],\n constraint: string | undefined,\n): Promise<void> {\n const cmds = [];\n\n // First update individual dependencies to their `newVersion`. Necessary when\n // using the `update-lockfile` rangeStrategy which doesn't touch Cargo.toml.\n for (const dep of updatedDeps) {\n // If the range is bumped in Cargo.toml, the old lockedVersion may no longer\n // exist in Cargo's dependency graph, so let the --workspace update at the\n // end re-resolve it instead.\n if (dep.currentValue && dep.newValue && dep.currentValue !== dep.newValue) {\n continue;\n }\n\n cmds.push(\n `cargo update --config net.git-fetch-with-cli=true` +\n ` --manifest-path ${quote(manifestPath)}` +\n ` --package ${quote(`${dep.packageName}@${dep.lockedVersion}`)}` +\n ` --precise ${quote(dep.newVersion!)}`,\n );\n }\n\n // Then update all dependencies that have been bumped in `Cargo.toml`.\n cmds.push(\n `cargo update --config net.git-fetch-with-cli=true --manifest-path ${quote(manifestPath)} --workspace`,\n );\n\n const execOptions: ExecOptions = {\n docker: {},\n toolConstraints: [{ toolName: 'rust', constraint }],\n };\n\n await gitExec(cmds, execOptions);\n}\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n return await updateArtifactsImpl(updateArtifact);\n}\n\nasync function updateArtifactsImpl(\n {\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n }: UpdateArtifact,\n recursionLimit = 10,\n): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`cargo.updateArtifacts(${packageFileName})`);\n\n // For standalone package crates, the `Cargo.lock` will be in the same\n // directory as `Cargo.toml` (ie. a sibling). For cargo workspaces, it\n // will be further up.\n const lockFileName = await findLocalSiblingOrParent(\n packageFileName,\n 'Cargo.lock',\n );\n const existingLockFileContent = lockFileName\n ? await readLocalFile(lockFileName, 'utf8')\n : null;\n if (!existingLockFileContent || !lockFileName) {\n logger.debug('No Cargo.lock found');\n return null;\n }\n\n const { isLockFileMaintenance } = config;\n if (!isLockFileMaintenance && !updatedDeps?.length) {\n logger.debug('No more dependencies to update');\n return [fileAddition(lockFileName, existingLockFileContent)];\n }\n\n const rustConstraint = await resolveToolConstraint(config, 'rust');\n\n try {\n return await updateLockFile({\n lockFileName,\n existingLockFileContent,\n packageFile: { path: packageFileName, contents: newPackageFileContent },\n run: async () => {\n logger.debug(`Updating ${lockFileName}`);\n\n if (isLockFileMaintenance) {\n await cargoUpdate(packageFileName, true, rustConstraint);\n return;\n }\n\n const hasNonCrateDep = updatedDeps.some(\n (dep) => dep.datasource !== CrateDatasource.id,\n );\n const crateDepWithoutLockedVersion = updatedDeps.find(\n (dep) => !dep.lockedVersion && dep.datasource === CrateDatasource.id,\n );\n // Non-crate dependencies (like git ones) do not have locked versions.\n // For crate dependencies, a locked version is expected.\n // In both situations, perform a regular workspace lockfile update.\n if (hasNonCrateDep || crateDepWithoutLockedVersion) {\n // v8 ignore else -- needs a workspace update driven only by a non-crate dep\n if (crateDepWithoutLockedVersion) {\n // Only warn when a crate dependency has no locked version\n logger.warn(\n { dependency: crateDepWithoutLockedVersion.depName },\n 'Missing locked version for dependency',\n );\n }\n await cargoUpdate(packageFileName, false, rustConstraint);\n } else {\n // If all dependencies have locked versions then update them precisely.\n await cargoUpdatePrecise(\n packageFileName,\n updatedDeps,\n rustConstraint,\n );\n }\n },\n });\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n\n // Sometimes `cargo update` will fail when a preceding dependency update\n // causes another dependency to update. In this case we can no longer\n // reference the dependency by its old version, so we filter it out\n // and retry recursively.\n const newCargoLockContent = await readLocalFile(lockFileName, 'utf8');\n if (\n recursionLimit > 0 &&\n newCargoLockContent &&\n regEx(/error: package ID specification/).test(err.stderr)\n ) {\n const versions = extractLockFileContentVersions(newCargoLockContent);\n const newUpdatedDeps = updatedDeps.filter(\n (dep) =>\n !coerceArray(versions?.get(dep.packageName!)).includes(\n dep.newVersion!,\n ),\n );\n\n // v8 ignore else -- this retry only runs when a dep was already current\n if (newUpdatedDeps.length < updatedDeps.length) {\n logger.debug(\n 'Dependency already up to date - reattempting recursively',\n );\n return updateArtifactsImpl(\n {\n packageFileName,\n updatedDeps: newUpdatedDeps,\n newPackageFileContent,\n config,\n },\n recursionLimit - 1,\n );\n }\n }\n\n logger.debug({ err }, 'Failed to update Cargo lock file');\n\n return artifactErrorResult(lockFileName, err);\n }\n}\n"],"mappings":";;;;;;;;;;;AAyBA,MAAM,UAAU,mBAAmB,CAAC,SAAS,gBAAgB,EAAE,CAAC;AAEhE,eAAe,YACb,cACA,uBACA,YACe;CACf,IAAI,MAAM,qEAAqE,MAC7E,YACF;CAGA,IAAI,CAAC,uBACH,OAAO;CAOT,MAAM,QAAQ,KAAK;EAHjB,QAAQ,CAAC;EACT,iBAAiB,CAAC;GAAE,UAAU;GAAQ;EAAW,CAAC;CAEvB,CAAC;AAChC;AAEA,eAAe,mBACb,cACA,aACA,YACe;CACf,MAAM,OAAO,CAAC;CAId,KAAK,MAAM,OAAO,aAAa;EAI7B,IAAI,IAAI,gBAAgB,IAAI,YAAY,IAAI,iBAAiB,IAAI,UAC/D;EAGF,KAAK,KACH,qEACsB,MAAM,YAAY,EAAA,aACxB,MAAM,GAAG,IAAI,YAAY,GAAG,IAAI,eAAe,EAAA,aAC/C,MAAM,IAAI,UAAW,GACvC;CACF;CAGA,KAAK,KACH,qEAAqE,MAAM,YAAY,EAAE,aAC3F;CAOA,MAAM,QAAQ,MAAM;EAJlB,QAAQ,CAAC;EACT,iBAAiB,CAAC;GAAE,UAAU;GAAQ;EAAW,CAAC;CAGtB,CAAC;AACjC;AAEA,eAAsB,gBACpB,gBACyC;CACzC,OAAO,MAAM,oBAAoB,cAAc;AACjD;AAEA,eAAe,oBACb,EACE,iBACA,aACA,uBACA,UAEF,iBAAiB,IACwB;CACzC,OAAO,MAAM,yBAAyB,gBAAgB,EAAE;CAKxD,MAAM,eAAe,MAAM,yBACzB,iBACA,YACF;CACA,MAAM,0BAA0B,eAC5B,MAAM,cAAc,cAAc,MAAM,IACxC;CACJ,IAAI,CAAC,2BAA2B,CAAC,cAAc;EAC7C,OAAO,MAAM,qBAAqB;EAClC,OAAO;CACT;CAEA,MAAM,EAAE,0BAA0B;CAClC,IAAI,CAAC,yBAAyB,CAAC,aAAa,QAAQ;EAClD,OAAO,MAAM,gCAAgC;EAC7C,OAAO,CAAC,aAAa,cAAc,uBAAuB,CAAC;CAC7D;CAEA,MAAM,iBAAiB,MAAM,sBAAsB,QAAQ,MAAM;CAEjE,IAAI;EACF,OAAO,MAAM,eAAe;GAC1B;GACA;GACA,aAAa;IAAE,MAAM;IAAiB,UAAU;GAAsB;GACtE,KAAK,YAAY;IACf,OAAO,MAAM,YAAY,cAAc;IAEvC,IAAI,uBAAuB;KACzB,MAAM,YAAY,iBAAiB,MAAM,cAAc;KACvD;IACF;IAEA,MAAM,iBAAiB,YAAY,MAChC,QAAQ,IAAI,eAAe,gBAAgB,EAC9C;IACA,MAAM,+BAA+B,YAAY,MAC9C,QAAQ,CAAC,IAAI,iBAAiB,IAAI,eAAe,gBAAgB,EACpE;IAIA,IAAI,kBAAkB,8BAA8B;;KAElD,IAAI,8BAEF,OAAO,KACL,EAAE,YAAY,6BAA6B,QAAQ,GACnD,uCACF;KAEF,MAAM,YAAY,iBAAiB,OAAO,cAAc;IAC1D,OAEE,MAAM,mBACJ,iBACA,aACA,cACF;GAEJ;EACF,CAAC;CACH,SAAS,KAAK;;EAEZ,IAAI,IAAI,YAAA,mBACN,MAAM;EAOR,MAAM,sBAAsB,MAAM,cAAc,cAAc,MAAM;EACpE,IACE,iBAAiB,KACjB,uBACA,MAAM,iCAAiC,CAAC,CAAC,KAAK,IAAI,MAAM,GACxD;GACA,MAAM,WAAW,+BAA+B,mBAAmB;GACnE,MAAM,iBAAiB,YAAY,QAChC,QACC,CAAC,YAAY,UAAU,IAAI,IAAI,WAAY,CAAC,CAAC,CAAC,SAC5C,IAAI,UACN,CACJ;;GAGA,IAAI,eAAe,SAAS,YAAY,QAAQ;IAC9C,OAAO,MACL,0DACF;IACA,OAAO,oBACL;KACE;KACA,aAAa;KACb;KACA;IACF,GACA,iBAAiB,CACnB;GACF;EACF;EAEA,OAAO,MAAM,EAAE,IAAI,GAAG,kCAAkC;EAExD,OAAO,oBAAoB,cAAc,GAAG;CAC9C;AACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../../../constants/error-messages.js";
|
|
2
2
|
import { logger } from "../../../logger/index.js";
|
|
3
|
-
import { findLocalSiblingOrParent, readLocalFile
|
|
4
|
-
import { artifactErrorResult,
|
|
3
|
+
import { findLocalSiblingOrParent, readLocalFile } from "../../../util/fs/index.js";
|
|
4
|
+
import { artifactErrorResult, resolveToolConstraint, updateLockFile } from "../util.js";
|
|
5
5
|
import { withGitEnvironment } from "../../../util/git/exec.js";
|
|
6
6
|
import { quote } from "shlex";
|
|
7
7
|
//#region lib/modules/manager/conan/artifacts.ts
|
|
@@ -32,26 +32,21 @@ async function updateArtifacts(updateArtifact) {
|
|
|
32
32
|
logger.trace("No conan.lock found");
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
|
-
const existingLockFileContent = await readLocalFile(lockFileName);
|
|
35
|
+
const existingLockFileContent = await readLocalFile(lockFileName, "utf8");
|
|
36
36
|
if (!existingLockFileContent) {
|
|
37
37
|
logger.debug(`${lockFileName} read operation failed`);
|
|
38
38
|
return null;
|
|
39
39
|
}
|
|
40
40
|
try {
|
|
41
|
-
await
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
logger.trace(`${lockFileName} is unchanged`);
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
logger.trace(`Returning updated ${lockFileName}`);
|
|
54
|
-
return [fileAddition(lockFileName, newLockFileContent)];
|
|
41
|
+
return await updateLockFile({
|
|
42
|
+
lockFileName,
|
|
43
|
+
existingLockFileContent,
|
|
44
|
+
packageFile: {
|
|
45
|
+
path: packageFileName,
|
|
46
|
+
contents: newPackageFileContent
|
|
47
|
+
},
|
|
48
|
+
run: async () => conanLockUpdate(packageFileName, isLockFileMaintenance, await resolveToolConstraint(config, "conan"), await resolveToolConstraint(config, "python"))
|
|
49
|
+
});
|
|
55
50
|
} catch (err) {
|
|
56
51
|
if (err.message === "temporary-error") throw err;
|
|
57
52
|
logger.debug({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/conan/artifacts.ts"],"sourcesContent":["import { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n
|
|
1
|
+
{"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/conan/artifacts.ts"],"sourcesContent":["import { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n} from '../../../util/fs/index.ts';\nimport { withGitEnvironment } from '../../../util/git/exec.ts';\nimport type { UpdateArtifact, UpdateArtifactsResult } from '../types.ts';\nimport {\n artifactErrorResult,\n resolveToolConstraint,\n updateLockFile,\n} from '../util.ts';\n\nconst gitExec = withGitEnvironment(['conan']);\n\nasync function conanLockUpdate(\n conanFilePath: string,\n isLockFileMaintenance: boolean | undefined,\n conanConstraint?: string,\n pythonConstraint?: string,\n): Promise<void> {\n const command = `conan lock create ${quote(conanFilePath)}${isLockFileMaintenance ? ' --lockfile=\"\"' : ''}`;\n\n const execOptions: ExecOptions = {\n toolConstraints: [\n {\n toolName: 'python',\n constraint: pythonConstraint,\n },\n {\n toolName: 'conan',\n constraint: conanConstraint,\n },\n ],\n docker: {},\n };\n\n await gitExec(command, execOptions);\n}\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n const { packageFileName, updatedDeps, newPackageFileContent, config } =\n updateArtifact;\n\n logger.trace(`conan.updateArtifacts(${packageFileName})`);\n\n const { isLockFileMaintenance } = config;\n\n if (updatedDeps.length === 0 && !isLockFileMaintenance) {\n logger.trace('No conan.lock dependencies to update');\n return null;\n }\n\n const lockFileName = await findLocalSiblingOrParent(\n packageFileName,\n 'conan.lock',\n );\n if (!lockFileName) {\n logger.trace('No conan.lock found');\n return null;\n }\n\n const existingLockFileContent = await readLocalFile(lockFileName, 'utf8');\n if (!existingLockFileContent) {\n logger.debug(`${lockFileName} read operation failed`);\n return null;\n }\n\n try {\n return await updateLockFile({\n lockFileName,\n existingLockFileContent,\n packageFile: { path: packageFileName, contents: newPackageFileContent },\n run: async () =>\n conanLockUpdate(\n packageFileName,\n isLockFileMaintenance,\n await resolveToolConstraint(config, 'conan'),\n await resolveToolConstraint(config, 'python'),\n ),\n });\n } catch (err) {\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n\n logger.debug(\n { err, packageFileName, lockFileName },\n 'Lockfile update failed',\n );\n\n return artifactErrorResult(lockFileName, err);\n }\n}\n"],"mappings":";;;;;;;AAgBA,MAAM,UAAU,mBAAmB,CAAC,OAAO,CAAC;AAE5C,eAAe,gBACb,eACA,uBACA,iBACA,kBACe;CACf,MAAM,UAAU,qBAAqB,MAAM,aAAa,IAAI,wBAAwB,qBAAmB;CAgBvG,MAAM,QAAQ,SAAS;EAbrB,iBAAiB,CACf;GACE,UAAU;GACV,YAAY;EACd,GACA;GACE,UAAU;GACV,YAAY;EACd,CACF;EACA,QAAQ,CAAC;CAGsB,CAAC;AACpC;AAEA,eAAsB,gBACpB,gBACyC;CACzC,MAAM,EAAE,iBAAiB,aAAa,uBAAuB,WAC3D;CAEF,OAAO,MAAM,yBAAyB,gBAAgB,EAAE;CAExD,MAAM,EAAE,0BAA0B;CAElC,IAAI,YAAY,WAAW,KAAK,CAAC,uBAAuB;EACtD,OAAO,MAAM,sCAAsC;EACnD,OAAO;CACT;CAEA,MAAM,eAAe,MAAM,yBACzB,iBACA,YACF;CACA,IAAI,CAAC,cAAc;EACjB,OAAO,MAAM,qBAAqB;EAClC,OAAO;CACT;CAEA,MAAM,0BAA0B,MAAM,cAAc,cAAc,MAAM;CACxE,IAAI,CAAC,yBAAyB;EAC5B,OAAO,MAAM,GAAG,aAAa,uBAAuB;EACpD,OAAO;CACT;CAEA,IAAI;EACF,OAAO,MAAM,eAAe;GAC1B;GACA;GACA,aAAa;IAAE,MAAM;IAAiB,UAAU;GAAsB;GACtE,KAAK,YACH,gBACE,iBACA,uBACA,MAAM,sBAAsB,QAAQ,OAAO,GAC3C,MAAM,sBAAsB,QAAQ,QAAQ,CAC9C;EACJ,CAAC;CACH,SAAS,KAAK;EACZ,IAAI,IAAI,YAAA,mBACN,MAAM;EAGR,OAAO,MACL;GAAE;GAAK;GAAiB;EAAa,GACrC,wBACF;EAEA,OAAO,oBAAoB,cAAc,GAAG;CAC9C;AACF"}
|
|
@@ -21,13 +21,13 @@ hashMap.set("bun", "77a06471b8aec434457bcbde14a7473bc1c20a5fbe203ecc188bcc7a4fec
|
|
|
21
21
|
hashMap.set("bun-version", "df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4");
|
|
22
22
|
hashMap.set("bundler", "6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5");
|
|
23
23
|
hashMap.set("cake", "9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad");
|
|
24
|
-
hashMap.set("cargo", "
|
|
24
|
+
hashMap.set("cargo", "3253c4b828f3871c58f8bc68973704cb06f3043abf6f97775ab220a79da5fbfe");
|
|
25
25
|
hashMap.set("cdnurl", "9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2");
|
|
26
26
|
hashMap.set("circleci", "91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85");
|
|
27
27
|
hashMap.set("cloudbuild", "f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c");
|
|
28
28
|
hashMap.set("cocoapods", "f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba");
|
|
29
29
|
hashMap.set("composer", "bbca094a652544845c147bd801b04ce4aae3719cb27acfb68b2ebac616940538");
|
|
30
|
-
hashMap.set("conan", "
|
|
30
|
+
hashMap.set("conan", "03cdeeffe4e688fb403766100cc1fc617dd388629f1c769ba54a966db3b23414");
|
|
31
31
|
hashMap.set("copier", "a0678cc1eec36301328780966eec215c6e18748ea80c98873c8e13291a684cfa");
|
|
32
32
|
hashMap.set("cpanfile", "07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3");
|
|
33
33
|
hashMap.set("crossplane", "5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','8e11293c8f61b4cbae77a3b1634a47213031c59df2c9833d89db65bf4e6edc64');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','66c207983960b1a1f49b972f77efe3bfd3097e19b0ee4034ccf9ac6c0d13e05b');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4d4f1d9a6519ba552b316b396db13ff0654a2663d8ed976188899a2d57d306a2');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','77a06471b8aec434457bcbde14a7473bc1c20a5fbe203ecc188bcc7a4fec1718');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','d354b54fee207cabab9fcff67fea1ca3292c7f37a4ef9537c7bb4cab41a35610');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','bbca094a652544845c147bd801b04ce4aae3719cb27acfb68b2ebac616940538');\nhashMap.set('conan','8d46e9a30ae628e26118aea10a98d1b846f7c5d96d51ce24693437d555f6d125');\nhashMap.set('copier','a0678cc1eec36301328780966eec215c6e18748ea80c98873c8e13291a684cfa');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','41e6a8b7b8bae08f07b3e4b69c8c095db5da984bb23c004cd1ebf755a6317794');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','0e9d00a108f6e828ad207ee0213d56ecd64475df9bd87c23b0c2b2f80e00a392');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','f4e2c6ddf2fa93241665c5176faafb358eecfcb701e7478790c4d58853ed827a');\nhashMap.set('github-actions','070b49e15d295acd9a87ad0206795e101e64295bd809765ef1ea69663b62d741');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','0960350ca66c6e45ef34e7d3a6f0d54f03c7c7b81b9874b486473e18b5757d26');\nhashMap.set('gradle','14ffeecba62452d47d3796e68753da745de2614b6e5ecc346da4f0067ed4bc6e');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','ab63e5bc2bb381939a6b75911947e3fc79d31827423ded07f61ea1c98d95a542');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','927798e082caf46a0da703389ba07e9e61fa73ef571ab551301b8fc6b06957d1');\nhashMap.set('hermit','abf066a64be5e5112e4da68896cf14583691e817d8bf2fc5ec65aebcc0fde53b');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','11b17044d29321b3b0ad8cee40ba00cd3297b9e94648556211043f1e8635c8e7');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','f9df7bfca0f8ffc2eff230aec09a53c8ae3e4012ac499a38622b31df203f047a');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','49077fd316618114cea787f4d165dee2abd9afb7c3b52e5213a70645c35dfb70');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','cd2b909d892ef3e41e51b5df5b1b0b7e34e795845b0640225e41621416c1ee7d');\nhashMap.set('nuget','fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('paket','0cf8ff9b040ecf28f29b23bbe2ab2544ab3c94822bc1fb53ee4df7b74f000dea');\nhashMap.set('pep621','02ba97d9d2bbd696417ea0ea26c0ed27f4e8cf296f1afdbb27ec07bcc3bd987c');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','9b8ac4f9432f2789f60847c80582966d5ed4f735d2f678c82416d0eb9548b4fa');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','2c74e8e94c484c8bfc93ba1272078d531a52e4faaa978fc90ddb654064bb85bc');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','890cabf707d01b58394e0bec05e3a29b73de8f0b43fcbe8a42cd26e328608d70');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','30774cd456c443be2cd236fd5b8cd1cb821f1437c6309842e34960832df3557f');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fingerprint.generated.js","names":[],"sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','a52394a36ac5517f7330473c31d93aa05b2ce607c5e951b48f25a4693cd20a81');\nhashMap.set('ansible-galaxy','8e11293c8f61b4cbae77a3b1634a47213031c59df2c9833d89db65bf4e6edc64');\nhashMap.set('ant','2df5943cf0ed19a21b94df13729dbb925655548130caf37e3e22bebaed518e17');\nhashMap.set('apm','66c207983960b1a1f49b972f77efe3bfd3097e19b0ee4034ccf9ac6c0d13e05b');\nhashMap.set('argocd','cff9cd22257bc460ae4b9936570bf0ed5585f280a55d26629deaeeb0bfee8eb5');\nhashMap.set('asdf','430eb99b58171700c8a59c78b9e648575e9b176b781d90dd10a710f7b69015bb');\nhashMap.set('azure-pipelines','04a13dec4e08ba21004961c718072fde976226d65809fa3c838bf66ba93e5d5a');\nhashMap.set('batect','375d39b432013bedb1330cf40a2199dd822751b28578214f219e7bab98594b8d');\nhashMap.set('batect-wrapper','d999355511ea7f4053325a18b8cfc8d2b586c61e6760c35e557d383a673e3939');\nhashMap.set('bazel','4d4f1d9a6519ba552b316b396db13ff0654a2663d8ed976188899a2d57d306a2');\nhashMap.set('bazel-module','9fbba0339f9f7785d52ab85c5f0f6385003093c063483c13feccba13ae438bef');\nhashMap.set('bazelisk','770f75a746dc6ba90c518788d5987d7df4243ef9eee122d1bb0556a93d6e1b11');\nhashMap.set('bicep','7246e0bfc06e0e28cbb03ac088c5591f648956b086e106aeb251fe5d628329db');\nhashMap.set('bitbucket-pipelines','59c0503494ab1442b127914503c01b97ac17b6742b19c632292d5aa24de115cd');\nhashMap.set('bitrise','478dfd316221fad7c29e177c70d1018d832fb2626b53308a5d0f1f0380e69f42');\nhashMap.set('buildkite','b8b404f53cd5d61c39153fddf93945e621471c4ac6aa9960c881cd868922bb4c');\nhashMap.set('buildpacks','6bef3cb04d66b5cfbb195adb4829bcbccae6408518706744d291bacf0610421f');\nhashMap.set('bun','77a06471b8aec434457bcbde14a7473bc1c20a5fbe203ecc188bcc7a4fec1718');\nhashMap.set('bun-version','df3ae8e4a5de1fa1b4544f3d7fc8117e80adb1e151c46d1ede54a4dbea6521e4');\nhashMap.set('bundler','6e4784dd98c1f86ef64cc8cbf3128df48aebf920032d7792b54fdedd3dd9d4d5');\nhashMap.set('cake','9ebd8b481220b30a8860121d26184540a1a2fcc05ef780df9295dea39b386fad');\nhashMap.set('cargo','3253c4b828f3871c58f8bc68973704cb06f3043abf6f97775ab220a79da5fbfe');\nhashMap.set('cdnurl','9a81c8e3c6ad6c788498c99fc1067ffdfcd92a427c3afaf8c0130975d83131f2');\nhashMap.set('circleci','91cbeb33ea20f9838e2c81a1195eb806f0b38fa282bc3679f62552f20575ca85');\nhashMap.set('cloudbuild','f4e40388944652c8a19f8518771ac8d3f3c4ccf81ddef0e68b463aca833cb73c');\nhashMap.set('cocoapods','f832e2beef885bb3fd697ed9bb3e8cd742926bfec37ff41212edd2dbb4edb3ba');\nhashMap.set('composer','bbca094a652544845c147bd801b04ce4aae3719cb27acfb68b2ebac616940538');\nhashMap.set('conan','03cdeeffe4e688fb403766100cc1fc617dd388629f1c769ba54a966db3b23414');\nhashMap.set('copier','a0678cc1eec36301328780966eec215c6e18748ea80c98873c8e13291a684cfa');\nhashMap.set('cpanfile','07813fec3f3c2197056500e9266a0553b9774c02f2c74d5ca2e213188c7c12d3');\nhashMap.set('crossplane','5c26b1201a1a51454ffb94d829e223a76a781569bf79cdb1e47087c30233ec40');\nhashMap.set('crow','eb9a5f9f95041855dded67bcce3dd54724f690995ed6268d272e8a666ff28fd0');\nhashMap.set('deno','41e6a8b7b8bae08f07b3e4b69c8c095db5da984bb23c004cd1ebf755a6317794');\nhashMap.set('deps-edn','06783dbc8b9c7bb84e162d1f75b7db56dfa021cc6f809dfd2314cee8b64af08d');\nhashMap.set('devbox','a40050cc61bd9b5d500ec111abb17bb15d5f82ab5b7699f66f628307ba8382c9');\nhashMap.set('devcontainer','24320ed1cb6191d04cb8b2707214d82c08c682597aed1d84f250aa00ad1632ec');\nhashMap.set('docker-compose','fba87b82cb0f2bfd66526631fbe928b8153e7ca701a5790d02b944df17417bb9');\nhashMap.set('dockerfile','b5faeb8f31d238e0d05a4aeebf9a837273687908ab8078b34e738bb0e369c80c');\nhashMap.set('droneci','661d2a2d7295af8dd7a1234c7090c42a89306bd574c3adf1fc67782efaad3998');\nhashMap.set('fleet','ffa222820f72c4eb4cdc4c229ae8c50433bee96f3b974f0633d5a7d1f6427c97');\nhashMap.set('flux','0e9d00a108f6e828ad207ee0213d56ecd64475df9bd87c23b0c2b2f80e00a392');\nhashMap.set('fvm','9b161df0f14bc6e536368952adf373e343630097121a913cea60ee284027fb90');\nhashMap.set('git-submodules','f4e2c6ddf2fa93241665c5176faafb358eecfcb701e7478790c4d58853ed827a');\nhashMap.set('github-actions','070b49e15d295acd9a87ad0206795e101e64295bd809765ef1ea69663b62d741');\nhashMap.set('gitlabci','a5e1e66ef461e1c1e71062f85f35a212417e23627f4b002810f9a98295d6e672');\nhashMap.set('gitlabci-include','8860a15ab516fde00694f9bd9bf56fce4addafe5a55b5ddb9a4ec477d301d351');\nhashMap.set('glasskube','93e7b9000a17efa15a1abaaf320b5af9169b1ecd828fc0c881d98570ef9d9e30');\nhashMap.set('gleam','5e9b9f5f914afe5ed7b526c06c65111e3716d2dea9b0cbe7907bbc96db1064a3');\nhashMap.set('gomod','0960350ca66c6e45ef34e7d3a6f0d54f03c7c7b81b9874b486473e18b5757d26');\nhashMap.set('gradle','14ffeecba62452d47d3796e68753da745de2614b6e5ecc346da4f0067ed4bc6e');\nhashMap.set('gradle-wrapper','73ba30c34955fab7737454b5cff9aca6d1b5607d53c17c9e13d8ad96f6eaae87');\nhashMap.set('haskell-cabal','f158b7725e3143dfd2950e3de0bbccc2a61cd7eba87f7a54c5057e01252348e2');\nhashMap.set('helm-requirements','22f61344565f87ca3512c0ba8fac32627fde8ee919b7badae07b2116e285f049');\nhashMap.set('helm-values','0aa79bb0257d0d72e54dfd2653e59bfef63b97e46c035b7443593bdf6e6382aa');\nhashMap.set('helmfile','ab63e5bc2bb381939a6b75911947e3fc79d31827423ded07f61ea1c98d95a542');\nhashMap.set('helmsman','951deeb3355da751ef39c9e932b26ea749450e32e75759e4b5fc29359e100b37');\nhashMap.set('helmv3','927798e082caf46a0da703389ba07e9e61fa73ef571ab551301b8fc6b06957d1');\nhashMap.set('hermit','abf066a64be5e5112e4da68896cf14583691e817d8bf2fc5ec65aebcc0fde53b');\nhashMap.set('homeassistant-manifest','05043c6db870cffbb6f8f3e351c025e3de227eaae0b24134b796aec46f84b65f');\nhashMap.set('homebrew','dffe954a4e18c2dc4bfdaa12222fe8ddc3395869afd5afa603fc2b6264747984');\nhashMap.set('html','81fa6c2bf2b868596584a48b949645207a2aa3081951ed99183ee50b70b77d5f');\nhashMap.set('jenkins','7fda0e7e0f3d5e18088ccb3594f727f4cfc48b064706bdaaf1a0a075b6a2cff5');\nhashMap.set('jsonnet-bundler','4cedeb0394e5c38361d1868ff45b4f34747ab8c492378b6e63dcaf1f4f3c024d');\nhashMap.set('kotlin-script','95ebc844c040ca047321b207d525220e29774a2a1fe06f9639e8353c66908564');\nhashMap.set('kubernetes','321e7d77fb3600dd4c00a86eaa1294927e7f92300b74fa2977d813dcaa3bb4de');\nhashMap.set('kustomize','11b17044d29321b3b0ad8cee40ba00cd3297b9e94648556211043f1e8635c8e7');\nhashMap.set('leiningen','c8397e376f1717c2f771ae9ea3ba6b720d2422b133cf937e762c44e42be146a2');\nhashMap.set('maven','c110b99291c2a5bc82cf7a69330275e9bbd7dc8ba3e9e987611dfcffbe002d8d');\nhashMap.set('maven-wrapper','f9df7bfca0f8ffc2eff230aec09a53c8ae3e4012ac499a38622b31df203f047a');\nhashMap.set('meteor','4636a47ba4dcfff19fe662572ef7a40d17146be3c966e00ef437e1fc8de92776');\nhashMap.set('mint','248fe4f1ea5c985921c286785792c97e06fc41f402b2d45df82f6aecd17f710e');\nhashMap.set('mise','49077fd316618114cea787f4d165dee2abd9afb7c3b52e5213a70645c35dfb70');\nhashMap.set('mix','0f79163dc2a1c896599d152be635c23beaf16812ae3d8fbfffec98c7bd0de872');\nhashMap.set('nix','9cbd96a29fe96e3df7418e422256380202f07970cf7f00b08388c181224a2b85');\nhashMap.set('nodenv','ac652c28481b001f7471f4183eac07b45d98ecbe83efc275830b0a1b2e0459b8');\nhashMap.set('npm','cd2b909d892ef3e41e51b5df5b1b0b7e34e795845b0640225e41621416c1ee7d');\nhashMap.set('nuget','fb02247c67a198ffe414a44d23c7894bd114dcc53803334f82e39479e7b27f6f');\nhashMap.set('nvm','3eb77c7b0acf6d64753de78fad2499b352719853aa6872878c40675d14152322');\nhashMap.set('ocb','032b216684c14b0954e0bb019513a2aca3faaee5748587acb668d377d7c891ca');\nhashMap.set('osgi','d6567a733ef3983112b46fdccd7ceebfcd48411104e0c6b6e714d4310db48024');\nhashMap.set('paket','0cf8ff9b040ecf28f29b23bbe2ab2544ab3c94822bc1fb53ee4df7b74f000dea');\nhashMap.set('pep621','02ba97d9d2bbd696417ea0ea26c0ed27f4e8cf296f1afdbb27ec07bcc3bd987c');\nhashMap.set('pep723','77022a0eae6a3cbb74a1e6d596db1276e379768e40448192b3fa81edd14ca73f');\nhashMap.set('pip-compile','a98dc76a002e1dc21662237f009ff8fea36236bb4e24cb82ee30c6a78f57271f');\nhashMap.set('pip_requirements','bf3a407f72abf711230247bef94ba5dc84c08a35107b0f017912fad66afa716a');\nhashMap.set('pip_setup','df18fba2bdcf48f3ca12a8f7e5cd28df31e2368d5528127277038ef4206eca79');\nhashMap.set('pipenv','9b8ac4f9432f2789f60847c80582966d5ed4f735d2f678c82416d0eb9548b4fa');\nhashMap.set('pixi','e31c397982ffa34222b061f23f3b3683f42523dd5dca45ecce2448b0ebc55ea2');\nhashMap.set('poetry','2c74e8e94c484c8bfc93ba1272078d531a52e4faaa978fc90ddb654064bb85bc');\nhashMap.set('pre-commit','760f2c291ae084db889f722390798a0e2d431ccdc3bc676e73b14901ebea19ac');\nhashMap.set('proto','412053d4550026b4ace490b46e970915b87ec1abf0b0a0c6c8c58ccf1fc16843');\nhashMap.set('pub','8e7c65dfd1999de4f7c44392e949a4d8f4701eb86df59d550e4657feb06b1872');\nhashMap.set('puppet','ba58ab689e44acc8f61c3569ab8b40fde01b8a9d3aad712708e2a419e57d8b45');\nhashMap.set('pyenv','9ede8becc97774f9040b40f4472d3e933534b596e04c360bfe0f3c6f95f25182');\nhashMap.set('quadlet','40927b98dd2bac45dba60e66b5fd0e6b84b61d02db8be536fda7b14546a4feb7');\nhashMap.set('renovate-config','890cabf707d01b58394e0bec05e3a29b73de8f0b43fcbe8a42cd26e328608d70');\nhashMap.set('ruby-version','2db2140d9eee8c555e729a4de0396fa2d78846d3149890ee12fa515bd654be97');\nhashMap.set('runtime-version','b582b168c0cc595e39010feb10f4b97a82683eb269e9598216fbb11cc186e160');\nhashMap.set('rust-toolchain','6ace53db02874d73620d2d872291839820a512a9529c42d174358c692e5db720');\nhashMap.set('sbt','e1eb5c7f0171a9bb1b6bd4a36a91039a31b6c84e0983d91d930be31a69506d9e');\nhashMap.set('scalafmt','9d36159b56835e96498af026a1fb0543200db0581681ef95ec54988f411e180f');\nhashMap.set('setup-cfg','4a3a7c812d34739c07685691e7e64c7d3127f9d7d4aff99dc45a25df97ed9745');\nhashMap.set('smithy','9641b91d065ffb63be0dd888139a0402dba41e550f8b44c592db9daf52109100');\nhashMap.set('sveltos','60dd75bb53ace31217211100d622fdb65068c6162758b6ae7103a6ce8bdc9f90');\nhashMap.set('swift','cdf063debdbf36888523ff8cec6d2d1b0ec6f49b37b2fbcd80b0d4f6a31114e1');\nhashMap.set('tekton','33948f5bdf7553909fa63744adb26da97ddf366e9499bccab1250879570267c9');\nhashMap.set('terraform','6788a8569ba9c50c763ffa2bed952a4314ae8e696c29f93d3eb7c4a12d99ce20');\nhashMap.set('terraform-version','ec8f786b9731d47f2c2fe0307caf64d7ddd83046fe7ff1f7d8423239f8b0f2aa');\nhashMap.set('terragrunt','300f8fb3c09667654412d2f5dd8ab4882e0f5d1d7a8bc39794993d2e7e58d1b7');\nhashMap.set('terragrunt-version','eea6087b33717d22ede2fc68c2f64df8390b75abe82110ed831a180648feb51d');\nhashMap.set('tflint-plugin','f423bfa2b42a2bfc0e38a33ebd4f9d452473e7ed4e7ad6384a99eb9a35d97479');\nhashMap.set('travis','f3e2f38e699c390b00ff481be5e91dceaa81609e93caf9a4214933de759c84fc');\nhashMap.set('typst','d080a79fbd961c6e21fcc505d544b7e0ff2126142acb1dcabdf6abbcd9339248');\nhashMap.set('unity3d','f13e25e115e3443f4e16cf31578acffa78fb1a5e23339680a92d8d6de6052920');\nhashMap.set('velaci','fda00ddb7cc23e9a37e0a8a253151df0a6930b4276d3e4f78cc54b9ac09af7de');\nhashMap.set('vendir','30774cd456c443be2cd236fd5b8cd1cb821f1437c6309842e34960832df3557f');\nhashMap.set('woodpecker','6110d3bec33aaeb3511d4bbfa896cec3c8e02fb04a6cff50c9ba81061c851045');\nhashMap.set('xcodegen','dad511d88a9ce1dbdde8b9731f3da7f2bdaa4ca8a083294ee58d56da62ab1683');\nhashMap.set('jsonata','416bcf61144b276b3112814c6e6d261aa29608f46fbb0516c471d35c16f8f0d7');\nhashMap.set('regex','20be5247fdc164173871a051acb0527da017d0c155c653d7563601f55e7b3ff5');"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { regEx } from "../../../util/regex.js";
|
|
|
4
4
|
import { logger } from "../../../logger/index.js";
|
|
5
5
|
import { isString } from "@sindresorhus/is";
|
|
6
6
|
import { CodeCommitClient, CreatePullRequestApprovalRuleCommand, CreatePullRequestCommand, DeleteCommentContentCommand, GetCommentsForPullRequestCommand, GetFileCommand, GetPullRequestCommand, GetRepositoryCommand, ListPullRequestsCommand, ListRepositoriesCommand, PostCommentForPullRequestCommand, PullRequestStatusEnum, UpdateCommentCommand, UpdatePullRequestDescriptionCommand, UpdatePullRequestStatusCommand, UpdatePullRequestTitleCommand } from "@aws-sdk/client-codecommit";
|
|
7
|
-
import
|
|
7
|
+
import aws4 from "aws4";
|
|
8
8
|
//#region lib/modules/platform/codecommit/codecommit-client.ts
|
|
9
9
|
let codeCommitClient;
|
|
10
10
|
function buildCodeCommitClient() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codecommit-client.js","names":[],"sources":["../../../../lib/modules/platform/codecommit/codecommit-client.ts"],"sourcesContent":["import type {\n CreatePullRequestApprovalRuleInput,\n CreatePullRequestApprovalRuleOutput,\n CreatePullRequestInput,\n CreatePullRequestOutput,\n DeleteCommentContentInput,\n DeleteCommentContentOutput,\n GetCommentsForPullRequestInput,\n GetCommentsForPullRequestOutput,\n GetFileInput,\n GetFileOutput,\n GetPullRequestInput,\n GetPullRequestOutput,\n GetRepositoryInput,\n GetRepositoryOutput,\n ListPullRequestsInput,\n ListPullRequestsOutput,\n ListRepositoriesInput,\n ListRepositoriesOutput,\n PostCommentForPullRequestInput,\n PostCommentForPullRequestOutput,\n RepositoryMetadata,\n UpdateCommentInput,\n UpdateCommentOutput,\n UpdatePullRequestDescriptionInput,\n UpdatePullRequestDescriptionOutput,\n UpdatePullRequestStatusInput,\n UpdatePullRequestStatusOutput,\n UpdatePullRequestTitleInput,\n UpdatePullRequestTitleOutput,\n} from '@aws-sdk/client-codecommit';\nimport {\n CodeCommitClient,\n CreatePullRequestApprovalRuleCommand,\n CreatePullRequestCommand,\n DeleteCommentContentCommand,\n GetCommentsForPullRequestCommand,\n GetFileCommand,\n GetPullRequestCommand,\n GetRepositoryCommand,\n ListPullRequestsCommand,\n ListRepositoriesCommand,\n PostCommentForPullRequestCommand,\n PullRequestStatusEnum,\n UpdateCommentCommand,\n UpdatePullRequestDescriptionCommand,\n UpdatePullRequestStatusCommand,\n UpdatePullRequestTitleCommand,\n} from '@aws-sdk/client-codecommit';\nimport { isString } from '@sindresorhus/is';\nimport * as aws4 from 'aws4';\nimport { REPOSITORY_UNINITIATED } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport { regEx } from '../../../util/regex.ts';\n\nlet codeCommitClient: CodeCommitClient;\n\nexport function buildCodeCommitClient(): void {\n if (!codeCommitClient) {\n codeCommitClient = new CodeCommitClient({});\n }\n\n /* v8 ignore next -- unreachable: the client was just constructed above */\n if (!codeCommitClient) {\n throw new Error('Failed to initialize codecommit client');\n }\n}\n\nexport async function deleteComment(\n commentId: string,\n): Promise<DeleteCommentContentOutput> {\n const input: DeleteCommentContentInput = {\n commentId,\n };\n const cmd = new DeleteCommentContentCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function getPrComments(\n pullRequestId: string,\n): Promise<GetCommentsForPullRequestOutput> {\n const input: GetCommentsForPullRequestInput = {\n pullRequestId,\n };\n const cmd = new GetCommentsForPullRequestCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function updateComment(\n commentId: string,\n content: string,\n): Promise<UpdateCommentOutput> {\n const input: UpdateCommentInput = {\n commentId,\n content,\n };\n const cmd = new UpdateCommentCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function createPrComment(\n pullRequestId: string,\n repositoryName: string | undefined,\n content: string,\n beforeCommitId: string,\n afterCommitId: string,\n): Promise<PostCommentForPullRequestOutput> {\n const input: PostCommentForPullRequestInput = {\n pullRequestId,\n repositoryName,\n content,\n afterCommitId,\n beforeCommitId,\n };\n const cmd = new PostCommentForPullRequestCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\n// export async function fastForwardMerge(\n// repositoryName: string,\n// sourceCommitSpecifier: string,\n// destinationReference: string\n// ): Promise<MergeBranchesByFastForwardOutput> {\n// const input: MergeBranchesByFastForwardInput = {\n// repositoryName,\n// sourceCommitSpecifier,\n// destinationCommitSpecifier: destinationReference,\n// targetBranch: destinationReference,\n// };\n// const cmd = new MergeBranchesByFastForwardCommand(input);\n// return await codeCommitClient.send(cmd);\n// }\n\n// export async function squashMerge(\n// repositoryName: string,\n// sourceCommitSpecifier: string,\n// destinationReference: string,\n// commitMessage: string | undefined\n// ): Promise<MergeBranchesBySquashOutput> {\n// const input: MergeBranchesBySquashInput = {\n// repositoryName,\n// sourceCommitSpecifier,\n// destinationCommitSpecifier: destinationReference,\n// targetBranch: destinationReference,\n// commitMessage,\n// };\n// const cmd = new MergeBranchesBySquashCommand(input);\n// return await codeCommitClient.send(cmd);\n// }\n\nexport async function updatePrStatus(\n pullRequestId: string,\n pullRequestStatus: PullRequestStatusEnum,\n): Promise<UpdatePullRequestStatusOutput> {\n const input: UpdatePullRequestStatusInput = {\n pullRequestId,\n pullRequestStatus,\n };\n const cmd = new UpdatePullRequestStatusCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function updatePrTitle(\n prNo: string,\n title: string,\n): Promise<UpdatePullRequestTitleOutput> {\n const input: UpdatePullRequestTitleInput = {\n pullRequestId: `${prNo}`,\n title,\n };\n const cmd = new UpdatePullRequestTitleCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function updatePrDescription(\n pullRequestId: string,\n description: string,\n): Promise<UpdatePullRequestDescriptionOutput> {\n const input: UpdatePullRequestDescriptionInput = {\n pullRequestId,\n description,\n };\n const cmd = new UpdatePullRequestDescriptionCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function createPr(\n title: string,\n description: string,\n sourceReference: string,\n destinationReference: string,\n repositoryName: string | undefined,\n): Promise<CreatePullRequestOutput> {\n const input: CreatePullRequestInput = {\n title,\n description,\n targets: [\n {\n sourceReference,\n destinationReference,\n repositoryName,\n },\n ],\n };\n const cmd = new CreatePullRequestCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function getFile(\n repositoryName: string | undefined,\n filePath: string,\n commitSpecifier: string | undefined,\n): Promise<GetFileOutput> {\n const input: GetFileInput = {\n repositoryName,\n filePath,\n commitSpecifier,\n };\n const cmd: GetFileCommand = new GetFileCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function listPullRequests(\n repositoryName: string,\n): Promise<ListPullRequestsOutput> {\n const input: ListPullRequestsInput = {\n repositoryName,\n pullRequestStatus: PullRequestStatusEnum.OPEN,\n };\n\n const cmd = new ListPullRequestsCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function getRepositoryInfo(\n repository: string,\n): Promise<GetRepositoryOutput> {\n const input: GetRepositoryInput = {\n repositoryName: `${repository}`,\n };\n const cmd = new GetRepositoryCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function getPr(\n pullRequestId: string,\n): Promise<GetPullRequestOutput | undefined> {\n const input: GetPullRequestInput = {\n pullRequestId,\n };\n const cmd = new GetPullRequestCommand(input);\n let res;\n try {\n res = await codeCommitClient.send(cmd);\n } catch (err) {\n logger.debug({ err }, 'failed to get PR using prId');\n }\n return res;\n}\n\nexport async function listRepositories(): Promise<ListRepositoriesOutput> {\n const input: ListRepositoriesInput = {};\n const cmd = new ListRepositoriesCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function createPrApprovalRule(\n pullRequestId: string,\n approvalRuleContent: string,\n): Promise<CreatePullRequestApprovalRuleOutput> {\n const input: CreatePullRequestApprovalRuleInput = {\n approvalRuleContent,\n approvalRuleName: 'Reviewers By Renovate',\n pullRequestId,\n };\n const cmd = new CreatePullRequestApprovalRuleCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport function getCodeCommitUrl(\n repoMetadata: RepositoryMetadata,\n repoName: string,\n): string {\n logger.debug('get code commit url');\n const env = getEnv();\n if (!env.AWS_ACCESS_KEY_ID || !env.AWS_SECRET_ACCESS_KEY) {\n if (repoMetadata.cloneUrlHttp) {\n return repoMetadata.cloneUrlHttp;\n }\n // shouldn't reach here, but just in case\n return `https://git-codecommit.${\n env.AWS_REGION ?? 'us-east-1'\n }.amazonaws.com/v1/repos/${repoName}`;\n }\n\n const signer = new aws4.RequestSigner({\n service: 'codecommit',\n host: `git-codecommit.${env.AWS_REGION ?? 'us-east-1'}.amazonaws.com`,\n method: 'GIT',\n path: `v1/repos/${repoName}`,\n });\n const dateTime = signer.getDateTime();\n\n /* v8 ignore next -- defensive: the SigV4 signer always returns a datetime string */\n if (!isString(dateTime)) {\n throw new Error(REPOSITORY_UNINITIATED);\n }\n\n const token = `${dateTime}Z${signer.signature()}`;\n\n let username = `${env.AWS_ACCESS_KEY_ID}${\n env.AWS_SESSION_TOKEN ? `%${env.AWS_SESSION_TOKEN}` : ''\n }`;\n\n // massaging username with the session token,\n /* v8 ignore next -- only hit when an AWS session token contains '/', not present in spec env */\n if (username.includes('/')) {\n username = username.replace(regEx(/\\//g), '%2F');\n }\n return `https://${username}:${token}@git-codecommit.${\n env.AWS_REGION ?? 'us-east-1'\n }.amazonaws.com/v1/repos/${repoName}`;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codecommit-client.js","names":[],"sources":["../../../../lib/modules/platform/codecommit/codecommit-client.ts"],"sourcesContent":["import type {\n CreatePullRequestApprovalRuleInput,\n CreatePullRequestApprovalRuleOutput,\n CreatePullRequestInput,\n CreatePullRequestOutput,\n DeleteCommentContentInput,\n DeleteCommentContentOutput,\n GetCommentsForPullRequestInput,\n GetCommentsForPullRequestOutput,\n GetFileInput,\n GetFileOutput,\n GetPullRequestInput,\n GetPullRequestOutput,\n GetRepositoryInput,\n GetRepositoryOutput,\n ListPullRequestsInput,\n ListPullRequestsOutput,\n ListRepositoriesInput,\n ListRepositoriesOutput,\n PostCommentForPullRequestInput,\n PostCommentForPullRequestOutput,\n RepositoryMetadata,\n UpdateCommentInput,\n UpdateCommentOutput,\n UpdatePullRequestDescriptionInput,\n UpdatePullRequestDescriptionOutput,\n UpdatePullRequestStatusInput,\n UpdatePullRequestStatusOutput,\n UpdatePullRequestTitleInput,\n UpdatePullRequestTitleOutput,\n} from '@aws-sdk/client-codecommit';\nimport {\n CodeCommitClient,\n CreatePullRequestApprovalRuleCommand,\n CreatePullRequestCommand,\n DeleteCommentContentCommand,\n GetCommentsForPullRequestCommand,\n GetFileCommand,\n GetPullRequestCommand,\n GetRepositoryCommand,\n ListPullRequestsCommand,\n ListRepositoriesCommand,\n PostCommentForPullRequestCommand,\n PullRequestStatusEnum,\n UpdateCommentCommand,\n UpdatePullRequestDescriptionCommand,\n UpdatePullRequestStatusCommand,\n UpdatePullRequestTitleCommand,\n} from '@aws-sdk/client-codecommit';\nimport { isString } from '@sindresorhus/is';\nimport aws4 from 'aws4';\nimport { REPOSITORY_UNINITIATED } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport { regEx } from '../../../util/regex.ts';\n\nlet codeCommitClient: CodeCommitClient;\n\nexport function buildCodeCommitClient(): void {\n if (!codeCommitClient) {\n codeCommitClient = new CodeCommitClient({});\n }\n\n /* v8 ignore next -- unreachable: the client was just constructed above */\n if (!codeCommitClient) {\n throw new Error('Failed to initialize codecommit client');\n }\n}\n\nexport async function deleteComment(\n commentId: string,\n): Promise<DeleteCommentContentOutput> {\n const input: DeleteCommentContentInput = {\n commentId,\n };\n const cmd = new DeleteCommentContentCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function getPrComments(\n pullRequestId: string,\n): Promise<GetCommentsForPullRequestOutput> {\n const input: GetCommentsForPullRequestInput = {\n pullRequestId,\n };\n const cmd = new GetCommentsForPullRequestCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function updateComment(\n commentId: string,\n content: string,\n): Promise<UpdateCommentOutput> {\n const input: UpdateCommentInput = {\n commentId,\n content,\n };\n const cmd = new UpdateCommentCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function createPrComment(\n pullRequestId: string,\n repositoryName: string | undefined,\n content: string,\n beforeCommitId: string,\n afterCommitId: string,\n): Promise<PostCommentForPullRequestOutput> {\n const input: PostCommentForPullRequestInput = {\n pullRequestId,\n repositoryName,\n content,\n afterCommitId,\n beforeCommitId,\n };\n const cmd = new PostCommentForPullRequestCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\n// export async function fastForwardMerge(\n// repositoryName: string,\n// sourceCommitSpecifier: string,\n// destinationReference: string\n// ): Promise<MergeBranchesByFastForwardOutput> {\n// const input: MergeBranchesByFastForwardInput = {\n// repositoryName,\n// sourceCommitSpecifier,\n// destinationCommitSpecifier: destinationReference,\n// targetBranch: destinationReference,\n// };\n// const cmd = new MergeBranchesByFastForwardCommand(input);\n// return await codeCommitClient.send(cmd);\n// }\n\n// export async function squashMerge(\n// repositoryName: string,\n// sourceCommitSpecifier: string,\n// destinationReference: string,\n// commitMessage: string | undefined\n// ): Promise<MergeBranchesBySquashOutput> {\n// const input: MergeBranchesBySquashInput = {\n// repositoryName,\n// sourceCommitSpecifier,\n// destinationCommitSpecifier: destinationReference,\n// targetBranch: destinationReference,\n// commitMessage,\n// };\n// const cmd = new MergeBranchesBySquashCommand(input);\n// return await codeCommitClient.send(cmd);\n// }\n\nexport async function updatePrStatus(\n pullRequestId: string,\n pullRequestStatus: PullRequestStatusEnum,\n): Promise<UpdatePullRequestStatusOutput> {\n const input: UpdatePullRequestStatusInput = {\n pullRequestId,\n pullRequestStatus,\n };\n const cmd = new UpdatePullRequestStatusCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function updatePrTitle(\n prNo: string,\n title: string,\n): Promise<UpdatePullRequestTitleOutput> {\n const input: UpdatePullRequestTitleInput = {\n pullRequestId: `${prNo}`,\n title,\n };\n const cmd = new UpdatePullRequestTitleCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function updatePrDescription(\n pullRequestId: string,\n description: string,\n): Promise<UpdatePullRequestDescriptionOutput> {\n const input: UpdatePullRequestDescriptionInput = {\n pullRequestId,\n description,\n };\n const cmd = new UpdatePullRequestDescriptionCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function createPr(\n title: string,\n description: string,\n sourceReference: string,\n destinationReference: string,\n repositoryName: string | undefined,\n): Promise<CreatePullRequestOutput> {\n const input: CreatePullRequestInput = {\n title,\n description,\n targets: [\n {\n sourceReference,\n destinationReference,\n repositoryName,\n },\n ],\n };\n const cmd = new CreatePullRequestCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function getFile(\n repositoryName: string | undefined,\n filePath: string,\n commitSpecifier: string | undefined,\n): Promise<GetFileOutput> {\n const input: GetFileInput = {\n repositoryName,\n filePath,\n commitSpecifier,\n };\n const cmd: GetFileCommand = new GetFileCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function listPullRequests(\n repositoryName: string,\n): Promise<ListPullRequestsOutput> {\n const input: ListPullRequestsInput = {\n repositoryName,\n pullRequestStatus: PullRequestStatusEnum.OPEN,\n };\n\n const cmd = new ListPullRequestsCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function getRepositoryInfo(\n repository: string,\n): Promise<GetRepositoryOutput> {\n const input: GetRepositoryInput = {\n repositoryName: `${repository}`,\n };\n const cmd = new GetRepositoryCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function getPr(\n pullRequestId: string,\n): Promise<GetPullRequestOutput | undefined> {\n const input: GetPullRequestInput = {\n pullRequestId,\n };\n const cmd = new GetPullRequestCommand(input);\n let res;\n try {\n res = await codeCommitClient.send(cmd);\n } catch (err) {\n logger.debug({ err }, 'failed to get PR using prId');\n }\n return res;\n}\n\nexport async function listRepositories(): Promise<ListRepositoriesOutput> {\n const input: ListRepositoriesInput = {};\n const cmd = new ListRepositoriesCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport async function createPrApprovalRule(\n pullRequestId: string,\n approvalRuleContent: string,\n): Promise<CreatePullRequestApprovalRuleOutput> {\n const input: CreatePullRequestApprovalRuleInput = {\n approvalRuleContent,\n approvalRuleName: 'Reviewers By Renovate',\n pullRequestId,\n };\n const cmd = new CreatePullRequestApprovalRuleCommand(input);\n return await codeCommitClient.send(cmd);\n}\n\nexport function getCodeCommitUrl(\n repoMetadata: RepositoryMetadata,\n repoName: string,\n): string {\n logger.debug('get code commit url');\n const env = getEnv();\n if (!env.AWS_ACCESS_KEY_ID || !env.AWS_SECRET_ACCESS_KEY) {\n if (repoMetadata.cloneUrlHttp) {\n return repoMetadata.cloneUrlHttp;\n }\n // shouldn't reach here, but just in case\n return `https://git-codecommit.${\n env.AWS_REGION ?? 'us-east-1'\n }.amazonaws.com/v1/repos/${repoName}`;\n }\n\n const signer = new aws4.RequestSigner({\n service: 'codecommit',\n host: `git-codecommit.${env.AWS_REGION ?? 'us-east-1'}.amazonaws.com`,\n method: 'GIT',\n path: `v1/repos/${repoName}`,\n });\n const dateTime = signer.getDateTime();\n\n /* v8 ignore next -- defensive: the SigV4 signer always returns a datetime string */\n if (!isString(dateTime)) {\n throw new Error(REPOSITORY_UNINITIATED);\n }\n\n const token = `${dateTime}Z${signer.signature()}`;\n\n let username = `${env.AWS_ACCESS_KEY_ID}${\n env.AWS_SESSION_TOKEN ? `%${env.AWS_SESSION_TOKEN}` : ''\n }`;\n\n // massaging username with the session token,\n /* v8 ignore next -- only hit when an AWS session token contains '/', not present in spec env */\n if (username.includes('/')) {\n username = username.replace(regEx(/\\//g), '%2F');\n }\n return `https://${username}:${token}@git-codecommit.${\n env.AWS_REGION ?? 'us-east-1'\n }.amazonaws.com/v1/repos/${repoName}`;\n}\n"],"mappings":"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"}
|
package/dist/util/markdown.js
CHANGED
|
@@ -6,7 +6,7 @@ import github from "remark-github";
|
|
|
6
6
|
function sanitizeMarkdown(markdown) {
|
|
7
7
|
let res = markdown;
|
|
8
8
|
res = res.replace(regEx(/(?<pre>\W)#(?<digit>\d)/gi), "$<pre>#​$<digit>");
|
|
9
|
-
res = res.split(regEx(/(?<skip
|
|
9
|
+
res = res.split(regEx(/(?<skip>````[\s\S]*?````|```[\s\S]*?```|`[^`\n]*?`|https?:\/\/[^\s<]+)/gi)).map((part) => part.startsWith("`") || regEx(/^https?:\/\//i).test(part) ? part : part.replace(regEx(/@/g), "@​")).join("");
|
|
10
10
|
res = res.replace(regEx(/(?<pre>[a-z]@)​/gi), "$<pre>");
|
|
11
11
|
res = res.replace(regEx(/\/compare\/@​/g), "/compare/@");
|
|
12
12
|
res = res.replace(regEx(/(?<pre>\(https:\/\/[^)]*?)\.\.\.@​/g), "$<pre>...@");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","names":[],"sources":["../../lib/util/markdown.ts"],"sourcesContent":["import { remark } from 'remark';\nimport gfm from 'remark-gfm';\nimport type { Options as RemarkGithubOptions } from 'remark-github';\nimport github from 'remark-github';\nimport { regEx } from './regex.ts';\n\n// Generic replacements/link-breakers\nexport function sanitizeMarkdown(markdown: string): string {\n let res = markdown;\n // Put a zero width space after every # followed by a digit\n res = res.replace(\n regEx(/(?<pre>\\W)#(?<digit>\\d)/gi),\n '$<pre>#​$<digit>',\n );\n // Put a zero width space after every @ symbol to prevent unintended hyperlinking,\n // but leave URLs, code blocks (triple backticks), and inline code spans untouched\n res = res\n .split(regEx(/(?<skip
|
|
1
|
+
{"version":3,"file":"markdown.js","names":[],"sources":["../../lib/util/markdown.ts"],"sourcesContent":["import { remark } from 'remark';\nimport gfm from 'remark-gfm';\nimport type { Options as RemarkGithubOptions } from 'remark-github';\nimport github from 'remark-github';\nimport { regEx } from './regex.ts';\n\n// Generic replacements/link-breakers\nexport function sanitizeMarkdown(markdown: string): string {\n let res = markdown;\n // Put a zero width space after every # followed by a digit\n res = res.replace(\n regEx(/(?<pre>\\W)#(?<digit>\\d)/gi),\n '$<pre>#​$<digit>',\n );\n // Put a zero width space after every @ symbol to prevent unintended hyperlinking,\n // but leave URLs, code blocks (triple or quadruple backticks), and inline code spans untouched\n res = res\n .split(\n regEx(\n /(?<skip>````[\\s\\S]*?````|```[\\s\\S]*?```|`[^`\\n]*?`|https?:\\/\\/[^\\s<]+)/gi,\n ),\n )\n .map((part) =>\n part.startsWith('`') || regEx(/^https?:\\/\\//i).test(part)\n ? part\n : part.replace(regEx(/@/g), '@​'),\n )\n .join('');\n res = res.replace(regEx(/(?<pre>[a-z]@)​/gi), '$<pre>');\n res = res.replace(regEx(/\\/compare\\/@​/g), '/compare/@');\n res = res.replace(\n regEx(/(?<pre>\\(https:\\/\\/[^)]*?)\\.\\.\\.@​/g),\n '$<pre>...@',\n );\n res = res.replace(\n regEx(/(?<pre>[\\s(])#(?<digits>\\d+)(?<post>[)\\s]?)/g),\n '$<pre>#​$<digits>$<post>',\n );\n // convert escaped backticks back to `\n const backTickRe = regEx(/`(?<content>[^/]*?)`/g);\n res = res.replace(backTickRe, '`$<content>`');\n res = res.replace(regEx(/`#​(?<digits>\\d+)`/g), '`#$<digits>`');\n res = res.replace(\n regEx(/(?<before>[^\\n]\\n)(?<title>#.*)/g),\n '$<before>\\n$<title>',\n );\n return res;\n}\n\n/**\n *\n * @param content content to process\n * @param options github options\n * @returns linkified content\n */\nexport async function linkify(\n content: string,\n options: RemarkGithubOptions,\n): Promise<string> {\n // https://github.com/syntax-tree/mdast-util-to-markdown#optionsbullet\n const output = await remark()\n .use({ settings: { bullet: '-' } })\n .use(gfm)\n .use(github, { mentionStrong: false, ...options })\n .process(content);\n return output.toString();\n}\n"],"mappings":";;;;;AAOA,SAAgB,iBAAiB,UAA0B;CACzD,IAAI,MAAM;CAEV,MAAM,IAAI,QACR,MAAM,2BAA2B,GACjC,wBACF;CAGA,MAAM,IACH,MACC,MACE,0EACF,CACF,CAAC,CACA,KAAK,SACJ,KAAK,WAAW,GAAG,KAAK,MAAM,eAAe,CAAC,CAAC,KAAK,IAAI,IACpD,OACA,KAAK,QAAQ,MAAM,IAAI,GAAG,UAAU,CAC1C,CAAC,CACA,KAAK,EAAE;CACV,MAAM,IAAI,QAAQ,MAAM,yBAAyB,GAAG,QAAQ;CAC5D,MAAM,IAAI,QAAQ,MAAM,sBAAsB,GAAG,YAAY;CAC7D,MAAM,IAAI,QACR,MAAM,2CAA2C,GACjD,YACF;CACA,MAAM,IAAI,QACR,MAAM,8CAA8C,GACpD,gCACF;CAEA,MAAM,aAAa,MAAM,iCAAiC;CAC1D,MAAM,IAAI,QAAQ,YAAY,cAAc;CAC5C,MAAM,IAAI,QAAQ,MAAM,2BAA2B,GAAG,cAAc;CACpE,MAAM,IAAI,QACR,MAAM,kCAAkC,GACxC,qBACF;CACA,OAAO;AACT;;;;;;;AAQA,eAAsB,QACpB,SACA,SACiB;CAOjB,QAAO,MALc,OAAO,CAAC,CAC1B,IAAI,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAClC,IAAI,GAAG,CAAC,CACR,IAAI,QAAQ;EAAE,eAAe;EAAO,GAAG;CAAQ,CAAC,CAAC,CACjD,QAAQ,OAAO,EAAA,CACJ,SAAS;AACzB"}
|
|
@@ -66,7 +66,7 @@ function unfoldBaseBranches(defaultBranch, baseBranchPatterns) {
|
|
|
66
66
|
const isAllowedPred = getRegexPredicate(baseBranchPattern);
|
|
67
67
|
if (isAllowedPred) {
|
|
68
68
|
const matchingBranches = allBranches.filter(isAllowedPred);
|
|
69
|
-
logger.debug(`
|
|
69
|
+
logger.debug(`baseBranchPatterns regex "${baseBranchPattern}" matches [${matchingBranches.join()}]`);
|
|
70
70
|
unfoldedList.push(...matchingBranches);
|
|
71
71
|
} else if (baseBranchPattern === "$default") {
|
|
72
72
|
logger.debug(`baseBranchPatterns "$default" matches "${defaultBranch}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/workers/repository/process/index.ts"],"sourcesContent":["// TODO #22198\nimport { GlobalConfig } from '../../../config/global.ts';\nimport { mergeChildConfig } from '../../../config/index.ts';\nimport { migrateAndValidate } from '../../../config/migrate-validate.ts';\nimport { resolveConfigPresets } from '../../../config/presets/index.ts';\nimport type { RenovateConfig } from '../../../config/types.ts';\nimport { CONFIG_VALIDATION } from '../../../constants/error-messages.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { ATTR_RENOVATE_SPLIT } from '../../../instrumentation/types.ts';\nimport { addMeta, logger, removeMeta } from '../../../logger/index.ts';\nimport type { PackageFile } from '../../../modules/manager/types.ts';\nimport { platform } from '../../../modules/platform/index.ts';\nimport { scm } from '../../../modules/platform/scm.ts';\nimport { getCache } from '../../../util/cache/repository/index.ts';\nimport { clone } from '../../../util/clone.ts';\nimport { getBranchList } from '../../../util/git/index.ts';\nimport { addSplit } from '../../../util/split.ts';\nimport { getRegexPredicate } from '../../../util/string-match.ts';\nimport type { BranchConfig } from '../../types.ts';\nimport { readDashboardBody } from '../dependency-dashboard.ts';\nimport type { ExtractResult } from './extract-update.ts';\nimport { extract, lookup, update } from './extract-update.ts';\nimport type { WriteUpdateResult } from './write.ts';\n\nexport async function getBaseBranchConfig(\n baseBranch: string,\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n logger.debug(`baseBranch: ${baseBranch}`);\n\n let baseBranchConfig: RenovateConfig = clone(config);\n\n if (\n config.useBaseBranchConfig === 'merge' &&\n baseBranch !== config.defaultBranch\n ) {\n logger.debug(\n { baseBranch },\n `Merging config from base branch because useBaseBranchConfig=merge`,\n );\n\n // Retrieve config file name autodetected for this repo\n const cache = getCache();\n // TODO: types (#22198)\n const configFileName = cache.configFileName!;\n\n try {\n baseBranchConfig = await platform.getJsonFile(\n configFileName,\n config.repository,\n baseBranch,\n );\n logger.debug({ config: baseBranchConfig }, 'Base branch config raw');\n } catch {\n logger.error(\n { configFileName, baseBranch },\n `Error fetching config file from base branch - possible config name mismatch between branches?`,\n );\n\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = 'Error fetching config file';\n error.validationMessage = `Error fetching config file \\`${configFileName}\\` from branch \\`${baseBranch}\\``;\n throw error;\n }\n\n baseBranchConfig = await migrateAndValidate(config, baseBranchConfig);\n if (baseBranchConfig.errors?.length) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = configFileName;\n error.validationError = `The renovate configuration file of branch ${baseBranch} contains some invalid settings`;\n error.validationMessage = baseBranchConfig.errors\n .map((e) => e.message)\n .join(', ');\n throw error;\n }\n\n ({ config: baseBranchConfig } = await resolveConfigPresets(\n baseBranchConfig,\n config,\n ));\n baseBranchConfig = mergeChildConfig(config, baseBranchConfig);\n\n // istanbul ignore if\n if (config.printConfig) {\n logger.info(\n { config: baseBranchConfig },\n 'Base branch config after merge',\n );\n }\n\n // baseBranches value should be based off the default branch\n baseBranchConfig.baseBranchPatterns = config.baseBranchPatterns;\n baseBranchConfig.baseBranches = config.baseBranches;\n }\n\n if (isMultiBaseBranch(config)) {\n baseBranchConfig.branchPrefix += `${baseBranch}-`;\n baseBranchConfig.hasBaseBranches = true;\n }\n\n baseBranchConfig = mergeChildConfig(baseBranchConfig, { baseBranch });\n\n return baseBranchConfig;\n}\n\nfunction unfoldBaseBranches(\n defaultBranch: string,\n baseBranchPatterns: string[],\n): string[] {\n const unfoldedList: string[] = [];\n\n const allBranches = getBranchList();\n for (const baseBranchPattern of baseBranchPatterns) {\n const isAllowedPred = getRegexPredicate(baseBranchPattern);\n if (isAllowedPred) {\n const matchingBranches = allBranches.filter(isAllowedPred);\n logger.debug(\n `baseBranchePatterns regex \"${baseBranchPattern}\" matches [${matchingBranches.join()}]`,\n );\n unfoldedList.push(...matchingBranches);\n } else if (baseBranchPattern === '$default') {\n logger.debug(`baseBranchPatterns \"$default\" matches \"${defaultBranch}\"`);\n unfoldedList.push(defaultBranch);\n } else {\n unfoldedList.push(baseBranchPattern);\n }\n }\n\n return [...new Set(unfoldedList)];\n}\n\nexport function isMultiBaseBranch(config: RenovateConfig): boolean {\n if (!config.baseBranchPatterns?.length) {\n return false;\n }\n\n return (\n config.baseBranchPatterns.length > 1 ||\n config.baseBranchPatterns[0].startsWith('/')\n );\n}\n\nexport async function extractDependencies(\n config: RenovateConfig,\n overwriteCache = true,\n): Promise<ExtractResult> {\n await readDashboardBody(config);\n let res: ExtractResult = {\n branches: [],\n branchList: [],\n packageFiles: {},\n };\n if (\n GlobalConfig.get('platform') !== 'local' &&\n config.baseBranchPatterns?.length\n ) {\n config.baseBranches = unfoldBaseBranches(\n config.defaultBranch!,\n config.baseBranchPatterns,\n );\n logger.debug({ baseBranches: config.baseBranches }, 'baseBranches');\n const extracted: Record<string, Record<string, PackageFile[]>> = {};\n await instrument(\n 'extract',\n async () => {\n for (const baseBranch of config.baseBranches!) {\n addMeta({ baseBranch });\n\n if (scm.syncForkWithUpstream) {\n await scm.syncForkWithUpstream(baseBranch);\n }\n if (await scm.branchExists(baseBranch)) {\n const baseBranchConfig = await getBaseBranchConfig(\n baseBranch,\n config,\n );\n extracted[baseBranch] = await extract(\n baseBranchConfig,\n overwriteCache,\n );\n } else {\n logger.warn(\n { baseBranch },\n 'Base branch does not exist - skipping',\n );\n }\n }\n },\n {\n attributes: {\n [ATTR_RENOVATE_SPLIT]: 'extract',\n },\n },\n );\n addSplit('extract');\n await instrument(\n 'lookup',\n async () => {\n for (const baseBranch of config.baseBranches!) {\n if (await scm.branchExists(baseBranch)) {\n addMeta({ baseBranch });\n const baseBranchConfig = await getBaseBranchConfig(\n baseBranch,\n config,\n );\n const packageFiles = extracted[baseBranch];\n const baseBranchRes = await lookup(baseBranchConfig, packageFiles);\n res.branches = res.branches.concat(baseBranchRes?.branches);\n res.branchList = res.branchList.concat(baseBranchRes?.branchList);\n if (!res.packageFiles || !Object.keys(res.packageFiles).length) {\n // Use the first branch\n res.packageFiles = baseBranchRes?.packageFiles;\n }\n }\n }\n },\n {\n attributes: {\n [ATTR_RENOVATE_SPLIT]: 'lookup',\n },\n },\n );\n removeMeta(['baseBranch']);\n } else {\n logger.debug('No baseBranches');\n const packageFiles = await instrument(\n 'extract',\n async () => await extract(config, overwriteCache),\n {\n attributes: {\n [ATTR_RENOVATE_SPLIT]: 'extract',\n },\n },\n );\n addSplit('extract');\n if (GlobalConfig.get('dryRun') === 'extract') {\n res.packageFiles = packageFiles;\n logger.info({ packageFiles }, 'Extracted dependencies');\n return res;\n }\n res = await instrument(\n 'lookup',\n async () => await lookup(config, packageFiles),\n {\n attributes: {\n [ATTR_RENOVATE_SPLIT]: 'lookup',\n },\n },\n );\n }\n addSplit('lookup');\n return res;\n}\n\nexport function updateRepo(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult> {\n logger.debug('processRepo()');\n\n return update(config, branches);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/workers/repository/process/index.ts"],"sourcesContent":["// TODO #22198\nimport { GlobalConfig } from '../../../config/global.ts';\nimport { mergeChildConfig } from '../../../config/index.ts';\nimport { migrateAndValidate } from '../../../config/migrate-validate.ts';\nimport { resolveConfigPresets } from '../../../config/presets/index.ts';\nimport type { RenovateConfig } from '../../../config/types.ts';\nimport { CONFIG_VALIDATION } from '../../../constants/error-messages.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { ATTR_RENOVATE_SPLIT } from '../../../instrumentation/types.ts';\nimport { addMeta, logger, removeMeta } from '../../../logger/index.ts';\nimport type { PackageFile } from '../../../modules/manager/types.ts';\nimport { platform } from '../../../modules/platform/index.ts';\nimport { scm } from '../../../modules/platform/scm.ts';\nimport { getCache } from '../../../util/cache/repository/index.ts';\nimport { clone } from '../../../util/clone.ts';\nimport { getBranchList } from '../../../util/git/index.ts';\nimport { addSplit } from '../../../util/split.ts';\nimport { getRegexPredicate } from '../../../util/string-match.ts';\nimport type { BranchConfig } from '../../types.ts';\nimport { readDashboardBody } from '../dependency-dashboard.ts';\nimport type { ExtractResult } from './extract-update.ts';\nimport { extract, lookup, update } from './extract-update.ts';\nimport type { WriteUpdateResult } from './write.ts';\n\nexport async function getBaseBranchConfig(\n baseBranch: string,\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n logger.debug(`baseBranch: ${baseBranch}`);\n\n let baseBranchConfig: RenovateConfig = clone(config);\n\n if (\n config.useBaseBranchConfig === 'merge' &&\n baseBranch !== config.defaultBranch\n ) {\n logger.debug(\n { baseBranch },\n `Merging config from base branch because useBaseBranchConfig=merge`,\n );\n\n // Retrieve config file name autodetected for this repo\n const cache = getCache();\n // TODO: types (#22198)\n const configFileName = cache.configFileName!;\n\n try {\n baseBranchConfig = await platform.getJsonFile(\n configFileName,\n config.repository,\n baseBranch,\n );\n logger.debug({ config: baseBranchConfig }, 'Base branch config raw');\n } catch {\n logger.error(\n { configFileName, baseBranch },\n `Error fetching config file from base branch - possible config name mismatch between branches?`,\n );\n\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = 'Error fetching config file';\n error.validationMessage = `Error fetching config file \\`${configFileName}\\` from branch \\`${baseBranch}\\``;\n throw error;\n }\n\n baseBranchConfig = await migrateAndValidate(config, baseBranchConfig);\n if (baseBranchConfig.errors?.length) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = configFileName;\n error.validationError = `The renovate configuration file of branch ${baseBranch} contains some invalid settings`;\n error.validationMessage = baseBranchConfig.errors\n .map((e) => e.message)\n .join(', ');\n throw error;\n }\n\n ({ config: baseBranchConfig } = await resolveConfigPresets(\n baseBranchConfig,\n config,\n ));\n baseBranchConfig = mergeChildConfig(config, baseBranchConfig);\n\n // istanbul ignore if\n if (config.printConfig) {\n logger.info(\n { config: baseBranchConfig },\n 'Base branch config after merge',\n );\n }\n\n // baseBranches value should be based off the default branch\n baseBranchConfig.baseBranchPatterns = config.baseBranchPatterns;\n baseBranchConfig.baseBranches = config.baseBranches;\n }\n\n if (isMultiBaseBranch(config)) {\n baseBranchConfig.branchPrefix += `${baseBranch}-`;\n baseBranchConfig.hasBaseBranches = true;\n }\n\n baseBranchConfig = mergeChildConfig(baseBranchConfig, { baseBranch });\n\n return baseBranchConfig;\n}\n\nfunction unfoldBaseBranches(\n defaultBranch: string,\n baseBranchPatterns: string[],\n): string[] {\n const unfoldedList: string[] = [];\n\n const allBranches = getBranchList();\n for (const baseBranchPattern of baseBranchPatterns) {\n const isAllowedPred = getRegexPredicate(baseBranchPattern);\n if (isAllowedPred) {\n const matchingBranches = allBranches.filter(isAllowedPred);\n logger.debug(\n `baseBranchPatterns regex \"${baseBranchPattern}\" matches [${matchingBranches.join()}]`,\n );\n unfoldedList.push(...matchingBranches);\n } else if (baseBranchPattern === '$default') {\n logger.debug(`baseBranchPatterns \"$default\" matches \"${defaultBranch}\"`);\n unfoldedList.push(defaultBranch);\n } else {\n unfoldedList.push(baseBranchPattern);\n }\n }\n\n return [...new Set(unfoldedList)];\n}\n\nexport function isMultiBaseBranch(config: RenovateConfig): boolean {\n if (!config.baseBranchPatterns?.length) {\n return false;\n }\n\n return (\n config.baseBranchPatterns.length > 1 ||\n config.baseBranchPatterns[0].startsWith('/')\n );\n}\n\nexport async function extractDependencies(\n config: RenovateConfig,\n overwriteCache = true,\n): Promise<ExtractResult> {\n await readDashboardBody(config);\n let res: ExtractResult = {\n branches: [],\n branchList: [],\n packageFiles: {},\n };\n if (\n GlobalConfig.get('platform') !== 'local' &&\n config.baseBranchPatterns?.length\n ) {\n config.baseBranches = unfoldBaseBranches(\n config.defaultBranch!,\n config.baseBranchPatterns,\n );\n logger.debug({ baseBranches: config.baseBranches }, 'baseBranches');\n const extracted: Record<string, Record<string, PackageFile[]>> = {};\n await instrument(\n 'extract',\n async () => {\n for (const baseBranch of config.baseBranches!) {\n addMeta({ baseBranch });\n\n if (scm.syncForkWithUpstream) {\n await scm.syncForkWithUpstream(baseBranch);\n }\n if (await scm.branchExists(baseBranch)) {\n const baseBranchConfig = await getBaseBranchConfig(\n baseBranch,\n config,\n );\n extracted[baseBranch] = await extract(\n baseBranchConfig,\n overwriteCache,\n );\n } else {\n logger.warn(\n { baseBranch },\n 'Base branch does not exist - skipping',\n );\n }\n }\n },\n {\n attributes: {\n [ATTR_RENOVATE_SPLIT]: 'extract',\n },\n },\n );\n addSplit('extract');\n await instrument(\n 'lookup',\n async () => {\n for (const baseBranch of config.baseBranches!) {\n if (await scm.branchExists(baseBranch)) {\n addMeta({ baseBranch });\n const baseBranchConfig = await getBaseBranchConfig(\n baseBranch,\n config,\n );\n const packageFiles = extracted[baseBranch];\n const baseBranchRes = await lookup(baseBranchConfig, packageFiles);\n res.branches = res.branches.concat(baseBranchRes?.branches);\n res.branchList = res.branchList.concat(baseBranchRes?.branchList);\n if (!res.packageFiles || !Object.keys(res.packageFiles).length) {\n // Use the first branch\n res.packageFiles = baseBranchRes?.packageFiles;\n }\n }\n }\n },\n {\n attributes: {\n [ATTR_RENOVATE_SPLIT]: 'lookup',\n },\n },\n );\n removeMeta(['baseBranch']);\n } else {\n logger.debug('No baseBranches');\n const packageFiles = await instrument(\n 'extract',\n async () => await extract(config, overwriteCache),\n {\n attributes: {\n [ATTR_RENOVATE_SPLIT]: 'extract',\n },\n },\n );\n addSplit('extract');\n if (GlobalConfig.get('dryRun') === 'extract') {\n res.packageFiles = packageFiles;\n logger.info({ packageFiles }, 'Extracted dependencies');\n return res;\n }\n res = await instrument(\n 'lookup',\n async () => await lookup(config, packageFiles),\n {\n attributes: {\n [ATTR_RENOVATE_SPLIT]: 'lookup',\n },\n },\n );\n }\n addSplit('lookup');\n return res;\n}\n\nexport function updateRepo(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult> {\n logger.debug('processRepo()');\n\n return update(config, branches);\n}\n"],"mappings":"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"}
|
|
@@ -14,9 +14,9 @@ import { datasourceToOsvEcosystem } from "../../../util/vulnerability/ecosystem.
|
|
|
14
14
|
import { isEmptyArray, isNonEmptyString, isNullOrUndefined, isTruthy } from "@sindresorhus/is";
|
|
15
15
|
import { z } from "zod/v4";
|
|
16
16
|
import { OsvOffline } from "@renovatebot/osv-offline";
|
|
17
|
-
import
|
|
17
|
+
import aeCvss from "ae-cvss-calculator";
|
|
18
18
|
//#region lib/workers/repository/process/vulnerabilities.ts
|
|
19
|
-
const { fromVector } =
|
|
19
|
+
const { fromVector } = aeCvss;
|
|
20
20
|
var Vulnerabilities = class Vulnerabilities {
|
|
21
21
|
static osvOffline;
|
|
22
22
|
osvOffline;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vulnerabilities.js","names":["p.all","getVersioning"],"sources":["../../../../lib/workers/repository/process/vulnerabilities.ts"],"sourcesContent":["// TODO #22198\nimport type { Ecosystem, Osv } from '@renovatebot/osv-offline';\nimport { OsvOffline } from '@renovatebot/osv-offline';\nimport {\n isEmptyArray,\n isNonEmptyString,\n isNullOrUndefined,\n isTruthy,\n} from '@sindresorhus/is';\nimport type { CvssVector } from 'ae-cvss-calculator';\nimport * as _aeCvss from 'ae-cvss-calculator';\nimport { z } from 'zod/v4';\nimport { getManagerConfig, mergeChildConfig } from '../../../config/index.ts';\nimport type { PackageRule, RenovateConfig } from '../../../config/types.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { getDefaultVersioning } from '../../../modules/datasource/common.ts';\nimport type {\n PackageDependency,\n PackageFile,\n} from '../../../modules/manager/types.ts';\nimport type { VersioningApi } from '../../../modules/versioning/index.ts';\nimport { get as getVersioning } from '../../../modules/versioning/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { sanitizeMarkdown } from '../../../util/markdown.ts';\nimport * as p from '../../../util/promises.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { titleCase } from '../../../util/string.ts';\nimport { datasourceToOsvEcosystem } from '../../../util/vulnerability/ecosystem.ts';\nimport {\n getFixedVersionConstraint,\n getLastAffectedVersionConstraint,\n} from '../../../util/vulnerability/utils.ts';\nimport type {\n DependencyVulnerabilities,\n SeverityDetails,\n Vulnerability,\n} from './types.ts';\n\nconst { fromVector } = (_aeCvss as unknown as { default: typeof _aeCvss })\n .default;\n\nexport class Vulnerabilities {\n private static osvOffline: Promise<OsvOffline> | undefined;\n\n private osvOffline: OsvOffline;\n\n private static readonly datasourceEcosystemMap = datasourceToOsvEcosystem;\n\n private constructor(osvOffline: OsvOffline) {\n this.osvOffline = osvOffline;\n }\n\n private static initialize(): Promise<OsvOffline> {\n // no async here, so osv promise will only be created once\n Vulnerabilities.osvOffline ??= OsvOffline.create();\n return Vulnerabilities.osvOffline;\n }\n\n static async create(): Promise<Vulnerabilities> {\n // intialize osv only once\n const osvOffline = await Vulnerabilities.initialize();\n\n const instance = new Vulnerabilities(osvOffline);\n return instance;\n }\n\n async appendVulnerabilityPackageRules(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n ): Promise<void> {\n const dependencyVulnerabilities = await this.fetchDependencyVulnerabilities(\n config,\n packageFiles,\n );\n\n config.packageRules ??= [];\n for (const {\n vulnerabilities,\n versioningApi,\n } of dependencyVulnerabilities) {\n const groupPackageRules: PackageRule[] = [];\n for (const vulnerability of vulnerabilities) {\n const rule = this.vulnerabilityToPackageRules(vulnerability);\n if (isNullOrUndefined(rule)) {\n continue;\n }\n groupPackageRules.push(rule);\n }\n this.sortByFixedVersion(groupPackageRules, versioningApi);\n\n config.packageRules.push(...groupPackageRules);\n }\n }\n\n async fetchVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n ): Promise<Vulnerability[]> {\n const groups = await this.fetchDependencyVulnerabilities(\n config,\n packageFiles,\n );\n return groups.flatMap((group) => group.vulnerabilities);\n }\n\n private async fetchDependencyVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n ): Promise<DependencyVulnerabilities[]> {\n const managers = Object.keys(packageFiles);\n const allManagerJobs = managers.map((manager) =>\n this.fetchManagerVulnerabilities(config, packageFiles, manager),\n );\n return (await Promise.all(allManagerJobs)).flat();\n }\n\n private async fetchManagerVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n manager: string,\n ): Promise<DependencyVulnerabilities[]> {\n const managerConfig = getManagerConfig(config, manager);\n const queue = packageFiles[manager].map(\n (pFile) => (): Promise<DependencyVulnerabilities[]> =>\n this.fetchManagerPackageFileVulnerabilities(managerConfig, pFile),\n );\n logger.trace(\n { manager, queueLength: queue.length },\n 'fetchManagerVulnerabilities starting',\n );\n const result = (await p.all(queue)).flat();\n logger.trace({ manager }, 'fetchManagerVulnerabilities finished');\n return result;\n }\n\n private async fetchManagerPackageFileVulnerabilities(\n managerConfig: RenovateConfig,\n pFile: PackageFile,\n ): Promise<DependencyVulnerabilities[]> {\n const { packageFile } = pFile;\n const packageFileConfig = mergeChildConfig(managerConfig, pFile);\n const { manager } = packageFileConfig;\n const queue = pFile.deps.map(\n (dep) => (): Promise<DependencyVulnerabilities | null> =>\n this.fetchDependencyVulnerability(packageFileConfig, dep),\n );\n logger.trace(\n { manager, packageFile, queueLength: queue.length },\n 'fetchManagerPackageFileVulnerabilities starting with concurrency',\n );\n\n const result = await p.all(queue);\n logger.trace(\n { packageFile },\n 'fetchManagerPackageFileVulnerabilities finished',\n );\n\n return result.filter(isTruthy);\n }\n\n private async fetchDependencyVulnerability(\n packageFileConfig: RenovateConfig & PackageFile,\n dep: PackageDependency,\n ): Promise<DependencyVulnerabilities | null> {\n const ecosystem = Vulnerabilities.datasourceEcosystemMap[dep.datasource!];\n if (!ecosystem) {\n logger.trace(`Cannot map datasource ${dep.datasource!} to OSV ecosystem`);\n return null;\n }\n\n const packageName = dep.packageName!;\n let osvPackageName = packageName;\n let depType: string | undefined;\n if (ecosystem === 'PyPI') {\n // https://peps.python.org/pep-0503/#normalized-names\n osvPackageName = osvPackageName\n .toLowerCase()\n .replace(regEx(/[_.-]+/g), '-');\n } else if (ecosystem === 'Go' && packageName === 'go') {\n if (dep.depType !== 'toolchain') {\n // The `go` directive is source compatibility, not the build toolchain, so we skip it\n return null;\n }\n osvPackageName = 'stdlib';\n depType = dep.depType;\n }\n\n try {\n const osvVulnerabilities = await instrument(\n 'get OSV vulnerabilities',\n () => this.osvOffline.getVulnerabilities(ecosystem, osvPackageName),\n {\n attributes: {\n osvPackageName,\n ecosystem,\n },\n },\n );\n if (\n isNullOrUndefined(osvVulnerabilities) ||\n isEmptyArray(osvVulnerabilities)\n ) {\n logger.trace(\n `No vulnerabilities found in OSV database for ${packageName}`,\n );\n return null;\n }\n\n const depVersion =\n dep.lockedVersion ?? dep.currentVersion ?? dep.currentValue!;\n\n const versioning = dep.versioning ?? getDefaultVersioning(dep.datasource);\n const versioningApi = getVersioning(versioning);\n\n if (!versioningApi.isVersion(depVersion)) {\n logger.debug(\n `Skipping vulnerability lookup for package ${packageName} due to unsupported version ${depVersion}`,\n );\n return null;\n }\n\n const vulnerabilities: Vulnerability[] = [];\n for (const osvVulnerability of osvVulnerabilities) {\n if (osvVulnerability.withdrawn) {\n logger.trace(\n `Skipping withdrawn vulnerability ${osvVulnerability.id}`,\n );\n continue;\n }\n\n this.skipMaliciousPackages(\n ecosystem,\n osvPackageName,\n depVersion,\n versioningApi,\n dep,\n packageFileConfig.manager,\n packageFileConfig.packageFile,\n osvVulnerability,\n );\n\n for (const affected of coerceArray(osvVulnerability.affected)) {\n const isVulnerable = this.isPackageVulnerable(\n ecosystem,\n osvPackageName,\n depVersion,\n affected,\n versioningApi,\n );\n if (!isVulnerable) {\n continue;\n }\n\n logger.debug(\n `Vulnerability ${osvVulnerability.id} affects ${packageName} ${depVersion}`,\n );\n const fixedVersion = this.getFixedVersion(\n ecosystem,\n depVersion,\n affected,\n versioningApi,\n );\n\n vulnerabilities.push({\n packageName,\n osvPackageName,\n vulnerability: osvVulnerability,\n affected,\n depType,\n depVersion,\n fixedVersion,\n datasource: dep.datasource!,\n packageFileConfig,\n });\n }\n }\n\n return { vulnerabilities, versioningApi };\n } catch (err) {\n logger.warn(\n { err, packageName },\n 'Error fetching vulnerability information for package',\n );\n return null;\n }\n }\n\n private skipMaliciousPackages(\n ecosystem: Ecosystem,\n osvPackageName: string,\n depVersion: string,\n versioningApi: VersioningApi,\n dep: PackageDependency,\n manager: string | undefined,\n packageFile: string,\n osvVulnerability: Osv.Vulnerability,\n ): void {\n // the OpenSSF's Malicious Packages (https://github.com/ossf/malicious-packages) is a source of advisories through osv.dev, which takes various sources of advisories, and will re-publish them with more specific information about their malicious usage\n if (osvVulnerability.id.startsWith('MAL-')) {\n // is the current dependency vulnerable?\n for (const affected of coerceArray(osvVulnerability.affected)) {\n // is the current dependency vulnerable?\n const isVulnerable = this.isPackageVulnerable(\n ecosystem,\n osvPackageName,\n depVersion,\n affected,\n versioningApi,\n );\n\n if (isVulnerable) {\n logger.debug(\n {\n packageFile: packageFile,\n depName: dep.depName,\n packageName: dep.packageName,\n manager: manager,\n datasource: dep.datasource,\n currentVersion: depVersion,\n },\n `Marking ${dep.depName} as skipReason=malicious-version-in-use, as it is affected by ${osvVulnerability.id}`,\n );\n dep.skipReason = 'malicious-version-in-use';\n dep.skipStage = 'lookup';\n }\n\n // or are any of the updates vulnerable?\n for (const update of coerceArray(dep.updates)) {\n const newVersion = update.newVersion ?? update.newValue!;\n\n const isUpdateVulnerable = this.isPackageVulnerable(\n ecosystem,\n osvPackageName,\n newVersion,\n affected,\n versioningApi,\n );\n\n if (isUpdateVulnerable) {\n logger.debug(\n {\n packageFile: packageFile,\n depName: dep.depName,\n packageName: dep.packageName,\n manager: manager,\n datasource: dep.datasource,\n currentVersion: depVersion,\n newVersion,\n },\n `Marking ${dep.depName}'s update to ${newVersion} as skipReason=malicious-update-proposed, as it is affected by ${osvVulnerability.id}`,\n );\n dep.skipReason = 'malicious-update-proposed';\n dep.skipStage = 'lookup';\n }\n }\n }\n }\n }\n\n private sortByFixedVersion(\n packageRules: PackageRule[],\n versioningApi: VersioningApi,\n ): void {\n const versionsCleaned: Record<string, string> = {};\n for (const rule of packageRules) {\n const version = rule.allowedVersions!;\n versionsCleaned[version] = version.replace(regEx(/[(),=> ]+/g), '');\n }\n packageRules.sort((a, b) =>\n versioningApi.sortVersions(\n versionsCleaned[a.allowedVersions!],\n versionsCleaned[b.allowedVersions!],\n ),\n );\n }\n\n // https://ossf.github.io/osv-schema/#affectedrangesevents-fields\n private sortEvents(\n events: Osv.Event[],\n versioningApi: VersioningApi,\n ): Osv.Event[] {\n const sortedCopy: Osv.Event[] = [];\n let zeroEvent: Osv.Event | null = null;\n\n for (const event of events) {\n if (event.introduced === '0') {\n zeroEvent = event;\n } else if (versioningApi.isVersion(Object.values(event)[0])) {\n sortedCopy.push(event);\n } else {\n logger.debug({ event }, 'Skipping OSV event with invalid version');\n }\n }\n\n sortedCopy.sort((a, b) =>\n // no pre-processing, as there are only very few values to sort\n versioningApi.sortVersions(Object.values(a)[0], Object.values(b)[0]),\n );\n\n if (zeroEvent) {\n sortedCopy.unshift(zeroEvent);\n }\n\n return sortedCopy;\n }\n\n private isPackageAffected(\n ecosystem: Ecosystem,\n osvPackageName: string,\n affected: Osv.Affected,\n ): boolean {\n const pkg = affected.package;\n if (pkg?.name !== osvPackageName) {\n return false;\n }\n\n // Match exact ecosystems and OSV sub-ecosystems (e.g. Packagist:https://packages.drupal.org/8).\n return (\n pkg.ecosystem === ecosystem || pkg.ecosystem.startsWith(`${ecosystem}:`)\n );\n }\n\n private includedInVersions(\n depVersion: string,\n affected: Osv.Affected,\n ): boolean {\n return !!affected.versions?.includes(depVersion);\n }\n\n private includedInRanges(\n depVersion: string,\n affected: Osv.Affected,\n versioningApi: VersioningApi,\n ): boolean {\n for (const range of coerceArray(affected.ranges)) {\n if (range.type === 'GIT') {\n continue;\n }\n\n let vulnerable = false;\n for (const event of this.sortEvents(range.events, versioningApi)) {\n if (\n isNonEmptyString(event.introduced) &&\n (event.introduced === '0' ||\n this.isVersionGtOrEq(depVersion, event.introduced, versioningApi))\n ) {\n vulnerable = true;\n } else if (\n isNonEmptyString(event.fixed) &&\n this.isVersionGtOrEq(depVersion, event.fixed, versioningApi)\n ) {\n vulnerable = false;\n } else if (\n isNonEmptyString(event.last_affected) &&\n this.isVersionGt(depVersion, event.last_affected, versioningApi)\n ) {\n vulnerable = false;\n }\n }\n\n if (vulnerable) {\n return true;\n }\n }\n\n return false;\n }\n\n // https://ossf.github.io/osv-schema/#evaluation\n private isPackageVulnerable(\n ecosystem: Ecosystem,\n osvPackageName: string,\n depVersion: string,\n affected: Osv.Affected,\n versioningApi: VersioningApi,\n ): boolean {\n return (\n this.isPackageAffected(ecosystem, osvPackageName, affected) &&\n (this.includedInVersions(depVersion, affected) ||\n this.includedInRanges(depVersion, affected, versioningApi))\n );\n }\n\n private getFixedVersion(\n ecosystem: Ecosystem,\n depVersion: string,\n affected: Osv.Affected,\n versioningApi: VersioningApi,\n ): string | null {\n const fixedVersions: string[] = [];\n const lastAffectedVersions: string[] = [];\n\n for (const range of coerceArray(affected.ranges)) {\n if (range.type === 'GIT') {\n continue;\n }\n\n for (const event of range.events) {\n if (\n isNonEmptyString(event.fixed) &&\n versioningApi.isVersion(event.fixed)\n ) {\n fixedVersions.push(event.fixed);\n } else if (\n isNonEmptyString(event.last_affected) &&\n versioningApi.isVersion(event.last_affected)\n ) {\n lastAffectedVersions.push(event.last_affected);\n }\n }\n }\n\n fixedVersions.sort((a, b) => versioningApi.sortVersions(a, b));\n const fixedVersion = fixedVersions.find((version) =>\n this.isVersionGt(version, depVersion, versioningApi),\n );\n if (fixedVersion) {\n return this.getFixedVersionByEcosystem(fixedVersion, ecosystem);\n }\n\n lastAffectedVersions.sort((a, b) => versioningApi.sortVersions(a, b));\n const lastAffected = lastAffectedVersions.find((version) =>\n this.isVersionGtOrEq(version, depVersion, versioningApi),\n );\n if (lastAffected) {\n return this.getLastAffectedByEcosystem(lastAffected, ecosystem);\n }\n\n return null;\n }\n\n private getFixedVersionByEcosystem(\n fixedVersion: string,\n ecosystem: Ecosystem,\n ): string {\n return getFixedVersionConstraint(fixedVersion, ecosystem);\n }\n\n private getLastAffectedByEcosystem(\n lastAffected: string,\n ecosystem: Ecosystem,\n ): string {\n return getLastAffectedVersionConstraint(lastAffected, ecosystem);\n }\n\n private isVersionGt(\n version: string,\n other: string,\n versioningApi: VersioningApi,\n ): boolean {\n return (\n versioningApi.isVersion(version) &&\n versioningApi.isVersion(other) &&\n versioningApi.isGreaterThan(version, other)\n );\n }\n\n private isVersionGtOrEq(\n version: string,\n other: string,\n versioningApi: VersioningApi,\n ): boolean {\n return (\n versioningApi.isVersion(version) &&\n versioningApi.isVersion(other) &&\n (versioningApi.equals(version, other) ||\n versioningApi.isGreaterThan(version, other))\n );\n }\n\n private vulnerabilityToPackageRules(vul: Vulnerability): PackageRule | null {\n const {\n vulnerability,\n affected,\n packageName,\n depType,\n depVersion,\n fixedVersion,\n datasource,\n packageFileConfig,\n } = vul;\n if (isNullOrUndefined(fixedVersion)) {\n logger.debug(\n `No fixed version available for vulnerability ${vulnerability.id} in ${packageName} ${depVersion}`,\n );\n return null;\n }\n\n // we don't know if the dependency has a `versioning` applied to it already, so we have to use the default for the datasource\n const versioning = getDefaultVersioning(datasource);\n\n logger.debug(\n {\n datasource,\n versioning,\n },\n\n `Setting allowed version ${fixedVersion} to fix vulnerability ${vulnerability.id} in ${packageName} ${depVersion}`,\n );\n\n const severityDetails = this.extractSeverityDetails(\n vulnerability,\n affected,\n );\n\n return {\n matchDatasources: [datasource],\n matchPackageNames: [packageName],\n ...(depType ? { matchDepTypes: [depType] } : {}),\n matchCurrentVersion: depVersion,\n versioning,\n allowedVersions: fixedVersion,\n isVulnerabilityAlert: true,\n vulnerabilitySeverity: severityDetails.severityLevel,\n prBodyNotes: this.generatePrBodyNotes(vulnerability, affected),\n force: {\n ...packageFileConfig.vulnerabilityAlerts,\n },\n };\n }\n\n static evaluateCvssVector(vector: string): [string, string] {\n const CvssJson = z.object({\n baseScore: z.number().default(0.0),\n baseSeverity: z.string().toUpperCase().default('UNKNOWN'),\n });\n\n try {\n const parsedCvssScore: CvssVector<any> | null = fromVector(vector);\n const res = CvssJson.parse(parsedCvssScore?.createJsonSchema());\n\n return [res.baseScore.toFixed(1), res.baseSeverity];\n } catch {\n logger.debug(`Error processing CVSS vector ${vector}`);\n }\n\n return ['', ''];\n }\n\n private generatePrBodyNotes(\n vulnerability: Osv.Vulnerability,\n affected: Osv.Affected,\n ): string[] {\n let aliases = [vulnerability.id]\n .concat(coerceArray(vulnerability.aliases))\n .sort();\n aliases = aliases.map((id) => {\n if (id.startsWith('CVE-')) {\n return `[${id}](https://nvd.nist.gov/vuln/detail/${id})`;\n }\n if (id.startsWith('GHSA-')) {\n return `[${id}](https://github.com/advisories/${id})`;\n }\n if (id.startsWith('GO-')) {\n return `[${id}](https://pkg.go.dev/vuln/${id})`;\n }\n if (id.startsWith('RUSTSEC-')) {\n return `[${id}](https://rustsec.org/advisories/${id}.html)`;\n }\n\n return id;\n });\n\n let content = '\\n\\n---\\n\\n### ';\n content += vulnerability.summary ? `${vulnerability.summary}\\n` : '';\n content += `${aliases.join(' / ')}\\n`;\n content += `\\n<details>\\n<summary>More information</summary>\\n`;\n\n const details = vulnerability.details?.replace(\n regEx(/^#{1,4} /gm),\n '##### ',\n );\n content += `#### Details\\n${details ?? 'No details.'}\\n`;\n\n content += '#### Severity\\n';\n const severityDetails = this.extractSeverityDetails(\n vulnerability,\n affected,\n );\n\n if (severityDetails.cvssVector) {\n content += `- CVSS Score: ${severityDetails.score}\\n`;\n content += `- Vector String: \\`${severityDetails.cvssVector}\\`\\n`;\n } else {\n content += `${titleCase(severityDetails.severityLevel)}\\n`;\n }\n\n content += `\\n#### References\\n${\n vulnerability.references\n ?.map((ref) => {\n return `- [${ref.url}](${ref.url})`;\n })\n .join('\\n') ?? 'No references.'\n }`;\n\n let attribution = '';\n if (vulnerability.id.startsWith('GHSA-')) {\n attribution = ` and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md))`;\n } else if (vulnerability.id.startsWith('GO-')) {\n attribution = ` and the [Go Vulnerability Database](https://github.com/golang/vulndb) ([CC-BY 4.0](https://github.com/golang/vulndb#license))`;\n } else if (vulnerability.id.startsWith('PYSEC-')) {\n attribution = ` and the [PyPI Advisory Database](https://github.com/pypa/advisory-database) ([CC-BY 4.0](https://github.com/pypa/advisory-database/blob/main/LICENSE))`;\n } else if (vulnerability.id.startsWith('RUSTSEC-')) {\n attribution = ` and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt))`;\n }\n content += `\\n\\nThis data is provided by [OSV](https://osv.dev/vulnerability/${vulnerability.id})${attribution}.\\n`;\n content += `</details>`;\n\n return [sanitizeMarkdown(content)];\n }\n\n private extractSeverityDetails(\n vulnerability: Osv.Vulnerability,\n affected: Osv.Affected,\n ): SeverityDetails {\n let severityLevel = 'UNKNOWN';\n let score = 'Unknown';\n\n const cvssVector =\n vulnerability.severity?.find((e) => e.type === 'CVSS_V4')?.score ??\n vulnerability.severity?.find((e) => e.type === 'CVSS_V3')?.score ??\n (affected.database_specific?.cvss as string); // RUSTSEC\n\n if (cvssVector) {\n const [baseScore, severity] =\n Vulnerabilities.evaluateCvssVector(cvssVector);\n severityLevel = severity ? severity.toUpperCase() : 'UNKNOWN';\n score = baseScore\n ? `${baseScore} / 10 (${titleCase(severityLevel)})`\n : 'Unknown';\n } else if (\n vulnerability.id.startsWith('GHSA-') &&\n vulnerability.database_specific?.severity\n ) {\n const severity = vulnerability.database_specific.severity as string;\n severityLevel = severity.toUpperCase();\n }\n\n return {\n cvssVector,\n score,\n severityLevel,\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vulnerabilities.js","names":["p.all","getVersioning"],"sources":["../../../../lib/workers/repository/process/vulnerabilities.ts"],"sourcesContent":["// TODO #22198\nimport type { Ecosystem, Osv } from '@renovatebot/osv-offline';\nimport { OsvOffline } from '@renovatebot/osv-offline';\nimport {\n isEmptyArray,\n isNonEmptyString,\n isNullOrUndefined,\n isTruthy,\n} from '@sindresorhus/is';\nimport type { CvssVector } from 'ae-cvss-calculator';\nimport aeCvss from 'ae-cvss-calculator';\nimport { z } from 'zod/v4';\nimport { getManagerConfig, mergeChildConfig } from '../../../config/index.ts';\nimport type { PackageRule, RenovateConfig } from '../../../config/types.ts';\nimport { instrument } from '../../../instrumentation/index.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { getDefaultVersioning } from '../../../modules/datasource/common.ts';\nimport type {\n PackageDependency,\n PackageFile,\n} from '../../../modules/manager/types.ts';\nimport type { VersioningApi } from '../../../modules/versioning/index.ts';\nimport { get as getVersioning } from '../../../modules/versioning/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { sanitizeMarkdown } from '../../../util/markdown.ts';\nimport * as p from '../../../util/promises.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { titleCase } from '../../../util/string.ts';\nimport { datasourceToOsvEcosystem } from '../../../util/vulnerability/ecosystem.ts';\nimport {\n getFixedVersionConstraint,\n getLastAffectedVersionConstraint,\n} from '../../../util/vulnerability/utils.ts';\nimport type {\n DependencyVulnerabilities,\n SeverityDetails,\n Vulnerability,\n} from './types.ts';\n\nconst { fromVector } = aeCvss;\n\nexport class Vulnerabilities {\n private static osvOffline: Promise<OsvOffline> | undefined;\n\n private osvOffline: OsvOffline;\n\n private static readonly datasourceEcosystemMap = datasourceToOsvEcosystem;\n\n private constructor(osvOffline: OsvOffline) {\n this.osvOffline = osvOffline;\n }\n\n private static initialize(): Promise<OsvOffline> {\n // no async here, so osv promise will only be created once\n Vulnerabilities.osvOffline ??= OsvOffline.create();\n return Vulnerabilities.osvOffline;\n }\n\n static async create(): Promise<Vulnerabilities> {\n // intialize osv only once\n const osvOffline = await Vulnerabilities.initialize();\n\n const instance = new Vulnerabilities(osvOffline);\n return instance;\n }\n\n async appendVulnerabilityPackageRules(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n ): Promise<void> {\n const dependencyVulnerabilities = await this.fetchDependencyVulnerabilities(\n config,\n packageFiles,\n );\n\n config.packageRules ??= [];\n for (const {\n vulnerabilities,\n versioningApi,\n } of dependencyVulnerabilities) {\n const groupPackageRules: PackageRule[] = [];\n for (const vulnerability of vulnerabilities) {\n const rule = this.vulnerabilityToPackageRules(vulnerability);\n if (isNullOrUndefined(rule)) {\n continue;\n }\n groupPackageRules.push(rule);\n }\n this.sortByFixedVersion(groupPackageRules, versioningApi);\n\n config.packageRules.push(...groupPackageRules);\n }\n }\n\n async fetchVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n ): Promise<Vulnerability[]> {\n const groups = await this.fetchDependencyVulnerabilities(\n config,\n packageFiles,\n );\n return groups.flatMap((group) => group.vulnerabilities);\n }\n\n private async fetchDependencyVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n ): Promise<DependencyVulnerabilities[]> {\n const managers = Object.keys(packageFiles);\n const allManagerJobs = managers.map((manager) =>\n this.fetchManagerVulnerabilities(config, packageFiles, manager),\n );\n return (await Promise.all(allManagerJobs)).flat();\n }\n\n private async fetchManagerVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n manager: string,\n ): Promise<DependencyVulnerabilities[]> {\n const managerConfig = getManagerConfig(config, manager);\n const queue = packageFiles[manager].map(\n (pFile) => (): Promise<DependencyVulnerabilities[]> =>\n this.fetchManagerPackageFileVulnerabilities(managerConfig, pFile),\n );\n logger.trace(\n { manager, queueLength: queue.length },\n 'fetchManagerVulnerabilities starting',\n );\n const result = (await p.all(queue)).flat();\n logger.trace({ manager }, 'fetchManagerVulnerabilities finished');\n return result;\n }\n\n private async fetchManagerPackageFileVulnerabilities(\n managerConfig: RenovateConfig,\n pFile: PackageFile,\n ): Promise<DependencyVulnerabilities[]> {\n const { packageFile } = pFile;\n const packageFileConfig = mergeChildConfig(managerConfig, pFile);\n const { manager } = packageFileConfig;\n const queue = pFile.deps.map(\n (dep) => (): Promise<DependencyVulnerabilities | null> =>\n this.fetchDependencyVulnerability(packageFileConfig, dep),\n );\n logger.trace(\n { manager, packageFile, queueLength: queue.length },\n 'fetchManagerPackageFileVulnerabilities starting with concurrency',\n );\n\n const result = await p.all(queue);\n logger.trace(\n { packageFile },\n 'fetchManagerPackageFileVulnerabilities finished',\n );\n\n return result.filter(isTruthy);\n }\n\n private async fetchDependencyVulnerability(\n packageFileConfig: RenovateConfig & PackageFile,\n dep: PackageDependency,\n ): Promise<DependencyVulnerabilities | null> {\n const ecosystem = Vulnerabilities.datasourceEcosystemMap[dep.datasource!];\n if (!ecosystem) {\n logger.trace(`Cannot map datasource ${dep.datasource!} to OSV ecosystem`);\n return null;\n }\n\n const packageName = dep.packageName!;\n let osvPackageName = packageName;\n let depType: string | undefined;\n if (ecosystem === 'PyPI') {\n // https://peps.python.org/pep-0503/#normalized-names\n osvPackageName = osvPackageName\n .toLowerCase()\n .replace(regEx(/[_.-]+/g), '-');\n } else if (ecosystem === 'Go' && packageName === 'go') {\n if (dep.depType !== 'toolchain') {\n // The `go` directive is source compatibility, not the build toolchain, so we skip it\n return null;\n }\n osvPackageName = 'stdlib';\n depType = dep.depType;\n }\n\n try {\n const osvVulnerabilities = await instrument(\n 'get OSV vulnerabilities',\n () => this.osvOffline.getVulnerabilities(ecosystem, osvPackageName),\n {\n attributes: {\n osvPackageName,\n ecosystem,\n },\n },\n );\n if (\n isNullOrUndefined(osvVulnerabilities) ||\n isEmptyArray(osvVulnerabilities)\n ) {\n logger.trace(\n `No vulnerabilities found in OSV database for ${packageName}`,\n );\n return null;\n }\n\n const depVersion =\n dep.lockedVersion ?? dep.currentVersion ?? dep.currentValue!;\n\n const versioning = dep.versioning ?? getDefaultVersioning(dep.datasource);\n const versioningApi = getVersioning(versioning);\n\n if (!versioningApi.isVersion(depVersion)) {\n logger.debug(\n `Skipping vulnerability lookup for package ${packageName} due to unsupported version ${depVersion}`,\n );\n return null;\n }\n\n const vulnerabilities: Vulnerability[] = [];\n for (const osvVulnerability of osvVulnerabilities) {\n if (osvVulnerability.withdrawn) {\n logger.trace(\n `Skipping withdrawn vulnerability ${osvVulnerability.id}`,\n );\n continue;\n }\n\n this.skipMaliciousPackages(\n ecosystem,\n osvPackageName,\n depVersion,\n versioningApi,\n dep,\n packageFileConfig.manager,\n packageFileConfig.packageFile,\n osvVulnerability,\n );\n\n for (const affected of coerceArray(osvVulnerability.affected)) {\n const isVulnerable = this.isPackageVulnerable(\n ecosystem,\n osvPackageName,\n depVersion,\n affected,\n versioningApi,\n );\n if (!isVulnerable) {\n continue;\n }\n\n logger.debug(\n `Vulnerability ${osvVulnerability.id} affects ${packageName} ${depVersion}`,\n );\n const fixedVersion = this.getFixedVersion(\n ecosystem,\n depVersion,\n affected,\n versioningApi,\n );\n\n vulnerabilities.push({\n packageName,\n osvPackageName,\n vulnerability: osvVulnerability,\n affected,\n depType,\n depVersion,\n fixedVersion,\n datasource: dep.datasource!,\n packageFileConfig,\n });\n }\n }\n\n return { vulnerabilities, versioningApi };\n } catch (err) {\n logger.warn(\n { err, packageName },\n 'Error fetching vulnerability information for package',\n );\n return null;\n }\n }\n\n private skipMaliciousPackages(\n ecosystem: Ecosystem,\n osvPackageName: string,\n depVersion: string,\n versioningApi: VersioningApi,\n dep: PackageDependency,\n manager: string | undefined,\n packageFile: string,\n osvVulnerability: Osv.Vulnerability,\n ): void {\n // the OpenSSF's Malicious Packages (https://github.com/ossf/malicious-packages) is a source of advisories through osv.dev, which takes various sources of advisories, and will re-publish them with more specific information about their malicious usage\n if (osvVulnerability.id.startsWith('MAL-')) {\n // is the current dependency vulnerable?\n for (const affected of coerceArray(osvVulnerability.affected)) {\n // is the current dependency vulnerable?\n const isVulnerable = this.isPackageVulnerable(\n ecosystem,\n osvPackageName,\n depVersion,\n affected,\n versioningApi,\n );\n\n if (isVulnerable) {\n logger.debug(\n {\n packageFile: packageFile,\n depName: dep.depName,\n packageName: dep.packageName,\n manager: manager,\n datasource: dep.datasource,\n currentVersion: depVersion,\n },\n `Marking ${dep.depName} as skipReason=malicious-version-in-use, as it is affected by ${osvVulnerability.id}`,\n );\n dep.skipReason = 'malicious-version-in-use';\n dep.skipStage = 'lookup';\n }\n\n // or are any of the updates vulnerable?\n for (const update of coerceArray(dep.updates)) {\n const newVersion = update.newVersion ?? update.newValue!;\n\n const isUpdateVulnerable = this.isPackageVulnerable(\n ecosystem,\n osvPackageName,\n newVersion,\n affected,\n versioningApi,\n );\n\n if (isUpdateVulnerable) {\n logger.debug(\n {\n packageFile: packageFile,\n depName: dep.depName,\n packageName: dep.packageName,\n manager: manager,\n datasource: dep.datasource,\n currentVersion: depVersion,\n newVersion,\n },\n `Marking ${dep.depName}'s update to ${newVersion} as skipReason=malicious-update-proposed, as it is affected by ${osvVulnerability.id}`,\n );\n dep.skipReason = 'malicious-update-proposed';\n dep.skipStage = 'lookup';\n }\n }\n }\n }\n }\n\n private sortByFixedVersion(\n packageRules: PackageRule[],\n versioningApi: VersioningApi,\n ): void {\n const versionsCleaned: Record<string, string> = {};\n for (const rule of packageRules) {\n const version = rule.allowedVersions!;\n versionsCleaned[version] = version.replace(regEx(/[(),=> ]+/g), '');\n }\n packageRules.sort((a, b) =>\n versioningApi.sortVersions(\n versionsCleaned[a.allowedVersions!],\n versionsCleaned[b.allowedVersions!],\n ),\n );\n }\n\n // https://ossf.github.io/osv-schema/#affectedrangesevents-fields\n private sortEvents(\n events: Osv.Event[],\n versioningApi: VersioningApi,\n ): Osv.Event[] {\n const sortedCopy: Osv.Event[] = [];\n let zeroEvent: Osv.Event | null = null;\n\n for (const event of events) {\n if (event.introduced === '0') {\n zeroEvent = event;\n } else if (versioningApi.isVersion(Object.values(event)[0])) {\n sortedCopy.push(event);\n } else {\n logger.debug({ event }, 'Skipping OSV event with invalid version');\n }\n }\n\n sortedCopy.sort((a, b) =>\n // no pre-processing, as there are only very few values to sort\n versioningApi.sortVersions(Object.values(a)[0], Object.values(b)[0]),\n );\n\n if (zeroEvent) {\n sortedCopy.unshift(zeroEvent);\n }\n\n return sortedCopy;\n }\n\n private isPackageAffected(\n ecosystem: Ecosystem,\n osvPackageName: string,\n affected: Osv.Affected,\n ): boolean {\n const pkg = affected.package;\n if (pkg?.name !== osvPackageName) {\n return false;\n }\n\n // Match exact ecosystems and OSV sub-ecosystems (e.g. Packagist:https://packages.drupal.org/8).\n return (\n pkg.ecosystem === ecosystem || pkg.ecosystem.startsWith(`${ecosystem}:`)\n );\n }\n\n private includedInVersions(\n depVersion: string,\n affected: Osv.Affected,\n ): boolean {\n return !!affected.versions?.includes(depVersion);\n }\n\n private includedInRanges(\n depVersion: string,\n affected: Osv.Affected,\n versioningApi: VersioningApi,\n ): boolean {\n for (const range of coerceArray(affected.ranges)) {\n if (range.type === 'GIT') {\n continue;\n }\n\n let vulnerable = false;\n for (const event of this.sortEvents(range.events, versioningApi)) {\n if (\n isNonEmptyString(event.introduced) &&\n (event.introduced === '0' ||\n this.isVersionGtOrEq(depVersion, event.introduced, versioningApi))\n ) {\n vulnerable = true;\n } else if (\n isNonEmptyString(event.fixed) &&\n this.isVersionGtOrEq(depVersion, event.fixed, versioningApi)\n ) {\n vulnerable = false;\n } else if (\n isNonEmptyString(event.last_affected) &&\n this.isVersionGt(depVersion, event.last_affected, versioningApi)\n ) {\n vulnerable = false;\n }\n }\n\n if (vulnerable) {\n return true;\n }\n }\n\n return false;\n }\n\n // https://ossf.github.io/osv-schema/#evaluation\n private isPackageVulnerable(\n ecosystem: Ecosystem,\n osvPackageName: string,\n depVersion: string,\n affected: Osv.Affected,\n versioningApi: VersioningApi,\n ): boolean {\n return (\n this.isPackageAffected(ecosystem, osvPackageName, affected) &&\n (this.includedInVersions(depVersion, affected) ||\n this.includedInRanges(depVersion, affected, versioningApi))\n );\n }\n\n private getFixedVersion(\n ecosystem: Ecosystem,\n depVersion: string,\n affected: Osv.Affected,\n versioningApi: VersioningApi,\n ): string | null {\n const fixedVersions: string[] = [];\n const lastAffectedVersions: string[] = [];\n\n for (const range of coerceArray(affected.ranges)) {\n if (range.type === 'GIT') {\n continue;\n }\n\n for (const event of range.events) {\n if (\n isNonEmptyString(event.fixed) &&\n versioningApi.isVersion(event.fixed)\n ) {\n fixedVersions.push(event.fixed);\n } else if (\n isNonEmptyString(event.last_affected) &&\n versioningApi.isVersion(event.last_affected)\n ) {\n lastAffectedVersions.push(event.last_affected);\n }\n }\n }\n\n fixedVersions.sort((a, b) => versioningApi.sortVersions(a, b));\n const fixedVersion = fixedVersions.find((version) =>\n this.isVersionGt(version, depVersion, versioningApi),\n );\n if (fixedVersion) {\n return this.getFixedVersionByEcosystem(fixedVersion, ecosystem);\n }\n\n lastAffectedVersions.sort((a, b) => versioningApi.sortVersions(a, b));\n const lastAffected = lastAffectedVersions.find((version) =>\n this.isVersionGtOrEq(version, depVersion, versioningApi),\n );\n if (lastAffected) {\n return this.getLastAffectedByEcosystem(lastAffected, ecosystem);\n }\n\n return null;\n }\n\n private getFixedVersionByEcosystem(\n fixedVersion: string,\n ecosystem: Ecosystem,\n ): string {\n return getFixedVersionConstraint(fixedVersion, ecosystem);\n }\n\n private getLastAffectedByEcosystem(\n lastAffected: string,\n ecosystem: Ecosystem,\n ): string {\n return getLastAffectedVersionConstraint(lastAffected, ecosystem);\n }\n\n private isVersionGt(\n version: string,\n other: string,\n versioningApi: VersioningApi,\n ): boolean {\n return (\n versioningApi.isVersion(version) &&\n versioningApi.isVersion(other) &&\n versioningApi.isGreaterThan(version, other)\n );\n }\n\n private isVersionGtOrEq(\n version: string,\n other: string,\n versioningApi: VersioningApi,\n ): boolean {\n return (\n versioningApi.isVersion(version) &&\n versioningApi.isVersion(other) &&\n (versioningApi.equals(version, other) ||\n versioningApi.isGreaterThan(version, other))\n );\n }\n\n private vulnerabilityToPackageRules(vul: Vulnerability): PackageRule | null {\n const {\n vulnerability,\n affected,\n packageName,\n depType,\n depVersion,\n fixedVersion,\n datasource,\n packageFileConfig,\n } = vul;\n if (isNullOrUndefined(fixedVersion)) {\n logger.debug(\n `No fixed version available for vulnerability ${vulnerability.id} in ${packageName} ${depVersion}`,\n );\n return null;\n }\n\n // we don't know if the dependency has a `versioning` applied to it already, so we have to use the default for the datasource\n const versioning = getDefaultVersioning(datasource);\n\n logger.debug(\n {\n datasource,\n versioning,\n },\n\n `Setting allowed version ${fixedVersion} to fix vulnerability ${vulnerability.id} in ${packageName} ${depVersion}`,\n );\n\n const severityDetails = this.extractSeverityDetails(\n vulnerability,\n affected,\n );\n\n return {\n matchDatasources: [datasource],\n matchPackageNames: [packageName],\n ...(depType ? { matchDepTypes: [depType] } : {}),\n matchCurrentVersion: depVersion,\n versioning,\n allowedVersions: fixedVersion,\n isVulnerabilityAlert: true,\n vulnerabilitySeverity: severityDetails.severityLevel,\n prBodyNotes: this.generatePrBodyNotes(vulnerability, affected),\n force: {\n ...packageFileConfig.vulnerabilityAlerts,\n },\n };\n }\n\n static evaluateCvssVector(vector: string): [string, string] {\n const CvssJson = z.object({\n baseScore: z.number().default(0.0),\n baseSeverity: z.string().toUpperCase().default('UNKNOWN'),\n });\n\n try {\n const parsedCvssScore: CvssVector<any> | null = fromVector(vector);\n const res = CvssJson.parse(parsedCvssScore?.createJsonSchema());\n\n return [res.baseScore.toFixed(1), res.baseSeverity];\n } catch {\n logger.debug(`Error processing CVSS vector ${vector}`);\n }\n\n return ['', ''];\n }\n\n private generatePrBodyNotes(\n vulnerability: Osv.Vulnerability,\n affected: Osv.Affected,\n ): string[] {\n let aliases = [vulnerability.id]\n .concat(coerceArray(vulnerability.aliases))\n .sort();\n aliases = aliases.map((id) => {\n if (id.startsWith('CVE-')) {\n return `[${id}](https://nvd.nist.gov/vuln/detail/${id})`;\n }\n if (id.startsWith('GHSA-')) {\n return `[${id}](https://github.com/advisories/${id})`;\n }\n if (id.startsWith('GO-')) {\n return `[${id}](https://pkg.go.dev/vuln/${id})`;\n }\n if (id.startsWith('RUSTSEC-')) {\n return `[${id}](https://rustsec.org/advisories/${id}.html)`;\n }\n\n return id;\n });\n\n let content = '\\n\\n---\\n\\n### ';\n content += vulnerability.summary ? `${vulnerability.summary}\\n` : '';\n content += `${aliases.join(' / ')}\\n`;\n content += `\\n<details>\\n<summary>More information</summary>\\n`;\n\n const details = vulnerability.details?.replace(\n regEx(/^#{1,4} /gm),\n '##### ',\n );\n content += `#### Details\\n${details ?? 'No details.'}\\n`;\n\n content += '#### Severity\\n';\n const severityDetails = this.extractSeverityDetails(\n vulnerability,\n affected,\n );\n\n if (severityDetails.cvssVector) {\n content += `- CVSS Score: ${severityDetails.score}\\n`;\n content += `- Vector String: \\`${severityDetails.cvssVector}\\`\\n`;\n } else {\n content += `${titleCase(severityDetails.severityLevel)}\\n`;\n }\n\n content += `\\n#### References\\n${\n vulnerability.references\n ?.map((ref) => {\n return `- [${ref.url}](${ref.url})`;\n })\n .join('\\n') ?? 'No references.'\n }`;\n\n let attribution = '';\n if (vulnerability.id.startsWith('GHSA-')) {\n attribution = ` and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md))`;\n } else if (vulnerability.id.startsWith('GO-')) {\n attribution = ` and the [Go Vulnerability Database](https://github.com/golang/vulndb) ([CC-BY 4.0](https://github.com/golang/vulndb#license))`;\n } else if (vulnerability.id.startsWith('PYSEC-')) {\n attribution = ` and the [PyPI Advisory Database](https://github.com/pypa/advisory-database) ([CC-BY 4.0](https://github.com/pypa/advisory-database/blob/main/LICENSE))`;\n } else if (vulnerability.id.startsWith('RUSTSEC-')) {\n attribution = ` and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt))`;\n }\n content += `\\n\\nThis data is provided by [OSV](https://osv.dev/vulnerability/${vulnerability.id})${attribution}.\\n`;\n content += `</details>`;\n\n return [sanitizeMarkdown(content)];\n }\n\n private extractSeverityDetails(\n vulnerability: Osv.Vulnerability,\n affected: Osv.Affected,\n ): SeverityDetails {\n let severityLevel = 'UNKNOWN';\n let score = 'Unknown';\n\n const cvssVector =\n vulnerability.severity?.find((e) => e.type === 'CVSS_V4')?.score ??\n vulnerability.severity?.find((e) => e.type === 'CVSS_V3')?.score ??\n (affected.database_specific?.cvss as string); // RUSTSEC\n\n if (cvssVector) {\n const [baseScore, severity] =\n Vulnerabilities.evaluateCvssVector(cvssVector);\n severityLevel = severity ? severity.toUpperCase() : 'UNKNOWN';\n score = baseScore\n ? `${baseScore} / 10 (${titleCase(severityLevel)})`\n : 'Unknown';\n } else if (\n vulnerability.id.startsWith('GHSA-') &&\n vulnerability.database_specific?.severity\n ) {\n const severity = vulnerability.database_specific.severity as string;\n severityLevel = severity.toUpperCase();\n }\n\n return {\n cvssVector,\n score,\n severityLevel,\n };\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.
|
|
3
|
+
"title": "JSON schema for Renovate 44.196.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.
|
|
5
|
+
"x-renovate-version": "44.196.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|