[package] name = "runway-core" version.workspace = true edition.workspace = true license.workspace = true description = "Pure calendar domain: RFC 5545 model, iCalendar round-trip, recurrence expansion." [features] default = ["model"] # Types only. Wasm-safe, dependency-light: this is all the frontend needs. model = [] # iCalendar parsing/serialisation. Server and CLI only. ical = ["dep:icalendar"] # RRULE expansion. Server and CLI only. recurrence = ["dep:rrule", "dep:chrono-tz"] [dependencies] chrono = { workspace = true } serde = { workspace = true } thiserror = { workspace = true } uuid = { workspace = true } chrono-tz = { workspace = true, optional = true } icalendar = { workspace = true, optional = true } rrule = { workspace = true, optional = true } # On wasm there is no OS entropy source, so uuid needs to be pointed at the # browser's crypto API explicitly. Without this the frontend cannot compile the # shared model at all -- worth catching in CI, not at deploy time. [target.'cfg(target_arch = "wasm32")'.dependencies] uuid = { workspace = true, features = ["js"] } [dev-dependencies] serde_json = { workspace = true } pretty_assertions = { workspace = true } # Turns the optional features on for the test build only, so `cargo test` covers # the iCalendar layer without the frontend's default build ever pulling it in. runway-core = { path = ".", features = ["ical", "recurrence"] } [lints] workspace = true