From 22d5b0e19f6de57be3545af1e8d08e469bb3d743 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 14 May 2018 13:42:45 -0700 Subject: [PATCH] Do not remove extension js or jsx from the subModuleName if the subModule doesnt have js or jsx extension --- src/compiler/moduleNameResolver.ts | 6 ++++-- ...Json_yesAtPackageRoot_mainFieldInSubDirectory.trace.json | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/compiler/moduleNameResolver.ts b/src/compiler/moduleNameResolver.ts index 8bb65e57616..1da70cd173f 100644 --- a/src/compiler/moduleNameResolver.ts +++ b/src/compiler/moduleNameResolver.ts @@ -1012,8 +1012,10 @@ namespace ts { } else { const jsPath = tryReadPackageJsonFields(/*readTypes*/ false, packageJsonContent, nodeModuleDirectory, state); - if (typeof jsPath === "string") { - subModuleName = removeExtension(removeExtension(jsPath.substring(nodeModuleDirectory.length + 1), Extension.Js), Extension.Jsx) + Extension.Dts; + if (typeof jsPath === "string" && jsPath.length > nodeModuleDirectory.length) { + const potentialSubModule = jsPath.substring(nodeModuleDirectory.length + 1); + subModuleName = (forEach(supportedJavascriptExtensions, extension => + tryRemoveExtension(potentialSubModule, extension)) || potentialSubModule) + Extension.Dts; } else { subModuleName = "index.d.ts"; diff --git a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.trace.json b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.trace.json index d02e83a9a70..4833e4a57a0 100644 --- a/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.trace.json +++ b/tests/baselines/reference/moduleResolution_packageJson_yesAtPackageRoot_mainFieldInSubDirectory.trace.json @@ -5,7 +5,7 @@ "'package.json' does not have a 'typings' field.", "'package.json' does not have a 'types' field.", "'package.json' has 'main' field 'src/index.js' that references '/node_modules/foo/src/index.js'.", - "Found 'package.json' at '/node_modules/foo/package.json'. Package ID is 'foo/src/i.d.ts@1.2.3'.", + "Found 'package.json' at '/node_modules/foo/package.json'. Package ID is 'foo/src/index.d.ts@1.2.3'.", "File '/node_modules/foo.ts' does not exist.", "File '/node_modules/foo.tsx' does not exist.", "File '/node_modules/foo.d.ts' does not exist.", @@ -19,7 +19,7 @@ "'package.json' does not have a 'typings' field.", "'package.json' does not have a 'types' field.", "'package.json' has 'main' field 'src/index.js' that references '/node_modules/foo/src/index.js'.", - "Found 'package.json' at '/node_modules/foo/package.json'. Package ID is 'foo/src/i.d.ts@1.2.3'.", + "Found 'package.json' at '/node_modules/foo/package.json'. Package ID is 'foo/src/index.d.ts@1.2.3'.", "File '/node_modules/foo.js' does not exist.", "File '/node_modules/foo.jsx' does not exist.", "'package.json' has 'main' field 'src/index.js' that references '/node_modules/foo/src/index.js'.",