[WIP] Port TypeScript PR #59767: Rewrite relative import extensions with flag #1114
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Port TypeScript PR #59767: Rewrite relative import extensions with flag
Analysis of what needs to be ported from the TypeScript PR to the Go implementation:
Current Status
internal/tsoptions/declscompiler.go
internal/printer/helpers.go
internal/printer/factory.go
internal/transformers/utilities.go
internal/diagnostics/diagnostics_generated.go
internal/transformers/commonjsmodule_test.go
Completed Implementation ✅
internal/checker/checker.go
shouldRewriteModuleSpecifier
to match TypeScript implementation (removed extra TS extension check)ShouldRewriteModuleSpecifier
totspath
package to avoid import cyclesrewriteRelativeImportExtensions
command line optioncjsErrors.ts
- detecting unsafe relative importspackageJsonImportsErrors.ts
- package.json imports validationnodeModulesTsFiles.ts
- node_modules TypeScript files validationnonTSExtensions.ts
- non-TypeScript extension handlingDesign Notes
ShouldRewriteModuleSpecifier
fromtransformers
totspath
package to avoid import cyclessourceFileMayBeEmitted
check (can be added later if needed)./
prefix) vs TypeScript implementation but functionally equivalentTest Results
The implementation successfully ports the core functionality of TypeScript PR #59767, providing validation for the
rewriteRelativeImportExtensions
flag to catch unsafe import path rewrites.Fixes #1113.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.