dbmd-core 0.8.21

Reference library for db.md, the open standard for databases in plain files. Parsing, store walk, wiki-link graph, validation, query, and write-through indexes. Zero AI dependencies.
Documentation
# dbmd-core — the db.md reference library.
#
# Owns ALL toolkit logic: parsing, store walk, graph, validation, stats,
# query, render, summary composition, index maintenance, and the log.
# Zero AI/LLM dependencies; no embeddings/vectors/ANN; embedded ripgrep
# via the `grep` + `ignore` crates (never a bundled `rg`, never shelling
# out). Every dependency is permissive — MIT / Apache-2.0 / BSD-2/3-Clause+0BSD
# / Unlicense / MPL-2.0 / Zlib / Unicode-3.0 — and is recorded in
# /THIRD_PARTY_NOTICES. No GPL/AGPL/LGPL-static.

[package]
name = "dbmd-core"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
readme = "README.md"
description = "Reference library for db.md, the open standard for databases in plain files. Parsing, store walk, wiki-link graph, validation, query, and write-through indexes. Zero AI dependencies."

[dependencies]
serde = { workspace = true }
serde_json = { workspace = true }
serde_norway = { workspace = true }
regex = { workspace = true }
grep = { workspace = true }
ignore = { workspace = true }
walkdir = { workspace = true }
globset = { workspace = true }
# Unicode NFC normalization for the wiki-link edge comparison key (graph
# matching). Deterministic Unicode algorithm — zero AI/LLM, zero embeddings.
# MIT OR Apache-2.0; recorded in THIRD_PARTY_NOTICES.
unicode-normalization = { workspace = true }
chrono = { workspace = true }
thiserror = { workspace = true }
# SHA-256 content hashing for the asset manifest (`assets` module). Deterministic,
# zero AI/LLM; recorded in THIRD_PARTY_NOTICES.
sha2 = { workspace = true }
libc = { workspace = true }
# Document text extraction adapters (`extract` module). Deterministic format
# decoders — zero AI/LLM, zero embeddings. All MIT; recorded in THIRD_PARTY_NOTICES.
pdf-extract = { workspace = true }
calamine = { workspace = true }
html2text = { workspace = true }
quick-xml = { workspace = true }
zip = { workspace = true }
crc32fast = { workspace = true }
# The link.md client transport (`linkmd` module, feature `link`). Optional so
# a format-only consumer can drop the HTTP/TLS closure with
# `default-features = false`; the `dbmd` binary ships with it on.
ureq = { workspace = true, optional = true }
url = { workspace = true, optional = true }
base64 = { workspace = true, optional = true }
ring = { workspace = true, optional = true }

[target.'cfg(windows)'.dependencies]
# Native capability-style traversal: hold directory handles without delete
# sharing, reject reparse points, lock with LockFileEx, and publish with
# MoveFileExW write-through. MIT OR Apache-2.0.
windows-sys = { version = "0.61", features = [
  "Win32_Foundation",
  "Win32_Security",
  "Win32_Storage_FileSystem",
  "Win32_System_IO",
] }

[features]
# `link` = the link.md client verbs (resolve / sync / grant / propose /
# subscribe) — the `linkmd` module and its HTTP transport. Default-on so the
# shipped `dbmd` binary and `cargo test --workspace` cover it; library
# consumers who want only the db.md FORMAT toolkit opt out with
# `default-features = false` (the store never needs link.md to be valid db.md).
default = ["link"]
link = ["dep:ureq", "dep:url", "dep:base64", "dep:ring"]

[dev-dependencies]
tempfile = { workspace = true }
insta = { workspace = true }