apex-code-coverage-transformer 2.13.3 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +276 -9
  3. package/lib/handlers/BaseHandler.d.ts +51 -0
  4. package/lib/handlers/BaseHandler.js +63 -0
  5. package/lib/handlers/BaseHandler.js.map +1 -0
  6. package/lib/handlers/HandlerRegistry.d.ts +90 -0
  7. package/lib/handlers/HandlerRegistry.js +103 -0
  8. package/lib/handlers/HandlerRegistry.js.map +1 -0
  9. package/lib/handlers/clover.d.ts +16 -2
  10. package/lib/handlers/clover.js +35 -16
  11. package/lib/handlers/clover.js.map +1 -1
  12. package/lib/handlers/cobertura.d.ts +11 -2
  13. package/lib/handlers/cobertura.js +23 -11
  14. package/lib/handlers/cobertura.js.map +1 -1
  15. package/lib/handlers/getHandler.d.ts +24 -0
  16. package/lib/handlers/getHandler.js +27 -19
  17. package/lib/handlers/getHandler.js.map +1 -1
  18. package/lib/handlers/istanbulJson.d.ts +18 -2
  19. package/lib/handlers/istanbulJson.js +28 -1
  20. package/lib/handlers/istanbulJson.js.map +1 -1
  21. package/lib/handlers/jacoco.d.ts +18 -2
  22. package/lib/handlers/jacoco.js +27 -1
  23. package/lib/handlers/jacoco.js.map +1 -1
  24. package/lib/handlers/jsonSummary.d.ts +49 -0
  25. package/lib/handlers/jsonSummary.js +103 -0
  26. package/lib/handlers/jsonSummary.js.map +1 -0
  27. package/lib/handlers/lcov.d.ts +17 -2
  28. package/lib/handlers/lcov.js +29 -9
  29. package/lib/handlers/lcov.js.map +1 -1
  30. package/lib/handlers/opencover.d.ts +71 -0
  31. package/lib/handlers/opencover.js +165 -0
  32. package/lib/handlers/opencover.js.map +1 -0
  33. package/lib/handlers/simplecov.d.ts +50 -0
  34. package/lib/handlers/simplecov.js +83 -0
  35. package/lib/handlers/simplecov.js.map +1 -0
  36. package/lib/handlers/sonar.d.ts +10 -2
  37. package/lib/handlers/sonar.js +20 -2
  38. package/lib/handlers/sonar.js.map +1 -1
  39. package/lib/hooks/finally.d.ts +2 -0
  40. package/lib/hooks/{postrun.js → finally.js} +5 -4
  41. package/lib/hooks/finally.js.map +1 -0
  42. package/lib/transformers/reportGenerator.d.ts +2 -2
  43. package/lib/transformers/reportGenerator.js +7 -8
  44. package/lib/transformers/reportGenerator.js.map +1 -1
  45. package/lib/utils/constants.d.ts +5 -0
  46. package/lib/utils/constants.js +8 -1
  47. package/lib/utils/constants.js.map +1 -1
  48. package/lib/utils/types.d.ts +78 -1
  49. package/oclif.lock +2697 -3086
  50. package/oclif.manifest.json +8 -5
  51. package/package.json +2 -2
  52. package/lib/hooks/postrun.d.ts +0 -2
  53. package/lib/hooks/postrun.js.map +0 -1
@@ -1,5 +1,19 @@
1
- import { CloverCoverageObject, CoverageHandler } from '../utils/types.js';
2
- export declare class CloverCoverageHandler implements CoverageHandler {
1
+ import { CloverCoverageObject } from '../utils/types.js';
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ /**
4
+ * Handler for generating Clover XML coverage reports.
5
+ *
6
+ * Clover is a code coverage tool commonly used with Atlassian tools.
7
+ *
8
+ * Compatible with:
9
+ * - Bamboo
10
+ * - Bitbucket
11
+ * - Jenkins
12
+ * - Atlassian tools
13
+ *
14
+ * @see https://openclover.org/
15
+ */
16
+ export declare class CloverCoverageHandler extends BaseHandler {
3
17
  private readonly coverageObj;
4
18
  constructor();
5
19
  processFile(filePath: string, fileName: string, lines: Record<string, number>): void;
@@ -1,7 +1,23 @@
1
1
  'use strict';
2
- export class CloverCoverageHandler {
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ import { HandlerRegistry } from './HandlerRegistry.js';
4
+ /**
5
+ * Handler for generating Clover XML coverage reports.
6
+ *
7
+ * Clover is a code coverage tool commonly used with Atlassian tools.
8
+ *
9
+ * Compatible with:
10
+ * - Bamboo
11
+ * - Bitbucket
12
+ * - Jenkins
13
+ * - Atlassian tools
14
+ *
15
+ * @see https://openclover.org/
16
+ */
17
+ export class CloverCoverageHandler extends BaseHandler {
3
18
  coverageObj;
4
19
  constructor() {
20
+ super();
5
21
  this.coverageObj = {
6
22
  coverage: {
7
23
  '@generated': Date.now(),
@@ -31,18 +47,13 @@ export class CloverCoverageHandler {
31
47
  };
32
48
  }
33
49
  processFile(filePath, fileName, lines) {
34
- const uncoveredLines = Object.keys(lines)
35
- .filter((lineNumber) => lines[lineNumber] === 0)
36
- .map(Number);
37
- const coveredLines = Object.keys(lines)
38
- .filter((lineNumber) => lines[lineNumber] === 1)
39
- .map(Number);
50
+ const { totalLines, coveredLines } = this.calculateCoverage(lines);
40
51
  const fileObj = {
41
52
  '@name': fileName,
42
53
  '@path': filePath,
43
54
  metrics: {
44
- '@statements': uncoveredLines.length + coveredLines.length,
45
- '@coveredstatements': coveredLines.length,
55
+ '@statements': totalLines,
56
+ '@coveredstatements': coveredLines,
46
57
  '@conditionals': 0,
47
58
  '@coveredconditionals': 0,
48
59
  '@methods': 0,
@@ -59,20 +70,28 @@ export class CloverCoverageHandler {
59
70
  }
60
71
  this.coverageObj.coverage.project.file.push(fileObj);
61
72
  const projectMetrics = this.coverageObj.coverage.project.metrics;
62
- projectMetrics['@statements'] += uncoveredLines.length + coveredLines.length;
63
- projectMetrics['@coveredstatements'] += coveredLines.length;
64
- projectMetrics['@elements'] += uncoveredLines.length + coveredLines.length;
65
- projectMetrics['@coveredelements'] += coveredLines.length;
73
+ projectMetrics['@statements'] += totalLines;
74
+ projectMetrics['@coveredstatements'] += coveredLines;
75
+ projectMetrics['@elements'] += totalLines;
76
+ projectMetrics['@coveredelements'] += coveredLines;
66
77
  projectMetrics['@files'] += 1;
67
78
  projectMetrics['@classes'] += 1;
68
- projectMetrics['@loc'] += uncoveredLines.length + coveredLines.length;
69
- projectMetrics['@ncloc'] += uncoveredLines.length + coveredLines.length;
79
+ projectMetrics['@loc'] += totalLines;
80
+ projectMetrics['@ncloc'] += totalLines;
70
81
  }
71
82
  finalize() {
72
83
  if (this.coverageObj.coverage?.project?.file) {
73
- this.coverageObj.coverage.project.file.sort((a, b) => a['@path'].localeCompare(b['@path']));
84
+ this.coverageObj.coverage.project.file = this.sortByPath(this.coverageObj.coverage.project.file);
74
85
  }
75
86
  return this.coverageObj;
76
87
  }
77
88
  }
89
+ // Self-register this handler
90
+ HandlerRegistry.register({
91
+ name: 'clover',
92
+ description: 'Clover XML format for Atlassian tools',
93
+ fileExtension: '.xml',
94
+ handler: () => new CloverCoverageHandler(),
95
+ compatibleWith: ['Bamboo', 'Bitbucket', 'Jenkins'],
96
+ });
78
97
  //# sourceMappingURL=clover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clover.js","sourceRoot":"","sources":["../../src/handlers/clover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clover.js","sourceRoot":"","sources":["../../src/handlers/clover.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
- import { CoberturaCoverageObject, CoverageHandler } from '../utils/types.js';
2
- export declare class CoberturaCoverageHandler implements CoverageHandler {
1
+ import { CoberturaCoverageObject } from '../utils/types.js';
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ /**
4
+ * Handler for generating Cobertura XML coverage reports.
5
+ *
6
+ * Cobertura format is widely supported by many CI/CD platforms
7
+ * including Codecov, Azure DevOps, Jenkins, and GitLab.
8
+ *
9
+ * @see http://cobertura.github.io/cobertura/
10
+ */
11
+ export declare class CoberturaCoverageHandler extends BaseHandler {
3
12
  private readonly coverageObj;
4
13
  private packageMap;
5
14
  constructor();
@@ -1,8 +1,19 @@
1
1
  'use strict';
2
- export class CoberturaCoverageHandler {
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ import { HandlerRegistry } from './HandlerRegistry.js';
4
+ /**
5
+ * Handler for generating Cobertura XML coverage reports.
6
+ *
7
+ * Cobertura format is widely supported by many CI/CD platforms
8
+ * including Codecov, Azure DevOps, Jenkins, and GitLab.
9
+ *
10
+ * @see http://cobertura.github.io/cobertura/
11
+ */
12
+ export class CoberturaCoverageHandler extends BaseHandler {
3
13
  coverageObj;
4
14
  packageMap;
5
15
  constructor() {
16
+ super();
6
17
  this.coverageObj = {
7
18
  coverage: {
8
19
  '@lines-valid': 0,
@@ -31,6 +42,7 @@ export class CoberturaCoverageHandler {
31
42
  });
32
43
  }
33
44
  const packageObj = this.packageMap.get(packageName);
45
+ const { totalLines, coveredLines } = this.calculateCoverage(lines);
34
46
  const classObj = {
35
47
  '@name': fileName,
36
48
  '@filename': filePath,
@@ -39,14 +51,6 @@ export class CoberturaCoverageHandler {
39
51
  methods: {},
40
52
  lines: { line: [] },
41
53
  };
42
- const uncoveredLines = Object.keys(lines)
43
- .filter((lineNumber) => lines[lineNumber] === 0)
44
- .map(Number);
45
- const coveredLines = Object.keys(lines)
46
- .filter((lineNumber) => lines[lineNumber] === 1)
47
- .map(Number);
48
- const totalLines = uncoveredLines.length + coveredLines.length;
49
- const coveredLineCount = coveredLines.length;
50
54
  for (const [lineNumber, isCovered] of Object.entries(lines)) {
51
55
  classObj.lines.line.push({
52
56
  '@number': Number(lineNumber),
@@ -55,10 +59,10 @@ export class CoberturaCoverageHandler {
55
59
  });
56
60
  }
57
61
  if (totalLines > 0) {
58
- classObj['@line-rate'] = (coveredLineCount / totalLines).toFixed(4);
62
+ classObj['@line-rate'] = (coveredLines / totalLines).toFixed(4);
59
63
  }
60
64
  this.coverageObj.coverage['@lines-valid'] += totalLines;
61
- this.coverageObj.coverage['@lines-covered'] += coveredLineCount;
65
+ this.coverageObj.coverage['@lines-covered'] += coveredLines;
62
66
  packageObj.classes.class.push(classObj);
63
67
  this.packageMap.set(packageName, packageObj);
64
68
  }
@@ -79,4 +83,12 @@ export class CoberturaCoverageHandler {
79
83
  return this.coverageObj;
80
84
  }
81
85
  }
86
+ // Self-register this handler
87
+ HandlerRegistry.register({
88
+ name: 'cobertura',
89
+ description: 'Cobertura XML format for wide CI/CD compatibility',
90
+ fileExtension: '.xml',
91
+ handler: () => new CoberturaCoverageHandler(),
92
+ compatibleWith: ['Codecov', 'Azure DevOps', 'Jenkins', 'GitLab', 'GitHub Actions'],
93
+ });
82
94
  //# sourceMappingURL=cobertura.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cobertura.js","sourceRoot":"","sources":["../../src/handlers/cobertura.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cobertura.js","sourceRoot":"","sources":["../../src/handlers/cobertura.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,26 @@
1
1
  import { CoverageHandler } from '../utils/types.js';
2
+ import './sonar.js';
3
+ import './cobertura.js';
4
+ import './clover.js';
5
+ import './lcov.js';
6
+ import './jacoco.js';
7
+ import './istanbulJson.js';
8
+ import './jsonSummary.js';
9
+ import './simplecov.js';
10
+ import './opencover.js';
11
+ /**
12
+ * Get a coverage handler for the specified format.
13
+ *
14
+ * This function uses the HandlerRegistry to retrieve the appropriate handler.
15
+ * All handlers are automatically registered when this module is imported.
16
+ *
17
+ * @param format - The coverage format identifier
18
+ * @returns A new instance of the coverage handler
19
+ * @throws Error if the format is not supported
20
+ *
21
+ * @example
22
+ * const handler = getCoverageHandler('sonar');
23
+ * handler.processFile('path/to/file.cls', 'ClassName', { '1': 1, '2': 0 });
24
+ * const report = handler.finalize();
25
+ */
2
26
  export declare function getCoverageHandler(format: string): CoverageHandler;
@@ -1,23 +1,31 @@
1
1
  'use strict';
2
- import { CloverCoverageHandler } from './clover.js';
3
- import { CoberturaCoverageHandler } from './cobertura.js';
4
- import { SonarCoverageHandler } from './sonar.js';
5
- import { LcovCoverageHandler } from './lcov.js';
6
- import { JaCoCoCoverageHandler } from './jacoco.js';
7
- import { IstanbulCoverageHandler } from './istanbulJson.js';
2
+ import { HandlerRegistry } from './HandlerRegistry.js';
3
+ // Import all handlers to trigger self-registration
4
+ import './sonar.js';
5
+ import './cobertura.js';
6
+ import './clover.js';
7
+ import './lcov.js';
8
+ import './jacoco.js';
9
+ import './istanbulJson.js';
10
+ import './jsonSummary.js';
11
+ import './simplecov.js';
12
+ import './opencover.js';
13
+ /**
14
+ * Get a coverage handler for the specified format.
15
+ *
16
+ * This function uses the HandlerRegistry to retrieve the appropriate handler.
17
+ * All handlers are automatically registered when this module is imported.
18
+ *
19
+ * @param format - The coverage format identifier
20
+ * @returns A new instance of the coverage handler
21
+ * @throws Error if the format is not supported
22
+ *
23
+ * @example
24
+ * const handler = getCoverageHandler('sonar');
25
+ * handler.processFile('path/to/file.cls', 'ClassName', { '1': 1, '2': 0 });
26
+ * const report = handler.finalize();
27
+ */
8
28
  export function getCoverageHandler(format) {
9
- const handlers = {
10
- sonar: new SonarCoverageHandler(),
11
- cobertura: new CoberturaCoverageHandler(),
12
- clover: new CloverCoverageHandler(),
13
- lcovonly: new LcovCoverageHandler(),
14
- jacoco: new JaCoCoCoverageHandler(),
15
- json: new IstanbulCoverageHandler(),
16
- };
17
- const handler = handlers[format];
18
- if (!handler) {
19
- throw new Error(`Unsupported format: ${format}`);
20
- }
21
- return handler;
29
+ return HandlerRegistry.get(format);
22
30
  }
23
31
  //# sourceMappingURL=getHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getHandler.js","sourceRoot":"","sources":["../../src/handlers/getHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,QAAQ,GAAoC;QAChD,KAAK,EAAE,IAAI,oBAAoB,EAAE;QACjC,SAAS,EAAE,IAAI,wBAAwB,EAAE;QACzC,MAAM,EAAE,IAAI,qBAAqB,EAAE;QACnC,QAAQ,EAAE,IAAI,mBAAmB,EAAE;QACnC,MAAM,EAAE,IAAI,qBAAqB,EAAE;QACnC,IAAI,EAAE,IAAI,uBAAuB,EAAE;KACpC,CAAC;IAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"getHandler.js","sourceRoot":"","sources":["../../src/handlers/getHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,mDAAmD;AACnD,OAAO,YAAY,CAAC;AACpB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,gBAAgB,CAAC;AACxB,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"}
@@ -1,6 +1,22 @@
1
- import { IstanbulCoverageObject, CoverageHandler } from '../utils/types.js';
2
- export declare class IstanbulCoverageHandler implements CoverageHandler {
1
+ import { IstanbulCoverageObject } from '../utils/types.js';
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ /**
4
+ * Handler for generating Istanbul/NYC JSON coverage reports.
5
+ *
6
+ * Istanbul is the most widely-used JavaScript code coverage tool.
7
+ * This format is compatible with NYC, Codecov, and many other tools.
8
+ *
9
+ * Compatible with:
10
+ * - Istanbul/NYC
11
+ * - Codecov
12
+ * - Coveralls
13
+ * - Node.js coverage tools
14
+ *
15
+ * @see https://istanbul.js.org/
16
+ */
17
+ export declare class IstanbulCoverageHandler extends BaseHandler {
3
18
  private coverageMap;
19
+ constructor();
4
20
  processFile(filePath: string, fileName: string, lines: Record<string, number>): void;
5
21
  finalize(): IstanbulCoverageObject;
6
22
  }
@@ -1,6 +1,25 @@
1
1
  'use strict';
2
- export class IstanbulCoverageHandler {
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ import { HandlerRegistry } from './HandlerRegistry.js';
4
+ /**
5
+ * Handler for generating Istanbul/NYC JSON coverage reports.
6
+ *
7
+ * Istanbul is the most widely-used JavaScript code coverage tool.
8
+ * This format is compatible with NYC, Codecov, and many other tools.
9
+ *
10
+ * Compatible with:
11
+ * - Istanbul/NYC
12
+ * - Codecov
13
+ * - Coveralls
14
+ * - Node.js coverage tools
15
+ *
16
+ * @see https://istanbul.js.org/
17
+ */
18
+ export class IstanbulCoverageHandler extends BaseHandler {
3
19
  coverageMap = {};
20
+ constructor() {
21
+ super();
22
+ }
4
23
  processFile(filePath, fileName, lines) {
5
24
  const statementMap = {};
6
25
  const s = {};
@@ -30,4 +49,12 @@ export class IstanbulCoverageHandler {
30
49
  return this.coverageMap;
31
50
  }
32
51
  }
52
+ // Self-register this handler
53
+ HandlerRegistry.register({
54
+ name: 'json',
55
+ description: 'Istanbul JSON format for Node.js and JavaScript tools',
56
+ fileExtension: '.json',
57
+ handler: () => new IstanbulCoverageHandler(),
58
+ compatibleWith: ['Istanbul/NYC', 'Codecov', 'Coveralls', 'Node.js Tools'],
59
+ });
33
60
  //# sourceMappingURL=istanbulJson.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"istanbulJson.js","sourceRoot":"","sources":["../../src/handlers/istanbulJson.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAUb,MAAM,OAAO,uBAAuB;IAC1B,WAAW,GAAwB,EAAE,CAAC;IAEvC,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAA6B;QAClF,MAAM,YAAY,GAAgC,EAAE,CAAC;QACrD,MAAM,CAAC,GAA2B,EAAE,CAAC;QACrC,MAAM,YAAY,GAA2B,EAAE,CAAC;QAEhD,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAChC,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YAChC,YAAY,CAAC,UAAU,CAAC,GAAG;gBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;aACzB,CAAC;YACF,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,MAAM,YAAY,GAAyB;YACzC,IAAI,EAAE,QAAQ;YACd,YAAY;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;YACb,CAAC;YACD,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,YAAY;SAChB,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;IAC5C,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"istanbulJson.js","sourceRoot":"","sources":["../../src/handlers/istanbulJson.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IAC9C,WAAW,GAAwB,EAAE,CAAC;IAE9C;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAA6B;QAClF,MAAM,YAAY,GAAgC,EAAE,CAAC;QACrD,MAAM,CAAC,GAA2B,EAAE,CAAC;QACrC,MAAM,YAAY,GAA2B,EAAE,CAAC;QAEhD,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAChC,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YAChC,YAAY,CAAC,UAAU,CAAC,GAAG;gBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;aACzB,CAAC;YACF,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,MAAM,YAAY,GAAyB;YACzC,IAAI,EAAE,QAAQ;YACd,YAAY;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;YACb,CAAC;YACD,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,YAAY;SAChB,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;IAC5C,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,6BAA6B;AAC7B,eAAe,CAAC,QAAQ,CAAC;IACvB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,uDAAuD;IACpE,aAAa,EAAE,OAAO;IACtB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,uBAAuB,EAAE;IAC5C,cAAc,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC;CAC1E,CAAC,CAAC"}
@@ -1,5 +1,21 @@
1
- import { JaCoCoCoverageObject, CoverageHandler } from '../utils/types.js';
2
- export declare class JaCoCoCoverageHandler implements CoverageHandler {
1
+ import { JaCoCoCoverageObject } from '../utils/types.js';
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ /**
4
+ * Handler for generating JaCoCo XML coverage reports.
5
+ *
6
+ * JaCoCo is the standard code coverage library for Java projects.
7
+ * The format is also accepted by Codecov and other coverage tools.
8
+ *
9
+ * Compatible with:
10
+ * - Codecov
11
+ * - Jenkins
12
+ * - Maven
13
+ * - Gradle
14
+ * - IntelliJ IDEA
15
+ *
16
+ * @see https://www.jacoco.org/
17
+ */
18
+ export declare class JaCoCoCoverageHandler extends BaseHandler {
3
19
  private readonly coverageObj;
4
20
  private packageMap;
5
21
  constructor();
@@ -1,8 +1,26 @@
1
1
  'use strict';
2
- export class JaCoCoCoverageHandler {
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ import { HandlerRegistry } from './HandlerRegistry.js';
4
+ /**
5
+ * Handler for generating JaCoCo XML coverage reports.
6
+ *
7
+ * JaCoCo is the standard code coverage library for Java projects.
8
+ * The format is also accepted by Codecov and other coverage tools.
9
+ *
10
+ * Compatible with:
11
+ * - Codecov
12
+ * - Jenkins
13
+ * - Maven
14
+ * - Gradle
15
+ * - IntelliJ IDEA
16
+ *
17
+ * @see https://www.jacoco.org/
18
+ */
19
+ export class JaCoCoCoverageHandler extends BaseHandler {
3
20
  coverageObj;
4
21
  packageMap;
5
22
  constructor() {
23
+ super();
6
24
  this.coverageObj = {
7
25
  report: {
8
26
  '@name': 'JaCoCo',
@@ -84,4 +102,12 @@ export class JaCoCoCoverageHandler {
84
102
  return this.packageMap[packageName];
85
103
  }
86
104
  }
105
+ // Self-register this handler
106
+ HandlerRegistry.register({
107
+ name: 'jacoco',
108
+ description: 'JaCoCo XML format for Java projects',
109
+ fileExtension: '.xml',
110
+ handler: () => new JaCoCoCoverageHandler(),
111
+ compatibleWith: ['Codecov', 'Jenkins', 'Maven', 'Gradle'],
112
+ });
87
113
  //# sourceMappingURL=jacoco.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jacoco.js","sourceRoot":"","sources":["../../src/handlers/jacoco.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jacoco.js","sourceRoot":"","sources":["../../src/handlers/jacoco.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { JsonSummaryCoverageObject } from '../utils/types.js';
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ /**
4
+ * Handler for generating JSON Summary coverage reports.
5
+ *
6
+ * This format provides a concise summary of coverage statistics,
7
+ * ideal for badges, PR comments, and quick analysis.
8
+ *
9
+ * **Format Origin**: Istanbul/NYC coverage tools
10
+ *
11
+ * @see https://istanbul.js.org/
12
+ * @see https://github.com/istanbuljs/nyc
13
+ *
14
+ * **Apex-Specific Adaptations**:
15
+ * - Salesforce Apex only provides line-level coverage data
16
+ * - `statements`, `functions`, and `branches` metrics mirror line coverage
17
+ * - In native JavaScript environments, these would be distinct metrics
18
+ * - `skipped` is always 0 (Apex doesn't report skipped lines)
19
+ *
20
+ * **Limitations**:
21
+ * - No branch coverage (if/else paths) - Apex doesn't provide this data
22
+ * - No function/method coverage separate from lines
23
+ * - No statement coverage distinct from line coverage
24
+ *
25
+ * Compatible with:
26
+ * - GitHub Actions (for badges and PR comments)
27
+ * - GitLab CI (for MR comments)
28
+ * - Custom reporting dashboards
29
+ *
30
+ * @example
31
+ * ```json
32
+ * {
33
+ * "total": {
34
+ * "lines": { "total": 100, "covered": 75, "skipped": 0, "pct": 75 }
35
+ * },
36
+ * "files": {
37
+ * "path/to/file.cls": {
38
+ * "lines": { "total": 50, "covered": 40, "skipped": 0, "pct": 80 }
39
+ * }
40
+ * }
41
+ * }
42
+ * ```
43
+ */
44
+ export declare class JsonSummaryCoverageHandler extends BaseHandler {
45
+ private readonly coverageObj;
46
+ constructor();
47
+ processFile(filePath: string, _fileName: string, lines: Record<string, number>): void;
48
+ finalize(): JsonSummaryCoverageObject;
49
+ }
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+ import { BaseHandler } from './BaseHandler.js';
3
+ import { HandlerRegistry } from './HandlerRegistry.js';
4
+ /**
5
+ * Handler for generating JSON Summary coverage reports.
6
+ *
7
+ * This format provides a concise summary of coverage statistics,
8
+ * ideal for badges, PR comments, and quick analysis.
9
+ *
10
+ * **Format Origin**: Istanbul/NYC coverage tools
11
+ *
12
+ * @see https://istanbul.js.org/
13
+ * @see https://github.com/istanbuljs/nyc
14
+ *
15
+ * **Apex-Specific Adaptations**:
16
+ * - Salesforce Apex only provides line-level coverage data
17
+ * - `statements`, `functions`, and `branches` metrics mirror line coverage
18
+ * - In native JavaScript environments, these would be distinct metrics
19
+ * - `skipped` is always 0 (Apex doesn't report skipped lines)
20
+ *
21
+ * **Limitations**:
22
+ * - No branch coverage (if/else paths) - Apex doesn't provide this data
23
+ * - No function/method coverage separate from lines
24
+ * - No statement coverage distinct from line coverage
25
+ *
26
+ * Compatible with:
27
+ * - GitHub Actions (for badges and PR comments)
28
+ * - GitLab CI (for MR comments)
29
+ * - Custom reporting dashboards
30
+ *
31
+ * @example
32
+ * ```json
33
+ * {
34
+ * "total": {
35
+ * "lines": { "total": 100, "covered": 75, "skipped": 0, "pct": 75 }
36
+ * },
37
+ * "files": {
38
+ * "path/to/file.cls": {
39
+ * "lines": { "total": 50, "covered": 40, "skipped": 0, "pct": 80 }
40
+ * }
41
+ * }
42
+ * }
43
+ * ```
44
+ */
45
+ export class JsonSummaryCoverageHandler extends BaseHandler {
46
+ coverageObj;
47
+ constructor() {
48
+ super();
49
+ this.coverageObj = {
50
+ total: {
51
+ lines: { total: 0, covered: 0, skipped: 0, pct: 0 },
52
+ statements: { total: 0, covered: 0, skipped: 0, pct: 0 },
53
+ },
54
+ files: {},
55
+ };
56
+ }
57
+ processFile(filePath, _fileName, lines) {
58
+ const { totalLines, coveredLines } = this.calculateCoverage(lines);
59
+ const pct = totalLines > 0 ? Number(((coveredLines / totalLines) * 100).toFixed(2)) : 0;
60
+ // NOTE: Apex only provides line coverage, so we use the same values for statements
61
+ // In JavaScript/TypeScript environments, statements would be a distinct metric
62
+ const fileCoverage = {
63
+ lines: {
64
+ total: totalLines,
65
+ covered: coveredLines,
66
+ skipped: 0, // Apex doesn't report skipped lines
67
+ pct,
68
+ },
69
+ statements: {
70
+ total: totalLines, // Using line count as statement count (Apex limitation)
71
+ covered: coveredLines, // Using covered lines as covered statements
72
+ skipped: 0,
73
+ pct,
74
+ },
75
+ };
76
+ this.coverageObj.files[filePath] = fileCoverage;
77
+ // Update totals
78
+ this.coverageObj.total.lines.total += totalLines;
79
+ this.coverageObj.total.lines.covered += coveredLines;
80
+ this.coverageObj.total.statements.total += totalLines;
81
+ this.coverageObj.total.statements.covered += coveredLines;
82
+ }
83
+ finalize() {
84
+ // Calculate total percentages
85
+ const totalLines = this.coverageObj.total.lines.total;
86
+ const totalCovered = this.coverageObj.total.lines.covered;
87
+ if (totalLines > 0) {
88
+ const pct = Number(((totalCovered / totalLines) * 100).toFixed(2));
89
+ this.coverageObj.total.lines.pct = pct;
90
+ this.coverageObj.total.statements.pct = pct;
91
+ }
92
+ return this.coverageObj;
93
+ }
94
+ }
95
+ // Self-register this handler
96
+ HandlerRegistry.register({
97
+ name: 'json-summary',
98
+ description: 'JSON Summary format for badges and quick analysis',
99
+ fileExtension: '.json',
100
+ handler: () => new JsonSummaryCoverageHandler(),
101
+ compatibleWith: ['GitHub Actions', 'GitLab CI', 'Custom Dashboards'],
102
+ });
103
+ //# sourceMappingURL=jsonSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonSummary.js","sourceRoot":"","sources":["../../src/handlers/jsonSummary.ts"],"names":[],"mappings":"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"}