[package]
name = "logins"
edition = "2021"
version = "0.1.0"
authors = ["Thom Chiovoloni <tchiovoloni@mozilla.com>"]
license = "MPL-2.0"
exclude = ["/android", "/ios"]

[features]
default = []
# Enables `NSSKeyManager`, which stores the logins encryption key in NSS's
# `key4.db` (wrapped with a key derived from the primary password, if set).
# Used on Desktop to integrate with the existing NSS key store and primary
# password flow.
keydb = ["nss-as/keydb", "dep:async-trait", "dep:futures"]
# Allows logins with empty passwords to be imported. Used on Desktop during
# migration to accept existing logins that have empty passwords.
allow_empty_passwords = []
# Runs URL validation and fixup for the `form_action_origin` field, but ignores
# errors, allowing non-URL values (e.g. "email", "UserCode") that exist in some
# Desktop databases to be saved regardless.
ignore_form_action_origin_validation_errors = []
# Repairs `origin` values that fail URL parsing (bare domains, FireFTP quirks,
# bare `https:` / `https://`, etc.) into parseable URLs instead of rejecting
# them. Scoped to the `origin` field; `form_action_origin` keeps the stricter
# behavior. Used on Desktop during migration to salvage legacy/addon-generated
# entries that would otherwise be lost.
perform_additional_origin_fixups = []

[dependencies]
sync15 = { path = "../sync15" }
serde = "1"
serde_derive = "1"
serde_json = "1"
parking_lot = ">=0.11,<=0.12"
lazy_static = "1.4"
url = "2.2"
sql-support = { path = "../support/sql" }
jwcrypto = { path = "../support/jwcrypto" }
nss-as = { path = "../support/rc_crypto/nss", default-features = false }
interrupt-support = { path = "../support/interrupt" }
error-support = { path = "../support/error" }
rusqlite = { version = "0.37.0", features = ["limits", "unlock_notify"] }
sync-guid = { path = "../support/guid", features = ["rusqlite_support", "random"] }
thiserror = "2"
anyhow = "1.0"
uniffi = { version = "0.31" }
async-trait = { version = "0.1", optional = true }
futures = { version = "0.3", optional = true, features = ["executor"] }

[build-dependencies]
uniffi = { version = "0.31", features = ["build"] }

[dev-dependencies]
error-support = { path = "../support/error", features = ["testing"] }
tempfile = "3.2.0"
nss-as = { path = "../support/rc_crypto/nss" }
