@canyonjs/cli 1.0.12 → 1.0.16
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 +1 -0
- package/bin/canyon.js +3 -0
- package/dist/index.js +55 -5
- package/dist/utils/mergeCoverage.d.ts +13 -0
- package/package.json +3 -3
- package/bin/canyon +0 -3
package/README.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
合并本地覆盖率
|
package/bin/canyon.js
ADDED
package/dist/index.js
CHANGED
|
@@ -5,8 +5,61 @@ import node_path from "node:path";
|
|
|
5
5
|
import axios from "axios";
|
|
6
6
|
import { log } from "node:console";
|
|
7
7
|
var package_namespaceObject = {
|
|
8
|
-
rE: "1.0.
|
|
8
|
+
rE: "1.0.16"
|
|
9
9
|
};
|
|
10
|
+
function mergeNumberMaps(a = {}, b = {}) {
|
|
11
|
+
const result = {
|
|
12
|
+
...a
|
|
13
|
+
};
|
|
14
|
+
for (const key of Object.keys(b)){
|
|
15
|
+
const aVal = result[key] ?? 0;
|
|
16
|
+
const bVal = b[key] ?? 0;
|
|
17
|
+
result[key] = aVal + bVal;
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
function mergeBranchArrays(aArr = [], bArr = []) {
|
|
22
|
+
const maxLen = Math.max(aArr.length, bArr.length);
|
|
23
|
+
const out = new Array(maxLen);
|
|
24
|
+
for(let i = 0; i < maxLen; i++){
|
|
25
|
+
const aVal = aArr[i] ?? 0;
|
|
26
|
+
const bVal = bArr[i] ?? 0;
|
|
27
|
+
out[i] = aVal + bVal;
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
function mergeBranchMaps(a = {}, b = {}) {
|
|
32
|
+
const result = {
|
|
33
|
+
...a
|
|
34
|
+
};
|
|
35
|
+
for (const key of Object.keys(b)){
|
|
36
|
+
const aArr = result[key] ?? [];
|
|
37
|
+
const bArr = b[key] ?? [];
|
|
38
|
+
result[key] = mergeBranchArrays(aArr, bArr);
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
function mergeFileCoverage(a, b) {
|
|
43
|
+
return {
|
|
44
|
+
...a,
|
|
45
|
+
path: b.path ?? a.path,
|
|
46
|
+
s: mergeNumberMaps(a.s, b.s),
|
|
47
|
+
f: mergeNumberMaps(a.f, b.f),
|
|
48
|
+
b: mergeBranchMaps(a.b, b.b)
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function mergeCoverageMaps(target = {}, source = {}) {
|
|
52
|
+
const out = {
|
|
53
|
+
...target
|
|
54
|
+
};
|
|
55
|
+
for (const filePath of Object.keys(source)){
|
|
56
|
+
const existing = out[filePath];
|
|
57
|
+
const incoming = source[filePath];
|
|
58
|
+
if (existing) out[filePath] = mergeFileCoverage(existing, incoming);
|
|
59
|
+
else out[filePath] = incoming;
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
10
63
|
async function mapCommand(params, options) {
|
|
11
64
|
const { dsn, repo_id: repoID, sha: sha, provider, build_target, debug, instrument_cwd } = params;
|
|
12
65
|
if (!node_fs.existsSync(node_path.resolve(process.cwd(), '.canyon_output'))) return void log('不存在');
|
|
@@ -15,10 +68,7 @@ async function mapCommand(params, options) {
|
|
|
15
68
|
for(let i = 0; i < files.length; i++){
|
|
16
69
|
const fileCoverageString = node_fs.readFileSync(node_path.resolve(process.cwd(), '.canyon_output', files[i]), 'utf-8');
|
|
17
70
|
const fileCoverage = JSON.parse(fileCoverageString);
|
|
18
|
-
data =
|
|
19
|
-
...data,
|
|
20
|
-
...fileCoverage
|
|
21
|
-
};
|
|
71
|
+
data = mergeCoverageMaps(data, fileCoverage);
|
|
22
72
|
}
|
|
23
73
|
const p = {
|
|
24
74
|
dsn,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type StatementCounts = Record<string, number>;
|
|
2
|
+
export type FunctionCounts = Record<string, number>;
|
|
3
|
+
export type BranchCounts = Record<string, number[]>;
|
|
4
|
+
export interface FileCoverageCounters {
|
|
5
|
+
s?: StatementCounts;
|
|
6
|
+
f?: FunctionCounts;
|
|
7
|
+
b?: BranchCounts;
|
|
8
|
+
path?: string;
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}
|
|
11
|
+
export type CoverageMap = Record<string, FileCoverageCounters>;
|
|
12
|
+
export declare function mergeFileCoverage(a: FileCoverageCounters, b: FileCoverageCounters): FileCoverageCounters;
|
|
13
|
+
export declare function mergeCoverageMaps(target?: CoverageMap, source?: CoverageMap): CoverageMap;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canyonjs/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"bin"
|
|
15
15
|
],
|
|
16
16
|
"bin": {
|
|
17
|
-
"canyon": "bin/canyon"
|
|
17
|
+
"canyon": "bin/canyon.js"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@biomejs/biome": "2.2.3",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "rslib build",
|
|
33
|
-
"my-test": "npm run build && node ./bin/canyon upload",
|
|
33
|
+
"my-test": "npm run build && node ./bin/canyon.js upload",
|
|
34
34
|
"check": "biome check --write",
|
|
35
35
|
"dev": "rslib build --watch",
|
|
36
36
|
"format": "biome format --write",
|
package/bin/canyon
DELETED