[{"data":1,"prerenderedAt":969},["ShallowReactive",2],{"fougere:post.list:{}":3,"docs:\u002Fdocs\u002Faccess\u002Fstate":6,"docs-uses":657,"docs-nav":831},{"items":4,"hasMore":5},[],false,{"id":7,"title":8,"body":9,"description":644,"extension":645,"forms":646,"kind":647,"meta":648,"navigation":75,"path":649,"seo":650,"stem":651,"step":652,"uses":653,"__hash__":656},"docs\u002Fdocs\u002F2.access\u002F2.state.md","Keep a caller's state",{"type":10,"value":11,"toc":639},"minimark",[12,21,276,283,367,394,399,402,521,546,553,557,590,594,635],[13,14,15,16,20],"p",{},"Some things belong to the caller, not to your database: a cart before sign-in, a chosen locale.\nAn operation asks for ",[17,18,19],"code",{},"State"," and reads or writes it by name; where it is kept — a cookie, a\nsession — is a line of config.",[22,23,28],"pre",{"className":24,"code":25,"language":26,"meta":27,"style":27},"language-ts shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","import type { State } from '@fougere\u002Fcore';\n\nexport default class CartHandler {\n  async open(state: State) {\n    state.set('cart', 'c42');\n\n    return { opened: true };\n  }\n\n  async current(state: State) {\n    return { cart: state.get\u003Cstring>('cart') ?? null };\n  }\n}\n","ts","",[17,29,30,70,77,97,124,161,166,187,193,198,218,265,270],{"__ignoreMap":27},[31,32,35,39,42,46,50,53,56,60,64,67],"span",{"class":33,"line":34},"line",1,[31,36,38],{"class":37},"sK6XW","import",[31,40,41],{"class":37}," type",[31,43,45],{"class":44},"s15xx"," {",[31,47,49],{"class":48},"sPEhv"," State",[31,51,52],{"class":44}," }",[31,54,55],{"class":37}," from",[31,57,59],{"class":58},"sDDC1"," '",[31,61,63],{"class":62},"sN-8n","@fougere\u002Fcore",[31,65,66],{"class":58},"'",[31,68,69],{"class":44},";\n",[31,71,73],{"class":33,"line":72},2,[31,74,76],{"emptyLinePlaceholder":75},true,"\n",[31,78,80,83,86,90,94],{"class":33,"line":79},3,[31,81,82],{"class":37},"export",[31,84,85],{"class":37}," default",[31,87,89],{"class":88},"s76I7"," class",[31,91,93],{"class":92},"sBZYL"," CartHandler",[31,95,96],{"class":44}," {\n",[31,98,100,103,107,110,114,117,119,122],{"class":33,"line":99},4,[31,101,102],{"class":88},"  async",[31,104,106],{"class":105},"shDkW"," open",[31,108,109],{"class":44},"(",[31,111,113],{"class":112},"shDUQ","state",[31,115,116],{"class":44},":",[31,118,49],{"class":92},[31,120,121],{"class":44},")",[31,123,96],{"class":44},[31,125,127,130,133,137,140,142,145,147,150,152,155,157,159],{"class":33,"line":126},5,[31,128,129],{"class":48},"    state",[31,131,132],{"class":44},".",[31,134,136],{"class":135},"s4mR9","set",[31,138,109],{"class":139},"spAFX",[31,141,66],{"class":58},[31,143,144],{"class":62},"cart",[31,146,66],{"class":58},[31,148,149],{"class":44},",",[31,151,59],{"class":58},[31,153,154],{"class":62},"c42",[31,156,66],{"class":58},[31,158,121],{"class":139},[31,160,69],{"class":44},[31,162,164],{"class":33,"line":163},6,[31,165,76],{"emptyLinePlaceholder":75},[31,167,169,172,174,178,180,184],{"class":33,"line":168},7,[31,170,171],{"class":37},"    return",[31,173,45],{"class":44},[31,175,177],{"class":176},"sHtqg"," opened",[31,179,116],{"class":44},[31,181,183],{"class":182},"slmMI"," true",[31,185,186],{"class":44}," };\n",[31,188,190],{"class":33,"line":189},8,[31,191,192],{"class":44},"  }\n",[31,194,196],{"class":33,"line":195},9,[31,197,76],{"emptyLinePlaceholder":75},[31,199,201,203,206,208,210,212,214,216],{"class":33,"line":200},10,[31,202,102],{"class":88},[31,204,205],{"class":105}," current",[31,207,109],{"class":44},[31,209,113],{"class":112},[31,211,116],{"class":44},[31,213,49],{"class":92},[31,215,121],{"class":44},[31,217,96],{"class":44},[31,219,221,223,225,228,230,233,235,238,241,244,247,249,251,253,255,257,260,263],{"class":33,"line":220},11,[31,222,171],{"class":37},[31,224,45],{"class":44},[31,226,227],{"class":176}," cart",[31,229,116],{"class":44},[31,231,232],{"class":48}," state",[31,234,132],{"class":44},[31,236,237],{"class":135},"get",[31,239,240],{"class":44},"\u003C",[31,242,243],{"class":92},"string",[31,245,246],{"class":44},">",[31,248,109],{"class":139},[31,250,66],{"class":58},[31,252,144],{"class":62},[31,254,66],{"class":58},[31,256,121],{"class":139},[31,258,259],{"class":44}," ??",[31,261,262],{"class":58}," null",[31,264,186],{"class":44},[31,266,268],{"class":33,"line":267},12,[31,269,192],{"class":44},[31,271,273],{"class":33,"line":272},13,[31,274,275],{"class":44},"}\n",[13,277,278,279,282],{},"The operation names no cookie and no header. How each name is kept is said in\n",[17,280,281],{},"fougere.config.ts",", and a package brings the way to keep it:",[22,284,286],{"className":24,"code":285,"language":26,"meta":27,"style":27},"import '@fougere\u002Fstate-cookie';\n\nexport default defineFougere({\n  state: { cart: { cookie: { maxAge: 604800 } } },\n});\n",[17,287,288,301,305,320,358],{"__ignoreMap":27},[31,289,290,292,294,297,299],{"class":33,"line":34},[31,291,38],{"class":37},[31,293,59],{"class":58},[31,295,296],{"class":62},"@fougere\u002Fstate-cookie",[31,298,66],{"class":58},[31,300,69],{"class":44},[31,302,303],{"class":33,"line":72},[31,304,76],{"emptyLinePlaceholder":75},[31,306,307,309,311,314,317],{"class":33,"line":79},[31,308,82],{"class":37},[31,310,85],{"class":37},[31,312,313],{"class":135}," defineFougere",[31,315,109],{"class":316},"srlTG",[31,318,319],{"class":44},"{\n",[31,321,322,325,327,329,331,333,335,338,340,342,345,347,351,353,355],{"class":33,"line":99},[31,323,324],{"class":176},"  state",[31,326,116],{"class":44},[31,328,45],{"class":44},[31,330,227],{"class":176},[31,332,116],{"class":44},[31,334,45],{"class":44},[31,336,337],{"class":176}," cookie",[31,339,116],{"class":44},[31,341,45],{"class":44},[31,343,344],{"class":176}," maxAge",[31,346,116],{"class":44},[31,348,350],{"class":349},"s3dPA"," 604800",[31,352,52],{"class":44},[31,354,52],{"class":44},[31,356,357],{"class":44}," },\n",[31,359,360,363,365],{"class":33,"line":126},[31,361,362],{"class":44},"}",[31,364,121],{"class":316},[31,366,69],{"class":44},[13,368,369,370,373,374,377,378,381,382,385,386,389,390,393],{},"A cookie is ",[17,371,372],{},"HttpOnly",", ",[17,375,376],{},"SameSite=Lax"," and ",[17,379,380],{},"Path=\u002F"," unless the entry says otherwise\n(",[17,383,384],{},"sameSite: 'none'"," adds ",[17,387,388],{},"Secure","). ",[17,391,392],{},"state.delete('cart')"," removes it.",[395,396,398],"h2",{"id":397},"kept-in-a-session","Kept in a session",[13,400,401],{},"What is too large for a cookie, or must stay hidden from the caller, is kept server-side:",[22,403,405],{"className":24,"code":404,"language":26,"meta":27,"style":27},"import '@fougere\u002Fstate-session';\n\nexport default defineFougere({\n  state: {\n    locale: { cookie: {} },   \u002F\u002F its own cookie\n    cart: { session: {} },    \u002F\u002F in the session row\n    draft: { session: {} },   \u002F\u002F the same row\n  },\n});\n",[17,406,407,420,424,436,444,467,488,508,513],{"__ignoreMap":27},[31,408,409,411,413,416,418],{"class":33,"line":34},[31,410,38],{"class":37},[31,412,59],{"class":58},[31,414,415],{"class":62},"@fougere\u002Fstate-session",[31,417,66],{"class":58},[31,419,69],{"class":44},[31,421,422],{"class":33,"line":72},[31,423,76],{"emptyLinePlaceholder":75},[31,425,426,428,430,432,434],{"class":33,"line":79},[31,427,82],{"class":37},[31,429,85],{"class":37},[31,431,313],{"class":135},[31,433,109],{"class":316},[31,435,319],{"class":44},[31,437,438,440,442],{"class":33,"line":99},[31,439,324],{"class":176},[31,441,116],{"class":44},[31,443,96],{"class":44},[31,445,446,449,451,453,455,457,460,463],{"class":33,"line":126},[31,447,448],{"class":176},"    locale",[31,450,116],{"class":44},[31,452,45],{"class":44},[31,454,337],{"class":176},[31,456,116],{"class":44},[31,458,459],{"class":44}," {}",[31,461,462],{"class":44}," },",[31,464,466],{"class":465},"skXKP","   \u002F\u002F its own cookie\n",[31,468,469,472,474,476,479,481,483,485],{"class":33,"line":163},[31,470,471],{"class":176},"    cart",[31,473,116],{"class":44},[31,475,45],{"class":44},[31,477,478],{"class":176}," session",[31,480,116],{"class":44},[31,482,459],{"class":44},[31,484,462],{"class":44},[31,486,487],{"class":465},"    \u002F\u002F in the session row\n",[31,489,490,493,495,497,499,501,503,505],{"class":33,"line":168},[31,491,492],{"class":176},"    draft",[31,494,116],{"class":44},[31,496,45],{"class":44},[31,498,478],{"class":176},[31,500,116],{"class":44},[31,502,459],{"class":44},[31,504,462],{"class":44},[31,506,507],{"class":465},"   \u002F\u002F the same row\n",[31,509,510],{"class":33,"line":189},[31,511,512],{"class":44},"  },\n",[31,514,515,517,519],{"class":33,"line":195},[31,516,362],{"class":44},[31,518,121],{"class":316},[31,520,69],{"class":44},[13,522,523,524,527,528,530,531,534,535,538,539,542,543,545],{},"The caller holds one cookie, ",[17,525,526],{},"session",", with a random reference. Every name kept in ",[17,529,526],{}," lives in\none ",[17,532,533],{},"stateSession"," row, an entity like any other: it sits in the default source, and ",[17,536,537],{},"fougere migrate","\ncreates its table. The op does not change — ",[17,540,541],{},"state.set('cart', …)"," whichever way ",[17,544,144],{}," is kept. A\nsession whose names are all forgotten is deleted, and its cookie expired.",[13,547,548,549,552],{},"A name ",[17,550,551],{},"state:"," does not declare is refused rather than kept in a session by default: a session needs a\ntable, and no table appears because an op wrote a value.",[395,554,556],{"id":555},"what-travels-and-what-is-written","What travels, and what is written",[558,559,560,572,578,584],"ul",{},[561,562,563,567,568,571],"li",{},[564,565,566],"strong",{},"Signed, not encrypted."," The value leaves with a signature made with ",[17,569,570],{},"FOUGERE_STATE_KEY",". The\ncaller can read it and cannot change it: a changed value reads as absent. What must stay hidden\nis kept in a session.",[561,573,574,577],{},[564,575,576],{},"Written only on an answer."," What the calls of a request wrote leaves with the answer; a\nrefused request keeps nothing.",[561,579,580,583],{},[564,581,582],{},"One request, every call."," A GraphQL document making three calls writes once, with the answer.",[561,585,586,589],{},[564,587,588],{},"Every HTTP door carries it"," — REST, GraphQL, and the envelope a page calls. A call one process\nmakes to another carries no caller state: it has no caller.",[395,591,593],{"id":592},"what-is-refused","What is refused",[558,595,596,605,629],{},[561,597,598,601,602,604],{},[17,599,600],{},"state.set"," on a name ",[17,603,551],{}," does not declare, or one the door cannot carry, naming what the\ndoor keeps.",[561,606,607,609,610,613,614,617,618,621,622,624,625,628],{},[17,608,600],{}," outside a request at a door — a call made in process, or a runtime with no async\ncontext. On a Worker, ",[17,611,612],{},"nodejs_compat"," is that context; ",[17,615,616],{},"fougere check"," names a\n",[17,619,620],{},"wrangler"," config declaring ",[17,623,551],{}," without it (",[17,626,627],{},"state-without-async-context",").",[561,630,631,632,634],{},"With no ",[17,633,570],{},", the boot warns: the key dies with the process, so a restart or a\nsecond replica reads every value as absent.",[636,637,638],"style",{},"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 .s15xx, html code.shiki .s15xx{--shiki-light:#39ADB5;--shiki-default:#A3B0A5;--shiki-dark:#89DDFF}html pre.shiki code .sPEhv, html code.shiki .sPEhv{--shiki-light:#90A4AE;--shiki-default:#DDE5DA;--shiki-dark:#BABED8}html pre.shiki code .sDDC1, html code.shiki .sDDC1{--shiki-light:#39ADB5;--shiki-default:#EE9F6B;--shiki-dark:#89DDFF}html pre.shiki code .sN-8n, html code.shiki .sN-8n{--shiki-light:#91B859;--shiki-default:#EE9F6B;--shiki-dark:#C3E88D}html pre.shiki code .s76I7, html code.shiki .s76I7{--shiki-light:#9C3EDA;--shiki-default:#8FCF86;--shiki-dark:#C792EA}html pre.shiki code .sBZYL, html code.shiki .sBZYL{--shiki-light:#E2931D;--shiki-default:#EFCD8F;--shiki-dark:#FFCB6B}html pre.shiki code .shDkW, html code.shiki .shDkW{--shiki-light:#E53935;--shiki-default:#C9B6EA;--shiki-dark:#F07178}html pre.shiki code .shDUQ, html code.shiki .shDUQ{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#DDE5DA;--shiki-default-font-style:inherit;--shiki-dark:#BABED8;--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 .spAFX, html code.shiki .spAFX{--shiki-light:#E53935;--shiki-default:#A3B0A5;--shiki-dark:#F07178}html pre.shiki code .sHtqg, html code.shiki .sHtqg{--shiki-light:#E53935;--shiki-default:#93CFC0;--shiki-dark:#F07178}html pre.shiki code .slmMI, html code.shiki .slmMI{--shiki-light:#FF5370;--shiki-default:#EE9F6B;--shiki-dark:#FF9CAC}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 .srlTG, html code.shiki .srlTG{--shiki-light:#90A4AE;--shiki-default:#A3B0A5;--shiki-dark:#BABED8}html pre.shiki code .s3dPA, html code.shiki .s3dPA{--shiki-light:#F76D47;--shiki-default:#EE9F6B;--shiki-dark:#F78C6C}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}",{"title":27,"searchDepth":72,"depth":72,"links":640},[641,642,643],{"id":397,"depth":72,"text":398},{"id":555,"depth":72,"text":556},{"id":592,"depth":72,"text":593},"A cart in a signed cookie, then a session row.","md",[19,551],"task",{},"\u002Fdocs\u002Faccess\u002Fstate",{"title":8,"description":644},"docs\u002F2.access\u002F2.state",null,[654,655],"configuration","handler","LaETkBtt_GOyYbcO-ZoaBbZyWDr-cOD7rfuv5b9S3mc",[658,661,664,667,670,673,676,679,682,688,690,695,699,703,707,711,715,720,724,728,733,737,742,746,750,754,758,762,766,770,774,778,782,786,790,794,798,801,804,807,810,813,816,819,822,825,828],{"path":659,"title":660,"uses":652},"\u002Fdocs\u002Fconcepts\u002Fentity","Entity",{"path":662,"title":663,"uses":652},"\u002Fdocs\u002Fconcepts\u002Fhandler","Handler",{"path":665,"title":666,"uses":652},"\u002Fdocs\u002Fconcepts\u002Frepository","Repository",{"path":668,"title":669,"uses":652},"\u002Fdocs\u002Fconcepts\u002Ffrond","Frond",{"path":671,"title":672,"uses":652},"\u002Fdocs\u002Fconcepts\u002Ffacade","Facade",{"path":674,"title":675,"uses":652},"\u002Fdocs\u002Fconcepts\u002Ffact","Fact",{"path":677,"title":678,"uses":652},"\u002Fdocs\u002Fconcepts\u002Fport","Port",{"path":680,"title":681,"uses":652},"\u002Fdocs\u002Fconcepts\u002Fconfiguration","Configuration",{"path":683,"title":684,"uses":685},"\u002Fdocs\u002Faccess\u002Fauthentication","Authentication",[686,687],"port","frond",{"path":649,"title":8,"uses":689},[654,655],{"path":691,"title":692,"uses":693},"\u002Fdocs\u002Fdata\u002Fsql","SQLite or Postgres",[694,654],"entity",{"path":696,"title":697,"uses":698},"\u002Fdocs\u002Fdata\u002Fseveral-databases","Several databases",[654,694],{"path":700,"title":701,"uses":702},"\u002Fdocs\u002Fdata\u002Fcomputed-field","A computed field",[694,686],{"path":704,"title":705,"uses":706},"\u002Fdocs\u002Fdata\u002Fevolve","Evolve a schema",[694],{"path":708,"title":709,"uses":710},"\u002Fdocs\u002Fdata\u002Fseeds","Seed data",[694],{"path":712,"title":713,"uses":714},"\u002Fdocs\u002Fdata\u002Fvalues","Read settings and secrets",[694,654],{"path":716,"title":717,"uses":718},"\u002Fdocs\u002Fdata\u002Fmirror","Mirror a source you cannot query",[719],"repository",{"path":721,"title":722,"uses":723},"\u002Fdocs\u002Fdata\u002Ftogether","Two writes as one",[719],{"path":725,"title":726,"uses":727},"\u002Fdocs\u002Fbehaviour\u002Faround-every-call","Around every call",[686,687],{"path":729,"title":730,"uses":731},"\u002Fdocs\u002Fbehaviour\u002Ffinish-a-fact","Finish a fact",[732],"fact",{"path":734,"title":735,"uses":736},"\u002Fdocs\u002Fserve\u002Frest-graphql","REST, OpenAPI, GraphQL",[655,654],{"path":738,"title":739,"uses":740},"\u002Fdocs\u002Fserve\u002Fpages","Pages: queries and commands",[655,741],"facade",{"path":743,"title":744,"uses":745},"\u002Fdocs\u002Fserve\u002Fforms","A form",[694],{"path":747,"title":748,"uses":749},"\u002Fdocs\u002Fserve\u002Fadmin","An admin panel",[655],{"path":751,"title":752,"uses":753},"\u002Fdocs\u002Frun\u002Fdeploy","Deploy a split",[654,687],{"path":755,"title":756,"uses":757},"\u002Fdocs\u002Frun\u002Fsecure","Secure calls between processes",[654,687],{"path":759,"title":760,"uses":761},"\u002Fdocs\u002Frun\u002Flifecycle","Reload and shut down",[654],{"path":763,"title":764,"uses":765},"\u002Fdocs\u002Frun\u002Fobserve","Observe",[654,655],{"path":767,"title":768,"uses":769},"\u002Fdocs\u002Frun\u002Fdev-panel","The dev panel",[655],{"path":771,"title":772,"uses":773},"\u002Fdocs\u002Frun\u002Ftest","Test",[694,686],{"path":775,"title":776,"uses":777},"\u002Fdocs\u002Fadopt\u002Fnew-project","Start a project",[687,654],{"path":779,"title":780,"uses":781},"\u002Fdocs\u002Fadopt\u002Fexisting-app","Add Fougere to an existing app",[687,654],{"path":783,"title":784,"uses":785},"\u002Fdocs\u002Fadopt\u002Fbring-your-schema","Bring your schema",[694],{"path":787,"title":788,"uses":789},"\u002Fdocs\u002Fadopt\u002Fhosts","Pick a host",[654],{"path":791,"title":792,"uses":793},"\u002Fdocs\u002Fadopt\u002Fanother-repository","A frond from another repository",[741,687],{"path":795,"title":796,"uses":797},"\u002Fdocs\u002Fadopt\u002Fdemos","Demos",[],{"path":799,"title":800,"uses":652},"\u002Fdocs\u002Fextending\u002Fscan","How the scan reads a project",{"path":802,"title":803,"uses":652},"\u002Fdocs\u002Fextending\u002Fwithout-compiler","Boot without the compiler",{"path":805,"title":806,"uses":652},"\u002Fdocs\u002Fextending\u002Fboot","The boot, step by step",{"path":808,"title":809,"uses":652},"\u002Fdocs\u002Fextending\u002Fcard-and-wire","The card and the wire",{"path":811,"title":812,"uses":652},"\u002Fdocs\u002Fextending\u002Fextension-points","Registries and extension points",{"path":814,"title":815,"uses":652},"\u002Fdocs\u002Fextending\u002Fvocabulary","Teach a word",{"path":817,"title":818,"uses":652},"\u002Fdocs\u002Fextending\u002Fextensions","Run code at boot and shutdown",{"path":820,"title":821,"uses":652},"\u002Fdocs\u002Fextending\u002Fsource-adapter","Write a source adapter",{"path":823,"title":824,"uses":652},"\u002Fdocs\u002Fextending\u002Fsurface","Write a surface",{"path":826,"title":827,"uses":652},"\u002Fdocs\u002Fextending\u002Fforeign-frond","A frond in another language",{"path":829,"title":830,"uses":652},"\u002Fdocs","What is Fougere",[832],{"title":833,"path":829,"stem":834,"children":835,"page":-1},"Docs","docs",[836,838,859,867,888,897,910,927,944],{"title":830,"path":829,"stem":837},"docs\u002Findex",{"title":839,"path":840,"stem":841,"children":842,"page":5},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F1.concepts",[843,845,847,849,851,853,855,857],{"title":660,"path":659,"stem":844},"docs\u002F1.concepts\u002F1.entity",{"title":663,"path":662,"stem":846},"docs\u002F1.concepts\u002F2.handler",{"title":666,"path":665,"stem":848},"docs\u002F1.concepts\u002F3.repository",{"title":669,"path":668,"stem":850},"docs\u002F1.concepts\u002F4.frond",{"title":672,"path":671,"stem":852},"docs\u002F1.concepts\u002F5.facade",{"title":675,"path":674,"stem":854},"docs\u002F1.concepts\u002F6.fact",{"title":678,"path":677,"stem":856},"docs\u002F1.concepts\u002F7.port",{"title":681,"path":680,"stem":858},"docs\u002F1.concepts\u002F8.configuration",{"title":860,"path":861,"stem":862,"children":863,"page":5},"Access","\u002Fdocs\u002Faccess","docs\u002F2.access",[864,866],{"title":684,"path":683,"stem":865},"docs\u002F2.access\u002F1.authentication",{"title":8,"path":649,"stem":651},{"title":868,"path":869,"stem":870,"children":871,"page":5},"Data","\u002Fdocs\u002Fdata","docs\u002F3.data",[872,874,876,878,880,882,884,886],{"title":692,"path":691,"stem":873},"docs\u002F3.data\u002F1.sql",{"title":697,"path":696,"stem":875},"docs\u002F3.data\u002F2.several-databases",{"title":701,"path":700,"stem":877},"docs\u002F3.data\u002F3.computed-field",{"title":705,"path":704,"stem":879},"docs\u002F3.data\u002F4.evolve",{"title":709,"path":708,"stem":881},"docs\u002F3.data\u002F5.seeds",{"title":713,"path":712,"stem":883},"docs\u002F3.data\u002F6.values",{"title":717,"path":716,"stem":885},"docs\u002F3.data\u002F7.mirror",{"title":722,"path":721,"stem":887},"docs\u002F3.data\u002F8.together",{"title":889,"path":890,"stem":891,"children":892,"page":5},"Behaviour","\u002Fdocs\u002Fbehaviour","docs\u002F4.behaviour",[893,895],{"title":726,"path":725,"stem":894},"docs\u002F4.behaviour\u002F1.around-every-call",{"title":730,"path":729,"stem":896},"docs\u002F4.behaviour\u002F2.finish-a-fact",{"title":898,"path":899,"stem":900,"children":901,"page":5},"Serve","\u002Fdocs\u002Fserve","docs\u002F5.serve",[902,904,906,908],{"title":735,"path":734,"stem":903},"docs\u002F5.serve\u002F1.rest-graphql",{"title":739,"path":738,"stem":905},"docs\u002F5.serve\u002F2.pages",{"title":744,"path":743,"stem":907},"docs\u002F5.serve\u002F3.forms",{"title":748,"path":747,"stem":909},"docs\u002F5.serve\u002F4.admin",{"title":911,"path":912,"stem":913,"children":914,"page":5},"Run","\u002Fdocs\u002Frun","docs\u002F6.run",[915,917,919,921,923,925],{"title":752,"path":751,"stem":916},"docs\u002F6.run\u002F1.deploy",{"title":756,"path":755,"stem":918},"docs\u002F6.run\u002F2.secure",{"title":760,"path":759,"stem":920},"docs\u002F6.run\u002F3.lifecycle",{"title":764,"path":763,"stem":922},"docs\u002F6.run\u002F4.observe",{"title":768,"path":767,"stem":924},"docs\u002F6.run\u002F5.dev-panel",{"title":772,"path":771,"stem":926},"docs\u002F6.run\u002F6.test",{"title":928,"path":929,"stem":930,"children":931,"page":5},"Adopt","\u002Fdocs\u002Fadopt","docs\u002F7.adopt",[932,934,936,938,940,942],{"title":776,"path":775,"stem":933},"docs\u002F7.adopt\u002F1.new-project",{"title":780,"path":779,"stem":935},"docs\u002F7.adopt\u002F2.existing-app",{"title":784,"path":783,"stem":937},"docs\u002F7.adopt\u002F3.bring-your-schema",{"title":788,"path":787,"stem":939},"docs\u002F7.adopt\u002F4.hosts",{"title":792,"path":791,"stem":941},"docs\u002F7.adopt\u002F5.another-repository",{"title":796,"path":795,"stem":943},"docs\u002F7.adopt\u002F6.demos",{"title":945,"path":946,"stem":947,"children":948,"page":5},"Extending","\u002Fdocs\u002Fextending","docs\u002F8.extending",[949,951,953,955,957,959,961,963,965,967],{"title":800,"path":799,"stem":950},"docs\u002F8.extending\u002F1.scan",{"title":803,"path":802,"stem":952},"docs\u002F8.extending\u002F10.without-compiler",{"title":806,"path":805,"stem":954},"docs\u002F8.extending\u002F2.boot",{"title":809,"path":808,"stem":956},"docs\u002F8.extending\u002F3.card-and-wire",{"title":812,"path":811,"stem":958},"docs\u002F8.extending\u002F4.extension-points",{"title":815,"path":814,"stem":960},"docs\u002F8.extending\u002F5.vocabulary",{"title":818,"path":817,"stem":962},"docs\u002F8.extending\u002F6.extensions",{"title":821,"path":820,"stem":964},"docs\u002F8.extending\u002F7.source-adapter",{"title":824,"path":823,"stem":966},"docs\u002F8.extending\u002F8.surface",{"title":827,"path":826,"stem":968},"docs\u002F8.extending\u002F9.foreign-frond",1794396614518]