Skip to content

Commit b5f1eff

Browse files
authored
Add --disableDynamicImportExtensionRewriting (#65289)
1 parent 9aaf148 commit b5f1eff

32 files changed

Lines changed: 955 additions & 43 deletions

File tree

‎packages/typescript/schemas/jsconfig.schema.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,6 +1428,19 @@
14281428
"default": false,
14291429
"markdownDescription": "Disable emitting comments.\n\nSee the [TSConfig reference](https://www.typescriptlang.org/tsconfig/#removeComments)."
14301430
},
1431+
"disableDynamicImportExtensionRewriting": {
1432+
"anyOf": [
1433+
{
1434+
"type": "boolean"
1435+
},
1436+
{
1437+
"type": "null"
1438+
}
1439+
],
1440+
"description": "Disable runtime rewriting of file extensions in non-literal 'import()' and 'require()' calls when 'rewriteRelativeImportExtensions' is enabled.",
1441+
"default": false,
1442+
"markdownDescription": "Disable runtime rewriting of file extensions in non-literal 'import()' and 'require()' calls when 'rewriteRelativeImportExtensions' is enabled.\n\nSee the [TSConfig reference](https://www.typescriptlang.org/tsconfig/#disableDynamicImportExtensionRewriting)."
1443+
},
14311444
"rewriteRelativeImportExtensions": {
14321445
"anyOf": [
14331446
{

‎packages/typescript/schemas/tsconfig.schema.json‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,6 +1427,19 @@
14271427
"default": false,
14281428
"markdownDescription": "Disable emitting comments.\n\nSee the [TSConfig reference](https://www.typescriptlang.org/tsconfig/#removeComments)."
14291429
},
1430+
"disableDynamicImportExtensionRewriting": {
1431+
"anyOf": [
1432+
{
1433+
"type": "boolean"
1434+
},
1435+
{
1436+
"type": "null"
1437+
}
1438+
],
1439+
"description": "Disable runtime rewriting of file extensions in non-literal 'import()' and 'require()' calls when 'rewriteRelativeImportExtensions' is enabled.",
1440+
"default": false,
1441+
"markdownDescription": "Disable runtime rewriting of file extensions in non-literal 'import()' and 'require()' calls when 'rewriteRelativeImportExtensions' is enabled.\n\nSee the [TSConfig reference](https://www.typescriptlang.org/tsconfig/#disableDynamicImportExtensionRewriting)."
1442+
},
14301443
"rewriteRelativeImportExtensions": {
14311444
"anyOf": [
14321445
{

‎packages/typescript/src/api/compilerOptions.generated.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ export interface CompilerOptions {
9797
resolvePackageJsonExports?: boolean | undefined;
9898
resolvePackageJsonImports?: boolean | undefined;
9999
removeComments?: boolean | undefined;
100+
disableDynamicImportExtensionRewriting?: boolean | undefined;
100101
rewriteRelativeImportExtensions?: boolean | undefined;
101102
reactNamespace?: string | undefined;
102103
rootDir?: RootedDirectoryPath | undefined;

‎packages/typescript/src/api/proto.generated.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1872,6 +1872,7 @@ export interface RawCompilerOptions {
18721872
resolvePackageJsonExports?: boolean | undefined;
18731873
resolvePackageJsonImports?: boolean | undefined;
18741874
removeComments?: boolean | undefined;
1875+
disableDynamicImportExtensionRewriting?: boolean | undefined;
18751876
rewriteRelativeImportExtensions?: boolean | undefined;
18761877
reactNamespace?: string | undefined;
18771878
rootDir?: string | undefined;

‎tools/scripts/tsc/options.ts‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -994,6 +994,19 @@ export const options: OptionsModel = {
994994
description: diagnostic("Disable emitting comments."),
995995
},
996996
},
997+
{
998+
name: "disableDynamicImportExtensionRewriting",
999+
type: "Tristate",
1000+
declaration: {
1001+
group: "optionsForCompiler",
1002+
affectsSemanticDiagnostics: true,
1003+
affectsEmit: true,
1004+
affectsBuildInfo: true,
1005+
category: diagnostic("Modules"),
1006+
description: diagnostic("Disable runtime rewriting of file extensions in non-literal 'import()' and 'require()' calls when 'rewriteRelativeImportExtensions' is enabled."),
1007+
defaultValueDescription: false,
1008+
},
1009+
},
9971010
{
9981011
name: "rewriteRelativeImportExtensions",
9991012
type: "Tristate",
@@ -1780,6 +1793,7 @@ export const options: OptionsModel = {
17801793
"moduleSuffixes",
17811794
"allowImportingTsExtensions",
17821795
"rewriteRelativeImportExtensions",
1796+
"disableDynamicImportExtensionRewriting",
17831797
"resolvePackageJsonExports",
17841798
"resolvePackageJsonImports",
17851799
"customConditions",

‎tsc/internal/checker/checker.go‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8485,7 +8485,9 @@ func (c *Checker) checkImportCallExpression(node *ast.Node) *Type {
84858485
return c.createPromiseReturnType(node, c.anyType) //nolint:customlint // no arguments to check
84868486
}
84878487
specifier := args[0]
8488-
if c.compilerOptions.RewriteRelativeImportExtensions.IsTrue() && !ast.IsStringLiteralLike(specifier) {
8488+
if c.compilerOptions.RewriteRelativeImportExtensions.IsTrue() &&
8489+
!c.compilerOptions.DisableDynamicImportExtensionRewriting.IsTrue() &&
8490+
!ast.IsStringLiteralLike(specifier) {
84898491
c.checkExternalEmitHelpers(node, ExternalEmitHelpersRewriteRelativeImportExtension)
84908492
}
84918493
specifierType := c.checkExpressionCached(specifier)
@@ -8541,6 +8543,7 @@ func (c *Checker) checkImportCallExpression(node *ast.Node) *Type {
85418543
*/
85428544
func (c *Checker) checkCallExpression(node *ast.Node, checkMode CheckMode) *Type {
85438545
if c.compilerOptions.RewriteRelativeImportExtensions.IsTrue() &&
8546+
!c.compilerOptions.DisableDynamicImportExtensionRewriting.IsTrue() &&
85448547
ast.IsInJSFile(node) && ast.IsRequireCall(node, false /*requireStringLiteralLikeArgument*/) &&
85458548
!ast.IsStringLiteralLike(node.Arguments()[0]) {
85468549
c.checkExternalEmitHelpers(node, ExternalEmitHelpersRewriteRelativeImportExtension)

‎tsc/internal/core/options_generated.go‎

Lines changed: 39 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎tsc/internal/diagnostics/diagnosticMessages.generated.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,7 @@
16561656
"This_operation_can_be_simplified_This_shift_is_identical_to_0_1_2_6807": "This operation can be simplified. This shift is identical to `{0} {1} {2}`.",
16571657
"Enable_lib_replacement_6808": "Enable lib replacement.",
16581658
"Ensure_types_are_ordered_stably_and_deterministically_across_compilations_6809": "Ensure types are ordered stably and deterministically across compilations.",
1659+
"Disable_runtime_rewriting_of_file_extensions_in_non_literal_import_and_require_calls_when_rewriteRel_6810": "Disable runtime rewriting of file extensions in non-literal 'import()' and 'require()' calls when 'rewriteRelativeImportExtensions' is enabled.",
16591660
"one_of_Colon_6900": "one of:",
16601661
"one_or_more_Colon_6901": "one or more:",
16611662
"type_Colon_6902": "type:",

‎tsc/internal/diagnostics/diagnosticMessages.json‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6653,6 +6653,10 @@
66536653
"category": "Message",
66546654
"code": 6809
66556655
},
6656+
"Disable runtime rewriting of file extensions in non-literal 'import()' and 'require()' calls when 'rewriteRelativeImportExtensions' is enabled.": {
6657+
"category": "Message",
6658+
"code": 6810
6659+
},
66566660

66576661
"one of:": {
66586662
"category": "Message",

‎tsc/internal/diagnostics/diagnostics_generated.go‎

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)