monocart-coverage-reports 2.11.0 → 2.11.2
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 +17 -5
- package/README.zh-Hans.md +17 -5
- package/lib/converter/converter.js +4 -4
- package/lib/default/options.js +3 -0
- package/lib/generate.js +12 -11
- package/lib/index.d.ts +7 -0
- package/lib/index.js +7 -4
- package/lib/istanbul/istanbul.js +4 -3
- package/lib/packages/monocart-coverage-vendor.js +17 -17
- package/lib/reports/raw.js +6 -6
- package/lib/utils/gc.js +9 -0
- package/lib/utils/util.js +27 -3
- package/lib/v8/v8.js +21 -14
- package/package.json +8 -8
package/lib/reports/raw.js
CHANGED
|
@@ -5,14 +5,14 @@ const { ZipFile } = require('../packages/monocart-coverage-vendor.js');
|
|
|
5
5
|
const { mergeIstanbulDataList } = require('../istanbul/istanbul.js');
|
|
6
6
|
const { mergeV8DataList } = require('../v8/v8.js');
|
|
7
7
|
|
|
8
|
-
const getMergedData = (type, dataList) => {
|
|
8
|
+
const getMergedData = (type, dataList, options) => {
|
|
9
9
|
if (type === 'istanbul') {
|
|
10
|
-
return mergeIstanbulDataList(dataList);
|
|
10
|
+
return mergeIstanbulDataList(dataList, options);
|
|
11
11
|
}
|
|
12
|
-
return mergeV8DataList(dataList);
|
|
12
|
+
return mergeV8DataList(dataList, options);
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
-
const mergeReport = async (rawDir,
|
|
15
|
+
const mergeReport = async (rawDir, options) => {
|
|
16
16
|
const coverageFiles = fs.readdirSync(rawDir).filter((n) => n.endsWith('.json') && n.startsWith('coverage-'));
|
|
17
17
|
// console.log(coverageFiles);
|
|
18
18
|
|
|
@@ -29,7 +29,7 @@ const mergeReport = async (rawDir, rawParent) => {
|
|
|
29
29
|
Util.rmSync(jsonPath);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
const mergedData = await getMergedData(type, dataList);
|
|
32
|
+
const mergedData = await getMergedData(type, dataList, options);
|
|
33
33
|
|
|
34
34
|
const dataId = Util.uid();
|
|
35
35
|
const results = {
|
|
@@ -99,7 +99,7 @@ const rawReport = async (reportData, reportOptions, options) => {
|
|
|
99
99
|
|
|
100
100
|
// merge
|
|
101
101
|
if (rawOptions.merge) {
|
|
102
|
-
await mergeReport(rawDir,
|
|
102
|
+
await mergeReport(rawDir, options);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
// zip
|
package/lib/utils/gc.js
ADDED
package/lib/utils/util.js
CHANGED
|
@@ -3,6 +3,7 @@ const { writeFile, readFile } = require('fs/promises');
|
|
|
3
3
|
const path = require('path');
|
|
4
4
|
const os = require('os');
|
|
5
5
|
const crypto = require('crypto');
|
|
6
|
+
|
|
6
7
|
const EC = require('eight-colors');
|
|
7
8
|
const CG = require('console-grid');
|
|
8
9
|
const acornWalk = require('acorn-walk');
|
|
@@ -12,6 +13,7 @@ const request = require('./request.js');
|
|
|
12
13
|
const version = require('../../package.json').version;
|
|
13
14
|
const markdownGrid = require('./markdown.js');
|
|
14
15
|
const { mergeV8Coverage } = require('./merge/merge.js');
|
|
16
|
+
const gc = require('./gc.js');
|
|
15
17
|
|
|
16
18
|
const {
|
|
17
19
|
findUpSync, supportsColor, minimatch
|
|
@@ -37,6 +39,10 @@ const Util = {
|
|
|
37
39
|
markdownGrid,
|
|
38
40
|
mergeV8Coverage,
|
|
39
41
|
|
|
42
|
+
forceGC: () => {
|
|
43
|
+
gc();
|
|
44
|
+
},
|
|
45
|
+
|
|
40
46
|
relativePath: function(p, root) {
|
|
41
47
|
p = `${p}`;
|
|
42
48
|
root = `${root || Util.root}`;
|
|
@@ -863,8 +869,28 @@ const Util = {
|
|
|
863
869
|
console.log(`[MCR] ${message} before ${lengthBefore} => after ${lengthAfter}`);
|
|
864
870
|
},
|
|
865
871
|
|
|
872
|
+
setGC: (threshold) => {
|
|
873
|
+
if (!Util.isNum(threshold)) {
|
|
874
|
+
threshold = 1024;
|
|
875
|
+
}
|
|
876
|
+
Util.gcThreshold = threshold;
|
|
877
|
+
},
|
|
878
|
+
|
|
879
|
+
getMemory: () => {
|
|
880
|
+
const { heapUsed } = process.memoryUsage();
|
|
881
|
+
const memory = parseFloat((heapUsed / 1024 ** 2).toFixed(1));
|
|
882
|
+
return memory;
|
|
883
|
+
},
|
|
884
|
+
|
|
866
885
|
// time is debug level, fix the log info, for checking snapshot
|
|
867
886
|
logTime: (message, time_start) => {
|
|
887
|
+
|
|
888
|
+
// memory gc
|
|
889
|
+
let memory = Util.getMemory();
|
|
890
|
+
if (Util.gcThreshold && Util.gcThreshold < memory) {
|
|
891
|
+
Util.forceGC();
|
|
892
|
+
}
|
|
893
|
+
|
|
868
894
|
if (Util.loggingLevel < Util.loggingLevels.debug && !process.env.MCR_LOG_TIME) {
|
|
869
895
|
return;
|
|
870
896
|
}
|
|
@@ -872,9 +898,7 @@ const Util = {
|
|
|
872
898
|
const durationH = Util.TF(duration);
|
|
873
899
|
const ls = [`[MCR] ${message}`];
|
|
874
900
|
|
|
875
|
-
|
|
876
|
-
const { heapUsed } = process.memoryUsage();
|
|
877
|
-
const memory = parseFloat((heapUsed / 1024 ** 2).toFixed(1));
|
|
901
|
+
memory = Util.getMemory();
|
|
878
902
|
ls.push(` (memory: ${memory}MB)`);
|
|
879
903
|
|
|
880
904
|
// time
|
package/lib/v8/v8.js
CHANGED
|
@@ -164,7 +164,7 @@ const mergeCssRanges = (itemList) => {
|
|
|
164
164
|
// ranges: [ {start, end} ]
|
|
165
165
|
const ranges = dedupeFlatRanges(concatRanges);
|
|
166
166
|
|
|
167
|
-
resolve(ranges
|
|
167
|
+
resolve(ranges);
|
|
168
168
|
});
|
|
169
169
|
};
|
|
170
170
|
|
|
@@ -173,14 +173,19 @@ const mergeJsFunctions = async (itemList) => {
|
|
|
173
173
|
return res.functions;
|
|
174
174
|
};
|
|
175
175
|
|
|
176
|
-
const mergeV8DataList = async (dataList) => {
|
|
177
|
-
|
|
178
|
-
dataList.forEach((d) => {
|
|
179
|
-
allList = allList.concat(d.data);
|
|
180
|
-
});
|
|
176
|
+
const mergeV8DataList = async (dataList, options) => {
|
|
177
|
+
const allList = dataList.map((d) => d.data).flat();
|
|
181
178
|
|
|
182
|
-
//
|
|
183
|
-
const coverageList =
|
|
179
|
+
// separate coverage and empty items
|
|
180
|
+
const coverageList = [];
|
|
181
|
+
const allEmptyList = [];
|
|
182
|
+
allList.forEach((it) => {
|
|
183
|
+
if (it.empty) {
|
|
184
|
+
allEmptyList.push(it);
|
|
185
|
+
} else {
|
|
186
|
+
coverageList.push(it);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
184
189
|
|
|
185
190
|
// connect all functions and ranges
|
|
186
191
|
const itemMap = {};
|
|
@@ -215,7 +220,7 @@ const mergeV8DataList = async (dataList) => {
|
|
|
215
220
|
|
|
216
221
|
// first time filter for empty, (not for sources)
|
|
217
222
|
// empty and not in item map
|
|
218
|
-
const emptyList =
|
|
223
|
+
const emptyList = allEmptyList.filter((it) => {
|
|
219
224
|
if (itemMap[it.id]) {
|
|
220
225
|
return false;
|
|
221
226
|
}
|
|
@@ -225,16 +230,15 @@ const mergeV8DataList = async (dataList) => {
|
|
|
225
230
|
return true;
|
|
226
231
|
});
|
|
227
232
|
|
|
228
|
-
//
|
|
229
|
-
const mergedList =
|
|
230
|
-
|
|
233
|
+
// merged list + empty list
|
|
234
|
+
const mergedList = Object.values(itemMap).concat(emptyList);
|
|
231
235
|
|
|
232
236
|
return mergedList;
|
|
233
237
|
};
|
|
234
238
|
|
|
235
239
|
const mergeV8Coverage = async (dataList, sourceCache, options) => {
|
|
236
240
|
|
|
237
|
-
const mergedList = await mergeV8DataList(dataList);
|
|
241
|
+
const mergedList = await mergeV8DataList(dataList, options);
|
|
238
242
|
|
|
239
243
|
// try to load coverage and source by id
|
|
240
244
|
for (const entry of mergedList) {
|
|
@@ -254,6 +258,9 @@ const mergeV8Coverage = async (dataList, sourceCache, options) => {
|
|
|
254
258
|
|
|
255
259
|
}
|
|
256
260
|
|
|
261
|
+
// GC
|
|
262
|
+
sourceCache.clear();
|
|
263
|
+
|
|
257
264
|
return mergedList;
|
|
258
265
|
};
|
|
259
266
|
|
|
@@ -301,7 +308,7 @@ const saveV8Report = async (v8list, options, istanbulReportPath) => {
|
|
|
301
308
|
} else {
|
|
302
309
|
outputs[reportName] = await customReport(reportName, reportData, reportOptions, options);
|
|
303
310
|
}
|
|
304
|
-
Util.logTime(
|
|
311
|
+
Util.logTime(`${EC.magenta('├')} [generate] saved report: ${reportName}`, t1);
|
|
305
312
|
}
|
|
306
313
|
}
|
|
307
314
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monocart-coverage-reports",
|
|
3
|
-
"version": "2.11.
|
|
3
|
+
"version": "2.11.2",
|
|
4
4
|
"description": "A code coverage tool to generate native V8 reports or Istanbul reports.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"dev": "npx sf d app",
|
|
60
60
|
"open": "node ./scripts/open.js",
|
|
61
61
|
"eol": "git rm -rf --cached . && git reset --hard HEAD",
|
|
62
|
-
"patch": "npm
|
|
62
|
+
"patch": "npm run build && npm run test && npx sf publish patch -r",
|
|
63
63
|
"beta": "npm version prerelease --preid=beta && npm run build && npm run test && npm publish --tag beta"
|
|
64
64
|
},
|
|
65
65
|
"workspaces": [
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"url": "git+https://github.com/cenfun/monocart-coverage-reports.git"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"acorn": "^8.
|
|
78
|
+
"acorn": "^8.14.0",
|
|
79
79
|
"acorn-loose": "^8.4.0",
|
|
80
80
|
"acorn-walk": "^8.3.4",
|
|
81
81
|
"commander": "^12.1.0",
|
|
@@ -95,10 +95,10 @@
|
|
|
95
95
|
"convert-source-map": "^2.0.0",
|
|
96
96
|
"diff-sequences": "^29.6.3",
|
|
97
97
|
"esbuild": "^0.24.0",
|
|
98
|
-
"eslint": "~9.
|
|
98
|
+
"eslint": "~9.14.0",
|
|
99
99
|
"eslint-config-plus": "^2.0.2",
|
|
100
100
|
"eslint-plugin-html": "^8.1.2",
|
|
101
|
-
"eslint-plugin-vue": "^9.
|
|
101
|
+
"eslint-plugin-vue": "^9.30.0",
|
|
102
102
|
"find-up": "^7.0.0",
|
|
103
103
|
"minimatch": "^9.0.5",
|
|
104
104
|
"monocart-code-viewer": "^1.1.4",
|
|
@@ -106,13 +106,13 @@
|
|
|
106
106
|
"node-stream-zip": "^1.15.0",
|
|
107
107
|
"postcss": "^8.4.47",
|
|
108
108
|
"starfall-cli": "^2.0.20",
|
|
109
|
-
"stylelint": "^16.
|
|
109
|
+
"stylelint": "^16.10.0",
|
|
110
110
|
"stylelint-config-plus": "^1.1.3",
|
|
111
111
|
"supports-color": "^9.4.0",
|
|
112
|
-
"tsx": "^4.19.
|
|
112
|
+
"tsx": "^4.19.2",
|
|
113
113
|
"turbogrid": "^3.2.0",
|
|
114
114
|
"vine-ui": "^3.1.16",
|
|
115
115
|
"ws": "^8.18.0",
|
|
116
|
-
"yazl": "^2.
|
|
116
|
+
"yazl": "^3.2.1"
|
|
117
117
|
}
|
|
118
118
|
}
|