@@ -54,6 +54,11 @@ export interface INdjsonOptions {
5454 readonly maxRecordBytes? : number ;
5555}
5656
57+ // @beta
58+ export class InvalidReporterHelloError extends Error {
59+ constructor (reason : string );
60+ }
61+
5762// @beta
5863export interface IReporter {
5964 closeAsync(): Promise <void >;
@@ -230,15 +235,15 @@ export interface IScopedMessageOptions {
230235// @beta
231236export interface IScopedReporter {
232237 emitDiagnostic(diagnostic : IRushDiagnostic ): string ;
233- emitExtension< TPayload > (name : ReporterExtensionEventName , payload : TPayload ): string ;
238+ emitExtension(name : ReporterExtensionEventName , payload : ReporterJsonValue ): string ;
234239 emitMessage(options : IScopedMessageOptions ): string ;
235240}
236241
237242// @beta
238243export function isReporterEventRequired(type : ReporterEventType ): boolean ;
239244
240245// @beta
241- export function isReporterExtensionEventName(name : string ): boolean ;
246+ export function isReporterExtensionEventName(name : string ): name is ReporterExtensionEventName ;
242247
243248// @beta
244249export function isReporterProtocolCompatible(consumer : IReporterProtocolVersion , producer : IReporterProtocolVersion ): boolean ;
@@ -263,10 +268,16 @@ export class NdjsonRecordTooLargeError extends Error {
263268}
264269
265270// @beta
266- export function negotiateReporterHello(hello : IReporterHello , options : IReporterHandshakeOptions ): IReporterHandshakeResult ;
271+ export function negotiateReporterHello(helloValue : unknown , options : IReporterHandshakeOptions ): IReporterHandshakeResult ;
272+
273+ // @beta
274+ export type OneOrMoreRushDiagnosticCodeSegments <TSegments extends string = string > = string extends TSegments ? ` _${Uppercase <string >} ` : TSegments extends ` _${infer Segments } ` ? Segments extends ' ' ? never : TSegments extends Uppercase <TSegments > ? TSegments : never : never ;
275+
276+ // @beta
277+ export function parseReporterExtensionEventName(name : string ): ReporterExtensionEventName ;
267278
268279// @beta
269- export type OneOrMoreRushDiagnosticCodeSegments < S extends string = RushDiagnosticCodeSegment > = S extends string ? S | ` ${ S }${ RushDiagnosticCodeSegment } ` : never ;
280+ export function parseReporterHello( value : unknown ) : IReporterHello ;
270281
271282// @beta
272283export const REPORTER_EVENT_TYPES: readonly [" sessionStarted" , " sessionCompleted" , " commandStarted" , " commandCompleted" , " operationRegistered" , " operationStatusChanged" , " activityChanged" , " watchCycleCompleted" , " diagnosticEmitted" , " messageEmitted" , " externalProcessStarted" , " externalOutput" , " externalProcessCompleted" , " artifactAvailable" , " commandResult" , " extension" ];
@@ -290,7 +301,9 @@ export type ReporterCapability = (typeof REPORTER_KNOWN_CAPABILITIES)[number] |
290301export type ReporterEventType = (typeof REPORTER_EVENT_TYPES )[number ];
291302
292303// @beta
293- export type ReporterExtensionEventName = ` ${Lowercase <string >}.${Lowercase <string >} ` ;
304+ export type ReporterExtensionEventName = ` ${string }.${string } ` & {
305+ readonly __reporterExtensionEventNameBrand: ' ReporterExtensionEventName' ;
306+ };
294307
295308// @beta
296309export type ReporterJsonNull = null ;
@@ -396,13 +409,13 @@ export const RUSH_INTERNAL_ERROR_CODE: 'RUSH_INTERNAL_UNEXPECTED';
396409export type RushDiagnosticCategory = KnownRushDiagnosticCategory | (string & {});
397410
398411// @beta
399- export type RushDiagnosticCode = ` RUSH${ RushDiagnosticCodeSegment }${ OneOrMoreRushDiagnosticCodeSegments } ` ;
412+ export type RushDiagnosticCode < TCode extends string = string > = string extends TCode ? ` RUSH_${ Uppercase < string >}_${ Uppercase < string >} ` : TCode extends ` RUSH_${ infer Domain }_${ infer Name } ` ? Domain extends ' ' ? never : Name extends ' ' ? never : TCode extends Uppercase < TCode > ? TCode : never : never ;
400413
401414// @beta
402415export type RushDiagnosticCodes = (typeof RUSH_DIAGNOSTIC_CODE_DEFINITIONS )[number ][' code' ];
403416
404417// @beta
405- export type RushDiagnosticCodeSegment = ` _${Uppercase <string >} ` ;
418+ export type RushDiagnosticCodeSegment < TSegment extends string = string > = string extends TSegment ? ` _${Uppercase <string >} ` : TSegment extends ` _${ infer Segment } ` ? Segment extends ' ' ? never : TSegment extends Uppercase < TSegment > ? TSegment : never : never ;
406419
407420// @beta
408421export type RushDiagnosticDetailKey = ` diagnostic.${RushDiagnosticCode }.detail ` ;
0 commit comments