renovate 40.0.0-next.2 → 40.0.0-next.21

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 (294) hide show
  1. package/dist/config/decrypt/legacy.js +0 -1
  2. package/dist/config/decrypt/legacy.js.map +1 -1
  3. package/dist/config/decrypt.d.ts +3 -1
  4. package/dist/config/decrypt.js +56 -13
  5. package/dist/config/decrypt.js.map +1 -1
  6. package/dist/config/migrate-validate.js +3 -2
  7. package/dist/config/migrate-validate.js.map +1 -1
  8. package/dist/config/migration.js +2 -1
  9. package/dist/config/migration.js.map +1 -1
  10. package/dist/config/migrations/custom/rebase-stale-prs-migration.js +1 -1
  11. package/dist/config/migrations/custom/rebase-stale-prs-migration.js.map +1 -1
  12. package/dist/config/options/index.js +3 -3
  13. package/dist/config/options/index.js.map +1 -1
  14. package/dist/config/parse.js +2 -2
  15. package/dist/config/parse.js.map +1 -1
  16. package/dist/config/presets/gitea/index.js +0 -1
  17. package/dist/config/presets/gitea/index.js.map +1 -1
  18. package/dist/config/presets/github/index.js +0 -1
  19. package/dist/config/presets/github/index.js.map +1 -1
  20. package/dist/config/presets/gitlab/index.js +1 -1
  21. package/dist/config/presets/gitlab/index.js.map +1 -1
  22. package/dist/config/presets/http/index.js +1 -2
  23. package/dist/config/presets/http/index.js.map +1 -1
  24. package/dist/config/presets/index.js +0 -7
  25. package/dist/config/presets/index.js.map +1 -1
  26. package/dist/config/presets/internal/custom-managers.js +3 -4
  27. package/dist/config/presets/internal/custom-managers.js.map +1 -1
  28. package/dist/config/presets/internal/index.js +1 -3
  29. package/dist/config/presets/internal/index.js.map +1 -1
  30. package/dist/config/schema.d.ts +2 -2
  31. package/dist/config/validation.js +3 -5
  32. package/dist/config/validation.js.map +1 -1
  33. package/dist/config-validator.js +0 -1
  34. package/dist/config-validator.js.map +1 -1
  35. package/dist/constants/category.js +0 -1
  36. package/dist/constants/category.js.map +1 -1
  37. package/dist/data/monorepo.json +2 -1
  38. package/dist/instrumentation/index.js +5 -3
  39. package/dist/instrumentation/index.js.map +1 -1
  40. package/dist/instrumentation/utils.js +1 -1
  41. package/dist/instrumentation/utils.js.map +1 -1
  42. package/dist/logger/cmd-serializer.js +0 -1
  43. package/dist/logger/cmd-serializer.js.map +1 -1
  44. package/dist/logger/config-serializer.js +0 -1
  45. package/dist/logger/config-serializer.js.map +1 -1
  46. package/dist/logger/index.js +0 -3
  47. package/dist/logger/index.js.map +1 -1
  48. package/dist/logger/once.js +4 -2
  49. package/dist/logger/once.js.map +1 -1
  50. package/dist/logger/pretty-stdout.js +0 -1
  51. package/dist/logger/pretty-stdout.js.map +1 -1
  52. package/dist/logger/renovate-logger.js +1 -1
  53. package/dist/logger/renovate-logger.js.map +1 -1
  54. package/dist/logger/utils.js +6 -11
  55. package/dist/logger/utils.js.map +1 -1
  56. package/dist/modules/datasource/artifactory/index.js +1 -1
  57. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  58. package/dist/modules/datasource/azure-pipelines-tasks/index.js +11 -1
  59. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  60. package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +16 -0
  61. package/dist/modules/datasource/azure-pipelines-tasks/schema.js +2 -0
  62. package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
  63. package/dist/modules/datasource/crate/index.js +1 -1
  64. package/dist/modules/datasource/crate/index.js.map +1 -1
  65. package/dist/modules/datasource/custom/formats/html.js +1 -1
  66. package/dist/modules/datasource/custom/formats/html.js.map +1 -1
  67. package/dist/modules/datasource/custom/formats/yaml.js +1 -1
  68. package/dist/modules/datasource/custom/formats/yaml.js.map +1 -1
  69. package/dist/modules/datasource/custom/schema.d.ts +5 -5
  70. package/dist/modules/datasource/deb/index.js +1 -1
  71. package/dist/modules/datasource/deb/index.js.map +1 -1
  72. package/dist/modules/datasource/deno/schema.d.ts +8 -8
  73. package/dist/modules/datasource/docker/common.js +1 -1
  74. package/dist/modules/datasource/docker/common.js.map +1 -1
  75. package/dist/modules/datasource/docker/index.js +5 -3
  76. package/dist/modules/datasource/docker/index.js.map +1 -1
  77. package/dist/modules/datasource/docker/schema.d.ts +32 -32
  78. package/dist/modules/datasource/galaxy/schema.d.ts +1 -1
  79. package/dist/modules/datasource/galaxy-collection/schema.d.ts +3 -3
  80. package/dist/modules/datasource/gitea-releases/schema.d.ts +4 -4
  81. package/dist/modules/datasource/gitea-tags/schema.d.ts +4 -4
  82. package/dist/modules/datasource/github-release-attachments/index.js +2 -2
  83. package/dist/modules/datasource/github-release-attachments/index.js.map +1 -1
  84. package/dist/modules/datasource/go/base.js +1 -1
  85. package/dist/modules/datasource/go/base.js.map +1 -1
  86. package/dist/modules/datasource/go/releases-goproxy.js +1 -1
  87. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  88. package/dist/modules/datasource/golang-version/index.js +1 -1
  89. package/dist/modules/datasource/golang-version/index.js.map +1 -1
  90. package/dist/modules/datasource/hex/schema.d.ts +11 -11
  91. package/dist/modules/datasource/hexpm-bob/index.js +1 -1
  92. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  93. package/dist/modules/datasource/index.js +2 -2
  94. package/dist/modules/datasource/index.js.map +1 -1
  95. package/dist/modules/datasource/maven/util.js +1 -1
  96. package/dist/modules/datasource/maven/util.js.map +1 -1
  97. package/dist/modules/datasource/nuget/v2.js +1 -1
  98. package/dist/modules/datasource/nuget/v2.js.map +1 -1
  99. package/dist/modules/datasource/nuget/v3.js +1 -1
  100. package/dist/modules/datasource/nuget/v3.js.map +1 -1
  101. package/dist/modules/datasource/packagist/schema.d.ts +30 -30
  102. package/dist/modules/datasource/pod/index.js +1 -1
  103. package/dist/modules/datasource/pod/index.js.map +1 -1
  104. package/dist/modules/datasource/pypi/index.js +1 -1
  105. package/dist/modules/datasource/pypi/index.js.map +1 -1
  106. package/dist/modules/datasource/ruby-version/index.js +1 -1
  107. package/dist/modules/datasource/ruby-version/index.js.map +1 -1
  108. package/dist/modules/datasource/rubygems/index.js +1 -1
  109. package/dist/modules/datasource/rubygems/index.js.map +1 -1
  110. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js +2 -2
  111. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
  112. package/dist/modules/datasource/terraform-provider/index.js +1 -1
  113. package/dist/modules/datasource/terraform-provider/index.js.map +1 -1
  114. package/dist/modules/datasource/unity3d/index.d.ts +4 -1
  115. package/dist/modules/datasource/unity3d/index.js +36 -42
  116. package/dist/modules/datasource/unity3d/index.js.map +1 -1
  117. package/dist/modules/datasource/unity3d/schema.d.ts +47 -0
  118. package/dist/modules/datasource/unity3d/schema.js +17 -0
  119. package/dist/modules/datasource/unity3d/schema.js.map +1 -0
  120. package/dist/modules/manager/argocd/schema.d.ts +10 -10
  121. package/dist/modules/manager/azure-pipelines/schema.d.ts +10 -10
  122. package/dist/modules/manager/batect/schema.d.ts +6 -6
  123. package/dist/modules/manager/batect-wrapper/artifacts.js +1 -1
  124. package/dist/modules/manager/batect-wrapper/artifacts.js.map +1 -1
  125. package/dist/modules/manager/bazel/rules/docker.d.ts +9 -9
  126. package/dist/modules/manager/bazel/rules/git.d.ts +10 -10
  127. package/dist/modules/manager/bazel/rules/git.js +7 -1
  128. package/dist/modules/manager/bazel/rules/git.js.map +1 -1
  129. package/dist/modules/manager/bazel/rules/go.d.ts +5 -5
  130. package/dist/modules/manager/bazel/rules/oci.d.ts +3 -3
  131. package/dist/modules/manager/bazel-module/parser/fragments.d.ts +40 -40
  132. package/dist/modules/manager/bazel-module/parser/maven.d.ts +27 -27
  133. package/dist/modules/manager/bazel-module/parser/oci.d.ts +17 -17
  134. package/dist/modules/manager/bazel-module/rules.d.ts +40 -40
  135. package/dist/modules/manager/bundler/artifacts.js.map +1 -1
  136. package/dist/modules/manager/cargo/schema.d.ts +100 -100
  137. package/dist/modules/manager/circleci/schema.d.ts +6 -6
  138. package/dist/modules/manager/composer/schema.d.ts +40 -40
  139. package/dist/modules/manager/composer/utils.js +9 -6
  140. package/dist/modules/manager/composer/utils.js.map +1 -1
  141. package/dist/modules/manager/crossplane/schema.d.ts +2 -2
  142. package/dist/modules/manager/custom/jsonata/index.js +4 -0
  143. package/dist/modules/manager/custom/jsonata/index.js.map +1 -1
  144. package/dist/modules/manager/custom/jsonata/schema.d.ts +7 -7
  145. package/dist/modules/manager/devbox/artifacts.d.ts +1 -1
  146. package/dist/modules/manager/devbox/artifacts.js +29 -11
  147. package/dist/modules/manager/devbox/artifacts.js.map +1 -1
  148. package/dist/modules/manager/fingerprint.generated.js +68 -68
  149. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  150. package/dist/modules/manager/fleet/schema.d.ts +12 -12
  151. package/dist/modules/manager/flux/schema.d.ts +50 -50
  152. package/dist/modules/manager/glasskube/schema.d.ts +8 -8
  153. package/dist/modules/manager/gradle-wrapper/artifacts.js +1 -1
  154. package/dist/modules/manager/gradle-wrapper/artifacts.js.map +1 -1
  155. package/dist/modules/manager/maven/extract.js +3 -1
  156. package/dist/modules/manager/maven/extract.js.map +1 -1
  157. package/dist/modules/manager/mise/extract.js +1 -1
  158. package/dist/modules/manager/mise/extract.js.map +1 -1
  159. package/dist/modules/manager/nix/schema.d.ts +24 -24
  160. package/dist/modules/manager/npm/schema.d.ts +13 -13
  161. package/dist/modules/manager/nuget/schema.d.ts +8 -8
  162. package/dist/modules/manager/ocb/schema.d.ts +6 -6
  163. package/dist/modules/manager/pep621/schema.d.ts +55 -55
  164. package/dist/modules/manager/pep621/utils.js +1 -1
  165. package/dist/modules/manager/pep621/utils.js.map +1 -1
  166. package/dist/modules/manager/poetry/artifacts.js +3 -3
  167. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  168. package/dist/modules/manager/poetry/extract.js +2 -1
  169. package/dist/modules/manager/poetry/extract.js.map +1 -1
  170. package/dist/modules/manager/poetry/schema.d.ts +48 -48
  171. package/dist/modules/manager/sveltos/schema.d.ts +12 -12
  172. package/dist/modules/manager/terraform/lockfile/hash.d.ts +1 -1
  173. package/dist/modules/manager/vendir/schema.d.ts +27 -27
  174. package/dist/modules/platform/api.d.ts +1 -1
  175. package/dist/modules/platform/bitbucket/index.d.ts +1 -0
  176. package/dist/modules/platform/bitbucket/index.js +6 -1
  177. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  178. package/dist/modules/platform/bitbucket/schema.d.ts +17 -17
  179. package/dist/modules/platform/bitbucket-server/index.d.ts +1 -1
  180. package/dist/modules/platform/bitbucket-server/index.js +13 -11
  181. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  182. package/dist/modules/platform/bitbucket-server/schema.d.ts +75 -0
  183. package/dist/modules/platform/bitbucket-server/schema.js +14 -1
  184. package/dist/modules/platform/bitbucket-server/schema.js.map +1 -1
  185. package/dist/modules/platform/bitbucket-server/types.d.ts +2 -1
  186. package/dist/modules/platform/bitbucket-server/types.js.map +1 -1
  187. package/dist/modules/platform/bitbucket-server/utils.d.ts +0 -2
  188. package/dist/modules/platform/bitbucket-server/utils.js +1 -51
  189. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  190. package/dist/modules/platform/gerrit/client.js +1 -1
  191. package/dist/modules/platform/gerrit/client.js.map +1 -1
  192. package/dist/modules/platform/gitea/index.d.ts +1 -0
  193. package/dist/modules/platform/gitea/index.js +11 -0
  194. package/dist/modules/platform/gitea/index.js.map +1 -1
  195. package/dist/modules/platform/gitea/schema.d.ts +8 -8
  196. package/dist/modules/platform/github/common.d.ts +2 -0
  197. package/dist/modules/platform/github/common.js +16 -0
  198. package/dist/modules/platform/github/common.js.map +1 -1
  199. package/dist/modules/platform/github/index.d.ts +1 -1
  200. package/dist/modules/platform/github/index.js +6 -4
  201. package/dist/modules/platform/github/index.js.map +1 -1
  202. package/dist/modules/platform/github/issue.d.ts +12 -12
  203. package/dist/modules/platform/github/schema.d.ts +65 -65
  204. package/dist/modules/platform/gitlab/index.d.ts +1 -0
  205. package/dist/modules/platform/gitlab/index.js +9 -0
  206. package/dist/modules/platform/gitlab/index.js.map +1 -1
  207. package/dist/modules/platform/scm.d.ts +1 -1
  208. package/dist/modules/versioning/composer/index.js +10 -0
  209. package/dist/modules/versioning/composer/index.js.map +1 -1
  210. package/dist/modules/versioning/npm/index.js +2 -1
  211. package/dist/modules/versioning/npm/index.js.map +1 -1
  212. package/dist/modules/versioning/schema.js +1 -1
  213. package/dist/modules/versioning/schema.js.map +1 -1
  214. package/dist/modules/versioning/types.d.ts +4 -0
  215. package/dist/modules/versioning/types.js.map +1 -1
  216. package/dist/proxy.js +2 -1
  217. package/dist/proxy.js.map +1 -1
  218. package/dist/renovate.js +2 -2
  219. package/dist/renovate.js.map +1 -1
  220. package/dist/util/cache/package/decorator.js +2 -2
  221. package/dist/util/cache/package/decorator.js.map +1 -1
  222. package/dist/util/cache/package/redis.js +0 -1
  223. package/dist/util/cache/package/redis.js.map +1 -1
  224. package/dist/util/cache/repository/impl/base.d.ts +1 -1
  225. package/dist/util/exec/containerbase.js +12 -12
  226. package/dist/util/exec/containerbase.js.map +1 -1
  227. package/dist/util/github/graphql/query-adapters/releases-query-adapter.d.ts +5 -5
  228. package/dist/util/http/auth.js +0 -1
  229. package/dist/util/http/auth.js.map +1 -1
  230. package/dist/util/http/bitbucket-server.d.ts +5 -4
  231. package/dist/util/http/bitbucket-server.js +17 -20
  232. package/dist/util/http/bitbucket-server.js.map +1 -1
  233. package/dist/util/http/bitbucket.d.ts +6 -5
  234. package/dist/util/http/bitbucket.js +30 -31
  235. package/dist/util/http/bitbucket.js.map +1 -1
  236. package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
  237. package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
  238. package/dist/util/http/cache/schema.d.ts +2 -2
  239. package/dist/util/http/errors.d.ts +2 -0
  240. package/dist/util/http/errors.js +8 -0
  241. package/dist/util/http/errors.js.map +1 -0
  242. package/dist/util/http/gerrit.d.ts +6 -4
  243. package/dist/util/http/gerrit.js +11 -12
  244. package/dist/util/http/gerrit.js.map +1 -1
  245. package/dist/util/http/gitea.d.ts +5 -4
  246. package/dist/util/http/gitea.js +12 -13
  247. package/dist/util/http/gitea.js.map +1 -1
  248. package/dist/util/http/github.d.ts +14 -8
  249. package/dist/util/http/github.js +64 -60
  250. package/dist/util/http/github.js.map +1 -1
  251. package/dist/util/http/gitlab.d.ts +7 -5
  252. package/dist/util/http/gitlab.js +56 -46
  253. package/dist/util/http/gitlab.js.map +1 -1
  254. package/dist/util/http/got.d.ts +9 -0
  255. package/dist/util/http/got.js +54 -0
  256. package/dist/util/http/got.js.map +1 -0
  257. package/dist/util/http/host-rules.d.ts +2 -1
  258. package/dist/util/http/host-rules.js.map +1 -1
  259. package/dist/util/http/http.d.ts +93 -0
  260. package/dist/util/http/http.js +339 -0
  261. package/dist/util/http/http.js.map +1 -0
  262. package/dist/util/http/index.d.ts +6 -74
  263. package/dist/util/http/index.js +5 -359
  264. package/dist/util/http/index.js.map +1 -1
  265. package/dist/util/http/legacy.js +4 -1
  266. package/dist/util/http/legacy.js.map +1 -1
  267. package/dist/util/http/types.d.ts +9 -16
  268. package/dist/util/http/types.js.map +1 -1
  269. package/dist/util/string.d.ts +15 -0
  270. package/dist/util/string.js +75 -0
  271. package/dist/util/string.js.map +1 -1
  272. package/dist/util/toml.d.ts +1 -0
  273. package/dist/util/toml.js +6 -0
  274. package/dist/util/toml.js.map +1 -1
  275. package/dist/util/url.js +3 -8
  276. package/dist/util/url.js.map +1 -1
  277. package/dist/util/yaml.js +2 -6
  278. package/dist/util/yaml.js.map +1 -1
  279. package/dist/workers/global/config/parse/env.js +3 -2
  280. package/dist/workers/global/config/parse/env.js.map +1 -1
  281. package/dist/workers/global/config/parse/file.js +19 -9
  282. package/dist/workers/global/config/parse/file.js.map +1 -1
  283. package/dist/workers/global/config/parse/host-rules-from-env.js +6 -2
  284. package/dist/workers/global/config/parse/host-rules-from-env.js.map +1 -1
  285. package/dist/workers/repository/cache.js +0 -1
  286. package/dist/workers/repository/cache.js.map +1 -1
  287. package/dist/workers/repository/onboarding/pr/config-description.js +3 -1
  288. package/dist/workers/repository/onboarding/pr/config-description.js.map +1 -1
  289. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js +1 -1
  290. package/dist/workers/repository/update/pr/changelog/bitbucket/index.js.map +1 -1
  291. package/dist/workers/repository/update/pr/changelog/gitlab/index.js +1 -1
  292. package/dist/workers/repository/update/pr/changelog/gitlab/index.js.map +1 -1
  293. package/package.json +44 -49
  294. package/renovate-schema.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../lib/modules/versioning/schema.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,6BAAwB;AACxB,yCAAsC;AACtC,wDAAgC;AAChC,4EAAsD;AAGzC,QAAA,UAAU,GAAG,OAAC;KACxB,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,cAAc,EAAE,GAAG,EAAiB,EAAE;IAChD,MAAM,CAAC,cAAc,EAAE,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtE,IAAI,UAAU,GAAG,aAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,eAAM,CAAC,KAAK,CACV,gBAAgB,cAAc,gCAAgC,iBAAiB,CAAC,EAAE,EAAE,CACrF,CAAC;QACF,OAAO,iBAAiB,CAAC,GAAG,CAAC;IAC/B,CAAC;IAED,IAAI,YAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM;YAC5C,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,gBAAgB,cAAc,wBAAwB;gBAC/D,MAAM,EAAE,EAAE,KAAK,EAAE;aAClB,CAAC,CAAC;YACH,OAAO,OAAC,CAAC,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { z } from 'zod';\nimport { logger } from '../../logger';\nimport versionings from './api';\nimport * as defaultVersioning from './semver-coerced';\nimport type { VersioningApi } from './types';\n\nexport const Versioning = z\n .string()\n .transform((versioningSpec, ctx): VersioningApi => {\n const [versioningName, ...versioningRest] = versioningSpec.split(':');\n\n let versioning = versionings.get(versioningName);\n if (!versioning) {\n logger.debug(\n `Versioning: '${versioningSpec}' not found, falling back to ${defaultVersioning.id}`,\n );\n return defaultVersioning.api;\n }\n\n if (is.function_(versioning)) {\n const versioningConfig = versioningRest.length\n ? versioningRest.join(':')\n : undefined;\n\n try {\n versioning = new versioning(versioningConfig);\n } catch (error) {\n ctx.addIssue({\n code: 'custom',\n message: `Versioning: '${versioningSpec}' failed to initialize`,\n params: { error },\n });\n return z.NEVER;\n }\n }\n\n return versioning;\n });\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../lib/modules/versioning/schema.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,6BAAwB;AACxB,yCAAsC;AACtC,wDAAgC;AAChC,4EAAsD;AAGzC,QAAA,UAAU,GAAG,OAAC;KACxB,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,cAAc,EAAE,GAAG,EAAiB,EAAE;IAChD,MAAM,CAAC,cAAc,EAAE,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtE,IAAI,UAAU,GAAG,aAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,eAAM,CAAC,KAAK,CACV,gBAAgB,cAAc,gCAAgC,iBAAiB,CAAC,EAAE,EAAE,CACrF,CAAC;QACF,OAAO,iBAAiB,CAAC,GAAG,CAAC;IAC/B,CAAC;IAED,IAAI,YAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM;YAC5C,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,gBAAgB,cAAc,wBAAwB;gBAC/D,MAAM,EAAE,EAAE,KAAK,EAAE;aAClB,CAAC,CAAC;YACH,OAAO,OAAC,CAAC,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { z } from 'zod';\nimport { logger } from '../../logger';\nimport versionings from './api';\nimport * as defaultVersioning from './semver-coerced';\nimport type { VersioningApi } from './types';\n\nexport const Versioning = z\n .string()\n .transform((versioningSpec, ctx): VersioningApi => {\n const [versioningName, ...versioningRest] = versioningSpec.split(':');\n\n let versioning = versionings.get(versioningName);\n if (!versioning) {\n logger.debug(\n `Versioning: '${versioningSpec}' not found, falling back to ${defaultVersioning.id}`,\n );\n return defaultVersioning.api;\n }\n\n if (is.function(versioning)) {\n const versioningConfig = versioningRest.length\n ? versioningRest.join(':')\n : undefined;\n\n try {\n versioning = new versioning(versioningConfig);\n } catch (error) {\n ctx.addIssue({\n code: 'custom',\n message: `Versioning: '${versioningSpec}' failed to initialize`,\n params: { error },\n });\n return z.NEVER;\n }\n }\n\n return versioning;\n });\n"]}
@@ -102,6 +102,10 @@ export interface VersioningApi {
102
102
  * @param superRange - the dom range
103
103
  */
104
104
  subset?(subRange: string, superRange: string): boolean | undefined;
105
+ /**
106
+ * Checks whether subRange intersects superRange.
107
+ */
108
+ intersects?(subRange: string, superRange: string): boolean;
105
109
  /**
106
110
  * Return whether unstable-to-unstable upgrades within the same major version are allowed.
107
111
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/modules/versioning/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { SemVer } from 'semver';\nimport type { RangeStrategy } from '../../types';\n\nexport interface NewValueConfig {\n currentValue: string;\n rangeStrategy: RangeStrategy;\n currentVersion?: string;\n newVersion: string;\n isReplacement?: boolean;\n}\nexport interface VersioningApi {\n // validation\n\n /**\n * Check whether the `input` is the valid version or range.\n *\n * For some managers, ranges are called \"constraints\",\"specifiers\", \"requirements\", etc.\n * We stick to the term \"range\" for all of it.\n */\n isValid(input: string): boolean;\n\n /**\n * Check whether the `input` is a valid version.\n *\n * There is no direct way to determine whether the `input` is the range,\n * but combination of `isVersion` and `isValid` can be used for that:\n *\n * `isValid(input) && !isVersion(input)`\n */\n isVersion(input: string | undefined | null): boolean;\n\n /**\n * Check whether the `input` is the:\n *\n * 1. Version, or\n * 2. Range with the special syntax of matching exactly one version:\n * - `==1.2.3` or `===1.2.3` for Python,\n * - `=1.2.3` for NPM,\n * - `[1.2.3]` for Maven or NuGet.\n *\n * This is used to provide pinning functionality.\n */\n isSingleVersion(input: string): boolean;\n\n /**\n * Check whether the `version` is considered to be \"stable\".\n */\n isStable(version: string): boolean;\n\n /**\n * Determines whether the version is compatible with the current one,\n * in some manager-dependent way.\n *\n * For most managers, all valid versions are compatible between each other.\n *\n * However, for example, Docker versions `1.2.3` and `1.2.4-alpine` are not compatible,\n * i.e. `1.2.4-alpine` is not a valid upgrade for `1.2.3`.\n */\n isCompatible(version: string, current?: string): boolean;\n\n // digestion of version\n\n getMajor(version: string | SemVer): null | number;\n getMinor(version: string | SemVer): null | number;\n getPatch(version: string | SemVer): null | number;\n\n // comparison\n\n /**\n * Check whether `version` and `other` are logically equivalent, even if\n * they're not the exact same string.\n *\n * For example, with Semver the build metadata should be ignored when comparing.\n */\n equals(version: string, other: string): boolean;\n\n /**\n * Check whether `version` is \"greater\" than the `other` version.\n */\n isGreaterThan(version: string, other: string): boolean;\n\n /**\n * Check whether the `version` is \"less\" than all the versions possible in\n * the `range`.\n */\n isLessThanRange?(version: string, range: string): boolean;\n\n /**\n * Select the highest version from `versions` that is within the given\n * `range` constraint, or return `null` if there is no matching version.\n */\n getSatisfyingVersion(versions: string[], range: string): string | null;\n\n /**\n * Select the lowest version from `versions` that is within the given\n * `range` constraint, or return `null` if there is no matching version.\n */\n minSatisfyingVersion(versions: string[], range: string): string | null;\n\n /**\n * Calculate a new version constraint based on the current constraint, the\n * `rangeStrategy` option, and the current and new version.\n */\n getNewValue(newValueConfig: NewValueConfig): string | null;\n\n /**\n * Compare two versions. Return `0` if `v1 == v2`, or `1` if `v1` is\n * greater, or `-1` if `v2` is greater.\n */\n sortVersions(version: string, other: string): number;\n\n /**\n * Check whether the `version` satisfies the `range` constraint.\n */\n matches(version: string, range: string): boolean;\n\n valueToVersion?(version: string): string;\n\n /**\n * @returns true if subRange is entirely contained by superRange, false otherwise,\n * and undefined if it cannot determine it.\n *\n * @param subRange - the sub range\n * @param superRange - the dom range\n */\n subset?(subRange: string, superRange: string): boolean | undefined;\n\n /**\n * Return whether unstable-to-unstable upgrades within the same major version are allowed.\n */\n allowUnstableMajorUpgrades?: boolean;\n\n /**\n * Check whether the `type` in the `a` and `b` version numbers match.\n * Both `a` and `b` must pass `isVersion`.\n */\n isSame?(type: 'major' | 'minor' | 'patch', a: string, b: string): boolean;\n}\n\nexport type VersioningApiConstructor = new (config?: string) => VersioningApi;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/modules/versioning/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { SemVer } from 'semver';\nimport type { RangeStrategy } from '../../types';\n\nexport interface NewValueConfig {\n currentValue: string;\n rangeStrategy: RangeStrategy;\n currentVersion?: string;\n newVersion: string;\n isReplacement?: boolean;\n}\nexport interface VersioningApi {\n // validation\n\n /**\n * Check whether the `input` is the valid version or range.\n *\n * For some managers, ranges are called \"constraints\",\"specifiers\", \"requirements\", etc.\n * We stick to the term \"range\" for all of it.\n */\n isValid(input: string): boolean;\n\n /**\n * Check whether the `input` is a valid version.\n *\n * There is no direct way to determine whether the `input` is the range,\n * but combination of `isVersion` and `isValid` can be used for that:\n *\n * `isValid(input) && !isVersion(input)`\n */\n isVersion(input: string | undefined | null): boolean;\n\n /**\n * Check whether the `input` is the:\n *\n * 1. Version, or\n * 2. Range with the special syntax of matching exactly one version:\n * - `==1.2.3` or `===1.2.3` for Python,\n * - `=1.2.3` for NPM,\n * - `[1.2.3]` for Maven or NuGet.\n *\n * This is used to provide pinning functionality.\n */\n isSingleVersion(input: string): boolean;\n\n /**\n * Check whether the `version` is considered to be \"stable\".\n */\n isStable(version: string): boolean;\n\n /**\n * Determines whether the version is compatible with the current one,\n * in some manager-dependent way.\n *\n * For most managers, all valid versions are compatible between each other.\n *\n * However, for example, Docker versions `1.2.3` and `1.2.4-alpine` are not compatible,\n * i.e. `1.2.4-alpine` is not a valid upgrade for `1.2.3`.\n */\n isCompatible(version: string, current?: string): boolean;\n\n // digestion of version\n\n getMajor(version: string | SemVer): null | number;\n getMinor(version: string | SemVer): null | number;\n getPatch(version: string | SemVer): null | number;\n\n // comparison\n\n /**\n * Check whether `version` and `other` are logically equivalent, even if\n * they're not the exact same string.\n *\n * For example, with Semver the build metadata should be ignored when comparing.\n */\n equals(version: string, other: string): boolean;\n\n /**\n * Check whether `version` is \"greater\" than the `other` version.\n */\n isGreaterThan(version: string, other: string): boolean;\n\n /**\n * Check whether the `version` is \"less\" than all the versions possible in\n * the `range`.\n */\n isLessThanRange?(version: string, range: string): boolean;\n\n /**\n * Select the highest version from `versions` that is within the given\n * `range` constraint, or return `null` if there is no matching version.\n */\n getSatisfyingVersion(versions: string[], range: string): string | null;\n\n /**\n * Select the lowest version from `versions` that is within the given\n * `range` constraint, or return `null` if there is no matching version.\n */\n minSatisfyingVersion(versions: string[], range: string): string | null;\n\n /**\n * Calculate a new version constraint based on the current constraint, the\n * `rangeStrategy` option, and the current and new version.\n */\n getNewValue(newValueConfig: NewValueConfig): string | null;\n\n /**\n * Compare two versions. Return `0` if `v1 == v2`, or `1` if `v1` is\n * greater, or `-1` if `v2` is greater.\n */\n sortVersions(version: string, other: string): number;\n\n /**\n * Check whether the `version` satisfies the `range` constraint.\n */\n matches(version: string, range: string): boolean;\n\n valueToVersion?(version: string): string;\n\n /**\n * @returns true if subRange is entirely contained by superRange, false otherwise,\n * and undefined if it cannot determine it.\n *\n * @param subRange - the sub range\n * @param superRange - the dom range\n */\n subset?(subRange: string, superRange: string): boolean | undefined;\n\n /**\n * Checks whether subRange intersects superRange.\n */\n intersects?(subRange: string, superRange: string): boolean;\n\n /**\n * Return whether unstable-to-unstable upgrades within the same major version are allowed.\n */\n allowUnstableMajorUpgrades?: boolean;\n\n /**\n * Check whether the `type` in the `a` and `b` version numbers match.\n * Both `a` and `b` must pass `isVersion`.\n */\n isSame?(type: 'major' | 'minor' | 'patch', a: string, b: string): boolean;\n}\n\nexport type VersioningApiConstructor = new (config?: string) => VersioningApi;\n"]}
package/dist/proxy.js CHANGED
@@ -10,11 +10,12 @@ const envVars = ['HTTP_PROXY', 'HTTPS_PROXY', 'NO_PROXY'];
10
10
  let agent = false;
11
11
  function bootstrap() {
12
12
  envVars.forEach((envVar) => {
13
- /* istanbul ignore if: env is case-insensitive on windows */
13
+ /* v8 ignore start: env is case-insensitive on windows */
14
14
  if (typeof process.env[envVar] === 'undefined' &&
15
15
  typeof process.env[envVar.toLowerCase()] !== 'undefined') {
16
16
  process.env[envVar] = process.env[envVar.toLowerCase()];
17
17
  }
18
+ /* v8 ignore stop */
18
19
  if (process.env[envVar]) {
19
20
  logger_1.logger.debug(`Detected ${envVar} value in env`);
20
21
  process.env[envVar.toLowerCase()] = process.env[envVar];
package/dist/proxy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../lib/proxy.ts"],"names":[],"mappings":";;AAQA,8BA4BC;AAGD,4BAEC;;AAzCD,kEAAkC;AAClC,+CAAsD;AACtD,qCAAkC;AAElC,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;AAE1D,IAAI,KAAK,GAAG,KAAK,CAAC;AAElB,SAAgB,SAAS;IACvB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,4DAA4D;QAC5D,IACE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,WAAW;YAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,WAAW,EACxD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,eAAM,CAAC,KAAK,CAAC,YAAY,MAAM,eAAe,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IACE,YAAE,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,YAAE,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAC1C,CAAC;QACD,IAAA,qCAAsB,EAAC;YACrB,4BAA4B,EAAE,EAAE;SACjC,CAAC,CAAC;QACH,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;SAAM,CAAC;QACN,gDAAgD;QAChD,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;AACH,CAAC;AAED,uCAAuC;AACvC,SAAgB,QAAQ;IACtB,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { createGlobalProxyAgent } from 'global-agent';\nimport { logger } from './logger';\n\nconst envVars = ['HTTP_PROXY', 'HTTPS_PROXY', 'NO_PROXY'];\n\nlet agent = false;\n\nexport function bootstrap(): void {\n envVars.forEach((envVar) => {\n /* istanbul ignore if: env is case-insensitive on windows */\n if (\n typeof process.env[envVar] === 'undefined' &&\n typeof process.env[envVar.toLowerCase()] !== 'undefined'\n ) {\n process.env[envVar] = process.env[envVar.toLowerCase()];\n }\n\n if (process.env[envVar]) {\n logger.debug(`Detected ${envVar} value in env`);\n process.env[envVar.toLowerCase()] = process.env[envVar];\n }\n });\n\n if (\n is.nonEmptyString(process.env.HTTP_PROXY) ||\n is.nonEmptyString(process.env.HTTPS_PROXY)\n ) {\n createGlobalProxyAgent({\n environmentVariableNamespace: '',\n });\n agent = true;\n } else {\n // for testing only, does not reset global agent\n agent = false;\n }\n}\n\n// will be used by our http layer later\nexport function hasProxy(): boolean {\n return agent === true;\n}\n"]}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../lib/proxy.ts"],"names":[],"mappings":";;AAQA,8BA6BC;AAGD,4BAEC;;AA1CD,kEAAkC;AAClC,+CAAsD;AACtD,qCAAkC;AAElC,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;AAE1D,IAAI,KAAK,GAAG,KAAK,CAAC;AAElB,SAAgB,SAAS;IACvB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,yDAAyD;QACzD,IACE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,WAAW;YAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,WAAW,EACxD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,oBAAoB;QAEpB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,eAAM,CAAC,KAAK,CAAC,YAAY,MAAM,eAAe,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IACE,YAAE,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,YAAE,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAC1C,CAAC;QACD,IAAA,qCAAsB,EAAC;YACrB,4BAA4B,EAAE,EAAE;SACjC,CAAC,CAAC;QACH,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;SAAM,CAAC;QACN,gDAAgD;QAChD,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;AACH,CAAC;AAED,uCAAuC;AACvC,SAAgB,QAAQ;IACtB,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { createGlobalProxyAgent } from 'global-agent';\nimport { logger } from './logger';\n\nconst envVars = ['HTTP_PROXY', 'HTTPS_PROXY', 'NO_PROXY'];\n\nlet agent = false;\n\nexport function bootstrap(): void {\n envVars.forEach((envVar) => {\n /* v8 ignore start: env is case-insensitive on windows */\n if (\n typeof process.env[envVar] === 'undefined' &&\n typeof process.env[envVar.toLowerCase()] !== 'undefined'\n ) {\n process.env[envVar] = process.env[envVar.toLowerCase()];\n }\n /* v8 ignore stop */\n\n if (process.env[envVar]) {\n logger.debug(`Detected ${envVar} value in env`);\n process.env[envVar.toLowerCase()] = process.env[envVar];\n }\n });\n\n if (\n is.nonEmptyString(process.env.HTTP_PROXY) ||\n is.nonEmptyString(process.env.HTTPS_PROXY)\n ) {\n createGlobalProxyAgent({\n environmentVariableNamespace: '',\n });\n agent = true;\n } else {\n // for testing only, does not reset global agent\n agent = false;\n }\n}\n\n// will be used by our http layer later\nexport function hasProxy(): boolean {\n return agent === true;\n}\n"]}
package/dist/renovate.js CHANGED
@@ -7,7 +7,7 @@ const instrumentation_1 = require("./instrumentation"); // has to be imported be
7
7
  const logger_1 = require("./logger");
8
8
  const proxy_1 = require("./proxy");
9
9
  const global_1 = require("./workers/global");
10
- // istanbul ignore next
10
+ /* v8 ignore next 3: not easily testable */
11
11
  process.on('unhandledRejection', (err) => {
12
12
  logger_1.logger.error({ err }, 'unhandledRejection');
13
13
  });
@@ -16,7 +16,7 @@ process.on('unhandledRejection', (err) => {
16
16
  (async () => {
17
17
  process.exitCode = await (0, instrumentation_1.instrument)('run', () => (0, global_1.start)());
18
18
  await (0, instrumentation_1.shutdown)(); //gracefully shutdown OpenTelemetry
19
- // istanbul ignore if
19
+ /* v8 ignore next 3: no test required */
20
20
  if (process.env.RENOVATE_X_HARD_EXIT) {
21
21
  process.exit(process.exitCode);
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"renovate.js","sourceRoot":"","sources":["../lib/renovate.ts"],"names":[],"mappings":";;;AAEA,uCAAqC;AACrC,0BAAwB;AACxB,uDAA8E,CAAC,kFAAkF;AACjK,qCAAkC;AAClC,mCAAoC;AACpC,6CAAyC;AAEzC,uBAAuB;AACvB,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;IACvC,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAS,GAAE,CAAC;AAEZ,mEAAmE;AACnE,CAAC,KAAK,IAAmB,EAAE;IACzB,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAA,4BAAU,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAA,cAAK,GAAE,CAAC,CAAC;IAC1D,MAAM,IAAA,0BAAiB,GAAE,CAAC,CAAC,mCAAmC;IAE9D,qBAAqB;IACrB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport 'source-map-support/register';\nimport './punycode.cjs';\nimport { instrument, shutdown as telemetryShutdown } from './instrumentation'; // has to be imported before logger and other libraries which are instrumentalised\nimport { logger } from './logger';\nimport { bootstrap } from './proxy';\nimport { start } from './workers/global';\n\n// istanbul ignore next\nprocess.on('unhandledRejection', (err) => {\n logger.error({ err }, 'unhandledRejection');\n});\n\nbootstrap();\n\n// eslint-disable-next-line @typescript-eslint/no-floating-promises\n(async (): Promise<void> => {\n process.exitCode = await instrument('run', () => start());\n await telemetryShutdown(); //gracefully shutdown OpenTelemetry\n\n // istanbul ignore if\n if (process.env.RENOVATE_X_HARD_EXIT) {\n process.exit(process.exitCode);\n }\n})();\n"]}
1
+ {"version":3,"file":"renovate.js","sourceRoot":"","sources":["../lib/renovate.ts"],"names":[],"mappings":";;;AAEA,uCAAqC;AACrC,0BAAwB;AACxB,uDAA8E,CAAC,kFAAkF;AACjK,qCAAkC;AAClC,mCAAoC;AACpC,6CAAyC;AAEzC,2CAA2C;AAC3C,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;IACvC,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAS,GAAE,CAAC;AAEZ,mEAAmE;AACnE,CAAC,KAAK,IAAmB,EAAE;IACzB,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAA,4BAAU,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAA,cAAK,GAAE,CAAC,CAAC;IAC1D,MAAM,IAAA,0BAAiB,GAAE,CAAC,CAAC,mCAAmC;IAE9D,wCAAwC;IACxC,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport 'source-map-support/register';\nimport './punycode.cjs';\nimport { instrument, shutdown as telemetryShutdown } from './instrumentation'; // has to be imported before logger and other libraries which are instrumentalised\nimport { logger } from './logger';\nimport { bootstrap } from './proxy';\nimport { start } from './workers/global';\n\n/* v8 ignore next 3: not easily testable */\nprocess.on('unhandledRejection', (err) => {\n logger.error({ err }, 'unhandledRejection');\n});\n\nbootstrap();\n\n// eslint-disable-next-line @typescript-eslint/no-floating-promises\n(async (): Promise<void> => {\n process.exitCode = await instrument('run', () => start());\n await telemetryShutdown(); //gracefully shutdown OpenTelemetry\n\n /* v8 ignore next 3: no test required */\n if (process.env.RENOVATE_X_HARD_EXIT) {\n process.exit(process.exitCode);\n }\n})();\n"]}
@@ -24,14 +24,14 @@ function cache({ namespace, key, cacheable = () => true, ttlMinutes = 30, }) {
24
24
  if (is_1.default.string(namespace)) {
25
25
  finalNamespace = namespace;
26
26
  }
27
- else if (is_1.default.function_(namespace)) {
27
+ else if (is_1.default.function(namespace)) {
28
28
  finalNamespace = namespace.apply(instance, args);
29
29
  }
30
30
  let finalKey;
31
31
  if (is_1.default.string(key)) {
32
32
  finalKey = key;
33
33
  }
34
- else if (is_1.default.function_(key)) {
34
+ else if (is_1.default.function(key)) {
35
35
  finalKey = key.apply(instance, args);
36
36
  }
37
37
  // istanbul ignore if
@@ -1 +1 @@
1
- {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../lib/util/cache/package/decorator.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport type { Decorator } from '../../decorator';\nimport { decorate } from '../../decorator';\nimport { acquireLock } from '../../mutex';\nimport { resolveTtlValues } from './ttl';\nimport type { DecoratorCachedRecord, PackageCacheNamespace } from './types';\nimport * as packageCache from '.';\n\ntype HashFunction<T extends any[] = any[]> = (...args: T) => string;\ntype NamespaceFunction<T extends any[] = any[]> = (\n ...args: T\n) => PackageCacheNamespace;\ntype BooleanFunction<T extends any[] = any[]> = (...args: T) => boolean;\n\n/**\n * The cache decorator parameters.\n */\ninterface CacheParameters {\n /**\n * The cache namespace\n * Either a string or a hash function that generates a string\n */\n namespace: PackageCacheNamespace | NamespaceFunction;\n\n /**\n * The cache key\n * Either a string or a hash function that generates a string\n */\n key: string | HashFunction;\n\n /**\n * A function that returns true if a result is cacheable\n * Used to prevent caching of private, sensitive, results\n */\n cacheable?: BooleanFunction;\n\n /**\n * The TTL (or expiry) of the key in minutes\n */\n ttlMinutes?: number;\n}\n\n/**\n * caches the result of a decorated method.\n */\nexport function cache<T>({\n namespace,\n key,\n cacheable = () => true,\n ttlMinutes = 30,\n}: CacheParameters): Decorator<T> {\n return decorate(async ({ args, instance, callback, methodName }) => {\n const cachePrivatePackages = GlobalConfig.get(\n 'cachePrivatePackages',\n false,\n );\n const isCacheable = cachePrivatePackages || cacheable.apply(instance, args);\n if (!isCacheable) {\n return callback();\n }\n\n let finalNamespace: PackageCacheNamespace | undefined;\n if (is.string(namespace)) {\n finalNamespace = namespace;\n } else if (is.function_(namespace)) {\n finalNamespace = namespace.apply(instance, args);\n }\n\n let finalKey: string | undefined;\n if (is.string(key)) {\n finalKey = key;\n } else if (is.function_(key)) {\n finalKey = key.apply(instance, args);\n }\n\n // istanbul ignore if\n if (!finalNamespace || !finalKey) {\n return callback();\n }\n\n finalKey = `cache-decorator:${finalKey}`;\n\n // prevent concurrent processing and cache writes\n const releaseLock = await acquireLock(finalKey, finalNamespace);\n\n try {\n const oldRecord = await packageCache.get<DecoratorCachedRecord>(\n finalNamespace,\n finalKey,\n );\n\n const ttlValues = resolveTtlValues(finalNamespace, ttlMinutes);\n const softTtl = ttlValues.softTtlMinutes;\n const hardTtl =\n methodName === 'getReleases' || methodName === 'getDigest'\n ? ttlValues.hardTtlMinutes\n : // Skip two-tier TTL for any intermediate data fetching\n softTtl;\n\n let oldData: unknown;\n if (oldRecord) {\n const now = DateTime.local();\n const cachedAt = DateTime.fromISO(oldRecord.cachedAt);\n\n const softDeadline = cachedAt.plus({ minutes: softTtl });\n if (now < softDeadline) {\n return oldRecord.value;\n }\n\n const hardDeadline = cachedAt.plus({ minutes: hardTtl });\n if (now < hardDeadline) {\n oldData = oldRecord.value;\n }\n }\n\n let newData: unknown;\n if (oldData) {\n try {\n newData = (await callback()) as T | undefined;\n } catch (err) {\n logger.debug(\n { err },\n 'Package cache decorator: callback error, returning old data',\n );\n return oldData;\n }\n } else {\n newData = (await callback()) as T | undefined;\n }\n\n if (!is.undefined(newData)) {\n const newRecord: DecoratorCachedRecord = {\n cachedAt: DateTime.local().toISO(),\n value: newData,\n };\n await packageCache.set(finalNamespace, finalKey, newRecord, hardTtl);\n }\n\n return newData;\n } finally {\n releaseLock();\n }\n });\n}\n"]}
1
+ {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../lib/util/cache/package/decorator.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport type { Decorator } from '../../decorator';\nimport { decorate } from '../../decorator';\nimport { acquireLock } from '../../mutex';\nimport { resolveTtlValues } from './ttl';\nimport type { DecoratorCachedRecord, PackageCacheNamespace } from './types';\nimport * as packageCache from '.';\n\ntype HashFunction<T extends any[] = any[]> = (...args: T) => string;\ntype NamespaceFunction<T extends any[] = any[]> = (\n ...args: T\n) => PackageCacheNamespace;\ntype BooleanFunction<T extends any[] = any[]> = (...args: T) => boolean;\n\n/**\n * The cache decorator parameters.\n */\ninterface CacheParameters {\n /**\n * The cache namespace\n * Either a string or a hash function that generates a string\n */\n namespace: PackageCacheNamespace | NamespaceFunction;\n\n /**\n * The cache key\n * Either a string or a hash function that generates a string\n */\n key: string | HashFunction;\n\n /**\n * A function that returns true if a result is cacheable\n * Used to prevent caching of private, sensitive, results\n */\n cacheable?: BooleanFunction;\n\n /**\n * The TTL (or expiry) of the key in minutes\n */\n ttlMinutes?: number;\n}\n\n/**\n * caches the result of a decorated method.\n */\nexport function cache<T>({\n namespace,\n key,\n cacheable = () => true,\n ttlMinutes = 30,\n}: CacheParameters): Decorator<T> {\n return decorate(async ({ args, instance, callback, methodName }) => {\n const cachePrivatePackages = GlobalConfig.get(\n 'cachePrivatePackages',\n false,\n );\n const isCacheable = cachePrivatePackages || cacheable.apply(instance, args);\n if (!isCacheable) {\n return callback();\n }\n\n let finalNamespace: PackageCacheNamespace | undefined;\n if (is.string(namespace)) {\n finalNamespace = namespace;\n } else if (is.function(namespace)) {\n finalNamespace = namespace.apply(instance, args);\n }\n\n let finalKey: string | undefined;\n if (is.string(key)) {\n finalKey = key;\n } else if (is.function(key)) {\n finalKey = key.apply(instance, args);\n }\n\n // istanbul ignore if\n if (!finalNamespace || !finalKey) {\n return callback();\n }\n\n finalKey = `cache-decorator:${finalKey}`;\n\n // prevent concurrent processing and cache writes\n const releaseLock = await acquireLock(finalKey, finalNamespace);\n\n try {\n const oldRecord = await packageCache.get<DecoratorCachedRecord>(\n finalNamespace,\n finalKey,\n );\n\n const ttlValues = resolveTtlValues(finalNamespace, ttlMinutes);\n const softTtl = ttlValues.softTtlMinutes;\n const hardTtl =\n methodName === 'getReleases' || methodName === 'getDigest'\n ? ttlValues.hardTtlMinutes\n : // Skip two-tier TTL for any intermediate data fetching\n softTtl;\n\n let oldData: unknown;\n if (oldRecord) {\n const now = DateTime.local();\n const cachedAt = DateTime.fromISO(oldRecord.cachedAt);\n\n const softDeadline = cachedAt.plus({ minutes: softTtl });\n if (now < softDeadline) {\n return oldRecord.value;\n }\n\n const hardDeadline = cachedAt.plus({ minutes: hardTtl });\n if (now < hardDeadline) {\n oldData = oldRecord.value;\n }\n }\n\n let newData: unknown;\n if (oldData) {\n try {\n newData = (await callback()) as T | undefined;\n } catch (err) {\n logger.debug(\n { err },\n 'Package cache decorator: callback error, returning old data',\n );\n return oldData;\n }\n } else {\n newData = (await callback()) as T | undefined;\n }\n\n if (!is.undefined(newData)) {\n const newRecord: DecoratorCachedRecord = {\n cachedAt: DateTime.local().toISO(),\n value: newData,\n };\n await packageCache.set(finalNamespace, finalKey, newRecord, hardTtl);\n }\n\n return newData;\n } finally {\n releaseLock();\n }\n });\n}\n"]}
@@ -5,7 +5,6 @@ exports.end = end;
5
5
  exports.get = get;
6
6
  exports.set = set;
7
7
  exports.init = init;
8
- /* istanbul ignore file */
9
8
  const luxon_1 = require("luxon");
10
9
  const redis_1 = require("redis");
11
10
  const logger_1 = require("../../../logger");
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../../lib/util/cache/package/redis.ts"],"names":[],"mappings":"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","sourcesContent":["/* istanbul ignore file */\nimport { DateTime } from 'luxon';\nimport { createClient, createCluster } from 'redis';\nimport { logger } from '../../../logger';\nimport { compressToBase64, decompressFromBase64 } from '../../compress';\nimport { regEx } from '../../regex';\nimport type { PackageCacheNamespace } from './types';\n\nlet client:\n | ReturnType<typeof createClient>\n | ReturnType<typeof createCluster>\n | undefined;\nlet rprefix: string | undefined;\n\nfunction getKey(namespace: PackageCacheNamespace, key: string): string {\n return `${rprefix}${namespace}-${key}`;\n}\n\nexport function normalizeRedisUrl(url: string): string {\n return url.replace(regEx(/^(rediss?)\\+cluster:\\/\\//), '$1://');\n}\n\nexport async function end(): Promise<void> {\n try {\n // https://github.com/redis/node-redis#disconnecting\n await client?.disconnect();\n } catch (err) {\n logger.warn({ err }, 'Redis cache end failed');\n }\n}\n\nasync function rm(\n namespace: PackageCacheNamespace,\n key: string,\n): Promise<void> {\n logger.trace({ rprefix, namespace, key }, 'Removing cache entry');\n await client?.del(getKey(namespace, key));\n}\n\nexport async function get<T = never>(\n namespace: PackageCacheNamespace,\n key: string,\n): Promise<T | undefined> {\n if (!client) {\n return undefined;\n }\n logger.trace(`cache.get(${namespace}, ${key})`);\n try {\n const res = await client?.get(getKey(namespace, key));\n const cachedValue = res && JSON.parse(res);\n if (cachedValue) {\n if (DateTime.local() < DateTime.fromISO(cachedValue.expiry)) {\n logger.trace({ rprefix, namespace, key }, 'Returning cached value');\n // istanbul ignore if\n if (!cachedValue.compress) {\n return cachedValue.value;\n }\n const res = await decompressFromBase64(cachedValue.value);\n return JSON.parse(res);\n }\n // istanbul ignore next\n await rm(namespace, key);\n }\n } catch {\n logger.trace({ rprefix, namespace, key }, 'Cache miss');\n }\n return undefined;\n}\n\nexport async function set(\n namespace: PackageCacheNamespace,\n key: string,\n value: unknown,\n ttlMinutes = 5,\n): Promise<void> {\n logger.trace({ rprefix, namespace, key, ttlMinutes }, 'Saving cached value');\n\n // Redis requires TTL to be integer, not float\n const redisTTL = Math.floor(ttlMinutes * 60);\n\n try {\n await client?.set(\n getKey(namespace, key),\n JSON.stringify({\n compress: true,\n value: await compressToBase64(JSON.stringify(value)),\n expiry: DateTime.local().plus({ minutes: ttlMinutes }),\n }),\n { EX: redisTTL },\n );\n } catch (err) {\n logger.once.warn({ err }, 'Error while setting Redis cache value');\n }\n}\n\nexport async function init(\n url: string,\n prefix: string | undefined,\n): Promise<void> {\n if (!url) {\n return;\n }\n rprefix = prefix ?? '';\n logger.debug('Redis cache init');\n\n const rewrittenUrl = normalizeRedisUrl(url);\n // If any replacement was made, it means the regex matched and we are in clustered mode\n const clusteredMode = rewrittenUrl.length !== url.length;\n\n const config = {\n url: rewrittenUrl,\n socket: {\n reconnectStrategy: (retries: number) => {\n // Reconnect after this time\n return Math.min(retries * 100, 3000);\n },\n },\n pingInterval: 30000, // 30s\n };\n if (clusteredMode) {\n client = createCluster({\n rootNodes: [config],\n });\n } else {\n client = createClient(config);\n }\n await client.connect();\n logger.debug('Redis cache connected');\n}\n"]}
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../../lib/util/cache/package/redis.ts"],"names":[],"mappings":"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","sourcesContent":["import { DateTime } from 'luxon';\nimport { createClient, createCluster } from 'redis';\nimport { logger } from '../../../logger';\nimport { compressToBase64, decompressFromBase64 } from '../../compress';\nimport { regEx } from '../../regex';\nimport type { PackageCacheNamespace } from './types';\n\nlet client:\n | ReturnType<typeof createClient>\n | ReturnType<typeof createCluster>\n | undefined;\nlet rprefix: string | undefined;\n\nfunction getKey(namespace: PackageCacheNamespace, key: string): string {\n return `${rprefix}${namespace}-${key}`;\n}\n\nexport function normalizeRedisUrl(url: string): string {\n return url.replace(regEx(/^(rediss?)\\+cluster:\\/\\//), '$1://');\n}\n\nexport async function end(): Promise<void> {\n try {\n // https://github.com/redis/node-redis#disconnecting\n await client?.disconnect();\n } catch (err) {\n logger.warn({ err }, 'Redis cache end failed');\n }\n}\n\nasync function rm(\n namespace: PackageCacheNamespace,\n key: string,\n): Promise<void> {\n logger.trace({ rprefix, namespace, key }, 'Removing cache entry');\n await client?.del(getKey(namespace, key));\n}\n\nexport async function get<T = never>(\n namespace: PackageCacheNamespace,\n key: string,\n): Promise<T | undefined> {\n if (!client) {\n return undefined;\n }\n logger.trace(`cache.get(${namespace}, ${key})`);\n try {\n const res = await client?.get(getKey(namespace, key));\n const cachedValue = res && JSON.parse(res);\n if (cachedValue) {\n if (DateTime.local() < DateTime.fromISO(cachedValue.expiry)) {\n logger.trace({ rprefix, namespace, key }, 'Returning cached value');\n // istanbul ignore if\n if (!cachedValue.compress) {\n return cachedValue.value;\n }\n const res = await decompressFromBase64(cachedValue.value);\n return JSON.parse(res);\n }\n // istanbul ignore next\n await rm(namespace, key);\n }\n } catch {\n logger.trace({ rprefix, namespace, key }, 'Cache miss');\n }\n return undefined;\n}\n\nexport async function set(\n namespace: PackageCacheNamespace,\n key: string,\n value: unknown,\n ttlMinutes = 5,\n): Promise<void> {\n logger.trace({ rprefix, namespace, key, ttlMinutes }, 'Saving cached value');\n\n // Redis requires TTL to be integer, not float\n const redisTTL = Math.floor(ttlMinutes * 60);\n\n try {\n await client?.set(\n getKey(namespace, key),\n JSON.stringify({\n compress: true,\n value: await compressToBase64(JSON.stringify(value)),\n expiry: DateTime.local().plus({ minutes: ttlMinutes }),\n }),\n { EX: redisTTL },\n );\n } catch (err) {\n logger.once.warn({ err }, 'Error while setting Redis cache value');\n }\n}\n\nexport async function init(\n url: string,\n prefix: string | undefined,\n): Promise<void> {\n if (!url) {\n return;\n }\n rprefix = prefix ?? '';\n logger.debug('Redis cache init');\n\n const rewrittenUrl = normalizeRedisUrl(url);\n // If any replacement was made, it means the regex matched and we are in clustered mode\n const clusteredMode = rewrittenUrl.length !== url.length;\n\n const config = {\n url: rewrittenUrl,\n socket: {\n reconnectStrategy: (retries: number) => {\n // Reconnect after this time\n return Math.min(retries * 100, 3000);\n },\n },\n pingInterval: 30000, // 30s\n };\n if (clusteredMode) {\n client = createCluster({\n rootNodes: [config],\n });\n } else {\n client = createClient(config);\n }\n await client.connect();\n logger.debug('Redis cache connected');\n}\n"]}
@@ -3,7 +3,7 @@ import type { RepoCache, RepoCacheData } from '../types';
3
3
  export declare abstract class RepoCacheBase implements RepoCache {
4
4
  protected readonly repository: string;
5
5
  protected readonly fingerprint: string;
6
- protected platform: "local" | "azure" | "bitbucket" | "bitbucket-server" | "codecommit" | "gerrit" | "gitea" | "github" | "gitlab";
6
+ protected platform: "azure" | "bitbucket" | "bitbucket-server" | "codecommit" | "gerrit" | "gitea" | "github" | "gitlab" | "local";
7
7
  private oldHash;
8
8
  private data;
9
9
  protected constructor(repository: string, fingerprint: string);
@@ -40,7 +40,7 @@ const allToolConfig = {
40
40
  },
41
41
  composer: {
42
42
  datasource: 'github-releases',
43
- packageName: 'composer/composer',
43
+ packageName: 'containerbase/composer-prebuild',
44
44
  versioning: composer_1.id,
45
45
  },
46
46
  copier: {
@@ -84,8 +84,8 @@ const allToolConfig = {
84
84
  versioning: semver_1.id,
85
85
  },
86
86
  golang: {
87
- datasource: 'golang-version',
88
- packageName: 'golang',
87
+ datasource: 'github-releases',
88
+ packageName: 'containerbase/golang-prebuild',
89
89
  versioning: npm_1.id,
90
90
  },
91
91
  gradle: {
@@ -131,18 +131,18 @@ const allToolConfig = {
131
131
  versioning: semver_1.id,
132
132
  },
133
133
  maven: {
134
- datasource: 'maven',
135
- packageName: 'org.apache.maven:maven',
134
+ datasource: 'github-releases',
135
+ packageName: 'containerbase/maven-prebuild',
136
136
  versioning: maven_1.id,
137
137
  },
138
138
  nix: {
139
- datasource: 'github-tags',
140
- packageName: 'NixOS/nix',
139
+ datasource: 'github-releases',
140
+ packageName: 'containerbase/nix-prebuild',
141
141
  versioning: semver_1.id,
142
142
  },
143
143
  node: {
144
- datasource: 'node-version',
145
- packageName: 'node',
144
+ datasource: 'github-releases',
145
+ packageName: 'containerbase/node-prebuild',
146
146
  versioning: node_1.id,
147
147
  },
148
148
  npm: {
@@ -217,8 +217,8 @@ const allToolConfig = {
217
217
  versioning: npm_1.id,
218
218
  },
219
219
  flutter: {
220
- datasource: 'flutter-version',
221
- packageName: 'flutter',
220
+ datasource: 'github-releases',
221
+ packageName: 'containerbase/flutter-prebuild',
222
222
  versioning: npm_1.id,
223
223
  },
224
224
  vendir: {
@@ -230,7 +230,7 @@ const allToolConfig = {
230
230
  let _getPkgReleases = null;
231
231
  async function getPkgReleases(toolConfig) {
232
232
  if (_getPkgReleases === null) {
233
- _getPkgReleases = Promise.resolve().then(() => tslib_1.__importStar(require('../../modules/datasource')));
233
+ _getPkgReleases = import('../../modules/datasource/index.js');
234
234
  }
235
235
  const { getPkgReleases } = await _getPkgReleases;
236
236
  return getPkgReleases(toolConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"containerbase.js","sourceRoot":"","sources":["../../../lib/util/exec/containerbase.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { GlobalConfig } from '../../config/global';\nimport { logger } from '../../logger';\nimport type { ReleaseResult } from '../../modules/datasource';\nimport * as allVersioning from '../../modules/versioning';\nimport { id as composerVersioningId } from '../../modules/versioning/composer';\nimport { id as gradleVersioningId } from '../../modules/versioning/gradle';\nimport { id as mavenVersioningId } from '../../modules/versioning/maven';\nimport { id as nodeVersioningId } from '../../modules/versioning/node';\nimport { id as npmVersioningId } from '../../modules/versioning/npm';\nimport { id as pep440VersioningId } from '../../modules/versioning/pep440';\nimport { id as pythonVersioningId } from '../../modules/versioning/python';\nimport { id as rubyVersioningId } from '../../modules/versioning/ruby';\nimport { id as semverVersioningId } from '../../modules/versioning/semver';\nimport { id as semverCoercedVersioningId } from '../../modules/versioning/semver-coerced';\nimport type { Opt, ToolConfig, ToolConstraint } from './types';\n\nconst allToolConfig: Record<string, ToolConfig> = {\n bun: {\n datasource: 'github-releases',\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>.*)$',\n versioning: npmVersioningId,\n },\n bundler: {\n datasource: 'rubygems',\n packageName: 'bundler',\n versioning: rubyVersioningId,\n },\n cocoapods: {\n datasource: 'rubygems',\n packageName: 'cocoapods',\n versioning: rubyVersioningId,\n },\n composer: {\n datasource: 'github-releases',\n packageName: 'composer/composer',\n versioning: composerVersioningId,\n },\n copier: {\n datasource: 'pypi',\n packageName: 'copier',\n versioning: pep440VersioningId,\n },\n corepack: {\n datasource: 'npm',\n packageName: 'corepack',\n versioning: npmVersioningId,\n },\n devbox: {\n datasource: 'github-releases',\n packageName: 'jetify-com/devbox',\n versioning: semverVersioningId,\n },\n dotnet: {\n datasource: 'dotnet-version',\n packageName: 'dotnet-sdk',\n versioning: semverVersioningId,\n },\n erlang: {\n datasource: 'github-releases',\n packageName: 'containerbase/erlang-prebuild',\n versioning: semverCoercedVersioningId,\n },\n elixir: {\n datasource: 'github-releases',\n packageName: 'elixir-lang/elixir',\n versioning: semverVersioningId,\n },\n flux: {\n datasource: 'github-releases',\n packageName: 'fluxcd/flux2',\n versioning: semverVersioningId,\n },\n gleam: {\n datasource: 'github-releases',\n packageName: 'gleam-lang/gleam',\n versioning: semverVersioningId,\n },\n golang: {\n datasource: 'golang-version',\n packageName: 'golang',\n versioning: npmVersioningId,\n },\n gradle: {\n datasource: 'gradle-version',\n packageName: 'gradle',\n versioning: gradleVersioningId,\n },\n hashin: {\n datasource: 'pypi',\n packageName: 'hashin',\n versioning: pep440VersioningId,\n },\n helm: {\n datasource: 'github-releases',\n packageName: 'helm/helm',\n versioning: semverVersioningId,\n },\n helmfile: {\n datasource: 'github-releases',\n packageName: 'helmfile/helmfile',\n versioning: semverVersioningId,\n },\n java: {\n datasource: 'java-version',\n packageName: 'java',\n versioning: npmVersioningId,\n },\n /* not used in Renovate */\n 'java-maven': {\n datasource: 'java-version',\n packageName: 'java',\n versioning: mavenVersioningId,\n },\n jb: {\n datasource: 'github-releases',\n packageName: 'jsonnet-bundler/jsonnet-bundler',\n versioning: semverVersioningId,\n },\n kustomize: {\n datasource: 'github-releases',\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>.*)$',\n versioning: semverVersioningId,\n },\n maven: {\n datasource: 'maven',\n packageName: 'org.apache.maven:maven',\n versioning: mavenVersioningId,\n },\n nix: {\n datasource: 'github-tags',\n packageName: 'NixOS/nix',\n versioning: semverVersioningId,\n },\n node: {\n datasource: 'node-version',\n packageName: 'node',\n versioning: nodeVersioningId,\n },\n npm: {\n datasource: 'npm',\n packageName: 'npm',\n hash: true,\n versioning: npmVersioningId,\n },\n pdm: {\n datasource: 'github-releases',\n packageName: 'pdm-project/pdm',\n versioning: semverVersioningId,\n },\n php: {\n datasource: 'github-releases',\n packageName: 'containerbase/php-prebuild',\n versioning: composerVersioningId,\n },\n 'pip-tools': {\n datasource: 'pypi',\n packageName: 'pip-tools',\n versioning: pep440VersioningId,\n },\n pipenv: {\n datasource: 'pypi',\n packageName: 'pipenv',\n versioning: pep440VersioningId,\n },\n pnpm: {\n datasource: 'npm',\n packageName: 'pnpm',\n versioning: npmVersioningId,\n },\n poetry: {\n datasource: 'pypi',\n packageName: 'poetry',\n versioning: pep440VersioningId,\n },\n python: {\n datasource: 'github-releases',\n packageName: 'containerbase/python-prebuild',\n versioning: pythonVersioningId,\n },\n ruby: {\n datasource: 'github-releases',\n packageName: 'containerbase/ruby-prebuild',\n versioning: rubyVersioningId,\n },\n rust: {\n datasource: 'docker',\n packageName: 'rust',\n versioning: semverVersioningId,\n },\n uv: {\n datasource: 'pypi',\n packageName: 'uv',\n versioning: pep440VersioningId,\n },\n yarn: {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: npmVersioningId,\n },\n 'yarn-slim': {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: npmVersioningId,\n },\n dart: {\n datasource: 'dart-version',\n packageName: 'dart',\n versioning: npmVersioningId,\n },\n flutter: {\n datasource: 'flutter-version',\n packageName: 'flutter',\n versioning: npmVersioningId,\n },\n vendir: {\n datasource: 'github-releases',\n packageName: 'carvel-dev/vendir',\n versioning: semverVersioningId,\n },\n};\n\nlet _getPkgReleases: Promise<typeof import('../../modules/datasource')> | null =\n null;\n\nasync function getPkgReleases(\n toolConfig: ToolConfig,\n): Promise<ReleaseResult | null> {\n if (_getPkgReleases === null) {\n _getPkgReleases = import('../../modules/datasource');\n }\n const { getPkgReleases } = await _getPkgReleases;\n return getPkgReleases(toolConfig);\n}\n\nexport function supportsDynamicInstall(toolName: string): boolean {\n return !!allToolConfig[toolName];\n}\n\nexport function isContainerbase(): boolean {\n return !!process.env.CONTAINERBASE;\n}\n\nexport function isDynamicInstall(\n toolConstraints?: Opt<ToolConstraint[]>,\n): boolean {\n if (GlobalConfig.get('binarySource') !== 'install') {\n return false;\n }\n if (!isContainerbase()) {\n logger.debug('Falling back to binarySource=global');\n return false;\n }\n return (\n !toolConstraints ||\n toolConstraints.every((toolConstraint) =>\n supportsDynamicInstall(toolConstraint.toolName),\n )\n );\n}\n\nfunction isStable(\n version: string,\n versioningApi: allVersioning.VersioningApi,\n latest?: string,\n): boolean {\n if (!versioningApi.isStable(version)) {\n return false;\n }\n if (is.string(latest)) {\n if (versioningApi.isGreaterThan(version, latest)) {\n return false;\n }\n }\n return true;\n}\n\nexport async function resolveConstraint(\n toolConstraint: ToolConstraint,\n): Promise<string> {\n const { toolName } = toolConstraint;\n const toolConfig = allToolConfig[toolName];\n if (!toolConfig) {\n throw new Error(`Invalid tool to install: ${toolName}`);\n }\n\n const versioning = allVersioning.get(toolConfig.versioning);\n let constraint = toolConstraint.constraint;\n if (constraint) {\n if (versioning.isValid(constraint)) {\n if (versioning.isSingleVersion(constraint)) {\n return constraint.replace(/^=+/, '').trim();\n }\n } else {\n logger.warn(\n { toolName, constraint, versioning: toolConfig.versioning },\n 'Invalid tool constraint',\n );\n constraint = undefined;\n }\n }\n\n const pkgReleases = await getPkgReleases(toolConfig);\n const releases = pkgReleases?.releases ?? [];\n\n if (!releases?.length) {\n logger.warn({ toolConfig }, 'No tool releases found.');\n throw new Error('No tool releases found.');\n }\n\n const matchingReleases = releases.filter(\n (r) => !constraint || versioning.matches(r.version, constraint),\n );\n\n const stableMatchingVersion = matchingReleases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: stableMatchingVersion },\n 'Resolved stable matching version',\n );\n return stableMatchingVersion;\n }\n\n const unstableMatchingVersion = matchingReleases.pop()?.version;\n if (unstableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: unstableMatchingVersion },\n 'Resolved unstable matching version',\n );\n return unstableMatchingVersion;\n }\n\n const stableVersion = releases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableVersion) {\n logger.warn(\n { toolName, constraint, stableVersion },\n 'No matching tool versions found for constraint - using latest stable version',\n );\n }\n\n const highestVersion = releases.pop()!.version;\n logger.warn(\n { toolName, constraint, highestVersion },\n 'No matching or stable tool versions found - using an unstable version',\n );\n return highestVersion;\n}\n\nexport async function generateInstallCommands(\n toolConstraints: Opt<ToolConstraint[]>,\n): Promise<string[]> {\n const installCommands: string[] = [];\n if (toolConstraints?.length) {\n for (const toolConstraint of toolConstraints) {\n const toolVersion = await resolveConstraint(toolConstraint);\n const { toolName } = toolConstraint;\n const installCommand = `install-tool ${toolName} ${quote(toolVersion)}`;\n installCommands.push(installCommand);\n if (allToolConfig[toolName].hash) {\n installCommands.push(`hash -d ${toolName} 2>/dev/null || true`);\n }\n }\n }\n return installCommands;\n}\n"]}
1
+ {"version":3,"file":"containerbase.js","sourceRoot":"","sources":["../../../lib/util/exec/containerbase.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { GlobalConfig } from '../../config/global';\nimport { logger } from '../../logger';\nimport type { ReleaseResult } from '../../modules/datasource';\nimport * as allVersioning from '../../modules/versioning';\nimport { id as composerVersioningId } from '../../modules/versioning/composer';\nimport { id as gradleVersioningId } from '../../modules/versioning/gradle';\nimport { id as mavenVersioningId } from '../../modules/versioning/maven';\nimport { id as nodeVersioningId } from '../../modules/versioning/node';\nimport { id as npmVersioningId } from '../../modules/versioning/npm';\nimport { id as pep440VersioningId } from '../../modules/versioning/pep440';\nimport { id as pythonVersioningId } from '../../modules/versioning/python';\nimport { id as rubyVersioningId } from '../../modules/versioning/ruby';\nimport { id as semverVersioningId } from '../../modules/versioning/semver';\nimport { id as semverCoercedVersioningId } from '../../modules/versioning/semver-coerced';\nimport type { Opt, ToolConfig, ToolConstraint } from './types';\n\nconst allToolConfig: Record<string, ToolConfig> = {\n bun: {\n datasource: 'github-releases',\n packageName: 'oven-sh/bun',\n extractVersion: '^bun-v(?<version>.*)$',\n versioning: npmVersioningId,\n },\n bundler: {\n datasource: 'rubygems',\n packageName: 'bundler',\n versioning: rubyVersioningId,\n },\n cocoapods: {\n datasource: 'rubygems',\n packageName: 'cocoapods',\n versioning: rubyVersioningId,\n },\n composer: {\n datasource: 'github-releases',\n packageName: 'containerbase/composer-prebuild',\n versioning: composerVersioningId,\n },\n copier: {\n datasource: 'pypi',\n packageName: 'copier',\n versioning: pep440VersioningId,\n },\n corepack: {\n datasource: 'npm',\n packageName: 'corepack',\n versioning: npmVersioningId,\n },\n devbox: {\n datasource: 'github-releases',\n packageName: 'jetify-com/devbox',\n versioning: semverVersioningId,\n },\n dotnet: {\n datasource: 'dotnet-version',\n packageName: 'dotnet-sdk',\n versioning: semverVersioningId,\n },\n erlang: {\n datasource: 'github-releases',\n packageName: 'containerbase/erlang-prebuild',\n versioning: semverCoercedVersioningId,\n },\n elixir: {\n datasource: 'github-releases',\n packageName: 'elixir-lang/elixir',\n versioning: semverVersioningId,\n },\n flux: {\n datasource: 'github-releases',\n packageName: 'fluxcd/flux2',\n versioning: semverVersioningId,\n },\n gleam: {\n datasource: 'github-releases',\n packageName: 'gleam-lang/gleam',\n versioning: semverVersioningId,\n },\n golang: {\n datasource: 'github-releases',\n packageName: 'containerbase/golang-prebuild',\n versioning: npmVersioningId,\n },\n gradle: {\n datasource: 'gradle-version',\n packageName: 'gradle',\n versioning: gradleVersioningId,\n },\n hashin: {\n datasource: 'pypi',\n packageName: 'hashin',\n versioning: pep440VersioningId,\n },\n helm: {\n datasource: 'github-releases',\n packageName: 'helm/helm',\n versioning: semverVersioningId,\n },\n helmfile: {\n datasource: 'github-releases',\n packageName: 'helmfile/helmfile',\n versioning: semverVersioningId,\n },\n java: {\n datasource: 'java-version',\n packageName: 'java',\n versioning: npmVersioningId,\n },\n /* not used in Renovate */\n 'java-maven': {\n datasource: 'java-version',\n packageName: 'java',\n versioning: mavenVersioningId,\n },\n jb: {\n datasource: 'github-releases',\n packageName: 'jsonnet-bundler/jsonnet-bundler',\n versioning: semverVersioningId,\n },\n kustomize: {\n datasource: 'github-releases',\n packageName: 'kubernetes-sigs/kustomize',\n extractVersion: '^kustomize/v(?<version>.*)$',\n versioning: semverVersioningId,\n },\n maven: {\n datasource: 'github-releases',\n packageName: 'containerbase/maven-prebuild',\n versioning: mavenVersioningId,\n },\n nix: {\n datasource: 'github-releases',\n packageName: 'containerbase/nix-prebuild',\n versioning: semverVersioningId,\n },\n node: {\n datasource: 'github-releases',\n packageName: 'containerbase/node-prebuild',\n versioning: nodeVersioningId,\n },\n npm: {\n datasource: 'npm',\n packageName: 'npm',\n hash: true,\n versioning: npmVersioningId,\n },\n pdm: {\n datasource: 'github-releases',\n packageName: 'pdm-project/pdm',\n versioning: semverVersioningId,\n },\n php: {\n datasource: 'github-releases',\n packageName: 'containerbase/php-prebuild',\n versioning: composerVersioningId,\n },\n 'pip-tools': {\n datasource: 'pypi',\n packageName: 'pip-tools',\n versioning: pep440VersioningId,\n },\n pipenv: {\n datasource: 'pypi',\n packageName: 'pipenv',\n versioning: pep440VersioningId,\n },\n pnpm: {\n datasource: 'npm',\n packageName: 'pnpm',\n versioning: npmVersioningId,\n },\n poetry: {\n datasource: 'pypi',\n packageName: 'poetry',\n versioning: pep440VersioningId,\n },\n python: {\n datasource: 'github-releases',\n packageName: 'containerbase/python-prebuild',\n versioning: pythonVersioningId,\n },\n ruby: {\n datasource: 'github-releases',\n packageName: 'containerbase/ruby-prebuild',\n versioning: rubyVersioningId,\n },\n rust: {\n datasource: 'docker',\n packageName: 'rust',\n versioning: semverVersioningId,\n },\n uv: {\n datasource: 'pypi',\n packageName: 'uv',\n versioning: pep440VersioningId,\n },\n yarn: {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: npmVersioningId,\n },\n 'yarn-slim': {\n datasource: 'npm',\n packageName: 'yarn',\n versioning: npmVersioningId,\n },\n dart: {\n datasource: 'dart-version',\n packageName: 'dart',\n versioning: npmVersioningId,\n },\n flutter: {\n datasource: 'github-releases',\n packageName: 'containerbase/flutter-prebuild',\n versioning: npmVersioningId,\n },\n vendir: {\n datasource: 'github-releases',\n packageName: 'carvel-dev/vendir',\n versioning: semverVersioningId,\n },\n};\n\nlet _getPkgReleases: Promise<typeof import('../../modules/datasource')> | null =\n null;\n\nasync function getPkgReleases(\n toolConfig: ToolConfig,\n): Promise<ReleaseResult | null> {\n if (_getPkgReleases === null) {\n _getPkgReleases = import('../../modules/datasource/index.js');\n }\n const { getPkgReleases } = await _getPkgReleases;\n return getPkgReleases(toolConfig);\n}\n\nexport function supportsDynamicInstall(toolName: string): boolean {\n return !!allToolConfig[toolName];\n}\n\nexport function isContainerbase(): boolean {\n return !!process.env.CONTAINERBASE;\n}\n\nexport function isDynamicInstall(\n toolConstraints?: Opt<ToolConstraint[]>,\n): boolean {\n if (GlobalConfig.get('binarySource') !== 'install') {\n return false;\n }\n if (!isContainerbase()) {\n logger.debug('Falling back to binarySource=global');\n return false;\n }\n return (\n !toolConstraints ||\n toolConstraints.every((toolConstraint) =>\n supportsDynamicInstall(toolConstraint.toolName),\n )\n );\n}\n\nfunction isStable(\n version: string,\n versioningApi: allVersioning.VersioningApi,\n latest?: string,\n): boolean {\n if (!versioningApi.isStable(version)) {\n return false;\n }\n if (is.string(latest)) {\n if (versioningApi.isGreaterThan(version, latest)) {\n return false;\n }\n }\n return true;\n}\n\nexport async function resolveConstraint(\n toolConstraint: ToolConstraint,\n): Promise<string> {\n const { toolName } = toolConstraint;\n const toolConfig = allToolConfig[toolName];\n if (!toolConfig) {\n throw new Error(`Invalid tool to install: ${toolName}`);\n }\n\n const versioning = allVersioning.get(toolConfig.versioning);\n let constraint = toolConstraint.constraint;\n if (constraint) {\n if (versioning.isValid(constraint)) {\n if (versioning.isSingleVersion(constraint)) {\n return constraint.replace(/^=+/, '').trim();\n }\n } else {\n logger.warn(\n { toolName, constraint, versioning: toolConfig.versioning },\n 'Invalid tool constraint',\n );\n constraint = undefined;\n }\n }\n\n const pkgReleases = await getPkgReleases(toolConfig);\n const releases = pkgReleases?.releases ?? [];\n\n if (!releases?.length) {\n logger.warn({ toolConfig }, 'No tool releases found.');\n throw new Error('No tool releases found.');\n }\n\n const matchingReleases = releases.filter(\n (r) => !constraint || versioning.matches(r.version, constraint),\n );\n\n const stableMatchingVersion = matchingReleases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: stableMatchingVersion },\n 'Resolved stable matching version',\n );\n return stableMatchingVersion;\n }\n\n const unstableMatchingVersion = matchingReleases.pop()?.version;\n if (unstableMatchingVersion) {\n logger.debug(\n { toolName, constraint, resolvedVersion: unstableMatchingVersion },\n 'Resolved unstable matching version',\n );\n return unstableMatchingVersion;\n }\n\n const stableVersion = releases\n .filter((r) => isStable(r.version, versioning, pkgReleases?.tags?.latest))\n .pop()?.version;\n if (stableVersion) {\n logger.warn(\n { toolName, constraint, stableVersion },\n 'No matching tool versions found for constraint - using latest stable version',\n );\n }\n\n const highestVersion = releases.pop()!.version;\n logger.warn(\n { toolName, constraint, highestVersion },\n 'No matching or stable tool versions found - using an unstable version',\n );\n return highestVersion;\n}\n\nexport async function generateInstallCommands(\n toolConstraints: Opt<ToolConstraint[]>,\n): Promise<string[]> {\n const installCommands: string[] = [];\n if (toolConstraints?.length) {\n for (const toolConstraint of toolConstraints) {\n const toolVersion = await resolveConstraint(toolConstraint);\n const { toolName } = toolConstraint;\n const installCommand = `install-tool ${toolName} ${quote(toolVersion)}`;\n installCommands.push(installCommand);\n if (allToolConfig[toolName].hash) {\n installCommands.push(`hash -d ${toolName} 2>/dev/null || true`);\n }\n }\n }\n return installCommands;\n}\n"]}
@@ -11,21 +11,21 @@ declare const GithubGraphqlRelease: z.ZodObject<{
11
11
  name: z.ZodNullable<z.ZodString>;
12
12
  description: z.ZodNullable<z.ZodString>;
13
13
  }, "strip", z.ZodTypeAny, {
14
- name: string | null;
15
14
  id: number | null;
16
- url: string;
17
15
  description: string | null;
18
- version: string;
19
16
  releaseTimestamp: string & {
20
17
  __timestamp: never;
21
18
  };
19
+ name: string | null;
20
+ url: string;
21
+ version: string;
22
22
  isDraft: boolean;
23
23
  isPrerelease: boolean;
24
24
  }, {
25
- name: string | null;
26
25
  id: number | null;
27
- url: string;
28
26
  description: string | null;
27
+ name: string | null;
28
+ url: string;
29
29
  version: string;
30
30
  isDraft: boolean;
31
31
  isPrerelease: boolean;
@@ -82,7 +82,6 @@ function removeAuthorization(options) {
82
82
  // if there is no port in the redirect URL string, then delete it from the redirect options.
83
83
  // This can be evaluated for removal after upgrading to Got v10
84
84
  const portInUrl = options.href?.split?.('/')?.[2]?.split(':')?.[1];
85
- // istanbul ignore next
86
85
  if (!portInUrl) {
87
86
  delete options.port; // Redirect will instead use 80 or 443 for HTTP or HTTPS respectively
88
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../lib/util/http/auth.ts"],"names":[],"mappings":";;AAoBA,gDAiEC;AAgBD,kDAuBC;;AA5HD,kEAAkC;AAElC,+CAIyB;AAczB,SAAgB,kBAAkB,CAChC,SAAqB;IAErB,MAAM,OAAO,GAAe,EAAE,GAAG,SAAS,EAAE,CAAC;IAE7C,IAAI,YAAE,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACxE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;IACvB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC3C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC9B,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjE,CAAC;QACH,CAAC;aAAM,IACL,OAAO,CAAC,QAAQ;YAChB,sCAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EACrD,CAAC;YACD,kEAAkE;YAClE,8CAA8C;YAC9C,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5D,CAAC;aAAM,IACL,OAAO,CAAC,QAAQ;YAChB,uCAA2B,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EACtD,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,SAAS,OAAO,CAAC,KAAK,EAAE,CAAC;YACzD,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gBAC9D,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE,CAAC;gBACpD,IAAI,YAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CACrD,gCAAgC,EAChC,iDAAiD,CAClD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IACL,OAAO,CAAC,QAAQ;YAChB,uCAA2B,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EACtD,CAAC;YACD,qEAAqE;YACrE,wDAAwD;YACxD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAChC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC1C,iEAAiE;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAChD,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC,QAAQ,CAAC;QACxB,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0EAA0E;AAC1E,SAAS,QAAQ,CAAC,OAAgB;IAChC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACvD,CAAC;AAED,4FAA4F;AAC5F,SAAS,WAAW,CAAC,OAAgB;IACnC,OAAO,CAAC,CAAC,CACP,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,CAAC,IAAI,kDAAkD;QAC1G,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;QACzD,OAAO;IACT,CAAC;IAED,wEAAwE;IACxE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,4FAA4F;QAC5F,+DAA+D;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,uBAAuB;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,qEAAqE;QAC5F,CAAC;QAED,oEAAoE;QACpE,6DAA6D;QAC7D,IAAI,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QACvC,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC;QACxB,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;AACH,CAAC","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 // istanbul ignore next\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 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,11 +1,12 @@
1
- import type { HttpOptions, HttpResponse, InternalHttpOptions } from './types';
2
- import { Http } from '.';
1
+ import { HttpBase, type InternalJsonUnsafeOptions } from './http';
2
+ import type { HttpMethod, HttpOptions, HttpResponse } from './types';
3
3
  export declare const setBaseUrl: (url: string) => void;
4
4
  export interface BitbucketServerHttpOptions extends HttpOptions {
5
5
  paginate?: boolean;
6
6
  limit?: number;
7
7
  }
8
- export declare class BitbucketServerHttp extends Http<BitbucketServerHttpOptions> {
8
+ export declare class BitbucketServerHttp extends HttpBase<BitbucketServerHttpOptions> {
9
+ protected get baseUrl(): string | undefined;
9
10
  constructor(options?: HttpOptions);
10
- protected request<T>(path: string, options?: InternalHttpOptions & BitbucketServerHttpOptions): Promise<HttpResponse<T>>;
11
+ protected requestJsonUnsafe<T>(method: HttpMethod, options: InternalJsonUnsafeOptions<BitbucketServerHttpOptions>): Promise<HttpResponse<T>>;
11
12
  }
@@ -3,41 +3,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BitbucketServerHttp = exports.setBaseUrl = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
6
- const logger_1 = require("../../logger");
7
- const url_1 = require("../url");
8
- const _1 = require(".");
6
+ const http_1 = require("./http");
9
7
  const MAX_LIMIT = 100;
10
8
  let baseUrl;
11
9
  const setBaseUrl = (url) => {
12
10
  baseUrl = url;
13
11
  };
14
12
  exports.setBaseUrl = setBaseUrl;
15
- class BitbucketServerHttp extends _1.Http {
13
+ class BitbucketServerHttp extends http_1.HttpBase {
14
+ get baseUrl() {
15
+ return baseUrl;
16
+ }
16
17
  constructor(options) {
17
18
  super('bitbucket-server', options);
18
19
  }
19
- async request(path, options) {
20
- const opts = { baseUrl, ...options };
21
- opts.headers = {
22
- ...opts.headers,
23
- 'X-Atlassian-Token': 'no-check',
24
- };
25
- const resolvedUrl = (0, url_1.parseUrl)((0, url_1.resolveBaseUrl)(baseUrl, path));
26
- if (!resolvedUrl) {
27
- logger_1.logger.error({ path }, 'Bitbucket Server: cannot parse path');
28
- throw new Error(`Bitbucket Server: cannot parse path ${path}`);
29
- }
30
- if (opts.paginate) {
31
- const limit = opts.limit ?? MAX_LIMIT;
20
+ async requestJsonUnsafe(method, options) {
21
+ const resolvedUrl = this.resolveUrl(options.url, options.httpOptions);
22
+ const opts = { ...options, url: resolvedUrl };
23
+ opts.httpOptions ??= {};
24
+ opts.httpOptions.headers ??= {};
25
+ opts.httpOptions.headers['X-Atlassian-Token'] = 'no-check';
26
+ const paginate = opts.httpOptions.paginate;
27
+ if (paginate) {
28
+ const limit = opts.httpOptions.limit ?? MAX_LIMIT;
32
29
  resolvedUrl.searchParams.set('limit', limit.toString());
33
30
  }
34
- const result = await super.request(resolvedUrl.toString(), opts);
35
- if (opts.paginate && isPagedResult(result.body)) {
31
+ const result = await super.requestJsonUnsafe(method, opts);
32
+ if (paginate && isPagedResult(result.body)) {
36
33
  const collectedValues = [...result.body.values];
37
34
  let nextPageStart = result.body.nextPageStart;
38
35
  while (nextPageStart) {
39
36
  resolvedUrl.searchParams.set('start', nextPageStart.toString());
40
- const nextResult = await super.request(resolvedUrl.toString(), opts);
37
+ const nextResult = await super.requestJsonUnsafe(method, opts);
41
38
  collectedValues.push(...nextResult.body.values);
42
39
  nextPageStart = nextResult.body.nextPageStart;
43
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bitbucket-server.js","sourceRoot":"","sources":["../../../lib/util/http/bitbucket-server.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,yCAAsC;AACtC,gCAAkD;AAElD,wBAAyB;AAEzB,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;AAYF,MAAa,mBAAoB,SAAQ,OAAgC;IACvE,YAAY,OAAqB;QAC/B,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAEkB,KAAK,CAAC,OAAO,CAC9B,IAAY,EACZ,OAA0D;QAE1D,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,IAAI,CAAC,OAAO;YACf,mBAAmB,EAAE,UAAU;SAChC,CAAC;QAEF,MAAM,WAAW,GAAG,IAAA,cAAQ,EAAC,IAAA,oBAAc,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,eAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,qCAAqC,CAAC,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;YACtC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAChC,WAAW,CAAC,QAAQ,EAAE,EACtB,IAAI,CACL,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YAE9C,OAAO,aAAa,EAAE,CAAC;gBACrB,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEhE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,CACpC,WAAW,CAAC,QAAQ,EAAE,EACtB,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;AAnDD,kDAmDC;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 { logger } from '../../logger';\nimport { parseUrl, resolveBaseUrl } from '../url';\nimport type { HttpOptions, HttpResponse, InternalHttpOptions } from './types';\nimport { Http } from '.';\n\nconst MAX_LIMIT = 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}\n\ninterface PagedResult<T = unknown> {\n nextPageStart?: number;\n values: T[];\n}\n\nexport class BitbucketServerHttp extends Http<BitbucketServerHttpOptions> {\n constructor(options?: HttpOptions) {\n super('bitbucket-server', options);\n }\n\n protected override async request<T>(\n path: string,\n options?: InternalHttpOptions & BitbucketServerHttpOptions,\n ): Promise<HttpResponse<T>> {\n const opts = { baseUrl, ...options };\n opts.headers = {\n ...opts.headers,\n 'X-Atlassian-Token': 'no-check',\n };\n\n const resolvedUrl = parseUrl(resolveBaseUrl(baseUrl, path));\n if (!resolvedUrl) {\n logger.error({ path }, 'Bitbucket Server: cannot parse path');\n throw new Error(`Bitbucket Server: cannot parse path ${path}`);\n }\n\n if (opts.paginate) {\n const limit = opts.limit ?? MAX_LIMIT;\n resolvedUrl.searchParams.set('limit', limit.toString());\n }\n\n const result = await super.request<T | PagedResult<T>>(\n resolvedUrl.toString(),\n opts,\n );\n\n if (opts.paginate && isPagedResult(result.body)) {\n const collectedValues = [...result.body.values];\n let nextPageStart = result.body.nextPageStart;\n\n while (nextPageStart) {\n resolvedUrl.searchParams.set('start', nextPageStart.toString());\n\n const nextResult = await super.request<PagedResult<T>>(\n resolvedUrl.toString(),\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,kEAAkC;AAClC,iCAAkE;AAGlE,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;AAYF,MAAa,mBAAoB,SAAQ,eAAoC;IAC3E,IAAuB,OAAO;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,OAAqB;QAC/B,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACrC,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,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YAE9C,OAAO,aAAa,EAAE,CAAC;gBACrB,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;AAlDD,kDAkDC;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;\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}\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(options?: HttpOptions) {\n super('bitbucket-server', 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 const collectedValues = [...result.body.values];\n let nextPageStart = result.body.nextPageStart;\n\n while (nextPageStart) {\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,11 +1,12 @@
1
- import type { HttpOptions, HttpResponse } from './types';
2
- import { Http } from '.';
3
- export declare const setBaseUrl: (url: string) => void;
1
+ import { HttpBase, type InternalJsonUnsafeOptions } from './http';
2
+ import type { HttpMethod, HttpOptions, HttpResponse } from './types';
3
+ export declare function setBaseUrl(url: string): void;
4
4
  export interface BitbucketHttpOptions extends HttpOptions {
5
5
  paginate?: boolean;
6
6
  pagelen?: number;
7
7
  }
8
- export declare class BitbucketHttp extends Http<BitbucketHttpOptions> {
8
+ export declare class BitbucketHttp extends HttpBase<BitbucketHttpOptions> {
9
+ protected get baseUrl(): string | undefined;
9
10
  constructor(type?: string, options?: BitbucketHttpOptions);
10
- protected request<T>(path: string, options?: BitbucketHttpOptions): Promise<HttpResponse<T>>;
11
+ protected requestJsonUnsafe<T>(method: HttpMethod, options: InternalJsonUnsafeOptions<BitbucketHttpOptions>): Promise<HttpResponse<T>>;
11
12
  }