feat(js): auto-resolve TypeScript extensions for relative imports #1790
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.
Summary
When a TypeScript file imports a relative path without an extension (e.g.,
import { x } from './helper'), Elide now tries resolving with TypeScript extensions before falling back to the default module resolution.Problem
Currently, multi-file TypeScript projects don't work in Elide because relative imports like
./helperfail to resolve - Elide doesn't try./helper.ts.Reproduction:
Running
elide main.tsfails withTypeError: Module not found: './helper'Solution
Added TypeScript extension resolution in
ElideUniversalJsModuleLoader:.ts,.tsx,.mts,.cts,.js,.mjs,.cjs,.jsx./foo→./foo/index.ts)This matches the behavior of
tscand other TypeScript tooling.Note
For production apps, bundling with esbuild is still recommended. This enhancement improves DX for simple multi-file scripts.