# Vendored third-party crate.
#
# Upstream:  ordered_hashmap 0.0.3 (Apache-2.0)
# Source of truth: https://crates.io/crates/ordered_hashmap/0.0.3
#
# Why vendored: transitive dependency of the vendored `graphlib_rust` and
# `dagre_rust` layout crates (the Warp `mermaid-to-svg` engine stack). It is a
# young single-author crate on the untrusted-input render path, so vendoring
# gives a full audit surface and immunity to upstream yanks. See
# crates/codegen/xai-grok-mermaid and third_party/mermaid-to-svg.
#
# ============================================================================
# VENDORING NOTES — re-apply / re-bless ALL of the following on every upgrade:
# ============================================================================
# Local modifications to the upstream source:
#  1. NOT VENDORED: the upstream `tests/` integration test (library-only
#     vendoring; the tests add no layout/render coverage).
#  2. `cargo fmt` (rustfmt) applied to `src/lib.rs` so the crate satisfies the
#     workspace fmt gate; no semantic change.
#
# Re-audit checklist:
#  - UNSAFE: src/lib.rs has two `unsafe` blocks in `iter_mut`/`values_mut`
#    (raw-pointer re-borrow to hand out `&mut` while iterating `keys`). Sound
#    today (the keys vec and the map are disjoint fields, never aliased); the
#    `[lints.clippy] all = allow` below does NOT relax unsafe review — re-verify
#    on every upgrade.
[package]
name = "ordered_hashmap"
version = "0.0.3"
edition = "2021"
description = "Ordered HashMap preserving insertion order (vendored, library-only)"
license = "Apache-2.0"
repository = "https://github.com/r3alst/ordered-hashmap"
publish = false

[lib]
name = "ordered_hashmap"
path = "src/lib.rs"
doctest = false

[dependencies]

# Vendored third-party code is not restyled to our lint standards, so silence
# the lints it trips under the workspace's `-D warnings` (the source is kept
# verbatim — only this manifest carries the allows). Our own crate
# (xai-grok-mermaid) is still fully linted.
[lints.rust]
mismatched_lifetime_syntaxes = "allow"

[lints.clippy]
all = { level = "allow", priority = -1 }
