Indexed source maps: lastColumn is not clamped to the next section when the section does not start on line 1
Los mantenedores suelen responder en 5 días
@sebxt ya está trabajando en esto.
Desde el 18/10/2026.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript
- Área
- devtools
Línea de trabajo
Lee IndexedSourceMapConsumer e inspecciona las comparaciones de generatedPositionFor, allGeneratedPositionsFor y eachMapping con la línea generada de la siguiente sección. Reproduce el problema con el mapa de tres secciones proporcionado y ejecuta las pruebas pertinentes de source map. El trabajo estará completo cuando las tres API limiten la última columna de la sección al límite de la siguiente sección si la sección comienza después de la línea 1.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
After computeColumnSpans(), IndexedSourceMapConsumer is supposed to clamp a mapping's lastColumn (or lastGeneratedColumn) so it ends where the next section begins on the same generated line. This only works for the first section, or more precisely for sections whose offset line is 0. For any later section the clamp is skipped, and in some layouts it is applied to the wrong line.
Repro:
const { SourceMapConsumer } = require("source-map");
const section = source => ({ version: 3, sources: [source], names: [], mappings: "AAAA" });
const map = await new SourceMapConsumer({
version: 3,
sections: [
{ offset: { line: 0, column: 0 }, map: section("a.js") },
{ offset: { line: 2, column: 0 }, map: section("b.js") },
{ offset: { line: 2, column: 10 }, map: section("c.js") },
],
});
map.computeColumnSpans();
map.generatedPositionFor({ source: "b.js", line: 1, column: 0 });
// actual: { line: 3, column: 0, lastColumn: Infinity }
// expected: { line: 3, column: 0, lastColumn: 9 }
allGeneratedPositionsFor and eachMapping (lastGeneratedColumn) return the same wrong value.
Root cause: in generatedPositionFor, allGeneratedPositionsFor and eachMapping of IndexedSourceMapConsumer, the comparison line === nextSection.generatedOffset.generatedLine runs before lineShift is added, so a section relative line is compared with an absolute line from the next section's offset. It only lines up when lineShift is 0. Adding the shift before the comparison fixes it.
- Lenguaje dominante
- JavaScript
- Estrellas
- 3.7k
- Forks
- 392
- Merge medio
- 4 d 18 h
- PR fusionados (30 d)
- 1
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la 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 mozilla/source-map
-
SourceMapConsumer.fromSourceMap ignores its sourceMapUrl argumentPosiblemente ocupada @sebxt la tomó hace 17 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
mozilla/source-map#544 ·
Los mantenedores suelen responder en 5 días
-
Indexed column spans ignore section line offsets when clipping at the next sectionPosiblemente ocupada @NUAAwqy la tomó hace 24 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
mozilla/source-map#539 ·
Los mantenedores suelen responder en 5 días
-
wasm-mappings fail to build with Rust 1.96+Posiblemente ocupada @MatrixNeoKozak la tomó hace 25 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
mozilla/source-map#530 ·
Los mantenedores suelen responder en 5 días
-
Indexed source maps: allGeneratedPositionsFor only returns positions from the first section that contains the sourcePosiblemente ocupada @RaphaelFakhri la tomó hace 2 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
mozilla/source-map#564 ·
Los mantenedores suelen responder en 5 días
-
allow wasm to be bundledQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
mozilla/source-map#527 ·
Los mantenedores suelen responder en 5 días
Todos los issues de mozilla/source-map
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
obsidianmd/obsidian-developer-docs#281 ·
Los mantenedores suelen responder en 4 días
-
Reusing one Excerpt vnode for desktop and mobile can break redraws when post content changesAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
FriendsOfFlarum/synopsis#16 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Fei-Away/Codex-Dream-Skin#449 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
sysprog21/codetrial#604 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
outline/outline#14489 · 1 comentario ·
Los mantenedores suelen responder en 1 día