Skip to content

Commit 385db44

Browse files
authored
With allowJs, process JS files found searching node_modules when they have a realpath outside node_modules (#56946)
1 parent 8179321 commit 385db44

File tree

5 files changed

+250
-1
lines changed

5 files changed

+250
-1
lines changed

src/compiler/program.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ import {
254254
parseJsonSourceFileConfigFileContent,
255255
parseNodeFactory,
256256
Path,
257+
pathContainsNodeModules,
257258
pathIsAbsolute,
258259
pathIsRelative,
259260
Program,
@@ -4039,7 +4040,7 @@ export function createProgram(rootNamesOrOptions: readonly string[] | CreateProg
40394040

40404041
const isFromNodeModulesSearch = resolution.isExternalLibraryImport;
40414042
const isJsFile = !resolutionExtensionIsTSOrJson(resolution.extension);
4042-
const isJsFileFromNodeModules = isFromNodeModulesSearch && isJsFile;
4043+
const isJsFileFromNodeModules = isFromNodeModulesSearch && isJsFile && (!resolution.originalPath || pathContainsNodeModules(resolution.resolvedFileName));
40434044
const resolvedFileName = resolution.resolvedFileName;
40444045

40454046
if (isFromNodeModulesSearch) {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//// [tests/cases/compiler/allowJsCrossMonorepoPackage.ts] ////
2+
3+
=== /packages/main/index.ts ===
4+
import { x } from "shared";
5+
>x : Symbol(x, Decl(index.ts, 0, 8))
6+
7+
=== /node_modules/pkg/index.d.ts ===
8+
export declare function pkg(): "pkg";
9+
>pkg : Symbol(pkg, Decl(index.d.ts, 0, 0))
10+
11+
=== /packages/shared/utils.js ===
12+
export { pkg } from "pkg";
13+
>pkg : Symbol(pkg, Decl(utils.js, 0, 8))
14+
15+
=== /packages/shared/index.js ===
16+
import { pkg } from "./utils.js";
17+
>pkg : Symbol(pkg, Decl(index.js, 0, 8))
18+
19+
export const x = pkg();
20+
>x : Symbol(x, Decl(index.js, 1, 12))
21+
>pkg : Symbol(pkg, Decl(index.js, 0, 8))
22+
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
[
2+
"======== Resolving module 'shared' from '/packages/main/index.ts'. ========",
3+
"Explicitly specified module resolution kind: 'Bundler'.",
4+
"Resolving in CJS mode with conditions 'import', 'types'.",
5+
"Found 'package.json' at '/packages/main/package.json'.",
6+
"Loading module 'shared' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
7+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
8+
"Found 'package.json' at '/packages/main/node_modules/shared/package.json'.",
9+
"Using 'exports' subpath '.' with target './index.js'.",
10+
"File name '/packages/main/node_modules/shared/index.js' has a '.js' extension - stripping it.",
11+
"File '/packages/main/node_modules/shared/index.ts' does not exist.",
12+
"File '/packages/main/node_modules/shared/index.tsx' does not exist.",
13+
"File '/packages/main/node_modules/shared/index.d.ts' does not exist.",
14+
"Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.",
15+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
16+
"File '/node_modules/shared.ts' does not exist.",
17+
"File '/node_modules/shared.tsx' does not exist.",
18+
"File '/node_modules/shared.d.ts' does not exist.",
19+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
20+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.",
21+
"File '/packages/main/node_modules/shared/package.json' exists according to earlier cached lookups.",
22+
"Using 'exports' subpath '.' with target './index.js'.",
23+
"File name '/packages/main/node_modules/shared/index.js' has a '.js' extension - stripping it.",
24+
"File '/packages/main/node_modules/shared/index.js' exists - use it as a name resolution result.",
25+
"Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update.",
26+
"File '/packages/main/package.json' exists according to earlier cached lookups.",
27+
"Loading module 'shared' from 'node_modules' folder, target file types: TypeScript, Declaration.",
28+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
29+
"File '/packages/main/node_modules/shared/package.json' exists according to earlier cached lookups.",
30+
"File '/packages/main/node_modules/shared.ts' does not exist.",
31+
"File '/packages/main/node_modules/shared.tsx' does not exist.",
32+
"File '/packages/main/node_modules/shared.d.ts' does not exist.",
33+
"'package.json' does not have a 'typesVersions' field.",
34+
"'package.json' does not have a 'typings' field.",
35+
"'package.json' does not have a 'types' field.",
36+
"'package.json' does not have a 'main' field.",
37+
"File '/packages/main/node_modules/shared/index.ts' does not exist.",
38+
"File '/packages/main/node_modules/shared/index.tsx' does not exist.",
39+
"File '/packages/main/node_modules/shared/index.d.ts' does not exist.",
40+
"Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.",
41+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
42+
"File '/node_modules/shared.ts' does not exist.",
43+
"File '/node_modules/shared.tsx' does not exist.",
44+
"File '/node_modules/shared.d.ts' does not exist.",
45+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
46+
"Resolving real path for '/packages/main/node_modules/shared/index.js', result '/packages/shared/index.js'.",
47+
"======== Module name 'shared' was successfully resolved to '/packages/shared/index.js' with Package ID 'shared/[email protected]'. ========",
48+
"======== Resolving module './utils.js' from '/packages/shared/index.js'. ========",
49+
"Explicitly specified module resolution kind: 'Bundler'.",
50+
"Resolving in CJS mode with conditions 'import', 'types'.",
51+
"Loading module as file / folder, candidate module location '/packages/shared/utils.js', target file types: TypeScript, JavaScript, Declaration, JSON.",
52+
"File name '/packages/shared/utils.js' has a '.js' extension - stripping it.",
53+
"File '/packages/shared/utils.ts' does not exist.",
54+
"File '/packages/shared/utils.tsx' does not exist.",
55+
"File '/packages/shared/utils.d.ts' does not exist.",
56+
"File '/packages/shared/utils.js' exists - use it as a name resolution result.",
57+
"======== Module name './utils.js' was successfully resolved to '/packages/shared/utils.js'. ========",
58+
"======== Resolving module 'pkg' from '/packages/shared/utils.js'. ========",
59+
"Explicitly specified module resolution kind: 'Bundler'.",
60+
"Resolving in CJS mode with conditions 'import', 'types'.",
61+
"Found 'package.json' at '/packages/shared/package.json'.",
62+
"Loading module 'pkg' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
63+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
64+
"Directory '/packages/shared/node_modules' does not exist, skipping all lookups in it.",
65+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
66+
"File '/node_modules/pkg/package.json' does not exist.",
67+
"File '/node_modules/pkg.ts' does not exist.",
68+
"File '/node_modules/pkg.tsx' does not exist.",
69+
"File '/node_modules/pkg.d.ts' does not exist.",
70+
"File '/node_modules/pkg/index.ts' does not exist.",
71+
"File '/node_modules/pkg/index.tsx' does not exist.",
72+
"File '/node_modules/pkg/index.d.ts' exists - use it as a name resolution result.",
73+
"Resolving real path for '/node_modules/pkg/index.d.ts', result '/node_modules/pkg/index.d.ts'.",
74+
"======== Module name 'pkg' was successfully resolved to '/node_modules/pkg/index.d.ts'. ========",
75+
"======== Resolving module '@typescript/lib-es5' from '/packages/main/__lib_node_modules_lookup_lib.es5.d.ts__.ts'. ========",
76+
"Explicitly specified module resolution kind: 'Node10'.",
77+
"Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: TypeScript, Declaration.",
78+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
79+
"Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.",
80+
"Scoped package detected, looking in 'typescript__lib-es5'",
81+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
82+
"Scoped package detected, looking in 'typescript__lib-es5'",
83+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
84+
"Scoped package detected, looking in 'typescript__lib-es5'",
85+
"Loading module '@typescript/lib-es5' from 'node_modules' folder, target file types: JavaScript.",
86+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
87+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
88+
"======== Module name '@typescript/lib-es5' was not resolved. ========",
89+
"======== Resolving module '@typescript/lib-decorators' from '/packages/main/__lib_node_modules_lookup_lib.decorators.d.ts__.ts'. ========",
90+
"Explicitly specified module resolution kind: 'Node10'.",
91+
"Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: TypeScript, Declaration.",
92+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
93+
"Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.",
94+
"Scoped package detected, looking in 'typescript__lib-decorators'",
95+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
96+
"Scoped package detected, looking in 'typescript__lib-decorators'",
97+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
98+
"Scoped package detected, looking in 'typescript__lib-decorators'",
99+
"Loading module '@typescript/lib-decorators' from 'node_modules' folder, target file types: JavaScript.",
100+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
101+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
102+
"======== Module name '@typescript/lib-decorators' was not resolved. ========",
103+
"======== Resolving module '@typescript/lib-decorators/legacy' from '/packages/main/__lib_node_modules_lookup_lib.decorators.legacy.d.ts__.ts'. ========",
104+
"Explicitly specified module resolution kind: 'Node10'.",
105+
"Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: TypeScript, Declaration.",
106+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
107+
"Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.",
108+
"Scoped package detected, looking in 'typescript__lib-decorators/legacy'",
109+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
110+
"Scoped package detected, looking in 'typescript__lib-decorators/legacy'",
111+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
112+
"Scoped package detected, looking in 'typescript__lib-decorators/legacy'",
113+
"Loading module '@typescript/lib-decorators/legacy' from 'node_modules' folder, target file types: JavaScript.",
114+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
115+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
116+
"======== Module name '@typescript/lib-decorators/legacy' was not resolved. ========",
117+
"======== Resolving module '@typescript/lib-dom' from '/packages/main/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
118+
"Explicitly specified module resolution kind: 'Node10'.",
119+
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
120+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
121+
"Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.",
122+
"Scoped package detected, looking in 'typescript__lib-dom'",
123+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
124+
"Scoped package detected, looking in 'typescript__lib-dom'",
125+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
126+
"Scoped package detected, looking in 'typescript__lib-dom'",
127+
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: JavaScript.",
128+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
129+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
130+
"======== Module name '@typescript/lib-dom' was not resolved. ========",
131+
"======== Resolving module '@typescript/lib-webworker/importscripts' from '/packages/main/__lib_node_modules_lookup_lib.webworker.importscripts.d.ts__.ts'. ========",
132+
"Explicitly specified module resolution kind: 'Node10'.",
133+
"Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: TypeScript, Declaration.",
134+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
135+
"Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.",
136+
"Scoped package detected, looking in 'typescript__lib-webworker/importscripts'",
137+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
138+
"Scoped package detected, looking in 'typescript__lib-webworker/importscripts'",
139+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
140+
"Scoped package detected, looking in 'typescript__lib-webworker/importscripts'",
141+
"Loading module '@typescript/lib-webworker/importscripts' from 'node_modules' folder, target file types: JavaScript.",
142+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
143+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
144+
"======== Module name '@typescript/lib-webworker/importscripts' was not resolved. ========",
145+
"======== Resolving module '@typescript/lib-scripthost' from '/packages/main/__lib_node_modules_lookup_lib.scripthost.d.ts__.ts'. ========",
146+
"Explicitly specified module resolution kind: 'Node10'.",
147+
"Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: TypeScript, Declaration.",
148+
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
149+
"Directory '/packages/main/node_modules/@types' does not exist, skipping all lookups in it.",
150+
"Scoped package detected, looking in 'typescript__lib-scripthost'",
151+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
152+
"Scoped package detected, looking in 'typescript__lib-scripthost'",
153+
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
154+
"Scoped package detected, looking in 'typescript__lib-scripthost'",
155+
"Loading module '@typescript/lib-scripthost' from 'node_modules' folder, target file types: JavaScript.",
156+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
157+
"Directory '/packages/node_modules' does not exist, skipping all lookups in it.",
158+
"======== Module name '@typescript/lib-scripthost' was not resolved. ========"
159+
]
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//// [tests/cases/compiler/allowJsCrossMonorepoPackage.ts] ////
2+
3+
=== /packages/main/index.ts ===
4+
import { x } from "shared";
5+
>x : "pkg"
6+
7+
=== /node_modules/pkg/index.d.ts ===
8+
export declare function pkg(): "pkg";
9+
>pkg : () => "pkg"
10+
11+
=== /packages/shared/utils.js ===
12+
export { pkg } from "pkg";
13+
>pkg : () => "pkg"
14+
15+
=== /packages/shared/index.js ===
16+
import { pkg } from "./utils.js";
17+
>pkg : () => "pkg"
18+
19+
export const x = pkg();
20+
>x : "pkg"
21+
>pkg() : "pkg"
22+
>pkg : () => "pkg"
23+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// @Filename: /node_modules/pkg/index.d.ts
2+
export declare function pkg(): "pkg";
3+
4+
// @Filename: /packages/shared/package.json
5+
{
6+
"name": "shared",
7+
"version": "1.0.0",
8+
"type": "module",
9+
"exports": "./index.js"
10+
}
11+
12+
// @Filename: /packages/shared/utils.js
13+
export { pkg } from "pkg";
14+
15+
// @Filename: /packages/shared/index.js
16+
import { pkg } from "./utils.js";
17+
export const x = pkg();
18+
19+
// @Filename: /packages/main/package.json
20+
{
21+
"name": "main",
22+
"version": "1.0.0",
23+
"type": "module",
24+
"dependencies": {
25+
"shared": "workspace:*"
26+
}
27+
}
28+
29+
// @Filename: /packages/main/tsconfig.json
30+
{
31+
"compilerOptions": {
32+
"noEmit": true,
33+
"checkJs": true,
34+
"strict": true,
35+
"module": "esnext",
36+
"moduleResolution": "bundler",
37+
"traceResolution": true,
38+
}
39+
}
40+
41+
// @link: /packages/shared -> /packages/main/node_modules/shared
42+
43+
// @Filename: /packages/main/index.ts
44+
import { x } from "shared";

0 commit comments

Comments
 (0)