create-merged-coverage-reports 0.2.0 → 0.4.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/README.md +3 -3
- package/dist/bin.d.ts +1 -0
- package/dist/bin.js +34 -0
- package/dist/bin.js.map +1 -0
- package/dist/create-merged-coverage-reports-DTw7ouWj.js +41 -0
- package/dist/create-merged-coverage-reports-DTw7ouWj.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +3 -0
- package/package.json +36 -58
- package/CHANGELOG.md +0 -36
- package/bin.cjs.d.ts +0 -1
- package/bin.cjs.default.js +0 -1
- package/bin.cjs.js +0 -35
- package/bin.cjs.mjs +0 -2
- package/bin.esm.d.ts +0 -1
- package/bin.esm.js +0 -33
- package/create-merged-coverage-reports.cjs.js +0 -70
- package/create-merged-coverage-reports.esm.js +0 -48
- package/index.cjs.d.ts +0 -1
- package/index.cjs.default.js +0 -1
- package/index.cjs.js +0 -15
- package/index.cjs.mjs +0 -2
- package/index.esm.d.ts +0 -1
- package/index.esm.js +0 -7
- package/src/bin.d.ts +0 -2
- package/src/index.d.ts +0 -1
- package/src/lib/cli-program.d.ts +0 -4
- package/src/lib/create-merged-coverage-reports.d.ts +0 -26
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ Options:
|
|
|
35
35
|
### API
|
|
36
36
|
|
|
37
37
|
```ts
|
|
38
|
-
import { createMergedCoverageReports } from
|
|
38
|
+
import { createMergedCoverageReports } from "create-merged-coverage-reports";
|
|
39
39
|
|
|
40
40
|
async function main() {
|
|
41
41
|
await createMergedCoverageReports();
|
|
@@ -46,11 +46,11 @@ main();
|
|
|
46
46
|
|
|
47
47
|
## Building
|
|
48
48
|
|
|
49
|
-
Run `
|
|
49
|
+
Run `pnpm run build` to build the library.
|
|
50
50
|
|
|
51
51
|
## Running unit tests
|
|
52
52
|
|
|
53
|
-
Run `
|
|
53
|
+
Run `pnpm run test` to execute the unit tests.
|
|
54
54
|
|
|
55
55
|
## License
|
|
56
56
|
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createMergedCoverageReports } from "./create-merged-coverage-reports-DTw7ouWj.js";
|
|
3
|
+
import { Command } from "commander";
|
|
4
|
+
import { readPackageUp } from "read-package-up";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/cli-program.ts
|
|
7
|
+
const createProgram = async ({ exitOverride = false } = {}) => {
|
|
8
|
+
const program = new Command();
|
|
9
|
+
if (exitOverride) program.exitOverride();
|
|
10
|
+
const packageUpResult = await readPackageUp({ cwd: import.meta.dirname });
|
|
11
|
+
if (!packageUpResult) {
|
|
12
|
+
console.error("Cannot find package.json");
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
const { packageJson: { name, version, description } } = packageUpResult;
|
|
16
|
+
program.name(name).description(description ?? "").version(version, "-v, --version").option("-c, --coverageFileGlob <glob>", "Glob to get all json coverage files").option("-o, --outputDirectory <dir>", "Directory where all merged coverage reports").option("-r, --reporters <reporters...>", "Which reporters (either built-in, or custom) to use to generate the merged coverage reports").action((options) => {
|
|
17
|
+
return createMergedCoverageReports(options);
|
|
18
|
+
});
|
|
19
|
+
return program;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/bin.ts
|
|
24
|
+
const main = async () => {
|
|
25
|
+
const program = await createProgram();
|
|
26
|
+
program.parse();
|
|
27
|
+
};
|
|
28
|
+
main().catch((e) => {
|
|
29
|
+
console.error(e);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","names":[],"sources":["../src/lib/cli-program.ts","../src/bin.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { readPackageUp } from \"read-package-up\";\n\nimport { createMergedCoverageReports } from \"./create-merged-coverage-reports\";\n\nexport const createProgram = async ({ exitOverride = false } = {}) => {\n const program = new Command();\n\n if (exitOverride) {\n program.exitOverride();\n }\n\n const packageUpResult = await readPackageUp({ cwd: import.meta.dirname });\n\n if (!packageUpResult) {\n console.error(\"Cannot find package.json\");\n process.exit(1);\n }\n\n const {\n packageJson: { name, version, description },\n } = packageUpResult;\n\n program\n .name(name)\n .description(description ?? \"\")\n .version(version, \"-v, --version\")\n .option(\n \"-c, --coverageFileGlob <glob>\",\n \"Glob to get all json coverage files\",\n )\n .option(\n \"-o, --outputDirectory <dir>\",\n \"Directory where all merged coverage reports\",\n )\n .option(\n \"-r, --reporters <reporters...>\",\n \"Which reporters (either built-in, or custom) to use to generate the merged coverage reports\",\n )\n .action((options) => {\n return createMergedCoverageReports(options);\n });\n\n return program;\n};\n","#!/usr/bin/env node\n\nimport { createProgram } from './lib/cli-program';\n\nconst main = async () => {\n const program = await createProgram();\n\n program.parse();\n};\n\nmain().catch((e) => {\n console.error(e);\n process.exit(1);\n});\n"],"mappings":";;;;;;AAKA,MAAa,gBAAgB,OAAO,EAAE,eAAe,OAAO,GAAG,CAAE,MAAK;CACpE,MAAM,UAAU,IAAI;AAEpB,KAAI,cACF,QAAQ,cAAc;CAGxB,MAAM,kBAAkB,MAAM,cAAc,EAAE,KAAK,OAAO,KAAK,QAAS,EAAC;AAEzE,KAAI,CAAC,iBAAiB;EACpB,QAAQ,MAAM,2BAA2B;EACzC,QAAQ,KAAK,EAAE;CAChB;CAED,MAAM,EACJ,aAAa,EAAE,MAAM,SAAS,aAAa,EAC5C,GAAG;CAEJ,QACG,KAAK,KAAK,CACV,YAAY,eAAe,GAAG,CAC9B,QAAQ,SAAS,gBAAgB,CACjC,OACC,iCACA,sCACD,CACA,OACC,+BACA,8CACD,CACA,OACC,kCACA,8FACD,CACA,OAAO,CAAC,YAAY;AACnB,SAAO,4BAA4B,QAAQ;CAC5C,EAAC;AAEJ,QAAO;AACR;;;;ACxCD,MAAM,OAAO,YAAY;CACvB,MAAM,UAAU,MAAM,eAAe;CAErC,QAAQ,OAAO;AAChB;AAED,MAAM,CAAC,MAAM,CAAC,MAAM;CAClB,QAAQ,MAAM,EAAE;CAChB,QAAQ,KAAK,EAAE;AAChB,EAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import { readFile } from "fs/promises";
|
|
3
|
+
import libCoverage from "istanbul-lib-coverage";
|
|
4
|
+
import libReport from "istanbul-lib-report";
|
|
5
|
+
import { create } from "istanbul-reports";
|
|
6
|
+
import { glob } from "tinyglobby";
|
|
7
|
+
|
|
8
|
+
//#region src/lib/create-merged-coverage-reports.ts
|
|
9
|
+
const readJson = async (p) => JSON.parse(await readFile(p, "utf-8"));
|
|
10
|
+
const normalizeOptions = (options) => {
|
|
11
|
+
const { coverageFileGlob = "coverage/**/coverage-final.json", outputDirectory = path.join("coverage", "merged"), reporters = ["json"] } = options;
|
|
12
|
+
return {
|
|
13
|
+
coverageFileGlob,
|
|
14
|
+
outputDirectory,
|
|
15
|
+
reporters
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
const createMergedCoverageReports = async (options = {}) => {
|
|
19
|
+
const { coverageFileGlob, outputDirectory, reporters } = normalizeOptions(options);
|
|
20
|
+
const jsonFilePaths = await glob([coverageFileGlob, `!${outputDirectory}/**/*`]);
|
|
21
|
+
if (jsonFilePaths.length === 0) throw new Error(`No coverage reports found with the ${coverageFileGlob} glob`);
|
|
22
|
+
const mergedMap = libCoverage.createCoverageMap();
|
|
23
|
+
for (const jsonFilePath of jsonFilePaths) {
|
|
24
|
+
const coverageJson = await readJson(path.resolve(jsonFilePath));
|
|
25
|
+
mergedMap.merge(coverageJson);
|
|
26
|
+
}
|
|
27
|
+
const reportGenerationContext = libReport.createContext({
|
|
28
|
+
dir: outputDirectory,
|
|
29
|
+
defaultSummarizer: "nested",
|
|
30
|
+
coverageMap: mergedMap
|
|
31
|
+
});
|
|
32
|
+
reporters.forEach((reporter) => {
|
|
33
|
+
const report = create(reporter);
|
|
34
|
+
report.execute(reportGenerationContext);
|
|
35
|
+
});
|
|
36
|
+
console.log(`Generated ${reporters.join(", ")} reports to ${outputDirectory}`);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
export { createMergedCoverageReports };
|
|
41
|
+
//# sourceMappingURL=create-merged-coverage-reports-DTw7ouWj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-merged-coverage-reports-DTw7ouWj.js","names":["p: string","options: CreateMergedCoverageReportsOptions","createReport"],"sources":["../src/lib/create-merged-coverage-reports.ts"],"sourcesContent":["import * as path from \"path\";\nimport { readFile } from \"fs/promises\";\nimport { default as libCoverage } from \"istanbul-lib-coverage\";\nimport { default as libReport } from \"istanbul-lib-report\";\nimport { create as createReport, type ReportOptions } from \"istanbul-reports\";\nimport { glob } from \"tinyglobby\";\n\ntype CreateMergedCoverageReportsOptions = {\n /**\n * Glob to get all json coverage files\n *\n * @default 'coverage/** /coverage-final.json'\n */\n coverageFileGlob?: string;\n\n /**\n * Directory where all merged coverage reports\n *\n * Note that this directory will be excluded from the coverage files lookup\n *\n * @default 'coverage/merged'\n */\n outputDirectory?: string;\n\n /**\n * Which reporters (either built-in, or custom) to use to generate the merged coverage reports\n *\n * @see https://istanbul.js.org/docs/advanced/alternative-reporters\n *\n * @default ['json']\n */\n reporters?: string[];\n};\n\nconst readJson = async (p: string) => JSON.parse(await readFile(p, \"utf-8\"));\n\nconst normalizeOptions = (options: CreateMergedCoverageReportsOptions) => {\n const {\n coverageFileGlob = \"coverage/**/coverage-final.json\",\n outputDirectory = path.join(\"coverage\", \"merged\"),\n reporters = [\"json\"],\n } = options;\n\n return {\n coverageFileGlob,\n outputDirectory,\n reporters,\n };\n};\n\nexport const createMergedCoverageReports = async (\n options: CreateMergedCoverageReportsOptions = {},\n): Promise<void> => {\n const { coverageFileGlob, outputDirectory, reporters } =\n normalizeOptions(options);\n\n const jsonFilePaths = await glob([\n coverageFileGlob,\n `!${outputDirectory}/**/*`,\n ]);\n\n if (jsonFilePaths.length === 0) {\n throw new Error(\n `No coverage reports found with the ${coverageFileGlob} glob`,\n );\n }\n\n const mergedMap = libCoverage.createCoverageMap();\n\n for (const jsonFilePath of jsonFilePaths) {\n const coverageJson = await readJson(\n // ensure absolute path, otherwise ENOENT error happens\n path.resolve(jsonFilePath),\n );\n\n mergedMap.merge(coverageJson);\n }\n\n const reportGenerationContext = libReport.createContext({\n dir: outputDirectory,\n defaultSummarizer: \"nested\",\n coverageMap: mergedMap,\n });\n\n reporters.forEach((reporter) => {\n const report = createReport(\n // HACK: may be a custom reporter\n reporter as unknown as keyof ReportOptions,\n );\n\n report.execute(reportGenerationContext);\n });\n\n console.log(\n `Generated ${reporters.join(\", \")} reports to ${outputDirectory}`,\n );\n};\n"],"mappings":";;;;;;;;AAkCA,MAAM,WAAW,OAAOA,MAAc,KAAK,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE5E,MAAM,mBAAmB,CAACC,YAAgD;CACxE,MAAM,EACJ,mBAAmB,mCACnB,kBAAkB,KAAK,KAAK,YAAY,SAAS,EACjD,YAAY,CAAC,MAAO,GACrB,GAAG;AAEJ,QAAO;EACL;EACA;EACA;CACD;AACF;AAED,MAAa,8BAA8B,OACzCA,UAA8C,CAAE,MAC9B;CAClB,MAAM,EAAE,kBAAkB,iBAAiB,WAAW,GACpD,iBAAiB,QAAQ;CAE3B,MAAM,gBAAgB,MAAM,KAAK,CAC/B,kBACA,CAAC,CAAC,EAAE,gBAAgB,KAAK,CAAC,AAC3B,EAAC;AAEF,KAAI,cAAc,WAAW,EAC3B,OAAM,IAAI,MACR,CAAC,mCAAmC,EAAE,iBAAiB,KAAK,CAAC;CAIjE,MAAM,YAAY,YAAY,mBAAmB;AAEjD,MAAK,MAAM,gBAAgB,eAAe;EACxC,MAAM,eAAe,MAAM,SAEzB,KAAK,QAAQ,aAAa,CAC3B;EAED,UAAU,MAAM,aAAa;CAC9B;CAED,MAAM,0BAA0B,UAAU,cAAc;EACtD,KAAK;EACL,mBAAmB;EACnB,aAAa;CACd,EAAC;CAEF,UAAU,QAAQ,CAAC,aAAa;EAC9B,MAAM,SAASC,OAEb,SACD;EAED,OAAO,QAAQ,wBAAwB;CACxC,EAAC;CAEF,QAAQ,IACN,CAAC,UAAU,EAAE,UAAU,KAAK,KAAK,CAAC,YAAY,EAAE,iBAAiB,CAClE;AACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/lib/create-merged-coverage-reports.d.ts
|
|
2
|
+
type CreateMergedCoverageReportsOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* Glob to get all json coverage files
|
|
5
|
+
*
|
|
6
|
+
* @default 'coverage/** /coverage-final.json'
|
|
7
|
+
*/
|
|
8
|
+
coverageFileGlob?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Directory where all merged coverage reports
|
|
11
|
+
*
|
|
12
|
+
* Note that this directory will be excluded from the coverage files lookup
|
|
13
|
+
*
|
|
14
|
+
* @default 'coverage/merged'
|
|
15
|
+
*/
|
|
16
|
+
outputDirectory?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Which reporters (either built-in, or custom) to use to generate the merged coverage reports
|
|
19
|
+
*
|
|
20
|
+
* @see https://istanbul.js.org/docs/advanced/alternative-reporters
|
|
21
|
+
*
|
|
22
|
+
* @default ['json']
|
|
23
|
+
*/
|
|
24
|
+
reporters?: string[];
|
|
25
|
+
};
|
|
26
|
+
declare const createMergedCoverageReports: (options?: CreateMergedCoverageReportsOptions) => Promise<void>;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { createMergedCoverageReports };
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
ADDED
package/package.json
CHANGED
|
@@ -1,85 +1,63 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-merged-coverage-reports",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Create merged coverage reports",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
7
7
|
"author": "Alex Gavrusev <alex@gavrusev.dev>",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "https://github.com/alexgavrusev/create-merged-coverage-reports.git"
|
|
10
|
+
"url": "git+https://github.com/alexgavrusev/create-merged-coverage-reports.git"
|
|
11
11
|
},
|
|
12
12
|
"homepage": "https://github.com/alexgavrusev/create-merged-coverage-reports#readme",
|
|
13
13
|
"bugs": {
|
|
14
14
|
"url": "https://github.com/alexgavrusev/create-merged-coverage-reports/issues"
|
|
15
15
|
},
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
16
|
+
"type": "module",
|
|
17
|
+
"bin": "./dist/bin.js",
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"module": "./dist/index.js",
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": "./dist/index.js",
|
|
23
|
+
"./bin": "./dist/bin.js",
|
|
24
|
+
"./package.json": "./package.json"
|
|
19
25
|
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
20
29
|
"dependencies": {
|
|
21
|
-
"
|
|
22
|
-
"commander": "^12.1.0",
|
|
23
|
-
"fs-extra": "^11.2.0",
|
|
24
|
-
"globby": "^14.0.0",
|
|
30
|
+
"commander": "^14.0.0",
|
|
25
31
|
"istanbul-lib-coverage": "^3.2.2",
|
|
26
32
|
"istanbul-lib-report": "^3.0.1",
|
|
27
33
|
"istanbul-reports": "^3.1.6",
|
|
28
34
|
"read-package-up": "^11.0.0",
|
|
29
|
-
"
|
|
35
|
+
"tinyglobby": "^0.2.14"
|
|
30
36
|
},
|
|
31
37
|
"devDependencies": {
|
|
32
|
-
"@commitlint/cli": "^19.3.0",
|
|
33
|
-
"@commitlint/config-conventional": "^19.2.2",
|
|
34
|
-
"@gvrs-nx/ts-package": "0.3.0",
|
|
35
|
-
"@jscutlery/semver": "^5.2.2",
|
|
36
|
-
"@nx/eslint": "18.3.5",
|
|
37
|
-
"@nx/eslint-plugin": "18.3.5",
|
|
38
|
-
"@nx/js": "18.3.5",
|
|
39
|
-
"@nx/rollup": "18.3.5",
|
|
40
|
-
"@nx/vite": "18.3.5",
|
|
41
|
-
"@nx/workspace": "18.3.5",
|
|
42
|
-
"@swc-node/register": "~1.9.1",
|
|
43
|
-
"@swc/cli": "~0.3.12",
|
|
44
|
-
"@swc/core": "~1.5.7",
|
|
45
|
-
"@types/fs-extra": "^11.0.4",
|
|
46
38
|
"@types/istanbul-lib-coverage": "^2.0.6",
|
|
47
39
|
"@types/istanbul-lib-report": "^3.0.3",
|
|
48
40
|
"@types/istanbul-reports": "^3.0.4",
|
|
49
|
-
"@types/node": "
|
|
41
|
+
"@types/node": "^24.1.0",
|
|
50
42
|
"@types/tmp": "^0.2.6",
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"prettier": "^3.2.5",
|
|
61
|
-
"rollup-plugin-preserve-shebang": "1.0.1",
|
|
62
|
-
"tmp": "^0.2.1",
|
|
63
|
-
"tslib": "^2.3.0",
|
|
64
|
-
"typescript": "~5.4.5",
|
|
65
|
-
"verdaccio": "^5.0.4",
|
|
66
|
-
"vite": "~5.2.11",
|
|
67
|
-
"vitest": "~1.6.0"
|
|
43
|
+
"bumpp": "^10.2.0",
|
|
44
|
+
"changelogithub": "^13.16.0",
|
|
45
|
+
"oxlint": "^1.8.0",
|
|
46
|
+
"pkg-pr-new": "^0.0.60",
|
|
47
|
+
"prettier": "^3.6.2",
|
|
48
|
+
"tmp": "^0.2.3",
|
|
49
|
+
"tsdown": "^0.15.1",
|
|
50
|
+
"typescript": "^5.8.3",
|
|
51
|
+
"vitest": "^3.2.4"
|
|
68
52
|
},
|
|
69
53
|
"sideEffects": false,
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"default": "./bin.cjs.js"
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
"module": "./index.esm.js",
|
|
84
|
-
"main": "./index.cjs.js"
|
|
85
|
-
}
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "tsdown",
|
|
56
|
+
"dev": "tsdown --watch",
|
|
57
|
+
"test": "vitest",
|
|
58
|
+
"lint": "oxlint --deny-warnings",
|
|
59
|
+
"lint:fix": "pnpm run lint --fix",
|
|
60
|
+
"format": "prettier --cache --write .",
|
|
61
|
+
"release": "bumpp && pnpm publish"
|
|
62
|
+
}
|
|
63
|
+
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
|
-
|
|
5
|
-
## [0.2.0](https://github.com/alexgavrusev/create-merged-coverage-reports/compare/create-merged-coverage-reports-0.1.0...create-merged-coverage-reports-0.2.0) (2024-05-18)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
### Features
|
|
9
|
-
|
|
10
|
-
* **deps:** add dependabot ([930cfb3](https://github.com/alexgavrusev/create-merged-coverage-reports/commit/930cfb330c1adbdd3167b297c600a2bb59369e7d))
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
### Bug Fixes
|
|
14
|
-
|
|
15
|
-
* resolve missing dependency error caused by rollup config ([839653d](https://github.com/alexgavrusev/create-merged-coverage-reports/commit/839653d1528a2fd1e7aa184c90c93058cb39d147))
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
### Miscellaneous Chores
|
|
19
|
-
|
|
20
|
-
* bump the github-actions group with 4 updates ([451cf71](https://github.com/alexgavrusev/create-merged-coverage-reports/commit/451cf7112f35f58d82a5e83af5c9eb292b392206))
|
|
21
|
-
* **deps:** bump the development group with 27 updates ([3272c64](https://github.com/alexgavrusev/create-merged-coverage-reports/commit/3272c6420caca76b48cb58821128e044d5df65ad))
|
|
22
|
-
* **deps:** bump the production group with 4 updates ([69d2cf0](https://github.com/alexgavrusev/create-merged-coverage-reports/commit/69d2cf02c55110621f7c899cba65ae93265f973c))
|
|
23
|
-
* **deps:** run nx migrations from 17.1.3 to 18.3.5 ([67ec955](https://github.com/alexgavrusev/create-merged-coverage-reports/commit/67ec95538550d5a8fc0ec7fd4266237f8ab12c7d))
|
|
24
|
-
* do not hide chore commits from changelog ([256f6fc](https://github.com/alexgavrusev/create-merged-coverage-reports/commit/256f6fcc16c8635495782b1317aba5629fc5454e))
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
### Tests
|
|
28
|
-
|
|
29
|
-
* update error snapshot ([6cadace](https://github.com/alexgavrusev/create-merged-coverage-reports/commit/6cadace5725d3d3a81e7f7ea564b0e5d45944d2b))
|
|
30
|
-
|
|
31
|
-
## 0.1.0 (2023-12-01)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
### Features
|
|
35
|
-
|
|
36
|
-
* initial commit 842d16c
|
package/bin.cjs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src/bin";
|
package/bin.cjs.default.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports._default = require('./bin.cjs.js').default;
|
package/bin.cjs.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var commander = require('commander');
|
|
5
|
-
var tsimportlib = require('tsimportlib');
|
|
6
|
-
var createMergedCoverageReports = require('./create-merged-coverage-reports.cjs.js');
|
|
7
|
-
require('path');
|
|
8
|
-
require('istanbul-lib-coverage');
|
|
9
|
-
require('istanbul-lib-report');
|
|
10
|
-
require('istanbul-reports');
|
|
11
|
-
require('fs-extra');
|
|
12
|
-
|
|
13
|
-
const createProgram = async ({ exitOverride = false } = {})=>{
|
|
14
|
-
const program = new commander.Command();
|
|
15
|
-
if (exitOverride) {
|
|
16
|
-
program.exitOverride();
|
|
17
|
-
}
|
|
18
|
-
const { readPackageUp } = await tsimportlib.dynamicImport(require.resolve('read-package-up'), module);
|
|
19
|
-
const { packageJson: { name, version, description } } = await readPackageUp({
|
|
20
|
-
cwd: __dirname
|
|
21
|
-
});
|
|
22
|
-
program.name(name).description(description).version(version, '-v, --version').option('-c, --coverageFileGlob <glob>', 'Glob to get all json coverage files').option('-o, --outputDirectory <dir>', 'Directory where all merged coverage reports').option('-r, --reporters <reporters...>', 'Which reporters (either built-in, or custom) to use to generate the merged coverage reports').action((options)=>{
|
|
23
|
-
return createMergedCoverageReports.createMergedCoverageReports(options);
|
|
24
|
-
});
|
|
25
|
-
return program;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const main = async ()=>{
|
|
29
|
-
const program = await createProgram();
|
|
30
|
-
program.parse();
|
|
31
|
-
};
|
|
32
|
-
main().catch((e)=>{
|
|
33
|
-
console.error(e);
|
|
34
|
-
process.exit(1);
|
|
35
|
-
});
|
package/bin.cjs.mjs
DELETED
package/bin.esm.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src/bin";
|
package/bin.esm.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Command } from 'commander';
|
|
3
|
-
import { dynamicImport } from 'tsimportlib';
|
|
4
|
-
import { c as createMergedCoverageReports } from './create-merged-coverage-reports.esm.js';
|
|
5
|
-
import 'path';
|
|
6
|
-
import 'istanbul-lib-coverage';
|
|
7
|
-
import 'istanbul-lib-report';
|
|
8
|
-
import 'istanbul-reports';
|
|
9
|
-
import 'fs-extra';
|
|
10
|
-
|
|
11
|
-
const createProgram = async ({ exitOverride = false } = {})=>{
|
|
12
|
-
const program = new Command();
|
|
13
|
-
if (exitOverride) {
|
|
14
|
-
program.exitOverride();
|
|
15
|
-
}
|
|
16
|
-
const { readPackageUp } = await dynamicImport(require.resolve('read-package-up'), module);
|
|
17
|
-
const { packageJson: { name, version, description } } = await readPackageUp({
|
|
18
|
-
cwd: __dirname
|
|
19
|
-
});
|
|
20
|
-
program.name(name).description(description).version(version, '-v, --version').option('-c, --coverageFileGlob <glob>', 'Glob to get all json coverage files').option('-o, --outputDirectory <dir>', 'Directory where all merged coverage reports').option('-r, --reporters <reporters...>', 'Which reporters (either built-in, or custom) to use to generate the merged coverage reports').action((options)=>{
|
|
21
|
-
return createMergedCoverageReports(options);
|
|
22
|
-
});
|
|
23
|
-
return program;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const main = async ()=>{
|
|
27
|
-
const program = await createProgram();
|
|
28
|
-
program.parse();
|
|
29
|
-
};
|
|
30
|
-
main().catch((e)=>{
|
|
31
|
-
console.error(e);
|
|
32
|
-
process.exit(1);
|
|
33
|
-
});
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var path = require('path');
|
|
4
|
-
var istanbulLibCoverage = require('istanbul-lib-coverage');
|
|
5
|
-
var istanbulLibReport = require('istanbul-lib-report');
|
|
6
|
-
var istanbulReports = require('istanbul-reports');
|
|
7
|
-
var fsExtra = require('fs-extra');
|
|
8
|
-
var tsimportlib = require('tsimportlib');
|
|
9
|
-
|
|
10
|
-
function _interopNamespace(e) {
|
|
11
|
-
if (e && e.__esModule) return e;
|
|
12
|
-
var n = Object.create(null);
|
|
13
|
-
if (e) {
|
|
14
|
-
Object.keys(e).forEach(function (k) {
|
|
15
|
-
if (k !== 'default') {
|
|
16
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function () { return e[k]; }
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
n["default"] = e;
|
|
25
|
-
return Object.freeze(n);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
var path__namespace = /*#__PURE__*/_interopNamespace(path);
|
|
29
|
-
|
|
30
|
-
const getGlobby = ()=>tsimportlib.dynamicImport(require.resolve('globby'), module);
|
|
31
|
-
const normalizeOptions = (options)=>{
|
|
32
|
-
const { coverageFileGlob = 'coverage/**/coverage-final.json', outputDirectory = path__namespace.join('coverage', 'merged'), reporters = [
|
|
33
|
-
'json'
|
|
34
|
-
] } = options;
|
|
35
|
-
return {
|
|
36
|
-
coverageFileGlob,
|
|
37
|
-
outputDirectory,
|
|
38
|
-
reporters
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
const createMergedCoverageReports = async (options = {})=>{
|
|
42
|
-
const { coverageFileGlob, outputDirectory, reporters } = normalizeOptions(options);
|
|
43
|
-
const { globby } = await getGlobby();
|
|
44
|
-
const jsonFilePaths = await globby([
|
|
45
|
-
coverageFileGlob,
|
|
46
|
-
`!${outputDirectory}/**/*`
|
|
47
|
-
]);
|
|
48
|
-
if (jsonFilePaths.length === 0) {
|
|
49
|
-
throw new Error(`No coverage reports found with the ${coverageFileGlob} glob`);
|
|
50
|
-
}
|
|
51
|
-
const mergedMap = istanbulLibCoverage.createCoverageMap();
|
|
52
|
-
for (const jsonFilePath of jsonFilePaths){
|
|
53
|
-
const coverageJson = await fsExtra.readJson(// ensure absolute path, otherwise ENOENT error happens
|
|
54
|
-
path__namespace.resolve(jsonFilePath));
|
|
55
|
-
mergedMap.merge(coverageJson);
|
|
56
|
-
}
|
|
57
|
-
const reportGenerationContext = istanbulLibReport.createContext({
|
|
58
|
-
dir: outputDirectory,
|
|
59
|
-
defaultSummarizer: 'nested',
|
|
60
|
-
coverageMap: mergedMap
|
|
61
|
-
});
|
|
62
|
-
reporters.forEach((reporter)=>{
|
|
63
|
-
const report = istanbulReports.create(// HACK: may be a custom reporter
|
|
64
|
-
reporter);
|
|
65
|
-
report.execute(reportGenerationContext);
|
|
66
|
-
});
|
|
67
|
-
console.log(`Generated ${reporters.join(', ')} reports to ${outputDirectory}`);
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
exports.createMergedCoverageReports = createMergedCoverageReports;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import * as path from 'path';
|
|
2
|
-
import { createCoverageMap } from 'istanbul-lib-coverage';
|
|
3
|
-
import { createContext } from 'istanbul-lib-report';
|
|
4
|
-
import { create } from 'istanbul-reports';
|
|
5
|
-
import { readJson } from 'fs-extra';
|
|
6
|
-
import { dynamicImport } from 'tsimportlib';
|
|
7
|
-
|
|
8
|
-
const getGlobby = ()=>dynamicImport(require.resolve('globby'), module);
|
|
9
|
-
const normalizeOptions = (options)=>{
|
|
10
|
-
const { coverageFileGlob = 'coverage/**/coverage-final.json', outputDirectory = path.join('coverage', 'merged'), reporters = [
|
|
11
|
-
'json'
|
|
12
|
-
] } = options;
|
|
13
|
-
return {
|
|
14
|
-
coverageFileGlob,
|
|
15
|
-
outputDirectory,
|
|
16
|
-
reporters
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
const createMergedCoverageReports = async (options = {})=>{
|
|
20
|
-
const { coverageFileGlob, outputDirectory, reporters } = normalizeOptions(options);
|
|
21
|
-
const { globby } = await getGlobby();
|
|
22
|
-
const jsonFilePaths = await globby([
|
|
23
|
-
coverageFileGlob,
|
|
24
|
-
`!${outputDirectory}/**/*`
|
|
25
|
-
]);
|
|
26
|
-
if (jsonFilePaths.length === 0) {
|
|
27
|
-
throw new Error(`No coverage reports found with the ${coverageFileGlob} glob`);
|
|
28
|
-
}
|
|
29
|
-
const mergedMap = createCoverageMap();
|
|
30
|
-
for (const jsonFilePath of jsonFilePaths){
|
|
31
|
-
const coverageJson = await readJson(// ensure absolute path, otherwise ENOENT error happens
|
|
32
|
-
path.resolve(jsonFilePath));
|
|
33
|
-
mergedMap.merge(coverageJson);
|
|
34
|
-
}
|
|
35
|
-
const reportGenerationContext = createContext({
|
|
36
|
-
dir: outputDirectory,
|
|
37
|
-
defaultSummarizer: 'nested',
|
|
38
|
-
coverageMap: mergedMap
|
|
39
|
-
});
|
|
40
|
-
reporters.forEach((reporter)=>{
|
|
41
|
-
const report = create(// HACK: may be a custom reporter
|
|
42
|
-
reporter);
|
|
43
|
-
report.execute(reportGenerationContext);
|
|
44
|
-
});
|
|
45
|
-
console.log(`Generated ${reporters.join(', ')} reports to ${outputDirectory}`);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export { createMergedCoverageReports as c };
|
package/index.cjs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src/index";
|
package/index.cjs.default.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports._default = require('./index.cjs.js').default;
|
package/index.cjs.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var createMergedCoverageReports = require('./create-merged-coverage-reports.cjs.js');
|
|
6
|
-
require('path');
|
|
7
|
-
require('istanbul-lib-coverage');
|
|
8
|
-
require('istanbul-lib-report');
|
|
9
|
-
require('istanbul-reports');
|
|
10
|
-
require('fs-extra');
|
|
11
|
-
require('tsimportlib');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
exports.createMergedCoverageReports = createMergedCoverageReports.createMergedCoverageReports;
|
package/index.cjs.mjs
DELETED
package/index.esm.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src/index";
|
package/index.esm.js
DELETED
package/src/bin.d.ts
DELETED
package/src/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './lib/create-merged-coverage-reports';
|
package/src/lib/cli-program.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
type CreateMergedCoverageReportsOptions = {
|
|
2
|
-
/**
|
|
3
|
-
* Glob to get all json coverage files
|
|
4
|
-
*
|
|
5
|
-
* @default 'coverage/** /coverage-final.json'
|
|
6
|
-
*/
|
|
7
|
-
coverageFileGlob?: string;
|
|
8
|
-
/**
|
|
9
|
-
* Directory where all merged coverage reports
|
|
10
|
-
*
|
|
11
|
-
* Note that this directory will be excluded from the coverage files lookup
|
|
12
|
-
*
|
|
13
|
-
* @default 'coverage/merged'
|
|
14
|
-
*/
|
|
15
|
-
outputDirectory?: string;
|
|
16
|
-
/**
|
|
17
|
-
* Which reporters (either built-in, or custom) to use to generate the merged coverage reports
|
|
18
|
-
*
|
|
19
|
-
* @see https://istanbul.js.org/docs/advanced/alternative-reporters
|
|
20
|
-
*
|
|
21
|
-
* @default ['json']
|
|
22
|
-
*/
|
|
23
|
-
reporters?: string[];
|
|
24
|
-
};
|
|
25
|
-
export declare const createMergedCoverageReports: (options?: CreateMergedCoverageReportsOptions) => Promise<void>;
|
|
26
|
-
export {};
|