Skip to content

Commit b6e663b

Browse files
committed
fix(tsconfig) if a .ts file doesn't exist don't assume .d.ts will be there. Closes #664 closes microsoft/TypeScript#5277
feat(tsconfig) expand automatic compilation to lookup .tsx files (and also index for imports)
1 parent 273a74a commit b6e663b

File tree

2 files changed

+31
-23
lines changed

2 files changed

+31
-23
lines changed

dist/main/tsconfig/tsconfig.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -299,28 +299,32 @@ function increaseProjectForReferenceAndImports(files) {
299299
return;
300300
}
301301
var preProcessedFileInfo = ts.preProcessFile(content, true), dir = path.dirname(file);
302+
var extensions = ['.ts', '.d.ts', '.tsx'];
303+
function getIfExists(filePathNoExt) {
304+
for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {
305+
var ext = extensions_1[_i];
306+
if (fs.existsSync(filePathNoExt + ext)) {
307+
return filePathNoExt + ext;
308+
}
309+
}
310+
}
302311
referenced.push(preProcessedFileInfo.referencedFiles.map(function (fileReference) {
303312
var file = path.resolve(dir, fsu.consistentPath(fileReference.fileName));
304313
if (fs.existsSync(file)) {
305314
return file;
306315
}
307-
if (fs.existsSync(file + '.ts')) {
308-
return file + '.ts';
309-
}
310-
if (fs.existsSync(file + '.d.ts')) {
311-
return file + '.d.ts';
312-
}
313-
return null;
316+
return getIfExists(file);
314317
}).filter(function (file) { return !!file; })
315318
.concat(preProcessedFileInfo.importedFiles
316319
.filter(function (fileReference) { return pathIsRelative(fileReference.fileName); })
317320
.map(function (fileReference) {
318-
var file = path.resolve(dir, fileReference.fileName + '.ts');
319-
if (!fs.existsSync(file)) {
320-
file = path.resolve(dir, fileReference.fileName + '.d.ts');
321+
var fileNoExt = path.resolve(dir, fileReference.fileName);
322+
var file = getIfExists(fileNoExt);
323+
if (!file) {
324+
file = getIfExists(file + "/index");
321325
}
322326
return file;
323-
})));
327+
}).filter(function (file) { return !!file; })));
324328
});
325329
return selectMany(referenced);
326330
};

lib/main/tsconfig/tsconfig.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -512,32 +512,36 @@ function increaseProjectForReferenceAndImports(files: string[]): string[] {
512512
var preProcessedFileInfo = ts.preProcessFile(content, true),
513513
dir = path.dirname(file);
514514

515+
let extensions = ['.ts', '.d.ts', '.tsx'];
516+
function getIfExists(filePathNoExt: string) {
517+
for (let ext of extensions) {
518+
if (fs.existsSync(filePathNoExt + ext)) {
519+
return filePathNoExt + ext;
520+
}
521+
}
522+
}
523+
515524
referenced.push(
516525
preProcessedFileInfo.referencedFiles.map(fileReference => {
517526
// We assume reference paths are always relative
518527
var file = path.resolve(dir, fsu.consistentPath(fileReference.fileName));
519-
// Try all three, by itself, .ts, .d.ts
528+
// Try by itself then with extensions
520529
if (fs.existsSync(file)) {
521530
return file;
522531
}
523-
if (fs.existsSync(file + '.ts')) {
524-
return file + '.ts';
525-
}
526-
if (fs.existsSync(file + '.d.ts')) {
527-
return file + '.d.ts';
528-
}
529-
return null;
532+
return getIfExists(file);
530533
}).filter(file=> !!file)
531534
.concat(
532535
preProcessedFileInfo.importedFiles
533536
.filter((fileReference) => pathIsRelative(fileReference.fileName))
534537
.map(fileReference => {
535-
var file = path.resolve(dir, fileReference.fileName + '.ts');
536-
if (!fs.existsSync(file)) {
537-
file = path.resolve(dir, fileReference.fileName + '.d.ts');
538+
let fileNoExt = path.resolve(dir, fileReference.fileName);
539+
let file = getIfExists(fileNoExt);
540+
if (!file) {
541+
file = getIfExists(`${file}/index`);
538542
}
539543
return file;
540-
})
544+
}).filter(file=> !!file)
541545
)
542546
);
543547
});

0 commit comments

Comments
 (0)