fix: rewrite names of module declarations with relative paths #350
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.
This fixes #345.
Problem
Module declarations are just copied into the output file verbatim. This breaks for module declarations with relative paths. For example:
This will just simply be copied, although the relative module path will no longer exist after running this plugin.
This breaks cross-module type extensions with relative paths, i.e. extending the pre-existing
Config
interface from../config.ts
in the case above.Solution
To solve this, a new fixer is introduced that rewrites all relative module declarations in such a way, that they reference the output file itself, i.e. if the output file were called
index.d.ts
, the above would be rewritten as:Now, the pre-existing interface taken from
../config.ts
will be properly extended again.