reviewflow 3.39.0 → 3.39.1

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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.39.1](https://github.com/DGouron/review-flow/compare/reviewflow-v3.39.0...reviewflow-v3.39.1) (2026-06-20)
9
+
10
+
11
+ ### Fixed
12
+
13
+ * **deps:** patch hono, ws, qs, vite advisories via resolutions ([120dec1](https://github.com/DGouron/review-flow/commit/120dec1b98039401e6ad69e7fbe1a48a8591caf2))
14
+ * **stats:** real GitLab diff stats + backfill null-poisoned reviews ([03ee814](https://github.com/DGouron/review-flow/commit/03ee814c0900dd43dd982c4ddfb62d53a2c588c7))
15
+ * **stats:** real GitLab diff stats + backfill null-poisoned reviews (spec-206, spec-207) ([fa166d9](https://github.com/DGouron/review-flow/commit/fa166d985b109c252853ed6c7a7052ecb41d8ad7))
16
+
8
17
  ## [3.39.0](https://github.com/DGouron/review-flow/compare/reviewflow-v3.38.0...reviewflow-v3.39.0) (2026-06-20)
9
18
 
10
19
 
@@ -5,6 +5,8 @@ export type CommandExecutor = SimpleCommandExecutor;
5
5
  export declare class GitLabDiffStatsFetchGateway implements DiffStatsFetchGateway {
6
6
  private readonly executor;
7
7
  constructor(executor: CommandExecutor);
8
- fetchDiffStats(projectPath: string, mergeRequestNumber: number): DiffStats | null;
8
+ fetchDiffStats(projectPath: string, mergeRequestNumber: number): DiffStats;
9
+ private fetchDiffSummary;
10
+ private fetchCommitsCount;
9
11
  }
10
12
  //# sourceMappingURL=diffStatsFetch.gitlab.gateway.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diffStatsFetch.gitlab.gateway.d.ts","sourceRoot":"","sources":["../../../../../src/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAC;AACzF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sEAAsE,CAAC;AAClH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAOpD,qBAAa,2BAA4B,YAAW,qBAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAEtD,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CA8BlF"}
1
+ {"version":3,"file":"diffStatsFetch.gitlab.gateway.d.ts","sourceRoot":"","sources":["../../../../../src/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAC;AACzF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sEAAsE,CAAC;AAClH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,MAAM,eAAe,GAAG,qBAAqB,CAAC;AA4BpD,qBAAa,2BAA4B,YAAW,qBAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAEtD,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,SAAS;IAW1E,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,iBAAiB;CAQ1B"}
@@ -1,28 +1,44 @@
1
+ function readField(value, field) {
2
+ if (typeof value !== 'object' || value === null || !(field in value)) {
3
+ throw new Error(`GitLab GraphQL response is missing "${field}"`);
4
+ }
5
+ return Reflect.get(value, field);
6
+ }
7
+ function extractDiffStatsSummary(response) {
8
+ const project = readField(readField(response, 'data'), 'project');
9
+ const mergeRequest = readField(project, 'mergeRequest');
10
+ const summary = readField(mergeRequest, 'diffStatsSummary');
11
+ const additions = readField(summary, 'additions');
12
+ const deletions = readField(summary, 'deletions');
13
+ if (typeof additions !== 'number' || typeof deletions !== 'number') {
14
+ throw new Error('GitLab GraphQL diff summary is missing additions or deletions');
15
+ }
16
+ return { additions, deletions };
17
+ }
1
18
  export class GitLabDiffStatsFetchGateway {
2
19
  executor;
3
20
  constructor(executor) {
4
21
  this.executor = executor;
5
22
  }
6
23
  fetchDiffStats(projectPath, mergeRequestNumber) {
7
- try {
8
- const encodedProject = projectPath.replace(/\//g, '%2F');
9
- const mrResponse = this.executor(`glab api projects/${encodedProject}/merge_requests/${mergeRequestNumber}`);
10
- const mergeRequest = JSON.parse(mrResponse);
11
- if (typeof mergeRequest.additions !== 'number' ||
12
- typeof mergeRequest.deletions !== 'number') {
13
- return null;
14
- }
15
- const commitsResponse = this.executor(`glab api projects/${encodedProject}/merge_requests/${mergeRequestNumber}/commits`);
16
- const commits = JSON.parse(commitsResponse);
17
- return {
18
- additions: mergeRequest.additions,
19
- deletions: mergeRequest.deletions,
20
- commitsCount: Array.isArray(commits) ? commits.length : 0,
21
- };
22
- }
23
- catch {
24
- return null;
25
- }
24
+ const summary = this.fetchDiffSummary(projectPath, mergeRequestNumber);
25
+ const commitsCount = this.fetchCommitsCount(projectPath, mergeRequestNumber);
26
+ return {
27
+ additions: summary.additions,
28
+ deletions: summary.deletions,
29
+ commitsCount,
30
+ };
31
+ }
32
+ fetchDiffSummary(projectPath, mergeRequestNumber) {
33
+ const query = `query { project(fullPath:"${projectPath}") { mergeRequest(iid:"${mergeRequestNumber}") { diffStatsSummary { additions deletions fileCount } } } }`;
34
+ const response = this.executor(`glab api graphql -f query='${query}'`);
35
+ return extractDiffStatsSummary(JSON.parse(response));
36
+ }
37
+ fetchCommitsCount(projectPath, mergeRequestNumber) {
38
+ const encodedProject = projectPath.replace(/\//g, '%2F');
39
+ const commitsResponse = this.executor(`glab api projects/${encodedProject}/merge_requests/${mergeRequestNumber}/commits`);
40
+ const commits = JSON.parse(commitsResponse);
41
+ return Array.isArray(commits) ? commits.length : 0;
26
42
  }
27
43
  }
28
44
  //# sourceMappingURL=diffStatsFetch.gitlab.gateway.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diffStatsFetch.gitlab.gateway.js","sourceRoot":"","sources":["../../../../../src/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAE1D,cAAc,CAAC,WAAmB,EAAE,kBAA0B;QAC5D,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEzD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAC9B,qBAAqB,cAAc,mBAAmB,kBAAkB,EAAE,CAC3E,CAAC;YACF,MAAM,YAAY,GAAoC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE7E,IACE,OAAO,YAAY,CAAC,SAAS,KAAK,QAAQ;gBAC1C,OAAO,YAAY,CAAC,SAAS,KAAK,QAAQ,EAC1C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CACnC,qBAAqB,cAAc,mBAAmB,kBAAkB,UAAU,CACnF,CAAC;YACF,MAAM,OAAO,GAAc,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAEvD,OAAO;gBACL,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC1D,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"diffStatsFetch.gitlab.gateway.js","sourceRoot":"","sources":["../../../../../src/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.ts"],"names":[],"mappings":"AAWA,SAAS,SAAS,CAAC,KAAc,EAAE,KAAa;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAiB;IAChD,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAElD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAE1D,cAAc,CAAC,WAAmB,EAAE,kBAA0B;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAE7E,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY;SACb,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,WAAmB,EAAE,kBAA0B;QACtE,MAAM,KAAK,GAAG,6BAA6B,WAAW,0BAA0B,kBAAkB,+DAA+D,CAAC;QAClK,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,8BAA8B,KAAK,GAAG,CAAC,CAAC;QACvE,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,iBAAiB,CAAC,WAAmB,EAAE,kBAA0B;QACvE,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CACnC,qBAAqB,cAAc,mBAAmB,kBAAkB,UAAU,CACnF,CAAC;QACF,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACrD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -5,7 +5,7 @@ export async function backfillDiffStats(input, dependencies) {
5
5
  if (!stats) {
6
6
  return { total: 0, completed: 0, failed: 0, status: 'completed' };
7
7
  }
8
- const reviewsNeedingBackfill = stats.reviews.filter((review) => review.diffStats === undefined || !('diffStats' in review));
8
+ const reviewsNeedingBackfill = stats.reviews.filter((review) => review.diffStats === null || review.diffStats === undefined);
9
9
  if (reviewsNeedingBackfill.length === 0) {
10
10
  return { total: 0, completed: 0, failed: 0, status: 'completed' };
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backfillDiffStats.usecase.js","sourceRoot":"","sources":["../../../../../src/modules/statistics-insights/usecases/stats/backfillDiffStats.usecase.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA6B,EAC7B,YAA2C;IAE3C,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IACrE,MAAM,EAAE,WAAW,EAAE,SAAS,GAAG,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE/E,MAAM,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACjD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,CACvE,CAAC;IAEF,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,QAAQ,GAAqB;QACjC,KAAK,EAAE,sBAAsB,CAAC,MAAM;QACpC,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC;QAC7F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEjE,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3F,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3F,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;gBACxB,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,CAAC;YAED,QAAQ,CAAC,SAAS,EAAE,CAAC;YACrB,UAAU,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC;QAC9D,IAAI,CAAC,WAAW,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;IAE9B,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAElD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"backfillDiffStats.usecase.js","sourceRoot":"","sources":["../../../../../src/modules/statistics-insights/usecases/stats/backfillDiffStats.usecase.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA6B,EAC7B,YAA2C;IAE3C,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IACrE,MAAM,EAAE,WAAW,EAAE,SAAS,GAAG,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE/E,MAAM,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACjD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CACxE,CAAC;IAEF,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,QAAQ,GAAqB;QACjC,KAAK,EAAE,sBAAsB,CAAC,MAAM;QACpC,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC;QAC7F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEjE,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3F,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3F,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;gBACxB,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,CAAC;YAED,QAAQ,CAAC,SAAS,EAAE,CAAC;YACrB,UAAU,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC;QAC9D,IAAI,CAAC,WAAW,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;IAE9B,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAElD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * SPEC-206 — Fix the GitLab change-size source
3
+ *
4
+ * Outer-loop acceptance test (SDD): drives the REAL GitLabDiffStatsFetchGateway
5
+ * through the production fetchDiffStatsSafely helper with a stubbed
6
+ * SimpleCommandExecutor and a pino silent logger.
7
+ *
8
+ * Scenarios from docs/specs/206-fix-gitlab-diff-stats-source.md:
9
+ * 1. gitlab with changes → real additions/deletions, no warning
10
+ * 2. gitlab no diff summary → no change-size data + warning logged
11
+ * 3. gitlab fetch error → no change-size data + warning logged
12
+ *
13
+ * GitHub-unchanged (rule 4 / scenario "github unchanged") is covered by the
14
+ * untouched GitHub gateway unit test — no new acceptance needed here.
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=206-fix-gitlab-diff-stats-source.acceptance.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"206-fix-gitlab-diff-stats-source.acceptance.test.d.ts","sourceRoot":"","sources":["../../../src/tests/acceptance/206-fix-gitlab-diff-stats-source.acceptance.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * SPEC-206 — Fix the GitLab change-size source
3
+ *
4
+ * Outer-loop acceptance test (SDD): drives the REAL GitLabDiffStatsFetchGateway
5
+ * through the production fetchDiffStatsSafely helper with a stubbed
6
+ * SimpleCommandExecutor and a pino silent logger.
7
+ *
8
+ * Scenarios from docs/specs/206-fix-gitlab-diff-stats-source.md:
9
+ * 1. gitlab with changes → real additions/deletions, no warning
10
+ * 2. gitlab no diff summary → no change-size data + warning logged
11
+ * 3. gitlab fetch error → no change-size data + warning logged
12
+ *
13
+ * GitHub-unchanged (rule 4 / scenario "github unchanged") is covered by the
14
+ * untouched GitHub gateway unit test — no new acceptance needed here.
15
+ */
16
+ import { pino } from 'pino';
17
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
18
+ import { GitLabDiffStatsFetchGateway } from '../../modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js';
19
+ import { fetchDiffStatsSafely } from '../../modules/statistics-insights/services/fetchDiffStatsSafely.js';
20
+ function graphqlEnvelope(diffStatsSummary) {
21
+ return JSON.stringify({ data: { project: { mergeRequest: { diffStatsSummary } } } });
22
+ }
23
+ describe('Acceptance — SPEC-206: Fix the GitLab change-size source', () => {
24
+ let logger;
25
+ beforeEach(() => {
26
+ logger = pino({ level: 'silent' });
27
+ });
28
+ describe('Rule: a merge request that exposes a diff summary yields its real additions and deletions', () => {
29
+ it('gitlab with changes: returns real additions/deletions without logging a warning', () => {
30
+ const warnSpy = vi.spyOn(logger, 'warn');
31
+ const executor = (command) => {
32
+ if (command.includes('/commits')) {
33
+ return JSON.stringify([{ id: 'c1' }, { id: 'c2' }]);
34
+ }
35
+ return graphqlEnvelope({ additions: 629, deletions: 3, fileCount: 11 });
36
+ };
37
+ const gateway = new GitLabDiffStatsFetchGateway(executor);
38
+ const fetched = fetchDiffStatsSafely(gateway, 'group/proj', 5444, logger);
39
+ expect(fetched).toEqual({ commitsCount: 2, additions: 629, deletions: 3 });
40
+ expect(warnSpy).not.toHaveBeenCalled();
41
+ });
42
+ });
43
+ describe('Rule: a fetch with no usable diff summary yields no change-size data and is logged as a warning', () => {
44
+ it('gitlab no diff summary: returns null and logs a warning once', () => {
45
+ const warnSpy = vi.spyOn(logger, 'warn');
46
+ const executor = (command) => {
47
+ if (command.includes('/commits')) {
48
+ return JSON.stringify([{ id: 'c1' }]);
49
+ }
50
+ return JSON.stringify({ data: { project: { mergeRequest: null } } });
51
+ };
52
+ const gateway = new GitLabDiffStatsFetchGateway(executor);
53
+ const fetched = fetchDiffStatsSafely(gateway, 'group/proj', 9999, logger);
54
+ expect(fetched).toBeNull();
55
+ expect(warnSpy).toHaveBeenCalledOnce();
56
+ });
57
+ it('gitlab fetch error: returns null and logs a warning once', () => {
58
+ const warnSpy = vi.spyOn(logger, 'warn');
59
+ const executor = () => {
60
+ throw new Error('glab unreachable');
61
+ };
62
+ const gateway = new GitLabDiffStatsFetchGateway(executor);
63
+ const fetched = fetchDiffStatsSafely(gateway, 'missing', 1, logger);
64
+ expect(fetched).toBeNull();
65
+ expect(warnSpy).toHaveBeenCalledOnce();
66
+ });
67
+ });
68
+ });
69
+ //# sourceMappingURL=206-fix-gitlab-diff-stats-source.acceptance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"206-fix-gitlab-diff-stats-source.acceptance.test.js","sourceRoot":"","sources":["../../../src/tests/acceptance/206-fix-gitlab-diff-stats-source.acceptance.test.ts"],"names":[],"mappings":"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"}
@@ -1,88 +1,127 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { GitLabDiffStatsFetchGateway } from '../../../../modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js';
3
+ function graphqlEnvelope(diffStatsSummary) {
4
+ return JSON.stringify({ data: { project: { mergeRequest: { diffStatsSummary } } } });
5
+ }
3
6
  describe('GitLabDiffStatsFetchGateway', () => {
4
7
  describe('fetchDiffStats', () => {
5
- it('should parse additions, deletions from MR API and count commits', () => {
8
+ it('should read additions/deletions from GraphQL diff summary and count commits', () => {
6
9
  const stubExecutor = (command) => {
7
10
  if (command.includes('/commits')) {
8
11
  return JSON.stringify([{ id: 'commit1' }, { id: 'commit2' }, { id: 'commit3' }]);
9
12
  }
10
- return JSON.stringify({
11
- changes_count: '5',
12
- additions: 150,
13
- deletions: 30,
14
- });
13
+ return graphqlEnvelope({ additions: 629, deletions: 3, fileCount: 11 });
15
14
  };
16
15
  const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
17
- const result = gateway.fetchDiffStats('group/project', 42);
18
- expect(result).not.toBeNull();
19
- expect(result?.additions).toBe(150);
20
- expect(result?.deletions).toBe(30);
21
- expect(result?.commitsCount).toBe(3);
16
+ const result = gateway.fetchDiffStats('group/project', 5444);
17
+ expect(result).toEqual({ commitsCount: 3, additions: 629, deletions: 3 });
22
18
  });
23
- it('should encode project path for API URL', () => {
19
+ it('should emit a GraphQL query with the raw project fullPath and merge request iid', () => {
24
20
  const capturedCommands = [];
25
21
  const stubExecutor = (command) => {
26
22
  capturedCommands.push(command);
27
23
  if (command.includes('/commits')) {
28
24
  return JSON.stringify([{ id: 'commit1' }]);
29
25
  }
30
- return JSON.stringify({ additions: 0, deletions: 0 });
26
+ return graphqlEnvelope({ additions: 0, deletions: 0, fileCount: 0 });
31
27
  };
32
28
  const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
33
29
  gateway.fetchDiffStats('group/project', 99);
34
- expect(capturedCommands[0]).toContain('group%2Fproject');
35
- expect(capturedCommands[0]).toContain('merge_requests/99');
30
+ const graphqlCommand = capturedCommands.find((command) => command.includes('graphql'));
31
+ expect(graphqlCommand).toBeDefined();
32
+ expect(graphqlCommand).toContain('fullPath:"group/project"');
33
+ expect(graphqlCommand).toContain('iid:"99"');
36
34
  });
37
- it('should return null when MR API call throws', () => {
38
- const stubExecutor = () => {
39
- throw new Error('API error');
35
+ it('should encode the project path for the REST commits call', () => {
36
+ const capturedCommands = [];
37
+ const stubExecutor = (command) => {
38
+ capturedCommands.push(command);
39
+ if (command.includes('/commits')) {
40
+ return JSON.stringify([{ id: 'commit1' }]);
41
+ }
42
+ return graphqlEnvelope({ additions: 0, deletions: 0, fileCount: 0 });
40
43
  };
41
44
  const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
42
- const result = gateway.fetchDiffStats('group/project', 42);
43
- expect(result).toBeNull();
45
+ gateway.fetchDiffStats('group/project', 99);
46
+ const commitsCommand = capturedCommands.find((command) => command.includes('/commits'));
47
+ expect(commitsCommand).toContain('group%2Fproject');
48
+ expect(commitsCommand).toContain('merge_requests/99/commits');
44
49
  });
45
- it('should return null when commits API call throws', () => {
50
+ it('should throw when the project is missing from the GraphQL response', () => {
51
+ const stubExecutor = (command) => {
52
+ if (command.includes('/commits')) {
53
+ return JSON.stringify([{ id: 'commit1' }]);
54
+ }
55
+ return JSON.stringify({ data: { project: null } });
56
+ };
57
+ const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
58
+ expect(() => gateway.fetchDiffStats('group/project', 42)).toThrow();
59
+ });
60
+ it('should throw when the merge request is missing from the GraphQL response', () => {
61
+ const stubExecutor = (command) => {
62
+ if (command.includes('/commits')) {
63
+ return JSON.stringify([{ id: 'commit1' }]);
64
+ }
65
+ return JSON.stringify({ data: { project: { mergeRequest: null } } });
66
+ };
67
+ const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
68
+ expect(() => gateway.fetchDiffStats('group/project', 42)).toThrow();
69
+ });
70
+ it('should throw when the diff summary is missing from the GraphQL response', () => {
71
+ const stubExecutor = (command) => {
72
+ if (command.includes('/commits')) {
73
+ return JSON.stringify([{ id: 'commit1' }]);
74
+ }
75
+ return JSON.stringify({ data: { project: { mergeRequest: { diffStatsSummary: null } } } });
76
+ };
77
+ const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
78
+ expect(() => gateway.fetchDiffStats('group/project', 42)).toThrow();
79
+ });
80
+ it('should throw when the GraphQL call throws', () => {
81
+ const stubExecutor = (command) => {
82
+ if (command.includes('graphql')) {
83
+ throw new Error('GraphQL API error');
84
+ }
85
+ return JSON.stringify([{ id: 'commit1' }]);
86
+ };
87
+ const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
88
+ expect(() => gateway.fetchDiffStats('group/project', 42)).toThrow();
89
+ });
90
+ it('should throw when the commits call throws', () => {
46
91
  const stubExecutor = (command) => {
47
92
  if (command.includes('/commits')) {
48
93
  throw new Error('Commits API error');
49
94
  }
50
- return JSON.stringify({ additions: 10, deletions: 5 });
95
+ return graphqlEnvelope({ additions: 10, deletions: 5, fileCount: 2 });
51
96
  };
52
97
  const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
53
- const result = gateway.fetchDiffStats('group/project', 42);
54
- expect(result).toBeNull();
98
+ expect(() => gateway.fetchDiffStats('group/project', 42)).toThrow();
55
99
  });
56
- it('should return null when MR response is malformed', () => {
100
+ it('should throw when the GraphQL response is malformed JSON', () => {
57
101
  const stubExecutor = () => 'not valid json';
58
102
  const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
59
- const result = gateway.fetchDiffStats('group/project', 42);
60
- expect(result).toBeNull();
103
+ expect(() => gateway.fetchDiffStats('group/project', 42)).toThrow();
61
104
  });
62
- it('should handle MR with zero additions and deletions', () => {
105
+ it('should return zero additions and deletions without throwing', () => {
63
106
  const stubExecutor = (command) => {
64
107
  if (command.includes('/commits')) {
65
108
  return JSON.stringify([{ id: 'commit1' }]);
66
109
  }
67
- return JSON.stringify({ additions: 0, deletions: 0 });
110
+ return graphqlEnvelope({ additions: 0, deletions: 0, fileCount: 0 });
68
111
  };
69
112
  const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
70
113
  const result = gateway.fetchDiffStats('group/project', 10);
71
- expect(result).not.toBeNull();
72
- expect(result?.additions).toBe(0);
73
- expect(result?.deletions).toBe(0);
74
- expect(result?.commitsCount).toBe(1);
114
+ expect(result).toEqual({ commitsCount: 1, additions: 0, deletions: 0 });
75
115
  });
76
- it('should handle empty commits array', () => {
116
+ it('should count zero commits when the commits array is empty', () => {
77
117
  const stubExecutor = (command) => {
78
118
  if (command.includes('/commits')) {
79
119
  return JSON.stringify([]);
80
120
  }
81
- return JSON.stringify({ additions: 10, deletions: 5 });
121
+ return graphqlEnvelope({ additions: 10, deletions: 5, fileCount: 1 });
82
122
  };
83
123
  const gateway = new GitLabDiffStatsFetchGateway(stubExecutor);
84
124
  const result = gateway.fetchDiffStats('group/project', 42);
85
- expect(result).not.toBeNull();
86
125
  expect(result?.commitsCount).toBe(0);
87
126
  });
88
127
  });
@@ -1 +1 @@
1
- {"version":3,"file":"diffStatsFetch.gitlab.gateway.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diffStatsFetch.gitlab.gateway.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.ts"],"names":[],"mappings":"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"}
@@ -42,18 +42,22 @@ describe('backfillDiffStats', () => {
42
42
  expect(result.status).toBe('completed');
43
43
  expect(diffStatsFetchGateway.fetchCallCount).toBe(0);
44
44
  });
45
- it('should skip reviews that have diffStats === null (already attempted)', async () => {
45
+ it('should retry reviews that have diffStats === null (poisoned by a failed fetch)', async () => {
46
46
  const statsGateway = new InMemoryStatsGateway();
47
47
  const diffStatsFetchGateway = new StubDiffStatsFetchGateway();
48
48
  const reviews = [ReviewStatsFactory.create({ id: 'r1', mrNumber: 10, diffStats: null })];
49
49
  const projectStats = ProjectStatsFactory.create({ reviews });
50
50
  statsGateway.saveProjectStats('/test/project', projectStats);
51
+ diffStatsFetchGateway.setResponse(10, { commitsCount: 3, additions: 100, deletions: 20 });
51
52
  const promise = backfillDiffStats({ projectPath: '/test/project', batchSize: 10, batchDelayMs: 0 }, { statsGateway, diffStatsFetchGateway, logger: { warn: vi.fn() } });
52
53
  await vi.runAllTimersAsync();
53
54
  const result = await promise;
54
- expect(result.total).toBe(0);
55
- expect(result.completed).toBe(0);
56
- expect(diffStatsFetchGateway.fetchCallCount).toBe(0);
55
+ expect(result.total).toBe(1);
56
+ expect(result.completed).toBe(1);
57
+ expect(result.failed).toBe(0);
58
+ expect(diffStatsFetchGateway.fetchCallCount).toBe(1);
59
+ const saved = statsGateway.loadProjectStats('/test/project');
60
+ expect(saved?.reviews[0].diffStats).toEqual({ commitsCount: 3, additions: 100, deletions: 20 });
57
61
  });
58
62
  it('should call onProgress after each review', async () => {
59
63
  const statsGateway = new InMemoryStatsGateway();
@@ -137,7 +141,7 @@ describe('backfillDiffStats', () => {
137
141
  const diffStatsFetchGateway = new StubDiffStatsFetchGateway();
138
142
  const reviews = [
139
143
  ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 10, deletions: 5 }, { id: 'r1', mrNumber: 10 }),
140
- ReviewStatsFactory.create({ id: 'r2', mrNumber: 11, diffStats: null }),
144
+ ReviewStatsFactory.withDiffStats({ commitsCount: 2, additions: 20, deletions: 10 }, { id: 'r2', mrNumber: 11 }),
141
145
  ];
142
146
  const projectStats = ProjectStatsFactory.create({ reviews });
143
147
  statsGateway.saveProjectStats('/test/project', projectStats);
@@ -1 +1 @@
1
- {"version":3,"file":"backfillDiffStats.usecase.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/stats/backfillDiffStats.usecase.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backfillDiffStats.usecase.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/stats/backfillDiffStats.usecase.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reviewflow",
3
- "version": "3.39.0",
3
+ "version": "3.39.1",
4
4
  "description": "AI-powered code review automation for GitLab/GitHub using Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/main/server.js",
@@ -92,9 +92,13 @@
92
92
  "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e",
93
93
  "resolutions": {
94
94
  "esbuild": "^0.25.0",
95
- "vitest/vite": "^7.3.2",
96
- "@vitest/coverage-v8/vite": "^7.3.2",
97
- "@vitest/ui/vite": "^7.3.2",
98
- "vite-node/vite": "^7.3.2"
95
+ "hono": "^4.12.25",
96
+ "ws": "^8.21.0",
97
+ "qs": "^6.15.2",
98
+ "vitest/vite": "^7.3.5",
99
+ "@vitest/coverage-v8/vite": "^7.3.5",
100
+ "@vitest/ui/vite": "^7.3.5",
101
+ "vite-node/vite": "^7.3.5",
102
+ "vitepress/vite": "^6.4.3"
99
103
  }
100
104
  }