apex-code-coverage-transformer 2.10.0 → 2.11.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@
5
5
 
6
6
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
7
7
 
8
+ ## [2.11.0](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.10.0...v2.11.0) (2025-03-07)
9
+
10
+
11
+ ### Features
12
+
13
+ * include ignore package directories flag in hook ([fded594](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/fded594ccb229035aecfa426da972c5819a212a5))
14
+ * include ignore package directories flag in hook ([a7294a4](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/a7294a47a85141d4b1d0e21854ac14d4f19b9e14))
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **deps:** bump @salesforce/sf-plugins-core from 12.1.4 to 12.2.0 ([b96e83c](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/b96e83cc28c5f3ae82422c069fa157caa5e805b1))
20
+
8
21
  ## [2.10.0](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.9.0...v2.10.0) (2025-02-26)
9
22
 
10
23
 
package/README.md CHANGED
@@ -10,18 +10,18 @@
10
10
  - [Usage](#usage)
11
11
  - [Salesforce CLI](#salesforce-cli)
12
12
  - [SFDX Hardis](#sfdx-hardis)
13
- - [What This Fixes](#what-this-fixes)
13
+ - [Fixes and Enhancements](#fixes-and-enhancements)
14
14
  - [Command](#command)
15
15
  - [`sf acc-transformer transform`](#sf-acc-transformer-transform)
16
16
  - [Coverage Report Formats](#coverage-report-formats)
17
17
  - [Hook](#hook)
18
- - [Debugging](#debugging)
19
- - [Contributing](#contributing)
18
+ - [Troubleshooting](#troubleshooting)
20
19
  - [Issues](#issues)
20
+ - [Contributing](#contributing)
21
21
  - [License](#license)
22
22
  </details>
23
23
 
24
- A Salesforce CLI plugin to transform the Apex code coverage JSON files created during deployments and test runs into other [formats](#coverage-report-formats) accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
24
+ Transform the Salesforce Apex code coverage JSON files created during deployments and test runs into other [formats](#coverage-report-formats) accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
25
25
 
26
26
  If there's a coverage format not yet supported by this plugin, feel free to provide a pull request or issue for the coverage format.
27
27
 
@@ -33,22 +33,20 @@ sf plugins install apex-code-coverage-transformer@x.y.z
33
33
 
34
34
  ## Usage
35
35
 
36
- This plugin is intended for users who deploy their Apex or invoke Apex tests in their orgs from any Salesforce DX project (`sfdx-project.json` file) and would like to import the code coverage reports into external tools. The code coverage reports created by the Salesforce CLI aren't accepted automatically by external tools and needs to be transformed using this plugin.
36
+ This plugin is designed for users deploying Apex or running Apex tests within Salesforce DX projects (`sfdx-project.json`). It transforms Salesforce CLI JSON coverage reports into formats recognized by external tools.
37
37
 
38
- This plugin will work regardless of your testing strategy (running all tests, running specified tests, running all local tests). The files in the original coverage JSON has to be found in one of the package directories to be added to the final report. This ensures external tools like SonarQube can match files in the coverage report to a file in the project.
38
+ The plugin ensures that coverage data is only reported for files found in your package directories, preventing mismatches in tools like SonarQube. If Apex files are missing from your project (i.e. Apex from managed or unlocked packages), they will be excluded from the transformed report with a [warning](#troubleshooting).
39
39
 
40
- When the plugin is unable to find a matching Apex file in your project (i.e. Apex from managed and unlocked packages), it will print a warning and not add that file's coverage data to the final coverage report. See [Debugging](#debugging) for more information.
41
-
42
- You should run this plugin after you deploy or invoke Apex tests in your org either using the Salesforce CLI or sfdx-hardis. See [Hook](#hook) if you'd like to automatically transform the coverage JSON after you run Salesforce CLI or sfdx-hardis commands.
40
+ To automate coverage transformation after deployments or test executions, see [Hook](#hook).
43
41
 
44
42
  ### Salesforce CLI
45
43
 
46
- **This plugin will only support the "json" coverage format from the Salesforce CLI. Do not use other coverage formats from the Salesforce CLI.**
44
+ > This plugin will only support the "json" coverage format from the Salesforce CLI. Do not use other coverage formats from the Salesforce CLI.
47
45
 
48
46
  To create the code coverage JSON when deploying or validating, append `--coverage-formatters json --results-dir "coverage"` to the `sf project deploy` command. This will create a coverage JSON in this relative path - `coverage/coverage/coverage.json`.
49
47
 
50
48
  ```
51
- sf project deploy [start/validate] --coverage-formatters json --results-dir "coverage"
49
+ sf project deploy [start/validate/report/resume] --coverage-formatters json --results-dir "coverage"
52
50
  ```
53
51
 
54
52
  To create the code coverage JSON when running tests directly in the org, append `--code-coverage --output-dir "coverage"` to the `sf apex run test` or `sf apex get test` command. This will create the code coverage JSON in this relative path - `coverage/test-result-codecoverage.json`
@@ -60,22 +58,26 @@ sf apex get test --test-run-id <test run id> --code-coverage --output-dir "cover
60
58
 
61
59
  ### SFDX Hardis
62
60
 
63
- This plugin can be used after running [sfdx-hardis](https://github.com/hardisgroupcom/sfdx-hardis) commands `hardis:project:deploy:smart` (only if `COVERAGE_FORMATTER_JSON=true` environment variable is defined) and `hardis:org:test:apex` assuming you have sfdx-hardis and this plugin installed.
61
+ This plugin can be used after running the below [sfdx-hardis](https://github.com/hardisgroupcom/sfdx-hardis) commands:
62
+
63
+ - `sf hardis project deploy smart` (only if `COVERAGE_FORMATTER_JSON=true` environment variable is defined)
64
+ - `sf hardis org test apex`
64
65
 
65
- Both hardis commands will create the code coverage JSON to transform here: `hardis-report/apex-coverage-results.json`. Provide this relative path as the `--coverage-json`/`-j` input for this plugin.
66
+ Both hardis commands will create the code coverage JSON to transform here: `hardis-report/apex-coverage-results.json`.
66
67
 
67
- ## What this fixes
68
+ ### Fixes and Enhancements
68
69
 
69
- - The coverage reports created by this plugin will add correct file-paths per your Salesforce DX project. Salesforce CLI coverage reports have the `no-map/` prefix hard-coded into their coverage reports. The coverage report created in this plugin will only contain Apex coverage results against files found in your Salesforce DX project, allowing you to use these reports in external code quality tools like SonarQube.
70
- - Normalizes the coverage reports created by the Salesforce CLI deploy and test command. The coverage reports created by both CLI commands follow different formats and have different coverage format options. These differences cause issues when trying to have external tools like SonarQube parse the coverage reports. This plugin handles parsing both command coverage reports and converting them into common formats accepted by external tools like SonarQube and GitLab.
71
- - The coverage reports created by this plugin "fixes" an issue with Salesforce CLI deploy command coverage reports. The coverage reports created by the deploy command contains several inaccuracies in their covered lines.
72
- - Salesforce's deploy coverage report may report out-of-range lines as "covered", i.e. line 100 in a 98-line apex class is reported as "covered".
73
- - Salesforce's deploy coverage report may report extra lines than the total lines in the apex class, i.e. 120 lines are included in the deploy coverage report for a 100-line apex class.
74
- - The coverage percentage may vary based on how many lines the API returns in the original deploy coverage report.
75
- - To work around these inaccuracies, I added a re-numbering function which only runs against deploy coverage reports to ensure the transformed coverage reports are accepted by external tools.
76
- - Once the Salesforce server team fixes the API to correctly return coverage in deploy command coverage reports, I will remove this re-numbering function.
77
- - See issues [5511](https://github.com/forcedotcom/salesforcedx-vscode/issues/5511) and [1568](https://github.com/forcedotcom/cli/issues/1568).
78
- - **NOTE**: This does not affect coverage reports created by the Salesforce CLI test commands.
70
+ - **Maps Apex file names** in the original coverage report (e.g., `no-map/AccountTriggerHandler`) to their corresponding relative file paths in the Salesforce DX project (e.g., `force-app/main/default/classes/AccountTriggerHandler.cls`).
71
+ - **Normalizes coverage reports** across both deploy and test commands, improving compatibility with external tools.
72
+ - **Adds additional coverage formats** not available in the default Salesforce CLI deploy and test commands.
73
+ - **"Fixes" inaccuracies** in Salesforce CLI deploy command coverage reports, such as:
74
+ - Out-of-range covered lines (e.g., line 100 reported as "covered" in a 98-line Apex class).
75
+ - Incorrect total line counts (e.g., 120 lines reported for a 100-line Apex class).
76
+ - To address these inaccuracies, the plugin includes a **re-numbering function** that only applies to deploy coverage reports. This function reassigns out-of-range `covered` lines to unused lines, ensuring reports are accepted by external tools.
77
+ - The `uncovered` lines are always correctly reported by the deploy command.
78
+ - Once Salesforce resolves the issue with the API that affects deploy command coverage reports, the re-numbering function will be removed in a future **breaking** release.
79
+ - See issues [5511](https://github.com/forcedotcom/salesforcedx-vscode/issues/5511) and [1568](https://github.com/forcedotcom/cli/issues/1568) for more details.
80
+ - **Note**: This does not affect coverage reports generated by the Salesforce CLI test commands.
79
81
 
80
82
  ## Command
81
83
 
@@ -106,41 +108,51 @@ DESCRIPTION
106
108
  Transform the Apex code coverage JSON file created by the Salesforce CLI deploy and test command into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
107
109
 
108
110
  EXAMPLES
111
+ Transform the JSON into Sonar format:
112
+
109
113
  $ sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "sonar"
110
114
 
115
+ Transform the JSON into Cobertura format:
116
+
111
117
  $ sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "cobertura"
112
118
 
119
+ Transform the JSON into Clover format:
120
+
113
121
  $ sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "clover"
114
122
 
123
+ Transform the JSON into LCovOnly format:
124
+
115
125
  $ sf acc-transformer transform -j "coverage.json" -r "coverage.info" -f "lcovonly"
116
126
 
127
+ Transform the JSON into Sonar format, ignoring Apex in the "force-app" directory:
128
+
117
129
  $ sf acc-transformer transform -j "coverage.json" -i "force-app"
118
130
  ```
119
131
 
120
132
  ## Coverage Report Formats
121
133
 
122
- The `-f`/`--format` flag allows you to specify the format of the coverage report.
134
+ The `-f`/`--format` flag allows you to specify the format of the transformed coverage report.
123
135
 
124
- | Flag Option | Description | Example |
125
- | ----------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
126
- | `sonar` | Generates a SonarQube-compatible coverage report. This is the default option. | [Sonar example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/sonar_baseline.xml) |
127
- | `clover` | Produces a Clover XML report format, commonly used with Atlassian tools. | [Clover example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/clover_baseline.xml) |
128
- | `lcovonly` | Outputs coverage data in LCOV format, useful for integrating with LCOV-based tools. | [LCovOnly example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/lcov_baseline.info) |
129
- | `cobertura` | Creates a Cobertura XML report, a widely used format for coverage reporting. | [Cobertura example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/cobertura_baseline.xml) |
130
- | `jacoco` | Creates a JaCoCo XML report, the standard for Java projects. | [JaCoCo example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/jacoco_baseline.xml) |
136
+ | Flag Option | Description | Example |
137
+ | ----------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
138
+ | `sonar` | Generates a SonarQube-compatible coverage report. This is the default option. | [example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/sonar_baseline.xml) |
139
+ | `clover` | Produces a Clover XML report format, commonly used with Atlassian tools. | [example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/clover_baseline.xml) |
140
+ | `lcovonly` | Outputs coverage data in LCOV format, useful for integrating with LCOV-based tools. | [example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/lcov_baseline.info) |
141
+ | `cobertura` | Creates a Cobertura XML report, a widely used format for coverage reporting. | [example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/cobertura_baseline.xml) |
142
+ | `jacoco` | Creates a JaCoCo XML report, the standard for Java projects. | [example](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/test/jacoco_baseline.xml) |
131
143
 
132
144
  ## Hook
133
145
 
134
- A post-run hook has been configured if you opt into using it by creating a `.apexcodecovtransformer.config.json` config file in the root of your repo. If the config file is found, the post-run hook will automatically run after the following commands:
146
+ To enable automatic transformation after the below `sf` commands complete, create `.apexcodecovtransformer.config.json` in your project’s root directory.
135
147
 
136
- - `sf project deploy start`
137
- - `sf project deploy validate`
138
- - `sf project deploy report`
139
- - `sf project deploy resume`
148
+ - `sf project deploy [start/validate/report/resume]`
140
149
  - `sf apex run test`
141
150
  - `sf apex get test`
142
- - `sf hardis project deploy smart` (only if sfdx-hardis is installed and `COVERAGE_FORMATTER_JSON=true` environment variable is defined)
143
- - `sf hardis org test apex` (only if sfdx-hardis is installed)
151
+ - `sf hardis project deploy smart`
152
+ - only if `sfdx-hardis` is installed
153
+ - `COVERAGE_FORMATTER_JSON=true` must be set in the environment variables
154
+ - `sf hardis org test apex`
155
+ - only if `sfdx-hardis` is installed
144
156
 
145
157
  You can copy the sample [Salesforce CLI .apexcodecovtransformer.config.json](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/defaults/salesforce-cli/.apexcodecovtransformer.config.json), which assumes you are running the Salesforce CLI commands and specifying the `--results-dir`/`--output-dir` directory as "coverage". Update this sample with your desired output report path and format.
146
158
 
@@ -151,21 +163,20 @@ The `.apexcodecovtransformer.config.json` follows this structure:
151
163
  - `deployCoverageJsonPath` is required to use the hook after deploy commands and should be the path to the code coverage JSON created by the Salesforce CLI/SFDX Hardis deploy command. Recommend using a relative path.
152
164
  - `testCoverageJsonPath` is required to use the hook after test commands and should be the path to the code coverage JSON created by the Salesforce CLI/SFDX Hardis test command. Recommend using a relative path.
153
165
  - `outputReportPath` is optional and should be the path to the code coverage file created by this plugin. Recommend using a relative path. If this isn't provided, it will default to `coverage.[xml/info]` in the working directory.
154
- - `format` is optional and should be the intended coverage report format created by this plugin. If this isn't provided, it will default to "sonar".
166
+ - `format` is optional and should be the intended coverage report [format](#coverage-report-formats) created by this plugin. If this isn't provided, it will default to "sonar".
167
+ - `ignorePackageDirectories` is optional and should be a comma-separated string of package directories to ignore when looking for matching files in the coverage report. Package directories should match how they appear in the `sfdx-project.json` file.
155
168
 
156
- If the `.apexcodecovtransformer.config.json` file isn't found, the hook will be skipped.
169
+ If `.apexcodecovtransformer.config.json` is missing, the hook will not run.
157
170
 
158
- ## Debugging
171
+ ## Troubleshooting
159
172
 
160
- Any file in the coverage JSON that isn't found in any package directory will result in this warning:
173
+ Any file in the coverage JSON that isn't found in any package directory will result in this warning and will not be added to the transformed report:
161
174
 
162
175
  ```
163
176
  Warning: The file name AccountTrigger was not found in any package directory.
164
177
  ```
165
178
 
166
- Files not found in any package directory will not be added to the output coverage report. This includes Apex classes that originate from installed managed and unlocked packages when running all tests in your org.
167
-
168
- If none of the files listed in the coverage JSON were found in a package directory, the plugin will print an additional warning stating no files were processed. In this case, the output coverage report generated will be an empty file.
179
+ If none of the files listed in the coverage JSON were found in a package directory, the plugin will print an additional warning stating no files were processed. In this case, the transformed report generated will be an empty file.
169
180
 
170
181
  ```
171
182
  Warning: The file name AccountTrigger was not found in any package directory.
@@ -191,13 +202,13 @@ Any ENOENT failures indicate that the plugin had issues finding one of the packa
191
202
  Error (1): ENOENT: no such file or directory: {packageDirPath}
192
203
  ```
193
204
 
194
- ## Contributing
205
+ ## Issues
195
206
 
196
- Contributions are welcome! See [Contributing](https://github.com/mcarvin8/apex-code-coverage-transformer/blob/main/CONTRIBUTING.md).
207
+ If you encounter any issues or would like to suggest features, please create an [issue](https://github.com/mcarvin8/apex-code-coverage-transformer/issues).
197
208
 
198
- ## Issues
209
+ ## Contributing
199
210
 
200
- If you encounter any issues, please create an issue in the [issue tracker](https://github.com/mcarvin8/apex-code-coverage-transformer/issues). Please also create issues to suggest any new features.
211
+ Contributions are welcome! See [Contributing](https://github.com/mcarvin8/apex-code-coverage-transformer/blob/main/CONTRIBUTING.md).
201
212
 
202
213
  ## License
203
214
 
@@ -53,6 +53,7 @@ export type HookFile = {
53
53
  testCoverageJsonPath: string;
54
54
  outputReportPath: string;
55
55
  format: string;
56
+ ignorePackageDirectories: string;
56
57
  };
57
58
  export type CoberturaLine = {
58
59
  '@number': number;
@@ -7,7 +7,13 @@ import { getRepoRoot } from '../helpers/getRepoRoot.js';
7
7
  export const postrun = async function (options) {
8
8
  let commandType;
9
9
  let coverageJson;
10
- if (['project:deploy:validate', 'project:deploy:start', 'project:deploy:report', 'project:deploy:resume', 'hardis:project:deploy:smart'].includes(options.Command.id)) {
10
+ if ([
11
+ 'project:deploy:validate',
12
+ 'project:deploy:start',
13
+ 'project:deploy:report',
14
+ 'project:deploy:resume',
15
+ 'hardis:project:deploy:smart',
16
+ ].includes(options.Command.id)) {
11
17
  commandType = 'deploy';
12
18
  }
13
19
  else if (['apex:run:test', 'apex:get:test', 'hardis:org:test:apex'].includes(options.Command.id)) {
@@ -31,6 +37,7 @@ export const postrun = async function (options) {
31
37
  }
32
38
  const outputReport = configFile.outputReportPath || 'coverage.xml';
33
39
  const coverageFormat = configFile.format || 'sonar';
40
+ const ignorePackageDirs = configFile.ignorePackageDirectories || '';
34
41
  if (commandType === 'deploy') {
35
42
  coverageJson = configFile.deployCoverageJsonPath || '.';
36
43
  }
@@ -52,6 +59,14 @@ export const postrun = async function (options) {
52
59
  commandArgs.push(outputReportPath);
53
60
  commandArgs.push('--format');
54
61
  commandArgs.push(coverageFormat);
62
+ if (ignorePackageDirs.trim() !== '') {
63
+ const ignorePackageDirArray = ignorePackageDirs.split(',');
64
+ for (const dirs of ignorePackageDirArray) {
65
+ const sanitizedDir = dirs.replace(/,/g, '');
66
+ commandArgs.push('--ignore-package-directory');
67
+ commandArgs.push(sanitizedDir);
68
+ }
69
+ }
55
70
  await TransformerTransform.run(commandArgs);
56
71
  };
57
72
  //# sourceMappingURL=postrun.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postrun.js","sourceRoot":"","sources":["../../src/hooks/postrun.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,CAAC,MAAM,OAAO,GAAoB,KAAK,WAAW,OAAO;IAC7D,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAoB,CAAC;IACzB,IACE,CAAC,yBAAyB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,6BAA6B,CAAC,CAAC,QAAQ,CAC3I,OAAO,CAAC,OAAO,CAAC,EAAE,CACnB,EACD,CAAC;QACD,WAAW,GAAG,QAAQ,CAAC;IACzB,CAAC;SAAM,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACnG,WAAW,GAAG,MAAM,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO;IACT,CAAC;IACD,IAAI,UAAoB,CAAC;IACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,qCAAqC,CAAC,CAAC;IAE5E,IAAI,CAAC;QACH,MAAM,UAAU,GAAW,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/D,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAa,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAW,UAAU,CAAC,gBAAgB,IAAI,cAAc,CAAC;IAC3E,MAAM,cAAc,GAAW,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC;IAE5D,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,YAAY,GAAG,UAAU,CAAC,sBAAsB,IAAI,GAAG,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,UAAU,CAAC,oBAAoB,IAAI,GAAG,CAAC;IACxD,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACpC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACpC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7B,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjC,MAAM,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC,CAAC"}
1
+ {"version":3,"file":"postrun.js","sourceRoot":"","sources":["../../src/hooks/postrun.ts"],"names":[],"mappings":"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"}
package/oclif.lock CHANGED
@@ -1495,7 +1495,7 @@
1495
1495
  "@nodelib/fs.scandir" "2.1.5"
1496
1496
  fastq "^1.6.0"
1497
1497
 
1498
- "@oclif/core@^4", "@oclif/core@^4.2.3", "@oclif/core@^4.2.4", "@oclif/core@^4.2.8":
1498
+ "@oclif/core@^4", "@oclif/core@^4.2.4", "@oclif/core@^4.2.8":
1499
1499
  version "4.2.8"
1500
1500
  resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.2.8.tgz#6e71c76b8ea91064ffc8390a3fd2502c5d32a3db"
1501
1501
  integrity sha512-OWv4Va6bERxIhrYcnUGzyhGRqktc64lJO6cZ3UwkzJDpfR8ZrbCxRfKRBBah1i8kzUlOAeAXnpbMBMah3skKwA==
@@ -1519,13 +1519,13 @@
1519
1519
  wordwrap "^1.0.0"
1520
1520
  wrap-ansi "^7.0.0"
1521
1521
 
1522
- "@oclif/plugin-command-snapshot@^5.2.35":
1523
- version "5.2.35"
1524
- resolved "https://registry.yarnpkg.com/@oclif/plugin-command-snapshot/-/plugin-command-snapshot-5.2.35.tgz#19eacd8180772d9f172606edf3d6c99522fecbb3"
1525
- integrity sha512-8A7iJ7tg2ZvyMG63sBOvdPIPq7RmggIdeACA0p6NfwzDI9mRL94v78m/6whqJKTUuzcERIIO+L2hwxPbBKwdGw==
1522
+ "@oclif/plugin-command-snapshot@^5.2.36":
1523
+ version "5.2.36"
1524
+ resolved "https://registry.yarnpkg.com/@oclif/plugin-command-snapshot/-/plugin-command-snapshot-5.2.36.tgz#83b4ff3fcb0be14416a486405a15d29867a081d1"
1525
+ integrity sha512-NM8up8CGfybXPVESMaeubBqY5jMtIzZYGVrzhMI92Du46O46Ld1IX4jSdnNMjwnTRzTYdz3Br57d5IpnfpEcKw==
1526
1526
  dependencies:
1527
1527
  "@oclif/core" "^4"
1528
- ansis "^3.14.0"
1528
+ ansis "^3.16.0"
1529
1529
  globby "^14.1.0"
1530
1530
  just-diff "^5.2.0"
1531
1531
  lodash.difference "^4.5.0"
@@ -1732,10 +1732,10 @@
1732
1732
  resolved "https://registry.yarnpkg.com/@salesforce/schemas/-/schemas-1.9.0.tgz#ba477a112653a20b4edcf989c61c57bdff9aa3ca"
1733
1733
  integrity sha512-LiN37zG5ODT6z70sL1fxF7BQwtCX9JOWofSU8iliSNIM+WDEeinnoFtVqPInRSNt8I0RiJxIKCrqstsmQRBNvA==
1734
1734
 
1735
- "@salesforce/sf-plugins-core@^12.1.4":
1736
- version "12.1.4"
1737
- resolved "https://registry.yarnpkg.com/@salesforce/sf-plugins-core/-/sf-plugins-core-12.1.4.tgz#c73829c7f12bdc96a2e2746ce7f574a604e8efb4"
1738
- integrity sha512-inSWsy9omNc4dIULVpoOJPX6DdEaqkA4CxmzTVrylc7P08jCbsv6LpS79wUaYC7Ah3krBQvbopP4wR9f3XvLeQ==
1735
+ "@salesforce/sf-plugins-core@^12.2.0":
1736
+ version "12.2.0"
1737
+ resolved "https://registry.yarnpkg.com/@salesforce/sf-plugins-core/-/sf-plugins-core-12.2.0.tgz#c53f5342841cc490752b78f2707e84d8946dd740"
1738
+ integrity sha512-aGNk74rMt8I+HTP7hRsX6kxiGTuun9ONrWkX7JvWDdtIoO9TsEbNVZENH8GFxHFalWPFCj31IMUQD/bGbxMFbg==
1739
1739
  dependencies:
1740
1740
  "@inquirer/confirm" "^3.1.22"
1741
1741
  "@inquirer/password" "^2.2.0"
@@ -2474,9 +2474,9 @@
2474
2474
  undici-types "~6.20.0"
2475
2475
 
2476
2476
  "@types/node@18", "@types/node@^18.19.41":
2477
- version "18.19.76"
2478
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.76.tgz#7991658e0ba41ad30cc8be01c9bbe580d58f2112"
2479
- integrity sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==
2477
+ version "18.19.78"
2478
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.78.tgz#29f5e7b947840c7aa9050ecac920fe6b1c7646a0"
2479
+ integrity sha512-m1ilZCTwKLkk9rruBJXFeYN0Bc5SbjirwYX/Td3MqPfioYbgun3IvK/m8dQxMCnrPGZPg1kvXjp3SIekCN/ynw==
2480
2480
  dependencies:
2481
2481
  undici-types "~5.26.4"
2482
2482
 
@@ -2806,7 +2806,7 @@ ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1:
2806
2806
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
2807
2807
  integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
2808
2808
 
2809
- ansis@^3.10.0, ansis@^3.14.0, ansis@^3.16.0, ansis@^3.3.2, ansis@^3.5.2:
2809
+ ansis@^3.10.0, ansis@^3.16.0, ansis@^3.3.2, ansis@^3.5.2:
2810
2810
  version "3.16.0"
2811
2811
  resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.16.0.tgz#5e365fd173133756a01199c77fc9146bb22fb5eb"
2812
2812
  integrity sha512-sU7d/tfZiYrsIAXbdL/CNZld5bCkruzwT5KmqmadCJYxuLxHAOBjidxD5+iLmN/6xEfjcQq1l7OpsiCBlc4LzA==
@@ -6776,17 +6776,17 @@ object.values@^1.2.0:
6776
6776
  define-properties "^1.2.1"
6777
6777
  es-object-atoms "^1.0.0"
6778
6778
 
6779
- oclif@^4.17.30:
6780
- version "4.17.30"
6781
- resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.17.30.tgz#5a24641436d07b2dc0ffc892bf1120c747045d14"
6782
- integrity sha512-EFsvSWfwZcEimh1B2LwsFKyMYOwGRdRfbheXNnIfWDvk46O3I6n+o66p/duobr6tZ4G+CNLVwSP0kQhhQZngQQ==
6779
+ oclif@^4.17.32:
6780
+ version "4.17.32"
6781
+ resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.17.32.tgz#73786c41873252a3a78e19010506e52b361a3713"
6782
+ integrity sha512-OKdEMhDNSHn/4NYdyM4b8VfVEbnB4VuzZwvDc24AuoyhZFQBTfQaE+mqoPOGh5wb4eF74cWBlSKOLsrLCPbN0w==
6783
6783
  dependencies:
6784
6784
  "@aws-sdk/client-cloudfront" "^3.749.0"
6785
6785
  "@aws-sdk/client-s3" "^3.749.0"
6786
6786
  "@inquirer/confirm" "^3.1.22"
6787
6787
  "@inquirer/input" "^2.2.4"
6788
6788
  "@inquirer/select" "^2.5.0"
6789
- "@oclif/core" "^4.2.3"
6789
+ "@oclif/core" "^4.2.8"
6790
6790
  "@oclif/plugin-help" "^6.2.25"
6791
6791
  "@oclif/plugin-not-found" "^3.2.32"
6792
6792
  "@oclif/plugin-warn-if-update-available" "^3.1.31"
@@ -6801,7 +6801,7 @@ oclif@^4.17.30:
6801
6801
  got "^13"
6802
6802
  lodash "^4.17.21"
6803
6803
  normalize-package-data "^6"
6804
- semver "^7.7.0"
6804
+ semver "^7.7.1"
6805
6805
  sort-package-json "^2.14.0"
6806
6806
  tiny-jsonc "^1.0.1"
6807
6807
  validate-npm-package-name "^5.0.1"
@@ -7617,7 +7617,7 @@ semver@^6.0.0, semver@^6.3.1:
7617
7617
  resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
7618
7618
  integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
7619
7619
 
7620
- semver@^7.3.4, semver@^7.3.5, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.0, semver@^7.7.1:
7620
+ semver@^7.3.4, semver@^7.3.5, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1:
7621
7621
  version "7.7.1"
7622
7622
  resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
7623
7623
  integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
@@ -8528,10 +8528,10 @@ typedoc@^0.26.5:
8528
8528
  shiki "^1.16.2"
8529
8529
  yaml "^2.5.1"
8530
8530
 
8531
- "typescript@^4.6.4 || ^5.2.2", typescript@^5.5.4, typescript@^5.7.3:
8532
- version "5.7.3"
8533
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e"
8534
- integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==
8531
+ "typescript@^4.6.4 || ^5.2.2", typescript@^5.5.4, typescript@^5.8.2:
8532
+ version "5.8.2"
8533
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4"
8534
+ integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==
8535
8535
 
8536
8536
  typescript@~5.4.2:
8537
8537
  version "5.4.5"
@@ -96,5 +96,5 @@
96
96
  ]
97
97
  }
98
98
  },
99
- "version": "2.10.0"
99
+ "version": "2.11.0"
100
100
  }
package/package.json CHANGED
@@ -1,28 +1,28 @@
1
1
  {
2
2
  "name": "apex-code-coverage-transformer",
3
3
  "description": "Transform Salesforce Apex code coverage JSONs created during deployments and test runs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.",
4
- "version": "2.10.0",
4
+ "version": "2.11.0",
5
5
  "dependencies": {
6
6
  "@oclif/core": "^4.2.8",
7
7
  "@salesforce/core": "^8.8.3",
8
- "@salesforce/sf-plugins-core": "^12.1.4",
8
+ "@salesforce/sf-plugins-core": "^12.2.0",
9
9
  "async": "^3.2.6",
10
10
  "xmlbuilder2": "^3.1.1"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@commitlint/cli": "^19.7.1",
14
14
  "@commitlint/config-conventional": "^19.7.1",
15
- "@oclif/plugin-command-snapshot": "^5.2.35",
15
+ "@oclif/plugin-command-snapshot": "^5.2.36",
16
16
  "@salesforce/cli-plugins-testkit": "^5.3.39",
17
17
  "@salesforce/dev-scripts": "^10.2.11",
18
18
  "@types/async": "^3.2.24",
19
19
  "@types/node": "18",
20
20
  "eslint-plugin-sf-plugin": "^1.20.14",
21
21
  "husky": "^9.1.7",
22
- "oclif": "^4.17.30",
22
+ "oclif": "^4.17.32",
23
23
  "shx": "0.3.4",
24
24
  "ts-node": "^10.9.2",
25
- "typescript": "^5.7.3"
25
+ "typescript": "^5.8.2"
26
26
  },
27
27
  "engines": {
28
28
  "node": ">=18.0.0"