Skip to content

Commit be1eb08

Browse files
committedMar 24, 2024
Skip work if classMembers are not included
1 parent d5b1a95 commit be1eb08

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed
 

‎packages/knip/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ export const main = async (unresolvedConfiguration: CommandLineOptions) => {
253253
isFixExports: fixer.isEnabled && fixer.isFixUnusedExports,
254254
isFixTypes: fixer.isEnabled && fixer.isFixUnusedTypes,
255255
ignoreExportsUsedInFile: Boolean(chief.config.ignoreExportsUsedInFile),
256+
isReportClassMembers,
256257
tags,
257258
});
258259
const { internal, external, unresolved } = imports;

‎packages/knip/src/typescript/getImportsAndExports.ts

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export type GetImportsAndExportsOptions = {
5555
skipExports: boolean;
5656
isFixExports: boolean;
5757
isFixTypes: boolean;
58+
isReportClassMembers: boolean;
5859
ignoreExportsUsedInFile: boolean;
5960
tags: Tags;
6061
};

‎packages/knip/src/typescript/visitors/exports/exportKeyword.ts

+18-16
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type { Fix } from '../../../types/exports.js';
77

88
export default visit(
99
() => true,
10-
(node, { isFixExports, isFixTypes }) => {
10+
(node, { isFixExports, isFixTypes, isReportClassMembers }) => {
1111
// @ts-expect-error TODO Property 'modifiers' does not exist on type 'Node'.
1212
const exportKeyword = (node.modifiers as ts.Modifier[])?.find(mod => mod.kind === ts.SyntaxKind.ExportKeyword);
1313

@@ -85,21 +85,23 @@ export default visit(
8585
const identifier = defaultKeyword ? 'default' : node.name.getText();
8686

8787
const pos = (node.name ?? node).getStart();
88-
const members = node.members
89-
.filter(
90-
(member): member is ts.MethodDeclaration | ts.PropertyDeclaration =>
91-
(ts.isPropertyDeclaration(member) ||
92-
ts.isMethodDeclaration(member) ||
93-
isGetOrSetAccessorDeclaration(member)) &&
94-
!isPrivateMember(member)
95-
)
96-
.map(member => ({
97-
node: member,
98-
identifier: member.name.getText(),
99-
pos: member.name.getStart(),
100-
type: SymbolType.MEMBER,
101-
fix: undefined,
102-
}));
88+
const members = isReportClassMembers
89+
? node.members
90+
.filter(
91+
(member): member is ts.MethodDeclaration | ts.PropertyDeclaration =>
92+
(ts.isPropertyDeclaration(member) ||
93+
ts.isMethodDeclaration(member) ||
94+
isGetOrSetAccessorDeclaration(member)) &&
95+
!isPrivateMember(member)
96+
)
97+
.map(member => ({
98+
node: member,
99+
identifier: member.name.getText(),
100+
pos: member.name.getStart(),
101+
type: SymbolType.MEMBER,
102+
fix: undefined,
103+
}))
104+
: [];
103105
const fix: Fix = isFixExports
104106
? [exportKeyword.getStart(), (defaultKeyword ?? exportKeyword).getEnd() + 1]
105107
: undefined;

0 commit comments

Comments
 (0)
Please sign in to comment.