Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
99 lines (83 loc) · 3.19 KB
/
Copy pathCargo.toml
File metadata and controls
99 lines (83 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Markkit – Extract markdown from any format
# Workspace root
[workspace]
resolver = "2"
members = [
"crates/markkit",
"crates/markkit-cli",
"crates/markkit-bench",
"crates/markkit-eval",
"crates/markkit-python",
"crates/markkit-js",
"crates/markkit-wasm",
]
[workspace.package]
version = "0.3.1"
edition = "2024"
license = "MIT"
authors = ["Everruns <oss@everruns.com>"]
repository = "https://github.com/everruns/markkit"
keywords = ["markdown", "extraction", "conversion", "html", "pdf"]
categories = ["text-processing", "command-line-utilities", "parser-implementations"]
[workspace.dependencies]
# Async
tokio = { version = "1", default-features = false }
# Error handling
thiserror = "2"
anyhow = "1"
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# CLI
# Default features off (no color, no did-you-mean suggestions) to match
# bashkit's clap set: bashkit embeds this CLI as a builtin and clap features
# unify, so color/suggestions here would change output on both sides.
clap = { version = "4", default-features = false, features = ["derive", "std", "help", "usage", "error-context"] }
# HTTP
reqwest = { version = "0.13", default-features = false, features = ["rustls", "json"] }
# HTML parsing
url = "2"
scraper = "0.29"
ego-tree = "0.11"
schemars = "1"
html5ever = "0.40"
# Document formats
calamine = "0.38" # Excel/spreadsheet (XLSX/XLS/ODS)
zip = { version = "9", default-features = false, features = ["deflate"] } # OOXML/ODF containers; matches calamine's zip
quick-xml = "0.42" # DOCX/ODS XML parsing
cfb = "0.16" # XLS (OLE2) container pre-scan
hayro-syntax = { version = "0.8", default-features = false, features = ["std"] } # PDF object/content parsing; OCR also enables image decoding
hayro = { version = "0.8", default-features = false, features = ["embed-fonts", "embed-cmaps"] }
ocrs = { version = "0.13.1", default-features = false, features = ["onnx"] }
rten = { version = "0.26", default-features = false, features = ["onnx_format"] }
miniz_oxide = "0.9" # Bounded FlateDecode for PDF streams
pulldown-cmark = { version = "0.13", default-features = false } # Markdown input; output-safety test oracle
mail-parser = { version = "0.11", default-features = false } # EML input (RFC 5322 / MIME)
# Logging
tracing = "0.1"
# LLM tool contract (markkit `tool` feature)
tower = { version = "0.5", default-features = false, features = ["util"] }
futures-core = "0.3"
base64 = "0.23"
# Python bindings
pyo3 = { version = "0.30" }
pyo3-async-runtimes = { version = "0.30", features = ["tokio-runtime"] }
# Node.js bindings
napi = { version = "3", features = ["async", "serde-json"] }
napi-derive = "3"
# Testing
tempfile = "3"
criterion = { version = "0.8", features = ["html_reports"] }
proptest = "1"
[profile.release]
lto = "thin"
codegen-units = 1
# Unwind (not abort): `extract_document` wraps third-party parsers in
# `catch_unwind`, and PyO3/NAPI turn panics into exceptions. Abort would let one
# malformed document kill the CLI or the host Python/Node process.
panic = "unwind"
strip = true
# Browser bundle (crates/markkit-wasm/scripts/build.sh): size over speed.
[profile.wasm-release]
inherits = "release"
opt-level = "z"