b73cb15888
The approach in #2542 unfortunately introduced a regression, as whilst it ensured that duplicate keys are removed when downgrading, it no longer prevented the duplicates from being removed when converting to a legacy Schema11 object. This resulted in things like backend.get_notetype_legacy() returning duplicate keys, and could break syncing: https://forums.ankiweb.net/t/windows-desktop-sync-error/33128 As syncing and schema11 object usage is quite common compared to downgrading, the extra Value deserialization seemed a bit expensive, so I've switched back to explicitly removing the problem keys. To ensure we don't forget to add new keys in the future, I've added some new tests that should alert us whenever a newly-added key is missing from the reserved list.
109 lines
2.6 KiB
TOML
109 lines
2.6 KiB
TOML
[package]
|
|
name = "anki"
|
|
version.workspace = true
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
publish = false
|
|
rust-version.workspace = true
|
|
workspace = ".."
|
|
description = "Anki's Rust library code"
|
|
|
|
[features]
|
|
bench = ["criterion"]
|
|
rustls = ["reqwest/rustls-tls", "reqwest/rustls-tls-native-roots"]
|
|
native-tls = ["reqwest/native-tls"]
|
|
|
|
[[bench]]
|
|
name = "benchmark"
|
|
harness = false
|
|
required-features = ["bench"]
|
|
|
|
[build-dependencies]
|
|
anki_io.workspace = true
|
|
anki_proto.workspace = true
|
|
anki_proto_gen.workspace = true
|
|
anyhow.workspace = true
|
|
inflections.workspace = true
|
|
itertools.workspace = true
|
|
prettyplease.workspace = true
|
|
prost.workspace = true
|
|
prost-reflect.workspace = true
|
|
syn.workspace = true
|
|
|
|
[dev-dependencies]
|
|
async-stream.workspace = true
|
|
wiremock.workspace = true
|
|
|
|
[dependencies]
|
|
criterion = { workspace = true, optional = true }
|
|
|
|
ammonia.workspace = true
|
|
anki_i18n.workspace = true
|
|
anki_io.workspace = true
|
|
anki_proto.workspace = true
|
|
async-compression.workspace = true
|
|
async-trait.workspace = true
|
|
axum.workspace = true
|
|
axum-client-ip.workspace = true
|
|
blake3.workspace = true
|
|
bytes.workspace = true
|
|
chrono.workspace = true
|
|
coarsetime.workspace = true
|
|
convert_case.workspace = true
|
|
csv.workspace = true
|
|
data-encoding.workspace = true
|
|
difflib.workspace = true
|
|
dirs.workspace = true
|
|
envy.workspace = true
|
|
flate2.workspace = true
|
|
fluent.workspace = true
|
|
fluent-bundle.workspace = true
|
|
fnv.workspace = true
|
|
futures.workspace = true
|
|
hex.workspace = true
|
|
htmlescape.workspace = true
|
|
hyper.workspace = true
|
|
id_tree.workspace = true
|
|
itertools.workspace = true
|
|
lazy_static.workspace = true
|
|
nom.workspace = true
|
|
num_cpus.workspace = true
|
|
num_enum.workspace = true
|
|
once_cell.workspace = true
|
|
percent-encoding-iri.workspace = true
|
|
phf.workspace = true
|
|
pin-project.workspace = true
|
|
prost.workspace = true
|
|
pulldown-cmark.workspace = true
|
|
rand.workspace = true
|
|
regex.workspace = true
|
|
reqwest.workspace = true
|
|
rusqlite.workspace = true
|
|
scopeguard.workspace = true
|
|
serde.workspace = true
|
|
serde-aux.workspace = true
|
|
serde_json.workspace = true
|
|
serde_repr.workspace = true
|
|
serde_tuple.workspace = true
|
|
sha1.workspace = true
|
|
snafu.workspace = true
|
|
strum.workspace = true
|
|
tempfile.workspace = true
|
|
tokio.workspace = true
|
|
tokio-util.workspace = true
|
|
tower-http.workspace = true
|
|
tracing.workspace = true
|
|
tracing-appender.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
unic-ucd-category.workspace = true
|
|
unicase.workspace = true
|
|
unicode-normalization.workspace = true
|
|
utime.workspace = true
|
|
zip.workspace = true
|
|
zstd.workspace = true
|
|
|
|
[target.'cfg(windows)'.dependencies.windows]
|
|
version = "0.48.0"
|
|
features = ["Media_SpeechSynthesis", "Foundation_Collections", "Storage_Streams"]
|