[{"data":1,"prerenderedAt":450},["ShallowReactive",2],{"fougere:post.list:{}":3,"reference:\u002Freference\u002Fpackages\u002Fcompiler":6,"reference-pages":228},{"items":4,"hasMore":5},[],false,{"id":7,"title":8,"body":9,"description":19,"extension":220,"file":221,"meta":222,"navigation":223,"path":224,"seo":225,"stem":226,"__hash__":227},"reference\u002Freference\u002Fpackages\u002Fcompiler.md","@fougere\u002Fcompiler",{"type":10,"value":11,"toc":214},"minimark",[12,16,20,26,31,182,186,193],[13,14,8],"h1",{"id":15},"fougerecompiler",[17,18,19],"p",{},"The scan: Fougere reading a project's source to produce the descriptors core boots from. Needs a filesystem and a TypeScript program.",[17,21,22,23],{},"Entries: ",[24,25,8],"code",{},[27,28,30],"h2",{"id":29},"what-you-import","What you import",[32,33,34,46],"table",{},[35,36,37],"thead",{},[38,39,40,44],"tr",{},[41,42,43],"th",{},"name",[41,45],{},[47,48,49,59,77,87,97,115,125,135,151,165],"tbody",{},[38,50,51,57],{},[52,53,54],"td",{},[24,55,56],{},"scanProject",[52,58],{},[38,60,61,66],{},[52,62,63],{},[24,64,65],{},"emitAppOptions",[52,67,68,69,72,73,76],{},"The scan as the ",[24,70,71],{},"fronds.ts"," an author would write: one ",[24,74,75],{},"frond()"," call per frond.",[38,78,79,84],{},[52,80,81],{},[24,82,83],{},"adaptersOf",[52,85,86],{},"The adapter names this project depends on — empty when it has no package.json to read.",[38,88,89,94],{},[52,90,91],{},[24,92,93],{},"crossFrondImports",[52,95,96],{},"Every relative import that resolves outside its own frond.",[38,98,99,104],{},[52,100,101],{},[24,102,103],{},"handlerDeclarations",[52,105,106,107,110,111,114],{},"What a handler file declares besides its handler: a rule belongs in ",[24,108,109],{},"rules\u002F",", a service in ",[24,112,113],{},"services\u002F",".",[38,116,117,122],{},[52,118,119],{},[24,120,121],{},"outsideConventions",[52,123,124],{},"What sits in a frond outside its convention directories.",[38,126,127,132],{},[52,128,129],{},[24,130,131],{},"writeDerived",[52,133,134],{},"What a host writes when it starts: the fronds, the facade and the names, from one scan.",[38,136,137,142],{},[52,138,139],{},[24,140,141],{},"writeAppOptions",[52,143,144,145,148,149,114],{},"Writes ",[24,146,147],{},".fougere\u002Ffronds.generated.ts"," from the scan, for a project that wrote no ",[24,150,71],{},[38,152,153,158],{},[52,154,155],{},[24,156,157],{},"scannedAppOptions",[52,159,160,161,164],{},"The fronds and the vocabulary the scan writes, read back — narrowed to ",[24,162,163],{},"only",", the way a host reads it.",[38,166,167,172],{},[52,168,169],{},[24,170,171],{},"compileProject",[52,173,174,175,178,179,114],{},"Transpiles the files the config and the statement reach into ",[24,176,177],{},"out",", at the paths they had under ",[24,180,181],{},"root",[27,183,185],{"id":184},"types","Types",[17,187,188,189,192],{},"TypeScript types only — they do not run. Import them with ",[24,190,191],{},"import type"," to type your own code: a variable, a parameter, an option object.",[32,194,195,203],{},[35,196,197],{},[38,198,199,201],{},[41,200,43],{},[41,202],{},[47,204,205],{},[38,206,207,212],{},[52,208,209],{},[24,210,211],{},"Compiled",[52,213],{},{"title":215,"searchDepth":216,"depth":216,"links":217},"",2,[218,219],{"id":29,"depth":216,"text":30},{"id":184,"depth":216,"text":185},"md",null,{},true,"\u002Freference\u002Fpackages\u002Fcompiler",{"title":8,"description":19},"reference\u002Fpackages\u002Fcompiler","uoFozB04jZjPL3TFDc0qpw3YFqZo4ht8KQNmJXvflTw",[229,234,239,244,249,254,259,264,269,274,279,284,289,294,299,304,309,314,319,324,329,334,339,344,345,350,355,360,365,370,375,380,385,390,395,400,405,410,415,420,425,430,435,440,445],{"path":230,"title":231,"description":232,"stem":233},"\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":235,"title":236,"description":237,"stem":238},"\u002Freference\u002Ferrors","Error codes","Every code an operation can refuse with, and its HTTP status.","reference\u002F02.errors",{"path":240,"title":241,"description":242,"stem":243},"\u002Freference\u002Fconfig","fougere.config.ts","Every key the app config admits, and which package answers each one.","reference\u002F03.config",{"path":245,"title":246,"description":247,"stem":248},"\u002Freference\u002Ffrond-config","frond.config.ts","Every key a frond's own config admits.","reference\u002F04.frond-config",{"path":250,"title":251,"description":252,"stem":253},"\u002Freference\u002Fsources","Source types","Every type an entry of sources: may name, and the keys it admits.","reference\u002F05.sources",{"path":255,"title":256,"description":257,"stem":258},"\u002Freference\u002Fprotocols","Protocols","What protocols: may serve, and what each admits.","reference\u002F06.protocols",{"path":260,"title":261,"description":262,"stem":263},"\u002Freference\u002Fstates","State keepers","How state: may keep a caller's values.","reference\u002F07.states",{"path":265,"title":266,"description":267,"stem":268},"\u002Freference\u002Fforms","Forms","The types a frond is written with — each one read by the scan.","reference\u002F08.forms",{"path":270,"title":271,"description":272,"stem":273},"\u002Freference\u002Fports","Ports Fougere opens","The classes you stand in front of, or extend, to change what the framework does.","reference\u002F09.ports",{"path":275,"title":276,"description":277,"stem":278},"\u002Freference\u002Finterfaces","Interfaces to extend","The empty interfaces a package augments with declare module, and who augments each.","reference\u002F10.interfaces",{"path":280,"title":281,"description":282,"stem":283},"\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":285,"title":286,"description":287,"stem":288},"\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":290,"title":291,"description":292,"stem":293},"\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":295,"title":296,"description":297,"stem":298},"\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":300,"title":301,"description":302,"stem":303},"\u002Freference\u002Fpackages\u002Fadapter-graphql","@fougere\u002Fadapter-graphql","Entity → GraphQL types, inputs and CRUD, through Pothos.","reference\u002Fpackages\u002Fadapter-graphql",{"path":305,"title":306,"description":307,"stem":308},"\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":310,"title":311,"description":312,"stem":313},"\u002Freference\u002Fpackages\u002Fadapter-rest","@fougere\u002Fadapter-rest","Entity → REST routes.","reference\u002Fpackages\u002Fadapter-rest",{"path":315,"title":316,"description":317,"stem":318},"\u002Freference\u002Fpackages\u002Fadapter-sql","@fougere\u002Fadapter-sql","Entity → SQL tables through Kysely (SQLite, PostgreSQL, MySQL, SQL Server).","reference\u002Fpackages\u002Fadapter-sql",{"path":320,"title":321,"description":322,"stem":323},"\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":325,"title":326,"description":327,"stem":328},"\u002Freference\u002Fpackages\u002Fapp","@fougere\u002Fapp","The host-independent half of a Fougere app: boot, call envelope, REST table, form contract.","reference\u002Fpackages\u002Fapp",{"path":330,"title":331,"description":332,"stem":333},"\u002Freference\u002Fpackages\u002Fauth-better","@fougere\u002Fauth-better","Fougere's auth — a translation layer onto better-auth.","reference\u002Fpackages\u002Fauth-better",{"path":335,"title":336,"description":337,"stem":338},"\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":340,"title":341,"description":342,"stem":343},"\u002Freference\u002Fpackages\u002Fcli","@fougere\u002Fcli","The Fougere CLI — compose a workspace, serve a frond, call an operation.","reference\u002Fpackages\u002Fcli",{"path":224,"title":8,"description":19,"stem":226},{"path":346,"title":347,"description":348,"stem":349},"\u002Freference\u002Fpackages\u002Fcontainer","@fougere\u002Fcontainer","Fougere's DI container: resolution by type, wired from the AST scan. Zero dependencies.","reference\u002Fpackages\u002Fcontainer",{"path":351,"title":352,"description":353,"stem":354},"\u002Freference\u002Fpackages\u002Fcore","@fougere\u002Fcore","The core — scan, call contract, façades, remote stand-ins.","reference\u002Fpackages\u002Fcore",{"path":356,"title":357,"description":358,"stem":359},"\u002Freference\u002Fpackages\u002Fdecorators","@fougere\u002Fdecorators","Configuration sugar (@config) — declarative, never hidden runtime.","reference\u002Fpackages\u002Fdecorators",{"path":361,"title":362,"description":363,"stem":364},"\u002Freference\u002Fpackages\u002Fdefaults","@fougere\u002Fdefaults","The conventional boot of a Fougere app — the one place storage is wired.","reference\u002Fpackages\u002Fdefaults",{"path":366,"title":367,"description":368,"stem":369},"\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":371,"title":372,"description":373,"stem":374},"\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":376,"title":377,"description":378,"stem":379},"\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":381,"title":382,"description":383,"stem":384},"\u002Freference\u002Fpackages\u002Fnext","@fougere\u002Fnext","The Next.js adapter: mounting, and the one import that is genuinely Next.","reference\u002Fpackages\u002Fnext",{"path":386,"title":387,"description":388,"stem":389},"\u002Freference\u002Fpackages\u002Fnuxt","@fougere\u002Fnuxt","The Nuxt module: Fougere's client primitives and server surface.","reference\u002Fpackages\u002Fnuxt",{"path":391,"title":392,"description":393,"stem":394},"\u002Freference\u002Fpackages\u002Fobservability","@fougere\u002Fobservability","Optional observability for Fougere: one span per operation, W3C Trace Context across any transport.","reference\u002Fpackages\u002Fobservability",{"path":396,"title":397,"description":398,"stem":399},"\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":401,"title":402,"description":403,"stem":404},"\u002Freference\u002Fpackages\u002Freact","@fougere\u002Freact","Fougere's four primitives as React hooks — host-independent.","reference\u002Fpackages\u002Freact",{"path":406,"title":407,"description":408,"stem":409},"\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":411,"title":412,"description":413,"stem":414},"\u002Freference\u002Fpackages\u002Fschema","@fougere\u002Fschema","The entity and its 4 axes — shape, role, lifecycle, boundary. Subject-owned judgments, edge-safe.","reference\u002Fpackages\u002Fschema",{"path":416,"title":417,"description":418,"stem":419},"\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":421,"title":422,"description":423,"stem":424},"\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":426,"title":427,"description":428,"stem":429},"\u002Freference\u002Fpackages\u002Fsvelte","@fougere\u002Fsvelte","Fougere's four primitives as Svelte stores — host-independent.","reference\u002Fpackages\u002Fsvelte",{"path":431,"title":432,"description":433,"stem":434},"\u002Freference\u002Fpackages\u002Ftesting","@fougere\u002Ftesting","Tests derived from the declaration — cases, stubs and a gradient of realities.","reference\u002Fpackages\u002Ftesting",{"path":436,"title":437,"description":438,"stem":439},"\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":441,"title":442,"description":443,"stem":444},"\u002Freference\u002Fpackages\u002Fvite","@fougere\u002Fvite","The Vite plugin: what any Vite-built host must know to run a Fougere app.","reference\u002Fpackages\u002Fvite",{"path":446,"title":447,"description":448,"stem":449},"\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",1794396612923]