mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-09 02:30:15 -06:00
Component commits: 1ab6396efe Fix extensions for noDtsResolution in node16/nodenext Co-authored-by: Andrew Branch <andrew@wheream.io>
This commit is contained in:
parent
cfd1a6e127
commit
697df6ff41
@ -1288,18 +1288,22 @@ namespace ts {
|
||||
);
|
||||
}
|
||||
|
||||
const jsOnlyExtensions = [Extensions.JavaScript];
|
||||
const tsExtensions = [Extensions.TypeScript, Extensions.JavaScript];
|
||||
const tsPlusJsonExtensions = [...tsExtensions, Extensions.Json];
|
||||
const tsconfigExtensions = [Extensions.TSConfig];
|
||||
function nodeNextModuleNameResolverWorker(features: NodeResolutionFeatures, moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations {
|
||||
const containingDirectory = getDirectoryPath(containingFile);
|
||||
|
||||
// es module file or cjs-like input file, use a variant of the legacy cjs resolver that supports the selected modern features
|
||||
const esmMode = resolutionMode === ModuleKind.ESNext ? NodeResolutionFeatures.EsmMode : 0;
|
||||
return nodeModuleNameResolverWorker(features | esmMode, moduleName, containingDirectory, compilerOptions, host, cache, compilerOptions.resolveJsonModule ? tsPlusJsonExtensions : tsExtensions, redirectedReference);
|
||||
let extensions = compilerOptions.noDtsResolution ? [Extensions.TsOnly, Extensions.JavaScript] : tsExtensions;
|
||||
if (compilerOptions.resolveJsonModule) {
|
||||
extensions = [...extensions, Extensions.Json];
|
||||
}
|
||||
return nodeModuleNameResolverWorker(features | esmMode, moduleName, containingDirectory, compilerOptions, host, cache, extensions, redirectedReference);
|
||||
}
|
||||
|
||||
const jsOnlyExtensions = [Extensions.JavaScript];
|
||||
const tsExtensions = [Extensions.TypeScript, Extensions.JavaScript];
|
||||
const tsPlusJsonExtensions = [...tsExtensions, Extensions.Json];
|
||||
const tsconfigExtensions = [Extensions.TSConfig];
|
||||
function tryResolveJSModuleWorker(moduleName: string, initialDir: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations {
|
||||
return nodeModuleNameResolverWorker(NodeResolutionFeatures.None, moduleName, initialDir, { moduleResolution: ModuleResolutionKind.NodeJs, allowJs: true }, host, /*cache*/ undefined, jsOnlyExtensions, /*redirectedReferences*/ undefined);
|
||||
}
|
||||
|
||||
35
tests/cases/fourslash/server/goToSource13_nodenext.ts
Normal file
35
tests/cases/fourslash/server/goToSource13_nodenext.ts
Normal file
@ -0,0 +1,35 @@
|
||||
/// <reference path="../fourslash.ts" />
|
||||
|
||||
// @Filename: /node_modules/left-pad/package.json
|
||||
//// {
|
||||
//// "name": "left-pad",
|
||||
//// "version": "1.3.0",
|
||||
//// "description": "String left pad",
|
||||
//// "main": "index.js",
|
||||
//// "types": "index.d.ts"
|
||||
//// }
|
||||
|
||||
// @Filename: /node_modules/left-pad/index.d.ts
|
||||
//// declare function leftPad(str: string|number, len: number, ch?: string|number): string;
|
||||
//// declare namespace leftPad { }
|
||||
//// export = leftPad;
|
||||
|
||||
// @Filename: /node_modules/left-pad/index.js
|
||||
//// module.exports = leftPad;
|
||||
//// function /*end*/leftPad(str, len, ch) {}
|
||||
|
||||
// @Filename: /tsconfig.json
|
||||
//// {
|
||||
//// "compilerOptions": {
|
||||
//// "module": "node16",
|
||||
//// "strict": true,
|
||||
//// "outDir": "./out",
|
||||
////
|
||||
//// }
|
||||
//// }
|
||||
|
||||
// @Filename: /index.mts
|
||||
//// import leftPad = require("left-pad");
|
||||
//// /*start*/leftPad("", 4);
|
||||
|
||||
verify.goToSourceDefinition("start", "end");
|
||||
Loading…
x
Reference in New Issue
Block a user