imap-codec 1.0.0

Rock-solid and complete codec for IMAP
Documentation
[package]
name = "imap-codec"
description = "Rock-solid and complete codec for IMAP"
keywords = ["email", "imap", "codec", "parser"]
categories = ["email", "parser-implementations", "encoding", "network-programming"]
version = "1.0.0"
authors = ["Damian Poddebniak <poddebniak@mailbox.org>"]
repository = "https://github.com/duesee/imap-codec"
license = "MIT OR Apache-2.0"
edition = "2021"

[features]
default = ["quirk_rectify_numbers", "quirk_missing_text"]

# <Forward to imap-types>
arbitrary = ["imap-types/arbitrary"]
bounded-static = ["dep:bounded-static", "imap-types/bounded-static"]
serde = ["dep:serde", "chrono/serde", "imap-types/serde"]

# IMAP
starttls = ["imap-types/starttls"]

# IMAP Extensions
ext_condstore_qresync = ["imap-types/ext_condstore_qresync"]
ext_login_referrals = ["imap-types/ext_login_referrals"]
ext_mailbox_referrals = ["imap-types/ext_mailbox_referrals"]
# </Forward to imap-types>

# IMAP quirks
#
# These features bypass interoperability issues to allow safe processing of *almost* correct message.
# 
# Make `\r` in `\r\n` optional.
quirk_crlf_relaxed = []
# 
# Rectify (invalid) numbers.
# Observed in ...
# * Dovecot (`-1`)
quirk_rectify_numbers = []
# Add missing `text` by adding [" "] "<missing text>".
# Observed in ...
# * Gmail `* OK [HIGHESTMODSEQ <n>]\r\n`
quirk_missing_text = []

[dependencies]
abnf-core = "0.6.0"
base64 = "0.21"
bounded-static = { version = "0.5.0", optional = true }
chrono = { version = "0.4", default-features = false, features = ["alloc"] }
imap-types = { version = "1.0.0", default-features = false, features = ["unvalidated"] }
nom = "7"
serde = { version = "1", features = ["derive"], optional = true }
thiserror = "1.0.29"
log = "0.4.19"

[dev-dependencies]
criterion = "0.5.1"
# Make `cargo +nightly -Z minimal-versions update` work.
regex = "1.5.3"

[[bench]]
name = "serialize_command"
harness = false

[[bench]]
name = "serialize_response"
harness = false

[[bench]]
name = "parse_command"
harness = false

[[bench]]
name = "parse_response"
harness = false

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]