@canyonjs/cli 1.0.12 → 1.0.15

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 CHANGED
@@ -0,0 +1 @@
1
+ 合并本地覆盖率
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.12"
8
+ rE: "1.0.15"
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.12",
3
+ "version": "1.0.15",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {