diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 0e60926c93d50..22ac200a0dcee 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -4661,7 +4661,7 @@ "category": "Error", "code": 5094 }, - "Option '{0}' can only be used when 'module' is set to 'preserve' or to 'es2015' or later.": { + "Option '{0}' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.": { "category": "Error", "code": 5095 }, diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 445946dab0c67..ed15f04c29268 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -4371,8 +4371,8 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro createDiagnosticForOptionName(Diagnostics.Option_0_can_only_be_used_when_moduleResolution_is_set_to_node16_nodenext_or_bundler, "customConditions"); } - if (moduleResolution === ModuleResolutionKind.Bundler && !emitModuleKindIsNonNodeESM(moduleKind) && moduleKind !== ModuleKind.Preserve) { - createOptionValueDiagnostic("moduleResolution", Diagnostics.Option_0_can_only_be_used_when_module_is_set_to_preserve_or_to_es2015_or_later, "bundler"); + if (moduleResolution === ModuleResolutionKind.Bundler && !emitModuleKindIsNonNodeESM(moduleKind) && moduleKind !== ModuleKind.Preserve && moduleKind !== ModuleKind.CommonJS) { + createOptionValueDiagnostic("moduleResolution", Diagnostics.Option_0_can_only_be_used_when_module_is_set_to_preserve_commonjs_or_es2015_or_later, "bundler"); } if ( diff --git a/tests/baselines/reference/allowImportingTsExtensions(moduleresolution=bundler).errors.txt b/tests/baselines/reference/allowImportingTsExtensions(moduleresolution=bundler).errors.txt index 9cd62ffe3c082..755f0d6eebda9 100644 --- a/tests/baselines/reference/allowImportingTsExtensions(moduleresolution=bundler).errors.txt +++ b/tests/baselines/reference/allowImportingTsExtensions(moduleresolution=bundler).errors.txt @@ -1,8 +1,6 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. /c.ts(1,16): error TS2307: Cannot find module './thisfiledoesnotexist.ts' or its corresponding type declarations. -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. ==== /ts.ts (0 errors) ==== export {}; diff --git a/tests/baselines/reference/bundlerCommonJS.errors.txt b/tests/baselines/reference/bundlerCommonJS.errors.txt new file mode 100644 index 0000000000000..3d67812bd0aee --- /dev/null +++ b/tests/baselines/reference/bundlerCommonJS.errors.txt @@ -0,0 +1,35 @@ +/real-imports.mts(1,19): error TS2307: Cannot find module 'pkg' or its corresponding type declarations. + + +==== /node_modules/pkg/package.json (0 errors) ==== + { + "name": "pkg", + "version": "1.0.0", + "type": "commonjs", + "exports": { + "require": "./index.js" + } + } + +==== /node_modules/pkg/index.d.ts (0 errors) ==== + export declare const x: number; + +==== /package.json (0 errors) ==== + { + "": "type module is ignored in --module commonjs", + "type": "module" + } + +==== /requires.ts (0 errors) ==== + import pkg = require("pkg"); + pkg.x; + +==== /imports.ts (0 errors) ==== + import { x } from "pkg"; + x; + +==== /real-imports.mts (1 errors) ==== + import { x } from "pkg"; // Error + ~~~~~ +!!! error TS2307: Cannot find module 'pkg' or its corresponding type declarations. + \ No newline at end of file diff --git a/tests/baselines/reference/bundlerCommonJS.js b/tests/baselines/reference/bundlerCommonJS.js new file mode 100644 index 0000000000000..0d8c4c13d3c90 --- /dev/null +++ b/tests/baselines/reference/bundlerCommonJS.js @@ -0,0 +1,45 @@ +//// [tests/cases/conformance/moduleResolution/bundler/bundlerCommonJS.ts] //// + +//// [package.json] +{ + "name": "pkg", + "version": "1.0.0", + "type": "commonjs", + "exports": { + "require": "./index.js" + } +} + +//// [index.d.ts] +export declare const x: number; + +//// [package.json] +{ + "": "type module is ignored in --module commonjs", + "type": "module" +} + +//// [requires.ts] +import pkg = require("pkg"); +pkg.x; + +//// [imports.ts] +import { x } from "pkg"; +x; + +//// [real-imports.mts] +import { x } from "pkg"; // Error + + +//// [requires.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var pkg = require("pkg"); +pkg.x; +//// [imports.js] +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var pkg_1 = require("pkg"); +pkg_1.x; +//// [real-imports.mjs] +export {}; diff --git a/tests/baselines/reference/bundlerCommonJS.trace.json b/tests/baselines/reference/bundlerCommonJS.trace.json new file mode 100644 index 0000000000000..ac710396a2193 --- /dev/null +++ b/tests/baselines/reference/bundlerCommonJS.trace.json @@ -0,0 +1,42 @@ +[ + "Found 'package.json' at '/node_modules/pkg/package.json'.", + "======== Resolving module 'pkg' from '/requires.ts'. ========", + "Explicitly specified module resolution kind: 'Bundler'.", + "Resolving in CJS mode with conditions 'require', 'types'.", + "Found 'package.json' at '/package.json'.", + "Loading module 'pkg' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "File '/node_modules/pkg/package.json' exists according to earlier cached lookups.", + "Entering conditional exports.", + "Matched 'exports' condition 'require'.", + "Using 'exports' subpath '.' with target './index.js'.", + "File name '/node_modules/pkg/index.js' has a '.js' extension - stripping it.", + "File '/node_modules/pkg/index.ts' does not exist.", + "File '/node_modules/pkg/index.tsx' does not exist.", + "File '/node_modules/pkg/index.d.ts' exists - use it as a name resolution result.", + "'package.json' does not have a 'peerDependencies' field.", + "Resolved under condition 'require'.", + "Exiting conditional exports.", + "Resolving real path for '/node_modules/pkg/index.d.ts', result '/node_modules/pkg/index.d.ts'.", + "======== Module name 'pkg' was successfully resolved to '/node_modules/pkg/index.d.ts' with Package ID 'pkg/index.d.ts@1.0.0'. ========", + "======== Resolving module 'pkg' from '/imports.ts'. ========", + "Resolution for module 'pkg' was found in cache from location '/'.", + "======== Module name 'pkg' was successfully resolved to '/node_modules/pkg/index.d.ts' with Package ID 'pkg/index.d.ts@1.0.0'. ========", + "======== Resolving module 'pkg' from '/real-imports.mts'. ========", + "Explicitly specified module resolution kind: 'Bundler'.", + "Resolving in CJS mode with conditions 'import', 'types'.", + "File '/package.json' exists according to earlier cached lookups.", + "Loading module 'pkg' from 'node_modules' folder, target file types: TypeScript, JavaScript, Declaration, JSON.", + "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.", + "File '/node_modules/pkg/package.json' exists according to earlier cached lookups.", + "Entering conditional exports.", + "Saw non-matching condition 'require'.", + "Exiting conditional exports.", + "Directory '/node_modules/@types' does not exist, skipping all lookups in it.", + "Searching all ancestor node_modules directories for fallback extensions: JavaScript, JSON.", + "File '/node_modules/pkg/package.json' exists according to earlier cached lookups.", + "Entering conditional exports.", + "Saw non-matching condition 'require'.", + "Exiting conditional exports.", + "======== Module name 'pkg' was not resolved. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/bundlerDirectoryModule(module=node18,moduleresolution=bundler).errors.txt b/tests/baselines/reference/bundlerDirectoryModule(module=node18,moduleresolution=bundler).errors.txt index d898b0342c912..35cfa9d7da427 100644 --- a/tests/baselines/reference/bundlerDirectoryModule(module=node18,moduleresolution=bundler).errors.txt +++ b/tests/baselines/reference/bundlerDirectoryModule(module=node18,moduleresolution=bundler).errors.txt @@ -1,8 +1,8 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node18'. -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. !!! error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node18'. ==== /app/test.ts (0 errors) ==== import { test } from '../lib'; diff --git a/tests/baselines/reference/bundlerDirectoryModule(module=node20,moduleresolution=bundler).errors.txt b/tests/baselines/reference/bundlerDirectoryModule(module=node20,moduleresolution=bundler).errors.txt index 7a1047bfbe0d2..8f813cbc2b8e0 100644 --- a/tests/baselines/reference/bundlerDirectoryModule(module=node20,moduleresolution=bundler).errors.txt +++ b/tests/baselines/reference/bundlerDirectoryModule(module=node20,moduleresolution=bundler).errors.txt @@ -1,8 +1,8 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node20'. -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. !!! error TS5109: Option 'moduleResolution' must be set to 'Node16' (or left unspecified) when option 'module' is set to 'Node20'. ==== /app/test.ts (0 errors) ==== import { test } from '../lib'; diff --git a/tests/baselines/reference/bundlerDirectoryModule(module=nodenext,moduleresolution=bundler).errors.txt b/tests/baselines/reference/bundlerDirectoryModule(module=nodenext,moduleresolution=bundler).errors.txt index 251f5168f39c0..f21c74773e620 100644 --- a/tests/baselines/reference/bundlerDirectoryModule(module=nodenext,moduleresolution=bundler).errors.txt +++ b/tests/baselines/reference/bundlerDirectoryModule(module=nodenext,moduleresolution=bundler).errors.txt @@ -1,8 +1,8 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'. -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. !!! error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'. ==== /app/test.ts (0 errors) ==== import { test } from '../lib'; diff --git a/tests/baselines/reference/bundlerOptionsCompat.errors.txt b/tests/baselines/reference/bundlerOptionsCompat.errors.txt index ad59afcd2e616..9b0933416720e 100644 --- a/tests/baselines/reference/bundlerOptionsCompat.errors.txt +++ b/tests/baselines/reference/bundlerOptionsCompat.errors.txt @@ -1,13 +1,16 @@ -/tsconfig.json(4,25): error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +/tsconfig.json(4,25): error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. +/tsconfig.json(4,25): error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'. -==== /tsconfig.json (1 errors) ==== +==== /tsconfig.json (2 errors) ==== { "compilerOptions": { - "module": "commonjs", + "module": "nodenext", "moduleResolution": "bundler", ~~~~~~~~~ -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. + ~~~~~~~~~ +!!! error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'. "noEmit": true } } diff --git a/tests/baselines/reference/extensionLoadingPriority(moduleresolution=bundler).errors.txt b/tests/baselines/reference/extensionLoadingPriority(moduleresolution=bundler).errors.txt deleted file mode 100644 index 3ce0386d486b0..0000000000000 --- a/tests/baselines/reference/extensionLoadingPriority(moduleresolution=bundler).errors.txt +++ /dev/null @@ -1,20 +0,0 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. - - -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. -==== /project/a.js (0 errors) ==== - export default "a.js"; - -==== /project/a.js.js (0 errors) ==== - export default "a.js.js"; - -==== /project/dir/index.ts (0 errors) ==== - export default "dir/index.ts"; - -==== /project/dir.js (0 errors) ==== - export default "dir.js"; - -==== /project/b.ts (0 errors) ==== - import a from "./a.js"; - import dir from "./dir"; - \ No newline at end of file diff --git a/tests/baselines/reference/impliedNodeFormatEmit1(module=amd).errors.txt b/tests/baselines/reference/impliedNodeFormatEmit1(module=amd).errors.txt index b837dc175ce01..7a67132f7f441 100644 --- a/tests/baselines/reference/impliedNodeFormatEmit1(module=amd).errors.txt +++ b/tests/baselines/reference/impliedNodeFormatEmit1(module=amd).errors.txt @@ -1,7 +1,7 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. ==== /a.ts (0 errors) ==== export const _ = 0; diff --git a/tests/baselines/reference/impliedNodeFormatEmit1(module=commonjs).errors.txt b/tests/baselines/reference/impliedNodeFormatEmit1(module=commonjs).errors.txt deleted file mode 100644 index b837dc175ce01..0000000000000 --- a/tests/baselines/reference/impliedNodeFormatEmit1(module=commonjs).errors.txt +++ /dev/null @@ -1,37 +0,0 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. - - -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. -==== /a.ts (0 errors) ==== - export const _ = 0; - -==== /b.mts (0 errors) ==== - export const _ = 0; - -==== /c.cts (0 errors) ==== - export const _ = 0; - -==== /d.js (0 errors) ==== - export const _ = 0; - -==== /e.mjs (0 errors) ==== - export const _ = 0; - -==== /f.mjs (0 errors) ==== - export const _ = 0; - -==== /g.ts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /h.mts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /i.cts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /dummy.ts (0 errors) ==== - export {}; - \ No newline at end of file diff --git a/tests/baselines/reference/impliedNodeFormatEmit1(module=system).errors.txt b/tests/baselines/reference/impliedNodeFormatEmit1(module=system).errors.txt index 0482da58d7b5d..f14c00104a9b4 100644 --- a/tests/baselines/reference/impliedNodeFormatEmit1(module=system).errors.txt +++ b/tests/baselines/reference/impliedNodeFormatEmit1(module=system).errors.txt @@ -1,9 +1,9 @@ error TS5071: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'. -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. !!! error TS5071: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'. -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. ==== /a.ts (0 errors) ==== export const _ = 0; diff --git a/tests/baselines/reference/impliedNodeFormatEmit1(module=umd).errors.txt b/tests/baselines/reference/impliedNodeFormatEmit1(module=umd).errors.txt index 0482da58d7b5d..f14c00104a9b4 100644 --- a/tests/baselines/reference/impliedNodeFormatEmit1(module=umd).errors.txt +++ b/tests/baselines/reference/impliedNodeFormatEmit1(module=umd).errors.txt @@ -1,9 +1,9 @@ error TS5071: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'. -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. !!! error TS5071: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'. -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. +!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later. ==== /a.ts (0 errors) ==== export const _ = 0; diff --git a/tests/baselines/reference/impliedNodeFormatEmit2(module=commonjs).errors.txt b/tests/baselines/reference/impliedNodeFormatEmit2(module=commonjs).errors.txt deleted file mode 100644 index b783a3b97e8cd..0000000000000 --- a/tests/baselines/reference/impliedNodeFormatEmit2(module=commonjs).errors.txt +++ /dev/null @@ -1,40 +0,0 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. - - -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. -==== /package.json (0 errors) ==== - {} - -==== /a.ts (0 errors) ==== - export const _ = 0; - -==== /b.mts (0 errors) ==== - export const _ = 0; - -==== /c.cts (0 errors) ==== - export const _ = 0; - -==== /d.js (0 errors) ==== - export const _ = 0; - -==== /e.mjs (0 errors) ==== - export const _ = 0; - -==== /f.mjs (0 errors) ==== - export const _ = 0; - -==== /g.ts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /h.mts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /i.cts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /dummy.ts (0 errors) ==== - export {}; - \ No newline at end of file diff --git a/tests/baselines/reference/impliedNodeFormatEmit3(module=commonjs).errors.txt b/tests/baselines/reference/impliedNodeFormatEmit3(module=commonjs).errors.txt deleted file mode 100644 index bad14be6e619e..0000000000000 --- a/tests/baselines/reference/impliedNodeFormatEmit3(module=commonjs).errors.txt +++ /dev/null @@ -1,42 +0,0 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. - - -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. -==== /package.json (0 errors) ==== - { - "type": "module" - } - -==== /a.ts (0 errors) ==== - export const _ = 0; - -==== /b.mts (0 errors) ==== - export const _ = 0; - -==== /c.cts (0 errors) ==== - export const _ = 0; - -==== /d.js (0 errors) ==== - export const _ = 0; - -==== /e.mjs (0 errors) ==== - export const _ = 0; - -==== /f.mjs (0 errors) ==== - export const _ = 0; - -==== /g.ts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /h.mts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /i.cts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /dummy.ts (0 errors) ==== - export {}; - \ No newline at end of file diff --git a/tests/baselines/reference/impliedNodeFormatEmit4(module=commonjs).errors.txt b/tests/baselines/reference/impliedNodeFormatEmit4(module=commonjs).errors.txt deleted file mode 100644 index 5229094dfa736..0000000000000 --- a/tests/baselines/reference/impliedNodeFormatEmit4(module=commonjs).errors.txt +++ /dev/null @@ -1,42 +0,0 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. - - -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. -==== /package.json (0 errors) ==== - { - "type": "commonjs" - } - -==== /a.ts (0 errors) ==== - export const _ = 0; - -==== /b.mts (0 errors) ==== - export const _ = 0; - -==== /c.cts (0 errors) ==== - export const _ = 0; - -==== /d.js (0 errors) ==== - export const _ = 0; - -==== /e.mjs (0 errors) ==== - export const _ = 0; - -==== /f.mjs (0 errors) ==== - export const _ = 0; - -==== /g.ts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /h.mts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /i.cts (0 errors) ==== - import {} from "./a"; - import a = require("./a"); - -==== /dummy.ts (0 errors) ==== - export {}; - \ No newline at end of file diff --git a/tests/baselines/reference/nestedPackageJsonRedirect(moduleresolution=bundler).errors.txt b/tests/baselines/reference/nestedPackageJsonRedirect(moduleresolution=bundler).errors.txt deleted file mode 100644 index b714d536e8100..0000000000000 --- a/tests/baselines/reference/nestedPackageJsonRedirect(moduleresolution=bundler).errors.txt +++ /dev/null @@ -1,28 +0,0 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. - - -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. -==== /node_modules/@restart/hooks/package.json (0 errors) ==== - { - "name": "@restart/hooks", - "version": "0.3.25", - "main": "cjs/index.js", - "types": "cjs/index.d.ts", - "module": "esm/index.js" - } - -==== /node_modules/@restart/hooks/useMergedRefs/package.json (0 errors) ==== - { - "name": "@restart/hooks/useMergedRefs", - "private": true, - "main": "../cjs/useMergedRefs.js", - "module": "../esm/useMergedRefs.js", - "types": "../esm/useMergedRefs.d.ts" - } - -==== /node_modules/@restart/hooks/esm/useMergedRefs.d.ts (0 errors) ==== - export {}; - -==== /main.ts (0 errors) ==== - import {} from "@restart/hooks/useMergedRefs"; - \ No newline at end of file diff --git a/tests/baselines/reference/packageJsonImportsExportsOptionCompat(moduleresolution=bundler).errors.txt b/tests/baselines/reference/packageJsonImportsExportsOptionCompat(moduleresolution=bundler).errors.txt deleted file mode 100644 index 06ea252e5b844..0000000000000 --- a/tests/baselines/reference/packageJsonImportsExportsOptionCompat(moduleresolution=bundler).errors.txt +++ /dev/null @@ -1,6 +0,0 @@ -error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. - - -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. -==== index.ts (0 errors) ==== - \ No newline at end of file diff --git a/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).errors.txt b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).errors.txt index 93275a57fad27..40b353506a090 100644 --- a/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).errors.txt +++ b/tests/baselines/reference/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).errors.txt @@ -1,12 +1,9 @@ -tsconfig.json(2,5): error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. test.ts(1,19): error TS5097: An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled. -==== tsconfig.json (1 errors) ==== +==== tsconfig.json (0 errors) ==== { "compilerOptions": { - ~~~~~~~~~~~~~~~~~ -!!! error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve' or to 'es2015' or later. "paths": { "foo/*": ["./dist/*"], "baz/*.ts": ["./types/*.d.ts"] diff --git a/tests/cases/conformance/moduleResolution/bundler/bundlerCommonJS.ts b/tests/cases/conformance/moduleResolution/bundler/bundlerCommonJS.ts new file mode 100644 index 0000000000000..f426a5998565d --- /dev/null +++ b/tests/cases/conformance/moduleResolution/bundler/bundlerCommonJS.ts @@ -0,0 +1,35 @@ +// @noTypesAndSymbols: true +// @module: commonjs +// @moduleResolution: bundler +// @traceResolution: true +// @libReplacement: false + +// @Filename: /node_modules/pkg/package.json +{ + "name": "pkg", + "version": "1.0.0", + "type": "commonjs", + "exports": { + "require": "./index.js" + } +} + +// @Filename: /node_modules/pkg/index.d.ts +export declare const x: number; + +// @Filename: /package.json +{ + "": "type module is ignored in --module commonjs", + "type": "module" +} + +// @Filename: /requires.ts +import pkg = require("pkg"); +pkg.x; + +// @Filename: /imports.ts +import { x } from "pkg"; +x; + +// @Filename: /real-imports.mts +import { x } from "pkg"; // Error diff --git a/tests/cases/conformance/moduleResolution/bundler/bundlerOptionsCompat.ts b/tests/cases/conformance/moduleResolution/bundler/bundlerOptionsCompat.ts index e5ca3dd376b12..739e840b1e69e 100644 --- a/tests/cases/conformance/moduleResolution/bundler/bundlerOptionsCompat.ts +++ b/tests/cases/conformance/moduleResolution/bundler/bundlerOptionsCompat.ts @@ -3,7 +3,7 @@ // @Filename: /tsconfig.json { "compilerOptions": { - "module": "commonjs", + "module": "nodenext", "moduleResolution": "bundler", "noEmit": true }