export interface BriefConfig {
reportHtmlName?: string;
writeDataJson: boolean;
}
/**
* @deprecated This type is deprecated and will be removed in a future version.
* Use {@link NewReportCodeType} instead for better type safety and consistency.
*/
export type IReportCodeType = {
noModuleSource?: boolean;
noAssetsAndModuleSource?: boolean;
noCode?: boolean;
};
export interface NormalModeOptions {
type?: never;
}
interface JsonSectionOptions {
/**
* @default: true
* */
moduleGraph?: boolean;
/**
* @default: true
* */
chunkGraph?: boolean;
/**
* @default: true
* */
rules?: boolean;
}
export interface JsonOptions {
fileName?: string;
sections?: JsonSectionOptions;
}
export interface BriefModeOptions {
/** Output type, supports HTML and JSON */
type?: Array<'html' | 'json'>;
/** HTML output related configuration */
htmlOptions?: BriefConfig;
/** JSON output related configuration */
jsonOptions?: JsonOptions;
}
interface OutputBaseConfig {
/**
* The directory where the report files will be output.
*/
reportDir?: string;
/**
* Control the Rsdoctor reporter codes records.
*/
reportCodeType?: IReportCodeType | undefined | NewReportCodeType;
/**
* @deprecated
* Configure whether to compress data.
* @default false
*
*/
compressData?: boolean;
}
export interface BriefModeConfig extends Omit {
mode?: 'brief';
reportCodeType?: ReportCodeTypeByMode<'brief'>;
options?: BriefModeOptions;
}
interface NormalModeConfig extends Omit {
mode?: 'normal';
reportCodeType?: ReportCodeTypeByMode<'normal'>;
options?: NormalModeOptions;
}
type ReportCodeTypeByMode = T extends 'brief' ? undefined | 'noCode' | {
noCode?: boolean;
} : T extends 'normal' ? IReportCodeType | undefined | NewReportCodeType : IReportCodeType | undefined | NewReportCodeType;
export type IOutput = T extends 'brief' ? BriefModeConfig : T extends 'normal' ? NormalModeConfig : BriefModeConfig | NormalModeConfig | OutputBaseConfig;
export type NewReportCodeType = 'noModuleSource' | 'noAssetsAndModuleSource' | 'noCode';
export {};