File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -132,6 +132,8 @@ export {
132132 type CoverageTreeMissingLOC ,
133133 type CoverageTreeNode ,
134134 type Tree ,
135+ type BasicTreeNodeValues ,
136+ type CoverageTreeNodeValues ,
135137} from './lib/tree.js' ;
136138export { uploadConfigSchema , type UploadConfig } from './lib/upload-config.js' ;
137139export {
Original file line number Diff line number Diff line change @@ -5,6 +5,8 @@ const basicTreeNodeValuesSchema = z.record(
55 z . string ( ) ,
66 z . union ( [ z . number ( ) , z . string ( ) ] ) ,
77) ;
8+ export type BasicTreeNodeValues = z . infer < typeof basicTreeNodeValuesSchema > ;
9+
810const basicTreeNodeDataSchema = z . object ( {
911 name : z . string ( ) . min ( 1 ) . describe ( 'Text label for node' ) ,
1012 values : basicTreeNodeValuesSchema
@@ -41,6 +43,10 @@ const coverageTreeNodeValuesSchema = z.object({
4143 . optional ( )
4244 . describe ( 'Uncovered lines of code' ) ,
4345} ) ;
46+ export type CoverageTreeNodeValues = z . infer <
47+ typeof coverageTreeNodeValuesSchema
48+ > ;
49+
4450const coverageTreeNodeDataSchema = z . object ( {
4551 name : z . string ( ) . min ( 1 ) . describe ( 'File or folder name' ) ,
4652 values : coverageTreeNodeValuesSchema . describe (
Original file line number Diff line number Diff line change 11import type {
22 CoverageTree ,
33 CoverageTreeMissingLOC ,
4- CoverageTreeNode ,
4+ CoverageTreeNodeValues ,
55} from '@code-pushup/models' ;
66import { splitFilePath } from './file-system.js' ;
77import { formatGitPath } from './git/git.js' ;
88
9+ // recursive schemas cause compiler problems when using CoverageTreeNode
10+ type TreeNode = {
11+ name : string ;
12+ values : CoverageTreeNodeValues ;
13+ children ?: TreeNode [ ] ;
14+ } ;
15+
916export type FileCoverage = {
1017 path : string ;
1118 total : number ;
@@ -94,7 +101,7 @@ function addNode(
94101 } ;
95102}
96103
97- function calculateTreeCoverage ( root : FileTree ) : CoverageTreeNode {
104+ function calculateTreeCoverage ( root : FileTree ) : TreeNode {
98105 if ( 'children' in root ) {
99106 const stats = aggregateChildCoverage ( root . children ) ;
100107 const coverage = calculateCoverage ( stats ) ;
@@ -153,7 +160,7 @@ function getNodeCoverageStats(
153160 return stats ;
154161}
155162
156- function sortCoverageTree ( root : CoverageTreeNode ) : CoverageTreeNode {
163+ function sortCoverageTree ( root : TreeNode ) : TreeNode {
157164 if ( ! root . children ?. length ) {
158165 return root ;
159166 }
Original file line number Diff line number Diff line change 11import type {
2- BasicTreeNode ,
3- CoverageTreeNode ,
2+ BasicTreeNodeValues ,
3+ CoverageTreeNodeValues ,
44 Tree ,
55} from '@code-pushup/models' ;
66
7- type TreeNode = BasicTreeNode | CoverageTreeNode ;
7+ // recursive schemas cause compiler problems when using BasicTreeNode | CoverageTreeNode
8+ type TreeNode = {
9+ name : string ;
10+ values ?: BasicTreeNodeValues | CoverageTreeNodeValues ;
11+ children ?: TreeNode [ ] ;
12+ } ;
813
914const INDENT_CHARS = 4 ;
1015const COL_GAP = 2 ;
1116
1217export function formatAsciiTree ( tree : Tree ) : string {
13- const nodes = flatten ( tree . root ) ;
18+ const root = tree . root as TreeNode ;
19+
20+ const nodes = flatten ( root ) ;
1421 const maxWidth = Math . max (
1522 ...nodes . map ( ( { node, level } ) => level * INDENT_CHARS + node . name . length ) ,
1623 ) ;
@@ -30,7 +37,7 @@ export function formatAsciiTree(tree: Tree): string {
3037 { } ,
3138 ) ;
3239
33- return formatTreeNode ( tree . root , '' , maxWidth , keysMaxWidths )
40+ return formatTreeNode ( root , '' , maxWidth , keysMaxWidths )
3441 . map ( line => `${ line } \n` )
3542 . join ( '' ) ;
3643}
You can’t perform that action at this time.
0 commit comments