wowlab_engine_adapter_data/lib.rs
1//! Resolver adapters for the simulation engine's game-data port.
2//!
3//! ```
4//! use wowlab_types::data::SpellDataFlat;
5//! use wowlab_engine_adapter_data::{InMemoryResolver, OverlayResolver};
6//!
7//! let base = InMemoryResolver::new().with_spell(SpellDataFlat {
8//! id: 42,
9//! ..SpellDataFlat::default()
10//! });
11//! let resolver = OverlayResolver::new(base).with_rotation_script("example", "actions=wait");
12//!
13//! assert!(format!("{resolver:?}").contains("OverlayResolver"));
14//! ```
15//!
16//! ```
17//! use wowlab_engine_adapter_data::LocalCsvResolver;
18//!
19//! let resolver = LocalCsvResolver::new("/path/to/wowlab-data");
20//! assert!(format!("{resolver:?}").contains("LocalCsvResolver"));
21//! ```
22//!
23//! The superseded constructor alias is intentionally unavailable:
24//!
25//! ```compile_fail
26//! use wowlab_engine_adapter_data::create_local_resolver;
27//!
28//! let _resolver = create_local_resolver("/path/to/wowlab-data");
29//! ```
30
31#![expect(
32 clippy::multiple_crate_versions,
33 reason = "the workspace's optional native and wasm resolver stacks currently select parallel transitive versions"
34)]
35
36mod bridge;
37mod in_memory;
38mod local;
39mod lookup_key;
40#[cfg(feature = "supabase")]
41mod remote;
42mod rows;
43
44#[cfg(all(target_arch = "wasm32", feature = "wasm"))]
45pub use bridge::JsResolver;
46pub use bridge::OverlayResolver;
47pub use in_memory::InMemoryResolver;
48pub use local::LocalCsvResolver;
49#[cfg(feature = "supabase")]
50pub use remote::{CacheError, CacheOperation, GameDataCache, SupabaseResolver};
51pub use wowlab_engine_ports::{DataResolver, ResolverError, SpellSearchResult};
52
53#[cfg(test)]
54mod tests;