content: [package]
  name          = "ohkami"
  description   = "A performant, declarative, and runtime-flexible web framework for Rust"
  documentation = "https://docs.rs/ohkami"
  version       = { workspace = true }
  edition       = { workspace = true }
  authors       = { workspace = true }
  homepage      = { workspace = true }
  repository    = { workspace = true }
  readme        = { workspace = true }
  keywords      = { workspace = true }
  categories    = { workspace = true }
  license       = { workspace = true }
  
  [package.metadata.docs.rs]
  features = ["rt_tokio", "nightly", "sse", "ws", "tls"]
  
  [lints]
  workspace = true
  
  [dependencies]
  # workspace members
  ohkami_lib     = { version = "=0.24.1", path = "../ohkami_lib" }
  ohkami_macros  = { version = "=0.24.1", path = "../ohkami_macros" }
  ohkami_openapi = { optional = true, version = "=0.24.1", path = "../ohkami_openapi" }
  
  # workspace dependencies
  byte_reader = { workspace = true }
  serde       = { workspace = true }
  serde_json  = { workspace = true }
  
  # runtimes
  tokio          = { version = "1",    optional = true }
  smol           = { version = "2",    optional = true }
  nio            = { version = "0.0",  optional = true }
  glommio        = { version = "0.9",  optional = true }
  monoio         = { version = "0.2",  optional = true, features = ["signal"] }
  monoio-compat  = { version = "0.2",  optional = true }
  compio         = { version = "0.16", optional = true, features = ["io-compat", "time"] }
  worker         = { version = "0.6",  optional = true }
  lambda_runtime = { version = "0.14", optional = true }
  
  # encoding / crypto
  base64 = { version = "0.22" }
  hmac   = { version = "0.12", default-features = false }
  sha2   = { version = "0.10", default-features = false }
  uuid   = { version = "1.17" }
  
  # optional
  mime_guess   = { version = "2.0", optional = true }
  ctrlc        = { version = "3.4",  optional = true }
  num_cpus     = { version = "1.17", optional = true }
  futures-util = { version = "0.3",  optional = true, default-features = false }
  mews         = { version = "0.5",  optional = true }
  rustls       = { version = "0.23", optional = true }
  anysc-rustls = { version = "0.1", optional = true }
  
  
  [features]
  rt_tokio = ["__rt_native__", "__rt_threaded__", "__io_tokio__",
      "dep:tokio","tokio/rt","tokio/net","tokio/time",
  ]
  rt_smol = ["__rt_native__", "__rt_threaded__", "__io_futures__",
      "dep:smol",
  ]
  rt_nio = ["__rt_native__", "__rt_threaded__", "__io_tokio__",
      "dep:nio",
  ]
  rt_glommio = ["__rt_native__", "__io_futures__",
      "dep:glommio",
      "dep:num_cpus",
  ]
  rt_monoio = ["__rt_native__", "__io_tokio__",
      "dep:monoio",
      "dep:monoio-compat",
  ]
  rt_compio = ["__rt_native__", "__io_futures__",
      "dep:compio",
  ]
  rt_worker = ["__rt__",
      "dep:worker", "worker/d1", "worker/queue",
      "ohkami_macros/worker",
  ]
  rt_lambda = ["__rt__", "__rt_threaded__",
      "dep:lambda_runtime",
      "dep:tokio", "tokio/rt", # lambda_runtime internally depends on tokio runtime
      "ohkami_lib/stream",     # lambda_runtime's interface always requires stream
  ]
  nightly = []
  openapi = ["dep:ohkami_openapi", "ohkami_macros/openapi"]
  sse     = ["ohkami_lib/stream"]
  ws      = ["ohkami_lib/stream", "dep:mews", "dep:futures-util", "futures-util/io", "futures-util/unstable","futures-util/bilock"]
  tls     = ["dep:rustls", "dep:anysc-rustls"]
  
  ##### internal #####
  __rt__          = []
  __rt_threaded__ = ["__rt__"]
  __rt_native__   = ["__rt__", "dep:mime_guess", "dep:ctrlc"]
  __io_tokio__    = ["dep:tokio","tokio/io-util", "mews?/io_tokio", "anysc-rustls?/io_tokio"]
  __io_futures__  = ["dep:futures-util","futures-util/io", "mews?/io_futures", "anysc-rustls?/io_futures"]
  
  ##### DEBUG #####
  DEBUG = ["tokio?/rt-multi-thread", "tokio?/macros"]
  #default = [
  #    "nightly",
  #    "openapi",
  #    "sse",
  #    "ws",
  #    "tls",
  #    "rt_tokio",
  #    #"rt_smol",
  #    #"rt_nio",
  #    #"rt_glommio",
  #    #"rt_worker",
  #    "DEBUG",
  #]
  
  
  [dev-dependencies] # for doc test
  sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "macros"] }
  rustls = { version = "0.23", features = ["ring"] }
  rustls-pemfile = { version = "2.2" }
  