renovate 39.189.0 → 39.190.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/decrypt.js +1 -1
- package/dist/config/decrypt.js.map +1 -1
- package/dist/config/migrate-validate.js +2 -2
- package/dist/config/migrate-validate.js.map +1 -1
- package/dist/config/migration.js +1 -1
- package/dist/config/migration.js.map +1 -1
- package/dist/config/validation.js +2 -2
- package/dist/config/validation.js.map +1 -1
- package/dist/instrumentation/index.js +2 -2
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/logger/once.js +2 -2
- package/dist/logger/once.js.map +1 -1
- package/dist/logger/renovate-logger.js +1 -1
- package/dist/logger/renovate-logger.js.map +1 -1
- package/dist/logger/utils.js +1 -1
- package/dist/logger/utils.js.map +1 -1
- package/dist/modules/datasource/artifactory/index.js +0 -1
- package/dist/modules/datasource/artifactory/index.js.map +1 -1
- package/dist/modules/datasource/aws-machine-image/index.js +6 -5
- package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
- package/dist/modules/datasource/bazel/index.js +0 -1
- package/dist/modules/datasource/bazel/index.js.map +1 -1
- package/dist/modules/datasource/bitrise/index.js +1 -1
- package/dist/modules/datasource/bitrise/index.js.map +1 -1
- package/dist/modules/datasource/conda/index.js +0 -1
- package/dist/modules/datasource/conda/index.js.map +1 -1
- package/dist/modules/datasource/cpan/index.js +1 -1
- package/dist/modules/datasource/cpan/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js +2 -2
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/dart/index.js +1 -1
- package/dist/modules/datasource/dart/index.js.map +1 -1
- package/dist/modules/datasource/dart-version/index.js +1 -1
- package/dist/modules/datasource/dart-version/index.js.map +1 -1
- package/dist/modules/datasource/datasource.js +0 -1
- package/dist/modules/datasource/datasource.js.map +1 -1
- package/dist/modules/datasource/deb/index.js +1 -1
- package/dist/modules/datasource/deb/index.js.map +1 -1
- package/dist/modules/datasource/deno/index.js +1 -1
- package/dist/modules/datasource/deno/index.js.map +1 -1
- package/dist/modules/datasource/devbox/index.js +0 -1
- package/dist/modules/datasource/devbox/index.js.map +1 -1
- package/dist/modules/datasource/docker/common.js +1 -1
- package/dist/modules/datasource/docker/common.js.map +1 -1
- package/dist/modules/datasource/docker/index.js +5 -5
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/docker/schema.js +2 -1
- package/dist/modules/datasource/docker/schema.js.map +1 -1
- package/dist/modules/datasource/flutter-version/index.js +1 -1
- package/dist/modules/datasource/flutter-version/index.js.map +1 -1
- package/dist/modules/datasource/git-refs/index.js +1 -1
- package/dist/modules/datasource/git-refs/index.js.map +1 -1
- package/dist/modules/datasource/gitlab-packages/index.js +1 -1
- package/dist/modules/datasource/gitlab-packages/index.js.map +1 -1
- package/dist/modules/datasource/gitlab-releases/index.js +1 -3
- package/dist/modules/datasource/gitlab-releases/index.js.map +1 -1
- package/dist/modules/datasource/go/index.js +1 -1
- package/dist/modules/datasource/go/index.js.map +1 -1
- package/dist/modules/datasource/go/releases-direct.js +2 -2
- package/dist/modules/datasource/go/releases-direct.js.map +1 -1
- package/dist/modules/datasource/golang-version/index.js +1 -1
- package/dist/modules/datasource/golang-version/index.js.map +1 -1
- package/dist/modules/datasource/gradle-version/index.js +1 -1
- package/dist/modules/datasource/gradle-version/index.js.map +1 -1
- package/dist/modules/datasource/helm/index.js +1 -1
- package/dist/modules/datasource/helm/index.js.map +1 -1
- package/dist/modules/datasource/hex/index.js +1 -1
- package/dist/modules/datasource/hex/index.js.map +1 -1
- package/dist/modules/datasource/java-version/index.js +0 -1
- package/dist/modules/datasource/java-version/index.js.map +1 -1
- package/dist/modules/datasource/jenkins-plugins/index.js +1 -1
- package/dist/modules/datasource/jenkins-plugins/index.js.map +1 -1
- package/dist/modules/datasource/maven/index.js +3 -3
- package/dist/modules/datasource/maven/index.js.map +1 -1
- package/dist/modules/datasource/maven/util.js +2 -2
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/datasource/node-version/index.js +1 -1
- package/dist/modules/datasource/node-version/index.js.map +1 -1
- package/dist/modules/datasource/npm/index.js +1 -1
- package/dist/modules/datasource/npm/index.js.map +1 -1
- package/dist/modules/datasource/npm/npmrc.js +1 -1
- package/dist/modules/datasource/npm/npmrc.js.map +1 -1
- package/dist/modules/datasource/nuget/index.js +1 -1
- package/dist/modules/datasource/nuget/index.js.map +1 -1
- package/dist/modules/datasource/nuget/v3.js +1 -3
- package/dist/modules/datasource/nuget/v3.js.map +1 -1
- package/dist/modules/datasource/orb/index.js +1 -1
- package/dist/modules/datasource/orb/index.js.map +1 -1
- package/dist/modules/datasource/packagist/index.js +1 -1
- package/dist/modules/datasource/packagist/index.js.map +1 -1
- package/dist/modules/datasource/pod/index.js +1 -1
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/python-version/index.js +1 -1
- package/dist/modules/datasource/python-version/index.js.map +1 -1
- package/dist/modules/datasource/repology/index.js +1 -1
- package/dist/modules/datasource/repology/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/index.js +1 -1
- package/dist/modules/datasource/rubygems/index.js.map +1 -1
- package/dist/modules/datasource/sbt-package/index.js +1 -1
- package/dist/modules/datasource/sbt-package/index.js.map +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
- package/dist/modules/datasource/terraform-module/index.js +1 -1
- package/dist/modules/datasource/terraform-module/index.js.map +1 -1
- package/dist/modules/datasource/terraform-provider/index.js +1 -2
- package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
- package/dist/modules/manager/api.js +2 -0
- package/dist/modules/manager/api.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +2 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/gomod/update.js +2 -2
- package/dist/modules/manager/gomod/update.js.map +1 -1
- package/dist/modules/manager/helmv3/utils.js +3 -1
- package/dist/modules/manager/helmv3/utils.js.map +1 -1
- package/dist/modules/manager/homebrew/extract.js +0 -1
- package/dist/modules/manager/homebrew/extract.js.map +1 -1
- package/dist/modules/manager/pep621/schema.d.ts +5 -0
- package/dist/modules/manager/pep621/schema.js +2 -0
- package/dist/modules/manager/pep621/schema.js.map +1 -1
- package/dist/modules/manager/pixi/artifacts.d.ts +3 -0
- package/dist/modules/manager/pixi/artifacts.js +85 -0
- package/dist/modules/manager/pixi/artifacts.js.map +1 -0
- package/dist/modules/manager/pixi/extract.d.ts +2 -0
- package/dist/modules/manager/pixi/extract.js +53 -0
- package/dist/modules/manager/pixi/extract.js.map +1 -0
- package/dist/modules/manager/pixi/index.d.ts +11 -0
- package/dist/modules/manager/pixi/index.js +22 -0
- package/dist/modules/manager/pixi/index.js.map +1 -0
- package/dist/modules/manager/pixi/lockfile.d.ts +6 -0
- package/dist/modules/manager/pixi/lockfile.js +25 -0
- package/dist/modules/manager/pixi/lockfile.js.map +1 -0
- package/dist/modules/manager/pixi/schema.d.ts +14 -0
- package/dist/modules/manager/pixi/schema.js +14 -0
- package/dist/modules/manager/pixi/schema.js.map +1 -0
- package/dist/modules/platform/index.js +0 -1
- package/dist/modules/platform/index.js.map +1 -1
- package/dist/proxy.js +1 -1
- package/dist/proxy.js.map +1 -1
- package/dist/renovate.js +2 -2
- package/dist/renovate.js.map +1 -1
- package/dist/util/exec/containerbase.js +5 -0
- package/dist/util/exec/containerbase.js.map +1 -1
- package/dist/util/http/bitbucket.js +1 -1
- package/dist/util/http/bitbucket.js.map +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
- package/dist/workers/global/config/parse/file.js +1 -1
- package/dist/workers/global/config/parse/file.js.map +1 -1
- package/dist/workers/repository/process/extract-update.js +0 -1
- package/dist/workers/repository/process/extract-update.js.map +1 -1
- package/dist/workers/repository/updates/flatten.js +0 -1
- package/dist/workers/repository/updates/flatten.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +0 -1
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +11 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"releases-direct.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/releases-direct.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"releases-direct.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/releases-direct.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { regEx } from '../../../util/regex';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags';\nimport { Datasource } from '../datasource';\nimport { GitTagsDatasource } from '../git-tags';\nimport { GiteaTagsDatasource } from '../gitea-tags';\nimport { GithubTagsDatasource } from '../github-tags';\nimport { GitlabTagsDatasource } from '../gitlab-tags';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport { BaseGoDatasource } from './base';\nimport { getSourceUrl } from './common';\n\n/**\n * This function tries to select tags with longest prefix could be constructed from `packageName`.\n *\n * For package named `example.com/foo/bar/baz/qux`, it will try to detect tags with following prefixes:\n *\n * - `foo/bar/baz/qux/vX.Y.Z`\n * - `bar/baz/qux/vX.Y.Z`\n * - `baz/qux/vX.Y.Z`\n * - `qux/vX.Y.Z`\n *\n * If none of the following is found, it falls back to simply returning all tags like `vX.Y.Z`.\n */\nfunction filterByPrefix(packageName: string, releases: Release[]): Release[] {\n const nameParts = packageName\n .replace(regEx(/\\/v\\d+$/), '')\n .split('/')\n .slice(1);\n\n const submoduleReleases: Release[] = [];\n while (nameParts.length) {\n const prefix = `${nameParts.join('/')}/`;\n\n for (const release of releases) {\n if (!release.version.startsWith(prefix)) {\n continue;\n }\n\n const normalizedVersion = release.version.replace(prefix, '');\n if (!normalizedVersion.match(regEx(/^v\\d[^/]*/))) {\n continue;\n }\n\n release.version = release.version.replace(prefix, '');\n submoduleReleases.push(release);\n }\n\n if (submoduleReleases.length) {\n return submoduleReleases;\n }\n\n nameParts.shift();\n }\n\n return releases.filter((release) => release.version.startsWith('v'));\n}\n\nexport class GoDirectDatasource extends Datasource {\n static readonly id = 'go-direct';\n\n git: GitTagsDatasource;\n readonly gitea = new GiteaTagsDatasource();\n github: GithubTagsDatasource;\n gitlab: GitlabTagsDatasource;\n bitbucket: BitbucketTagsDatasource;\n\n constructor() {\n super(GoDirectDatasource.id);\n this.git = new GitTagsDatasource();\n this.github = new GithubTagsDatasource();\n this.gitlab = new GitlabTagsDatasource();\n this.bitbucket = new BitbucketTagsDatasource();\n }\n\n /**\n * go.getReleases\n *\n * This datasource resolves a go module URL into its source repository\n * and then fetch it if it is on GitHub.\n *\n * This function will:\n * - Determine the source URL for the module\n * - Call the respective getReleases in github/gitlab to retrieve the tags\n * - Filter module tags according to the module path\n */\n @cache({\n namespace: `datasource-${GoDirectDatasource.id}`,\n key: ({ packageName }: GetReleasesConfig) => packageName,\n })\n async getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n const { packageName } = config;\n\n let res: ReleaseResult | null = null;\n\n logger.trace(`go.getReleases(${packageName})`);\n const source = await BaseGoDatasource.getDatasource(packageName);\n\n if (!source) {\n logger.info(\n { packageName },\n 'Unsupported go host - cannot look up versions',\n );\n return null;\n }\n\n switch (source.datasource) {\n case GitTagsDatasource.id: {\n res = await this.git.getReleases(source);\n break;\n }\n case GiteaTagsDatasource.id: {\n res = await this.gitea.getReleases(source);\n break;\n }\n case GithubTagsDatasource.id: {\n res = await this.github.getReleases(source);\n break;\n }\n case GitlabTagsDatasource.id: {\n res = await this.gitlab.getReleases(source);\n break;\n }\n case BitbucketTagsDatasource.id: {\n res = await this.bitbucket.getReleases(source);\n break;\n }\n /* v8 ignore next 3 -- should never happen */\n default: {\n return null;\n }\n }\n\n /* v8 ignore next 3 -- TODO: add test */\n if (!res) {\n return null;\n }\n\n const sourceUrl = getSourceUrl(source) ?? null;\n\n res.releases = filterByPrefix(packageName, res.releases);\n\n return { ...res, sourceUrl };\n }\n}\n"]}
|
@@ -30,7 +30,7 @@ class GolangVersionDatasource extends datasource_1.Datasource {
|
|
30
30
|
sourceUrlSupport = 'package';
|
31
31
|
sourceUrlNote = 'We use the URL: https://github.com/golang/go.';
|
32
32
|
async getReleases({ registryUrl, }) {
|
33
|
-
|
33
|
+
/* v8 ignore next 3 -- should never happen */
|
34
34
|
if (!registryUrl) {
|
35
35
|
return null;
|
36
36
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/golang-version/index.ts"],"names":[],"mappings":";;;;AAAA,mFAA8E;AAC9E,qEAA8D;AAC9D,+CAA4C;AAC5C,uDAAsD;AACtD,2CAAiD;AACjD,oDAA8E;AAC9E,8CAA2C;AAG3C,MAAM,oBAAoB,GAAG,IAAA,aAAK,EAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,MAAM,gBAAgB,GAAG,IAAA,aAAK,EAC5B,6DAA6D,CAC9D,CAAC;AACF,MAAM,mBAAmB,GAAG,IAAA,aAAK,EAC/B,iFAAiF,CAClF,CAAC;AACF,MAAM,kBAAkB,GAAG,IAAA,aAAK,EAAC,iBAAiB,CAAC,CAAC;AAEpD,MAAa,uBAAwB,SAAQ,uBAAU;IACrD,MAAM,CAAU,EAAE,GAAG,gBAAgB,CAAC;IAEtC;QACE,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEiB,mBAAmB,GAAG;QACtC,kDAAkD;KACnD,CAAC;IAEgB,qBAAqB,GAAG,IAAI,CAAC;IAE7B,iBAAiB,GAAG,WAAkB,CAAC;IAEvC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,2EAA2E,CAAC;IAC5D,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,+CAA+C,CAAC;IAG5C,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,GACO;QAClB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/golang-version/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport { isVersion, id as semverVersioningId } from '../../versioning/semver';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\n\nconst lineTerminationRegex = regEx(`\\r?\\n`);\nconst releaseBeginningChar = '\\t{';\nconst releaseTerminationChar = '\\t},';\nconst releaseDateRegex = regEx(\n `Date\\\\{(?<year>\\\\d+),\\\\s+(?<month>\\\\d+),\\\\s+(?<day>\\\\d+)\\\\}`,\n);\nconst releaseVersionRegex = regEx(\n `Version\\\\{(?<versionMajor>\\\\d+),\\\\s+(?<versionMinor>\\\\d+),\\\\s+(?<patch>\\\\d+)\\\\}`,\n);\nconst releaseFutureRegex = regEx(`Future:\\\\s+true`);\n\nexport class GolangVersionDatasource extends Datasource {\n static readonly id = 'golang-version';\n\n constructor() {\n super(GolangVersionDatasource.id);\n }\n\n override readonly defaultRegistryUrls = [\n 'https://raw.githubusercontent.com/golang/website',\n ];\n\n override readonly customRegistrySupport = true;\n\n override readonly defaultVersioning = semverVersioningId;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `Date` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL: https://github.com/golang/go.';\n\n @cache({ namespace: `datasource-${GolangVersionDatasource.id}`, key: 'all' })\n async getReleases({\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const res: ReleaseResult = {\n homepage: 'https://go.dev/',\n sourceUrl: 'https://github.com/golang/go',\n releases: [],\n };\n\n const golangVersionsUrl = joinUrlParts(\n registryUrl,\n '/HEAD/internal/history/release.go',\n );\n\n const response = await this.http.getText(golangVersionsUrl);\n\n const lines = response.body.split(lineTerminationRegex);\n\n const startOfReleases = lines.indexOf('var Releases = []*Release{');\n if (startOfReleases === -1) {\n throw new ExternalHostError(\n new Error('Invalid file - could not find the Releases section'),\n );\n }\n\n // Remove part before releases\n lines.splice(0, startOfReleases + 1);\n\n // Parse the release list\n let release: Omit<Release, 'version'> & { version?: string | undefined } = {\n version: undefined,\n };\n let skipFutureRelease = false;\n while (lines.length !== 0) {\n const line = lines.shift()!;\n if (line === releaseBeginningChar) {\n if (release.version !== undefined) {\n throw new ExternalHostError(\n new Error(\n 'Invalid file - unexpected error while parsing a release',\n ),\n );\n }\n } else if (line === releaseTerminationChar) {\n if (skipFutureRelease) {\n skipFutureRelease = false;\n } else {\n if (release.version === undefined) {\n throw new ExternalHostError(\n new Error('Invalid file - release has empty version'),\n );\n }\n res.releases.push(release as Release);\n }\n release = { version: undefined };\n } else {\n const isFutureRelease = releaseFutureRegex.test(line);\n if (isFutureRelease) {\n skipFutureRelease = true;\n }\n const releaseDateMatch = releaseDateRegex.exec(line);\n if (releaseDateMatch?.groups) {\n // Make a valid UTC timestamp\n const year = releaseDateMatch.groups.year.padStart(4, '0');\n const month = releaseDateMatch.groups.month.padStart(2, '0');\n const day = releaseDateMatch.groups.day.padStart(2, '0');\n release.releaseTimestamp = asTimestamp(\n `${year}-${month}-${day}T00:00:00.000Z`,\n );\n }\n const releaseVersionMatch = releaseVersionRegex.exec(line);\n if (releaseVersionMatch?.groups) {\n release.version = `${releaseVersionMatch.groups.versionMajor}.${releaseVersionMatch.groups.versionMinor}.${releaseVersionMatch.groups.patch}`;\n if (!isVersion(release.version)) {\n throw new ExternalHostError(\n new Error(`Version ${release.version} is not a valid semver`),\n );\n }\n }\n }\n }\n\n if (res.releases.length === 0) {\n throw new ExternalHostError(\n new Error(`Invalid file - zero releases extracted`),\n );\n }\n\n return res;\n }\n}\n"]}
|
@@ -21,7 +21,7 @@ class GradleVersionDatasource extends datasource_1.Datasource {
|
|
21
21
|
sourceUrlSupport = 'package';
|
22
22
|
sourceUrlNote = 'We use the URL: https://github.com/gradle/gradle.';
|
23
23
|
async getReleases({ registryUrl, }) {
|
24
|
-
|
24
|
+
/* v8 ignore next 3 -- should never happen */
|
25
25
|
if (!registryUrl) {
|
26
26
|
return null;
|
27
27
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/gradle-version/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,uDAAsD;AACtD,kFAA4D;AAC5D,8CAA2C;AAI3C,MAAa,uBAAwB,SAAQ,uBAAU;IACrD,MAAM,CAAU,EAAE,GAAG,gBAAgB,CAAC;IAEtC;QACE,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEiB,mBAAmB,GAAG;QACtC,0CAA0C;KAC3C,CAAC;IAEgB,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAExC,gBAAgB,GAAG,OAAO,CAAC;IAE3B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,gFAAgF,CAAC;IACjE,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,mDAAmD,CAAC;IAOhD,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,GACO;QAClB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/gradle-version/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { cache } from '../../../util/cache/package/decorator';\nimport { asTimestamp } from '../../../util/timestamp';\nimport * as gradleVersioning from '../../versioning/gradle';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport type { GradleRelease } from './types';\n\nexport class GradleVersionDatasource extends Datasource {\n static readonly id = 'gradle-version';\n\n constructor() {\n super(GradleVersionDatasource.id);\n }\n\n override readonly defaultRegistryUrls = [\n 'https://services.gradle.org/versions/all',\n ];\n\n override readonly defaultVersioning = gradleVersioning.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `buildTime` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL: https://github.com/gradle/gradle.';\n\n @cache({\n namespace: `datasource-${GradleVersionDatasource.id}`,\n // TODO: types (#22198)\n key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,\n })\n async getReleases({\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n let releases: Release[];\n try {\n const response =\n await this.http.getJsonUnchecked<GradleRelease[]>(registryUrl);\n releases = response.body\n .filter((release) => !release.snapshot && !release.nightly)\n .map((release) => {\n const { version, buildTime } = release;\n\n const gitRef = GradleVersionDatasource.getGitRef(release.version);\n\n const releaseTimestamp = asTimestamp(buildTime);\n\n const result: Release = { version, gitRef, releaseTimestamp };\n\n if (release.broken) {\n result.isDeprecated = true;\n }\n\n return result;\n });\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n const res: ReleaseResult = {\n releases,\n homepage: 'https://gradle.org',\n sourceUrl: 'https://github.com/gradle/gradle',\n };\n if (res.releases.length) {\n return res;\n }\n return null;\n }\n\n /**\n * Calculate `gitTag` based on `version`:\n * - `8.1.2` -> `v8.1.2`\n * - `8.2` -> `v8.2.0`\n * - `8.2-rc-1` -> `v8.2.0-RC1`\n * - `8.2-milestone-1` -> `v8.2.0-M1`\n */\n private static getGitRef(version: string): string {\n const [versionPart, typePart, unstablePart] = version.split(/-([a-z]+)-/);\n\n let suffix = '';\n if (typePart === 'rc') {\n suffix = `-RC${unstablePart}`;\n } else if (typePart === 'milestone') {\n suffix = `-M${unstablePart}`;\n }\n\n const [major, minor, patch = '0'] = versionPart.split('.');\n return `v${major}.${minor}.${patch}${suffix}`;\n }\n}\n"]}
|
@@ -32,7 +32,7 @@ class HelmDatasource extends datasource_1.Datasource {
|
|
32
32
|
return val;
|
33
33
|
}
|
34
34
|
async getReleases({ packageName, registryUrl: helmRepository, }) {
|
35
|
-
|
35
|
+
/* v8 ignore next 3 -- should never happen */
|
36
36
|
if (!helmRepository) {
|
37
37
|
return null;
|
38
38
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/helm/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,qEAA8D;AAC9D,2CAAwD;AACxD,8EAAwD;AACxD,8CAA2C;AAG3C,qCAAgD;AAEhD,MAAa,cAAe,SAAQ,uBAAU;IAC5C,MAAM,CAAU,EAAE,GAAG,MAAM,CAAC;IAE5B;QACE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAEiB,mBAAmB,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAExD,aAAa,GAAG;QAChC,kBAAkB,EAAE,0BAA0B;KAC/C,CAAC;IAEgB,iBAAiB,GAAG,cAAc,CAAC,EAAE,CAAC;IAEtC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,6EAA6E,CAAC;IAC9D,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,2FAA2F,CAAC;IAMxF,AAAN,KAAK,CAAC,iBAAiB,CAAC,cAAsB;QAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI;aACjC,WAAW,CACV,YAAY,EACZ,EAAE,OAAO,EAAE,IAAA,yBAAmB,EAAC,cAAc,CAAC,EAAE,EAChD,6BAAoB,CACrB;aACA,MAAM,EAAE,CAAC;QAEZ,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,EAAE,cAAc,GACT;QAClB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/helm/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,qEAA8D;AAC9D,2CAAwD;AACxD,8EAAwD;AACxD,8CAA2C;AAG3C,qCAAgD;AAEhD,MAAa,cAAe,SAAQ,uBAAU;IAC5C,MAAM,CAAU,EAAE,GAAG,MAAM,CAAC;IAE5B;QACE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAEiB,mBAAmB,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAExD,aAAa,GAAG;QAChC,kBAAkB,EAAE,0BAA0B;KAC/C,CAAC;IAEgB,iBAAiB,GAAG,cAAc,CAAC,EAAE,CAAC;IAEtC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,6EAA6E,CAAC;IAC9D,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,2FAA2F,CAAC;IAMxF,AAAN,KAAK,CAAC,iBAAiB,CAAC,cAAsB;QAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI;aACjC,WAAW,CACV,YAAY,EACZ,EAAE,OAAO,EAAE,IAAA,yBAAmB,EAAC,cAAc,CAAC,EAAE,EAChD,6BAAoB,CACrB;aACA,MAAM,EAAE,CAAC;QAEZ,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,EAAE,cAAc,GACT;QAClB,6CAA6C;QAC7C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,eAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,WAAW,EAAE,EAC3B,SAAS,WAAW,qCAAqC,cAAc,EAAE,CAC1E,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;;AA7DH,wCA8DC;AApCO;IAJL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,cAAc,CAAC,EAAE,EAAE;QAC5C,GAAG,EAAE,CAAC,cAAsB,EAAE,EAAE,CAAC,mBAAmB,cAAc,EAAE;KACrE,CAAC;uDAeD","sourcesContent":["import { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport * as helmVersioning from '../../versioning/helm';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport type { HelmRepositoryData } from './schema';\nimport { HelmRepositorySchema } from './schema';\n\nexport class HelmDatasource extends Datasource {\n static readonly id = 'helm';\n\n constructor() {\n super(HelmDatasource.id);\n }\n\n override readonly defaultRegistryUrls = ['https://charts.helm.sh/stable'];\n\n override readonly defaultConfig = {\n commitMessageTopic: 'Helm release {{depName}}',\n };\n\n override readonly defaultVersioning = helmVersioning.id;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timstamp is determined from the `created` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `home` field or the `sources` field in the results.';\n\n @cache({\n namespace: `datasource-${HelmDatasource.id}`,\n key: (helmRepository: string) => `repository-data:${helmRepository}`,\n })\n async getRepositoryData(helmRepository: string): Promise<HelmRepositoryData> {\n const { val, err } = await this.http\n .getYamlSafe(\n 'index.yaml',\n { baseUrl: ensureTrailingSlash(helmRepository) },\n HelmRepositorySchema,\n )\n .unwrap();\n\n if (err) {\n this.handleGenericErrors(err);\n }\n\n return val;\n }\n\n async getReleases({\n packageName,\n registryUrl: helmRepository,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!helmRepository) {\n return null;\n }\n\n const repositoryData = await this.getRepositoryData(helmRepository);\n const releases = repositoryData[packageName];\n if (!releases) {\n logger.debug(\n { dependency: packageName },\n `Entry ${packageName} doesn't exist in index.yaml from ${helmRepository}`,\n );\n return null;\n }\n return releases;\n }\n}\n"]}
|
@@ -20,7 +20,7 @@ class HexDatasource extends datasource_1.Datasource {
|
|
20
20
|
sourceUrlSupport = 'package';
|
21
21
|
sourceUrlNote = 'The source URL is determined from the `Github` field in the results.';
|
22
22
|
async getReleases({ packageName, registryUrl, }) {
|
23
|
-
|
23
|
+
/* v8 ignore next 3 -- should never happen */
|
24
24
|
if (!registryUrl) {
|
25
25
|
return null;
|
26
26
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/hex/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,qEAA8D;AAC9D,2CAAiD;AACjD,4EAAsD;AACtD,8CAA2C;AAE3C,qCAAsC;AAEtC,MAAa,aAAc,SAAQ,uBAAU;IAC3C,MAAM,CAAU,EAAE,GAAG,KAAK,CAAC;IAE3B;QACE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAEiB,mBAAmB,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEzC,iBAAiB,GAAG,aAAa,CAAC,EAAE,CAAC;IAErC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,6EAA6E,CAAC;IAC9D,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,sEAAsE,CAAC;IAMnE,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/hex/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,qEAA8D;AAC9D,2CAAiD;AACjD,4EAAsD;AACtD,8CAA2C;AAE3C,qCAAsC;AAEtC,MAAa,aAAc,SAAQ,uBAAU;IAC3C,MAAM,CAAU,EAAE,GAAG,KAAK,CAAC;IAE3B;QACE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAEiB,mBAAmB,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEzC,iBAAiB,GAAG,aAAa,CAAC,EAAE,CAAC;IAErC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,6EAA6E,CAAC;IAC9D,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,sEAAsE,CAAC;IAMnE,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,6CAA6C;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wCAAwC;QACxC,oFAAoF;QACpF,kCAAkC;QAClC,mDAAmD;QACnD,yDAAyD;QACzD,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClE,MAAM,qBAAqB,GAAG,gBAAgB;YAC5C,CAAC,CAAC,SAAS,gBAAgB,GAAG;YAC9B,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,MAAM,GAAG,IAAA,kBAAY,EACzB,WAAW,EACX,QAAQ,qBAAqB,YAAY,cAAc,EAAE,CAC1D,CAAC;QAEF,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI;aACzC,WAAW,CAAC,MAAM,EAAE,mBAAU,CAAC;aAC/B,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,eAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,EACpD,yBAAyB,CAC1B,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,EAAE,CAAC;QAEZ,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;;AA7DH,sCA8DC;AAxCO;IAJL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,aAAa,CAAC,EAAE,EAAE;QAC3C,GAAG,EAAE,CAAC,EAAE,WAAW,EAAqB,EAAE,EAAE,CAAC,WAAW;KACzD,CAAC;gDAwCD","sourcesContent":["import { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { joinUrlParts } from '../../../util/url';\nimport * as hexVersioning from '../../versioning/hex';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { HexRelease } from './schema';\n\nexport class HexDatasource extends Datasource {\n static readonly id = 'hex';\n\n constructor() {\n super(HexDatasource.id);\n }\n\n override readonly defaultRegistryUrls = ['https://hex.pm'];\n\n override readonly defaultVersioning = hexVersioning.id;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined the `inserted_at` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `Github` field in the results.';\n\n @cache({\n namespace: `datasource-${HexDatasource.id}`,\n key: ({ packageName }: GetReleasesConfig) => packageName,\n })\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n // Get dependency name from packageName.\n // If the dependency is private packageName contains organization name as following:\n // hexPackageName:organizationName\n // hexPackageName is used to pass it in hex dep url\n // organizationName is used for accessing to private deps\n const [hexPackageName, organizationName] = packageName.split(':');\n const organizationUrlPrefix = organizationName\n ? `repos/${organizationName}/`\n : '';\n\n const hexUrl = joinUrlParts(\n registryUrl,\n `/api/${organizationUrlPrefix}packages/${hexPackageName}`,\n );\n\n const { val: result, err } = await this.http\n .getJsonSafe(hexUrl, HexRelease)\n .onError((err) => {\n logger.warn(\n { url: hexUrl, datasource: 'hex', packageName, err },\n 'Error fetching from url',\n );\n })\n .unwrap();\n\n if (err) {\n this.handleGenericErrors(err);\n }\n\n return result;\n }\n}\n"]}
|
@@ -56,7 +56,6 @@ class JavaVersionDatasource extends datasource_1.Datasource {
|
|
56
56
|
}
|
57
57
|
}
|
58
58
|
catch (err) {
|
59
|
-
// istanbul ignore else: not testable with nock
|
60
59
|
if (err instanceof http_1.HttpError) {
|
61
60
|
if (err.response?.statusCode !== 404) {
|
62
61
|
throw new external_host_error_1.ExternalHostError(err);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/java-version/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,mFAA8E;AAC9E,qEAA8D;AAC9D,6CAA+C;AAC/C,8CAA2C;AAE3C,qCAKkB;AAGlB,MAAa,qBAAsB,SAAQ,uBAAU;IACnD,MAAM,CAAU,EAAE,GAAG,mBAAU,CAAC;IAEhC;QACE,KAAK,CAAC,mBAAU,CAAC,CAAC;IACpB,CAAC;IAEiB,qBAAqB,GAAG,KAAK,CAAC;IAE9B,mBAAmB,GAAG,CAAC,2BAAkB,CAAC,CAAC;IAE3C,OAAO,GAAG,IAAI,CAAC;IAEzB,KAAK,CAAC,eAAe,CAC3B,GAAW,EACX,IAAY;QAEZ,MAAM,KAAK,GAAG,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,KAAK,GACT,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAuB,KAAK,CAAC,CAAC;YAChE,OAAO,CACL,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1C,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC,IAAI,IAAI,CACZ,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IACE,IAAI,KAAK,CAAC;gBACV,GAAG,YAAY,gBAAS;gBACxB,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK,GAAG,EAChC,CAAC;gBACD,gBAAgB;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAQK,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,MAAM,SAAS,GAAG,IAAA,qBAAY,EAAC,WAAW,CAAC,CAAC;QAC5C,eAAM,CAAC,KAAK,CACV,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,EACvC,uBAAuB,CACxB,CAAC;QACF,uBAAuB;QACvB,MAAM,GAAG,GAAG,GAAG,WAAY,sCAAsC,iBAAQ,eAAe,SAAS,+DAA+D,CAAC;QAEjK,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE,sBAAsB;YAChC,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,CAAC;YACH,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrD,OAAO,QAAQ,EAAE,CAAC;gBAChB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,iBAAQ,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;oBAC/C,MAAM;gBACR,CAAC;gBACD,IAAI,IAAI,CAAC,CAAC;gBACV,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/java-version/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { HttpError } from '../../../util/http';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport {\n datasource,\n defaultRegistryUrl,\n getImageType,\n pageSize,\n} from './common';\nimport type { AdoptiumJavaResponse } from './types';\n\nexport class JavaVersionDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override readonly customRegistrySupport = false;\n\n override readonly defaultRegistryUrls = [defaultRegistryUrl];\n\n override readonly caching = true;\n\n private async getPageReleases(\n url: string,\n page: number,\n ): Promise<Release[] | null> {\n const pgUrl = `${url}&page=${page}`;\n try {\n const pgRes =\n await this.http.getJsonUnchecked<AdoptiumJavaResponse>(pgUrl);\n return (\n pgRes?.body?.versions?.map(({ semver }) => ({\n version: semver,\n })) ?? null\n );\n } catch (err) {\n if (\n page !== 0 &&\n err instanceof HttpError &&\n err.response?.statusCode === 404\n ) {\n // No more pages\n return null;\n }\n\n throw err;\n }\n }\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl!}:${getImageType(packageName)}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const imageType = getImageType(packageName);\n logger.trace(\n { registryUrl, packageName, imageType },\n 'fetching java release',\n );\n // TODO: types (#22198)\n const url = `${registryUrl!}v3/info/release_versions?page_size=${pageSize}&image_type=${imageType}&project=jdk&release_type=ga&sort_method=DATE&sort_order=DESC`;\n\n const result: ReleaseResult = {\n homepage: 'https://adoptium.net',\n releases: [],\n };\n try {\n let page = 0;\n let releases = await this.getPageReleases(url, page);\n while (releases) {\n result.releases.push(...releases);\n if (releases.length !== pageSize || page >= 50) {\n break;\n }\n page += 1;\n releases = await this.getPageReleases(url, page);\n }\n } catch (err) {\n if (err instanceof HttpError) {\n if (err.response?.statusCode !== 404) {\n throw new ExternalHostError(err);\n }\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length ? result : null;\n }\n}\n"]}
|
@@ -23,7 +23,7 @@ class JenkinsPluginsDatasource extends datasource_1.Datasource {
|
|
23
23
|
sourceUrlSupport = 'package';
|
24
24
|
sourceUrlNote = 'The source URL is determined from the `scm` field in the results.';
|
25
25
|
async getReleases({ packageName, registryUrl, }) {
|
26
|
-
|
26
|
+
/* v8 ignore next 3 -- should never happen */
|
27
27
|
if (!registryUrl) {
|
28
28
|
return null;
|
29
29
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/jenkins-plugins/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,qEAA8D;AAC9D,+CAA4C;AAC5C,uDAAsD;AACtD,2CAAwD;AACxD,8CAA2C;AAO3C,MAAa,wBAAyB,SAAQ,uBAAU;IACtD,MAAM,CAAU,EAAE,GAAG,iBAAiB,CAAC;IAEvC;QACE,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAEiB,qBAAqB,GAAG,IAAI,CAAC;IAE7B,mBAAmB,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAErD,gBAAgB,GAAG,MAAM,CAAC;IAEpC,MAAM,CAAU,eAAe,GAAG,mCAAmC,CAAC;IACtE,MAAM,CAAU,mBAAmB,GAAG,8BAA8B,CAAC;IAE3D,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,qGAAqG,CAAC;IACtF,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,mEAAmE,CAAC;IAEtE,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/jenkins-plugins/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { clone } from '../../../util/clone';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport type {\n JenkinsPluginsInfoResponse,\n JenkinsPluginsVersionsResponse,\n} from './types';\n\nexport class JenkinsPluginsDatasource extends Datasource {\n static readonly id = 'jenkins-plugins';\n\n constructor() {\n super(JenkinsPluginsDatasource.id);\n }\n\n override readonly customRegistrySupport = true;\n\n override readonly defaultRegistryUrls = ['https://updates.jenkins.io'];\n\n override readonly registryStrategy = 'hunt';\n\n private static readonly packageInfoPath = 'current/update-center.actual.json';\n private static readonly packageVersionsPath = 'current/plugin-versions.json';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The releaseTimestamp is determined from the `releaseTimestamp` or `buildDate` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `scm` field in the results.';\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n const updateSiteUrl = ensureTrailingSlash(registryUrl);\n\n const plugins = await this.getJenkinsPluginInfo(updateSiteUrl);\n const plugin = plugins[packageName];\n if (!plugin) {\n return null;\n }\n\n const result = clone(plugin);\n const versions = await this.getJenkinsPluginVersions(updateSiteUrl);\n const releases = versions[packageName];\n result.releases = releases ? clone(releases) : [];\n return result;\n }\n\n @cache({\n namespace: `datasource-${JenkinsPluginsDatasource.id}`,\n key: 'info',\n ttlMinutes: 1440,\n })\n async getJenkinsPluginInfo(\n updateSiteUrl: string,\n ): Promise<Record<string, ReleaseResult>> {\n const { plugins } =\n await this.getJenkinsUpdateCenterResponse<JenkinsPluginsInfoResponse>(\n `${updateSiteUrl}${JenkinsPluginsDatasource.packageInfoPath}`,\n );\n\n const info: Record<string, ReleaseResult> = {};\n for (const name of Object.keys(plugins ?? [])) {\n info[name] = {\n releases: [], // releases\n sourceUrl: plugins[name]?.scm,\n };\n }\n return info;\n }\n\n @cache({\n namespace: `datasource-${JenkinsPluginsDatasource.id}`,\n key: 'versions',\n })\n async getJenkinsPluginVersions(\n updateSiteUrl: string,\n ): Promise<Record<string, Release[]>> {\n const { plugins } =\n await this.getJenkinsUpdateCenterResponse<JenkinsPluginsVersionsResponse>(\n `${updateSiteUrl}${JenkinsPluginsDatasource.packageVersionsPath}`,\n );\n\n const versions: Record<string, Release[]> = {};\n for (const name of Object.keys(plugins ?? [])) {\n versions[name] = Object.keys(plugins[name]).map((version) => {\n const downloadUrl = plugins[name][version]?.url;\n const buildDate = plugins[name][version]?.buildDate;\n const releaseTimestamp =\n plugins[name][version]?.releaseTimestamp ?? asTimestamp(buildDate);\n const jenkins = plugins[name][version]?.requiredCore;\n const constraints = jenkins ? { jenkins: [`>=${jenkins}`] } : undefined;\n return {\n version,\n downloadUrl,\n releaseTimestamp,\n ...(constraints && { constraints }),\n };\n });\n }\n return versions;\n }\n\n private async getJenkinsUpdateCenterResponse<T>(url: string): Promise<T> {\n let response: T;\n\n try {\n logger.debug(`jenkins-plugins: Fetching Jenkins plugins from ${url}`);\n const startTime = Date.now();\n response = (await this.http.getJsonUnchecked<T>(url)).body;\n const durationMs = Math.round(Date.now() - startTime);\n logger.debug(\n { durationMs },\n `jenkins-plugins: Fetched Jenkins plugins from ${url}`,\n );\n } catch (err) /* istanbul ignore next */ {\n this.handleGenericErrors(err);\n }\n\n return response;\n }\n}\n"]}
|
@@ -16,7 +16,7 @@ const datasource_1 = require("../datasource");
|
|
16
16
|
const common_1 = require("./common");
|
17
17
|
const util_1 = require("./util");
|
18
18
|
function getLatestSuitableVersion(releases) {
|
19
|
-
|
19
|
+
/* v8 ignore next 3 -- TODO: add test */
|
20
20
|
if (!releases?.length) {
|
21
21
|
return null;
|
22
22
|
}
|
@@ -54,7 +54,7 @@ class MavenDatasource extends datasource_1.Datasource {
|
|
54
54
|
const cacheNamespace = 'datasource-maven:metadata-xml';
|
55
55
|
const cacheKey = `v2:${metadataUrl}`;
|
56
56
|
const cachedVersions = await packageCache.get(cacheNamespace, cacheKey);
|
57
|
-
/*
|
57
|
+
/* v8 ignore next 3 -- TODO: add test */
|
58
58
|
if (cachedVersions) {
|
59
59
|
return cachedVersions;
|
60
60
|
}
|
@@ -70,7 +70,7 @@ class MavenDatasource extends datasource_1.Datasource {
|
|
70
70
|
return versions;
|
71
71
|
}
|
72
72
|
async getReleases({ packageName, registryUrl, }) {
|
73
|
-
|
73
|
+
/* v8 ignore next 3 -- should never happen */
|
74
74
|
if (!registryUrl) {
|
75
75
|
return null;
|
76
76
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/maven/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { XmlDocument } from 'xmldoc';\nimport { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport * as packageCache from '../../../util/cache/package';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport mavenVersion from '../../versioning/maven';\nimport * as mavenVersioning from '../../versioning/maven';\nimport { compare } from '../../versioning/maven/compare';\nimport { Datasource } from '../datasource';\nimport type {\n GetReleasesConfig,\n PostprocessReleaseConfig,\n PostprocessReleaseResult,\n RegistryStrategy,\n Release,\n ReleaseResult,\n} from '../types';\nimport { MAVEN_REPO } from './common';\nimport type { MavenDependency } from './types';\nimport {\n checkResource,\n createUrlForDependencyPom,\n downloadMavenXml,\n getDependencyInfo,\n getDependencyParts,\n getMavenUrl,\n} from './util';\n\nfunction getLatestSuitableVersion(releases: Release[]): string | null {\n // istanbul ignore if\n if (!releases?.length) {\n return null;\n }\n const allVersions = releases.map(({ version }) => version);\n const stableVersions = allVersions.filter((x) => mavenVersion.isStable(x));\n const versions = stableVersions.length ? stableVersions : allVersions;\n return versions.reduce((latestVersion, version) =>\n compare(version, latestVersion) === 1\n ? version\n : /* istanbul ignore next: hard to test */ latestVersion,\n );\n}\n\nfunction extractVersions(metadata: XmlDocument): string[] {\n const versions = metadata.descendantWithPath('versioning.versions');\n const elements = versions?.childrenNamed('version');\n if (!elements) {\n return [];\n }\n return elements.map((el) => el.val);\n}\n\nexport const defaultRegistryUrls = [MAVEN_REPO];\n\nexport class MavenDatasource extends Datasource {\n static id = 'maven';\n\n override readonly caching = true;\n\n override readonly defaultRegistryUrls = defaultRegistryUrls;\n\n override readonly defaultVersioning: string = mavenVersioning.id;\n\n override readonly registryStrategy: RegistryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `Last-Modified` header or the `lastModified` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `scm` tags in the results.';\n\n constructor(id = MavenDatasource.id) {\n super(id);\n }\n\n async fetchVersionsFromMetadata(\n dependency: MavenDependency,\n repoUrl: string,\n ): Promise<string[]> {\n const metadataUrl = getMavenUrl(dependency, repoUrl, 'maven-metadata.xml');\n\n const cacheNamespace = 'datasource-maven:metadata-xml';\n const cacheKey = `v2:${metadataUrl}`;\n const cachedVersions = await packageCache.get<string[]>(\n cacheNamespace,\n cacheKey,\n );\n /* istanbul ignore if */\n if (cachedVersions) {\n return cachedVersions;\n }\n\n const { isCacheable, xml: mavenMetadata } = await downloadMavenXml(\n this.http,\n metadataUrl,\n );\n if (!mavenMetadata) {\n return [];\n }\n\n const versions = extractVersions(mavenMetadata);\n const cachePrivatePackages = GlobalConfig.get(\n 'cachePrivatePackages',\n false,\n );\n if (cachePrivatePackages || isCacheable) {\n await packageCache.set(cacheNamespace, cacheKey, versions, 30);\n }\n\n return versions;\n }\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const dependency = getDependencyParts(packageName);\n const repoUrl = ensureTrailingSlash(registryUrl);\n\n logger.debug(`Looking up ${dependency.display} in repository ${repoUrl}`);\n\n const metadataVersions = await this.fetchVersionsFromMetadata(\n dependency,\n repoUrl,\n );\n if (!metadataVersions?.length) {\n return null;\n }\n const releases = metadataVersions.map((version) => ({ version }));\n\n logger.debug(\n `Found ${releases.length} new releases for ${dependency.display} in repository ${repoUrl}`,\n );\n\n const latestSuitableVersion = getLatestSuitableVersion(releases);\n const dependencyInfo =\n latestSuitableVersion &&\n (await getDependencyInfo(\n this.http,\n dependency,\n repoUrl,\n latestSuitableVersion,\n ));\n\n const result: ReleaseResult = {\n ...dependency,\n ...dependencyInfo,\n releases,\n };\n\n if (!this.defaultRegistryUrls.includes(registryUrl)) {\n result.isPrivate = true;\n }\n\n return result;\n }\n\n @cache({\n namespace: `datasource-maven`,\n key: (\n { registryUrl, packageName }: PostprocessReleaseConfig,\n { version, versionOrig }: Release,\n ) =>\n `postprocessRelease:${registryUrl}:${packageName}:${versionOrig ? `${versionOrig}:${version}` : `${version}`}`,\n ttlMinutes: 24 * 60,\n })\n override async postprocessRelease(\n { packageName, registryUrl }: PostprocessReleaseConfig,\n release: Release,\n ): Promise<PostprocessReleaseResult> {\n if (!packageName || !registryUrl) {\n return release;\n }\n\n const dependency = getDependencyParts(packageName);\n\n const pomUrl = await createUrlForDependencyPom(\n this.http,\n release.versionOrig ?? release.version,\n dependency,\n registryUrl,\n );\n\n const artifactUrl = getMavenUrl(dependency, registryUrl, pomUrl);\n\n const res = await checkResource(this.http, artifactUrl);\n\n if (res === 'not-found' || res === 'error') {\n return 'reject';\n }\n\n if (is.date(res)) {\n release.releaseTimestamp = asTimestamp(res.toISOString());\n }\n\n return release;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/maven/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { XmlDocument } from 'xmldoc';\nimport { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport * as packageCache from '../../../util/cache/package';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport mavenVersion from '../../versioning/maven';\nimport * as mavenVersioning from '../../versioning/maven';\nimport { compare } from '../../versioning/maven/compare';\nimport { Datasource } from '../datasource';\nimport type {\n GetReleasesConfig,\n PostprocessReleaseConfig,\n PostprocessReleaseResult,\n RegistryStrategy,\n Release,\n ReleaseResult,\n} from '../types';\nimport { MAVEN_REPO } from './common';\nimport type { MavenDependency } from './types';\nimport {\n checkResource,\n createUrlForDependencyPom,\n downloadMavenXml,\n getDependencyInfo,\n getDependencyParts,\n getMavenUrl,\n} from './util';\n\nfunction getLatestSuitableVersion(releases: Release[]): string | null {\n /* v8 ignore next 3 -- TODO: add test */\n if (!releases?.length) {\n return null;\n }\n const allVersions = releases.map(({ version }) => version);\n const stableVersions = allVersions.filter((x) => mavenVersion.isStable(x));\n const versions = stableVersions.length ? stableVersions : allVersions;\n return versions.reduce((latestVersion, version) =>\n compare(version, latestVersion) === 1\n ? version\n : /* istanbul ignore next: hard to test */ latestVersion,\n );\n}\n\nfunction extractVersions(metadata: XmlDocument): string[] {\n const versions = metadata.descendantWithPath('versioning.versions');\n const elements = versions?.childrenNamed('version');\n if (!elements) {\n return [];\n }\n return elements.map((el) => el.val);\n}\n\nexport const defaultRegistryUrls = [MAVEN_REPO];\n\nexport class MavenDatasource extends Datasource {\n static id = 'maven';\n\n override readonly caching = true;\n\n override readonly defaultRegistryUrls = defaultRegistryUrls;\n\n override readonly defaultVersioning: string = mavenVersioning.id;\n\n override readonly registryStrategy: RegistryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `Last-Modified` header or the `lastModified` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `scm` tags in the results.';\n\n constructor(id = MavenDatasource.id) {\n super(id);\n }\n\n async fetchVersionsFromMetadata(\n dependency: MavenDependency,\n repoUrl: string,\n ): Promise<string[]> {\n const metadataUrl = getMavenUrl(dependency, repoUrl, 'maven-metadata.xml');\n\n const cacheNamespace = 'datasource-maven:metadata-xml';\n const cacheKey = `v2:${metadataUrl}`;\n const cachedVersions = await packageCache.get<string[]>(\n cacheNamespace,\n cacheKey,\n );\n /* v8 ignore next 3 -- TODO: add test */\n if (cachedVersions) {\n return cachedVersions;\n }\n\n const { isCacheable, xml: mavenMetadata } = await downloadMavenXml(\n this.http,\n metadataUrl,\n );\n if (!mavenMetadata) {\n return [];\n }\n\n const versions = extractVersions(mavenMetadata);\n const cachePrivatePackages = GlobalConfig.get(\n 'cachePrivatePackages',\n false,\n );\n if (cachePrivatePackages || isCacheable) {\n await packageCache.set(cacheNamespace, cacheKey, versions, 30);\n }\n\n return versions;\n }\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const dependency = getDependencyParts(packageName);\n const repoUrl = ensureTrailingSlash(registryUrl);\n\n logger.debug(`Looking up ${dependency.display} in repository ${repoUrl}`);\n\n const metadataVersions = await this.fetchVersionsFromMetadata(\n dependency,\n repoUrl,\n );\n if (!metadataVersions?.length) {\n return null;\n }\n const releases = metadataVersions.map((version) => ({ version }));\n\n logger.debug(\n `Found ${releases.length} new releases for ${dependency.display} in repository ${repoUrl}`,\n );\n\n const latestSuitableVersion = getLatestSuitableVersion(releases);\n const dependencyInfo =\n latestSuitableVersion &&\n (await getDependencyInfo(\n this.http,\n dependency,\n repoUrl,\n latestSuitableVersion,\n ));\n\n const result: ReleaseResult = {\n ...dependency,\n ...dependencyInfo,\n releases,\n };\n\n if (!this.defaultRegistryUrls.includes(registryUrl)) {\n result.isPrivate = true;\n }\n\n return result;\n }\n\n @cache({\n namespace: `datasource-maven`,\n key: (\n { registryUrl, packageName }: PostprocessReleaseConfig,\n { version, versionOrig }: Release,\n ) =>\n `postprocessRelease:${registryUrl}:${packageName}:${versionOrig ? `${versionOrig}:${version}` : `${version}`}`,\n ttlMinutes: 24 * 60,\n })\n override async postprocessRelease(\n { packageName, registryUrl }: PostprocessReleaseConfig,\n release: Release,\n ): Promise<PostprocessReleaseResult> {\n if (!packageName || !registryUrl) {\n return release;\n }\n\n const dependency = getDependencyParts(packageName);\n\n const pomUrl = await createUrlForDependencyPom(\n this.http,\n release.versionOrig ?? release.version,\n dependency,\n registryUrl,\n );\n\n const artifactUrl = getMavenUrl(dependency, registryUrl, pomUrl);\n\n const res = await checkResource(this.http, artifactUrl);\n\n if (res === 'not-found' || res === 'error') {\n return 'reject';\n }\n\n if (is.date(res)) {\n release.releaseTimestamp = asTimestamp(res.toISOString());\n }\n\n return release;\n }\n}\n"]}
|
@@ -327,7 +327,7 @@ async function getSnapshotFullVersion(http, version, dependency, repoUrl) {
|
|
327
327
|
// the metadata located at http://<repo>/<group>/<artifact>/<version-SNAPSHOT>/maven-metadata.xml
|
328
328
|
const metadataUrl = getMavenUrl(dependency, repoUrl, `${version}/maven-metadata.xml`);
|
329
329
|
const { xml: mavenMetadata } = await downloadMavenXml(http, metadataUrl);
|
330
|
-
|
330
|
+
/* v8 ignore next 3 -- hard to test */
|
331
331
|
if (!mavenMetadata) {
|
332
332
|
return null;
|
333
333
|
}
|
@@ -358,7 +358,7 @@ async function getDependencyInfo(http, dependency, repoUrl, version, recursionLi
|
|
358
358
|
const path = await createUrlForDependencyPom(http, version, dependency, repoUrl);
|
359
359
|
const pomUrl = getMavenUrl(dependency, repoUrl, path);
|
360
360
|
const { xml: pomContent } = await downloadMavenXml(http, pomUrl);
|
361
|
-
|
361
|
+
/* v8 ignore next 3 -- TODO: add test */
|
362
362
|
if (!pomContent) {
|
363
363
|
return result;
|
364
364
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/maven/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { Readable } from 'node:stream';\nimport { GetObjectCommand, HeadObjectCommand } from '@aws-sdk/client-s3';\nimport { DateTime } from 'luxon';\nimport { XmlDocument } from 'xmldoc';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { type Http, HttpError } from '../../../util/http';\nimport type { HttpOptions, HttpResponse } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { Result } from '../../../util/result';\nimport type { S3UrlParts } from '../../../util/s3';\nimport { getS3Client, parseS3Url } from '../../../util/s3';\nimport { streamToString } from '../../../util/streams';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash, parseUrl } from '../../../util/url';\nimport { getGoogleAuthToken } from '../util';\nimport { MAVEN_REPO } from './common';\nimport type {\n DependencyInfo,\n HttpResourceCheckResult,\n MavenDependency,\n MavenFetchResult,\n MavenFetchSuccess,\n MavenXml,\n} from './types';\n\nfunction getHost(url: string): string | null {\n return parseUrl(url)?.host ?? /* istanbul ignore next: not possible */ null;\n}\n\nfunction isTemporaryError(err: HttpError): boolean {\n if (err.code === 'ECONNRESET') {\n return true;\n }\n\n if (err.response) {\n const status = err.response.statusCode;\n return status === 429 || (status >= 500 && status < 600);\n }\n\n return false;\n}\n\nfunction isHostError(err: HttpError): boolean {\n return err.code === 'ETIMEDOUT';\n}\n\nfunction isNotFoundError(err: HttpError): boolean {\n return err.code === 'ENOTFOUND' || err.response?.statusCode === 404;\n}\n\nfunction isPermissionsIssue(err: HttpError): boolean {\n const status = err.response?.statusCode;\n return status === 401 || status === 403;\n}\n\nfunction isConnectionError(err: HttpError): boolean {\n return (\n err.code === 'EAI_AGAIN' ||\n err.code === 'ERR_TLS_CERT_ALTNAME_INVALID' ||\n err.code === 'ECONNREFUSED'\n );\n}\n\nfunction isUnsupportedHostError(err: HttpError): boolean {\n return err.name === 'UnsupportedProtocolError';\n}\n\nexport async function downloadHttpProtocol(\n http: Http,\n pkgUrl: URL | string,\n opts: HttpOptions = {},\n): Promise<MavenFetchResult> {\n const url = pkgUrl.toString();\n const fetchResult = await Result.wrap<HttpResponse, Error>(\n http.getText(url, opts),\n )\n .transform((res): MavenFetchSuccess => {\n const result: MavenFetchSuccess = { data: res.body };\n\n if (!res.authorization) {\n result.isCacheable = true;\n }\n\n const lastModified = asTimestamp(res?.headers?.['last-modified']);\n if (lastModified) {\n result.lastModified = lastModified;\n }\n\n return result;\n })\n .catch((err): MavenFetchResult => {\n // istanbul ignore next: never happens, needs for type narrowing\n if (!(err instanceof HttpError)) {\n return Result.err({ type: 'unknown', err });\n }\n\n const failedUrl = url;\n if (err.message === HOST_DISABLED) {\n logger.trace({ failedUrl }, 'Host disabled');\n return Result.err({ type: 'host-disabled' });\n }\n\n if (isNotFoundError(err)) {\n logger.trace({ failedUrl }, `Url not found`);\n return Result.err({ type: 'not-found' });\n }\n\n if (isHostError(err)) {\n logger.debug(`Cannot connect to host ${failedUrl}`);\n return Result.err({ type: 'host-error' });\n }\n\n if (isPermissionsIssue(err)) {\n logger.debug(\n `Dependency lookup unauthorized. Please add authentication with a hostRule for ${failedUrl}`,\n );\n return Result.err({ type: 'permission-issue' });\n }\n\n if (isTemporaryError(err)) {\n logger.debug({ failedUrl, err }, 'Temporary error');\n if (getHost(url) === getHost(MAVEN_REPO)) {\n return Result.err({ type: 'maven-central-temporary-error', err });\n } else {\n return Result.err({ type: 'temporary-error' });\n }\n }\n\n if (isConnectionError(err)) {\n logger.debug(`Connection refused to maven registry ${failedUrl}`);\n return Result.err({ type: 'connection-error' });\n }\n\n if (isUnsupportedHostError(err)) {\n logger.debug(`Unsupported host ${failedUrl}`);\n return Result.err({ type: 'unsupported-host' });\n }\n\n logger.info({ failedUrl, err }, 'Unknown HTTP download error');\n return Result.err({ type: 'unknown', err });\n });\n\n const { err } = fetchResult.unwrap();\n if (err?.type === 'maven-central-temporary-error') {\n throw new ExternalHostError(err.err);\n }\n\n return fetchResult;\n}\n\nexport async function downloadHttpContent(\n http: Http,\n pkgUrl: URL | string,\n opts: HttpOptions = {},\n): Promise<string | null> {\n const fetchResult = await downloadHttpProtocol(http, pkgUrl, opts);\n return fetchResult.transform(({ data }) => data).unwrapOrNull();\n}\n\nfunction isS3NotFound(err: Error): boolean {\n return err.message === 'NotFound' || err.message === 'NoSuchKey';\n}\n\nexport async function downloadS3Protocol(\n pkgUrl: URL,\n): Promise<MavenFetchResult> {\n logger.trace({ url: pkgUrl.toString() }, `Attempting to load S3 dependency`);\n\n const s3Url = parseS3Url(pkgUrl);\n if (!s3Url) {\n return Result.err({ type: 'invalid-url' });\n }\n\n return await Result.wrap(() => {\n const command = new GetObjectCommand(s3Url);\n const client = getS3Client();\n return client.send(command);\n })\n .transform(\n async ({\n Body,\n LastModified,\n DeleteMarker,\n }): Promise<MavenFetchResult> => {\n if (DeleteMarker) {\n logger.trace(\n { failedUrl: pkgUrl.toString() },\n 'Maven S3 lookup error: DeleteMarker encountered',\n );\n return Result.err({ type: 'not-found' });\n }\n\n if (!(Body instanceof Readable)) {\n logger.debug(\n { failedUrl: pkgUrl.toString() },\n 'Maven S3 lookup error: unsupported Body type',\n );\n return Result.err({ type: 'unsupported-format' });\n }\n\n const data = await streamToString(Body);\n const result: MavenFetchSuccess = { data };\n\n const lastModified = asTimestamp(LastModified);\n if (lastModified) {\n result.lastModified = lastModified;\n }\n\n return Result.ok(result);\n },\n )\n .catch((err): MavenFetchResult => {\n if (!(err instanceof Error)) {\n return Result.err(err);\n }\n\n const failedUrl = pkgUrl.toString();\n\n if (err.name === 'CredentialsProviderError') {\n logger.debug(\n { failedUrl },\n 'Maven S3 lookup error: credentials provider error, check \"AWS_ACCESS_KEY_ID\" and \"AWS_SECRET_ACCESS_KEY\" variables',\n );\n return Result.err({ type: 'credentials-error' });\n }\n\n if (err.message === 'Region is missing') {\n logger.debug(\n { failedUrl },\n 'Maven S3 lookup error: missing region, check \"AWS_REGION\" variable',\n );\n return Result.err({ type: 'missing-aws-region' });\n }\n\n if (isS3NotFound(err)) {\n logger.trace({ failedUrl }, 'Maven S3 lookup error: object not found');\n return Result.err({ type: 'not-found' });\n }\n\n logger.debug({ failedUrl, err }, 'Maven S3 lookup error: unknown error');\n return Result.err({ type: 'unknown', err });\n });\n}\n\nexport async function downloadArtifactRegistryProtocol(\n http: Http,\n pkgUrl: URL,\n): Promise<MavenFetchResult> {\n const opts: HttpOptions = {};\n const host = pkgUrl.host;\n const path = pkgUrl.pathname;\n\n logger.trace({ host, path }, `Using google auth for Maven repository`);\n const auth = await getGoogleAuthToken();\n if (auth) {\n opts.headers = { authorization: `Basic ${auth}` };\n } else {\n logger.once.debug(\n { host, path },\n 'Could not get Google access token, using no auth',\n );\n }\n\n const url = pkgUrl.toString().replace('artifactregistry:', 'https:');\n\n return downloadHttpProtocol(http, url, opts);\n}\n\nasync function checkHttpResource(\n http: Http,\n pkgUrl: URL,\n): Promise<HttpResourceCheckResult> {\n try {\n const res = await http.head(pkgUrl.toString());\n const timestamp = res?.headers?.['last-modified'];\n if (timestamp) {\n const isoTimestamp = asTimestamp(timestamp);\n if (isoTimestamp) {\n const releaseDate = DateTime.fromISO(isoTimestamp, {\n zone: 'UTC',\n }).toJSDate();\n return releaseDate;\n }\n }\n return 'found';\n } catch (err) {\n if (isNotFoundError(err)) {\n return 'not-found';\n }\n\n const failedUrl = pkgUrl.toString();\n logger.debug(\n { failedUrl, statusCode: err.statusCode },\n `Can't check HTTP resource existence`,\n );\n return 'error';\n }\n}\n\nexport async function checkS3Resource(\n s3Url: S3UrlParts,\n): Promise<HttpResourceCheckResult> {\n try {\n const response = await getS3Client().send(new HeadObjectCommand(s3Url));\n if (response.DeleteMarker) {\n return 'not-found';\n }\n if (response.LastModified) {\n return response.LastModified;\n }\n return 'found';\n } catch (err) {\n if (isS3NotFound(err)) {\n return 'not-found';\n } else {\n logger.debug(\n {\n bucket: s3Url.Bucket,\n key: s3Url.Key,\n name: err.name,\n message: err.message,\n },\n `Can't check S3 resource existence`,\n );\n }\n return 'error';\n }\n}\n\nexport async function checkResource(\n http: Http,\n pkgUrl: URL | string,\n): Promise<HttpResourceCheckResult> {\n const parsedUrl = typeof pkgUrl === 'string' ? parseUrl(pkgUrl) : pkgUrl;\n if (parsedUrl === null) {\n return 'error';\n }\n\n const s3Url = parseS3Url(parsedUrl);\n if (s3Url) {\n return await checkS3Resource(s3Url);\n }\n\n if (parsedUrl.protocol === 'http:' || parsedUrl.protocol === 'https:') {\n return await checkHttpResource(http, parsedUrl);\n }\n\n logger.debug(\n { url: pkgUrl.toString() },\n `Unsupported Maven protocol in check resource`,\n );\n return 'not-found';\n}\n\nfunction containsPlaceholder(str: string): boolean {\n return regEx(/\\${.*?}/g).test(str);\n}\n\nexport function getMavenUrl(\n dependency: MavenDependency,\n repoUrl: string,\n path: string,\n): URL {\n return new URL(\n `${dependency.dependencyUrl}/${path}`,\n ensureTrailingSlash(repoUrl),\n );\n}\n\nexport async function downloadMavenXml(\n http: Http,\n pkgUrl: URL,\n): Promise<MavenXml> {\n const protocol = pkgUrl.protocol;\n\n if (protocol === 'http:' || protocol === 'https:') {\n const rawResult = await downloadHttpProtocol(http, pkgUrl);\n const xmlResult = rawResult.transform(({ isCacheable, data }): MavenXml => {\n const xml = new XmlDocument(data);\n return { isCacheable, xml };\n });\n return xmlResult.unwrapOr({});\n }\n\n if (protocol === 'artifactregistry:') {\n const rawResult = await downloadArtifactRegistryProtocol(http, pkgUrl);\n const xmlResult = rawResult.transform(({ isCacheable, data }): MavenXml => {\n const xml = new XmlDocument(data);\n return { isCacheable, xml };\n });\n return xmlResult.unwrapOr({});\n }\n\n if (protocol === 's3:') {\n const rawResult = await downloadS3Protocol(pkgUrl);\n const xmlResult = rawResult.transform(({ isCacheable, data }): MavenXml => {\n const xml = new XmlDocument(data);\n return { xml };\n });\n return xmlResult.unwrapOr({});\n }\n\n logger.debug(\n { url: pkgUrl.toString() },\n `Content is not found for Maven url`,\n );\n return {};\n}\n\nexport function getDependencyParts(packageName: string): MavenDependency {\n const [group, name] = packageName.split(':');\n const dependencyUrl = `${group.replace(regEx(/\\./g), '/')}/${name}`;\n return {\n display: packageName,\n group,\n name,\n dependencyUrl,\n };\n}\n\nfunction extractSnapshotVersion(metadata: XmlDocument): string | null {\n // Parse the maven-metadata.xml for the snapshot version and determine\n // the fixed version of the latest deployed snapshot.\n // The metadata descriptor can be found at\n // https://maven.apache.org/ref/3.3.3/maven-repository-metadata/repository-metadata.html\n //\n // Basically, we need to replace -SNAPSHOT with the artifact timestanp & build number,\n // so for example 1.0.0-SNAPSHOT will become 1.0.0-<timestamp>-<buildNumber>\n const version = metadata\n .descendantWithPath('version')\n ?.val?.replace('-SNAPSHOT', '');\n\n const snapshot = metadata.descendantWithPath('versioning.snapshot');\n const timestamp = snapshot?.childNamed('timestamp')?.val;\n const build = snapshot?.childNamed('buildNumber')?.val;\n\n // If we weren't able to parse out the required 3 version elements,\n // return null because we can't determine the fixed version of the latest snapshot.\n if (!version || !timestamp || !build) {\n return null;\n }\n return `${version}-${timestamp}-${build}`;\n}\n\nasync function getSnapshotFullVersion(\n http: Http,\n version: string,\n dependency: MavenDependency,\n repoUrl: string,\n): Promise<string | null> {\n // To determine what actual files are available for the snapshot, first we have to fetch and parse\n // the metadata located at http://<repo>/<group>/<artifact>/<version-SNAPSHOT>/maven-metadata.xml\n const metadataUrl = getMavenUrl(\n dependency,\n repoUrl,\n `${version}/maven-metadata.xml`,\n );\n\n const { xml: mavenMetadata } = await downloadMavenXml(http, metadataUrl);\n // istanbul ignore if: hard to test\n if (!mavenMetadata) {\n return null;\n }\n\n return extractSnapshotVersion(mavenMetadata);\n}\n\nfunction isSnapshotVersion(version: string): boolean {\n if (version.endsWith('-SNAPSHOT')) {\n return true;\n }\n return false;\n}\n\nexport async function createUrlForDependencyPom(\n http: Http,\n version: string,\n dependency: MavenDependency,\n repoUrl: string,\n): Promise<string> {\n if (isSnapshotVersion(version)) {\n // By default, Maven snapshots are deployed to the repository with fixed file names.\n // Resolve the full, actual pom file name for the version.\n const fullVersion = await getSnapshotFullVersion(\n http,\n version,\n dependency,\n repoUrl,\n );\n\n // If we were able to resolve the version, use that, otherwise fall back to using -SNAPSHOT\n if (fullVersion !== null) {\n // TODO: types (#22198)\n return `${version}/${dependency.name}-${fullVersion}.pom`;\n }\n }\n\n // TODO: types (#22198)\n return `${version}/${dependency.name}-${version}.pom`;\n}\n\nexport async function getDependencyInfo(\n http: Http,\n dependency: MavenDependency,\n repoUrl: string,\n version: string,\n recursionLimit = 5,\n): Promise<DependencyInfo> {\n const result: DependencyInfo = {};\n const path = await createUrlForDependencyPom(\n http,\n version,\n dependency,\n repoUrl,\n );\n\n const pomUrl = getMavenUrl(dependency, repoUrl, path);\n const { xml: pomContent } = await downloadMavenXml(http, pomUrl);\n // istanbul ignore if\n if (!pomContent) {\n return result;\n }\n\n const homepage = pomContent.valueWithPath('url');\n if (homepage && !containsPlaceholder(homepage)) {\n result.homepage = homepage;\n }\n\n const sourceUrl = pomContent.valueWithPath('scm.url');\n if (sourceUrl && !containsPlaceholder(sourceUrl)) {\n result.sourceUrl = sourceUrl\n .replace(regEx(/^scm:/), '')\n .replace(regEx(/^git:/), '')\n .replace(regEx(/^git@github.com:/), 'https://github.com/')\n .replace(regEx(/^git@github.com\\//), 'https://github.com/');\n\n if (result.sourceUrl.startsWith('//')) {\n // most likely the result of us stripping scm:, git: etc\n // going with prepending https: here which should result in potential information retrival\n result.sourceUrl = `https:${result.sourceUrl}`;\n }\n }\n\n const relocation = pomContent.descendantWithPath(\n 'distributionManagement.relocation',\n );\n if (relocation) {\n const relocationGroup =\n relocation.valueWithPath('groupId') ?? dependency.group;\n const relocationName =\n relocation.valueWithPath('artifactId') ?? dependency.name;\n result.replacementName = `${relocationGroup}:${relocationName}`;\n const relocationVersion = relocation.valueWithPath('version');\n result.replacementVersion = relocationVersion ?? version;\n const relocationMessage = relocation.valueWithPath('message');\n if (relocationMessage) {\n result.deprecationMessage = relocationMessage;\n }\n }\n\n const groupId = pomContent.valueWithPath('groupId');\n if (groupId) {\n result.packageScope = groupId;\n }\n\n const parent = pomContent.childNamed('parent');\n if (recursionLimit > 0 && parent && (!result.sourceUrl || !result.homepage)) {\n // if we found a parent and are missing some information\n // trying to get the scm/homepage information from it\n const [parentGroupId, parentArtifactId, parentVersion] = [\n 'groupId',\n 'artifactId',\n 'version',\n ].map((k) => parent.valueWithPath(k)?.replace(/\\s+/g, ''));\n if (parentGroupId && parentArtifactId && parentVersion) {\n const parentDisplayId = `${parentGroupId}:${parentArtifactId}`;\n const parentDependency = getDependencyParts(parentDisplayId);\n const parentInformation = await getDependencyInfo(\n http,\n parentDependency,\n repoUrl,\n parentVersion,\n recursionLimit - 1,\n );\n if (!result.sourceUrl && parentInformation.sourceUrl) {\n result.sourceUrl = parentInformation.sourceUrl;\n }\n if (!result.homepage && parentInformation.homepage) {\n result.homepage = parentInformation.homepage;\n }\n }\n }\n\n return result;\n}\n"]}
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/maven/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { Readable } from 'node:stream';\nimport { GetObjectCommand, HeadObjectCommand } from '@aws-sdk/client-s3';\nimport { DateTime } from 'luxon';\nimport { XmlDocument } from 'xmldoc';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { type Http, HttpError } from '../../../util/http';\nimport type { HttpOptions, HttpResponse } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { Result } from '../../../util/result';\nimport type { S3UrlParts } from '../../../util/s3';\nimport { getS3Client, parseS3Url } from '../../../util/s3';\nimport { streamToString } from '../../../util/streams';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash, parseUrl } from '../../../util/url';\nimport { getGoogleAuthToken } from '../util';\nimport { MAVEN_REPO } from './common';\nimport type {\n DependencyInfo,\n HttpResourceCheckResult,\n MavenDependency,\n MavenFetchResult,\n MavenFetchSuccess,\n MavenXml,\n} from './types';\n\nfunction getHost(url: string): string | null {\n return parseUrl(url)?.host ?? /* istanbul ignore next: not possible */ null;\n}\n\nfunction isTemporaryError(err: HttpError): boolean {\n if (err.code === 'ECONNRESET') {\n return true;\n }\n\n if (err.response) {\n const status = err.response.statusCode;\n return status === 429 || (status >= 500 && status < 600);\n }\n\n return false;\n}\n\nfunction isHostError(err: HttpError): boolean {\n return err.code === 'ETIMEDOUT';\n}\n\nfunction isNotFoundError(err: HttpError): boolean {\n return err.code === 'ENOTFOUND' || err.response?.statusCode === 404;\n}\n\nfunction isPermissionsIssue(err: HttpError): boolean {\n const status = err.response?.statusCode;\n return status === 401 || status === 403;\n}\n\nfunction isConnectionError(err: HttpError): boolean {\n return (\n err.code === 'EAI_AGAIN' ||\n err.code === 'ERR_TLS_CERT_ALTNAME_INVALID' ||\n err.code === 'ECONNREFUSED'\n );\n}\n\nfunction isUnsupportedHostError(err: HttpError): boolean {\n return err.name === 'UnsupportedProtocolError';\n}\n\nexport async function downloadHttpProtocol(\n http: Http,\n pkgUrl: URL | string,\n opts: HttpOptions = {},\n): Promise<MavenFetchResult> {\n const url = pkgUrl.toString();\n const fetchResult = await Result.wrap<HttpResponse, Error>(\n http.getText(url, opts),\n )\n .transform((res): MavenFetchSuccess => {\n const result: MavenFetchSuccess = { data: res.body };\n\n if (!res.authorization) {\n result.isCacheable = true;\n }\n\n const lastModified = asTimestamp(res?.headers?.['last-modified']);\n if (lastModified) {\n result.lastModified = lastModified;\n }\n\n return result;\n })\n .catch((err): MavenFetchResult => {\n // istanbul ignore next: never happens, needs for type narrowing\n if (!(err instanceof HttpError)) {\n return Result.err({ type: 'unknown', err });\n }\n\n const failedUrl = url;\n if (err.message === HOST_DISABLED) {\n logger.trace({ failedUrl }, 'Host disabled');\n return Result.err({ type: 'host-disabled' });\n }\n\n if (isNotFoundError(err)) {\n logger.trace({ failedUrl }, `Url not found`);\n return Result.err({ type: 'not-found' });\n }\n\n if (isHostError(err)) {\n logger.debug(`Cannot connect to host ${failedUrl}`);\n return Result.err({ type: 'host-error' });\n }\n\n if (isPermissionsIssue(err)) {\n logger.debug(\n `Dependency lookup unauthorized. Please add authentication with a hostRule for ${failedUrl}`,\n );\n return Result.err({ type: 'permission-issue' });\n }\n\n if (isTemporaryError(err)) {\n logger.debug({ failedUrl, err }, 'Temporary error');\n if (getHost(url) === getHost(MAVEN_REPO)) {\n return Result.err({ type: 'maven-central-temporary-error', err });\n } else {\n return Result.err({ type: 'temporary-error' });\n }\n }\n\n if (isConnectionError(err)) {\n logger.debug(`Connection refused to maven registry ${failedUrl}`);\n return Result.err({ type: 'connection-error' });\n }\n\n if (isUnsupportedHostError(err)) {\n logger.debug(`Unsupported host ${failedUrl}`);\n return Result.err({ type: 'unsupported-host' });\n }\n\n logger.info({ failedUrl, err }, 'Unknown HTTP download error');\n return Result.err({ type: 'unknown', err });\n });\n\n const { err } = fetchResult.unwrap();\n if (err?.type === 'maven-central-temporary-error') {\n throw new ExternalHostError(err.err);\n }\n\n return fetchResult;\n}\n\nexport async function downloadHttpContent(\n http: Http,\n pkgUrl: URL | string,\n opts: HttpOptions = {},\n): Promise<string | null> {\n const fetchResult = await downloadHttpProtocol(http, pkgUrl, opts);\n return fetchResult.transform(({ data }) => data).unwrapOrNull();\n}\n\nfunction isS3NotFound(err: Error): boolean {\n return err.message === 'NotFound' || err.message === 'NoSuchKey';\n}\n\nexport async function downloadS3Protocol(\n pkgUrl: URL,\n): Promise<MavenFetchResult> {\n logger.trace({ url: pkgUrl.toString() }, `Attempting to load S3 dependency`);\n\n const s3Url = parseS3Url(pkgUrl);\n if (!s3Url) {\n return Result.err({ type: 'invalid-url' });\n }\n\n return await Result.wrap(() => {\n const command = new GetObjectCommand(s3Url);\n const client = getS3Client();\n return client.send(command);\n })\n .transform(\n async ({\n Body,\n LastModified,\n DeleteMarker,\n }): Promise<MavenFetchResult> => {\n if (DeleteMarker) {\n logger.trace(\n { failedUrl: pkgUrl.toString() },\n 'Maven S3 lookup error: DeleteMarker encountered',\n );\n return Result.err({ type: 'not-found' });\n }\n\n if (!(Body instanceof Readable)) {\n logger.debug(\n { failedUrl: pkgUrl.toString() },\n 'Maven S3 lookup error: unsupported Body type',\n );\n return Result.err({ type: 'unsupported-format' });\n }\n\n const data = await streamToString(Body);\n const result: MavenFetchSuccess = { data };\n\n const lastModified = asTimestamp(LastModified);\n if (lastModified) {\n result.lastModified = lastModified;\n }\n\n return Result.ok(result);\n },\n )\n .catch((err): MavenFetchResult => {\n if (!(err instanceof Error)) {\n return Result.err(err);\n }\n\n const failedUrl = pkgUrl.toString();\n\n if (err.name === 'CredentialsProviderError') {\n logger.debug(\n { failedUrl },\n 'Maven S3 lookup error: credentials provider error, check \"AWS_ACCESS_KEY_ID\" and \"AWS_SECRET_ACCESS_KEY\" variables',\n );\n return Result.err({ type: 'credentials-error' });\n }\n\n if (err.message === 'Region is missing') {\n logger.debug(\n { failedUrl },\n 'Maven S3 lookup error: missing region, check \"AWS_REGION\" variable',\n );\n return Result.err({ type: 'missing-aws-region' });\n }\n\n if (isS3NotFound(err)) {\n logger.trace({ failedUrl }, 'Maven S3 lookup error: object not found');\n return Result.err({ type: 'not-found' });\n }\n\n logger.debug({ failedUrl, err }, 'Maven S3 lookup error: unknown error');\n return Result.err({ type: 'unknown', err });\n });\n}\n\nexport async function downloadArtifactRegistryProtocol(\n http: Http,\n pkgUrl: URL,\n): Promise<MavenFetchResult> {\n const opts: HttpOptions = {};\n const host = pkgUrl.host;\n const path = pkgUrl.pathname;\n\n logger.trace({ host, path }, `Using google auth for Maven repository`);\n const auth = await getGoogleAuthToken();\n if (auth) {\n opts.headers = { authorization: `Basic ${auth}` };\n } else {\n logger.once.debug(\n { host, path },\n 'Could not get Google access token, using no auth',\n );\n }\n\n const url = pkgUrl.toString().replace('artifactregistry:', 'https:');\n\n return downloadHttpProtocol(http, url, opts);\n}\n\nasync function checkHttpResource(\n http: Http,\n pkgUrl: URL,\n): Promise<HttpResourceCheckResult> {\n try {\n const res = await http.head(pkgUrl.toString());\n const timestamp = res?.headers?.['last-modified'];\n if (timestamp) {\n const isoTimestamp = asTimestamp(timestamp);\n if (isoTimestamp) {\n const releaseDate = DateTime.fromISO(isoTimestamp, {\n zone: 'UTC',\n }).toJSDate();\n return releaseDate;\n }\n }\n return 'found';\n } catch (err) {\n if (isNotFoundError(err)) {\n return 'not-found';\n }\n\n const failedUrl = pkgUrl.toString();\n logger.debug(\n { failedUrl, statusCode: err.statusCode },\n `Can't check HTTP resource existence`,\n );\n return 'error';\n }\n}\n\nexport async function checkS3Resource(\n s3Url: S3UrlParts,\n): Promise<HttpResourceCheckResult> {\n try {\n const response = await getS3Client().send(new HeadObjectCommand(s3Url));\n if (response.DeleteMarker) {\n return 'not-found';\n }\n if (response.LastModified) {\n return response.LastModified;\n }\n return 'found';\n } catch (err) {\n if (isS3NotFound(err)) {\n return 'not-found';\n } else {\n logger.debug(\n {\n bucket: s3Url.Bucket,\n key: s3Url.Key,\n name: err.name,\n message: err.message,\n },\n `Can't check S3 resource existence`,\n );\n }\n return 'error';\n }\n}\n\nexport async function checkResource(\n http: Http,\n pkgUrl: URL | string,\n): Promise<HttpResourceCheckResult> {\n const parsedUrl = typeof pkgUrl === 'string' ? parseUrl(pkgUrl) : pkgUrl;\n if (parsedUrl === null) {\n return 'error';\n }\n\n const s3Url = parseS3Url(parsedUrl);\n if (s3Url) {\n return await checkS3Resource(s3Url);\n }\n\n if (parsedUrl.protocol === 'http:' || parsedUrl.protocol === 'https:') {\n return await checkHttpResource(http, parsedUrl);\n }\n\n logger.debug(\n { url: pkgUrl.toString() },\n `Unsupported Maven protocol in check resource`,\n );\n return 'not-found';\n}\n\nfunction containsPlaceholder(str: string): boolean {\n return regEx(/\\${.*?}/g).test(str);\n}\n\nexport function getMavenUrl(\n dependency: MavenDependency,\n repoUrl: string,\n path: string,\n): URL {\n return new URL(\n `${dependency.dependencyUrl}/${path}`,\n ensureTrailingSlash(repoUrl),\n );\n}\n\nexport async function downloadMavenXml(\n http: Http,\n pkgUrl: URL,\n): Promise<MavenXml> {\n const protocol = pkgUrl.protocol;\n\n if (protocol === 'http:' || protocol === 'https:') {\n const rawResult = await downloadHttpProtocol(http, pkgUrl);\n const xmlResult = rawResult.transform(({ isCacheable, data }): MavenXml => {\n const xml = new XmlDocument(data);\n return { isCacheable, xml };\n });\n return xmlResult.unwrapOr({});\n }\n\n if (protocol === 'artifactregistry:') {\n const rawResult = await downloadArtifactRegistryProtocol(http, pkgUrl);\n const xmlResult = rawResult.transform(({ isCacheable, data }): MavenXml => {\n const xml = new XmlDocument(data);\n return { isCacheable, xml };\n });\n return xmlResult.unwrapOr({});\n }\n\n if (protocol === 's3:') {\n const rawResult = await downloadS3Protocol(pkgUrl);\n const xmlResult = rawResult.transform(({ isCacheable, data }): MavenXml => {\n const xml = new XmlDocument(data);\n return { xml };\n });\n return xmlResult.unwrapOr({});\n }\n\n logger.debug(\n { url: pkgUrl.toString() },\n `Content is not found for Maven url`,\n );\n return {};\n}\n\nexport function getDependencyParts(packageName: string): MavenDependency {\n const [group, name] = packageName.split(':');\n const dependencyUrl = `${group.replace(regEx(/\\./g), '/')}/${name}`;\n return {\n display: packageName,\n group,\n name,\n dependencyUrl,\n };\n}\n\nfunction extractSnapshotVersion(metadata: XmlDocument): string | null {\n // Parse the maven-metadata.xml for the snapshot version and determine\n // the fixed version of the latest deployed snapshot.\n // The metadata descriptor can be found at\n // https://maven.apache.org/ref/3.3.3/maven-repository-metadata/repository-metadata.html\n //\n // Basically, we need to replace -SNAPSHOT with the artifact timestanp & build number,\n // so for example 1.0.0-SNAPSHOT will become 1.0.0-<timestamp>-<buildNumber>\n const version = metadata\n .descendantWithPath('version')\n ?.val?.replace('-SNAPSHOT', '');\n\n const snapshot = metadata.descendantWithPath('versioning.snapshot');\n const timestamp = snapshot?.childNamed('timestamp')?.val;\n const build = snapshot?.childNamed('buildNumber')?.val;\n\n // If we weren't able to parse out the required 3 version elements,\n // return null because we can't determine the fixed version of the latest snapshot.\n if (!version || !timestamp || !build) {\n return null;\n }\n return `${version}-${timestamp}-${build}`;\n}\n\nasync function getSnapshotFullVersion(\n http: Http,\n version: string,\n dependency: MavenDependency,\n repoUrl: string,\n): Promise<string | null> {\n // To determine what actual files are available for the snapshot, first we have to fetch and parse\n // the metadata located at http://<repo>/<group>/<artifact>/<version-SNAPSHOT>/maven-metadata.xml\n const metadataUrl = getMavenUrl(\n dependency,\n repoUrl,\n `${version}/maven-metadata.xml`,\n );\n\n const { xml: mavenMetadata } = await downloadMavenXml(http, metadataUrl);\n /* v8 ignore next 3 -- hard to test */\n if (!mavenMetadata) {\n return null;\n }\n\n return extractSnapshotVersion(mavenMetadata);\n}\n\nfunction isSnapshotVersion(version: string): boolean {\n if (version.endsWith('-SNAPSHOT')) {\n return true;\n }\n return false;\n}\n\nexport async function createUrlForDependencyPom(\n http: Http,\n version: string,\n dependency: MavenDependency,\n repoUrl: string,\n): Promise<string> {\n if (isSnapshotVersion(version)) {\n // By default, Maven snapshots are deployed to the repository with fixed file names.\n // Resolve the full, actual pom file name for the version.\n const fullVersion = await getSnapshotFullVersion(\n http,\n version,\n dependency,\n repoUrl,\n );\n\n // If we were able to resolve the version, use that, otherwise fall back to using -SNAPSHOT\n if (fullVersion !== null) {\n // TODO: types (#22198)\n return `${version}/${dependency.name}-${fullVersion}.pom`;\n }\n }\n\n // TODO: types (#22198)\n return `${version}/${dependency.name}-${version}.pom`;\n}\n\nexport async function getDependencyInfo(\n http: Http,\n dependency: MavenDependency,\n repoUrl: string,\n version: string,\n recursionLimit = 5,\n): Promise<DependencyInfo> {\n const result: DependencyInfo = {};\n const path = await createUrlForDependencyPom(\n http,\n version,\n dependency,\n repoUrl,\n );\n\n const pomUrl = getMavenUrl(dependency, repoUrl, path);\n const { xml: pomContent } = await downloadMavenXml(http, pomUrl);\n /* v8 ignore next 3 -- TODO: add test */\n if (!pomContent) {\n return result;\n }\n\n const homepage = pomContent.valueWithPath('url');\n if (homepage && !containsPlaceholder(homepage)) {\n result.homepage = homepage;\n }\n\n const sourceUrl = pomContent.valueWithPath('scm.url');\n if (sourceUrl && !containsPlaceholder(sourceUrl)) {\n result.sourceUrl = sourceUrl\n .replace(regEx(/^scm:/), '')\n .replace(regEx(/^git:/), '')\n .replace(regEx(/^git@github.com:/), 'https://github.com/')\n .replace(regEx(/^git@github.com\\//), 'https://github.com/');\n\n if (result.sourceUrl.startsWith('//')) {\n // most likely the result of us stripping scm:, git: etc\n // going with prepending https: here which should result in potential information retrival\n result.sourceUrl = `https:${result.sourceUrl}`;\n }\n }\n\n const relocation = pomContent.descendantWithPath(\n 'distributionManagement.relocation',\n );\n if (relocation) {\n const relocationGroup =\n relocation.valueWithPath('groupId') ?? dependency.group;\n const relocationName =\n relocation.valueWithPath('artifactId') ?? dependency.name;\n result.replacementName = `${relocationGroup}:${relocationName}`;\n const relocationVersion = relocation.valueWithPath('version');\n result.replacementVersion = relocationVersion ?? version;\n const relocationMessage = relocation.valueWithPath('message');\n if (relocationMessage) {\n result.deprecationMessage = relocationMessage;\n }\n }\n\n const groupId = pomContent.valueWithPath('groupId');\n if (groupId) {\n result.packageScope = groupId;\n }\n\n const parent = pomContent.childNamed('parent');\n if (recursionLimit > 0 && parent && (!result.sourceUrl || !result.homepage)) {\n // if we found a parent and are missing some information\n // trying to get the scm/homepage information from it\n const [parentGroupId, parentArtifactId, parentVersion] = [\n 'groupId',\n 'artifactId',\n 'version',\n ].map((k) => parent.valueWithPath(k)?.replace(/\\s+/g, ''));\n if (parentGroupId && parentArtifactId && parentVersion) {\n const parentDisplayId = `${parentGroupId}:${parentArtifactId}`;\n const parentDependency = getDependencyParts(parentDisplayId);\n const parentInformation = await getDependencyInfo(\n http,\n parentDependency,\n repoUrl,\n parentVersion,\n recursionLimit - 1,\n );\n if (!result.sourceUrl && parentInformation.sourceUrl) {\n result.sourceUrl = parentInformation.sourceUrl;\n }\n if (!result.homepage && parentInformation.homepage) {\n result.homepage = parentInformation.homepage;\n }\n }\n }\n\n return result;\n}\n"]}
|
@@ -21,7 +21,7 @@ class NodeVersionDatasource extends datasource_1.Datasource {
|
|
21
21
|
sourceUrlSupport = 'package';
|
22
22
|
sourceUrlNote = 'We use the URL: https://github.com/nodejs/node';
|
23
23
|
async getReleases({ registryUrl, }) {
|
24
|
-
|
24
|
+
/* v8 ignore next 3 -- should never happen */
|
25
25
|
if (!registryUrl) {
|
26
26
|
return null;
|
27
27
|
}
|