renovate 40.0.0-next.40 → 40.0.0-next.41

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 (237) hide show
  1. package/dist/config/options/index.js +13 -0
  2. package/dist/config/options/index.js.map +1 -1
  3. package/dist/config/presets/common.js +1 -0
  4. package/dist/config/presets/common.js.map +1 -1
  5. package/dist/config/presets/internal/custom-managers.js +15 -0
  6. package/dist/config/presets/internal/custom-managers.js.map +1 -1
  7. package/dist/constants/platforms.js +5 -1
  8. package/dist/constants/platforms.js.map +1 -1
  9. package/dist/data/monorepo.json +3 -1
  10. package/dist/data-files.generated.js +2 -2
  11. package/dist/data-files.generated.js.map +1 -1
  12. package/dist/instrumentation/index.js +28 -8
  13. package/dist/instrumentation/index.js.map +1 -1
  14. package/dist/modules/datasource/api.js +2 -0
  15. package/dist/modules/datasource/api.js.map +1 -1
  16. package/dist/modules/datasource/azure-pipelines-tasks/index.js +4 -0
  17. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  18. package/dist/modules/datasource/azure-pipelines-tasks/schema.d.ts +8 -0
  19. package/dist/modules/datasource/azure-pipelines-tasks/schema.js +1 -0
  20. package/dist/modules/datasource/azure-pipelines-tasks/schema.js.map +1 -1
  21. package/dist/modules/datasource/bazel/index.js +18 -1
  22. package/dist/modules/datasource/bazel/index.js.map +1 -1
  23. package/dist/modules/datasource/bazel/schema.d.ts +1 -0
  24. package/dist/modules/datasource/bazel/schema.js.map +1 -1
  25. package/dist/modules/datasource/bitbucket-server-tags/index.d.ts +19 -0
  26. package/dist/modules/datasource/bitbucket-server-tags/index.js +133 -0
  27. package/dist/modules/datasource/bitbucket-server-tags/index.js.map +1 -0
  28. package/dist/modules/datasource/bitbucket-server-tags/schema.d.ts +28 -0
  29. package/dist/modules/datasource/bitbucket-server-tags/schema.js +13 -0
  30. package/dist/modules/datasource/bitbucket-server-tags/schema.js.map +1 -0
  31. package/dist/modules/datasource/conda/prefix-dev.js +1 -3
  32. package/dist/modules/datasource/conda/prefix-dev.js.map +1 -1
  33. package/dist/modules/datasource/cpan/index.js +1 -3
  34. package/dist/modules/datasource/cpan/index.js.map +1 -1
  35. package/dist/modules/datasource/custom/schema.d.ts +3 -3
  36. package/dist/modules/datasource/deb/index.d.ts +4 -5
  37. package/dist/modules/datasource/deb/index.js +8 -9
  38. package/dist/modules/datasource/deb/index.js.map +1 -1
  39. package/dist/modules/datasource/deb/url.d.ts +3 -3
  40. package/dist/modules/datasource/deb/url.js +17 -13
  41. package/dist/modules/datasource/deb/url.js.map +1 -1
  42. package/dist/modules/datasource/docker/schema.d.ts +72 -96
  43. package/dist/modules/datasource/github-runners/index.js +2 -2
  44. package/dist/modules/datasource/github-runners/index.js.map +1 -1
  45. package/dist/modules/datasource/metadata.js +9 -1
  46. package/dist/modules/datasource/metadata.js.map +1 -1
  47. package/dist/modules/datasource/npm/get.d.ts +0 -1
  48. package/dist/modules/datasource/npm/get.js +14 -68
  49. package/dist/modules/datasource/npm/get.js.map +1 -1
  50. package/dist/modules/datasource/npm/types.d.ts +0 -8
  51. package/dist/modules/datasource/npm/types.js.map +1 -1
  52. package/dist/modules/datasource/packagist/schema.d.ts +7 -7
  53. package/dist/modules/datasource/types.d.ts +1 -0
  54. package/dist/modules/datasource/types.js.map +1 -1
  55. package/dist/modules/manager/argocd/schema.d.ts +12 -12
  56. package/dist/modules/manager/bazel-module/parser/maven.d.ts +6 -52
  57. package/dist/modules/manager/bazel-module/parser/oci.d.ts +3 -26
  58. package/dist/modules/manager/bazel-module/rules.d.ts +15 -125
  59. package/dist/modules/manager/bun/extract.d.ts +1 -0
  60. package/dist/modules/manager/bun/extract.js +53 -27
  61. package/dist/modules/manager/bun/extract.js.map +1 -1
  62. package/dist/modules/manager/bun/index.js +1 -1
  63. package/dist/modules/manager/bun/index.js.map +1 -1
  64. package/dist/modules/manager/bun/utils.d.ts +2 -0
  65. package/dist/modules/manager/bun/utils.js +22 -0
  66. package/dist/modules/manager/bun/utils.js.map +1 -0
  67. package/dist/modules/manager/cargo/schema.d.ts +3 -3
  68. package/dist/modules/manager/circleci/extract.js +21 -30
  69. package/dist/modules/manager/circleci/extract.js.map +1 -1
  70. package/dist/modules/manager/circleci/schema.d.ts +33 -144
  71. package/dist/modules/manager/circleci/schema.js +21 -17
  72. package/dist/modules/manager/circleci/schema.js.map +1 -1
  73. package/dist/modules/manager/composer/schema.d.ts +6 -8
  74. package/dist/modules/manager/conan/artifacts.d.ts +2 -0
  75. package/dist/modules/manager/conan/artifacts.js +76 -0
  76. package/dist/modules/manager/conan/artifacts.js.map +1 -0
  77. package/dist/modules/manager/conan/index.d.ts +2 -0
  78. package/dist/modules/manager/conan/index.js +4 -1
  79. package/dist/modules/manager/conan/index.js.map +1 -1
  80. package/dist/modules/manager/devbox/artifacts.js +7 -0
  81. package/dist/modules/manager/devbox/artifacts.js.map +1 -1
  82. package/dist/modules/manager/dockerfile/extract.js +2 -6
  83. package/dist/modules/manager/dockerfile/extract.js.map +1 -1
  84. package/dist/modules/manager/fingerprint.generated.js +10 -10
  85. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  86. package/dist/modules/manager/flux/schema.d.ts +36 -60
  87. package/dist/modules/manager/gomod/artifacts-extra.js +12 -4
  88. package/dist/modules/manager/gomod/artifacts-extra.js.map +1 -1
  89. package/dist/modules/manager/gomod/update.js +3 -1
  90. package/dist/modules/manager/gomod/update.js.map +1 -1
  91. package/dist/modules/manager/gradle/extract.js +8 -13
  92. package/dist/modules/manager/gradle/extract.js.map +1 -1
  93. package/dist/modules/manager/gradle/parser/handlers.js +8 -0
  94. package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
  95. package/dist/modules/manager/gradle/parser/registry-urls.js +36 -10
  96. package/dist/modules/manager/gradle/parser/registry-urls.js.map +1 -1
  97. package/dist/modules/manager/gradle/types.d.ts +1 -0
  98. package/dist/modules/manager/gradle/types.js.map +1 -1
  99. package/dist/modules/manager/maven/extract.js +1 -3
  100. package/dist/modules/manager/maven/extract.js.map +1 -1
  101. package/dist/modules/manager/nix/schema.d.ts +14 -14
  102. package/dist/modules/manager/nix/schema.js +1 -0
  103. package/dist/modules/manager/nix/schema.js.map +1 -1
  104. package/dist/modules/manager/npm/extract/common/package-file.js +1 -0
  105. package/dist/modules/manager/npm/extract/common/package-file.js.map +1 -1
  106. package/dist/modules/manager/nuget/extract.js +21 -18
  107. package/dist/modules/manager/nuget/extract.js.map +1 -1
  108. package/dist/modules/manager/pep621/schema.d.ts +292 -5
  109. package/dist/modules/manager/pip_requirements/common.js +2 -6
  110. package/dist/modules/manager/pip_requirements/common.js.map +1 -1
  111. package/dist/modules/manager/pixi/artifacts.js +4 -10
  112. package/dist/modules/manager/pixi/artifacts.js.map +1 -1
  113. package/dist/modules/manager/pixi/extract.d.ts +2 -0
  114. package/dist/modules/manager/pixi/extract.js +81 -3
  115. package/dist/modules/manager/pixi/extract.js.map +1 -1
  116. package/dist/modules/manager/pixi/index.d.ts +0 -1
  117. package/dist/modules/manager/pixi/index.js +1 -3
  118. package/dist/modules/manager/pixi/index.js.map +1 -1
  119. package/dist/modules/manager/pixi/schema.d.ts +394 -3
  120. package/dist/modules/manager/pixi/schema.js +135 -2
  121. package/dist/modules/manager/pixi/schema.js.map +1 -1
  122. package/dist/modules/manager/sveltos/schema.d.ts +18 -30
  123. package/dist/modules/manager/terraform/util.js +1 -3
  124. package/dist/modules/manager/terraform/util.js.map +1 -1
  125. package/dist/modules/manager/vendir/schema.d.ts +3 -3
  126. package/dist/modules/platform/bitbucket/schema.d.ts +3 -3
  127. package/dist/modules/platform/bitbucket-server/schema.d.ts +1 -0
  128. package/dist/modules/platform/bitbucket-server/schema.js +2 -1
  129. package/dist/modules/platform/bitbucket-server/schema.js.map +1 -1
  130. package/dist/modules/platform/gerrit/client.d.ts +0 -3
  131. package/dist/modules/platform/gerrit/client.js +8 -28
  132. package/dist/modules/platform/gerrit/client.js.map +1 -1
  133. package/dist/modules/platform/gerrit/index.js +0 -6
  134. package/dist/modules/platform/gerrit/index.js.map +1 -1
  135. package/dist/modules/platform/gerrit/scm.js +5 -6
  136. package/dist/modules/platform/gerrit/scm.js.map +1 -1
  137. package/dist/modules/platform/gerrit/types.d.ts +1 -4
  138. package/dist/modules/platform/gerrit/types.js.map +1 -1
  139. package/dist/modules/platform/gerrit/utils.d.ts +3 -2
  140. package/dist/modules/platform/gerrit/utils.js +3 -7
  141. package/dist/modules/platform/gerrit/utils.js.map +1 -1
  142. package/dist/modules/platform/gitea/index.js +7 -9
  143. package/dist/modules/platform/gitea/index.js.map +1 -1
  144. package/dist/modules/platform/github/issue.d.ts +6 -6
  145. package/dist/modules/platform/github/schema.d.ts +52 -52
  146. package/dist/modules/platform/gitlab/index.js +2 -6
  147. package/dist/modules/platform/gitlab/index.js.map +1 -1
  148. package/dist/modules/versioning/distro.js +1 -3
  149. package/dist/modules/versioning/distro.js.map +1 -1
  150. package/dist/util/cache/package/types.d.ts +1 -1
  151. package/dist/util/cache/package/types.js.map +1 -1
  152. package/dist/util/cache/repository/impl/base.js +4 -0
  153. package/dist/util/cache/repository/impl/base.js.map +1 -1
  154. package/dist/util/common.d.ts +4 -2
  155. package/dist/util/common.js +17 -3
  156. package/dist/util/common.js.map +1 -1
  157. package/dist/util/exec/containerbase.js +2 -3
  158. package/dist/util/exec/containerbase.js.map +1 -1
  159. package/dist/util/git/auth.js +8 -5
  160. package/dist/util/git/auth.js.map +1 -1
  161. package/dist/util/git/index.js +2 -6
  162. package/dist/util/git/index.js.map +1 -1
  163. package/dist/util/git/private-key.js +1 -3
  164. package/dist/util/git/private-key.js.map +1 -1
  165. package/dist/util/git/types.d.ts +2 -0
  166. package/dist/util/git/types.js.map +1 -1
  167. package/dist/util/git/url.js +1 -1
  168. package/dist/util/git/url.js.map +1 -1
  169. package/dist/util/github/graphql/datasource-fetcher.js +3 -5
  170. package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
  171. package/dist/util/http/bitbucket-server.d.ts +2 -1
  172. package/dist/util/http/bitbucket-server.js +5 -3
  173. package/dist/util/http/bitbucket-server.js.map +1 -1
  174. package/dist/util/http/cache/package-http-cache-provider.d.ts +23 -0
  175. package/dist/util/http/cache/package-http-cache-provider.js +80 -0
  176. package/dist/util/http/cache/package-http-cache-provider.js.map +1 -0
  177. package/dist/util/http/host-rules.js +12 -0
  178. package/dist/util/http/host-rules.js.map +1 -1
  179. package/dist/util/schema-utils.d.ts +1 -0
  180. package/dist/util/schema-utils.js +43 -8
  181. package/dist/util/schema-utils.js.map +1 -1
  182. package/dist/util/string.d.ts +1 -0
  183. package/dist/util/string.js +4 -0
  184. package/dist/util/string.js.map +1 -1
  185. package/dist/util/yaml.js +2 -3
  186. package/dist/util/yaml.js.map +1 -1
  187. package/dist/workers/global/config/parse/index.js +10 -0
  188. package/dist/workers/global/config/parse/index.js.map +1 -1
  189. package/dist/workers/global/index.js +4 -2
  190. package/dist/workers/global/index.js.map +1 -1
  191. package/dist/workers/repository/process/lookup/index.js +2 -0
  192. package/dist/workers/repository/process/lookup/index.js.map +1 -1
  193. package/dist/workers/repository/process/lookup/timestamps.d.ts +18 -0
  194. package/dist/workers/repository/process/lookup/timestamps.js +69 -0
  195. package/dist/workers/repository/process/lookup/timestamps.js.map +1 -0
  196. package/dist/workers/repository/process/lookup/types.d.ts +1 -0
  197. package/dist/workers/repository/process/lookup/types.js.map +1 -1
  198. package/dist/workers/repository/process/lookup/utils.js +20 -9
  199. package/dist/workers/repository/process/lookup/utils.js.map +1 -1
  200. package/dist/workers/repository/process/sort.js +1 -1
  201. package/dist/workers/repository/process/sort.js.map +1 -1
  202. package/dist/workers/repository/reconfigure/utils.d.ts +2 -0
  203. package/dist/workers/repository/reconfigure/utils.js +16 -0
  204. package/dist/workers/repository/reconfigure/utils.js.map +1 -1
  205. package/dist/workers/repository/reconfigure/validate.js +5 -17
  206. package/dist/workers/repository/reconfigure/validate.js.map +1 -1
  207. package/dist/workers/repository/update/branch/auto-replace.js +25 -5
  208. package/dist/workers/repository/update/branch/auto-replace.js.map +1 -1
  209. package/dist/workers/repository/update/branch/commit.js +2 -0
  210. package/dist/workers/repository/update/branch/commit.js.map +1 -1
  211. package/dist/workers/repository/update/pr/body/config-description.js +26 -1
  212. package/dist/workers/repository/update/pr/body/config-description.js.map +1 -1
  213. package/dist/workers/repository/update/pr/body/index.js +21 -14
  214. package/dist/workers/repository/update/pr/body/index.js.map +1 -1
  215. package/dist/workers/repository/update/pr/changelog/api.js +8 -6
  216. package/dist/workers/repository/update/pr/changelog/api.js.map +1 -1
  217. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.d.ts +3 -0
  218. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.js +39 -0
  219. package/dist/workers/repository/update/pr/changelog/bitbucket-server/index.js.map +1 -0
  220. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.d.ts +8 -0
  221. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.js +31 -0
  222. package/dist/workers/repository/update/pr/changelog/bitbucket-server/source.js.map +1 -0
  223. package/dist/workers/repository/update/pr/changelog/release-notes.js +12 -8
  224. package/dist/workers/repository/update/pr/changelog/release-notes.js.map +1 -1
  225. package/dist/workers/repository/update/pr/changelog/source.d.ts +1 -1
  226. package/dist/workers/repository/update/pr/changelog/source.js.map +1 -1
  227. package/dist/workers/repository/update/pr/changelog/types.d.ts +1 -1
  228. package/dist/workers/repository/update/pr/changelog/types.js.map +1 -1
  229. package/dist/workers/repository/update/pr/index.js +2 -4
  230. package/dist/workers/repository/update/pr/index.js.map +1 -1
  231. package/dist/workers/repository/updates/generate.js +2 -0
  232. package/dist/workers/repository/updates/generate.js.map +1 -1
  233. package/package.json +40 -37
  234. package/renovate-schema.json +9 -2
  235. package/dist/modules/manager/pixi/lockfile.d.ts +0 -6
  236. package/dist/modules/manager/pixi/lockfile.js +0 -25
  237. package/dist/modules/manager/pixi/lockfile.js.map +0 -1
@@ -34,9 +34,7 @@ export declare const SveltosHelmSpec: z.ZodObject<{
34
34
  helmCharts?: any[] | undefined;
35
35
  }>;
36
36
  export type SveltosHelmSpec = z.infer<typeof SveltosHelmSpec>;
37
- export declare const ClusterProfile: z.ZodObject<z.objectUtil.extendShape<{
38
- apiVersion: z.ZodString;
39
- kind: z.ZodString;
37
+ export declare const ClusterProfile: z.ZodObject<{
40
38
  metadata: z.ZodObject<{
41
39
  name: z.ZodString;
42
40
  namespace: z.ZodOptional<z.ZodString>;
@@ -47,7 +45,7 @@ export declare const ClusterProfile: z.ZodObject<z.objectUtil.extendShape<{
47
45
  name: string;
48
46
  namespace?: string | undefined;
49
47
  }>;
50
- }, {
48
+ } & {
51
49
  apiVersion: z.ZodString;
52
50
  kind: z.ZodLiteral<"ClusterProfile">;
53
51
  spec: z.ZodObject<{
@@ -67,7 +65,7 @@ export declare const ClusterProfile: z.ZodObject<z.objectUtil.extendShape<{
67
65
  }, {
68
66
  helmCharts?: any[] | undefined;
69
67
  }>;
70
- }>, "strip", z.ZodTypeAny, {
68
+ }, "strip", z.ZodTypeAny, {
71
69
  apiVersion: string;
72
70
  metadata: {
73
71
  name: string;
@@ -93,9 +91,7 @@ export declare const ClusterProfile: z.ZodObject<z.objectUtil.extendShape<{
93
91
  helmCharts?: any[] | undefined;
94
92
  };
95
93
  }>;
96
- export declare const Profile: z.ZodObject<z.objectUtil.extendShape<{
97
- apiVersion: z.ZodString;
98
- kind: z.ZodString;
94
+ export declare const Profile: z.ZodObject<{
99
95
  metadata: z.ZodObject<{
100
96
  name: z.ZodString;
101
97
  namespace: z.ZodOptional<z.ZodString>;
@@ -106,7 +102,7 @@ export declare const Profile: z.ZodObject<z.objectUtil.extendShape<{
106
102
  name: string;
107
103
  namespace?: string | undefined;
108
104
  }>;
109
- }, {
105
+ } & {
110
106
  apiVersion: z.ZodString;
111
107
  kind: z.ZodLiteral<"Profile">;
112
108
  spec: z.ZodObject<{
@@ -126,7 +122,7 @@ export declare const Profile: z.ZodObject<z.objectUtil.extendShape<{
126
122
  }, {
127
123
  helmCharts?: any[] | undefined;
128
124
  }>;
129
- }>, "strip", z.ZodTypeAny, {
125
+ }, "strip", z.ZodTypeAny, {
130
126
  apiVersion: string;
131
127
  metadata: {
132
128
  name: string;
@@ -152,9 +148,7 @@ export declare const Profile: z.ZodObject<z.objectUtil.extendShape<{
152
148
  helmCharts?: any[] | undefined;
153
149
  };
154
150
  }>;
155
- export declare const EventTrigger: z.ZodObject<z.objectUtil.extendShape<{
156
- apiVersion: z.ZodString;
157
- kind: z.ZodString;
151
+ export declare const EventTrigger: z.ZodObject<{
158
152
  metadata: z.ZodObject<{
159
153
  name: z.ZodString;
160
154
  namespace: z.ZodOptional<z.ZodString>;
@@ -165,7 +159,7 @@ export declare const EventTrigger: z.ZodObject<z.objectUtil.extendShape<{
165
159
  name: string;
166
160
  namespace?: string | undefined;
167
161
  }>;
168
- }, {
162
+ } & {
169
163
  apiVersion: z.ZodString;
170
164
  kind: z.ZodLiteral<"EventTrigger">;
171
165
  spec: z.ZodObject<{
@@ -185,7 +179,7 @@ export declare const EventTrigger: z.ZodObject<z.objectUtil.extendShape<{
185
179
  }, {
186
180
  helmCharts?: any[] | undefined;
187
181
  }>;
188
- }>, "strip", z.ZodTypeAny, {
182
+ }, "strip", z.ZodTypeAny, {
189
183
  apiVersion: string;
190
184
  metadata: {
191
185
  name: string;
@@ -211,9 +205,7 @@ export declare const EventTrigger: z.ZodObject<z.objectUtil.extendShape<{
211
205
  helmCharts?: any[] | undefined;
212
206
  };
213
207
  }>;
214
- export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.extendShape<{
215
- apiVersion: z.ZodString;
216
- kind: z.ZodString;
208
+ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<{
217
209
  metadata: z.ZodObject<{
218
210
  name: z.ZodString;
219
211
  namespace: z.ZodOptional<z.ZodString>;
@@ -224,7 +216,7 @@ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.ext
224
216
  name: string;
225
217
  namespace?: string | undefined;
226
218
  }>;
227
- }, {
219
+ } & {
228
220
  apiVersion: z.ZodString;
229
221
  kind: z.ZodLiteral<"Profile">;
230
222
  spec: z.ZodObject<{
@@ -244,7 +236,7 @@ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.ext
244
236
  }, {
245
237
  helmCharts?: any[] | undefined;
246
238
  }>;
247
- }>, "strip", z.ZodTypeAny, {
239
+ }, "strip", z.ZodTypeAny, {
248
240
  apiVersion: string;
249
241
  metadata: {
250
242
  name: string;
@@ -269,9 +261,7 @@ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.ext
269
261
  spec: {
270
262
  helmCharts?: any[] | undefined;
271
263
  };
272
- }>, z.ZodObject<z.objectUtil.extendShape<{
273
- apiVersion: z.ZodString;
274
- kind: z.ZodString;
264
+ }>, z.ZodObject<{
275
265
  metadata: z.ZodObject<{
276
266
  name: z.ZodString;
277
267
  namespace: z.ZodOptional<z.ZodString>;
@@ -282,7 +272,7 @@ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.ext
282
272
  name: string;
283
273
  namespace?: string | undefined;
284
274
  }>;
285
- }, {
275
+ } & {
286
276
  apiVersion: z.ZodString;
287
277
  kind: z.ZodLiteral<"ClusterProfile">;
288
278
  spec: z.ZodObject<{
@@ -302,7 +292,7 @@ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.ext
302
292
  }, {
303
293
  helmCharts?: any[] | undefined;
304
294
  }>;
305
- }>, "strip", z.ZodTypeAny, {
295
+ }, "strip", z.ZodTypeAny, {
306
296
  apiVersion: string;
307
297
  metadata: {
308
298
  name: string;
@@ -327,9 +317,7 @@ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.ext
327
317
  spec: {
328
318
  helmCharts?: any[] | undefined;
329
319
  };
330
- }>, z.ZodObject<z.objectUtil.extendShape<{
331
- apiVersion: z.ZodString;
332
- kind: z.ZodString;
320
+ }>, z.ZodObject<{
333
321
  metadata: z.ZodObject<{
334
322
  name: z.ZodString;
335
323
  namespace: z.ZodOptional<z.ZodString>;
@@ -340,7 +328,7 @@ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.ext
340
328
  name: string;
341
329
  namespace?: string | undefined;
342
330
  }>;
343
- }, {
331
+ } & {
344
332
  apiVersion: z.ZodString;
345
333
  kind: z.ZodLiteral<"EventTrigger">;
346
334
  spec: z.ZodObject<{
@@ -360,7 +348,7 @@ export declare const ProfileDefinition: z.ZodUnion<[z.ZodObject<z.objectUtil.ext
360
348
  }, {
361
349
  helmCharts?: any[] | undefined;
362
350
  }>;
363
- }>, "strip", z.ZodTypeAny, {
351
+ }, "strip", z.ZodTypeAny, {
364
352
  apiVersion: string;
365
353
  metadata: {
366
354
  name: string;
@@ -19,9 +19,7 @@ function checkIfStringIsPath(path) {
19
19
  return !!match;
20
20
  }
21
21
  function massageProviderLookupName(dep) {
22
- if (!dep.packageName) {
23
- dep.packageName = dep.depName;
24
- }
22
+ dep.packageName ??= dep.depName;
25
23
  // TODO #22198
26
24
  if (!dep.packageName.includes('/')) {
27
25
  dep.packageName = `hashicorp/${dep.packageName}`;
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../lib/modules/manager/terraform/util.ts"],"names":[],"mappings":";;AAOA,kEAKC;AAGD,kDAGC;AAED,8DAaC;AAED,4CAgBC;AAED,gEAeC;;AApED,kEAAkC;AAClC,+CAA4C;AAC5C,4EAAkF;AAGlF,0CAA2E;AAE3E,SAAgB,2BAA2B,CACzC,OAAe,EACf,SAAmB;IAEnB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,eAAe,GAAG,IAAA,aAAK,EAAC,kBAAkB,CAAC,CAAC;AAClD,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,yBAAyB,CAAC,GAAsB;IAC9D,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,cAAc;IACd,IAAI,CAAC,GAAG,CAAC,WAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,WAAW,GAAG,aAAa,GAAG,CAAC,WAAY,EAAE,CAAC;IACpD,CAAC;IAED,sCAAsC;IACtC,cAAc;IACd,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAY,CAAC,WAAW,EAAE,CAAC;AACnD,CAAC;AAED,SAAgB,gBAAgB,CAC9B,GAAsB,EACtB,KAAqB;IAErB,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY;QACrC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,gDAA2B,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW;QACpC,IAAI,CAAC,WAAW,KAAK,cAAc,CACtC,CAAC;IACF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,QAAgB;IAEhB,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAY,EAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,eAAe,GAAG,MAAM,IAAA,mBAAY,EAAC,YAAY,CAAC,CAAC;QACzD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,cAAc,GAAG,IAAA,mBAAY,EAAC,eAAe,CAAC,CAAC;YACrD,IAAI,YAAE,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport { TerraformProviderDatasource } from '../../datasource/terraform-provider';\nimport type { PackageDependency } from '../types';\nimport type { ProviderLock } from './lockfile/types';\nimport { extractLocks, findLockFile, readLockFile } from './lockfile/util';\n\nexport function checkFileContainsDependency(\n content: string,\n checkList: string[],\n): boolean {\n return checkList.some((check) => content.includes(check));\n}\n\nconst pathStringRegex = regEx(/(.|..)?(\\/[^/])+/);\nexport function checkIfStringIsPath(path: string): boolean {\n const match = pathStringRegex.exec(path);\n return !!match;\n}\n\nexport function massageProviderLookupName(dep: PackageDependency): void {\n if (!dep.packageName) {\n dep.packageName = dep.depName;\n }\n\n // TODO #22198\n if (!dep.packageName!.includes('/')) {\n dep.packageName = `hashicorp/${dep.packageName!}`;\n }\n\n // handle cases like `Telmate/proxmox`\n // TODO #22198\n dep.packageName = dep.packageName!.toLowerCase();\n}\n\nexport function getLockedVersion(\n dep: PackageDependency,\n locks: ProviderLock[],\n): string | undefined {\n const depRegistryUrl = dep.registryUrls\n ? dep.registryUrls[0]\n : TerraformProviderDatasource.defaultRegistryUrls[0];\n const foundLock = locks.find(\n (lock) =>\n lock.packageName === dep.packageName &&\n lock.registryUrl === depRegistryUrl,\n );\n if (foundLock) {\n return foundLock.version;\n }\n return undefined;\n}\n\nexport async function extractLocksForPackageFile(\n fileName: string,\n): Promise<ProviderLock[]> {\n const locks: ProviderLock[] = [];\n const lockFilePath = await findLockFile(fileName);\n if (lockFilePath) {\n const lockFileContent = await readLockFile(lockFilePath);\n if (lockFileContent) {\n const extractedLocks = extractLocks(lockFileContent);\n if (is.nonEmptyArray(extractedLocks)) {\n locks.push(...extractedLocks);\n }\n }\n }\n return locks;\n}\n"]}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../lib/modules/manager/terraform/util.ts"],"names":[],"mappings":";;AAOA,kEAKC;AAGD,kDAGC;AAED,8DAWC;AAED,4CAgBC;AAED,gEAeC;;AAlED,kEAAkC;AAClC,+CAA4C;AAC5C,4EAAkF;AAGlF,0CAA2E;AAE3E,SAAgB,2BAA2B,CACzC,OAAe,EACf,SAAmB;IAEnB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,eAAe,GAAG,IAAA,aAAK,EAAC,kBAAkB,CAAC,CAAC;AAClD,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,yBAAyB,CAAC,GAAsB;IAC9D,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,OAAO,CAAC;IAEhC,cAAc;IACd,IAAI,CAAC,GAAG,CAAC,WAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,WAAW,GAAG,aAAa,GAAG,CAAC,WAAY,EAAE,CAAC;IACpD,CAAC;IAED,sCAAsC;IACtC,cAAc;IACd,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAY,CAAC,WAAW,EAAE,CAAC;AACnD,CAAC;AAED,SAAgB,gBAAgB,CAC9B,GAAsB,EACtB,KAAqB;IAErB,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY;QACrC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,gDAA2B,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW;QACpC,IAAI,CAAC,WAAW,KAAK,cAAc,CACtC,CAAC;IACF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,QAAgB;IAEhB,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAY,EAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,eAAe,GAAG,MAAM,IAAA,mBAAY,EAAC,YAAY,CAAC,CAAC;QACzD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,cAAc,GAAG,IAAA,mBAAY,EAAC,eAAe,CAAC,CAAC;YACrD,IAAI,YAAE,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport { TerraformProviderDatasource } from '../../datasource/terraform-provider';\nimport type { PackageDependency } from '../types';\nimport type { ProviderLock } from './lockfile/types';\nimport { extractLocks, findLockFile, readLockFile } from './lockfile/util';\n\nexport function checkFileContainsDependency(\n content: string,\n checkList: string[],\n): boolean {\n return checkList.some((check) => content.includes(check));\n}\n\nconst pathStringRegex = regEx(/(.|..)?(\\/[^/])+/);\nexport function checkIfStringIsPath(path: string): boolean {\n const match = pathStringRegex.exec(path);\n return !!match;\n}\n\nexport function massageProviderLookupName(dep: PackageDependency): void {\n dep.packageName ??= dep.depName;\n\n // TODO #22198\n if (!dep.packageName!.includes('/')) {\n dep.packageName = `hashicorp/${dep.packageName!}`;\n }\n\n // handle cases like `Telmate/proxmox`\n // TODO #22198\n dep.packageName = dep.packageName!.toLowerCase();\n}\n\nexport function getLockedVersion(\n dep: PackageDependency,\n locks: ProviderLock[],\n): string | undefined {\n const depRegistryUrl = dep.registryUrls\n ? dep.registryUrls[0]\n : TerraformProviderDatasource.defaultRegistryUrls[0];\n const foundLock = locks.find(\n (lock) =>\n lock.packageName === dep.packageName &&\n lock.registryUrl === depRegistryUrl,\n );\n if (foundLock) {\n return foundLock.version;\n }\n return undefined;\n}\n\nexport async function extractLocksForPackageFile(\n fileName: string,\n): Promise<ProviderLock[]> {\n const locks: ProviderLock[] = [];\n const lockFilePath = await findLockFile(fileName);\n if (lockFilePath) {\n const lockFileContent = await readLockFile(lockFilePath);\n if (lockFileContent) {\n const extractedLocks = extractLocks(lockFileContent);\n if (is.nonEmptyArray(extractedLocks)) {\n locks.push(...extractedLocks);\n }\n }\n }\n return locks;\n}\n"]}
@@ -251,10 +251,10 @@ export declare const Contents: z.ZodUnion<[z.ZodObject<{
251
251
  slug: string;
252
252
  };
253
253
  }>]>;
254
- export declare const Vendir: z.ZodObject<z.objectUtil.extendShape<{
254
+ export declare const Vendir: z.ZodObject<{
255
255
  apiVersion: z.ZodLiteral<"vendir.k14s.io/v1alpha1">;
256
256
  kind: z.ZodLiteral<"Config">;
257
- }, {
257
+ } & {
258
258
  directories: z.ZodArray<z.ZodObject<{
259
259
  path: z.ZodString;
260
260
  contents: z.ZodEffects<z.ZodArray<z.ZodAny, "many">, ({
@@ -309,7 +309,7 @@ export declare const Vendir: z.ZodObject<z.objectUtil.extendShape<{
309
309
  path: string;
310
310
  contents: any[];
311
311
  }>, "many">;
312
- }>, "strip", z.ZodTypeAny, {
312
+ }, "strip", z.ZodTypeAny, {
313
313
  apiVersion: "vendir.k14s.io/v1alpha1";
314
314
  kind: "Config";
315
315
  directories: {
@@ -1,10 +1,10 @@
1
1
  import { z } from 'zod';
2
- export declare const PagedSourceResultsSchema: z.ZodObject<z.objectUtil.extendShape<{
2
+ export declare const PagedSourceResultsSchema: z.ZodObject<{
3
3
  page: z.ZodOptional<z.ZodNumber>;
4
4
  pagelen: z.ZodNumber;
5
5
  size: z.ZodOptional<z.ZodNumber>;
6
6
  next: z.ZodOptional<z.ZodString>;
7
- }, {
7
+ } & {
8
8
  values: z.ZodArray<z.ZodObject<{
9
9
  path: z.ZodString;
10
10
  type: z.ZodEnum<["commit_directory", "commit_file"]>;
@@ -28,7 +28,7 @@ export declare const PagedSourceResultsSchema: z.ZodObject<z.objectUtil.extendSh
28
28
  };
29
29
  type: "commit_directory" | "commit_file";
30
30
  }>, "many">;
31
- }>, "strip", z.ZodTypeAny, {
31
+ }, "strip", z.ZodTypeAny, {
32
32
  values: {
33
33
  path: string;
34
34
  commit: {
@@ -9,6 +9,7 @@ export declare const UserSchema: z.ZodObject<{
9
9
  displayName: string;
10
10
  emailAddress: string;
11
11
  }>;
12
+ export declare const Files: z.ZodArray<z.ZodString, "many">;
12
13
  export declare const Comment: z.ZodObject<{
13
14
  text: z.ZodString;
14
15
  id: z.ZodNumber;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PullRequestActivity = exports.PullRequestCommentActivity = exports.Comment = exports.UserSchema = void 0;
3
+ exports.PullRequestActivity = exports.PullRequestCommentActivity = exports.Comment = exports.Files = exports.UserSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  exports.UserSchema = zod_1.z.object({
6
6
  displayName: zod_1.z.string(),
7
7
  emailAddress: zod_1.z.string(),
8
8
  });
9
+ exports.Files = zod_1.z.array(zod_1.z.string());
9
10
  exports.Comment = zod_1.z.object({
10
11
  text: zod_1.z.string(),
11
12
  id: zod_1.z.number(),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/platform/bitbucket-server/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAEU,QAAA,OAAO,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAIU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC9B,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE;IACzB,OAAO,EAAE,eAAO;CACjB,CAAC,CAAC;AAMU,QAAA,mBAAmB,GAAG,OAAC,CAAC,KAAK,CAAC;IACzC,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAChC,kCAA0B;CAC3B,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\n\nexport const UserSchema = z.object({\n displayName: z.string(),\n emailAddress: z.string(),\n});\n\nexport const Comment = z.object({\n text: z.string(),\n id: z.number(),\n});\n\nexport type Comment = z.infer<typeof Comment>;\n\nexport const PullRequestCommentActivity = z.object({\n action: z.literal('COMMENTED'),\n commentAction: z.string(),\n comment: Comment,\n});\n\nexport type PullRequestCommentActivity = z.infer<\n typeof PullRequestCommentActivity\n>;\n\nexport const PullRequestActivity = z.union([\n z.object({ action: z.string() }),\n PullRequestCommentActivity,\n]);\n\nexport type PullRequestActivity = z.infer<typeof PullRequestActivity>;\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/platform/bitbucket-server/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAEU,QAAA,KAAK,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE5B,QAAA,OAAO,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAIU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC9B,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE;IACzB,OAAO,EAAE,eAAO;CACjB,CAAC,CAAC;AAMU,QAAA,mBAAmB,GAAG,OAAC,CAAC,KAAK,CAAC;IACzC,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAChC,kCAA0B;CAC3B,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\n\nexport const UserSchema = z.object({\n displayName: z.string(),\n emailAddress: z.string(),\n});\n\nexport const Files = z.array(z.string());\n\nexport const Comment = z.object({\n text: z.string(),\n id: z.number(),\n});\n\nexport type Comment = z.infer<typeof Comment>;\n\nexport const PullRequestCommentActivity = z.object({\n action: z.literal('COMMENTED'),\n commentAction: z.string(),\n comment: Comment,\n});\n\nexport type PullRequestCommentActivity = z.infer<\n typeof PullRequestCommentActivity\n>;\n\nexport const PullRequestActivity = z.union([\n z.object({ action: z.string() }),\n PullRequestCommentActivity,\n]);\n\nexport type PullRequestActivity = z.infer<typeof PullRequestActivity>;\n"]}
@@ -18,9 +18,6 @@ declare class GerritClient {
18
18
  addReviewers(changeNumber: number, reviewers: string[]): Promise<void>;
19
19
  addAssignee(changeNumber: number, assignee: string): Promise<void>;
20
20
  getFile(repo: string, branch: string, fileName: string): Promise<string>;
21
- approveChange(changeId: number): Promise<void>;
22
- checkIfApproved(changeId: number): Promise<boolean>;
23
- wasApprovedBy(change: GerritChange, username: string): boolean | undefined;
24
21
  normalizeMessage(message: string): string;
25
22
  private static buildSearchFilters;
26
23
  }
@@ -6,6 +6,7 @@ const logger_1 = require("../../../logger");
6
6
  const memory_http_cache_provider_1 = require("../../../util/http/cache/memory-http-cache-provider");
7
7
  const gerrit_1 = require("../../../util/http/gerrit");
8
8
  const regex_1 = require("../../../util/regex");
9
+ const url_1 = require("../../../util/url");
9
10
  const utils_1 = require("./utils");
10
11
  const QUOTES_REGEX = (0, regex_1.regEx)('"', 'g');
11
12
  class GerritClient {
@@ -47,15 +48,16 @@ class GerritClient {
47
48
  }
48
49
  /* v8 ignore stop */
49
50
  const filters = GerritClient.buildSearchFilters(repository, findPRConfig);
50
- const changes = await this.gerritHttp.getJsonUnchecked(`a/changes/?q=` +
51
- filters.join('+') +
52
- this.requestDetails.map((det) => `&o=${det}`).join(''), opts);
51
+ const queryString = (0, url_1.getQueryString)({
52
+ o: this.requestDetails,
53
+ });
54
+ const changes = await this.gerritHttp.getJsonUnchecked(`a/changes/?q=${filters.join('+')}&${queryString}`, opts);
53
55
  logger_1.logger.trace(`findChanges(${filters.join(', ')}) => ${changes.body.length}`);
54
56
  return changes.body;
55
57
  }
56
58
  async getChange(changeNumber) {
57
- const changes = await this.gerritHttp.getJsonUnchecked(`a/changes/${changeNumber}?` +
58
- this.requestDetails.map((det) => `o=${det}`).join('&'));
59
+ const queryString = (0, url_1.getQueryString)({ o: this.requestDetails });
60
+ const changes = await this.gerritHttp.getJsonUnchecked(`a/changes/${changeNumber}?${queryString}`);
59
61
  return changes.body;
60
62
  }
61
63
  async getMergeableInfo(change) {
@@ -110,21 +112,6 @@ class GerritClient {
110
112
  const base64Content = await this.gerritHttp.getText(`a/projects/${encodeURIComponent(repo)}/branches/${encodeURIComponent(branch)}/files/${encodeURIComponent(fileName)}/content`);
111
113
  return Buffer.from(base64Content.body, 'base64').toString();
112
114
  }
113
- async approveChange(changeId) {
114
- const isApproved = await this.checkIfApproved(changeId);
115
- if (!isApproved) {
116
- await this.setLabel(changeId, 'Code-Review', +2);
117
- }
118
- }
119
- async checkIfApproved(changeId) {
120
- const change = await exports.client.getChange(changeId);
121
- const reviewLabels = change?.labels?.['Code-Review'];
122
- return reviewLabels === undefined || reviewLabels.approved !== undefined;
123
- }
124
- wasApprovedBy(change, username) {
125
- return (change.labels?.['Code-Review'].approved &&
126
- change.labels['Code-Review'].approved.username === username);
127
- }
128
115
  normalizeMessage(message) {
129
116
  //the last \n was removed from gerrit after the comment was added...
130
117
  return message.substring(0, 0x4000).trim();
@@ -133,14 +120,7 @@ class GerritClient {
133
120
  const filterState = (0, utils_1.mapPrStateToGerritFilter)(searchConfig.state);
134
121
  const filters = ['owner:self', 'project:' + repository, filterState];
135
122
  if (searchConfig.branchName) {
136
- filters.push(...[
137
- '(',
138
- `footer:Renovate-Branch=${searchConfig.branchName}`,
139
- // for backwards compatibility
140
- 'OR',
141
- `hashtag:sourceBranch-${searchConfig.branchName}`,
142
- ')',
143
- ]);
123
+ filters.push(`footer:Renovate-Branch=${searchConfig.branchName}`);
144
124
  }
145
125
  if (searchConfig.targetBranch) {
146
126
  filters.push(`branch:${searchConfig.targetBranch}`);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gerrit/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { REPOSITORY_ARCHIVED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { memCacheProvider } from '../../../util/http/cache/memory-http-cache-provider';\nimport { GerritHttp } from '../../../util/http/gerrit';\nimport type { HttpOptions } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport type {\n GerritAccountInfo,\n GerritBranchInfo,\n GerritChange,\n GerritChangeMessageInfo,\n GerritFindPRConfig,\n GerritMergeableInfo,\n GerritProjectInfo,\n} from './types';\nimport { mapPrStateToGerritFilter } from './utils';\n\nconst QUOTES_REGEX = regEx('\"', 'g');\n\nclass GerritClient {\n private requestDetails = [\n 'SUBMITTABLE', //include the submittable field in ChangeInfo, which can be used to tell if the change is reviewed and ready for submit.\n 'CHECK', // include potential consistency problems with the change (not related to labels)\n 'MESSAGES',\n 'DETAILED_ACCOUNTS',\n 'LABELS',\n 'CURRENT_ACTIONS', //to check if current_revision can be \"rebased\"\n 'CURRENT_REVISION', //get RevisionInfo::ref to fetch\n 'CURRENT_COMMIT', // to get the commit message\n ] as const;\n\n private gerritHttp = new GerritHttp();\n\n async getRepos(): Promise<string[]> {\n const res = await this.gerritHttp.getJsonUnchecked<string[]>(\n 'a/projects/?type=CODE&state=ACTIVE',\n {},\n );\n return Object.keys(res.body);\n }\n\n async getProjectInfo(repository: string): Promise<GerritProjectInfo> {\n const projectInfo =\n await this.gerritHttp.getJsonUnchecked<GerritProjectInfo>(\n `a/projects/${encodeURIComponent(repository)}`,\n );\n if (projectInfo.body.state !== 'ACTIVE') {\n throw new Error(REPOSITORY_ARCHIVED);\n }\n return projectInfo.body;\n }\n\n async getBranchInfo(repository: string): Promise<GerritBranchInfo> {\n const branchInfo = await this.gerritHttp.getJsonUnchecked<GerritBranchInfo>(\n `a/projects/${encodeURIComponent(repository)}/branches/HEAD`,\n );\n return branchInfo.body;\n }\n\n async findChanges(\n repository: string,\n findPRConfig: GerritFindPRConfig,\n refreshCache?: boolean,\n ): Promise<GerritChange[]> {\n const opts: HttpOptions = {};\n /* v8 ignore start: temporary code */\n // TODO: should refresh the cache rather than just ignore it\n if (refreshCache) {\n opts.memCache = false;\n } else {\n opts.cacheProvider = memCacheProvider;\n }\n /* v8 ignore stop */\n\n const filters = GerritClient.buildSearchFilters(repository, findPRConfig);\n const changes = await this.gerritHttp.getJsonUnchecked<GerritChange[]>(\n `a/changes/?q=` +\n filters.join('+') +\n this.requestDetails.map((det) => `&o=${det}`).join(''),\n opts,\n );\n logger.trace(\n `findChanges(${filters.join(', ')}) => ${changes.body.length}`,\n );\n return changes.body;\n }\n\n async getChange(changeNumber: number): Promise<GerritChange> {\n const changes = await this.gerritHttp.getJsonUnchecked<GerritChange>(\n `a/changes/${changeNumber}?` +\n this.requestDetails.map((det) => `o=${det}`).join('&'),\n );\n return changes.body;\n }\n\n async getMergeableInfo(change: GerritChange): Promise<GerritMergeableInfo> {\n const mergeable =\n await this.gerritHttp.getJsonUnchecked<GerritMergeableInfo>(\n `a/changes/${change._number}/revisions/current/mergeable`,\n );\n return mergeable.body;\n }\n\n async abandonChange(changeNumber: number): Promise<void> {\n await this.gerritHttp.postJson(`a/changes/${changeNumber}/abandon`);\n }\n\n async submitChange(changeNumber: number): Promise<GerritChange> {\n const change = await this.gerritHttp.postJson<GerritChange>(\n `a/changes/${changeNumber}/submit`,\n );\n return change.body;\n }\n\n async getMessages(changeNumber: number): Promise<GerritChangeMessageInfo[]> {\n const messages = await this.gerritHttp.getJsonUnchecked<\n GerritChangeMessageInfo[]\n >(`a/changes/${changeNumber}/messages`, { memCache: false });\n return messages.body;\n }\n\n async addMessage(\n changeNumber: number,\n fullMessage: string,\n tag?: string,\n ): Promise<void> {\n const message = this.normalizeMessage(fullMessage);\n await this.gerritHttp.postJson(\n `a/changes/${changeNumber}/revisions/current/review`,\n { body: { message, tag, notify: 'NONE' } },\n );\n }\n\n async checkForExistingMessage(\n changeNumber: number,\n newMessage: string,\n msgType?: string,\n ): Promise<boolean> {\n const messages = await this.getMessages(changeNumber);\n return messages.some(\n (existingMsg) =>\n (msgType === undefined || msgType === existingMsg.tag) &&\n existingMsg.message.includes(newMessage),\n );\n }\n\n async addMessageIfNotAlreadyExists(\n changeNumber: number,\n message: string,\n tag?: string,\n ): Promise<void> {\n const newMsg = this.normalizeMessage(message);\n if (!(await this.checkForExistingMessage(changeNumber, newMsg, tag))) {\n await this.addMessage(changeNumber, newMsg, tag);\n }\n }\n\n async setLabel(\n changeNumber: number,\n label: string,\n value: number,\n ): Promise<void> {\n await this.gerritHttp.postJson(\n `a/changes/${changeNumber}/revisions/current/review`,\n { body: { labels: { [label]: value }, notify: 'NONE' } },\n );\n }\n\n async addReviewers(changeNumber: number, reviewers: string[]): Promise<void> {\n await this.gerritHttp.postJson(\n `a/changes/${changeNumber}/revisions/current/review`,\n {\n body: {\n reviewers: reviewers.map((r) => ({ reviewer: r })),\n notify: 'OWNER_REVIEWERS', // Avoids notifying cc's\n },\n },\n );\n }\n\n async addAssignee(changeNumber: number, assignee: string): Promise<void> {\n await this.gerritHttp.putJson<GerritAccountInfo>(\n // TODO: refactor this as this API removed in Gerrit 3.8\n `a/changes/${changeNumber}/assignee`,\n {\n body: { assignee },\n },\n );\n }\n\n async getFile(\n repo: string,\n branch: string,\n fileName: string,\n ): Promise<string> {\n const base64Content = await this.gerritHttp.getText(\n `a/projects/${encodeURIComponent(\n repo,\n )}/branches/${encodeURIComponent(branch)}/files/${encodeURIComponent(fileName)}/content`,\n );\n return Buffer.from(base64Content.body, 'base64').toString();\n }\n\n async approveChange(changeId: number): Promise<void> {\n const isApproved = await this.checkIfApproved(changeId);\n if (!isApproved) {\n await this.setLabel(changeId, 'Code-Review', +2);\n }\n }\n\n async checkIfApproved(changeId: number): Promise<boolean> {\n const change = await client.getChange(changeId);\n const reviewLabels = change?.labels?.['Code-Review'];\n return reviewLabels === undefined || reviewLabels.approved !== undefined;\n }\n\n wasApprovedBy(change: GerritChange, username: string): boolean | undefined {\n return (\n change.labels?.['Code-Review'].approved &&\n change.labels['Code-Review'].approved.username === username\n );\n }\n\n normalizeMessage(message: string): string {\n //the last \\n was removed from gerrit after the comment was added...\n return message.substring(0, 0x4000).trim();\n }\n\n private static buildSearchFilters(\n repository: string,\n searchConfig: GerritFindPRConfig,\n ): string[] {\n const filterState = mapPrStateToGerritFilter(searchConfig.state);\n const filters = ['owner:self', 'project:' + repository, filterState];\n if (searchConfig.branchName) {\n filters.push(\n ...[\n '(',\n `footer:Renovate-Branch=${searchConfig.branchName}`,\n // for backwards compatibility\n 'OR',\n `hashtag:sourceBranch-${searchConfig.branchName}`,\n ')',\n ],\n );\n }\n if (searchConfig.targetBranch) {\n filters.push(`branch:${searchConfig.targetBranch}`);\n }\n if (searchConfig.label) {\n filters.push(`label:Code-Review=${searchConfig.label}`);\n }\n if (searchConfig.prTitle) {\n // escaping support in Gerrit is not great, so we need to remove quotes\n // special characters are ignored anyway in the search so it does not create any issues\n filters.push(\n `message:${encodeURIComponent('\"' + searchConfig.prTitle.replace(QUOTES_REGEX, '') + '\"')}`,\n );\n }\n return filters;\n }\n}\n\nexport const client = new GerritClient();\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gerrit/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { REPOSITORY_ARCHIVED } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport { memCacheProvider } from '../../../util/http/cache/memory-http-cache-provider';\nimport { GerritHttp } from '../../../util/http/gerrit';\nimport type { HttpOptions } from '../../../util/http/types';\nimport { regEx } from '../../../util/regex';\nimport { getQueryString } from '../../../util/url';\nimport type {\n GerritAccountInfo,\n GerritBranchInfo,\n GerritChange,\n GerritChangeMessageInfo,\n GerritFindPRConfig,\n GerritMergeableInfo,\n GerritProjectInfo,\n} from './types';\nimport { mapPrStateToGerritFilter } from './utils';\n\nconst QUOTES_REGEX = regEx('\"', 'g');\n\nclass GerritClient {\n private requestDetails = [\n 'SUBMITTABLE', //include the submittable field in ChangeInfo, which can be used to tell if the change is reviewed and ready for submit.\n 'CHECK', // include potential consistency problems with the change (not related to labels)\n 'MESSAGES',\n 'DETAILED_ACCOUNTS',\n 'LABELS',\n 'CURRENT_ACTIONS', //to check if current_revision can be \"rebased\"\n 'CURRENT_REVISION', //get RevisionInfo::ref to fetch\n 'CURRENT_COMMIT', // to get the commit message\n ] as const;\n\n private gerritHttp = new GerritHttp();\n\n async getRepos(): Promise<string[]> {\n const res = await this.gerritHttp.getJsonUnchecked<string[]>(\n 'a/projects/?type=CODE&state=ACTIVE',\n {},\n );\n return Object.keys(res.body);\n }\n\n async getProjectInfo(repository: string): Promise<GerritProjectInfo> {\n const projectInfo =\n await this.gerritHttp.getJsonUnchecked<GerritProjectInfo>(\n `a/projects/${encodeURIComponent(repository)}`,\n );\n if (projectInfo.body.state !== 'ACTIVE') {\n throw new Error(REPOSITORY_ARCHIVED);\n }\n return projectInfo.body;\n }\n\n async getBranchInfo(repository: string): Promise<GerritBranchInfo> {\n const branchInfo = await this.gerritHttp.getJsonUnchecked<GerritBranchInfo>(\n `a/projects/${encodeURIComponent(repository)}/branches/HEAD`,\n );\n return branchInfo.body;\n }\n\n async findChanges(\n repository: string,\n findPRConfig: GerritFindPRConfig,\n refreshCache?: boolean,\n ): Promise<GerritChange[]> {\n const opts: HttpOptions = {};\n /* v8 ignore start: temporary code */\n // TODO: should refresh the cache rather than just ignore it\n if (refreshCache) {\n opts.memCache = false;\n } else {\n opts.cacheProvider = memCacheProvider;\n }\n /* v8 ignore stop */\n\n const filters = GerritClient.buildSearchFilters(repository, findPRConfig);\n const queryString = getQueryString({\n o: this.requestDetails,\n });\n const changes = await this.gerritHttp.getJsonUnchecked<GerritChange[]>(\n `a/changes/?q=${filters.join('+')}&${queryString}`,\n opts,\n );\n logger.trace(\n `findChanges(${filters.join(', ')}) => ${changes.body.length}`,\n );\n return changes.body;\n }\n\n async getChange(changeNumber: number): Promise<GerritChange> {\n const queryString = getQueryString({ o: this.requestDetails });\n const changes = await this.gerritHttp.getJsonUnchecked<GerritChange>(\n `a/changes/${changeNumber}?${queryString}`,\n );\n return changes.body;\n }\n\n async getMergeableInfo(change: GerritChange): Promise<GerritMergeableInfo> {\n const mergeable =\n await this.gerritHttp.getJsonUnchecked<GerritMergeableInfo>(\n `a/changes/${change._number}/revisions/current/mergeable`,\n );\n return mergeable.body;\n }\n\n async abandonChange(changeNumber: number): Promise<void> {\n await this.gerritHttp.postJson(`a/changes/${changeNumber}/abandon`);\n }\n\n async submitChange(changeNumber: number): Promise<GerritChange> {\n const change = await this.gerritHttp.postJson<GerritChange>(\n `a/changes/${changeNumber}/submit`,\n );\n return change.body;\n }\n\n async getMessages(changeNumber: number): Promise<GerritChangeMessageInfo[]> {\n const messages = await this.gerritHttp.getJsonUnchecked<\n GerritChangeMessageInfo[]\n >(`a/changes/${changeNumber}/messages`, { memCache: false });\n return messages.body;\n }\n\n async addMessage(\n changeNumber: number,\n fullMessage: string,\n tag?: string,\n ): Promise<void> {\n const message = this.normalizeMessage(fullMessage);\n await this.gerritHttp.postJson(\n `a/changes/${changeNumber}/revisions/current/review`,\n { body: { message, tag, notify: 'NONE' } },\n );\n }\n\n async checkForExistingMessage(\n changeNumber: number,\n newMessage: string,\n msgType?: string,\n ): Promise<boolean> {\n const messages = await this.getMessages(changeNumber);\n return messages.some(\n (existingMsg) =>\n (msgType === undefined || msgType === existingMsg.tag) &&\n existingMsg.message.includes(newMessage),\n );\n }\n\n async addMessageIfNotAlreadyExists(\n changeNumber: number,\n message: string,\n tag?: string,\n ): Promise<void> {\n const newMsg = this.normalizeMessage(message);\n if (!(await this.checkForExistingMessage(changeNumber, newMsg, tag))) {\n await this.addMessage(changeNumber, newMsg, tag);\n }\n }\n\n async setLabel(\n changeNumber: number,\n label: string,\n value: number,\n ): Promise<void> {\n await this.gerritHttp.postJson(\n `a/changes/${changeNumber}/revisions/current/review`,\n { body: { labels: { [label]: value }, notify: 'NONE' } },\n );\n }\n\n async addReviewers(changeNumber: number, reviewers: string[]): Promise<void> {\n await this.gerritHttp.postJson(\n `a/changes/${changeNumber}/revisions/current/review`,\n {\n body: {\n reviewers: reviewers.map((r) => ({ reviewer: r })),\n notify: 'OWNER_REVIEWERS', // Avoids notifying cc's\n },\n },\n );\n }\n\n async addAssignee(changeNumber: number, assignee: string): Promise<void> {\n await this.gerritHttp.putJson<GerritAccountInfo>(\n // TODO: refactor this as this API removed in Gerrit 3.8\n `a/changes/${changeNumber}/assignee`,\n {\n body: { assignee },\n },\n );\n }\n\n async getFile(\n repo: string,\n branch: string,\n fileName: string,\n ): Promise<string> {\n const base64Content = await this.gerritHttp.getText(\n `a/projects/${encodeURIComponent(\n repo,\n )}/branches/${encodeURIComponent(branch)}/files/${encodeURIComponent(fileName)}/content`,\n );\n return Buffer.from(base64Content.body, 'base64').toString();\n }\n\n normalizeMessage(message: string): string {\n //the last \\n was removed from gerrit after the comment was added...\n return message.substring(0, 0x4000).trim();\n }\n\n private static buildSearchFilters(\n repository: string,\n searchConfig: GerritFindPRConfig,\n ): string[] {\n const filterState = mapPrStateToGerritFilter(searchConfig.state);\n const filters = ['owner:self', 'project:' + repository, filterState];\n if (searchConfig.branchName) {\n filters.push(`footer:Renovate-Branch=${searchConfig.branchName}`);\n }\n if (searchConfig.targetBranch) {\n filters.push(`branch:${searchConfig.targetBranch}`);\n }\n if (searchConfig.label) {\n filters.push(`label:Code-Review=${searchConfig.label}`);\n }\n if (searchConfig.prTitle) {\n // escaping support in Gerrit is not great, so we need to remove quotes\n // special characters are ignored anyway in the search so it does not create any issues\n filters.push(\n `message:${encodeURIComponent('\"' + searchConfig.prTitle.replace(QUOTES_REGEX, '') + '\"')}`,\n );\n }\n return filters;\n }\n}\n\nexport const client = new GerritClient();\n"]}
@@ -128,9 +128,6 @@ async function updatePr(prConfig) {
128
128
  if (prConfig.prBody) {
129
129
  await client_1.client.addMessageIfNotAlreadyExists(prConfig.number, prConfig.prBody, utils_1.TAG_PULL_REQUEST_BODY);
130
130
  }
131
- if (prConfig.platformPrOptions?.autoApprove) {
132
- await client_1.client.approveChange(prConfig.number);
133
- }
134
131
  if (prConfig.state && prConfig.state === 'closed') {
135
132
  await client_1.client.abandonChange(prConfig.number);
136
133
  }
@@ -146,9 +143,6 @@ async function createPr(prConfig) {
146
143
  throw new Error(`the change should be created automatically from previous push to refs/for/${prConfig.sourceBranch}`);
147
144
  }
148
145
  await client_1.client.addMessageIfNotAlreadyExists(pr._number, prConfig.prBody, utils_1.TAG_PULL_REQUEST_BODY);
149
- if (prConfig.platformPrOptions?.autoApprove) {
150
- await client_1.client.approveChange(pr._number);
151
- }
152
146
  return getPr(pr._number);
153
147
  }
154
148
  async function getBranchPr(branchName) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gerrit/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { parseJson } from '../../../util/common';\nimport * as git from '../../../util/git';\nimport { setBaseUrl } from '../../../util/http/gerrit';\nimport { regEx } from '../../../util/regex';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport type {\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfigByContent,\n EnsureCommentRemovalConfigByTopic,\n EnsureIssueConfig,\n EnsureIssueResult,\n FindPRConfig,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\n\nimport { smartTruncate } from '../utils/pr-body';\nimport { readOnlyIssueBody } from '../utils/read-only-issue-body';\nimport { client } from './client';\nimport { configureScm } from './scm';\nimport type { GerritLabelTypeInfo, GerritProjectInfo } from './types';\nimport {\n TAG_PULL_REQUEST_BODY,\n getGerritRepoUrl,\n mapBranchStatusToLabel,\n mapGerritChangeToPr,\n} from './utils';\n\nexport const id = 'gerrit';\n\nconst defaults: {\n endpoint?: string;\n} = {};\n\nlet config: {\n repository?: string;\n head?: string;\n config?: GerritProjectInfo;\n labels: Record<string, GerritLabelTypeInfo>;\n gerritUsername?: string;\n} = {\n labels: {},\n};\n\nexport function writeToConfig(newConfig: typeof config): void {\n config = { ...config, ...newConfig };\n}\n\nexport function initPlatform({\n endpoint,\n username,\n password,\n}: PlatformParams): Promise<PlatformResult> {\n logger.debug(`initPlatform(${endpoint!}, ${username!})`);\n if (!endpoint) {\n throw new Error('Init: You must configure a Gerrit Server endpoint');\n }\n if (!(username && password)) {\n throw new Error(\n 'Init: You must configure a Gerrit Server username/password',\n );\n }\n config.gerritUsername = username;\n defaults.endpoint = ensureTrailingSlash(endpoint);\n setBaseUrl(defaults.endpoint);\n const platformConfig: PlatformResult = {\n endpoint: defaults.endpoint,\n };\n return Promise.resolve(platformConfig);\n}\n\n/**\n * Get all state=\"ACTIVE\" and type=\"CODE\" repositories from gerrit\n */\nexport async function getRepos(): Promise<string[]> {\n logger.debug(`getRepos()`);\n return await client.getRepos();\n}\n\n/**\n * Clone repository to local directory\n * @param config\n */\nexport async function initRepo({\n repository,\n gitUrl,\n}: RepoParams): Promise<RepoResult> {\n logger.debug(`initRepo(${repository}, ${gitUrl})`);\n const projectInfo = await client.getProjectInfo(repository);\n const branchInfo = await client.getBranchInfo(repository);\n\n config = {\n ...config,\n repository,\n head: branchInfo.revision,\n config: projectInfo,\n labels: projectInfo.labels ?? {},\n };\n const baseUrl = defaults.endpoint!;\n const url = getGerritRepoUrl(repository, baseUrl);\n configureScm(repository, config.gerritUsername!);\n await git.initRepo({ url });\n\n //abandon \"open\" and \"rejected\" changes at startup\n const rejectedChanges = await client.findChanges(config.repository!, {\n branchName: '',\n state: 'open',\n label: '-2',\n });\n for (const change of rejectedChanges) {\n await client.abandonChange(change._number);\n }\n const repoConfig: RepoResult = {\n defaultBranch: config.head!,\n isFork: false,\n repoFingerprint: repoFingerprint(repository, baseUrl),\n };\n return repoConfig;\n}\n\nexport async function findPr(\n findPRConfig: FindPRConfig,\n refreshCache?: boolean,\n): Promise<Pr | null> {\n const change = (\n await client.findChanges(config.repository!, findPRConfig, refreshCache)\n ).pop();\n return change ? mapGerritChangeToPr(change) : null;\n}\n\nexport async function getPr(number: number): Promise<Pr | null> {\n try {\n const change = await client.getChange(number);\n return mapGerritChangeToPr(change);\n } catch (err) {\n if (err.statusCode === 404) {\n return null;\n }\n throw err;\n }\n}\n\nexport async function updatePr(prConfig: UpdatePrConfig): Promise<void> {\n logger.debug(`updatePr(${prConfig.number}, ${prConfig.prTitle})`);\n if (prConfig.prBody) {\n await client.addMessageIfNotAlreadyExists(\n prConfig.number,\n prConfig.prBody,\n TAG_PULL_REQUEST_BODY,\n );\n }\n if (prConfig.platformPrOptions?.autoApprove) {\n await client.approveChange(prConfig.number);\n }\n if (prConfig.state && prConfig.state === 'closed') {\n await client.abandonChange(prConfig.number);\n }\n}\n\nexport async function createPr(prConfig: CreatePRConfig): Promise<Pr | null> {\n logger.debug(\n `createPr(${prConfig.sourceBranch}, ${prConfig.prTitle}, ${\n prConfig.labels?.toString() ?? ''\n })`,\n );\n const pr = (\n await client.findChanges(\n config.repository!,\n {\n branchName: prConfig.sourceBranch,\n targetBranch: prConfig.targetBranch,\n state: 'open',\n },\n true,\n )\n ).pop();\n if (pr === undefined) {\n throw new Error(\n `the change should be created automatically from previous push to refs/for/${prConfig.sourceBranch}`,\n );\n }\n await client.addMessageIfNotAlreadyExists(\n pr._number,\n prConfig.prBody,\n TAG_PULL_REQUEST_BODY,\n );\n if (prConfig.platformPrOptions?.autoApprove) {\n await client.approveChange(pr._number);\n }\n return getPr(pr._number);\n}\n\nexport async function getBranchPr(branchName: string): Promise<Pr | null> {\n const change = (\n await client.findChanges(config.repository!, { branchName, state: 'open' })\n ).pop();\n return change ? mapGerritChangeToPr(change) : null;\n}\n\nexport function getPrList(): Promise<Pr[]> {\n return client\n .findChanges(config.repository!, { branchName: '' })\n .then((res) => res.map((change) => mapGerritChangeToPr(change)));\n}\n\nexport async function mergePr(config: MergePRConfig): Promise<boolean> {\n logger.debug(\n `mergePr(${config.id}, ${config.branchName!}, ${config.strategy!})`,\n );\n try {\n const change = await client.submitChange(config.id);\n return change.status === 'MERGED';\n } catch (err) {\n if (err.statusCode === 409) {\n logger.warn(\n { err },\n \"Can't submit the change, because the submit rule doesn't allow it.\",\n );\n return false;\n }\n throw err;\n }\n}\n\n/**\n * BranchStatus for Gerrit assumes that the branchName refers to a change.\n * @param branchName\n */\nexport async function getBranchStatus(\n branchName: string,\n): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n const changes = await client.findChanges(\n config.repository!,\n { state: 'open', branchName },\n true,\n );\n if (changes.length > 0) {\n const allSubmittable =\n changes.filter((change) => change.submittable === true).length ===\n changes.length;\n if (allSubmittable) {\n return 'green';\n }\n const hasProblems =\n changes.filter((change) => change.problems.length > 0).length > 0;\n if (hasProblems) {\n return 'red';\n }\n const hasBlockingLabels =\n changes.filter((change) =>\n Object.values(change.labels ?? {}).some((label) => label.blocking),\n ).length > 0;\n if (hasBlockingLabels) {\n return 'red';\n }\n }\n return 'yellow';\n}\n\n/**\n * check the gerrit-change for the presence of the corresponding \"$context\" Gerrit label if configured,\n * return 'yellow' if not configured or not set\n * @param branchName\n * @param context renovate/stability-days || ...\n */\nexport async function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n const label = config.labels[context];\n if (label) {\n const change = (\n await client.findChanges(\n config.repository!,\n { branchName, state: 'open' },\n true,\n )\n ).pop();\n if (change) {\n const labelRes = change.labels?.[context];\n if (labelRes) {\n // Check for rejected first, as a label could have both rejected and approved\n if (labelRes.rejected) {\n return 'red';\n }\n if (labelRes.approved) {\n return 'green';\n }\n }\n }\n }\n return 'yellow';\n}\n\n/**\n * Apply the branch state $context to the corresponding gerrit label (if available)\n * context === \"renovate/stability-days\" / \"renovate/merge-confidence\" and state === \"green\"/...\n * @param branchStatusConfig\n */\nexport async function setBranchStatus(\n branchStatusConfig: BranchStatusConfig,\n): Promise<void> {\n const label = config.labels[branchStatusConfig.context];\n const labelValue =\n label && mapBranchStatusToLabel(branchStatusConfig.state, label);\n if (branchStatusConfig.context && labelValue) {\n const pr = await getBranchPr(branchStatusConfig.branchName);\n if (pr === null) {\n return;\n }\n await client.setLabel(pr.number, branchStatusConfig.context, labelValue);\n }\n}\n\nexport function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n const repo = repoName ?? config.repository ?? 'All-Projects';\n const branch =\n branchOrTag ?? (repo === config.repository ? config.head! : 'HEAD');\n return client.getFile(repo, branch, fileName);\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\nexport async function addReviewers(\n number: number,\n reviewers: string[],\n): Promise<void> {\n await client.addReviewers(number, reviewers);\n}\n\n/**\n * add \"CC\" (only one possible)\n */\nexport async function addAssignees(\n number: number,\n assignees: string[],\n): Promise<void> {\n if (assignees.length) {\n if (assignees.length > 1) {\n logger.debug(\n `addAssignees(${number}, ${assignees.toString()}) called with more then one assignee! Gerrit only supports one assignee! Using the first from list.`,\n );\n }\n await client.addAssignee(number, assignees[0]);\n }\n}\n\nexport async function ensureComment(\n ensureComment: EnsureCommentConfig,\n): Promise<boolean> {\n logger.debug(\n `ensureComment(${ensureComment.number}, ${ensureComment.topic!}, ${\n ensureComment.content\n })`,\n );\n await client.addMessageIfNotAlreadyExists(\n ensureComment.number,\n ensureComment.content,\n ensureComment.topic ?? undefined,\n );\n return true;\n}\n\nexport function massageMarkdown(prBody: string): string {\n //TODO: do more Gerrit specific replacements?\n return smartTruncate(readOnlyIssueBody(prBody), maxBodyLength())\n .replace(regEx(/Pull Request(s)?/g), 'Change-Request$1')\n .replace(regEx(/\\bPR(s)?\\b/g), 'Change-Request$1')\n .replace(regEx(/<\\/?summary>/g), '**')\n .replace(regEx(/<\\/?details>/g), '')\n .replace(regEx(/&#8203;/g), '') //remove zero-width-space not supported in gerrit-markdown\n .replace(\n 'close this Change-Request unmerged.',\n 'abandon or down vote this Change-Request with -2.',\n )\n .replace('Branch creation', 'Change creation')\n .replace(\n 'Close this Change-Request',\n 'Down-vote this Change-Request with -2',\n )\n .replace(\n 'you tick the rebase/retry checkbox',\n 'add \"rebase!\" at the beginning of the commit message.',\n )\n .replace(regEx(`\\n---\\n\\n.*?<!-- rebase-check -->.*?\\n`), '')\n .replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), '');\n}\n\nexport function maxBodyLength(): number {\n return 16384; //TODO: check the real gerrit limit (max. chars)\n}\n\nexport function deleteLabel(number: number, label: string): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureCommentRemoval(\n ensureCommentRemoval:\n | EnsureCommentRemovalConfigByTopic\n | EnsureCommentRemovalConfigByContent,\n): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureIssueClosing(title: string): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureIssue(\n issueConfig: EnsureIssueConfig,\n): Promise<EnsureIssueResult | null> {\n return Promise.resolve(null);\n}\n\nexport function findIssue(title: string): Promise<Issue | null> {\n return Promise.resolve(null);\n}\n\nexport function getIssueList(): Promise<Issue[]> {\n return Promise.resolve([]);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/platform/gerrit/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport type { BranchStatus } from '../../../types';\nimport { parseJson } from '../../../util/common';\nimport * as git from '../../../util/git';\nimport { setBaseUrl } from '../../../util/http/gerrit';\nimport { regEx } from '../../../util/regex';\nimport { ensureTrailingSlash } from '../../../util/url';\nimport type {\n BranchStatusConfig,\n CreatePRConfig,\n EnsureCommentConfig,\n EnsureCommentRemovalConfigByContent,\n EnsureCommentRemovalConfigByTopic,\n EnsureIssueConfig,\n EnsureIssueResult,\n FindPRConfig,\n Issue,\n MergePRConfig,\n PlatformParams,\n PlatformResult,\n Pr,\n RepoParams,\n RepoResult,\n UpdatePrConfig,\n} from '../types';\nimport { repoFingerprint } from '../util';\n\nimport { smartTruncate } from '../utils/pr-body';\nimport { readOnlyIssueBody } from '../utils/read-only-issue-body';\nimport { client } from './client';\nimport { configureScm } from './scm';\nimport type { GerritLabelTypeInfo, GerritProjectInfo } from './types';\nimport {\n TAG_PULL_REQUEST_BODY,\n getGerritRepoUrl,\n mapBranchStatusToLabel,\n mapGerritChangeToPr,\n} from './utils';\n\nexport const id = 'gerrit';\n\nconst defaults: {\n endpoint?: string;\n} = {};\n\nlet config: {\n repository?: string;\n head?: string;\n config?: GerritProjectInfo;\n labels: Record<string, GerritLabelTypeInfo>;\n gerritUsername?: string;\n} = {\n labels: {},\n};\n\nexport function writeToConfig(newConfig: typeof config): void {\n config = { ...config, ...newConfig };\n}\n\nexport function initPlatform({\n endpoint,\n username,\n password,\n}: PlatformParams): Promise<PlatformResult> {\n logger.debug(`initPlatform(${endpoint!}, ${username!})`);\n if (!endpoint) {\n throw new Error('Init: You must configure a Gerrit Server endpoint');\n }\n if (!(username && password)) {\n throw new Error(\n 'Init: You must configure a Gerrit Server username/password',\n );\n }\n config.gerritUsername = username;\n defaults.endpoint = ensureTrailingSlash(endpoint);\n setBaseUrl(defaults.endpoint);\n const platformConfig: PlatformResult = {\n endpoint: defaults.endpoint,\n };\n return Promise.resolve(platformConfig);\n}\n\n/**\n * Get all state=\"ACTIVE\" and type=\"CODE\" repositories from gerrit\n */\nexport async function getRepos(): Promise<string[]> {\n logger.debug(`getRepos()`);\n return await client.getRepos();\n}\n\n/**\n * Clone repository to local directory\n * @param config\n */\nexport async function initRepo({\n repository,\n gitUrl,\n}: RepoParams): Promise<RepoResult> {\n logger.debug(`initRepo(${repository}, ${gitUrl})`);\n const projectInfo = await client.getProjectInfo(repository);\n const branchInfo = await client.getBranchInfo(repository);\n\n config = {\n ...config,\n repository,\n head: branchInfo.revision,\n config: projectInfo,\n labels: projectInfo.labels ?? {},\n };\n const baseUrl = defaults.endpoint!;\n const url = getGerritRepoUrl(repository, baseUrl);\n configureScm(repository, config.gerritUsername!);\n await git.initRepo({ url });\n\n //abandon \"open\" and \"rejected\" changes at startup\n const rejectedChanges = await client.findChanges(config.repository!, {\n branchName: '',\n state: 'open',\n label: '-2',\n });\n for (const change of rejectedChanges) {\n await client.abandonChange(change._number);\n }\n const repoConfig: RepoResult = {\n defaultBranch: config.head!,\n isFork: false,\n repoFingerprint: repoFingerprint(repository, baseUrl),\n };\n return repoConfig;\n}\n\nexport async function findPr(\n findPRConfig: FindPRConfig,\n refreshCache?: boolean,\n): Promise<Pr | null> {\n const change = (\n await client.findChanges(config.repository!, findPRConfig, refreshCache)\n ).pop();\n return change ? mapGerritChangeToPr(change) : null;\n}\n\nexport async function getPr(number: number): Promise<Pr | null> {\n try {\n const change = await client.getChange(number);\n return mapGerritChangeToPr(change);\n } catch (err) {\n if (err.statusCode === 404) {\n return null;\n }\n throw err;\n }\n}\n\nexport async function updatePr(prConfig: UpdatePrConfig): Promise<void> {\n logger.debug(`updatePr(${prConfig.number}, ${prConfig.prTitle})`);\n if (prConfig.prBody) {\n await client.addMessageIfNotAlreadyExists(\n prConfig.number,\n prConfig.prBody,\n TAG_PULL_REQUEST_BODY,\n );\n }\n if (prConfig.state && prConfig.state === 'closed') {\n await client.abandonChange(prConfig.number);\n }\n}\n\nexport async function createPr(prConfig: CreatePRConfig): Promise<Pr | null> {\n logger.debug(\n `createPr(${prConfig.sourceBranch}, ${prConfig.prTitle}, ${\n prConfig.labels?.toString() ?? ''\n })`,\n );\n const pr = (\n await client.findChanges(\n config.repository!,\n {\n branchName: prConfig.sourceBranch,\n targetBranch: prConfig.targetBranch,\n state: 'open',\n },\n true,\n )\n ).pop();\n if (pr === undefined) {\n throw new Error(\n `the change should be created automatically from previous push to refs/for/${prConfig.sourceBranch}`,\n );\n }\n await client.addMessageIfNotAlreadyExists(\n pr._number,\n prConfig.prBody,\n TAG_PULL_REQUEST_BODY,\n );\n return getPr(pr._number);\n}\n\nexport async function getBranchPr(branchName: string): Promise<Pr | null> {\n const change = (\n await client.findChanges(config.repository!, { branchName, state: 'open' })\n ).pop();\n return change ? mapGerritChangeToPr(change) : null;\n}\n\nexport function getPrList(): Promise<Pr[]> {\n return client\n .findChanges(config.repository!, { branchName: '' })\n .then((res) => res.map((change) => mapGerritChangeToPr(change)));\n}\n\nexport async function mergePr(config: MergePRConfig): Promise<boolean> {\n logger.debug(\n `mergePr(${config.id}, ${config.branchName!}, ${config.strategy!})`,\n );\n try {\n const change = await client.submitChange(config.id);\n return change.status === 'MERGED';\n } catch (err) {\n if (err.statusCode === 409) {\n logger.warn(\n { err },\n \"Can't submit the change, because the submit rule doesn't allow it.\",\n );\n return false;\n }\n throw err;\n }\n}\n\n/**\n * BranchStatus for Gerrit assumes that the branchName refers to a change.\n * @param branchName\n */\nexport async function getBranchStatus(\n branchName: string,\n): Promise<BranchStatus> {\n logger.debug(`getBranchStatus(${branchName})`);\n const changes = await client.findChanges(\n config.repository!,\n { state: 'open', branchName },\n true,\n );\n if (changes.length > 0) {\n const allSubmittable =\n changes.filter((change) => change.submittable === true).length ===\n changes.length;\n if (allSubmittable) {\n return 'green';\n }\n const hasProblems =\n changes.filter((change) => change.problems.length > 0).length > 0;\n if (hasProblems) {\n return 'red';\n }\n const hasBlockingLabels =\n changes.filter((change) =>\n Object.values(change.labels ?? {}).some((label) => label.blocking),\n ).length > 0;\n if (hasBlockingLabels) {\n return 'red';\n }\n }\n return 'yellow';\n}\n\n/**\n * check the gerrit-change for the presence of the corresponding \"$context\" Gerrit label if configured,\n * return 'yellow' if not configured or not set\n * @param branchName\n * @param context renovate/stability-days || ...\n */\nexport async function getBranchStatusCheck(\n branchName: string,\n context: string,\n): Promise<BranchStatus | null> {\n const label = config.labels[context];\n if (label) {\n const change = (\n await client.findChanges(\n config.repository!,\n { branchName, state: 'open' },\n true,\n )\n ).pop();\n if (change) {\n const labelRes = change.labels?.[context];\n if (labelRes) {\n // Check for rejected first, as a label could have both rejected and approved\n if (labelRes.rejected) {\n return 'red';\n }\n if (labelRes.approved) {\n return 'green';\n }\n }\n }\n }\n return 'yellow';\n}\n\n/**\n * Apply the branch state $context to the corresponding gerrit label (if available)\n * context === \"renovate/stability-days\" / \"renovate/merge-confidence\" and state === \"green\"/...\n * @param branchStatusConfig\n */\nexport async function setBranchStatus(\n branchStatusConfig: BranchStatusConfig,\n): Promise<void> {\n const label = config.labels[branchStatusConfig.context];\n const labelValue =\n label && mapBranchStatusToLabel(branchStatusConfig.state, label);\n if (branchStatusConfig.context && labelValue) {\n const pr = await getBranchPr(branchStatusConfig.branchName);\n if (pr === null) {\n return;\n }\n await client.setLabel(pr.number, branchStatusConfig.context, labelValue);\n }\n}\n\nexport function getRawFile(\n fileName: string,\n repoName?: string,\n branchOrTag?: string,\n): Promise<string | null> {\n const repo = repoName ?? config.repository ?? 'All-Projects';\n const branch =\n branchOrTag ?? (repo === config.repository ? config.head! : 'HEAD');\n return client.getFile(repo, branch, fileName);\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\nexport async function addReviewers(\n number: number,\n reviewers: string[],\n): Promise<void> {\n await client.addReviewers(number, reviewers);\n}\n\n/**\n * add \"CC\" (only one possible)\n */\nexport async function addAssignees(\n number: number,\n assignees: string[],\n): Promise<void> {\n if (assignees.length) {\n if (assignees.length > 1) {\n logger.debug(\n `addAssignees(${number}, ${assignees.toString()}) called with more then one assignee! Gerrit only supports one assignee! Using the first from list.`,\n );\n }\n await client.addAssignee(number, assignees[0]);\n }\n}\n\nexport async function ensureComment(\n ensureComment: EnsureCommentConfig,\n): Promise<boolean> {\n logger.debug(\n `ensureComment(${ensureComment.number}, ${ensureComment.topic!}, ${\n ensureComment.content\n })`,\n );\n await client.addMessageIfNotAlreadyExists(\n ensureComment.number,\n ensureComment.content,\n ensureComment.topic ?? undefined,\n );\n return true;\n}\n\nexport function massageMarkdown(prBody: string): string {\n //TODO: do more Gerrit specific replacements?\n return smartTruncate(readOnlyIssueBody(prBody), maxBodyLength())\n .replace(regEx(/Pull Request(s)?/g), 'Change-Request$1')\n .replace(regEx(/\\bPR(s)?\\b/g), 'Change-Request$1')\n .replace(regEx(/<\\/?summary>/g), '**')\n .replace(regEx(/<\\/?details>/g), '')\n .replace(regEx(/&#8203;/g), '') //remove zero-width-space not supported in gerrit-markdown\n .replace(\n 'close this Change-Request unmerged.',\n 'abandon or down vote this Change-Request with -2.',\n )\n .replace('Branch creation', 'Change creation')\n .replace(\n 'Close this Change-Request',\n 'Down-vote this Change-Request with -2',\n )\n .replace(\n 'you tick the rebase/retry checkbox',\n 'add \"rebase!\" at the beginning of the commit message.',\n )\n .replace(regEx(`\\n---\\n\\n.*?<!-- rebase-check -->.*?\\n`), '')\n .replace(regEx(/<!--renovate-(?:debug|config-hash):.*?-->/g), '');\n}\n\nexport function maxBodyLength(): number {\n return 16384; //TODO: check the real gerrit limit (max. chars)\n}\n\nexport function deleteLabel(number: number, label: string): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureCommentRemoval(\n ensureCommentRemoval:\n | EnsureCommentRemovalConfigByTopic\n | EnsureCommentRemovalConfigByContent,\n): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureIssueClosing(title: string): Promise<void> {\n return Promise.resolve();\n}\n\nexport function ensureIssue(\n issueConfig: EnsureIssueConfig,\n): Promise<EnsureIssueResult | null> {\n return Promise.resolve(null);\n}\n\nexport function findIssue(title: string): Promise<Issue | null> {\n return Promise.resolve(null);\n}\n\nexport function getIssueList(): Promise<Issue[]> {\n return Promise.resolve([]);\n}\n"]}
@@ -109,17 +109,16 @@ class GerritScm extends default_scm_1.DefaultGitScm {
109
109
  hasChanges = await git.hasDiff('HEAD', 'FETCH_HEAD'); //avoid empty patchsets
110
110
  }
111
111
  if (hasChanges || commit.force) {
112
+ const pushOptions = ['notify=NONE'];
113
+ if (commit.autoApprove) {
114
+ pushOptions.push('label=Code-Review+2');
115
+ }
112
116
  const pushResult = await git.pushCommit({
113
117
  sourceRef: commit.branchName,
114
- targetRef: `refs/for/${commit.baseBranch}%notify=NONE`,
118
+ targetRef: `refs/for/${commit.baseBranch}%${pushOptions.join(',')}`,
115
119
  files: commit.files,
116
120
  });
117
121
  if (pushResult) {
118
- //existingChange was the old change before commit/push. we need to approve again, if it was previously approved from renovate
119
- if (existingChange &&
120
- client_1.client.wasApprovedBy(existingChange, username)) {
121
- await client_1.client.approveChange(existingChange._number);
122
- }
123
122
  return commitSha;
124
123
  }
125
124
  }