renovate 40.0.0-next.3 → 40.0.0-next.30

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 (683) hide show
  1. package/dist/config/decrypt/legacy.js +0 -1
  2. package/dist/config/decrypt/legacy.js.map +1 -1
  3. package/dist/config/decrypt.d.ts +3 -1
  4. package/dist/config/decrypt.js +56 -13
  5. package/dist/config/decrypt.js.map +1 -1
  6. package/dist/config/migrate-validate.js +3 -2
  7. package/dist/config/migrate-validate.js.map +1 -1
  8. package/dist/config/migration.js +2 -1
  9. package/dist/config/migration.js.map +1 -1
  10. package/dist/config/migrations/custom/rebase-stale-prs-migration.js +1 -1
  11. package/dist/config/migrations/custom/rebase-stale-prs-migration.js.map +1 -1
  12. package/dist/config/options/index.js +4 -3
  13. package/dist/config/options/index.js.map +1 -1
  14. package/dist/config/parse.js +2 -2
  15. package/dist/config/parse.js.map +1 -1
  16. package/dist/config/presets/gitea/index.js +0 -1
  17. package/dist/config/presets/gitea/index.js.map +1 -1
  18. package/dist/config/presets/github/index.js +0 -1
  19. package/dist/config/presets/github/index.js.map +1 -1
  20. package/dist/config/presets/gitlab/index.js +1 -1
  21. package/dist/config/presets/gitlab/index.js.map +1 -1
  22. package/dist/config/presets/http/index.js +1 -2
  23. package/dist/config/presets/http/index.js.map +1 -1
  24. package/dist/config/presets/index.js +0 -7
  25. package/dist/config/presets/index.js.map +1 -1
  26. package/dist/config/presets/internal/custom-managers.js +3 -4
  27. package/dist/config/presets/internal/custom-managers.js.map +1 -1
  28. package/dist/config/presets/internal/group.js +30 -1
  29. package/dist/config/presets/internal/group.js.map +1 -1
  30. package/dist/config/presets/internal/index.js +1 -3
  31. package/dist/config/presets/internal/index.js.map +1 -1
  32. package/dist/config/presets/internal/workarounds.js +1 -0
  33. package/dist/config/presets/internal/workarounds.js.map +1 -1
  34. package/dist/config/presets/parse.js +2 -1
  35. package/dist/config/presets/parse.js.map +1 -1
  36. package/dist/config/schema.d.ts +2 -2
  37. package/dist/config/types.d.ts +4 -1
  38. package/dist/config/types.js.map +1 -1
  39. package/dist/config/validation.js +3 -5
  40. package/dist/config/validation.js.map +1 -1
  41. package/dist/config-validator.js +0 -1
  42. package/dist/config-validator.js.map +1 -1
  43. package/dist/constants/category.js +0 -1
  44. package/dist/constants/category.js.map +1 -1
  45. package/dist/data/monorepo.json +5 -1
  46. package/dist/data/source-urls.json +1 -0
  47. package/dist/instrumentation/index.js +17 -13
  48. package/dist/instrumentation/index.js.map +1 -1
  49. package/dist/instrumentation/utils.js +1 -1
  50. package/dist/instrumentation/utils.js.map +1 -1
  51. package/dist/logger/cmd-serializer.js +0 -1
  52. package/dist/logger/cmd-serializer.js.map +1 -1
  53. package/dist/logger/config-serializer.js +0 -1
  54. package/dist/logger/config-serializer.js.map +1 -1
  55. package/dist/logger/index.js +1 -4
  56. package/dist/logger/index.js.map +1 -1
  57. package/dist/logger/once.js +4 -2
  58. package/dist/logger/once.js.map +1 -1
  59. package/dist/logger/pretty-stdout.js +0 -1
  60. package/dist/logger/pretty-stdout.js.map +1 -1
  61. package/dist/logger/renovate-logger.js +1 -1
  62. package/dist/logger/renovate-logger.js.map +1 -1
  63. package/dist/logger/utils.js +6 -11
  64. package/dist/logger/utils.js.map +1 -1
  65. package/dist/modules/datasource/api.js +2 -0
  66. package/dist/modules/datasource/api.js.map +1 -1
  67. package/dist/modules/datasource/artifactory/index.js +1 -2
  68. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  69. package/dist/modules/datasource/aws-eks-addon/index.d.ts +11 -0
  70. package/dist/modules/datasource/aws-eks-addon/index.js +75 -0
  71. package/dist/modules/datasource/aws-eks-addon/index.js.map +1 -0
  72. package/dist/modules/datasource/aws-eks-addon/schema.d.ts +40 -0
  73. package/dist/modules/datasource/aws-eks-addon/schema.js +31 -0
  74. package/dist/modules/datasource/aws-eks-addon/schema.js.map +1 -0
  75. package/dist/modules/datasource/aws-machine-image/index.js +6 -5
  76. package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
  77. package/dist/modules/datasource/azure-pipelines-tasks/index.js +11 -1
  78. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  79. package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +16 -0
  80. package/dist/modules/datasource/azure-pipelines-tasks/schema.js +2 -0
  81. package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
  82. package/dist/modules/datasource/bazel/index.js +0 -1
  83. package/dist/modules/datasource/bazel/index.js.map +1 -1
  84. package/dist/modules/datasource/bitrise/index.js +1 -1
  85. package/dist/modules/datasource/bitrise/index.js.map +1 -1
  86. package/dist/modules/datasource/cdnjs/schema.d.ts +2 -2
  87. package/dist/modules/datasource/conda/index.js +18 -1
  88. package/dist/modules/datasource/conda/index.js.map +1 -1
  89. package/dist/modules/datasource/conda/prefix-dev.d.ts +3 -0
  90. package/dist/modules/datasource/conda/prefix-dev.js +83 -0
  91. package/dist/modules/datasource/conda/prefix-dev.js.map +1 -0
  92. package/dist/modules/datasource/conda/schema/prefix-dev.d.ts +189 -0
  93. package/dist/modules/datasource/conda/schema/prefix-dev.js +31 -0
  94. package/dist/modules/datasource/conda/schema/prefix-dev.js.map +1 -0
  95. package/dist/modules/datasource/conda/types.d.ts +1 -20
  96. package/dist/modules/datasource/conda/types.js.map +1 -1
  97. package/dist/modules/datasource/cpan/index.js +1 -1
  98. package/dist/modules/datasource/cpan/index.js.map +1 -1
  99. package/dist/modules/datasource/crate/index.js +3 -3
  100. package/dist/modules/datasource/crate/index.js.map +1 -1
  101. package/dist/modules/datasource/custom/formats/html.js +1 -1
  102. package/dist/modules/datasource/custom/formats/html.js.map +1 -1
  103. package/dist/modules/datasource/custom/formats/yaml.js +1 -1
  104. package/dist/modules/datasource/custom/formats/yaml.js.map +1 -1
  105. package/dist/modules/datasource/custom/index.js +4 -2
  106. package/dist/modules/datasource/custom/index.js.map +1 -1
  107. package/dist/modules/datasource/custom/schema.d.ts +22 -22
  108. package/dist/modules/datasource/custom/utils.js +1 -0
  109. package/dist/modules/datasource/custom/utils.js.map +1 -1
  110. package/dist/modules/datasource/dart/index.js +1 -1
  111. package/dist/modules/datasource/dart/index.js.map +1 -1
  112. package/dist/modules/datasource/dart-version/index.js +1 -1
  113. package/dist/modules/datasource/dart-version/index.js.map +1 -1
  114. package/dist/modules/datasource/datasource.js +0 -1
  115. package/dist/modules/datasource/datasource.js.map +1 -1
  116. package/dist/modules/datasource/deb/index.js +2 -2
  117. package/dist/modules/datasource/deb/index.js.map +1 -1
  118. package/dist/modules/datasource/deno/index.js +1 -1
  119. package/dist/modules/datasource/deno/index.js.map +1 -1
  120. package/dist/modules/datasource/deno/schema.d.ts +1 -1
  121. package/dist/modules/datasource/devbox/index.js +0 -1
  122. package/dist/modules/datasource/devbox/index.js.map +1 -1
  123. package/dist/modules/datasource/docker/common.js +5 -2
  124. package/dist/modules/datasource/docker/common.js.map +1 -1
  125. package/dist/modules/datasource/docker/index.js +10 -8
  126. package/dist/modules/datasource/docker/index.js.map +1 -1
  127. package/dist/modules/datasource/docker/schema.d.ts +5 -5
  128. package/dist/modules/datasource/docker/schema.js +2 -1
  129. package/dist/modules/datasource/docker/schema.js.map +1 -1
  130. package/dist/modules/datasource/flutter-version/index.js +1 -1
  131. package/dist/modules/datasource/flutter-version/index.js.map +1 -1
  132. package/dist/modules/datasource/galaxy/schema.d.ts +1 -1
  133. package/dist/modules/datasource/galaxy-collection/schema.d.ts +8 -8
  134. package/dist/modules/datasource/git-refs/index.js +1 -1
  135. package/dist/modules/datasource/git-refs/index.js.map +1 -1
  136. package/dist/modules/datasource/gitea-releases/schema.d.ts +2 -2
  137. package/dist/modules/datasource/gitea-tags/schema.d.ts +4 -4
  138. package/dist/modules/datasource/github-release-attachments/index.js +2 -2
  139. package/dist/modules/datasource/github-release-attachments/index.js.map +1 -1
  140. package/dist/modules/datasource/gitlab-packages/index.js +1 -1
  141. package/dist/modules/datasource/gitlab-packages/index.js.map +1 -1
  142. package/dist/modules/datasource/gitlab-releases/index.js +1 -3
  143. package/dist/modules/datasource/gitlab-releases/index.js.map +1 -1
  144. package/dist/modules/datasource/go/base.js +1 -1
  145. package/dist/modules/datasource/go/base.js.map +1 -1
  146. package/dist/modules/datasource/go/index.js +1 -1
  147. package/dist/modules/datasource/go/index.js.map +1 -1
  148. package/dist/modules/datasource/go/releases-direct.js +7 -4
  149. package/dist/modules/datasource/go/releases-direct.js.map +1 -1
  150. package/dist/modules/datasource/go/releases-goproxy.js +1 -1
  151. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  152. package/dist/modules/datasource/golang-version/index.js +2 -2
  153. package/dist/modules/datasource/golang-version/index.js.map +1 -1
  154. package/dist/modules/datasource/gradle-version/index.js +1 -1
  155. package/dist/modules/datasource/gradle-version/index.js.map +1 -1
  156. package/dist/modules/datasource/helm/index.js +1 -1
  157. package/dist/modules/datasource/helm/index.js.map +1 -1
  158. package/dist/modules/datasource/hex/index.js +1 -1
  159. package/dist/modules/datasource/hex/index.js.map +1 -1
  160. package/dist/modules/datasource/hex/schema.d.ts +11 -11
  161. package/dist/modules/datasource/hexpm-bob/index.js +1 -1
  162. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  163. package/dist/modules/datasource/index.js +4 -4
  164. package/dist/modules/datasource/index.js.map +1 -1
  165. package/dist/modules/datasource/java-version/index.js +0 -1
  166. package/dist/modules/datasource/java-version/index.js.map +1 -1
  167. package/dist/modules/datasource/jenkins-plugins/index.js +1 -1
  168. package/dist/modules/datasource/jenkins-plugins/index.js.map +1 -1
  169. package/dist/modules/datasource/maven/index.js +35 -27
  170. package/dist/modules/datasource/maven/index.js.map +1 -1
  171. package/dist/modules/datasource/maven/types.d.ts +3 -6
  172. package/dist/modules/datasource/maven/types.js.map +1 -1
  173. package/dist/modules/datasource/maven/util.d.ts +4 -5
  174. package/dist/modules/datasource/maven/util.js +94 -157
  175. package/dist/modules/datasource/maven/util.js.map +1 -1
  176. package/dist/modules/datasource/node-version/index.js +1 -1
  177. package/dist/modules/datasource/node-version/index.js.map +1 -1
  178. package/dist/modules/datasource/npm/index.js +1 -1
  179. package/dist/modules/datasource/npm/index.js.map +1 -1
  180. package/dist/modules/datasource/npm/npmrc.js +1 -1
  181. package/dist/modules/datasource/npm/npmrc.js.map +1 -1
  182. package/dist/modules/datasource/nuget/index.js +1 -1
  183. package/dist/modules/datasource/nuget/index.js.map +1 -1
  184. package/dist/modules/datasource/nuget/v2.js +1 -1
  185. package/dist/modules/datasource/nuget/v2.js.map +1 -1
  186. package/dist/modules/datasource/nuget/v3.js +6 -6
  187. package/dist/modules/datasource/nuget/v3.js.map +1 -1
  188. package/dist/modules/datasource/orb/index.js +1 -1
  189. package/dist/modules/datasource/orb/index.js.map +1 -1
  190. package/dist/modules/datasource/packagist/index.js +2 -2
  191. package/dist/modules/datasource/packagist/index.js.map +1 -1
  192. package/dist/modules/datasource/packagist/schema.d.ts +25 -25
  193. package/dist/modules/datasource/pod/index.js +2 -2
  194. package/dist/modules/datasource/pod/index.js.map +1 -1
  195. package/dist/modules/datasource/postprocess-release.js +1 -1
  196. package/dist/modules/datasource/postprocess-release.js.map +1 -1
  197. package/dist/modules/datasource/pypi/index.js +1 -1
  198. package/dist/modules/datasource/pypi/index.js.map +1 -1
  199. package/dist/modules/datasource/python-version/index.js +1 -1
  200. package/dist/modules/datasource/python-version/index.js.map +1 -1
  201. package/dist/modules/datasource/repology/index.js +1 -1
  202. package/dist/modules/datasource/repology/index.js.map +1 -1
  203. package/dist/modules/datasource/ruby-version/index.js +1 -1
  204. package/dist/modules/datasource/ruby-version/index.js.map +1 -1
  205. package/dist/modules/datasource/rubygems/index.js +2 -2
  206. package/dist/modules/datasource/rubygems/index.js.map +1 -1
  207. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js +2 -2
  208. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
  209. package/dist/modules/datasource/sbt-package/index.js +1 -1
  210. package/dist/modules/datasource/sbt-package/index.js.map +1 -1
  211. package/dist/modules/datasource/sbt-plugin/index.js +1 -1
  212. package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
  213. package/dist/modules/datasource/schema.d.ts +4 -4
  214. package/dist/modules/datasource/terraform-module/index.js +1 -1
  215. package/dist/modules/datasource/terraform-module/index.js.map +1 -1
  216. package/dist/modules/datasource/terraform-provider/index.js +2 -3
  217. package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
  218. package/dist/modules/datasource/types.d.ts +1 -0
  219. package/dist/modules/datasource/types.js.map +1 -1
  220. package/dist/modules/datasource/unity3d/index.d.ts +4 -1
  221. package/dist/modules/datasource/unity3d/index.js +36 -42
  222. package/dist/modules/datasource/unity3d/index.js.map +1 -1
  223. package/dist/modules/datasource/unity3d/schema.d.ts +47 -0
  224. package/dist/modules/datasource/unity3d/schema.js +17 -0
  225. package/dist/modules/datasource/unity3d/schema.js.map +1 -0
  226. package/dist/modules/manager/api.js +2 -0
  227. package/dist/modules/manager/api.js.map +1 -1
  228. package/dist/modules/manager/argocd/extract.js +1 -1
  229. package/dist/modules/manager/argocd/extract.js.map +1 -1
  230. package/dist/modules/manager/argocd/schema.d.ts +10 -10
  231. package/dist/modules/manager/asdf/upgradeable-tooling.js +94 -0
  232. package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
  233. package/dist/modules/manager/azure-pipelines/schema.d.ts +32 -32
  234. package/dist/modules/manager/batect/schema.d.ts +4 -4
  235. package/dist/modules/manager/batect-wrapper/artifacts.js +1 -1
  236. package/dist/modules/manager/batect-wrapper/artifacts.js.map +1 -1
  237. package/dist/modules/manager/bazel/rules/docker.d.ts +6 -6
  238. package/dist/modules/manager/bazel/rules/git.d.ts +10 -10
  239. package/dist/modules/manager/bazel/rules/git.js +9 -2
  240. package/dist/modules/manager/bazel/rules/git.js.map +1 -1
  241. package/dist/modules/manager/bazel/rules/go.d.ts +5 -5
  242. package/dist/modules/manager/bazel/rules/maven.d.ts +7 -7
  243. package/dist/modules/manager/bazel/rules/oci.d.ts +6 -6
  244. package/dist/modules/manager/bazel-module/parser/fragments.d.ts +40 -40
  245. package/dist/modules/manager/bazel-module/parser/maven.d.ts +40 -40
  246. package/dist/modules/manager/bazel-module/parser/oci.d.ts +17 -17
  247. package/dist/modules/manager/bazel-module/rules.d.ts +40 -40
  248. package/dist/modules/manager/bun/artifacts.js +0 -1
  249. package/dist/modules/manager/bun/artifacts.js.map +1 -1
  250. package/dist/modules/manager/bundler/artifacts.js +0 -1
  251. package/dist/modules/manager/bundler/artifacts.js.map +1 -1
  252. package/dist/modules/manager/bundler/extract.js +2 -1
  253. package/dist/modules/manager/bundler/extract.js.map +1 -1
  254. package/dist/modules/manager/cake/index.js +4 -2
  255. package/dist/modules/manager/cake/index.js.map +1 -1
  256. package/dist/modules/manager/cargo/artifacts.js +5 -7
  257. package/dist/modules/manager/cargo/artifacts.js.map +1 -1
  258. package/dist/modules/manager/cargo/schema.d.ts +114 -114
  259. package/dist/modules/manager/cocoapods/artifacts.js +1 -2
  260. package/dist/modules/manager/cocoapods/artifacts.js.map +1 -1
  261. package/dist/modules/manager/composer/artifacts.js +1 -2
  262. package/dist/modules/manager/composer/artifacts.js.map +1 -1
  263. package/dist/modules/manager/composer/schema.d.ts +26 -26
  264. package/dist/modules/manager/composer/schema.js +1 -1
  265. package/dist/modules/manager/composer/schema.js.map +1 -1
  266. package/dist/modules/manager/composer/utils.d.ts +1 -0
  267. package/dist/modules/manager/composer/utils.js +18 -6
  268. package/dist/modules/manager/composer/utils.js.map +1 -1
  269. package/dist/modules/manager/copier/artifacts.js +0 -1
  270. package/dist/modules/manager/copier/artifacts.js.map +1 -1
  271. package/dist/modules/manager/crossplane/schema.d.ts +2 -2
  272. package/dist/modules/manager/custom/jsonata/index.js +4 -0
  273. package/dist/modules/manager/custom/jsonata/index.js.map +1 -1
  274. package/dist/modules/manager/custom/jsonata/schema.d.ts +21 -21
  275. package/dist/modules/manager/custom/regex/index.js +2 -0
  276. package/dist/modules/manager/custom/regex/index.js.map +1 -1
  277. package/dist/modules/manager/deps-edn/extract.js +2 -1
  278. package/dist/modules/manager/deps-edn/extract.js.map +1 -1
  279. package/dist/modules/manager/devbox/artifacts.d.ts +1 -1
  280. package/dist/modules/manager/devbox/artifacts.js +28 -11
  281. package/dist/modules/manager/devbox/artifacts.js.map +1 -1
  282. package/dist/modules/manager/devbox/schema.js +1 -1
  283. package/dist/modules/manager/devbox/schema.js.map +1 -1
  284. package/dist/modules/manager/devcontainer/extract.js +43 -1
  285. package/dist/modules/manager/devcontainer/extract.js.map +1 -1
  286. package/dist/modules/manager/devcontainer/index.js +11 -1
  287. package/dist/modules/manager/devcontainer/index.js.map +1 -1
  288. package/dist/modules/manager/devcontainer/schema.d.ts +7 -3
  289. package/dist/modules/manager/devcontainer/schema.js +3 -1
  290. package/dist/modules/manager/devcontainer/schema.js.map +1 -1
  291. package/dist/modules/manager/docker-compose/schema.d.ts +6 -6
  292. package/dist/modules/manager/fingerprint.generated.js +86 -85
  293. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  294. package/dist/modules/manager/flux/artifacts.js +0 -1
  295. package/dist/modules/manager/flux/artifacts.js.map +1 -1
  296. package/dist/modules/manager/flux/extract.js +27 -24
  297. package/dist/modules/manager/flux/extract.js.map +1 -1
  298. package/dist/modules/manager/flux/schema.d.ts +94 -94
  299. package/dist/modules/manager/github-actions/extract.js +60 -39
  300. package/dist/modules/manager/github-actions/extract.js.map +1 -1
  301. package/dist/modules/manager/github-actions/schema.d.ts +66 -0
  302. package/dist/modules/manager/github-actions/schema.js +38 -0
  303. package/dist/modules/manager/github-actions/schema.js.map +1 -0
  304. package/dist/modules/manager/gitlabci/extract.d.ts +1 -5
  305. package/dist/modules/manager/gitlabci/extract.js +27 -126
  306. package/dist/modules/manager/gitlabci/extract.js.map +1 -1
  307. package/dist/modules/manager/gitlabci/schema.d.ts +55 -0
  308. package/dist/modules/manager/gitlabci/schema.js +63 -0
  309. package/dist/modules/manager/gitlabci/schema.js.map +1 -0
  310. package/dist/modules/manager/gitlabci-include/extract.js +6 -54
  311. package/dist/modules/manager/gitlabci-include/extract.js.map +1 -1
  312. package/dist/modules/manager/gitlabci-include/schema.d.ts +13 -0
  313. package/dist/modules/manager/gitlabci-include/schema.js +46 -0
  314. package/dist/modules/manager/gitlabci-include/schema.js.map +1 -0
  315. package/dist/modules/manager/glasskube/schema.d.ts +8 -8
  316. package/dist/modules/manager/gomod/artifacts.js +24 -10
  317. package/dist/modules/manager/gomod/artifacts.js.map +1 -1
  318. package/dist/modules/manager/gomod/extract.js +23 -0
  319. package/dist/modules/manager/gomod/extract.js.map +1 -1
  320. package/dist/modules/manager/gomod/line-parser.js +16 -0
  321. package/dist/modules/manager/gomod/line-parser.js.map +1 -1
  322. package/dist/modules/manager/gomod/update.js +2 -2
  323. package/dist/modules/manager/gomod/update.js.map +1 -1
  324. package/dist/modules/manager/gradle/artifacts.js +0 -1
  325. package/dist/modules/manager/gradle/artifacts.js.map +1 -1
  326. package/dist/modules/manager/gradle/extract/catalog.js +1 -1
  327. package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
  328. package/dist/modules/manager/gradle/parser/assignments.js +2 -2
  329. package/dist/modules/manager/gradle/parser/assignments.js.map +1 -1
  330. package/dist/modules/manager/gradle/parser/handlers.d.ts +1 -2
  331. package/dist/modules/manager/gradle/parser/handlers.js +10 -25
  332. package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
  333. package/dist/modules/manager/gradle/parser/registry-urls.js +11 -3
  334. package/dist/modules/manager/gradle/parser/registry-urls.js.map +1 -1
  335. package/dist/modules/manager/gradle-wrapper/artifacts.js +1 -2
  336. package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
  337. package/dist/modules/manager/helmfile/artifacts.js +0 -1
  338. package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
  339. package/dist/modules/manager/helmfile/extract.js +4 -0
  340. package/dist/modules/manager/helmfile/extract.js.map +1 -1
  341. package/dist/modules/manager/helmfile/schema.d.ts +9 -9
  342. package/dist/modules/manager/helmv3/artifacts.js +0 -1
  343. package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
  344. package/dist/modules/manager/helmv3/utils.js +3 -1
  345. package/dist/modules/manager/helmv3/utils.js.map +1 -1
  346. package/dist/modules/manager/hermit/artifacts.js +0 -1
  347. package/dist/modules/manager/hermit/artifacts.js.map +1 -1
  348. package/dist/modules/manager/homebrew/extract.js +0 -1
  349. package/dist/modules/manager/homebrew/extract.js.map +1 -1
  350. package/dist/modules/manager/jsonnet-bundler/artifacts.js +0 -1
  351. package/dist/modules/manager/jsonnet-bundler/artifacts.js.map +1 -1
  352. package/dist/modules/manager/kustomize/artifacts.d.ts +2 -0
  353. package/dist/modules/manager/kustomize/artifacts.js +154 -0
  354. package/dist/modules/manager/kustomize/artifacts.js.map +1 -0
  355. package/dist/modules/manager/kustomize/common.d.ts +3 -0
  356. package/dist/modules/manager/kustomize/common.js +22 -0
  357. package/dist/modules/manager/kustomize/common.js.map +1 -0
  358. package/dist/modules/manager/kustomize/index.d.ts +1 -0
  359. package/dist/modules/manager/kustomize/index.js +3 -1
  360. package/dist/modules/manager/kustomize/index.js.map +1 -1
  361. package/dist/modules/manager/kustomize/types.d.ts +4 -0
  362. package/dist/modules/manager/kustomize/types.js.map +1 -1
  363. package/dist/modules/manager/maven/extract.js +3 -1
  364. package/dist/modules/manager/maven/extract.js.map +1 -1
  365. package/dist/modules/manager/maven-wrapper/artifacts.js +0 -1
  366. package/dist/modules/manager/maven-wrapper/artifacts.js.map +1 -1
  367. package/dist/modules/manager/mise/extract.js +1 -1
  368. package/dist/modules/manager/mise/extract.js.map +1 -1
  369. package/dist/modules/manager/mix/artifacts.js +64 -14
  370. package/dist/modules/manager/mix/artifacts.js.map +1 -1
  371. package/dist/modules/manager/mix/index.d.ts +1 -0
  372. package/dist/modules/manager/mix/index.js +2 -1
  373. package/dist/modules/manager/mix/index.js.map +1 -1
  374. package/dist/modules/manager/nix/artifacts.js +0 -1
  375. package/dist/modules/manager/nix/artifacts.js.map +1 -1
  376. package/dist/modules/manager/nix/extract.js +1 -1
  377. package/dist/modules/manager/nix/extract.js.map +1 -1
  378. package/dist/modules/manager/nix/schema.d.ts +18 -18
  379. package/dist/modules/manager/npm/artifacts.js +0 -1
  380. package/dist/modules/manager/npm/artifacts.js.map +1 -1
  381. package/dist/modules/manager/npm/extract/yarn.js +2 -2
  382. package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
  383. package/dist/modules/manager/npm/post-update/npm.js +0 -1
  384. package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
  385. package/dist/modules/manager/npm/post-update/pnpm.js +13 -2
  386. package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
  387. package/dist/modules/manager/npm/post-update/rules.js +11 -1
  388. package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
  389. package/dist/modules/manager/npm/post-update/yarn.js +0 -1
  390. package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
  391. package/dist/modules/manager/npm/schema.d.ts +13 -13
  392. package/dist/modules/manager/npm/update/dependency/index.js +1 -1
  393. package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
  394. package/dist/modules/manager/nuget/artifacts.js +1 -2
  395. package/dist/modules/manager/nuget/artifacts.js.map +1 -1
  396. package/dist/modules/manager/nuget/package-tree.js +4 -0
  397. package/dist/modules/manager/nuget/package-tree.js.map +1 -1
  398. package/dist/modules/manager/nuget/schema.d.ts +8 -8
  399. package/dist/modules/manager/nuget/util.js +4 -1
  400. package/dist/modules/manager/nuget/util.js.map +1 -1
  401. package/dist/modules/manager/ocb/schema.d.ts +6 -6
  402. package/dist/modules/manager/pep621/processors/pdm.js +0 -1
  403. package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
  404. package/dist/modules/manager/pep621/processors/uv.js +0 -1
  405. package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
  406. package/dist/modules/manager/pep621/schema.d.ts +59 -54
  407. package/dist/modules/manager/pep621/schema.js +2 -0
  408. package/dist/modules/manager/pep621/schema.js.map +1 -1
  409. package/dist/modules/manager/pep621/utils.js +1 -1
  410. package/dist/modules/manager/pep621/utils.js.map +1 -1
  411. package/dist/modules/manager/pip-compile/common.js +0 -1
  412. package/dist/modules/manager/pip-compile/common.js.map +1 -1
  413. package/dist/modules/manager/pip_requirements/artifacts.js +0 -1
  414. package/dist/modules/manager/pip_requirements/artifacts.js.map +1 -1
  415. package/dist/modules/manager/pipenv/artifacts.js +0 -1
  416. package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
  417. package/dist/modules/manager/pixi/artifacts.d.ts +3 -0
  418. package/dist/modules/manager/pixi/artifacts.js +84 -0
  419. package/dist/modules/manager/pixi/artifacts.js.map +1 -0
  420. package/dist/modules/manager/pixi/extract.d.ts +2 -0
  421. package/dist/modules/manager/pixi/extract.js +53 -0
  422. package/dist/modules/manager/pixi/extract.js.map +1 -0
  423. package/dist/modules/manager/pixi/index.d.ts +11 -0
  424. package/dist/modules/manager/pixi/index.js +22 -0
  425. package/dist/modules/manager/pixi/index.js.map +1 -0
  426. package/dist/modules/manager/pixi/lockfile.d.ts +6 -0
  427. package/dist/modules/manager/pixi/lockfile.js +25 -0
  428. package/dist/modules/manager/pixi/lockfile.js.map +1 -0
  429. package/dist/modules/manager/pixi/schema.d.ts +14 -0
  430. package/dist/modules/manager/pixi/schema.js +14 -0
  431. package/dist/modules/manager/pixi/schema.js.map +1 -0
  432. package/dist/modules/manager/poetry/artifacts.js +3 -4
  433. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  434. package/dist/modules/manager/poetry/extract.js +2 -1
  435. package/dist/modules/manager/poetry/extract.js.map +1 -1
  436. package/dist/modules/manager/poetry/schema.d.ts +48 -48
  437. package/dist/modules/manager/pub/artifacts.js +0 -1
  438. package/dist/modules/manager/pub/artifacts.js.map +1 -1
  439. package/dist/modules/manager/pub/schema.d.ts +8 -8
  440. package/dist/modules/manager/scalafmt/extract.js +1 -1
  441. package/dist/modules/manager/scalafmt/extract.js.map +1 -1
  442. package/dist/modules/manager/sveltos/schema.d.ts +12 -12
  443. package/dist/modules/manager/terraform/lockfile/hash.d.ts +1 -1
  444. package/dist/modules/manager/types.d.ts +6 -2
  445. package/dist/modules/manager/types.js.map +1 -1
  446. package/dist/modules/manager/vendir/schema.d.ts +4 -4
  447. package/dist/modules/platform/api.d.ts +1 -1
  448. package/dist/modules/platform/azure/azure-helper.js +2 -2
  449. package/dist/modules/platform/azure/azure-helper.js.map +1 -1
  450. package/dist/modules/platform/azure/index.js +14 -14
  451. package/dist/modules/platform/azure/index.js.map +1 -1
  452. package/dist/modules/platform/bitbucket/comments.js +4 -4
  453. package/dist/modules/platform/bitbucket/comments.js.map +1 -1
  454. package/dist/modules/platform/bitbucket/index.d.ts +1 -0
  455. package/dist/modules/platform/bitbucket/index.js +54 -44
  456. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  457. package/dist/modules/platform/bitbucket/schema.d.ts +11 -11
  458. package/dist/modules/platform/bitbucket/utils.js +3 -3
  459. package/dist/modules/platform/bitbucket/utils.js.map +1 -1
  460. package/dist/modules/platform/bitbucket-server/index.d.ts +3 -3
  461. package/dist/modules/platform/bitbucket-server/index.js +81 -81
  462. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  463. package/dist/modules/platform/bitbucket-server/pr-cache.d.ts +23 -0
  464. package/dist/modules/platform/bitbucket-server/pr-cache.js +125 -0
  465. package/dist/modules/platform/bitbucket-server/pr-cache.js.map +1 -0
  466. package/dist/modules/platform/bitbucket-server/schema.d.ts +75 -0
  467. package/dist/modules/platform/bitbucket-server/schema.js +14 -1
  468. package/dist/modules/platform/bitbucket-server/schema.js.map +1 -1
  469. package/dist/modules/platform/bitbucket-server/types.d.ts +8 -2
  470. package/dist/modules/platform/bitbucket-server/types.js.map +1 -1
  471. package/dist/modules/platform/bitbucket-server/utils.d.ts +0 -2
  472. package/dist/modules/platform/bitbucket-server/utils.js +6 -52
  473. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  474. package/dist/modules/platform/codecommit/codecommit-client.js +6 -6
  475. package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
  476. package/dist/modules/platform/codecommit/index.js +24 -24
  477. package/dist/modules/platform/codecommit/index.js.map +1 -1
  478. package/dist/modules/platform/gerrit/client.js +13 -2
  479. package/dist/modules/platform/gerrit/client.js.map +1 -1
  480. package/dist/modules/platform/gerrit/utils.js +1 -1
  481. package/dist/modules/platform/gerrit/utils.js.map +1 -1
  482. package/dist/modules/platform/gitea/gitea-helper.d.ts +1 -0
  483. package/dist/modules/platform/gitea/gitea-helper.js +16 -0
  484. package/dist/modules/platform/gitea/gitea-helper.js.map +1 -1
  485. package/dist/modules/platform/gitea/index.d.ts +1 -0
  486. package/dist/modules/platform/gitea/index.js +26 -7
  487. package/dist/modules/platform/gitea/index.js.map +1 -1
  488. package/dist/modules/platform/gitea/schema.d.ts +8 -8
  489. package/dist/modules/platform/gitea/types.d.ts +1 -1
  490. package/dist/modules/platform/gitea/types.js.map +1 -1
  491. package/dist/modules/platform/github/common.d.ts +2 -0
  492. package/dist/modules/platform/github/common.js +16 -0
  493. package/dist/modules/platform/github/common.js.map +1 -1
  494. package/dist/modules/platform/github/index.d.ts +1 -1
  495. package/dist/modules/platform/github/index.js +87 -82
  496. package/dist/modules/platform/github/index.js.map +1 -1
  497. package/dist/modules/platform/github/issue.d.ts +12 -12
  498. package/dist/modules/platform/github/massage-markdown-links.js +2 -2
  499. package/dist/modules/platform/github/massage-markdown-links.js.map +1 -1
  500. package/dist/modules/platform/github/pr.js +3 -3
  501. package/dist/modules/platform/github/pr.js.map +1 -1
  502. package/dist/modules/platform/github/schema.d.ts +76 -76
  503. package/dist/modules/platform/github/schema.js +3 -1
  504. package/dist/modules/platform/github/schema.js.map +1 -1
  505. package/dist/modules/platform/gitlab/index.d.ts +1 -0
  506. package/dist/modules/platform/gitlab/index.js +70 -43
  507. package/dist/modules/platform/gitlab/index.js.map +1 -1
  508. package/dist/modules/platform/index.js +0 -1
  509. package/dist/modules/platform/index.js.map +1 -1
  510. package/dist/modules/platform/scm.d.ts +1 -1
  511. package/dist/modules/versioning/api.js +2 -0
  512. package/dist/modules/versioning/api.js.map +1 -1
  513. package/dist/modules/versioning/composer/index.js +10 -0
  514. package/dist/modules/versioning/composer/index.js.map +1 -1
  515. package/dist/modules/versioning/conda/index.d.ts +41 -0
  516. package/dist/modules/versioning/conda/index.js +178 -0
  517. package/dist/modules/versioning/conda/index.js.map +1 -0
  518. package/dist/modules/versioning/hashicorp/convertor.d.ts +2 -1
  519. package/dist/modules/versioning/hashicorp/convertor.js +13 -8
  520. package/dist/modules/versioning/hashicorp/convertor.js.map +1 -1
  521. package/dist/modules/versioning/hex/index.js +3 -3
  522. package/dist/modules/versioning/hex/index.js.map +1 -1
  523. package/dist/modules/versioning/npm/index.js +2 -1
  524. package/dist/modules/versioning/npm/index.js.map +1 -1
  525. package/dist/modules/versioning/schema.js +1 -1
  526. package/dist/modules/versioning/schema.js.map +1 -1
  527. package/dist/modules/versioning/types.d.ts +4 -0
  528. package/dist/modules/versioning/types.js.map +1 -1
  529. package/dist/proxy.js +2 -1
  530. package/dist/proxy.js.map +1 -1
  531. package/dist/renovate.js +2 -2
  532. package/dist/renovate.js.map +1 -1
  533. package/dist/util/cache/package/decorator.js +2 -2
  534. package/dist/util/cache/package/decorator.js.map +1 -1
  535. package/dist/util/cache/package/redis.js +0 -1
  536. package/dist/util/cache/package/redis.js.map +1 -1
  537. package/dist/util/cache/package/types.d.ts +1 -1
  538. package/dist/util/cache/package/types.js.map +1 -1
  539. package/dist/util/cache/repository/impl/base.d.ts +1 -1
  540. package/dist/util/cache/repository/schema.d.ts +4 -4
  541. package/dist/util/cache/repository/types.d.ts +3 -0
  542. package/dist/util/cache/repository/types.js.map +1 -1
  543. package/dist/util/env.d.ts +4 -0
  544. package/dist/util/env.js +22 -0
  545. package/dist/util/env.js.map +1 -0
  546. package/dist/util/exec/containerbase.js +18 -12
  547. package/dist/util/exec/containerbase.js.map +1 -1
  548. package/dist/util/exec/index.js +5 -2
  549. package/dist/util/exec/index.js.map +1 -1
  550. package/dist/util/exec/types.d.ts +0 -2
  551. package/dist/util/exec/types.js.map +1 -1
  552. package/dist/util/exec/utils.d.ts +1 -1
  553. package/dist/util/exec/utils.js +6 -5
  554. package/dist/util/exec/utils.js.map +1 -1
  555. package/dist/util/git/author.js +1 -1
  556. package/dist/util/git/author.js.map +1 -1
  557. package/dist/util/git/config.js +0 -1
  558. package/dist/util/git/config.js.map +1 -1
  559. package/dist/util/git/error.js +4 -2
  560. package/dist/util/git/error.js.map +1 -1
  561. package/dist/util/git/index.js +73 -46
  562. package/dist/util/git/index.js.map +1 -1
  563. package/dist/util/git/private-key.js +1 -1
  564. package/dist/util/git/private-key.js.map +1 -1
  565. package/dist/util/github/graphql/query-adapters/releases-query-adapter.d.ts +2 -2
  566. package/dist/util/github/graphql/query-adapters/tags-query-adapter.d.ts +2 -2
  567. package/dist/util/http/auth.js +0 -1
  568. package/dist/util/http/auth.js.map +1 -1
  569. package/dist/util/http/bitbucket-server.d.ts +5 -4
  570. package/dist/util/http/bitbucket-server.js +21 -20
  571. package/dist/util/http/bitbucket-server.js.map +1 -1
  572. package/dist/util/http/bitbucket.d.ts +6 -5
  573. package/dist/util/http/bitbucket.js +34 -31
  574. package/dist/util/http/bitbucket.js.map +1 -1
  575. package/dist/util/http/cache/abstract-http-cache-provider.js +2 -2
  576. package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
  577. package/dist/util/http/cache/memory-http-cache-provider.d.ts +10 -0
  578. package/dist/util/http/cache/memory-http-cache-provider.js +29 -0
  579. package/dist/util/http/cache/memory-http-cache-provider.js.map +1 -0
  580. package/dist/util/http/cache/schema.d.ts +2 -2
  581. package/dist/util/http/errors.d.ts +2 -0
  582. package/dist/util/http/errors.js +8 -0
  583. package/dist/util/http/errors.js.map +1 -0
  584. package/dist/util/http/gerrit.d.ts +6 -4
  585. package/dist/util/http/gerrit.js +11 -12
  586. package/dist/util/http/gerrit.js.map +1 -1
  587. package/dist/util/http/gitea.d.ts +5 -4
  588. package/dist/util/http/gitea.js +14 -13
  589. package/dist/util/http/gitea.js.map +1 -1
  590. package/dist/util/http/github.d.ts +14 -8
  591. package/dist/util/http/github.js +65 -60
  592. package/dist/util/http/github.js.map +1 -1
  593. package/dist/util/http/gitlab.d.ts +7 -5
  594. package/dist/util/http/gitlab.js +58 -46
  595. package/dist/util/http/gitlab.js.map +1 -1
  596. package/dist/util/http/got.d.ts +9 -0
  597. package/dist/util/http/got.js +54 -0
  598. package/dist/util/http/got.js.map +1 -0
  599. package/dist/util/http/host-rules.d.ts +2 -1
  600. package/dist/util/http/host-rules.js +5 -4
  601. package/dist/util/http/host-rules.js.map +1 -1
  602. package/dist/util/http/http.d.ts +93 -0
  603. package/dist/util/http/http.js +346 -0
  604. package/dist/util/http/http.js.map +1 -0
  605. package/dist/util/http/index.d.ts +6 -74
  606. package/dist/util/http/index.js +5 -359
  607. package/dist/util/http/index.js.map +1 -1
  608. package/dist/util/http/legacy.js +4 -1
  609. package/dist/util/http/legacy.js.map +1 -1
  610. package/dist/util/http/types.d.ts +9 -16
  611. package/dist/util/http/types.js.map +1 -1
  612. package/dist/util/stats.d.ts +10 -0
  613. package/dist/util/stats.js +45 -1
  614. package/dist/util/stats.js.map +1 -1
  615. package/dist/util/string.d.ts +15 -0
  616. package/dist/util/string.js +75 -0
  617. package/dist/util/string.js.map +1 -1
  618. package/dist/util/toml.d.ts +1 -0
  619. package/dist/util/toml.js +6 -0
  620. package/dist/util/toml.js.map +1 -1
  621. package/dist/util/url.js +3 -8
  622. package/dist/util/url.js.map +1 -1
  623. package/dist/util/yaml.js +2 -6
  624. package/dist/util/yaml.js.map +1 -1
  625. package/dist/workers/global/config/parse/env.js +3 -2
  626. package/dist/workers/global/config/parse/env.js.map +1 -1
  627. package/dist/workers/global/config/parse/file.js +19 -9
  628. package/dist/workers/global/config/parse/file.js.map +1 -1
  629. package/dist/workers/global/config/parse/host-rules-from-env.js +6 -2
  630. package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
  631. package/dist/workers/global/config/parse/index.js +5 -0
  632. package/dist/workers/global/config/parse/index.js.map +1 -1
  633. package/dist/workers/repository/cache.js +1 -2
  634. package/dist/workers/repository/cache.js.map +1 -1
  635. package/dist/workers/repository/config-migration/branch/migrated-data.js +2 -0
  636. package/dist/workers/repository/config-migration/branch/migrated-data.js.map +1 -1
  637. package/dist/workers/repository/index.js +1 -0
  638. package/dist/workers/repository/index.js.map +1 -1
  639. package/dist/workers/repository/init/merge.js +6 -3
  640. package/dist/workers/repository/init/merge.js.map +1 -1
  641. package/dist/workers/repository/onboarding/pr/config-description.js +3 -1
  642. package/dist/workers/repository/onboarding/pr/config-description.js.map +1 -1
  643. package/dist/workers/repository/process/extract-update.js +0 -1
  644. package/dist/workers/repository/process/extract-update.js.map +1 -1
  645. package/dist/workers/repository/process/fingerprint-fields.js +0 -1
  646. package/dist/workers/repository/process/fingerprint-fields.js.map +1 -1
  647. package/dist/workers/repository/process/libyear.js +2 -2
  648. package/dist/workers/repository/process/libyear.js.map +1 -1
  649. package/dist/workers/repository/process/lookup/index.js +13 -4
  650. package/dist/workers/repository/process/lookup/index.js.map +1 -1
  651. package/dist/workers/repository/process/vulnerabilities.js +1 -1
  652. package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
  653. package/dist/workers/repository/process/write.js +1 -8
  654. package/dist/workers/repository/process/write.js.map +1 -1
  655. package/dist/workers/repository/reconfigure/validate.js +1 -0
  656. package/dist/workers/repository/reconfigure/validate.js.map +1 -1
  657. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +10 -1
  658. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
  659. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js +1 -1
  660. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js.map +1 -1
  661. package/dist/workers/repository/update/pr/changelog/github/index.js +6 -3
  662. package/dist/workers/repository/update/pr/changelog/github/index.js.map +1 -1
  663. package/dist/workers/repository/update/pr/changelog/gitlab/index.js +1 -1
  664. package/dist/workers/repository/update/pr/changelog/gitlab/index.js.map +1 -1
  665. package/dist/workers/repository/update/pr/changelog/source.js +1 -0
  666. package/dist/workers/repository/update/pr/changelog/source.js.map +1 -1
  667. package/dist/workers/repository/updates/flatten.js +8 -4
  668. package/dist/workers/repository/updates/flatten.js.map +1 -1
  669. package/dist/workers/repository/updates/generate.js +1 -2
  670. package/dist/workers/repository/updates/generate.js.map +1 -1
  671. package/dist/workers/types.d.ts +1 -4
  672. package/dist/workers/types.js.map +1 -1
  673. package/package.json +69 -72
  674. package/renovate-schema.json +15 -1
  675. package/dist/modules/manager/github-actions/types.d.ts +0 -30
  676. package/dist/modules/manager/github-actions/types.js +0 -3
  677. package/dist/modules/manager/github-actions/types.js.map +0 -1
  678. package/dist/modules/manager/gitlabci/common.d.ts +0 -6
  679. package/dist/modules/manager/gitlabci/common.js +0 -30
  680. package/dist/modules/manager/gitlabci/common.js.map +0 -1
  681. package/dist/modules/manager/gitlabci/types.d.ts +0 -35
  682. package/dist/modules/manager/gitlabci/types.js +0 -3
  683. package/dist/modules/manager/gitlabci/types.js.map +0 -1
@@ -9,8 +9,8 @@ export declare const ReleaseSchema: z.ZodObject<{
9
9
  name: string;
10
10
  body: string;
11
11
  prerelease: boolean;
12
- tag_name: string;
13
12
  published_at: import("../../../util/timestamp").Timestamp | null;
13
+ tag_name: string;
14
14
  }, {
15
15
  name: string;
16
16
  body: string;
@@ -28,8 +28,8 @@ export declare const ReleasesSchema: z.ZodArray<z.ZodObject<{
28
28
  name: string;
29
29
  body: string;
30
30
  prerelease: boolean;
31
- tag_name: string;
32
31
  published_at: import("../../../util/timestamp").Timestamp | null;
32
+ tag_name: string;
33
33
  }, {
34
34
  name: string;
35
35
  body: string;
@@ -26,17 +26,17 @@ export declare const TagSchema: z.ZodObject<{
26
26
  created?: unknown;
27
27
  }>;
28
28
  }, "strip", z.ZodTypeAny, {
29
- name: string;
30
29
  commit: {
31
30
  created: import("../../../util/timestamp").Timestamp | null;
32
31
  sha: string;
33
32
  };
34
- }, {
35
33
  name: string;
34
+ }, {
36
35
  commit: {
37
36
  sha: string;
38
37
  created?: unknown;
39
38
  };
39
+ name: string;
40
40
  }>;
41
41
  export declare const TagsSchema: z.ZodArray<z.ZodObject<{
42
42
  name: z.ZodString;
@@ -51,15 +51,15 @@ export declare const TagsSchema: z.ZodArray<z.ZodObject<{
51
51
  created?: unknown;
52
52
  }>;
53
53
  }, "strip", z.ZodTypeAny, {
54
- name: string;
55
54
  commit: {
56
55
  created: import("../../../util/timestamp").Timestamp | null;
57
56
  sha: string;
58
57
  };
59
- }, {
60
58
  name: string;
59
+ }, {
61
60
  commit: {
62
61
  sha: string;
63
62
  created?: unknown;
64
63
  };
64
+ name: string;
65
65
  }>, "many">;
@@ -37,7 +37,7 @@ class GithubReleaseAttachmentsDatasource extends datasource_1.Datasource {
37
37
  async findDigestFile(release, digest) {
38
38
  const smallAssets = release.assets.filter((a) => a.size < 5 * 1024);
39
39
  for (const asset of smallAssets) {
40
- const res = await this.http.get(asset.browser_download_url);
40
+ const res = await this.http.getText(asset.browser_download_url);
41
41
  for (const line of res.body.split(regex_1.newlineRegex)) {
42
42
  const [lineDigest, lineFilename] = line.split((0, regex_1.regEx)(/\s+/), 2);
43
43
  if (lineDigest === digest) {
@@ -100,7 +100,7 @@ class GithubReleaseAttachmentsDatasource extends datasource_1.Datasource {
100
100
  }
101
101
  if (digestAsset.digestedFileName) {
102
102
  const releaseFilename = digestAsset.digestedFileName.replace(current, next);
103
- const res = await this.http.get(releaseAsset.browser_download_url);
103
+ const res = await this.http.getText(releaseAsset.browser_download_url);
104
104
  for (const line of res.body.split(regex_1.newlineRegex)) {
105
105
  const [lineDigest, lineFn] = line.split((0, regex_1.regEx)(/\s+/), 2);
106
106
  if (lineFn === releaseFilename) {
@@ -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"]}
@@ -27,7 +27,7 @@ class GitlabPackagesDatasource extends datasource_1.Datasource {
27
27
  return (0, url_1.joinUrlParts)(registryUrl, `api/v4/projects`, projectNameEncoded, `packages?package_name=${packageNameEncoded}&per_page=100`);
28
28
  }
29
29
  async getReleases({ registryUrl, packageName, }) {
30
- // istanbul ignore if
30
+ /* v8 ignore next 3 -- should never happen */
31
31
  if (!registryUrl) {
32
32
  return null;
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/gitlab-packages/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,sDAAuD;AACvD,uDAAsD;AACtD,2CAAiD;AACjD,8CAA2C;AAE3C,qCAAsC;AAGtC,oEAAoE;AAEpE,MAAa,wBAAyB,SAAQ,uBAAU;IACtD,MAAM,CAAU,EAAE,GAAG,mBAAU,CAAC;IAEb,IAAI,CAAa;IAE3B,OAAO,GAAG,IAAI,CAAC;IAEf,qBAAqB,GAAG,IAAI,CAAC;IAE7B,mBAAmB,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEpC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,iFAAiF,CAAC;IAEpF;QACE,KAAK,CAAC,mBAAU,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAU,CAAC,mBAAU,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,sBAAsB,CAC3B,WAAmB,EACnB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE3D,OAAO,IAAA,kBAAY,EACjB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,kBAAkB,eAAe,CAC3D,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,qBAAqB;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAC5D,WAAW,EACX,WAAW,EACX,WAAW,CACZ,CAAC;QAEF,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAI,QAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,QAAQ,GAAG,CACT,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAkB,MAAM,EAAE;gBACxD,QAAQ,EAAE,IAAI;aACf,CAAC,CACH,CAAC,IAAI,CAAC;YAEP,MAAM,CAAC,QAAQ,GAAG,QAAQ;gBACxB,sHAAsH;gBACtH,4FAA4F;iBAC3F,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;iBACrC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjC,OAAO;gBACP,gBAAgB,EAAE,IAAA,uBAAW,EAAC,UAAU,CAAC;aAC1C,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;;AApFH,4DAqFC;AA3CO;IANL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,mBAAU,EAAE;QACrC,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAqB,EAAE,EAAE;QACvD,uBAAuB;QACvB,GAAG,WAAW,IAAI,WAAW,EAAE;KAClC,CAAC;2DA2CD","sourcesContent":["import { cache } from '../../../util/cache/package/decorator';\nimport { GitlabHttp } from '../../../util/http/gitlab';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { datasource } from './common';\nimport type { GitlabPackage } from './types';\n\n// Gitlab Packages API: https://docs.gitlab.com/ee/api/packages.html\n\nexport class GitlabPackagesDatasource extends Datasource {\n static readonly id = datasource;\n\n protected override http: GitlabHttp;\n\n override caching = true;\n\n override customRegistrySupport = true;\n\n override defaultRegistryUrls = ['https://gitlab.com'];\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `created_at` field in the results.';\n\n constructor() {\n super(datasource);\n this.http = new GitlabHttp(datasource);\n }\n\n static getGitlabPackageApiUrl(\n registryUrl: string,\n projectName: string,\n packageName: string,\n ): string {\n const projectNameEncoded = encodeURIComponent(projectName);\n const packageNameEncoded = encodeURIComponent(packageName);\n\n return joinUrlParts(\n registryUrl,\n `api/v4/projects`,\n projectNameEncoded,\n `packages?package_name=${packageNameEncoded}&per_page=100`,\n );\n }\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl}-${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const [projectPart, packagePart] = packageName.split(':', 2);\n\n const apiUrl = GitlabPackagesDatasource.getGitlabPackageApiUrl(\n registryUrl,\n projectPart,\n packagePart,\n );\n\n const result: ReleaseResult = {\n releases: [],\n };\n\n let response: GitlabPackage[];\n try {\n response = (\n await this.http.getJsonUnchecked<GitlabPackage[]>(apiUrl, {\n paginate: true,\n })\n ).body;\n\n result.releases = response\n // Setting the package_name option when calling the GitLab API isn't enough to filter information about other packages\n // because this option is only implemented on GitLab > 12.9 and it only does a fuzzy search.\n .filter((r) => r.name === packagePart)\n .map(({ version, created_at }) => ({\n version,\n releaseTimestamp: asTimestamp(created_at),\n }));\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n return result.releases?.length ? result : null;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/gitlab-packages/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,sDAAuD;AACvD,uDAAsD;AACtD,2CAAiD;AACjD,8CAA2C;AAE3C,qCAAsC;AAGtC,oEAAoE;AAEpE,MAAa,wBAAyB,SAAQ,uBAAU;IACtD,MAAM,CAAU,EAAE,GAAG,mBAAU,CAAC;IAEb,IAAI,CAAa;IAE3B,OAAO,GAAG,IAAI,CAAC;IAEf,qBAAqB,GAAG,IAAI,CAAC;IAE7B,mBAAmB,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEpC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,iFAAiF,CAAC;IAEpF;QACE,KAAK,CAAC,mBAAU,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAU,CAAC,mBAAU,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,sBAAsB,CAC3B,WAAmB,EACnB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE3D,OAAO,IAAA,kBAAY,EACjB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,kBAAkB,eAAe,CAC3D,CAAC;IACJ,CAAC;IAQK,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,6CAA6C;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAC5D,WAAW,EACX,WAAW,EACX,WAAW,CACZ,CAAC;QAEF,MAAM,MAAM,GAAkB;YAC5B,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAI,QAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,QAAQ,GAAG,CACT,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAkB,MAAM,EAAE;gBACxD,QAAQ,EAAE,IAAI;aACf,CAAC,CACH,CAAC,IAAI,CAAC;YAEP,MAAM,CAAC,QAAQ,GAAG,QAAQ;gBACxB,sHAAsH;gBACtH,4FAA4F;iBAC3F,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;iBACrC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjC,OAAO;gBACP,gBAAgB,EAAE,IAAA,uBAAW,EAAC,UAAU,CAAC;aAC1C,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;;AApFH,4DAqFC;AA3CO;IANL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,mBAAU,EAAE;QACrC,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAqB,EAAE,EAAE;QACvD,uBAAuB;QACvB,GAAG,WAAW,IAAI,WAAW,EAAE;KAClC,CAAC;2DA2CD","sourcesContent":["import { cache } from '../../../util/cache/package/decorator';\nimport { GitlabHttp } from '../../../util/http/gitlab';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { datasource } from './common';\nimport type { GitlabPackage } from './types';\n\n// Gitlab Packages API: https://docs.gitlab.com/ee/api/packages.html\n\nexport class GitlabPackagesDatasource extends Datasource {\n static readonly id = datasource;\n\n protected override http: GitlabHttp;\n\n override caching = true;\n\n override customRegistrySupport = true;\n\n override defaultRegistryUrls = ['https://gitlab.com'];\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `created_at` field in the results.';\n\n constructor() {\n super(datasource);\n this.http = new GitlabHttp(datasource);\n }\n\n static getGitlabPackageApiUrl(\n registryUrl: string,\n projectName: string,\n packageName: string,\n ): string {\n const projectNameEncoded = encodeURIComponent(projectName);\n const packageNameEncoded = encodeURIComponent(packageName);\n\n return joinUrlParts(\n registryUrl,\n `api/v4/projects`,\n projectNameEncoded,\n `packages?package_name=${packageNameEncoded}&per_page=100`,\n );\n }\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl}-${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const [projectPart, packagePart] = packageName.split(':', 2);\n\n const apiUrl = GitlabPackagesDatasource.getGitlabPackageApiUrl(\n registryUrl,\n projectPart,\n packagePart,\n );\n\n const result: ReleaseResult = {\n releases: [],\n };\n\n let response: GitlabPackage[];\n try {\n response = (\n await this.http.getJsonUnchecked<GitlabPackage[]>(apiUrl, {\n paginate: true,\n })\n ).body;\n\n result.releases = response\n // Setting the package_name option when calling the GitLab API isn't enough to filter information about other packages\n // because this option is only implemented on GitLab > 12.9 and it only does a fuzzy search.\n .filter((r) => r.name === packagePart)\n .map(({ version, created_at }) => ({\n version,\n releaseTimestamp: asTimestamp(created_at),\n }));\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n return result.releases?.length ? result : null;\n }\n}\n"]}
@@ -19,7 +19,7 @@ class GitlabReleasesDatasource extends datasource_1.Datasource {
19
19
  this.http = new gitlab_1.GitlabHttp(GitlabReleasesDatasource.id);
20
20
  }
21
21
  async getReleases({ registryUrl, packageName, }) {
22
- // istanbul ignore if
22
+ /* v8 ignore next 3 -- should never happen */
23
23
  if (!registryUrl) {
24
24
  return null;
25
25
  }
@@ -43,8 +43,6 @@ class GitlabReleasesDatasource extends datasource_1.Datasource {
43
43
  catch (e) {
44
44
  this.handleGenericErrors(e);
45
45
  }
46
- /* istanbul ignore next */
47
- return null;
48
46
  }
49
47
  }
50
48
  exports.GitlabReleasesDatasource = GitlabReleasesDatasource;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/gitlab-releases/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,sDAAuD;AACvD,uDAAsD;AACtD,8CAA2C;AAI3C,MAAa,wBAAyB,SAAQ,uBAAU;IACtD,MAAM,CAAU,EAAE,GAAG,iBAAiB,CAAC;IAErB,mBAAmB,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAE/D,MAAM,CAAU,gBAAgB,GAAG,OAAO,CAAC;IAEzB,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,kFAAkF,CAAC;IACnE,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,4EAA4E,CAAC;IAE/E;QACE,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAQK,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,qBAAqB;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,GAAG,WAAW,oBAAoB,cAAc,WAAW,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,sBAAsB,GAAG,CAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAkB,MAAM,CAAC,CAC1D,CAAC,IAAI,CAAC;YAEP,OAAO;gBACL,SAAS,EAAE,GAAG,WAAW,IAAI,WAAW,EAAE;gBAC1C,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;oBACjE,MAAM,OAAO,GAAY;wBACvB,WAAW;wBACX,MAAM,EAAE,QAAQ;wBAChB,OAAO,EAAE,QAAQ;wBACjB,gBAAgB,EAAE,IAAA,uBAAW,EAAC,WAAW,CAAC;qBAC3C,CAAC;oBACF,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,0BAA0B;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;;AA3DH,4DA4DC;AAnCO;IANL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,wBAAwB,CAAC,EAAE,EAAE;QACtD,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAqB,EAAE,EAAE;QACvD,uBAAuB;QACvB,GAAG,WAAW,IAAI,WAAW,EAAE;KAClC,CAAC;2DAmCD","sourcesContent":["import { cache } from '../../../util/cache/package/decorator';\nimport { GitlabHttp } from '../../../util/http/gitlab';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport type { GitlabRelease } from './types';\n\nexport class GitlabReleasesDatasource extends Datasource {\n static readonly id = 'gitlab-releases';\n\n override readonly defaultRegistryUrls = ['https://gitlab.com'];\n\n static readonly registryStrategy = 'first';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `released_at` 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(GitlabReleasesDatasource.id);\n this.http = new GitlabHttp(GitlabReleasesDatasource.id);\n }\n\n @cache({\n namespace: `datasource-${GitlabReleasesDatasource.id}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl}/${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const urlEncodedRepo = encodeURIComponent(packageName);\n const apiUrl = `${registryUrl}/api/v4/projects/${urlEncodedRepo}/releases`;\n\n try {\n const gitlabReleasesResponse = (\n await this.http.getJsonUnchecked<GitlabRelease[]>(apiUrl)\n ).body;\n\n return {\n sourceUrl: `${registryUrl}/${packageName}`,\n releases: gitlabReleasesResponse.map(({ tag_name, released_at }) => {\n const release: Release = {\n registryUrl,\n gitRef: tag_name,\n version: tag_name,\n releaseTimestamp: asTimestamp(released_at),\n };\n return release;\n }),\n };\n } catch (e) {\n this.handleGenericErrors(e);\n }\n /* istanbul ignore next */\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/gitlab-releases/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,sDAAuD;AACvD,uDAAsD;AACtD,8CAA2C;AAI3C,MAAa,wBAAyB,SAAQ,uBAAU;IACtD,MAAM,CAAU,EAAE,GAAG,iBAAiB,CAAC;IAErB,mBAAmB,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAE/D,MAAM,CAAU,gBAAgB,GAAG,OAAO,CAAC;IAEzB,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,kFAAkF,CAAC;IACnE,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,4EAA4E,CAAC;IAE/E;QACE,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAQK,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,6CAA6C;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,GAAG,WAAW,oBAAoB,cAAc,WAAW,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,sBAAsB,GAAG,CAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAkB,MAAM,CAAC,CAC1D,CAAC,IAAI,CAAC;YAEP,OAAO;gBACL,SAAS,EAAE,GAAG,WAAW,IAAI,WAAW,EAAE;gBAC1C,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;oBACjE,MAAM,OAAO,GAAY;wBACvB,WAAW;wBACX,MAAM,EAAE,QAAQ;wBAChB,OAAO,EAAE,QAAQ;wBACjB,gBAAgB,EAAE,IAAA,uBAAW,EAAC,WAAW,CAAC;qBAC3C,CAAC;oBACF,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;;AAzDH,4DA0DC;AAjCO;IANL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,wBAAwB,CAAC,EAAE,EAAE;QACtD,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAqB,EAAE,EAAE;QACvD,uBAAuB;QACvB,GAAG,WAAW,IAAI,WAAW,EAAE;KAClC,CAAC;2DAiCD","sourcesContent":["import { cache } from '../../../util/cache/package/decorator';\nimport { GitlabHttp } from '../../../util/http/gitlab';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport type { GitlabRelease } from './types';\n\nexport class GitlabReleasesDatasource extends Datasource {\n static readonly id = 'gitlab-releases';\n\n override readonly defaultRegistryUrls = ['https://gitlab.com'];\n\n static readonly registryStrategy = 'first';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `released_at` 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(GitlabReleasesDatasource.id);\n this.http = new GitlabHttp(GitlabReleasesDatasource.id);\n }\n\n @cache({\n namespace: `datasource-${GitlabReleasesDatasource.id}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `${registryUrl}/${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const urlEncodedRepo = encodeURIComponent(packageName);\n const apiUrl = `${registryUrl}/api/v4/projects/${urlEncodedRepo}/releases`;\n\n try {\n const gitlabReleasesResponse = (\n await this.http.getJsonUnchecked<GitlabRelease[]>(apiUrl)\n ).body;\n\n return {\n sourceUrl: `${registryUrl}/${packageName}`,\n releases: gitlabReleasesResponse.map(({ tag_name, released_at }) => {\n const release: Release = {\n registryUrl,\n gitRef: tag_name,\n version: tag_name,\n releaseTimestamp: asTimestamp(released_at),\n };\n return release;\n }),\n };\n } catch (e) {\n this.handleGenericErrors(e);\n }\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":"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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.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"]}
@@ -103,7 +103,7 @@ tslib_1.__decorate([
103
103
  key: ({ packageName }, newValue) => `getDigest:${packageName}:${newValue}`,
104
104
  })
105
105
  ], GoDatasource.prototype, "getDigest", null);
106
- // istanbul ignore if
106
+ /* v8 ignore next 3 -- hard to test */
107
107
  if (is_1.default.string(process.env.GOPROXY)) {
108
108
  const uri = (0, url_1.parseUrl)(process.env.GOPROXY);
109
109
  if (uri?.password) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/index.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,4CAAyC;AACzC,qEAA8D;AAC9D,+CAA4C;AAC5C,qDAAgE;AAChE,2CAA6C;AAC7C,oDAAyD;AACzD,sDAA4D;AAC5D,8CAA2C;AAC3C,0CAAgD;AAChD,8CAAoD;AACpD,gDAAsD;AACtD,gDAAsD;AAEtD,iCAA0C;AAC1C,qDAAgD;AAChD,uDAAuD;AACvD,yDAAuD;AAEvD,MAAa,YAAa,SAAQ,uBAAU;IAC1C,MAAM,CAAU,EAAE,GAAG,IAAI,CAAC;IAER,iBAAiB,GAAG,WAAQ,CAAC;IAE/C;QACE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAEiB,aAAa,GAAG;QAChC,kBAAkB,EAAE,oBAAoB;KACzC,CAAC;IAEgB,qBAAqB,GAAG,KAAK,CAAC;IAE9B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,gKAAgK,CAAC;IACjJ,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,wEAAwE,CAAC;IAElE,OAAO,GAAG,IAAI,oCAAiB,EAAE,CAAC;IAClC,MAAM,GAAG,IAAI,oCAAkB,EAAE,CAAC;IAE3C,yDAAyD;IACzD,MAAM,CAAU,cAAc,GAAG,IAAA,aAAK,EACpC,iEAAiE,CAClE,CAAC;IAMF,WAAW,CAAC,MAAyB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;;OASG;IAMY,AAAN,KAAK,CAAC,SAAS,CACtB,EAAE,WAAW,EAAgB,EAC7B,QAAiB;QAEjB,IAAI,IAAA,6BAAY,GAAE,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE,CAAC;YACpD,eAAM,CAAC,KAAK,CACV,yBAAyB,WAAW,gCAAgC,CACrE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,uBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gGAAgG;QAChG,4GAA4G;QAC5G,MAAM,GAAG,GACP,QAAQ;YACR,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3C,QAAQ,KAAK,QAAQ;YACnB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,SAAS,CAAC;QAEhB,QAAQ,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1B,KAAK,4BAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;YACD,KAAK,gCAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,kCAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACnD,CAAC;YACD,KAAK,wCAAuB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC;YACD,KAAK,kCAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACnD,CAAC;YACD,8DAA8D;YAC9D,OAAO,CAAC,CAAC,CAAC;gBACR,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;;AAnGH,oCAoGC;AAlEC;IALC,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,YAAY,CAAC,EAAE,EAAE;QAC1C,uBAAuB;QACvB,GAAG,EAAE,CAAC,EAAE,WAAW,EAAqB,EAAE,EAAE,CAAC,eAAe,WAAW,EAAE;KAC1E,CAAC;+CAGD;AAiBc;IALd,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,YAAY,CAAC,EAAE,EAAE;QAC1C,GAAG,EAAE,CAAC,EAAE,WAAW,EAAgB,EAAE,QAAiB,EAAE,EAAE,CACxD,aAAa,WAAW,IAAI,QAAQ,EAAE;KACzC,CAAC;6CA+CD;AAGH,qBAAqB;AACrB,IAAI,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,IAAA,cAAQ,EAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAC;QAClB,IAAA,iCAAsB,EAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAC;QACzB,IAAA,iCAAsB,EAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;AACH,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { regEx } from '../../../util/regex';\nimport { addSecretForSanitizing } from '../../../util/sanitize';\nimport { parseUrl } from '../../../util/url';\nimport { id as semverId } from '../../versioning/semver';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags';\nimport { Datasource } from '../datasource';\nimport { GitTagsDatasource } from '../git-tags';\nimport { GiteaTagsDatasource } from '../gitea-tags';\nimport { GithubTagsDatasource } from '../github-tags';\nimport { GitlabTagsDatasource } from '../gitlab-tags';\nimport type { DigestConfig, GetReleasesConfig, ReleaseResult } from '../types';\nimport { BaseGoDatasource } from './base';\nimport { parseGoproxy } from './goproxy-parser';\nimport { GoDirectDatasource } from './releases-direct';\nimport { GoProxyDatasource } from './releases-goproxy';\n\nexport class GoDatasource extends Datasource {\n static readonly id = 'go';\n\n override readonly defaultVersioning = semverId;\n\n constructor() {\n super(GoDatasource.id);\n }\n\n override readonly defaultConfig = {\n commitMessageTopic: 'module {{depName}}',\n };\n\n override readonly customRegistrySupport = false;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'If the release timestamp is not returned from the respective datasoure used to fetch the releases, then Renovate uses the `Time` field in the results instead.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `packageName` and `registryUrl`.';\n\n readonly goproxy = new GoProxyDatasource();\n readonly direct = new GoDirectDatasource();\n\n // Pseudo versions https://go.dev/ref/mod#pseudo-versions\n static readonly pversionRegexp = regEx(\n /v\\d+\\.\\d+\\.\\d+-(?:\\w+\\.)?(?:0\\.)?\\d{14}-(?<digest>[a-f0-9]{12})/,\n );\n @cache({\n namespace: `datasource-${GoDatasource.id}`,\n // TODO: types (#22198)\n key: ({ packageName }: GetReleasesConfig) => `getReleases:${packageName}`,\n })\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.goproxy.getReleases(config);\n }\n\n /**\n * go.getDigest\n *\n * This datasource resolves a go module URL into its source repository\n * and then fetches the digest if it is on GitHub.\n *\n * This function will:\n * - Determine the source URL for the module\n * - Call the respective getDigest in github to retrieve the commit hash\n */\n @cache({\n namespace: `datasource-${GoDatasource.id}`,\n key: ({ packageName }: DigestConfig, newValue?: string) =>\n `getDigest:${packageName}:${newValue}`,\n })\n override async getDigest(\n { packageName }: DigestConfig,\n newValue?: string,\n ): Promise<string | null> {\n if (parseGoproxy().some(({ url }) => url === 'off')) {\n logger.debug(\n `Skip digest fetch for ${packageName} with GOPROXY containing \"off\"`,\n );\n return null;\n }\n\n const source = await BaseGoDatasource.getDatasource(packageName);\n if (!source) {\n return null;\n }\n\n // ignore vX.Y.Z-(0.)? pseudo versions that are used Go Modules - look up default branch instead\n // ignore v0.0.0 versions to fetch the digest of default branch, not the commit of non-existing tag `v0.0.0`\n const tag =\n newValue &&\n !GoDatasource.pversionRegexp.test(newValue) &&\n newValue !== 'v0.0.0'\n ? newValue\n : undefined;\n\n switch (source.datasource) {\n case GitTagsDatasource.id: {\n return this.direct.git.getDigest(source, tag);\n }\n case GiteaTagsDatasource.id: {\n return this.direct.gitea.getDigest(source, tag);\n }\n case GithubTagsDatasource.id: {\n return this.direct.github.getDigest(source, tag);\n }\n case BitbucketTagsDatasource.id: {\n return this.direct.bitbucket.getDigest(source, tag);\n }\n case GitlabTagsDatasource.id: {\n return this.direct.gitlab.getDigest(source, tag);\n }\n /* istanbul ignore next: can never happen, makes lint happy */\n default: {\n return null;\n }\n }\n }\n}\n\n// istanbul ignore if\nif (is.string(process.env.GOPROXY)) {\n const uri = parseUrl(process.env.GOPROXY);\n if (uri?.password) {\n addSecretForSanitizing(uri.password, 'global');\n } else if (uri?.username) {\n addSecretForSanitizing(uri.username, 'global');\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/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 { regEx } from '../../../util/regex';\nimport { addSecretForSanitizing } from '../../../util/sanitize';\nimport { parseUrl } from '../../../util/url';\nimport { id as semverId } from '../../versioning/semver';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags';\nimport { Datasource } from '../datasource';\nimport { GitTagsDatasource } from '../git-tags';\nimport { GiteaTagsDatasource } from '../gitea-tags';\nimport { GithubTagsDatasource } from '../github-tags';\nimport { GitlabTagsDatasource } from '../gitlab-tags';\nimport type { DigestConfig, GetReleasesConfig, ReleaseResult } from '../types';\nimport { BaseGoDatasource } from './base';\nimport { parseGoproxy } from './goproxy-parser';\nimport { GoDirectDatasource } from './releases-direct';\nimport { GoProxyDatasource } from './releases-goproxy';\n\nexport class GoDatasource extends Datasource {\n static readonly id = 'go';\n\n override readonly defaultVersioning = semverId;\n\n constructor() {\n super(GoDatasource.id);\n }\n\n override readonly defaultConfig = {\n commitMessageTopic: 'module {{depName}}',\n };\n\n override readonly customRegistrySupport = false;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'If the release timestamp is not returned from the respective datasoure used to fetch the releases, then Renovate uses the `Time` field in the results instead.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `packageName` and `registryUrl`.';\n\n readonly goproxy = new GoProxyDatasource();\n readonly direct = new GoDirectDatasource();\n\n // Pseudo versions https://go.dev/ref/mod#pseudo-versions\n static readonly pversionRegexp = regEx(\n /v\\d+\\.\\d+\\.\\d+-(?:\\w+\\.)?(?:0\\.)?\\d{14}-(?<digest>[a-f0-9]{12})/,\n );\n @cache({\n namespace: `datasource-${GoDatasource.id}`,\n // TODO: types (#22198)\n key: ({ packageName }: GetReleasesConfig) => `getReleases:${packageName}`,\n })\n getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n return this.goproxy.getReleases(config);\n }\n\n /**\n * go.getDigest\n *\n * This datasource resolves a go module URL into its source repository\n * and then fetches the digest if it is on GitHub.\n *\n * This function will:\n * - Determine the source URL for the module\n * - Call the respective getDigest in github to retrieve the commit hash\n */\n @cache({\n namespace: `datasource-${GoDatasource.id}`,\n key: ({ packageName }: DigestConfig, newValue?: string) =>\n `getDigest:${packageName}:${newValue}`,\n })\n override async getDigest(\n { packageName }: DigestConfig,\n newValue?: string,\n ): Promise<string | null> {\n if (parseGoproxy().some(({ url }) => url === 'off')) {\n logger.debug(\n `Skip digest fetch for ${packageName} with GOPROXY containing \"off\"`,\n );\n return null;\n }\n\n const source = await BaseGoDatasource.getDatasource(packageName);\n if (!source) {\n return null;\n }\n\n // ignore vX.Y.Z-(0.)? pseudo versions that are used Go Modules - look up default branch instead\n // ignore v0.0.0 versions to fetch the digest of default branch, not the commit of non-existing tag `v0.0.0`\n const tag =\n newValue &&\n !GoDatasource.pversionRegexp.test(newValue) &&\n newValue !== 'v0.0.0'\n ? newValue\n : undefined;\n\n switch (source.datasource) {\n case GitTagsDatasource.id: {\n return this.direct.git.getDigest(source, tag);\n }\n case GiteaTagsDatasource.id: {\n return this.direct.gitea.getDigest(source, tag);\n }\n case GithubTagsDatasource.id: {\n return this.direct.github.getDigest(source, tag);\n }\n case BitbucketTagsDatasource.id: {\n return this.direct.bitbucket.getDigest(source, tag);\n }\n case GitlabTagsDatasource.id: {\n return this.direct.gitlab.getDigest(source, tag);\n }\n /* istanbul ignore next: can never happen, makes lint happy */\n default: {\n return null;\n }\n }\n }\n}\n\n/* v8 ignore next 3 -- hard to test */\nif (is.string(process.env.GOPROXY)) {\n const uri = parseUrl(process.env.GOPROXY);\n if (uri?.password) {\n addSecretForSanitizing(uri.password, 'global');\n } else if (uri?.username) {\n addSecretForSanitizing(uri.username, 'global');\n }\n}\n"]}
@@ -106,18 +106,21 @@ class GoDirectDatasource extends datasource_1.Datasource {
106
106
  res = await this.bitbucket.getReleases(source);
107
107
  break;
108
108
  }
109
- /* istanbul ignore next: can never happen, makes lint happy */
109
+ /* v8 ignore next 3 -- should never happen */
110
110
  default: {
111
111
  return null;
112
112
  }
113
113
  }
114
- // istanbul ignore if
114
+ /* v8 ignore next 3 -- TODO: add test */
115
115
  if (!res) {
116
116
  return null;
117
117
  }
118
118
  const sourceUrl = (0, common_1.getSourceUrl)(source) ?? null;
119
- res.releases = filterByPrefix(packageName, res.releases);
120
- return { ...res, sourceUrl };
119
+ return {
120
+ ...res,
121
+ releases: filterByPrefix(packageName, res.releases),
122
+ sourceUrl,
123
+ };
121
124
  }
122
125
  }
123
126
  exports.GoDirectDatasource = GoDirectDatasource;
@@ -1 +1 @@
1
- {"version":3,"file":"releases-direct.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/releases-direct.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { regEx } from '../../../util/regex';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags';\nimport { Datasource } from '../datasource';\nimport { GitTagsDatasource } from '../git-tags';\nimport { GiteaTagsDatasource } from '../gitea-tags';\nimport { GithubTagsDatasource } from '../github-tags';\nimport { GitlabTagsDatasource } from '../gitlab-tags';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport { BaseGoDatasource } from './base';\nimport { getSourceUrl } from './common';\n\n/**\n * This function tries to select tags with longest prefix could be constructed from `packageName`.\n *\n * For package named `example.com/foo/bar/baz/qux`, it will try to detect tags with following prefixes:\n *\n * - `foo/bar/baz/qux/vX.Y.Z`\n * - `bar/baz/qux/vX.Y.Z`\n * - `baz/qux/vX.Y.Z`\n * - `qux/vX.Y.Z`\n *\n * If none of the following is found, it falls back to simply returning all tags like `vX.Y.Z`.\n */\nfunction filterByPrefix(packageName: string, releases: Release[]): Release[] {\n const nameParts = packageName\n .replace(regEx(/\\/v\\d+$/), '')\n .split('/')\n .slice(1);\n\n const submoduleReleases: Release[] = [];\n while (nameParts.length) {\n const prefix = `${nameParts.join('/')}/`;\n\n for (const release of releases) {\n if (!release.version.startsWith(prefix)) {\n continue;\n }\n\n const normalizedVersion = release.version.replace(prefix, '');\n if (!normalizedVersion.match(regEx(/^v\\d[^/]*/))) {\n continue;\n }\n\n release.version = release.version.replace(prefix, '');\n submoduleReleases.push(release);\n }\n\n if (submoduleReleases.length) {\n return submoduleReleases;\n }\n\n nameParts.shift();\n }\n\n return releases.filter((release) => release.version.startsWith('v'));\n}\n\nexport class GoDirectDatasource extends Datasource {\n static readonly id = 'go-direct';\n\n git: GitTagsDatasource;\n readonly gitea = new GiteaTagsDatasource();\n github: GithubTagsDatasource;\n gitlab: GitlabTagsDatasource;\n bitbucket: BitbucketTagsDatasource;\n\n constructor() {\n super(GoDirectDatasource.id);\n this.git = new GitTagsDatasource();\n this.github = new GithubTagsDatasource();\n this.gitlab = new GitlabTagsDatasource();\n this.bitbucket = new BitbucketTagsDatasource();\n }\n\n /**\n * go.getReleases\n *\n * This datasource resolves a go module URL into its source repository\n * and then fetch it if it is on GitHub.\n *\n * This function will:\n * - Determine the source URL for the module\n * - Call the respective getReleases in github/gitlab to retrieve the tags\n * - Filter module tags according to the module path\n */\n @cache({\n namespace: `datasource-${GoDirectDatasource.id}`,\n key: ({ packageName }: GetReleasesConfig) => packageName,\n })\n async getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n const { packageName } = config;\n\n let res: ReleaseResult | null = null;\n\n logger.trace(`go.getReleases(${packageName})`);\n const source = await BaseGoDatasource.getDatasource(packageName);\n\n if (!source) {\n logger.info(\n { packageName },\n 'Unsupported go host - cannot look up versions',\n );\n return null;\n }\n\n switch (source.datasource) {\n case GitTagsDatasource.id: {\n res = await this.git.getReleases(source);\n break;\n }\n case GiteaTagsDatasource.id: {\n res = await this.gitea.getReleases(source);\n break;\n }\n case GithubTagsDatasource.id: {\n res = await this.github.getReleases(source);\n break;\n }\n case GitlabTagsDatasource.id: {\n res = await this.gitlab.getReleases(source);\n break;\n }\n case BitbucketTagsDatasource.id: {\n res = await this.bitbucket.getReleases(source);\n break;\n }\n /* istanbul ignore next: can never happen, makes lint happy */\n default: {\n return null;\n }\n }\n\n // istanbul ignore if\n if (!res) {\n return null;\n }\n\n const sourceUrl = getSourceUrl(source) ?? null;\n\n res.releases = filterByPrefix(packageName, res.releases);\n\n return { ...res, sourceUrl };\n }\n}\n"]}
1
+ {"version":3,"file":"releases-direct.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/go/releases-direct.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { regEx } from '../../../util/regex';\nimport { BitbucketTagsDatasource } from '../bitbucket-tags';\nimport { Datasource } from '../datasource';\nimport { GitTagsDatasource } from '../git-tags';\nimport { GiteaTagsDatasource } from '../gitea-tags';\nimport { GithubTagsDatasource } from '../github-tags';\nimport { GitlabTagsDatasource } from '../gitlab-tags';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport { BaseGoDatasource } from './base';\nimport { getSourceUrl } from './common';\n\n/**\n * This function tries to select tags with longest prefix could be constructed from `packageName`.\n *\n * For package named `example.com/foo/bar/baz/qux`, it will try to detect tags with following prefixes:\n *\n * - `foo/bar/baz/qux/vX.Y.Z`\n * - `bar/baz/qux/vX.Y.Z`\n * - `baz/qux/vX.Y.Z`\n * - `qux/vX.Y.Z`\n *\n * If none of the following is found, it falls back to simply returning all tags like `vX.Y.Z`.\n */\nfunction filterByPrefix(packageName: string, releases: Release[]): Release[] {\n const nameParts = packageName\n .replace(regEx(/\\/v\\d+$/), '')\n .split('/')\n .slice(1);\n\n const submoduleReleases: Release[] = [];\n while (nameParts.length) {\n const prefix = `${nameParts.join('/')}/`;\n\n for (const release of releases) {\n if (!release.version.startsWith(prefix)) {\n continue;\n }\n\n const normalizedVersion = release.version.replace(prefix, '');\n if (!normalizedVersion.match(regEx(/^v\\d[^/]*/))) {\n continue;\n }\n\n release.version = release.version.replace(prefix, '');\n submoduleReleases.push(release);\n }\n\n if (submoduleReleases.length) {\n return submoduleReleases;\n }\n\n nameParts.shift();\n }\n\n return releases.filter((release) => release.version.startsWith('v'));\n}\n\nexport class GoDirectDatasource extends Datasource {\n static readonly id = 'go-direct';\n\n git: GitTagsDatasource;\n readonly gitea = new GiteaTagsDatasource();\n github: GithubTagsDatasource;\n gitlab: GitlabTagsDatasource;\n bitbucket: BitbucketTagsDatasource;\n\n constructor() {\n super(GoDirectDatasource.id);\n this.git = new GitTagsDatasource();\n this.github = new GithubTagsDatasource();\n this.gitlab = new GitlabTagsDatasource();\n this.bitbucket = new BitbucketTagsDatasource();\n }\n\n /**\n * go.getReleases\n *\n * This datasource resolves a go module URL into its source repository\n * and then fetch it if it is on GitHub.\n *\n * This function will:\n * - Determine the source URL for the module\n * - Call the respective getReleases in github/gitlab to retrieve the tags\n * - Filter module tags according to the module path\n */\n @cache({\n namespace: `datasource-${GoDirectDatasource.id}`,\n key: ({ packageName }: GetReleasesConfig) => packageName,\n })\n async getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {\n const { packageName } = config;\n\n let res: ReleaseResult | null = null;\n\n logger.trace(`go.getReleases(${packageName})`);\n const source = await BaseGoDatasource.getDatasource(packageName);\n\n if (!source) {\n logger.info(\n { packageName },\n 'Unsupported go host - cannot look up versions',\n );\n return null;\n }\n\n switch (source.datasource) {\n case GitTagsDatasource.id: {\n res = await this.git.getReleases(source);\n break;\n }\n case GiteaTagsDatasource.id: {\n res = await this.gitea.getReleases(source);\n break;\n }\n case GithubTagsDatasource.id: {\n res = await this.github.getReleases(source);\n break;\n }\n case GitlabTagsDatasource.id: {\n res = await this.gitlab.getReleases(source);\n break;\n }\n case BitbucketTagsDatasource.id: {\n res = await this.bitbucket.getReleases(source);\n break;\n }\n /* v8 ignore next 3 -- should never happen */\n default: {\n return null;\n }\n }\n\n /* v8 ignore next 3 -- TODO: add test */\n if (!res) {\n return null;\n }\n\n const sourceUrl = getSourceUrl(source) ?? null;\n\n return {\n ...res,\n releases: filterByPrefix(packageName, res.releases),\n sourceUrl,\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"]}
@@ -30,7 +30,7 @@ class GolangVersionDatasource extends datasource_1.Datasource {
30
30
  sourceUrlSupport = 'package';
31
31
  sourceUrlNote = 'We use the URL: https://github.com/golang/go.';
32
32
  async getReleases({ registryUrl, }) {
33
- // istanbul ignore if
33
+ /* v8 ignore next 3 -- should never happen */
34
34
  if (!registryUrl) {
35
35
  return null;
36
36
  }
@@ -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) {