[{"data":1,"prerenderedAt":533},["ShallowReactive",2],{"fougere:post.list:{}":3,"reference:\u002Freference\u002Fpackages\u002Fcalls":6,"reference-pages":311},{"items":4,"hasMore":5},[],false,{"id":7,"title":8,"body":9,"description":302,"extension":303,"file":304,"meta":305,"navigation":306,"path":307,"seo":308,"stem":309,"__hash__":310},"reference\u002Freference\u002Fpackages\u002Fcalls.md","@fougere\u002Fcalls",{"type":10,"value":11,"toc":297},"minimark",[12,16,25,30,104,182,196,201,205,243,247,254,293],[13,14,8],"h1",{"id":15},"fougerecalls",[17,18,19,20,24],"p",{},"Optional call log for Fougere: a bounded ring of every dispatch, served as an rpc operation. Read it with ",[21,22,23],"code",{},"fougere devtools",".",[26,27,29],"h2",{"id":28},"use-it","Use it",[31,32,36,61,76,90],"code-group",{"className":33,"sync":35},[34],"managers","pm",[37,38,44],"pre",{"className":39,"code":40,"filename":41,"language":42,"meta":43,"style":43},"language-bash shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","npm install @fougere\u002Fcalls\n","npm","bash","",[21,45,46],{"__ignoreMap":43},[47,48,51,54,58],"span",{"class":49,"line":50},"line",1,[47,52,41],{"class":53},"sV8pK",[47,55,57],{"class":56},"sN-8n"," install",[47,59,60],{"class":56}," @fougere\u002Fcalls\n",[37,62,65],{"className":39,"code":63,"filename":64,"language":42,"meta":43,"style":43},"pnpm add @fougere\u002Fcalls\n","pnpm",[21,66,67],{"__ignoreMap":43},[47,68,69,71,74],{"class":49,"line":50},[47,70,64],{"class":53},[47,72,73],{"class":56}," add",[47,75,60],{"class":56},[37,77,80],{"className":39,"code":78,"filename":79,"language":42,"meta":43,"style":43},"bun add @fougere\u002Fcalls\n","bun",[21,81,82],{"__ignoreMap":43},[47,83,84,86,88],{"class":49,"line":50},[47,85,79],{"class":53},[47,87,73],{"class":56},[47,89,60],{"class":56},[37,91,94],{"className":39,"code":92,"filename":93,"language":42,"meta":43,"style":43},"yarn add @fougere\u002Fcalls\n","yarn",[21,95,96],{"__ignoreMap":43},[47,97,98,100,102],{"class":49,"line":50},[47,99,93],{"class":53},[47,101,73],{"class":56},[47,103,60],{"class":56},[37,105,109],{"className":106,"code":107,"language":108,"meta":43,"style":43},"language-ts shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","\u002F\u002F fougere.config.ts\nexport default defineFougere({\n  fronds: { '@fougere\u002Fcalls': {} },\n});\n","ts",[21,110,111,117,139,170],{"__ignoreMap":43},[47,112,113],{"class":49,"line":50},[47,114,116],{"class":115},"skXKP","\u002F\u002F fougere.config.ts\n",[47,118,120,124,127,131,135],{"class":49,"line":119},2,[47,121,123],{"class":122},"sK6XW","export",[47,125,126],{"class":122}," default",[47,128,130],{"class":129},"s4mR9"," defineFougere",[47,132,134],{"class":133},"srlTG","(",[47,136,138],{"class":137},"s15xx","{\n",[47,140,142,146,149,152,156,159,162,164,167],{"class":49,"line":141},3,[47,143,145],{"class":144},"sHtqg","  fronds",[47,147,148],{"class":137},":",[47,150,151],{"class":137}," {",[47,153,155],{"class":154},"sDDC1"," '",[47,157,8],{"class":158},"sK7Y8",[47,160,161],{"class":154},"'",[47,163,148],{"class":137},[47,165,166],{"class":137}," {}",[47,168,169],{"class":137}," },\n",[47,171,173,176,179],{"class":49,"line":172},4,[47,174,175],{"class":137},"}",[47,177,178],{"class":133},")",[47,180,181],{"class":137},";\n",[17,183,184,185,188,189,192,193,24],{},"The key names the package, and every process that reads the config calls its ",[21,186,187],{},"calls()"," export and rises with it. Options that are more than a word go where the extension is built — in a frond's ",[21,190,191],{},"extensions\u002F",", or in ",[21,194,195],{},"createApp({ extensions })",[17,197,198,199],{},"Entries: ",[21,200,8],{},[26,202,204],{"id":203},"what-you-import","What you import",[206,207,208,220],"table",{},[209,210,211],"thead",{},[212,213,214,218],"tr",{},[215,216,217],"th",{},"name",[215,219],{},[221,222,223,233],"tbody",{},[212,224,225,231],{},[226,227,228],"td",{},[21,229,230],{},"CALLS_OP",[226,232],{},[212,234,235,240],{},[226,236,237],{},[21,238,239],{},"calls",[226,241,242],{},"What this process dispatched, kept in a bounded ring and served as an rpc operation.",[26,244,246],{"id":245},"types","Types",[17,248,249,250,253],{},"TypeScript types only — they do not run. Import them with ",[21,251,252],{},"import type"," to type your own code: a variable, a parameter, an option object.",[206,255,256,264],{},[209,257,258],{},[212,259,260,262],{},[215,261,217],{},[215,263],{},[221,265,266,275,284],{},[212,267,268,273],{},[226,269,270],{},[21,271,272],{},"CallPage",[226,274],{},[212,276,277,282],{},[226,278,279],{},[21,280,281],{},"CallRecord",[226,283],{},[212,285,286,291],{},[226,287,288],{},[21,289,290],{},"CallsOptions",[226,292],{},[294,295,296],"style",{},"html pre.shiki code .sV8pK, html code.shiki .sV8pK{--shiki-light:#E2931D;--shiki-default:#C9B6EA;--shiki-dark:#FFCB6B}html pre.shiki code .sN-8n, html code.shiki .sN-8n{--shiki-light:#91B859;--shiki-default:#EE9F6B;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .skXKP, html code.shiki .skXKP{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#7D8C80;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sK6XW, html code.shiki .sK6XW{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#8FCF86;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s4mR9, html code.shiki .s4mR9{--shiki-light:#6182B8;--shiki-default:#C9B6EA;--shiki-dark:#82AAFF}html pre.shiki code .srlTG, html code.shiki .srlTG{--shiki-light:#90A4AE;--shiki-default:#A3B0A5;--shiki-dark:#BABED8}html pre.shiki code .s15xx, html code.shiki .s15xx{--shiki-light:#39ADB5;--shiki-default:#A3B0A5;--shiki-dark:#89DDFF}html pre.shiki code .sHtqg, html code.shiki .sHtqg{--shiki-light:#E53935;--shiki-default:#93CFC0;--shiki-dark:#F07178}html pre.shiki code .sDDC1, html code.shiki .sDDC1{--shiki-light:#39ADB5;--shiki-default:#EE9F6B;--shiki-dark:#89DDFF}html pre.shiki code .sK7Y8, html code.shiki .sK7Y8{--shiki-light:#E53935;--shiki-default:#EE9F6B;--shiki-dark:#F07178}",{"title":43,"searchDepth":119,"depth":119,"links":298},[299,300,301],{"id":28,"depth":119,"text":29},{"id":203,"depth":119,"text":204},{"id":245,"depth":119,"text":246},"Optional call log for Fougere: a bounded ring of every dispatch, served as an rpc operation. Read it with `fougere devtools`.","md",null,{},true,"\u002Freference\u002Fpackages\u002Fcalls",{"title":8,"description":302},"reference\u002Fpackages\u002Fcalls","i0zWdLxIVgD3f8R9vEx166eKeLJztkDmuzt3_Ei4LFk",[312,317,322,327,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,418,423,428,433,438,443,448,453,458,463,468,473,478,483,488,493,498,503,508,513,518,523,528],{"path":313,"title":314,"description":315,"stem":316},"\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":318,"title":319,"description":320,"stem":321},"\u002Freference\u002Ferrors","Error codes","Every code an operation can refuse with, and its HTTP status.","reference\u002F02.errors",{"path":323,"title":324,"description":325,"stem":326},"\u002Freference\u002Fconfig","fougere.config.ts","Every key the app config admits, and which package answers each one.","reference\u002F03.config",{"path":328,"title":329,"description":330,"stem":331},"\u002Freference\u002Ffrond-config","frond.config.ts","Every key a frond's own config admits.","reference\u002F04.frond-config",{"path":333,"title":334,"description":335,"stem":336},"\u002Freference\u002Fsources","Source types","Every type an entry of sources: may name, and the keys it admits.","reference\u002F05.sources",{"path":338,"title":339,"description":340,"stem":341},"\u002Freference\u002Fprotocols","Protocols","What protocols: may serve, and what each admits.","reference\u002F06.protocols",{"path":343,"title":344,"description":345,"stem":346},"\u002Freference\u002Fstates","State keepers","How state: may keep a caller's values.","reference\u002F07.states",{"path":348,"title":349,"description":350,"stem":351},"\u002Freference\u002Fforms","Forms","The types a frond is written with — each one read by the scan.","reference\u002F08.forms",{"path":353,"title":354,"description":355,"stem":356},"\u002Freference\u002Fports","Ports Fougere opens","The classes you stand in front of, or extend, to change what the framework does.","reference\u002F09.ports",{"path":358,"title":359,"description":360,"stem":361},"\u002Freference\u002Finterfaces","Interfaces to extend","The empty interfaces a package augments with declare module, and who augments each.","reference\u002F10.interfaces",{"path":363,"title":364,"description":365,"stem":366},"\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":368,"title":369,"description":370,"stem":371},"\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":373,"title":374,"description":375,"stem":376},"\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":378,"title":379,"description":380,"stem":381},"\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":383,"title":384,"description":385,"stem":386},"\u002Freference\u002Fpackages\u002Fadapter-graphql","@fougere\u002Fadapter-graphql","Entity → GraphQL types, inputs and CRUD, through Pothos.","reference\u002Fpackages\u002Fadapter-graphql",{"path":388,"title":389,"description":390,"stem":391},"\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":393,"title":394,"description":395,"stem":396},"\u002Freference\u002Fpackages\u002Fadapter-rest","@fougere\u002Fadapter-rest","Entity → REST routes.","reference\u002Fpackages\u002Fadapter-rest",{"path":398,"title":399,"description":400,"stem":401},"\u002Freference\u002Fpackages\u002Fadapter-sql","@fougere\u002Fadapter-sql","Entity → SQL tables through Kysely (SQLite, PostgreSQL, MySQL, SQL Server).","reference\u002Fpackages\u002Fadapter-sql",{"path":403,"title":404,"description":405,"stem":406},"\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":408,"title":409,"description":410,"stem":411},"\u002Freference\u002Fpackages\u002Fapp","@fougere\u002Fapp","The host-independent half of a Fougere app: boot, call envelope, REST table, form contract.","reference\u002Fpackages\u002Fapp",{"path":413,"title":414,"description":415,"stem":416},"\u002Freference\u002Fpackages\u002Fauth-better","@fougere\u002Fauth-better","Fougere's auth — a translation layer onto better-auth.","reference\u002Fpackages\u002Fauth-better",{"path":307,"title":8,"description":302,"stem":309},{"path":419,"title":420,"description":421,"stem":422},"\u002Freference\u002Fpackages\u002Fcli","@fougere\u002Fcli","The Fougere CLI — compose a workspace, serve a frond, call an operation.","reference\u002Fpackages\u002Fcli",{"path":424,"title":425,"description":426,"stem":427},"\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":429,"title":430,"description":431,"stem":432},"\u002Freference\u002Fpackages\u002Fcontainer","@fougere\u002Fcontainer","Fougere's DI container: resolution by type, wired from the AST scan. Zero dependencies.","reference\u002Fpackages\u002Fcontainer",{"path":434,"title":435,"description":436,"stem":437},"\u002Freference\u002Fpackages\u002Fcore","@fougere\u002Fcore","The core — scan, call contract, façades, remote stand-ins.","reference\u002Fpackages\u002Fcore",{"path":439,"title":440,"description":441,"stem":442},"\u002Freference\u002Fpackages\u002Fdecorators","@fougere\u002Fdecorators","Configuration sugar (@config) — declarative, never hidden runtime.","reference\u002Fpackages\u002Fdecorators",{"path":444,"title":445,"description":446,"stem":447},"\u002Freference\u002Fpackages\u002Fdefaults","@fougere\u002Fdefaults","The conventional boot of a Fougere app — the one place storage is wired.","reference\u002Fpackages\u002Fdefaults",{"path":449,"title":450,"description":451,"stem":452},"\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":454,"title":455,"description":456,"stem":457},"\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":459,"title":460,"description":461,"stem":462},"\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":464,"title":465,"description":466,"stem":467},"\u002Freference\u002Fpackages\u002Fnext","@fougere\u002Fnext","The Next.js adapter: mounting, and the one import that is genuinely Next.","reference\u002Fpackages\u002Fnext",{"path":469,"title":470,"description":471,"stem":472},"\u002Freference\u002Fpackages\u002Fnuxt","@fougere\u002Fnuxt","The Nuxt module: Fougere's client primitives and server surface.","reference\u002Fpackages\u002Fnuxt",{"path":474,"title":475,"description":476,"stem":477},"\u002Freference\u002Fpackages\u002Fobservability","@fougere\u002Fobservability","Optional observability for Fougere: one span per operation, W3C Trace Context across any transport.","reference\u002Fpackages\u002Fobservability",{"path":479,"title":480,"description":481,"stem":482},"\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":484,"title":485,"description":486,"stem":487},"\u002Freference\u002Fpackages\u002Freact","@fougere\u002Freact","Fougere's four primitives as React hooks — host-independent.","reference\u002Fpackages\u002Freact",{"path":489,"title":490,"description":491,"stem":492},"\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":494,"title":495,"description":496,"stem":497},"\u002Freference\u002Fpackages\u002Fschema","@fougere\u002Fschema","The entity and its 4 axes — shape, role, lifecycle, boundary. Subject-owned judgments, edge-safe.","reference\u002Fpackages\u002Fschema",{"path":499,"title":500,"description":501,"stem":502},"\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":504,"title":505,"description":506,"stem":507},"\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":509,"title":510,"description":511,"stem":512},"\u002Freference\u002Fpackages\u002Fsvelte","@fougere\u002Fsvelte","Fougere's four primitives as Svelte stores — host-independent.","reference\u002Fpackages\u002Fsvelte",{"path":514,"title":515,"description":516,"stem":517},"\u002Freference\u002Fpackages\u002Ftesting","@fougere\u002Ftesting","Tests derived from the declaration — cases, stubs and a gradient of realities.","reference\u002Fpackages\u002Ftesting",{"path":519,"title":520,"description":521,"stem":522},"\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":524,"title":525,"description":526,"stem":527},"\u002Freference\u002Fpackages\u002Fvite","@fougere\u002Fvite","The Vite plugin: what any Vite-built host must know to run a Fougere app.","reference\u002Fpackages\u002Fvite",{"path":529,"title":530,"description":531,"stem":532},"\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",1794396612910]