@plugjs/plug 0.0.27 → 0.1.1
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/dist/{failure.cjs → asserts.cjs} +30 -10
- package/dist/asserts.cjs.map +6 -0
- package/dist/{failure.d.ts → asserts.d.ts} +4 -1
- package/dist/asserts.mjs +51 -0
- package/dist/asserts.mjs.map +6 -0
- package/dist/async.cjs +2 -2
- package/dist/async.cjs.map +1 -1
- package/dist/async.mjs +2 -2
- package/dist/async.mjs.map +1 -1
- package/dist/build.cjs +22 -33
- package/dist/build.cjs.map +1 -1
- package/dist/build.d.ts +2 -13
- package/dist/build.mjs +17 -27
- package/dist/build.mjs.map +1 -1
- package/dist/files.cjs +7 -11
- package/dist/files.cjs.map +1 -1
- package/dist/files.mjs +5 -9
- package/dist/files.mjs.map +1 -1
- package/dist/fork.cjs +35 -30
- package/dist/fork.cjs.map +1 -1
- package/dist/fork.d.ts +6 -3
- package/dist/fork.mjs +18 -13
- package/dist/fork.mjs.map +1 -1
- package/dist/{utils/asyncfs.cjs → fs.cjs} +6 -6
- package/dist/fs.cjs.map +6 -0
- package/dist/{utils/asyncfs.d.ts → fs.d.ts} +1 -1
- package/dist/{utils/asyncfs.mjs → fs.mjs} +3 -3
- package/dist/fs.mjs.map +6 -0
- package/dist/helpers.cjs +31 -14
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.ts +30 -1
- package/dist/helpers.mjs +22 -7
- package/dist/helpers.mjs.map +1 -1
- package/dist/index.cjs +36 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +25 -8
- package/dist/index.mjs +20 -5
- package/dist/index.mjs.map +1 -1
- package/dist/{log → logging}/colors.cjs +1 -1
- package/dist/{log → logging}/colors.cjs.map +1 -1
- package/dist/{log → logging}/colors.d.ts +0 -0
- package/dist/{log → logging}/colors.mjs +1 -1
- package/dist/{log → logging}/colors.mjs.map +1 -1
- package/dist/{log → logging}/emit.cjs +1 -2
- package/dist/{log → logging}/emit.cjs.map +2 -2
- package/dist/{log → logging}/emit.d.ts +1 -1
- package/dist/{log → logging}/emit.mjs +1 -2
- package/dist/{log → logging}/emit.mjs.map +2 -2
- package/dist/{log → logging}/levels.cjs +1 -1
- package/dist/{log → logging}/levels.cjs.map +1 -1
- package/dist/{log → logging}/levels.d.ts +6 -6
- package/dist/{log → logging}/levels.mjs +1 -1
- package/dist/{log → logging}/levels.mjs.map +1 -1
- package/dist/{log → logging}/logger.cjs +13 -7
- package/dist/logging/logger.cjs.map +6 -0
- package/dist/{log → logging}/logger.d.ts +0 -0
- package/dist/{log → logging}/logger.mjs +11 -5
- package/dist/logging/logger.mjs.map +6 -0
- package/dist/{log → logging}/options.cjs +12 -6
- package/dist/logging/options.cjs.map +6 -0
- package/dist/{log → logging}/options.d.ts +1 -1
- package/dist/{log → logging}/options.mjs +12 -6
- package/dist/logging/options.mjs.map +6 -0
- package/dist/{log → logging}/report.cjs +11 -11
- package/dist/logging/report.cjs.map +6 -0
- package/dist/{log → logging}/report.d.ts +1 -1
- package/dist/{log → logging}/report.mjs +8 -8
- package/dist/logging/report.mjs.map +6 -0
- package/dist/{log → logging}/spinner.cjs +1 -1
- package/dist/{log → logging}/spinner.cjs.map +1 -1
- package/dist/{log → logging}/spinner.d.ts +0 -0
- package/dist/{log → logging}/spinner.mjs +1 -1
- package/dist/{log → logging}/spinner.mjs.map +1 -1
- package/dist/{log.cjs → logging.cjs} +13 -16
- package/dist/logging.cjs.map +6 -0
- package/dist/logging.d.ts +10 -0
- package/dist/{log.mjs → logging.mjs} +10 -13
- package/dist/logging.mjs.map +6 -0
- package/dist/paths.cjs +25 -27
- package/dist/paths.cjs.map +1 -1
- package/dist/paths.d.ts +8 -8
- package/dist/paths.mjs +23 -25
- package/dist/paths.mjs.map +1 -1
- package/dist/pipe.cjs +10 -13
- package/dist/pipe.cjs.map +1 -1
- package/dist/pipe.d.ts +13 -19
- package/dist/pipe.mjs +6 -9
- package/dist/pipe.mjs.map +1 -1
- package/dist/plugs/copy.cjs +14 -14
- package/dist/plugs/copy.cjs.map +1 -1
- package/dist/plugs/copy.d.ts +1 -1
- package/dist/plugs/copy.mjs +3 -3
- package/dist/plugs/copy.mjs.map +1 -1
- package/dist/plugs/debug.cjs +7 -7
- package/dist/plugs/debug.cjs.map +1 -1
- package/dist/plugs/debug.d.ts +1 -1
- package/dist/plugs/debug.mjs +1 -1
- package/dist/plugs/edit.cjs +21 -0
- package/dist/plugs/edit.cjs.map +6 -0
- package/dist/plugs/edit.d.ts +7 -0
- package/dist/plugs/edit.mjs +29 -0
- package/dist/plugs/edit.mjs.map +6 -0
- package/dist/plugs/esbuild/fix-extensions.cjs +7 -8
- package/dist/plugs/esbuild/fix-extensions.cjs.map +1 -1
- package/dist/plugs/esbuild/fix-extensions.mjs +4 -5
- package/dist/plugs/esbuild/fix-extensions.mjs.map +1 -1
- package/dist/plugs/esbuild.cjs +19 -14
- package/dist/plugs/esbuild.cjs.map +1 -1
- package/dist/plugs/esbuild.d.ts +2 -2
- package/dist/plugs/esbuild.mjs +8 -3
- package/dist/plugs/esbuild.mjs.map +1 -1
- package/dist/plugs/exec.cjs +2 -82
- package/dist/plugs/exec.cjs.map +2 -2
- package/dist/plugs/exec.d.ts +6 -32
- package/dist/plugs/exec.mjs +2 -68
- package/dist/plugs/exec.mjs.map +1 -1
- package/dist/plugs/filter.d.ts +1 -1
- package/dist/plugs/rmf.cjs +5 -5
- package/dist/plugs/rmf.cjs.map +1 -1
- package/dist/plugs/rmf.d.ts +1 -1
- package/dist/plugs/rmf.mjs +2 -2
- package/dist/plugs/rmf.mjs.map +1 -1
- package/dist/plugs.cjs +1 -4
- package/dist/plugs.cjs.map +1 -1
- package/dist/plugs.d.ts +1 -4
- package/dist/plugs.mjs +1 -4
- package/dist/plugs.mjs.map +1 -1
- package/dist/types.d.ts +8 -8
- package/dist/utils/caller.cjs +8 -5
- package/dist/utils/caller.cjs.map +1 -1
- package/dist/utils/caller.mjs +6 -3
- package/dist/utils/caller.mjs.map +1 -1
- package/dist/utils/exec.cjs +102 -0
- package/dist/utils/exec.cjs.map +6 -0
- package/dist/utils/exec.d.ts +15 -0
- package/dist/utils/exec.mjs +71 -0
- package/dist/utils/exec.mjs.map +6 -0
- package/dist/utils/match.d.ts +1 -1
- package/dist/utils/options.d.ts +3 -3
- package/dist/utils/walk.cjs +7 -7
- package/dist/utils/walk.cjs.map +1 -1
- package/dist/utils/walk.mjs +2 -2
- package/dist/utils/walk.mjs.map +1 -1
- package/dist/{plugs/tsc.cjs → utils.cjs} +9 -7
- package/dist/utils.cjs.map +6 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.mjs +6 -0
- package/dist/utils.mjs.map +6 -0
- package/extra/cli.mjs +26 -5
- package/extra/ts-loader.mjs +4 -4
- package/package.json +101 -20
- package/src/{assert.ts → asserts.ts} +36 -1
- package/src/async.ts +3 -1
- package/src/build.ts +179 -0
- package/src/files.ts +5 -5
- package/src/fork.ts +19 -11
- package/src/{utils/asyncfs.ts → fs.ts} +7 -6
- package/src/helpers.ts +56 -8
- package/src/index.ts +30 -8
- package/src/{log → logging}/colors.ts +0 -0
- package/src/{log → logging}/emit.ts +0 -1
- package/src/{log → logging}/levels.ts +0 -0
- package/src/{log → logging}/logger.ts +13 -4
- package/src/{log → logging}/options.ts +11 -7
- package/src/{log → logging}/report.ts +10 -9
- package/src/{log → logging}/spinner.ts +0 -0
- package/src/{log.ts → logging.ts} +7 -7
- package/src/paths.ts +36 -41
- package/src/pipe.ts +13 -20
- package/src/plugs/copy.ts +4 -4
- package/src/plugs/debug.ts +2 -2
- package/src/plugs/edit.ts +34 -0
- package/src/plugs/esbuild/fix-extensions.ts +2 -2
- package/src/plugs/esbuild.ts +13 -7
- package/src/plugs/exec.ts +8 -129
- package/src/plugs/filter.ts +1 -1
- package/src/plugs/rmf.ts +3 -3
- package/src/plugs.ts +1 -13
- package/src/types.ts +1 -1
- package/src/utils/caller.ts +6 -3
- package/src/utils/exec.ts +112 -0
- package/src/utils/walk.ts +3 -3
- package/src/utils.ts +4 -0
- package/types/{webassembly.d.ts → plugjs.d.ts} +7 -1
- package/dist/assert.cjs +0 -52
- package/dist/assert.cjs.map +0 -6
- package/dist/assert.d.ts +0 -4
- package/dist/assert.mjs +0 -26
- package/dist/assert.mjs.map +0 -6
- package/dist/failure.cjs.map +0 -6
- package/dist/failure.mjs +0 -33
- package/dist/failure.mjs.map +0 -6
- package/dist/log/logger.cjs.map +0 -6
- package/dist/log/logger.mjs.map +0 -6
- package/dist/log/options.cjs.map +0 -6
- package/dist/log/options.mjs.map +0 -6
- package/dist/log/report.cjs.map +0 -6
- package/dist/log/report.mjs.map +0 -6
- package/dist/log.cjs.map +0 -6
- package/dist/log.d.ts +0 -10
- package/dist/log.mjs.map +0 -6
- package/dist/plugs/coverage/analysis.cjs +0 -234
- package/dist/plugs/coverage/analysis.cjs.map +0 -6
- package/dist/plugs/coverage/analysis.d.ts +0 -104
- package/dist/plugs/coverage/analysis.mjs +0 -207
- package/dist/plugs/coverage/analysis.mjs.map +0 -6
- package/dist/plugs/coverage/report.cjs +0 -235
- package/dist/plugs/coverage/report.cjs.map +0 -6
- package/dist/plugs/coverage/report.d.ts +0 -59
- package/dist/plugs/coverage/report.mjs +0 -220
- package/dist/plugs/coverage/report.mjs.map +0 -6
- package/dist/plugs/coverage.cjs +0 -140
- package/dist/plugs/coverage.cjs.map +0 -6
- package/dist/plugs/coverage.d.ts +0 -49
- package/dist/plugs/coverage.mjs +0 -123
- package/dist/plugs/coverage.mjs.map +0 -6
- package/dist/plugs/eslint/runner.cjs +0 -91
- package/dist/plugs/eslint/runner.cjs.map +0 -6
- package/dist/plugs/eslint/runner.d.ts +0 -8
- package/dist/plugs/eslint/runner.mjs +0 -68
- package/dist/plugs/eslint/runner.mjs.map +0 -6
- package/dist/plugs/eslint.cjs +0 -22
- package/dist/plugs/eslint.cjs.map +0 -6
- package/dist/plugs/eslint.d.ts +0 -34
- package/dist/plugs/eslint.mjs +0 -5
- package/dist/plugs/eslint.mjs.map +0 -6
- package/dist/plugs/mocha/reporter.cjs +0 -159
- package/dist/plugs/mocha/reporter.cjs.map +0 -6
- package/dist/plugs/mocha/reporter.d.ts +0 -6
- package/dist/plugs/mocha/reporter.mjs +0 -127
- package/dist/plugs/mocha/reporter.mjs.map +0 -6
- package/dist/plugs/mocha/runner.cjs +0 -82
- package/dist/plugs/mocha/runner.cjs.map +0 -6
- package/dist/plugs/mocha/runner.d.ts +0 -8
- package/dist/plugs/mocha/runner.mjs +0 -53
- package/dist/plugs/mocha/runner.mjs.map +0 -6
- package/dist/plugs/mocha.cjs +0 -22
- package/dist/plugs/mocha.cjs.map +0 -6
- package/dist/plugs/mocha.d.ts +0 -37
- package/dist/plugs/mocha.mjs +0 -5
- package/dist/plugs/mocha.mjs.map +0 -6
- package/dist/plugs/tsc/compiler.cjs +0 -74
- package/dist/plugs/tsc/compiler.cjs.map +0 -6
- package/dist/plugs/tsc/compiler.d.ts +0 -24
- package/dist/plugs/tsc/compiler.mjs +0 -43
- package/dist/plugs/tsc/compiler.mjs.map +0 -6
- package/dist/plugs/tsc/options.cjs +0 -82
- package/dist/plugs/tsc/options.cjs.map +0 -6
- package/dist/plugs/tsc/options.d.ts +0 -8
- package/dist/plugs/tsc/options.mjs +0 -51
- package/dist/plugs/tsc/options.mjs.map +0 -6
- package/dist/plugs/tsc/report.cjs +0 -90
- package/dist/plugs/tsc/report.cjs.map +0 -6
- package/dist/plugs/tsc/report.d.ts +0 -5
- package/dist/plugs/tsc/report.mjs +0 -59
- package/dist/plugs/tsc/report.mjs.map +0 -6
- package/dist/plugs/tsc/runner.cjs +0 -124
- package/dist/plugs/tsc/runner.cjs.map +0 -6
- package/dist/plugs/tsc/runner.d.ts +0 -8
- package/dist/plugs/tsc/runner.mjs +0 -95
- package/dist/plugs/tsc/runner.mjs.map +0 -6
- package/dist/plugs/tsc.cjs.map +0 -6
- package/dist/plugs/tsc.d.ts +0 -48
- package/dist/plugs/tsc.mjs +0 -5
- package/dist/plugs/tsc.mjs.map +0 -6
- package/dist/utils/asyncfs.cjs.map +0 -6
- package/dist/utils/asyncfs.mjs.map +0 -6
- package/src/failure.ts +0 -43
- package/src/plugs/coverage/analysis.ts +0 -400
- package/src/plugs/coverage/report.ts +0 -368
- package/src/plugs/coverage.ts +0 -216
- package/src/plugs/eslint/runner.ts +0 -100
- package/src/plugs/eslint.ts +0 -42
- package/src/plugs/mocha/reporter.ts +0 -178
- package/src/plugs/mocha/runner.ts +0 -66
- package/src/plugs/mocha.ts +0 -43
- package/src/plugs/tsc/compiler.ts +0 -68
- package/src/plugs/tsc/options.ts +0 -100
- package/src/plugs/tsc/report.ts +0 -77
- package/src/plugs/tsc/runner.ts +0 -133
- package/src/plugs/tsc.ts +0 -58
- package/types/globals.d.ts +0 -15
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// plugs/coverage/report.ts
|
|
21
|
-
var report_exports = {};
|
|
22
|
-
__export(report_exports, {
|
|
23
|
-
COVERAGE_IGNORED: () => COVERAGE_IGNORED,
|
|
24
|
-
COVERAGE_SKIPPED: () => COVERAGE_SKIPPED,
|
|
25
|
-
coverageReport: () => coverageReport
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(report_exports);
|
|
28
|
-
var import_node_url = require("node:url");
|
|
29
|
-
var import_types = require("@babel/types");
|
|
30
|
-
var import_parser = require("@babel/parser");
|
|
31
|
-
var import_log = require("../../log.cjs");
|
|
32
|
-
var import_asyncfs = require("../../utils/asyncfs.cjs");
|
|
33
|
-
var COVERAGE_SKIPPED = -2;
|
|
34
|
-
var COVERAGE_IGNORED = -1;
|
|
35
|
-
var ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next|file)(\s|$)/g;
|
|
36
|
-
async function coverageReport(analyser, sourceFiles, log) {
|
|
37
|
-
var _a;
|
|
38
|
-
const results = {};
|
|
39
|
-
const nodes = {
|
|
40
|
-
coveredNodes: 0,
|
|
41
|
-
missingNodes: 0,
|
|
42
|
-
ignoredNodes: 0,
|
|
43
|
-
totalNodes: 0,
|
|
44
|
-
coverage: 0
|
|
45
|
-
};
|
|
46
|
-
for (const file of sourceFiles) {
|
|
47
|
-
const url = (0, import_node_url.pathToFileURL)(file).toString();
|
|
48
|
-
const code = await (0, import_asyncfs.readFile)(file, "utf-8");
|
|
49
|
-
const tree = (0, import_parser.parse)(code, {
|
|
50
|
-
allowImportExportEverywhere: true,
|
|
51
|
-
allowAwaitOutsideFunction: true,
|
|
52
|
-
allowReturnOutsideFunction: true,
|
|
53
|
-
allowSuperOutsideMethod: true,
|
|
54
|
-
allowUndeclaredExports: true,
|
|
55
|
-
attachComment: true,
|
|
56
|
-
errorRecovery: false,
|
|
57
|
-
sourceType: "unambiguous",
|
|
58
|
-
sourceFilename: file,
|
|
59
|
-
startLine: 1,
|
|
60
|
-
startColumn: 0,
|
|
61
|
-
plugins: ["typescript"],
|
|
62
|
-
strictMode: false,
|
|
63
|
-
ranges: false,
|
|
64
|
-
tokens: false,
|
|
65
|
-
createParenthesizedExpressions: true
|
|
66
|
-
});
|
|
67
|
-
const codeCoverage = new Array(code.length).fill(0);
|
|
68
|
-
const nodeCoverage = {
|
|
69
|
-
coveredNodes: 0,
|
|
70
|
-
missingNodes: 0,
|
|
71
|
-
ignoredNodes: 0,
|
|
72
|
-
totalNodes: 0,
|
|
73
|
-
coverage: 0
|
|
74
|
-
};
|
|
75
|
-
const setCodeCoverage = (node, coverage, recursive) => {
|
|
76
|
-
if (!node)
|
|
77
|
-
return;
|
|
78
|
-
if (Array.isArray(node)) {
|
|
79
|
-
for (const n of node)
|
|
80
|
-
setCodeCoverage(n, coverage, recursive);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
if (node.start != null && node.end != null) {
|
|
84
|
-
for (let i = node.start; i < node.end; i++) {
|
|
85
|
-
codeCoverage[i] = coverage;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (coverage == COVERAGE_IGNORED) {
|
|
89
|
-
nodeCoverage.ignoredNodes++;
|
|
90
|
-
} else if (coverage === 0) {
|
|
91
|
-
nodeCoverage.missingNodes++;
|
|
92
|
-
} else if (coverage > 0) {
|
|
93
|
-
nodeCoverage.coveredNodes++;
|
|
94
|
-
}
|
|
95
|
-
if (!recursive)
|
|
96
|
-
return;
|
|
97
|
-
const keys = import_types.VISITOR_KEYS[node.type] || [];
|
|
98
|
-
for (const key of keys) {
|
|
99
|
-
const value = node[key];
|
|
100
|
-
if (Array.isArray(value)) {
|
|
101
|
-
for (const child of value) {
|
|
102
|
-
setCodeCoverage(child, coverage, true);
|
|
103
|
-
}
|
|
104
|
-
} else if (value) {
|
|
105
|
-
setCodeCoverage(value, coverage, true);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
const visitChildren = (node, depth) => {
|
|
110
|
-
const keys = import_types.VISITOR_KEYS[node.type] || [];
|
|
111
|
-
for (const key of keys) {
|
|
112
|
-
const children = node[key];
|
|
113
|
-
if (Array.isArray(children)) {
|
|
114
|
-
for (const child of children) {
|
|
115
|
-
if (child)
|
|
116
|
-
visitNode(child, depth + 1);
|
|
117
|
-
}
|
|
118
|
-
} else if (children) {
|
|
119
|
-
visitNode(children, depth + 1);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
const maybeIgnoreNode = (condition, node, depth) => {
|
|
124
|
-
if (condition) {
|
|
125
|
-
setCodeCoverage(node, COVERAGE_IGNORED, true);
|
|
126
|
-
} else if (node) {
|
|
127
|
-
visitNode(node, depth);
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
const visitNode = (node, depth) => {
|
|
131
|
-
var _a2, _b;
|
|
132
|
-
log.trace("-".padStart(depth * 2 + 1, " "), node.type, `${(_a2 = node.loc) == null ? void 0 : _a2.start.line}:${(_b = node.loc) == null ? void 0 : _b.start.column}`);
|
|
133
|
-
if ((0, import_types.isFile)(node))
|
|
134
|
-
return visitChildren(node, depth);
|
|
135
|
-
if ((0, import_types.isProgram)(node))
|
|
136
|
-
return visitChildren(node, depth);
|
|
137
|
-
const ignores = [];
|
|
138
|
-
for (const comment of node.leadingComments || []) {
|
|
139
|
-
for (const match of comment.value.matchAll(ignoreRegexp)) {
|
|
140
|
-
ignores.push(match[2]);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
if (ignores.includes("next"))
|
|
144
|
-
return setCodeCoverage(node, COVERAGE_IGNORED, true);
|
|
145
|
-
if ((0, import_types.isTypeScript)(node)) {
|
|
146
|
-
if ((0, import_types.isTSDeclareMethod)(node))
|
|
147
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
148
|
-
if ((0, import_types.isTSTypeReference)(node))
|
|
149
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
150
|
-
if ((0, import_types.isDeclaration)(node))
|
|
151
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
152
|
-
setCodeCoverage(node, COVERAGE_SKIPPED, false);
|
|
153
|
-
return visitChildren(node, depth);
|
|
154
|
-
}
|
|
155
|
-
if ((0, import_types.isExportDeclaration)(node) && node.exportKind === "type") {
|
|
156
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
157
|
-
}
|
|
158
|
-
if ((0, import_types.isImportDeclaration)(node) && node.importKind === "type") {
|
|
159
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
160
|
-
}
|
|
161
|
-
let coverage = 0;
|
|
162
|
-
if (node.loc) {
|
|
163
|
-
const { line, column } = node.loc.start;
|
|
164
|
-
const c = analyser.coverage(url, line, column);
|
|
165
|
-
if (c == null)
|
|
166
|
-
log.warn(`No coverage for ${node.type} at ${(0, import_log.$p)(file)}:${line}:${column}`);
|
|
167
|
-
else
|
|
168
|
-
coverage = c;
|
|
169
|
-
}
|
|
170
|
-
setCodeCoverage(node, coverage, false);
|
|
171
|
-
if ((0, import_types.isIfStatement)(node)) {
|
|
172
|
-
maybeIgnoreNode(ignores.includes("test"), node.test, depth + 1);
|
|
173
|
-
maybeIgnoreNode(ignores.includes("if"), node.consequent, depth + 1);
|
|
174
|
-
maybeIgnoreNode(ignores.includes("else"), node.alternate, depth + 1);
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
if ((0, import_types.isTryStatement)(node)) {
|
|
178
|
-
maybeIgnoreNode(ignores.includes("try"), node.block, depth + 1);
|
|
179
|
-
maybeIgnoreNode(ignores.includes("catch"), node.handler, depth + 1);
|
|
180
|
-
maybeIgnoreNode(ignores.includes("finally"), node.finalizer, depth + 1);
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
visitChildren(node, depth);
|
|
184
|
-
};
|
|
185
|
-
codeCoverage.fill(COVERAGE_SKIPPED);
|
|
186
|
-
setCodeCoverage(tree.program.directives, 0, true);
|
|
187
|
-
setCodeCoverage(tree.program.body, 0, true);
|
|
188
|
-
nodeCoverage.coveredNodes = 0;
|
|
189
|
-
nodeCoverage.missingNodes = 0;
|
|
190
|
-
nodeCoverage.ignoredNodes = 0;
|
|
191
|
-
let ignoreFileCoverage = false;
|
|
192
|
-
for (const comment of ((_a = tree.program.body[0]) == null ? void 0 : _a.leadingComments) || []) {
|
|
193
|
-
for (const match of comment.value.matchAll(ignoreRegexp)) {
|
|
194
|
-
if (match[2] === "file") {
|
|
195
|
-
ignoreFileCoverage = true;
|
|
196
|
-
break;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
if (ignoreFileCoverage)
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
if (ignoreFileCoverage) {
|
|
203
|
-
setCodeCoverage(tree.program, COVERAGE_IGNORED, true);
|
|
204
|
-
} else {
|
|
205
|
-
visitChildren(tree.program, -1);
|
|
206
|
-
}
|
|
207
|
-
setCodeCoverage(tree.comments, COVERAGE_SKIPPED, false);
|
|
208
|
-
updateNodeCoverageResult(nodeCoverage);
|
|
209
|
-
nodes.coveredNodes += nodeCoverage.coveredNodes;
|
|
210
|
-
nodes.missingNodes += nodeCoverage.missingNodes;
|
|
211
|
-
nodes.ignoredNodes += nodeCoverage.ignoredNodes;
|
|
212
|
-
nodes.totalNodes += nodeCoverage.totalNodes;
|
|
213
|
-
results[file] = { code, codeCoverage, nodeCoverage };
|
|
214
|
-
}
|
|
215
|
-
updateNodeCoverageResult(nodes);
|
|
216
|
-
return { results, nodes };
|
|
217
|
-
}
|
|
218
|
-
function updateNodeCoverageResult(result) {
|
|
219
|
-
const { coveredNodes, missingNodes, ignoredNodes } = result;
|
|
220
|
-
const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes;
|
|
221
|
-
if (totalNodes === 0) {
|
|
222
|
-
result.coverage = null;
|
|
223
|
-
} else if (totalNodes === ignoredNodes) {
|
|
224
|
-
result.coverage = null;
|
|
225
|
-
} else {
|
|
226
|
-
result.coverage = Math.floor(100 * coveredNodes / (totalNodes - ignoredNodes));
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
230
|
-
0 && (module.exports = {
|
|
231
|
-
COVERAGE_IGNORED,
|
|
232
|
-
COVERAGE_SKIPPED,
|
|
233
|
-
coverageReport
|
|
234
|
-
});
|
|
235
|
-
//# sourceMappingURL=report.cjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/plugs/coverage/report.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["_a"]
|
|
6
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import type { Logger } from '../../log';
|
|
2
|
-
import type { AbsolutePath } from '../../paths';
|
|
3
|
-
import type { CoverageAnalyser } from './analysis';
|
|
4
|
-
/**
|
|
5
|
-
* A constant indicating that coverage was skipped (is irrelevant, for e.g.
|
|
6
|
-
* comment or typescript definition nodes)
|
|
7
|
-
*/
|
|
8
|
-
export declare const COVERAGE_SKIPPED = -2;
|
|
9
|
-
/**
|
|
10
|
-
* A constant indicating that coverage was intentionally ignored because of a
|
|
11
|
-
* specific "coverage ignore ..." comment
|
|
12
|
-
*/
|
|
13
|
-
export declare const COVERAGE_IGNORED = -1;
|
|
14
|
-
/** Node coverage summary */
|
|
15
|
-
export interface NodeCoverageResult {
|
|
16
|
-
/** Number of _covered_ nodes (good!) */
|
|
17
|
-
coveredNodes: number;
|
|
18
|
-
/** Number of nodes with _no coverage_ (bad!) */
|
|
19
|
-
missingNodes: number;
|
|
20
|
-
/** Number of nodes ignored by comments like `coverage ignore xxx` */
|
|
21
|
-
ignoredNodes: number;
|
|
22
|
-
/** Total number of nodes (sum of `covered`, `missing` and `ignored`) */
|
|
23
|
-
totalNodes: number;
|
|
24
|
-
/**
|
|
25
|
-
* Percentage of code coverage (covered as a % of total - ignored nodes)
|
|
26
|
-
*
|
|
27
|
-
* A `null` value for this field indicates that no coverage data was generated
|
|
28
|
-
* either because the source was all ignored or skipped (e.g. when using
|
|
29
|
-
* `coverage ignore file` or when covering a TS source only with types).
|
|
30
|
-
*/
|
|
31
|
-
coverage: number | null;
|
|
32
|
-
}
|
|
33
|
-
/** Per-file coverage result */
|
|
34
|
-
export interface CoverageResult {
|
|
35
|
-
/** The actual code this coverage is for */
|
|
36
|
-
code: string;
|
|
37
|
-
/**
|
|
38
|
-
* Per _character_ coverage report:
|
|
39
|
-
* - `-2`: coverage skipped (comments, typescript declarations, ...)
|
|
40
|
-
* - `-1`: coverage ignored (when using `coverage ignore xxx`)
|
|
41
|
-
* - `0`: no coverage collected for this character
|
|
42
|
-
* - _any number greater than zero_: number of times this was covered
|
|
43
|
-
*/
|
|
44
|
-
codeCoverage: number[];
|
|
45
|
-
/** Node coverage summary */
|
|
46
|
-
nodeCoverage: NodeCoverageResult;
|
|
47
|
-
}
|
|
48
|
-
/** Aggregation of {@link CoverageResult} over all files */
|
|
49
|
-
export declare type CoverageResults = Record<AbsolutePath, CoverageResult>;
|
|
50
|
-
/** Our coverage report, per file */
|
|
51
|
-
export interface CoverageReport {
|
|
52
|
-
results: CoverageResults;
|
|
53
|
-
nodes: NodeCoverageResult;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Analyse coverage for the specified source files, using the data from the
|
|
57
|
-
* specified coverage files and produce a {@link CoverageReport}.
|
|
58
|
-
*/
|
|
59
|
-
export declare function coverageReport(analyser: CoverageAnalyser, sourceFiles: AbsolutePath[], log: Logger): Promise<CoverageReport>;
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
// plugs/coverage/report.ts
|
|
2
|
-
import { pathToFileURL } from "node:url";
|
|
3
|
-
import {
|
|
4
|
-
isDeclaration,
|
|
5
|
-
isExportDeclaration,
|
|
6
|
-
isFile,
|
|
7
|
-
isIfStatement,
|
|
8
|
-
isImportDeclaration,
|
|
9
|
-
isProgram,
|
|
10
|
-
isTryStatement,
|
|
11
|
-
isTSDeclareMethod,
|
|
12
|
-
isTSTypeReference,
|
|
13
|
-
isTypeScript,
|
|
14
|
-
VISITOR_KEYS
|
|
15
|
-
} from "@babel/types";
|
|
16
|
-
import { parse } from "@babel/parser";
|
|
17
|
-
import { $p } from "../../log.mjs";
|
|
18
|
-
import { readFile } from "../../utils/asyncfs.mjs";
|
|
19
|
-
var COVERAGE_SKIPPED = -2;
|
|
20
|
-
var COVERAGE_IGNORED = -1;
|
|
21
|
-
var ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next|file)(\s|$)/g;
|
|
22
|
-
async function coverageReport(analyser, sourceFiles, log) {
|
|
23
|
-
var _a;
|
|
24
|
-
const results = {};
|
|
25
|
-
const nodes = {
|
|
26
|
-
coveredNodes: 0,
|
|
27
|
-
missingNodes: 0,
|
|
28
|
-
ignoredNodes: 0,
|
|
29
|
-
totalNodes: 0,
|
|
30
|
-
coverage: 0
|
|
31
|
-
};
|
|
32
|
-
for (const file of sourceFiles) {
|
|
33
|
-
const url = pathToFileURL(file).toString();
|
|
34
|
-
const code = await readFile(file, "utf-8");
|
|
35
|
-
const tree = parse(code, {
|
|
36
|
-
allowImportExportEverywhere: true,
|
|
37
|
-
allowAwaitOutsideFunction: true,
|
|
38
|
-
allowReturnOutsideFunction: true,
|
|
39
|
-
allowSuperOutsideMethod: true,
|
|
40
|
-
allowUndeclaredExports: true,
|
|
41
|
-
attachComment: true,
|
|
42
|
-
errorRecovery: false,
|
|
43
|
-
sourceType: "unambiguous",
|
|
44
|
-
sourceFilename: file,
|
|
45
|
-
startLine: 1,
|
|
46
|
-
startColumn: 0,
|
|
47
|
-
plugins: ["typescript"],
|
|
48
|
-
strictMode: false,
|
|
49
|
-
ranges: false,
|
|
50
|
-
tokens: false,
|
|
51
|
-
createParenthesizedExpressions: true
|
|
52
|
-
});
|
|
53
|
-
const codeCoverage = new Array(code.length).fill(0);
|
|
54
|
-
const nodeCoverage = {
|
|
55
|
-
coveredNodes: 0,
|
|
56
|
-
missingNodes: 0,
|
|
57
|
-
ignoredNodes: 0,
|
|
58
|
-
totalNodes: 0,
|
|
59
|
-
coverage: 0
|
|
60
|
-
};
|
|
61
|
-
const setCodeCoverage = (node, coverage, recursive) => {
|
|
62
|
-
if (!node)
|
|
63
|
-
return;
|
|
64
|
-
if (Array.isArray(node)) {
|
|
65
|
-
for (const n of node)
|
|
66
|
-
setCodeCoverage(n, coverage, recursive);
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
if (node.start != null && node.end != null) {
|
|
70
|
-
for (let i = node.start; i < node.end; i++) {
|
|
71
|
-
codeCoverage[i] = coverage;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (coverage == COVERAGE_IGNORED) {
|
|
75
|
-
nodeCoverage.ignoredNodes++;
|
|
76
|
-
} else if (coverage === 0) {
|
|
77
|
-
nodeCoverage.missingNodes++;
|
|
78
|
-
} else if (coverage > 0) {
|
|
79
|
-
nodeCoverage.coveredNodes++;
|
|
80
|
-
}
|
|
81
|
-
if (!recursive)
|
|
82
|
-
return;
|
|
83
|
-
const keys = VISITOR_KEYS[node.type] || [];
|
|
84
|
-
for (const key of keys) {
|
|
85
|
-
const value = node[key];
|
|
86
|
-
if (Array.isArray(value)) {
|
|
87
|
-
for (const child of value) {
|
|
88
|
-
setCodeCoverage(child, coverage, true);
|
|
89
|
-
}
|
|
90
|
-
} else if (value) {
|
|
91
|
-
setCodeCoverage(value, coverage, true);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
const visitChildren = (node, depth) => {
|
|
96
|
-
const keys = VISITOR_KEYS[node.type] || [];
|
|
97
|
-
for (const key of keys) {
|
|
98
|
-
const children = node[key];
|
|
99
|
-
if (Array.isArray(children)) {
|
|
100
|
-
for (const child of children) {
|
|
101
|
-
if (child)
|
|
102
|
-
visitNode(child, depth + 1);
|
|
103
|
-
}
|
|
104
|
-
} else if (children) {
|
|
105
|
-
visitNode(children, depth + 1);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
const maybeIgnoreNode = (condition, node, depth) => {
|
|
110
|
-
if (condition) {
|
|
111
|
-
setCodeCoverage(node, COVERAGE_IGNORED, true);
|
|
112
|
-
} else if (node) {
|
|
113
|
-
visitNode(node, depth);
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
const visitNode = (node, depth) => {
|
|
117
|
-
var _a2, _b;
|
|
118
|
-
log.trace("-".padStart(depth * 2 + 1, " "), node.type, `${(_a2 = node.loc) == null ? void 0 : _a2.start.line}:${(_b = node.loc) == null ? void 0 : _b.start.column}`);
|
|
119
|
-
if (isFile(node))
|
|
120
|
-
return visitChildren(node, depth);
|
|
121
|
-
if (isProgram(node))
|
|
122
|
-
return visitChildren(node, depth);
|
|
123
|
-
const ignores = [];
|
|
124
|
-
for (const comment of node.leadingComments || []) {
|
|
125
|
-
for (const match of comment.value.matchAll(ignoreRegexp)) {
|
|
126
|
-
ignores.push(match[2]);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (ignores.includes("next"))
|
|
130
|
-
return setCodeCoverage(node, COVERAGE_IGNORED, true);
|
|
131
|
-
if (isTypeScript(node)) {
|
|
132
|
-
if (isTSDeclareMethod(node))
|
|
133
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
134
|
-
if (isTSTypeReference(node))
|
|
135
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
136
|
-
if (isDeclaration(node))
|
|
137
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
138
|
-
setCodeCoverage(node, COVERAGE_SKIPPED, false);
|
|
139
|
-
return visitChildren(node, depth);
|
|
140
|
-
}
|
|
141
|
-
if (isExportDeclaration(node) && node.exportKind === "type") {
|
|
142
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
143
|
-
}
|
|
144
|
-
if (isImportDeclaration(node) && node.importKind === "type") {
|
|
145
|
-
return setCodeCoverage(node, COVERAGE_SKIPPED, true);
|
|
146
|
-
}
|
|
147
|
-
let coverage = 0;
|
|
148
|
-
if (node.loc) {
|
|
149
|
-
const { line, column } = node.loc.start;
|
|
150
|
-
const c = analyser.coverage(url, line, column);
|
|
151
|
-
if (c == null)
|
|
152
|
-
log.warn(`No coverage for ${node.type} at ${$p(file)}:${line}:${column}`);
|
|
153
|
-
else
|
|
154
|
-
coverage = c;
|
|
155
|
-
}
|
|
156
|
-
setCodeCoverage(node, coverage, false);
|
|
157
|
-
if (isIfStatement(node)) {
|
|
158
|
-
maybeIgnoreNode(ignores.includes("test"), node.test, depth + 1);
|
|
159
|
-
maybeIgnoreNode(ignores.includes("if"), node.consequent, depth + 1);
|
|
160
|
-
maybeIgnoreNode(ignores.includes("else"), node.alternate, depth + 1);
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
if (isTryStatement(node)) {
|
|
164
|
-
maybeIgnoreNode(ignores.includes("try"), node.block, depth + 1);
|
|
165
|
-
maybeIgnoreNode(ignores.includes("catch"), node.handler, depth + 1);
|
|
166
|
-
maybeIgnoreNode(ignores.includes("finally"), node.finalizer, depth + 1);
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
visitChildren(node, depth);
|
|
170
|
-
};
|
|
171
|
-
codeCoverage.fill(COVERAGE_SKIPPED);
|
|
172
|
-
setCodeCoverage(tree.program.directives, 0, true);
|
|
173
|
-
setCodeCoverage(tree.program.body, 0, true);
|
|
174
|
-
nodeCoverage.coveredNodes = 0;
|
|
175
|
-
nodeCoverage.missingNodes = 0;
|
|
176
|
-
nodeCoverage.ignoredNodes = 0;
|
|
177
|
-
let ignoreFileCoverage = false;
|
|
178
|
-
for (const comment of ((_a = tree.program.body[0]) == null ? void 0 : _a.leadingComments) || []) {
|
|
179
|
-
for (const match of comment.value.matchAll(ignoreRegexp)) {
|
|
180
|
-
if (match[2] === "file") {
|
|
181
|
-
ignoreFileCoverage = true;
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (ignoreFileCoverage)
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
if (ignoreFileCoverage) {
|
|
189
|
-
setCodeCoverage(tree.program, COVERAGE_IGNORED, true);
|
|
190
|
-
} else {
|
|
191
|
-
visitChildren(tree.program, -1);
|
|
192
|
-
}
|
|
193
|
-
setCodeCoverage(tree.comments, COVERAGE_SKIPPED, false);
|
|
194
|
-
updateNodeCoverageResult(nodeCoverage);
|
|
195
|
-
nodes.coveredNodes += nodeCoverage.coveredNodes;
|
|
196
|
-
nodes.missingNodes += nodeCoverage.missingNodes;
|
|
197
|
-
nodes.ignoredNodes += nodeCoverage.ignoredNodes;
|
|
198
|
-
nodes.totalNodes += nodeCoverage.totalNodes;
|
|
199
|
-
results[file] = { code, codeCoverage, nodeCoverage };
|
|
200
|
-
}
|
|
201
|
-
updateNodeCoverageResult(nodes);
|
|
202
|
-
return { results, nodes };
|
|
203
|
-
}
|
|
204
|
-
function updateNodeCoverageResult(result) {
|
|
205
|
-
const { coveredNodes, missingNodes, ignoredNodes } = result;
|
|
206
|
-
const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes;
|
|
207
|
-
if (totalNodes === 0) {
|
|
208
|
-
result.coverage = null;
|
|
209
|
-
} else if (totalNodes === ignoredNodes) {
|
|
210
|
-
result.coverage = null;
|
|
211
|
-
} else {
|
|
212
|
-
result.coverage = Math.floor(100 * coveredNodes / (totalNodes - ignoredNodes));
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
export {
|
|
216
|
-
COVERAGE_IGNORED,
|
|
217
|
-
COVERAGE_SKIPPED,
|
|
218
|
-
coverageReport
|
|
219
|
-
};
|
|
220
|
-
//# sourceMappingURL=report.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/plugs/coverage/report.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["_a"]
|
|
6
|
-
}
|
package/dist/plugs/coverage.cjs
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
|
|
16
|
-
// plugs/coverage.ts
|
|
17
|
-
var coverage_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(coverage_exports);
|
|
19
|
-
var import_node_path = require("node:path");
|
|
20
|
-
var import_cov8_html = require("@plugjs/cov8-html");
|
|
21
|
-
var import_files = require("../files.cjs");
|
|
22
|
-
var import_log = require("../log.cjs");
|
|
23
|
-
var import_paths = require("../paths.cjs");
|
|
24
|
-
var import_pipe = require("../pipe.cjs");
|
|
25
|
-
var import_walk = require("../utils/walk.cjs");
|
|
26
|
-
var import_analysis = require("./coverage/analysis.cjs");
|
|
27
|
-
var import_report = require("./coverage/report.cjs");
|
|
28
|
-
(0, import_pipe.install)("coverage", class Coverage {
|
|
29
|
-
constructor(_coverageDir, _options = {}) {
|
|
30
|
-
this._coverageDir = _coverageDir;
|
|
31
|
-
this._options = _options;
|
|
32
|
-
}
|
|
33
|
-
async pipe(files, context) {
|
|
34
|
-
const coverageDir = context.resolve(this._coverageDir);
|
|
35
|
-
const coverageFiles = [];
|
|
36
|
-
for await (const file of (0, import_walk.walk)(coverageDir, ["coverage-*.json"])) {
|
|
37
|
-
coverageFiles.push((0, import_paths.resolveAbsolutePath)(coverageDir, file));
|
|
38
|
-
}
|
|
39
|
-
if (coverageFiles.length === 0) {
|
|
40
|
-
throw context.log.fail(`No coverage files found in ${(0, import_log.$p)(coverageDir)}`);
|
|
41
|
-
}
|
|
42
|
-
const sourceFiles = [...files.absolutePaths()];
|
|
43
|
-
const ms1 = Date.now();
|
|
44
|
-
const analyser = await (0, import_analysis.createAnalyser)(
|
|
45
|
-
sourceFiles,
|
|
46
|
-
coverageFiles,
|
|
47
|
-
this._options.sourceMapBias || "least_upper_bound",
|
|
48
|
-
context.log
|
|
49
|
-
);
|
|
50
|
-
context.log.info("Parsed", coverageFiles.length, "coverage files", (0, import_log.$ms)(Date.now() - ms1));
|
|
51
|
-
const ms2 = Date.now();
|
|
52
|
-
const report = await (0, import_report.coverageReport)(analyser, sourceFiles, context.log);
|
|
53
|
-
context.log.info("Analysed", sourceFiles.length, "source files", (0, import_log.$ms)(Date.now() - ms2));
|
|
54
|
-
analyser.destroy();
|
|
55
|
-
const {
|
|
56
|
-
minimumCoverage = 50,
|
|
57
|
-
minimumFileCoverage = minimumCoverage,
|
|
58
|
-
optimalCoverage = Math.round((100 + minimumCoverage) / 2),
|
|
59
|
-
optimalFileCoverage = Math.round((100 + minimumFileCoverage) / 2)
|
|
60
|
-
} = this._options;
|
|
61
|
-
let max = 0;
|
|
62
|
-
for (const file in report) {
|
|
63
|
-
if (file.length > max)
|
|
64
|
-
max = file.length;
|
|
65
|
-
}
|
|
66
|
-
let maxLength = 0;
|
|
67
|
-
for (const file in report.results) {
|
|
68
|
-
if (file.length > maxLength)
|
|
69
|
-
maxLength = file.length;
|
|
70
|
-
}
|
|
71
|
-
let fileErrors = 0;
|
|
72
|
-
let fileWarnings = 0;
|
|
73
|
-
const _report = context.log.report("Coverage report");
|
|
74
|
-
for (const [_file, result] of Object.entries(report.results)) {
|
|
75
|
-
const { coverage } = result.nodeCoverage;
|
|
76
|
-
const file = _file;
|
|
77
|
-
if (coverage == null) {
|
|
78
|
-
_report.annotate(import_log.NOTICE, file, "n/a");
|
|
79
|
-
} else if (coverage < minimumFileCoverage) {
|
|
80
|
-
_report.annotate(import_log.ERROR, file, `${coverage} %`);
|
|
81
|
-
fileErrors++;
|
|
82
|
-
} else if (coverage < optimalFileCoverage) {
|
|
83
|
-
_report.annotate(import_log.WARN, file, `${coverage} %`);
|
|
84
|
-
fileWarnings++;
|
|
85
|
-
} else {
|
|
86
|
-
_report.annotate(import_log.NOTICE, file, `${coverage} %`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (report.nodes.coverage == null) {
|
|
90
|
-
const message = "No coverage data collected";
|
|
91
|
-
_report.add({ level: import_log.WARN, message });
|
|
92
|
-
} else if (report.nodes.coverage < minimumCoverage) {
|
|
93
|
-
const message = `${(0, import_log.$red)(`${report.nodes.coverage}%`)} does not meet minimum coverage ${(0, import_log.$gry)(`(${minimumCoverage}%)`)}`;
|
|
94
|
-
_report.add({ level: import_log.ERROR, message });
|
|
95
|
-
} else if (report.nodes.coverage < optimalCoverage) {
|
|
96
|
-
const message = `${(0, import_log.$ylw)(`${report.nodes.coverage}%`)} does not meet optimal coverage ${(0, import_log.$gry)(`(${optimalCoverage}%)`)}`;
|
|
97
|
-
_report.add({ level: import_log.WARN, message });
|
|
98
|
-
}
|
|
99
|
-
if (fileErrors) {
|
|
100
|
-
const message = `${(0, import_log.$red)(fileErrors)} files do not meet minimum file coverage ${(0, import_log.$gry)(`(${minimumFileCoverage}%)`)}`;
|
|
101
|
-
_report.add({ level: import_log.ERROR, message });
|
|
102
|
-
}
|
|
103
|
-
if (fileWarnings) {
|
|
104
|
-
const message = `${(0, import_log.$ylw)(fileWarnings)} files do not meet optimal file coverage ${(0, import_log.$gry)(`(${optimalFileCoverage}%)`)}`;
|
|
105
|
-
_report.add({ level: import_log.WARN, message });
|
|
106
|
-
}
|
|
107
|
-
if (this._options.reportDir == null)
|
|
108
|
-
return _report.done(false);
|
|
109
|
-
const reportDir = context.resolve(this._options.reportDir);
|
|
110
|
-
const builder = import_files.Files.builder(reportDir);
|
|
111
|
-
const date = new Date().toISOString();
|
|
112
|
-
const thresholds = {
|
|
113
|
-
minimumCoverage,
|
|
114
|
-
minimumFileCoverage,
|
|
115
|
-
optimalCoverage,
|
|
116
|
-
optimalFileCoverage
|
|
117
|
-
};
|
|
118
|
-
await builder.write("report.json", JSON.stringify({ ...report, thresholds, date }));
|
|
119
|
-
await builder.write("index.html", import_cov8_html.html);
|
|
120
|
-
const results = {};
|
|
121
|
-
for (const [rel, abs] of files.pathMappings()) {
|
|
122
|
-
results[rel] = report.results[abs];
|
|
123
|
-
}
|
|
124
|
-
const tree = {};
|
|
125
|
-
for (const relative of Object.keys(results)) {
|
|
126
|
-
const directories = relative.split(import_node_path.sep);
|
|
127
|
-
const file = directories.pop();
|
|
128
|
-
let node = tree;
|
|
129
|
-
for (const dir of directories) {
|
|
130
|
-
node = node[dir] = node[dir] || {};
|
|
131
|
-
}
|
|
132
|
-
node[file] = relative;
|
|
133
|
-
}
|
|
134
|
-
const jsonp = JSON.stringify({ ...report, results, thresholds, tree, date });
|
|
135
|
-
await builder.write("report.js", `${import_cov8_html.initFunction}(${jsonp});`);
|
|
136
|
-
_report.done(false);
|
|
137
|
-
return builder.build();
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
//# sourceMappingURL=coverage.cjs.map
|