56 lines
2.7 KiB
TOML
56 lines
2.7 KiB
TOML
|
|
# Vendored third-party crate.
|
||
|
|
#
|
||
|
|
# Upstream: dagre_rust 0.0.5 (Apache-2.0), as re-published in
|
||
|
|
# warpdotdev/mermaid-to-svg `crates/dagre_rust` ("vendored from 0.0.5
|
||
|
|
# with fixes" per upstream Cargo.toml).
|
||
|
|
# Source of truth: https://github.com/warpdotdev/mermaid-to-svg (rev
|
||
|
|
# 40cecf2be376e47e15053eadbfb782a531777420), crates/dagre_rust/.
|
||
|
|
# Base crate: https://crates.io/crates/dagre_rust/0.0.5
|
||
|
|
#
|
||
|
|
# Why vendored: the Rust port of dagre.js (the same layout engine mermaid.js
|
||
|
|
# uses). It is the layout core of the Warp `mermaid-to-svg` engine, which renders
|
||
|
|
# untrusted model output, so vendoring gives a full audit surface and immunity to
|
||
|
|
# upstream yanks. See third_party/mermaid-to-svg and crates/codegen/xai-grok-mermaid.
|
||
|
|
#
|
||
|
|
# ============================================================================
|
||
|
|
# VENDORING NOTES — re-apply / re-bless ALL of the following on every upgrade:
|
||
|
|
# ============================================================================
|
||
|
|
# Local modifications to the upstream source:
|
||
|
|
# 1. `cargo fmt` (rustfmt) applied so the crate satisfies the workspace fmt
|
||
|
|
# gate; no semantic change. Otherwise the library source (`src/**`, incl. one
|
||
|
|
# in-source unit test in `src/layout/util.rs`) is the `mermaid-to-svg`
|
||
|
|
# in-repo copy; the `graphlib_rust` / `ordered_hashmap` deps are repointed to
|
||
|
|
# the sibling vendored crates.
|
||
|
|
# 2. UNSAFE REMOVAL (src/layout/util.rs): the upstream unique-id counter was a
|
||
|
|
# `static mut UNIQUE_STARTER` incremented inside an `unsafe` block with no
|
||
|
|
# synchronization — a data race whenever the engine renders on more than one
|
||
|
|
# thread (e.g. the parallel `cargo test` suite). Replaced with a
|
||
|
|
# `std::sync::atomic::AtomicUsize` (`fetch_add`); behaviour-preserving (still
|
||
|
|
# hands out monotonic unique ids) and it removes the only `unsafe` here.
|
||
|
|
#
|
||
|
|
# Re-audit checklist:
|
||
|
|
# - No `unsafe` remains (the `static mut` counter became an `AtomicUsize`; see
|
||
|
|
# local modification 2), and no filesystem / env / network I/O in the source.
|
||
|
|
[package]
|
||
|
|
name = "dagre_rust"
|
||
|
|
version = "0.0.5"
|
||
|
|
edition = "2021"
|
||
|
|
description = "Dagre layout in Rust (vendored, library-only)"
|
||
|
|
license = "Apache-2.0"
|
||
|
|
repository = "https://github.com/r3alst/dagre-rust"
|
||
|
|
publish = false
|
||
|
|
|
||
|
|
[lib]
|
||
|
|
name = "dagre_rust"
|
||
|
|
path = "src/lib.rs"
|
||
|
|
doctest = false
|
||
|
|
|
||
|
|
[dependencies]
|
||
|
|
graphlib_rust = { path = "../graphlib_rust" }
|
||
|
|
ordered_hashmap = { path = "../ordered_hashmap" }
|
||
|
|
|
||
|
|
# Clippy lints local/path crates (this vendored crate is one) under the
|
||
|
|
# workspace's `-D warnings`. We do not restyle upstream third-party code, so
|
||
|
|
# allow clippy here; our own crate (xai-grok-mermaid) is still fully linted.
|
||
|
|
[lints.clippy]
|
||
|
|
all = { level = "allow", priority = -1 }
|