@plugjs/plug 0.0.27 → 0.1.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.
Files changed (270) hide show
  1. package/dist/{failure.cjs → asserts.cjs} +29 -9
  2. package/dist/asserts.cjs.map +6 -0
  3. package/dist/{failure.d.ts → asserts.d.ts} +4 -1
  4. package/dist/asserts.mjs +51 -0
  5. package/dist/asserts.mjs.map +6 -0
  6. package/dist/async.cjs +2 -2
  7. package/dist/async.cjs.map +1 -1
  8. package/dist/async.mjs +2 -2
  9. package/dist/async.mjs.map +1 -1
  10. package/dist/build.cjs +21 -30
  11. package/dist/build.cjs.map +1 -1
  12. package/dist/build.d.ts +2 -13
  13. package/dist/build.mjs +16 -24
  14. package/dist/build.mjs.map +1 -1
  15. package/dist/files.cjs +3 -3
  16. package/dist/files.cjs.map +1 -1
  17. package/dist/files.mjs +1 -1
  18. package/dist/files.mjs.map +1 -1
  19. package/dist/fork.cjs +35 -30
  20. package/dist/fork.cjs.map +1 -1
  21. package/dist/fork.d.ts +6 -3
  22. package/dist/fork.mjs +18 -13
  23. package/dist/fork.mjs.map +1 -1
  24. package/dist/{utils/asyncfs.cjs → fs.cjs} +6 -6
  25. package/dist/{utils/asyncfs.cjs.map → fs.cjs.map} +2 -2
  26. package/dist/{utils/asyncfs.d.ts → fs.d.ts} +1 -1
  27. package/dist/{utils/asyncfs.mjs → fs.mjs} +3 -3
  28. package/dist/{utils/asyncfs.mjs.map → fs.mjs.map} +2 -2
  29. package/dist/helpers.cjs +21 -14
  30. package/dist/helpers.cjs.map +1 -1
  31. package/dist/helpers.d.ts +24 -1
  32. package/dist/helpers.mjs +13 -7
  33. package/dist/helpers.mjs.map +1 -1
  34. package/dist/index.cjs +36 -6
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.ts +25 -8
  37. package/dist/index.mjs +20 -5
  38. package/dist/index.mjs.map +1 -1
  39. package/dist/{log → logging}/colors.cjs +1 -1
  40. package/dist/{log → logging}/colors.cjs.map +1 -1
  41. package/dist/{log → logging}/colors.d.ts +0 -0
  42. package/dist/{log → logging}/colors.mjs +1 -1
  43. package/dist/{log → logging}/colors.mjs.map +1 -1
  44. package/dist/{log → logging}/emit.cjs +1 -2
  45. package/dist/{log → logging}/emit.cjs.map +2 -2
  46. package/dist/{log → logging}/emit.d.ts +0 -0
  47. package/dist/{log → logging}/emit.mjs +1 -2
  48. package/dist/{log → logging}/emit.mjs.map +2 -2
  49. package/dist/{log → logging}/levels.cjs +1 -1
  50. package/dist/{log → logging}/levels.cjs.map +1 -1
  51. package/dist/{log → logging}/levels.d.ts +0 -0
  52. package/dist/{log → logging}/levels.mjs +1 -1
  53. package/dist/{log → logging}/levels.mjs.map +1 -1
  54. package/dist/{log → logging}/logger.cjs +13 -7
  55. package/dist/logging/logger.cjs.map +6 -0
  56. package/dist/{log → logging}/logger.d.ts +0 -0
  57. package/dist/{log → logging}/logger.mjs +11 -5
  58. package/dist/logging/logger.mjs.map +6 -0
  59. package/dist/{log → logging}/options.cjs +12 -6
  60. package/dist/logging/options.cjs.map +6 -0
  61. package/dist/{log → logging}/options.d.ts +1 -1
  62. package/dist/{log → logging}/options.mjs +12 -6
  63. package/dist/logging/options.mjs.map +6 -0
  64. package/dist/{log → logging}/report.cjs +10 -9
  65. package/dist/{log → logging}/report.cjs.map +2 -2
  66. package/dist/{log → logging}/report.d.ts +0 -0
  67. package/dist/{log → logging}/report.mjs +7 -6
  68. package/dist/{log → logging}/report.mjs.map +2 -2
  69. package/dist/{log → logging}/spinner.cjs +1 -1
  70. package/dist/{log → logging}/spinner.cjs.map +1 -1
  71. package/dist/{log → logging}/spinner.d.ts +0 -0
  72. package/dist/{log → logging}/spinner.mjs +1 -1
  73. package/dist/{log → logging}/spinner.mjs.map +1 -1
  74. package/dist/{log.cjs → logging.cjs} +12 -12
  75. package/dist/{log.cjs.map → logging.cjs.map} +2 -2
  76. package/dist/{log.d.ts → logging.d.ts} +6 -6
  77. package/dist/{log.mjs → logging.mjs} +9 -9
  78. package/dist/{log.mjs.map → logging.mjs.map} +1 -1
  79. package/dist/paths.cjs +5 -5
  80. package/dist/paths.cjs.map +1 -1
  81. package/dist/paths.mjs +1 -1
  82. package/dist/pipe.cjs +10 -13
  83. package/dist/pipe.cjs.map +1 -1
  84. package/dist/pipe.d.ts +6 -12
  85. package/dist/pipe.mjs +6 -9
  86. package/dist/pipe.mjs.map +1 -1
  87. package/dist/plugs/copy.cjs +14 -14
  88. package/dist/plugs/copy.cjs.map +1 -1
  89. package/dist/plugs/copy.d.ts +1 -1
  90. package/dist/plugs/copy.mjs +3 -3
  91. package/dist/plugs/copy.mjs.map +1 -1
  92. package/dist/plugs/debug.cjs +7 -7
  93. package/dist/plugs/debug.cjs.map +1 -1
  94. package/dist/plugs/debug.d.ts +1 -1
  95. package/dist/plugs/debug.mjs +1 -1
  96. package/dist/plugs/edit.cjs +21 -0
  97. package/dist/plugs/edit.cjs.map +6 -0
  98. package/dist/plugs/edit.d.ts +7 -0
  99. package/dist/plugs/edit.mjs +29 -0
  100. package/dist/plugs/edit.mjs.map +6 -0
  101. package/dist/plugs/esbuild/fix-extensions.cjs +4 -4
  102. package/dist/plugs/esbuild/fix-extensions.cjs.map +1 -1
  103. package/dist/plugs/esbuild/fix-extensions.mjs +1 -1
  104. package/dist/plugs/esbuild/fix-extensions.mjs.map +1 -1
  105. package/dist/plugs/esbuild.cjs +19 -14
  106. package/dist/plugs/esbuild.cjs.map +1 -1
  107. package/dist/plugs/esbuild.d.ts +1 -1
  108. package/dist/plugs/esbuild.mjs +8 -3
  109. package/dist/plugs/esbuild.mjs.map +1 -1
  110. package/dist/plugs/exec.cjs +2 -82
  111. package/dist/plugs/exec.cjs.map +2 -2
  112. package/dist/plugs/exec.d.ts +6 -32
  113. package/dist/plugs/exec.mjs +2 -68
  114. package/dist/plugs/exec.mjs.map +1 -1
  115. package/dist/plugs/filter.d.ts +1 -1
  116. package/dist/plugs/rmf.cjs +5 -5
  117. package/dist/plugs/rmf.cjs.map +1 -1
  118. package/dist/plugs/rmf.d.ts +1 -1
  119. package/dist/plugs/rmf.mjs +2 -2
  120. package/dist/plugs/rmf.mjs.map +1 -1
  121. package/dist/plugs.cjs +1 -4
  122. package/dist/plugs.cjs.map +1 -1
  123. package/dist/plugs.d.ts +1 -4
  124. package/dist/plugs.mjs +1 -4
  125. package/dist/plugs.mjs.map +1 -1
  126. package/dist/types.d.ts +1 -1
  127. package/dist/utils/caller.cjs +8 -5
  128. package/dist/utils/caller.cjs.map +1 -1
  129. package/dist/utils/caller.mjs +6 -3
  130. package/dist/utils/caller.mjs.map +1 -1
  131. package/dist/utils/exec.cjs +102 -0
  132. package/dist/utils/exec.cjs.map +6 -0
  133. package/dist/utils/exec.d.ts +15 -0
  134. package/dist/utils/exec.mjs +71 -0
  135. package/dist/utils/exec.mjs.map +6 -0
  136. package/dist/utils/walk.cjs +7 -7
  137. package/dist/utils/walk.cjs.map +1 -1
  138. package/dist/utils/walk.mjs +2 -2
  139. package/dist/utils/walk.mjs.map +1 -1
  140. package/dist/{plugs/tsc.cjs → utils.cjs} +9 -7
  141. package/dist/utils.cjs.map +6 -0
  142. package/dist/utils.d.ts +4 -0
  143. package/dist/utils.mjs +6 -0
  144. package/dist/utils.mjs.map +6 -0
  145. package/extra/cli.mjs +26 -5
  146. package/extra/ts-loader.mjs +2 -2
  147. package/package.json +90 -15
  148. package/src/{assert.ts → asserts.ts} +36 -1
  149. package/src/async.ts +3 -1
  150. package/src/files.ts +1 -1
  151. package/src/fork.ts +19 -11
  152. package/src/{utils/asyncfs.ts → fs.ts} +1 -1
  153. package/src/helpers.ts +40 -8
  154. package/src/index.ts +30 -8
  155. package/src/{log → logging}/colors.ts +0 -0
  156. package/src/{log → logging}/emit.ts +0 -1
  157. package/src/{log → logging}/levels.ts +0 -0
  158. package/src/{log → logging}/logger.ts +13 -4
  159. package/src/{log → logging}/options.ts +11 -7
  160. package/src/{log → logging}/report.ts +10 -9
  161. package/src/{log → logging}/spinner.ts +0 -0
  162. package/src/{log.ts → logging.ts} +7 -7
  163. package/src/paths.ts +1 -1
  164. package/src/pipe.ts +13 -20
  165. package/src/plugs/copy.ts +4 -4
  166. package/src/plugs/debug.ts +2 -2
  167. package/src/plugs/edit.ts +34 -0
  168. package/src/plugs/esbuild/fix-extensions.ts +2 -2
  169. package/src/plugs/esbuild.ts +13 -7
  170. package/src/plugs/exec.ts +8 -129
  171. package/src/plugs/filter.ts +1 -1
  172. package/src/plugs/rmf.ts +3 -3
  173. package/src/plugs.ts +1 -13
  174. package/src/types.ts +1 -1
  175. package/src/utils/caller.ts +6 -3
  176. package/src/utils/exec.ts +112 -0
  177. package/src/utils/walk.ts +3 -3
  178. package/src/utils.ts +4 -0
  179. package/types/{webassembly.d.ts → plugjs.d.ts} +7 -1
  180. package/dist/assert.cjs +0 -52
  181. package/dist/assert.cjs.map +0 -6
  182. package/dist/assert.d.ts +0 -4
  183. package/dist/assert.mjs +0 -26
  184. package/dist/assert.mjs.map +0 -6
  185. package/dist/failure.cjs.map +0 -6
  186. package/dist/failure.mjs +0 -33
  187. package/dist/failure.mjs.map +0 -6
  188. package/dist/log/logger.cjs.map +0 -6
  189. package/dist/log/logger.mjs.map +0 -6
  190. package/dist/log/options.cjs.map +0 -6
  191. package/dist/log/options.mjs.map +0 -6
  192. package/dist/plugs/coverage/analysis.cjs +0 -234
  193. package/dist/plugs/coverage/analysis.cjs.map +0 -6
  194. package/dist/plugs/coverage/analysis.d.ts +0 -104
  195. package/dist/plugs/coverage/analysis.mjs +0 -207
  196. package/dist/plugs/coverage/analysis.mjs.map +0 -6
  197. package/dist/plugs/coverage/report.cjs +0 -235
  198. package/dist/plugs/coverage/report.cjs.map +0 -6
  199. package/dist/plugs/coverage/report.d.ts +0 -59
  200. package/dist/plugs/coverage/report.mjs +0 -220
  201. package/dist/plugs/coverage/report.mjs.map +0 -6
  202. package/dist/plugs/coverage.cjs +0 -140
  203. package/dist/plugs/coverage.cjs.map +0 -6
  204. package/dist/plugs/coverage.d.ts +0 -49
  205. package/dist/plugs/coverage.mjs +0 -123
  206. package/dist/plugs/coverage.mjs.map +0 -6
  207. package/dist/plugs/eslint/runner.cjs +0 -91
  208. package/dist/plugs/eslint/runner.cjs.map +0 -6
  209. package/dist/plugs/eslint/runner.d.ts +0 -8
  210. package/dist/plugs/eslint/runner.mjs +0 -68
  211. package/dist/plugs/eslint/runner.mjs.map +0 -6
  212. package/dist/plugs/eslint.cjs +0 -22
  213. package/dist/plugs/eslint.cjs.map +0 -6
  214. package/dist/plugs/eslint.d.ts +0 -34
  215. package/dist/plugs/eslint.mjs +0 -5
  216. package/dist/plugs/eslint.mjs.map +0 -6
  217. package/dist/plugs/mocha/reporter.cjs +0 -159
  218. package/dist/plugs/mocha/reporter.cjs.map +0 -6
  219. package/dist/plugs/mocha/reporter.d.ts +0 -6
  220. package/dist/plugs/mocha/reporter.mjs +0 -127
  221. package/dist/plugs/mocha/reporter.mjs.map +0 -6
  222. package/dist/plugs/mocha/runner.cjs +0 -82
  223. package/dist/plugs/mocha/runner.cjs.map +0 -6
  224. package/dist/plugs/mocha/runner.d.ts +0 -8
  225. package/dist/plugs/mocha/runner.mjs +0 -53
  226. package/dist/plugs/mocha/runner.mjs.map +0 -6
  227. package/dist/plugs/mocha.cjs +0 -22
  228. package/dist/plugs/mocha.cjs.map +0 -6
  229. package/dist/plugs/mocha.d.ts +0 -37
  230. package/dist/plugs/mocha.mjs +0 -5
  231. package/dist/plugs/mocha.mjs.map +0 -6
  232. package/dist/plugs/tsc/compiler.cjs +0 -74
  233. package/dist/plugs/tsc/compiler.cjs.map +0 -6
  234. package/dist/plugs/tsc/compiler.d.ts +0 -24
  235. package/dist/plugs/tsc/compiler.mjs +0 -43
  236. package/dist/plugs/tsc/compiler.mjs.map +0 -6
  237. package/dist/plugs/tsc/options.cjs +0 -82
  238. package/dist/plugs/tsc/options.cjs.map +0 -6
  239. package/dist/plugs/tsc/options.d.ts +0 -8
  240. package/dist/plugs/tsc/options.mjs +0 -51
  241. package/dist/plugs/tsc/options.mjs.map +0 -6
  242. package/dist/plugs/tsc/report.cjs +0 -90
  243. package/dist/plugs/tsc/report.cjs.map +0 -6
  244. package/dist/plugs/tsc/report.d.ts +0 -5
  245. package/dist/plugs/tsc/report.mjs +0 -59
  246. package/dist/plugs/tsc/report.mjs.map +0 -6
  247. package/dist/plugs/tsc/runner.cjs +0 -124
  248. package/dist/plugs/tsc/runner.cjs.map +0 -6
  249. package/dist/plugs/tsc/runner.d.ts +0 -8
  250. package/dist/plugs/tsc/runner.mjs +0 -95
  251. package/dist/plugs/tsc/runner.mjs.map +0 -6
  252. package/dist/plugs/tsc.cjs.map +0 -6
  253. package/dist/plugs/tsc.d.ts +0 -48
  254. package/dist/plugs/tsc.mjs +0 -5
  255. package/dist/plugs/tsc.mjs.map +0 -6
  256. package/src/failure.ts +0 -43
  257. package/src/plugs/coverage/analysis.ts +0 -400
  258. package/src/plugs/coverage/report.ts +0 -368
  259. package/src/plugs/coverage.ts +0 -216
  260. package/src/plugs/eslint/runner.ts +0 -100
  261. package/src/plugs/eslint.ts +0 -42
  262. package/src/plugs/mocha/reporter.ts +0 -178
  263. package/src/plugs/mocha/runner.ts +0 -66
  264. package/src/plugs/mocha.ts +0 -43
  265. package/src/plugs/tsc/compiler.ts +0 -68
  266. package/src/plugs/tsc/options.ts +0 -100
  267. package/src/plugs/tsc/report.ts +0 -77
  268. package/src/plugs/tsc/runner.ts +0 -133
  269. package/src/plugs/tsc.ts +0 -58
  270. 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": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA8B;AAE9B,mBAYO;AACP,oBAAsB;AAEtB,iBAAmB;AACnB,qBAAyB;AAiBlB,IAAM,mBAAmB;AAMzB,IAAM,mBAAmB;AAuDhC,IAAM,eAAe;AAUrB,eAAsB,eAClB,UACA,aACA,KACuB;AA9G3B;AAgHE,QAAM,UAA2B,CAAC;AAClC,QAAM,QAA4B;AAAA,IAChC,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAQA,aAAW,QAAQ,aAAa;AAE9B,UAAM,UAAM,+BAAc,IAAI,EAAE,SAAS;AACzC,UAAM,OAAO,UAAM,yBAAS,MAAM,OAAO;AAEzC,UAAM,WAAO,qBAAM,MAAM;AAAA,MACvB,6BAA6B;AAAA,MAC7B,2BAA2B;AAAA,MAC3B,4BAA4B;AAAA,MAC5B,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,MACxB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,aAAa;AAAA,MACb,SAAS,CAAE,YAAa;AAAA,MACxB,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,gCAAgC;AAAA,IAClC,CAAC;AAED,UAAM,eAAyB,IAAI,MAAM,KAAK,MAAM,EAAE,KAAK,CAAC;AAC5D,UAAM,eAAmC;AAAA,MACvC,cAAc;AAAA,MACd,cAAc;AAAA,MACd,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,IACZ;AAGA,UAAM,kBAAkB,CACpB,MACA,UACA,cACO;AACT,UAAI,CAAE;AAAM;AAEZ,UAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,mBAAW,KAAK;AAAM,0BAAgB,GAAG,UAAU,SAAS;AAC5D;AAAA,MACF;AAEA,UAAK,KAAK,SAAS,QAAU,KAAK,OAAO,MAAO;AAC9C,iBAAS,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,KAAM;AAC3C,uBAAa,KAAK;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,YAAY,kBAAkB;AAChC,qBAAa;AAAA,MACf,WAAW,aAAa,GAAG;AACzB,qBAAa;AAAA,MACf,WAAW,WAAW,GAAG;AACvB,qBAAa;AAAA,MACf;AAEA,UAAI,CAAE;AAAW;AAEjB,YAAM,OAAO,0BAAa,KAAK,SAAS,CAAC;AACzC,iBAAW,OAAO,MAAM;AACtB,cAAM,QAA8B,KAAM;AAC1C,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,qBAAW,SAAS,OAAO;AACzB,4BAAgB,OAAO,UAAU,IAAI;AAAA,UACvC;AAAA,QACF,WAAW,OAAO;AAChB,0BAAgB,OAAO,UAAU,IAAI;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAGA,UAAM,gBAAgB,CAAC,MAAY,UAAwB;AACzD,YAAM,OAAO,0BAAa,KAAK,SAAS,CAAC;AACzC,iBAAW,OAAO,MAAM;AACtB,cAAM,WAAiD,KAAM;AAC7D,YAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,qBAAW,SAAS,UAAU;AAC5B,gBAAI;AAAO,wBAAU,OAAO,QAAQ,CAAC;AAAA,UACvC;AAAA,QACF,WAAW,UAAU;AACnB,oBAAU,UAAU,QAAQ,CAAC;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAGA,UAAM,kBAAkB,CACpB,WACA,MACA,UACO;AACT,UAAI,WAAW;AACb,wBAAgB,MAAM,kBAAkB,IAAI;AAAA,MAC9C,WAAW,MAAM;AACf,kBAAU,MAAM,KAAK;AAAA,MACvB;AAAA,IACF;AAGA,UAAM,YAAY,CAAC,MAAY,UAAwB;AAvO3D,UAAAA,KAAA;AAyOM,UAAI,MAAM,IAAI,SAAU,QAAQ,IAAK,GAAG,GAAG,GAAG,KAAK,MAAM,IAAGA,MAAA,KAAK,QAAL,gBAAAA,IAAU,MAAM,SAAQ,UAAK,QAAL,mBAAU,MAAM,QAAQ;AAG5G,cAAI,qBAAO,IAAI;AAAG,eAAO,cAAc,MAAM,KAAK;AAClD,cAAI,wBAAU,IAAI;AAAG,eAAO,cAAc,MAAM,KAAK;AAGrD,YAAM,UAA4B,CAAC;AACnC,iBAAW,WAAW,KAAK,mBAAmB,CAAC,GAAG;AAChD,mBAAW,SAAS,QAAQ,MAAM,SAAS,YAAY,GAAG;AACxD,kBAAQ,KAAK,MAAM,EAAoB;AAAA,QACzC;AAAA,MACF;AAGA,UAAI,QAAQ,SAAS,MAAM;AAAG,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAGjF,cAAI,2BAAa,IAAI,GAAG;AACtB,gBAAI,gCAAkB,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAChF,gBAAI,gCAAkB,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAChF,gBAAI,4BAAc,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAG5E,wBAAgB,MAAM,kBAAkB,KAAK;AAC7C,eAAO,cAAc,MAAM,KAAK;AAAA,MAClC;AAGA,cAAI,kCAAoB,IAAI,KAAM,KAAK,eAAe,QAAS;AAC7D,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAAA,MACrD;AAEA,cAAI,kCAAoB,IAAI,KAAM,KAAK,eAAe,QAAS;AAC7D,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAAA,MACrD;AAGA,UAAI,WAAW;AACf,UAAI,KAAK,KAAK;AACZ,cAAM,EAAE,MAAM,OAAO,IAAI,KAAK,IAAI;AAClC,cAAM,IAAI,SAAS,SAAS,KAAK,MAAM,MAAM;AAC7C,YAAI,KAAK;AAAM,cAAI,KAAK,mBAAmB,KAAK,eAAW,eAAG,IAAI,KAAK,QAAQ,QAAQ;AAAA;AAClF,qBAAW;AAAA,MAClB;AAGA,sBAAgB,MAAM,UAAU,KAAK;AAGrC,cAAI,4BAAc,IAAI,GAAG;AACvB,wBAAgB,QAAQ,SAAS,MAAM,GAAG,KAAK,MAAM,QAAQ,CAAC;AAC9D,wBAAgB,QAAQ,SAAS,IAAI,GAAG,KAAK,YAAY,QAAQ,CAAC;AAClE,wBAAgB,QAAQ,SAAS,MAAM,GAAG,KAAK,WAAW,QAAQ,CAAC;AACnE;AAAA,MACF;AAGA,cAAI,6BAAe,IAAI,GAAG;AACxB,wBAAgB,QAAQ,SAAS,KAAK,GAAG,KAAK,OAAO,QAAQ,CAAC;AAC9D,wBAAgB,QAAQ,SAAS,OAAO,GAAG,KAAK,SAAS,QAAQ,CAAC;AAClE,wBAAgB,QAAQ,SAAS,SAAS,GAAG,KAAK,WAAW,QAAQ,CAAC;AACtE;AAAA,MACF;AAGA,oBAAc,MAAM,KAAK;AAAA,IAC3B;AAGA,iBAAa,KAAK,gBAAgB;AAClC,oBAAgB,KAAK,QAAQ,YAAY,GAAG,IAAI;AAChD,oBAAgB,KAAK,QAAQ,MAAM,GAAG,IAAI;AAG1C,iBAAa,eAAe;AAC5B,iBAAa,eAAe;AAC5B,iBAAa,eAAe;AAG5B,QAAI,qBAAqB;AACzB,eAAW,aAAW,UAAK,QAAQ,KAAK,OAAlB,mBAAsB,oBAAmB,CAAC,GAAG;AACjE,iBAAW,SAAS,QAAQ,MAAM,SAAS,YAAY,GAAG;AACxD,YAAI,MAAM,OAAO,QAAQ;AACvB,+BAAqB;AACrB;AAAA,QACF;AAAA,MACF;AAEA,UAAI;AAAoB;AAAA,IAC1B;AAGA,QAAI,oBAAoB;AACtB,sBAAgB,KAAK,SAAS,kBAAkB,IAAI;AAAA,IACtD,OAAO;AACL,oBAAc,KAAK,SAAS,EAAE;AAAA,IAChC;AAQA,oBAAgB,KAAK,UAAU,kBAAkB,KAAK;AAGtD,6BAAyB,YAAY;AAErC,UAAM,gBAAgB,aAAa;AACnC,UAAM,gBAAgB,aAAa;AACnC,UAAM,gBAAgB,aAAa;AACnC,UAAM,cAAc,aAAa;AAGjC,YAAQ,QAAQ,EAAE,MAAM,cAAc,aAAa;AAAA,EACrD;AAGA,2BAAyB,KAAK;AAC9B,SAAO,EAAE,SAAS,MAAM;AAC1B;AAEA,SAAS,yBAAyB,QAAkC;AAClE,QAAM,EAAE,cAAc,cAAc,aAAa,IAAI;AACrD,QAAM,aAAa,OAAO,aAAa,eAAe,eAAe;AACrE,MAAI,eAAe,GAAG;AACpB,WAAO,WAAW;AAAA,EACpB,WAAW,eAAe,cAAc;AACtC,WAAO,WAAW;AAAA,EACpB,OAAO;AACL,WAAO,WAAW,KAAK,MAAO,MAAM,gBAAiB,aAAa,aAAa;AAAA,EACjF;AACF;",
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
- }
@@ -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