renovate 42.4.0 → 42.5.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 (708) hide show
  1. package/dist/config/decrypt.js +13 -14
  2. package/dist/config/decrypt.js.map +1 -1
  3. package/dist/config/massage.js +6 -7
  4. package/dist/config/massage.js.map +1 -1
  5. package/dist/config/migrate-validate.js +3 -3
  6. package/dist/config/migrate-validate.js.map +1 -1
  7. package/dist/config/migration.js +19 -20
  8. package/dist/config/migration.js.map +1 -1
  9. package/dist/config/migrations/base/abstract-migration.js +5 -6
  10. package/dist/config/migrations/base/abstract-migration.js.map +1 -1
  11. package/dist/config/migrations/custom/automerge-major-migration.js +2 -3
  12. package/dist/config/migrations/custom/automerge-major-migration.js.map +1 -1
  13. package/dist/config/migrations/custom/automerge-migration.js +4 -5
  14. package/dist/config/migrations/custom/automerge-migration.js.map +1 -1
  15. package/dist/config/migrations/custom/automerge-minor-migration.js +2 -3
  16. package/dist/config/migrations/custom/automerge-minor-migration.js.map +1 -1
  17. package/dist/config/migrations/custom/automerge-patch-migration.js +2 -3
  18. package/dist/config/migrations/custom/automerge-patch-migration.js.map +1 -1
  19. package/dist/config/migrations/custom/automerge-type-migration.js +2 -3
  20. package/dist/config/migrations/custom/automerge-type-migration.js.map +1 -1
  21. package/dist/config/migrations/custom/base-branch-migration.js +3 -4
  22. package/dist/config/migrations/custom/base-branch-migration.js.map +1 -1
  23. package/dist/config/migrations/custom/branch-name-migration.js +2 -3
  24. package/dist/config/migrations/custom/branch-name-migration.js.map +1 -1
  25. package/dist/config/migrations/custom/branch-prefix-migration.js +2 -3
  26. package/dist/config/migrations/custom/branch-prefix-migration.js.map +1 -1
  27. package/dist/config/migrations/custom/compatibility-migration.js +2 -3
  28. package/dist/config/migrations/custom/compatibility-migration.js.map +1 -1
  29. package/dist/config/migrations/custom/composer-ignore-platform-reqs-migration.js +2 -3
  30. package/dist/config/migrations/custom/composer-ignore-platform-reqs-migration.js.map +1 -1
  31. package/dist/config/migrations/custom/custom-managers-migration.js +2 -3
  32. package/dist/config/migrations/custom/custom-managers-migration.js.map +1 -1
  33. package/dist/config/migrations/custom/datasource-migration.js +2 -3
  34. package/dist/config/migrations/custom/datasource-migration.js.map +1 -1
  35. package/dist/config/migrations/custom/dep-types-migration.js +4 -5
  36. package/dist/config/migrations/custom/dep-types-migration.js.map +1 -1
  37. package/dist/config/migrations/custom/enabled-managers-migration.js +2 -3
  38. package/dist/config/migrations/custom/enabled-managers-migration.js.map +1 -1
  39. package/dist/config/migrations/custom/extends-migration.js +4 -5
  40. package/dist/config/migrations/custom/extends-migration.js.map +1 -1
  41. package/dist/config/migrations/custom/fetch-release-notes-migration.js +2 -3
  42. package/dist/config/migrations/custom/fetch-release-notes-migration.js.map +1 -1
  43. package/dist/config/migrations/custom/file-match-migration.js +3 -4
  44. package/dist/config/migrations/custom/file-match-migration.js.map +1 -1
  45. package/dist/config/migrations/custom/host-rules-migration.js +6 -7
  46. package/dist/config/migrations/custom/host-rules-migration.js.map +1 -1
  47. package/dist/config/migrations/custom/ignore-npmrc-file-migration.js +2 -3
  48. package/dist/config/migrations/custom/ignore-npmrc-file-migration.js.map +1 -1
  49. package/dist/config/migrations/custom/include-forks-migration.js +2 -3
  50. package/dist/config/migrations/custom/include-forks-migration.js.map +1 -1
  51. package/dist/config/migrations/custom/match-datasources-migration.js +2 -3
  52. package/dist/config/migrations/custom/match-datasources-migration.js.map +1 -1
  53. package/dist/config/migrations/custom/match-managers-migration.js +2 -3
  54. package/dist/config/migrations/custom/match-managers-migration.js.map +1 -1
  55. package/dist/config/migrations/custom/match-strings-migration.js +2 -3
  56. package/dist/config/migrations/custom/match-strings-migration.js.map +1 -1
  57. package/dist/config/migrations/custom/package-files-migration.js +6 -7
  58. package/dist/config/migrations/custom/package-files-migration.js.map +1 -1
  59. package/dist/config/migrations/custom/package-rules-migration.js +15 -16
  60. package/dist/config/migrations/custom/package-rules-migration.js.map +1 -1
  61. package/dist/config/migrations/custom/packages-migration.js +3 -4
  62. package/dist/config/migrations/custom/packages-migration.js.map +1 -1
  63. package/dist/config/migrations/custom/path-rules-migration.js +3 -4
  64. package/dist/config/migrations/custom/path-rules-migration.js.map +1 -1
  65. package/dist/config/migrations/custom/pin-versions-migration.js +2 -3
  66. package/dist/config/migrations/custom/pin-versions-migration.js.map +1 -1
  67. package/dist/config/migrations/custom/platform-commit-migration.js +2 -3
  68. package/dist/config/migrations/custom/platform-commit-migration.js.map +1 -1
  69. package/dist/config/migrations/custom/post-update-options-migration.js +2 -3
  70. package/dist/config/migrations/custom/post-update-options-migration.js.map +1 -1
  71. package/dist/config/migrations/custom/rebase-stale-prs-migration.js +2 -3
  72. package/dist/config/migrations/custom/rebase-stale-prs-migration.js.map +1 -1
  73. package/dist/config/migrations/custom/recreate-closed-migration.js +2 -3
  74. package/dist/config/migrations/custom/recreate-closed-migration.js.map +1 -1
  75. package/dist/config/migrations/custom/renovate-fork-migration.js +2 -3
  76. package/dist/config/migrations/custom/renovate-fork-migration.js.map +1 -1
  77. package/dist/config/migrations/custom/schedule-migration.js +4 -4
  78. package/dist/config/migrations/custom/schedule-migration.js.map +1 -1
  79. package/dist/config/migrations/custom/semantic-commits-migration.js +2 -3
  80. package/dist/config/migrations/custom/semantic-commits-migration.js.map +1 -1
  81. package/dist/config/migrations/custom/semantic-prefix-migration.js +2 -3
  82. package/dist/config/migrations/custom/semantic-prefix-migration.js.map +1 -1
  83. package/dist/config/migrations/custom/stability-days-migration.js +2 -3
  84. package/dist/config/migrations/custom/stability-days-migration.js.map +1 -1
  85. package/dist/config/migrations/custom/suppress-notifications-migration.js +2 -3
  86. package/dist/config/migrations/custom/suppress-notifications-migration.js.map +1 -1
  87. package/dist/config/migrations/custom/unpublish-safe-migration.js +2 -3
  88. package/dist/config/migrations/custom/unpublish-safe-migration.js.map +1 -1
  89. package/dist/config/migrations/migrations-service.js +2 -3
  90. package/dist/config/migrations/migrations-service.js.map +1 -1
  91. package/dist/config/options/index.js +7 -0
  92. package/dist/config/options/index.js.map +1 -1
  93. package/dist/config/presets/github/index.js +2 -3
  94. package/dist/config/presets/github/index.js.map +1 -1
  95. package/dist/config/presets/gitlab/index.js +2 -3
  96. package/dist/config/presets/gitlab/index.js.map +1 -1
  97. package/dist/config/presets/index.js +8 -8
  98. package/dist/config/presets/index.js.map +1 -1
  99. package/dist/config/presets/parse.js +2 -3
  100. package/dist/config/presets/parse.js.map +1 -1
  101. package/dist/config/secrets.js +3 -4
  102. package/dist/config/secrets.js.map +1 -1
  103. package/dist/config/types.d.ts +1 -0
  104. package/dist/config/types.js.map +1 -1
  105. package/dist/config/validation-helpers/match-base-branches.js +2 -3
  106. package/dist/config/validation-helpers/match-base-branches.js.map +1 -1
  107. package/dist/config/validation-helpers/regex-glob-matchers.js +2 -3
  108. package/dist/config/validation-helpers/regex-glob-matchers.js.map +1 -1
  109. package/dist/config/validation-helpers/utils.js +6 -6
  110. package/dist/config/validation-helpers/utils.js.map +1 -1
  111. package/dist/config/validation.js +29 -29
  112. package/dist/config/validation.js.map +1 -1
  113. package/dist/instrumentation/reporting.js +7 -8
  114. package/dist/instrumentation/reporting.js.map +1 -1
  115. package/dist/instrumentation/utils.js +2 -3
  116. package/dist/instrumentation/utils.js.map +1 -1
  117. package/dist/logger/err-serializer.js +2 -2
  118. package/dist/logger/err-serializer.js.map +1 -1
  119. package/dist/logger/index.js +3 -3
  120. package/dist/logger/index.js.map +1 -1
  121. package/dist/logger/renovate-logger.js +4 -5
  122. package/dist/logger/renovate-logger.js.map +1 -1
  123. package/dist/logger/utils.js +19 -19
  124. package/dist/logger/utils.js.map +1 -1
  125. package/dist/modules/datasource/aws-eks-addon/index.js +2 -2
  126. package/dist/modules/datasource/aws-eks-addon/index.js.map +1 -1
  127. package/dist/modules/datasource/bazel/index.js +2 -2
  128. package/dist/modules/datasource/bazel/index.js.map +1 -1
  129. package/dist/modules/datasource/bitrise/index.js +2 -2
  130. package/dist/modules/datasource/bitrise/index.js.map +1 -1
  131. package/dist/modules/datasource/common.js +4 -4
  132. package/dist/modules/datasource/common.js.map +1 -1
  133. package/dist/modules/datasource/conan/index.js +3 -3
  134. package/dist/modules/datasource/conan/index.js.map +1 -1
  135. package/dist/modules/datasource/custom/formats/html.js +2 -5
  136. package/dist/modules/datasource/custom/formats/html.js.map +1 -1
  137. package/dist/modules/datasource/custom/index.js +2 -3
  138. package/dist/modules/datasource/custom/index.js.map +1 -1
  139. package/dist/modules/datasource/custom/utils.js +4 -4
  140. package/dist/modules/datasource/custom/utils.js.map +1 -1
  141. package/dist/modules/datasource/dart-version/index.js +2 -3
  142. package/dist/modules/datasource/dart-version/index.js.map +1 -1
  143. package/dist/modules/datasource/deno/index.js +2 -2
  144. package/dist/modules/datasource/deno/index.js.map +1 -1
  145. package/dist/modules/datasource/docker/common.js +5 -5
  146. package/dist/modules/datasource/docker/common.js.map +1 -1
  147. package/dist/modules/datasource/docker/index.js +6 -6
  148. package/dist/modules/datasource/docker/index.js.map +1 -1
  149. package/dist/modules/datasource/endoflife-date/index.js +2 -2
  150. package/dist/modules/datasource/endoflife-date/index.js.map +1 -1
  151. package/dist/modules/datasource/galaxy/index.js +2 -2
  152. package/dist/modules/datasource/galaxy/index.js.map +1 -1
  153. package/dist/modules/datasource/galaxy-collection/index.js +2 -2
  154. package/dist/modules/datasource/galaxy-collection/index.js.map +1 -1
  155. package/dist/modules/datasource/git-refs/base.js +2 -2
  156. package/dist/modules/datasource/git-refs/base.js.map +1 -1
  157. package/dist/modules/datasource/github-release-attachments/index.js +2 -2
  158. package/dist/modules/datasource/github-release-attachments/index.js.map +1 -1
  159. package/dist/modules/datasource/github-releases/index.js +2 -3
  160. package/dist/modules/datasource/github-releases/index.js.map +1 -1
  161. package/dist/modules/datasource/github-tags/index.js +2 -3
  162. package/dist/modules/datasource/github-tags/index.js.map +1 -1
  163. package/dist/modules/datasource/go/goproxy-parser.js +3 -3
  164. package/dist/modules/datasource/go/goproxy-parser.js.map +1 -1
  165. package/dist/modules/datasource/go/index.js +2 -2
  166. package/dist/modules/datasource/go/index.js.map +1 -1
  167. package/dist/modules/datasource/go/releases-goproxy.js +3 -3
  168. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  169. package/dist/modules/datasource/hackage/index.js +2 -2
  170. package/dist/modules/datasource/hackage/index.js.map +1 -1
  171. package/dist/modules/datasource/hex/schema.js +2 -3
  172. package/dist/modules/datasource/hex/schema.js.map +1 -1
  173. package/dist/modules/datasource/hexpm-bob/index.js +2 -2
  174. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  175. package/dist/modules/datasource/index.js +14 -14
  176. package/dist/modules/datasource/index.js.map +1 -1
  177. package/dist/modules/datasource/jsr/index.js +2 -2
  178. package/dist/modules/datasource/jsr/index.js.map +1 -1
  179. package/dist/modules/datasource/jsr/util.js +3 -4
  180. package/dist/modules/datasource/jsr/util.js.map +1 -1
  181. package/dist/modules/datasource/metadata.js +5 -5
  182. package/dist/modules/datasource/metadata.js.map +1 -1
  183. package/dist/modules/datasource/npm/get.js +2 -2
  184. package/dist/modules/datasource/npm/get.js.map +1 -1
  185. package/dist/modules/datasource/npm/npmrc.js +7 -7
  186. package/dist/modules/datasource/npm/npmrc.js.map +1 -1
  187. package/dist/modules/datasource/nuget/v3.js +2 -2
  188. package/dist/modules/datasource/nuget/v3.js.map +1 -1
  189. package/dist/modules/datasource/packagist/index.js +2 -2
  190. package/dist/modules/datasource/packagist/index.js.map +1 -1
  191. package/dist/modules/datasource/packagist/schema.js +3 -4
  192. package/dist/modules/datasource/packagist/schema.js.map +1 -1
  193. package/dist/modules/datasource/pypi/index.js +2 -2
  194. package/dist/modules/datasource/pypi/index.js.map +1 -1
  195. package/dist/modules/datasource/repology/index.js +3 -3
  196. package/dist/modules/datasource/repology/index.js.map +1 -1
  197. package/dist/modules/datasource/rubygems/schema.js +5 -6
  198. package/dist/modules/datasource/rubygems/schema.js.map +1 -1
  199. package/dist/modules/datasource/util.js +2 -3
  200. package/dist/modules/datasource/util.js.map +1 -1
  201. package/dist/modules/manager/argocd/extract.js +3 -4
  202. package/dist/modules/manager/argocd/extract.js.map +1 -1
  203. package/dist/modules/manager/asdf/extract.js +2 -3
  204. package/dist/modules/manager/asdf/extract.js.map +1 -1
  205. package/dist/modules/manager/bazel/artifacts.js +2 -2
  206. package/dist/modules/manager/bazel/artifacts.js.map +1 -1
  207. package/dist/modules/manager/bazel/common.js +4 -5
  208. package/dist/modules/manager/bazel/common.js.map +1 -1
  209. package/dist/modules/manager/bazel/rules/http.js +3 -4
  210. package/dist/modules/manager/bazel/rules/http.js.map +1 -1
  211. package/dist/modules/manager/bazel/rules/maven.js +2 -3
  212. package/dist/modules/manager/bazel/rules/maven.js.map +1 -1
  213. package/dist/modules/manager/bazel-module/parser/starlark.js +2 -3
  214. package/dist/modules/manager/bazel-module/parser/starlark.js.map +1 -1
  215. package/dist/modules/manager/bazel-module/rules.js +3 -3
  216. package/dist/modules/manager/bazel-module/rules.js.map +1 -1
  217. package/dist/modules/manager/bitrise/utils.js +3 -4
  218. package/dist/modules/manager/bitrise/utils.js.map +1 -1
  219. package/dist/modules/manager/buildpacks/extract.js +2 -3
  220. package/dist/modules/manager/buildpacks/extract.js.map +1 -1
  221. package/dist/modules/manager/bun/artifacts.js +2 -2
  222. package/dist/modules/manager/bun/artifacts.js.map +1 -1
  223. package/dist/modules/manager/bun/extract.js +2 -3
  224. package/dist/modules/manager/bun/extract.js.map +1 -1
  225. package/dist/modules/manager/bundler/artifacts.js +3 -3
  226. package/dist/modules/manager/bundler/artifacts.js.map +1 -1
  227. package/dist/modules/manager/bundler/extract.js +5 -6
  228. package/dist/modules/manager/bundler/extract.js.map +1 -1
  229. package/dist/modules/manager/cargo/extract.js +3 -4
  230. package/dist/modules/manager/cargo/extract.js.map +1 -1
  231. package/dist/modules/manager/composer/artifacts.js +3 -3
  232. package/dist/modules/manager/composer/artifacts.js.map +1 -1
  233. package/dist/modules/manager/composer/utils.js +3 -4
  234. package/dist/modules/manager/composer/utils.js.map +1 -1
  235. package/dist/modules/manager/conan/extract.js +2 -3
  236. package/dist/modules/manager/conan/extract.js.map +1 -1
  237. package/dist/modules/manager/copier/utils.js +3 -4
  238. package/dist/modules/manager/copier/utils.js.map +1 -1
  239. package/dist/modules/manager/crow/extract.js +2 -3
  240. package/dist/modules/manager/crow/extract.js.map +1 -1
  241. package/dist/modules/manager/custom/jsonata/index.js +2 -3
  242. package/dist/modules/manager/custom/jsonata/index.js.map +1 -1
  243. package/dist/modules/manager/custom/jsonata/utils.js +3 -3
  244. package/dist/modules/manager/custom/jsonata/utils.js.map +1 -1
  245. package/dist/modules/manager/custom/regex/index.js +2 -3
  246. package/dist/modules/manager/custom/regex/index.js.map +1 -1
  247. package/dist/modules/manager/custom/regex/strategies.js +4 -5
  248. package/dist/modules/manager/custom/regex/strategies.js.map +1 -1
  249. package/dist/modules/manager/custom/regex/utils.js +2 -2
  250. package/dist/modules/manager/custom/regex/utils.js.map +1 -1
  251. package/dist/modules/manager/custom/utils.js +6 -7
  252. package/dist/modules/manager/custom/utils.js.map +1 -1
  253. package/dist/modules/manager/deps-edn/extract.js +13 -14
  254. package/dist/modules/manager/deps-edn/extract.js.map +1 -1
  255. package/dist/modules/manager/deps-edn/parser.js +2 -2
  256. package/dist/modules/manager/deps-edn/parser.js.map +1 -1
  257. package/dist/modules/manager/devbox/artifacts.js +2 -2
  258. package/dist/modules/manager/devbox/artifacts.js.map +1 -1
  259. package/dist/modules/manager/docker-compose/extract.js +3 -4
  260. package/dist/modules/manager/docker-compose/extract.js.map +1 -1
  261. package/dist/modules/manager/docker-compose/schema.js +2 -3
  262. package/dist/modules/manager/docker-compose/schema.js.map +1 -1
  263. package/dist/modules/manager/dockerfile/extract.js +5 -5
  264. package/dist/modules/manager/dockerfile/extract.js.map +1 -1
  265. package/dist/modules/manager/fingerprint.generated.js +5 -5
  266. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  267. package/dist/modules/manager/fleet/extract.js +2 -3
  268. package/dist/modules/manager/fleet/extract.js.map +1 -1
  269. package/dist/modules/manager/flux/extract.js +2 -3
  270. package/dist/modules/manager/flux/extract.js.map +1 -1
  271. package/dist/modules/manager/glasskube/extract.js +2 -3
  272. package/dist/modules/manager/glasskube/extract.js.map +1 -1
  273. package/dist/modules/manager/gleam/artifacts.js +3 -4
  274. package/dist/modules/manager/gleam/artifacts.js.map +1 -1
  275. package/dist/modules/manager/gomod/artifacts.js +2 -2
  276. package/dist/modules/manager/gomod/artifacts.js.map +1 -1
  277. package/dist/modules/manager/gradle/artifacts.js +2 -2
  278. package/dist/modules/manager/gradle/artifacts.js.map +1 -1
  279. package/dist/modules/manager/gradle/extract/catalog.js +5 -5
  280. package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
  281. package/dist/modules/manager/gradle-wrapper/artifacts.js +2 -2
  282. package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
  283. package/dist/modules/manager/helm-requirements/extract.js +2 -3
  284. package/dist/modules/manager/helm-requirements/extract.js.map +1 -1
  285. package/dist/modules/manager/helmfile/artifacts.js +2 -3
  286. package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
  287. package/dist/modules/manager/helmfile/extract.js +4 -5
  288. package/dist/modules/manager/helmfile/extract.js.map +1 -1
  289. package/dist/modules/manager/helmsman/extract.js +4 -5
  290. package/dist/modules/manager/helmsman/extract.js.map +1 -1
  291. package/dist/modules/manager/helmv3/artifacts.js +4 -4
  292. package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
  293. package/dist/modules/manager/helmv3/extract.js +4 -5
  294. package/dist/modules/manager/helmv3/extract.js.map +1 -1
  295. package/dist/modules/manager/helmv3/oci.js +3 -4
  296. package/dist/modules/manager/helmv3/oci.js.map +1 -1
  297. package/dist/modules/manager/jenkins/extract.js +3 -3
  298. package/dist/modules/manager/jenkins/extract.js.map +1 -1
  299. package/dist/modules/manager/kotlin-script/extract.js +3 -4
  300. package/dist/modules/manager/kotlin-script/extract.js.map +1 -1
  301. package/dist/modules/manager/kubernetes/extract.js +4 -4
  302. package/dist/modules/manager/kubernetes/extract.js.map +1 -1
  303. package/dist/modules/manager/kustomize/artifacts.js +8 -8
  304. package/dist/modules/manager/kustomize/artifacts.js.map +1 -1
  305. package/dist/modules/manager/kustomize/extract.js +8 -8
  306. package/dist/modules/manager/kustomize/extract.js.map +1 -1
  307. package/dist/modules/manager/maven/extract.js +4 -4
  308. package/dist/modules/manager/maven/extract.js.map +1 -1
  309. package/dist/modules/manager/maven/update.js +2 -2
  310. package/dist/modules/manager/maven/update.js.map +1 -1
  311. package/dist/modules/manager/maven-wrapper/artifacts.js +2 -2
  312. package/dist/modules/manager/maven-wrapper/artifacts.js.map +1 -1
  313. package/dist/modules/manager/mise/backends.js +9 -10
  314. package/dist/modules/manager/mise/backends.js.map +1 -1
  315. package/dist/modules/manager/mise/extract.js +7 -8
  316. package/dist/modules/manager/mise/extract.js.map +1 -1
  317. package/dist/modules/manager/mix/artifacts.js +3 -3
  318. package/dist/modules/manager/mix/artifacts.js.map +1 -1
  319. package/dist/modules/manager/nix/artifacts.js +2 -2
  320. package/dist/modules/manager/nix/artifacts.js.map +1 -1
  321. package/dist/modules/manager/npm/detect.js +2 -2
  322. package/dist/modules/manager/npm/detect.js.map +1 -1
  323. package/dist/modules/manager/npm/extract/common/dependency.js +2 -2
  324. package/dist/modules/manager/npm/extract/common/dependency.js.map +1 -1
  325. package/dist/modules/manager/npm/extract/common/overrides.js +3 -4
  326. package/dist/modules/manager/npm/extract/common/overrides.js.map +1 -1
  327. package/dist/modules/manager/npm/extract/common/package-file.js +8 -9
  328. package/dist/modules/manager/npm/extract/common/package-file.js.map +1 -1
  329. package/dist/modules/manager/npm/extract/index.js +10 -10
  330. package/dist/modules/manager/npm/extract/index.js.map +1 -1
  331. package/dist/modules/manager/npm/extract/pnpm.js +7 -7
  332. package/dist/modules/manager/npm/extract/pnpm.js.map +1 -1
  333. package/dist/modules/manager/npm/extract/post/locked-versions.js +3 -3
  334. package/dist/modules/manager/npm/extract/post/locked-versions.js.map +1 -1
  335. package/dist/modules/manager/npm/extract/post/monorepo.js +3 -4
  336. package/dist/modules/manager/npm/extract/post/monorepo.js.map +1 -1
  337. package/dist/modules/manager/npm/extract/yarn.js +2 -3
  338. package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
  339. package/dist/modules/manager/npm/extract/yarnrc.js +2 -3
  340. package/dist/modules/manager/npm/extract/yarnrc.js.map +1 -1
  341. package/dist/modules/manager/npm/post-update/index.js +6 -6
  342. package/dist/modules/manager/npm/post-update/index.js.map +1 -1
  343. package/dist/modules/manager/npm/post-update/npm.js +4 -4
  344. package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
  345. package/dist/modules/manager/npm/post-update/pnpm.js +3 -3
  346. package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
  347. package/dist/modules/manager/npm/post-update/rules.js +2 -2
  348. package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
  349. package/dist/modules/manager/npm/post-update/utils.js +2 -2
  350. package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
  351. package/dist/modules/manager/npm/post-update/yarn.js +3 -3
  352. package/dist/modules/manager/npm/post-update/yarn.js.map +1 -1
  353. package/dist/modules/manager/npm/update/dependency/index.js +2 -3
  354. package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
  355. package/dist/modules/manager/npm/update/dependency/pnpm.js +2 -3
  356. package/dist/modules/manager/npm/update/dependency/pnpm.js.map +1 -1
  357. package/dist/modules/manager/npm/update/dependency/yarn.js +3 -4
  358. package/dist/modules/manager/npm/update/dependency/yarn.js.map +1 -1
  359. package/dist/modules/manager/nuget/config-formatter.js +2 -2
  360. package/dist/modules/manager/nuget/config-formatter.js.map +1 -1
  361. package/dist/modules/manager/nuget/extract.js +4 -4
  362. package/dist/modules/manager/nuget/extract.js.map +1 -1
  363. package/dist/modules/manager/nuget/package-tree.js +2 -2
  364. package/dist/modules/manager/nuget/package-tree.js.map +1 -1
  365. package/dist/modules/manager/ocb/extract.js +2 -3
  366. package/dist/modules/manager/ocb/extract.js.map +1 -1
  367. package/dist/modules/manager/osgi/extract.js +4 -4
  368. package/dist/modules/manager/osgi/extract.js.map +1 -1
  369. package/dist/modules/manager/pep621/artifacts.js +3 -4
  370. package/dist/modules/manager/pep621/artifacts.js.map +1 -1
  371. package/dist/modules/manager/pep621/processors/uv.js +2 -3
  372. package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
  373. package/dist/modules/manager/pep621/utils.js +8 -10
  374. package/dist/modules/manager/pep621/utils.js.map +1 -1
  375. package/dist/modules/manager/pep723/schema.js +2 -3
  376. package/dist/modules/manager/pep723/schema.js.map +1 -1
  377. package/dist/modules/manager/pip-compile/common.js +3 -3
  378. package/dist/modules/manager/pip-compile/common.js.map +1 -1
  379. package/dist/modules/manager/pip_requirements/artifacts.js +2 -3
  380. package/dist/modules/manager/pip_requirements/artifacts.js.map +1 -1
  381. package/dist/modules/manager/pip_requirements/extract.js +2 -3
  382. package/dist/modules/manager/pip_requirements/extract.js.map +1 -1
  383. package/dist/modules/manager/pipenv/artifacts.js +3 -4
  384. package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
  385. package/dist/modules/manager/pipenv/extract.js +6 -7
  386. package/dist/modules/manager/pipenv/extract.js.map +1 -1
  387. package/dist/modules/manager/pixi/artifacts.js +2 -3
  388. package/dist/modules/manager/pixi/artifacts.js.map +1 -1
  389. package/dist/modules/manager/pixi/extract.js +2 -3
  390. package/dist/modules/manager/pixi/extract.js.map +1 -1
  391. package/dist/modules/manager/poetry/artifacts.js +4 -5
  392. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  393. package/dist/modules/manager/poetry/extract.js +2 -3
  394. package/dist/modules/manager/poetry/extract.js.map +1 -1
  395. package/dist/modules/manager/pre-commit/extract.js +4 -5
  396. package/dist/modules/manager/pre-commit/extract.js.map +1 -1
  397. package/dist/modules/manager/pub/artifacts.js +3 -4
  398. package/dist/modules/manager/pub/artifacts.js.map +1 -1
  399. package/dist/modules/manager/pub/extract.js +8 -11
  400. package/dist/modules/manager/pub/extract.js.map +1 -1
  401. package/dist/modules/manager/renovate-config-presets/extract.js +4 -5
  402. package/dist/modules/manager/renovate-config-presets/extract.js.map +1 -1
  403. package/dist/modules/manager/tekton/extract.js +9 -10
  404. package/dist/modules/manager/tekton/extract.js.map +1 -1
  405. package/dist/modules/manager/terraform/base.js +2 -3
  406. package/dist/modules/manager/terraform/base.js.map +1 -1
  407. package/dist/modules/manager/terraform/extract.js +2 -2
  408. package/dist/modules/manager/terraform/extract.js.map +1 -1
  409. package/dist/modules/manager/terraform/extractors/others/modules.js +3 -4
  410. package/dist/modules/manager/terraform/extractors/others/modules.js.map +1 -1
  411. package/dist/modules/manager/terraform/extractors/others/providers.js +3 -4
  412. package/dist/modules/manager/terraform/extractors/others/providers.js.map +1 -1
  413. package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js +7 -8
  414. package/dist/modules/manager/terraform/extractors/resources/generic-docker-image-ref.js.map +1 -1
  415. package/dist/modules/manager/terraform/extractors/resources/helm-release.js +5 -6
  416. package/dist/modules/manager/terraform/extractors/resources/helm-release.js.map +1 -1
  417. package/dist/modules/manager/terraform/extractors/resources/terraform-workspace.js +3 -4
  418. package/dist/modules/manager/terraform/extractors/resources/terraform-workspace.js.map +1 -1
  419. package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js +4 -5
  420. package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js.map +1 -1
  421. package/dist/modules/manager/terraform/extractors/terraform-block/terraform-version.js +3 -3
  422. package/dist/modules/manager/terraform/extractors/terraform-block/terraform-version.js.map +1 -1
  423. package/dist/modules/manager/terraform/lockfile/index.js +2 -2
  424. package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
  425. package/dist/modules/manager/terraform/lockfile/util.js +2 -3
  426. package/dist/modules/manager/terraform/lockfile/util.js.map +1 -1
  427. package/dist/modules/manager/terraform/util.js +2 -3
  428. package/dist/modules/manager/terraform/util.js.map +1 -1
  429. package/dist/modules/manager/tflint-plugin/plugins.js +2 -3
  430. package/dist/modules/manager/tflint-plugin/plugins.js.map +1 -1
  431. package/dist/modules/manager/travis/extract.js +5 -6
  432. package/dist/modules/manager/travis/extract.js.map +1 -1
  433. package/dist/modules/manager/woodpecker/extract.js +2 -3
  434. package/dist/modules/manager/woodpecker/extract.js.map +1 -1
  435. package/dist/modules/platform/azure/index.js +2 -2
  436. package/dist/modules/platform/azure/index.js.map +1 -1
  437. package/dist/modules/platform/bitbucket/index.js +5 -5
  438. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  439. package/dist/modules/platform/bitbucket-server/pr-cache.js +2 -2
  440. package/dist/modules/platform/bitbucket-server/pr-cache.js.map +1 -1
  441. package/dist/modules/platform/bitbucket-server/utils.js +2 -2
  442. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  443. package/dist/modules/platform/codecommit/codecommit-client.js +2 -2
  444. package/dist/modules/platform/codecommit/codecommit-client.js.map +1 -1
  445. package/dist/modules/platform/forgejo/index.js +5 -5
  446. package/dist/modules/platform/forgejo/index.js.map +1 -1
  447. package/dist/modules/platform/forgejo/utils.js +2 -2
  448. package/dist/modules/platform/forgejo/utils.js.map +1 -1
  449. package/dist/modules/platform/gitea/index.js +5 -5
  450. package/dist/modules/platform/gitea/index.js.map +1 -1
  451. package/dist/modules/platform/gitea/utils.js +2 -2
  452. package/dist/modules/platform/gitea/utils.js.map +1 -1
  453. package/dist/modules/platform/github/common.js +4 -5
  454. package/dist/modules/platform/github/common.js.map +1 -1
  455. package/dist/modules/platform/github/index.js +5 -5
  456. package/dist/modules/platform/github/index.js.map +1 -1
  457. package/dist/modules/platform/github/pr.js +2 -3
  458. package/dist/modules/platform/github/pr.js.map +1 -1
  459. package/dist/modules/platform/gitlab/http.js +2 -3
  460. package/dist/modules/platform/gitlab/http.js.map +1 -1
  461. package/dist/modules/platform/gitlab/index.js +3 -3
  462. package/dist/modules/platform/gitlab/index.js.map +1 -1
  463. package/dist/modules/platform/gitlab/utils.js +3 -3
  464. package/dist/modules/platform/gitlab/utils.js.map +1 -1
  465. package/dist/modules/platform/pr-body.js +2 -3
  466. package/dist/modules/platform/pr-body.js.map +1 -1
  467. package/dist/modules/versioning/composer/index.js +2 -3
  468. package/dist/modules/versioning/composer/index.js.map +1 -1
  469. package/dist/modules/versioning/generic.js +5 -6
  470. package/dist/modules/versioning/generic.js.map +1 -1
  471. package/dist/modules/versioning/gradle/compare.js +3 -4
  472. package/dist/modules/versioning/gradle/compare.js.map +1 -1
  473. package/dist/modules/versioning/nixpkgs/index.js +6 -7
  474. package/dist/modules/versioning/nixpkgs/index.js.map +1 -1
  475. package/dist/modules/versioning/npm/range.js +2 -2
  476. package/dist/modules/versioning/npm/range.js.map +1 -1
  477. package/dist/modules/versioning/rpm/index.js +4 -5
  478. package/dist/modules/versioning/rpm/index.js.map +1 -1
  479. package/dist/modules/versioning/schema.js +2 -2
  480. package/dist/modules/versioning/schema.js.map +1 -1
  481. package/dist/modules/versioning/semver-coerced/index.js +3 -3
  482. package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
  483. package/dist/modules/versioning/semver-partial/index.js +4 -4
  484. package/dist/modules/versioning/semver-partial/index.js.map +1 -1
  485. package/dist/proxy.js +3 -4
  486. package/dist/proxy.js.map +1 -1
  487. package/dist/util/array.js +4 -5
  488. package/dist/util/array.js.map +1 -1
  489. package/dist/util/assign-keys.js +2 -3
  490. package/dist/util/assign-keys.js.map +1 -1
  491. package/dist/util/cache/package/decorator.js +6 -6
  492. package/dist/util/cache/package/decorator.js.map +1 -1
  493. package/dist/util/cache/package/ttl.js +4 -5
  494. package/dist/util/cache/package/ttl.js.map +1 -1
  495. package/dist/util/cache/repository/impl/base.js +3 -4
  496. package/dist/util/cache/repository/impl/base.js.map +1 -1
  497. package/dist/util/cache/repository/impl/s3.js +2 -3
  498. package/dist/util/cache/repository/impl/s3.js.map +1 -1
  499. package/dist/util/exec/common.js +2 -3
  500. package/dist/util/exec/common.js.map +1 -1
  501. package/dist/util/exec/containerbase.js +2 -2
  502. package/dist/util/exec/containerbase.js.map +1 -1
  503. package/dist/util/exec/docker/index.js +5 -5
  504. package/dist/util/exec/docker/index.js.map +1 -1
  505. package/dist/util/exec/index.js +2 -2
  506. package/dist/util/exec/index.js.map +1 -1
  507. package/dist/util/exec/utils.js +3 -4
  508. package/dist/util/exec/utils.js.map +1 -1
  509. package/dist/util/filter-map.js +2 -3
  510. package/dist/util/filter-map.js.map +1 -1
  511. package/dist/util/fs/index.js +3 -3
  512. package/dist/util/fs/index.js.map +1 -1
  513. package/dist/util/git/auth.js +2 -3
  514. package/dist/util/git/auth.js.map +1 -1
  515. package/dist/util/git/config.js +3 -4
  516. package/dist/util/git/config.js.map +1 -1
  517. package/dist/util/git/index.js +4 -4
  518. package/dist/util/git/index.js.map +1 -1
  519. package/dist/util/git/private-key.js +2 -2
  520. package/dist/util/git/private-key.js.map +1 -1
  521. package/dist/util/host-rules.js +6 -6
  522. package/dist/util/host-rules.js.map +1 -1
  523. package/dist/util/http/auth.js +3 -4
  524. package/dist/util/http/auth.js.map +1 -1
  525. package/dist/util/http/bitbucket-server.js +2 -3
  526. package/dist/util/http/bitbucket-server.js.map +1 -1
  527. package/dist/util/http/bitbucket.js +3 -4
  528. package/dist/util/http/bitbucket.js.map +1 -1
  529. package/dist/util/http/cache/package-http-cache-provider.js +2 -2
  530. package/dist/util/http/cache/package-http-cache-provider.js.map +1 -1
  531. package/dist/util/http/forgejo.js +3 -4
  532. package/dist/util/http/forgejo.js.map +1 -1
  533. package/dist/util/http/gitea.js +3 -4
  534. package/dist/util/http/gitea.js.map +1 -1
  535. package/dist/util/http/github.js +10 -10
  536. package/dist/util/http/github.js.map +1 -1
  537. package/dist/util/http/gitlab.js +4 -5
  538. package/dist/util/http/gitlab.js.map +1 -1
  539. package/dist/util/http/host-rules.js +10 -10
  540. package/dist/util/http/host-rules.js.map +1 -1
  541. package/dist/util/http/http.js +5 -5
  542. package/dist/util/http/http.js.map +1 -1
  543. package/dist/util/http/rate-limits.js +3 -3
  544. package/dist/util/http/rate-limits.js.map +1 -1
  545. package/dist/util/interpolator.js +8 -9
  546. package/dist/util/interpolator.js.map +1 -1
  547. package/dist/util/merge-confidence/index.js +5 -5
  548. package/dist/util/merge-confidence/index.js.map +1 -1
  549. package/dist/util/number.js +2 -3
  550. package/dist/util/number.js.map +1 -1
  551. package/dist/util/package-rules/base-branches.js +3 -4
  552. package/dist/util/package-rules/base-branches.js.map +1 -1
  553. package/dist/util/package-rules/categories.js +3 -4
  554. package/dist/util/package-rules/categories.js.map +1 -1
  555. package/dist/util/package-rules/current-age.js +3 -4
  556. package/dist/util/package-rules/current-age.js.map +1 -1
  557. package/dist/util/package-rules/current-value.js +2 -3
  558. package/dist/util/package-rules/current-value.js.map +1 -1
  559. package/dist/util/package-rules/current-version.js +5 -5
  560. package/dist/util/package-rules/current-version.js.map +1 -1
  561. package/dist/util/package-rules/datasources.js +3 -4
  562. package/dist/util/package-rules/datasources.js.map +1 -1
  563. package/dist/util/package-rules/dep-names.js +3 -4
  564. package/dist/util/package-rules/dep-names.js.map +1 -1
  565. package/dist/util/package-rules/dep-types.js +2 -3
  566. package/dist/util/package-rules/dep-types.js.map +1 -1
  567. package/dist/util/package-rules/files.js +4 -5
  568. package/dist/util/package-rules/files.js.map +1 -1
  569. package/dist/util/package-rules/index.js +6 -6
  570. package/dist/util/package-rules/index.js.map +1 -1
  571. package/dist/util/package-rules/managers.js +3 -4
  572. package/dist/util/package-rules/managers.js.map +1 -1
  573. package/dist/util/package-rules/merge-confidence.js +5 -6
  574. package/dist/util/package-rules/merge-confidence.js.map +1 -1
  575. package/dist/util/package-rules/new-value.js +2 -3
  576. package/dist/util/package-rules/new-value.js.map +1 -1
  577. package/dist/util/package-rules/package-names.js +2 -3
  578. package/dist/util/package-rules/package-names.js.map +1 -1
  579. package/dist/util/package-rules/repositories.js +3 -4
  580. package/dist/util/package-rules/repositories.js.map +1 -1
  581. package/dist/util/package-rules/sourceurls.js +2 -3
  582. package/dist/util/package-rules/sourceurls.js.map +1 -1
  583. package/dist/util/package-rules/update-types.js +2 -3
  584. package/dist/util/package-rules/update-types.js.map +1 -1
  585. package/dist/util/pretty-time.js +4 -4
  586. package/dist/util/pretty-time.js.map +1 -1
  587. package/dist/util/regex.js +2 -3
  588. package/dist/util/regex.js.map +1 -1
  589. package/dist/util/s3.js +2 -3
  590. package/dist/util/s3.js.map +1 -1
  591. package/dist/util/sanitize.js +2 -3
  592. package/dist/util/sanitize.js.map +1 -1
  593. package/dist/util/string-match.js +2 -3
  594. package/dist/util/string-match.js.map +1 -1
  595. package/dist/util/template/index.js +6 -6
  596. package/dist/util/template/index.js.map +1 -1
  597. package/dist/util/url.js +5 -5
  598. package/dist/util/url.js.map +1 -1
  599. package/dist/workers/global/autodiscover.js +3 -4
  600. package/dist/workers/global/autodiscover.js.map +1 -1
  601. package/dist/workers/global/config/parse/additional-config-file.js +4 -4
  602. package/dist/workers/global/config/parse/additional-config-file.js.map +1 -1
  603. package/dist/workers/global/config/parse/coersions.js +2 -2
  604. package/dist/workers/global/config/parse/coersions.js.map +1 -1
  605. package/dist/workers/global/config/parse/env.js +2 -2
  606. package/dist/workers/global/config/parse/env.js.map +1 -1
  607. package/dist/workers/global/config/parse/file.js +5 -5
  608. package/dist/workers/global/config/parse/file.js.map +1 -1
  609. package/dist/workers/global/config/parse/index.js +6 -7
  610. package/dist/workers/global/config/parse/index.js.map +1 -1
  611. package/dist/workers/global/config/parse/util.js +2 -2
  612. package/dist/workers/global/config/parse/util.js.map +1 -1
  613. package/dist/workers/global/index.js +5 -5
  614. package/dist/workers/global/index.js.map +1 -1
  615. package/dist/workers/global/limits.js +6 -7
  616. package/dist/workers/global/limits.js.map +1 -1
  617. package/dist/workers/repository/config-migration/branch/index.js +2 -3
  618. package/dist/workers/repository/config-migration/branch/index.js.map +1 -1
  619. package/dist/workers/repository/config-migration/branch/migrated-data.js +2 -2
  620. package/dist/workers/repository/config-migration/branch/migrated-data.js.map +1 -1
  621. package/dist/workers/repository/config-migration/pr/index.js +3 -3
  622. package/dist/workers/repository/config-migration/pr/index.js.map +1 -1
  623. package/dist/workers/repository/dependency-dashboard.js +10 -10
  624. package/dist/workers/repository/dependency-dashboard.js.map +1 -1
  625. package/dist/workers/repository/error.js +6 -1
  626. package/dist/workers/repository/error.js.map +1 -1
  627. package/dist/workers/repository/extract/index.js +2 -3
  628. package/dist/workers/repository/extract/index.js.map +1 -1
  629. package/dist/workers/repository/extract/manager-files.js +2 -3
  630. package/dist/workers/repository/extract/manager-files.js.map +1 -1
  631. package/dist/workers/repository/extract/supersedes.js +4 -5
  632. package/dist/workers/repository/extract/supersedes.js.map +1 -1
  633. package/dist/workers/repository/finalize/prune.js +2 -3
  634. package/dist/workers/repository/finalize/prune.js.map +1 -1
  635. package/dist/workers/repository/init/inherited.js +5 -5
  636. package/dist/workers/repository/init/inherited.js.map +1 -1
  637. package/dist/workers/repository/init/merge.js +13 -13
  638. package/dist/workers/repository/init/merge.js.map +1 -1
  639. package/dist/workers/repository/model/commit-message.js +2 -3
  640. package/dist/workers/repository/model/commit-message.js.map +1 -1
  641. package/dist/workers/repository/onboarding/branch/index.js +2 -3
  642. package/dist/workers/repository/onboarding/branch/index.js.map +1 -1
  643. package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js +5 -6
  644. package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js.map +1 -1
  645. package/dist/workers/repository/onboarding/pr/config-description.js +2 -5
  646. package/dist/workers/repository/onboarding/pr/config-description.js.map +1 -1
  647. package/dist/workers/repository/onboarding/pr/index.js +3 -3
  648. package/dist/workers/repository/onboarding/pr/index.js.map +1 -1
  649. package/dist/workers/repository/package-files.js +8 -9
  650. package/dist/workers/repository/package-files.js.map +1 -1
  651. package/dist/workers/repository/process/extract-update.js +2 -2
  652. package/dist/workers/repository/process/extract-update.js.map +1 -1
  653. package/dist/workers/repository/process/fetch.js +3 -3
  654. package/dist/workers/repository/process/fetch.js.map +1 -1
  655. package/dist/workers/repository/process/lookup/current.js +2 -3
  656. package/dist/workers/repository/process/lookup/current.js.map +1 -1
  657. package/dist/workers/repository/process/lookup/filter-checks.js +4 -5
  658. package/dist/workers/repository/process/lookup/filter-checks.js.map +1 -1
  659. package/dist/workers/repository/process/lookup/generate.js +2 -3
  660. package/dist/workers/repository/process/lookup/generate.js.map +1 -1
  661. package/dist/workers/repository/process/lookup/index.js +15 -16
  662. package/dist/workers/repository/process/lookup/index.js.map +1 -1
  663. package/dist/workers/repository/process/lookup/utils.js +7 -7
  664. package/dist/workers/repository/process/lookup/utils.js.map +1 -1
  665. package/dist/workers/repository/process/vulnerabilities.js +11 -11
  666. package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
  667. package/dist/workers/repository/process/write.js +2 -3
  668. package/dist/workers/repository/process/write.js.map +1 -1
  669. package/dist/workers/repository/reconfigure/comment.js +2 -5
  670. package/dist/workers/repository/reconfigure/comment.js.map +1 -1
  671. package/dist/workers/repository/reconfigure/utils.js +2 -3
  672. package/dist/workers/repository/reconfigure/utils.js.map +1 -1
  673. package/dist/workers/repository/reconfigure/validate.js +2 -3
  674. package/dist/workers/repository/reconfigure/validate.js.map +1 -1
  675. package/dist/workers/repository/update/branch/auto-replace.js +4 -5
  676. package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
  677. package/dist/workers/repository/update/branch/commit.js +3 -4
  678. package/dist/workers/repository/update/branch/commit.js.map +1 -1
  679. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +12 -5
  680. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
  681. package/dist/workers/repository/update/branch/get-updated.js +8 -9
  682. package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
  683. package/dist/workers/repository/update/branch/index.js +3 -3
  684. package/dist/workers/repository/update/branch/index.js.map +1 -1
  685. package/dist/workers/repository/update/branch/schedule.js +2 -2
  686. package/dist/workers/repository/update/branch/schedule.js.map +1 -1
  687. package/dist/workers/repository/update/pr/body/notes.js +2 -2
  688. package/dist/workers/repository/update/pr/body/notes.js.map +1 -1
  689. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js +2 -2
  690. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js.map +1 -1
  691. package/dist/workers/repository/update/pr/changelog/index.js +3 -3
  692. package/dist/workers/repository/update/pr/changelog/index.js.map +1 -1
  693. package/dist/workers/repository/update/pr/changelog/release-notes.js +4 -4
  694. package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
  695. package/dist/workers/repository/update/pr/changelog/source.js +8 -8
  696. package/dist/workers/repository/update/pr/changelog/source.js.map +1 -1
  697. package/dist/workers/repository/update/pr/code-owners.js +2 -2
  698. package/dist/workers/repository/update/pr/code-owners.js.map +1 -1
  699. package/dist/workers/repository/update/pr/index.js +7 -8
  700. package/dist/workers/repository/update/pr/index.js.map +1 -1
  701. package/dist/workers/repository/update/pr/labels.js +4 -4
  702. package/dist/workers/repository/update/pr/labels.js.map +1 -1
  703. package/dist/workers/repository/update/pr/participants.js +4 -5
  704. package/dist/workers/repository/update/pr/participants.js.map +1 -1
  705. package/dist/workers/repository/updates/generate.js +4 -4
  706. package/dist/workers/repository/updates/generate.js.map +1 -1
  707. package/package.json +3 -3
  708. package/renovate-schema.json +7 -2
@@ -1 +1 @@
1
- {"version":3,"file":"host-rules.js","sourceRoot":"","sources":["../../lib/util/host-rules.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../logger';\nimport type { CombinedHostRule, HostRule } from '../types';\nimport { clone } from './clone';\nimport * as sanitize from './sanitize';\nimport { toBase64 } from './string';\nimport { isHttpUrl, massageHostUrl, parseUrl } from './url';\n\nlet hostRules: HostRule[] = [];\n\nexport interface LegacyHostRule {\n hostName?: string;\n domainName?: string;\n baseUrl?: string;\n host?: string;\n endpoint?: string;\n}\n\nexport function migrateRule(rule: LegacyHostRule & HostRule): HostRule {\n const cloned: LegacyHostRule & HostRule = clone(rule);\n delete cloned.hostName;\n delete cloned.domainName;\n delete cloned.baseUrl;\n const result: HostRule = cloned;\n\n const { matchHost } = result;\n const { hostName, domainName, baseUrl } = rule;\n const hostValues = [matchHost, hostName, domainName, baseUrl].filter(Boolean);\n if (hostValues.length === 1) {\n const [matchHost] = hostValues;\n result.matchHost = matchHost;\n } else if (hostValues.length > 1) {\n throw new Error(\n `hostRules cannot contain more than one host-matching field - use \"matchHost\" only.`,\n );\n }\n\n return result;\n}\n\nexport function add(params: HostRule): void {\n const rule = migrateRule(params);\n\n const confidentialFields: (keyof HostRule)[] = ['password', 'token'];\n if (rule.matchHost) {\n rule.matchHost = massageHostUrl(rule.matchHost);\n const parsedUrl = parseUrl(rule.matchHost);\n rule.resolvedHost = parsedUrl?.hostname ?? rule.matchHost;\n confidentialFields.forEach((field) => {\n if (rule[field]) {\n logger.debug(\n // TODO: types (#22198)\n `Adding ${field} authentication for ${rule.matchHost!} (hostType=${\n rule.hostType\n }) to hostRules`,\n );\n }\n });\n }\n confidentialFields.forEach((field) => {\n const secret = rule[field];\n if (is.string(secret) && secret.length > 3) {\n sanitize.addSecretForSanitizing(secret);\n }\n });\n if (rule.username && rule.password) {\n sanitize.addSecretForSanitizing(\n toBase64(`${rule.username}:${rule.password}`),\n );\n }\n hostRules.push(rule);\n}\n\nexport interface HostRuleSearch {\n hostType?: string;\n url?: string;\n readOnly?: boolean;\n}\n\nexport function matchesHost(url: string, matchHost: string): boolean {\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n return false;\n }\n\n const parsedMatchHost = parseUrl(matchHost);\n if (isHttpUrl(parsedUrl) && isHttpUrl(parsedMatchHost)) {\n return parsedUrl.href.startsWith(parsedMatchHost!.href);\n }\n\n const { hostname } = parsedUrl;\n if (!hostname) {\n return false;\n }\n\n if (hostname === matchHost) {\n return true;\n }\n\n const topLevelSuffix = matchHost.startsWith('.')\n ? matchHost\n : `.${matchHost}`;\n return hostname.endsWith(topLevelSuffix);\n}\n\nfunction fromShorterToLongerMatchHost(a: HostRule, b: HostRule): number {\n if (!a.matchHost || !b.matchHost) {\n return 0;\n }\n return a.matchHost.length - b.matchHost.length;\n}\n\nfunction hostRuleRank({ hostType, matchHost, readOnly }: HostRule): number {\n if ((hostType || readOnly) && matchHost) {\n return 3;\n }\n\n if (matchHost) {\n return 2;\n }\n\n if (hostType) {\n return 1;\n }\n\n return 0;\n}\n\nfunction fromLowerToHigherRank(a: HostRule, b: HostRule): number {\n return hostRuleRank(a) - hostRuleRank(b);\n}\n\nexport function find(search: HostRuleSearch): CombinedHostRule {\n if ([search.hostType, search.url].every(is.falsy)) {\n logger.warn({ search }, 'Invalid hostRules search');\n return {};\n }\n\n // Sort primarily by rank, and secondarily by matchHost length\n const sortedRules = hostRules\n .sort(fromShorterToLongerMatchHost)\n .sort(fromLowerToHigherRank);\n\n const matchedRules: HostRule[] = [];\n for (const rule of sortedRules) {\n let hostTypeMatch = true;\n let hostMatch = true;\n let readOnlyMatch = true;\n\n if (rule.hostType) {\n hostTypeMatch = false;\n if (search.hostType === rule.hostType) {\n hostTypeMatch = true;\n }\n }\n\n if (rule.matchHost && rule.resolvedHost) {\n hostMatch = false;\n if (search.url) {\n hostMatch = matchesHost(search.url, rule.matchHost);\n }\n }\n\n if (!is.undefined(rule.readOnly)) {\n readOnlyMatch = false;\n if (search.readOnly === rule.readOnly) {\n readOnlyMatch = true;\n hostTypeMatch = true; // When we match `readOnly`, we don't care about `hostType`\n }\n }\n\n if (hostTypeMatch && readOnlyMatch && hostMatch) {\n matchedRules.push(clone(rule));\n }\n }\n\n const res: HostRule = Object.assign({}, ...matchedRules);\n delete res.hostType;\n delete res.resolvedHost;\n delete res.matchHost;\n delete res.readOnly;\n return res;\n}\n\nexport function hosts({ hostType }: { hostType: string }): string[] {\n return hostRules\n .filter((rule) => rule.hostType === hostType)\n .map((rule) => rule.resolvedHost)\n .filter(is.truthy);\n}\n\nexport function hostType({ url }: { url: string }): string | null {\n return (\n hostRules\n .filter((rule) => rule.matchHost && matchesHost(url, rule.matchHost))\n .sort(fromShorterToLongerMatchHost)\n .map((rule) => rule.hostType)\n .filter(is.truthy)\n .pop() ?? null\n );\n}\n\nexport function findAll({ hostType }: { hostType: string }): HostRule[] {\n return hostRules.filter((rule) => rule.hostType === hostType);\n}\n\n/**\n * @returns a deep copy of all known host rules without any filtering\n */\nexport function getAll(): HostRule[] {\n return clone(hostRules);\n}\n\nexport function clear(): void {\n logger.debug('Clearing hostRules');\n hostRules = [];\n sanitize.clearRepoSanitizedSecretsList();\n}\n"]}
1
+ {"version":3,"file":"host-rules.js","sourceRoot":"","sources":["../../lib/util/host-rules.ts"],"names":[],"mappings":"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","sourcesContent":["import { isFalsy, isString, isTruthy, isUndefined } from '@sindresorhus/is';\nimport { logger } from '../logger';\nimport type { CombinedHostRule, HostRule } from '../types';\nimport { clone } from './clone';\nimport * as sanitize from './sanitize';\nimport { toBase64 } from './string';\nimport { isHttpUrl, massageHostUrl, parseUrl } from './url';\n\nlet hostRules: HostRule[] = [];\n\nexport interface LegacyHostRule {\n hostName?: string;\n domainName?: string;\n baseUrl?: string;\n host?: string;\n endpoint?: string;\n}\n\nexport function migrateRule(rule: LegacyHostRule & HostRule): HostRule {\n const cloned: LegacyHostRule & HostRule = clone(rule);\n delete cloned.hostName;\n delete cloned.domainName;\n delete cloned.baseUrl;\n const result: HostRule = cloned;\n\n const { matchHost } = result;\n const { hostName, domainName, baseUrl } = rule;\n const hostValues = [matchHost, hostName, domainName, baseUrl].filter(Boolean);\n if (hostValues.length === 1) {\n const [matchHost] = hostValues;\n result.matchHost = matchHost;\n } else if (hostValues.length > 1) {\n throw new Error(\n `hostRules cannot contain more than one host-matching field - use \"matchHost\" only.`,\n );\n }\n\n return result;\n}\n\nexport function add(params: HostRule): void {\n const rule = migrateRule(params);\n\n const confidentialFields: (keyof HostRule)[] = ['password', 'token'];\n if (rule.matchHost) {\n rule.matchHost = massageHostUrl(rule.matchHost);\n const parsedUrl = parseUrl(rule.matchHost);\n rule.resolvedHost = parsedUrl?.hostname ?? rule.matchHost;\n confidentialFields.forEach((field) => {\n if (rule[field]) {\n logger.debug(\n // TODO: types (#22198)\n `Adding ${field} authentication for ${rule.matchHost!} (hostType=${\n rule.hostType\n }) to hostRules`,\n );\n }\n });\n }\n confidentialFields.forEach((field) => {\n const secret = rule[field];\n if (isString(secret) && secret.length > 3) {\n sanitize.addSecretForSanitizing(secret);\n }\n });\n if (rule.username && rule.password) {\n sanitize.addSecretForSanitizing(\n toBase64(`${rule.username}:${rule.password}`),\n );\n }\n hostRules.push(rule);\n}\n\nexport interface HostRuleSearch {\n hostType?: string;\n url?: string;\n readOnly?: boolean;\n}\n\nexport function matchesHost(url: string, matchHost: string): boolean {\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n return false;\n }\n\n const parsedMatchHost = parseUrl(matchHost);\n if (isHttpUrl(parsedUrl) && isHttpUrl(parsedMatchHost)) {\n return parsedUrl.href.startsWith(parsedMatchHost!.href);\n }\n\n const { hostname } = parsedUrl;\n if (!hostname) {\n return false;\n }\n\n if (hostname === matchHost) {\n return true;\n }\n\n const topLevelSuffix = matchHost.startsWith('.')\n ? matchHost\n : `.${matchHost}`;\n return hostname.endsWith(topLevelSuffix);\n}\n\nfunction fromShorterToLongerMatchHost(a: HostRule, b: HostRule): number {\n if (!a.matchHost || !b.matchHost) {\n return 0;\n }\n return a.matchHost.length - b.matchHost.length;\n}\n\nfunction hostRuleRank({ hostType, matchHost, readOnly }: HostRule): number {\n if ((hostType || readOnly) && matchHost) {\n return 3;\n }\n\n if (matchHost) {\n return 2;\n }\n\n if (hostType) {\n return 1;\n }\n\n return 0;\n}\n\nfunction fromLowerToHigherRank(a: HostRule, b: HostRule): number {\n return hostRuleRank(a) - hostRuleRank(b);\n}\n\nexport function find(search: HostRuleSearch): CombinedHostRule {\n if ([search.hostType, search.url].every(isFalsy)) {\n logger.warn({ search }, 'Invalid hostRules search');\n return {};\n }\n\n // Sort primarily by rank, and secondarily by matchHost length\n const sortedRules = hostRules\n .sort(fromShorterToLongerMatchHost)\n .sort(fromLowerToHigherRank);\n\n const matchedRules: HostRule[] = [];\n for (const rule of sortedRules) {\n let hostTypeMatch = true;\n let hostMatch = true;\n let readOnlyMatch = true;\n\n if (rule.hostType) {\n hostTypeMatch = false;\n if (search.hostType === rule.hostType) {\n hostTypeMatch = true;\n }\n }\n\n if (rule.matchHost && rule.resolvedHost) {\n hostMatch = false;\n if (search.url) {\n hostMatch = matchesHost(search.url, rule.matchHost);\n }\n }\n\n if (!isUndefined(rule.readOnly)) {\n readOnlyMatch = false;\n if (search.readOnly === rule.readOnly) {\n readOnlyMatch = true;\n hostTypeMatch = true; // When we match `readOnly`, we don't care about `hostType`\n }\n }\n\n if (hostTypeMatch && readOnlyMatch && hostMatch) {\n matchedRules.push(clone(rule));\n }\n }\n\n const res: HostRule = Object.assign({}, ...matchedRules);\n delete res.hostType;\n delete res.resolvedHost;\n delete res.matchHost;\n delete res.readOnly;\n return res;\n}\n\nexport function hosts({ hostType }: { hostType: string }): string[] {\n return hostRules\n .filter((rule) => rule.hostType === hostType)\n .map((rule) => rule.resolvedHost)\n .filter(isTruthy);\n}\n\nexport function hostType({ url }: { url: string }): string | null {\n return (\n hostRules\n .filter((rule) => rule.matchHost && matchesHost(url, rule.matchHost))\n .sort(fromShorterToLongerMatchHost)\n .map((rule) => rule.hostType)\n .filter(isTruthy)\n .pop() ?? null\n );\n}\n\nexport function findAll({ hostType }: { hostType: string }): HostRule[] {\n return hostRules.filter((rule) => rule.hostType === hostType);\n}\n\n/**\n * @returns a deep copy of all known host rules without any filtering\n */\nexport function getAll(): HostRule[] {\n return clone(hostRules);\n}\n\nexport function clear(): void {\n logger.debug('Clearing hostRules');\n hostRules = [];\n sanitize.clearRepoSanitizedSecretsList();\n}\n"]}
@@ -2,12 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.applyAuthorization = applyAuthorization;
4
4
  exports.removeAuthorization = removeAuthorization;
5
- const tslib_1 = require("tslib");
6
- const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
5
+ const is_1 = require("@sindresorhus/is");
7
6
  const constants_1 = require("../../constants");
8
7
  function applyAuthorization(inOptions) {
9
8
  const options = { ...inOptions };
10
- if (is_1.default.nonEmptyString(options.headers?.authorization) || options.noAuth) {
9
+ if ((0, is_1.isNonEmptyString)(options.headers?.authorization) || options.noAuth) {
11
10
  return options;
12
11
  }
13
12
  options.headers ??= {};
@@ -33,7 +32,7 @@ function applyAuthorization(inOptions) {
33
32
  if (options.token.startsWith('x-access-token:')) {
34
33
  const appToken = options.token.replace('x-access-token:', '');
35
34
  options.headers.authorization = `token ${appToken}`;
36
- if (is_1.default.string(options.headers.accept)) {
35
+ if ((0, is_1.isString)(options.headers.accept)) {
37
36
  options.headers.accept = options.headers.accept.replace('application/vnd.github.v3+json', 'application/vnd.github.machine-man-preview+json');
38
37
  }
39
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../lib/util/http/auth.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { Options } from 'got';\nimport {\n GITEA_API_USING_HOST_TYPES,\n GITHUB_API_USING_HOST_TYPES,\n GITLAB_API_USING_HOST_TYPES,\n} from '../../constants';\nimport type { GotOptions } from './types';\n\nexport type AuthGotOptions = Pick<\n GotOptions,\n | 'hostType'\n | 'headers'\n | 'noAuth'\n | 'context'\n | 'token'\n | 'username'\n | 'password'\n>;\n\nexport function applyAuthorization<GotOptions extends AuthGotOptions>(\n inOptions: GotOptions,\n): GotOptions {\n const options: GotOptions = { ...inOptions };\n\n if (is.nonEmptyString(options.headers?.authorization) || options.noAuth) {\n return options;\n }\n\n options.headers ??= {};\n if (options.token) {\n const authType = options.context?.authType;\n if (authType) {\n if (authType === 'Token-Only') {\n options.headers.authorization = options.token;\n } else {\n options.headers.authorization = `${authType} ${options.token}`;\n }\n } else if (\n options.hostType &&\n GITEA_API_USING_HOST_TYPES.includes(options.hostType)\n ) {\n // Gitea v1.8.0 and later support `Bearer` as alternate to `token`\n // https://github.com/go-gitea/gitea/pull/5378\n options.headers.authorization = `Bearer ${options.token}`;\n } else if (\n options.hostType &&\n GITHUB_API_USING_HOST_TYPES.includes(options.hostType)\n ) {\n options.headers.authorization = `token ${options.token}`;\n if (options.token.startsWith('x-access-token:')) {\n const appToken = options.token.replace('x-access-token:', '');\n options.headers.authorization = `token ${appToken}`;\n if (is.string(options.headers.accept)) {\n options.headers.accept = options.headers.accept.replace(\n 'application/vnd.github.v3+json',\n 'application/vnd.github.machine-man-preview+json',\n );\n }\n }\n } else if (\n options.hostType &&\n GITLAB_API_USING_HOST_TYPES.includes(options.hostType)\n ) {\n // GitLab versions earlier than 12.2 only support authentication with\n // a personal access token, which is 20 characters long.\n if (options.token.length === 20) {\n options.headers['Private-token'] = options.token;\n } else {\n options.headers.authorization = `Bearer ${options.token}`;\n }\n } else {\n options.headers.authorization = `Bearer ${options.token}`;\n }\n delete options.token;\n } else if (options.password !== undefined) {\n // Otherwise got will add username and password to url and header\n const auth = Buffer.from(\n `${options.username ?? ''}:${options.password}`,\n ).toString('base64');\n options.headers.authorization = `Basic ${auth}`;\n delete options.username;\n delete options.password;\n }\n return options;\n}\n\n// isAmazon return true if request options contains Amazon related headers\nfunction isAmazon(options: Options): boolean {\n return !!options.search?.includes('X-Amz-Algorithm');\n}\n\n// isAzureBlob return true if request options contains Azure container registry related data\nfunction isAzureBlob(options: Options): boolean {\n return !!(\n options.hostname?.endsWith('.blob.core.windows.net') && // lgtm [js/incomplete-url-substring-sanitization]\n options.href?.includes('/docker/registry')\n );\n}\n\n// removeAuthorization from the redirect options\nexport function removeAuthorization(options: Options): void {\n if (!options.password && !options.headers?.authorization) {\n return;\n }\n\n // Check if request has been redirected to Amazon or an Azure blob (ACR)\n if (isAmazon(options) || isAzureBlob(options)) {\n // if there is no port in the redirect URL string, then delete it from the redirect options.\n // This can be evaluated for removal after upgrading to Got v10\n const portInUrl = options.href?.split?.('/')?.[2]?.split(':')?.[1];\n if (!portInUrl) {\n delete options.port; // Redirect will instead use 80 or 443 for HTTP or HTTPS respectively\n }\n\n // registry is hosted on Amazon or Azure blob, redirect url includes\n // authentication which is not required and should be removed\n if (options?.headers?.authorization) {\n delete options.headers.authorization;\n }\n delete options.username;\n delete options.password;\n }\n}\n"]}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../lib/util/http/auth.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyString, isString } from '@sindresorhus/is';\nimport type { Options } from 'got';\nimport {\n GITEA_API_USING_HOST_TYPES,\n GITHUB_API_USING_HOST_TYPES,\n GITLAB_API_USING_HOST_TYPES,\n} from '../../constants';\nimport type { GotOptions } from './types';\n\nexport type AuthGotOptions = Pick<\n GotOptions,\n | 'hostType'\n | 'headers'\n | 'noAuth'\n | 'context'\n | 'token'\n | 'username'\n | 'password'\n>;\n\nexport function applyAuthorization<GotOptions extends AuthGotOptions>(\n inOptions: GotOptions,\n): GotOptions {\n const options: GotOptions = { ...inOptions };\n\n if (isNonEmptyString(options.headers?.authorization) || options.noAuth) {\n return options;\n }\n\n options.headers ??= {};\n if (options.token) {\n const authType = options.context?.authType;\n if (authType) {\n if (authType === 'Token-Only') {\n options.headers.authorization = options.token;\n } else {\n options.headers.authorization = `${authType} ${options.token}`;\n }\n } else if (\n options.hostType &&\n GITEA_API_USING_HOST_TYPES.includes(options.hostType)\n ) {\n // Gitea v1.8.0 and later support `Bearer` as alternate to `token`\n // https://github.com/go-gitea/gitea/pull/5378\n options.headers.authorization = `Bearer ${options.token}`;\n } else if (\n options.hostType &&\n GITHUB_API_USING_HOST_TYPES.includes(options.hostType)\n ) {\n options.headers.authorization = `token ${options.token}`;\n if (options.token.startsWith('x-access-token:')) {\n const appToken = options.token.replace('x-access-token:', '');\n options.headers.authorization = `token ${appToken}`;\n if (isString(options.headers.accept)) {\n options.headers.accept = options.headers.accept.replace(\n 'application/vnd.github.v3+json',\n 'application/vnd.github.machine-man-preview+json',\n );\n }\n }\n } else if (\n options.hostType &&\n GITLAB_API_USING_HOST_TYPES.includes(options.hostType)\n ) {\n // GitLab versions earlier than 12.2 only support authentication with\n // a personal access token, which is 20 characters long.\n if (options.token.length === 20) {\n options.headers['Private-token'] = options.token;\n } else {\n options.headers.authorization = `Bearer ${options.token}`;\n }\n } else {\n options.headers.authorization = `Bearer ${options.token}`;\n }\n delete options.token;\n } else if (options.password !== undefined) {\n // Otherwise got will add username and password to url and header\n const auth = Buffer.from(\n `${options.username ?? ''}:${options.password}`,\n ).toString('base64');\n options.headers.authorization = `Basic ${auth}`;\n delete options.username;\n delete options.password;\n }\n return options;\n}\n\n// isAmazon return true if request options contains Amazon related headers\nfunction isAmazon(options: Options): boolean {\n return !!options.search?.includes('X-Amz-Algorithm');\n}\n\n// isAzureBlob return true if request options contains Azure container registry related data\nfunction isAzureBlob(options: Options): boolean {\n return !!(\n options.hostname?.endsWith('.blob.core.windows.net') && // lgtm [js/incomplete-url-substring-sanitization]\n options.href?.includes('/docker/registry')\n );\n}\n\n// removeAuthorization from the redirect options\nexport function removeAuthorization(options: Options): void {\n if (!options.password && !options.headers?.authorization) {\n return;\n }\n\n // Check if request has been redirected to Amazon or an Azure blob (ACR)\n if (isAmazon(options) || isAzureBlob(options)) {\n // if there is no port in the redirect URL string, then delete it from the redirect options.\n // This can be evaluated for removal after upgrading to Got v10\n const portInUrl = options.href?.split?.('/')?.[2]?.split(':')?.[1];\n if (!portInUrl) {\n delete options.port; // Redirect will instead use 80 or 443 for HTTP or HTTPS respectively\n }\n\n // registry is hosted on Amazon or Azure blob, redirect url includes\n // authentication which is not required and should be removed\n if (options?.headers?.authorization) {\n delete options.headers.authorization;\n }\n delete options.username;\n delete options.password;\n }\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BitbucketServerHttp = exports.setBaseUrl = void 0;
4
- const tslib_1 = require("tslib");
5
- const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
4
+ const is_1 = require("@sindresorhus/is");
6
5
  const http_1 = require("./http");
7
6
  const MAX_LIMIT = 100;
8
7
  const MAX_PAGES = 100;
@@ -51,6 +50,6 @@ class BitbucketServerHttp extends http_1.HttpBase {
51
50
  }
52
51
  exports.BitbucketServerHttp = BitbucketServerHttp;
53
52
  function isPagedResult(obj) {
54
- return is_1.default.nonEmptyObject(obj) && is_1.default.array(obj.values);
53
+ return (0, is_1.isNonEmptyObject)(obj) && (0, is_1.isArray)(obj.values);
55
54
  }
56
55
  //# sourceMappingURL=bitbucket-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitbucket-server.js","sourceRoot":"","sources":["../../../lib/util/http/bitbucket-server.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,iCAAkE;AAGlE,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,IAAI,OAAe,CAAC;AACb,MAAM,UAAU,GAAG,CAAC,GAAW,EAAQ,EAAE;IAC9C,OAAO,GAAG,GAAG,CAAC;AAChB,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAaF,MAAa,mBAAoB,SAAQ,eAAoC;IAC3E,IAAuB,OAAO;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,IAAI,GAAG,kBAAkB,EAAE,OAAoC;QACzE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAEkB,KAAK,CAAC,iBAAiB,CACxC,MAAkB,EAClB,OAA8D;QAE9D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CAAC;QAE3D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC;YAClD,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAC1C,MAAM,EACN,IAAI,CACL,CAAC;QAEF,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;YACpC,CAAC;YAED,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YAE9C,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,SAAS,CAAC;YACtD,OAAO,aAAa,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACvC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEhE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAC9C,MAAM,EACN,IAAI,CACL,CAAC;gBACF,eAAe,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;YAChD,CAAC;YAED,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,eAAoB,EAAE,CAAC;QACnD,CAAC;QAED,OAAO,MAAyB,CAAC;IACnC,CAAC;CACF;AAxDD,kDAwDC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,YAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,YAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { HttpBase, type InternalJsonUnsafeOptions } from './http';\nimport type { HttpMethod, HttpOptions, HttpResponse } from './types';\n\nconst MAX_LIMIT = 100;\nconst MAX_PAGES = 100;\n\nlet baseUrl: string;\nexport const setBaseUrl = (url: string): void => {\n baseUrl = url;\n};\n\nexport interface BitbucketServerHttpOptions extends HttpOptions {\n paginate?: boolean;\n limit?: number;\n maxPages?: number;\n}\n\ninterface PagedResult<T = unknown> {\n nextPageStart?: number;\n values: T[];\n}\n\nexport class BitbucketServerHttp extends HttpBase<BitbucketServerHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(type = 'bitbucket-server', options?: BitbucketServerHttpOptions) {\n super(type, options);\n }\n\n protected override async requestJsonUnsafe<T>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<BitbucketServerHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);\n const opts = { ...options, url: resolvedUrl };\n opts.httpOptions ??= {};\n opts.httpOptions.headers ??= {};\n opts.httpOptions.headers['X-Atlassian-Token'] = 'no-check';\n\n const paginate = opts.httpOptions.paginate;\n if (paginate) {\n const limit = opts.httpOptions.limit ?? MAX_LIMIT;\n resolvedUrl.searchParams.set('limit', limit.toString());\n }\n\n const result = await super.requestJsonUnsafe<T | PagedResult<T>>(\n method,\n opts,\n );\n\n if (paginate && isPagedResult(result.body)) {\n if (opts.httpOptions) {\n delete opts.httpOptions.cacheProvider;\n opts.httpOptions.memCache = false;\n }\n\n const collectedValues = [...result.body.values];\n let nextPageStart = result.body.nextPageStart;\n\n let maxPages = opts.httpOptions.maxPages ?? MAX_PAGES;\n while (nextPageStart && --maxPages > 0) {\n resolvedUrl.searchParams.set('start', nextPageStart.toString());\n\n const nextResult = await super.requestJsonUnsafe<PagedResult<T>>(\n method,\n opts,\n );\n collectedValues.push(...nextResult.body.values);\n nextPageStart = nextResult.body.nextPageStart;\n }\n\n return { ...result, body: collectedValues as T };\n }\n\n return result as HttpResponse<T>;\n }\n}\n\nfunction isPagedResult(obj: unknown): obj is PagedResult {\n return is.nonEmptyObject(obj) && is.array(obj.values);\n}\n"]}
1
+ {"version":3,"file":"bitbucket-server.js","sourceRoot":"","sources":["../../../lib/util/http/bitbucket-server.ts"],"names":[],"mappings":";;;AAAA,yCAA6D;AAC7D,iCAAkE;AAGlE,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,IAAI,OAAe,CAAC;AACb,MAAM,UAAU,GAAG,CAAC,GAAW,EAAQ,EAAE;IAC9C,OAAO,GAAG,GAAG,CAAC;AAChB,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAaF,MAAa,mBAAoB,SAAQ,eAAoC;IAC3E,IAAuB,OAAO;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,IAAI,GAAG,kBAAkB,EAAE,OAAoC;QACzE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAEkB,KAAK,CAAC,iBAAiB,CACxC,MAAkB,EAClB,OAA8D;QAE9D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,UAAU,CAAC;QAE3D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC;YAClD,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAC1C,MAAM,EACN,IAAI,CACL,CAAC;QAEF,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;YACpC,CAAC;YAED,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YAE9C,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,SAAS,CAAC;YACtD,OAAO,aAAa,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACvC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEhE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAC9C,MAAM,EACN,IAAI,CACL,CAAC;gBACF,eAAe,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;YAChD,CAAC;YAED,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,eAAoB,EAAE,CAAC;QACnD,CAAC;QAED,OAAO,MAAyB,CAAC;IACnC,CAAC;CACF;AAxDD,kDAwDC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,IAAA,qBAAgB,EAAC,GAAG,CAAC,IAAI,IAAA,YAAO,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import { isArray, isNonEmptyObject } from '@sindresorhus/is';\nimport { HttpBase, type InternalJsonUnsafeOptions } from './http';\nimport type { HttpMethod, HttpOptions, HttpResponse } from './types';\n\nconst MAX_LIMIT = 100;\nconst MAX_PAGES = 100;\n\nlet baseUrl: string;\nexport const setBaseUrl = (url: string): void => {\n baseUrl = url;\n};\n\nexport interface BitbucketServerHttpOptions extends HttpOptions {\n paginate?: boolean;\n limit?: number;\n maxPages?: number;\n}\n\ninterface PagedResult<T = unknown> {\n nextPageStart?: number;\n values: T[];\n}\n\nexport class BitbucketServerHttp extends HttpBase<BitbucketServerHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(type = 'bitbucket-server', options?: BitbucketServerHttpOptions) {\n super(type, options);\n }\n\n protected override async requestJsonUnsafe<T>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<BitbucketServerHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);\n const opts = { ...options, url: resolvedUrl };\n opts.httpOptions ??= {};\n opts.httpOptions.headers ??= {};\n opts.httpOptions.headers['X-Atlassian-Token'] = 'no-check';\n\n const paginate = opts.httpOptions.paginate;\n if (paginate) {\n const limit = opts.httpOptions.limit ?? MAX_LIMIT;\n resolvedUrl.searchParams.set('limit', limit.toString());\n }\n\n const result = await super.requestJsonUnsafe<T | PagedResult<T>>(\n method,\n opts,\n );\n\n if (paginate && isPagedResult(result.body)) {\n if (opts.httpOptions) {\n delete opts.httpOptions.cacheProvider;\n opts.httpOptions.memCache = false;\n }\n\n const collectedValues = [...result.body.values];\n let nextPageStart = result.body.nextPageStart;\n\n let maxPages = opts.httpOptions.maxPages ?? MAX_PAGES;\n while (nextPageStart && --maxPages > 0) {\n resolvedUrl.searchParams.set('start', nextPageStart.toString());\n\n const nextResult = await super.requestJsonUnsafe<PagedResult<T>>(\n method,\n opts,\n );\n collectedValues.push(...nextResult.body.values);\n nextPageStart = nextResult.body.nextPageStart;\n }\n\n return { ...result, body: collectedValues as T };\n }\n\n return result as HttpResponse<T>;\n }\n}\n\nfunction isPagedResult(obj: unknown): obj is PagedResult {\n return isNonEmptyObject(obj) && isArray(obj.values);\n}\n"]}
@@ -2,8 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BitbucketHttp = void 0;
4
4
  exports.setBaseUrl = setBaseUrl;
5
- const tslib_1 = require("tslib");
6
- const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
5
+ const is_1 = require("@sindresorhus/is");
7
6
  const http_1 = require("./http");
8
7
  const MAX_PAGES = 100;
9
8
  const MAX_PAGELEN = 100;
@@ -56,9 +55,9 @@ class BitbucketHttp extends http_1.HttpBase {
56
55
  }
57
56
  exports.BitbucketHttp = BitbucketHttp;
58
57
  function hasPagelen(url) {
59
- return !is_1.default.nullOrUndefined(url.searchParams.get('pagelen'));
58
+ return !(0, is_1.isNullOrUndefined)(url.searchParams.get('pagelen'));
60
59
  }
61
60
  function isPagedResult(obj) {
62
- return is_1.default.nonEmptyObject(obj) && Array.isArray(obj.values);
61
+ return (0, is_1.isNonEmptyObject)(obj) && Array.isArray(obj.values);
63
62
  }
64
63
  //# sourceMappingURL=bitbucket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitbucket.js","sourceRoot":"","sources":["../../../lib/util/http/bitbucket.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { PagedResult } from '../../modules/platform/bitbucket/types';\nimport { HttpBase, type InternalJsonUnsafeOptions } from './http';\nimport type { HttpMethod, HttpOptions, HttpResponse } from './types';\n\nconst MAX_PAGES = 100;\nconst MAX_PAGELEN = 100;\n\nlet baseUrl = 'https://api.bitbucket.org/';\n\nexport function setBaseUrl(url: string): void {\n baseUrl = url;\n}\n\nexport interface BitbucketHttpOptions extends HttpOptions {\n paginate?: boolean;\n pagelen?: number;\n}\n\nexport class BitbucketHttp extends HttpBase<BitbucketHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(type = 'bitbucket', options?: BitbucketHttpOptions) {\n super(type, options);\n }\n\n protected override async requestJsonUnsafe<T>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<BitbucketHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);\n const opts: InternalJsonUnsafeOptions<BitbucketHttpOptions> = {\n ...options,\n url: resolvedUrl,\n };\n const paginate = opts.httpOptions?.paginate;\n\n if (paginate && !hasPagelen(resolvedUrl)) {\n const pagelen = opts.httpOptions!.pagelen ?? MAX_PAGELEN;\n resolvedUrl.searchParams.set('pagelen', pagelen.toString());\n }\n\n const result = await super.requestJsonUnsafe<T | PagedResult<T>>(\n method,\n opts,\n );\n\n if (paginate && isPagedResult(result.body)) {\n if (opts.httpOptions) {\n opts.httpOptions.memCache = false;\n }\n const resultBody = result.body;\n let nextURL = result.body.next;\n let page = 1;\n\n for (; nextURL && page <= MAX_PAGES; page++) {\n opts.url = nextURL;\n const nextResult = await super.requestJsonUnsafe<PagedResult<T>>(\n method,\n opts,\n );\n\n resultBody.values.push(...nextResult.body.values);\n nextURL = nextResult.body.next;\n }\n\n // Override other page-related attributes\n resultBody.pagelen = resultBody.values.length;\n /* v8 ignore start -- hard to test all branches */\n resultBody.size =\n page <= MAX_PAGES ? resultBody.values.length : undefined;\n resultBody.next = page <= MAX_PAGES ? nextURL : undefined;\n /* v8 ignore stop */\n }\n\n return result as HttpResponse<T>;\n }\n}\n\nfunction hasPagelen(url: URL): boolean {\n return !is.nullOrUndefined(url.searchParams.get('pagelen'));\n}\n\nfunction isPagedResult<T>(obj: any): obj is PagedResult<T> {\n return is.nonEmptyObject(obj) && Array.isArray(obj.values);\n}\n"]}
1
+ {"version":3,"file":"bitbucket.js","sourceRoot":"","sources":["../../../lib/util/http/bitbucket.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNonEmptyObject, isNullOrUndefined } from '@sindresorhus/is';\nimport type { PagedResult } from '../../modules/platform/bitbucket/types';\nimport { HttpBase, type InternalJsonUnsafeOptions } from './http';\nimport type { HttpMethod, HttpOptions, HttpResponse } from './types';\n\nconst MAX_PAGES = 100;\nconst MAX_PAGELEN = 100;\n\nlet baseUrl = 'https://api.bitbucket.org/';\n\nexport function setBaseUrl(url: string): void {\n baseUrl = url;\n}\n\nexport interface BitbucketHttpOptions extends HttpOptions {\n paginate?: boolean;\n pagelen?: number;\n}\n\nexport class BitbucketHttp extends HttpBase<BitbucketHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(type = 'bitbucket', options?: BitbucketHttpOptions) {\n super(type, options);\n }\n\n protected override async requestJsonUnsafe<T>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<BitbucketHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);\n const opts: InternalJsonUnsafeOptions<BitbucketHttpOptions> = {\n ...options,\n url: resolvedUrl,\n };\n const paginate = opts.httpOptions?.paginate;\n\n if (paginate && !hasPagelen(resolvedUrl)) {\n const pagelen = opts.httpOptions!.pagelen ?? MAX_PAGELEN;\n resolvedUrl.searchParams.set('pagelen', pagelen.toString());\n }\n\n const result = await super.requestJsonUnsafe<T | PagedResult<T>>(\n method,\n opts,\n );\n\n if (paginate && isPagedResult(result.body)) {\n if (opts.httpOptions) {\n opts.httpOptions.memCache = false;\n }\n const resultBody = result.body;\n let nextURL = result.body.next;\n let page = 1;\n\n for (; nextURL && page <= MAX_PAGES; page++) {\n opts.url = nextURL;\n const nextResult = await super.requestJsonUnsafe<PagedResult<T>>(\n method,\n opts,\n );\n\n resultBody.values.push(...nextResult.body.values);\n nextURL = nextResult.body.next;\n }\n\n // Override other page-related attributes\n resultBody.pagelen = resultBody.values.length;\n /* v8 ignore start -- hard to test all branches */\n resultBody.size =\n page <= MAX_PAGES ? resultBody.values.length : undefined;\n resultBody.next = page <= MAX_PAGES ? nextURL : undefined;\n /* v8 ignore stop */\n }\n\n return result as HttpResponse<T>;\n }\n}\n\nfunction hasPagelen(url: URL): boolean {\n return !isNullOrUndefined(url.searchParams.get('pagelen'));\n}\n\nfunction isPagedResult<T>(obj: any): obj is PagedResult<T> {\n return isNonEmptyObject(obj) && Array.isArray(obj.values);\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PackageHttpCacheProvider = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
5
+ const is_1 = require("@sindresorhus/is");
6
6
  const luxon_1 = require("luxon");
7
7
  const global_1 = require("../../../config/global");
8
8
  const packageCache = tslib_1.__importStar(require("../../cache/package"));
@@ -61,7 +61,7 @@ class PackageHttpCacheProvider extends abstract_http_cache_provider_1.AbstractHt
61
61
  return true;
62
62
  }
63
63
  if (this.checkCacheControlHeader &&
64
- is_1.default.string(resp.headers['cache-control'])) {
64
+ (0, is_1.isString)(resp.headers['cache-control'])) {
65
65
  const isPublic = resp.headers['cache-control']
66
66
  .toLocaleLowerCase()
67
67
  .split((0, regex_1.regEx)(/\s*,\s*/))
@@ -1 +1 @@
1
- {"version":3,"file":"package-http-cache-provider.js","sourceRoot":"","sources":["../../../../lib/util/http/cache/package-http-cache-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../config/global';\nimport * as packageCache from '../../cache/package';\nimport { resolveTtlValues } from '../../cache/package/ttl';\nimport type { PackageCacheNamespace } from '../../cache/package/types';\nimport { regEx } from '../../regex';\nimport { HttpCacheStats } from '../../stats';\nimport type { HttpResponse } from '../types';\nimport { AbstractHttpCacheProvider } from './abstract-http-cache-provider';\nimport type { HttpCache } from './schema';\n\nexport interface PackageHttpCacheProviderOptions {\n namespace: PackageCacheNamespace;\n softTtlMinutes?: number;\n checkCacheControlHeader: boolean;\n checkAuthorizationHeader: boolean;\n}\n\nexport class PackageHttpCacheProvider extends AbstractHttpCacheProvider {\n private namespace: PackageCacheNamespace;\n\n private softTtlMinutes: number;\n private hardTtlMinutes: number;\n\n checkCacheControlHeader: boolean;\n checkAuthorizationHeader: boolean;\n\n constructor({\n namespace,\n softTtlMinutes = 15,\n checkCacheControlHeader = false,\n checkAuthorizationHeader = false,\n }: PackageHttpCacheProviderOptions) {\n super();\n this.namespace = namespace;\n const ttlValues = resolveTtlValues(this.namespace, softTtlMinutes);\n this.softTtlMinutes = ttlValues.softTtlMinutes;\n this.hardTtlMinutes = ttlValues.hardTtlMinutes;\n this.checkCacheControlHeader = checkCacheControlHeader;\n this.checkAuthorizationHeader = checkAuthorizationHeader;\n }\n\n private cacheKey(method: string, url: string): string {\n if (method !== 'get') {\n return `${method}:${url}`;\n }\n return url;\n }\n\n async load(method: string, url: string): Promise<unknown> {\n return await packageCache.get(this.namespace, this.cacheKey(method, url));\n }\n\n async persist(method: string, url: string, data: HttpCache): Promise<void> {\n await packageCache.setWithRawTtl(\n this.namespace,\n this.cacheKey(method, url),\n data,\n this.hardTtlMinutes,\n );\n }\n\n override async bypassServer<T>(\n method: string,\n url: string,\n ignoreSoftTtl = false,\n ): Promise<HttpResponse<T> | null> {\n const cached = await this.get(method, url);\n if (!cached) {\n return null;\n }\n\n if (ignoreSoftTtl) {\n return cached.httpResponse as HttpResponse<T>;\n }\n\n const cachedAt = DateTime.fromISO(cached.timestamp);\n const deadline = cachedAt.plus({ minutes: this.softTtlMinutes });\n const now = DateTime.now();\n if (now >= deadline) {\n HttpCacheStats.incLocalMisses(url);\n return null;\n }\n\n HttpCacheStats.incLocalHits(url);\n return cached.httpResponse as HttpResponse<T>;\n }\n\n cacheAllowed<T>(resp: HttpResponse<T>): boolean {\n const allowedViaGlobalConfig = GlobalConfig.get(\n 'cachePrivatePackages',\n false,\n );\n if (allowedViaGlobalConfig) {\n return true;\n }\n\n if (\n this.checkCacheControlHeader &&\n is.string(resp.headers['cache-control'])\n ) {\n const isPublic = resp.headers['cache-control']\n .toLocaleLowerCase()\n .split(regEx(/\\s*,\\s*/))\n .includes('public');\n\n if (!isPublic) {\n return false;\n }\n }\n\n if (this.checkAuthorizationHeader && resp.authorization) {\n return false;\n }\n\n return true;\n }\n\n override async wrapServerResponse<T>(\n method: string,\n url: string,\n resp: HttpResponse<T>,\n ): Promise<HttpResponse<T>> {\n if (resp.statusCode === 200 && !this.cacheAllowed(resp)) {\n return resp;\n }\n\n return await super.wrapServerResponse(method, url, resp);\n }\n}\n"]}
1
+ {"version":3,"file":"package-http-cache-provider.js","sourceRoot":"","sources":["../../../../lib/util/http/cache/package-http-cache-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../config/global';\nimport * as packageCache from '../../cache/package';\nimport { resolveTtlValues } from '../../cache/package/ttl';\nimport type { PackageCacheNamespace } from '../../cache/package/types';\nimport { regEx } from '../../regex';\nimport { HttpCacheStats } from '../../stats';\nimport type { HttpResponse } from '../types';\nimport { AbstractHttpCacheProvider } from './abstract-http-cache-provider';\nimport type { HttpCache } from './schema';\n\nexport interface PackageHttpCacheProviderOptions {\n namespace: PackageCacheNamespace;\n softTtlMinutes?: number;\n checkCacheControlHeader: boolean;\n checkAuthorizationHeader: boolean;\n}\n\nexport class PackageHttpCacheProvider extends AbstractHttpCacheProvider {\n private namespace: PackageCacheNamespace;\n\n private softTtlMinutes: number;\n private hardTtlMinutes: number;\n\n checkCacheControlHeader: boolean;\n checkAuthorizationHeader: boolean;\n\n constructor({\n namespace,\n softTtlMinutes = 15,\n checkCacheControlHeader = false,\n checkAuthorizationHeader = false,\n }: PackageHttpCacheProviderOptions) {\n super();\n this.namespace = namespace;\n const ttlValues = resolveTtlValues(this.namespace, softTtlMinutes);\n this.softTtlMinutes = ttlValues.softTtlMinutes;\n this.hardTtlMinutes = ttlValues.hardTtlMinutes;\n this.checkCacheControlHeader = checkCacheControlHeader;\n this.checkAuthorizationHeader = checkAuthorizationHeader;\n }\n\n private cacheKey(method: string, url: string): string {\n if (method !== 'get') {\n return `${method}:${url}`;\n }\n return url;\n }\n\n async load(method: string, url: string): Promise<unknown> {\n return await packageCache.get(this.namespace, this.cacheKey(method, url));\n }\n\n async persist(method: string, url: string, data: HttpCache): Promise<void> {\n await packageCache.setWithRawTtl(\n this.namespace,\n this.cacheKey(method, url),\n data,\n this.hardTtlMinutes,\n );\n }\n\n override async bypassServer<T>(\n method: string,\n url: string,\n ignoreSoftTtl = false,\n ): Promise<HttpResponse<T> | null> {\n const cached = await this.get(method, url);\n if (!cached) {\n return null;\n }\n\n if (ignoreSoftTtl) {\n return cached.httpResponse as HttpResponse<T>;\n }\n\n const cachedAt = DateTime.fromISO(cached.timestamp);\n const deadline = cachedAt.plus({ minutes: this.softTtlMinutes });\n const now = DateTime.now();\n if (now >= deadline) {\n HttpCacheStats.incLocalMisses(url);\n return null;\n }\n\n HttpCacheStats.incLocalHits(url);\n return cached.httpResponse as HttpResponse<T>;\n }\n\n cacheAllowed<T>(resp: HttpResponse<T>): boolean {\n const allowedViaGlobalConfig = GlobalConfig.get(\n 'cachePrivatePackages',\n false,\n );\n if (allowedViaGlobalConfig) {\n return true;\n }\n\n if (\n this.checkCacheControlHeader &&\n isString(resp.headers['cache-control'])\n ) {\n const isPublic = resp.headers['cache-control']\n .toLocaleLowerCase()\n .split(regEx(/\\s*,\\s*/))\n .includes('public');\n\n if (!isPublic) {\n return false;\n }\n }\n\n if (this.checkAuthorizationHeader && resp.authorization) {\n return false;\n }\n\n return true;\n }\n\n override async wrapServerResponse<T>(\n method: string,\n url: string,\n resp: HttpResponse<T>,\n ): Promise<HttpResponse<T>> {\n if (resp.statusCode === 200 && !this.cacheAllowed(resp)) {\n return resp;\n }\n\n return await super.wrapServerResponse(method, url, resp);\n }\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ForgejoHttp = exports.setBaseUrl = void 0;
4
- const tslib_1 = require("tslib");
5
- const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
4
+ const is_1 = require("@sindresorhus/is");
6
5
  const http_1 = require("./http");
7
6
  let baseUrl;
8
7
  const setBaseUrl = (newBaseUrl) => {
@@ -10,10 +9,10 @@ const setBaseUrl = (newBaseUrl) => {
10
9
  };
11
10
  exports.setBaseUrl = setBaseUrl;
12
11
  function getPaginationContainer(body) {
13
- if (is_1.default.array(body) && body.length) {
12
+ if ((0, is_1.isArray)(body) && body.length) {
14
13
  return body;
15
14
  }
16
- if (is_1.default.plainObject(body) && is_1.default.array(body?.data) && body.data.length) {
15
+ if ((0, is_1.isPlainObject)(body) && (0, is_1.isArray)(body?.data) && body.data.length) {
17
16
  return body.data;
18
17
  }
19
18
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"forgejo.js","sourceRoot":"","sources":["../../../lib/util/http/forgejo.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,iCAAkE;AAGlE,IAAI,OAAe,CAAC;AACb,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAQ,EAAE;IACrD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc;AAC3D,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAMF,SAAS,sBAAsB,CAAc,IAAa;IACxD,IAAI,YAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,IAAW,CAAC;IACrB,CAAC;IAED,IAAI,YAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,YAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,IAAW,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,WAAY,SAAQ,eAA4B;IAC3D,IAAuB,OAAO;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,QAAiB,EAAE,OAAqB;QAClD,KAAK,CAAC,QAAQ,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEkB,KAAK,CAAC,iBAAiB,CACxC,MAAkB,EAClB,OAAsD;QAEtD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG;YACX,GAAG,OAAO;YACV,GAAG,EAAE,WAAW;SACjB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,sBAAsB,CAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;YAElC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAW,CAAC,CAAC;YAC/D,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAErE,OAAO,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAClC,QAAQ,IAAI,CAAC,CAAC;gBACd,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE1D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,sBAAsB,CAAI,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,MAAM;gBACR,CAAC;gBAED,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA5CD,kCA4CC","sourcesContent":["import is from '@sindresorhus/is';\nimport { HttpBase, type InternalJsonUnsafeOptions } from './http';\nimport type { HttpMethod, HttpOptions, HttpResponse } from './types';\n\nlet baseUrl: string;\nexport const setBaseUrl = (newBaseUrl: string): void => {\n baseUrl = newBaseUrl.replace(/\\/*$/, '/'); // TODO #12875\n};\n\nexport interface ForgejoHttpOptions extends HttpOptions {\n paginate?: boolean;\n}\n\nfunction getPaginationContainer<T = unknown>(body: unknown): T[] | null {\n if (is.array(body) && body.length) {\n return body as T[];\n }\n\n if (is.plainObject(body) && is.array(body?.data) && body.data.length) {\n return body.data as T[];\n }\n\n return null;\n}\n\nexport class ForgejoHttp extends HttpBase<ForgejoHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(hostType?: string, options?: HttpOptions) {\n super(hostType ?? 'forgejo', options);\n }\n\n protected override async requestJsonUnsafe<T = unknown>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<ForgejoHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);\n const opts = {\n ...options,\n url: resolvedUrl,\n };\n const res = await super.requestJsonUnsafe<T>(method, opts);\n const pc = getPaginationContainer<T>(res.body);\n if (opts.httpOptions?.paginate && pc) {\n delete opts.httpOptions.cacheProvider;\n opts.httpOptions.memCache = false;\n\n delete opts.httpOptions.paginate;\n const total = parseInt(res.headers['x-total-count'] as string);\n let nextPage = parseInt(resolvedUrl.searchParams.get('page') ?? '1');\n\n while (total && pc.length < total) {\n nextPage += 1;\n resolvedUrl.searchParams.set('page', nextPage.toString());\n\n const nextRes = await super.requestJsonUnsafe<T>(method, opts);\n const nextPc = getPaginationContainer<T>(nextRes.body);\n if (nextPc === null) {\n break;\n }\n\n pc.push(...nextPc);\n }\n }\n\n return res;\n }\n}\n"]}
1
+ {"version":3,"file":"forgejo.js","sourceRoot":"","sources":["../../../lib/util/http/forgejo.ts"],"names":[],"mappings":";;;AAAA,yCAA0D;AAC1D,iCAAkE;AAGlE,IAAI,OAAe,CAAC;AACb,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAQ,EAAE;IACrD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc;AAC3D,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAMF,SAAS,sBAAsB,CAAc,IAAa;IACxD,IAAI,IAAA,YAAO,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,IAAW,CAAC;IACrB,CAAC;IAED,IAAI,IAAA,kBAAa,EAAC,IAAI,CAAC,IAAI,IAAA,YAAO,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC,IAAW,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,WAAY,SAAQ,eAA4B;IAC3D,IAAuB,OAAO;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,QAAiB,EAAE,OAAqB;QAClD,KAAK,CAAC,QAAQ,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEkB,KAAK,CAAC,iBAAiB,CACxC,MAAkB,EAClB,OAAsD;QAEtD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG;YACX,GAAG,OAAO;YACV,GAAG,EAAE,WAAW;SACjB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,sBAAsB,CAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;YAElC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAW,CAAC,CAAC;YAC/D,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAErE,OAAO,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAClC,QAAQ,IAAI,CAAC,CAAC;gBACd,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE1D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,sBAAsB,CAAI,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,MAAM;gBACR,CAAC;gBAED,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA5CD,kCA4CC","sourcesContent":["import { isArray, isPlainObject } from '@sindresorhus/is';\nimport { HttpBase, type InternalJsonUnsafeOptions } from './http';\nimport type { HttpMethod, HttpOptions, HttpResponse } from './types';\n\nlet baseUrl: string;\nexport const setBaseUrl = (newBaseUrl: string): void => {\n baseUrl = newBaseUrl.replace(/\\/*$/, '/'); // TODO #12875\n};\n\nexport interface ForgejoHttpOptions extends HttpOptions {\n paginate?: boolean;\n}\n\nfunction getPaginationContainer<T = unknown>(body: unknown): T[] | null {\n if (isArray(body) && body.length) {\n return body as T[];\n }\n\n if (isPlainObject(body) && isArray(body?.data) && body.data.length) {\n return body.data as T[];\n }\n\n return null;\n}\n\nexport class ForgejoHttp extends HttpBase<ForgejoHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(hostType?: string, options?: HttpOptions) {\n super(hostType ?? 'forgejo', options);\n }\n\n protected override async requestJsonUnsafe<T = unknown>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<ForgejoHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);\n const opts = {\n ...options,\n url: resolvedUrl,\n };\n const res = await super.requestJsonUnsafe<T>(method, opts);\n const pc = getPaginationContainer<T>(res.body);\n if (opts.httpOptions?.paginate && pc) {\n delete opts.httpOptions.cacheProvider;\n opts.httpOptions.memCache = false;\n\n delete opts.httpOptions.paginate;\n const total = parseInt(res.headers['x-total-count'] as string);\n let nextPage = parseInt(resolvedUrl.searchParams.get('page') ?? '1');\n\n while (total && pc.length < total) {\n nextPage += 1;\n resolvedUrl.searchParams.set('page', nextPage.toString());\n\n const nextRes = await super.requestJsonUnsafe<T>(method, opts);\n const nextPc = getPaginationContainer<T>(nextRes.body);\n if (nextPc === null) {\n break;\n }\n\n pc.push(...nextPc);\n }\n }\n\n return res;\n }\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GiteaHttp = exports.setBaseUrl = void 0;
4
- const tslib_1 = require("tslib");
5
- const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
4
+ const is_1 = require("@sindresorhus/is");
6
5
  const http_1 = require("./http");
7
6
  let baseUrl;
8
7
  const setBaseUrl = (newBaseUrl) => {
@@ -10,10 +9,10 @@ const setBaseUrl = (newBaseUrl) => {
10
9
  };
11
10
  exports.setBaseUrl = setBaseUrl;
12
11
  function getPaginationContainer(body) {
13
- if (is_1.default.array(body) && body.length) {
12
+ if ((0, is_1.isArray)(body) && body.length) {
14
13
  return body;
15
14
  }
16
- if (is_1.default.plainObject(body) && is_1.default.array(body?.data) && body.data.length) {
15
+ if ((0, is_1.isPlainObject)(body) && (0, is_1.isArray)(body?.data) && body.data.length) {
17
16
  return body.data;
18
17
  }
19
18
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"gitea.js","sourceRoot":"","sources":["../../../lib/util/http/gitea.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,iCAAkE;AAGlE,IAAI,OAAe,CAAC;AACb,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAQ,EAAE;IACrD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc;AAC3D,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAMF,SAAS,sBAAsB,CAAc,IAAa;IACxD,IAAI,YAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,IAAW,CAAC;IACrB,CAAC;IAED,IAAI,YAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,YAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,IAAW,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,SAAU,SAAQ,eAA0B;IACvD,IAAuB,OAAO;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,QAAiB,EAAE,OAAqB;QAClD,KAAK,CAAC,QAAQ,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAEkB,KAAK,CAAC,iBAAiB,CACxC,MAAkB,EAClB,OAAoD;QAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG;YACX,GAAG,OAAO;YACV,GAAG,EAAE,WAAW;SACjB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,sBAAsB,CAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;YAElC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAW,CAAC,CAAC;YAC/D,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAErE,OAAO,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAClC,QAAQ,IAAI,CAAC,CAAC;gBACd,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE1D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,sBAAsB,CAAI,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,MAAM;gBACR,CAAC;gBAED,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA5CD,8BA4CC","sourcesContent":["import is from '@sindresorhus/is';\nimport { HttpBase, type InternalJsonUnsafeOptions } from './http';\nimport type { HttpMethod, HttpOptions, HttpResponse } from './types';\n\nlet baseUrl: string;\nexport const setBaseUrl = (newBaseUrl: string): void => {\n baseUrl = newBaseUrl.replace(/\\/*$/, '/'); // TODO #12875\n};\n\nexport interface GiteaHttpOptions extends HttpOptions {\n paginate?: boolean;\n}\n\nfunction getPaginationContainer<T = unknown>(body: unknown): T[] | null {\n if (is.array(body) && body.length) {\n return body as T[];\n }\n\n if (is.plainObject(body) && is.array(body?.data) && body.data.length) {\n return body.data as T[];\n }\n\n return null;\n}\n\nexport class GiteaHttp extends HttpBase<GiteaHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(hostType?: string, options?: HttpOptions) {\n super(hostType ?? 'gitea', options);\n }\n\n protected override async requestJsonUnsafe<T = unknown>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<GiteaHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);\n const opts = {\n ...options,\n url: resolvedUrl,\n };\n const res = await super.requestJsonUnsafe<T>(method, opts);\n const pc = getPaginationContainer<T>(res.body);\n if (opts.httpOptions?.paginate && pc) {\n delete opts.httpOptions.cacheProvider;\n opts.httpOptions.memCache = false;\n\n delete opts.httpOptions.paginate;\n const total = parseInt(res.headers['x-total-count'] as string);\n let nextPage = parseInt(resolvedUrl.searchParams.get('page') ?? '1');\n\n while (total && pc.length < total) {\n nextPage += 1;\n resolvedUrl.searchParams.set('page', nextPage.toString());\n\n const nextRes = await super.requestJsonUnsafe<T>(method, opts);\n const nextPc = getPaginationContainer<T>(nextRes.body);\n if (nextPc === null) {\n break;\n }\n\n pc.push(...nextPc);\n }\n }\n\n return res;\n }\n}\n"]}
1
+ {"version":3,"file":"gitea.js","sourceRoot":"","sources":["../../../lib/util/http/gitea.ts"],"names":[],"mappings":";;;AAAA,yCAA0D;AAC1D,iCAAkE;AAGlE,IAAI,OAAe,CAAC;AACb,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAQ,EAAE;IACrD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc;AAC3D,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAMF,SAAS,sBAAsB,CAAc,IAAa;IACxD,IAAI,IAAA,YAAO,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,IAAW,CAAC;IACrB,CAAC;IAED,IAAI,IAAA,kBAAa,EAAC,IAAI,CAAC,IAAI,IAAA,YAAO,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC,IAAW,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,SAAU,SAAQ,eAA0B;IACvD,IAAuB,OAAO;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,QAAiB,EAAE,OAAqB;QAClD,KAAK,CAAC,QAAQ,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAEkB,KAAK,CAAC,iBAAiB,CACxC,MAAkB,EAClB,OAAoD;QAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG;YACX,GAAG,OAAO;YACV,GAAG,EAAE,WAAW;SACjB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,sBAAsB,CAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;YAElC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAW,CAAC,CAAC;YAC/D,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAErE,OAAO,KAAK,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAClC,QAAQ,IAAI,CAAC,CAAC;gBACd,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE1D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAI,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,sBAAsB,CAAI,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,MAAM;gBACR,CAAC;gBAED,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA5CD,8BA4CC","sourcesContent":["import { isArray, isPlainObject } from '@sindresorhus/is';\nimport { HttpBase, type InternalJsonUnsafeOptions } from './http';\nimport type { HttpMethod, HttpOptions, HttpResponse } from './types';\n\nlet baseUrl: string;\nexport const setBaseUrl = (newBaseUrl: string): void => {\n baseUrl = newBaseUrl.replace(/\\/*$/, '/'); // TODO #12875\n};\n\nexport interface GiteaHttpOptions extends HttpOptions {\n paginate?: boolean;\n}\n\nfunction getPaginationContainer<T = unknown>(body: unknown): T[] | null {\n if (isArray(body) && body.length) {\n return body as T[];\n }\n\n if (isPlainObject(body) && isArray(body?.data) && body.data.length) {\n return body.data as T[];\n }\n\n return null;\n}\n\nexport class GiteaHttp extends HttpBase<GiteaHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(hostType?: string, options?: HttpOptions) {\n super(hostType ?? 'gitea', options);\n }\n\n protected override async requestJsonUnsafe<T = unknown>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<GiteaHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);\n const opts = {\n ...options,\n url: resolvedUrl,\n };\n const res = await super.requestJsonUnsafe<T>(method, opts);\n const pc = getPaginationContainer<T>(res.body);\n if (opts.httpOptions?.paginate && pc) {\n delete opts.httpOptions.cacheProvider;\n opts.httpOptions.memCache = false;\n\n delete opts.httpOptions.paginate;\n const total = parseInt(res.headers['x-total-count'] as string);\n let nextPage = parseInt(resolvedUrl.searchParams.get('page') ?? '1');\n\n while (total && pc.length < total) {\n nextPage += 1;\n resolvedUrl.searchParams.set('page', nextPage.toString());\n\n const nextRes = await super.requestJsonUnsafe<T>(method, opts);\n const nextPc = getPaginationContainer<T>(nextRes.body);\n if (nextPc === null) {\n break;\n }\n\n pc.push(...nextPc);\n }\n }\n\n return res;\n }\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GithubHttp = exports.setBaseUrl = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
5
+ const is_1 = require("@sindresorhus/is");
6
6
  const luxon_1 = require("luxon");
7
7
  const error_messages_1 = require("../../constants/error-messages");
8
8
  const logger_1 = require("../../logger");
@@ -26,7 +26,7 @@ function handleGotError(err, url, opts) {
26
26
  const path = url.toString();
27
27
  let message = err.message || '';
28
28
  const body = err.response?.body;
29
- if (is_1.default.plainObject(body) && 'message' in body) {
29
+ if ((0, is_1.isPlainObject)(body) && 'message' in body) {
30
30
  message = String(body.message);
31
31
  }
32
32
  if (err.code === 'ERR_HTTP2_STREAM_ERROR' ||
@@ -249,22 +249,22 @@ class GithubHttp extends http_1.HttpBase {
249
249
  });
250
250
  });
251
251
  const pages = await p.all(queue);
252
- if (httpOptions.paginationField && is_1.default.plainObject(result.body)) {
252
+ if (httpOptions.paginationField && (0, is_1.isPlainObject)(result.body)) {
253
253
  const paginatedResult = result.body[httpOptions.paginationField];
254
- if (is_1.default.array(paginatedResult)) {
254
+ if ((0, is_1.isArray)(paginatedResult)) {
255
255
  for (const nextPage of pages) {
256
- if (is_1.default.plainObject(nextPage.body)) {
256
+ if ((0, is_1.isPlainObject)(nextPage.body)) {
257
257
  const nextPageResults = nextPage.body[httpOptions.paginationField];
258
- if (is_1.default.array(nextPageResults)) {
258
+ if ((0, is_1.isArray)(nextPageResults)) {
259
259
  paginatedResult.push(...nextPageResults);
260
260
  }
261
261
  }
262
262
  }
263
263
  }
264
264
  }
265
- else if (is_1.default.array(result.body)) {
265
+ else if ((0, is_1.isArray)(result.body)) {
266
266
  for (const nextPage of pages) {
267
- if (is_1.default.array(nextPage.body)) {
267
+ if ((0, is_1.isArray)(nextPage.body)) {
268
268
  result.body.push(...nextPage.body);
269
269
  }
270
270
  }
@@ -324,8 +324,8 @@ class GithubHttp extends http_1.HttpBase {
324
324
  paginate,
325
325
  });
326
326
  const repositoryData = res?.data?.repository;
327
- if (is_1.default.nonEmptyObject(repositoryData) &&
328
- !is_1.default.nullOrUndefined(repositoryData[fieldName])) {
327
+ if ((0, is_1.isNonEmptyObject)(repositoryData) &&
328
+ !(0, is_1.isNullOrUndefined)(repositoryData[fieldName])) {
329
329
  optimalCount = count;
330
330
  const { nodes = [], edges = [], pageInfo, } = repositoryData[fieldName];
331
331
  result.push(...nodes);
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../lib/util/http/github.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport {\n PLATFORM_BAD_CREDENTIALS,\n PLATFORM_INTEGRATION_UNAUTHORIZED,\n PLATFORM_RATE_LIMIT_EXCEEDED,\n REPOSITORY_CHANGED,\n} from '../../constants/error-messages';\nimport { logger } from '../../logger';\nimport { ExternalHostError } from '../../types/errors/external-host-error';\nimport { getCache } from '../cache/repository';\nimport { getEnv } from '../env';\nimport { maskToken } from '../mask';\nimport * as p from '../promises';\nimport { range } from '../range';\nimport { regEx } from '../regex';\nimport { joinUrlParts, parseLinkHeader, parseUrl } from '../url';\nimport { findMatchingRule } from './host-rules';\nimport {\n HttpBase,\n type InternalHttpOptions,\n type InternalJsonUnsafeOptions,\n} from './http';\nimport type { GotLegacyError } from './legacy';\nimport type {\n GraphqlOptions,\n HttpMethod,\n HttpOptions,\n HttpResponse,\n} from './types';\n\nconst githubBaseUrl = 'https://api.github.com/';\nlet baseUrl = githubBaseUrl;\nexport const setBaseUrl = (url: string): void => {\n baseUrl = url;\n};\n\nexport interface GithubBaseHttpOptions extends HttpOptions {\n repository?: string;\n}\n\nexport interface GithubHttpOptions extends GithubBaseHttpOptions {\n paginate?: boolean | string;\n paginationField?: string;\n pageLimit?: number;\n}\n\ninterface GithubGraphqlRepoData<T = unknown> {\n repository?: T;\n}\n\nexport type GithubGraphqlResponse<T = unknown> =\n | {\n data: T;\n errors?: never;\n }\n | {\n data?: never;\n errors: {\n type?: string;\n message: string;\n }[];\n };\n\nfunction handleGotError(\n err: GotLegacyError,\n url: string | URL,\n opts: GithubBaseHttpOptions,\n): Error {\n const path = url.toString();\n let message = err.message || '';\n const body = err.response?.body;\n if (is.plainObject(body) && 'message' in body) {\n message = String(body.message);\n }\n if (\n err.code === 'ERR_HTTP2_STREAM_ERROR' ||\n err.code === 'ENOTFOUND' ||\n err.code === 'ETIMEDOUT' ||\n err.code === 'EAI_AGAIN' ||\n err.code === 'ECONNRESET'\n ) {\n logger.debug({ err }, 'GitHub failure: RequestError');\n return new ExternalHostError(err, 'github');\n }\n if (err.name === 'ParseError') {\n logger.debug({ err }, '');\n return new ExternalHostError(err, 'github');\n }\n if (err.statusCode && err.statusCode >= 500 && err.statusCode < 600) {\n logger.debug({ err }, 'GitHub failure: 5xx');\n return new ExternalHostError(err, 'github');\n }\n if (\n err.statusCode === 403 &&\n message.startsWith('You have triggered an abuse detection mechanism')\n ) {\n logger.debug({ err }, 'GitHub failure: abuse detection');\n return new Error(PLATFORM_RATE_LIMIT_EXCEEDED);\n }\n if (\n err.statusCode === 403 &&\n message.startsWith('You have exceeded a secondary rate limit')\n ) {\n logger.warn({ err }, 'GitHub failure: secondary rate limit');\n return new Error(PLATFORM_RATE_LIMIT_EXCEEDED);\n }\n if (err.statusCode === 403 && message.includes('Upgrade to GitHub Pro')) {\n logger.debug(`Endpoint: ${path}, needs paid GitHub plan`);\n return err;\n }\n if (err.statusCode === 403 && message.includes('rate limit exceeded')) {\n logger.debug({ err }, 'GitHub failure: rate limit');\n return new Error(PLATFORM_RATE_LIMIT_EXCEEDED);\n }\n if (\n err.statusCode === 403 &&\n message.startsWith('Resource not accessible by integration')\n ) {\n logger.debug(\n { err },\n 'GitHub failure: Resource not accessible by integration',\n );\n return new Error(PLATFORM_INTEGRATION_UNAUTHORIZED);\n }\n if (err.statusCode === 401) {\n // Warn once for github.com token if unauthorized\n const hostname = parseUrl(url)?.hostname;\n if (hostname === 'github.com' || hostname === 'api.github.com') {\n logger.once.warn('github.com token 401 unauthorized');\n }\n if (message.includes('Bad credentials')) {\n const rateLimit = err.headers?.['x-ratelimit-limit'] ?? -1;\n logger.debug(\n {\n token: maskToken(opts.token),\n err,\n },\n 'GitHub failure: Bad credentials',\n );\n if (rateLimit === '60') {\n return new ExternalHostError(err, 'github');\n }\n return new Error(PLATFORM_BAD_CREDENTIALS);\n }\n }\n if (err.statusCode === 422) {\n if (\n message.includes('Review cannot be requested from pull request author')\n ) {\n return err;\n } else if (err.body?.errors?.find((e: any) => e.field === 'milestone')) {\n return err;\n } else if (err.body?.errors?.find((e: any) => e.code === 'invalid')) {\n logger.debug({ err }, 'Received invalid response - aborting');\n return new Error(REPOSITORY_CHANGED);\n } else if (\n err.body?.errors?.find((e: any) =>\n e.message?.startsWith('A pull request already exists'),\n )\n ) {\n return err;\n }\n logger.debug({ err }, '422 Error thrown from GitHub');\n return new ExternalHostError(err, 'github');\n }\n if (\n err.statusCode === 410 &&\n err.body?.message === 'Issues are disabled for this repo'\n ) {\n return err;\n }\n return err;\n}\n\ninterface GraphqlPaginatedContent<T = unknown> {\n nodes: T[];\n edges: T[];\n pageInfo: { hasNextPage: boolean; endCursor: string };\n}\n\nfunction constructAcceptString(input?: any): string {\n const defaultAccept = 'application/vnd.github.v3+json';\n const acceptStrings =\n typeof input === 'string' ? input.split(regEx(/\\s*,\\s*/)) : [];\n\n // TODO: regression of #6736\n if (\n !acceptStrings.some((x) => x === defaultAccept) &&\n (!acceptStrings.some((x) => x.startsWith('application/vnd.github.')) ||\n acceptStrings.length < 2)\n ) {\n acceptStrings.push(defaultAccept);\n }\n return acceptStrings.join(', ');\n}\n\nconst MAX_GRAPHQL_PAGE_SIZE = 100;\n\ninterface GraphqlPageCacheItem {\n pageLastResizedAt: string;\n pageSize: number;\n}\n\nexport type GraphqlPageCache = Record<string, GraphqlPageCacheItem>;\n\nfunction getGraphqlPageSize(\n fieldName: string,\n defaultPageSize = MAX_GRAPHQL_PAGE_SIZE,\n): number {\n const cache = getCache();\n const graphqlPageCache = cache?.platform?.github\n ?.graphqlPageCache as GraphqlPageCache;\n const cachedRecord = graphqlPageCache?.[fieldName];\n\n if (graphqlPageCache && cachedRecord) {\n logger.debug(\n { fieldName, ...cachedRecord },\n 'GraphQL page size: found cached value',\n );\n\n const oldPageSize = cachedRecord.pageSize;\n\n const now = DateTime.local();\n const then = DateTime.fromISO(cachedRecord.pageLastResizedAt);\n const expiry = then.plus({ hours: 24 });\n if (now > expiry) {\n const newPageSize = Math.min(oldPageSize * 2, MAX_GRAPHQL_PAGE_SIZE);\n if (newPageSize < MAX_GRAPHQL_PAGE_SIZE) {\n const timestamp = now.toISO();\n\n logger.debug(\n { fieldName, oldPageSize, newPageSize, timestamp },\n 'GraphQL page size: expanding',\n );\n\n cachedRecord.pageLastResizedAt = timestamp;\n cachedRecord.pageSize = newPageSize;\n } else {\n logger.debug(\n { fieldName, oldPageSize, newPageSize },\n 'GraphQL page size: expanded to default page size',\n );\n\n delete graphqlPageCache[fieldName];\n }\n\n return newPageSize;\n }\n\n return oldPageSize;\n }\n\n return defaultPageSize;\n}\n\nfunction setGraphqlPageSize(fieldName: string, newPageSize: number): void {\n const oldPageSize = getGraphqlPageSize(fieldName);\n if (newPageSize !== oldPageSize) {\n const now = DateTime.local();\n const pageLastResizedAt = now.toISO();\n logger.debug(\n { fieldName, oldPageSize, newPageSize, timestamp: pageLastResizedAt },\n 'GraphQL page size: shrinking',\n );\n const cache = getCache();\n cache.platform ??= {};\n cache.platform.github ??= {};\n cache.platform.github.graphqlPageCache ??= {};\n const graphqlPageCache = cache.platform.github\n .graphqlPageCache as GraphqlPageCache;\n graphqlPageCache[fieldName] = {\n pageLastResizedAt,\n pageSize: newPageSize,\n };\n }\n}\n\nfunction replaceUrlBase(url: URL, baseUrl: string): URL {\n const relativeUrl = `${url.pathname}${url.search}`;\n return new URL(relativeUrl, baseUrl);\n}\n\nexport class GithubHttp extends HttpBase<GithubHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(hostType = 'github', options?: HttpOptions) {\n super(hostType, options);\n }\n\n protected override processOptions(\n url: URL,\n opts: InternalHttpOptions & GithubBaseHttpOptions,\n ): void {\n if (!opts.token) {\n const authUrl = new URL(url);\n\n if (opts.repository) {\n // set authUrl to https://api.github.com/repos/org/repo or https://gihub.domain.com/api/v3/repos/org/repo\n authUrl.hash = '';\n authUrl.search = '';\n authUrl.pathname = joinUrlParts(\n authUrl.pathname.startsWith('/api/v3') ? '/api/v3' : '',\n 'repos',\n `${opts.repository}`,\n );\n }\n\n let readOnly = opts.readOnly;\n const { method = 'get' } = opts;\n if (\n readOnly === undefined &&\n ['get', 'head'].includes(method.toLowerCase())\n ) {\n readOnly = true;\n }\n const { token } = findMatchingRule(authUrl.toString(), {\n hostType: this.hostType,\n readOnly,\n });\n opts.token = token;\n }\n\n const accept = constructAcceptString(opts.headers?.accept);\n\n opts.headers = {\n ...opts.headers,\n accept,\n };\n }\n\n protected override handleError(\n url: string | URL,\n opts: HttpOptions,\n err: GotLegacyError,\n ): never {\n throw handleGotError(err, url, opts);\n }\n\n protected override async requestJsonUnsafe<T>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<GithubHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const httpOptions = options.httpOptions ?? {};\n const resolvedUrl = this.resolveUrl(options.url, httpOptions);\n const opts = {\n ...options,\n url: resolvedUrl,\n };\n\n const result = await super.requestJsonUnsafe<T>(method, opts);\n if (httpOptions.paginate) {\n delete httpOptions.cacheProvider;\n httpOptions.memCache = false;\n // Check if result is paginated\n const pageLimit = httpOptions.pageLimit ?? 10;\n const linkHeader = parseLinkHeader(result?.headers?.link);\n const next = linkHeader?.next;\n const env = getEnv();\n if (next?.url && linkHeader?.last?.page) {\n let lastPage = parseInt(linkHeader.last.page);\n if (!env.RENOVATE_PAGINATE_ALL && httpOptions.paginate !== 'all') {\n lastPage = Math.min(pageLimit, lastPage);\n }\n const baseUrl = httpOptions.baseUrl ?? this.baseUrl;\n const parsedUrl = new URL(next.url, baseUrl);\n const rebasePagination =\n !!baseUrl &&\n !!env.RENOVATE_X_REBASE_PAGINATION_LINKS &&\n // Preserve github.com URLs for use cases like release notes\n parsedUrl.origin !== 'https://api.github.com';\n const firstPageUrl = rebasePagination\n ? replaceUrlBase(parsedUrl, baseUrl)\n : parsedUrl;\n const queue = [...range(2, lastPage)].map(\n (pageNumber) => (): Promise<HttpResponse<T>> => {\n // copy before modifying searchParams\n const nextUrl = new URL(firstPageUrl);\n nextUrl.searchParams.set('page', String(pageNumber));\n return super.requestJsonUnsafe<T>(method, {\n ...opts,\n url: nextUrl,\n });\n },\n );\n const pages = await p.all(queue);\n if (httpOptions.paginationField && is.plainObject(result.body)) {\n const paginatedResult = result.body[httpOptions.paginationField];\n if (is.array<T>(paginatedResult)) {\n for (const nextPage of pages) {\n if (is.plainObject(nextPage.body)) {\n const nextPageResults =\n nextPage.body[httpOptions.paginationField];\n if (is.array<T>(nextPageResults)) {\n paginatedResult.push(...nextPageResults);\n }\n }\n }\n }\n } else if (is.array<T>(result.body)) {\n for (const nextPage of pages) {\n if (is.array<T>(nextPage.body)) {\n result.body.push(...nextPage.body);\n }\n }\n }\n }\n }\n return result;\n }\n\n public async requestGraphql<T = unknown>(\n query: string,\n options: GraphqlOptions = {},\n ): Promise<GithubGraphqlResponse<T> | null> {\n const path = 'graphql';\n\n const { paginate, count = MAX_GRAPHQL_PAGE_SIZE, cursor = null } = options;\n let { variables } = options;\n if (paginate) {\n variables = {\n ...variables,\n count,\n cursor,\n };\n }\n const body = variables ? { query, variables } : { query };\n\n const opts: GithubBaseHttpOptions = {\n baseUrl: baseUrl.replace('/v3/', '/'), // GHE uses unversioned graphql path\n body,\n headers: { accept: options?.acceptHeader },\n readOnly: options.readOnly,\n };\n if (options.token) {\n opts.token = options.token;\n }\n logger.trace(`Performing Github GraphQL request`);\n\n try {\n const res = await this.postJson<GithubGraphqlResponse<T>>(path, opts);\n return res?.body;\n } catch (err) {\n logger.debug({ err, query, options }, 'Unexpected GraphQL Error');\n if (err instanceof ExternalHostError && count && count > 10) {\n logger.info('Reducing pagination count to workaround graphql errors');\n return null;\n }\n throw handleGotError(err, path, opts);\n }\n }\n\n async queryRepoField<T = Record<string, unknown>>(\n query: string,\n fieldName: string,\n options: GraphqlOptions = {},\n ): Promise<T[]> {\n const result: T[] = [];\n\n const { paginate = true } = options;\n\n let optimalCount: null | number = null;\n let count = getGraphqlPageSize(\n fieldName,\n options.count ?? MAX_GRAPHQL_PAGE_SIZE,\n );\n let limit = options.limit ?? 1000;\n let cursor: string | null = null;\n\n let isIterating = true;\n while (isIterating) {\n const res = await this.requestGraphql<GithubGraphqlRepoData<T>>(query, {\n ...options,\n count: Math.min(count, limit),\n cursor,\n paginate,\n });\n const repositoryData = res?.data?.repository;\n if (\n is.nonEmptyObject(repositoryData) &&\n !is.nullOrUndefined(repositoryData[fieldName])\n ) {\n optimalCount = count;\n\n const {\n nodes = [],\n edges = [],\n pageInfo,\n } = repositoryData[fieldName] as GraphqlPaginatedContent<T>;\n result.push(...nodes);\n result.push(...edges);\n\n limit = Math.max(0, limit - nodes.length - edges.length);\n\n if (limit === 0) {\n isIterating = false;\n } else if (paginate && pageInfo) {\n const { hasNextPage, endCursor } = pageInfo;\n if (hasNextPage && endCursor) {\n cursor = endCursor;\n } else {\n isIterating = false;\n }\n }\n } else {\n count = Math.floor(count / 2);\n if (count === 0) {\n logger.warn({ query, options, res }, 'Error fetching GraphQL nodes');\n isIterating = false;\n }\n }\n\n if (!paginate) {\n isIterating = false;\n }\n }\n\n if (optimalCount && optimalCount < MAX_GRAPHQL_PAGE_SIZE) {\n setGraphqlPageSize(fieldName, optimalCount);\n }\n\n return result;\n }\n\n /**\n * Get the raw text file from a URL.\n * Only use this method to fetch text files.\n *\n * @param url Full API URL, contents path or path inside the repository to the file\n * @param options\n *\n * @example url = 'https://api.github.com/repos/renovatebot/renovate/contents/package.json'\n * @example url = 'renovatebot/renovate/contents/package.json'\n * @example url = 'package.json' & options.repository = 'renovatebot/renovate'\n */\n public async getRawTextFile(\n url: string,\n options: InternalHttpOptions & GithubBaseHttpOptions = {},\n ): Promise<HttpResponse> {\n const newOptions: InternalHttpOptions & GithubBaseHttpOptions = {\n ...options,\n headers: {\n accept: 'application/vnd.github.raw+json',\n },\n };\n\n let newURL = url;\n const httpRegex = regEx(/^https?:\\/\\//);\n if (options.repository && !httpRegex.test(options.repository)) {\n newURL = joinUrlParts(options.repository, 'contents', url);\n }\n\n return await this.getText(newURL, newOptions);\n }\n}\n"]}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../lib/util/http/github.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isArray,\n isNonEmptyObject,\n isNullOrUndefined,\n isPlainObject,\n} from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport {\n PLATFORM_BAD_CREDENTIALS,\n PLATFORM_INTEGRATION_UNAUTHORIZED,\n PLATFORM_RATE_LIMIT_EXCEEDED,\n REPOSITORY_CHANGED,\n} from '../../constants/error-messages';\nimport { logger } from '../../logger';\nimport { ExternalHostError } from '../../types/errors/external-host-error';\nimport { getCache } from '../cache/repository';\nimport { getEnv } from '../env';\nimport { maskToken } from '../mask';\nimport * as p from '../promises';\nimport { range } from '../range';\nimport { regEx } from '../regex';\nimport { joinUrlParts, parseLinkHeader, parseUrl } from '../url';\nimport { findMatchingRule } from './host-rules';\nimport {\n HttpBase,\n type InternalHttpOptions,\n type InternalJsonUnsafeOptions,\n} from './http';\nimport type { GotLegacyError } from './legacy';\nimport type {\n GraphqlOptions,\n HttpMethod,\n HttpOptions,\n HttpResponse,\n} from './types';\n\nconst githubBaseUrl = 'https://api.github.com/';\nlet baseUrl = githubBaseUrl;\nexport const setBaseUrl = (url: string): void => {\n baseUrl = url;\n};\n\nexport interface GithubBaseHttpOptions extends HttpOptions {\n repository?: string;\n}\n\nexport interface GithubHttpOptions extends GithubBaseHttpOptions {\n paginate?: boolean | string;\n paginationField?: string;\n pageLimit?: number;\n}\n\ninterface GithubGraphqlRepoData<T = unknown> {\n repository?: T;\n}\n\nexport type GithubGraphqlResponse<T = unknown> =\n | {\n data: T;\n errors?: never;\n }\n | {\n data?: never;\n errors: {\n type?: string;\n message: string;\n }[];\n };\n\nfunction handleGotError(\n err: GotLegacyError,\n url: string | URL,\n opts: GithubBaseHttpOptions,\n): Error {\n const path = url.toString();\n let message = err.message || '';\n const body = err.response?.body;\n if (isPlainObject(body) && 'message' in body) {\n message = String(body.message);\n }\n if (\n err.code === 'ERR_HTTP2_STREAM_ERROR' ||\n err.code === 'ENOTFOUND' ||\n err.code === 'ETIMEDOUT' ||\n err.code === 'EAI_AGAIN' ||\n err.code === 'ECONNRESET'\n ) {\n logger.debug({ err }, 'GitHub failure: RequestError');\n return new ExternalHostError(err, 'github');\n }\n if (err.name === 'ParseError') {\n logger.debug({ err }, '');\n return new ExternalHostError(err, 'github');\n }\n if (err.statusCode && err.statusCode >= 500 && err.statusCode < 600) {\n logger.debug({ err }, 'GitHub failure: 5xx');\n return new ExternalHostError(err, 'github');\n }\n if (\n err.statusCode === 403 &&\n message.startsWith('You have triggered an abuse detection mechanism')\n ) {\n logger.debug({ err }, 'GitHub failure: abuse detection');\n return new Error(PLATFORM_RATE_LIMIT_EXCEEDED);\n }\n if (\n err.statusCode === 403 &&\n message.startsWith('You have exceeded a secondary rate limit')\n ) {\n logger.warn({ err }, 'GitHub failure: secondary rate limit');\n return new Error(PLATFORM_RATE_LIMIT_EXCEEDED);\n }\n if (err.statusCode === 403 && message.includes('Upgrade to GitHub Pro')) {\n logger.debug(`Endpoint: ${path}, needs paid GitHub plan`);\n return err;\n }\n if (err.statusCode === 403 && message.includes('rate limit exceeded')) {\n logger.debug({ err }, 'GitHub failure: rate limit');\n return new Error(PLATFORM_RATE_LIMIT_EXCEEDED);\n }\n if (\n err.statusCode === 403 &&\n message.startsWith('Resource not accessible by integration')\n ) {\n logger.debug(\n { err },\n 'GitHub failure: Resource not accessible by integration',\n );\n return new Error(PLATFORM_INTEGRATION_UNAUTHORIZED);\n }\n if (err.statusCode === 401) {\n // Warn once for github.com token if unauthorized\n const hostname = parseUrl(url)?.hostname;\n if (hostname === 'github.com' || hostname === 'api.github.com') {\n logger.once.warn('github.com token 401 unauthorized');\n }\n if (message.includes('Bad credentials')) {\n const rateLimit = err.headers?.['x-ratelimit-limit'] ?? -1;\n logger.debug(\n {\n token: maskToken(opts.token),\n err,\n },\n 'GitHub failure: Bad credentials',\n );\n if (rateLimit === '60') {\n return new ExternalHostError(err, 'github');\n }\n return new Error(PLATFORM_BAD_CREDENTIALS);\n }\n }\n if (err.statusCode === 422) {\n if (\n message.includes('Review cannot be requested from pull request author')\n ) {\n return err;\n } else if (err.body?.errors?.find((e: any) => e.field === 'milestone')) {\n return err;\n } else if (err.body?.errors?.find((e: any) => e.code === 'invalid')) {\n logger.debug({ err }, 'Received invalid response - aborting');\n return new Error(REPOSITORY_CHANGED);\n } else if (\n err.body?.errors?.find((e: any) =>\n e.message?.startsWith('A pull request already exists'),\n )\n ) {\n return err;\n }\n logger.debug({ err }, '422 Error thrown from GitHub');\n return new ExternalHostError(err, 'github');\n }\n if (\n err.statusCode === 410 &&\n err.body?.message === 'Issues are disabled for this repo'\n ) {\n return err;\n }\n return err;\n}\n\ninterface GraphqlPaginatedContent<T = unknown> {\n nodes: T[];\n edges: T[];\n pageInfo: { hasNextPage: boolean; endCursor: string };\n}\n\nfunction constructAcceptString(input?: any): string {\n const defaultAccept = 'application/vnd.github.v3+json';\n const acceptStrings =\n typeof input === 'string' ? input.split(regEx(/\\s*,\\s*/)) : [];\n\n // TODO: regression of #6736\n if (\n !acceptStrings.some((x) => x === defaultAccept) &&\n (!acceptStrings.some((x) => x.startsWith('application/vnd.github.')) ||\n acceptStrings.length < 2)\n ) {\n acceptStrings.push(defaultAccept);\n }\n return acceptStrings.join(', ');\n}\n\nconst MAX_GRAPHQL_PAGE_SIZE = 100;\n\ninterface GraphqlPageCacheItem {\n pageLastResizedAt: string;\n pageSize: number;\n}\n\nexport type GraphqlPageCache = Record<string, GraphqlPageCacheItem>;\n\nfunction getGraphqlPageSize(\n fieldName: string,\n defaultPageSize = MAX_GRAPHQL_PAGE_SIZE,\n): number {\n const cache = getCache();\n const graphqlPageCache = cache?.platform?.github\n ?.graphqlPageCache as GraphqlPageCache;\n const cachedRecord = graphqlPageCache?.[fieldName];\n\n if (graphqlPageCache && cachedRecord) {\n logger.debug(\n { fieldName, ...cachedRecord },\n 'GraphQL page size: found cached value',\n );\n\n const oldPageSize = cachedRecord.pageSize;\n\n const now = DateTime.local();\n const then = DateTime.fromISO(cachedRecord.pageLastResizedAt);\n const expiry = then.plus({ hours: 24 });\n if (now > expiry) {\n const newPageSize = Math.min(oldPageSize * 2, MAX_GRAPHQL_PAGE_SIZE);\n if (newPageSize < MAX_GRAPHQL_PAGE_SIZE) {\n const timestamp = now.toISO();\n\n logger.debug(\n { fieldName, oldPageSize, newPageSize, timestamp },\n 'GraphQL page size: expanding',\n );\n\n cachedRecord.pageLastResizedAt = timestamp;\n cachedRecord.pageSize = newPageSize;\n } else {\n logger.debug(\n { fieldName, oldPageSize, newPageSize },\n 'GraphQL page size: expanded to default page size',\n );\n\n delete graphqlPageCache[fieldName];\n }\n\n return newPageSize;\n }\n\n return oldPageSize;\n }\n\n return defaultPageSize;\n}\n\nfunction setGraphqlPageSize(fieldName: string, newPageSize: number): void {\n const oldPageSize = getGraphqlPageSize(fieldName);\n if (newPageSize !== oldPageSize) {\n const now = DateTime.local();\n const pageLastResizedAt = now.toISO();\n logger.debug(\n { fieldName, oldPageSize, newPageSize, timestamp: pageLastResizedAt },\n 'GraphQL page size: shrinking',\n );\n const cache = getCache();\n cache.platform ??= {};\n cache.platform.github ??= {};\n cache.platform.github.graphqlPageCache ??= {};\n const graphqlPageCache = cache.platform.github\n .graphqlPageCache as GraphqlPageCache;\n graphqlPageCache[fieldName] = {\n pageLastResizedAt,\n pageSize: newPageSize,\n };\n }\n}\n\nfunction replaceUrlBase(url: URL, baseUrl: string): URL {\n const relativeUrl = `${url.pathname}${url.search}`;\n return new URL(relativeUrl, baseUrl);\n}\n\nexport class GithubHttp extends HttpBase<GithubHttpOptions> {\n protected override get baseUrl(): string | undefined {\n return baseUrl;\n }\n\n constructor(hostType = 'github', options?: HttpOptions) {\n super(hostType, options);\n }\n\n protected override processOptions(\n url: URL,\n opts: InternalHttpOptions & GithubBaseHttpOptions,\n ): void {\n if (!opts.token) {\n const authUrl = new URL(url);\n\n if (opts.repository) {\n // set authUrl to https://api.github.com/repos/org/repo or https://gihub.domain.com/api/v3/repos/org/repo\n authUrl.hash = '';\n authUrl.search = '';\n authUrl.pathname = joinUrlParts(\n authUrl.pathname.startsWith('/api/v3') ? '/api/v3' : '',\n 'repos',\n `${opts.repository}`,\n );\n }\n\n let readOnly = opts.readOnly;\n const { method = 'get' } = opts;\n if (\n readOnly === undefined &&\n ['get', 'head'].includes(method.toLowerCase())\n ) {\n readOnly = true;\n }\n const { token } = findMatchingRule(authUrl.toString(), {\n hostType: this.hostType,\n readOnly,\n });\n opts.token = token;\n }\n\n const accept = constructAcceptString(opts.headers?.accept);\n\n opts.headers = {\n ...opts.headers,\n accept,\n };\n }\n\n protected override handleError(\n url: string | URL,\n opts: HttpOptions,\n err: GotLegacyError,\n ): never {\n throw handleGotError(err, url, opts);\n }\n\n protected override async requestJsonUnsafe<T>(\n method: HttpMethod,\n options: InternalJsonUnsafeOptions<GithubHttpOptions>,\n ): Promise<HttpResponse<T>> {\n const httpOptions = options.httpOptions ?? {};\n const resolvedUrl = this.resolveUrl(options.url, httpOptions);\n const opts = {\n ...options,\n url: resolvedUrl,\n };\n\n const result = await super.requestJsonUnsafe<T>(method, opts);\n if (httpOptions.paginate) {\n delete httpOptions.cacheProvider;\n httpOptions.memCache = false;\n // Check if result is paginated\n const pageLimit = httpOptions.pageLimit ?? 10;\n const linkHeader = parseLinkHeader(result?.headers?.link);\n const next = linkHeader?.next;\n const env = getEnv();\n if (next?.url && linkHeader?.last?.page) {\n let lastPage = parseInt(linkHeader.last.page);\n if (!env.RENOVATE_PAGINATE_ALL && httpOptions.paginate !== 'all') {\n lastPage = Math.min(pageLimit, lastPage);\n }\n const baseUrl = httpOptions.baseUrl ?? this.baseUrl;\n const parsedUrl = new URL(next.url, baseUrl);\n const rebasePagination =\n !!baseUrl &&\n !!env.RENOVATE_X_REBASE_PAGINATION_LINKS &&\n // Preserve github.com URLs for use cases like release notes\n parsedUrl.origin !== 'https://api.github.com';\n const firstPageUrl = rebasePagination\n ? replaceUrlBase(parsedUrl, baseUrl)\n : parsedUrl;\n const queue = [...range(2, lastPage)].map(\n (pageNumber) => (): Promise<HttpResponse<T>> => {\n // copy before modifying searchParams\n const nextUrl = new URL(firstPageUrl);\n nextUrl.searchParams.set('page', String(pageNumber));\n return super.requestJsonUnsafe<T>(method, {\n ...opts,\n url: nextUrl,\n });\n },\n );\n const pages = await p.all(queue);\n if (httpOptions.paginationField && isPlainObject(result.body)) {\n const paginatedResult = result.body[httpOptions.paginationField];\n if (isArray<T>(paginatedResult)) {\n for (const nextPage of pages) {\n if (isPlainObject(nextPage.body)) {\n const nextPageResults =\n nextPage.body[httpOptions.paginationField];\n if (isArray<T>(nextPageResults)) {\n paginatedResult.push(...nextPageResults);\n }\n }\n }\n }\n } else if (isArray<T>(result.body)) {\n for (const nextPage of pages) {\n if (isArray<T>(nextPage.body)) {\n result.body.push(...nextPage.body);\n }\n }\n }\n }\n }\n return result;\n }\n\n public async requestGraphql<T = unknown>(\n query: string,\n options: GraphqlOptions = {},\n ): Promise<GithubGraphqlResponse<T> | null> {\n const path = 'graphql';\n\n const { paginate, count = MAX_GRAPHQL_PAGE_SIZE, cursor = null } = options;\n let { variables } = options;\n if (paginate) {\n variables = {\n ...variables,\n count,\n cursor,\n };\n }\n const body = variables ? { query, variables } : { query };\n\n const opts: GithubBaseHttpOptions = {\n baseUrl: baseUrl.replace('/v3/', '/'), // GHE uses unversioned graphql path\n body,\n headers: { accept: options?.acceptHeader },\n readOnly: options.readOnly,\n };\n if (options.token) {\n opts.token = options.token;\n }\n logger.trace(`Performing Github GraphQL request`);\n\n try {\n const res = await this.postJson<GithubGraphqlResponse<T>>(path, opts);\n return res?.body;\n } catch (err) {\n logger.debug({ err, query, options }, 'Unexpected GraphQL Error');\n if (err instanceof ExternalHostError && count && count > 10) {\n logger.info('Reducing pagination count to workaround graphql errors');\n return null;\n }\n throw handleGotError(err, path, opts);\n }\n }\n\n async queryRepoField<T = Record<string, unknown>>(\n query: string,\n fieldName: string,\n options: GraphqlOptions = {},\n ): Promise<T[]> {\n const result: T[] = [];\n\n const { paginate = true } = options;\n\n let optimalCount: null | number = null;\n let count = getGraphqlPageSize(\n fieldName,\n options.count ?? MAX_GRAPHQL_PAGE_SIZE,\n );\n let limit = options.limit ?? 1000;\n let cursor: string | null = null;\n\n let isIterating = true;\n while (isIterating) {\n const res = await this.requestGraphql<GithubGraphqlRepoData<T>>(query, {\n ...options,\n count: Math.min(count, limit),\n cursor,\n paginate,\n });\n const repositoryData = res?.data?.repository;\n if (\n isNonEmptyObject(repositoryData) &&\n !isNullOrUndefined(repositoryData[fieldName])\n ) {\n optimalCount = count;\n\n const {\n nodes = [],\n edges = [],\n pageInfo,\n } = repositoryData[fieldName] as GraphqlPaginatedContent<T>;\n result.push(...nodes);\n result.push(...edges);\n\n limit = Math.max(0, limit - nodes.length - edges.length);\n\n if (limit === 0) {\n isIterating = false;\n } else if (paginate && pageInfo) {\n const { hasNextPage, endCursor } = pageInfo;\n if (hasNextPage && endCursor) {\n cursor = endCursor;\n } else {\n isIterating = false;\n }\n }\n } else {\n count = Math.floor(count / 2);\n if (count === 0) {\n logger.warn({ query, options, res }, 'Error fetching GraphQL nodes');\n isIterating = false;\n }\n }\n\n if (!paginate) {\n isIterating = false;\n }\n }\n\n if (optimalCount && optimalCount < MAX_GRAPHQL_PAGE_SIZE) {\n setGraphqlPageSize(fieldName, optimalCount);\n }\n\n return result;\n }\n\n /**\n * Get the raw text file from a URL.\n * Only use this method to fetch text files.\n *\n * @param url Full API URL, contents path or path inside the repository to the file\n * @param options\n *\n * @example url = 'https://api.github.com/repos/renovatebot/renovate/contents/package.json'\n * @example url = 'renovatebot/renovate/contents/package.json'\n * @example url = 'package.json' & options.repository = 'renovatebot/renovate'\n */\n public async getRawTextFile(\n url: string,\n options: InternalHttpOptions & GithubBaseHttpOptions = {},\n ): Promise<HttpResponse> {\n const newOptions: InternalHttpOptions & GithubBaseHttpOptions = {\n ...options,\n headers: {\n accept: 'application/vnd.github.raw+json',\n },\n };\n\n let newURL = url;\n const httpRegex = regEx(/^https?:\\/\\//);\n if (options.repository && !httpRegex.test(options.repository)) {\n newURL = joinUrlParts(options.repository, 'contents', url);\n }\n\n return await this.getText(newURL, newOptions);\n }\n}\n"]}