renovate 40.0.0-next.16 → 40.0.0-next.18

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.
Files changed (155) hide show
  1. package/dist/config/decrypt.d.ts +3 -1
  2. package/dist/config/decrypt.js +54 -11
  3. package/dist/config/decrypt.js.map +1 -1
  4. package/dist/config/options/index.js +1 -1
  5. package/dist/config/options/index.js.map +1 -1
  6. package/dist/config/presets/gitlab/index.js +1 -1
  7. package/dist/config/presets/gitlab/index.js.map +1 -1
  8. package/dist/config/presets/http/index.js +1 -1
  9. package/dist/config/presets/http/index.js.map +1 -1
  10. package/dist/config/presets/internal/custom-managers.js +3 -4
  11. package/dist/config/presets/internal/custom-managers.js.map +1 -1
  12. package/dist/data/monorepo.json +2 -1
  13. package/dist/instrumentation/utils.js +1 -1
  14. package/dist/instrumentation/utils.js.map +1 -1
  15. package/dist/modules/datasource/artifactory/index.js +1 -1
  16. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  17. package/dist/modules/datasource/azure-pipelines-tasks/index.js +11 -1
  18. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  19. package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +16 -0
  20. package/dist/modules/datasource/azure-pipelines-tasks/schema.js +2 -0
  21. package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
  22. package/dist/modules/datasource/crate/index.js +1 -1
  23. package/dist/modules/datasource/crate/index.js.map +1 -1
  24. package/dist/modules/datasource/custom/formats/html.js +1 -1
  25. package/dist/modules/datasource/custom/formats/html.js.map +1 -1
  26. package/dist/modules/datasource/custom/formats/yaml.js +1 -1
  27. package/dist/modules/datasource/custom/formats/yaml.js.map +1 -1
  28. package/dist/modules/datasource/deb/index.js +1 -1
  29. package/dist/modules/datasource/deb/index.js.map +1 -1
  30. package/dist/modules/datasource/docker/common.js +1 -1
  31. package/dist/modules/datasource/docker/common.js.map +1 -1
  32. package/dist/modules/datasource/docker/index.js +1 -1
  33. package/dist/modules/datasource/docker/index.js.map +1 -1
  34. package/dist/modules/datasource/github-release-attachments/index.js +2 -2
  35. package/dist/modules/datasource/github-release-attachments/index.js.map +1 -1
  36. package/dist/modules/datasource/go/base.js +1 -1
  37. package/dist/modules/datasource/go/base.js.map +1 -1
  38. package/dist/modules/datasource/go/releases-goproxy.js +1 -1
  39. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  40. package/dist/modules/datasource/golang-version/index.js +1 -1
  41. package/dist/modules/datasource/golang-version/index.js.map +1 -1
  42. package/dist/modules/datasource/hexpm-bob/index.js +1 -1
  43. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  44. package/dist/modules/datasource/maven/util.js +1 -1
  45. package/dist/modules/datasource/maven/util.js.map +1 -1
  46. package/dist/modules/datasource/nuget/v2.js +1 -1
  47. package/dist/modules/datasource/nuget/v2.js.map +1 -1
  48. package/dist/modules/datasource/nuget/v3.js +1 -1
  49. package/dist/modules/datasource/nuget/v3.js.map +1 -1
  50. package/dist/modules/datasource/pod/index.js +1 -1
  51. package/dist/modules/datasource/pod/index.js.map +1 -1
  52. package/dist/modules/datasource/pypi/index.js +1 -1
  53. package/dist/modules/datasource/pypi/index.js.map +1 -1
  54. package/dist/modules/datasource/ruby-version/index.js +1 -1
  55. package/dist/modules/datasource/ruby-version/index.js.map +1 -1
  56. package/dist/modules/datasource/rubygems/index.js +1 -1
  57. package/dist/modules/datasource/rubygems/index.js.map +1 -1
  58. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js +2 -2
  59. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
  60. package/dist/modules/datasource/terraform-provider/index.js +1 -1
  61. package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
  62. package/dist/modules/manager/batect-wrapper/artifacts.js +1 -1
  63. package/dist/modules/manager/batect-wrapper/artifacts.js.map +1 -1
  64. package/dist/modules/manager/bazel/rules/git.js +7 -1
  65. package/dist/modules/manager/bazel/rules/git.js.map +1 -1
  66. package/dist/modules/manager/composer/utils.js +9 -6
  67. package/dist/modules/manager/composer/utils.js.map +1 -1
  68. package/dist/modules/manager/devbox/artifacts.d.ts +1 -1
  69. package/dist/modules/manager/devbox/artifacts.js +29 -11
  70. package/dist/modules/manager/devbox/artifacts.js.map +1 -1
  71. package/dist/modules/manager/fingerprint.generated.js +6 -6
  72. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  73. package/dist/modules/manager/gradle-wrapper/artifacts.js +1 -1
  74. package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
  75. package/dist/modules/manager/maven/extract.js +3 -1
  76. package/dist/modules/manager/maven/extract.js.map +1 -1
  77. package/dist/modules/manager/pep621/utils.js +1 -2
  78. package/dist/modules/manager/pep621/utils.js.map +1 -1
  79. package/dist/modules/manager/poetry/artifacts.js +3 -4
  80. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  81. package/dist/modules/manager/poetry/extract.js +2 -2
  82. package/dist/modules/manager/poetry/extract.js.map +1 -1
  83. package/dist/modules/manager/terraform/lockfile/hash.d.ts +1 -1
  84. package/dist/modules/platform/bitbucket/index.js +1 -1
  85. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  86. package/dist/modules/platform/gerrit/client.js +1 -1
  87. package/dist/modules/platform/gerrit/client.js.map +1 -1
  88. package/dist/modules/platform/github/common.d.ts +2 -0
  89. package/dist/modules/platform/github/common.js +16 -0
  90. package/dist/modules/platform/github/common.js.map +1 -1
  91. package/dist/modules/platform/github/index.d.ts +1 -1
  92. package/dist/modules/platform/github/index.js +6 -4
  93. package/dist/modules/platform/github/index.js.map +1 -1
  94. package/dist/modules/versioning/composer/index.js +10 -0
  95. package/dist/modules/versioning/composer/index.js.map +1 -1
  96. package/dist/modules/versioning/npm/index.js +2 -1
  97. package/dist/modules/versioning/npm/index.js.map +1 -1
  98. package/dist/modules/versioning/types.d.ts +4 -0
  99. package/dist/modules/versioning/types.js.map +1 -1
  100. package/dist/util/exec/containerbase.js +1 -1
  101. package/dist/util/exec/containerbase.js.map +1 -1
  102. package/dist/util/http/auth.js +0 -1
  103. package/dist/util/http/auth.js.map +1 -1
  104. package/dist/util/http/bitbucket-server.d.ts +5 -4
  105. package/dist/util/http/bitbucket-server.js +17 -20
  106. package/dist/util/http/bitbucket-server.js.map +1 -1
  107. package/dist/util/http/bitbucket.d.ts +6 -5
  108. package/dist/util/http/bitbucket.js +30 -31
  109. package/dist/util/http/bitbucket.js.map +1 -1
  110. package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
  111. package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
  112. package/dist/util/http/errors.d.ts +2 -0
  113. package/dist/util/http/errors.js +8 -0
  114. package/dist/util/http/errors.js.map +1 -0
  115. package/dist/util/http/gerrit.d.ts +6 -4
  116. package/dist/util/http/gerrit.js +11 -12
  117. package/dist/util/http/gerrit.js.map +1 -1
  118. package/dist/util/http/gitea.d.ts +5 -4
  119. package/dist/util/http/gitea.js +12 -13
  120. package/dist/util/http/gitea.js.map +1 -1
  121. package/dist/util/http/github.d.ts +14 -8
  122. package/dist/util/http/github.js +64 -60
  123. package/dist/util/http/github.js.map +1 -1
  124. package/dist/util/http/gitlab.d.ts +7 -5
  125. package/dist/util/http/gitlab.js +56 -46
  126. package/dist/util/http/gitlab.js.map +1 -1
  127. package/dist/util/http/got.d.ts +9 -0
  128. package/dist/util/http/got.js +54 -0
  129. package/dist/util/http/got.js.map +1 -0
  130. package/dist/util/http/host-rules.d.ts +2 -1
  131. package/dist/util/http/host-rules.js.map +1 -1
  132. package/dist/util/http/http.d.ts +93 -0
  133. package/dist/util/http/http.js +339 -0
  134. package/dist/util/http/http.js.map +1 -0
  135. package/dist/util/http/index.d.ts +6 -74
  136. package/dist/util/http/index.js +5 -359
  137. package/dist/util/http/index.js.map +1 -1
  138. package/dist/util/http/types.d.ts +9 -16
  139. package/dist/util/http/types.js.map +1 -1
  140. package/dist/util/toml.d.ts +1 -0
  141. package/dist/util/toml.js +6 -0
  142. package/dist/util/toml.js.map +1 -1
  143. package/dist/util/url.js +3 -8
  144. package/dist/util/url.js.map +1 -1
  145. package/dist/workers/global/config/parse/env.js +3 -2
  146. package/dist/workers/global/config/parse/env.js.map +1 -1
  147. package/dist/workers/global/config/parse/file.js +18 -8
  148. package/dist/workers/global/config/parse/file.js.map +1 -1
  149. package/dist/workers/global/config/parse/host-rules-from-env.js +6 -2
  150. package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
  151. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js +1 -1
  152. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js.map +1 -1
  153. package/dist/workers/repository/update/pr/changelog/gitlab/index.js +1 -1
  154. package/dist/workers/repository/update/pr/changelog/gitlab/index.js.map +1 -1
  155. package/package.json +30 -30
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/github-release-attachments/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { queryReleases } from '../../../util/github/graphql';\nimport type {\n GithubDigestFile,\n GithubRestAsset,\n GithubRestRelease,\n} from '../../../util/github/types';\nimport { getApiBaseUrl, getSourceUrl } from '../../../util/github/url';\nimport { hashStream } from '../../../util/hash';\nimport { GithubHttp } from '../../../util/http/github';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { Datasource } from '../datasource';\nimport type {\n DigestConfig,\n GetReleasesConfig,\n Release,\n ReleaseResult,\n} from '../types';\n\nexport const cacheNamespace = 'datasource-github-releases';\n\nfunction inferHashAlg(digest: string): string {\n switch (digest.length) {\n case 64:\n return 'sha256';\n default:\n case 96:\n return 'sha512';\n }\n}\n\nexport class GithubReleaseAttachmentsDatasource extends Datasource {\n static readonly id = 'github-release-attachments';\n\n override readonly defaultRegistryUrls = ['https://github.com'];\n\n override http: GithubHttp;\n\n override readonly releaseTimestampSupport = true;\n // Note: not sure\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `releaseTimestamp` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined by using the `packageName` and `registryUrl`.';\n\n constructor() {\n super(GithubReleaseAttachmentsDatasource.id);\n this.http = new GithubHttp(GithubReleaseAttachmentsDatasource.id);\n }\n\n @cache({\n ttlMinutes: 1440,\n namespace: `datasource-${GithubReleaseAttachmentsDatasource.id}`,\n key: (release: GithubRestRelease, digest: string) =>\n `findDigestFile:${release.html_url}:${digest}`,\n })\n async findDigestFile(\n release: GithubRestRelease,\n digest: string,\n ): Promise<GithubDigestFile | null> {\n const smallAssets = release.assets.filter(\n (a: GithubRestAsset) => a.size < 5 * 1024,\n );\n for (const asset of smallAssets) {\n const res = await this.http.get(asset.browser_download_url);\n for (const line of res.body.split(newlineRegex)) {\n const [lineDigest, lineFilename] = line.split(regEx(/\\s+/), 2);\n if (lineDigest === digest) {\n return {\n assetName: asset.name,\n digestedFileName: lineFilename,\n currentVersion: release.tag_name,\n currentDigest: lineDigest,\n };\n }\n }\n }\n return null;\n }\n\n @cache({\n ttlMinutes: 1440,\n namespace: `datasource-${GithubReleaseAttachmentsDatasource.id}`,\n key: (asset: GithubRestAsset, algorithm: string) =>\n `downloadAndDigest:${asset.browser_download_url}:${algorithm}`,\n })\n async downloadAndDigest(\n asset: GithubRestAsset,\n algorithm: string,\n ): Promise<string> {\n const res = this.http.stream(asset.browser_download_url);\n const digest = await hashStream(res, algorithm);\n return digest;\n }\n\n async findAssetWithDigest(\n release: GithubRestRelease,\n digest: string,\n ): Promise<GithubDigestFile | null> {\n const algorithm = inferHashAlg(digest);\n const assetsBySize = release.assets.sort(\n (a: GithubRestAsset, b: GithubRestAsset) => {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n },\n );\n\n for (const asset of assetsBySize) {\n const assetDigest = await this.downloadAndDigest(asset, algorithm);\n if (assetDigest === digest) {\n return {\n assetName: asset.name,\n currentVersion: release.tag_name,\n currentDigest: assetDigest,\n };\n }\n }\n return null;\n }\n\n /** Identify the asset associated with a known digest. */\n async findDigestAsset(\n release: GithubRestRelease,\n digest: string,\n ): Promise<GithubDigestFile | null> {\n const digestFile = await this.findDigestFile(release, digest);\n if (digestFile) {\n return digestFile;\n }\n\n const asset = await this.findAssetWithDigest(release, digest);\n return asset;\n }\n\n /** Given a digest asset, find the equivalent digest in a different release. */\n async mapDigestAssetToRelease(\n digestAsset: GithubDigestFile,\n release: GithubRestRelease,\n ): Promise<string | null> {\n const current = digestAsset.currentVersion.replace(regEx(/^v/), '');\n const next = release.tag_name.replace(regEx(/^v/), '');\n const releaseChecksumAssetName = digestAsset.assetName.replace(\n current,\n next,\n );\n const releaseAsset = release.assets.find(\n (a: GithubRestAsset) => a.name === releaseChecksumAssetName,\n );\n if (!releaseAsset) {\n return null;\n }\n if (digestAsset.digestedFileName) {\n const releaseFilename = digestAsset.digestedFileName.replace(\n current,\n next,\n );\n const res = await this.http.get(releaseAsset.browser_download_url);\n for (const line of res.body.split(newlineRegex)) {\n const [lineDigest, lineFn] = line.split(regEx(/\\s+/), 2);\n if (lineFn === releaseFilename) {\n return lineDigest;\n }\n }\n } else {\n const algorithm = inferHashAlg(digestAsset.currentDigest);\n const newDigest = await this.downloadAndDigest(releaseAsset, algorithm);\n return newDigest;\n }\n return null;\n }\n\n /**\n * Attempts to resolve the digest for the specified package.\n *\n * The `newValue` supplied here should be a valid tag for the GitHub release.\n * Requires `currentValue` and `currentDigest`.\n *\n * There may be many assets attached to the release. This function will:\n * - Identify the asset pinned by `currentDigest` in the `currentValue` release\n * - Download small release assets, parse as checksum manifests (e.g. `SHASUMS.txt`).\n * - Download individual assets until `currentDigest` is encountered. This is limited to sha256 and sha512.\n * - Map the hashed asset to `newValue` and return the updated digest as a string\n */\n override async getDigest(\n {\n packageName: repo,\n currentValue,\n currentDigest,\n registryUrl,\n }: DigestConfig,\n newValue: string,\n ): Promise<string | null> {\n logger.debug(\n { repo, currentValue, currentDigest, registryUrl, newValue },\n 'getDigest',\n );\n if (!currentDigest) {\n return null;\n }\n if (!currentValue) {\n return currentDigest;\n }\n\n const apiBaseUrl = getApiBaseUrl(registryUrl);\n const { body: currentRelease } =\n await this.http.getJsonUnchecked<GithubRestRelease>(\n `${apiBaseUrl}repos/${repo}/releases/tags/${currentValue}`,\n );\n const digestAsset = await this.findDigestAsset(\n currentRelease,\n currentDigest,\n );\n let newDigest: string | null;\n if (!digestAsset || newValue === currentValue) {\n newDigest = currentDigest;\n } else {\n const { body: newRelease } =\n await this.http.getJsonUnchecked<GithubRestRelease>(\n `${apiBaseUrl}repos/${repo}/releases/tags/${newValue}`,\n );\n newDigest = await this.mapDigestAssetToRelease(digestAsset, newRelease);\n }\n return newDigest;\n }\n\n /**\n * This function can be used to fetch releases with a customizable versioning\n * (e.g. semver) and with releases.\n *\n * This function will:\n * - Fetch all releases\n * - Sanitize the versions if desired (e.g. strip out leading 'v')\n * - Return a dependency object containing sourceUrl string and releases array\n */\n async getReleases(config: GetReleasesConfig): Promise<ReleaseResult> {\n const releasesResult = await queryReleases(config, this.http);\n const releases = releasesResult.map((item) => {\n const { version, releaseTimestamp, isStable } = item;\n const result: Release = {\n version,\n gitRef: version,\n releaseTimestamp,\n };\n if (is.boolean(isStable)) {\n result.isStable = isStable;\n }\n return result;\n });\n const sourceUrl = getSourceUrl(config.packageName, config.registryUrl);\n return { sourceUrl, releases };\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/github-release-attachments/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { queryReleases } from '../../../util/github/graphql';\nimport type {\n GithubDigestFile,\n GithubRestAsset,\n GithubRestRelease,\n} from '../../../util/github/types';\nimport { getApiBaseUrl, getSourceUrl } from '../../../util/github/url';\nimport { hashStream } from '../../../util/hash';\nimport { GithubHttp } from '../../../util/http/github';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { Datasource } from '../datasource';\nimport type {\n DigestConfig,\n GetReleasesConfig,\n Release,\n ReleaseResult,\n} from '../types';\n\nexport const cacheNamespace = 'datasource-github-releases';\n\nfunction inferHashAlg(digest: string): string {\n switch (digest.length) {\n case 64:\n return 'sha256';\n default:\n case 96:\n return 'sha512';\n }\n}\n\nexport class GithubReleaseAttachmentsDatasource extends Datasource {\n static readonly id = 'github-release-attachments';\n\n override readonly defaultRegistryUrls = ['https://github.com'];\n\n override http: GithubHttp;\n\n override readonly releaseTimestampSupport = true;\n // Note: not sure\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `releaseTimestamp` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined by using the `packageName` and `registryUrl`.';\n\n constructor() {\n super(GithubReleaseAttachmentsDatasource.id);\n this.http = new GithubHttp(GithubReleaseAttachmentsDatasource.id);\n }\n\n @cache({\n ttlMinutes: 1440,\n namespace: `datasource-${GithubReleaseAttachmentsDatasource.id}`,\n key: (release: GithubRestRelease, digest: string) =>\n `findDigestFile:${release.html_url}:${digest}`,\n })\n async findDigestFile(\n release: GithubRestRelease,\n digest: string,\n ): Promise<GithubDigestFile | null> {\n const smallAssets = release.assets.filter(\n (a: GithubRestAsset) => a.size < 5 * 1024,\n );\n for (const asset of smallAssets) {\n const res = await this.http.getText(asset.browser_download_url);\n for (const line of res.body.split(newlineRegex)) {\n const [lineDigest, lineFilename] = line.split(regEx(/\\s+/), 2);\n if (lineDigest === digest) {\n return {\n assetName: asset.name,\n digestedFileName: lineFilename,\n currentVersion: release.tag_name,\n currentDigest: lineDigest,\n };\n }\n }\n }\n return null;\n }\n\n @cache({\n ttlMinutes: 1440,\n namespace: `datasource-${GithubReleaseAttachmentsDatasource.id}`,\n key: (asset: GithubRestAsset, algorithm: string) =>\n `downloadAndDigest:${asset.browser_download_url}:${algorithm}`,\n })\n async downloadAndDigest(\n asset: GithubRestAsset,\n algorithm: string,\n ): Promise<string> {\n const res = this.http.stream(asset.browser_download_url);\n const digest = await hashStream(res, algorithm);\n return digest;\n }\n\n async findAssetWithDigest(\n release: GithubRestRelease,\n digest: string,\n ): Promise<GithubDigestFile | null> {\n const algorithm = inferHashAlg(digest);\n const assetsBySize = release.assets.sort(\n (a: GithubRestAsset, b: GithubRestAsset) => {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n },\n );\n\n for (const asset of assetsBySize) {\n const assetDigest = await this.downloadAndDigest(asset, algorithm);\n if (assetDigest === digest) {\n return {\n assetName: asset.name,\n currentVersion: release.tag_name,\n currentDigest: assetDigest,\n };\n }\n }\n return null;\n }\n\n /** Identify the asset associated with a known digest. */\n async findDigestAsset(\n release: GithubRestRelease,\n digest: string,\n ): Promise<GithubDigestFile | null> {\n const digestFile = await this.findDigestFile(release, digest);\n if (digestFile) {\n return digestFile;\n }\n\n const asset = await this.findAssetWithDigest(release, digest);\n return asset;\n }\n\n /** Given a digest asset, find the equivalent digest in a different release. */\n async mapDigestAssetToRelease(\n digestAsset: GithubDigestFile,\n release: GithubRestRelease,\n ): Promise<string | null> {\n const current = digestAsset.currentVersion.replace(regEx(/^v/), '');\n const next = release.tag_name.replace(regEx(/^v/), '');\n const releaseChecksumAssetName = digestAsset.assetName.replace(\n current,\n next,\n );\n const releaseAsset = release.assets.find(\n (a: GithubRestAsset) => a.name === releaseChecksumAssetName,\n );\n if (!releaseAsset) {\n return null;\n }\n if (digestAsset.digestedFileName) {\n const releaseFilename = digestAsset.digestedFileName.replace(\n current,\n next,\n );\n const res = await this.http.getText(releaseAsset.browser_download_url);\n for (const line of res.body.split(newlineRegex)) {\n const [lineDigest, lineFn] = line.split(regEx(/\\s+/), 2);\n if (lineFn === releaseFilename) {\n return lineDigest;\n }\n }\n } else {\n const algorithm = inferHashAlg(digestAsset.currentDigest);\n const newDigest = await this.downloadAndDigest(releaseAsset, algorithm);\n return newDigest;\n }\n return null;\n }\n\n /**\n * Attempts to resolve the digest for the specified package.\n *\n * The `newValue` supplied here should be a valid tag for the GitHub release.\n * Requires `currentValue` and `currentDigest`.\n *\n * There may be many assets attached to the release. This function will:\n * - Identify the asset pinned by `currentDigest` in the `currentValue` release\n * - Download small release assets, parse as checksum manifests (e.g. `SHASUMS.txt`).\n * - Download individual assets until `currentDigest` is encountered. This is limited to sha256 and sha512.\n * - Map the hashed asset to `newValue` and return the updated digest as a string\n */\n override async getDigest(\n {\n packageName: repo,\n currentValue,\n currentDigest,\n registryUrl,\n }: DigestConfig,\n newValue: string,\n ): Promise<string | null> {\n logger.debug(\n { repo, currentValue, currentDigest, registryUrl, newValue },\n 'getDigest',\n );\n if (!currentDigest) {\n return null;\n }\n if (!currentValue) {\n return currentDigest;\n }\n\n const apiBaseUrl = getApiBaseUrl(registryUrl);\n const { body: currentRelease } =\n await this.http.getJsonUnchecked<GithubRestRelease>(\n `${apiBaseUrl}repos/${repo}/releases/tags/${currentValue}`,\n );\n const digestAsset = await this.findDigestAsset(\n currentRelease,\n currentDigest,\n );\n let newDigest: string | null;\n if (!digestAsset || newValue === currentValue) {\n newDigest = currentDigest;\n } else {\n const { body: newRelease } =\n await this.http.getJsonUnchecked<GithubRestRelease>(\n `${apiBaseUrl}repos/${repo}/releases/tags/${newValue}`,\n );\n newDigest = await this.mapDigestAssetToRelease(digestAsset, newRelease);\n }\n return newDigest;\n }\n\n /**\n * This function can be used to fetch releases with a customizable versioning\n * (e.g. semver) and with releases.\n *\n * This function will:\n * - Fetch all releases\n * - Sanitize the versions if desired (e.g. strip out leading 'v')\n * - Return a dependency object containing sourceUrl string and releases array\n */\n async getReleases(config: GetReleasesConfig): Promise<ReleaseResult> {\n const releasesResult = await queryReleases(config, this.http);\n const releases = releasesResult.map((item) => {\n const { version, releaseTimestamp, isStable } = item;\n const result: Release = {\n version,\n gitRef: version,\n releaseTimestamp,\n };\n if (is.boolean(isStable)) {\n result.isStable = isStable;\n }\n return result;\n });\n const sourceUrl = getSourceUrl(config.packageName, config.registryUrl);\n return { sourceUrl, releases };\n }\n}\n"]}
@@ -107,7 +107,7 @@ class BaseGoDatasource {
107
107
  static async goGetDatasource(goModule) {
108
108
  const goModuleUrl = goModule.replace(/\.git(\/[a-z0-9/]*)?$/, '');
109
109
  const pkgUrl = `https://${goModuleUrl}?go-get=1`;
110
- const { body: html } = await BaseGoDatasource.http.get(pkgUrl);
110
+ const { body: html } = await BaseGoDatasource.http.getText(pkgUrl);
111
111
  const goSourceHeader = BaseGoDatasource.goSourceHeader(html, goModule);
112
112
  if (goSourceHeader) {
113
113
  return goSourceHeader;
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/base.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: types (#22198)\nimport { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport { detectPlatform } from '../../../util/common';\nimport * as hostRules from '../../../util/host-rules';\nimport { Http } from '../../../util/http';\nimport { regEx } from '../../../util/regex';\nimport {\n parseUrl,\n trimLeadingSlash,\n trimTrailingSlash,\n} from '../../../util/url';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags';\nimport { GitTagsDatasource } from '../git-tags';\nimport { GiteaTagsDatasource } from '../gitea-tags';\nimport { GithubTagsDatasource } from '../github-tags';\nimport { GitlabTagsDatasource } from '../gitlab-tags';\nimport type { DataSource } from './types';\n\n// TODO: figure out class hierarchy (#10532)\nexport class BaseGoDatasource {\n private static readonly gitlabHttpsRegExp = regEx(\n /^(?<httpsRegExpUrl>https:\\/\\/[^/]*gitlab\\.[^/]*)\\/(?<httpsRegExpName>.+?)(?:\\/v\\d+)?[/]?$/,\n );\n private static readonly gitlabRegExp = regEx(\n /^(?<regExpUrl>gitlab\\.[^/]*)\\/(?<regExpPath>.+?)(?:\\/v\\d+)?[/]?$/,\n );\n private static readonly gitVcsRegexp = regEx(\n /^(?:[^/]+)\\/(?<module>.*)\\.git(?:$|\\/)/,\n );\n\n private static readonly id = 'go';\n private static readonly http = new Http(BaseGoDatasource.id);\n\n static async getDatasource(goModule: string): Promise<DataSource | null> {\n if (goModule.startsWith('gopkg.in/')) {\n const [pkg] = goModule.replace('gopkg.in/', '').split('.');\n const packageName = pkg.includes('/') ? pkg : `go-${pkg}/${pkg}`;\n return {\n datasource: GithubTagsDatasource.id,\n packageName,\n registryUrl: 'https://github.com',\n };\n }\n\n if (goModule.startsWith('github.com/')) {\n const split = goModule.split('/');\n const packageName = split[1] + '/' + split[2];\n return {\n datasource: GithubTagsDatasource.id,\n packageName,\n registryUrl: 'https://github.com',\n };\n }\n\n if (goModule.startsWith('bitbucket.org/')) {\n const split = goModule.split('/');\n const packageName = split[1] + '/' + split[2];\n return {\n datasource: BitbucketTagsDatasource.id,\n packageName,\n registryUrl: 'https://bitbucket.org',\n };\n }\n\n if (goModule.startsWith('code.cloudfoundry.org/')) {\n const packageName = goModule.replace(\n 'code.cloudfoundry.org',\n 'cloudfoundry',\n );\n return {\n datasource: GithubTagsDatasource.id,\n packageName,\n registryUrl: 'https://github.com',\n };\n }\n\n if (goModule.startsWith('dev.azure.com/')) {\n const split = goModule.split('/');\n if ((split.length > 4 && split[3] === '_git') || split.length > 3) {\n const packageName =\n 'https://dev.azure.com/' +\n split[1] +\n '/' +\n split[2] +\n '/_git/' +\n (split[3] === '_git' ? split[4] : split[3]).replace(\n regEx(/\\.git$/),\n '',\n );\n return {\n datasource: GitTagsDatasource.id,\n packageName,\n };\n }\n }\n\n //#region known gitea compatible hosts\n if (goModule.startsWith('gitea.com/')) {\n const split = goModule.split('/');\n const packageName = `${split[1]}/${split[2]}`;\n return {\n datasource: GiteaTagsDatasource.id,\n packageName,\n registryUrl: 'https://gitea.com',\n };\n }\n\n if (goModule.startsWith('code.forgejo.org/')) {\n const split = goModule.split('/');\n const packageName = `${split[1]}/${split[2]}`;\n return {\n datasource: GiteaTagsDatasource.id,\n packageName,\n registryUrl: 'https://code.forgejo.org',\n };\n }\n\n if (goModule.startsWith('codeberg.org/')) {\n const split = goModule.split('/');\n const packageName = `${split[1]}/${split[2]}`;\n return {\n datasource: GiteaTagsDatasource.id,\n packageName,\n registryUrl: 'https://codeberg.org',\n };\n }\n //#endregion\n\n return await BaseGoDatasource.goGetDatasource(goModule);\n }\n\n private static async goGetDatasource(\n goModule: string,\n ): Promise<DataSource | null> {\n const goModuleUrl = goModule.replace(/\\.git(\\/[a-z0-9/]*)?$/, '');\n const pkgUrl = `https://${goModuleUrl}?go-get=1`;\n const { body: html } = await BaseGoDatasource.http.get(pkgUrl);\n\n const goSourceHeader = BaseGoDatasource.goSourceHeader(html, goModule);\n if (goSourceHeader) {\n return goSourceHeader;\n }\n\n // GitHub Enterprise only returns a go-import meta\n const goImport = BaseGoDatasource.goImportHeader(html, goModule);\n if (goImport) {\n return goImport;\n }\n\n logger.trace({ goModule }, 'No go-source or go-import header found');\n return null;\n }\n\n private static goSourceHeader(\n html: string,\n goModule: string,\n ): DataSource | null {\n const sourceMatchGroups = regEx(\n /<meta\\s+name=\"?go-source\"?\\s+content=\"(?<prefix>[^\"\\s]+)\\s+(?<goSourceUrl>[^\"\\s]+)/,\n ).exec(html)?.groups;\n if (!sourceMatchGroups) {\n return null;\n }\n const { prefix, goSourceUrl } = sourceMatchGroups;\n\n if (!goModule.startsWith(prefix)) {\n logger.trace({ goModule }, 'go-source header prefix not match');\n return null;\n }\n\n logger.debug(`Go lookup source url ${goSourceUrl} for module ${goModule}`);\n return this.detectDatasource(goSourceUrl, goModule);\n }\n\n private static detectDatasource(\n metadataUrl: string,\n goModule: string,\n ): DataSource | null {\n if (metadataUrl.startsWith('https://github.com/')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: metadataUrl\n .replace('https://github.com/', '')\n .replace(regEx(/\\/$/), ''),\n registryUrl: 'https://github.com',\n };\n }\n\n const gitlabModuleName =\n BaseGoDatasource.gitlabRegExp.exec(goModule)?.groups?.regExpPath;\n const vcsIndicatedModule =\n BaseGoDatasource.gitVcsRegexp.exec(goModule)?.groups?.module;\n\n const metadataUrlMatchGroups =\n BaseGoDatasource.gitlabHttpsRegExp.exec(metadataUrl)?.groups;\n if (metadataUrlMatchGroups) {\n const { httpsRegExpUrl, httpsRegExpName } = metadataUrlMatchGroups;\n const packageName =\n vcsIndicatedModule ?? gitlabModuleName ?? httpsRegExpName;\n return {\n datasource: GitlabTagsDatasource.id,\n registryUrl: httpsRegExpUrl,\n packageName,\n };\n }\n\n if (hostRules.hostType({ url: metadataUrl }) === 'gitlab') {\n const parsedUrl = parseUrl(metadataUrl);\n if (!parsedUrl) {\n logger.trace({ goModule }, 'Could not parse go-source URL');\n return null;\n }\n\n const endpoint = GlobalConfig.get('endpoint', '');\n const endpointPrefix = regEx(\n /https:\\/\\/[^/]+\\/(?<prefix>.*?\\/)(?:api\\/v4\\/?)?/,\n ).exec(endpoint)?.groups?.prefix;\n\n let packageName =\n // a .git path indicates a concrete git repository, which can be different from metadata returned by gitlab\n vcsIndicatedModule ?? trimLeadingSlash(parsedUrl.pathname);\n if (endpointPrefix && endpointPrefix !== 'api/') {\n packageName = packageName.replace(endpointPrefix, '');\n }\n\n const registryUrl = endpointPrefix\n ? endpoint.replace(regEx(/\\/api\\/v4\\/?$/), '/')\n : `${parsedUrl.protocol}//${parsedUrl.host}`;\n\n return {\n datasource: GitlabTagsDatasource.id,\n registryUrl,\n packageName,\n };\n }\n /* istanbul ignore next */\n return null;\n }\n\n private static goImportHeader(\n html: string,\n goModule: string,\n ): DataSource | null {\n const importMatchGroups = regEx(\n /<meta\\s+name=\"?go-import\"?\\s+content=\"(?<prefix>[^\"\\s]+)\\s+(?<proto>[^\"\\s]+)\\s+(?<goImportURL>[^\"\\s]+)/,\n ).exec(html)?.groups;\n if (!importMatchGroups) {\n logger.trace({ goModule }, 'No go-source or go-import header found');\n return null;\n }\n const { prefix, proto, goImportURL } = importMatchGroups;\n\n if (!goModule.startsWith(prefix)) {\n logger.trace({ goModule }, 'go-import header prefix not match');\n return null;\n }\n\n if (proto !== 'git') {\n logger.trace({ goModule }, 'go-import header proto not git');\n return null;\n }\n\n // get server base url from import url\n const parsedUrl = parseUrl(goImportURL);\n if (!parsedUrl) {\n logger.trace({ goModule }, 'Could not parse go-import URL');\n return null;\n }\n\n logger.debug(`Go module: ${goModule} lookup import url ${goImportURL}`);\n\n const datasource = this.detectDatasource(\n goImportURL.replace(regEx(/\\.git$/), ''),\n goModule,\n );\n if (datasource !== null) {\n return datasource;\n }\n // fall back to old behavior if detection did not work\n\n switch (detectPlatform(goImportURL)) {\n case 'github': {\n // split the go module from the URL: host/go/module -> go/module\n // TODO: `parsedUrl.pathname` can be undefined\n const packageName = trimTrailingSlash(`${parsedUrl.pathname}`)\n .replace(regEx(/\\.git$/), '')\n .split('/')\n .slice(-2)\n .join('/');\n\n return {\n datasource: GithubTagsDatasource.id,\n registryUrl: `${parsedUrl.protocol}//${parsedUrl.host}`,\n packageName,\n };\n }\n case 'azure': {\n return {\n datasource: GitTagsDatasource.id,\n packageName: goImportURL.replace(regEx(/\\.git$/), ''),\n };\n }\n default: {\n return {\n datasource: GitTagsDatasource.id,\n packageName: goImportURL,\n };\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/base.ts"],"names":[],"mappings":";;;;AAAA,uBAAuB;AACvB,mDAAsD;AACtD,4CAAyC;AACzC,iDAAsD;AACtD,4EAAsD;AACtD,6CAA0C;AAC1C,+CAA4C;AAC5C,2CAI2B;AAC3B,sDAA4D;AAC5D,0CAAgD;AAChD,8CAAoD;AACpD,gDAAsD;AACtD,gDAAsD;AAGtD,4CAA4C;AAC5C,MAAa,gBAAgB;IACnB,MAAM,CAAU,iBAAiB,GAAG,IAAA,aAAK,EAC/C,2FAA2F,CAC5F,CAAC;IACM,MAAM,CAAU,YAAY,GAAG,IAAA,aAAK,EAC1C,kEAAkE,CACnE,CAAC;IACM,MAAM,CAAU,YAAY,GAAG,IAAA,aAAK,EAC1C,wCAAwC,CACzC,CAAC;IAEM,MAAM,CAAU,EAAE,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAU,IAAI,GAAG,IAAI,WAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAE7D,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAgB;QACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACjE,OAAO;gBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;gBACnC,WAAW;gBACX,WAAW,EAAE,oBAAoB;aAClC,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;gBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;gBACnC,WAAW;gBACX,WAAW,EAAE,oBAAoB;aAClC,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;gBACL,UAAU,EAAE,wCAAuB,CAAC,EAAE;gBACtC,WAAW;gBACX,WAAW,EAAE,uBAAuB;aACrC,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAClC,uBAAuB,EACvB,cAAc,CACf,CAAC;YACF,OAAO;gBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;gBACnC,WAAW;gBACX,WAAW,EAAE,oBAAoB;aAClC,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,MAAM,WAAW,GACf,wBAAwB;oBACxB,KAAK,CAAC,CAAC,CAAC;oBACR,GAAG;oBACH,KAAK,CAAC,CAAC,CAAC;oBACR,QAAQ;oBACR,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CACjD,IAAA,aAAK,EAAC,QAAQ,CAAC,EACf,EAAE,CACH,CAAC;gBACJ,OAAO;oBACL,UAAU,EAAE,4BAAiB,CAAC,EAAE;oBAChC,WAAW;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO;gBACL,UAAU,EAAE,gCAAmB,CAAC,EAAE;gBAClC,WAAW;gBACX,WAAW,EAAE,mBAAmB;aACjC,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO;gBACL,UAAU,EAAE,gCAAmB,CAAC,EAAE;gBAClC,WAAW;gBACX,WAAW,EAAE,0BAA0B;aACxC,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO;gBACL,UAAU,EAAE,gCAAmB,CAAC,EAAE;gBAClC,WAAW;gBACX,WAAW,EAAE,sBAAsB;aACpC,CAAC;QACJ,CAAC;QACD,YAAY;QAEZ,OAAO,MAAM,gBAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAClC,QAAgB;QAEhB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,WAAW,WAAW,WAAW,CAAC;QACjD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEnE,MAAM,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,kDAAkD;QAClD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,wCAAwC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,cAAc,CAC3B,IAAY,EACZ,QAAgB;QAEhB,MAAM,iBAAiB,GAAG,IAAA,aAAK,EAC7B,oFAAoF,CACrF,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC;QAElD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,mCAAmC,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,eAAM,CAAC,KAAK,CAAC,wBAAwB,WAAW,eAAe,QAAQ,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAC7B,WAAmB,EACnB,QAAgB;QAEhB,IAAI,WAAW,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAClD,OAAO;gBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;gBACnC,WAAW,EAAE,WAAW;qBACrB,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;qBAClC,OAAO,CAAC,IAAA,aAAK,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC5B,WAAW,EAAE,oBAAoB;aAClC,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC;QACnE,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;QAE/D,MAAM,sBAAsB,GAC1B,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC/D,IAAI,sBAAsB,EAAE,CAAC;YAC3B,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,sBAAsB,CAAC;YACnE,MAAM,WAAW,GACf,kBAAkB,IAAI,gBAAgB,IAAI,eAAe,CAAC;YAC5D,OAAO;gBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;gBACnC,WAAW,EAAE,cAAc;gBAC3B,WAAW;aACZ,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,WAAW,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,+BAA+B,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,qBAAY,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAClD,MAAM,cAAc,GAAG,IAAA,aAAK,EAC1B,kDAAkD,CACnD,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;YAEjC,IAAI,WAAW;YACb,2GAA2G;YAC3G,kBAAkB,IAAI,IAAA,sBAAgB,EAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,cAAc,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;gBAChD,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,WAAW,GAAG,cAAc;gBAChC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,eAAe,CAAC,EAAE,GAAG,CAAC;gBAC/C,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAE/C,OAAO;gBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;gBACnC,WAAW;gBACX,WAAW;aACZ,CAAC;QACJ,CAAC;QACD,0BAA0B;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,cAAc,CAC3B,IAAY,EACZ,QAAgB;QAEhB,MAAM,iBAAiB,GAAG,IAAA,aAAK,EAC7B,wGAAwG,CACzG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,wCAAwC,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC;QAEzD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,mCAAmC,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,gCAAgC,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sCAAsC;QACtC,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,+BAA+B,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,eAAM,CAAC,KAAK,CAAC,cAAc,QAAQ,sBAAsB,WAAW,EAAE,CAAC,CAAC;QAExE,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CACtC,WAAW,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EACxC,QAAQ,CACT,CAAC;QACF,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,sDAAsD;QAEtD,QAAQ,IAAA,uBAAc,EAAC,WAAW,CAAC,EAAE,CAAC;YACpC,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,gEAAgE;gBAChE,8CAA8C;gBAC9C,MAAM,WAAW,GAAG,IAAA,uBAAiB,EAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;qBAC3D,OAAO,CAAC,IAAA,aAAK,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;qBAC5B,KAAK,CAAC,GAAG,CAAC;qBACV,KAAK,CAAC,CAAC,CAAC,CAAC;qBACT,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEb,OAAO;oBACL,UAAU,EAAE,kCAAoB,CAAC,EAAE;oBACnC,WAAW,EAAE,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,EAAE;oBACvD,WAAW;iBACZ,CAAC;YACJ,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,OAAO;oBACL,UAAU,EAAE,4BAAiB,CAAC,EAAE;oBAChC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;iBACtD,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,OAAO;oBACL,UAAU,EAAE,4BAAiB,CAAC,EAAE;oBAChC,WAAW,EAAE,WAAW;iBACzB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;;AAlSH,4CAmSC","sourcesContent":["// TODO: types (#22198)\nimport { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport { detectPlatform } from '../../../util/common';\nimport * as hostRules from '../../../util/host-rules';\nimport { Http } from '../../../util/http';\nimport { regEx } from '../../../util/regex';\nimport {\n parseUrl,\n trimLeadingSlash,\n trimTrailingSlash,\n} from '../../../util/url';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags';\nimport { GitTagsDatasource } from '../git-tags';\nimport { GiteaTagsDatasource } from '../gitea-tags';\nimport { GithubTagsDatasource } from '../github-tags';\nimport { GitlabTagsDatasource } from '../gitlab-tags';\nimport type { DataSource } from './types';\n\n// TODO: figure out class hierarchy (#10532)\nexport class BaseGoDatasource {\n private static readonly gitlabHttpsRegExp = regEx(\n /^(?<httpsRegExpUrl>https:\\/\\/[^/]*gitlab\\.[^/]*)\\/(?<httpsRegExpName>.+?)(?:\\/v\\d+)?[/]?$/,\n );\n private static readonly gitlabRegExp = regEx(\n /^(?<regExpUrl>gitlab\\.[^/]*)\\/(?<regExpPath>.+?)(?:\\/v\\d+)?[/]?$/,\n );\n private static readonly gitVcsRegexp = regEx(\n /^(?:[^/]+)\\/(?<module>.*)\\.git(?:$|\\/)/,\n );\n\n private static readonly id = 'go';\n private static readonly http = new Http(BaseGoDatasource.id);\n\n static async getDatasource(goModule: string): Promise<DataSource | null> {\n if (goModule.startsWith('gopkg.in/')) {\n const [pkg] = goModule.replace('gopkg.in/', '').split('.');\n const packageName = pkg.includes('/') ? pkg : `go-${pkg}/${pkg}`;\n return {\n datasource: GithubTagsDatasource.id,\n packageName,\n registryUrl: 'https://github.com',\n };\n }\n\n if (goModule.startsWith('github.com/')) {\n const split = goModule.split('/');\n const packageName = split[1] + '/' + split[2];\n return {\n datasource: GithubTagsDatasource.id,\n packageName,\n registryUrl: 'https://github.com',\n };\n }\n\n if (goModule.startsWith('bitbucket.org/')) {\n const split = goModule.split('/');\n const packageName = split[1] + '/' + split[2];\n return {\n datasource: BitbucketTagsDatasource.id,\n packageName,\n registryUrl: 'https://bitbucket.org',\n };\n }\n\n if (goModule.startsWith('code.cloudfoundry.org/')) {\n const packageName = goModule.replace(\n 'code.cloudfoundry.org',\n 'cloudfoundry',\n );\n return {\n datasource: GithubTagsDatasource.id,\n packageName,\n registryUrl: 'https://github.com',\n };\n }\n\n if (goModule.startsWith('dev.azure.com/')) {\n const split = goModule.split('/');\n if ((split.length > 4 && split[3] === '_git') || split.length > 3) {\n const packageName =\n 'https://dev.azure.com/' +\n split[1] +\n '/' +\n split[2] +\n '/_git/' +\n (split[3] === '_git' ? split[4] : split[3]).replace(\n regEx(/\\.git$/),\n '',\n );\n return {\n datasource: GitTagsDatasource.id,\n packageName,\n };\n }\n }\n\n //#region known gitea compatible hosts\n if (goModule.startsWith('gitea.com/')) {\n const split = goModule.split('/');\n const packageName = `${split[1]}/${split[2]}`;\n return {\n datasource: GiteaTagsDatasource.id,\n packageName,\n registryUrl: 'https://gitea.com',\n };\n }\n\n if (goModule.startsWith('code.forgejo.org/')) {\n const split = goModule.split('/');\n const packageName = `${split[1]}/${split[2]}`;\n return {\n datasource: GiteaTagsDatasource.id,\n packageName,\n registryUrl: 'https://code.forgejo.org',\n };\n }\n\n if (goModule.startsWith('codeberg.org/')) {\n const split = goModule.split('/');\n const packageName = `${split[1]}/${split[2]}`;\n return {\n datasource: GiteaTagsDatasource.id,\n packageName,\n registryUrl: 'https://codeberg.org',\n };\n }\n //#endregion\n\n return await BaseGoDatasource.goGetDatasource(goModule);\n }\n\n private static async goGetDatasource(\n goModule: string,\n ): Promise<DataSource | null> {\n const goModuleUrl = goModule.replace(/\\.git(\\/[a-z0-9/]*)?$/, '');\n const pkgUrl = `https://${goModuleUrl}?go-get=1`;\n const { body: html } = await BaseGoDatasource.http.getText(pkgUrl);\n\n const goSourceHeader = BaseGoDatasource.goSourceHeader(html, goModule);\n if (goSourceHeader) {\n return goSourceHeader;\n }\n\n // GitHub Enterprise only returns a go-import meta\n const goImport = BaseGoDatasource.goImportHeader(html, goModule);\n if (goImport) {\n return goImport;\n }\n\n logger.trace({ goModule }, 'No go-source or go-import header found');\n return null;\n }\n\n private static goSourceHeader(\n html: string,\n goModule: string,\n ): DataSource | null {\n const sourceMatchGroups = regEx(\n /<meta\\s+name=\"?go-source\"?\\s+content=\"(?<prefix>[^\"\\s]+)\\s+(?<goSourceUrl>[^\"\\s]+)/,\n ).exec(html)?.groups;\n if (!sourceMatchGroups) {\n return null;\n }\n const { prefix, goSourceUrl } = sourceMatchGroups;\n\n if (!goModule.startsWith(prefix)) {\n logger.trace({ goModule }, 'go-source header prefix not match');\n return null;\n }\n\n logger.debug(`Go lookup source url ${goSourceUrl} for module ${goModule}`);\n return this.detectDatasource(goSourceUrl, goModule);\n }\n\n private static detectDatasource(\n metadataUrl: string,\n goModule: string,\n ): DataSource | null {\n if (metadataUrl.startsWith('https://github.com/')) {\n return {\n datasource: GithubTagsDatasource.id,\n packageName: metadataUrl\n .replace('https://github.com/', '')\n .replace(regEx(/\\/$/), ''),\n registryUrl: 'https://github.com',\n };\n }\n\n const gitlabModuleName =\n BaseGoDatasource.gitlabRegExp.exec(goModule)?.groups?.regExpPath;\n const vcsIndicatedModule =\n BaseGoDatasource.gitVcsRegexp.exec(goModule)?.groups?.module;\n\n const metadataUrlMatchGroups =\n BaseGoDatasource.gitlabHttpsRegExp.exec(metadataUrl)?.groups;\n if (metadataUrlMatchGroups) {\n const { httpsRegExpUrl, httpsRegExpName } = metadataUrlMatchGroups;\n const packageName =\n vcsIndicatedModule ?? gitlabModuleName ?? httpsRegExpName;\n return {\n datasource: GitlabTagsDatasource.id,\n registryUrl: httpsRegExpUrl,\n packageName,\n };\n }\n\n if (hostRules.hostType({ url: metadataUrl }) === 'gitlab') {\n const parsedUrl = parseUrl(metadataUrl);\n if (!parsedUrl) {\n logger.trace({ goModule }, 'Could not parse go-source URL');\n return null;\n }\n\n const endpoint = GlobalConfig.get('endpoint', '');\n const endpointPrefix = regEx(\n /https:\\/\\/[^/]+\\/(?<prefix>.*?\\/)(?:api\\/v4\\/?)?/,\n ).exec(endpoint)?.groups?.prefix;\n\n let packageName =\n // a .git path indicates a concrete git repository, which can be different from metadata returned by gitlab\n vcsIndicatedModule ?? trimLeadingSlash(parsedUrl.pathname);\n if (endpointPrefix && endpointPrefix !== 'api/') {\n packageName = packageName.replace(endpointPrefix, '');\n }\n\n const registryUrl = endpointPrefix\n ? endpoint.replace(regEx(/\\/api\\/v4\\/?$/), '/')\n : `${parsedUrl.protocol}//${parsedUrl.host}`;\n\n return {\n datasource: GitlabTagsDatasource.id,\n registryUrl,\n packageName,\n };\n }\n /* istanbul ignore next */\n return null;\n }\n\n private static goImportHeader(\n html: string,\n goModule: string,\n ): DataSource | null {\n const importMatchGroups = regEx(\n /<meta\\s+name=\"?go-import\"?\\s+content=\"(?<prefix>[^\"\\s]+)\\s+(?<proto>[^\"\\s]+)\\s+(?<goImportURL>[^\"\\s]+)/,\n ).exec(html)?.groups;\n if (!importMatchGroups) {\n logger.trace({ goModule }, 'No go-source or go-import header found');\n return null;\n }\n const { prefix, proto, goImportURL } = importMatchGroups;\n\n if (!goModule.startsWith(prefix)) {\n logger.trace({ goModule }, 'go-import header prefix not match');\n return null;\n }\n\n if (proto !== 'git') {\n logger.trace({ goModule }, 'go-import header proto not git');\n return null;\n }\n\n // get server base url from import url\n const parsedUrl = parseUrl(goImportURL);\n if (!parsedUrl) {\n logger.trace({ goModule }, 'Could not parse go-import URL');\n return null;\n }\n\n logger.debug(`Go module: ${goModule} lookup import url ${goImportURL}`);\n\n const datasource = this.detectDatasource(\n goImportURL.replace(regEx(/\\.git$/), ''),\n goModule,\n );\n if (datasource !== null) {\n return datasource;\n }\n // fall back to old behavior if detection did not work\n\n switch (detectPlatform(goImportURL)) {\n case 'github': {\n // split the go module from the URL: host/go/module -> go/module\n // TODO: `parsedUrl.pathname` can be undefined\n const packageName = trimTrailingSlash(`${parsedUrl.pathname}`)\n .replace(regEx(/\\.git$/), '')\n .split('/')\n .slice(-2)\n .join('/');\n\n return {\n datasource: GithubTagsDatasource.id,\n registryUrl: `${parsedUrl.protocol}//${parsedUrl.host}`,\n packageName,\n };\n }\n case 'azure': {\n return {\n datasource: GitTagsDatasource.id,\n packageName: goImportURL.replace(regEx(/\\.git$/), ''),\n };\n }\n default: {\n return {\n datasource: GitTagsDatasource.id,\n packageName: goImportURL,\n };\n }\n }\n }\n}\n"]}
@@ -110,7 +110,7 @@ class GoProxyDatasource extends datasource_1.Datasource {
110
110
  }
111
111
  async listVersions(baseUrl, packageName) {
112
112
  const url = (0, url_1.joinUrlParts)(baseUrl, this.encodeCase(packageName), '@v', 'list');
113
- const { body } = await this.http.get(url);
113
+ const { body } = await this.http.getText(url);
114
114
  return (0, filter_map_1.filterMap)(body.split(regex_1.newlineRegex), (str) => {
115
115
  if (!is_1.default.nonEmptyStringAndNotWhitespace(str)) {
116
116
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"releases-goproxy.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/releases-goproxy.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { filterMap } from '../../../util/filter-map';\nimport { HttpError } from '../../../util/http';\nimport * as p from '../../../util/promises';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport goVersioning from '../../versioning/go-mod-directive';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport { BaseGoDatasource } from './base';\nimport { getSourceUrl } from './common';\nimport { parseGoproxy, parseNoproxy } from './goproxy-parser';\nimport { GoDirectDatasource } from './releases-direct';\nimport type { VersionInfo } from './types';\n\nconst modRegex = regEx(/^(?<baseMod>.*?)(?:[./]v(?<majorVersion>\\d+))?$/);\n\n/**\n * @see https://go.dev/ref/mod#pseudo-versions\n */\nconst pseudoVersionRegex = regEx(\n /v\\d+\\.\\d+\\.\\d+-(?:\\w+\\.)?(?:0\\.)?(?<timestamp>\\d{14})-(?<digest>[a-f0-9]{12})/i,\n);\n\nexport function pseudoVersionToRelease(pseudoVersion: string): Release | null {\n const match = pseudoVersion.match(pseudoVersionRegex)?.groups;\n if (!match) {\n return null;\n }\n\n const { digest: newDigest, timestamp } = match;\n const releaseTimestamp = asTimestamp(timestamp);\n\n return {\n version: pseudoVersion,\n newDigest,\n releaseTimestamp,\n };\n}\n\nexport class GoProxyDatasource extends Datasource {\n static readonly id = 'go-proxy';\n\n constructor() {\n super(GoProxyDatasource.id);\n }\n\n readonly direct = new GoDirectDatasource();\n\n @cache({\n namespace: `datasource-${GoProxyDatasource.id}`,\n key: (config: GetReleasesConfig) => GoProxyDatasource.getCacheKey(config),\n })\n async getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n const { packageName } = config;\n logger.trace(`goproxy.getReleases(${packageName})`);\n const goproxy = process.env.GOPROXY ?? 'https://proxy.golang.org,direct';\n if (goproxy === 'direct') {\n return this.direct.getReleases(config);\n }\n const proxyList = parseGoproxy(goproxy);\n const noproxy = parseNoproxy();\n\n let result: ReleaseResult | null = null;\n\n if (noproxy?.test(packageName)) {\n logger.debug(`Fetching ${packageName} via GONOPROXY match`);\n result = await this.direct.getReleases(config);\n return result;\n }\n\n for (const { url, fallback } of proxyList) {\n try {\n if (url === 'off') {\n break;\n } else if (url === 'direct') {\n result = await this.direct.getReleases(config);\n break;\n }\n\n const res = await this.getVersionsWithInfo(url, packageName);\n if (res.releases.length) {\n result = res;\n break;\n }\n } catch (err) {\n const potentialHttpError =\n err instanceof ExternalHostError ? err.err : err;\n const statusCode = potentialHttpError?.response?.statusCode;\n const canFallback =\n fallback === '|' ? true : statusCode === 404 || statusCode === 410;\n const msg = canFallback\n ? 'Goproxy error: trying next URL provided with GOPROXY'\n : 'Goproxy error: skipping other URLs provided with GOPROXY';\n logger.debug({ err }, msg);\n if (!canFallback) {\n break;\n }\n }\n }\n\n if (result && !result.sourceUrl) {\n try {\n const datasource = await BaseGoDatasource.getDatasource(packageName);\n const sourceUrl = getSourceUrl(datasource);\n if (sourceUrl) {\n result.sourceUrl = sourceUrl;\n }\n } catch (err) {\n logger.trace({ err }, `Can't get datasource for ${packageName}`);\n }\n }\n\n return result;\n }\n\n /**\n * Avoid ambiguity when serving from case-insensitive file systems.\n *\n * @see https://golang.org/ref/mod#goproxy-protocol\n */\n encodeCase(input: string): string {\n return input.replace(regEx(/([A-Z])/g), (x) => `!${x.toLowerCase()}`);\n }\n\n async listVersions(baseUrl: string, packageName: string): Promise<Release[]> {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@v',\n 'list',\n );\n const { body } = await this.http.get(url);\n return filterMap(body.split(newlineRegex), (str) => {\n if (!is.nonEmptyStringAndNotWhitespace(str)) {\n return null;\n }\n\n const [version, timestamp] = str.trim().split(regEx(/\\s+/));\n const release: Release = pseudoVersionToRelease(version) ?? { version };\n\n const releaseTimestamp = asTimestamp(timestamp);\n if (releaseTimestamp) {\n release.releaseTimestamp = releaseTimestamp;\n }\n\n return release;\n });\n }\n\n async versionInfo(\n baseUrl: string,\n packageName: string,\n version: string,\n ): Promise<Release> {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@v',\n `${version}.info`,\n );\n const res = await this.http.getJsonUnchecked<VersionInfo>(url);\n\n const result: Release = {\n version: res.body.Version,\n };\n\n const releaseTimestamp = asTimestamp(res.body.Time);\n if (releaseTimestamp) {\n result.releaseTimestamp = releaseTimestamp;\n }\n\n return result;\n }\n\n async getLatestVersion(\n baseUrl: string,\n packageName: string,\n ): Promise<string | null> {\n try {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@latest',\n );\n const res = await this.http.getJsonUnchecked<VersionInfo>(url);\n return res.body.Version;\n } catch (err) {\n logger.trace({ err }, 'Failed to get latest version');\n return null;\n }\n }\n\n async getVersionsWithInfo(\n baseUrl: string,\n packageName: string,\n ): Promise<ReleaseResult> {\n const isGopkgin = packageName.startsWith('gopkg.in/');\n const majorSuffixSeparator = isGopkgin ? '.' : '/';\n const modParts = packageName.match(modRegex)?.groups;\n const baseMod = modParts?.baseMod ?? /* istanbul ignore next */ packageName;\n const packageMajor = parseInt(modParts?.majorVersion ?? '0');\n\n const result: ReleaseResult = { releases: [] };\n for (let major = packageMajor; ; major += 1) {\n let pkg = `${baseMod}${majorSuffixSeparator}v${major}`;\n if (!isGopkgin && major < 2) {\n pkg = baseMod;\n major += 1; // v0 and v1 are the same module\n }\n\n let releases: Release[] = [];\n\n try {\n const res = await this.listVersions(baseUrl, pkg);\n\n // Artifactory returns all versions in any major (past and future),\n // so starting from v2, we filter them in order to avoid the infinite loop\n const filteredReleases = res.filter(({ version }) => {\n if (major < 2) {\n return true;\n }\n\n return (\n version.split(regEx(/[^\\d]+/)).find(is.truthy) === major.toString()\n );\n });\n\n releases = await p.map(filteredReleases, async (versionInfo) => {\n const { version, newDigest, releaseTimestamp } = versionInfo;\n\n if (releaseTimestamp) {\n return { version, newDigest, releaseTimestamp };\n }\n\n try {\n return await this.versionInfo(baseUrl, pkg, version);\n } catch (err) {\n logger.trace({ err }, `Can't obtain data from ${baseUrl}`);\n return { version };\n }\n });\n result.releases.push(...releases);\n } catch (err) {\n const potentialHttpError =\n err instanceof ExternalHostError ? err.err : err;\n if (\n potentialHttpError instanceof HttpError &&\n potentialHttpError.response?.statusCode === 404 &&\n major !== packageMajor\n ) {\n break;\n }\n\n throw err;\n }\n\n const latestVersion = await this.getLatestVersion(baseUrl, pkg);\n if (latestVersion) {\n result.tags ??= {};\n result.tags.latest ??= latestVersion;\n if (goVersioning.isGreaterThan(latestVersion, result.tags.latest)) {\n result.tags.latest = latestVersion;\n }\n if (!result.releases.length) {\n const releaseFromLatest = pseudoVersionToRelease(latestVersion);\n if (releaseFromLatest) {\n result.releases.push(releaseFromLatest);\n }\n }\n }\n\n if (!releases.length) {\n break;\n }\n }\n\n return result;\n }\n\n static getCacheKey({ packageName }: GetReleasesConfig): string {\n const goproxy = process.env.GOPROXY;\n const noproxy = parseNoproxy();\n // TODO: types (#22198)\n return `${packageName}@@${goproxy}@@${noproxy?.toString()}`;\n }\n}\n"]}
1
+ {"version":3,"file":"releases-goproxy.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/releases-goproxy.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { filterMap } from '../../../util/filter-map';\nimport { HttpError } from '../../../util/http';\nimport * as p from '../../../util/promises';\nimport { newlineRegex, regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport goVersioning from '../../versioning/go-mod-directive';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport { BaseGoDatasource } from './base';\nimport { getSourceUrl } from './common';\nimport { parseGoproxy, parseNoproxy } from './goproxy-parser';\nimport { GoDirectDatasource } from './releases-direct';\nimport type { VersionInfo } from './types';\n\nconst modRegex = regEx(/^(?<baseMod>.*?)(?:[./]v(?<majorVersion>\\d+))?$/);\n\n/**\n * @see https://go.dev/ref/mod#pseudo-versions\n */\nconst pseudoVersionRegex = regEx(\n /v\\d+\\.\\d+\\.\\d+-(?:\\w+\\.)?(?:0\\.)?(?<timestamp>\\d{14})-(?<digest>[a-f0-9]{12})/i,\n);\n\nexport function pseudoVersionToRelease(pseudoVersion: string): Release | null {\n const match = pseudoVersion.match(pseudoVersionRegex)?.groups;\n if (!match) {\n return null;\n }\n\n const { digest: newDigest, timestamp } = match;\n const releaseTimestamp = asTimestamp(timestamp);\n\n return {\n version: pseudoVersion,\n newDigest,\n releaseTimestamp,\n };\n}\n\nexport class GoProxyDatasource extends Datasource {\n static readonly id = 'go-proxy';\n\n constructor() {\n super(GoProxyDatasource.id);\n }\n\n readonly direct = new GoDirectDatasource();\n\n @cache({\n namespace: `datasource-${GoProxyDatasource.id}`,\n key: (config: GetReleasesConfig) => GoProxyDatasource.getCacheKey(config),\n })\n async getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n const { packageName } = config;\n logger.trace(`goproxy.getReleases(${packageName})`);\n const goproxy = process.env.GOPROXY ?? 'https://proxy.golang.org,direct';\n if (goproxy === 'direct') {\n return this.direct.getReleases(config);\n }\n const proxyList = parseGoproxy(goproxy);\n const noproxy = parseNoproxy();\n\n let result: ReleaseResult | null = null;\n\n if (noproxy?.test(packageName)) {\n logger.debug(`Fetching ${packageName} via GONOPROXY match`);\n result = await this.direct.getReleases(config);\n return result;\n }\n\n for (const { url, fallback } of proxyList) {\n try {\n if (url === 'off') {\n break;\n } else if (url === 'direct') {\n result = await this.direct.getReleases(config);\n break;\n }\n\n const res = await this.getVersionsWithInfo(url, packageName);\n if (res.releases.length) {\n result = res;\n break;\n }\n } catch (err) {\n const potentialHttpError =\n err instanceof ExternalHostError ? err.err : err;\n const statusCode = potentialHttpError?.response?.statusCode;\n const canFallback =\n fallback === '|' ? true : statusCode === 404 || statusCode === 410;\n const msg = canFallback\n ? 'Goproxy error: trying next URL provided with GOPROXY'\n : 'Goproxy error: skipping other URLs provided with GOPROXY';\n logger.debug({ err }, msg);\n if (!canFallback) {\n break;\n }\n }\n }\n\n if (result && !result.sourceUrl) {\n try {\n const datasource = await BaseGoDatasource.getDatasource(packageName);\n const sourceUrl = getSourceUrl(datasource);\n if (sourceUrl) {\n result.sourceUrl = sourceUrl;\n }\n } catch (err) {\n logger.trace({ err }, `Can't get datasource for ${packageName}`);\n }\n }\n\n return result;\n }\n\n /**\n * Avoid ambiguity when serving from case-insensitive file systems.\n *\n * @see https://golang.org/ref/mod#goproxy-protocol\n */\n encodeCase(input: string): string {\n return input.replace(regEx(/([A-Z])/g), (x) => `!${x.toLowerCase()}`);\n }\n\n async listVersions(baseUrl: string, packageName: string): Promise<Release[]> {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@v',\n 'list',\n );\n const { body } = await this.http.getText(url);\n return filterMap(body.split(newlineRegex), (str) => {\n if (!is.nonEmptyStringAndNotWhitespace(str)) {\n return null;\n }\n\n const [version, timestamp] = str.trim().split(regEx(/\\s+/));\n const release: Release = pseudoVersionToRelease(version) ?? { version };\n\n const releaseTimestamp = asTimestamp(timestamp);\n if (releaseTimestamp) {\n release.releaseTimestamp = releaseTimestamp;\n }\n\n return release;\n });\n }\n\n async versionInfo(\n baseUrl: string,\n packageName: string,\n version: string,\n ): Promise<Release> {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@v',\n `${version}.info`,\n );\n const res = await this.http.getJsonUnchecked<VersionInfo>(url);\n\n const result: Release = {\n version: res.body.Version,\n };\n\n const releaseTimestamp = asTimestamp(res.body.Time);\n if (releaseTimestamp) {\n result.releaseTimestamp = releaseTimestamp;\n }\n\n return result;\n }\n\n async getLatestVersion(\n baseUrl: string,\n packageName: string,\n ): Promise<string | null> {\n try {\n const url = joinUrlParts(\n baseUrl,\n this.encodeCase(packageName),\n '@latest',\n );\n const res = await this.http.getJsonUnchecked<VersionInfo>(url);\n return res.body.Version;\n } catch (err) {\n logger.trace({ err }, 'Failed to get latest version');\n return null;\n }\n }\n\n async getVersionsWithInfo(\n baseUrl: string,\n packageName: string,\n ): Promise<ReleaseResult> {\n const isGopkgin = packageName.startsWith('gopkg.in/');\n const majorSuffixSeparator = isGopkgin ? '.' : '/';\n const modParts = packageName.match(modRegex)?.groups;\n const baseMod = modParts?.baseMod ?? /* istanbul ignore next */ packageName;\n const packageMajor = parseInt(modParts?.majorVersion ?? '0');\n\n const result: ReleaseResult = { releases: [] };\n for (let major = packageMajor; ; major += 1) {\n let pkg = `${baseMod}${majorSuffixSeparator}v${major}`;\n if (!isGopkgin && major < 2) {\n pkg = baseMod;\n major += 1; // v0 and v1 are the same module\n }\n\n let releases: Release[] = [];\n\n try {\n const res = await this.listVersions(baseUrl, pkg);\n\n // Artifactory returns all versions in any major (past and future),\n // so starting from v2, we filter them in order to avoid the infinite loop\n const filteredReleases = res.filter(({ version }) => {\n if (major < 2) {\n return true;\n }\n\n return (\n version.split(regEx(/[^\\d]+/)).find(is.truthy) === major.toString()\n );\n });\n\n releases = await p.map(filteredReleases, async (versionInfo) => {\n const { version, newDigest, releaseTimestamp } = versionInfo;\n\n if (releaseTimestamp) {\n return { version, newDigest, releaseTimestamp };\n }\n\n try {\n return await this.versionInfo(baseUrl, pkg, version);\n } catch (err) {\n logger.trace({ err }, `Can't obtain data from ${baseUrl}`);\n return { version };\n }\n });\n result.releases.push(...releases);\n } catch (err) {\n const potentialHttpError =\n err instanceof ExternalHostError ? err.err : err;\n if (\n potentialHttpError instanceof HttpError &&\n potentialHttpError.response?.statusCode === 404 &&\n major !== packageMajor\n ) {\n break;\n }\n\n throw err;\n }\n\n const latestVersion = await this.getLatestVersion(baseUrl, pkg);\n if (latestVersion) {\n result.tags ??= {};\n result.tags.latest ??= latestVersion;\n if (goVersioning.isGreaterThan(latestVersion, result.tags.latest)) {\n result.tags.latest = latestVersion;\n }\n if (!result.releases.length) {\n const releaseFromLatest = pseudoVersionToRelease(latestVersion);\n if (releaseFromLatest) {\n result.releases.push(releaseFromLatest);\n }\n }\n }\n\n if (!releases.length) {\n break;\n }\n }\n\n return result;\n }\n\n static getCacheKey({ packageName }: GetReleasesConfig): string {\n const goproxy = process.env.GOPROXY;\n const noproxy = parseNoproxy();\n // TODO: types (#22198)\n return `${packageName}@@${goproxy}@@${noproxy?.toString()}`;\n }\n}\n"]}
@@ -40,7 +40,7 @@ class GolangVersionDatasource extends datasource_1.Datasource {
40
40
  releases: [],
41
41
  };
42
42
  const golangVersionsUrl = (0, url_1.joinUrlParts)(registryUrl, '/HEAD/internal/history/release.go');
43
- const response = await this.http.get(golangVersionsUrl);
43
+ const response = await this.http.getText(golangVersionsUrl);
44
44
  const lines = response.body.split(lineTerminationRegex);
45
45
  const startOfReleases = lines.indexOf('var Releases = []*Release{');
46
46
  if (startOfReleases === -1) {
@@ -1 +1 @@
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 // istanbul ignore if\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.get(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"]}
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 // istanbul ignore if\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"]}
@@ -36,7 +36,7 @@ class HexpmBobDatasource extends datasource_1.Datasource {
36
36
  ...HexpmBobDatasource.getPackageDetails(packageType),
37
37
  };
38
38
  try {
39
- const { body } = await this.http.get(url);
39
+ const { body } = await this.http.getText(url);
40
40
  result.releases = body
41
41
  .split('\n')
42
42
  .map((line) => line.trim())
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/hexpm-bob/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { HttpError } from '../../../util/http';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { id as semverId } from '../../versioning/semver';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { datasource, defaultRegistryUrl } from './common';\nimport type { PackageType } from './types';\n\nexport class HexpmBobDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override readonly customRegistrySupport = true;\n\n override readonly defaultRegistryUrls = [defaultRegistryUrl];\n\n override readonly caching = true;\n\n override readonly defaultVersioning = semverId;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `buildDate` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL https://github.com/elixir-lang/elixir.git for the `elixir` package and the https://github.com/erlang/otp.git URL for the `erlang` package.';\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n `${registryUrl}:${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const packageType = HexpmBobDatasource.getPackageType(packageName);\n\n if (!packageType) {\n return null;\n }\n\n logger.trace(\n { registryUrl, packageName },\n `fetching hex.pm bob ${packageName} release`,\n );\n\n const url = `${registryUrl!}/builds/${packageName}/builds.txt`;\n\n const result: ReleaseResult = {\n releases: [],\n ...HexpmBobDatasource.getPackageDetails(packageType),\n };\n try {\n const { body } = await this.http.get(url);\n result.releases = body\n .split('\\n')\n .map((line) => line.trim())\n .filter(is.nonEmptyString)\n .map((line) => {\n const [version, gitRef, buildDate] = line.split(' ');\n\n return {\n gitRef,\n isStable: HexpmBobDatasource.isStable(version, packageType),\n releaseTimestamp: asTimestamp(buildDate),\n version: HexpmBobDatasource.cleanVersion(version, packageType),\n };\n });\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode !== 404) {\n throw new ExternalHostError(err);\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length > 0 ? result : null;\n }\n\n private static getPackageType(packageName: string): PackageType | null {\n if (packageName === 'elixir') {\n return 'elixir';\n }\n if (/^otp\\/\\w+-\\d+\\.\\d+$/.test(packageName)) {\n return 'erlang';\n }\n return null;\n }\n\n private static cleanVersion(\n version: string,\n packageType: PackageType,\n ): string {\n switch (packageType) {\n case 'elixir':\n return version.replace(/^v/, '');\n case 'erlang':\n return version.replace(/^OTP-/, '');\n }\n }\n\n private static isStable(version: string, packageType: PackageType): boolean {\n switch (packageType) {\n case 'elixir':\n return /^v\\d+\\.\\d+\\.\\d+($|-otp)/.test(version);\n case 'erlang':\n return version.startsWith('OTP-');\n }\n }\n\n private static getPackageDetails(\n packageType: PackageType,\n ): Omit<ReleaseResult, 'releases'> {\n switch (packageType) {\n case 'elixir':\n return {\n homepage: 'https://elixir-lang.org/',\n sourceUrl: 'https://github.com/elixir-lang/elixir.git',\n };\n case 'erlang':\n return {\n homepage: 'https://www.erlang.org/',\n sourceUrl: 'https://github.com/erlang/otp.git',\n };\n }\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/hexpm-bob/index.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,4CAAyC;AACzC,mFAA8E;AAC9E,qEAA8D;AAC9D,6CAA+C;AAC/C,uDAAsD;AACtD,oDAAyD;AACzD,8CAA2C;AAE3C,qCAA0D;AAG1D,MAAa,kBAAmB,SAAQ,uBAAU;IAChD,MAAM,CAAU,EAAE,GAAG,mBAAU,CAAC;IAEhC;QACE,KAAK,CAAC,mBAAU,CAAC,CAAC;IACpB,CAAC;IAEiB,qBAAqB,GAAG,IAAI,CAAC;IAE7B,mBAAmB,GAAG,CAAC,2BAAkB,CAAC,CAAC;IAE3C,OAAO,GAAG,IAAI,CAAC;IAEf,iBAAiB,GAAG,WAAQ,CAAC;IAE7B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,gFAAgF,CAAC;IACjE,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,2JAA2J,CAAC;IAOxJ,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,MAAM,WAAW,GAAG,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEnE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,eAAM,CAAC,KAAK,CACV,EAAE,WAAW,EAAE,WAAW,EAAE,EAC5B,uBAAuB,WAAW,UAAU,CAC7C,CAAC;QAEF,MAAM,GAAG,GAAG,GAAG,WAAY,WAAW,WAAW,aAAa,CAAC;QAE/D,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE,EAAE;YACZ,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,WAAW,CAAC;SACrD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,CAAC,QAAQ,GAAG,IAAI;iBACnB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,YAAE,CAAC,cAAc,CAAC;iBACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAErD,OAAO;oBACL,MAAM;oBACN,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;oBAC3D,gBAAgB,EAAE,IAAA,uBAAW,EAAC,SAAS,CAAC;oBACxC,OAAO,EAAE,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC;iBAC/D,CAAC;YACJ,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,gBAAS,IAAI,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK,GAAG,EAAE,CAAC;gBACjE,MAAM,IAAI,uCAAiB,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,WAAmB;QAC/C,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,YAAY,CACzB,OAAe,EACf,WAAwB;QAExB,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACnC,KAAK,QAAQ;gBACX,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,WAAwB;QAC/D,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,KAAK,QAAQ;gBACX,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAC9B,WAAwB;QAExB,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO;oBACL,QAAQ,EAAE,0BAA0B;oBACpC,SAAS,EAAE,2CAA2C;iBACvD,CAAC;YACJ,KAAK,QAAQ;gBACX,OAAO;oBACL,QAAQ,EAAE,yBAAyB;oBACnC,SAAS,EAAE,mCAAmC;iBAC/C,CAAC;QACN,CAAC;IACH,CAAC;;AAxHH,gDAyHC;AA9FO;IALL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,mBAAU,EAAE;QACrC,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAqB,EAAE,EAAE,CACvD,GAAG,WAAW,IAAI,WAAW,EAAE;KAClC,CAAC;qDA8CD","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { HttpError } from '../../../util/http';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { id as semverId } from '../../versioning/semver';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { datasource, defaultRegistryUrl } from './common';\nimport type { PackageType } from './types';\n\nexport class HexpmBobDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override readonly customRegistrySupport = true;\n\n override readonly defaultRegistryUrls = [defaultRegistryUrl];\n\n override readonly caching = true;\n\n override readonly defaultVersioning = semverId;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `buildDate` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL https://github.com/elixir-lang/elixir.git for the `elixir` package and the https://github.com/erlang/otp.git URL for the `erlang` package.';\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n `${registryUrl}:${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const packageType = HexpmBobDatasource.getPackageType(packageName);\n\n if (!packageType) {\n return null;\n }\n\n logger.trace(\n { registryUrl, packageName },\n `fetching hex.pm bob ${packageName} release`,\n );\n\n const url = `${registryUrl!}/builds/${packageName}/builds.txt`;\n\n const result: ReleaseResult = {\n releases: [],\n ...HexpmBobDatasource.getPackageDetails(packageType),\n };\n try {\n const { body } = await this.http.getText(url);\n result.releases = body\n .split('\\n')\n .map((line) => line.trim())\n .filter(is.nonEmptyString)\n .map((line) => {\n const [version, gitRef, buildDate] = line.split(' ');\n\n return {\n gitRef,\n isStable: HexpmBobDatasource.isStable(version, packageType),\n releaseTimestamp: asTimestamp(buildDate),\n version: HexpmBobDatasource.cleanVersion(version, packageType),\n };\n });\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode !== 404) {\n throw new ExternalHostError(err);\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length > 0 ? result : null;\n }\n\n private static getPackageType(packageName: string): PackageType | null {\n if (packageName === 'elixir') {\n return 'elixir';\n }\n if (/^otp\\/\\w+-\\d+\\.\\d+$/.test(packageName)) {\n return 'erlang';\n }\n return null;\n }\n\n private static cleanVersion(\n version: string,\n packageType: PackageType,\n ): string {\n switch (packageType) {\n case 'elixir':\n return version.replace(/^v/, '');\n case 'erlang':\n return version.replace(/^OTP-/, '');\n }\n }\n\n private static isStable(version: string, packageType: PackageType): boolean {\n switch (packageType) {\n case 'elixir':\n return /^v\\d+\\.\\d+\\.\\d+($|-otp)/.test(version);\n case 'erlang':\n return version.startsWith('OTP-');\n }\n }\n\n private static getPackageDetails(\n packageType: PackageType,\n ): Omit<ReleaseResult, 'releases'> {\n switch (packageType) {\n case 'elixir':\n return {\n homepage: 'https://elixir-lang.org/',\n sourceUrl: 'https://github.com/elixir-lang/elixir.git',\n };\n case 'erlang':\n return {\n homepage: 'https://www.erlang.org/',\n sourceUrl: 'https://github.com/erlang/otp.git',\n };\n }\n }\n}\n"]}
@@ -60,7 +60,7 @@ function isUnsupportedHostError(err) {
60
60
  }
61
61
  async function downloadHttpProtocol(http, pkgUrl, opts = {}) {
62
62
  const url = pkgUrl.toString();
63
- const fetchResult = await result_1.Result.wrap(http.get(url, opts))
63
+ const fetchResult = await result_1.Result.wrap(http.getText(url, opts))
64
64
  .transform((res) => {
65
65
  const result = { data: res.body };
66
66
  if (!res.authorization) {
@@ -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.get(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 // 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"]}
@@ -17,7 +17,7 @@ class NugetV2Api {
17
17
  let pkgUrlList = `${feedUrl.replace((0, regex_1.regEx)(/\/+$/), '')}/FindPackagesById()?id=%27${pkgName}%27&$select=Version,IsLatestVersion,ProjectUrl,Published`;
18
18
  while (pkgUrlList !== null) {
19
19
  // typescript issue
20
- const pkgVersionsListRaw = await http.get(pkgUrlList);
20
+ const pkgVersionsListRaw = await http.getText(pkgUrlList);
21
21
  const pkgVersionsListDoc = new xmldoc_1.XmlDocument(pkgVersionsListRaw.body);
22
22
  const pkgInfoList = pkgVersionsListDoc.childrenNamed('entry');
23
23
  for (const pkgInfo of pkgInfoList) {