Resolve NodeNext TypeScript `.js` imports to TypeScript source files
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 88/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python, typescript
- Área
- developer-experience, tooling
Línea de trabajo
Empieza en CoderMind/scripts/rpg/dep_graph.py, en los rangos de resolución del resolver y de invoke-resolution citados en la issue, y después lee el test de invoke de TypeScript sin extensión en CoderMind/tests/test_multilingual_dep_graph.py. Añade un test de estilo NodeNext usando el repro proporcionado de a.ts y b.ts; se considera terminado cuando el import .js se resuelve a b.ts y están presentes tanto la arista de importación entre archivos como la arista de invoke.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In a NodeNext/ESM TypeScript repo, relative imports such as import { b } from "./b.js" (the TypeScript-mandated form) remain unresolved, so the graph misses cross-file import and invoke edges. The resolver tries only the literal path when a specifier has an extension, so ./b.js is never tried as b.ts (resolver: https://github.com/microsoft/RPG-ZeroRepo/blob/f0947723cc07fe10fb0d6b14c8aa837847f57b0d/CoderMind/scripts/rpg/dep_graph.py#L2154-L2172 and invoke resolution: https://github.com/microsoft/RPG-ZeroRepo/blob/f0947723cc07fe10fb0d6b14c8aa837847f57b0d/CoderMind/scripts/rpg/dep_graph.py#L2225-L2239).
Minimal resolver-derived repro (not run):
repo/
tsconfig.json
src/a.ts
src/b.ts
tsconfig.json: {"compilerOptions":{"module":"NodeNext","moduleResolution":"NodeNext"}}
src/a.ts: import { b } from "./b.js"; export function a() { return b(); }
src/b.ts: export function b() { return 1; }
Expected: import and invoke edges from src/a.ts to src/b.ts and from src/a.ts:a to src/b.ts:b. Actual: unresolved import and no cross-file invoke edge, as derived from reading the resolver, not from a run.
Suggested change:
if extension:
candidates.append(raw_path)
+ if extension in {".js", ".jsx", ".mjs", ".cjs"}:
+ stem = raw_path[:-len(extension)]
+ candidates.extend(
+ f"{stem}{ext}" for ext in (".ts", ".tsx", ".mts", ".cts")
+ )
Please add a NodeNext-style test next to the existing extensionless TypeScript invoke test (https://github.com/microsoft/RPG-ZeroRepo/blob/f0947723cc07fe10fb0d6b14c8aa837847f57b0d/CoderMind/tests/test_multilingual_dep_graph.py#L156-L199). The audit report counted 241 relative .js imports as unresolved in the inspected repo. I can open a PR with the small resolver fix and test if useful.
This issue was AI-generated at the human operator's direction and reviewed by the operator before submission.
- Lenguaje dominante
- Python
- Estrellas
- 553
- Forks
- 43
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/RPG-ZeroRepo
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
microsoft/RPG-ZeroRepo#101 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
microsoft/RPG-ZeroRepo#5 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 28/100
microsoft/RPG-ZeroRepo#3 · 2 reacciones ·
-
is it support C or C++ project?Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
microsoft/RPG-ZeroRepo#2 · 3 comentarios ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 1/100
microsoft/RPG-ZeroRepo#1 · 7 comentarios ·
Todos los issues de microsoft/RPG-ZeroRepo
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
conda-forge/conda-forge-bot#7025 ·
Los mantenedores suelen responder en 1 día
-
chore(ci): publish.yml's release-job comment counts the hand-created Releases as all of themAbiertoarea:ci
Dificultad 1/5 Menos de una hora Aptitud para principiantes 74/100
catincloud-labs/dagster-dex#149 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
home-assistant/core#188424 ·
Los mantenedores suelen responder en 1 día
-
Review backlog (docs-currency): README 'CI run' link lands on a run whose overall badge is cancelledAbiertoagent/reviewer needs-kind needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
projectbluefin/utah#880 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
redis/memtier_benchmark#850 ·
Los mantenedores suelen responder en 1 día