Skip to content

Commit b48edc6

Browse files
committed
Separate fetchMetadata() into fetchSymbolMetadata(), fetchDeclarationMetadata(), and fetchApiItemMetadata()
1 parent 1500ad3 commit b48edc6

File tree

11 files changed

+55
-55
lines changed

11 files changed

+55
-55
lines changed

apps/api-extractor/src/analyzer/AstSymbol.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ export class AstSymbol {
109109

110110
/**
111111
* Additional information that is calculated later by the `Collector`. The actual type is `SymbolMetadata`,
112-
* but we declare it as `unknown` because consumers must obtain this object by calling `Collector.fetchMetadata()`.
112+
* but we declare it as `unknown` because consumers must obtain this object by calling
113+
* `Collector.fetchSymbolMetadata()`.
113114
*/
114115
public symbolMetadata: unknown;
115116

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ export interface IApiItemMetadataOptions {
2121

2222
/**
2323
* Stores the Collector's additional analysis for an `AstDeclaration`. This object is assigned to
24-
* `AstDeclaration.apiItemMetadata` but consumers must always obtain it by calling `Collector.fetchMetadata().
24+
* `AstDeclaration.apiItemMetadata` but consumers must always obtain it by calling `Collector.fetchApiItemMetadata().
2525
*
2626
* Note that ancillary declarations share their `ApiItemMetadata` with the main declaration,
27-
* whereas a separate `DeclarationMetadata` object is created for each `AstDeclaration`.
27+
* whereas a separate `DeclarationMetadata` object is created for each declaration.
2828
*/
2929
export class ApiItemMetadata {
3030
/**

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

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ export class Collector {
231231
this._createEntityForIndirectReferences(exportedAstEntity, alreadySeenAstSymbols);
232232

233233
if (exportedAstEntity instanceof AstSymbol) {
234-
this.fetchMetadata(exportedAstEntity);
234+
this.fetchSymbolMetadata(exportedAstEntity);
235235
}
236236
}
237237

@@ -270,21 +270,11 @@ export class Collector {
270270
return this._entitiesByAstEntity.get(astEntity);
271271
}
272272

273-
public fetchMetadata(astSymbol: AstSymbol): SymbolMetadata;
274-
public fetchMetadata(astDeclaration: AstDeclaration): ApiItemMetadata;
275-
public fetchMetadata(symbolOrDeclaration: AstSymbol | AstDeclaration): SymbolMetadata | ApiItemMetadata {
276-
if (symbolOrDeclaration instanceof AstSymbol) {
277-
if (symbolOrDeclaration.symbolMetadata === undefined) {
278-
this._fetchSymbolMetadata(symbolOrDeclaration);
279-
}
280-
return symbolOrDeclaration.symbolMetadata as SymbolMetadata;
281-
} else {
282-
if (symbolOrDeclaration.apiItemMetadata === undefined) {
283-
// Fetching the SymbolMetadata always constructs the ApiItemMetadata
284-
this._fetchSymbolMetadata(symbolOrDeclaration.astSymbol);
285-
}
286-
return symbolOrDeclaration.apiItemMetadata as ApiItemMetadata;
273+
public fetchSymbolMetadata(astSymbol: AstSymbol): SymbolMetadata {
274+
if (astSymbol.symbolMetadata === undefined) {
275+
this._fetchSymbolMetadata(astSymbol);
287276
}
277+
return astSymbol.symbolMetadata as SymbolMetadata;
288278
}
289279

290280
public fetchDeclarationMetadata(astDeclaration: AstDeclaration): DeclarationMetadata {
@@ -295,12 +285,20 @@ export class Collector {
295285
return astDeclaration.declarationMetadata as DeclarationMetadata;
296286
}
297287

288+
public fetchApiItemMetadata(astDeclaration: AstDeclaration): ApiItemMetadata {
289+
if (astDeclaration.apiItemMetadata === undefined) {
290+
// Fetching the SymbolMetadata always constructs the ApiItemMetadata
291+
this._fetchSymbolMetadata(astDeclaration.astSymbol);
292+
}
293+
return astDeclaration.apiItemMetadata as ApiItemMetadata;
294+
}
295+
298296
public tryFetchMetadataForAstEntity(astEntity: AstEntity): SymbolMetadata | undefined {
299297
if (astEntity instanceof AstSymbol) {
300-
return this.fetchMetadata(astEntity);
298+
return this.fetchSymbolMetadata(astEntity);
301299
}
302300
if (astEntity.astSymbol) { // astImport
303-
return this.fetchMetadata(astEntity.astSymbol);
301+
return this.fetchSymbolMetadata(astEntity.astSymbol);
304302
}
305303
return undefined;
306304
}
@@ -778,7 +776,7 @@ export class Collector {
778776

779777
// This needs to be set regardless of whether or not a parserContext exists
780778
if (astDeclaration.parent) {
781-
const parentApiItemMetadata: ApiItemMetadata = this.fetchMetadata(astDeclaration.parent);
779+
const parentApiItemMetadata: ApiItemMetadata = this.fetchApiItemMetadata(astDeclaration.parent);
782780
options.effectiveReleaseTag = options.declaredReleaseTag === ReleaseTag.None
783781
? parentApiItemMetadata.effectiveReleaseTag
784782
: options.declaredReleaseTag;

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ import { AstDeclaration } from '../analyzer/AstDeclaration';
66

77
/**
88
* Stores the Collector's additional analysis for a specific `AstDeclaration` signature. This object is assigned to
9-
* `AstDeclaration.declarationMetadata` but consumers must always obtain it by calling `Collector.fetchDeclarationMetadata().
9+
* `AstDeclaration.declarationMetadata` but consumers must always obtain it by calling
10+
* `Collector.fetchDeclarationMetadata().
1011
*
1112
* Note that ancillary declarations share their `ApiItemMetadata` with the main declaration,
12-
* whereas a separate `DeclarationMetadata` object is created for each `AstDeclaration`.
13+
* whereas a separate `DeclarationMetadata` object is created for each declaration.
1314
*/
1415
export abstract class DeclarationMetadata {
1516
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export interface ISymbolMetadataOptions {
1212

1313
/**
1414
* Stores the Collector's additional analysis for an `AstSymbol`. This object is assigned to `AstSymbol.metadata`
15-
* but consumers must always obtain it by calling `Collector.fetchMetadata().
15+
* but consumers must always obtain it by calling `Collector.fetchSymbolMetadata().
1616
*/
1717
export class SymbolMetadata {
1818
// For all declarations associated with this symbol, this is the

apps/api-extractor/src/enhancers/DocCommentEnhancer.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export class DocCommentEnhancer {
3838
}
3939

4040
private _analyzeDeclaration(astDeclaration: AstDeclaration): void {
41-
const metadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
41+
const metadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
4242
if (metadata.docCommentEnhancerVisitorState === VisitorState.Visited) {
4343
return;
4444
}
@@ -92,10 +92,10 @@ export class DocCommentEnhancer {
9292
]);
9393
}
9494

95-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
95+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
9696
if (apiItemMetadata.effectiveReleaseTag === ReleaseTag.Internal) {
9797
// If the constructor is marked as internal, then add a boilerplate notice for the containing class
98-
const classMetadata: ApiItemMetadata = this._collector.fetchMetadata(classDeclaration);
98+
const classMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(classDeclaration);
9999

100100
if (!classMetadata.tsdocComment) {
101101
classMetadata.tsdocComment = new tsdoc.DocComment({ configuration });
@@ -217,7 +217,7 @@ export class DocCommentEnhancer {
217217

218218
this._analyzeDeclaration(referencedAstDeclaration);
219219

220-
const referencedMetadata: ApiItemMetadata = this._collector.fetchMetadata(referencedAstDeclaration);
220+
const referencedMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(referencedAstDeclaration);
221221

222222
if (referencedMetadata.tsdocComment) {
223223
this._copyInheritedDocs(docComment, referencedMetadata.tsdocComment);

apps/api-extractor/src/enhancers/ValidationEnhancer.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export class ValidationEnhancer {
2525
ValidationEnhancer._checkReferences(collector, astDeclaration, alreadyWarnedSymbols);
2626
});
2727

28-
const symbolMetadata: SymbolMetadata = collector.fetchMetadata(entity.astEntity);
28+
const symbolMetadata: SymbolMetadata = collector.fetchSymbolMetadata(entity.astEntity);
2929
ValidationEnhancer._checkForInternalUnderscore(collector, entity, entity.astEntity, symbolMetadata);
3030
ValidationEnhancer._checkForInconsistentReleaseTags(collector, entity.astEntity, symbolMetadata);
3131
}
@@ -70,7 +70,7 @@ export class ValidationEnhancer {
7070
// /** @internal */
7171
// public static _Y(): void { } // <==== different from parent
7272
// }
73-
const parentSymbolMetadata: SymbolMetadata = collector.fetchMetadata(astSymbol);
73+
const parentSymbolMetadata: SymbolMetadata = collector.fetchSymbolMetadata(astSymbol);
7474
if (parentSymbolMetadata.maxEffectiveReleaseTag > ReleaseTag.Internal) {
7575
needsUnderscore = true;
7676
}
@@ -117,7 +117,7 @@ export class ValidationEnhancer {
117117
let anyInternalReleaseTags: boolean = false;
118118

119119
for (const astDeclaration of astSymbol.astDeclarations) {
120-
const apiItemMetadata: ApiItemMetadata = collector.fetchMetadata(astDeclaration);
120+
const apiItemMetadata: ApiItemMetadata = collector.fetchApiItemMetadata(astDeclaration);
121121
const effectiveReleaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
122122

123123
switch (astDeclaration.declaration.kind) {
@@ -162,7 +162,7 @@ export class ValidationEnhancer {
162162
astDeclaration: AstDeclaration,
163163
alreadyWarnedSymbols: Set<AstSymbol>
164164
): void {
165-
const apiItemMetadata: ApiItemMetadata = collector.fetchMetadata(astDeclaration);
165+
const apiItemMetadata: ApiItemMetadata = collector.fetchApiItemMetadata(astDeclaration);
166166
const declarationReleaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
167167

168168
for (const referencedEntity of astDeclaration.referencedAstEntities) {
@@ -178,7 +178,7 @@ export class ValidationEnhancer {
178178
const collectorEntity: CollectorEntity | undefined = collector.tryGetCollectorEntity(rootSymbol);
179179

180180
if (collectorEntity && collectorEntity.exported) {
181-
const referencedMetadata: SymbolMetadata = collector.fetchMetadata(referencedEntity);
181+
const referencedMetadata: SymbolMetadata = collector.fetchSymbolMetadata(referencedEntity);
182182
const referencedReleaseTag: ReleaseTag = referencedMetadata.maxEffectiveReleaseTag;
183183

184184
if (ReleaseTag.compare(declarationReleaseTag, referencedReleaseTag) > 0) {

apps/api-extractor/src/generators/ApiModelGenerator.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export class ApiModelGenerator {
9898
return; // trim out private declarations
9999
}
100100

101-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
101+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
102102
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
103103
if (releaseTag === ReleaseTag.Internal || releaseTag === ReleaseTag.Alpha) {
104104
return; // trim out items marked as "@internal" or "@alpha"
@@ -208,7 +208,7 @@ export class ApiModelGenerator {
208208
const parameters: IApiParameterOptions[] = this._captureParameters(nodesToCapture, callSignature.parameters);
209209

210210
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
211-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
211+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
212212
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
213213
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
214214

@@ -243,7 +243,7 @@ export class ApiModelGenerator {
243243
constructorDeclaration.parameters);
244244

245245
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
246-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
246+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
247247
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
248248
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
249249

@@ -294,7 +294,7 @@ export class ApiModelGenerator {
294294
}
295295

296296
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
297-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
297+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
298298
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
299299
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
300300

@@ -338,7 +338,7 @@ export class ApiModelGenerator {
338338
const parameters: IApiParameterOptions[] = this._captureParameters(nodesToCapture, constructSignature.parameters);
339339

340340
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
341-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
341+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
342342
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
343343
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
344344

@@ -366,7 +366,7 @@ export class ApiModelGenerator {
366366

367367
if (apiEnum === undefined) {
368368
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, []);
369-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
369+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
370370
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
371371
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
372372

@@ -394,7 +394,7 @@ export class ApiModelGenerator {
394394
nodesToCapture.push({ node: enumMember.initializer, tokenRange: initializerTokenRange });
395395

396396
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
397-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
397+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
398398
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
399399
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
400400

@@ -436,7 +436,7 @@ export class ApiModelGenerator {
436436
functionDeclaration.parameters);
437437

438438
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
439-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
439+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
440440
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
441441
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
442442
if (releaseTag === ReleaseTag.Internal || releaseTag === ReleaseTag.Alpha) {
@@ -478,7 +478,7 @@ export class ApiModelGenerator {
478478
const parameters: IApiParameterOptions[] = this._captureParameters(nodesToCapture, indexSignature.parameters);
479479

480480
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
481-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
481+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
482482
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
483483
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
484484

@@ -524,7 +524,7 @@ export class ApiModelGenerator {
524524
}
525525

526526
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
527-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
527+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
528528
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
529529
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
530530

@@ -568,7 +568,7 @@ export class ApiModelGenerator {
568568
const parameters: IApiParameterOptions[] = this._captureParameters(nodesToCapture, methodDeclaration.parameters);
569569

570570
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
571-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
571+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
572572
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
573573
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
574574
if (releaseTag === ReleaseTag.Internal || releaseTag === ReleaseTag.Alpha) {
@@ -616,7 +616,7 @@ export class ApiModelGenerator {
616616
const parameters: IApiParameterOptions[] = this._captureParameters(nodesToCapture, methodSignature.parameters);
617617

618618
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
619-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
619+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
620620
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
621621
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
622622

@@ -645,7 +645,7 @@ export class ApiModelGenerator {
645645

646646
if (apiNamespace === undefined) {
647647
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, []);
648-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
648+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
649649
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
650650
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
651651

@@ -677,7 +677,7 @@ export class ApiModelGenerator {
677677
nodesToCapture.push({ node: propertyDeclaration.type, tokenRange: propertyTypeTokenRange });
678678

679679
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
680-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
680+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
681681
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
682682
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
683683

@@ -707,7 +707,7 @@ export class ApiModelGenerator {
707707
nodesToCapture.push({ node: propertySignature.type, tokenRange: propertyTypeTokenRange });
708708

709709
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
710-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
710+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
711711
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
712712
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
713713

@@ -748,7 +748,7 @@ export class ApiModelGenerator {
748748
nodesToCapture.push({ node: typeAliasDeclaration.type, tokenRange: typeTokenRange });
749749

750750
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
751-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
751+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
752752
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
753753
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
754754

@@ -784,7 +784,7 @@ export class ApiModelGenerator {
784784
nodesToCapture.push({ node: variableDeclaration.type, tokenRange: variableTypeTokenRange });
785785

786786
const excerptTokens: IExcerptToken[] = this._buildExcerptTokens(astDeclaration, nodesToCapture);
787-
const apiItemMetadata: ApiItemMetadata = this._collector.fetchMetadata(astDeclaration);
787+
const apiItemMetadata: ApiItemMetadata = this._collector.fetchApiItemMetadata(astDeclaration);
788788
const docComment: tsdoc.DocComment | undefined = apiItemMetadata.tsdocComment;
789789
const releaseTag: ReleaseTag = apiItemMetadata.effectiveReleaseTag;
790790

0 commit comments

Comments
 (0)