[{"data":1,"prerenderedAt":554},["ShallowReactive",2],{"docs-nav:en":3,"docs:\u002Fdocs\u002Fclient\u002Finvoke":186},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,16,20,24,28,50,75,120,145],{"title":10,"path":6,"stem":11},"What is Fougere","docs\u002Findex",{"title":13,"path":14,"stem":15},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started",{"title":17,"path":18,"stem":19},"An app you already have","\u002Fdocs\u002Fexisting-app","docs\u002F02.existing-app",{"title":21,"path":22,"stem":23},"Bring your schema","\u002Fdocs\u002Fbring-your-schema","docs\u002F03.bring-your-schema",{"title":25,"path":26,"stem":27},"The CLI","\u002Fdocs\u002Fcli","docs\u002F04.cli",{"title":29,"path":30,"stem":31,"children":32,"page":49},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F2.concepts",[33,37,41,45],{"title":34,"path":35,"stem":36},"Philosophy","\u002Fdocs\u002Fconcepts\u002Fphilosophy","docs\u002F2.concepts\u002F1.philosophy",{"title":38,"path":39,"stem":40},"The Frond","\u002Fdocs\u002Fconcepts\u002Ffrond","docs\u002F2.concepts\u002F2.frond",{"title":42,"path":43,"stem":44},"The shortest path","\u002Fdocs\u002Fconcepts\u002Fshortest-path","docs\u002F2.concepts\u002F3.shortest-path",{"title":46,"path":47,"stem":48},"The base","\u002Fdocs\u002Fconcepts\u002Fthe-base","docs\u002F2.concepts\u002F4.the-base",false,{"title":51,"path":52,"stem":53,"children":54,"page":49},"Schema","\u002Fdocs\u002Fschema","docs\u002F3.schema",[55,59,63,67,71],{"title":56,"path":57,"stem":58},"Entities","\u002Fdocs\u002Fschema\u002Fentities","docs\u002F3.schema\u002F1.entities",{"title":60,"path":61,"stem":62},"Views","\u002Fdocs\u002Fschema\u002Fviews","docs\u002F3.schema\u002F2.views",{"title":64,"path":65,"stem":66},"The identity card","\u002Fdocs\u002Fschema\u002Fcard","docs\u002F3.schema\u002F3.card",{"title":68,"path":69,"stem":70},"Standard Schema","\u002Fdocs\u002Fschema\u002Fstandard-schema","docs\u002F3.schema\u002F4.standard-schema",{"title":72,"path":73,"stem":74},"How a schema moves","\u002Fdocs\u002Fschema\u002Fevolution","docs\u002F3.schema\u002F5.evolution",{"title":76,"path":77,"stem":78,"children":79,"page":49},"Business","\u002Fdocs\u002Fbusiness","docs\u002F4.business",[80,84,88,92,96,100,104,108,112,116],{"title":81,"path":82,"stem":83},"Handlers","\u002Fdocs\u002Fbusiness\u002Fhandlers","docs\u002F4.business\u002F1.handlers",{"title":85,"path":86,"stem":87},"Ports","\u002Fdocs\u002Fbusiness\u002Fports","docs\u002F4.business\u002F10.ports",{"title":89,"path":90,"stem":91},"Presenters","\u002Fdocs\u002Fbusiness\u002Fpresenters","docs\u002F4.business\u002F2.presenters",{"title":93,"path":94,"stem":95},"Collectors","\u002Fdocs\u002Fbusiness\u002Fcollectors","docs\u002F4.business\u002F3.collectors",{"title":97,"path":98,"stem":99},"Errors","\u002Fdocs\u002Fbusiness\u002Ferrors","docs\u002F4.business\u002F4.errors",{"title":101,"path":102,"stem":103},"Seeds","\u002Fdocs\u002Fbusiness\u002Fseeds","docs\u002F4.business\u002F5.seeds",{"title":105,"path":106,"stem":107},"Facts","\u002Fdocs\u002Fbusiness\u002Ffacts","docs\u002F4.business\u002F6.facts",{"title":109,"path":110,"stem":111},"Storage","\u002Fdocs\u002Fbusiness\u002Fstorage","docs\u002F4.business\u002F7.storage",{"title":113,"path":114,"stem":115},"Writes that stand or fall as one","\u002Fdocs\u002Fbusiness\u002Ftogether","docs\u002F4.business\u002F8.together",{"title":117,"path":118,"stem":119},"Repositories","\u002Fdocs\u002Fbusiness\u002Frepositories","docs\u002F4.business\u002F9.repositories",{"title":121,"path":122,"stem":123,"children":124,"page":49},"Client","\u002Fdocs\u002Fclient","docs\u002F5.client",[125,129,133,137,141],{"title":126,"path":127,"stem":128},"Queries & commands","\u002Fdocs\u002Fclient\u002Fqueries-commands","docs\u002F5.client\u002F1.queries-commands",{"title":130,"path":131,"stem":132},"Forms","\u002Fdocs\u002Fclient\u002Fforms","docs\u002F5.client\u002F2.forms",{"title":134,"path":135,"stem":136},"Session","\u002Fdocs\u002Fclient\u002Fsession","docs\u002F5.client\u002F3.session",{"title":138,"path":139,"stem":140},"invoke","\u002Fdocs\u002Fclient\u002Finvoke","docs\u002F5.client\u002F4.invoke",{"title":142,"path":143,"stem":144},"Back-office","\u002Fdocs\u002Fclient\u002Fadmin","docs\u002F5.client\u002F5.admin",{"title":146,"path":147,"stem":148,"children":149,"page":49},"Infrastructure","\u002Fdocs\u002Finfra","docs\u002F6.infra",[150,154,158,162,166,170,174,178,182],{"title":151,"path":152,"stem":153},"The gradient","\u002Fdocs\u002Finfra\u002Fgradient","docs\u002F6.infra\u002F1.gradient",{"title":155,"path":156,"stem":157},"Surfaces — REST & GraphQL","\u002Fdocs\u002Finfra\u002Fsurfaces","docs\u002F6.infra\u002F2.surfaces",{"title":159,"path":160,"stem":161},"Deployment","\u002Fdocs\u002Finfra\u002Fdeployment","docs\u002F6.infra\u002F3.deployment",{"title":163,"path":164,"stem":165},"Hosts","\u002Fdocs\u002Finfra\u002Fhosts","docs\u002F6.infra\u002F4.hosts",{"title":167,"path":168,"stem":169},"Sources","\u002Fdocs\u002Finfra\u002Fsources","docs\u002F6.infra\u002F5.sources",{"title":171,"path":172,"stem":173},"Lifecycle","\u002Fdocs\u002Finfra\u002Flifecycle","docs\u002F6.infra\u002F6.lifecycle",{"title":175,"path":176,"stem":177},"Identity across Fronds","\u002Fdocs\u002Finfra\u002Fidentity","docs\u002F6.infra\u002F7.identity",{"title":179,"path":180,"stem":181},"Observability","\u002Fdocs\u002Finfra\u002Fobservability","docs\u002F6.infra\u002F8.observability",{"title":183,"path":184,"stem":185},"Testing","\u002Fdocs\u002Finfra\u002Ftesting","docs\u002F6.infra\u002F9.testing",{"id":187,"title":138,"body":188,"description":549,"extension":550,"meta":551,"navigation":253,"path":139,"seo":552,"stem":140,"__hash__":553},"docs_en\u002Fdocs\u002F5.client\u002F4.invoke.md",{"type":189,"value":190,"toc":544},"minimark",[191,194,201,372,377,456,460,501,505,525,533,540],[192,193,138],"h1",{"id":138},[195,196,197,200],"p",{},[198,199,138],"code",{}," calls a Frond operation from the server without reactive state. It is used in\nserver routes, scheduled tasks, and protocol adapters.",[202,203,208],"pre",{"className":204,"code":205,"language":206,"meta":207,"style":207},"language-ts shiki shiki-themes material-theme-lighter github-light github-dark","\u002F\u002F server\u002Fapi\u002Ffeed.xml.get.ts — an RSS bridge in three moves: parse → invoke → format\nimport Post from '@fronds\u002Fblog\u002Fentities\u002FPost';\n\nexport default defineEventHandler(async (event) => {\n  const posts = await invoke\u003CPostCard[]>(Post, 'list');\n  return renderRss(posts);\n});\n","ts","",[198,209,210,219,248,255,291,344,362],{"__ignoreMap":207},[211,212,215],"span",{"class":213,"line":214},"line",1,[211,216,218],{"class":217},"sutJx","\u002F\u002F server\u002Fapi\u002Ffeed.xml.get.ts — an RSS bridge in three moves: parse → invoke → format\n",[211,220,222,226,230,233,237,241,244],{"class":213,"line":221},2,[211,223,225],{"class":224},"sVHd0","import",[211,227,229],{"class":228},"su5hD"," Post ",[211,231,232],{"class":224},"from",[211,234,236],{"class":235},"sjJ54"," '",[211,238,240],{"class":239},"s_sjI","@fronds\u002Fblog\u002Fentities\u002FPost",[211,242,243],{"class":235},"'",[211,245,247],{"class":246},"sP7_E",";\n",[211,249,251],{"class":213,"line":250},3,[211,252,254],{"emptyLinePlaceholder":253},true,"\n",[211,256,258,261,264,268,271,275,278,282,285,288],{"class":213,"line":257},4,[211,259,260],{"class":224},"export",[211,262,263],{"class":224}," default",[211,265,267],{"class":266},"sGLFI"," defineEventHandler",[211,269,270],{"class":228},"(",[211,272,274],{"class":273},"sbsja","async",[211,276,277],{"class":246}," (",[211,279,281],{"class":280},"s99_P","event",[211,283,284],{"class":246},")",[211,286,287],{"class":273}," =>",[211,289,290],{"class":246}," {\n",[211,292,294,297,301,305,308,311,314,318,322,325,327,330,333,335,338,340,342],{"class":213,"line":293},5,[211,295,296],{"class":273},"  const",[211,298,300],{"class":299},"s_hVV"," posts",[211,302,304],{"class":303},"smGrS"," =",[211,306,307],{"class":224}," await",[211,309,310],{"class":266}," invoke",[211,312,313],{"class":246},"\u003C",[211,315,317],{"class":316},"sbgvK","PostCard",[211,319,321],{"class":320},"skxfh","[]",[211,323,324],{"class":246},">",[211,326,270],{"class":320},[211,328,329],{"class":228},"Post",[211,331,332],{"class":246},",",[211,334,236],{"class":235},[211,336,337],{"class":239},"list",[211,339,243],{"class":235},[211,341,284],{"class":320},[211,343,247],{"class":246},[211,345,347,350,353,355,358,360],{"class":213,"line":346},6,[211,348,349],{"class":224},"  return",[211,351,352],{"class":266}," renderRss",[211,354,270],{"class":320},[211,356,357],{"class":228},"posts",[211,359,284],{"class":320},[211,361,247],{"class":246},[211,363,365,368,370],{"class":213,"line":364},7,[211,366,367],{"class":246},"}",[211,369,284],{"class":228},[211,371,247],{"class":246},[373,374,376],"h2",{"id":375},"signatures","Signatures",[202,378,380],{"className":204,"code":379,"language":206,"meta":207,"style":207},"invoke\u003CT>(Entity, op, input?)          \u002F\u002F designation by class\ninvoke\u003CT>({ entity, op }, input?)      \u002F\u002F raw form, for dynamic bridges\n\u002F\u002F input: { params?, query?, body? }\n",[198,381,382,415,451],{"__ignoreMap":207},[211,383,384,386,388,391,393,396,398,401,403,406,409,412],{"class":213,"line":214},[211,385,138],{"class":266},[211,387,313],{"class":246},[211,389,390],{"class":316},"T",[211,392,324],{"class":246},[211,394,395],{"class":228},"(Entity",[211,397,332],{"class":246},[211,399,400],{"class":228}," op",[211,402,332],{"class":246},[211,404,405],{"class":228}," input",[211,407,408],{"class":303},"?",[211,410,411],{"class":228},")          ",[211,413,414],{"class":217},"\u002F\u002F designation by class\n",[211,416,417,419,421,423,425,427,430,433,435,438,441,443,445,448],{"class":213,"line":221},[211,418,138],{"class":266},[211,420,313],{"class":246},[211,422,390],{"class":316},[211,424,324],{"class":246},[211,426,270],{"class":228},[211,428,429],{"class":246},"{",[211,431,432],{"class":228}," entity",[211,434,332],{"class":246},[211,436,437],{"class":228}," op ",[211,439,440],{"class":246},"},",[211,442,405],{"class":228},[211,444,408],{"class":303},[211,446,447],{"class":228},")      ",[211,449,450],{"class":217},"\u002F\u002F raw form, for dynamic bridges\n",[211,452,453],{"class":213,"line":250},[211,454,455],{"class":217},"\u002F\u002F input: { params?, query?, body? }\n",[373,457,459],{"id":458},"semantics","Semantics",[461,462,463,478,487],"ul",{},[464,465,466,470,471,473,474,477],"li",{},[467,468,469],"strong",{},"Local or remote routing."," ",[198,472,138],{}," passes the call to the runner. A local Frond runs\nin memory; a Frond declared in ",[198,475,476],{},"remotes"," uses JSON-RPC.",[464,479,480,483,484,486],{},[467,481,482],{},"State forwarding."," In a request, ",[198,485,138],{}," adds the current session to invocation\nstate. Outside a request, state is empty or provided explicitly.",[464,488,489,496,497,500],{},[467,490,491,492,495],{},"Errors are the same ",[198,493,494],{},"FougereError","s"," — a bridge maps them with ",[198,498,499],{},"toHttpError"," if it\nspeaks HTTP, or lets them propagate.",[373,502,504],{"id":503},"boundary","Boundary",[195,506,507,509,510,513,514,517,518,521,522,524],{},[198,508,138],{}," is for ",[467,511,512],{},"Frond operations only",". Services, ",[198,515,516],{},"Logger",", ",[198,519,520],{},"Config"," come from the\ncontainer (DI) — ",[198,523,138],{}," is not a service locator.",[195,526,527,528,532],{},"The provided REST and GraphQL adapters follow the same sequence:\n",[529,530,531],"em",{},"parse → invoke → format",". A custom adapter can use the same structure.",[195,534,535,536,539],{},"Next: ",[537,538,142],"a",{"href":143}," — the panel the identity card already describes.",[541,542,543],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}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);}",{"title":207,"searchDepth":221,"depth":221,"links":545},[546,547,548],{"id":375,"depth":221,"text":376},{"id":458,"depth":221,"text":459},{"id":503,"depth":221,"text":504},"Call a Frond operation server-side without reactive state.","md",{},{"title":138,"description":549},"UrVnWnG-e3-OVBmRgiLNPKM7FqIf3-cnWiTStUrHnNg",1788560230826]