[{"data":1,"prerenderedAt":361},["ShallowReactive",2],{"fougere:post.list:{}":3,"reference:\u002Freference\u002Fports":6,"reference-pages":141},{"items":4,"hasMore":5},[],false,{"id":7,"title":8,"body":9,"description":132,"extension":133,"file":134,"meta":135,"navigation":136,"path":137,"seo":138,"stem":139,"__hash__":140},"reference\u002Freference\u002F09.ports.md","Ports Fougere opens",{"type":10,"value":11,"toc":122},"minimark",[12,16,26,34,40,50,56,60,66,72,76,82,88,93,108,114,119],[13,14,8],"h1",{"id":15},"ports-fougere-opens",[17,18,19,20,25],"p",{},"A class that implements one and asks for it stands in front of it; see ",[21,22,24],"a",{"href":23},"\u002Fdocs\u002Fconcepts\u002Fport","Port",".",[27,28,30],"h3",{"id":29},"dispatcher",[31,32,33],"code",{},"Dispatcher",[17,35,36,37],{},"class · ",[31,38,39],{},"@fougere\u002Fcore",[17,41,42,43,45,46,49],{},"Runs every call through the same lifecycle, and the port a link stands in front of.\nEx: ",[31,44,33],{}," for its frond, ",[31,47,48],{},"Dispatcher\u003CPostHandler>"," for that handler.",[27,51,53],{"id":52},"storage",[31,54,55],{},"Storage",[17,57,36,58],{},[31,59,39],{},[17,61,62,63,25],{},"A storage standing in front of another: the base a wrapper extends, forwarding what it does not override.\nEx: ",[31,64,65],{},"class Audit extends Storage { constructor(private inner: Storage) { super(inner); } }",[27,67,69],{"id":68},"logger",[31,70,71],{},"Logger",[17,73,36,74],{},[31,75,39],{},[17,77,78],{},[79,80,81],"em",{},"No sentence yet in the code.",[27,83,85],{"id":84},"rest",[31,86,87],{},"Rest",[17,89,36,90],{},[31,91,92],{},"@fougere\u002Fadapter-rest",[17,94,95,96,99,100,103,104,107],{},"The port REST's links stand in front of; a link throwing before ",[31,97,98],{},"inner.answer"," refuses the request.\nEx: ",[31,101,102],{},"implements Partial\u003CRest>"," for a frond, ",[31,105,106],{},"extends Rest\u003CNoteHandler>"," for a handler.",[27,109,111],{"id":110},"journal",[31,112,113],{},"Journal",[17,115,116,117],{},"interface · ",[31,118,39],{},[17,120,121],{},"What writes a release down while it happens, so a sweep can finish what a stopped process began.",{"title":123,"searchDepth":124,"depth":124,"links":125},"",2,[126,128,129,130,131],{"id":29,"depth":127,"text":33},3,{"id":52,"depth":127,"text":55},{"id":68,"depth":127,"text":71},{"id":84,"depth":127,"text":87},{"id":110,"depth":127,"text":113},"The classes you stand in front of, or extend, to change what the framework does.","md",null,{},true,"\u002Freference\u002Fports",{"title":8,"description":132},"reference\u002F09.ports","gEBP-OekqWYSbCcxYe-sPtVG2NyF1EzVnK7eHiuE5Mk",[142,147,152,157,162,167,172,177,182,183,188,193,198,203,208,213,218,222,227,232,237,242,247,252,257,262,266,271,276,281,286,291,296,301,306,311,316,321,326,331,336,341,346,351,356],{"path":143,"title":144,"description":145,"stem":146},"\u002Freference\u002Fcli","CLI","fougere new, serve, call, sync, graph — composing a workspace, hosting one frond, invoking an operation from a shell.","reference\u002F01.cli",{"path":148,"title":149,"description":150,"stem":151},"\u002Freference\u002Ferrors","Error codes","Every code an operation can refuse with, and its HTTP status.","reference\u002F02.errors",{"path":153,"title":154,"description":155,"stem":156},"\u002Freference\u002Fconfig","fougere.config.ts","Every key the app config admits, and which package answers each one.","reference\u002F03.config",{"path":158,"title":159,"description":160,"stem":161},"\u002Freference\u002Ffrond-config","frond.config.ts","Every key a frond's own config admits.","reference\u002F04.frond-config",{"path":163,"title":164,"description":165,"stem":166},"\u002Freference\u002Fsources","Source types","Every type an entry of sources: may name, and the keys it admits.","reference\u002F05.sources",{"path":168,"title":169,"description":170,"stem":171},"\u002Freference\u002Fprotocols","Protocols","What protocols: may serve, and what each admits.","reference\u002F06.protocols",{"path":173,"title":174,"description":175,"stem":176},"\u002Freference\u002Fstates","State keepers","How state: may keep a caller's values.","reference\u002F07.states",{"path":178,"title":179,"description":180,"stem":181},"\u002Freference\u002Fforms","Forms","The types a frond is written with — each one read by the scan.","reference\u002F08.forms",{"path":137,"title":8,"description":132,"stem":139},{"path":184,"title":185,"description":186,"stem":187},"\u002Freference\u002Finterfaces","Interfaces to extend","The empty interfaces a package augments with declare module, and who augments each.","reference\u002F10.interfaces",{"path":189,"title":190,"description":191,"stem":192},"\u002Freference\u002Fdiagnostics","Boot and check diagnostics","Every code a boot, the scan or fougere check can raise, and what it says.","reference\u002F11.diagnostics",{"path":194,"title":195,"description":196,"stem":197},"\u002Freference\u002Fpackages\u002Fadapter-duckdb","@fougere\u002Fadapter-duckdb","Read across an app's sources — one SQL query over what DuckDB can attach.","reference\u002Fpackages\u002Fadapter-duckdb",{"path":199,"title":200,"description":201,"stem":202},"\u002Freference\u002Fpackages\u002Fadapter-env","@fougere\u002Fadapter-env","The process environment as a source — MEILI_URL read as Meili's url, judged at boot.","reference\u002Fpackages\u002Fadapter-env",{"path":204,"title":205,"description":206,"stem":207},"\u002Freference\u002Fpackages\u002Fadapter-file","@fougere\u002Fadapter-file","Rows as files — one JSON or YAML file per row, in a directory per entity.","reference\u002Fpackages\u002Fadapter-file",{"path":209,"title":210,"description":211,"stem":212},"\u002Freference\u002Fpackages\u002Fadapter-graphql","@fougere\u002Fadapter-graphql","Entity → GraphQL types, inputs and CRUD, through Pothos.","reference\u002Fpackages\u002Fadapter-graphql",{"path":214,"title":215,"description":216,"stem":217},"\u002Freference\u002Fpackages\u002Fadapter-memory","@fougere\u002Fadapter-memory","Rows in a Map — the source a first run meets, and the one that ships no driver.","reference\u002Fpackages\u002Fadapter-memory",{"path":219,"title":92,"description":220,"stem":221},"\u002Freference\u002Fpackages\u002Fadapter-rest","Entity → REST routes.","reference\u002Fpackages\u002Fadapter-rest",{"path":223,"title":224,"description":225,"stem":226},"\u002Freference\u002Fpackages\u002Fadapter-sql","@fougere\u002Fadapter-sql","Entity → SQL tables through Kysely (SQLite, PostgreSQL, MySQL, SQL Server).","reference\u002Fpackages\u002Fadapter-sql",{"path":228,"title":229,"description":230,"stem":231},"\u002Freference\u002Fpackages\u002Fadmin","@fougere\u002Fadmin","A back-office derived from what the app already says it hosts — a react-admin DataProvider over the Fougere wire.","reference\u002Fpackages\u002Fadmin",{"path":233,"title":234,"description":235,"stem":236},"\u002Freference\u002Fpackages\u002Fapp","@fougere\u002Fapp","The host-independent half of a Fougere app: boot, call envelope, REST table, form contract.","reference\u002Fpackages\u002Fapp",{"path":238,"title":239,"description":240,"stem":241},"\u002Freference\u002Fpackages\u002Fauth-better","@fougere\u002Fauth-better","Fougere's auth — a translation layer onto better-auth.","reference\u002Fpackages\u002Fauth-better",{"path":243,"title":244,"description":245,"stem":246},"\u002Freference\u002Fpackages\u002Fcalls","@fougere\u002Fcalls","Optional call log for Fougere: a bounded ring of every dispatch, served as an rpc operation. Read it with `fougere devtools`.","reference\u002Fpackages\u002Fcalls",{"path":248,"title":249,"description":250,"stem":251},"\u002Freference\u002Fpackages\u002Fcli","@fougere\u002Fcli","The Fougere CLI — compose a workspace, serve a frond, call an operation.","reference\u002Fpackages\u002Fcli",{"path":253,"title":254,"description":255,"stem":256},"\u002Freference\u002Fpackages\u002Fcompiler","@fougere\u002Fcompiler","The scan: Fougere reading a project's source to produce the descriptors core boots from. Needs a filesystem and a TypeScript program.","reference\u002Fpackages\u002Fcompiler",{"path":258,"title":259,"description":260,"stem":261},"\u002Freference\u002Fpackages\u002Fcontainer","@fougere\u002Fcontainer","Fougere's DI container: resolution by type, wired from the AST scan. Zero dependencies.","reference\u002Fpackages\u002Fcontainer",{"path":263,"title":39,"description":264,"stem":265},"\u002Freference\u002Fpackages\u002Fcore","The core — scan, call contract, façades, remote stand-ins.","reference\u002Fpackages\u002Fcore",{"path":267,"title":268,"description":269,"stem":270},"\u002Freference\u002Fpackages\u002Fdecorators","@fougere\u002Fdecorators","Configuration sugar (@config) — declarative, never hidden runtime.","reference\u002Fpackages\u002Fdecorators",{"path":272,"title":273,"description":274,"stem":275},"\u002Freference\u002Fpackages\u002Fdefaults","@fougere\u002Fdefaults","The conventional boot of a Fougere app — the one place storage is wired.","reference\u002Fpackages\u002Fdefaults",{"path":277,"title":278,"description":279,"stem":280},"\u002Freference\u002Fpackages\u002Fgraph","@fougere\u002Fgraph","Fougere's graph: a labelled directed multigraph, and the four questions asked of it — order, cycles, components, reach. Zero dependencies.","reference\u002Fpackages\u002Fgraph",{"path":282,"title":283,"description":284,"stem":285},"\u002Freference\u002Fpackages\u002Fhttp","@fougere\u002Fhttp","The words every HTTP door speaks — a method, an answer, the headers a state travels in.","reference\u002Fpackages\u002Fhttp",{"path":287,"title":288,"description":289,"stem":290},"\u002Freference\u002Fpackages\u002Flog","@fougere\u002Flog","Logging for Fougere: two lines for every call, in every process, and a file destination for the lines.","reference\u002Fpackages\u002Flog",{"path":292,"title":293,"description":294,"stem":295},"\u002Freference\u002Fpackages\u002Fnext","@fougere\u002Fnext","The Next.js adapter: mounting, and the one import that is genuinely Next.","reference\u002Fpackages\u002Fnext",{"path":297,"title":298,"description":299,"stem":300},"\u002Freference\u002Fpackages\u002Fnuxt","@fougere\u002Fnuxt","The Nuxt module: Fougere's client primitives and server surface.","reference\u002Fpackages\u002Fnuxt",{"path":302,"title":303,"description":304,"stem":305},"\u002Freference\u002Fpackages\u002Fobservability","@fougere\u002Fobservability","Optional observability for Fougere: one span per operation, W3C Trace Context across any transport.","reference\u002Fpackages\u002Fobservability",{"path":307,"title":308,"description":309,"stem":310},"\u002Freference\u002Fpackages\u002Foclif","@fougere\u002Foclif","A frond's operations, as a terminal: topics, flags and help derived from what it declares.","reference\u002Fpackages\u002Foclif",{"path":312,"title":313,"description":314,"stem":315},"\u002Freference\u002Fpackages\u002Freact","@fougere\u002Freact","Fougere's four primitives as React hooks — host-independent.","reference\u002Fpackages\u002Freact",{"path":317,"title":318,"description":319,"stem":320},"\u002Freference\u002Fpackages\u002Fregistry","@fougere\u002Fregistry","Fougere's registry: one answer per name, refused when a second one arrives, and a reload that says it replaces. Zero dependencies.","reference\u002Fpackages\u002Fregistry",{"path":322,"title":323,"description":324,"stem":325},"\u002Freference\u002Fpackages\u002Fschema","@fougere\u002Fschema","The entity and its 4 axes — shape, role, lifecycle, boundary. Subject-owned judgments, edge-safe.","reference\u002Fpackages\u002Fschema",{"path":327,"title":328,"description":329,"stem":330},"\u002Freference\u002Fpackages\u002Fstate-cookie","@fougere\u002Fstate-cookie","A caller's state kept in a cookie — what `state: { cart: { cookie: {} } }` names, signed by core, carried by every HTTP door.","reference\u002Fpackages\u002Fstate-cookie",{"path":332,"title":333,"description":334,"stem":335},"\u002Freference\u002Fpackages\u002Fstate-session","@fougere\u002Fstate-session","A caller's state kept in a session — what `state: { cart: { session: {} } }` names: one cookie holds a reference, the values a row in a source.","reference\u002Fpackages\u002Fstate-session",{"path":337,"title":338,"description":339,"stem":340},"\u002Freference\u002Fpackages\u002Fsvelte","@fougere\u002Fsvelte","Fougere's four primitives as Svelte stores — host-independent.","reference\u002Fpackages\u002Fsvelte",{"path":342,"title":343,"description":344,"stem":345},"\u002Freference\u002Fpackages\u002Ftesting","@fougere\u002Ftesting","Tests derived from the declaration — cases, stubs and a gradient of realities.","reference\u002Fpackages\u002Ftesting",{"path":347,"title":348,"description":349,"stem":350},"\u002Freference\u002Fpackages\u002Ftransport-http","@fougere\u002Ftransport-http","The call contract on the wire, in JSON-RPC 2.0 (server + client).","reference\u002Fpackages\u002Ftransport-http",{"path":352,"title":353,"description":354,"stem":355},"\u002Freference\u002Fpackages\u002Fvite","@fougere\u002Fvite","The Vite plugin: what any Vite-built host must know to run a Fougere app.","reference\u002Fpackages\u002Fvite",{"path":357,"title":358,"description":359,"stem":360},"\u002Freference\u002Fpackages\u002Fworkflow","@fougere\u002Fworkflow","A release that goes to the end: the journal is three entities, the sweep is an operation, and a shared journal is one line of remotes:.","reference\u002Fpackages\u002Fworkflow",1794396612347]