[{"data":1,"prerenderedAt":504},["ShallowReactive",2],{"docs-nav:fr":3,"docs:\u002Ffr\u002Fdocs\u002Fclient\u002Finvoke":137},[4],{"title":5,"path":6,"stem":7,"children":8,"page":44},"Fr","\u002Ffr","fr",[9],{"title":10,"path":11,"stem":12,"children":13},"Qu'est-ce que Fougere","\u002Ffr\u002Fdocs","fr\u002Fdocs\u002Findex",[14,15,19,23,27,45,66,95,116],{"title":10,"path":11,"stem":12},{"title":16,"path":17,"stem":18},"Démarrer","\u002Ffr\u002Fdocs\u002Fgetting-started","fr\u002Fdocs\u002F01.getting-started",{"title":20,"path":21,"stem":22},"App Nuxt existante","\u002Ffr\u002Fdocs\u002Fexisting-app","fr\u002Fdocs\u002F02.existing-app",{"title":24,"path":25,"stem":26},"La CLI","\u002Ffr\u002Fdocs\u002Fcli","fr\u002Fdocs\u002F03.cli",{"title":28,"path":29,"stem":30,"children":31,"page":44},"Concepts","\u002Ffr\u002Fdocs\u002Fconcepts","fr\u002Fdocs\u002F2.concepts",[32,36,40],{"title":33,"path":34,"stem":35},"Philosophie","\u002Ffr\u002Fdocs\u002Fconcepts\u002Fphilosophy","fr\u002Fdocs\u002F2.concepts\u002F1.philosophy",{"title":37,"path":38,"stem":39},"La Frond","\u002Ffr\u002Fdocs\u002Fconcepts\u002Ffrond","fr\u002Fdocs\u002F2.concepts\u002F2.frond",{"title":41,"path":42,"stem":43},"Le chemin le plus court","\u002Ffr\u002Fdocs\u002Fconcepts\u002Fshortest-path","fr\u002Fdocs\u002F2.concepts\u002F3.shortest-path",false,{"title":46,"path":47,"stem":48,"children":49,"page":44},"Schéma","\u002Ffr\u002Fdocs\u002Fschema","fr\u002Fdocs\u002F3.schema",[50,54,58,62],{"title":51,"path":52,"stem":53},"Entités","\u002Ffr\u002Fdocs\u002Fschema\u002Fentities","fr\u002Fdocs\u002F3.schema\u002F1.entities",{"title":55,"path":56,"stem":57},"Vues","\u002Ffr\u002Fdocs\u002Fschema\u002Fviews","fr\u002Fdocs\u002F3.schema\u002F2.views",{"title":59,"path":60,"stem":61},"La carte d'identité","\u002Ffr\u002Fdocs\u002Fschema\u002Fcard","fr\u002Fdocs\u002F3.schema\u002F3.card",{"title":63,"path":64,"stem":65},"Standard Schema","\u002Ffr\u002Fdocs\u002Fschema\u002Fstandard-schema","fr\u002Fdocs\u002F3.schema\u002F4.standard-schema",{"title":67,"path":68,"stem":69,"children":70,"page":44},"Métier","\u002Ffr\u002Fdocs\u002Fbusiness","fr\u002Fdocs\u002F4.business",[71,75,79,83,87,91],{"title":72,"path":73,"stem":74},"Handlers","\u002Ffr\u002Fdocs\u002Fbusiness\u002Fhandlers","fr\u002Fdocs\u002F4.business\u002F1.handlers",{"title":76,"path":77,"stem":78},"Presenters","\u002Ffr\u002Fdocs\u002Fbusiness\u002Fpresenters","fr\u002Fdocs\u002F4.business\u002F2.presenters",{"title":80,"path":81,"stem":82},"Collectors","\u002Ffr\u002Fdocs\u002Fbusiness\u002Fcollectors","fr\u002Fdocs\u002F4.business\u002F3.collectors",{"title":84,"path":85,"stem":86},"Erreurs","\u002Ffr\u002Fdocs\u002Fbusiness\u002Ferrors","fr\u002Fdocs\u002F4.business\u002F4.errors",{"title":88,"path":89,"stem":90},"Seeds","\u002Ffr\u002Fdocs\u002Fbusiness\u002Fseeds","fr\u002Fdocs\u002F4.business\u002F5.seeds",{"title":92,"path":93,"stem":94},"Les faits","\u002Ffr\u002Fdocs\u002Fbusiness\u002Ffacts","fr\u002Fdocs\u002F4.business\u002F6.facts",{"title":96,"path":97,"stem":98,"children":99,"page":44},"Client","\u002Ffr\u002Fdocs\u002Fclient","fr\u002Fdocs\u002F5.client",[100,104,108,112],{"title":101,"path":102,"stem":103},"Queries & commands","\u002Ffr\u002Fdocs\u002Fclient\u002Fqueries-commands","fr\u002Fdocs\u002F5.client\u002F1.queries-commands",{"title":105,"path":106,"stem":107},"Formulaires","\u002Ffr\u002Fdocs\u002Fclient\u002Fforms","fr\u002Fdocs\u002F5.client\u002F2.forms",{"title":109,"path":110,"stem":111},"Session","\u002Ffr\u002Fdocs\u002Fclient\u002Fsession","fr\u002Fdocs\u002F5.client\u002F3.session",{"title":113,"path":114,"stem":115},"invoke","\u002Ffr\u002Fdocs\u002Fclient\u002Finvoke","fr\u002Fdocs\u002F5.client\u002F4.invoke",{"title":117,"path":118,"stem":119,"children":120,"page":44},"Infrastructure","\u002Ffr\u002Fdocs\u002Finfra","fr\u002Fdocs\u002F6.infra",[121,125,129,133],{"title":122,"path":123,"stem":124},"Le gradient","\u002Ffr\u002Fdocs\u002Finfra\u002Fgradient","fr\u002Fdocs\u002F6.infra\u002F1.gradient",{"title":126,"path":127,"stem":128},"Surfaces — REST & GraphQL","\u002Ffr\u002Fdocs\u002Finfra\u002Fsurfaces","fr\u002Fdocs\u002F6.infra\u002F2.surfaces",{"title":130,"path":131,"stem":132},"Déploiement","\u002Ffr\u002Fdocs\u002Finfra\u002Fdeployment","fr\u002Fdocs\u002F6.infra\u002F3.deployment",{"title":134,"path":135,"stem":136},"Hôtes","\u002Ffr\u002Fdocs\u002Finfra\u002Fhosts","fr\u002Fdocs\u002F6.infra\u002F4.hosts",{"id":138,"title":113,"body":139,"description":499,"extension":500,"meta":501,"navigation":204,"path":114,"seo":502,"stem":115,"__hash__":503},"docs_fr\u002Ffr\u002Fdocs\u002F5.client\u002F4.invoke.md",{"type":140,"value":141,"toc":494},"minimark",[142,145,152,323,328,407,411,451,455,475,483,490],[143,144,113],"h1",{"id":113},[146,147,148,151],"p",{},[149,150,113],"code",{}," appelle une opération de Frond depuis le serveur, sans état réactif. Il s'utilise\ndans les routes serveur, les tâches planifiées et les adapters de protocole.",[153,154,159],"pre",{"className":155,"code":156,"language":157,"meta":158,"style":158},"language-ts shiki shiki-themes material-theme-lighter github-light github-dark","\u002F\u002F server\u002Fapi\u002Ffeed.xml.get.ts — un pont RSS en trois gestes : parse → invoke → formate\nimport Post from '@frond\u002Fblog\u002Fentities\u002FPost';\n\nexport default defineEventHandler(async (event) => {\n  const posts = await invoke\u003CPostCard[]>(Post, 'list');\n  return renderRss(posts);\n});\n","ts","",[149,160,161,170,199,206,242,295,313],{"__ignoreMap":158},[162,163,166],"span",{"class":164,"line":165},"line",1,[162,167,169],{"class":168},"sutJx","\u002F\u002F server\u002Fapi\u002Ffeed.xml.get.ts — un pont RSS en trois gestes : parse → invoke → formate\n",[162,171,173,177,181,184,188,192,195],{"class":164,"line":172},2,[162,174,176],{"class":175},"sVHd0","import",[162,178,180],{"class":179},"su5hD"," Post ",[162,182,183],{"class":175},"from",[162,185,187],{"class":186},"sjJ54"," '",[162,189,191],{"class":190},"s_sjI","@frond\u002Fblog\u002Fentities\u002FPost",[162,193,194],{"class":186},"'",[162,196,198],{"class":197},"sP7_E",";\n",[162,200,202],{"class":164,"line":201},3,[162,203,205],{"emptyLinePlaceholder":204},true,"\n",[162,207,209,212,215,219,222,226,229,233,236,239],{"class":164,"line":208},4,[162,210,211],{"class":175},"export",[162,213,214],{"class":175}," default",[162,216,218],{"class":217},"sGLFI"," defineEventHandler",[162,220,221],{"class":179},"(",[162,223,225],{"class":224},"sbsja","async",[162,227,228],{"class":197}," (",[162,230,232],{"class":231},"s99_P","event",[162,234,235],{"class":197},")",[162,237,238],{"class":224}," =>",[162,240,241],{"class":197}," {\n",[162,243,245,248,252,256,259,262,265,269,273,276,278,281,284,286,289,291,293],{"class":164,"line":244},5,[162,246,247],{"class":224},"  const",[162,249,251],{"class":250},"s_hVV"," posts",[162,253,255],{"class":254},"smGrS"," =",[162,257,258],{"class":175}," await",[162,260,261],{"class":217}," invoke",[162,263,264],{"class":197},"\u003C",[162,266,268],{"class":267},"sbgvK","PostCard",[162,270,272],{"class":271},"skxfh","[]",[162,274,275],{"class":197},">",[162,277,221],{"class":271},[162,279,280],{"class":179},"Post",[162,282,283],{"class":197},",",[162,285,187],{"class":186},[162,287,288],{"class":190},"list",[162,290,194],{"class":186},[162,292,235],{"class":271},[162,294,198],{"class":197},[162,296,298,301,304,306,309,311],{"class":164,"line":297},6,[162,299,300],{"class":175},"  return",[162,302,303],{"class":217}," renderRss",[162,305,221],{"class":271},[162,307,308],{"class":179},"posts",[162,310,235],{"class":271},[162,312,198],{"class":197},[162,314,316,319,321],{"class":164,"line":315},7,[162,317,318],{"class":197},"}",[162,320,235],{"class":179},[162,322,198],{"class":197},[324,325,327],"h2",{"id":326},"signatures","Signatures",[153,329,331],{"className":155,"code":330,"language":157,"meta":158,"style":158},"invoke\u003CT>(Entity, op, input?)          \u002F\u002F désignation par classe\ninvoke\u003CT>({ entity, op }, input?)      \u002F\u002F forme brute, pour les ponts dynamiques\n\u002F\u002F input: { params?, query?, body? }\n",[149,332,333,366,402],{"__ignoreMap":158},[162,334,335,337,339,342,344,347,349,352,354,357,360,363],{"class":164,"line":165},[162,336,113],{"class":217},[162,338,264],{"class":197},[162,340,341],{"class":267},"T",[162,343,275],{"class":197},[162,345,346],{"class":179},"(Entity",[162,348,283],{"class":197},[162,350,351],{"class":179}," op",[162,353,283],{"class":197},[162,355,356],{"class":179}," input",[162,358,359],{"class":254},"?",[162,361,362],{"class":179},")          ",[162,364,365],{"class":168},"\u002F\u002F désignation par classe\n",[162,367,368,370,372,374,376,378,381,384,386,389,392,394,396,399],{"class":164,"line":172},[162,369,113],{"class":217},[162,371,264],{"class":197},[162,373,341],{"class":267},[162,375,275],{"class":197},[162,377,221],{"class":179},[162,379,380],{"class":197},"{",[162,382,383],{"class":179}," entity",[162,385,283],{"class":197},[162,387,388],{"class":179}," op ",[162,390,391],{"class":197},"},",[162,393,356],{"class":179},[162,395,359],{"class":254},[162,397,398],{"class":179},")      ",[162,400,401],{"class":168},"\u002F\u002F forme brute, pour les ponts dynamiques\n",[162,403,404],{"class":164,"line":201},[162,405,406],{"class":168},"\u002F\u002F input: { params?, query?, body? }\n",[324,408,410],{"id":409},"sémantique","Sémantique",[412,413,414,429,438],"ul",{},[415,416,417,421,422,424,425,428],"li",{},[418,419,420],"strong",{},"Routage local ou distant."," ",[149,423,113],{}," transmet l'appel au runner. Une Frond locale est\nexécutée en mémoire ; une Frond déclarée dans ",[149,426,427],{},"remotes"," utilise JSON-RPC.",[415,430,431,434,435,437],{},[418,432,433],{},"Transmission du state."," Dans une requête, ",[149,436,113],{}," ajoute la session courante au\nstate d'invocation. Hors requête, le state est vide ou fourni explicitement.",[415,439,440,446,447,450],{},[418,441,442,443],{},"Les erreurs sont les mêmes ",[149,444,445],{},"FougereError"," — un pont les mappe avec ",[149,448,449],{},"toHttpError","\ns'il parle HTTP, ou les laisse se propager.",[324,452,454],{"id":453},"frontière","Frontière",[146,456,457,459,460,463,464,467,468,471,472,474],{},[149,458,113],{}," est réservé aux ",[418,461,462],{},"opérations de Frond",". Les services, ",[149,465,466],{},"Logger",", ",[149,469,470],{},"Config","\nviennent du container (DI) — ",[149,473,113],{}," n'est pas un service locator.",[146,476,477,478,482],{},"Les adapters fournis pour REST et GraphQL suivent le même enchaînement :\n",[479,480,481],"em",{},"parser → invoke → formater",". Un adapter personnalisé peut reprendre cette structure.",[146,484,485,486,489],{},"Suite : ",[487,488,122],"a",{"href":123}," — déplacer une Frond hors process.",[491,492,493],"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":158,"searchDepth":172,"depth":172,"links":495},[496,497,498],{"id":326,"depth":172,"text":327},{"id":409,"depth":172,"text":410},{"id":453,"depth":172,"text":454},"Appeler une opération de Frond côté serveur, sans état réactif.","md",{},{"title":113,"description":499},"wph71jvDzyIQd25La-jsg9ul9u4d1cegQM9sZdJ3q5g",1786637819981]