dts: declaration maps (.d.ts.map) are not updated after Ivy members are injected

Offen
#693 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
48/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
rust, typescript

Rechercherichtung

Start by tracing injectDtsDeclarations and dts_inject, then inspect the dts plugin's generateBundle hook and how Rolldown handles declaration map assets and renderChunk maps. Reproduce with tsdown and rolldown-plugin-dts using declaration sourcemaps. Done means injected declaration members have correct source mappings and hashed .d.ts chunk names stay in sync.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Found while reviewing #683.

The dts plugin rewrites .d.ts text in generateBundle (adds import * as i0 … and the static ɵ… members) but leaves the declaration map alone. In rolldown, the written .d.mts.map is a separate asset that is already in the bundle at that point, so it keeps the old line numbers.

tsdown / rolldown-plugin-dts with dts sourcemap: .d.mts.map is byte-identical with and without the members
line 1 is now `import * as i0 …`, so the first mapping (meant for HelloComponent) points at the import,
and every later class is off by 1 + (number of added member lines)
→ go-to-definition in a consumer's IDE opens the wrong line of the source .ts

The asset path has the same gap. A fix needs the injection points: injectDtsDeclarations only returns the new string, and it doesn't always add whole lines (it splits declare class X {} before the }). Options: have dts_inject return its splices and shift the map (mappings groups per line), or inject from a renderChunk (order: 'post') hook that returns a map. Reviewers checked that rolldown chains such a map, and it also keeps the [hash] of hashed .d.ts chunks in sync.

Vorherrschende Sprache
Rust
Sterne
245
Forks
26
Ø Merge
1 T. 42 Min.
Gemergte PRs (30 T.)
83

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus voidzero-dev/oxc-angular-compiler

Alle Issues in voidzero-dev/oxc-angular-compiler

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.