create-merged-coverage-reports 0.1.0 → 0.3.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 -10
- package/bin.cjs.d.ts +0 -1
- package/bin.cjs.default.js +0 -1
- package/bin.cjs.js +0 -13
- package/bin.cjs.mjs +0 -2
- package/bin.esm.js +0 -11
- package/index.cjs.d.ts +0 -1
- package/index.cjs.default.js +0 -1
- package/index.cjs.js +0 -9
- package/index.cjs.mjs +0 -2
- package/index.esm.js +0 -1
- package/lib/cli-program.cjs.js +0 -24
- package/lib/cli-program.esm.js +0 -20
- package/lib/create-merged-coverage-reports.cjs.js +0 -72
- package/lib/create-merged-coverage-reports.esm.js +0 -48
- 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.3.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": "^11.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": "^17.0.0",
|
|
33
|
-
"@commitlint/config-conventional": "^17.0.0",
|
|
34
|
-
"@gvrs-nx/ts-package": "0.3.0",
|
|
35
|
-
"@jscutlery/semver": "^4.1.0",
|
|
36
|
-
"@nx/eslint": "17.1.3",
|
|
37
|
-
"@nx/eslint-plugin": "17.1.3",
|
|
38
|
-
"@nx/js": "17.1.3",
|
|
39
|
-
"@nx/rollup": "17.1.3",
|
|
40
|
-
"@nx/vite": "17.1.3",
|
|
41
|
-
"@nx/workspace": "17.1.3",
|
|
42
|
-
"@swc-node/register": "~1.6.7",
|
|
43
|
-
"@swc/cli": "~0.1.62",
|
|
44
|
-
"@swc/core": "~1.3.85",
|
|
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": "^2.6.2",
|
|
61
|
-
"rollup-plugin-preserve-shebang": "1.0.1",
|
|
62
|
-
"tmp": "^0.2.1",
|
|
63
|
-
"tslib": "^2.3.0",
|
|
64
|
-
"typescript": "~5.2.2",
|
|
65
|
-
"verdaccio": "^5.0.4",
|
|
66
|
-
"vite": "~4.3.9",
|
|
67
|
-
"vitest": "~0.34.6"
|
|
43
|
+
"bumpp": "^10.2.0",
|
|
44
|
+
"changelogithub": "^13.16.0",
|
|
45
|
+
"oxlint": "^1.8.0",
|
|
46
|
+
"pkg-pr-new": "^0.0.54",
|
|
47
|
+
"prettier": "^3.6.2",
|
|
48
|
+
"tmp": "^0.2.3",
|
|
49
|
+
"tsdown": "^0.13.0",
|
|
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
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,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var cliProgram = require('./lib/cli-program.cjs.js');
|
|
5
|
-
|
|
6
|
-
const main = async ()=>{
|
|
7
|
-
const program = await cliProgram.createProgram();
|
|
8
|
-
program.parse();
|
|
9
|
-
};
|
|
10
|
-
main().catch((e)=>{
|
|
11
|
-
console.error(e);
|
|
12
|
-
process.exit(1);
|
|
13
|
-
});
|
package/bin.cjs.mjs
DELETED
package/bin.esm.js
DELETED
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,9 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var createMergedCoverageReports = require('./lib/create-merged-coverage-reports.cjs.js');
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.createMergedCoverageReports = createMergedCoverageReports.createMergedCoverageReports;
|
package/index.cjs.mjs
DELETED
package/index.esm.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { createMergedCoverageReports } from './lib/create-merged-coverage-reports.esm.js';
|
package/lib/cli-program.cjs.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var commander = require('commander');
|
|
6
|
-
var tsimportlib = require('tsimportlib');
|
|
7
|
-
var createMergedCoverageReports = require('./create-merged-coverage-reports.cjs.js');
|
|
8
|
-
|
|
9
|
-
const createProgram = async ({ exitOverride = false } = {})=>{
|
|
10
|
-
const program = new commander.Command();
|
|
11
|
-
if (exitOverride) {
|
|
12
|
-
program.exitOverride();
|
|
13
|
-
}
|
|
14
|
-
const { readPackageUp } = await tsimportlib.dynamicImport(require.resolve('read-package-up'), module);
|
|
15
|
-
const { packageJson: { name, version, description } } = await readPackageUp({
|
|
16
|
-
cwd: __dirname
|
|
17
|
-
});
|
|
18
|
-
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)=>{
|
|
19
|
-
return createMergedCoverageReports.createMergedCoverageReports(options);
|
|
20
|
-
});
|
|
21
|
-
return program;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
exports.createProgram = createProgram;
|
package/lib/cli-program.esm.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { dynamicImport } from 'tsimportlib';
|
|
3
|
-
import { createMergedCoverageReports } from './create-merged-coverage-reports.esm.js';
|
|
4
|
-
|
|
5
|
-
const createProgram = async ({ exitOverride = false } = {})=>{
|
|
6
|
-
const program = new Command();
|
|
7
|
-
if (exitOverride) {
|
|
8
|
-
program.exitOverride();
|
|
9
|
-
}
|
|
10
|
-
const { readPackageUp } = await dynamicImport(require.resolve('read-package-up'), module);
|
|
11
|
-
const { packageJson: { name, version, description } } = await readPackageUp({
|
|
12
|
-
cwd: __dirname
|
|
13
|
-
});
|
|
14
|
-
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)=>{
|
|
15
|
-
return createMergedCoverageReports(options);
|
|
16
|
-
});
|
|
17
|
-
return program;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export { createProgram };
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var path = require('path');
|
|
6
|
-
var istanbulLibCoverage = require('istanbul-lib-coverage');
|
|
7
|
-
var istanbulLibReport = require('istanbul-lib-report');
|
|
8
|
-
var istanbulReports = require('istanbul-reports');
|
|
9
|
-
var fsExtra = require('fs-extra');
|
|
10
|
-
var tsimportlib = require('tsimportlib');
|
|
11
|
-
|
|
12
|
-
function _interopNamespace(e) {
|
|
13
|
-
if (e && e.__esModule) return e;
|
|
14
|
-
var n = Object.create(null);
|
|
15
|
-
if (e) {
|
|
16
|
-
Object.keys(e).forEach(function (k) {
|
|
17
|
-
if (k !== 'default') {
|
|
18
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function () { return e[k]; }
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
n["default"] = e;
|
|
27
|
-
return Object.freeze(n);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
var path__namespace = /*#__PURE__*/_interopNamespace(path);
|
|
31
|
-
|
|
32
|
-
const getGlobby = ()=>tsimportlib.dynamicImport(require.resolve('globby'), module);
|
|
33
|
-
const normalizeOptions = (options)=>{
|
|
34
|
-
const { coverageFileGlob = 'coverage/**/coverage-final.json', outputDirectory = path__namespace.join('coverage', 'merged'), reporters = [
|
|
35
|
-
'json'
|
|
36
|
-
] } = options;
|
|
37
|
-
return {
|
|
38
|
-
coverageFileGlob,
|
|
39
|
-
outputDirectory,
|
|
40
|
-
reporters
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
const createMergedCoverageReports = async (options = {})=>{
|
|
44
|
-
const { coverageFileGlob, outputDirectory, reporters } = normalizeOptions(options);
|
|
45
|
-
const { globby } = await getGlobby();
|
|
46
|
-
const jsonFilePaths = await globby([
|
|
47
|
-
coverageFileGlob,
|
|
48
|
-
`!${outputDirectory}/**/*`
|
|
49
|
-
]);
|
|
50
|
-
if (jsonFilePaths.length === 0) {
|
|
51
|
-
throw new Error(`No coverage reports found with the ${coverageFileGlob} glob`);
|
|
52
|
-
}
|
|
53
|
-
const mergedMap = istanbulLibCoverage.createCoverageMap();
|
|
54
|
-
for (const jsonFilePath of jsonFilePaths){
|
|
55
|
-
const coverageJson = await fsExtra.readJson(// ensure absolute path, otherwise ENOENT error happens
|
|
56
|
-
path__namespace.resolve(jsonFilePath));
|
|
57
|
-
mergedMap.merge(coverageJson);
|
|
58
|
-
}
|
|
59
|
-
const reportGenerationContext = istanbulLibReport.createContext({
|
|
60
|
-
dir: outputDirectory,
|
|
61
|
-
defaultSummarizer: 'nested',
|
|
62
|
-
coverageMap: mergedMap
|
|
63
|
-
});
|
|
64
|
-
reporters.forEach((reporter)=>{
|
|
65
|
-
const report = istanbulReports.create(// HACK: may be a custom reporter
|
|
66
|
-
reporter);
|
|
67
|
-
report.execute(reportGenerationContext);
|
|
68
|
-
});
|
|
69
|
-
console.log(`Generated ${reporters.join(', ')} reports to ${outputDirectory}`);
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
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 };
|
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 {};
|