dfe 0.7.1

DFE - Documentos Fiscais Eletrônicos Brasileiros
Documentation
[package]

name = "dfe"

version = "0.7.1"

edition = "2021"

description = "DFE - Documentos Fiscais Eletrônicos Brasileiros"

license = "MIT"

readme = "README.md"

keywords = ["rust", "nfe", "dfe"]

categories = ["api-bindings", "parsing"]



homepage = "https://github.com/GustavoOta/dfe"

repository = "https://github.com/GustavoOta/dfe"



exclude = [

    "dfe/manuais_sefaz/**",

    "dfe/shema/**",

    "dfe/thirdparty/**",

    "docs/**",

    "distribuicao-logs/**",

    "testes/**",

    ".claude/**",

    ".vscode/**",

    "sample55.xml",

    "sample65.xml"

]



[package.metadata.docs.rs]

targets = ["x86_64-unknown-linux-gnu"]

rustdoc-args = ["--cfg", "docsrs"]



[package.metadata.vcpkg]

git = "https://github.com/microsoft/vcpkg"

branch = "master"

install = ["libxml2"]



[package.metadata.vcpkg.target]

x86_64-pc-windows-msvc = { triplet = "x64-windows-static", install = ["libxml2"] }



[profile.release]

debug = false



[features]

# Opt-out: `default` liga tudo → consumidores atuais (gravisServer/gravis-pdv) não mudam.

# Desligar `danfe`+`escpos` dropa a stack de renderização (printpdf/image/barcoders/qrcodegen/font8x8);

# desligar `distribuicao` dropa flate2. Ver planning/ARQUITETURA_REFACTOR.md §A8.

default = ["danfe", "escpos", "distribuicao"]

# DANFE em PDF (NF-e A4/80mm, NFC-e 80mm).

danfe = ["dep:printpdf", "dep:image", "dep:barcoders", "dep:qrcodegen"]

# Impressão via ESC/POS (cupom).

escpos = ["dep:font8x8", "dep:image", "dep:barcoders", "dep:qrcodegen"]

# Distribuição de DF-e (AN) + manifestação do destinatário (fluxo inbound; gzip via flate2).

distribuicao = ["dep:flate2"]

# Liga a camada de testes que bate na SEFAZ (homologação). Fora do `cargo test` padrão.

sefaz-live = []



[dev-dependencies]

# Golden/snapshot dos XMLs no refactor — só em `cargo test`, não vai no binário do consumidor.

# feature `filters`: redação por regex de campos voláteis (dhEvento, idLote, SignatureValue).

insta = { version = "1", features = ["filters"] }

# Carrega .env nos testes gated (camada sefaz-live) — dev-only, como o insta.

dotenvy = "0.15"



[dependencies]

base64 = "0.22.1"

barcoders = { version = "2.0.0", optional = true }

chrono = "0.4.38"

chrono-tz = "0.10.0"

flate2 = { version = "1.0", optional = true }

font8x8 = { version = "0.2", optional = true }

hex = "0.4.3"

image = { version = "0.24", default-features = false, features = ["png", "jpeg"], optional = true }

libxml = "=0.3.3"

printpdf = { version = "0.7.0", optional = true }

quick-xml = { version = "0.37.1", features = ["encoding", "serialize"] }

qrcodegen = { version = "1.8", optional = true }

rand = "0.8.5"

regex = "1.11.1"

reqwest = { version = "0.12.9", features = ["native-tls", "json", "gzip", "blocking"] }

rust_decimal = "1.38.0"

serde = { version = "1.0.215", features = ["derive"] }

serde_json = "1.0.133"

sha1 = "0.10.6"

sha2 = "0.10.8"

tokio = { version = "1.41.1", features = ["full"] }



[target.'cfg(target_os = "windows")'.dependencies]

windows-sys = { version = "0.61", features = ["Win32_Security_Cryptography", "Win32_Foundation", "Win32_Graphics_Printing", "Win32_Graphics_Gdi", "Win32_System_Time"] }