Skip to content

Commit 7bfe6ac

Browse files
authored
Make traces where #50762 happens machine analyzable (#52602)
1 parent 70d14f3 commit 7bfe6ac

17 files changed

+268
-0
lines changed

src/compiler/diagnosticMessages.json

+16
Original file line numberDiff line numberDiff line change
@@ -5558,6 +5558,22 @@
55585558
"category": "Message",
55595559
"code": 6412
55605560
},
5561+
"Entering conditional exports.": {
5562+
"category": "Message",
5563+
"code": 6413
5564+
},
5565+
"Resolved under condition '{0}'.": {
5566+
"category": "Message",
5567+
"code": 6414
5568+
},
5569+
"Failed to resolve under condition '{0}'.": {
5570+
"category": "Message",
5571+
"code": 6415
5572+
},
5573+
"Exiting conditional exports.": {
5574+
"category": "Message",
5575+
"code": 6416
5576+
},
55615577

55625578
"The expected type comes from property '{0}' which is declared here on type '{1}'": {
55635579
"category": "Message",

src/compiler/moduleNameResolver.ts

+7
Original file line numberDiff line numberDiff line change
@@ -2584,19 +2584,26 @@ function getLoadModuleFromTargetImportOrExport(extensions: Extensions, state: Mo
25842584
}
25852585
else if (typeof target === "object" && target !== null) { // eslint-disable-line no-null/no-null
25862586
if (!Array.isArray(target)) {
2587+
traceIfEnabled(state, Diagnostics.Entering_conditional_exports);
25872588
for (const condition of getOwnKeys(target as MapLike<unknown>)) {
25882589
if (condition === "default" || state.conditions.indexOf(condition) >= 0 || isApplicableVersionedTypesKey(state.conditions, condition)) {
25892590
traceIfEnabled(state, Diagnostics.Matched_0_condition_1, isImports ? "imports" : "exports", condition);
25902591
const subTarget = (target as MapLike<unknown>)[condition];
25912592
const result = loadModuleFromTargetImportOrExport(subTarget, subpath, pattern, key);
25922593
if (result) {
2594+
traceIfEnabled(state, Diagnostics.Resolved_under_condition_0, condition);
2595+
traceIfEnabled(state, Diagnostics.Exiting_conditional_exports);
25932596
return result;
25942597
}
2598+
else {
2599+
traceIfEnabled(state, Diagnostics.Failed_to_resolve_under_condition_0, condition);
2600+
}
25952601
}
25962602
else {
25972603
traceIfEnabled(state, Diagnostics.Saw_non_matching_condition_0, condition);
25982604
}
25992605
}
2606+
traceIfEnabled(state, Diagnostics.Exiting_conditional_exports);
26002607
return undefined;
26012608
}
26022609
else {

tests/baselines/reference/bundlerNodeModules1.trace.json

+3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
"File '/package.json' does not exist.",
55
"Loading module 'dual' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
66
"Found 'package.json' at '/node_modules/dual/package.json'.",
7+
"Entering conditional exports.",
78
"Matched 'exports' condition 'import'.",
89
"Using 'exports' subpath '.' with target './index.js'.",
910
"File name '/node_modules/dual/index.js' has a '.js' extension - stripping it.",
1011
"File '/node_modules/dual/index.ts' does not exist.",
1112
"File '/node_modules/dual/index.tsx' does not exist.",
1213
"File '/node_modules/dual/index.d.ts' exists - use it as a name resolution result.",
14+
"Resolved under condition 'import'.",
15+
"Exiting conditional exports.",
1316
"Resolving real path for '/node_modules/dual/index.d.ts', result '/node_modules/dual/index.d.ts'.",
1417
"======== Module name 'dual' was successfully resolved to '/node_modules/dual/index.d.ts' with Package ID 'dual/[email protected]'. ========",
1518
"======== Resolving module 'dual' from '/main.mts'. ========",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
[
2+
"======== Resolving module 'dep' from '/index.mts'. ========",
3+
"Explicitly specified module resolution kind: 'Bundler'.",
4+
"File '/package.json' does not exist.",
5+
"Loading module 'dep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
6+
"Found 'package.json' at '/node_modules/dep/package.json'.",
7+
"Entering conditional exports.",
8+
"Matched 'exports' condition 'import'.",
9+
"Using 'exports' subpath '.' with target './dist/index.mjs'.",
10+
"File name '/node_modules/dep/dist/index.mjs' has a '.mjs' extension - stripping it.",
11+
"File '/node_modules/dep/dist/index.mts' does not exist.",
12+
"File '/node_modules/dep/dist/index.d.mts' does not exist.",
13+
"Failed to resolve under condition 'import'.",
14+
"Saw non-matching condition 'require'.",
15+
"Matched 'exports' condition 'types'.",
16+
"Using 'exports' subpath '.' with target './dist/index.d.ts'.",
17+
"File '/node_modules/dep/dist/index.d.ts' exists - use it as a name resolution result.",
18+
"Resolved under condition 'types'.",
19+
"Exiting conditional exports.",
20+
"Resolving real path for '/node_modules/dep/dist/index.d.ts', result '/node_modules/dep/dist/index.d.ts'.",
21+
"======== Module name 'dep' was successfully resolved to '/node_modules/dep/dist/index.d.ts' with Package ID 'dep/dist/[email protected]'. ========"
22+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
[
2+
"File '/node_modules/dep/dist/package.json' does not exist.",
3+
"Found 'package.json' at '/node_modules/dep/package.json'.",
4+
"======== Resolving module 'dep' from '/index.mts'. ========",
5+
"Explicitly specified module resolution kind: 'Node16'.",
6+
"Resolving in ESM mode with conditions 'node', 'import', 'types'.",
7+
"File '/package.json' does not exist.",
8+
"Loading module 'dep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
9+
"File '/node_modules/dep/package.json' exists according to earlier cached lookups.",
10+
"Entering conditional exports.",
11+
"Matched 'exports' condition 'import'.",
12+
"Using 'exports' subpath '.' with target './dist/index.mjs'.",
13+
"File name '/node_modules/dep/dist/index.mjs' has a '.mjs' extension - stripping it.",
14+
"File '/node_modules/dep/dist/index.mts' does not exist.",
15+
"File '/node_modules/dep/dist/index.d.mts' does not exist.",
16+
"Failed to resolve under condition 'import'.",
17+
"Saw non-matching condition 'require'.",
18+
"Matched 'exports' condition 'types'.",
19+
"Using 'exports' subpath '.' with target './dist/index.d.ts'.",
20+
"File '/node_modules/dep/dist/index.d.ts' exists - use it as a name resolution result.",
21+
"Resolved under condition 'types'.",
22+
"Exiting conditional exports.",
23+
"Resolving real path for '/node_modules/dep/dist/index.d.ts', result '/node_modules/dep/dist/index.d.ts'.",
24+
"======== Module name 'dep' was successfully resolved to '/node_modules/dep/dist/index.d.ts' with Package ID 'dep/dist/[email protected]'. ========",
25+
"File 'package.json' does not exist.",
26+
"File '/package.json' does not exist according to earlier cached lookups.",
27+
"File 'package.json' does not exist according to earlier cached lookups.",
28+
"File '/package.json' does not exist according to earlier cached lookups.",
29+
"File 'package.json' does not exist according to earlier cached lookups.",
30+
"File '/package.json' does not exist according to earlier cached lookups.",
31+
"File 'package.json' does not exist according to earlier cached lookups.",
32+
"File '/package.json' does not exist according to earlier cached lookups.",
33+
"File 'package.json' does not exist according to earlier cached lookups.",
34+
"File '/package.json' does not exist according to earlier cached lookups.",
35+
"File 'package.json' does not exist according to earlier cached lookups.",
36+
"File '/package.json' does not exist according to earlier cached lookups.",
37+
"File 'package.json' does not exist according to earlier cached lookups.",
38+
"File '/package.json' does not exist according to earlier cached lookups."
39+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
[
2+
"File '/node_modules/dep/dist/package.json' does not exist.",
3+
"Found 'package.json' at '/node_modules/dep/package.json'.",
4+
"======== Resolving module 'dep' from '/index.mts'. ========",
5+
"Explicitly specified module resolution kind: 'NodeNext'.",
6+
"Resolving in ESM mode with conditions 'node', 'import', 'types'.",
7+
"File '/package.json' does not exist.",
8+
"Loading module 'dep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
9+
"File '/node_modules/dep/package.json' exists according to earlier cached lookups.",
10+
"Entering conditional exports.",
11+
"Matched 'exports' condition 'import'.",
12+
"Using 'exports' subpath '.' with target './dist/index.mjs'.",
13+
"File name '/node_modules/dep/dist/index.mjs' has a '.mjs' extension - stripping it.",
14+
"File '/node_modules/dep/dist/index.mts' does not exist.",
15+
"File '/node_modules/dep/dist/index.d.mts' does not exist.",
16+
"Failed to resolve under condition 'import'.",
17+
"Saw non-matching condition 'require'.",
18+
"Matched 'exports' condition 'types'.",
19+
"Using 'exports' subpath '.' with target './dist/index.d.ts'.",
20+
"File '/node_modules/dep/dist/index.d.ts' exists - use it as a name resolution result.",
21+
"Resolved under condition 'types'.",
22+
"Exiting conditional exports.",
23+
"Resolving real path for '/node_modules/dep/dist/index.d.ts', result '/node_modules/dep/dist/index.d.ts'.",
24+
"======== Module name 'dep' was successfully resolved to '/node_modules/dep/dist/index.d.ts' with Package ID 'dep/dist/[email protected]'. ========",
25+
"File 'package.json' does not exist.",
26+
"File '/package.json' does not exist according to earlier cached lookups.",
27+
"File 'package.json' does not exist according to earlier cached lookups.",
28+
"File '/package.json' does not exist according to earlier cached lookups.",
29+
"File 'package.json' does not exist according to earlier cached lookups.",
30+
"File '/package.json' does not exist according to earlier cached lookups.",
31+
"File 'package.json' does not exist according to earlier cached lookups.",
32+
"File '/package.json' does not exist according to earlier cached lookups.",
33+
"File 'package.json' does not exist according to earlier cached lookups.",
34+
"File '/package.json' does not exist according to earlier cached lookups.",
35+
"File 'package.json' does not exist according to earlier cached lookups.",
36+
"File '/package.json' does not exist according to earlier cached lookups.",
37+
"File 'package.json' does not exist according to earlier cached lookups.",
38+
"File '/package.json' does not exist according to earlier cached lookups."
39+
]

tests/baselines/reference/customConditions(resolvepackagejsonexports=true).trace.json

+3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@
44
"File '/package.json' does not exist.",
55
"Loading module 'lodash' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
66
"Found 'package.json' at '/node_modules/lodash/package.json'.",
7+
"Entering conditional exports.",
78
"Saw non-matching condition 'browser'.",
89
"Matched 'exports' condition 'webpack'.",
910
"Using 'exports' subpath '.' with target './webpack.js'.",
1011
"File name '/node_modules/lodash/webpack.js' has a '.js' extension - stripping it.",
1112
"File '/node_modules/lodash/webpack.ts' does not exist.",
1213
"File '/node_modules/lodash/webpack.tsx' does not exist.",
1314
"File '/node_modules/lodash/webpack.d.ts' exists - use it as a name resolution result.",
15+
"Resolved under condition 'webpack'.",
16+
"Exiting conditional exports.",
1417
"Resolving real path for '/node_modules/lodash/webpack.d.ts', result '/node_modules/lodash/webpack.d.ts'.",
1518
"======== Module name 'lodash' was successfully resolved to '/node_modules/lodash/webpack.d.ts' with Package ID 'lodash/[email protected]'. ========"
1619
]

tests/baselines/reference/nodeModulesExportsBlocksTypesVersions(module=node16).trace.json

+20
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,12 @@
3939
"File '/package.json' does not exist according to earlier cached lookups.",
4040
"Loading module 'exports-and-types-versions/yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
4141
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
42+
"Entering conditional exports.",
4243
"Matched 'exports' condition 'types'.",
4344
"Using 'exports' subpath './yep' with target './types/foo.d.ts'.",
4445
"File '/node_modules/exports-and-types-versions/types/foo.d.ts' exists - use it as a name resolution result.",
46+
"Resolved under condition 'types'.",
47+
"Exiting conditional exports.",
4548
"Resolving real path for '/node_modules/exports-and-types-versions/types/foo.d.ts', result '/node_modules/exports-and-types-versions/types/foo.d.ts'.",
4649
"======== Module name 'exports-and-types-versions/yep' was successfully resolved to '/node_modules/exports-and-types-versions/types/foo.d.ts' with Package ID 'exports-and-types-versions/types/[email protected]'. ========",
4750
"======== Resolving module 'exports-and-types-versions/versioned-yep' from '/main.cts'. ========",
@@ -50,9 +53,12 @@
5053
"File '/package.json' does not exist according to earlier cached lookups.",
5154
"Loading module 'exports-and-types-versions/versioned-yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
5255
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
56+
"Entering conditional exports.",
5357
"Matched 'exports' condition 'types@>=4'.",
5458
"Using 'exports' subpath './versioned-yep' with target './types/foo.d.ts'.",
5559
"File '/node_modules/exports-and-types-versions/types/foo.d.ts' exists - use it as a name resolution result.",
60+
"Resolved under condition 'types@>=4'.",
61+
"Exiting conditional exports.",
5662
"Resolving real path for '/node_modules/exports-and-types-versions/types/foo.d.ts', result '/node_modules/exports-and-types-versions/types/foo.d.ts'.",
5763
"======== Module name 'exports-and-types-versions/versioned-yep' was successfully resolved to '/node_modules/exports-and-types-versions/types/foo.d.ts' with Package ID 'exports-and-types-versions/types/[email protected]'. ========",
5864
"======== Resolving module 'exports-and-types-versions/versioned-nah' from '/main.cts'. ========",
@@ -61,11 +67,15 @@
6167
"File '/package.json' does not exist according to earlier cached lookups.",
6268
"Loading module 'exports-and-types-versions/versioned-nah' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
6369
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
70+
"Entering conditional exports.",
6471
"Saw non-matching condition 'types@<4'.",
72+
"Exiting conditional exports.",
6573
"Export specifier './versioned-nah' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
6674
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
6775
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
76+
"Entering conditional exports.",
6877
"Saw non-matching condition 'types@<4'.",
78+
"Exiting conditional exports.",
6979
"Export specifier './versioned-nah' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
7080
"======== Module name 'exports-and-types-versions/versioned-nah' was not resolved. ========",
7181
"======== Resolving module 'just-types-versions/foo' from '/main.cts'. ========",
@@ -126,9 +136,12 @@
126136
"File '/package.json' does not exist according to earlier cached lookups.",
127137
"Loading module 'exports-and-types-versions/yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
128138
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
139+
"Entering conditional exports.",
129140
"Matched 'exports' condition 'types'.",
130141
"Using 'exports' subpath './yep' with target './types/foo.d.ts'.",
131142
"File '/node_modules/exports-and-types-versions/types/foo.d.ts' exists - use it as a name resolution result.",
143+
"Resolved under condition 'types'.",
144+
"Exiting conditional exports.",
132145
"Resolving real path for '/node_modules/exports-and-types-versions/types/foo.d.ts', result '/node_modules/exports-and-types-versions/types/foo.d.ts'.",
133146
"======== Module name 'exports-and-types-versions/yep' was successfully resolved to '/node_modules/exports-and-types-versions/types/foo.d.ts' with Package ID 'exports-and-types-versions/types/[email protected]'. ========",
134147
"======== Resolving module 'exports-and-types-versions/versioned-yep' from '/main.mts'. ========",
@@ -137,9 +150,12 @@
137150
"File '/package.json' does not exist according to earlier cached lookups.",
138151
"Loading module 'exports-and-types-versions/versioned-yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
139152
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
153+
"Entering conditional exports.",
140154
"Matched 'exports' condition 'types@>=4'.",
141155
"Using 'exports' subpath './versioned-yep' with target './types/foo.d.ts'.",
142156
"File '/node_modules/exports-and-types-versions/types/foo.d.ts' exists - use it as a name resolution result.",
157+
"Resolved under condition 'types@>=4'.",
158+
"Exiting conditional exports.",
143159
"Resolving real path for '/node_modules/exports-and-types-versions/types/foo.d.ts', result '/node_modules/exports-and-types-versions/types/foo.d.ts'.",
144160
"======== Module name 'exports-and-types-versions/versioned-yep' was successfully resolved to '/node_modules/exports-and-types-versions/types/foo.d.ts' with Package ID 'exports-and-types-versions/types/[email protected]'. ========",
145161
"======== Resolving module 'exports-and-types-versions/versioned-nah' from '/main.mts'. ========",
@@ -148,11 +164,15 @@
148164
"File '/package.json' does not exist according to earlier cached lookups.",
149165
"Loading module 'exports-and-types-versions/versioned-nah' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
150166
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
167+
"Entering conditional exports.",
151168
"Saw non-matching condition 'types@<4'.",
169+
"Exiting conditional exports.",
152170
"Export specifier './versioned-nah' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
153171
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
154172
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
173+
"Entering conditional exports.",
155174
"Saw non-matching condition 'types@<4'.",
175+
"Exiting conditional exports.",
156176
"Export specifier './versioned-nah' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
157177
"======== Module name 'exports-and-types-versions/versioned-nah' was not resolved. ========",
158178
"======== Resolving module 'just-types-versions/foo' from '/main.mts'. ========",

0 commit comments

Comments
 (0)