X Tutup
Skip to content

Commit 08e0424

Browse files
committed
Add a new API "IExtractorInvokeOptions.showDiagnostics" and "--diagnostics" command-line option that we will use to print diagnostic output;
Refactor MessageRouter to get initialized in Extractor.ts instead of Collector.ts
1 parent 0f4b5c1 commit 08e0424

File tree

5 files changed

+56
-21
lines changed

5 files changed

+56
-21
lines changed

apps/api-extractor/src/api/Extractor.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ export interface IExtractorInvokeOptions {
5050
*/
5151
showVerboseMessages?: boolean;
5252

53+
/**
54+
* If true, API Extractor will print diagnostic information used for troubleshooting problems.
55+
* These messages will be included as {@link ExtractorLogLevel.Verbose} output.
56+
* Setting `showDiagnostics=true` forces `showVerboseMessages=true`.
57+
*/
58+
showDiagnostics?: boolean;
59+
5360
/**
5461
* By default API Extractor uses its own TypeScript compiler version to analyze your project.
5562
* This can often cause compiler errors due to incompatibilities between different TS versions.
@@ -178,15 +185,20 @@ export class Extractor {
178185
compilerState = CompilerState.create(extractorConfig, options);
179186
}
180187

188+
const messageRouter: MessageRouter = new MessageRouter({
189+
workingPackageFolder: extractorConfig.packageFolder,
190+
messageCallback: options.messageCallback,
191+
messagesConfig: extractorConfig.messages || { },
192+
showVerboseMessages: !!options.showVerboseMessages,
193+
showDiagnostics: !!options.showDiagnostics
194+
});
195+
181196
const collector: Collector = new Collector({
182197
program: compilerState.program,
183-
messageCallback: options.messageCallback,
198+
messageRouter,
184199
extractorConfig: extractorConfig
185200
});
186201

187-
const messageRouter: MessageRouter = collector.messageRouter;
188-
messageRouter.showVerboseMessages = !!options.showVerboseMessages;
189-
190202
collector.analyze();
191203

192204
DocCommentEnhancer.analyze(collector);

apps/api-extractor/src/cli/RunAction.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export class RunAction extends CommandLineAction {
2626
private _configFileParameter: CommandLineStringParameter;
2727
private _localParameter: CommandLineFlagParameter;
2828
private _verboseParameter: CommandLineFlagParameter;
29+
private _diagnosticsParameter: CommandLineFlagParameter;
2930
private _typescriptCompilerFolder: CommandLineStringParameter;
3031

3132
constructor(parser: ApiExtractorCommandLine) {
@@ -56,7 +57,13 @@ export class RunAction extends CommandLineAction {
5657
this._verboseParameter = this.defineFlagParameter({
5758
parameterLongName: '--verbose',
5859
parameterShortName: '-v',
59-
description: 'Show additional diagnostic messages in the output.'
60+
description: 'Show additional informational messages in the output.'
61+
});
62+
63+
this._diagnosticsParameter = this.defineFlagParameter({
64+
parameterLongName: '--diagnostics',
65+
description: 'Show diagnostic messages used for troubleshooting problems with API Extractor.'
66+
+ ' This flag also enables the "--verbose" flag.'
6067
});
6168

6269
this._typescriptCompilerFolder = this.defineStringParameter({
@@ -142,6 +149,7 @@ export class RunAction extends CommandLineAction {
142149
{
143150
localBuild: this._localParameter.value,
144151
showVerboseMessages: this._verboseParameter.value,
152+
showDiagnostics: this._diagnosticsParameter.value,
145153
typescriptCompilerFolder: typescriptCompilerFolder
146154
}
147155
);

apps/api-extractor/src/collector/Collector.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import { TypeScriptInternals } from '../analyzer/TypeScriptInternals';
2929
import { MessageRouter } from './MessageRouter';
3030
import { AstReferenceResolver } from '../analyzer/AstReferenceResolver';
3131
import { ExtractorConfig } from '../api/ExtractorConfig';
32-
import { ExtractorMessage } from '../api/ExtractorMessage';
3332

3433
/**
3534
* Options for Collector constructor.
@@ -45,7 +44,7 @@ export interface ICollectorOptions {
4544
*/
4645
program: ts.Program;
4746

48-
messageCallback: ((message: ExtractorMessage) => void) | undefined;
47+
messageRouter: MessageRouter;
4948

5049
extractorConfig: ExtractorConfig;
5150
}
@@ -108,10 +107,7 @@ export class Collector {
108107
entryPointSourceFile
109108
});
110109

111-
this.messageRouter = new MessageRouter(
112-
this.workingPackage.packageFolder,
113-
options.messageCallback,
114-
options.extractorConfig.messages || { });
110+
this.messageRouter = options.messageRouter;
115111

116112
this.program = options.program;
117113
this.typeChecker = options.program.getTypeChecker();

apps/api-extractor/src/collector/MessageRouter.ts

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,16 @@ interface IReportingRule {
3030
addToApiReportFile: boolean;
3131
}
3232

33+
export interface IMessageRouterOptions {
34+
workingPackageFolder: string | undefined;
35+
messageCallback: ((message: ExtractorMessage) => void) | undefined;
36+
messagesConfig: IExtractorMessagesConfig;
37+
showVerboseMessages: boolean;
38+
showDiagnostics: boolean;
39+
}
40+
3341
export class MessageRouter {
34-
private readonly _workingPackageFolder: string;
42+
private readonly _workingPackageFolder: string | undefined;
3543
private readonly _messageCallback: ((message: ExtractorMessage) => void) | undefined;
3644

3745
// All messages
@@ -53,20 +61,30 @@ export class MessageRouter {
5361

5462
public errorCount: number = 0;
5563
public warningCount: number = 0;
56-
public showVerboseMessages: boolean = false;
5764

58-
public constructor(workingPackageFolder: string,
59-
messageCallback: ((message: ExtractorMessage) => void) | undefined,
60-
messagesConfig: IExtractorMessagesConfig) {
65+
/**
66+
* See {@link IExtractorInvokeOptions.showVerboseMessages}
67+
*/
68+
public readonly showVerboseMessages: boolean;
69+
70+
/**
71+
* See {@link IExtractorInvokeOptions.showDiagnostics}
72+
*/
73+
public readonly showDiagnostics: boolean;
6174

62-
this._workingPackageFolder = workingPackageFolder;
63-
this._messageCallback = messageCallback;
75+
public constructor(options: IMessageRouterOptions) {
76+
this._workingPackageFolder = options.workingPackageFolder;
77+
this._messageCallback = options.messageCallback;
6478

6579
this._messages = [];
6680
this._associatedMessagesForAstDeclaration = new Map<AstDeclaration, ExtractorMessage[]>();
6781
this._sourceMapper = new SourceMapper();
6882

69-
this._applyMessagesConfig(messagesConfig);
83+
// showDiagnostics implies showVerboseMessages
84+
this.showVerboseMessages = options.showVerboseMessages || options.showDiagnostics;
85+
this.showDiagnostics = options.showDiagnostics;
86+
87+
this._applyMessagesConfig(options.messagesConfig);
7088
}
7189

7290
/**

common/reviews/api/api-extractor.api.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import * as tsdoc from '@microsoft/tsdoc';
1313
export class CompilerState {
1414
static create(extractorConfig: ExtractorConfig, options?: ICompilerStateCreateOptions): CompilerState;
1515
readonly program: ts.Program;
16-
}
16+
}
1717

1818
// @public
1919
export const enum ConsoleMessageId {
@@ -84,7 +84,7 @@ export class ExtractorMessage {
8484
// @internal
8585
constructor(options: IExtractorMessageOptions);
8686
readonly category: ExtractorMessageCategory;
87-
formatMessageWithLocation(workingPackageFolderPath: string): string;
87+
formatMessageWithLocation(workingPackageFolderPath: string | undefined): string;
8888
// (undocumented)
8989
formatMessageWithoutLocation(): string;
9090
handled: boolean;
@@ -216,6 +216,7 @@ export interface IExtractorInvokeOptions {
216216
compilerState?: CompilerState;
217217
localBuild?: boolean;
218218
messageCallback?: (message: ExtractorMessage) => void;
219+
showDiagnostics?: boolean;
219220
showVerboseMessages?: boolean;
220221
typescriptCompilerFolder?: string;
221222
}

0 commit comments

Comments
 (0)
X Tutup