Skip to content

Commit f7576aa

Browse files
committed
node20 and nodenext imply resolveJsonModule
1 parent 218d141 commit f7576aa

18 files changed

Lines changed: 86 additions & 67 deletions

src/compiler/utilities.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9084,6 +9084,14 @@ const _computedOptions = createComputedCompilerOptions({
90849084
if (compilerOptions.resolveJsonModule !== undefined) {
90859085
return compilerOptions.resolveJsonModule;
90869086
}
9087+
switch (_computedOptions.module.computeValue(compilerOptions)) {
9088+
// TODO in 6.0: uncomment
9089+
// case ModuleKind.Node16:
9090+
// case ModuleKind.Node18:
9091+
case ModuleKind.Node20:
9092+
case ModuleKind.NodeNext:
9093+
return true;
9094+
}
90879095
return _computedOptions.moduleResolution.computeValue(compilerOptions) === ModuleResolutionKind.Bundler;
90889096
},
90899097
},

tests/baselines/reference/bundlerDirectoryModule(module=node20,moduleresolution=nodenext).trace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"======== Resolving module '../lib' from '/app/test.ts'. ========",
55
"Explicitly specified module resolution kind: 'NodeNext'.",
66
"Resolving in CJS mode with conditions 'require', 'types', 'node'.",
7-
"Loading module as file / folder, candidate module location '/lib', target file types: TypeScript, JavaScript, Declaration.",
7+
"Loading module as file / folder, candidate module location '/lib', target file types: TypeScript, JavaScript, Declaration, JSON.",
88
"File '/lib.ts' does not exist.",
99
"File '/lib.tsx' does not exist.",
1010
"File '/lib.d.ts' does not exist.",

tests/baselines/reference/bundlerDirectoryModule(module=nodenext,moduleresolution=nodenext).trace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"======== Resolving module '../lib' from '/app/test.ts'. ========",
55
"Explicitly specified module resolution kind: 'NodeNext'.",
66
"Resolving in CJS mode with conditions 'require', 'types', 'node'.",
7-
"Loading module as file / folder, candidate module location '/lib', target file types: TypeScript, JavaScript, Declaration.",
7+
"Loading module as file / folder, candidate module location '/lib', target file types: TypeScript, JavaScript, Declaration, JSON.",
88
"File '/lib.ts' does not exist.",
99
"File '/lib.tsx' does not exist.",
1010
"File '/lib.d.ts' does not exist.",

tests/baselines/reference/config/showConfig/Show TSConfig with transitively implied options/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"allowSyntheticDefaultImports": true,
99
"resolvePackageJsonExports": true,
1010
"resolvePackageJsonImports": true,
11+
"resolveJsonModule": true,
1112
"useDefineForClassFields": true
1213
}
1314
}

tests/baselines/reference/emitHelpersWithLocalCollisions(module=node20).errors.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
error TS5070: Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.
12
error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node20'.
23

34

5+
!!! error TS5070: Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.
46
!!! error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node20'.
57
==== a.ts (0 errors) ====
68
declare var dec: any, __decorate: any;

tests/baselines/reference/emitHelpersWithLocalCollisions(module=nodenext).errors.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
error TS5070: Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.
12
error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'.
23

34

5+
!!! error TS5070: Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.
46
!!! error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'.
57
==== a.ts (0 errors) ====
68
declare var dec: any, __decorate: any;

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

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"Module resolution kind is not specified, using 'Node16'.",
88
"Resolving in CJS mode with conditions 'require', 'types', 'node'.",
99
"File '/package.json' does not exist.",
10-
"Loading module 'exports-and-types-versions/foo' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
10+
"Loading module 'exports-and-types-versions/foo' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
1111
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
1212
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
1313
"Using 'exports' subpath './foo' with target './dist/foo.js'.",
@@ -17,7 +17,7 @@
1717
"File '/node_modules/exports-and-types-versions/dist/foo.d.ts' does not exist.",
1818
"Export specifier './foo' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
1919
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
20-
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
20+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.",
2121
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
2222
"Using 'exports' subpath './foo' with target './dist/foo.js'.",
2323
"File name '/node_modules/exports-and-types-versions/dist/foo.js' has a '.js' extension - stripping it.",
@@ -29,20 +29,20 @@
2929
"Module resolution kind is not specified, using 'Node16'.",
3030
"Resolving in CJS mode with conditions 'require', 'types', 'node'.",
3131
"File '/package.json' does not exist according to earlier cached lookups.",
32-
"Loading module 'exports-and-types-versions/nope' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
32+
"Loading module 'exports-and-types-versions/nope' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
3333
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
3434
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
3535
"Export specifier './nope' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
3636
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
37-
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
37+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.",
3838
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
3939
"Export specifier './nope' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
4040
"======== Module name 'exports-and-types-versions/nope' was not resolved. ========",
4141
"======== Resolving module 'exports-and-types-versions/yep' from '/main.cts'. ========",
4242
"Module resolution kind is not specified, using 'Node16'.",
4343
"Resolving in CJS mode with conditions 'require', 'types', 'node'.",
4444
"File '/package.json' does not exist according to earlier cached lookups.",
45-
"Loading module 'exports-and-types-versions/yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
45+
"Loading module 'exports-and-types-versions/yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
4646
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
4747
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
4848
"Entering conditional exports.",
@@ -57,7 +57,7 @@
5757
"Module resolution kind is not specified, using 'Node16'.",
5858
"Resolving in CJS mode with conditions 'require', 'types', 'node'.",
5959
"File '/package.json' does not exist according to earlier cached lookups.",
60-
"Loading module 'exports-and-types-versions/versioned-yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
60+
"Loading module 'exports-and-types-versions/versioned-yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
6161
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
6262
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
6363
"Entering conditional exports.",
@@ -72,15 +72,15 @@
7272
"Module resolution kind is not specified, using 'Node16'.",
7373
"Resolving in CJS mode with conditions 'require', 'types', 'node'.",
7474
"File '/package.json' does not exist according to earlier cached lookups.",
75-
"Loading module 'exports-and-types-versions/versioned-nah' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
75+
"Loading module 'exports-and-types-versions/versioned-nah' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
7676
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
7777
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
7878
"Entering conditional exports.",
7979
"Saw non-matching condition 'types@<4'.",
8080
"Exiting conditional exports.",
8181
"Export specifier './versioned-nah' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
8282
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
83-
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
83+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.",
8484
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
8585
"Entering conditional exports.",
8686
"Saw non-matching condition 'types@<4'.",
@@ -91,7 +91,7 @@
9191
"Module resolution kind is not specified, using 'Node16'.",
9292
"Resolving in CJS mode with conditions 'require', 'types', 'node'.",
9393
"File '/package.json' does not exist according to earlier cached lookups.",
94-
"Loading module 'just-types-versions/foo' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
94+
"Loading module 'just-types-versions/foo' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
9595
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
9696
"File '/node_modules/just-types-versions/package.json' exists according to earlier cached lookups.",
9797
"'package.json' has a 'typesVersions' field with version-specific path mappings.",
@@ -105,7 +105,7 @@
105105
"Module resolution kind is not specified, using 'Node16'.",
106106
"Resolving in ESM mode with conditions 'import', 'types', 'node'.",
107107
"File '/package.json' does not exist according to earlier cached lookups.",
108-
"Loading module 'exports-and-types-versions/foo' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
108+
"Loading module 'exports-and-types-versions/foo' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
109109
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
110110
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
111111
"Using 'exports' subpath './foo' with target './dist/foo.js'.",
@@ -115,7 +115,7 @@
115115
"File '/node_modules/exports-and-types-versions/dist/foo.d.ts' does not exist.",
116116
"Export specifier './foo' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
117117
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
118-
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
118+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.",
119119
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
120120
"Using 'exports' subpath './foo' with target './dist/foo.js'.",
121121
"File name '/node_modules/exports-and-types-versions/dist/foo.js' has a '.js' extension - stripping it.",
@@ -136,20 +136,20 @@
136136
"Module resolution kind is not specified, using 'Node16'.",
137137
"Resolving in ESM mode with conditions 'import', 'types', 'node'.",
138138
"File '/package.json' does not exist according to earlier cached lookups.",
139-
"Loading module 'exports-and-types-versions/nope' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
139+
"Loading module 'exports-and-types-versions/nope' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
140140
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
141141
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
142142
"Export specifier './nope' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
143143
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
144-
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
144+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.",
145145
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
146146
"Export specifier './nope' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
147147
"======== Module name 'exports-and-types-versions/nope' was not resolved. ========",
148148
"======== Resolving module 'exports-and-types-versions/yep' from '/main.mts'. ========",
149149
"Module resolution kind is not specified, using 'Node16'.",
150150
"Resolving in ESM mode with conditions 'import', 'types', 'node'.",
151151
"File '/package.json' does not exist according to earlier cached lookups.",
152-
"Loading module 'exports-and-types-versions/yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
152+
"Loading module 'exports-and-types-versions/yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
153153
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
154154
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
155155
"Entering conditional exports.",
@@ -164,7 +164,7 @@
164164
"Module resolution kind is not specified, using 'Node16'.",
165165
"Resolving in ESM mode with conditions 'import', 'types', 'node'.",
166166
"File '/package.json' does not exist according to earlier cached lookups.",
167-
"Loading module 'exports-and-types-versions/versioned-yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
167+
"Loading module 'exports-and-types-versions/versioned-yep' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
168168
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
169169
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
170170
"Entering conditional exports.",
@@ -179,15 +179,15 @@
179179
"Module resolution kind is not specified, using 'Node16'.",
180180
"Resolving in ESM mode with conditions 'import', 'types', 'node'.",
181181
"File '/package.json' does not exist according to earlier cached lookups.",
182-
"Loading module 'exports-and-types-versions/versioned-nah' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
182+
"Loading module 'exports-and-types-versions/versioned-nah' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
183183
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
184184
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
185185
"Entering conditional exports.",
186186
"Saw non-matching condition 'types@<4'.",
187187
"Exiting conditional exports.",
188188
"Export specifier './versioned-nah' does not exist in package.json scope at path '/node_modules/exports-and-types-versions'.",
189189
"Directory '/node_modules/@types' does not exist, skipping all lookups in it.",
190-
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
190+
"Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.",
191191
"File '/node_modules/exports-and-types-versions/package.json' exists according to earlier cached lookups.",
192192
"Entering conditional exports.",
193193
"Saw non-matching condition 'types@<4'.",
@@ -198,7 +198,7 @@
198198
"Module resolution kind is not specified, using 'Node16'.",
199199
"Resolving in ESM mode with conditions 'import', 'types', 'node'.",
200200
"File '/package.json' does not exist according to earlier cached lookups.",
201-
"Loading module 'just-types-versions/foo' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration.",
201+
"Loading module 'just-types-versions/foo' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.",
202202
"Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
203203
"File '/node_modules/just-types-versions/package.json' exists according to earlier cached lookups.",
204204
"'package.json' has a 'typesVersions' entry '*' that matches compiler version '3.1.0-dev', looking for a pattern to match module name 'foo'.",

0 commit comments

Comments
 (0)