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