Files
portal/Cargo.toml
T
Bendik Aagaard LynghaugandClaude Fable 5 a0305282ef
Test / test (push) Successful in 24s
Revalidating cache on app assets; site title survives SPA navigation
pkg files keep stable names across releases, so an uncontrolled
browser cache could pair last release's wasm with the new server's
server-fn wire format - every page then renders its error branch
(redoal.com's 'Nothing here' after v0.2.0). Cache-Control: no-cache
on /pkg and /yes.js makes clients revalidate (a 304 per load) instead
of guessing. The content-declared site title also moves out of the
question Suspense: remounting with each navigation lost the
leptos_meta race to the compile-time fallback, flipping redoal.com's
tab to 'uhhm' on the first client-side nav.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 22:40:29 +02:00

143 lines
4.1 KiB
TOML

[package]
name = "portal"
version = "0.2.0"
edition = "2021"
[lib]
crate-type = ["cdylib", "rlib"]
[dependencies]
leptos = { version = "0.8" }
leptos_meta = { version = "0.8" }
leptos_router = { version = "0.8" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# --- server only ---
leptos_axum = { version = "0.8", optional = true }
axum = { version = "0.8", features = ["multipart"], optional = true }
aws-sdk-s3 = { version = "1", optional = true }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "signal"], optional = true }
tower = { version = "0.5", optional = true }
tower-http = { version = "0.6", features = ["fs", "set-header"], optional = true }
tower-sessions = { version = "0.14", optional = true }
async-nats = { version = "0.38", optional = true }
arc-swap = { version = "1", optional = true }
url = { version = "2", optional = true }
serde_yaml = { version = "0.9", optional = true }
sha2 = { version = "0.10", optional = true }
openidconnect = { version = "4", optional = true }
# For pulling the `groups` custom claim out of the already-verified ID
# token's raw JWT payload - see server/oidc.rs::extract_groups_claim.
base64 = { version = "0.22", optional = true }
chrono = { version = "0.4", features = ["serde"], optional = true }
uuid = { version = "1", features = ["v4", "serde"], optional = true }
dotenvy = { version = "0.15", optional = true }
anyhow = { version = "1", optional = true }
futures = { version = "0.3", optional = true }
tracing = { version = "0.1", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter"], optional = true }
# jq-filter evaluation for ResourceSource's optional `jq` field
# (src/resource.rs) - pure Rust, no shell-out to a `jq` binary.
jaq-core = { version = "3", optional = true }
jaq-std = { version = "3", optional = true }
jaq-json = { version = "2", features = ["sync"], optional = true }
# --- browser only ---
wasm-bindgen = { version = "0.2", optional = true }
wasm-bindgen-futures = { version = "0.4", optional = true }
js-sys = { version = "0.3", optional = true }
console_error_panic_hook = { version = "0.1", optional = true }
web-sys = { version = "0.3", features = [
"Blob",
"File",
"FileList",
"FormData",
"HtmlInputElement",
"Request",
"RequestInit",
"Response",
"Window",
], optional = true }
[features]
default = []
hydrate = [
"leptos/hydrate",
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"dep:js-sys",
"dep:console_error_panic_hook",
"dep:web-sys",
]
ssr = [
"leptos/ssr",
"leptos_meta/ssr",
"leptos_router/ssr",
"dep:leptos_axum",
"dep:axum",
"dep:aws-sdk-s3",
"dep:tokio",
"dep:tower",
"dep:tower-http",
"dep:tower-sessions",
"dep:async-nats",
"dep:arc-swap",
"dep:url",
"dep:serde_yaml",
"dep:sha2",
"dep:openidconnect",
"dep:base64",
"dep:chrono",
"dep:uuid",
"dep:dotenvy",
"dep:anyhow",
"dep:futures",
"dep:tracing",
"dep:tracing-subscriber",
"dep:jaq-core",
"dep:jaq-std",
"dep:jaq-json",
]
[dev-dependencies]
proptest = "1"
[[bin]]
name = "question_lint"
path = "src/bin/question_lint.rs"
required-features = ["ssr"]
[profile.wasm-release]
inherits = "release"
opt-level = 'z'
lto = true
codegen-units = 1
[package.metadata.leptos]
output-name = "portal"
# Disambiguates the app binary from the utility [[bin]] target
# (question_lint) added alongside it - cargo-leptos otherwise can't
# tell which of the two is "the" server.
bin-target = "portal"
site-root = "target/site"
site-pkg-dir = "pkg"
style-file = "style/main.css"
assets-dir = "public"
site-addr = "127.0.0.1:3010"
reload-port = 3011
bin-features = ["ssr"]
bin-default-features = false
lib-features = ["hydrate"]
lib-default-features = false
lib-profile-release = "wasm-release"
# cargo release <level> is how a portal version is cut: bump, commit,
# tag v{{version}}, push. CI (publish.yml) reacts to the tag and
# publishes the release artifact; nothing on crates.io.
[package.metadata.release]
publish = false
push = true
tag-name = "v{{version}}"
pre-release-commit-message = "Release {{version}}"