renovate 40.0.0-next.9 → 40.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (816) 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/global.js +0 -1
  7. package/dist/config/global.js.map +1 -1
  8. package/dist/config/migrate-validate.js +3 -2
  9. package/dist/config/migrate-validate.js.map +1 -1
  10. package/dist/config/migration.js +2 -1
  11. package/dist/config/migration.js.map +1 -1
  12. package/dist/config/migrations/custom/rebase-stale-prs-migration.js +1 -1
  13. package/dist/config/migrations/custom/rebase-stale-prs-migration.js.map +1 -1
  14. package/dist/config/migrations/migrations-service.js +3 -2
  15. package/dist/config/migrations/migrations-service.js.map +1 -1
  16. package/dist/config/options/index.js +18 -11
  17. package/dist/config/options/index.js.map +1 -1
  18. package/dist/config/parse.js +2 -2
  19. package/dist/config/parse.js.map +1 -1
  20. package/dist/config/presets/common.js +1 -0
  21. package/dist/config/presets/common.js.map +1 -1
  22. package/dist/config/presets/gitea/index.js +0 -1
  23. package/dist/config/presets/gitea/index.js.map +1 -1
  24. package/dist/config/presets/github/index.js +4 -2
  25. package/dist/config/presets/github/index.js.map +1 -1
  26. package/dist/config/presets/gitlab/index.js +1 -1
  27. package/dist/config/presets/gitlab/index.js.map +1 -1
  28. package/dist/config/presets/http/index.js +2 -2
  29. package/dist/config/presets/http/index.js.map +1 -1
  30. package/dist/config/presets/index.js +0 -7
  31. package/dist/config/presets/index.js.map +1 -1
  32. package/dist/config/presets/internal/custom-managers.js +18 -4
  33. package/dist/config/presets/internal/custom-managers.js.map +1 -1
  34. package/dist/config/presets/internal/group.js +30 -1
  35. package/dist/config/presets/internal/group.js.map +1 -1
  36. package/dist/config/presets/internal/index.js +1 -3
  37. package/dist/config/presets/internal/index.js.map +1 -1
  38. package/dist/config/presets/internal/workarounds.js +1 -0
  39. package/dist/config/presets/internal/workarounds.js.map +1 -1
  40. package/dist/config/presets/npm/index.js +4 -1
  41. package/dist/config/presets/npm/index.js.map +1 -1
  42. package/dist/config/presets/parse.js +2 -1
  43. package/dist/config/presets/parse.js.map +1 -1
  44. package/dist/config/schema.d.ts +2 -2
  45. package/dist/config/types.d.ts +4 -2
  46. package/dist/config/types.js.map +1 -1
  47. package/dist/config/validation.js +3 -5
  48. package/dist/config/validation.js.map +1 -1
  49. package/dist/config-validator.js +0 -1
  50. package/dist/config-validator.js.map +1 -1
  51. package/dist/constants/category.js +0 -1
  52. package/dist/constants/category.js.map +1 -1
  53. package/dist/constants/platforms.js +5 -1
  54. package/dist/constants/platforms.js.map +1 -1
  55. package/dist/data/monorepo.json +9 -2
  56. package/dist/data/replacements.json +13 -0
  57. package/dist/data/source-urls.json +1 -0
  58. package/dist/data-files.generated.js +2 -2
  59. package/dist/data-files.generated.js.map +1 -1
  60. package/dist/instrumentation/index.js +39 -15
  61. package/dist/instrumentation/index.js.map +1 -1
  62. package/dist/instrumentation/utils.js +1 -1
  63. package/dist/instrumentation/utils.js.map +1 -1
  64. package/dist/logger/cmd-serializer.js +0 -1
  65. package/dist/logger/cmd-serializer.js.map +1 -1
  66. package/dist/logger/config-serializer.js +0 -1
  67. package/dist/logger/config-serializer.js.map +1 -1
  68. package/dist/logger/index.js +1 -4
  69. package/dist/logger/index.js.map +1 -1
  70. package/dist/logger/once.js +4 -2
  71. package/dist/logger/once.js.map +1 -1
  72. package/dist/logger/pretty-stdout.js +0 -1
  73. package/dist/logger/pretty-stdout.js.map +1 -1
  74. package/dist/logger/renovate-logger.js +1 -1
  75. package/dist/logger/renovate-logger.js.map +1 -1
  76. package/dist/logger/utils.js +5 -10
  77. package/dist/logger/utils.js.map +1 -1
  78. package/dist/modules/datasource/api.js +4 -0
  79. package/dist/modules/datasource/api.js.map +1 -1
  80. package/dist/modules/datasource/artifactory/index.js +1 -2
  81. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  82. package/dist/modules/datasource/aws-eks-addon/index.d.ts +11 -0
  83. package/dist/modules/datasource/aws-eks-addon/index.js +75 -0
  84. package/dist/modules/datasource/aws-eks-addon/index.js.map +1 -0
  85. package/dist/modules/datasource/aws-eks-addon/schema.d.ts +40 -0
  86. package/dist/modules/datasource/aws-eks-addon/schema.js +31 -0
  87. package/dist/modules/datasource/aws-eks-addon/schema.js.map +1 -0
  88. package/dist/modules/datasource/aws-machine-image/index.js +6 -5
  89. package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
  90. package/dist/modules/datasource/azure-pipelines-tasks/index.js +15 -1
  91. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  92. package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +24 -0
  93. package/dist/modules/datasource/azure-pipelines-tasks/schema.js +3 -0
  94. package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
  95. package/dist/modules/datasource/bazel/index.js +18 -2
  96. package/dist/modules/datasource/bazel/index.js.map +1 -1
  97. package/dist/modules/datasource/bazel/schema.d.ts +1 -0
  98. package/dist/modules/datasource/bazel/schema.js.map +1 -1
  99. package/dist/modules/datasource/bitbucket-server-tags/index.d.ts +19 -0
  100. package/dist/modules/datasource/bitbucket-server-tags/index.js +133 -0
  101. package/dist/modules/datasource/bitbucket-server-tags/index.js.map +1 -0
  102. package/dist/modules/datasource/bitbucket-server-tags/schema.d.ts +28 -0
  103. package/dist/modules/datasource/bitbucket-server-tags/schema.js +13 -0
  104. package/dist/modules/datasource/bitbucket-server-tags/schema.js.map +1 -0
  105. package/dist/modules/datasource/bitrise/index.js +1 -1
  106. package/dist/modules/datasource/bitrise/index.js.map +1 -1
  107. package/dist/modules/datasource/cdnjs/schema.d.ts +2 -2
  108. package/dist/modules/datasource/conda/index.js +18 -1
  109. package/dist/modules/datasource/conda/index.js.map +1 -1
  110. package/dist/modules/datasource/conda/prefix-dev.d.ts +3 -0
  111. package/dist/modules/datasource/conda/prefix-dev.js +81 -0
  112. package/dist/modules/datasource/conda/prefix-dev.js.map +1 -0
  113. package/dist/modules/datasource/conda/schema/prefix-dev.d.ts +189 -0
  114. package/dist/modules/datasource/conda/schema/prefix-dev.js +31 -0
  115. package/dist/modules/datasource/conda/schema/prefix-dev.js.map +1 -0
  116. package/dist/modules/datasource/conda/types.d.ts +1 -20
  117. package/dist/modules/datasource/conda/types.js.map +1 -1
  118. package/dist/modules/datasource/cpan/index.js +2 -4
  119. package/dist/modules/datasource/cpan/index.js.map +1 -1
  120. package/dist/modules/datasource/crate/index.js +3 -3
  121. package/dist/modules/datasource/crate/index.js.map +1 -1
  122. package/dist/modules/datasource/custom/formats/html.js +1 -1
  123. package/dist/modules/datasource/custom/formats/html.js.map +1 -1
  124. package/dist/modules/datasource/custom/formats/yaml.js +1 -1
  125. package/dist/modules/datasource/custom/formats/yaml.js.map +1 -1
  126. package/dist/modules/datasource/custom/index.js +4 -2
  127. package/dist/modules/datasource/custom/index.js.map +1 -1
  128. package/dist/modules/datasource/custom/schema.d.ts +22 -22
  129. package/dist/modules/datasource/custom/utils.js +1 -0
  130. package/dist/modules/datasource/custom/utils.js.map +1 -1
  131. package/dist/modules/datasource/dart/index.js +1 -1
  132. package/dist/modules/datasource/dart/index.js.map +1 -1
  133. package/dist/modules/datasource/dart-version/index.js +1 -1
  134. package/dist/modules/datasource/dart-version/index.js.map +1 -1
  135. package/dist/modules/datasource/datasource.js +0 -1
  136. package/dist/modules/datasource/datasource.js.map +1 -1
  137. package/dist/modules/datasource/deb/index.d.ts +4 -5
  138. package/dist/modules/datasource/deb/index.js +10 -11
  139. package/dist/modules/datasource/deb/index.js.map +1 -1
  140. package/dist/modules/datasource/deb/url.d.ts +3 -3
  141. package/dist/modules/datasource/deb/url.js +17 -13
  142. package/dist/modules/datasource/deb/url.js.map +1 -1
  143. package/dist/modules/datasource/deno/index.js +1 -1
  144. package/dist/modules/datasource/deno/index.js.map +1 -1
  145. package/dist/modules/datasource/deno/schema.d.ts +1 -1
  146. package/dist/modules/datasource/devbox/index.js +0 -1
  147. package/dist/modules/datasource/devbox/index.js.map +1 -1
  148. package/dist/modules/datasource/docker/common.js +5 -2
  149. package/dist/modules/datasource/docker/common.js.map +1 -1
  150. package/dist/modules/datasource/docker/index.js +8 -6
  151. package/dist/modules/datasource/docker/index.js.map +1 -1
  152. package/dist/modules/datasource/docker/schema.d.ts +77 -101
  153. package/dist/modules/datasource/docker/schema.js +2 -1
  154. package/dist/modules/datasource/docker/schema.js.map +1 -1
  155. package/dist/modules/datasource/flutter-version/index.js +1 -1
  156. package/dist/modules/datasource/flutter-version/index.js.map +1 -1
  157. package/dist/modules/datasource/galaxy/schema.d.ts +1 -1
  158. package/dist/modules/datasource/galaxy-collection/schema.d.ts +8 -8
  159. package/dist/modules/datasource/git-refs/index.js +1 -1
  160. package/dist/modules/datasource/git-refs/index.js.map +1 -1
  161. package/dist/modules/datasource/gitea-releases/schema.d.ts +6 -6
  162. package/dist/modules/datasource/gitea-tags/schema.d.ts +4 -4
  163. package/dist/modules/datasource/github-release-attachments/index.js +2 -2
  164. package/dist/modules/datasource/github-release-attachments/index.js.map +1 -1
  165. package/dist/modules/datasource/github-runners/index.js +2 -2
  166. package/dist/modules/datasource/github-runners/index.js.map +1 -1
  167. package/dist/modules/datasource/github-tags/index.js +4 -1
  168. package/dist/modules/datasource/github-tags/index.js.map +1 -1
  169. package/dist/modules/datasource/gitlab-packages/index.js +1 -1
  170. package/dist/modules/datasource/gitlab-packages/index.js.map +1 -1
  171. package/dist/modules/datasource/gitlab-releases/index.js +1 -3
  172. package/dist/modules/datasource/gitlab-releases/index.js.map +1 -1
  173. package/dist/modules/datasource/go/base.js +1 -1
  174. package/dist/modules/datasource/go/base.js.map +1 -1
  175. package/dist/modules/datasource/go/index.js +1 -1
  176. package/dist/modules/datasource/go/index.js.map +1 -1
  177. package/dist/modules/datasource/go/releases-direct.js +7 -4
  178. package/dist/modules/datasource/go/releases-direct.js.map +1 -1
  179. package/dist/modules/datasource/go/releases-goproxy.js +1 -1
  180. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  181. package/dist/modules/datasource/golang-version/index.js +2 -2
  182. package/dist/modules/datasource/golang-version/index.js.map +1 -1
  183. package/dist/modules/datasource/gradle-version/index.js +1 -1
  184. package/dist/modules/datasource/gradle-version/index.js.map +1 -1
  185. package/dist/modules/datasource/helm/index.js +1 -1
  186. package/dist/modules/datasource/helm/index.js.map +1 -1
  187. package/dist/modules/datasource/hex/index.js +1 -1
  188. package/dist/modules/datasource/hex/index.js.map +1 -1
  189. package/dist/modules/datasource/hex/schema.d.ts +11 -11
  190. package/dist/modules/datasource/hexpm-bob/index.js +1 -1
  191. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  192. package/dist/modules/datasource/index.js +46 -5
  193. package/dist/modules/datasource/index.js.map +1 -1
  194. package/dist/modules/datasource/java-version/index.js +0 -1
  195. package/dist/modules/datasource/java-version/index.js.map +1 -1
  196. package/dist/modules/datasource/jenkins-plugins/index.js +1 -1
  197. package/dist/modules/datasource/jenkins-plugins/index.js.map +1 -1
  198. package/dist/modules/datasource/maven/index.d.ts +2 -2
  199. package/dist/modules/datasource/maven/index.js +56 -33
  200. package/dist/modules/datasource/maven/index.js.map +1 -1
  201. package/dist/modules/datasource/maven/types.d.ts +7 -6
  202. package/dist/modules/datasource/maven/types.js.map +1 -1
  203. package/dist/modules/datasource/maven/util.d.ts +4 -5
  204. package/dist/modules/datasource/maven/util.js +94 -157
  205. package/dist/modules/datasource/maven/util.js.map +1 -1
  206. package/dist/modules/datasource/metadata.js +9 -1
  207. package/dist/modules/datasource/metadata.js.map +1 -1
  208. package/dist/modules/datasource/node-version/index.js +1 -1
  209. package/dist/modules/datasource/node-version/index.js.map +1 -1
  210. package/dist/modules/datasource/npm/get.d.ts +0 -1
  211. package/dist/modules/datasource/npm/get.js +14 -68
  212. package/dist/modules/datasource/npm/get.js.map +1 -1
  213. package/dist/modules/datasource/npm/index.js +1 -1
  214. package/dist/modules/datasource/npm/index.js.map +1 -1
  215. package/dist/modules/datasource/npm/npmrc.js +1 -1
  216. package/dist/modules/datasource/npm/npmrc.js.map +1 -1
  217. package/dist/modules/datasource/npm/types.d.ts +0 -8
  218. package/dist/modules/datasource/npm/types.js.map +1 -1
  219. package/dist/modules/datasource/nuget/index.js +1 -1
  220. package/dist/modules/datasource/nuget/index.js.map +1 -1
  221. package/dist/modules/datasource/nuget/v2.js +1 -1
  222. package/dist/modules/datasource/nuget/v2.js.map +1 -1
  223. package/dist/modules/datasource/nuget/v3.js +8 -6
  224. package/dist/modules/datasource/nuget/v3.js.map +1 -1
  225. package/dist/modules/datasource/orb/index.js +1 -1
  226. package/dist/modules/datasource/orb/index.js.map +1 -1
  227. package/dist/modules/datasource/packagist/index.js +2 -2
  228. package/dist/modules/datasource/packagist/index.js.map +1 -1
  229. package/dist/modules/datasource/packagist/schema.d.ts +32 -32
  230. package/dist/modules/datasource/pod/index.js +2 -2
  231. package/dist/modules/datasource/pod/index.js.map +1 -1
  232. package/dist/modules/datasource/postprocess-release.js +1 -1
  233. package/dist/modules/datasource/postprocess-release.js.map +1 -1
  234. package/dist/modules/datasource/pypi/index.js +1 -1
  235. package/dist/modules/datasource/pypi/index.js.map +1 -1
  236. package/dist/modules/datasource/python-version/index.js +1 -1
  237. package/dist/modules/datasource/python-version/index.js.map +1 -1
  238. package/dist/modules/datasource/repology/index.js +1 -1
  239. package/dist/modules/datasource/repology/index.js.map +1 -1
  240. package/dist/modules/datasource/ruby-version/index.js +1 -1
  241. package/dist/modules/datasource/ruby-version/index.js.map +1 -1
  242. package/dist/modules/datasource/rubygems/index.js +2 -2
  243. package/dist/modules/datasource/rubygems/index.js.map +1 -1
  244. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js +2 -2
  245. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
  246. package/dist/modules/datasource/sbt-package/index.js +1 -1
  247. package/dist/modules/datasource/sbt-package/index.js.map +1 -1
  248. package/dist/modules/datasource/sbt-plugin/index.js +1 -1
  249. package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
  250. package/dist/modules/datasource/schema.d.ts +4 -4
  251. package/dist/modules/datasource/terraform-module/index.js +1 -1
  252. package/dist/modules/datasource/terraform-module/index.js.map +1 -1
  253. package/dist/modules/datasource/terraform-provider/index.js +2 -3
  254. package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
  255. package/dist/modules/datasource/types.d.ts +2 -0
  256. package/dist/modules/datasource/types.js.map +1 -1
  257. package/dist/modules/manager/api.js +2 -0
  258. package/dist/modules/manager/api.js.map +1 -1
  259. package/dist/modules/manager/argocd/extract.js +1 -1
  260. package/dist/modules/manager/argocd/extract.js.map +1 -1
  261. package/dist/modules/manager/argocd/schema.d.ts +22 -22
  262. package/dist/modules/manager/asdf/upgradeable-tooling.js +94 -0
  263. package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
  264. package/dist/modules/manager/azure-pipelines/schema.d.ts +32 -32
  265. package/dist/modules/manager/batect/schema.d.ts +4 -4
  266. package/dist/modules/manager/batect-wrapper/artifacts.js +1 -1
  267. package/dist/modules/manager/batect-wrapper/artifacts.js.map +1 -1
  268. package/dist/modules/manager/bazel/rules/docker.d.ts +6 -6
  269. package/dist/modules/manager/bazel/rules/git.d.ts +10 -10
  270. package/dist/modules/manager/bazel/rules/git.js +9 -2
  271. package/dist/modules/manager/bazel/rules/git.js.map +1 -1
  272. package/dist/modules/manager/bazel/rules/go.d.ts +5 -5
  273. package/dist/modules/manager/bazel/rules/maven.d.ts +7 -7
  274. package/dist/modules/manager/bazel/rules/oci.d.ts +6 -6
  275. package/dist/modules/manager/bazel-module/parser/fragments.d.ts +40 -40
  276. package/dist/modules/manager/bazel-module/parser/maven.d.ts +44 -90
  277. package/dist/modules/manager/bazel-module/parser/oci.d.ts +19 -42
  278. package/dist/modules/manager/bazel-module/rules.d.ts +50 -160
  279. package/dist/modules/manager/buildpacks/extract.d.ts +6 -1
  280. package/dist/modules/manager/buildpacks/extract.js +24 -14
  281. package/dist/modules/manager/buildpacks/extract.js.map +1 -1
  282. package/dist/modules/manager/bun/artifacts.js +0 -1
  283. package/dist/modules/manager/bun/artifacts.js.map +1 -1
  284. package/dist/modules/manager/bun/extract.d.ts +1 -0
  285. package/dist/modules/manager/bun/extract.js +53 -27
  286. package/dist/modules/manager/bun/extract.js.map +1 -1
  287. package/dist/modules/manager/bun/index.js +1 -1
  288. package/dist/modules/manager/bun/index.js.map +1 -1
  289. package/dist/modules/manager/bun/utils.d.ts +2 -0
  290. package/dist/modules/manager/bun/utils.js +22 -0
  291. package/dist/modules/manager/bun/utils.js.map +1 -0
  292. package/dist/modules/manager/bundler/artifacts.js +0 -1
  293. package/dist/modules/manager/bundler/artifacts.js.map +1 -1
  294. package/dist/modules/manager/bundler/extract.js +2 -1
  295. package/dist/modules/manager/bundler/extract.js.map +1 -1
  296. package/dist/modules/manager/cake/index.js +4 -2
  297. package/dist/modules/manager/cake/index.js.map +1 -1
  298. package/dist/modules/manager/cargo/artifacts.js +5 -7
  299. package/dist/modules/manager/cargo/artifacts.js.map +1 -1
  300. package/dist/modules/manager/cargo/schema.d.ts +166 -166
  301. package/dist/modules/manager/circleci/extract.js +21 -30
  302. package/dist/modules/manager/circleci/extract.js.map +1 -1
  303. package/dist/modules/manager/circleci/schema.d.ts +33 -144
  304. package/dist/modules/manager/circleci/schema.js +21 -17
  305. package/dist/modules/manager/circleci/schema.js.map +1 -1
  306. package/dist/modules/manager/cocoapods/artifacts.js +1 -2
  307. package/dist/modules/manager/cocoapods/artifacts.js.map +1 -1
  308. package/dist/modules/manager/composer/artifacts.js +1 -2
  309. package/dist/modules/manager/composer/artifacts.js.map +1 -1
  310. package/dist/modules/manager/composer/schema.d.ts +32 -34
  311. package/dist/modules/manager/composer/schema.js +1 -1
  312. package/dist/modules/manager/composer/schema.js.map +1 -1
  313. package/dist/modules/manager/composer/utils.d.ts +1 -0
  314. package/dist/modules/manager/composer/utils.js +18 -6
  315. package/dist/modules/manager/composer/utils.js.map +1 -1
  316. package/dist/modules/manager/conan/artifacts.d.ts +2 -0
  317. package/dist/modules/manager/conan/artifacts.js +76 -0
  318. package/dist/modules/manager/conan/artifacts.js.map +1 -0
  319. package/dist/modules/manager/conan/index.d.ts +2 -0
  320. package/dist/modules/manager/conan/index.js +4 -1
  321. package/dist/modules/manager/conan/index.js.map +1 -1
  322. package/dist/modules/manager/copier/artifacts.js +0 -1
  323. package/dist/modules/manager/copier/artifacts.js.map +1 -1
  324. package/dist/modules/manager/crossplane/schema.d.ts +2 -2
  325. package/dist/modules/manager/custom/jsonata/schema.d.ts +21 -21
  326. package/dist/modules/manager/custom/regex/index.js +2 -0
  327. package/dist/modules/manager/custom/regex/index.js.map +1 -1
  328. package/dist/modules/manager/deps-edn/extract.js +2 -1
  329. package/dist/modules/manager/deps-edn/extract.js.map +1 -1
  330. package/dist/modules/manager/devbox/artifacts.d.ts +1 -1
  331. package/dist/modules/manager/devbox/artifacts.js +35 -11
  332. package/dist/modules/manager/devbox/artifacts.js.map +1 -1
  333. package/dist/modules/manager/devbox/schema.js +1 -1
  334. package/dist/modules/manager/devbox/schema.js.map +1 -1
  335. package/dist/modules/manager/devcontainer/extract.js +43 -1
  336. package/dist/modules/manager/devcontainer/extract.js.map +1 -1
  337. package/dist/modules/manager/devcontainer/index.js +11 -1
  338. package/dist/modules/manager/devcontainer/index.js.map +1 -1
  339. package/dist/modules/manager/devcontainer/schema.d.ts +7 -3
  340. package/dist/modules/manager/devcontainer/schema.js +3 -1
  341. package/dist/modules/manager/devcontainer/schema.js.map +1 -1
  342. package/dist/modules/manager/docker-compose/schema.d.ts +6 -6
  343. package/dist/modules/manager/dockerfile/extract.js +2 -6
  344. package/dist/modules/manager/dockerfile/extract.js.map +1 -1
  345. package/dist/modules/manager/fingerprint.generated.js +86 -85
  346. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  347. package/dist/modules/manager/fleet/schema.d.ts +4 -4
  348. package/dist/modules/manager/flux/artifacts.js +0 -1
  349. package/dist/modules/manager/flux/artifacts.js.map +1 -1
  350. package/dist/modules/manager/flux/extract.js +27 -24
  351. package/dist/modules/manager/flux/extract.js.map +1 -1
  352. package/dist/modules/manager/flux/schema.d.ts +130 -154
  353. package/dist/modules/manager/github-actions/extract.js +60 -39
  354. package/dist/modules/manager/github-actions/extract.js.map +1 -1
  355. package/dist/modules/manager/github-actions/schema.d.ts +66 -0
  356. package/dist/modules/manager/github-actions/schema.js +38 -0
  357. package/dist/modules/manager/github-actions/schema.js.map +1 -0
  358. package/dist/modules/manager/gitlabci/extract.d.ts +1 -5
  359. package/dist/modules/manager/gitlabci/extract.js +27 -126
  360. package/dist/modules/manager/gitlabci/extract.js.map +1 -1
  361. package/dist/modules/manager/gitlabci/schema.d.ts +55 -0
  362. package/dist/modules/manager/gitlabci/schema.js +63 -0
  363. package/dist/modules/manager/gitlabci/schema.js.map +1 -0
  364. package/dist/modules/manager/gitlabci-include/extract.js +6 -54
  365. package/dist/modules/manager/gitlabci-include/extract.js.map +1 -1
  366. package/dist/modules/manager/gitlabci-include/schema.d.ts +13 -0
  367. package/dist/modules/manager/gitlabci-include/schema.js +46 -0
  368. package/dist/modules/manager/gitlabci-include/schema.js.map +1 -0
  369. package/dist/modules/manager/glasskube/schema.d.ts +8 -8
  370. package/dist/modules/manager/gomod/artifacts-extra.js +12 -4
  371. package/dist/modules/manager/gomod/artifacts-extra.js.map +1 -1
  372. package/dist/modules/manager/gomod/artifacts.js +24 -10
  373. package/dist/modules/manager/gomod/artifacts.js.map +1 -1
  374. package/dist/modules/manager/gomod/extract.js +23 -0
  375. package/dist/modules/manager/gomod/extract.js.map +1 -1
  376. package/dist/modules/manager/gomod/line-parser.js +16 -0
  377. package/dist/modules/manager/gomod/line-parser.js.map +1 -1
  378. package/dist/modules/manager/gomod/update.js +5 -3
  379. package/dist/modules/manager/gomod/update.js.map +1 -1
  380. package/dist/modules/manager/gradle/artifacts.js +0 -1
  381. package/dist/modules/manager/gradle/artifacts.js.map +1 -1
  382. package/dist/modules/manager/gradle/extract/catalog.js +1 -1
  383. package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
  384. package/dist/modules/manager/gradle/extract.js +8 -13
  385. package/dist/modules/manager/gradle/extract.js.map +1 -1
  386. package/dist/modules/manager/gradle/parser/assignments.js +2 -2
  387. package/dist/modules/manager/gradle/parser/assignments.js.map +1 -1
  388. package/dist/modules/manager/gradle/parser/handlers.d.ts +1 -2
  389. package/dist/modules/manager/gradle/parser/handlers.js +17 -24
  390. package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
  391. package/dist/modules/manager/gradle/parser/registry-urls.js +46 -12
  392. package/dist/modules/manager/gradle/parser/registry-urls.js.map +1 -1
  393. package/dist/modules/manager/gradle/types.d.ts +1 -0
  394. package/dist/modules/manager/gradle/types.js.map +1 -1
  395. package/dist/modules/manager/gradle-wrapper/artifacts.js +1 -2
  396. package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
  397. package/dist/modules/manager/helmfile/artifacts.js +0 -1
  398. package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
  399. package/dist/modules/manager/helmfile/extract.js +4 -0
  400. package/dist/modules/manager/helmfile/extract.js.map +1 -1
  401. package/dist/modules/manager/helmfile/schema.d.ts +9 -9
  402. package/dist/modules/manager/helmv3/artifacts.js +0 -1
  403. package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
  404. package/dist/modules/manager/helmv3/utils.js +3 -1
  405. package/dist/modules/manager/helmv3/utils.js.map +1 -1
  406. package/dist/modules/manager/hermit/artifacts.js +0 -1
  407. package/dist/modules/manager/hermit/artifacts.js.map +1 -1
  408. package/dist/modules/manager/homebrew/extract.js +0 -1
  409. package/dist/modules/manager/homebrew/extract.js.map +1 -1
  410. package/dist/modules/manager/jsonnet-bundler/artifacts.js +0 -1
  411. package/dist/modules/manager/jsonnet-bundler/artifacts.js.map +1 -1
  412. package/dist/modules/manager/kustomize/artifacts.d.ts +2 -0
  413. package/dist/modules/manager/kustomize/artifacts.js +154 -0
  414. package/dist/modules/manager/kustomize/artifacts.js.map +1 -0
  415. package/dist/modules/manager/kustomize/common.d.ts +3 -0
  416. package/dist/modules/manager/kustomize/common.js +22 -0
  417. package/dist/modules/manager/kustomize/common.js.map +1 -0
  418. package/dist/modules/manager/kustomize/index.d.ts +1 -0
  419. package/dist/modules/manager/kustomize/index.js +3 -1
  420. package/dist/modules/manager/kustomize/index.js.map +1 -1
  421. package/dist/modules/manager/kustomize/types.d.ts +4 -0
  422. package/dist/modules/manager/kustomize/types.js.map +1 -1
  423. package/dist/modules/manager/maven/extract.d.ts +2 -2
  424. package/dist/modules/manager/maven/extract.js +14 -9
  425. package/dist/modules/manager/maven/extract.js.map +1 -1
  426. package/dist/modules/manager/maven-wrapper/artifacts.js +0 -1
  427. package/dist/modules/manager/maven-wrapper/artifacts.js.map +1 -1
  428. package/dist/modules/manager/mise/extract.js +1 -1
  429. package/dist/modules/manager/mise/extract.js.map +1 -1
  430. package/dist/modules/manager/mix/artifacts.js +64 -14
  431. package/dist/modules/manager/mix/artifacts.js.map +1 -1
  432. package/dist/modules/manager/mix/index.d.ts +1 -0
  433. package/dist/modules/manager/mix/index.js +2 -1
  434. package/dist/modules/manager/mix/index.js.map +1 -1
  435. package/dist/modules/manager/nix/artifacts.js +0 -1
  436. package/dist/modules/manager/nix/artifacts.js.map +1 -1
  437. package/dist/modules/manager/nix/extract.js +1 -1
  438. package/dist/modules/manager/nix/extract.js.map +1 -1
  439. package/dist/modules/manager/nix/schema.d.ts +20 -20
  440. package/dist/modules/manager/nix/schema.js +1 -0
  441. package/dist/modules/manager/nix/schema.js.map +1 -1
  442. package/dist/modules/manager/npm/artifacts.js +0 -1
  443. package/dist/modules/manager/npm/artifacts.js.map +1 -1
  444. package/dist/modules/manager/npm/extract/common/package-file.js +1 -0
  445. package/dist/modules/manager/npm/extract/common/package-file.js.map +1 -1
  446. package/dist/modules/manager/npm/extract/yarn.js +2 -2
  447. package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
  448. package/dist/modules/manager/npm/post-update/npm.js +0 -1
  449. package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
  450. package/dist/modules/manager/npm/post-update/pnpm.js +13 -2
  451. package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
  452. package/dist/modules/manager/npm/post-update/rules.js +11 -1
  453. package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
  454. package/dist/modules/manager/npm/post-update/yarn.js +0 -1
  455. package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
  456. package/dist/modules/manager/npm/schema.d.ts +13 -13
  457. package/dist/modules/manager/npm/update/dependency/index.js +1 -1
  458. package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
  459. package/dist/modules/manager/nuget/artifacts.js +1 -2
  460. package/dist/modules/manager/nuget/artifacts.js.map +1 -1
  461. package/dist/modules/manager/nuget/extract.js +21 -18
  462. package/dist/modules/manager/nuget/extract.js.map +1 -1
  463. package/dist/modules/manager/nuget/package-tree.js +4 -0
  464. package/dist/modules/manager/nuget/package-tree.js.map +1 -1
  465. package/dist/modules/manager/nuget/schema.d.ts +8 -8
  466. package/dist/modules/manager/nuget/util.js +4 -1
  467. package/dist/modules/manager/nuget/util.js.map +1 -1
  468. package/dist/modules/manager/ocb/schema.d.ts +6 -6
  469. package/dist/modules/manager/pep621/extract.js +19 -3
  470. package/dist/modules/manager/pep621/extract.js.map +1 -1
  471. package/dist/modules/manager/pep621/processors/pdm.js +3 -2
  472. package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
  473. package/dist/modules/manager/pep621/processors/uv.js +4 -1
  474. package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
  475. package/dist/modules/manager/pep621/schema.d.ts +341 -49
  476. package/dist/modules/manager/pep621/schema.js +3 -1
  477. package/dist/modules/manager/pep621/schema.js.map +1 -1
  478. package/dist/modules/manager/pep621/utils.js +1 -1
  479. package/dist/modules/manager/pep621/utils.js.map +1 -1
  480. package/dist/modules/manager/pip-compile/common.js +0 -1
  481. package/dist/modules/manager/pip-compile/common.js.map +1 -1
  482. package/dist/modules/manager/pip_requirements/artifacts.js +0 -1
  483. package/dist/modules/manager/pip_requirements/artifacts.js.map +1 -1
  484. package/dist/modules/manager/pip_requirements/common.js +2 -6
  485. package/dist/modules/manager/pip_requirements/common.js.map +1 -1
  486. package/dist/modules/manager/pipenv/artifacts.js +0 -1
  487. package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
  488. package/dist/modules/manager/pixi/artifacts.d.ts +3 -0
  489. package/dist/modules/manager/pixi/artifacts.js +78 -0
  490. package/dist/modules/manager/pixi/artifacts.js.map +1 -0
  491. package/dist/modules/manager/pixi/extract.d.ts +4 -0
  492. package/dist/modules/manager/pixi/extract.js +131 -0
  493. package/dist/modules/manager/pixi/extract.js.map +1 -0
  494. package/dist/modules/manager/pixi/index.d.ts +10 -0
  495. package/dist/modules/manager/pixi/index.js +20 -0
  496. package/dist/modules/manager/pixi/index.js.map +1 -0
  497. package/dist/modules/manager/pixi/schema.d.ts +405 -0
  498. package/dist/modules/manager/pixi/schema.js +147 -0
  499. package/dist/modules/manager/pixi/schema.js.map +1 -0
  500. package/dist/modules/manager/poetry/artifacts.js +3 -4
  501. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  502. package/dist/modules/manager/poetry/extract.js +2 -1
  503. package/dist/modules/manager/poetry/extract.js.map +1 -1
  504. package/dist/modules/manager/poetry/schema.d.ts +44 -44
  505. package/dist/modules/manager/pub/artifacts.js +0 -1
  506. package/dist/modules/manager/pub/artifacts.js.map +1 -1
  507. package/dist/modules/manager/pub/schema.d.ts +8 -8
  508. package/dist/modules/manager/scalafmt/extract.js +1 -1
  509. package/dist/modules/manager/scalafmt/extract.js.map +1 -1
  510. package/dist/modules/manager/sveltos/schema.d.ts +30 -42
  511. package/dist/modules/manager/terraform/lockfile/hash.d.ts +1 -1
  512. package/dist/modules/manager/terraform/util.js +1 -3
  513. package/dist/modules/manager/terraform/util.js.map +1 -1
  514. package/dist/modules/manager/types.d.ts +6 -2
  515. package/dist/modules/manager/types.js.map +1 -1
  516. package/dist/modules/manager/vendir/schema.d.ts +7 -7
  517. package/dist/modules/platform/api.d.ts +1 -1
  518. package/dist/modules/platform/azure/azure-helper.js +2 -2
  519. package/dist/modules/platform/azure/azure-helper.js.map +1 -1
  520. package/dist/modules/platform/azure/index.js +14 -14
  521. package/dist/modules/platform/azure/index.js.map +1 -1
  522. package/dist/modules/platform/bitbucket/comments.js +4 -4
  523. package/dist/modules/platform/bitbucket/comments.js.map +1 -1
  524. package/dist/modules/platform/bitbucket/index.js +49 -44
  525. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  526. package/dist/modules/platform/bitbucket/schema.d.ts +14 -14
  527. package/dist/modules/platform/bitbucket/utils.js +3 -3
  528. package/dist/modules/platform/bitbucket/utils.js.map +1 -1
  529. package/dist/modules/platform/bitbucket-server/index.d.ts +2 -2
  530. package/dist/modules/platform/bitbucket-server/index.js +81 -81
  531. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  532. package/dist/modules/platform/bitbucket-server/pr-cache.d.ts +23 -0
  533. package/dist/modules/platform/bitbucket-server/pr-cache.js +125 -0
  534. package/dist/modules/platform/bitbucket-server/pr-cache.js.map +1 -0
  535. package/dist/modules/platform/bitbucket-server/schema.d.ts +76 -0
  536. package/dist/modules/platform/bitbucket-server/schema.js +15 -1
  537. package/dist/modules/platform/bitbucket-server/schema.js.map +1 -1
  538. package/dist/modules/platform/bitbucket-server/types.d.ts +8 -2
  539. package/dist/modules/platform/bitbucket-server/types.js.map +1 -1
  540. package/dist/modules/platform/bitbucket-server/utils.d.ts +0 -2
  541. package/dist/modules/platform/bitbucket-server/utils.js +6 -52
  542. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  543. package/dist/modules/platform/codecommit/codecommit-client.js +6 -6
  544. package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
  545. package/dist/modules/platform/codecommit/index.js +24 -24
  546. package/dist/modules/platform/codecommit/index.js.map +1 -1
  547. package/dist/modules/platform/gerrit/client.d.ts +0 -3
  548. package/dist/modules/platform/gerrit/client.js +20 -29
  549. package/dist/modules/platform/gerrit/client.js.map +1 -1
  550. package/dist/modules/platform/gerrit/index.js +0 -6
  551. package/dist/modules/platform/gerrit/index.js.map +1 -1
  552. package/dist/modules/platform/gerrit/scm.js +5 -6
  553. package/dist/modules/platform/gerrit/scm.js.map +1 -1
  554. package/dist/modules/platform/gerrit/types.d.ts +1 -4
  555. package/dist/modules/platform/gerrit/types.js.map +1 -1
  556. package/dist/modules/platform/gerrit/utils.d.ts +3 -2
  557. package/dist/modules/platform/gerrit/utils.js +4 -8
  558. package/dist/modules/platform/gerrit/utils.js.map +1 -1
  559. package/dist/modules/platform/gitea/gitea-helper.d.ts +1 -0
  560. package/dist/modules/platform/gitea/gitea-helper.js +16 -0
  561. package/dist/modules/platform/gitea/gitea-helper.js.map +1 -1
  562. package/dist/modules/platform/gitea/index.js +22 -16
  563. package/dist/modules/platform/gitea/index.js.map +1 -1
  564. package/dist/modules/platform/gitea/schema.d.ts +8 -8
  565. package/dist/modules/platform/gitea/types.d.ts +1 -1
  566. package/dist/modules/platform/gitea/types.js.map +1 -1
  567. package/dist/modules/platform/github/common.d.ts +2 -0
  568. package/dist/modules/platform/github/common.js +16 -0
  569. package/dist/modules/platform/github/common.js.map +1 -1
  570. package/dist/modules/platform/github/index.d.ts +1 -1
  571. package/dist/modules/platform/github/index.js +87 -82
  572. package/dist/modules/platform/github/index.js.map +1 -1
  573. package/dist/modules/platform/github/issue.d.ts +18 -18
  574. package/dist/modules/platform/github/massage-markdown-links.js +2 -2
  575. package/dist/modules/platform/github/massage-markdown-links.js.map +1 -1
  576. package/dist/modules/platform/github/pr.js +3 -3
  577. package/dist/modules/platform/github/pr.js.map +1 -1
  578. package/dist/modules/platform/github/schema.d.ts +128 -128
  579. package/dist/modules/platform/github/schema.js +3 -1
  580. package/dist/modules/platform/github/schema.js.map +1 -1
  581. package/dist/modules/platform/gitlab/index.js +63 -49
  582. package/dist/modules/platform/gitlab/index.js.map +1 -1
  583. package/dist/modules/platform/index.js +0 -1
  584. package/dist/modules/platform/index.js.map +1 -1
  585. package/dist/modules/platform/scm.d.ts +1 -1
  586. package/dist/modules/versioning/api.js +2 -0
  587. package/dist/modules/versioning/api.js.map +1 -1
  588. package/dist/modules/versioning/composer/index.js +10 -0
  589. package/dist/modules/versioning/composer/index.js.map +1 -1
  590. package/dist/modules/versioning/conda/index.d.ts +41 -0
  591. package/dist/modules/versioning/conda/index.js +178 -0
  592. package/dist/modules/versioning/conda/index.js.map +1 -0
  593. package/dist/modules/versioning/distro.js +1 -3
  594. package/dist/modules/versioning/distro.js.map +1 -1
  595. package/dist/modules/versioning/hashicorp/convertor.d.ts +2 -1
  596. package/dist/modules/versioning/hashicorp/convertor.js +13 -8
  597. package/dist/modules/versioning/hashicorp/convertor.js.map +1 -1
  598. package/dist/modules/versioning/hex/index.js +3 -3
  599. package/dist/modules/versioning/hex/index.js.map +1 -1
  600. package/dist/modules/versioning/npm/index.js +2 -1
  601. package/dist/modules/versioning/npm/index.js.map +1 -1
  602. package/dist/modules/versioning/types.d.ts +4 -0
  603. package/dist/modules/versioning/types.js.map +1 -1
  604. package/dist/proxy.js +2 -1
  605. package/dist/proxy.js.map +1 -1
  606. package/dist/renovate.js +2 -2
  607. package/dist/renovate.js.map +1 -1
  608. package/dist/util/cache/package/redis.js +0 -1
  609. package/dist/util/cache/package/redis.js.map +1 -1
  610. package/dist/util/cache/package/types.d.ts +1 -1
  611. package/dist/util/cache/package/types.js.map +1 -1
  612. package/dist/util/cache/repository/impl/base.d.ts +1 -1
  613. package/dist/util/cache/repository/impl/base.js +4 -0
  614. package/dist/util/cache/repository/impl/base.js.map +1 -1
  615. package/dist/util/cache/repository/schema.d.ts +4 -4
  616. package/dist/util/cache/repository/types.d.ts +3 -0
  617. package/dist/util/cache/repository/types.js.map +1 -1
  618. package/dist/util/common.d.ts +4 -2
  619. package/dist/util/common.js +17 -3
  620. package/dist/util/common.js.map +1 -1
  621. package/dist/util/env.d.ts +4 -0
  622. package/dist/util/env.js +22 -0
  623. package/dist/util/env.js.map +1 -0
  624. package/dist/util/exec/containerbase.js +19 -14
  625. package/dist/util/exec/containerbase.js.map +1 -1
  626. package/dist/util/exec/index.js +5 -2
  627. package/dist/util/exec/index.js.map +1 -1
  628. package/dist/util/exec/types.d.ts +0 -2
  629. package/dist/util/exec/types.js.map +1 -1
  630. package/dist/util/exec/utils.d.ts +1 -1
  631. package/dist/util/exec/utils.js +6 -5
  632. package/dist/util/exec/utils.js.map +1 -1
  633. package/dist/util/git/auth.js +8 -5
  634. package/dist/util/git/auth.js.map +1 -1
  635. package/dist/util/git/author.js +1 -1
  636. package/dist/util/git/author.js.map +1 -1
  637. package/dist/util/git/config.js +0 -1
  638. package/dist/util/git/config.js.map +1 -1
  639. package/dist/util/git/error.js +4 -2
  640. package/dist/util/git/error.js.map +1 -1
  641. package/dist/util/git/index.js +75 -52
  642. package/dist/util/git/index.js.map +1 -1
  643. package/dist/util/git/private-key.js +2 -4
  644. package/dist/util/git/private-key.js.map +1 -1
  645. package/dist/util/git/types.d.ts +2 -0
  646. package/dist/util/git/types.js.map +1 -1
  647. package/dist/util/git/url.js +1 -1
  648. package/dist/util/git/url.js.map +1 -1
  649. package/dist/util/github/graphql/datasource-fetcher.js +3 -5
  650. package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
  651. package/dist/util/github/graphql/query-adapters/releases-query-adapter.d.ts +2 -2
  652. package/dist/util/github/graphql/query-adapters/tags-query-adapter.d.ts +2 -2
  653. package/dist/util/http/auth.js +0 -1
  654. package/dist/util/http/auth.js.map +1 -1
  655. package/dist/util/http/bitbucket-server.d.ts +7 -5
  656. package/dist/util/http/bitbucket-server.js +26 -23
  657. package/dist/util/http/bitbucket-server.js.map +1 -1
  658. package/dist/util/http/bitbucket.d.ts +6 -5
  659. package/dist/util/http/bitbucket.js +34 -31
  660. package/dist/util/http/bitbucket.js.map +1 -1
  661. package/dist/util/http/cache/abstract-http-cache-provider.js +2 -2
  662. package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
  663. package/dist/util/http/cache/memory-http-cache-provider.d.ts +10 -0
  664. package/dist/util/http/cache/memory-http-cache-provider.js +29 -0
  665. package/dist/util/http/cache/memory-http-cache-provider.js.map +1 -0
  666. package/dist/util/http/cache/package-http-cache-provider.d.ts +23 -0
  667. package/dist/util/http/cache/package-http-cache-provider.js +80 -0
  668. package/dist/util/http/cache/package-http-cache-provider.js.map +1 -0
  669. package/dist/util/http/cache/schema.d.ts +2 -2
  670. package/dist/util/http/errors.d.ts +2 -0
  671. package/dist/util/http/errors.js +8 -0
  672. package/dist/util/http/errors.js.map +1 -0
  673. package/dist/util/http/gerrit.d.ts +6 -4
  674. package/dist/util/http/gerrit.js +11 -12
  675. package/dist/util/http/gerrit.js.map +1 -1
  676. package/dist/util/http/gitea.d.ts +5 -4
  677. package/dist/util/http/gitea.js +14 -13
  678. package/dist/util/http/gitea.js.map +1 -1
  679. package/dist/util/http/github.d.ts +14 -8
  680. package/dist/util/http/github.js +65 -60
  681. package/dist/util/http/github.js.map +1 -1
  682. package/dist/util/http/gitlab.d.ts +7 -5
  683. package/dist/util/http/gitlab.js +58 -46
  684. package/dist/util/http/gitlab.js.map +1 -1
  685. package/dist/util/http/got.d.ts +9 -0
  686. package/dist/util/http/got.js +54 -0
  687. package/dist/util/http/got.js.map +1 -0
  688. package/dist/util/http/host-rules.d.ts +2 -1
  689. package/dist/util/http/host-rules.js +17 -4
  690. package/dist/util/http/host-rules.js.map +1 -1
  691. package/dist/util/http/http.d.ts +93 -0
  692. package/dist/util/http/http.js +346 -0
  693. package/dist/util/http/http.js.map +1 -0
  694. package/dist/util/http/index.d.ts +6 -74
  695. package/dist/util/http/index.js +5 -359
  696. package/dist/util/http/index.js.map +1 -1
  697. package/dist/util/http/legacy.js +4 -1
  698. package/dist/util/http/legacy.js.map +1 -1
  699. package/dist/util/http/types.d.ts +9 -16
  700. package/dist/util/http/types.js.map +1 -1
  701. package/dist/util/schema-utils.d.ts +1 -0
  702. package/dist/util/schema-utils.js +43 -8
  703. package/dist/util/schema-utils.js.map +1 -1
  704. package/dist/util/stats.d.ts +10 -0
  705. package/dist/util/stats.js +45 -1
  706. package/dist/util/stats.js.map +1 -1
  707. package/dist/util/string.d.ts +16 -0
  708. package/dist/util/string.js +79 -0
  709. package/dist/util/string.js.map +1 -1
  710. package/dist/util/toml.d.ts +1 -0
  711. package/dist/util/toml.js +6 -0
  712. package/dist/util/toml.js.map +1 -1
  713. package/dist/util/url.js +3 -8
  714. package/dist/util/url.js.map +1 -1
  715. package/dist/util/yaml.js +3 -8
  716. package/dist/util/yaml.js.map +1 -1
  717. package/dist/workers/global/autodiscover.js +1 -19
  718. package/dist/workers/global/autodiscover.js.map +1 -1
  719. package/dist/workers/global/config/parse/env.js +3 -3
  720. package/dist/workers/global/config/parse/env.js.map +1 -1
  721. package/dist/workers/global/config/parse/file.js +18 -8
  722. package/dist/workers/global/config/parse/file.js.map +1 -1
  723. package/dist/workers/global/config/parse/host-rules-from-env.js +6 -2
  724. package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
  725. package/dist/workers/global/config/parse/index.js +15 -0
  726. package/dist/workers/global/config/parse/index.js.map +1 -1
  727. package/dist/workers/global/index.js +4 -2
  728. package/dist/workers/global/index.js.map +1 -1
  729. package/dist/workers/repository/cache.js +1 -2
  730. package/dist/workers/repository/cache.js.map +1 -1
  731. package/dist/workers/repository/config-migration/branch/migrated-data.js +2 -0
  732. package/dist/workers/repository/config-migration/branch/migrated-data.js.map +1 -1
  733. package/dist/workers/repository/index.js +1 -0
  734. package/dist/workers/repository/index.js.map +1 -1
  735. package/dist/workers/repository/init/merge.js +6 -3
  736. package/dist/workers/repository/init/merge.js.map +1 -1
  737. package/dist/workers/repository/onboarding/pr/config-description.js +3 -1
  738. package/dist/workers/repository/onboarding/pr/config-description.js.map +1 -1
  739. package/dist/workers/repository/onboarding/pr/index.js +4 -0
  740. package/dist/workers/repository/onboarding/pr/index.js.map +1 -1
  741. package/dist/workers/repository/process/extract-update.js +0 -1
  742. package/dist/workers/repository/process/extract-update.js.map +1 -1
  743. package/dist/workers/repository/process/fingerprint-fields.js +0 -1
  744. package/dist/workers/repository/process/fingerprint-fields.js.map +1 -1
  745. package/dist/workers/repository/process/libyear.js +2 -2
  746. package/dist/workers/repository/process/libyear.js.map +1 -1
  747. package/dist/workers/repository/process/lookup/index.js +15 -4
  748. package/dist/workers/repository/process/lookup/index.js.map +1 -1
  749. package/dist/workers/repository/process/lookup/timestamps.d.ts +18 -0
  750. package/dist/workers/repository/process/lookup/timestamps.js +69 -0
  751. package/dist/workers/repository/process/lookup/timestamps.js.map +1 -0
  752. package/dist/workers/repository/process/lookup/types.d.ts +1 -0
  753. package/dist/workers/repository/process/lookup/types.js.map +1 -1
  754. package/dist/workers/repository/process/lookup/utils.js +20 -9
  755. package/dist/workers/repository/process/lookup/utils.js.map +1 -1
  756. package/dist/workers/repository/process/sort.js +1 -1
  757. package/dist/workers/repository/process/sort.js.map +1 -1
  758. package/dist/workers/repository/process/vulnerabilities.js +1 -1
  759. package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
  760. package/dist/workers/repository/process/write.js +1 -8
  761. package/dist/workers/repository/process/write.js.map +1 -1
  762. package/dist/workers/repository/reconfigure/utils.d.ts +2 -0
  763. package/dist/workers/repository/reconfigure/utils.js +16 -0
  764. package/dist/workers/repository/reconfigure/utils.js.map +1 -1
  765. package/dist/workers/repository/reconfigure/validate.js +6 -17
  766. package/dist/workers/repository/reconfigure/validate.js.map +1 -1
  767. package/dist/workers/repository/update/branch/auto-replace.js +25 -5
  768. package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
  769. package/dist/workers/repository/update/branch/commit.js +2 -0
  770. package/dist/workers/repository/update/branch/commit.js.map +1 -1
  771. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +17 -8
  772. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
  773. package/dist/workers/repository/update/pr/body/config-description.js +26 -1
  774. package/dist/workers/repository/update/pr/body/config-description.js.map +1 -1
  775. package/dist/workers/repository/update/pr/body/index.js +21 -14
  776. package/dist/workers/repository/update/pr/body/index.js.map +1 -1
  777. package/dist/workers/repository/update/pr/changelog/api.js +8 -6
  778. package/dist/workers/repository/update/pr/changelog/api.js.map +1 -1
  779. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js +1 -1
  780. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js.map +1 -1
  781. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.d.ts +3 -0
  782. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.js +39 -0
  783. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.js.map +1 -0
  784. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.d.ts +8 -0
  785. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.js +31 -0
  786. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.js.map +1 -0
  787. package/dist/workers/repository/update/pr/changelog/github/index.js +6 -3
  788. package/dist/workers/repository/update/pr/changelog/github/index.js.map +1 -1
  789. package/dist/workers/repository/update/pr/changelog/gitlab/index.js +1 -1
  790. package/dist/workers/repository/update/pr/changelog/gitlab/index.js.map +1 -1
  791. package/dist/workers/repository/update/pr/changelog/release-notes.js +12 -8
  792. package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
  793. package/dist/workers/repository/update/pr/changelog/source.d.ts +1 -1
  794. package/dist/workers/repository/update/pr/changelog/source.js +1 -0
  795. package/dist/workers/repository/update/pr/changelog/source.js.map +1 -1
  796. package/dist/workers/repository/update/pr/changelog/types.d.ts +1 -1
  797. package/dist/workers/repository/update/pr/changelog/types.js.map +1 -1
  798. package/dist/workers/repository/update/pr/index.js +2 -4
  799. package/dist/workers/repository/update/pr/index.js.map +1 -1
  800. package/dist/workers/repository/updates/flatten.js +8 -4
  801. package/dist/workers/repository/updates/flatten.js.map +1 -1
  802. package/dist/workers/repository/updates/generate.js +3 -2
  803. package/dist/workers/repository/updates/generate.js.map +1 -1
  804. package/dist/workers/types.d.ts +1 -4
  805. package/dist/workers/types.js.map +1 -1
  806. package/package.json +86 -83
  807. package/renovate-schema.json +25 -10
  808. package/dist/modules/manager/github-actions/types.d.ts +0 -30
  809. package/dist/modules/manager/github-actions/types.js +0 -3
  810. package/dist/modules/manager/github-actions/types.js.map +0 -1
  811. package/dist/modules/manager/gitlabci/common.d.ts +0 -6
  812. package/dist/modules/manager/gitlabci/common.js +0 -30
  813. package/dist/modules/manager/gitlabci/common.js.map +0 -1
  814. package/dist/modules/manager/gitlabci/types.d.ts +0 -35
  815. package/dist/modules/manager/gitlabci/types.js +0 -3
  816. package/dist/modules/manager/gitlabci/types.js.map +0 -1
@@ -1,23 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CACHE_REVISION = void 0;
4
3
  exports.getDependency = getDependency;
5
4
  const tslib_1 = require("tslib");
6
- const node_url_1 = tslib_1.__importDefault(require("node:url"));
7
5
  const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
8
- const luxon_1 = require("luxon");
9
6
  const zod_1 = require("zod");
10
- const global_1 = require("../../../config/global");
11
7
  const error_messages_1 = require("../../../constants/error-messages");
12
8
  const logger_1 = require("../../../logger");
13
9
  const external_host_error_1 = require("../../../types/errors/external-host-error");
14
- const packageCache = tslib_1.__importStar(require("../../../util/cache/package"));
15
10
  const hostRules = tslib_1.__importStar(require("../../../util/host-rules"));
11
+ const package_http_cache_provider_1 = require("../../../util/http/cache/package-http-cache-provider");
16
12
  const regex_1 = require("../../../util/regex");
17
- const stats_1 = require("../../../util/stats");
18
13
  const timestamp_1 = require("../../../util/timestamp");
19
14
  const url_1 = require("../../../util/url");
20
- exports.CACHE_REVISION = 1;
21
15
  const SHORT_REPO_REGEX = (0, regex_1.regEx)(/^((?<platform>bitbucket|github|gitlab):)?(?<shortRepo>[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+)$/);
22
16
  const platformMapping = {
23
17
  bitbucket: 'https://bitbucket.org/',
@@ -62,40 +56,12 @@ const PackageSource = zod_1.z
62
56
  async function getDependency(http, registryUrl, packageName) {
63
57
  logger_1.logger.trace(`npm.getDependency(${packageName})`);
64
58
  const packageUrl = (0, url_1.joinUrlParts)(registryUrl, packageName.replace('/', '%2F'));
65
- // Now check the persistent cache
66
- const cacheNamespace = 'datasource-npm:data';
67
- const cachedResult = await packageCache.get(cacheNamespace, packageUrl);
68
- if (cachedResult?.cacheData) {
69
- if (cachedResult.cacheData.revision === exports.CACHE_REVISION) {
70
- const softExpireAt = luxon_1.DateTime.fromISO(cachedResult.cacheData.softExpireAt);
71
- if (softExpireAt.isValid && softExpireAt > luxon_1.DateTime.local()) {
72
- logger_1.logger.trace('Cached result is not expired - reusing');
73
- stats_1.HttpCacheStats.incLocalHits(packageUrl);
74
- delete cachedResult.cacheData;
75
- return cachedResult;
76
- }
77
- logger_1.logger.trace('Cached result is soft expired');
78
- stats_1.HttpCacheStats.incLocalMisses(packageUrl);
79
- }
80
- else {
81
- logger_1.logger.trace(`Package cache for npm package "${packageName}" is from an old revision - discarding`);
82
- delete cachedResult.cacheData;
83
- }
84
- }
85
- const cacheMinutes = 15;
86
- const softExpireAt = luxon_1.DateTime.local().plus({ minutes: cacheMinutes }).toISO();
87
- let cacheHardTtlMinutes = global_1.GlobalConfig.get('cacheHardTtlMinutes');
88
- if (!(is_1.default.number(cacheHardTtlMinutes) &&
89
- /* istanbul ignore next: needs test */ cacheHardTtlMinutes > cacheMinutes)) {
90
- cacheHardTtlMinutes = cacheMinutes;
91
- }
92
- const uri = node_url_1.default.parse(packageUrl);
93
59
  try {
94
- const options = {};
95
- if (cachedResult?.cacheData?.etag) {
96
- logger_1.logger.trace({ packageName }, 'Using cached etag');
97
- options.headers = { 'If-None-Match': cachedResult.cacheData.etag };
98
- }
60
+ const cacheProvider = new package_http_cache_provider_1.PackageHttpCacheProvider({
61
+ namespace: 'datasource-npm:cache-provider',
62
+ checkAuthorizationHeader: false,
63
+ });
64
+ const options = { cacheProvider };
99
65
  // set abortOnError for registry.npmjs.org if no hostRule with explicit abortOnError exists
100
66
  if (registryUrl === 'https://registry.npmjs.org' &&
101
67
  hostRules.find({ url: 'https://registry.npmjs.org' })?.abortOnError ===
@@ -106,18 +72,8 @@ async function getDependency(http, registryUrl, packageName) {
106
72
  abortOnError: true,
107
73
  });
108
74
  }
109
- const raw = await http.getJsonUnchecked(packageUrl, options);
110
- if (cachedResult?.cacheData && raw.statusCode === 304) {
111
- logger_1.logger.trace(`Cached npm result for ${packageName} is revalidated`);
112
- stats_1.HttpCacheStats.incRemoteHits(packageUrl);
113
- cachedResult.cacheData.softExpireAt = softExpireAt;
114
- await packageCache.set(cacheNamespace, packageUrl, cachedResult, cacheHardTtlMinutes);
115
- delete cachedResult.cacheData;
116
- return cachedResult;
117
- }
118
- stats_1.HttpCacheStats.incRemoteMisses(packageUrl);
119
- const etag = raw.headers.etag;
120
- const res = raw.body;
75
+ const resp = await http.getJsonUnchecked(packageUrl, options);
76
+ const { body: res } = resp;
121
77
  if (!res.versions || !Object.keys(res.versions).length) {
122
78
  // Registry returned a 200 OK but with no versions
123
79
  logger_1.logger.debug(`No versions returned for npm dependency ${packageName}`);
@@ -174,19 +130,14 @@ async function getDependency(http, registryUrl, packageName) {
174
130
  }
175
131
  return release;
176
132
  });
177
- logger_1.logger.trace({ dep }, 'dep');
178
- const cacheControl = raw.headers?.['cache-control'];
179
- if (is_1.default.nonEmptyString(cacheControl) &&
180
- (0, regex_1.regEx)(/(^|,)\s*public\s*(,|$)/).test(cacheControl)) {
181
- dep.isPrivate = false;
182
- const cacheData = { revision: exports.CACHE_REVISION, softExpireAt, etag };
183
- await packageCache.set(cacheNamespace, packageUrl, { ...dep, cacheData }, etag
184
- ? /* istanbul ignore next: needs test */ cacheHardTtlMinutes
185
- : cacheMinutes);
186
- }
187
- else {
133
+ const isPublic = resp.headers?.['cache-control']
134
+ ?.toLocaleLowerCase()
135
+ ?.split((0, regex_1.regEx)(/\s*,\s*/))
136
+ ?.includes('public');
137
+ if (!isPublic) {
188
138
  dep.isPrivate = true;
189
139
  }
140
+ logger_1.logger.trace({ dep }, 'dep');
190
141
  return dep;
191
142
  }
192
143
  catch (err) {
@@ -199,11 +150,6 @@ async function getDependency(http, registryUrl, packageName) {
199
150
  return null;
200
151
  }
201
152
  if (err instanceof external_host_error_1.ExternalHostError) {
202
- if (cachedResult) {
203
- logger_1.logger.warn({ err, host: uri.host }, `npm host error, reusing expired cached result instead`);
204
- delete cachedResult.cacheData;
205
- return cachedResult;
206
- }
207
153
  if (actualError.name === 'ParseError' && actualError.body) {
208
154
  actualError.body = 'err.body deleted by Renovate';
209
155
  err.err = actualError;
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/npm/get.ts"],"names":[],"mappings":";;;AA0EA,sCA6MC;;AAvRD,gEAA2B;AAC3B,kEAAkC;AAClC,iCAAiC;AACjC,6BAAwB;AACxB,mDAAsD;AACtD,sEAAkE;AAClE,4CAAyC;AACzC,mFAA8E;AAC9E,kFAA4D;AAC5D,4EAAsD;AAGtD,+CAA4C;AAC5C,+CAAqD;AACrD,uDAAsD;AACtD,2CAAiD;AAIpC,QAAA,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,gBAAgB,GAAG,IAAA,aAAK,EAC5B,0FAA0F,CAC3F,CAAC;AAEF,MAAM,eAAe,GAA2B;IAC9C,SAAS,EAAE,wBAAwB;IACnC,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,qBAAqB;CAC9B,CAAC;AAOF,MAAM,aAAa,GAAG,OAAC;KACpB,KAAK,CAAC;IACL,OAAC;SACE,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,SAAS,CAAC,CAAC,UAAU,EAAiB,EAAE;QACvC,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;YACvB,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;YAC7D,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,UAAU,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IACxC,CAAC,CAAC;IACJ,OAAC;SACE,MAAM,CAAC;QACN,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;QACpC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;KAC3C,CAAC;SACD,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;QAChC,MAAM,GAAG,GAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAEtE,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;CACL,CAAC;KACD,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9C,KAAK,UAAU,aAAa,CACjC,IAAU,EACV,WAAmB,EACnB,WAAmB;IAEnB,eAAM,CAAC,KAAK,CAAC,qBAAqB,WAAW,GAAG,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,IAAA,kBAAY,EAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAE9E,iCAAiC;IACjC,MAAM,cAAc,GAAG,qBAAqB,CAAC;IAC7C,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,GAAG,CACzC,cAAc,EACd,UAAU,CACX,CAAC;IACF,IAAI,YAAY,EAAE,SAAS,EAAE,CAAC;QAC5B,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,KAAK,sBAAc,EAAE,CAAC;YACvD,MAAM,YAAY,GAAG,gBAAQ,CAAC,OAAO,CACnC,YAAY,CAAC,SAAS,CAAC,YAAY,CACpC,CAAC;YACF,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,GAAG,gBAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC5D,eAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACvD,sBAAc,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBACxC,OAAO,YAAY,CAAC,SAAS,CAAC;gBAC9B,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,eAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC9C,sBAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,KAAK,CACV,kCAAkC,WAAW,wCAAwC,CACtF,CAAC;YACF,OAAO,YAAY,CAAC,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IACD,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,YAAY,GAAG,gBAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9E,IAAI,mBAAmB,GAAG,qBAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClE,IACE,CAAC,CACC,YAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9B,sCAAsC,CAAC,mBAAmB,GAAG,YAAY,CAC1E,EACD,CAAC;QACD,mBAAmB,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,MAAM,GAAG,GAAG,kBAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,IAAI,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAClC,eAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,mBAAmB,CAAC,CAAC;YACnD,OAAO,CAAC,OAAO,GAAG,EAAE,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACrE,CAAC;QAED,2FAA2F;QAC3F,IACE,WAAW,KAAK,4BAA4B;YAC5C,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,4BAA4B,EAAE,CAAC,EAAE,YAAY;gBACjE,SAAS,EACX,CAAC;YACD,eAAM,CAAC,KAAK,CACV,EAAE,WAAW,EAAE,QAAQ,EAAE,4BAA4B,EAAE,EACvD,mDAAmD,CACpD,CAAC;YACF,SAAS,CAAC,GAAG,CAAC;gBACZ,SAAS,EAAE,4BAA4B;gBACvC,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAc,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,YAAY,EAAE,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YACtD,eAAM,CAAC,KAAK,CAAC,yBAAyB,WAAW,iBAAiB,CAAC,CAAC;YACpE,sBAAc,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACzC,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;YACnD,MAAM,YAAY,CAAC,GAAG,CACpB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,mBAAmB,CACpB,CAAC;YACF,OAAO,YAAY,CAAC,SAAS,CAAC;YAC9B,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,sBAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;YACvD,kDAAkD;YAClD,eAAM,CAAC,KAAK,CAAC,2CAA2C,WAAW,EAAE,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC,UAAU,KAAK,aAAa,EAAE,UAAU,CAAC;QAC7C,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,QAAQ,CAAC;QAEzC,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3E,iDAAiD;QACjD,MAAM,GAAG,GAAkB;YACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC;YACtB,WAAW;SACZ,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC;QACxC,CAAC;QAED,IAAI,aAAa,EAAE,UAAU,EAAE,CAAC;YAC9B,GAAG,CAAC,kBAAkB,GAAG,iBAAiB,WAAW,4CAA4C,WAAW,iDAAiD,aAAa,CAAC,UAAU,wLAAwL,CAAC;QAChX,CAAC;QACD,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,OAAO,GAAY;gBACvB,OAAO;gBACP,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO;gBACvC,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY;gBAClD,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,eAAe;aACzD,CAAC;YACF,MAAM,gBAAgB,GAAG,IAAA,uBAAW,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1D,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAC9C,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;gBACvC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC;YAC7D,IAAI,YAAE,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;YACnD,CAAC;YACD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC3D,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YACvC,CAAC;YACD,IACE,MAAM,CAAC,eAAe;gBACtB,MAAM,CAAC,eAAe,KAAK,GAAG,CAAC,eAAe,EAC9C,CAAC;gBACD,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;YACnD,CAAC;YACD,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;gBAC3B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;QACpD,IACE,YAAE,CAAC,cAAc,CAAC,YAAY,CAAC;YAC/B,IAAA,aAAK,EAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAClD,CAAC;YACD,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,sBAAc,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YACnE,MAAM,YAAY,CAAC,GAAG,CACpB,cAAc,EACd,UAAU,EACV,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,EACrB,IAAI;gBACF,CAAC,CAAC,sCAAsC,CAAC,mBAAmB;gBAC5D,CAAC,CAAC,YAAY,CACjB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,GAAG,YAAY,uCAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACrE,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,oBAAoB,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,IACE,WAAW,CAAC,OAAO,KAAK,8BAAa;YACrC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC;YACnD,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAC/C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,YAAY,uCAAiB,EAAE,CAAC;YACrC,IAAI,YAAY,EAAE,CAAC;gBACjB,eAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EACvB,uDAAuD,CACxD,CAAC;gBACF,OAAO,YAAY,CAAC,SAAS,CAAC;gBAC9B,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC1D,WAAW,CAAC,IAAI,GAAG,8BAA8B,CAAC;gBAClD,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC;YACxB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import url from 'node:url';\nimport is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { z } from 'zod';\nimport { GlobalConfig } from '../../../config/global';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport * as packageCache from '../../../util/cache/package';\nimport * as hostRules from '../../../util/host-rules';\nimport type { Http } from '../../../util/http';\nimport type { HttpOptions } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { HttpCacheStats } from '../../../util/stats';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport type { Release, ReleaseResult } from '../types';\nimport type { CachedReleaseResult, NpmResponse } from './types';\n\nexport const CACHE_REVISION = 1;\n\nconst SHORT_REPO_REGEX = regEx(\n /^((?<platform>bitbucket|github|gitlab):)?(?<shortRepo>[A-Za-z0-9_.-]+\\/[A-Za-z0-9_.-]+)$/,\n);\n\nconst platformMapping: Record<string, string> = {\n bitbucket: 'https://bitbucket.org/',\n github: 'https://github.com/',\n gitlab: 'https://gitlab.com/',\n};\n\ninterface PackageSource {\n sourceUrl: string | null;\n sourceDirectory: string | null;\n}\n\nconst PackageSource = z\n .union([\n z\n .string()\n .nonempty()\n .transform((repository): PackageSource => {\n let sourceUrl: string | null = null;\n const sourceDirectory = null;\n const shortMatch = repository.match(SHORT_REPO_REGEX);\n if (shortMatch?.groups) {\n const { platform = 'github', shortRepo } = shortMatch.groups;\n sourceUrl = platformMapping[platform] + shortRepo;\n } else {\n sourceUrl = repository;\n }\n return { sourceUrl, sourceDirectory };\n }),\n z\n .object({\n url: z.string().nonempty().nullish(),\n directory: z.string().nonempty().nullish(),\n })\n .transform(({ url, directory }) => {\n const res: PackageSource = { sourceUrl: null, sourceDirectory: null };\n\n if (url) {\n res.sourceUrl = url;\n }\n\n if (directory) {\n res.sourceDirectory = directory;\n }\n\n return res;\n }),\n ])\n .catch({ sourceUrl: null, sourceDirectory: null });\n\nexport async function getDependency(\n http: Http,\n registryUrl: string,\n packageName: string,\n): Promise<ReleaseResult | null> {\n logger.trace(`npm.getDependency(${packageName})`);\n\n const packageUrl = joinUrlParts(registryUrl, packageName.replace('/', '%2F'));\n\n // Now check the persistent cache\n const cacheNamespace = 'datasource-npm:data';\n const cachedResult = await packageCache.get<CachedReleaseResult>(\n cacheNamespace,\n packageUrl,\n );\n if (cachedResult?.cacheData) {\n if (cachedResult.cacheData.revision === CACHE_REVISION) {\n const softExpireAt = DateTime.fromISO(\n cachedResult.cacheData.softExpireAt,\n );\n if (softExpireAt.isValid && softExpireAt > DateTime.local()) {\n logger.trace('Cached result is not expired - reusing');\n HttpCacheStats.incLocalHits(packageUrl);\n delete cachedResult.cacheData;\n return cachedResult;\n }\n\n logger.trace('Cached result is soft expired');\n HttpCacheStats.incLocalMisses(packageUrl);\n } else {\n logger.trace(\n `Package cache for npm package \"${packageName}\" is from an old revision - discarding`,\n );\n delete cachedResult.cacheData;\n }\n }\n const cacheMinutes = 15;\n const softExpireAt = DateTime.local().plus({ minutes: cacheMinutes }).toISO();\n let cacheHardTtlMinutes = GlobalConfig.get('cacheHardTtlMinutes');\n if (\n !(\n is.number(cacheHardTtlMinutes) &&\n /* istanbul ignore next: needs test */ cacheHardTtlMinutes > cacheMinutes\n )\n ) {\n cacheHardTtlMinutes = cacheMinutes;\n }\n\n const uri = url.parse(packageUrl);\n\n try {\n const options: HttpOptions = {};\n if (cachedResult?.cacheData?.etag) {\n logger.trace({ packageName }, 'Using cached etag');\n options.headers = { 'If-None-Match': cachedResult.cacheData.etag };\n }\n\n // set abortOnError for registry.npmjs.org if no hostRule with explicit abortOnError exists\n if (\n registryUrl === 'https://registry.npmjs.org' &&\n hostRules.find({ url: 'https://registry.npmjs.org' })?.abortOnError ===\n undefined\n ) {\n logger.trace(\n { packageName, registry: 'https://registry.npmjs.org' },\n 'setting abortOnError hostRule for well known host',\n );\n hostRules.add({\n matchHost: 'https://registry.npmjs.org',\n abortOnError: true,\n });\n }\n\n const raw = await http.getJsonUnchecked<NpmResponse>(packageUrl, options);\n if (cachedResult?.cacheData && raw.statusCode === 304) {\n logger.trace(`Cached npm result for ${packageName} is revalidated`);\n HttpCacheStats.incRemoteHits(packageUrl);\n cachedResult.cacheData.softExpireAt = softExpireAt;\n await packageCache.set(\n cacheNamespace,\n packageUrl,\n cachedResult,\n cacheHardTtlMinutes,\n );\n delete cachedResult.cacheData;\n return cachedResult;\n }\n HttpCacheStats.incRemoteMisses(packageUrl);\n const etag = raw.headers.etag;\n const res = raw.body;\n if (!res.versions || !Object.keys(res.versions).length) {\n // Registry returned a 200 OK but with no versions\n logger.debug(`No versions returned for npm dependency ${packageName}`);\n return null;\n }\n\n const latestVersion = res.versions[res['dist-tags']?.latest ?? ''];\n res.repository ??= latestVersion?.repository;\n res.homepage ??= latestVersion?.homepage;\n\n const { sourceUrl, sourceDirectory } = PackageSource.parse(res.repository);\n\n // Simplify response before caching and returning\n const dep: ReleaseResult = {\n homepage: res.homepage,\n releases: [],\n tags: res['dist-tags'],\n registryUrl,\n };\n\n if (sourceUrl) {\n dep.sourceUrl = sourceUrl;\n }\n\n if (sourceDirectory) {\n dep.sourceDirectory = sourceDirectory;\n }\n\n if (latestVersion?.deprecated) {\n dep.deprecationMessage = `On registry \\`${registryUrl}\\`, the \"latest\" version of dependency \\`${packageName}\\` has the following deprecation notice:\\n\\n\\`${latestVersion.deprecated}\\`\\n\\nMarking the latest version of an npm package as deprecated results in the entire package being considered deprecated, so contact the package author you think this is a mistake.`;\n }\n dep.releases = Object.keys(res.versions).map((version) => {\n const release: Release = {\n version,\n gitRef: res.versions?.[version].gitHead,\n dependencies: res.versions?.[version].dependencies,\n devDependencies: res.versions?.[version].devDependencies,\n };\n const releaseTimestamp = asTimestamp(res.time?.[version]);\n if (releaseTimestamp) {\n release.releaseTimestamp = releaseTimestamp;\n }\n if (res.versions?.[version].deprecated) {\n release.isDeprecated = true;\n }\n const nodeConstraint = res.versions?.[version].engines?.node;\n if (is.nonEmptyString(nodeConstraint)) {\n release.constraints = { node: [nodeConstraint] };\n }\n const source = PackageSource.parse(res.versions?.[version].repository);\n if (source.sourceUrl && source.sourceUrl !== dep.sourceUrl) {\n release.sourceUrl = source.sourceUrl;\n }\n if (\n source.sourceDirectory &&\n source.sourceDirectory !== dep.sourceDirectory\n ) {\n release.sourceDirectory = source.sourceDirectory;\n }\n if (dep.deprecationMessage) {\n release.isDeprecated = true;\n }\n return release;\n });\n logger.trace({ dep }, 'dep');\n const cacheControl = raw.headers?.['cache-control'];\n if (\n is.nonEmptyString(cacheControl) &&\n regEx(/(^|,)\\s*public\\s*(,|$)/).test(cacheControl)\n ) {\n dep.isPrivate = false;\n const cacheData = { revision: CACHE_REVISION, softExpireAt, etag };\n await packageCache.set(\n cacheNamespace,\n packageUrl,\n { ...dep, cacheData },\n etag\n ? /* istanbul ignore next: needs test */ cacheHardTtlMinutes\n : cacheMinutes,\n );\n } else {\n dep.isPrivate = true;\n }\n return dep;\n } catch (err) {\n const actualError = err instanceof ExternalHostError ? err.err : err;\n const ignoredStatusCodes = [401, 402, 403, 404];\n const ignoredResponseCodes = ['ENOTFOUND'];\n if (\n actualError.message === HOST_DISABLED ||\n ignoredStatusCodes.includes(actualError.statusCode) ||\n ignoredResponseCodes.includes(actualError.code)\n ) {\n return null;\n }\n\n if (err instanceof ExternalHostError) {\n if (cachedResult) {\n logger.warn(\n { err, host: uri.host },\n `npm host error, reusing expired cached result instead`,\n );\n delete cachedResult.cacheData;\n return cachedResult;\n }\n\n if (actualError.name === 'ParseError' && actualError.body) {\n actualError.body = 'err.body deleted by Renovate';\n err.err = actualError;\n }\n throw err;\n }\n logger.debug({ err }, 'Unknown npm lookup error');\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/npm/get.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { z } from 'zod';\nimport { HOST_DISABLED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport * as hostRules from '../../../util/host-rules';\nimport type { Http } from '../../../util/http';\nimport { PackageHttpCacheProvider } from '../../../util/http/cache/package-http-cache-provider';\nimport type { HttpOptions } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport type { Release, ReleaseResult } from '../types';\nimport type { NpmResponse } from './types';\n\nconst SHORT_REPO_REGEX = regEx(\n /^((?<platform>bitbucket|github|gitlab):)?(?<shortRepo>[A-Za-z0-9_.-]+\\/[A-Za-z0-9_.-]+)$/,\n);\n\nconst platformMapping: Record<string, string> = {\n bitbucket: 'https://bitbucket.org/',\n github: 'https://github.com/',\n gitlab: 'https://gitlab.com/',\n};\n\ninterface PackageSource {\n sourceUrl: string | null;\n sourceDirectory: string | null;\n}\n\nconst PackageSource = z\n .union([\n z\n .string()\n .nonempty()\n .transform((repository): PackageSource => {\n let sourceUrl: string | null = null;\n const sourceDirectory = null;\n const shortMatch = repository.match(SHORT_REPO_REGEX);\n if (shortMatch?.groups) {\n const { platform = 'github', shortRepo } = shortMatch.groups;\n sourceUrl = platformMapping[platform] + shortRepo;\n } else {\n sourceUrl = repository;\n }\n return { sourceUrl, sourceDirectory };\n }),\n z\n .object({\n url: z.string().nonempty().nullish(),\n directory: z.string().nonempty().nullish(),\n })\n .transform(({ url, directory }) => {\n const res: PackageSource = { sourceUrl: null, sourceDirectory: null };\n\n if (url) {\n res.sourceUrl = url;\n }\n\n if (directory) {\n res.sourceDirectory = directory;\n }\n\n return res;\n }),\n ])\n .catch({ sourceUrl: null, sourceDirectory: null });\n\nexport async function getDependency(\n http: Http,\n registryUrl: string,\n packageName: string,\n): Promise<ReleaseResult | null> {\n logger.trace(`npm.getDependency(${packageName})`);\n\n const packageUrl = joinUrlParts(registryUrl, packageName.replace('/', '%2F'));\n\n try {\n const cacheProvider = new PackageHttpCacheProvider({\n namespace: 'datasource-npm:cache-provider',\n checkAuthorizationHeader: false,\n });\n const options: HttpOptions = { cacheProvider };\n\n // set abortOnError for registry.npmjs.org if no hostRule with explicit abortOnError exists\n if (\n registryUrl === 'https://registry.npmjs.org' &&\n hostRules.find({ url: 'https://registry.npmjs.org' })?.abortOnError ===\n undefined\n ) {\n logger.trace(\n { packageName, registry: 'https://registry.npmjs.org' },\n 'setting abortOnError hostRule for well known host',\n );\n hostRules.add({\n matchHost: 'https://registry.npmjs.org',\n abortOnError: true,\n });\n }\n\n const resp = await http.getJsonUnchecked<NpmResponse>(packageUrl, options);\n const { body: res } = resp;\n if (!res.versions || !Object.keys(res.versions).length) {\n // Registry returned a 200 OK but with no versions\n logger.debug(`No versions returned for npm dependency ${packageName}`);\n return null;\n }\n\n const latestVersion = res.versions[res['dist-tags']?.latest ?? ''];\n res.repository ??= latestVersion?.repository;\n res.homepage ??= latestVersion?.homepage;\n\n const { sourceUrl, sourceDirectory } = PackageSource.parse(res.repository);\n\n // Simplify response before caching and returning\n const dep: ReleaseResult = {\n homepage: res.homepage,\n releases: [],\n tags: res['dist-tags'],\n registryUrl,\n };\n\n if (sourceUrl) {\n dep.sourceUrl = sourceUrl;\n }\n\n if (sourceDirectory) {\n dep.sourceDirectory = sourceDirectory;\n }\n\n if (latestVersion?.deprecated) {\n dep.deprecationMessage = `On registry \\`${registryUrl}\\`, the \"latest\" version of dependency \\`${packageName}\\` has the following deprecation notice:\\n\\n\\`${latestVersion.deprecated}\\`\\n\\nMarking the latest version of an npm package as deprecated results in the entire package being considered deprecated, so contact the package author you think this is a mistake.`;\n }\n dep.releases = Object.keys(res.versions).map((version) => {\n const release: Release = {\n version,\n gitRef: res.versions?.[version].gitHead,\n dependencies: res.versions?.[version].dependencies,\n devDependencies: res.versions?.[version].devDependencies,\n };\n const releaseTimestamp = asTimestamp(res.time?.[version]);\n if (releaseTimestamp) {\n release.releaseTimestamp = releaseTimestamp;\n }\n if (res.versions?.[version].deprecated) {\n release.isDeprecated = true;\n }\n const nodeConstraint = res.versions?.[version].engines?.node;\n if (is.nonEmptyString(nodeConstraint)) {\n release.constraints = { node: [nodeConstraint] };\n }\n const source = PackageSource.parse(res.versions?.[version].repository);\n if (source.sourceUrl && source.sourceUrl !== dep.sourceUrl) {\n release.sourceUrl = source.sourceUrl;\n }\n if (\n source.sourceDirectory &&\n source.sourceDirectory !== dep.sourceDirectory\n ) {\n release.sourceDirectory = source.sourceDirectory;\n }\n if (dep.deprecationMessage) {\n release.isDeprecated = true;\n }\n return release;\n });\n\n const isPublic = resp.headers?.['cache-control']\n ?.toLocaleLowerCase()\n ?.split(regEx(/\\s*,\\s*/))\n ?.includes('public');\n if (!isPublic) {\n dep.isPrivate = true;\n }\n\n logger.trace({ dep }, 'dep');\n return dep;\n } catch (err) {\n const actualError = err instanceof ExternalHostError ? err.err : err;\n const ignoredStatusCodes = [401, 402, 403, 404];\n const ignoredResponseCodes = ['ENOTFOUND'];\n if (\n actualError.message === HOST_DISABLED ||\n ignoredStatusCodes.includes(actualError.statusCode) ||\n ignoredResponseCodes.includes(actualError.code)\n ) {\n return null;\n }\n\n if (err instanceof ExternalHostError) {\n if (actualError.name === 'ParseError' && actualError.body) {\n actualError.body = 'err.body deleted by Renovate';\n err.err = actualError;\n }\n throw err;\n }\n logger.debug({ err }, 'Unknown npm lookup error');\n return null;\n }\n}\n"]}
@@ -22,7 +22,7 @@ class NpmDatasource extends datasource_1.Datasource {
22
22
  super(NpmDatasource.id);
23
23
  }
24
24
  async getReleases({ packageName, registryUrl, }) {
25
- // istanbul ignore if
25
+ /* v8 ignore next 3 -- should never happen */
26
26
  if (!registryUrl) {
27
27
  return null;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/npm/index.ts"],"names":[],"mappings":";;;;AAAA,4EAAsD;AACtD,8CAA2C;AAE3C,qCAAwE;AACxE,+BAAsC;AAEtC,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AAEjB,MAAa,aAAc,SAAQ,uBAAU;IAC3C,MAAM,CAAU,EAAE,GAAG,KAAK,CAAC;IAET,qBAAqB,GAAG,IAAI,CAAC;IAE7B,gBAAgB,GAAG,OAAO,CAAC;IAE3B,iBAAiB,GAAG,aAAa,CAAC,EAAE,CAAC;IAErC,mBAAmB,GAAG,4BAAqB,CAAC;IAE5C,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,2EAA2E,CAAC;IAC5D,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,0EAA0E,CAAC;IAE7E;QACE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,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,GAAG,GAAG,MAAM,IAAA,mBAAa,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC;IACb,CAAC;;AAjCH,sCAkCC","sourcesContent":["import * as npmVersioning from '../../versioning/npm';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { defaultRegistryUrls as npmDefaultRegistryUrl } from './common';\nimport { getDependency } from './get';\n\nexport { setNpmrc } from './npmrc';\n\nexport class NpmDatasource extends Datasource {\n static readonly id = 'npm';\n\n override readonly customRegistrySupport = true;\n\n override readonly registryStrategy = 'first';\n\n override readonly defaultVersioning = npmVersioning.id;\n\n override readonly defaultRegistryUrls = npmDefaultRegistryUrl;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `time` field in the results.';\n override readonly sourceUrlSupport = 'release';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `repository` field in the results.';\n\n constructor() {\n super(NpmDatasource.id);\n }\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n\n const res = await getDependency(this.http, registryUrl, packageName);\n return res;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/npm/index.ts"],"names":[],"mappings":";;;;AAAA,4EAAsD;AACtD,8CAA2C;AAE3C,qCAAwE;AACxE,+BAAsC;AAEtC,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AAEjB,MAAa,aAAc,SAAQ,uBAAU;IAC3C,MAAM,CAAU,EAAE,GAAG,KAAK,CAAC;IAET,qBAAqB,GAAG,IAAI,CAAC;IAE7B,gBAAgB,GAAG,OAAO,CAAC;IAE3B,iBAAiB,GAAG,aAAa,CAAC,EAAE,CAAC;IAErC,mBAAmB,GAAG,4BAAqB,CAAC;IAE5C,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,2EAA2E,CAAC;IAC5D,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,0EAA0E,CAAC;IAE7E;QACE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,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,GAAG,GAAG,MAAM,IAAA,mBAAa,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC;IACb,CAAC;;AAjCH,sCAkCC","sourcesContent":["import * as npmVersioning from '../../versioning/npm';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { defaultRegistryUrls as npmDefaultRegistryUrl } from './common';\nimport { getDependency } from './get';\n\nexport { setNpmrc } from './npmrc';\n\nexport class NpmDatasource extends Datasource {\n static readonly id = 'npm';\n\n override readonly customRegistrySupport = true;\n\n override readonly registryStrategy = 'first';\n\n override readonly defaultVersioning = npmVersioning.id;\n\n override readonly defaultRegistryUrls = npmDefaultRegistryUrl;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `time` field in the results.';\n override readonly sourceUrlSupport = 'release';\n override readonly sourceUrlNote =\n 'The source URL is determined from the `repository` field in the results.';\n\n constructor() {\n super(NpmDatasource.id);\n }\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n const res = await getDependency(this.http, registryUrl, packageName);\n return res;\n }\n}\n"]}
@@ -20,7 +20,7 @@ let npmrc = {};
20
20
  let npmrcRaw = '';
21
21
  let packageRules = [];
22
22
  function envReplace(value, env = process.env) {
23
- // istanbul ignore if
23
+ /* v8 ignore next 3 -- TODO: add test */
24
24
  if (!is_1.default.string(value)) {
25
25
  return value;
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/npm/npmrc.ts"],"names":[],"mappings":"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","sourcesContent":["import url from 'node:url';\nimport is from '@sindresorhus/is';\nimport ini from 'ini';\nimport { GlobalConfig } from '../../../config/global';\nimport type { PackageRule } from '../../../config/types';\nimport { logger } from '../../../logger';\nimport type { HostRule } from '../../../types';\nimport * as hostRules from '../../../util/host-rules';\nimport { regEx } from '../../../util/regex';\nimport { fromBase64 } from '../../../util/string';\nimport { ensureTrailingSlash, isHttpUrl } from '../../../util/url';\nimport { defaultRegistryUrls } from './common';\nimport type { NpmrcRules } from './types';\n\nlet npmrc: Record<string, any> = {};\nlet npmrcRaw = '';\nlet packageRules: PackageRule[] = [];\n\nfunction envReplace(value: any, env = process.env): any {\n // istanbul ignore if\n if (!is.string(value)) {\n return value;\n }\n\n const ENV_EXPR = regEx(/(\\\\*)\\$\\{([^}]+)\\}/g);\n\n return value.replace(ENV_EXPR, (match, _esc, envVarName) => {\n if (env[envVarName] === undefined) {\n logger.warn({ match }, 'Failed to replace env in config');\n throw new Error('env-replace');\n }\n return env[envVarName];\n });\n}\n\nexport function getMatchHostFromNpmrcHost(input: string): string {\n if (input.startsWith('//')) {\n const matchHost = input.replace('//', '');\n if (matchHost.includes('/')) {\n return 'https://' + matchHost;\n }\n return matchHost;\n }\n return input;\n}\n\nexport function convertNpmrcToRules(npmrc: Record<string, any>): NpmrcRules {\n const rules: NpmrcRules = {\n hostRules: [],\n packageRules: [],\n };\n // Generate hostRules\n const hostType = 'npm';\n const hosts: Record<string, HostRule> = {};\n for (const [key, value] of Object.entries(npmrc)) {\n if (!is.nonEmptyString(value)) {\n continue;\n }\n const keyParts = key.split(':');\n const keyType = keyParts.pop();\n let matchHost = '';\n if (keyParts.length) {\n matchHost = getMatchHostFromNpmrcHost(keyParts.join(':'));\n }\n const rule: HostRule = hosts[matchHost] || {};\n if (keyType === '_authToken' || keyType === '_auth') {\n rule.token = value;\n if (keyType === '_auth') {\n rule.authType = 'Basic';\n }\n } else if (keyType === 'username') {\n rule.username = value;\n } else if (keyType === '_password') {\n rule.password = fromBase64(value);\n } else {\n continue; // don't add the rule\n }\n hosts[matchHost] = rule;\n }\n for (const [matchHost, rule] of Object.entries(hosts)) {\n const hostRule = { ...rule, hostType };\n if (matchHost) {\n hostRule.matchHost = matchHost;\n }\n rules.hostRules?.push(hostRule);\n }\n // Generate packageRules\n const matchDatasources = ['npm'];\n const { registry } = npmrc;\n // packageRules order matters, so look for a default registry first\n if (is.nonEmptyString(registry)) {\n if (isHttpUrl(registry)) {\n // Default registry\n rules.packageRules?.push({\n matchDatasources,\n registryUrls: [registry],\n });\n } else {\n logger.warn({ registry }, 'Invalid npmrc registry= URL');\n }\n }\n // Now look for scoped registries\n for (const [key, value] of Object.entries(npmrc)) {\n if (!is.nonEmptyString(value)) {\n continue;\n }\n const keyParts = key.split(':');\n const keyType = keyParts.pop();\n if (keyType === 'registry' && keyParts.length && is.nonEmptyString(value)) {\n const scope = keyParts.join(':');\n if (isHttpUrl(value)) {\n rules.packageRules?.push({\n matchDatasources,\n matchPackageNames: [`${scope}/**`],\n registryUrls: [value],\n });\n } else {\n logger.warn({ scope, registry: value }, 'Invalid npmrc registry= URL');\n }\n }\n }\n return rules;\n}\n\nexport function setNpmrc(input?: string): void {\n if (input) {\n if (input === npmrcRaw) {\n return;\n }\n const existingNpmrc = npmrc;\n npmrcRaw = input;\n logger.debug('Setting npmrc');\n npmrc = ini.parse(input.replace(regEx(/\\\\n/g), '\\n'));\n const exposeAllEnv = GlobalConfig.get('exposeAllEnv');\n for (const [key, val] of Object.entries(npmrc)) {\n if (\n !exposeAllEnv &&\n key.endsWith('registry') &&\n is.string(val) &&\n val.includes('localhost')\n ) {\n logger.debug(\n { key, val },\n 'Detected localhost registry - rejecting npmrc file',\n );\n npmrc = existingNpmrc;\n return;\n }\n }\n if (exposeAllEnv) {\n for (const key of Object.keys(npmrc)) {\n npmrc[key] = envReplace(npmrc[key]);\n }\n }\n const npmrcRules = convertNpmrcToRules(npmrc);\n if (npmrcRules.hostRules?.length) {\n npmrcRules.hostRules.forEach((hostRule) => hostRules.add(hostRule));\n }\n packageRules = npmrcRules.packageRules;\n } else if (npmrc) {\n logger.debug('Resetting npmrc');\n npmrc = {};\n npmrcRaw = '';\n packageRules = [];\n }\n}\n\nexport function resolveRegistryUrl(packageName: string): string {\n let registryUrl = defaultRegistryUrls[0];\n for (const rule of packageRules) {\n const { matchPackageNames, registryUrls } = rule;\n if (\n !matchPackageNames ||\n packageName.startsWith(matchPackageNames[0].replace(regEx(/\\*\\*$/), ''))\n ) {\n // TODO: fix types #22198\n registryUrl = registryUrls![0];\n }\n }\n return registryUrl;\n}\n\nexport function resolvePackageUrl(\n registryUrl: string,\n packageName: string,\n): string {\n return url.resolve(\n ensureTrailingSlash(registryUrl),\n encodeURIComponent(packageName).replace(regEx(/^%40/), '@'),\n );\n}\n"]}
1
+ {"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/npm/npmrc.ts"],"names":[],"mappings":"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","sourcesContent":["import url from 'node:url';\nimport is from '@sindresorhus/is';\nimport ini from 'ini';\nimport { GlobalConfig } from '../../../config/global';\nimport type { PackageRule } from '../../../config/types';\nimport { logger } from '../../../logger';\nimport type { HostRule } from '../../../types';\nimport * as hostRules from '../../../util/host-rules';\nimport { regEx } from '../../../util/regex';\nimport { fromBase64 } from '../../../util/string';\nimport { ensureTrailingSlash, isHttpUrl } from '../../../util/url';\nimport { defaultRegistryUrls } from './common';\nimport type { NpmrcRules } from './types';\n\nlet npmrc: Record<string, any> = {};\nlet npmrcRaw = '';\nlet packageRules: PackageRule[] = [];\n\nfunction envReplace(value: any, env = process.env): any {\n /* v8 ignore next 3 -- TODO: add test */\n if (!is.string(value)) {\n return value;\n }\n\n const ENV_EXPR = regEx(/(\\\\*)\\$\\{([^}]+)\\}/g);\n\n return value.replace(ENV_EXPR, (match, _esc, envVarName) => {\n if (env[envVarName] === undefined) {\n logger.warn({ match }, 'Failed to replace env in config');\n throw new Error('env-replace');\n }\n return env[envVarName];\n });\n}\n\nexport function getMatchHostFromNpmrcHost(input: string): string {\n if (input.startsWith('//')) {\n const matchHost = input.replace('//', '');\n if (matchHost.includes('/')) {\n return 'https://' + matchHost;\n }\n return matchHost;\n }\n return input;\n}\n\nexport function convertNpmrcToRules(npmrc: Record<string, any>): NpmrcRules {\n const rules: NpmrcRules = {\n hostRules: [],\n packageRules: [],\n };\n // Generate hostRules\n const hostType = 'npm';\n const hosts: Record<string, HostRule> = {};\n for (const [key, value] of Object.entries(npmrc)) {\n if (!is.nonEmptyString(value)) {\n continue;\n }\n const keyParts = key.split(':');\n const keyType = keyParts.pop();\n let matchHost = '';\n if (keyParts.length) {\n matchHost = getMatchHostFromNpmrcHost(keyParts.join(':'));\n }\n const rule: HostRule = hosts[matchHost] || {};\n if (keyType === '_authToken' || keyType === '_auth') {\n rule.token = value;\n if (keyType === '_auth') {\n rule.authType = 'Basic';\n }\n } else if (keyType === 'username') {\n rule.username = value;\n } else if (keyType === '_password') {\n rule.password = fromBase64(value);\n } else {\n continue; // don't add the rule\n }\n hosts[matchHost] = rule;\n }\n for (const [matchHost, rule] of Object.entries(hosts)) {\n const hostRule = { ...rule, hostType };\n if (matchHost) {\n hostRule.matchHost = matchHost;\n }\n rules.hostRules?.push(hostRule);\n }\n // Generate packageRules\n const matchDatasources = ['npm'];\n const { registry } = npmrc;\n // packageRules order matters, so look for a default registry first\n if (is.nonEmptyString(registry)) {\n if (isHttpUrl(registry)) {\n // Default registry\n rules.packageRules?.push({\n matchDatasources,\n registryUrls: [registry],\n });\n } else {\n logger.warn({ registry }, 'Invalid npmrc registry= URL');\n }\n }\n // Now look for scoped registries\n for (const [key, value] of Object.entries(npmrc)) {\n if (!is.nonEmptyString(value)) {\n continue;\n }\n const keyParts = key.split(':');\n const keyType = keyParts.pop();\n if (keyType === 'registry' && keyParts.length && is.nonEmptyString(value)) {\n const scope = keyParts.join(':');\n if (isHttpUrl(value)) {\n rules.packageRules?.push({\n matchDatasources,\n matchPackageNames: [`${scope}/**`],\n registryUrls: [value],\n });\n } else {\n logger.warn({ scope, registry: value }, 'Invalid npmrc registry= URL');\n }\n }\n }\n return rules;\n}\n\nexport function setNpmrc(input?: string): void {\n if (input) {\n if (input === npmrcRaw) {\n return;\n }\n const existingNpmrc = npmrc;\n npmrcRaw = input;\n logger.debug('Setting npmrc');\n npmrc = ini.parse(input.replace(regEx(/\\\\n/g), '\\n'));\n const exposeAllEnv = GlobalConfig.get('exposeAllEnv');\n for (const [key, val] of Object.entries(npmrc)) {\n if (\n !exposeAllEnv &&\n key.endsWith('registry') &&\n is.string(val) &&\n val.includes('localhost')\n ) {\n logger.debug(\n { key, val },\n 'Detected localhost registry - rejecting npmrc file',\n );\n npmrc = existingNpmrc;\n return;\n }\n }\n if (exposeAllEnv) {\n for (const key of Object.keys(npmrc)) {\n npmrc[key] = envReplace(npmrc[key]);\n }\n }\n const npmrcRules = convertNpmrcToRules(npmrc);\n if (npmrcRules.hostRules?.length) {\n npmrcRules.hostRules.forEach((hostRule) => hostRules.add(hostRule));\n }\n packageRules = npmrcRules.packageRules;\n } else if (npmrc) {\n logger.debug('Resetting npmrc');\n npmrc = {};\n npmrcRaw = '';\n packageRules = [];\n }\n}\n\nexport function resolveRegistryUrl(packageName: string): string {\n let registryUrl = defaultRegistryUrls[0];\n for (const rule of packageRules) {\n const { matchPackageNames, registryUrls } = rule;\n if (\n !matchPackageNames ||\n packageName.startsWith(matchPackageNames[0].replace(regEx(/\\*\\*$/), ''))\n ) {\n // TODO: fix types #22198\n registryUrl = registryUrls![0];\n }\n }\n return registryUrl;\n}\n\nexport function resolvePackageUrl(\n registryUrl: string,\n packageName: string,\n): string {\n return url.resolve(\n ensureTrailingSlash(registryUrl),\n encodeURIComponent(packageName).replace(regEx(/^%40/), '@'),\n );\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  import type { PackageRule } from '../../../config/types';
2
2
  import type { HostRule } from '../../../types';
3
- import type { ReleaseResult } from '../types';
4
3
  export interface NpmrcRules {
5
4
  hostRules: HostRule[];
6
5
  packageRules: PackageRule[];
@@ -29,11 +28,4 @@ export interface NpmResponse {
29
28
  time?: Record<string, string>;
30
29
  'dist-tags'?: Record<string, string>;
31
30
  }
32
- export interface CachedReleaseResult extends ReleaseResult {
33
- cacheData?: {
34
- revision?: number;
35
- etag: string | undefined;
36
- softExpireAt: string;
37
- };
38
- }
39
31
  export type Npmrc = Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/npm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { PackageRule } from '../../../config/types';\nimport type { HostRule } from '../../../types';\nimport type { ReleaseResult } from '../types';\n\nexport interface NpmrcRules {\n hostRules: HostRule[];\n packageRules: PackageRule[];\n}\n\nexport interface NpmResponseVersion {\n repository?: {\n url: string;\n directory: string;\n };\n homepage?: string;\n deprecated?: boolean;\n gitHead?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n engines?: Record<string, string>;\n}\n\nexport interface NpmResponse {\n _id: string;\n name: string;\n versions?: Record<string, NpmResponseVersion>;\n repository?: {\n url?: string;\n directory?: string;\n };\n homepage?: string;\n time?: Record<string, string>;\n 'dist-tags'?: Record<string, string>;\n}\n\nexport interface CachedReleaseResult extends ReleaseResult {\n cacheData?: {\n revision?: number;\n etag: string | undefined;\n softExpireAt: string;\n };\n}\n\nexport type Npmrc = Record<string, any>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/npm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { PackageRule } from '../../../config/types';\nimport type { HostRule } from '../../../types';\n\nexport interface NpmrcRules {\n hostRules: HostRule[];\n packageRules: PackageRule[];\n}\n\nexport interface NpmResponseVersion {\n repository?: {\n url: string;\n directory: string;\n };\n homepage?: string;\n deprecated?: boolean;\n gitHead?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n engines?: Record<string, string>;\n}\n\nexport interface NpmResponse {\n _id: string;\n name: string;\n versions?: Record<string, NpmResponseVersion>;\n repository?: {\n url?: string;\n directory?: string;\n };\n homepage?: string;\n time?: Record<string, string>;\n 'dist-tags'?: Record<string, string>;\n}\n\nexport type Npmrc = Record<string, any>;\n"]}
@@ -26,7 +26,7 @@ class NugetDatasource extends datasource_1.Datasource {
26
26
  }
27
27
  async getReleases({ packageName, registryUrl, }) {
28
28
  logger_1.logger.trace(`nuget.getReleases(${packageName})`);
29
- // istanbul ignore if
29
+ /* v8 ignore next 3 -- should never happen */
30
30
  if (!registryUrl) {
31
31
  return null;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/nuget/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,gFAA0D;AAC1D,8CAA2C;AAE3C,qCAA4C;AAC5C,6BAAkC;AAClC,6BAAkC;AAElC,uEAAuE;AAC1D,QAAA,QAAQ,GAAG,qCAAqC,CAAC;AAE9D,MAAa,eAAgB,SAAQ,uBAAU;IAC7C,MAAM,CAAU,EAAE,GAAG,OAAO,CAAC;IAEX,mBAAmB,GAAG,CAAC,gBAAQ,CAAC,CAAC;IAEjC,iBAAiB,GAAG,eAAe,CAAC,EAAE,CAAC;IAEvC,gBAAgB,GAAG,OAAO,CAAC;IAE3B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,mLAAmL,CAAC;IACpK,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,oLAAoL,CAAC;IAE9K,KAAK,GAAG,IAAI,eAAU,EAAE,CAAC;IAEzB,KAAK,GAAG,IAAI,eAAU,EAAE,CAAC;IAElC;QACE,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,eAAM,CAAC,KAAK,CAAC,qBAAqB,WAAW,GAAG,CAAC,CAAC;QAClD,qBAAqB;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAA,yBAAgB,EAAC,WAAW,CAAC,CAAC;QACnE,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAC3B,IAAI,CAAC,IAAI,EACT,OAAO,EACP,QAAQ,EACR,WAAW,CACZ,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AAjDH,0CAkDC","sourcesContent":["import { logger } from '../../../logger';\nimport * as nugetVersioning from '../../versioning/nuget';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { parseRegistryUrl } from './common';\nimport { NugetV2Api } from './v2';\nimport { NugetV3Api } from './v3';\n\n// https://api.nuget.org/v3/index.json is a default official nuget feed\nexport const nugetOrg = 'https://api.nuget.org/v3/index.json';\n\nexport class NugetDatasource extends Datasource {\n static readonly id = 'nuget';\n\n override readonly defaultRegistryUrls = [nugetOrg];\n\n override readonly defaultVersioning = nugetVersioning.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'For the v2 API, the release timestamp is determined from the `Published` tag. And, for the v3 API, the release timestamp is determined from the `published` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'For the v2 API, the source URL is determined from the `ProjectUrl` tag. And, for the v3 API, the source URL is determined from the `metadata.repository@url` field in the results.';\n\n readonly v2Api = new NugetV2Api();\n\n readonly v3Api = new NugetV3Api();\n\n constructor() {\n super(NugetDatasource.id);\n }\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n logger.trace(`nuget.getReleases(${packageName})`);\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n const { feedUrl, protocolVersion } = parseRegistryUrl(registryUrl);\n if (protocolVersion === 2) {\n return this.v2Api.getReleases(this.http, feedUrl, packageName);\n }\n if (protocolVersion === 3) {\n const queryUrl = await this.v3Api.getResourceUrl(this.http, feedUrl);\n if (queryUrl) {\n return this.v3Api.getReleases(\n this.http,\n feedUrl,\n queryUrl,\n packageName,\n );\n }\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/nuget/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,gFAA0D;AAC1D,8CAA2C;AAE3C,qCAA4C;AAC5C,6BAAkC;AAClC,6BAAkC;AAElC,uEAAuE;AAC1D,QAAA,QAAQ,GAAG,qCAAqC,CAAC;AAE9D,MAAa,eAAgB,SAAQ,uBAAU;IAC7C,MAAM,CAAU,EAAE,GAAG,OAAO,CAAC;IAEX,mBAAmB,GAAG,CAAC,gBAAQ,CAAC,CAAC;IAEjC,iBAAiB,GAAG,eAAe,CAAC,EAAE,CAAC;IAEvC,gBAAgB,GAAG,OAAO,CAAC;IAE3B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,mLAAmL,CAAC;IACpK,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,oLAAoL,CAAC;IAE9K,KAAK,GAAG,IAAI,eAAU,EAAE,CAAC;IAEzB,KAAK,GAAG,IAAI,eAAU,EAAE,CAAC;IAElC;QACE,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,eAAM,CAAC,KAAK,CAAC,qBAAqB,WAAW,GAAG,CAAC,CAAC;QAClD,6CAA6C;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAA,yBAAgB,EAAC,WAAW,CAAC,CAAC;QACnE,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAC3B,IAAI,CAAC,IAAI,EACT,OAAO,EACP,QAAQ,EACR,WAAW,CACZ,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AAjDH,0CAkDC","sourcesContent":["import { logger } from '../../../logger';\nimport * as nugetVersioning from '../../versioning/nuget';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { parseRegistryUrl } from './common';\nimport { NugetV2Api } from './v2';\nimport { NugetV3Api } from './v3';\n\n// https://api.nuget.org/v3/index.json is a default official nuget feed\nexport const nugetOrg = 'https://api.nuget.org/v3/index.json';\n\nexport class NugetDatasource extends Datasource {\n static readonly id = 'nuget';\n\n override readonly defaultRegistryUrls = [nugetOrg];\n\n override readonly defaultVersioning = nugetVersioning.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'For the v2 API, the release timestamp is determined from the `Published` tag. And, for the v3 API, the release timestamp is determined from the `published` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'For the v2 API, the source URL is determined from the `ProjectUrl` tag. And, for the v3 API, the source URL is determined from the `metadata.repository@url` field in the results.';\n\n readonly v2Api = new NugetV2Api();\n\n readonly v3Api = new NugetV3Api();\n\n constructor() {\n super(NugetDatasource.id);\n }\n\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n logger.trace(`nuget.getReleases(${packageName})`);\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n const { feedUrl, protocolVersion } = parseRegistryUrl(registryUrl);\n if (protocolVersion === 2) {\n return this.v2Api.getReleases(this.http, feedUrl, packageName);\n }\n if (protocolVersion === 3) {\n const queryUrl = await this.v3Api.getResourceUrl(this.http, feedUrl);\n if (queryUrl) {\n return this.v3Api.getReleases(\n this.http,\n feedUrl,\n queryUrl,\n packageName,\n );\n }\n }\n return null;\n }\n}\n"]}
@@ -17,7 +17,7 @@ class NugetV2Api {
17
17
  let pkgUrlList = `${feedUrl.replace((0, regex_1.regEx)(/\/+$/), '')}/FindPackagesById()?id=%27${pkgName}%27&$select=Version,IsLatestVersion,ProjectUrl,Published`;
18
18
  while (pkgUrlList !== null) {
19
19
  // typescript issue
20
- const pkgVersionsListRaw = await http.get(pkgUrlList);
20
+ const pkgVersionsListRaw = await http.getText(pkgUrlList);
21
21
  const pkgVersionsListDoc = new xmldoc_1.XmlDocument(pkgVersionsListRaw.body);
22
22
  const pkgInfoList = pkgVersionsListDoc.childrenNamed('entry');
23
23
  for (const pkgInfo of pkgInfoList) {
@@ -1 +1 @@
1
- {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/nuget/v2.ts"],"names":[],"mappings":";;;AACA,mCAAqC;AACrC,4CAAyC;AAEzC,+CAA4C;AAC5C,uDAAsD;AAEtD,qCAAuD;AAEvD,MAAa,UAAU;IACrB,UAAU,CAAC,OAAmB,EAAE,QAAgB;QAC9C,OAAO,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAU,EACV,OAAe,EACf,OAAe;QAEf,MAAM,GAAG,GAAkB;YACzB,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,UAAU,GAAkB,GAAG,OAAO,CAAC,OAAO,CAChD,IAAA,aAAK,EAAC,MAAM,CAAC,EACb,EAAE,CACH,6BAA6B,OAAO,0DAA0D,CAAC;QAChG,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,mBAAmB;YACnB,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,kBAAkB,GAAG,IAAI,oBAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEpE,MAAM,WAAW,GAAG,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAE9D,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACpD,MAAM,gBAAgB,GAAG,IAAA,uBAAW,EAClC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CACtC,CAAC;gBACF,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAChB,uBAAuB;oBACvB,OAAO,EAAE,IAAA,wBAAe,EAAC,GAAG,OAAO,EAAE,CAAC;oBACtC,gBAAgB;iBACjB,CAAC,CAAC;gBACH,IAAI,CAAC;oBACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CACxC,OAAO,EACP,iBAAiB,CAClB,CAAC;oBACF,IAAI,kBAAkB,KAAK,MAAM,EAAE,CAAC;wBAClC,GAAG,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,IAAA,wBAAe,EAAC,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;wBACrD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;wBAC1D,IAAI,UAAU,EAAE,CAAC;4BACf,GAAG,CAAC,SAAS,GAAG,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,0BAA0B,CAAC,CAAC;oBACxC,eAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EACzB,8DAA8D,CAC/D,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,kBAAkB,GAAG,kBAAkB;iBAC1C,aAAa,CAAC,MAAM,CAAC;iBACrB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;YAE5C,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,CAAC;QAED,2DAA2D;QAC3D,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AApED,gCAoEC","sourcesContent":["import type { XmlElement } from 'xmldoc';\nimport { XmlDocument } from 'xmldoc';\nimport { logger } from '../../../logger';\nimport type { Http } from '../../../util/http';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport type { ReleaseResult } from '../types';\nimport { massageUrl, removeBuildMeta } from './common';\n\nexport class NugetV2Api {\n getPkgProp(pkgInfo: XmlElement, propName: string): string | undefined {\n return pkgInfo.childNamed('m:properties')?.childNamed(`d:${propName}`)?.val;\n }\n\n async getReleases(\n http: Http,\n feedUrl: string,\n pkgName: string,\n ): Promise<ReleaseResult | null> {\n const dep: ReleaseResult = {\n releases: [],\n };\n let pkgUrlList: string | null = `${feedUrl.replace(\n regEx(/\\/+$/),\n '',\n )}/FindPackagesById()?id=%27${pkgName}%27&$select=Version,IsLatestVersion,ProjectUrl,Published`;\n while (pkgUrlList !== null) {\n // typescript issue\n const pkgVersionsListRaw = await http.get(pkgUrlList);\n const pkgVersionsListDoc = new XmlDocument(pkgVersionsListRaw.body);\n\n const pkgInfoList = pkgVersionsListDoc.childrenNamed('entry');\n\n for (const pkgInfo of pkgInfoList) {\n const version = this.getPkgProp(pkgInfo, 'Version');\n const releaseTimestamp = asTimestamp(\n this.getPkgProp(pkgInfo, 'Published'),\n );\n dep.releases.push({\n // TODO: types (#22198)\n version: removeBuildMeta(`${version}`),\n releaseTimestamp,\n });\n try {\n const pkgIsLatestVersion = this.getPkgProp(\n pkgInfo,\n 'IsLatestVersion',\n );\n if (pkgIsLatestVersion === 'true') {\n dep.tags = { latest: removeBuildMeta(`${version}`) };\n const projectUrl = this.getPkgProp(pkgInfo, 'ProjectUrl');\n if (projectUrl) {\n dep.sourceUrl = massageUrl(projectUrl);\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug(\n { err, pkgName, feedUrl },\n `nuget registry failure: can't parse pkg info for project url`,\n );\n }\n }\n\n const nextPkgUrlListLink = pkgVersionsListDoc\n .childrenNamed('link')\n .find((node) => node.attr.rel === 'next');\n\n pkgUrlList = nextPkgUrlListLink ? nextPkgUrlListLink.attr.href : null;\n }\n\n // dep not found if no release, so we can try next registry\n if (dep.releases.length === 0) {\n return null;\n }\n\n return dep;\n }\n}\n"]}
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/nuget/v2.ts"],"names":[],"mappings":";;;AACA,mCAAqC;AACrC,4CAAyC;AAEzC,+CAA4C;AAC5C,uDAAsD;AAEtD,qCAAuD;AAEvD,MAAa,UAAU;IACrB,UAAU,CAAC,OAAmB,EAAE,QAAgB;QAC9C,OAAO,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAU,EACV,OAAe,EACf,OAAe;QAEf,MAAM,GAAG,GAAkB;YACzB,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,UAAU,GAAkB,GAAG,OAAO,CAAC,OAAO,CAChD,IAAA,aAAK,EAAC,MAAM,CAAC,EACb,EAAE,CACH,6BAA6B,OAAO,0DAA0D,CAAC;QAChG,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,mBAAmB;YACnB,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,kBAAkB,GAAG,IAAI,oBAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEpE,MAAM,WAAW,GAAG,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAE9D,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACpD,MAAM,gBAAgB,GAAG,IAAA,uBAAW,EAClC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CACtC,CAAC;gBACF,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAChB,uBAAuB;oBACvB,OAAO,EAAE,IAAA,wBAAe,EAAC,GAAG,OAAO,EAAE,CAAC;oBACtC,gBAAgB;iBACjB,CAAC,CAAC;gBACH,IAAI,CAAC;oBACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CACxC,OAAO,EACP,iBAAiB,CAClB,CAAC;oBACF,IAAI,kBAAkB,KAAK,MAAM,EAAE,CAAC;wBAClC,GAAG,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,IAAA,wBAAe,EAAC,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;wBACrD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;wBAC1D,IAAI,UAAU,EAAE,CAAC;4BACf,GAAG,CAAC,SAAS,GAAG,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,0BAA0B,CAAC,CAAC;oBACxC,eAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EACzB,8DAA8D,CAC/D,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,kBAAkB,GAAG,kBAAkB;iBAC1C,aAAa,CAAC,MAAM,CAAC;iBACrB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;YAE5C,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,CAAC;QAED,2DAA2D;QAC3D,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AApED,gCAoEC","sourcesContent":["import type { XmlElement } from 'xmldoc';\nimport { XmlDocument } from 'xmldoc';\nimport { logger } from '../../../logger';\nimport type { Http } from '../../../util/http';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport type { ReleaseResult } from '../types';\nimport { massageUrl, removeBuildMeta } from './common';\n\nexport class NugetV2Api {\n getPkgProp(pkgInfo: XmlElement, propName: string): string | undefined {\n return pkgInfo.childNamed('m:properties')?.childNamed(`d:${propName}`)?.val;\n }\n\n async getReleases(\n http: Http,\n feedUrl: string,\n pkgName: string,\n ): Promise<ReleaseResult | null> {\n const dep: ReleaseResult = {\n releases: [],\n };\n let pkgUrlList: string | null = `${feedUrl.replace(\n regEx(/\\/+$/),\n '',\n )}/FindPackagesById()?id=%27${pkgName}%27&$select=Version,IsLatestVersion,ProjectUrl,Published`;\n while (pkgUrlList !== null) {\n // typescript issue\n const pkgVersionsListRaw = await http.getText(pkgUrlList);\n const pkgVersionsListDoc = new XmlDocument(pkgVersionsListRaw.body);\n\n const pkgInfoList = pkgVersionsListDoc.childrenNamed('entry');\n\n for (const pkgInfo of pkgInfoList) {\n const version = this.getPkgProp(pkgInfo, 'Version');\n const releaseTimestamp = asTimestamp(\n this.getPkgProp(pkgInfo, 'Published'),\n );\n dep.releases.push({\n // TODO: types (#22198)\n version: removeBuildMeta(`${version}`),\n releaseTimestamp,\n });\n try {\n const pkgIsLatestVersion = this.getPkgProp(\n pkgInfo,\n 'IsLatestVersion',\n );\n if (pkgIsLatestVersion === 'true') {\n dep.tags = { latest: removeBuildMeta(`${version}`) };\n const projectUrl = this.getPkgProp(pkgInfo, 'ProjectUrl');\n if (projectUrl) {\n dep.sourceUrl = massageUrl(projectUrl);\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug(\n { err, pkgName, feedUrl },\n `nuget registry failure: can't parse pkg info for project url`,\n );\n }\n }\n\n const nextPkgUrlListLink = pkgVersionsListDoc\n .childrenNamed('link')\n .find((node) => node.attr.rel === 'next');\n\n pkgUrlList = nextPkgUrlListLink ? nextPkgUrlListLink.attr.href : null;\n }\n\n // dep not found if no release, so we can try next registry\n if (dep.releases.length === 0) {\n return null;\n }\n\n return dep;\n }\n}\n"]}
@@ -14,6 +14,7 @@ const decorator_1 = require("../../../util/cache/package/decorator");
14
14
  const fs = tslib_1.__importStar(require("../../../util/fs"));
15
15
  const fs_1 = require("../../../util/fs");
16
16
  const http_1 = require("../../../util/http");
17
+ const memory_http_cache_provider_1 = require("../../../util/http/cache/memory-http-cache-provider");
17
18
  const p = tslib_1.__importStar(require("../../../util/promises"));
18
19
  const regex_1 = require("../../../util/regex");
19
20
  const timestamp_1 = require("../../../util/timestamp");
@@ -26,7 +27,7 @@ class NugetV3Api {
26
27
  // https://docs.microsoft.com/en-us/nuget/api/service-index
27
28
  const resultCacheKey = `${url}:${resourceType}`;
28
29
  const cachedResult = await packageCache.get(NugetV3Api.cacheNamespace, resultCacheKey);
29
- // istanbul ignore if
30
+ /* v8 ignore next 3 -- TODO: add test */
30
31
  if (cachedResult) {
31
32
  return cachedResult;
32
33
  }
@@ -34,10 +35,10 @@ class NugetV3Api {
34
35
  try {
35
36
  const responseCacheKey = url;
36
37
  servicesIndexRaw = await packageCache.get(NugetV3Api.cacheNamespace, responseCacheKey);
37
- // istanbul ignore else: currently not testable
38
38
  if (!servicesIndexRaw) {
39
- servicesIndexRaw = (await http.getJsonUnchecked(url))
40
- .body;
39
+ servicesIndexRaw = (await http.getJsonUnchecked(url, {
40
+ cacheProvider: memory_http_cache_provider_1.memCacheProvider,
41
+ })).body;
41
42
  await packageCache.set(NugetV3Api.cacheNamespace, responseCacheKey, servicesIndexRaw, 3 * 24 * 60);
42
43
  }
43
44
  const services = servicesIndexRaw.resources
@@ -131,7 +132,9 @@ class NugetV3Api {
131
132
  const nuspecUrl = `${(0, url_1.ensureTrailingSlash)(packageBaseAddress)}${pkgName.toLowerCase()}/${
132
133
  // TODO: types (#22198)
133
134
  latestStable}/${pkgName.toLowerCase()}.nuspec`;
134
- const metaresult = await http.get(nuspecUrl);
135
+ const metaresult = await http.getText(nuspecUrl, {
136
+ cacheProvider: memory_http_cache_provider_1.memCacheProvider,
137
+ });
135
138
  const nuspec = new xmldoc_1.XmlDocument(metaresult.body);
136
139
  const sourceUrl = nuspec.valueWithPath('metadata.repository@url');
137
140
  if (sourceUrl) {
@@ -159,7 +162,6 @@ class NugetV3Api {
159
162
  logger_1.logger.debug({ err, registryUrl, pkgName, pkgVersion: latestStable }, `Cannot obtain sourceUrl`);
160
163
  }
161
164
  }
162
- // istanbul ignore else: not easy testable
163
165
  if (homepage) {
164
166
  // only assign if not assigned
165
167
  dep.sourceUrl ??= homepage;
@@ -1 +1 @@
1
- {"version":3,"file":"v3.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/nuget/v3.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport extract from 'extract-zip';\nimport semver from 'semver';\nimport upath from 'upath';\nimport { XmlDocument } from 'xmldoc';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport * as packageCache from '../../../util/cache/package';\nimport { cache } from '../../../util/cache/package/decorator';\nimport * as fs from '../../../util/fs';\nimport { ensureCacheDir } from '../../../util/fs';\nimport type { Http } from '../../../util/http';\nimport { HttpError } from '../../../util/http';\nimport * as p from '../../../util/promises';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport { api as versioning } from '../../versioning/nuget';\nimport type { Release, ReleaseResult } from '../types';\nimport { massageUrl, removeBuildMeta, sortNugetVersions } from './common';\nimport type {\n CatalogEntry,\n CatalogPage,\n PackageRegistration,\n ServicesIndexRaw,\n} from './types';\n\nexport class NugetV3Api {\n static readonly cacheNamespace = 'datasource-nuget-v3';\n\n async getResourceUrl(\n http: Http,\n url: string,\n resourceType = 'RegistrationsBaseUrl',\n ): Promise<string | null> {\n // https://docs.microsoft.com/en-us/nuget/api/service-index\n const resultCacheKey = `${url}:${resourceType}`;\n const cachedResult = await packageCache.get<string>(\n NugetV3Api.cacheNamespace,\n resultCacheKey,\n );\n\n // istanbul ignore if\n if (cachedResult) {\n return cachedResult;\n }\n let servicesIndexRaw: ServicesIndexRaw | undefined;\n try {\n const responseCacheKey = url;\n servicesIndexRaw = await packageCache.get<ServicesIndexRaw>(\n NugetV3Api.cacheNamespace,\n responseCacheKey,\n );\n // istanbul ignore else: currently not testable\n if (!servicesIndexRaw) {\n servicesIndexRaw = (await http.getJsonUnchecked<ServicesIndexRaw>(url))\n .body;\n await packageCache.set(\n NugetV3Api.cacheNamespace,\n responseCacheKey,\n servicesIndexRaw,\n 3 * 24 * 60,\n );\n }\n\n const services = servicesIndexRaw.resources\n .map(({ '@id': serviceId, '@type': t }) => ({\n serviceId,\n type: t?.split('/')?.shift(),\n version: t?.split('/')?.pop(),\n }))\n .filter(\n ({ type, version }) => type === resourceType && semver.valid(version),\n )\n .sort((x, y) =>\n x.version && y.version\n ? semver.compare(x.version, y.version)\n : /* istanbul ignore next: hard to test */ 0,\n );\n\n if (services.length === 0) {\n await packageCache.set(\n NugetV3Api.cacheNamespace,\n resultCacheKey,\n null,\n 60,\n );\n logger.debug(\n { url, servicesIndexRaw },\n `no ${resourceType} services found`,\n );\n return null;\n }\n\n const { serviceId, version } = services.pop()!;\n\n // istanbul ignore if\n if (\n resourceType === 'RegistrationsBaseUrl' &&\n version &&\n !version.startsWith('3.0.0-') &&\n !semver.satisfies(version, '^3.0.0')\n ) {\n logger.warn(\n { url, version },\n `Nuget: Unknown version returned. Only v3 is supported`,\n );\n }\n\n await packageCache.set(\n NugetV3Api.cacheNamespace,\n resultCacheKey,\n serviceId,\n 60,\n );\n return serviceId;\n } catch (err) {\n // istanbul ignore if: not easy testable with nock\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug(\n { err, url, servicesIndexRaw },\n `nuget registry failure: can't get ${resourceType}`,\n );\n return null;\n }\n }\n\n async getCatalogEntry(\n http: Http,\n catalogPage: CatalogPage,\n ): Promise<CatalogEntry[]> {\n let items = catalogPage.items;\n if (!items) {\n const url = catalogPage['@id'];\n const catalogPageFull = await http.getJsonUnchecked<CatalogPage>(url);\n items = catalogPageFull.body.items;\n }\n return items.map(({ catalogEntry }) => catalogEntry);\n }\n\n async getReleases(\n http: Http,\n registryUrl: string,\n feedUrl: string,\n pkgName: string,\n ): Promise<ReleaseResult | null> {\n const baseUrl = feedUrl.replace(regEx(/\\/*$/), '');\n const url = `${baseUrl}/${pkgName.toLowerCase()}/index.json`;\n const packageRegistration =\n await http.getJsonUnchecked<PackageRegistration>(url);\n const catalogPages = packageRegistration.body.items || [];\n const catalogPagesQueue = catalogPages.map(\n (page) => (): Promise<CatalogEntry[]> => this.getCatalogEntry(http, page),\n );\n const catalogEntries = (await p.all(catalogPagesQueue))\n .flat()\n .sort((a, b) => sortNugetVersions(a.version, b.version));\n\n let homepage: string | null = null;\n let latestStable: string | null = null;\n let nupkgUrl: string | null = null;\n const releases = catalogEntries.map(\n ({ version, published, projectUrl, listed, packageContent }) => {\n const release: Release = { version: removeBuildMeta(version) };\n const releaseTimestamp = asTimestamp(published);\n if (releaseTimestamp) {\n release.releaseTimestamp = releaseTimestamp;\n }\n if (versioning.isValid(version) && versioning.isStable(version)) {\n latestStable = removeBuildMeta(version);\n homepage = projectUrl ? massageUrl(projectUrl) : homepage;\n nupkgUrl = massageUrl(packageContent);\n }\n if (listed === false) {\n release.isDeprecated = true;\n }\n return release;\n },\n );\n\n if (!releases.length) {\n return null;\n }\n\n // istanbul ignore next: only happens when no stable version exists\n if (latestStable === null && catalogPages.length) {\n const last = catalogEntries.pop()!;\n latestStable = removeBuildMeta(last.version);\n homepage ??= last.projectUrl ?? null;\n nupkgUrl ??= massageUrl(last.packageContent);\n }\n\n const dep: ReleaseResult = {\n releases,\n };\n\n try {\n const packageBaseAddress = await this.getResourceUrl(\n http,\n registryUrl,\n 'PackageBaseAddress',\n );\n if (is.nonEmptyString(packageBaseAddress)) {\n const nuspecUrl = `${ensureTrailingSlash(\n packageBaseAddress,\n )}${pkgName.toLowerCase()}/${\n // TODO: types (#22198)\n latestStable\n }/${pkgName.toLowerCase()}.nuspec`;\n const metaresult = await http.get(nuspecUrl);\n const nuspec = new XmlDocument(metaresult.body);\n const sourceUrl = nuspec.valueWithPath('metadata.repository@url');\n if (sourceUrl) {\n dep.sourceUrl = massageUrl(sourceUrl);\n }\n } else if (nupkgUrl) {\n const sourceUrl = await this.getSourceUrlFromNupkg(\n http,\n registryUrl,\n pkgName,\n latestStable,\n nupkgUrl,\n );\n if (sourceUrl) {\n dep.sourceUrl = massageUrl(sourceUrl);\n logger.debug(`Determined sourceUrl ${sourceUrl} from ${nupkgUrl}`);\n }\n }\n } catch (err) {\n // istanbul ignore if: not easy testable with nock\n if (err instanceof ExternalHostError) {\n throw err;\n }\n // ignore / silence 404. Seen on proget, if remote connector is used and package is not yet cached\n if (err instanceof HttpError && err.response?.statusCode === 404) {\n logger.debug(\n { registryUrl, pkgName, pkgVersion: latestStable },\n `package manifest (.nuspec) not found`,\n );\n } else {\n logger.debug(\n { err, registryUrl, pkgName, pkgVersion: latestStable },\n `Cannot obtain sourceUrl`,\n );\n }\n }\n\n // istanbul ignore else: not easy testable\n if (homepage) {\n // only assign if not assigned\n dep.sourceUrl ??= homepage;\n dep.homepage ??= homepage;\n }\n\n return dep;\n }\n\n @cache({\n namespace: NugetV3Api.cacheNamespace,\n key: (\n _http: Http,\n registryUrl: string,\n packageName: string,\n _packageVersion: string | null,\n _nupkgUrl: string,\n ) => `source-url:${registryUrl}:${packageName}`,\n ttlMinutes: 10080, // 1 week\n })\n async getSourceUrlFromNupkg(\n http: Http,\n _registryUrl: string,\n packageName: string,\n packageVersion: string | null,\n nupkgUrl: string,\n ): Promise<string | null> {\n // istanbul ignore if: experimental feature\n if (!process.env.RENOVATE_X_NUGET_DOWNLOAD_NUPKGS) {\n logger.once.debug('RENOVATE_X_NUGET_DOWNLOAD_NUPKGS is not set');\n return null;\n }\n const cacheDir = await ensureCacheDir('nuget');\n const nupkgFile = upath.join(\n cacheDir,\n `${packageName}.${packageVersion}.nupkg`,\n );\n const nupkgContentsDir = upath.join(\n cacheDir,\n `${packageName}.${packageVersion}`,\n );\n const readStream = http.stream(nupkgUrl);\n try {\n const writeStream = fs.createCacheWriteStream(nupkgFile);\n await fs.pipeline(readStream, writeStream);\n await extract(nupkgFile, { dir: nupkgContentsDir });\n const nuspecFile = upath.join(nupkgContentsDir, `${packageName}.nuspec`);\n const nuspec = new XmlDocument(\n await fs.readCacheFile(nuspecFile, 'utf8'),\n );\n return nuspec.valueWithPath('metadata.repository@url') ?? null;\n } finally {\n await fs.rmCache(nupkgFile);\n await fs.rmCache(nupkgContentsDir);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"v3.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/nuget/v3.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport extract from 'extract-zip';\nimport semver from 'semver';\nimport upath from 'upath';\nimport { XmlDocument } from 'xmldoc';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport * as packageCache from '../../../util/cache/package';\nimport { cache } from '../../../util/cache/package/decorator';\nimport * as fs from '../../../util/fs';\nimport { ensureCacheDir } from '../../../util/fs';\nimport type { Http } from '../../../util/http';\nimport { HttpError } from '../../../util/http';\nimport { memCacheProvider } from '../../../util/http/cache/memory-http-cache-provider';\nimport * as p from '../../../util/promises';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport { api as versioning } from '../../versioning/nuget';\nimport type { Release, ReleaseResult } from '../types';\nimport { massageUrl, removeBuildMeta, sortNugetVersions } from './common';\nimport type {\n CatalogEntry,\n CatalogPage,\n PackageRegistration,\n ServicesIndexRaw,\n} from './types';\n\nexport class NugetV3Api {\n static readonly cacheNamespace = 'datasource-nuget-v3';\n\n async getResourceUrl(\n http: Http,\n url: string,\n resourceType = 'RegistrationsBaseUrl',\n ): Promise<string | null> {\n // https://docs.microsoft.com/en-us/nuget/api/service-index\n const resultCacheKey = `${url}:${resourceType}`;\n const cachedResult = await packageCache.get<string>(\n NugetV3Api.cacheNamespace,\n resultCacheKey,\n );\n\n /* v8 ignore next 3 -- TODO: add test */\n if (cachedResult) {\n return cachedResult;\n }\n let servicesIndexRaw: ServicesIndexRaw | undefined;\n try {\n const responseCacheKey = url;\n servicesIndexRaw = await packageCache.get<ServicesIndexRaw>(\n NugetV3Api.cacheNamespace,\n responseCacheKey,\n );\n if (!servicesIndexRaw) {\n servicesIndexRaw = (\n await http.getJsonUnchecked<ServicesIndexRaw>(url, {\n cacheProvider: memCacheProvider,\n })\n ).body;\n await packageCache.set(\n NugetV3Api.cacheNamespace,\n responseCacheKey,\n servicesIndexRaw,\n 3 * 24 * 60,\n );\n }\n\n const services = servicesIndexRaw.resources\n .map(({ '@id': serviceId, '@type': t }) => ({\n serviceId,\n type: t?.split('/')?.shift(),\n version: t?.split('/')?.pop(),\n }))\n .filter(\n ({ type, version }) => type === resourceType && semver.valid(version),\n )\n .sort((x, y) =>\n x.version && y.version\n ? semver.compare(x.version, y.version)\n : /* istanbul ignore next: hard to test */ 0,\n );\n\n if (services.length === 0) {\n await packageCache.set(\n NugetV3Api.cacheNamespace,\n resultCacheKey,\n null,\n 60,\n );\n logger.debug(\n { url, servicesIndexRaw },\n `no ${resourceType} services found`,\n );\n return null;\n }\n\n const { serviceId, version } = services.pop()!;\n\n // istanbul ignore if\n if (\n resourceType === 'RegistrationsBaseUrl' &&\n version &&\n !version.startsWith('3.0.0-') &&\n !semver.satisfies(version, '^3.0.0')\n ) {\n logger.warn(\n { url, version },\n `Nuget: Unknown version returned. Only v3 is supported`,\n );\n }\n\n await packageCache.set(\n NugetV3Api.cacheNamespace,\n resultCacheKey,\n serviceId,\n 60,\n );\n return serviceId;\n } catch (err) {\n // istanbul ignore if: not easy testable with nock\n if (err instanceof ExternalHostError) {\n throw err;\n }\n logger.debug(\n { err, url, servicesIndexRaw },\n `nuget registry failure: can't get ${resourceType}`,\n );\n return null;\n }\n }\n\n async getCatalogEntry(\n http: Http,\n catalogPage: CatalogPage,\n ): Promise<CatalogEntry[]> {\n let items = catalogPage.items;\n if (!items) {\n const url = catalogPage['@id'];\n const catalogPageFull = await http.getJsonUnchecked<CatalogPage>(url);\n items = catalogPageFull.body.items;\n }\n return items.map(({ catalogEntry }) => catalogEntry);\n }\n\n async getReleases(\n http: Http,\n registryUrl: string,\n feedUrl: string,\n pkgName: string,\n ): Promise<ReleaseResult | null> {\n const baseUrl = feedUrl.replace(regEx(/\\/*$/), '');\n const url = `${baseUrl}/${pkgName.toLowerCase()}/index.json`;\n const packageRegistration =\n await http.getJsonUnchecked<PackageRegistration>(url);\n const catalogPages = packageRegistration.body.items || [];\n const catalogPagesQueue = catalogPages.map(\n (page) => (): Promise<CatalogEntry[]> => this.getCatalogEntry(http, page),\n );\n const catalogEntries = (await p.all(catalogPagesQueue))\n .flat()\n .sort((a, b) => sortNugetVersions(a.version, b.version));\n\n let homepage: string | null = null;\n let latestStable: string | null = null;\n let nupkgUrl: string | null = null;\n const releases = catalogEntries.map(\n ({ version, published, projectUrl, listed, packageContent }) => {\n const release: Release = { version: removeBuildMeta(version) };\n const releaseTimestamp = asTimestamp(published);\n if (releaseTimestamp) {\n release.releaseTimestamp = releaseTimestamp;\n }\n if (versioning.isValid(version) && versioning.isStable(version)) {\n latestStable = removeBuildMeta(version);\n homepage = projectUrl ? massageUrl(projectUrl) : homepage;\n nupkgUrl = massageUrl(packageContent);\n }\n if (listed === false) {\n release.isDeprecated = true;\n }\n return release;\n },\n );\n\n if (!releases.length) {\n return null;\n }\n\n // istanbul ignore next: only happens when no stable version exists\n if (latestStable === null && catalogPages.length) {\n const last = catalogEntries.pop()!;\n latestStable = removeBuildMeta(last.version);\n homepage ??= last.projectUrl ?? null;\n nupkgUrl ??= massageUrl(last.packageContent);\n }\n\n const dep: ReleaseResult = {\n releases,\n };\n\n try {\n const packageBaseAddress = await this.getResourceUrl(\n http,\n registryUrl,\n 'PackageBaseAddress',\n );\n if (is.nonEmptyString(packageBaseAddress)) {\n const nuspecUrl = `${ensureTrailingSlash(\n packageBaseAddress,\n )}${pkgName.toLowerCase()}/${\n // TODO: types (#22198)\n latestStable\n }/${pkgName.toLowerCase()}.nuspec`;\n const metaresult = await http.getText(nuspecUrl, {\n cacheProvider: memCacheProvider,\n });\n const nuspec = new XmlDocument(metaresult.body);\n const sourceUrl = nuspec.valueWithPath('metadata.repository@url');\n if (sourceUrl) {\n dep.sourceUrl = massageUrl(sourceUrl);\n }\n } else if (nupkgUrl) {\n const sourceUrl = await this.getSourceUrlFromNupkg(\n http,\n registryUrl,\n pkgName,\n latestStable,\n nupkgUrl,\n );\n if (sourceUrl) {\n dep.sourceUrl = massageUrl(sourceUrl);\n logger.debug(`Determined sourceUrl ${sourceUrl} from ${nupkgUrl}`);\n }\n }\n } catch (err) {\n // istanbul ignore if: not easy testable with nock\n if (err instanceof ExternalHostError) {\n throw err;\n }\n // ignore / silence 404. Seen on proget, if remote connector is used and package is not yet cached\n if (err instanceof HttpError && err.response?.statusCode === 404) {\n logger.debug(\n { registryUrl, pkgName, pkgVersion: latestStable },\n `package manifest (.nuspec) not found`,\n );\n } else {\n logger.debug(\n { err, registryUrl, pkgName, pkgVersion: latestStable },\n `Cannot obtain sourceUrl`,\n );\n }\n }\n\n if (homepage) {\n // only assign if not assigned\n dep.sourceUrl ??= homepage;\n dep.homepage ??= homepage;\n }\n\n return dep;\n }\n\n @cache({\n namespace: NugetV3Api.cacheNamespace,\n key: (\n _http: Http,\n registryUrl: string,\n packageName: string,\n _packageVersion: string | null,\n _nupkgUrl: string,\n ) => `source-url:${registryUrl}:${packageName}`,\n ttlMinutes: 10080, // 1 week\n })\n async getSourceUrlFromNupkg(\n http: Http,\n _registryUrl: string,\n packageName: string,\n packageVersion: string | null,\n nupkgUrl: string,\n ): Promise<string | null> {\n // istanbul ignore if: experimental feature\n if (!process.env.RENOVATE_X_NUGET_DOWNLOAD_NUPKGS) {\n logger.once.debug('RENOVATE_X_NUGET_DOWNLOAD_NUPKGS is not set');\n return null;\n }\n const cacheDir = await ensureCacheDir('nuget');\n const nupkgFile = upath.join(\n cacheDir,\n `${packageName}.${packageVersion}.nupkg`,\n );\n const nupkgContentsDir = upath.join(\n cacheDir,\n `${packageName}.${packageVersion}`,\n );\n const readStream = http.stream(nupkgUrl);\n try {\n const writeStream = fs.createCacheWriteStream(nupkgFile);\n await fs.pipeline(readStream, writeStream);\n await extract(nupkgFile, { dir: nupkgContentsDir });\n const nuspecFile = upath.join(nupkgContentsDir, `${packageName}.nuspec`);\n const nuspec = new XmlDocument(\n await fs.readCacheFile(nuspecFile, 'utf8'),\n );\n return nuspec.valueWithPath('metadata.repository@url') ?? null;\n } finally {\n await fs.rmCache(nupkgFile);\n await fs.rmCache(nupkgContentsDir);\n }\n }\n}\n"]}
@@ -32,7 +32,7 @@ class OrbDatasource extends datasource_1.Datasource {
32
32
  releaseTimestampSupport = true;
33
33
  releaseTimestampNote = 'The release timestamp is determined from the `createdAt` field in the results.';
34
34
  async getReleases({ packageName, registryUrl, }) {
35
- // istanbul ignore if
35
+ /* v8 ignore next 3 -- should never happen */
36
36
  if (!registryUrl) {
37
37
  return null;
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/orb/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,qEAA8D;AAC9D,uDAAsD;AACtD,2CAAiD;AACjD,8CAA2C;AAI3C,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,MAAM,KAAK,GAAG;;;;;;;;;;;;CAYb,CAAC;AAEF,MAAa,aAAc,SAAQ,uBAAU;IAC3C,MAAM,CAAU,EAAE,GAAG,KAAK,CAAC;IAE3B;QACE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAEiB,qBAAqB,GAAG,IAAI,CAAC;IAE7B,mBAAmB,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAChD,gBAAgB,GAAG,MAAM,CAAC;IAE1B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,gFAAgF,CAAC;IAM7E,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,qBAAqB;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,kBAAY,EAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG;YACX,KAAK;YACL,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;SACtD,CAAC;QACF,MAAM,GAAG,GAAG,CACV,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAc,GAAG,EAAE;YACzC,IAAI;SACL,CAAC,CACH,CAAC,IAAI,CAAC;QACP,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACpB,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,yBAAyB,WAAW,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,iDAAiD;QACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM;YAClC,CAAC,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,2CAA2C,WAAW,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO;YACP,gBAAgB,EAAE,IAAA,uBAAW,EAAC,SAAS,CAAC;SACzC,CAAC,CAAC,CAAC;QAEJ,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;QAC/D,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;;AAxDH,sCAyDC;AArCO;IAJL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,aAAa,CAAC,EAAE,EAAE;QAC3C,GAAG,EAAE,CAAC,EAAE,WAAW,EAAqB,EAAE,EAAE,CAAC,WAAW;KACzD,CAAC;gDAqCD","sourcesContent":["import { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport type { OrbResponse } from './types';\n\nconst MAX_VERSIONS = 100;\n\nconst query = `\nquery($packageName: String!, $maxVersions: Int!) {\n orb(name: $packageName) {\n name,\n homeUrl,\n isPrivate,\n versions(count: $maxVersions) {\n version,\n createdAt\n }\n }\n}\n`;\n\nexport class OrbDatasource extends Datasource {\n static readonly id = 'orb';\n\n constructor() {\n super(OrbDatasource.id);\n }\n\n override readonly customRegistrySupport = true;\n\n override readonly defaultRegistryUrls = ['https://circleci.com/'];\n override readonly registryStrategy = 'hunt';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `createdAt` field in the results.';\n\n @cache({\n namespace: `datasource-${OrbDatasource.id}`,\n key: ({ packageName }: GetReleasesConfig) => packageName,\n })\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n // istanbul ignore if\n if (!registryUrl) {\n return null;\n }\n const url = joinUrlParts(registryUrl, 'graphql-unstable');\n const body = {\n query,\n variables: { packageName, maxVersions: MAX_VERSIONS },\n };\n const res = (\n await this.http.postJson<OrbResponse>(url, {\n body,\n })\n ).body;\n if (!res?.data?.orb) {\n logger.debug({ res }, `Failed to look up orb ${packageName}`);\n return null;\n }\n\n const { orb } = res.data;\n // Simplify response before caching and returning\n const homepage = orb.homeUrl?.length\n ? orb.homeUrl\n : `https://circleci.com/developer/orbs/orb/${packageName}`;\n const releases = orb.versions.map(({ version, createdAt }) => ({\n version,\n releaseTimestamp: asTimestamp(createdAt),\n }));\n\n const dep = { homepage, isPrivate: !!orb.isPrivate, releases };\n logger.trace({ dep }, 'dep');\n return dep;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/orb/index.ts"],"names":[],"mappings":";;;;AAAA,4CAAyC;AACzC,qEAA8D;AAC9D,uDAAsD;AACtD,2CAAiD;AACjD,8CAA2C;AAI3C,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,MAAM,KAAK,GAAG;;;;;;;;;;;;CAYb,CAAC;AAEF,MAAa,aAAc,SAAQ,uBAAU;IAC3C,MAAM,CAAU,EAAE,GAAG,KAAK,CAAC;IAE3B;QACE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAEiB,qBAAqB,GAAG,IAAI,CAAC;IAE7B,mBAAmB,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAChD,gBAAgB,GAAG,MAAM,CAAC;IAE1B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,gFAAgF,CAAC;IAM7E,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,EACX,WAAW,GACO;QAClB,6CAA6C;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,kBAAY,EAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG;YACX,KAAK;YACL,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;SACtD,CAAC;QACF,MAAM,GAAG,GAAG,CACV,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAc,GAAG,EAAE;YACzC,IAAI;SACL,CAAC,CACH,CAAC,IAAI,CAAC;QACP,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACpB,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,yBAAyB,WAAW,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,iDAAiD;QACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM;YAClC,CAAC,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,2CAA2C,WAAW,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO;YACP,gBAAgB,EAAE,IAAA,uBAAW,EAAC,SAAS,CAAC;SACzC,CAAC,CAAC,CAAC;QAEJ,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;QAC/D,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;;AAxDH,sCAyDC;AArCO;IAJL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,aAAa,CAAC,EAAE,EAAE;QAC3C,GAAG,EAAE,CAAC,EAAE,WAAW,EAAqB,EAAE,EAAE,CAAC,WAAW;KACzD,CAAC;gDAqCD","sourcesContent":["import { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { joinUrlParts } from '../../../util/url';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport type { OrbResponse } from './types';\n\nconst MAX_VERSIONS = 100;\n\nconst query = `\nquery($packageName: String!, $maxVersions: Int!) {\n orb(name: $packageName) {\n name,\n homeUrl,\n isPrivate,\n versions(count: $maxVersions) {\n version,\n createdAt\n }\n }\n}\n`;\n\nexport class OrbDatasource extends Datasource {\n static readonly id = 'orb';\n\n constructor() {\n super(OrbDatasource.id);\n }\n\n override readonly customRegistrySupport = true;\n\n override readonly defaultRegistryUrls = ['https://circleci.com/'];\n override readonly registryStrategy = 'hunt';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `createdAt` field in the results.';\n\n @cache({\n namespace: `datasource-${OrbDatasource.id}`,\n key: ({ packageName }: GetReleasesConfig) => packageName,\n })\n async getReleases({\n packageName,\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n const url = joinUrlParts(registryUrl, 'graphql-unstable');\n const body = {\n query,\n variables: { packageName, maxVersions: MAX_VERSIONS },\n };\n const res = (\n await this.http.postJson<OrbResponse>(url, {\n body,\n })\n ).body;\n if (!res?.data?.orb) {\n logger.debug({ res }, `Failed to look up orb ${packageName}`);\n return null;\n }\n\n const { orb } = res.data;\n // Simplify response before caching and returning\n const homepage = orb.homeUrl?.length\n ? orb.homeUrl\n : `https://circleci.com/developer/orbs/orb/${packageName}`;\n const releases = orb.versions.map(({ version, createdAt }) => ({\n version,\n releaseTimestamp: asTimestamp(createdAt),\n }));\n\n const dep = { homepage, isPrivate: !!orb.isPrivate, releases };\n logger.trace({ dep }, 'dep');\n return dep;\n }\n}\n"]}
@@ -18,7 +18,7 @@ class PackagistDatasource extends datasource_1.Datasource {
18
18
  constructor() {
19
19
  super(PackagistDatasource.id);
20
20
  }
21
- defaultRegistryUrls = ['https://packagist.org'];
21
+ defaultRegistryUrls = ['https://repo.packagist.org'];
22
22
  defaultVersioning = composerVersioning.id;
23
23
  registryStrategy = 'hunt';
24
24
  releaseTimestampSupport = true;
@@ -103,7 +103,7 @@ class PackagistDatasource extends datasource_1.Datasource {
103
103
  }
104
104
  async getReleases({ packageName, registryUrl, }) {
105
105
  logger_1.logger.trace(`getReleases(${packageName})`);
106
- // istanbul ignore if
106
+ /* v8 ignore next 3 -- should never happen */
107
107
  if (!registryUrl) {
108
108
  return null;
109
109
  }