mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00

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.
108 lines
2.6 KiB
TOML
108 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"]
|