@code-pushup/coverage-plugin 0.57.0 → 0.59.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/package.json +4 -3
- package/src/bin.js +4 -1
- package/src/bin.js.map +1 -1
- package/src/lib/config.d.ts +3 -0
- package/src/lib/config.js +5 -0
- package/src/lib/config.js.map +1 -1
- package/src/lib/nx/coverage-paths.js +1 -1
- package/src/lib/nx/coverage-paths.js.map +1 -1
- package/src/lib/runner/constants.d.ts +0 -3
- package/src/lib/runner/constants.js +0 -5
- package/src/lib/runner/constants.js.map +1 -1
- package/src/lib/runner/index.d.ts +2 -2
- package/src/lib/runner/index.js +22 -15
- package/src/lib/runner/index.js.map +1 -1
- package/src/lib/runner/lcov/lcov-runner.js +5 -9
- package/src/lib/runner/lcov/lcov-runner.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-pushup/coverage-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.59.0",
|
|
4
4
|
"description": "Code PushUp plugin for tracking code coverage ☂",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/plugin-coverage#readme",
|
|
@@ -34,10 +34,11 @@
|
|
|
34
34
|
},
|
|
35
35
|
"type": "module",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@code-pushup/models": "0.
|
|
38
|
-
"@code-pushup/utils": "0.
|
|
37
|
+
"@code-pushup/models": "0.59.0",
|
|
38
|
+
"@code-pushup/utils": "0.59.0",
|
|
39
39
|
"ansis": "^3.3.0",
|
|
40
40
|
"parse-lcov": "^1.0.4",
|
|
41
|
+
"yargs": "^17.7.2",
|
|
41
42
|
"zod": "^3.22.4"
|
|
42
43
|
},
|
|
43
44
|
"peerDependencies": {
|
package/src/bin.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
import { Parser } from 'yargs/helpers';
|
|
1
3
|
import { executeRunner } from './lib/runner/index.js';
|
|
2
|
-
|
|
4
|
+
const { runnerConfigPath, runnerOutputPath } = Parser(process.argv);
|
|
5
|
+
await executeRunner({ runnerConfigPath, runnerOutputPath });
|
|
3
6
|
//# sourceMappingURL=bin.js.map
|
package/src/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../../../packages/plugin-coverage/src/bin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,aAAa,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../../../packages/plugin-coverage/src/bin.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpE,MAAM,aAAa,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,CAAC"}
|
package/src/lib/config.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export declare const coveragePluginConfigSchema: z.ZodObject<{
|
|
|
23
23
|
command: string;
|
|
24
24
|
args?: string[] | undefined;
|
|
25
25
|
}>>;
|
|
26
|
+
continueOnCommandFail: z.ZodDefault<z.ZodBoolean>;
|
|
26
27
|
coverageTypes: z.ZodDefault<z.ZodArray<z.ZodEnum<["function", "branch", "line"]>, "many">>;
|
|
27
28
|
reports: z.ZodArray<z.ZodUnion<[z.ZodObject<{
|
|
28
29
|
resultsPath: z.ZodString;
|
|
@@ -36,6 +37,7 @@ export declare const coveragePluginConfigSchema: z.ZodObject<{
|
|
|
36
37
|
}>, z.ZodString]>, "many">;
|
|
37
38
|
perfectScoreThreshold: z.ZodOptional<z.ZodNumber>;
|
|
38
39
|
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
continueOnCommandFail: boolean;
|
|
39
41
|
coverageTypes: ("function" | "branch" | "line")[];
|
|
40
42
|
reports: (string | {
|
|
41
43
|
resultsPath: string;
|
|
@@ -55,6 +57,7 @@ export declare const coveragePluginConfigSchema: z.ZodObject<{
|
|
|
55
57
|
command: string;
|
|
56
58
|
args?: string[] | undefined;
|
|
57
59
|
} | undefined;
|
|
60
|
+
continueOnCommandFail?: boolean | undefined;
|
|
58
61
|
coverageTypes?: ("function" | "branch" | "line")[] | undefined;
|
|
59
62
|
perfectScoreThreshold?: number | undefined;
|
|
60
63
|
}>;
|
package/src/lib/config.js
CHANGED
|
@@ -32,6 +32,11 @@ export const coveragePluginConfigSchema = z.object({
|
|
|
32
32
|
.optional(),
|
|
33
33
|
})
|
|
34
34
|
.optional(),
|
|
35
|
+
continueOnCommandFail: z
|
|
36
|
+
.boolean({
|
|
37
|
+
description: 'Continue on coverage tool command failure or error. Defaults to true.',
|
|
38
|
+
})
|
|
39
|
+
.default(true),
|
|
35
40
|
coverageTypes: z
|
|
36
41
|
.array(coverageTypeSchema, {
|
|
37
42
|
description: 'Coverage types measured. Defaults to all available types.',
|
package/src/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../packages/plugin-coverage/src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAGzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,MAAM,CAAC;QACP,WAAW,EAAE,CAAC;aACX,MAAM,CAAC;YACN,WAAW,EAAE,wCAAwC;SACtD,CAAC;aACD,QAAQ,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,CAAC;aACb,MAAM,CAAC;YACN,WAAW,EACT,qGAAqG;SACxG,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;IACF,CAAC;SACE,MAAM,CAAC;QACN,WAAW,EAAE,sDAAsD;KACpE,CAAC;SACD,QAAQ,CAAC,MAAM,CAAC;CACpB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,mBAAmB,EAAE,CAAC;SACnB,MAAM,CAAC;QACN,OAAO,EAAE,CAAC;aACP,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;aACxD,GAAG,CAAC,CAAC,CAAC;QACT,IAAI,EAAE,CAAC;aACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;YACjB,WAAW,EAAE,8CAA8C;SAC5D,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;SACD,QAAQ,EAAE;IACb,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,kBAAkB,EAAE;QACzB,WAAW,EAAE,2DAA2D;KACzE,CAAC;SACD,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,oBAAoB,EAAE;QAC3B,WAAW,EACT,gFAAgF;KACnF,CAAC;SACD,GAAG,CAAC,CAAC,CAAC;IACT,qBAAqB,EAAE,CAAC;SACrB,MAAM,CAAC;QACN,WAAW,EACT,8EAA8E;KACjF,CAAC;SACD,EAAE,CAAC,CAAC,CAAC;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;CACd,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../packages/plugin-coverage/src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAGzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,MAAM,CAAC;QACP,WAAW,EAAE,CAAC;aACX,MAAM,CAAC;YACN,WAAW,EAAE,wCAAwC;SACtD,CAAC;aACD,QAAQ,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,CAAC;aACb,MAAM,CAAC;YACN,WAAW,EACT,qGAAqG;SACxG,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;IACF,CAAC;SACE,MAAM,CAAC;QACN,WAAW,EAAE,sDAAsD;KACpE,CAAC;SACD,QAAQ,CAAC,MAAM,CAAC;CACpB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,mBAAmB,EAAE,CAAC;SACnB,MAAM,CAAC;QACN,OAAO,EAAE,CAAC;aACP,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;aACxD,GAAG,CAAC,CAAC,CAAC;QACT,IAAI,EAAE,CAAC;aACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;YACjB,WAAW,EAAE,8CAA8C;SAC5D,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;SACD,QAAQ,EAAE;IACb,qBAAqB,EAAE,CAAC;SACrB,OAAO,CAAC;QACP,WAAW,EACT,uEAAuE;KAC1E,CAAC;SACD,OAAO,CAAC,IAAI,CAAC;IAChB,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,kBAAkB,EAAE;QACzB,WAAW,EAAE,2DAA2D;KACzE,CAAC;SACD,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,oBAAoB,EAAE;QAC3B,WAAW,EACT,gFAAgF;KACnF,CAAC;SACD,GAAG,CAAC,CAAC,CAAC;IACT,qBAAqB,EAAE,CAAC;SACrB,MAAM,CAAC;QACN,WAAW,EACT,8EAA8E;KACjF,CAAC;SACD,EAAE,CAAC,CAAC,CAAC;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;CACd,CAAC,CAAC"}
|
|
@@ -60,7 +60,7 @@ export async function getCoveragePathForVitest(options, project, target) {
|
|
|
60
60
|
if (reportsDirectory == null) {
|
|
61
61
|
throw new Error(`Vitest coverage configuration at ${config} does not include coverage path for target ${target} in project ${project.name}. Add the path under coverage > reportsDirectory.`);
|
|
62
62
|
}
|
|
63
|
-
if (!reporter?.
|
|
63
|
+
if (!reporter?.some(format => format === 'lcov' || format === 'lcovonly')) {
|
|
64
64
|
throw new Error(`Vitest coverage configuration at ${config} does not include LCOV report format for target ${target} in project ${project.name}. Add 'lcov' format under coverage > reporter.`);
|
|
65
65
|
}
|
|
66
66
|
if (path.isAbsolute(reportsDirectory)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage-paths.js","sourceRoot":"","sources":["../../../../../../packages/plugin-coverage/src/lib/nx/coverage-paths.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"coverage-paths.js","sourceRoot":"","sources":["../../../../../../packages/plugin-coverage/src/lib/nx/coverage-paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { pluginWorkDir } from '@code-pushup/utils';
|
|
3
|
-
export const WORKDIR = pluginWorkDir('coverage');
|
|
4
|
-
export const RUNNER_OUTPUT_PATH = path.join(WORKDIR, 'runner-output.json');
|
|
5
|
-
export const PLUGIN_CONFIG_PATH = path.join(process.cwd(), WORKDIR, 'plugin-config.json');
|
|
6
1
|
export const INVALID_FUNCTION_NAME = '(empty-report)';
|
|
7
2
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugin-coverage/src/lib/runner/constants.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugin-coverage/src/lib/runner/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RunnerConfig } from '@code-pushup/models';
|
|
1
|
+
import type { RunnerConfig, RunnerFilesPaths } from '@code-pushup/models';
|
|
2
2
|
import type { FinalCoveragePluginConfig } from '../config.js';
|
|
3
|
-
export declare function executeRunner(): Promise<void>;
|
|
3
|
+
export declare function executeRunner({ runnerConfigPath, runnerOutputPath, }: RunnerFilesPaths): Promise<void>;
|
|
4
4
|
export declare function createRunnerConfig(scriptPath: string, config: FinalCoveragePluginConfig): Promise<RunnerConfig>;
|
package/src/lib/runner/index.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { bold } from 'ansis';
|
|
2
2
|
import { writeFile } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { ProcessError, ensureDirectoryExists, executeProcess, filePathToCliArg, readJsonFile, ui, } from '@code-pushup/utils';
|
|
4
|
+
import { ProcessError, createRunnerFiles, ensureDirectoryExists, executeProcess, filePathToCliArg, objectToCliArgs, readJsonFile, ui, } from '@code-pushup/utils';
|
|
5
5
|
import { applyMaxScoreAboveThreshold } from '../utils.js';
|
|
6
|
-
import { PLUGIN_CONFIG_PATH, RUNNER_OUTPUT_PATH } from './constants.js';
|
|
7
6
|
import { lcovResultsToAuditOutputs } from './lcov/lcov-runner.js';
|
|
8
|
-
export async function executeRunner() {
|
|
9
|
-
const { reports, coverageToolCommand, coverageTypes } = await readJsonFile(
|
|
7
|
+
export async function executeRunner({ runnerConfigPath, runnerOutputPath, }) {
|
|
8
|
+
const { reports, coverageToolCommand, continueOnCommandFail, coverageTypes } = await readJsonFile(runnerConfigPath);
|
|
10
9
|
// Run coverage tool if provided
|
|
11
10
|
if (coverageToolCommand != null) {
|
|
12
11
|
const { command, args } = coverageToolCommand;
|
|
@@ -15,28 +14,36 @@ export async function executeRunner() {
|
|
|
15
14
|
}
|
|
16
15
|
catch (error) {
|
|
17
16
|
if (error instanceof ProcessError) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
const loggingFn = continueOnCommandFail
|
|
18
|
+
? ui().logger.warning.bind(ui().logger)
|
|
19
|
+
: ui().logger.error.bind(ui().logger);
|
|
20
|
+
loggingFn(bold('stdout from failed coverage tool process:'));
|
|
21
|
+
loggingFn(error.stdout);
|
|
22
|
+
loggingFn(bold('stderr from failed coverage tool process:'));
|
|
23
|
+
loggingFn(error.stderr);
|
|
24
|
+
}
|
|
25
|
+
if (!continueOnCommandFail) {
|
|
26
|
+
throw new Error('Coverage plugin: Running coverage tool failed. Make sure all your provided tests are passing.');
|
|
22
27
|
}
|
|
23
|
-
throw new Error('Coverage plugin: Running coverage tool failed. Make sure all your provided tests are passing.');
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
30
|
// Calculate coverage from LCOV results
|
|
27
31
|
const auditOutputs = await lcovResultsToAuditOutputs(reports, coverageTypes);
|
|
28
|
-
await ensureDirectoryExists(path.dirname(
|
|
29
|
-
await writeFile(
|
|
32
|
+
await ensureDirectoryExists(path.dirname(runnerOutputPath));
|
|
33
|
+
await writeFile(runnerOutputPath, JSON.stringify(auditOutputs));
|
|
30
34
|
}
|
|
31
35
|
export async function createRunnerConfig(scriptPath, config) {
|
|
32
36
|
// Create JSON config for executeRunner
|
|
33
|
-
await
|
|
34
|
-
await writeFile(PLUGIN_CONFIG_PATH, JSON.stringify(config));
|
|
37
|
+
const { runnerConfigPath, runnerOutputPath } = await createRunnerFiles('coverage', JSON.stringify(config));
|
|
35
38
|
const threshold = config.perfectScoreThreshold;
|
|
36
39
|
return {
|
|
37
40
|
command: 'node',
|
|
38
|
-
args: [
|
|
39
|
-
|
|
41
|
+
args: [
|
|
42
|
+
filePathToCliArg(scriptPath),
|
|
43
|
+
...objectToCliArgs({ runnerConfigPath, runnerOutputPath }),
|
|
44
|
+
],
|
|
45
|
+
configFile: runnerConfigPath,
|
|
46
|
+
outputFile: runnerOutputPath,
|
|
40
47
|
...(threshold != null && {
|
|
41
48
|
outputTransform: outputs => applyMaxScoreAboveThreshold(outputs, threshold),
|
|
42
49
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugin-coverage/src/lib/runner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugin-coverage/src/lib/runner/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ export async function lcovResultsToAuditOutputs(results, coverageTypes) {
|
|
|
34
34
|
* @returns Array of parsed LCOVRecords.
|
|
35
35
|
*/
|
|
36
36
|
export async function parseLcovFiles(results) {
|
|
37
|
-
const parsedResults = await Promise.all(results.map(async (result) => {
|
|
37
|
+
const parsedResults = (await Promise.all(results.map(async (result) => {
|
|
38
38
|
const resultsPath = typeof result === 'string' ? result : result.resultsPath;
|
|
39
39
|
const lcovFileContent = await readTextFile(resultsPath);
|
|
40
40
|
if (lcovFileContent.trim() === '') {
|
|
@@ -47,15 +47,11 @@ export async function parseLcovFiles(results) {
|
|
|
47
47
|
? record.file
|
|
48
48
|
: path.join(result.pathToProject, record.file),
|
|
49
49
|
}));
|
|
50
|
-
}));
|
|
51
|
-
if (parsedResults.length
|
|
52
|
-
throw new Error('
|
|
50
|
+
}))).flat();
|
|
51
|
+
if (parsedResults.length === 0) {
|
|
52
|
+
throw new Error('All provided coverage results are empty.');
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
if (flatResults.length === 0) {
|
|
56
|
-
throw new Error('All provided results are empty.');
|
|
57
|
-
}
|
|
58
|
-
return flatResults;
|
|
54
|
+
return parsedResults;
|
|
59
55
|
}
|
|
60
56
|
/**
|
|
61
57
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lcov-runner.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-coverage/src/lib/runner/lcov/lcov-runner.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,iEAAiE;AACjE,oGAAoG;AAEpG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAyB,EACzB,aAA6B;IAE7B,mBAAmB;IACnB,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAElD,oDAAoD;IACpD,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEpD,oDAAoD;IACpD,MAAM,kBAAkB,GAAG,+BAA+B,CACxD,aAAa,EACb,aAAa,CACd,CAAC;IAEF,OAAO,aAAa;SACjB,GAAG,CAAC,YAAY,CAAC,EAAE;QAClB,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC;SACD,MAAM,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAyB;IAEzB,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"lcov-runner.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-coverage/src/lib/runner/lcov/lcov-runner.ts"],"names":[],"mappings":"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"}
|