d2dagre: use native Go Dagro port - #2819
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
Why
D2's default Dagre layout currently embeds Dagre 0.8.5 as JavaScript and creates a JavaScript VM for every layout. Dagro is a behavior-compatible Go port of that exact implementation, allowing D2 to use a native Go layout path without changing diagram output.
Impact
Existing Dagre layout behavior is preserved. All 313 stored Dagre board JSON and SVG fixtures pass exactly; no goldens were updated.
Screenshots are not applicable because the expected and produced SVGs are byte-for-byte unchanged.
Dependency
Uses Dagro
v0.1.0, released from merged PR d2lang/dagro#1.Validation
go test ./d2layouts/d2dagrelayout -count=1go vet ./d2layouts/d2dagrelayoutGOOS=js GOARCH=wasm go build -o /dev/null ./d2jsgo test ./e2etests -run '^TestE2E$' -count=1with board and SVG checks enablednpm pack --dry-run --jsonincludes bothLICENSE.txtandTHIRD_PARTY_NOTICES.txt; publish staging also verifies their packed bytes