Skip to content

Commit ca4dce0

Browse files
authored
fix: remove .ts extension for .vue files in dependencies (#528)
Closes: #527
1 parent 4588206 commit ca4dce0

File tree

3 files changed

+47
-24
lines changed

3 files changed

+47
-24
lines changed

src/typescript-reporter/extension/TypeScriptEmbeddedExtension.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as ts from 'typescript';
22
import { extname } from 'path';
33
import { TypeScriptExtension } from './TypeScriptExtension';
44
import { Issue } from '../../issue';
5+
import { Dependencies } from '../../reporter';
56

67
interface TypeScriptEmbeddedSource {
78
sourceText: string;
@@ -167,8 +168,27 @@ function createTypeScriptEmbeddedExtension({
167168
},
168169
};
169170
},
170-
extendSupportedFileExtensions(extensions: string[]) {
171-
return [...extensions, ...embeddedExtensions];
171+
extendDependencies(dependencies: Dependencies) {
172+
return {
173+
...dependencies,
174+
files: dependencies.files.map((fileName) => {
175+
const {
176+
embeddedExtension,
177+
embeddedFileName,
178+
extension,
179+
} = parsePotentiallyEmbeddedFileName(fileName);
180+
181+
if (embeddedExtensions.includes(embeddedExtension)) {
182+
const embeddedSource = getCachedEmbeddedSource(embeddedFileName);
183+
if (embeddedSource && embeddedSource.extension === extension) {
184+
return embeddedFileName;
185+
}
186+
}
187+
188+
return fileName;
189+
}),
190+
extensions: [...dependencies.extensions, ...embeddedExtensions],
191+
};
172192
},
173193
};
174194
}

src/typescript-reporter/extension/TypeScriptExtension.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as ts from 'typescript';
22
import { Issue } from '../../issue';
3+
import { Dependencies } from '../../reporter';
34

45
interface TypeScriptHostExtension {
56
extendWatchSolutionBuilderHost?<
@@ -21,11 +22,11 @@ interface TypeScriptHostExtension {
2122
parsedCommandLine?: ts.ParsedCommandLine
2223
): THost;
2324
extendParseConfigFileHost?<THost extends ts.ParseConfigFileHost>(host: THost): THost;
24-
extendSupportedFileExtensions?(extensions: string[]): string[];
2525
}
2626

2727
interface TypeScriptReporterExtension {
2828
extendIssues?(issues: Issue[]): Issue[];
29+
extendDependencies?(dependencies: Dependencies): Dependencies;
2930
}
3031

3132
interface TypeScriptExtension extends TypeScriptHostExtension, TypeScriptReporterExtension {}

src/typescript-reporter/reporter/TypeScriptReporter.ts

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -111,21 +111,27 @@ function createTypeScriptReporter(configuration: TypeScriptReporterConfiguration
111111
}
112112
}
113113

114-
function parseConfiguration() {
115-
const parseConfigurationDiagnostics = [];
114+
function getParseConfigFileHost() {
115+
const parseConfigDiagnostics: ts.Diagnostic[] = [];
116116

117117
let parseConfigFileHost: ts.ParseConfigFileHost = {
118118
...system,
119119
onUnRecoverableConfigFileDiagnostic: (diagnostic) => {
120-
parseConfigurationDiagnostics.push(diagnostic);
120+
parseConfigDiagnostics.push(diagnostic);
121121
},
122122
};
123123

124-
extensions.forEach((extension) => {
124+
for (const extension of extensions) {
125125
if (extension.extendParseConfigFileHost) {
126126
parseConfigFileHost = extension.extendParseConfigFileHost(parseConfigFileHost);
127127
}
128-
});
128+
}
129+
130+
return [parseConfigFileHost, parseConfigDiagnostics] as const;
131+
}
132+
133+
function parseConfiguration() {
134+
const [parseConfigFileHost, parseConfigDiagnostics] = getParseConfigFileHost();
129135

130136
const parsedConfiguration = parseTypeScriptConfiguration(
131137
typescript,
@@ -136,10 +142,10 @@ function createTypeScriptReporter(configuration: TypeScriptReporterConfiguration
136142
);
137143

138144
if (parsedConfiguration.errors) {
139-
parseConfigurationDiagnostics.push(...parsedConfiguration.errors);
145+
parseConfigDiagnostics.push(...parsedConfiguration.errors);
140146
}
141147

142-
return [parsedConfiguration, parseConfigurationDiagnostics] as const;
148+
return [parsedConfiguration, parseConfigDiagnostics] as const;
143149
}
144150

145151
function parseConfigurationIfNeeded(): ts.ParsedCommandLine {
@@ -153,19 +159,22 @@ function createTypeScriptReporter(configuration: TypeScriptReporterConfiguration
153159
function getDependencies(): Dependencies {
154160
parsedConfiguration = parseConfigurationIfNeeded();
155161

156-
const parseConfigFileHost: ts.ParseConfigFileHost = {
157-
...system,
158-
onUnRecoverableConfigFileDiagnostic: () => {
159-
// it's handled in a different place
160-
},
161-
};
162+
const [parseConfigFileHost] = getParseConfigFileHost();
162163

163-
return getDependenciesFromTypeScriptConfiguration(
164+
let dependencies = getDependenciesFromTypeScriptConfiguration(
164165
typescript,
165166
parsedConfiguration,
166167
configuration.context,
167168
parseConfigFileHost
168169
);
170+
171+
for (const extension of extensions) {
172+
if (extension.extendDependencies) {
173+
dependencies = extension.extendDependencies(dependencies);
174+
}
175+
}
176+
177+
return dependencies;
169178
}
170179

171180
function startProfilingIfNeeded() {
@@ -274,13 +283,6 @@ function createTypeScriptReporter(configuration: TypeScriptReporterConfiguration
274283
async getDependencies() {
275284
if (!dependencies) {
276285
dependencies = getDependencies();
277-
for (const extension of extensions) {
278-
if (extension.extendSupportedFileExtensions) {
279-
dependencies.extensions = extension.extendSupportedFileExtensions(
280-
dependencies.extensions
281-
);
282-
}
283-
}
284286
}
285287

286288
return dependencies;

0 commit comments

Comments
 (0)