Skip to content

Commit c6ad20c

Browse files
committed
Trim classes based on release type
1 parent 85812d8 commit c6ad20c

6 files changed

Lines changed: 34 additions & 108 deletions

File tree

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -344,17 +344,17 @@ export class Extractor {
344344
packageTypingsGenerator.analyze();
345345

346346
this._generateTypingsFile(packageTypingsGenerator,
347-
this.actualConfig.packageTypings.dtsFilePathForInternal!,
348-
PackageTypingsDtsKind.InternalRelease);
347+
this.actualConfig.packageTypings.dtsFilePathForPublic!,
348+
PackageTypingsDtsKind.PublicRelease);
349349

350350
this._generateTypingsFile(packageTypingsGenerator,
351351
this.actualConfig.packageTypings.dtsFilePathForPreview!,
352352
PackageTypingsDtsKind.PreviewRelease);
353353

354354
this._generateTypingsFile(packageTypingsGenerator,
355-
this.actualConfig.packageTypings.dtsFilePathForPublic!,
356-
PackageTypingsDtsKind.PublicRelease);
357-
}
355+
this.actualConfig.packageTypings.dtsFilePathForInternal!,
356+
PackageTypingsDtsKind.InternalRelease);
357+
}
358358

359359
if (this._localBuild) {
360360
// For a local build, fail if there were errors (but ignore warnings)

apps/api-extractor/src/generators/packageTypings/PackageTypingsGenerator.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import { Span } from '../../utils/Span';
1313
import { Entry } from './Entry';
1414
import { SymbolAnalyzer, IFollowAliasesResult } from './SymbolAnalyzer';
1515
import { ReleaseTag } from '../../aedoc/ReleaseTag';
16-
import { release } from 'os';
1716

1817
/**
1918
* Used with PackageTypingsGenerator.writeTypingsFile()
@@ -171,12 +170,16 @@ export class PackageTypingsGenerator {
171170
if (!entry.importPackagePath) {
172171
// If it's local, then emit all the declarations
173172
for (const declaration of entry.followedSymbol.declarations || []) {
174-
const span: Span = new Span(declaration);
175-
176-
this._modifySpan(span, entry);
177173

178174
indentedWriter.writeLine();
179-
indentedWriter.writeLine(span.getModifiedText());
175+
176+
if (this._shouldIncludeReleaseTag(entry.releaseTag, dtsKind)) {
177+
const span: Span = new Span(declaration);
178+
this._modifySpan(span, entry);
179+
indentedWriter.writeLine(span.getModifiedText());
180+
} else {
181+
indentedWriter.writeLine(`// Removed for this release type: ${entry.uniqueName}`);
182+
}
180183
}
181184
}
182185
}
@@ -365,6 +368,20 @@ export class PackageTypingsGenerator {
365368
return releaseTag;
366369
}
367370

371+
private _shouldIncludeReleaseTag(releaseTag: ReleaseTag, dtsKind: PackageTypingsDtsKind): boolean {
372+
switch (dtsKind) {
373+
case PackageTypingsDtsKind.InternalRelease:
374+
return true;
375+
case PackageTypingsDtsKind.PreviewRelease:
376+
// NOTE: If the release tag is "None", then we don't have enough information to trim it
377+
return releaseTag === ReleaseTag.Beta || releaseTag === ReleaseTag.Public || releaseTag === ReleaseTag.None;
378+
case PackageTypingsDtsKind.PublicRelease:
379+
return releaseTag === ReleaseTag.Public || releaseTag === ReleaseTag.None;
380+
}
381+
382+
throw new Error(`PackageTypingsDtsKind[dtsKind] is not implemented`);
383+
}
384+
368385
/**
369386
* Looks up the corresponding Entry for the requested symbol. If it doesn't exist,
370387
* then it tries to create one.

build-tests/api-extractor-test-01/dist/index-preview.d.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -149,20 +149,7 @@ export declare class ReexportedClass {
149149
getValue(): string;
150150
}
151151

152-
/**
153-
* This class has links such as {@link TypeReferencesInAedoc}.
154-
* @internal
155-
*/
156-
export declare class _TypeReferencesInAedoc {
157-
/**
158-
* Returns a value
159-
* @param arg1 - The input parameter of type {@link TypeReferencesInAedoc}.
160-
* @returns An object of type {@link TypeReferencesInAedoc}.
161-
*/
162-
getValue(arg1: _TypeReferencesInAedoc): _TypeReferencesInAedoc;
163-
/** {@inheritdoc api-extractor-test-01:TypeReferencesInAedoc.getValue} */
164-
getValue2(arg1: _TypeReferencesInAedoc): _TypeReferencesInAedoc;
165-
}
152+
// Removed for this release type: _TypeReferencesInAedoc
166153

167154
/**
168155
* Example decorator

build-tests/api-extractor-test-01/dist/index-public.d.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -149,20 +149,7 @@ export declare class ReexportedClass {
149149
getValue(): string;
150150
}
151151

152-
/**
153-
* This class has links such as {@link TypeReferencesInAedoc}.
154-
* @internal
155-
*/
156-
export declare class _TypeReferencesInAedoc {
157-
/**
158-
* Returns a value
159-
* @param arg1 - The input parameter of type {@link TypeReferencesInAedoc}.
160-
* @returns An object of type {@link TypeReferencesInAedoc}.
161-
*/
162-
getValue(arg1: _TypeReferencesInAedoc): _TypeReferencesInAedoc;
163-
/** {@inheritdoc api-extractor-test-01:TypeReferencesInAedoc.getValue} */
164-
getValue2(arg1: _TypeReferencesInAedoc): _TypeReferencesInAedoc;
165-
}
152+
// Removed for this release type: _TypeReferencesInAedoc
166153

167154
/**
168155
* Example decorator

build-tests/api-extractor-test-04/dist/index-preview.d.ts

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,7 @@
77
*/
88

99

10-
/**
11-
* This is an alpha class.
12-
* @alpha
13-
*/
14-
export declare class AlphaClass {
15-
/**
16-
* This is a comment
17-
*/
18-
undecoratedMember(): void;
19-
/**
20-
* This is an internal member
21-
* @internal
22-
*/
23-
_internalMember(): void;
24-
}
10+
// Removed for this release type: AlphaClass
2511

2612
/**
2713
* This is a beta class
@@ -44,16 +30,7 @@ export declare class BetaClass {
4430
_internalMember(): void;
4531
}
4632

47-
/**
48-
* This is an internal class
49-
* @internal
50-
*/
51-
export declare class InternalClass {
52-
/**
53-
* This is a comment
54-
*/
55-
undecoratedMember(): void;
56-
}
33+
// Removed for this release type: InternalClass
5734

5835
/**
5936
* This is a public class

build-tests/api-extractor-test-04/dist/index-public.d.ts

Lines changed: 3 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -7,53 +7,11 @@
77
*/
88

99

10-
/**
11-
* This is an alpha class.
12-
* @alpha
13-
*/
14-
export declare class AlphaClass {
15-
/**
16-
* This is a comment
17-
*/
18-
undecoratedMember(): void;
19-
/**
20-
* This is an internal member
21-
* @internal
22-
*/
23-
_internalMember(): void;
24-
}
10+
// Removed for this release type: AlphaClass
2511

26-
/**
27-
* This is a beta class
28-
* @beta
29-
*/
30-
export declare class BetaClass {
31-
/**
32-
* This is a comment
33-
*/
34-
undecoratedMember(): void;
35-
/**
36-
* This is an alpha comment
37-
* @alpha
38-
*/
39-
alphaMember(): void;
40-
/**
41-
* This is an internal member
42-
* @internal
43-
*/
44-
_internalMember(): void;
45-
}
12+
// Removed for this release type: BetaClass
4613

47-
/**
48-
* This is an internal class
49-
* @internal
50-
*/
51-
export declare class InternalClass {
52-
/**
53-
* This is a comment
54-
*/
55-
undecoratedMember(): void;
56-
}
14+
// Removed for this release type: InternalClass
5715

5816
/**
5917
* This is a public class

0 commit comments

Comments
 (0)