renovate 40.0.0-next.2 → 40.0.0-next.20

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":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gitlab/index.ts"],"names":[],"mappings":"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","sourcesContent":["import URL from 'node:url';\nimport { setTimeout } from 'timers/promises';\nimport is from '@sindresorhus/is';\nimport pMap from 'p-map';\nimport semver from 'semver';\nimport {\n CONFIG_GIT_URL_UNAVAILABLE,\n PLATFORM_AUTHENTICATION_ERROR,\n REPOSITORY_ACCESS_FORBIDDEN,\n REPOSITORY_ARCHIVED,\n REPOSITORY_CHANGED,\n REPOSITORY_DISABLED,\n REPOSITORY_EMPTY,\n REPOSITORY_MIRRORED,\n REPOSITORY_NOT_FOUND,\n TEMPORARY_ERROR,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { coerceArray } from '../../../util/array';\nimport { noLeadingAtSymbol, parseJson } from '../../../util/common';\nimport * as git from '../../../util/git';\nimport * as hostRules from '../../../util/host-rules';\nimport { setBaseUrl } from '../../../util/http/gitlab';\nimport type { HttpResponse } from '../../../util/http/types';\nimport { parseInteger } from '../../../util/number';\nimport * as p from '../../../util/promises';\nimport { regEx } from '../../../util/regex';\nimport { sanitize } from '../../../util/sanitize';\nimport {\n ensureTrailingSlash,\n getQueryString,\n parseUrl,\n} from '../../../util/url';\nimport type {\n AutodiscoverConfig,\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfig,\n EnsureIssueConfig,\n FindPRConfig,\n GitUrlOption,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformPrOptions,\n PlatformResult,\n Pr,\n ReattemptPlatformAutomergeConfig,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\nimport { smartTruncate } from '../utils/pr-body';\nimport {\n getMemberUserIDs,\n getMemberUsernames,\n getUserID,\n gitlabApi,\n isUserBusy,\n} from './http';\nimport { getMR, updateMR } from './merge-request';\nimport { LastPipelineId } from './schema';\nimport type {\n GitLabMergeRequest,\n GitlabComment,\n GitlabIssue,\n GitlabPr,\n MergeMethod,\n RepoResponse,\n} from './types';\nimport { DRAFT_PREFIX, DRAFT_PREFIX_DEPRECATED, prInfo } from './utils';\n\nlet config: {\n repository: string;\n email: string;\n prList: GitlabPr[] | undefined;\n issueList: GitlabIssue[] | undefined;\n mergeMethod: MergeMethod;\n defaultBranch: string;\n cloneSubmodules: boolean | undefined;\n cloneSubmodulesFilter: string[] | undefined;\n ignorePrAuthor: boolean | undefined;\n squash: boolean;\n} = {} as any;\n\nconst defaults = {\n hostType: 'gitlab',\n endpoint: 'https://gitlab.com/api/v4/',\n version: '0.0.0',\n};\n\nexport const id = 'gitlab';\n\nlet draftPrefix = DRAFT_PREFIX;\n\nexport async function initPlatform({\n endpoint,\n token,\n gitAuthor,\n}: PlatformParams): Promise<PlatformResult> {\n if (!token) {\n throw new Error('Init: You must configure a GitLab personal access token');\n }\n if (endpoint) {\n defaults.endpoint = ensureTrailingSlash(endpoint);\n setBaseUrl(defaults.endpoint);\n } else {\n logger.debug('Using default GitLab endpoint: ' + defaults.endpoint);\n }\n const platformConfig: PlatformResult = {\n endpoint: defaults.endpoint,\n };\n let gitlabVersion: string;\n try {\n if (!gitAuthor) {\n const user = (\n await gitlabApi.getJsonUnchecked<{\n email: string;\n name: string;\n id: number;\n commit_email?: string;\n }>(`user`, { token })\n ).body;\n platformConfig.gitAuthor = `${user.name} <${\n user.commit_email ?? user.email\n }>`;\n }\n // istanbul ignore if: experimental feature\n if (process.env.RENOVATE_X_PLATFORM_VERSION) {\n gitlabVersion = process.env.RENOVATE_X_PLATFORM_VERSION;\n } else {\n const version = (\n await gitlabApi.getJsonUnchecked<{ version: string }>('version', {\n token,\n })\n ).body;\n gitlabVersion = version.version;\n }\n logger.debug('GitLab version is: ' + gitlabVersion);\n // version is 'x.y.z-edition', so not strictly semver; need to strip edition\n [gitlabVersion] = gitlabVersion.split('-');\n defaults.version = gitlabVersion;\n } catch (err) {\n logger.debug(\n { err },\n 'Error authenticating with GitLab. Check that your token includes \"api\" permissions',\n );\n throw new Error('Init: Authentication failure');\n }\n draftPrefix = semver.lt(defaults.version, '13.2.0')\n ? DRAFT_PREFIX_DEPRECATED\n : DRAFT_PREFIX;\n\n return platformConfig;\n}\n\n// Get all repositories that the user has access to\nexport async function getRepos(config?: AutodiscoverConfig): Promise<string[]> {\n logger.debug('Autodiscovering GitLab repositories');\n\n const queryParams: Record<string, any> = {\n membership: true,\n per_page: 100,\n with_merge_requests_enabled: true,\n min_access_level: 30,\n archived: false,\n };\n if (config?.topics?.length) {\n queryParams.topic = config.topics.join(',');\n }\n\n const urls = [];\n if (config?.namespaces?.length) {\n queryParams.with_shared = false;\n queryParams.include_subgroups = true;\n urls.push(\n ...config.namespaces.map(\n (namespace) =>\n `groups/${urlEscape(namespace)}/projects?${getQueryString(\n queryParams,\n )}`,\n ),\n );\n } else {\n urls.push('projects?' + getQueryString(queryParams));\n }\n\n try {\n const repos = (\n await pMap(\n urls,\n (url) =>\n gitlabApi.getJsonUnchecked<RepoResponse[]>(url, {\n paginate: true,\n }),\n {\n concurrency: 2,\n },\n )\n ).flatMap((response) => response.body);\n\n logger.debug(`Discovered ${repos.length} project(s)`);\n return repos\n .filter((repo) => !repo.mirror || config?.includeMirrors)\n .map((repo) => repo.path_with_namespace);\n } catch (err) {\n logger.error({ err }, `GitLab getRepos error`);\n throw err;\n }\n}\n\nfunction urlEscape(str: string): string;\nfunction urlEscape(str: string | undefined): string | undefined;\nfunction urlEscape(str: string | undefined): string | undefined {\n return str?.replace(regEx(/\\//g), '%2F');\n}\n\nexport async function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n const escapedFileName = urlEscape(fileName);\n const repo = urlEscape(repoName) ?? config.repository;\n const url =\n `projects/${repo}/repository/files/${escapedFileName}?ref=` +\n (branchOrTag ?? `HEAD`);\n const res = await gitlabApi.getJsonUnchecked<{ content: string }>(url);\n const buf = res.body.content;\n const str = Buffer.from(buf, 'base64').toString();\n return str;\n}\n\nexport async function getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<any> {\n const raw = await getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n}\n\nfunction getRepoUrl(\n repository: string,\n gitUrl: GitUrlOption | undefined,\n res: HttpResponse<RepoResponse>,\n): string {\n if (gitUrl === 'ssh') {\n if (!res.body.ssh_url_to_repo) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using ssh URL: ${res.body.ssh_url_to_repo}`);\n return res.body.ssh_url_to_repo;\n }\n\n const opts = hostRules.find({\n hostType: defaults.hostType,\n url: defaults.endpoint,\n });\n\n if (\n gitUrl === 'endpoint' ||\n is.nonEmptyString(process.env.GITLAB_IGNORE_REPO_URL) ||\n res.body.http_url_to_repo === null\n ) {\n if (res.body.http_url_to_repo === null) {\n logger.debug('no http_url_to_repo found. Falling back to old behavior.');\n }\n if (process.env.GITLAB_IGNORE_REPO_URL) {\n logger.warn(\n 'GITLAB_IGNORE_REPO_URL environment variable is deprecated. Please use \"gitUrl\" option.',\n );\n }\n\n // TODO: null check (#22198)\n const { protocol, host, pathname } = parseUrl(defaults.endpoint)!;\n const newPathname = pathname.slice(0, pathname.indexOf('/api'));\n const url = URL.format({\n protocol:\n protocol.slice(0, -1) ||\n /* istanbul ignore next: should never happen */ 'https',\n // TODO: types (#22198)\n auth: `oauth2:${opts.token!}`,\n host,\n pathname: `${newPathname}/${repository}.git`,\n });\n logger.debug(`Using URL based on configured endpoint, url:${url}`);\n return url;\n }\n\n logger.debug(`Using http URL: ${res.body.http_url_to_repo}`);\n const repoUrl = URL.parse(`${res.body.http_url_to_repo}`);\n // TODO: types (#22198)\n repoUrl.auth = `oauth2:${opts.token!}`;\n return URL.format(repoUrl);\n}\n\n// Initialize GitLab by getting base branch\nexport async function initRepo({\n repository,\n cloneSubmodules,\n cloneSubmodulesFilter,\n ignorePrAuthor,\n gitUrl,\n endpoint,\n includeMirrors,\n}: RepoParams): Promise<RepoResult> {\n config = {} as any;\n config.repository = urlEscape(repository);\n config.cloneSubmodules = cloneSubmodules;\n config.cloneSubmodulesFilter = cloneSubmodulesFilter;\n config.ignorePrAuthor = ignorePrAuthor;\n\n let res: HttpResponse<RepoResponse>;\n try {\n res = await gitlabApi.getJsonUnchecked<RepoResponse>(\n `projects/${config.repository}`,\n );\n if (res.body.archived) {\n logger.debug(\n 'Repository is archived - throwing error to abort renovation',\n );\n throw new Error(REPOSITORY_ARCHIVED);\n }\n\n if (res.body.mirror && includeMirrors !== true) {\n logger.debug(\n 'Repository is a mirror - throwing error to abort renovation',\n );\n throw new Error(REPOSITORY_MIRRORED);\n }\n if (res.body.repository_access_level === 'disabled') {\n logger.debug(\n 'Repository portion of project is disabled - throwing error to abort renovation',\n );\n throw new Error(REPOSITORY_DISABLED);\n }\n if (res.body.merge_requests_access_level === 'disabled') {\n logger.debug(\n 'MRs are disabled for the project - throwing error to abort renovation',\n );\n throw new Error(REPOSITORY_DISABLED);\n }\n if (res.body.default_branch === null || res.body.empty_repo) {\n throw new Error(REPOSITORY_EMPTY);\n }\n config.defaultBranch = res.body.default_branch;\n // istanbul ignore if\n if (!config.defaultBranch) {\n logger.warn({ resBody: res.body }, 'Error fetching GitLab project');\n throw new Error(TEMPORARY_ERROR);\n }\n config.mergeMethod = res.body.merge_method || 'merge';\n if (res.body.squash_option) {\n config.squash =\n res.body.squash_option === 'always' ||\n res.body.squash_option === 'default_on';\n }\n logger.debug(`${repository} default branch = ${config.defaultBranch}`);\n delete config.prList;\n logger.debug('Enabling Git FS');\n const url = getRepoUrl(repository, gitUrl, res);\n await git.initRepo({\n ...config,\n url,\n });\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'Caught initRepo error');\n if (err.message.includes('HEAD is not a symbolic ref')) {\n throw new Error(REPOSITORY_EMPTY);\n }\n if ([REPOSITORY_ARCHIVED, REPOSITORY_EMPTY].includes(err.message)) {\n throw err;\n }\n if (err.statusCode === 403) {\n throw new Error(REPOSITORY_ACCESS_FORBIDDEN);\n }\n if (err.statusCode === 404) {\n throw new Error(REPOSITORY_NOT_FOUND);\n }\n if (err.message === REPOSITORY_DISABLED) {\n throw err;\n }\n logger.debug({ err }, 'Unknown GitLab initRepo error');\n throw err;\n }\n const repoConfig: RepoResult = {\n defaultBranch: config.defaultBranch,\n isFork: !!res.body.forked_from_project,\n repoFingerprint: repoFingerprint(res.body.id, defaults.endpoint),\n };\n return repoConfig;\n}\n\nexport function getBranchForceRebase(): Promise<boolean> {\n const forceRebase = config?.mergeMethod !== 'merge';\n if (forceRebase) {\n logger.once.debug(\n `mergeMethod is ${config.mergeMethod} so PRs will be kept up-to-date with base branch`,\n );\n }\n return Promise.resolve(forceRebase);\n}\n\ntype BranchState =\n | 'pending'\n | 'created'\n | 'running'\n | 'waiting_for_resource'\n | 'manual'\n | 'success'\n | 'failed'\n | 'canceled'\n | 'skipped'\n | 'scheduled';\n\ninterface GitlabBranchStatus {\n status: BranchState;\n name: string;\n allow_failure?: boolean;\n}\n\nasync function getStatus(\n branchName: string,\n useCache = true,\n): Promise<GitlabBranchStatus[]> {\n const branchSha = git.getBranchCommit(branchName);\n try {\n // TODO: types (#22198)\n const url = `projects/${\n config.repository\n }/repository/commits/${branchSha!}/statuses`;\n\n return (\n await gitlabApi.getJsonUnchecked<GitlabBranchStatus[]>(url, {\n paginate: true,\n memCache: useCache,\n })\n ).body;\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'Error getting commit status');\n if (err.response?.statusCode === 404) {\n throw new Error(REPOSITORY_CHANGED);\n }\n throw err;\n }\n}\n\nconst gitlabToRenovateStatusMapping: Record<BranchState, BranchStatus> = {\n pending: 'yellow',\n created: 'yellow',\n manual: 'yellow',\n running: 'yellow',\n waiting_for_resource: 'yellow',\n success: 'green',\n failed: 'red',\n canceled: 'red',\n skipped: 'red',\n scheduled: 'yellow',\n};\n\n// Returns the combined status for a branch.\nexport async function getBranchStatus(\n branchName: string,\n internalChecksAsSuccess: boolean,\n): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n\n if (!git.branchExists(branchName)) {\n throw new Error(REPOSITORY_CHANGED);\n }\n\n const branchStatuses = await getStatus(branchName);\n // istanbul ignore if\n if (!is.array(branchStatuses)) {\n logger.warn(\n { branchName, branchStatuses },\n 'Empty or unexpected branch statuses',\n );\n return 'yellow';\n }\n logger.debug(`Got res with ${branchStatuses.length} results`);\n\n const mr = await getBranchPr(branchName);\n if (mr && mr.sha !== mr.headPipelineSha && mr.headPipelineStatus) {\n logger.debug(\n 'Merge request head pipeline has different sha to commit, assuming merged results pipeline',\n );\n branchStatuses.push({\n status: mr.headPipelineStatus as BranchState,\n name: 'head_pipeline',\n });\n }\n // ignore all skipped jobs\n const res = branchStatuses.filter((check) => check.status !== 'skipped');\n if (res.length === 0) {\n // Return 'pending' if we have no status checks\n return 'yellow';\n }\n if (\n !internalChecksAsSuccess &&\n branchStatuses.every(\n (check) =>\n check.name?.startsWith('renovate/') &&\n gitlabToRenovateStatusMapping[check.status] === 'green',\n )\n ) {\n logger.debug(\n 'Successful checks are all internal renovate/ checks, so returning \"pending\" branch status',\n );\n return 'yellow';\n }\n let status: BranchStatus = 'green'; // default to green\n res\n .filter((check) => !check.allow_failure)\n .forEach((check) => {\n if (status !== 'red') {\n // if red, stay red\n let mappedStatus: BranchStatus =\n gitlabToRenovateStatusMapping[check.status];\n if (!mappedStatus) {\n logger.warn(\n { check },\n 'Could not map GitLab check.status to Renovate status',\n );\n mappedStatus = 'yellow';\n }\n if (mappedStatus !== 'green') {\n logger.trace({ check }, 'Found non-green check');\n status = mappedStatus;\n }\n }\n });\n return status;\n}\n\n// Pull Request\n\nasync function fetchPrList(): Promise<Pr[]> {\n const searchParams = {\n per_page: '100',\n } as any;\n // istanbul ignore if\n if (!config.ignorePrAuthor) {\n searchParams.scope = 'created_by_me';\n }\n const query = getQueryString(searchParams);\n const urlString = `projects/${config.repository}/merge_requests?${query}`;\n try {\n const res = await gitlabApi.getJsonUnchecked<GitLabMergeRequest[]>(\n urlString,\n {\n paginate: true,\n },\n );\n return res.body.map((pr) => prInfo(pr));\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'Error fetching PR list');\n if (err.statusCode === 403) {\n throw new Error(PLATFORM_AUTHENTICATION_ERROR);\n }\n throw err;\n }\n}\n\nexport async function getPrList(): Promise<Pr[]> {\n if (!config.prList) {\n config.prList = await fetchPrList();\n }\n return config.prList;\n}\n\nasync function ignoreApprovals(pr: number): Promise<void> {\n try {\n const url = `projects/${config.repository}/merge_requests/${pr}/approval_rules`;\n const { body: rules } = await gitlabApi.getJsonUnchecked<\n {\n name: string;\n rule_type: string;\n id: number;\n }[]\n >(url);\n\n const ruleName = 'renovateIgnoreApprovals';\n\n const existingAnyApproverRule = rules?.find(\n ({ rule_type }) => rule_type === 'any_approver',\n );\n const existingRegularApproverRules = rules?.filter(\n ({ rule_type, name }) =>\n rule_type !== 'any_approver' &&\n name !== ruleName &&\n rule_type !== 'report_approver' &&\n rule_type !== 'code_owner',\n );\n\n if (existingRegularApproverRules?.length) {\n await p.all(\n existingRegularApproverRules.map((rule) => async (): Promise<void> => {\n await gitlabApi.deleteJson(`${url}/${rule.id}`);\n }),\n );\n }\n\n if (existingAnyApproverRule) {\n await gitlabApi.putJson(`${url}/${existingAnyApproverRule.id}`, {\n body: { ...existingAnyApproverRule, approvals_required: 0 },\n });\n return;\n }\n\n const zeroApproversRule = rules?.find(({ name }) => name === ruleName);\n if (!zeroApproversRule) {\n await gitlabApi.postJson(url, {\n body: {\n name: ruleName,\n approvals_required: 0,\n },\n });\n }\n } catch (err) {\n logger.warn({ err }, 'GitLab: Error adding approval rule');\n }\n}\n\nasync function tryPrAutomerge(\n pr: number,\n platformPrOptions: PlatformPrOptions | undefined,\n): Promise<void> {\n try {\n if (platformPrOptions?.gitLabIgnoreApprovals) {\n await ignoreApprovals(pr);\n }\n\n if (platformPrOptions?.usePlatformAutomerge) {\n // https://docs.gitlab.com/ee/api/merge_requests.html#merge-status\n const desiredDetailedMergeStatus = [\n 'mergeable',\n 'ci_still_running',\n 'not_approved',\n ];\n const desiredPipelineStatus = [\n 'failed', // don't lose time if pipeline failed\n 'running', // pipeline is running, no need to wait for it\n ];\n const desiredStatus = 'can_be_merged';\n // The default value of 5 attempts results in max. 13.75 seconds timeout if no pipeline created.\n const retryTimes = parseInteger(\n process.env.RENOVATE_X_GITLAB_AUTO_MERGEABLE_CHECK_ATTEMPS,\n 5,\n );\n\n const mergeDelay = parseInteger(\n process.env.RENOVATE_X_GITLAB_MERGE_REQUEST_DELAY,\n 250,\n );\n\n // Check for correct merge request status before setting `merge_when_pipeline_succeeds` to `true`.\n for (let attempt = 1; attempt <= retryTimes; attempt += 1) {\n const { body } = await gitlabApi.getJsonUnchecked<{\n merge_status: string;\n detailed_merge_status?: string;\n pipeline: {\n status: string;\n };\n }>(`projects/${config.repository}/merge_requests/${pr}`, {\n memCache: false,\n });\n // detailed_merge_status is available with Gitlab >=15.6.0\n const use_detailed_merge_status = !!body.detailed_merge_status;\n const detailed_merge_status_check =\n use_detailed_merge_status &&\n desiredDetailedMergeStatus.includes(body.detailed_merge_status!);\n // merge_status is deprecated with Gitlab >= 15.6\n const deprecated_merge_status_check =\n !use_detailed_merge_status && body.merge_status === desiredStatus;\n\n // Only continue if the merge request can be merged and has a pipeline.\n if (\n (detailed_merge_status_check || deprecated_merge_status_check) &&\n body.pipeline !== null &&\n desiredPipelineStatus.includes(body.pipeline.status)\n ) {\n break;\n }\n logger.debug(`PR not yet in mergeable state. Retrying ${attempt}`);\n await setTimeout(mergeDelay * attempt ** 2); // exponential backoff\n }\n\n // Even if Gitlab returns a \"merge-able\" merge request status, enabling auto-merge sometimes\n // returns a 405 Method Not Allowed. It seems to be a timing issue within Gitlab.\n for (let attempt = 1; attempt <= retryTimes; attempt += 1) {\n try {\n await gitlabApi.putJson(\n `projects/${config.repository}/merge_requests/${pr}/merge`,\n {\n body: {\n should_remove_source_branch: true,\n merge_when_pipeline_succeeds: true,\n },\n },\n );\n break;\n } catch (err) {\n logger.debug(\n { err },\n `Automerge on PR creation failed. Retrying ${attempt}`,\n );\n }\n await setTimeout(mergeDelay * attempt ** 2); // exponential backoff\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'Automerge on PR creation failed');\n }\n}\n\nasync function approvePr(pr: number): Promise<void> {\n try {\n await gitlabApi.postJson(\n `projects/${config.repository}/merge_requests/${pr}/approve`,\n );\n } catch (err) {\n logger.warn({ err }, 'GitLab: Error approving merge request');\n }\n}\n\nexport async function createPr({\n sourceBranch,\n targetBranch,\n prTitle,\n prBody: rawDescription,\n draftPR,\n labels,\n platformPrOptions,\n}: CreatePRConfig): Promise<Pr> {\n let title = prTitle;\n if (draftPR) {\n title = draftPrefix + title;\n }\n const description = sanitize(rawDescription);\n logger.debug(`Creating Merge Request: ${title}`);\n const res = await gitlabApi.postJson<GitLabMergeRequest>(\n `projects/${config.repository}/merge_requests`,\n {\n body: {\n source_branch: sourceBranch,\n target_branch: targetBranch,\n remove_source_branch: true,\n title,\n description,\n labels: (labels ?? []).join(','),\n squash: config.squash,\n },\n },\n );\n\n const pr = prInfo(res.body);\n\n // istanbul ignore if\n if (config.prList) {\n config.prList.push(pr);\n }\n\n if (platformPrOptions?.autoApprove) {\n await approvePr(pr.number);\n }\n\n await tryPrAutomerge(pr.number, platformPrOptions);\n\n return pr;\n}\n\nexport async function getPr(iid: number): Promise<GitlabPr> {\n logger.debug(`getPr(${iid})`);\n const mr = await getMR(config.repository, iid);\n\n // Harmonize fields with GitHub\n return prInfo(mr);\n}\n\nexport async function updatePr({\n number: iid,\n prTitle,\n prBody: description,\n addLabels,\n removeLabels,\n state,\n platformPrOptions,\n targetBranch,\n}: UpdatePrConfig): Promise<void> {\n let title = prTitle;\n if ((await getPrList()).find((pr) => pr.number === iid)?.isDraft) {\n title = draftPrefix + title;\n }\n const newState = {\n ['closed']: 'close',\n ['open']: 'reopen',\n // TODO: null check (#22198)\n }[state!];\n\n const body: any = {\n title,\n description: sanitize(description),\n ...(newState && { state_event: newState }),\n };\n if (targetBranch) {\n body.target_branch = targetBranch;\n }\n\n if (addLabels) {\n body.add_labels = addLabels;\n }\n\n if (removeLabels) {\n body.remove_labels = removeLabels;\n }\n\n const updatedPrInfo = (\n await gitlabApi.putJson<GitLabMergeRequest>(\n `projects/${config.repository}/merge_requests/${iid}`,\n { body },\n )\n ).body;\n\n const updatedPr = prInfo(updatedPrInfo);\n\n if (config.prList) {\n const existingIndex = config.prList.findIndex(\n (pr) => pr.number === updatedPr.number,\n );\n // istanbul ignore if: should not happen\n if (existingIndex === -1) {\n logger.warn(\n { pr: updatedPr },\n 'Possible error: Updated PR was not found in the PRs that were returned from getPrList().',\n );\n config.prList.push(updatedPr);\n } else {\n config.prList[existingIndex] = updatedPr;\n }\n }\n\n if (platformPrOptions?.autoApprove) {\n await approvePr(iid);\n }\n}\n\nexport async function reattemptPlatformAutomerge({\n number: iid,\n platformPrOptions,\n}: ReattemptPlatformAutomergeConfig): Promise<void> {\n await tryPrAutomerge(iid, platformPrOptions);\n\n logger.debug(`PR platform automerge re-attempted...prNo: ${iid}`);\n}\n\nexport async function mergePr({ id }: MergePRConfig): Promise<boolean> {\n try {\n await gitlabApi.putJson(\n `projects/${config.repository}/merge_requests/${id}/merge`,\n {\n body: {\n should_remove_source_branch: true,\n },\n },\n );\n return true;\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 401) {\n logger.debug('No permissions to merge PR');\n return false;\n }\n if (err.statusCode === 406) {\n logger.debug({ err }, 'PR not acceptable for merging');\n return false;\n }\n logger.debug({ err }, 'merge PR error');\n logger.debug('PR merge failed');\n return false;\n }\n}\n\nexport function massageMarkdown(input: string): string {\n const desc = input\n .replace(regEx(/Pull Request/g), 'Merge Request')\n .replace(regEx(/\\bPR\\b/g), 'MR')\n .replace(regEx(/\\bPRs\\b/g), 'MRs')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](!')\n // Strip unicode null characters as GitLab markdown does not permit them\n .replace(regEx(/\\u0000/g), ''); // eslint-disable-line no-control-regex\n return smartTruncate(desc, maxBodyLength());\n}\n\nexport function maxBodyLength(): number {\n if (semver.lt(defaults.version, '13.4.0')) {\n logger.debug(\n { version: defaults.version },\n 'GitLab versions earlier than 13.4 have issues with long descriptions, truncating to 25K characters',\n );\n return 25000;\n } else {\n return 1000000;\n }\n}\n\n// istanbul ignore next: no need to test\nexport function labelCharLimit(): number {\n return 255;\n}\n\n// Branch\n\nfunction matchesState(state: string, desiredState: string): boolean {\n if (desiredState === 'all') {\n return true;\n }\n if (desiredState.startsWith('!')) {\n return state !== desiredState.substring(1);\n }\n return state === desiredState;\n}\n\nexport async function findPr({\n branchName,\n prTitle,\n state = 'all',\n includeOtherAuthors,\n}: FindPRConfig): Promise<Pr | null> {\n logger.debug(`findPr(${branchName}, ${prTitle!}, ${state})`);\n\n if (includeOtherAuthors) {\n // PR might have been created by anyone, so don't use the cached Renovate MR list\n const response = await gitlabApi.getJsonUnchecked<GitLabMergeRequest[]>(\n `projects/${config.repository}/merge_requests?source_branch=${branchName}&state=opened`,\n );\n\n const { body: mrList } = response;\n if (!mrList.length) {\n logger.debug(`No MR found for branch ${branchName}`);\n return null;\n }\n\n return prInfo(mrList[0]);\n }\n\n const prList = await getPrList();\n return (\n prList.find(\n (p: { sourceBranch: string; title: string; state: string }) =>\n p.sourceBranch === branchName &&\n (!prTitle || p.title.toUpperCase() === prTitle.toUpperCase()) &&\n matchesState(p.state, state),\n ) ?? null\n );\n}\n\n// Returns the Pull Request for a branch. Null if not exists.\nexport async function getBranchPr(\n branchName: string,\n): Promise<GitlabPr | null> {\n logger.debug(`getBranchPr(${branchName})`);\n const existingPr = await findPr({\n branchName,\n state: 'open',\n });\n return existingPr ? getPr(existingPr.number) : null;\n}\n\nexport async function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n // cache-bust in case we have rebased\n const res = await getStatus(branchName, false);\n logger.debug(`Got res with ${res.length} results`);\n for (const check of res) {\n if (check.name === context) {\n return gitlabToRenovateStatusMapping[check.status] || 'yellow';\n }\n }\n return null;\n}\n\nexport async function setBranchStatus({\n branchName,\n context,\n description,\n state: renovateState,\n url: targetUrl,\n}: BranchStatusConfig): Promise<void> {\n // First, get the branch commit SHA\n const branchSha = git.getBranchCommit(branchName);\n if (!branchSha) {\n logger.warn('Failed to get the branch commit SHA');\n return;\n }\n // Now, check the statuses for that commit\n const url = `projects/${config.repository}/statuses/${branchSha}`;\n let state = 'success';\n if (renovateState === 'yellow') {\n state = 'pending';\n } else if (renovateState === 'red') {\n state = 'failed';\n }\n const options: any = {\n state,\n description,\n context,\n };\n\n if (targetUrl) {\n options.target_url = targetUrl;\n }\n\n const retryTimes = parseInteger(\n process.env.RENOVATE_X_GITLAB_BRANCH_STATUS_CHECK_ATTEMPTS,\n 2,\n );\n\n try {\n for (let attempt = 1; attempt <= retryTimes + 1; attempt += 1) {\n const commitUrl = `projects/${config.repository}/repository/commits/${branchSha}`;\n await gitlabApi\n .getJsonSafe(commitUrl, { memCache: false }, LastPipelineId)\n .onValue((pipelineId) => {\n options.pipeline_id = pipelineId;\n });\n if (options.pipeline_id !== undefined) {\n break;\n }\n if (attempt >= retryTimes + 1) {\n logger.debug(`Pipeline not yet created after ${attempt} attempts`);\n } else {\n logger.debug(`Pipeline not yet created. Retrying ${attempt}`);\n }\n // give gitlab some time to create pipelines for the sha\n await setTimeout(\n parseInteger(process.env.RENOVATE_X_GITLAB_BRANCH_STATUS_DELAY, 1000),\n );\n }\n } catch (err) {\n logger.debug({ err });\n logger.warn('Failed to retrieve commit pipeline');\n }\n\n try {\n await gitlabApi.postJson(url, { body: options });\n\n // update status cache\n await getStatus(branchName, false);\n } catch (err) /* istanbul ignore next */ {\n if (\n err.body?.message?.startsWith(\n 'Cannot transition status via :enqueue from :pending',\n )\n ) {\n // https://gitlab.com/gitlab-org/gitlab-foss/issues/25807\n logger.debug('Ignoring status transition error');\n } else {\n logger.debug({ err });\n logger.warn('Failed to set branch status');\n }\n }\n}\n\n// Issue\n\nexport async function getIssueList(): Promise<GitlabIssue[]> {\n if (!config.issueList) {\n const searchParams: Record<string, string> = {\n per_page: '100',\n state: 'opened',\n };\n if (!config.ignorePrAuthor) {\n searchParams.scope = 'created_by_me';\n }\n const query = getQueryString(searchParams);\n const res = await gitlabApi.getJsonUnchecked<\n { iid: number; title: string; labels: string[] }[]\n >(`projects/${config.repository}/issues?${query}`, {\n memCache: false,\n paginate: true,\n });\n // istanbul ignore if\n if (!is.array(res.body)) {\n logger.warn({ responseBody: res.body }, 'Could not retrieve issue list');\n return [];\n }\n config.issueList = res.body.map((i) => ({\n iid: i.iid,\n title: i.title,\n labels: i.labels,\n }));\n }\n return config.issueList;\n}\n\nexport async function getIssue(\n number: number,\n useCache = true,\n): Promise<Issue | null> {\n try {\n const issueBody = (\n await gitlabApi.getJsonUnchecked<{ description: string }>(\n `projects/${config.repository}/issues/${number}`,\n { memCache: useCache },\n )\n ).body.description;\n return {\n number,\n body: issueBody,\n };\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err, number }, 'Error getting issue');\n return null;\n }\n}\n\nexport async function findIssue(title: string): Promise<Issue | null> {\n logger.debug(`findIssue(${title})`);\n try {\n const issueList = await getIssueList();\n const issue = issueList.find((i) => i.title === title);\n if (!issue) {\n return null;\n }\n return await getIssue(issue.iid);\n } catch /* istanbul ignore next */ {\n logger.warn('Error finding issue');\n return null;\n }\n}\n\nexport async function ensureIssue({\n title,\n reuseTitle,\n body,\n labels,\n confidential,\n}: EnsureIssueConfig): Promise<'updated' | 'created' | null> {\n logger.debug(`ensureIssue()`);\n const description = massageMarkdown(sanitize(body));\n try {\n const issueList = await getIssueList();\n let issue = issueList.find((i) => i.title === title);\n if (!issue) {\n issue = issueList.find((i) => i.title === reuseTitle);\n }\n if (issue) {\n const existingDescription = (\n await gitlabApi.getJsonUnchecked<{ description: string }>(\n `projects/${config.repository}/issues/${issue.iid}`,\n )\n ).body.description;\n if (issue.title !== title || existingDescription !== description) {\n logger.debug('Updating issue');\n await gitlabApi.putJson(\n `projects/${config.repository}/issues/${issue.iid}`,\n {\n body: {\n title,\n description,\n labels: (labels ?? issue.labels ?? []).join(','),\n confidential: confidential ?? false,\n },\n },\n );\n return 'updated';\n }\n } else {\n await gitlabApi.postJson(`projects/${config.repository}/issues`, {\n body: {\n title,\n description,\n labels: (labels ?? []).join(','),\n confidential: confidential ?? false,\n },\n });\n logger.info('Issue created');\n // delete issueList so that it will be refetched as necessary\n delete config.issueList;\n return 'created';\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.message.startsWith('Issues are disabled for this repo')) {\n logger.debug(`Could not create issue: ${(err as Error).message}`);\n } else {\n logger.warn({ err }, 'Could not ensure issue');\n }\n }\n return null;\n}\n\nexport async function ensureIssueClosing(title: string): Promise<void> {\n logger.debug(`ensureIssueClosing()`);\n const issueList = await getIssueList();\n for (const issue of issueList) {\n if (issue.title === title) {\n logger.debug({ issue }, 'Closing issue');\n await gitlabApi.putJson(\n `projects/${config.repository}/issues/${issue.iid}`,\n {\n body: { state_event: 'close' },\n },\n );\n }\n }\n}\n\nexport async function addAssignees(\n iid: number,\n assignees: string[],\n): Promise<void> {\n try {\n logger.debug(`Adding assignees '${assignees.join(', ')}' to #${iid}`);\n const assigneeIds: number[] = [];\n for (const assignee of assignees) {\n try {\n const userId = await getUserID(assignee);\n assigneeIds.push(userId);\n } catch (err) {\n logger.debug({ assignee, err }, 'getUserID() error');\n logger.warn({ assignee }, 'Failed to add assignee - could not get ID');\n }\n }\n const url = `projects/${\n config.repository\n }/merge_requests/${iid}?${getQueryString({\n 'assignee_ids[]': assigneeIds,\n })}`;\n await gitlabApi.putJson(url);\n } catch (err) {\n logger.debug({ err }, 'addAssignees error');\n logger.warn({ iid, assignees }, 'Failed to add assignees');\n }\n}\n\nexport async function addReviewers(\n iid: number,\n reviewers: string[],\n): Promise<void> {\n logger.debug(`Adding reviewers '${reviewers.join(', ')}' to #${iid}`);\n\n if (semver.lt(defaults.version, '13.9.0')) {\n logger.warn(\n { version: defaults.version },\n 'Adding reviewers is only available in GitLab 13.9 and onwards',\n );\n return;\n }\n\n let mr: GitLabMergeRequest;\n try {\n mr = await getMR(config.repository, iid);\n } catch (err) {\n logger.warn({ err }, 'Failed to get existing reviewers');\n return;\n }\n\n mr.reviewers = coerceArray(mr.reviewers);\n const existingReviewers = mr.reviewers.map((r) => r.username);\n const existingReviewerIDs = mr.reviewers.map((r) => r.id);\n\n // Figure out which reviewers (of the ones we want to add) are not already on the MR as a reviewer\n const newReviewers = reviewers.filter((r) => !existingReviewers.includes(r));\n\n // Gather the IDs for all the reviewers we want to add\n let newReviewerIDs: number[];\n try {\n newReviewerIDs = (\n await p.all(\n newReviewers.map((r) => async () => {\n try {\n return [await getUserID(r)];\n } catch {\n // Unable to fetch userId, try resolve as a group\n return getMemberUserIDs(r);\n }\n }),\n )\n ).flat();\n } catch (err) {\n logger.warn({ err }, 'Failed to get IDs of the new reviewers');\n return;\n }\n\n // Multiple groups may have the same members, so\n // filter out non-distinct values\n newReviewerIDs = [...new Set(newReviewerIDs)];\n\n try {\n await updateMR(config.repository, iid, {\n reviewer_ids: [...existingReviewerIDs, ...newReviewerIDs],\n });\n } catch (err) {\n logger.warn({ err }, 'Failed to add reviewers');\n }\n}\n\nexport async function deleteLabel(\n issueNo: number,\n label: string,\n): Promise<void> {\n logger.debug(`Deleting label ${label} from #${issueNo}`);\n try {\n const pr = await getPr(issueNo);\n const labels = coerceArray(pr.labels)\n .filter((l: string) => l !== label)\n .join(',');\n await gitlabApi.putJson(\n `projects/${config.repository}/merge_requests/${issueNo}`,\n {\n body: { labels },\n },\n );\n } catch (err) /* istanbul ignore next */ {\n logger.warn({ err, issueNo, label }, 'Failed to delete label');\n }\n}\n\nasync function getComments(issueNo: number): Promise<GitlabComment[]> {\n // GET projects/:owner/:repo/merge_requests/:number/notes\n logger.debug(`Getting comments for #${issueNo}`);\n const url = `projects/${config.repository}/merge_requests/${issueNo}/notes`;\n const comments = (\n await gitlabApi.getJsonUnchecked<GitlabComment[]>(url, { paginate: true })\n ).body;\n logger.debug(`Found ${comments.length} comments`);\n return comments;\n}\n\nasync function addComment(issueNo: number, body: string): Promise<void> {\n // POST projects/:owner/:repo/merge_requests/:number/notes\n await gitlabApi.postJson(\n `projects/${config.repository}/merge_requests/${issueNo}/notes`,\n {\n body: { body },\n },\n );\n}\n\nasync function editComment(\n issueNo: number,\n commentId: number,\n body: string,\n): Promise<void> {\n // PUT projects/:owner/:repo/merge_requests/:number/notes/:id\n await gitlabApi.putJson(\n `projects/${config.repository}/merge_requests/${issueNo}/notes/${commentId}`,\n {\n body: { body },\n },\n );\n}\n\nasync function deleteComment(\n issueNo: number,\n commentId: number,\n): Promise<void> {\n // DELETE projects/:owner/:repo/merge_requests/:number/notes/:id\n await gitlabApi.deleteJson(\n `projects/${config.repository}/merge_requests/${issueNo}/notes/${commentId}`,\n );\n}\n\nexport async function ensureComment({\n number,\n topic,\n content,\n}: EnsureCommentConfig): Promise<boolean> {\n const sanitizedContent = sanitize(content);\n const massagedTopic = topic\n ? topic\n .replace(regEx(/Pull Request/g), 'Merge Request')\n .replace(regEx(/PR/g), 'MR')\n : topic;\n const comments = await getComments(number);\n let body: string;\n let commentId: number | undefined;\n let commentNeedsUpdating: boolean | undefined;\n // TODO: types (#22198)\n if (topic) {\n logger.debug(`Ensuring comment \"${massagedTopic!}\" in #${number}`);\n body = `### ${topic}\\n\\n${sanitizedContent}`;\n body = smartTruncate(\n body\n .replace(regEx(/Pull Request/g), 'Merge Request')\n .replace(regEx(/PR/g), 'MR'),\n maxBodyLength(),\n );\n comments.forEach((comment: { body: string; id: number }) => {\n if (comment.body.startsWith(`### ${massagedTopic!}\\n\\n`)) {\n commentId = comment.id;\n commentNeedsUpdating = comment.body !== body;\n }\n });\n } else {\n logger.debug(`Ensuring content-only comment in #${number}`);\n body = smartTruncate(`${sanitizedContent}`, maxBodyLength());\n comments.forEach((comment: { body: string; id: number }) => {\n if (comment.body === body) {\n commentId = comment.id;\n commentNeedsUpdating = false;\n }\n });\n }\n if (!commentId) {\n await addComment(number, body);\n logger.debug(\n { repository: config.repository, issueNo: number },\n 'Added comment',\n );\n } else if (commentNeedsUpdating) {\n await editComment(number, commentId, body);\n logger.debug(\n { repository: config.repository, issueNo: number },\n 'Updated comment',\n );\n } else {\n logger.debug('Comment is already update-to-date');\n }\n return true;\n}\n\nexport async function ensureCommentRemoval(\n deleteConfig: EnsureCommentRemovalConfig,\n): Promise<void> {\n const { number: issueNo } = deleteConfig;\n const key =\n deleteConfig.type === 'by-topic'\n ? deleteConfig.topic\n : deleteConfig.content;\n logger.debug(`Ensuring comment \"${key}\" in #${issueNo} is removed`);\n\n const comments = await getComments(issueNo);\n let commentId: number | null | undefined = null;\n\n if (deleteConfig.type === 'by-topic') {\n const byTopic = (comment: GitlabComment): boolean =>\n comment.body.startsWith(`### ${deleteConfig.topic}\\n\\n`);\n commentId = comments.find(byTopic)?.id;\n } else if (deleteConfig.type === 'by-content') {\n const byContent = (comment: GitlabComment): boolean =>\n comment.body.trim() === deleteConfig.content;\n commentId = comments.find(byContent)?.id;\n }\n\n if (commentId) {\n await deleteComment(issueNo, commentId);\n }\n}\n\nexport async function filterUnavailableUsers(\n users: string[],\n): Promise<string[]> {\n const filteredUsers: string[] = [];\n for (const user of users) {\n if (!(await isUserBusy(user))) {\n filteredUsers.push(user);\n }\n }\n return filteredUsers;\n}\n\nexport async function expandGroupMembers(\n reviewersOrAssignees: string[],\n): Promise<string[]> {\n const expandedReviewersOrAssignees: string[] = [];\n const normalizedReviewersOrAssigneesWithoutEmails: string[] = [];\n\n // Skip passing user emails to Gitlab API, but include them in the final result\n for (const reviewerOrAssignee of reviewersOrAssignees) {\n if (reviewerOrAssignee.indexOf('@') > 0) {\n expandedReviewersOrAssignees.push(reviewerOrAssignee);\n continue;\n }\n\n // Normalize the potential group names before passing to Gitlab API\n normalizedReviewersOrAssigneesWithoutEmails.push(\n noLeadingAtSymbol(reviewerOrAssignee),\n );\n }\n\n for (const reviewerOrAssignee of normalizedReviewersOrAssigneesWithoutEmails) {\n try {\n const members = await getMemberUsernames(reviewerOrAssignee);\n expandedReviewersOrAssignees.push(...members);\n } catch (err) {\n if (err.statusCode !== 404) {\n logger.debug({ err, reviewerOrAssignee }, 'Unable to fetch group');\n }\n expandedReviewersOrAssignees.push(reviewerOrAssignee);\n }\n }\n return expandedReviewersOrAssignees;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gitlab/index.ts"],"names":[],"mappings":"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","sourcesContent":["import URL from 'node:url';\nimport { setTimeout } from 'timers/promises';\nimport is from '@sindresorhus/is';\nimport pMap from 'p-map';\nimport semver from 'semver';\nimport {\n CONFIG_GIT_URL_UNAVAILABLE,\n PLATFORM_AUTHENTICATION_ERROR,\n REPOSITORY_ACCESS_FORBIDDEN,\n REPOSITORY_ARCHIVED,\n REPOSITORY_CHANGED,\n REPOSITORY_DISABLED,\n REPOSITORY_EMPTY,\n REPOSITORY_MIRRORED,\n REPOSITORY_NOT_FOUND,\n TEMPORARY_ERROR,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { coerceArray } from '../../../util/array';\nimport { noLeadingAtSymbol, parseJson } from '../../../util/common';\nimport * as git from '../../../util/git';\nimport * as hostRules from '../../../util/host-rules';\nimport { setBaseUrl } from '../../../util/http/gitlab';\nimport type { HttpResponse } from '../../../util/http/types';\nimport { parseInteger } from '../../../util/number';\nimport * as p from '../../../util/promises';\nimport { regEx } from '../../../util/regex';\nimport { sanitize } from '../../../util/sanitize';\nimport {\n ensureTrailingSlash,\n getQueryString,\n parseUrl,\n} from '../../../util/url';\nimport type {\n AutodiscoverConfig,\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfig,\n EnsureIssueConfig,\n FindPRConfig,\n GitUrlOption,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformPrOptions,\n PlatformResult,\n Pr,\n ReattemptPlatformAutomergeConfig,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\nimport { smartTruncate } from '../utils/pr-body';\nimport {\n getMemberUserIDs,\n getMemberUsernames,\n getUserID,\n gitlabApi,\n isUserBusy,\n} from './http';\nimport { getMR, updateMR } from './merge-request';\nimport { LastPipelineId } from './schema';\nimport type {\n GitLabMergeRequest,\n GitlabComment,\n GitlabIssue,\n GitlabPr,\n MergeMethod,\n RepoResponse,\n} from './types';\nimport { DRAFT_PREFIX, DRAFT_PREFIX_DEPRECATED, prInfo } from './utils';\n\nlet config: {\n repository: string;\n email: string;\n prList: GitlabPr[] | undefined;\n issueList: GitlabIssue[] | undefined;\n mergeMethod: MergeMethod;\n defaultBranch: string;\n cloneSubmodules: boolean | undefined;\n cloneSubmodulesFilter: string[] | undefined;\n ignorePrAuthor: boolean | undefined;\n squash: boolean;\n} = {} as any;\n\nexport function resetPlatform(): void {\n config = {} as any;\n draftPrefix = DRAFT_PREFIX;\n defaults.hostType = 'gitlab';\n defaults.endpoint = 'https://gitlab.com/api/v4/';\n defaults.version = '0.0.0';\n setBaseUrl(defaults.endpoint);\n}\n\nconst defaults = {\n hostType: 'gitlab',\n endpoint: 'https://gitlab.com/api/v4/',\n version: '0.0.0',\n};\n\nexport const id = 'gitlab';\n\nlet draftPrefix = DRAFT_PREFIX;\n\nexport async function initPlatform({\n endpoint,\n token,\n gitAuthor,\n}: PlatformParams): Promise<PlatformResult> {\n if (!token) {\n throw new Error('Init: You must configure a GitLab personal access token');\n }\n if (endpoint) {\n defaults.endpoint = ensureTrailingSlash(endpoint);\n setBaseUrl(defaults.endpoint);\n } else {\n logger.debug('Using default GitLab endpoint: ' + defaults.endpoint);\n }\n const platformConfig: PlatformResult = {\n endpoint: defaults.endpoint,\n };\n let gitlabVersion: string;\n try {\n if (!gitAuthor) {\n const user = (\n await gitlabApi.getJsonUnchecked<{\n email: string;\n name: string;\n id: number;\n commit_email?: string;\n }>(`user`, { token })\n ).body;\n platformConfig.gitAuthor = `${user.name} <${\n user.commit_email ?? user.email\n }>`;\n }\n // istanbul ignore if: experimental feature\n if (process.env.RENOVATE_X_PLATFORM_VERSION) {\n gitlabVersion = process.env.RENOVATE_X_PLATFORM_VERSION;\n } else {\n const version = (\n await gitlabApi.getJsonUnchecked<{ version: string }>('version', {\n token,\n })\n ).body;\n gitlabVersion = version.version;\n }\n logger.debug('GitLab version is: ' + gitlabVersion);\n // version is 'x.y.z-edition', so not strictly semver; need to strip edition\n [gitlabVersion] = gitlabVersion.split('-');\n defaults.version = gitlabVersion;\n } catch (err) {\n logger.debug(\n { err },\n 'Error authenticating with GitLab. Check that your token includes \"api\" permissions',\n );\n throw new Error('Init: Authentication failure');\n }\n draftPrefix = semver.lt(defaults.version, '13.2.0')\n ? DRAFT_PREFIX_DEPRECATED\n : DRAFT_PREFIX;\n\n return platformConfig;\n}\n\n// Get all repositories that the user has access to\nexport async function getRepos(config?: AutodiscoverConfig): Promise<string[]> {\n logger.debug('Autodiscovering GitLab repositories');\n\n const queryParams: Record<string, any> = {\n membership: true,\n per_page: 100,\n with_merge_requests_enabled: true,\n min_access_level: 30,\n archived: false,\n };\n if (config?.topics?.length) {\n queryParams.topic = config.topics.join(',');\n }\n\n const urls = [];\n if (config?.namespaces?.length) {\n queryParams.with_shared = false;\n queryParams.include_subgroups = true;\n urls.push(\n ...config.namespaces.map(\n (namespace) =>\n `groups/${urlEscape(namespace)}/projects?${getQueryString(\n queryParams,\n )}`,\n ),\n );\n } else {\n urls.push('projects?' + getQueryString(queryParams));\n }\n\n try {\n const repos = (\n await pMap(\n urls,\n (url) =>\n gitlabApi.getJsonUnchecked<RepoResponse[]>(url, {\n paginate: true,\n }),\n {\n concurrency: 2,\n },\n )\n ).flatMap((response) => response.body);\n\n logger.debug(`Discovered ${repos.length} project(s)`);\n return repos\n .filter((repo) => !repo.mirror || config?.includeMirrors)\n .map((repo) => repo.path_with_namespace);\n } catch (err) {\n logger.error({ err }, `GitLab getRepos error`);\n throw err;\n }\n}\n\nfunction urlEscape(str: string): string;\nfunction urlEscape(str: string | undefined): string | undefined;\nfunction urlEscape(str: string | undefined): string | undefined {\n return str?.replace(regEx(/\\//g), '%2F');\n}\n\nexport async function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n const escapedFileName = urlEscape(fileName);\n const repo = urlEscape(repoName) ?? config.repository;\n const url =\n `projects/${repo}/repository/files/${escapedFileName}?ref=` +\n (branchOrTag ?? `HEAD`);\n const res = await gitlabApi.getJsonUnchecked<{ content: string }>(url);\n const buf = res.body.content;\n const str = Buffer.from(buf, 'base64').toString();\n return str;\n}\n\nexport async function getJsonFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<any> {\n const raw = await getRawFile(fileName, repoName, branchOrTag);\n return parseJson(raw, fileName);\n}\n\nfunction getRepoUrl(\n repository: string,\n gitUrl: GitUrlOption | undefined,\n res: HttpResponse<RepoResponse>,\n): string {\n if (gitUrl === 'ssh') {\n if (!res.body.ssh_url_to_repo) {\n throw new Error(CONFIG_GIT_URL_UNAVAILABLE);\n }\n logger.debug(`Using ssh URL: ${res.body.ssh_url_to_repo}`);\n return res.body.ssh_url_to_repo;\n }\n\n const opts = hostRules.find({\n hostType: defaults.hostType,\n url: defaults.endpoint,\n });\n\n if (\n gitUrl === 'endpoint' ||\n is.nonEmptyString(process.env.GITLAB_IGNORE_REPO_URL) ||\n res.body.http_url_to_repo === null\n ) {\n if (res.body.http_url_to_repo === null) {\n logger.debug('no http_url_to_repo found. Falling back to old behavior.');\n }\n if (process.env.GITLAB_IGNORE_REPO_URL) {\n logger.warn(\n 'GITLAB_IGNORE_REPO_URL environment variable is deprecated. Please use \"gitUrl\" option.',\n );\n }\n\n // TODO: null check (#22198)\n const { protocol, host, pathname } = parseUrl(defaults.endpoint)!;\n const newPathname = pathname.slice(0, pathname.indexOf('/api'));\n const url = URL.format({\n protocol:\n protocol.slice(0, -1) ||\n /* istanbul ignore next: should never happen */ 'https',\n // TODO: types (#22198)\n auth: `oauth2:${opts.token!}`,\n host,\n pathname: `${newPathname}/${repository}.git`,\n });\n logger.debug(`Using URL based on configured endpoint, url:${url}`);\n return url;\n }\n\n logger.debug(`Using http URL: ${res.body.http_url_to_repo}`);\n const repoUrl = URL.parse(`${res.body.http_url_to_repo}`);\n // TODO: types (#22198)\n repoUrl.auth = `oauth2:${opts.token!}`;\n return URL.format(repoUrl);\n}\n\n// Initialize GitLab by getting base branch\nexport async function initRepo({\n repository,\n cloneSubmodules,\n cloneSubmodulesFilter,\n ignorePrAuthor,\n gitUrl,\n endpoint,\n includeMirrors,\n}: RepoParams): Promise<RepoResult> {\n config = {} as any;\n config.repository = urlEscape(repository);\n config.cloneSubmodules = cloneSubmodules;\n config.cloneSubmodulesFilter = cloneSubmodulesFilter;\n config.ignorePrAuthor = ignorePrAuthor;\n\n let res: HttpResponse<RepoResponse>;\n try {\n res = await gitlabApi.getJsonUnchecked<RepoResponse>(\n `projects/${config.repository}`,\n );\n if (res.body.archived) {\n logger.debug(\n 'Repository is archived - throwing error to abort renovation',\n );\n throw new Error(REPOSITORY_ARCHIVED);\n }\n\n if (res.body.mirror && includeMirrors !== true) {\n logger.debug(\n 'Repository is a mirror - throwing error to abort renovation',\n );\n throw new Error(REPOSITORY_MIRRORED);\n }\n if (res.body.repository_access_level === 'disabled') {\n logger.debug(\n 'Repository portion of project is disabled - throwing error to abort renovation',\n );\n throw new Error(REPOSITORY_DISABLED);\n }\n if (res.body.merge_requests_access_level === 'disabled') {\n logger.debug(\n 'MRs are disabled for the project - throwing error to abort renovation',\n );\n throw new Error(REPOSITORY_DISABLED);\n }\n if (res.body.default_branch === null || res.body.empty_repo) {\n throw new Error(REPOSITORY_EMPTY);\n }\n config.defaultBranch = res.body.default_branch;\n // istanbul ignore if\n if (!config.defaultBranch) {\n logger.warn({ resBody: res.body }, 'Error fetching GitLab project');\n throw new Error(TEMPORARY_ERROR);\n }\n config.mergeMethod = res.body.merge_method || 'merge';\n if (res.body.squash_option) {\n config.squash =\n res.body.squash_option === 'always' ||\n res.body.squash_option === 'default_on';\n }\n logger.debug(`${repository} default branch = ${config.defaultBranch}`);\n delete config.prList;\n logger.debug('Enabling Git FS');\n const url = getRepoUrl(repository, gitUrl, res);\n await git.initRepo({\n ...config,\n url,\n });\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'Caught initRepo error');\n if (err.message.includes('HEAD is not a symbolic ref')) {\n throw new Error(REPOSITORY_EMPTY);\n }\n if ([REPOSITORY_ARCHIVED, REPOSITORY_EMPTY].includes(err.message)) {\n throw err;\n }\n if (err.statusCode === 403) {\n throw new Error(REPOSITORY_ACCESS_FORBIDDEN);\n }\n if (err.statusCode === 404) {\n throw new Error(REPOSITORY_NOT_FOUND);\n }\n if (err.message === REPOSITORY_DISABLED) {\n throw err;\n }\n logger.debug({ err }, 'Unknown GitLab initRepo error');\n throw err;\n }\n const repoConfig: RepoResult = {\n defaultBranch: config.defaultBranch,\n isFork: !!res.body.forked_from_project,\n repoFingerprint: repoFingerprint(res.body.id, defaults.endpoint),\n };\n return repoConfig;\n}\n\nexport function getBranchForceRebase(): Promise<boolean> {\n const forceRebase = config?.mergeMethod !== 'merge';\n if (forceRebase) {\n logger.once.debug(\n `mergeMethod is ${config.mergeMethod} so PRs will be kept up-to-date with base branch`,\n );\n }\n return Promise.resolve(forceRebase);\n}\n\ntype BranchState =\n | 'pending'\n | 'created'\n | 'running'\n | 'waiting_for_resource'\n | 'manual'\n | 'success'\n | 'failed'\n | 'canceled'\n | 'skipped'\n | 'scheduled';\n\ninterface GitlabBranchStatus {\n status: BranchState;\n name: string;\n allow_failure?: boolean;\n}\n\nasync function getStatus(\n branchName: string,\n useCache = true,\n): Promise<GitlabBranchStatus[]> {\n const branchSha = git.getBranchCommit(branchName);\n try {\n // TODO: types (#22198)\n const url = `projects/${\n config.repository\n }/repository/commits/${branchSha!}/statuses`;\n\n return (\n await gitlabApi.getJsonUnchecked<GitlabBranchStatus[]>(url, {\n paginate: true,\n memCache: useCache,\n })\n ).body;\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'Error getting commit status');\n if (err.response?.statusCode === 404) {\n throw new Error(REPOSITORY_CHANGED);\n }\n throw err;\n }\n}\n\nconst gitlabToRenovateStatusMapping: Record<BranchState, BranchStatus> = {\n pending: 'yellow',\n created: 'yellow',\n manual: 'yellow',\n running: 'yellow',\n waiting_for_resource: 'yellow',\n success: 'green',\n failed: 'red',\n canceled: 'red',\n skipped: 'red',\n scheduled: 'yellow',\n};\n\n// Returns the combined status for a branch.\nexport async function getBranchStatus(\n branchName: string,\n internalChecksAsSuccess: boolean,\n): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n\n if (!git.branchExists(branchName)) {\n throw new Error(REPOSITORY_CHANGED);\n }\n\n const branchStatuses = await getStatus(branchName);\n // istanbul ignore if\n if (!is.array(branchStatuses)) {\n logger.warn(\n { branchName, branchStatuses },\n 'Empty or unexpected branch statuses',\n );\n return 'yellow';\n }\n logger.debug(`Got res with ${branchStatuses.length} results`);\n\n const mr = await getBranchPr(branchName);\n if (mr && mr.sha !== mr.headPipelineSha && mr.headPipelineStatus) {\n logger.debug(\n 'Merge request head pipeline has different sha to commit, assuming merged results pipeline',\n );\n branchStatuses.push({\n status: mr.headPipelineStatus as BranchState,\n name: 'head_pipeline',\n });\n }\n // ignore all skipped jobs\n const res = branchStatuses.filter((check) => check.status !== 'skipped');\n if (res.length === 0) {\n // Return 'pending' if we have no status checks\n return 'yellow';\n }\n if (\n !internalChecksAsSuccess &&\n branchStatuses.every(\n (check) =>\n check.name?.startsWith('renovate/') &&\n gitlabToRenovateStatusMapping[check.status] === 'green',\n )\n ) {\n logger.debug(\n 'Successful checks are all internal renovate/ checks, so returning \"pending\" branch status',\n );\n return 'yellow';\n }\n let status: BranchStatus = 'green'; // default to green\n res\n .filter((check) => !check.allow_failure)\n .forEach((check) => {\n if (status !== 'red') {\n // if red, stay red\n let mappedStatus: BranchStatus =\n gitlabToRenovateStatusMapping[check.status];\n if (!mappedStatus) {\n logger.warn(\n { check },\n 'Could not map GitLab check.status to Renovate status',\n );\n mappedStatus = 'yellow';\n }\n if (mappedStatus !== 'green') {\n logger.trace({ check }, 'Found non-green check');\n status = mappedStatus;\n }\n }\n });\n return status;\n}\n\n// Pull Request\n\nasync function fetchPrList(): Promise<Pr[]> {\n const searchParams = {\n per_page: '100',\n } as any;\n // istanbul ignore if\n if (!config.ignorePrAuthor) {\n searchParams.scope = 'created_by_me';\n }\n const query = getQueryString(searchParams);\n const urlString = `projects/${config.repository}/merge_requests?${query}`;\n try {\n const res = await gitlabApi.getJsonUnchecked<GitLabMergeRequest[]>(\n urlString,\n {\n paginate: true,\n },\n );\n return res.body.map((pr) => prInfo(pr));\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'Error fetching PR list');\n if (err.statusCode === 403) {\n throw new Error(PLATFORM_AUTHENTICATION_ERROR);\n }\n throw err;\n }\n}\n\nexport async function getPrList(): Promise<Pr[]> {\n if (!config.prList) {\n config.prList = await fetchPrList();\n }\n return config.prList;\n}\n\nasync function ignoreApprovals(pr: number): Promise<void> {\n try {\n const url = `projects/${config.repository}/merge_requests/${pr}/approval_rules`;\n const { body: rules } = await gitlabApi.getJsonUnchecked<\n {\n name: string;\n rule_type: string;\n id: number;\n }[]\n >(url);\n\n const ruleName = 'renovateIgnoreApprovals';\n\n const existingAnyApproverRule = rules?.find(\n ({ rule_type }) => rule_type === 'any_approver',\n );\n const existingRegularApproverRules = rules?.filter(\n ({ rule_type, name }) =>\n rule_type !== 'any_approver' &&\n name !== ruleName &&\n rule_type !== 'report_approver' &&\n rule_type !== 'code_owner',\n );\n\n if (existingRegularApproverRules?.length) {\n await p.all(\n existingRegularApproverRules.map((rule) => async (): Promise<void> => {\n await gitlabApi.deleteJson(`${url}/${rule.id}`);\n }),\n );\n }\n\n if (existingAnyApproverRule) {\n await gitlabApi.putJson(`${url}/${existingAnyApproverRule.id}`, {\n body: { ...existingAnyApproverRule, approvals_required: 0 },\n });\n return;\n }\n\n const zeroApproversRule = rules?.find(({ name }) => name === ruleName);\n if (!zeroApproversRule) {\n await gitlabApi.postJson(url, {\n body: {\n name: ruleName,\n approvals_required: 0,\n },\n });\n }\n } catch (err) {\n logger.warn({ err }, 'GitLab: Error adding approval rule');\n }\n}\n\nasync function tryPrAutomerge(\n pr: number,\n platformPrOptions: PlatformPrOptions | undefined,\n): Promise<void> {\n try {\n if (platformPrOptions?.gitLabIgnoreApprovals) {\n await ignoreApprovals(pr);\n }\n\n if (platformPrOptions?.usePlatformAutomerge) {\n // https://docs.gitlab.com/ee/api/merge_requests.html#merge-status\n const desiredDetailedMergeStatus = [\n 'mergeable',\n 'ci_still_running',\n 'not_approved',\n ];\n const desiredPipelineStatus = [\n 'failed', // don't lose time if pipeline failed\n 'running', // pipeline is running, no need to wait for it\n ];\n const desiredStatus = 'can_be_merged';\n // The default value of 5 attempts results in max. 13.75 seconds timeout if no pipeline created.\n const retryTimes = parseInteger(\n process.env.RENOVATE_X_GITLAB_AUTO_MERGEABLE_CHECK_ATTEMPS,\n 5,\n );\n\n const mergeDelay = parseInteger(\n process.env.RENOVATE_X_GITLAB_MERGE_REQUEST_DELAY,\n 250,\n );\n\n // Check for correct merge request status before setting `merge_when_pipeline_succeeds` to `true`.\n for (let attempt = 1; attempt <= retryTimes; attempt += 1) {\n const { body } = await gitlabApi.getJsonUnchecked<{\n merge_status: string;\n detailed_merge_status?: string;\n pipeline: {\n status: string;\n };\n }>(`projects/${config.repository}/merge_requests/${pr}`, {\n memCache: false,\n });\n // detailed_merge_status is available with Gitlab >=15.6.0\n const use_detailed_merge_status = !!body.detailed_merge_status;\n const detailed_merge_status_check =\n use_detailed_merge_status &&\n desiredDetailedMergeStatus.includes(body.detailed_merge_status!);\n // merge_status is deprecated with Gitlab >= 15.6\n const deprecated_merge_status_check =\n !use_detailed_merge_status && body.merge_status === desiredStatus;\n\n // Only continue if the merge request can be merged and has a pipeline.\n if (\n (detailed_merge_status_check || deprecated_merge_status_check) &&\n body.pipeline !== null &&\n desiredPipelineStatus.includes(body.pipeline.status)\n ) {\n break;\n }\n logger.debug(`PR not yet in mergeable state. Retrying ${attempt}`);\n await setTimeout(mergeDelay * attempt ** 2); // exponential backoff\n }\n\n // Even if Gitlab returns a \"merge-able\" merge request status, enabling auto-merge sometimes\n // returns a 405 Method Not Allowed. It seems to be a timing issue within Gitlab.\n for (let attempt = 1; attempt <= retryTimes; attempt += 1) {\n try {\n await gitlabApi.putJson(\n `projects/${config.repository}/merge_requests/${pr}/merge`,\n {\n body: {\n should_remove_source_branch: true,\n merge_when_pipeline_succeeds: true,\n },\n },\n );\n break;\n } catch (err) {\n logger.debug(\n { err },\n `Automerge on PR creation failed. Retrying ${attempt}`,\n );\n }\n await setTimeout(mergeDelay * attempt ** 2); // exponential backoff\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err }, 'Automerge on PR creation failed');\n }\n}\n\nasync function approvePr(pr: number): Promise<void> {\n try {\n await gitlabApi.postJson(\n `projects/${config.repository}/merge_requests/${pr}/approve`,\n );\n } catch (err) {\n logger.warn({ err }, 'GitLab: Error approving merge request');\n }\n}\n\nexport async function createPr({\n sourceBranch,\n targetBranch,\n prTitle,\n prBody: rawDescription,\n draftPR,\n labels,\n platformPrOptions,\n}: CreatePRConfig): Promise<Pr> {\n let title = prTitle;\n if (draftPR) {\n title = draftPrefix + title;\n }\n const description = sanitize(rawDescription);\n logger.debug(`Creating Merge Request: ${title}`);\n const res = await gitlabApi.postJson<GitLabMergeRequest>(\n `projects/${config.repository}/merge_requests`,\n {\n body: {\n source_branch: sourceBranch,\n target_branch: targetBranch,\n remove_source_branch: true,\n title,\n description,\n labels: (labels ?? []).join(','),\n squash: config.squash,\n },\n },\n );\n\n const pr = prInfo(res.body);\n\n // istanbul ignore if\n if (config.prList) {\n config.prList.push(pr);\n }\n\n if (platformPrOptions?.autoApprove) {\n await approvePr(pr.number);\n }\n\n await tryPrAutomerge(pr.number, platformPrOptions);\n\n return pr;\n}\n\nexport async function getPr(iid: number): Promise<GitlabPr> {\n logger.debug(`getPr(${iid})`);\n const mr = await getMR(config.repository, iid);\n\n // Harmonize fields with GitHub\n return prInfo(mr);\n}\n\nexport async function updatePr({\n number: iid,\n prTitle,\n prBody: description,\n addLabels,\n removeLabels,\n state,\n platformPrOptions,\n targetBranch,\n}: UpdatePrConfig): Promise<void> {\n let title = prTitle;\n if ((await getPrList()).find((pr) => pr.number === iid)?.isDraft) {\n title = draftPrefix + title;\n }\n const newState = {\n ['closed']: 'close',\n ['open']: 'reopen',\n // TODO: null check (#22198)\n }[state!];\n\n const body: any = {\n title,\n description: sanitize(description),\n ...(newState && { state_event: newState }),\n };\n if (targetBranch) {\n body.target_branch = targetBranch;\n }\n\n if (addLabels) {\n body.add_labels = addLabels;\n }\n\n if (removeLabels) {\n body.remove_labels = removeLabels;\n }\n\n const updatedPrInfo = (\n await gitlabApi.putJson<GitLabMergeRequest>(\n `projects/${config.repository}/merge_requests/${iid}`,\n { body },\n )\n ).body;\n\n const updatedPr = prInfo(updatedPrInfo);\n\n if (config.prList) {\n const existingIndex = config.prList.findIndex(\n (pr) => pr.number === updatedPr.number,\n );\n // istanbul ignore if: should not happen\n if (existingIndex === -1) {\n logger.warn(\n { pr: updatedPr },\n 'Possible error: Updated PR was not found in the PRs that were returned from getPrList().',\n );\n config.prList.push(updatedPr);\n } else {\n config.prList[existingIndex] = updatedPr;\n }\n }\n\n if (platformPrOptions?.autoApprove) {\n await approvePr(iid);\n }\n}\n\nexport async function reattemptPlatformAutomerge({\n number: iid,\n platformPrOptions,\n}: ReattemptPlatformAutomergeConfig): Promise<void> {\n await tryPrAutomerge(iid, platformPrOptions);\n\n logger.debug(`PR platform automerge re-attempted...prNo: ${iid}`);\n}\n\nexport async function mergePr({ id }: MergePRConfig): Promise<boolean> {\n try {\n await gitlabApi.putJson(\n `projects/${config.repository}/merge_requests/${id}/merge`,\n {\n body: {\n should_remove_source_branch: true,\n },\n },\n );\n return true;\n } catch (err) /* istanbul ignore next */ {\n if (err.statusCode === 401) {\n logger.debug('No permissions to merge PR');\n return false;\n }\n if (err.statusCode === 406) {\n logger.debug({ err }, 'PR not acceptable for merging');\n return false;\n }\n logger.debug({ err }, 'merge PR error');\n logger.debug('PR merge failed');\n return false;\n }\n}\n\nexport function massageMarkdown(input: string): string {\n const desc = input\n .replace(regEx(/Pull Request/g), 'Merge Request')\n .replace(regEx(/\\bPR\\b/g), 'MR')\n .replace(regEx(/\\bPRs\\b/g), 'MRs')\n .replace(regEx(/\\]\\(\\.\\.\\/pull\\//g), '](!')\n // Strip unicode null characters as GitLab markdown does not permit them\n .replace(regEx(/\\u0000/g), ''); // eslint-disable-line no-control-regex\n return smartTruncate(desc, maxBodyLength());\n}\n\nexport function maxBodyLength(): number {\n if (semver.lt(defaults.version, '13.4.0')) {\n logger.debug(\n { version: defaults.version },\n 'GitLab versions earlier than 13.4 have issues with long descriptions, truncating to 25K characters',\n );\n return 25000;\n } else {\n return 1000000;\n }\n}\n\n// istanbul ignore next: no need to test\nexport function labelCharLimit(): number {\n return 255;\n}\n\n// Branch\n\nfunction matchesState(state: string, desiredState: string): boolean {\n if (desiredState === 'all') {\n return true;\n }\n if (desiredState.startsWith('!')) {\n return state !== desiredState.substring(1);\n }\n return state === desiredState;\n}\n\nexport async function findPr({\n branchName,\n prTitle,\n state = 'all',\n includeOtherAuthors,\n}: FindPRConfig): Promise<Pr | null> {\n logger.debug(`findPr(${branchName}, ${prTitle!}, ${state})`);\n\n if (includeOtherAuthors) {\n // PR might have been created by anyone, so don't use the cached Renovate MR list\n const response = await gitlabApi.getJsonUnchecked<GitLabMergeRequest[]>(\n `projects/${config.repository}/merge_requests?source_branch=${branchName}&state=opened`,\n );\n\n const { body: mrList } = response;\n if (!mrList.length) {\n logger.debug(`No MR found for branch ${branchName}`);\n return null;\n }\n\n return prInfo(mrList[0]);\n }\n\n const prList = await getPrList();\n return (\n prList.find(\n (p: { sourceBranch: string; title: string; state: string }) =>\n p.sourceBranch === branchName &&\n (!prTitle || p.title.toUpperCase() === prTitle.toUpperCase()) &&\n matchesState(p.state, state),\n ) ?? null\n );\n}\n\n// Returns the Pull Request for a branch. Null if not exists.\nexport async function getBranchPr(\n branchName: string,\n): Promise<GitlabPr | null> {\n logger.debug(`getBranchPr(${branchName})`);\n const existingPr = await findPr({\n branchName,\n state: 'open',\n });\n return existingPr ? getPr(existingPr.number) : null;\n}\n\nexport async function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n // cache-bust in case we have rebased\n const res = await getStatus(branchName, false);\n logger.debug(`Got res with ${res.length} results`);\n for (const check of res) {\n if (check.name === context) {\n return gitlabToRenovateStatusMapping[check.status] || 'yellow';\n }\n }\n return null;\n}\n\nexport async function setBranchStatus({\n branchName,\n context,\n description,\n state: renovateState,\n url: targetUrl,\n}: BranchStatusConfig): Promise<void> {\n // First, get the branch commit SHA\n const branchSha = git.getBranchCommit(branchName);\n if (!branchSha) {\n logger.warn('Failed to get the branch commit SHA');\n return;\n }\n // Now, check the statuses for that commit\n const url = `projects/${config.repository}/statuses/${branchSha}`;\n let state = 'success';\n if (renovateState === 'yellow') {\n state = 'pending';\n } else if (renovateState === 'red') {\n state = 'failed';\n }\n const options: any = {\n state,\n description,\n context,\n };\n\n if (targetUrl) {\n options.target_url = targetUrl;\n }\n\n const retryTimes = parseInteger(\n process.env.RENOVATE_X_GITLAB_BRANCH_STATUS_CHECK_ATTEMPTS,\n 2,\n );\n\n try {\n for (let attempt = 1; attempt <= retryTimes + 1; attempt += 1) {\n const commitUrl = `projects/${config.repository}/repository/commits/${branchSha}`;\n await gitlabApi\n .getJsonSafe(commitUrl, { memCache: false }, LastPipelineId)\n .onValue((pipelineId) => {\n options.pipeline_id = pipelineId;\n });\n if (options.pipeline_id !== undefined) {\n break;\n }\n if (attempt >= retryTimes + 1) {\n logger.debug(`Pipeline not yet created after ${attempt} attempts`);\n } else {\n logger.debug(`Pipeline not yet created. Retrying ${attempt}`);\n }\n // give gitlab some time to create pipelines for the sha\n await setTimeout(\n parseInteger(process.env.RENOVATE_X_GITLAB_BRANCH_STATUS_DELAY, 1000),\n );\n }\n } catch (err) {\n logger.debug({ err });\n logger.warn('Failed to retrieve commit pipeline');\n }\n\n try {\n await gitlabApi.postJson(url, { body: options });\n\n // update status cache\n await getStatus(branchName, false);\n } catch (err) /* istanbul ignore next */ {\n if (\n err.body?.message?.startsWith(\n 'Cannot transition status via :enqueue from :pending',\n )\n ) {\n // https://gitlab.com/gitlab-org/gitlab-foss/issues/25807\n logger.debug('Ignoring status transition error');\n } else {\n logger.debug({ err });\n logger.warn('Failed to set branch status');\n }\n }\n}\n\n// Issue\n\nexport async function getIssueList(): Promise<GitlabIssue[]> {\n if (!config.issueList) {\n const searchParams: Record<string, string> = {\n per_page: '100',\n state: 'opened',\n };\n if (!config.ignorePrAuthor) {\n searchParams.scope = 'created_by_me';\n }\n const query = getQueryString(searchParams);\n const res = await gitlabApi.getJsonUnchecked<\n { iid: number; title: string; labels: string[] }[]\n >(`projects/${config.repository}/issues?${query}`, {\n memCache: false,\n paginate: true,\n });\n // istanbul ignore if\n if (!is.array(res.body)) {\n logger.warn({ responseBody: res.body }, 'Could not retrieve issue list');\n return [];\n }\n config.issueList = res.body.map((i) => ({\n iid: i.iid,\n title: i.title,\n labels: i.labels,\n }));\n }\n return config.issueList;\n}\n\nexport async function getIssue(\n number: number,\n useCache = true,\n): Promise<Issue | null> {\n try {\n const issueBody = (\n await gitlabApi.getJsonUnchecked<{ description: string }>(\n `projects/${config.repository}/issues/${number}`,\n { memCache: useCache },\n )\n ).body.description;\n return {\n number,\n body: issueBody,\n };\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err, number }, 'Error getting issue');\n return null;\n }\n}\n\nexport async function findIssue(title: string): Promise<Issue | null> {\n logger.debug(`findIssue(${title})`);\n try {\n const issueList = await getIssueList();\n const issue = issueList.find((i) => i.title === title);\n if (!issue) {\n return null;\n }\n return await getIssue(issue.iid);\n } catch /* istanbul ignore next */ {\n logger.warn('Error finding issue');\n return null;\n }\n}\n\nexport async function ensureIssue({\n title,\n reuseTitle,\n body,\n labels,\n confidential,\n}: EnsureIssueConfig): Promise<'updated' | 'created' | null> {\n logger.debug(`ensureIssue()`);\n const description = massageMarkdown(sanitize(body));\n try {\n const issueList = await getIssueList();\n let issue = issueList.find((i) => i.title === title);\n if (!issue) {\n issue = issueList.find((i) => i.title === reuseTitle);\n }\n if (issue) {\n const existingDescription = (\n await gitlabApi.getJsonUnchecked<{ description: string }>(\n `projects/${config.repository}/issues/${issue.iid}`,\n )\n ).body.description;\n if (issue.title !== title || existingDescription !== description) {\n logger.debug('Updating issue');\n await gitlabApi.putJson(\n `projects/${config.repository}/issues/${issue.iid}`,\n {\n body: {\n title,\n description,\n labels: (labels ?? issue.labels ?? []).join(','),\n confidential: confidential ?? false,\n },\n },\n );\n return 'updated';\n }\n } else {\n await gitlabApi.postJson(`projects/${config.repository}/issues`, {\n body: {\n title,\n description,\n labels: (labels ?? []).join(','),\n confidential: confidential ?? false,\n },\n });\n logger.info('Issue created');\n // delete issueList so that it will be refetched as necessary\n delete config.issueList;\n return 'created';\n }\n } catch (err) /* istanbul ignore next */ {\n if (err.message.startsWith('Issues are disabled for this repo')) {\n logger.debug(`Could not create issue: ${(err as Error).message}`);\n } else {\n logger.warn({ err }, 'Could not ensure issue');\n }\n }\n return null;\n}\n\nexport async function ensureIssueClosing(title: string): Promise<void> {\n logger.debug(`ensureIssueClosing()`);\n const issueList = await getIssueList();\n for (const issue of issueList) {\n if (issue.title === title) {\n logger.debug({ issue }, 'Closing issue');\n await gitlabApi.putJson(\n `projects/${config.repository}/issues/${issue.iid}`,\n {\n body: { state_event: 'close' },\n },\n );\n }\n }\n}\n\nexport async function addAssignees(\n iid: number,\n assignees: string[],\n): Promise<void> {\n try {\n logger.debug(`Adding assignees '${assignees.join(', ')}' to #${iid}`);\n const assigneeIds: number[] = [];\n for (const assignee of assignees) {\n try {\n const userId = await getUserID(assignee);\n assigneeIds.push(userId);\n } catch (err) {\n logger.debug({ assignee, err }, 'getUserID() error');\n logger.warn({ assignee }, 'Failed to add assignee - could not get ID');\n }\n }\n const url = `projects/${\n config.repository\n }/merge_requests/${iid}?${getQueryString({\n 'assignee_ids[]': assigneeIds,\n })}`;\n await gitlabApi.putJson(url);\n } catch (err) {\n logger.debug({ err }, 'addAssignees error');\n logger.warn({ iid, assignees }, 'Failed to add assignees');\n }\n}\n\nexport async function addReviewers(\n iid: number,\n reviewers: string[],\n): Promise<void> {\n logger.debug(`Adding reviewers '${reviewers.join(', ')}' to #${iid}`);\n\n if (semver.lt(defaults.version, '13.9.0')) {\n logger.warn(\n { version: defaults.version },\n 'Adding reviewers is only available in GitLab 13.9 and onwards',\n );\n return;\n }\n\n let mr: GitLabMergeRequest;\n try {\n mr = await getMR(config.repository, iid);\n } catch (err) {\n logger.warn({ err }, 'Failed to get existing reviewers');\n return;\n }\n\n mr.reviewers = coerceArray(mr.reviewers);\n const existingReviewers = mr.reviewers.map((r) => r.username);\n const existingReviewerIDs = mr.reviewers.map((r) => r.id);\n\n // Figure out which reviewers (of the ones we want to add) are not already on the MR as a reviewer\n const newReviewers = reviewers.filter((r) => !existingReviewers.includes(r));\n\n // Gather the IDs for all the reviewers we want to add\n let newReviewerIDs: number[];\n try {\n newReviewerIDs = (\n await p.all(\n newReviewers.map((r) => async () => {\n try {\n return [await getUserID(r)];\n } catch {\n // Unable to fetch userId, try resolve as a group\n return getMemberUserIDs(r);\n }\n }),\n )\n ).flat();\n } catch (err) {\n logger.warn({ err }, 'Failed to get IDs of the new reviewers');\n return;\n }\n\n // Multiple groups may have the same members, so\n // filter out non-distinct values\n newReviewerIDs = [...new Set(newReviewerIDs)];\n\n try {\n await updateMR(config.repository, iid, {\n reviewer_ids: [...existingReviewerIDs, ...newReviewerIDs],\n });\n } catch (err) {\n logger.warn({ err }, 'Failed to add reviewers');\n }\n}\n\nexport async function deleteLabel(\n issueNo: number,\n label: string,\n): Promise<void> {\n logger.debug(`Deleting label ${label} from #${issueNo}`);\n try {\n const pr = await getPr(issueNo);\n const labels = coerceArray(pr.labels)\n .filter((l: string) => l !== label)\n .join(',');\n await gitlabApi.putJson(\n `projects/${config.repository}/merge_requests/${issueNo}`,\n {\n body: { labels },\n },\n );\n } catch (err) /* istanbul ignore next */ {\n logger.warn({ err, issueNo, label }, 'Failed to delete label');\n }\n}\n\nasync function getComments(issueNo: number): Promise<GitlabComment[]> {\n // GET projects/:owner/:repo/merge_requests/:number/notes\n logger.debug(`Getting comments for #${issueNo}`);\n const url = `projects/${config.repository}/merge_requests/${issueNo}/notes`;\n const comments = (\n await gitlabApi.getJsonUnchecked<GitlabComment[]>(url, { paginate: true })\n ).body;\n logger.debug(`Found ${comments.length} comments`);\n return comments;\n}\n\nasync function addComment(issueNo: number, body: string): Promise<void> {\n // POST projects/:owner/:repo/merge_requests/:number/notes\n await gitlabApi.postJson(\n `projects/${config.repository}/merge_requests/${issueNo}/notes`,\n {\n body: { body },\n },\n );\n}\n\nasync function editComment(\n issueNo: number,\n commentId: number,\n body: string,\n): Promise<void> {\n // PUT projects/:owner/:repo/merge_requests/:number/notes/:id\n await gitlabApi.putJson(\n `projects/${config.repository}/merge_requests/${issueNo}/notes/${commentId}`,\n {\n body: { body },\n },\n );\n}\n\nasync function deleteComment(\n issueNo: number,\n commentId: number,\n): Promise<void> {\n // DELETE projects/:owner/:repo/merge_requests/:number/notes/:id\n await gitlabApi.deleteJson(\n `projects/${config.repository}/merge_requests/${issueNo}/notes/${commentId}`,\n );\n}\n\nexport async function ensureComment({\n number,\n topic,\n content,\n}: EnsureCommentConfig): Promise<boolean> {\n const sanitizedContent = sanitize(content);\n const massagedTopic = topic\n ? topic\n .replace(regEx(/Pull Request/g), 'Merge Request')\n .replace(regEx(/PR/g), 'MR')\n : topic;\n const comments = await getComments(number);\n let body: string;\n let commentId: number | undefined;\n let commentNeedsUpdating: boolean | undefined;\n // TODO: types (#22198)\n if (topic) {\n logger.debug(`Ensuring comment \"${massagedTopic!}\" in #${number}`);\n body = `### ${topic}\\n\\n${sanitizedContent}`;\n body = smartTruncate(\n body\n .replace(regEx(/Pull Request/g), 'Merge Request')\n .replace(regEx(/PR/g), 'MR'),\n maxBodyLength(),\n );\n comments.forEach((comment: { body: string; id: number }) => {\n if (comment.body.startsWith(`### ${massagedTopic!}\\n\\n`)) {\n commentId = comment.id;\n commentNeedsUpdating = comment.body !== body;\n }\n });\n } else {\n logger.debug(`Ensuring content-only comment in #${number}`);\n body = smartTruncate(`${sanitizedContent}`, maxBodyLength());\n comments.forEach((comment: { body: string; id: number }) => {\n if (comment.body === body) {\n commentId = comment.id;\n commentNeedsUpdating = false;\n }\n });\n }\n if (!commentId) {\n await addComment(number, body);\n logger.debug(\n { repository: config.repository, issueNo: number },\n 'Added comment',\n );\n } else if (commentNeedsUpdating) {\n await editComment(number, commentId, body);\n logger.debug(\n { repository: config.repository, issueNo: number },\n 'Updated comment',\n );\n } else {\n logger.debug('Comment is already update-to-date');\n }\n return true;\n}\n\nexport async function ensureCommentRemoval(\n deleteConfig: EnsureCommentRemovalConfig,\n): Promise<void> {\n const { number: issueNo } = deleteConfig;\n const key =\n deleteConfig.type === 'by-topic'\n ? deleteConfig.topic\n : deleteConfig.content;\n logger.debug(`Ensuring comment \"${key}\" in #${issueNo} is removed`);\n\n const comments = await getComments(issueNo);\n let commentId: number | null | undefined = null;\n\n if (deleteConfig.type === 'by-topic') {\n const byTopic = (comment: GitlabComment): boolean =>\n comment.body.startsWith(`### ${deleteConfig.topic}\\n\\n`);\n commentId = comments.find(byTopic)?.id;\n } else if (deleteConfig.type === 'by-content') {\n const byContent = (comment: GitlabComment): boolean =>\n comment.body.trim() === deleteConfig.content;\n commentId = comments.find(byContent)?.id;\n }\n\n if (commentId) {\n await deleteComment(issueNo, commentId);\n }\n}\n\nexport async function filterUnavailableUsers(\n users: string[],\n): Promise<string[]> {\n const filteredUsers: string[] = [];\n for (const user of users) {\n if (!(await isUserBusy(user))) {\n filteredUsers.push(user);\n }\n }\n return filteredUsers;\n}\n\nexport async function expandGroupMembers(\n reviewersOrAssignees: string[],\n): Promise<string[]> {\n const expandedReviewersOrAssignees: string[] = [];\n const normalizedReviewersOrAssigneesWithoutEmails: string[] = [];\n\n // Skip passing user emails to Gitlab API, but include them in the final result\n for (const reviewerOrAssignee of reviewersOrAssignees) {\n if (reviewerOrAssignee.indexOf('@') > 0) {\n expandedReviewersOrAssignees.push(reviewerOrAssignee);\n continue;\n }\n\n // Normalize the potential group names before passing to Gitlab API\n normalizedReviewersOrAssigneesWithoutEmails.push(\n noLeadingAtSymbol(reviewerOrAssignee),\n );\n }\n\n for (const reviewerOrAssignee of normalizedReviewersOrAssigneesWithoutEmails) {\n try {\n const members = await getMemberUsernames(reviewerOrAssignee);\n expandedReviewersOrAssignees.push(...members);\n } catch (err) {\n if (err.statusCode !== 404) {\n logger.debug({ err, reviewerOrAssignee }, 'Unable to fetch group');\n }\n expandedReviewersOrAssignees.push(reviewerOrAssignee);\n }\n }\n return expandedReviewersOrAssignees;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { Constructor } from 'type-fest';
2
2
  import type { PlatformId } from '../../constants';
3
3
  import type { PlatformScm } from './types';
4
- export declare const platformScmImpls: Map<"local" | "azure" | "bitbucket" | "bitbucket-server" | "codecommit" | "gerrit" | "gitea" | "github" | "gitlab", Constructor<PlatformScm>>;
4
+ export declare const platformScmImpls: Map<"azure" | "bitbucket" | "bitbucket-server" | "codecommit" | "gerrit" | "gitea" | "github" | "gitlab" | "local", Constructor<PlatformScm>>;
5
5
  export declare const scm: PlatformScm;
6
6
  export declare function setPlatformScmApi(name: PlatformId): void;
@@ -183,6 +183,15 @@ function subset(subRange, superRange) {
183
183
  return false;
184
184
  }
185
185
  }
186
+ function intersects(subRange, superRange) {
187
+ try {
188
+ return npm_1.api.intersects(composer2npm(subRange), composer2npm(superRange));
189
+ }
190
+ catch (err) {
191
+ logger_1.logger.trace({ err }, 'composer.intersects error');
192
+ return false;
193
+ }
194
+ }
186
195
  function getNewValue({ currentValue, rangeStrategy, currentVersion, newVersion, }) {
187
196
  if (rangeStrategy === 'pin') {
188
197
  return newVersion;
@@ -330,6 +339,7 @@ exports.api = {
330
339
  getNewValue,
331
340
  sortVersions,
332
341
  subset,
342
+ intersects,
333
343
  };
334
344
  exports.default = exports.api;
335
345
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/composer/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport semver from 'semver';\nimport { parseRange } from 'semver-utils';\nimport { logger } from '../../../logger';\nimport type { RangeStrategy } from '../../../types/versioning';\nimport { regEx } from '../../../util/regex';\nimport { api as npm } from '../npm';\nimport type { NewValueConfig, VersioningApi } from '../types';\n\nexport const id = 'composer';\nexport const displayName = 'Composer';\nexport const urls = [\n 'https://getcomposer.org/doc/articles/versions.md',\n 'https://packagist.org/packages/composer/semver',\n 'https://madewithlove.be/tilde-and-caret-constraints/',\n 'https://semver.mwl.be',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'pin',\n 'replace',\n 'update-lockfile',\n];\n\nfunction getVersionParts(input: string): [string, string] {\n const versionParts = input.split('-');\n if (versionParts.length === 1) {\n return [input, ''];\n }\n\n return [versionParts[0], '-' + versionParts[1]];\n}\n\nfunction padZeroes(input: string): string {\n const [output, stability] = getVersionParts(input);\n\n const sections = output.split('.');\n while (sections.length < 3) {\n sections.push('0');\n }\n return sections.join('.') + stability;\n}\n\nfunction convertStabilityModifier(input: string): string {\n // Handle stability modifiers.\n const versionParts = input.split('@');\n if (versionParts.length === 1) {\n return input;\n }\n\n // 1.0@beta2 to 1.0-beta.2\n const stability = versionParts[1].replace(\n regEx(/(?:^|\\s)(beta|alpha|rc)([1-9][0-9]*)(?: |$)/gi),\n '$1.$2',\n );\n\n // If there is a stability part, npm semver expects the version\n // to be full\n return padZeroes(versionParts[0]) + '-' + stability;\n}\n\nfunction normalizeVersion(input: string): string {\n let output = input;\n output = output.replace(regEx(/(^|>|>=|\\^|~)v/i), '$1');\n return convertStabilityModifier(output);\n}\n\n/**\n * @param versions Version list in any format, it recognizes the specific patch format x.x.x-pXX\n * @param range Range in composer format\n * @param minMode If true, it will calculate minSatisfyingVersion, if false, it calculates the maxSatisfyingVersion\n * @returns min or max satisfyingVersion from the input\n */\nfunction calculateSatisfyingVersionIntenal(\n versions: string[],\n range: string,\n minMode: boolean,\n): string | null {\n // Because composer -p versions are considered stable, we have to remove the suffix for the npm.XXX functions.\n const versionsMapped = versions.map((x) => {\n return {\n origianl: x,\n cleaned: removeComposerSpecificPatchPart(x),\n npmVariant: composer2npm(removeComposerSpecificPatchPart(x)[0]),\n };\n });\n\n const npmVersions = versionsMapped.map((x) => x.npmVariant);\n const npmVersion = minMode\n ? npm.minSatisfyingVersion(npmVersions, composer2npm(range))\n : npm.getSatisfyingVersion(npmVersions, composer2npm(range));\n\n if (!npmVersion) {\n return null;\n }\n\n // After we find the npm versions, we select from them back in the mapping the possible patches.\n const candidates = versionsMapped\n .filter((x) => x.npmVariant === npmVersion)\n .sort((a, b) => (minMode ? 1 : -1) * sortVersions(a.origianl, b.origianl));\n\n return candidates[0].origianl;\n}\n\n/**\n * @param intput Version in any format, it recognizes the specific patch format x.x.x-pXX\n * @returns If input contains the specific patch, it returns the input with removed the patch and true, otherwise it retunrs the same string and false.\n */\nfunction removeComposerSpecificPatchPart(input: string): [string, boolean] {\n // the regex is based on the original from composer implementation https://github.com/composer/semver/blob/fa1ec24f0ab1efe642671ec15c51a3ab879f59bf/src/VersionParser.php#L137\n const pattern = /^v?\\d+(\\.\\d+(\\.\\d+(\\.\\d+)?)?)?(?<suffix>-p[1-9]\\d*)$/gi;\n const match = pattern.exec(input);\n\n return match\n ? [input.replace(match.groups!.suffix, ''), true]\n : [input, false];\n}\n\nfunction composer2npm(input: string): string {\n return input\n .split(regEx(/\\s*\\|\\|?\\s*/g))\n .map((part): string => {\n const cleanInput = normalizeVersion(part);\n if (npm.isVersion(cleanInput)) {\n return cleanInput;\n }\n if (npm.isVersion(padZeroes(cleanInput))) {\n return padZeroes(cleanInput);\n }\n const [versionId, stability] = getVersionParts(cleanInput);\n let output = versionId;\n\n // ~4 to ^4 and ~4.1 to ^4.1\n output = output.replace(\n regEx(/(?:^|\\s)~([1-9][0-9]*(?:\\.[0-9]*)?)(?: |$)/g),\n '^$1',\n );\n // ~0.4 to >=0.4 <1\n output = output.replace(\n regEx(/(?:^|\\s)~(0\\.[1-9][0-9]*)(?: |$)/g),\n '>=$1 <1',\n );\n\n // add extra digits to <8-DEV and <8.0-DEV\n output = output\n .replace(regEx(/^(<\\d+(\\.\\d+)?)$/g), '$1.0')\n .replace(regEx(/^(<\\d+(\\.\\d+)?)$/g), '$1.0');\n\n return output + stability;\n })\n .map((part) => part.replace(/([a-z])([0-9])/gi, '$1.$2'))\n .join(' || ');\n}\n\nfunction equals(a: string, b: string): boolean {\n return npm.equals(composer2npm(a), composer2npm(b));\n}\n\nfunction getMajor(version: string): number | null {\n const semverVersion = semver.coerce(composer2npm(version));\n return semverVersion ? npm.getMajor(semverVersion) : null;\n}\n\nfunction getMinor(version: string): number | null {\n const semverVersion = semver.coerce(composer2npm(version));\n return semverVersion ? npm.getMinor(semverVersion) : null;\n}\n\nfunction getPatch(version: string): number | null {\n const semverVersion = semver.coerce(composer2npm(version));\n\n // This returns only the numbers without the optional `-pXX` patch version supported by composer. Fixing that would require a bigger\n // refactoring, because the API supports only numbers.\n return semverVersion ? npm.getPatch(semverVersion) : null;\n}\n\nfunction isGreaterThan(a: string, b: string): boolean {\n return sortVersions(a, b) === 1;\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n return !!npm.isLessThanRange?.(composer2npm(version), composer2npm(range));\n}\n\nfunction isSingleVersion(input: string): boolean {\n return !!input && npm.isSingleVersion(composer2npm(input));\n}\n\nfunction isStable(version: string): boolean {\n if (version) {\n // Composer considers patches `-pXX` as stable: https://github.com/composer/semver/blob/fa1ec24f0ab1efe642671ec15c51a3ab879f59bf/src/VersionParser.php#L568 but npm not.\n // In order to be able to use the standard npm.isStable function, we remove the potential patch version for the check.\n const [withoutPatch] = removeComposerSpecificPatchPart(version);\n return npm.isStable(composer2npm(withoutPatch));\n }\n\n return false;\n}\n\nexport function isValid(input: string): boolean {\n return !!input && npm.isValid(composer2npm(input));\n}\n\nexport function isVersion(input: string): boolean {\n return !!input && npm.isVersion(composer2npm(input));\n}\n\nfunction matches(version: string, range: string): boolean {\n return npm.matches(composer2npm(version), composer2npm(range));\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return calculateSatisfyingVersionIntenal(versions, range, false);\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return calculateSatisfyingVersionIntenal(versions, range, true);\n}\n\nfunction subset(subRange: string, superRange: string): boolean | undefined {\n try {\n return npm.subset!(composer2npm(subRange), composer2npm(superRange));\n } catch (err) {\n logger.trace({ err }, 'composer.subset error');\n return false;\n }\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n}: NewValueConfig): string | null {\n if (rangeStrategy === 'pin') {\n return newVersion;\n }\n if (rangeStrategy === 'update-lockfile') {\n if (matches(newVersion, currentValue)) {\n return currentValue;\n }\n return getNewValue({\n currentValue,\n rangeStrategy: 'replace',\n currentVersion,\n newVersion,\n });\n }\n const currentMajor = currentVersion ? getMajor(currentVersion) : null;\n const toMajor = getMajor(newVersion);\n const toMinor = getMinor(newVersion);\n let newValue: string | null = null;\n if (isVersion(currentValue)) {\n newValue = newVersion;\n } else if (regEx(/^[~^](0\\.[1-9][0-9]*)$/).test(currentValue)) {\n const operator = currentValue.substring(0, 1);\n // handle ~0.4 case first\n if (toMajor === 0) {\n // TODO: types (#22198)\n newValue = `${operator}0.${toMinor!}`;\n } else {\n // TODO: types (#22198)\n newValue = `${operator}${toMajor!}.0`;\n }\n } else if (regEx(/^[~^]([0-9]*)$/).test(currentValue)) {\n // handle ~4 case\n const operator = currentValue.substring(0, 1);\n // TODO: types (#22198)\n newValue = `${operator}${toMajor!}`;\n } else if (\n toMajor &&\n regEx(/^[~^]([0-9]*(?:\\.[0-9]*)?)$/).test(currentValue)\n ) {\n const operator = currentValue.substring(0, 1);\n if (rangeStrategy === 'bump') {\n newValue = `${operator}${newVersion}`;\n } else if (\n (is.number(currentMajor) && toMajor > currentMajor) ||\n !toMinor\n ) {\n // handle ~4.1 case\n newValue = `${operator}${toMajor}.0`;\n } else {\n newValue = `${operator}${toMajor}.${toMinor}`;\n }\n } else if (\n currentVersion &&\n npm.isVersion(padZeroes(normalizeVersion(newVersion))) &&\n npm.isValid(normalizeVersion(currentValue)) &&\n composer2npm(currentValue) === normalizeVersion(currentValue)\n ) {\n newValue = npm.getNewValue({\n currentValue: normalizeVersion(currentValue),\n rangeStrategy,\n currentVersion: padZeroes(normalizeVersion(currentVersion)),\n newVersion: padZeroes(normalizeVersion(newVersion)),\n });\n }\n\n if (rangeStrategy === 'widen' && matches(newVersion, currentValue)) {\n newValue = currentValue;\n } else {\n const hasOr = currentValue.includes(' || ');\n if (hasOr || rangeStrategy === 'widen') {\n const splitValues = currentValue.split('||');\n const lastValue = splitValues[splitValues.length - 1];\n const replacementValue = getNewValue({\n currentValue: lastValue.trim(),\n rangeStrategy: 'replace',\n currentVersion,\n newVersion,\n });\n if (rangeStrategy === 'replace') {\n newValue = replacementValue;\n } else if (replacementValue) {\n const parsedRange = parseRange(replacementValue);\n const element = parsedRange[parsedRange.length - 1];\n if (element.operator?.startsWith('<')) {\n const splitCurrent = currentValue.split(element.operator);\n splitCurrent.pop();\n newValue = splitCurrent.join(element.operator) + replacementValue;\n } else {\n newValue = currentValue + ' || ' + replacementValue;\n }\n }\n }\n }\n\n if (!newValue) {\n logger.warn(\n { currentValue, rangeStrategy, currentVersion, newVersion },\n 'Unsupported composer value',\n );\n newValue = newVersion;\n }\n if (currentValue.split('.')[0].includes('v')) {\n newValue = newValue.replace(regEx(/([0-9])/), 'v$1');\n }\n\n // Preserve original min-stability specifier\n if (currentValue.includes('@')) {\n newValue += '@' + currentValue.split('@')[1];\n }\n\n return newValue;\n}\n\nfunction sortVersions(a: string, b: string): number {\n const [aWithoutPatch, aContainsPatch] = removeComposerSpecificPatchPart(a);\n const [bWithoutPatch, bContainsPatch] = removeComposerSpecificPatchPart(b);\n\n if (aContainsPatch === bContainsPatch) {\n // If both [a and b] contain patch version or both [a and b] do not contain patch version, then npm comparison deliveres correct results\n return npm.sortVersions(composer2npm(a), composer2npm(b));\n } else if (\n npm.equals(composer2npm(aWithoutPatch), composer2npm(bWithoutPatch))\n ) {\n // If only one [a or b] contains patch version and the parts without patch versions are equal, then the version with patch is greater (this is the case where npm comparison fails)\n return aContainsPatch ? 1 : -1;\n } else {\n // All other cases can be compared correctly by npm\n return npm.sortVersions(composer2npm(a), composer2npm(b));\n }\n}\n\nfunction isCompatible(version: string): boolean {\n return isVersion(version);\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n subset,\n};\nexport default api;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/composer/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport semver from 'semver';\nimport { parseRange } from 'semver-utils';\nimport { logger } from '../../../logger';\nimport type { RangeStrategy } from '../../../types/versioning';\nimport { regEx } from '../../../util/regex';\nimport { api as npm } from '../npm';\nimport type { NewValueConfig, VersioningApi } from '../types';\n\nexport const id = 'composer';\nexport const displayName = 'Composer';\nexport const urls = [\n 'https://getcomposer.org/doc/articles/versions.md',\n 'https://packagist.org/packages/composer/semver',\n 'https://madewithlove.be/tilde-and-caret-constraints/',\n 'https://semver.mwl.be',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'pin',\n 'replace',\n 'update-lockfile',\n];\n\nfunction getVersionParts(input: string): [string, string] {\n const versionParts = input.split('-');\n if (versionParts.length === 1) {\n return [input, ''];\n }\n\n return [versionParts[0], '-' + versionParts[1]];\n}\n\nfunction padZeroes(input: string): string {\n const [output, stability] = getVersionParts(input);\n\n const sections = output.split('.');\n while (sections.length < 3) {\n sections.push('0');\n }\n return sections.join('.') + stability;\n}\n\nfunction convertStabilityModifier(input: string): string {\n // Handle stability modifiers.\n const versionParts = input.split('@');\n if (versionParts.length === 1) {\n return input;\n }\n\n // 1.0@beta2 to 1.0-beta.2\n const stability = versionParts[1].replace(\n regEx(/(?:^|\\s)(beta|alpha|rc)([1-9][0-9]*)(?: |$)/gi),\n '$1.$2',\n );\n\n // If there is a stability part, npm semver expects the version\n // to be full\n return padZeroes(versionParts[0]) + '-' + stability;\n}\n\nfunction normalizeVersion(input: string): string {\n let output = input;\n output = output.replace(regEx(/(^|>|>=|\\^|~)v/i), '$1');\n return convertStabilityModifier(output);\n}\n\n/**\n * @param versions Version list in any format, it recognizes the specific patch format x.x.x-pXX\n * @param range Range in composer format\n * @param minMode If true, it will calculate minSatisfyingVersion, if false, it calculates the maxSatisfyingVersion\n * @returns min or max satisfyingVersion from the input\n */\nfunction calculateSatisfyingVersionIntenal(\n versions: string[],\n range: string,\n minMode: boolean,\n): string | null {\n // Because composer -p versions are considered stable, we have to remove the suffix for the npm.XXX functions.\n const versionsMapped = versions.map((x) => {\n return {\n origianl: x,\n cleaned: removeComposerSpecificPatchPart(x),\n npmVariant: composer2npm(removeComposerSpecificPatchPart(x)[0]),\n };\n });\n\n const npmVersions = versionsMapped.map((x) => x.npmVariant);\n const npmVersion = minMode\n ? npm.minSatisfyingVersion(npmVersions, composer2npm(range))\n : npm.getSatisfyingVersion(npmVersions, composer2npm(range));\n\n if (!npmVersion) {\n return null;\n }\n\n // After we find the npm versions, we select from them back in the mapping the possible patches.\n const candidates = versionsMapped\n .filter((x) => x.npmVariant === npmVersion)\n .sort((a, b) => (minMode ? 1 : -1) * sortVersions(a.origianl, b.origianl));\n\n return candidates[0].origianl;\n}\n\n/**\n * @param intput Version in any format, it recognizes the specific patch format x.x.x-pXX\n * @returns If input contains the specific patch, it returns the input with removed the patch and true, otherwise it retunrs the same string and false.\n */\nfunction removeComposerSpecificPatchPart(input: string): [string, boolean] {\n // the regex is based on the original from composer implementation https://github.com/composer/semver/blob/fa1ec24f0ab1efe642671ec15c51a3ab879f59bf/src/VersionParser.php#L137\n const pattern = /^v?\\d+(\\.\\d+(\\.\\d+(\\.\\d+)?)?)?(?<suffix>-p[1-9]\\d*)$/gi;\n const match = pattern.exec(input);\n\n return match\n ? [input.replace(match.groups!.suffix, ''), true]\n : [input, false];\n}\n\nfunction composer2npm(input: string): string {\n return input\n .split(regEx(/\\s*\\|\\|?\\s*/g))\n .map((part): string => {\n const cleanInput = normalizeVersion(part);\n if (npm.isVersion(cleanInput)) {\n return cleanInput;\n }\n if (npm.isVersion(padZeroes(cleanInput))) {\n return padZeroes(cleanInput);\n }\n const [versionId, stability] = getVersionParts(cleanInput);\n let output = versionId;\n\n // ~4 to ^4 and ~4.1 to ^4.1\n output = output.replace(\n regEx(/(?:^|\\s)~([1-9][0-9]*(?:\\.[0-9]*)?)(?: |$)/g),\n '^$1',\n );\n // ~0.4 to >=0.4 <1\n output = output.replace(\n regEx(/(?:^|\\s)~(0\\.[1-9][0-9]*)(?: |$)/g),\n '>=$1 <1',\n );\n\n // add extra digits to <8-DEV and <8.0-DEV\n output = output\n .replace(regEx(/^(<\\d+(\\.\\d+)?)$/g), '$1.0')\n .replace(regEx(/^(<\\d+(\\.\\d+)?)$/g), '$1.0');\n\n return output + stability;\n })\n .map((part) => part.replace(/([a-z])([0-9])/gi, '$1.$2'))\n .join(' || ');\n}\n\nfunction equals(a: string, b: string): boolean {\n return npm.equals(composer2npm(a), composer2npm(b));\n}\n\nfunction getMajor(version: string): number | null {\n const semverVersion = semver.coerce(composer2npm(version));\n return semverVersion ? npm.getMajor(semverVersion) : null;\n}\n\nfunction getMinor(version: string): number | null {\n const semverVersion = semver.coerce(composer2npm(version));\n return semverVersion ? npm.getMinor(semverVersion) : null;\n}\n\nfunction getPatch(version: string): number | null {\n const semverVersion = semver.coerce(composer2npm(version));\n\n // This returns only the numbers without the optional `-pXX` patch version supported by composer. Fixing that would require a bigger\n // refactoring, because the API supports only numbers.\n return semverVersion ? npm.getPatch(semverVersion) : null;\n}\n\nfunction isGreaterThan(a: string, b: string): boolean {\n return sortVersions(a, b) === 1;\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n return !!npm.isLessThanRange?.(composer2npm(version), composer2npm(range));\n}\n\nfunction isSingleVersion(input: string): boolean {\n return !!input && npm.isSingleVersion(composer2npm(input));\n}\n\nfunction isStable(version: string): boolean {\n if (version) {\n // Composer considers patches `-pXX` as stable: https://github.com/composer/semver/blob/fa1ec24f0ab1efe642671ec15c51a3ab879f59bf/src/VersionParser.php#L568 but npm not.\n // In order to be able to use the standard npm.isStable function, we remove the potential patch version for the check.\n const [withoutPatch] = removeComposerSpecificPatchPart(version);\n return npm.isStable(composer2npm(withoutPatch));\n }\n\n return false;\n}\n\nexport function isValid(input: string): boolean {\n return !!input && npm.isValid(composer2npm(input));\n}\n\nexport function isVersion(input: string): boolean {\n return !!input && npm.isVersion(composer2npm(input));\n}\n\nfunction matches(version: string, range: string): boolean {\n return npm.matches(composer2npm(version), composer2npm(range));\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return calculateSatisfyingVersionIntenal(versions, range, false);\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return calculateSatisfyingVersionIntenal(versions, range, true);\n}\n\nfunction subset(subRange: string, superRange: string): boolean | undefined {\n try {\n return npm.subset!(composer2npm(subRange), composer2npm(superRange));\n } catch (err) {\n logger.trace({ err }, 'composer.subset error');\n return false;\n }\n}\n\nfunction intersects(subRange: string, superRange: string): boolean {\n try {\n return npm.intersects!(composer2npm(subRange), composer2npm(superRange));\n } catch (err) {\n logger.trace({ err }, 'composer.intersects error');\n return false;\n }\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n}: NewValueConfig): string | null {\n if (rangeStrategy === 'pin') {\n return newVersion;\n }\n if (rangeStrategy === 'update-lockfile') {\n if (matches(newVersion, currentValue)) {\n return currentValue;\n }\n return getNewValue({\n currentValue,\n rangeStrategy: 'replace',\n currentVersion,\n newVersion,\n });\n }\n const currentMajor = currentVersion ? getMajor(currentVersion) : null;\n const toMajor = getMajor(newVersion);\n const toMinor = getMinor(newVersion);\n let newValue: string | null = null;\n if (isVersion(currentValue)) {\n newValue = newVersion;\n } else if (regEx(/^[~^](0\\.[1-9][0-9]*)$/).test(currentValue)) {\n const operator = currentValue.substring(0, 1);\n // handle ~0.4 case first\n if (toMajor === 0) {\n // TODO: types (#22198)\n newValue = `${operator}0.${toMinor!}`;\n } else {\n // TODO: types (#22198)\n newValue = `${operator}${toMajor!}.0`;\n }\n } else if (regEx(/^[~^]([0-9]*)$/).test(currentValue)) {\n // handle ~4 case\n const operator = currentValue.substring(0, 1);\n // TODO: types (#22198)\n newValue = `${operator}${toMajor!}`;\n } else if (\n toMajor &&\n regEx(/^[~^]([0-9]*(?:\\.[0-9]*)?)$/).test(currentValue)\n ) {\n const operator = currentValue.substring(0, 1);\n if (rangeStrategy === 'bump') {\n newValue = `${operator}${newVersion}`;\n } else if (\n (is.number(currentMajor) && toMajor > currentMajor) ||\n !toMinor\n ) {\n // handle ~4.1 case\n newValue = `${operator}${toMajor}.0`;\n } else {\n newValue = `${operator}${toMajor}.${toMinor}`;\n }\n } else if (\n currentVersion &&\n npm.isVersion(padZeroes(normalizeVersion(newVersion))) &&\n npm.isValid(normalizeVersion(currentValue)) &&\n composer2npm(currentValue) === normalizeVersion(currentValue)\n ) {\n newValue = npm.getNewValue({\n currentValue: normalizeVersion(currentValue),\n rangeStrategy,\n currentVersion: padZeroes(normalizeVersion(currentVersion)),\n newVersion: padZeroes(normalizeVersion(newVersion)),\n });\n }\n\n if (rangeStrategy === 'widen' && matches(newVersion, currentValue)) {\n newValue = currentValue;\n } else {\n const hasOr = currentValue.includes(' || ');\n if (hasOr || rangeStrategy === 'widen') {\n const splitValues = currentValue.split('||');\n const lastValue = splitValues[splitValues.length - 1];\n const replacementValue = getNewValue({\n currentValue: lastValue.trim(),\n rangeStrategy: 'replace',\n currentVersion,\n newVersion,\n });\n if (rangeStrategy === 'replace') {\n newValue = replacementValue;\n } else if (replacementValue) {\n const parsedRange = parseRange(replacementValue);\n const element = parsedRange[parsedRange.length - 1];\n if (element.operator?.startsWith('<')) {\n const splitCurrent = currentValue.split(element.operator);\n splitCurrent.pop();\n newValue = splitCurrent.join(element.operator) + replacementValue;\n } else {\n newValue = currentValue + ' || ' + replacementValue;\n }\n }\n }\n }\n\n if (!newValue) {\n logger.warn(\n { currentValue, rangeStrategy, currentVersion, newVersion },\n 'Unsupported composer value',\n );\n newValue = newVersion;\n }\n if (currentValue.split('.')[0].includes('v')) {\n newValue = newValue.replace(regEx(/([0-9])/), 'v$1');\n }\n\n // Preserve original min-stability specifier\n if (currentValue.includes('@')) {\n newValue += '@' + currentValue.split('@')[1];\n }\n\n return newValue;\n}\n\nfunction sortVersions(a: string, b: string): number {\n const [aWithoutPatch, aContainsPatch] = removeComposerSpecificPatchPart(a);\n const [bWithoutPatch, bContainsPatch] = removeComposerSpecificPatchPart(b);\n\n if (aContainsPatch === bContainsPatch) {\n // If both [a and b] contain patch version or both [a and b] do not contain patch version, then npm comparison deliveres correct results\n return npm.sortVersions(composer2npm(a), composer2npm(b));\n } else if (\n npm.equals(composer2npm(aWithoutPatch), composer2npm(bWithoutPatch))\n ) {\n // If only one [a or b] contains patch version and the parts without patch versions are equal, then the version with patch is greater (this is the case where npm comparison fails)\n return aContainsPatch ? 1 : -1;\n } else {\n // All other cases can be compared correctly by npm\n return npm.sortVersions(composer2npm(a), composer2npm(b));\n }\n}\n\nfunction isCompatible(version: string): boolean {\n return isVersion(version);\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n subset,\n intersects,\n};\nexport default api;\n"]}
@@ -20,7 +20,7 @@ exports.supportedRangeStrategies = [
20
20
  'pin',
21
21
  'replace',
22
22
  ];
23
- const { compare: sortVersions, maxSatisfying: getSatisfyingVersion, minSatisfying: minSatisfyingVersion, major: getMajor, minor: getMinor, patch: getPatch, satisfies: matches, valid, validRange, ltr: isLessThanRange, gt: isGreaterThan, eq: equals, subset, } = semver_1.default;
23
+ const { compare: sortVersions, maxSatisfying: getSatisfyingVersion, minSatisfying: minSatisfyingVersion, major: getMajor, minor: getMinor, patch: getPatch, satisfies: matches, valid, validRange, ltr: isLessThanRange, gt: isGreaterThan, eq: equals, subset, intersects, } = semver_1.default;
24
24
  // If this is left as an alias, inputs like "17.04.0" throw errors
25
25
  const isValid = (input) => !!validRange(input);
26
26
  exports.isValid = isValid;
@@ -48,6 +48,7 @@ exports.api = {
48
48
  minSatisfyingVersion,
49
49
  sortVersions,
50
50
  subset,
51
+ intersects,
51
52
  };
52
53
  exports.default = exports.api;
53
54
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/npm/index.ts"],"names":[],"mappings":";;;;AAAA,4DAA4B;AAC5B,0EAAmC;AAGnC,mCAAsC;AAEzB,QAAA,EAAE,GAAG,KAAK,CAAC;AACX,QAAA,WAAW,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,GAAG;IAClB,qBAAqB;IACrB,sCAAsC;IACtC,kDAAkD;IAClD,2BAA2B;CAC5B,CAAC;AACW,QAAA,cAAc,GAAG,IAAI,CAAC;AACtB,QAAA,wBAAwB,GAAoB;IACvD,MAAM;IACN,OAAO;IACP,KAAK;IACL,SAAS;CACV,CAAC;AAEF,MAAM,EACJ,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,oBAAoB,EACnC,aAAa,EAAE,oBAAoB,EACnC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,OAAO,EAClB,KAAK,EACL,UAAU,EACV,GAAG,EAAE,eAAe,EACpB,EAAE,EAAE,aAAa,EACjB,EAAE,EAAE,MAAM,EACV,MAAM,GACP,GAAG,gBAAM,CAAC;AAEX,kEAAkE;AAC3D,MAAM,OAAO,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAA1D,QAAA,OAAO,WAAmD;AAChE,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAAvD,QAAA,SAAS,aAA8C;AAEpE,SAAS,eAAe,CAAC,UAAkB;IACzC,OAAO,CACL,IAAA,iBAAS,EAAC,UAAU,CAAC;QACrB,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,IAAA,iBAAS,EAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAC3E,CAAC;AACJ,CAAC;AAEY,QAAA,GAAG,GAAkB;IAChC,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,WAAW,EAAX,mBAAW;IACX,QAAQ;IACR,YAAY,EAAE,iBAAS;IACvB,aAAa;IACb,eAAe;IACf,eAAe;IACf,QAAQ,EAAE,uBAAM,CAAC,EAAE;IACnB,OAAO,EAAP,eAAO;IACP,SAAS,EAAT,iBAAS;IACT,OAAO;IACP,oBAAoB;IACpB,oBAAoB;IACpB,YAAY;IACZ,MAAM;CACP,CAAC;AAEF,kBAAe,WAAG,CAAC","sourcesContent":["import semver from 'semver';\nimport stable from 'semver-stable';\nimport type { RangeStrategy } from '../../../types/versioning';\nimport type { VersioningApi } from '../types';\nimport { getNewValue } from './range';\n\nexport const id = 'npm';\nexport const displayName = 'npm';\nexport const urls = [\n 'https://semver.org/',\n 'https://www.npmjs.com/package/semver',\n 'https://docs.npmjs.com/about-semantic-versioning',\n 'https://semver.npmjs.com/',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'pin',\n 'replace',\n];\n\nconst {\n compare: sortVersions,\n maxSatisfying: getSatisfyingVersion,\n minSatisfying: minSatisfyingVersion,\n major: getMajor,\n minor: getMinor,\n patch: getPatch,\n satisfies: matches,\n valid,\n validRange,\n ltr: isLessThanRange,\n gt: isGreaterThan,\n eq: equals,\n subset,\n} = semver;\n\n// If this is left as an alias, inputs like \"17.04.0\" throw errors\nexport const isValid = (input: string): boolean => !!validRange(input);\nexport const isVersion = (input: string): boolean => !!valid(input);\n\nfunction isSingleVersion(constraint: string): boolean {\n return (\n isVersion(constraint) ||\n (constraint?.startsWith('=') && isVersion(constraint.substring(1).trim()))\n );\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getNewValue,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable: stable.is,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n sortVersions,\n subset,\n};\n\nexport default api;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/npm/index.ts"],"names":[],"mappings":";;;;AAAA,4DAA4B;AAC5B,0EAAmC;AAGnC,mCAAsC;AAEzB,QAAA,EAAE,GAAG,KAAK,CAAC;AACX,QAAA,WAAW,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,GAAG;IAClB,qBAAqB;IACrB,sCAAsC;IACtC,kDAAkD;IAClD,2BAA2B;CAC5B,CAAC;AACW,QAAA,cAAc,GAAG,IAAI,CAAC;AACtB,QAAA,wBAAwB,GAAoB;IACvD,MAAM;IACN,OAAO;IACP,KAAK;IACL,SAAS;CACV,CAAC;AAEF,MAAM,EACJ,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,oBAAoB,EACnC,aAAa,EAAE,oBAAoB,EACnC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,OAAO,EAClB,KAAK,EACL,UAAU,EACV,GAAG,EAAE,eAAe,EACpB,EAAE,EAAE,aAAa,EACjB,EAAE,EAAE,MAAM,EACV,MAAM,EACN,UAAU,GACX,GAAG,gBAAM,CAAC;AAEX,kEAAkE;AAC3D,MAAM,OAAO,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAA1D,QAAA,OAAO,WAAmD;AAChE,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAAvD,QAAA,SAAS,aAA8C;AAEpE,SAAS,eAAe,CAAC,UAAkB;IACzC,OAAO,CACL,IAAA,iBAAS,EAAC,UAAU,CAAC;QACrB,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,IAAA,iBAAS,EAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAC3E,CAAC;AACJ,CAAC;AAEY,QAAA,GAAG,GAAkB;IAChC,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,WAAW,EAAX,mBAAW;IACX,QAAQ;IACR,YAAY,EAAE,iBAAS;IACvB,aAAa;IACb,eAAe;IACf,eAAe;IACf,QAAQ,EAAE,uBAAM,CAAC,EAAE;IACnB,OAAO,EAAP,eAAO;IACP,SAAS,EAAT,iBAAS;IACT,OAAO;IACP,oBAAoB;IACpB,oBAAoB;IACpB,YAAY;IACZ,MAAM;IACN,UAAU;CACX,CAAC;AAEF,kBAAe,WAAG,CAAC","sourcesContent":["import semver from 'semver';\nimport stable from 'semver-stable';\nimport type { RangeStrategy } from '../../../types/versioning';\nimport type { VersioningApi } from '../types';\nimport { getNewValue } from './range';\n\nexport const id = 'npm';\nexport const displayName = 'npm';\nexport const urls = [\n 'https://semver.org/',\n 'https://www.npmjs.com/package/semver',\n 'https://docs.npmjs.com/about-semantic-versioning',\n 'https://semver.npmjs.com/',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'pin',\n 'replace',\n];\n\nconst {\n compare: sortVersions,\n maxSatisfying: getSatisfyingVersion,\n minSatisfying: minSatisfyingVersion,\n major: getMajor,\n minor: getMinor,\n patch: getPatch,\n satisfies: matches,\n valid,\n validRange,\n ltr: isLessThanRange,\n gt: isGreaterThan,\n eq: equals,\n subset,\n intersects,\n} = semver;\n\n// If this is left as an alias, inputs like \"17.04.0\" throw errors\nexport const isValid = (input: string): boolean => !!validRange(input);\nexport const isVersion = (input: string): boolean => !!valid(input);\n\nfunction isSingleVersion(constraint: string): boolean {\n return (\n isVersion(constraint) ||\n (constraint?.startsWith('=') && isVersion(constraint.substring(1).trim()))\n );\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getNewValue,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable: stable.is,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n sortVersions,\n subset,\n intersects,\n};\n\nexport default api;\n"]}
@@ -16,7 +16,7 @@ exports.Versioning = zod_1.z
16
16
  logger_1.logger.debug(`Versioning: '${versioningSpec}' not found, falling back to ${defaultVersioning.id}`);
17
17
  return defaultVersioning.api;
18
18
  }
19
- if (is_1.default.function_(versioning)) {
19
+ if (is_1.default.function(versioning)) {
20
20
  const versioningConfig = versioningRest.length
21
21
  ? versioningRest.join(':')
22
22
  : undefined;