Fuaran.UI.Giraffe
0.12.0
Prefix Reserved
See the version list below for details.
dotnet add package Fuaran.UI.Giraffe --version 0.12.0
NuGet\Install-Package Fuaran.UI.Giraffe -Version 0.12.0
<PackageReference Include="Fuaran.UI.Giraffe" Version="0.12.0" />
<PackageVersion Include="Fuaran.UI.Giraffe" Version="0.12.0" />
<PackageReference Include="Fuaran.UI.Giraffe" />
paket add Fuaran.UI.Giraffe --version 0.12.0
#r "nuget: Fuaran.UI.Giraffe, 0.12.0"
#:package Fuaran.UI.Giraffe@0.12.0
#addin nuget:?package=Fuaran.UI.Giraffe&version=0.12.0
#tool nuget:?package=Fuaran.UI.Giraffe&version=0.12.0
Fuaran.UI.Giraffe
Thin SSR host-integration adapter for Giraffe / ASP.NET (Phase 162). The
Wave-18 server stack (Fuaran.UI.Renderer.Server) emits the body fragment for
a Node tree; this package supplies the last mile — the document shell, the
page HttpHandler plumbing, and a render-cache seam — so a consumer stops
hand-rolling the same boilerplate.
open Fuaran.UI.Giraffe
// Register once (binding sources, server Custom registry, optional theme, cache).
let opts =
{ FuaranGiraffeOptions.create with
Theme = Some Fuaran.UI.Defaults.theme
Cache = RenderCache.inMemory () }
// A crawlable page in one HttpHandler call.
let shell =
{ DocumentShell.create "Pricing — Acme" with
MetaDescription = Some "Simple, transparent pricing."
Canonical = Some "https://acme.example/pricing"
OpenGraph = [ "og:title", "Pricing — Acme"; "og:type", "website" ]
JsonLd = [ """{"@context":"https://schema.org","@type":"Product","name":"Acme"}""" ]
Stylesheets = [ "/fuaran-reference.css" ] }
let webApp =
choose
[ route "/pricing" >=> fuaranPage opts shell pricingTree
route "/pricing/fragment" >=> fuaranFragment opts pricingTree
route "/app" >=> fuaranHydratablePage opts shell appTree ]
What you get
| Handler | Emits |
|---|---|
fuaranPage opts shell node |
A full <!DOCTYPE html> crawlable document, static SSR, no client runtime. |
fuaranHydratablePage opts shell node |
The document + the Phase 143 hydrate <script> payload, so the client hydrateRoot mount attaches. |
fuaranIslandsPage opts shell node |
Static document with islands (Phase 163) — per-Node.asIsland subtree, a data-fuaran-island boundary + an embedded hydrate <script>; everything else inert static HTML. |
fuaranFragment opts node |
The body fragment only (no shell) — for HTMX-style swaps / host-composed responses. |
Every response carries a deterministic strong ETag (SHA-256 over the
canonical tree wire-form + theme CSS + shell signature) and honours
If-None-Match → 304 Not Modified without re-rendering. A host-supplied
IFuaranRenderCache is consulted before render and populated after — the
default RenderCache.none is a zero-cost pass-through.
Document shell
DocumentShell is host-authored but library-shaped: you own the head
content (title, meta description, canonical, Open Graph / Twitter cards,
JSON-LD, stylesheet + script refs); the wrapper plumbing is the library's.
Injection safety follows SANITIZATION.md: text fields HTML-escape via
Feliz.ViewEngine; URL fields route through Renderer.Sanitize.sanitizeUrlOrBlank
(a javascript: href becomes about:blank); JSON-LD is the one sanctioned
raw-JSON injection point (host-trusted) and is </>/&-escaped for
<script> embedding so it cannot break out of the element.
Giraffe isolation
Giraffe is a dependency of this package only. The language tier and
Renderer.Server stay Giraffe-free; this adapter composes with (does not depend
on) Fuaran.UI.ServerDriven.AspNetCore's live endpoints.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Fable.Core (>= 5.0.0)
- Feliz.ViewEngine (>= 1.0.3)
- FSharp.Core (>= 10.1.300)
- Fuaran.Core.Column (>= 0.2.1)
- Fuaran.Core.DataFrame (>= 0.2.1)
- Fuaran.Core.Function (>= 0.2.1)
- Fuaran.Core.Ops (>= 0.2.1)
- Fuaran.Core.OpStream (>= 0.2.1)
- Fuaran.Core.Tree (>= 0.2.1)
- Fuaran.Core.Validator (>= 0.2.1)
- Fuaran.Core.Wire (>= 0.2.1)
- Fuaran.UI (>= 0.12.0)
- Fuaran.UI.OpStream.Abstractions (>= 0.12.0)
- Fuaran.UI.Renderer.Core (>= 0.12.0)
- Fuaran.UI.Renderer.Server (>= 0.12.0)
- Giraffe (>= 8.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.39.0 | 0 | 8/27/2026 |
| 0.35.0 | 44 | 8/24/2026 |
| 0.32.0 | 46 | 8/23/2026 |
| 0.31.0 | 52 | 8/21/2026 |
| 0.30.0 | 56 | 8/21/2026 |
| 0.29.0 | 97 | 8/19/2026 |
| 0.28.0 | 84 | 8/18/2026 |
| 0.27.0 | 91 | 8/18/2026 |
| 0.26.0 | 87 | 8/18/2026 |
| 0.18.0 | 93 | 8/10/2026 |
| 0.15.0 | 88 | 8/9/2026 |
| 0.12.0 | 103 | 7/31/2026 |
| 0.11.0 | 96 | 7/30/2026 |
| 0.10.0 | 109 | 7/29/2026 |
| 0.6.0 | 96 | 7/27/2026 |
| 0.4.0 | 104 | 7/26/2026 |
| 0.3.0 | 111 | 7/24/2026 |