1- import { access , readFile } from 'node:fs/promises' ;
1+ import { access } from 'node:fs/promises' ;
22import { dirname } from 'node:path' ;
33import {
44 type CompilerOptions ,
5- type TsConfigSourceFile ,
5+ parseConfigFileTextToJson ,
6+ type ParsedCommandLine ,
67 parseJsonConfigFileContent ,
7- sys , readConfigFile , parseConfigFileTextToJson , type ParsedCommandLine ,
8+ sys ,
89} from 'typescript' ;
9- import type { Audit , CategoryRef , Group } from '@code-pushup/models' ;
10- import {
11- camelCaseToKebabCase ,
12- executeProcess ,
13- kebabCaseToCamelCase ,
14- readJsonFile ,
15- readTextFile
16- } from '@code-pushup/utils' ;
17- import type { AuditSlug , CompilerOptionName , SemVerString , TypescriptPluginOptions } from './types.js' ;
10+ import type { CategoryRef , CategoryRef , CategoryRef , Group } from '@code-pushup/models' ;
11+ import { camelCaseToKebabCase , executeProcess , kebabCaseToCamelCase , readTextFile } from '@code-pushup/utils' ;
12+ import type { AuditSlug , SemVerString , TypescriptPluginOptions } from './types.js' ;
1813import { TS_ERROR_CODES } from "./runner/ts-error-codes.js" ;
19- import { AUDITS , DEFAULT_TS_CONFIG } from "./constants" ;
20- import { getTsConfigurationFromPath } from "./runner/typescript-runner" ;
14+ import { DEFAULT_TS_CONFIG , GROUPS , TYPESCRIPT_PLUGIN_SLUG } from "./constants.js" ;
2115
2216
2317export function filterAuditsBySlug ( slugs ?: string [ ] ) {
@@ -29,11 +23,30 @@ export function filterAuditsBySlug(slugs?: string[]) {
2923 } ;
3024}
3125
26+ /**
27+ * It transforms a slug code to a compiler option format
28+ * By default, kebabCabeToCamelCase.
29+ * It will handle also cases like emit-bom that it should be emit-BOM
30+ * @param slug Slug to be transformed
31+ * @returns The slug as compilerOption key
32+ */
33+ export function auditSlugToCompilerOption ( slug : string ) : string {
34+ switch ( slug ) {
35+ case 'emit-bom' :
36+ return 'emitBOM' ;
37+ default :
38+ return kebabCaseToCamelCase ( slug ) ;
39+ }
40+ }
41+
3242export function filterAuditsByTsOptions ( compilerOptions : CompilerOptions , onlyAudits ?: string [ ] ) {
3343 return ( { slug} : { slug : string } ) => {
34-
35- const compilerOptionName = slug === 'emit-bom' ? 'emitBOM' : kebabCaseToCamelCase ( slug ) as CompilerOptionName ;
36- const option = compilerOptions [ compilerOptionName ] ;
44+ const option = compilerOptions [ auditSlugToCompilerOption ( slug ) ] ;
45+ if ( slug === 'emit-bom' ) {
46+ console . log ( '-----------------------' )
47+ console . log ( option , slug )
48+ console . log ( ( option !== false && option !== undefined ) && filterAuditsBySlug ( onlyAudits ) )
49+ }
3750 return ( option !== false && option !== undefined ) && filterAuditsBySlug ( onlyAudits ) ;
3851 } ;
3952}
@@ -42,8 +55,45 @@ export function filterGroupsByAuditSlug(slugs?: string[]) {
4255 return ( { refs} : Group ) => refs . some ( filterAuditsBySlug ( slugs ) ) ;
4356}
4457
45- export function filterGroupsByByTsOptions ( compilerOptions : CompilerOptions , onlyAudits ?: string [ ] ) {
46- return ( { refs} : Group ) => refs . some ( filterAuditsByTsOptions ( compilerOptions , onlyAudits ) ) ;
58+ export function filterGroupsByTsOptions ( compilerOptions : CompilerOptions , onlyAudits ?: string [ ] ) {
59+ console . log ( compilerOptions . emitBOM ) ;
60+ console . log ( filterAuditsByTsOptions ( compilerOptions , onlyAudits ) , 'filtered' )
61+ console . log ( 'nuevoo' )
62+ return ( { refs} : Group ) => refs . filter ( filterAuditsByTsOptions ( compilerOptions , onlyAudits ) ) ;
63+ }
64+
65+
66+ export function getGroups ( compilerOptions : CompilerOptions , onlyAudits ?: string [ ] ) {
67+ return GROUPS
68+ . map ( group => ( {
69+ ...group ,
70+ refs : group . refs . filter ( filterAuditsByTsOptions ( compilerOptions , onlyAudits ) )
71+ } ) )
72+ . filter ( group => group . refs . length > 0 ) ;
73+ }
74+
75+ /**
76+ * Retrieve the category references from the groups (already processed from the audits).
77+ * Used in the code-pushup preset
78+ * @param opt TSPluginOptions
79+ * @returns The array of category references
80+ */
81+ export async function getCategoryRefsFromGroups ( opt ?: TypescriptPluginOptions ) : Promise < CategoryRef [ ] > {
82+
83+ const definitive = await getCompilerOptionsToDetermineListedAudits ( opt ) ;
84+
85+ return GROUPS
86+ . map ( group => ( {
87+ ...group ,
88+ refs : group . refs . filter ( filterAuditsByTsOptions ( definitive , opt ?. onlyAudits ) )
89+ } ) )
90+ . filter ( group => group . refs . length > 0 )
91+ . map ( ( { slug} ) => ( {
92+ plugin : TYPESCRIPT_PLUGIN_SLUG ,
93+ slug,
94+ weight : 1 ,
95+ type : 'group' ,
96+ } ) ) ;
4797}
4898
4999export async function getCurrentTsVersion ( ) : Promise < SemVerString > {
0 commit comments