[{"data":1,"prerenderedAt":887},["ShallowReactive",2],{"fougere:post.list:{}":3,"docs:\u002Fdocs\u002Frun\u002Flifecycle":6,"docs-uses":574,"docs-nav":749},{"items":4,"hasMore":5},[],false,{"id":7,"title":8,"body":9,"description":559,"extension":560,"forms":561,"kind":564,"meta":565,"navigation":566,"path":567,"seo":568,"stem":569,"step":570,"uses":571,"__hash__":573},"docs\u002Fdocs\u002F6.run\u002F3.lifecycle.md","Reload and shut down",{"type":10,"value":11,"toc":552},"minimark",[12,16,25,40,45,56,240,246,259,263,266,288,299,303,306,348,354,357,380,383,387,394,504,530,537,541,548],[13,14,15],"p",{},"A running app may need to read its config again, be replaced by a fresh one, or shut down without\ncutting calls in half. What it can do without a restart depends on one distinction:",[17,18,19],"blockquote",{},[13,20,21],{},[22,23,24],"strong",{},"A value that is CONSULTED can change under a running app. A value that was CONSUMED\nto build something cannot, without rebuilding what it built.",[13,26,27,31,32,35,36,39],{},[28,29,30],"code",{},"logLevel"," is consulted at every emission. ",[28,33,34],{},"sources:"," opened connections, ",[28,37,38],{},"ports:"," registered a\nclass, the entities built facades — those were consumed.",[41,42,44],"h2",{"id":43},"re-reading-the-config","Re-reading the config",[13,46,47,50,51,55],{},[28,48,49],{},"applyConfig"," is the one place that answers ",[52,53,54],"em",{},"what a re-read changes in a running app",". It\napplies what is consulted and reports the rest instead of ignoring it:",[57,58,63],"pre",{"className":59,"code":60,"language":61,"meta":62,"style":62},"language-ts shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","\u002F\u002F the host owns the process, so the host owns the signal — Fougere catches none\nprocess.on('SIGHUP', async () => {\n  const next = await loadConfig(root, { fresh: true });\n  const { applied, pending } = applyConfig(next, inForce);\n  inForce = next;\n  \u002F\u002F applied: ['logLevel: warn → debug']\n  \u002F\u002F pending: ['db']  — changed in the file, and it opened a connection\n});\n","ts","",[28,64,65,74,120,170,206,218,224,230],{"__ignoreMap":62},[66,67,70],"span",{"class":68,"line":69},"line",1,[66,71,73],{"class":72},"skXKP","\u002F\u002F the host owns the process, so the host owns the signal — Fougere catches none\n",[66,75,77,81,85,89,93,97,101,103,106,110,113,117],{"class":68,"line":76},2,[66,78,80],{"class":79},"sPEhv","process",[66,82,84],{"class":83},"s15xx",".",[66,86,88],{"class":87},"s4mR9","on",[66,90,92],{"class":91},"srlTG","(",[66,94,96],{"class":95},"sDDC1","'",[66,98,100],{"class":99},"sN-8n","SIGHUP",[66,102,96],{"class":95},[66,104,105],{"class":83},",",[66,107,109],{"class":108},"s76I7"," async",[66,111,112],{"class":83}," ()",[66,114,116],{"class":115},"scTuO"," =>",[66,118,119],{"class":83}," {\n",[66,121,123,126,129,132,136,139,142,145,147,150,154,157,161,164,167],{"class":68,"line":122},3,[66,124,125],{"class":108},"  const",[66,127,128],{"class":79}," next",[66,130,131],{"class":83}," =",[66,133,135],{"class":134},"sK6XW"," await",[66,137,138],{"class":87}," loadConfig",[66,140,92],{"class":141},"spAFX",[66,143,144],{"class":79},"root",[66,146,105],{"class":83},[66,148,149],{"class":83}," {",[66,151,153],{"class":152},"sHtqg"," fresh",[66,155,156],{"class":83},":",[66,158,160],{"class":159},"slmMI"," true",[66,162,163],{"class":83}," }",[66,165,166],{"class":141},")",[66,168,169],{"class":83},";\n",[66,171,173,175,177,180,182,185,187,189,192,194,197,199,202,204],{"class":68,"line":172},4,[66,174,125],{"class":108},[66,176,149],{"class":83},[66,178,179],{"class":79}," applied",[66,181,105],{"class":83},[66,183,184],{"class":79}," pending",[66,186,163],{"class":83},[66,188,131],{"class":83},[66,190,191],{"class":87}," applyConfig",[66,193,92],{"class":141},[66,195,196],{"class":79},"next",[66,198,105],{"class":83},[66,200,201],{"class":79}," inForce",[66,203,166],{"class":141},[66,205,169],{"class":83},[66,207,209,212,214,216],{"class":68,"line":208},5,[66,210,211],{"class":79},"  inForce",[66,213,131],{"class":83},[66,215,128],{"class":79},[66,217,169],{"class":83},[66,219,221],{"class":68,"line":220},6,[66,222,223],{"class":72},"  \u002F\u002F applied: ['logLevel: warn → debug']\n",[66,225,227],{"class":68,"line":226},7,[66,228,229],{"class":72},"  \u002F\u002F pending: ['db']  — changed in the file, and it opened a connection\n",[66,231,233,236,238],{"class":68,"line":232},8,[66,234,235],{"class":83},"}",[66,237,166],{"class":91},[66,239,169],{"class":83},[13,241,242,245],{},[28,243,244],{},"{ fresh: true }"," is not decoration: a module is cached by its specifier, so a second read\nof an edited file hands back the first one.",[13,247,248,249,251,252,254,255,258],{},"The consulted keys are the ones ",[28,250,49],{}," acts on, listed beside the code that does —\n",[28,253,30],{}," and ",[28,256,257],{},"maxBodyBytes",". A logger built before the change obeys it, children included: the level is\nheld once for the process rather than copied into each instance.",[41,260,262],{"id":261},"reloading-the-app","Reloading the app",[13,264,265],{},"For everything else, the value cannot move under what it built — so the thing is built\nagain. One app is instantiated, the previous one let go:",[57,267,269],{"className":59,"code":268,"language":61,"meta":62,"style":62},"await reloadFougere();     \u002F\u002F instantiate, drain the old, release it\n",[28,270,271],{"__ignoreMap":62},[66,272,273,276,279,282,285],{"class":68,"line":69},[66,274,275],{"class":134},"await",[66,277,278],{"class":87}," reloadFougere",[66,280,281],{"class":91},"()",[66,283,284],{"class":83},";",[66,286,287],{"class":72},"     \u002F\u002F instantiate, drain the old, release it\n",[13,289,290,291,294,295,298],{},"It works because every door reaches the app through ",[28,292,293],{},"useFougereApp()"," ",[22,296,297],{},"inside the request it\nserves",", and none keeps it across two. The new app is up before the old one is\nreleased, so a boot that fails leaves the previous one serving.",[41,300,302],{"id":301},"draining","Draining",[13,304,305],{},"Releasing an app closes its storage connection and every frond scope — which is what the\ncalls still running are standing on. So they are waited for:",[57,307,309],{"className":59,"code":308,"language":61,"meta":62,"style":62},"await app.drain();      \u002F\u002F stop taking calls, wait for the running ones\nawait app.dispose();    \u002F\u002F then close the scopes and the connection\n",[28,310,311,330],{"__ignoreMap":62},[66,312,313,315,318,320,323,325,327],{"class":68,"line":69},[66,314,275],{"class":134},[66,316,317],{"class":79}," app",[66,319,84],{"class":83},[66,321,322],{"class":87},"drain",[66,324,281],{"class":91},[66,326,284],{"class":83},[66,328,329],{"class":72},"      \u002F\u002F stop taking calls, wait for the running ones\n",[66,331,332,334,336,338,341,343,345],{"class":68,"line":76},[66,333,275],{"class":134},[66,335,317],{"class":79},[66,337,84],{"class":83},[66,339,340],{"class":87},"dispose",[66,342,281],{"class":91},[66,344,284],{"class":83},[66,346,347],{"class":72},"    \u002F\u002F then close the scopes and the connection\n",[13,349,350,353],{},[28,351,352],{},"app.inFlight()"," is the count, taken at the single path all three facades and the wire share,\nso one number covers them. A nested call counts twice — the app is not idle while an inner\nop is running.",[13,355,356],{},"Two refusals, both deliberate:",[358,359,360,370],"ul",{},[361,362,363,369],"li",{},[22,364,365,368],{},[28,366,367],{},"drain(timeoutMs)"," rejects on its deadline",", naming how many calls are left, rather\nthan resolving as if it had worked. Its caller is about to close a connection under\nwhatever remains, so the decision is theirs.",[361,371,372,375,376,379],{},[22,373,374],{},"A call arriving after the facade closed is refused"," with ",[28,377,378],{},"SERVICE_UNAVAILABLE",". The\nhandle already points at the new app, so that caller kept a reference across the turn.",[13,381,382],{},"Waiting and releasing stay two gestures: a script releases at once, a host reloading the app\ndrains first.",[41,384,386],{"id":385},"shutting-down","Shutting down",[13,388,389,390,393],{},"The same two gestures answer ",[28,391,392],{},"SIGTERM",", and nothing else is needed:",[57,395,397],{"className":59,"code":396,"language":61,"meta":62,"style":62},"process.on('SIGTERM', async () => {\n  const app = await useFougereApp();\n  await app.drain(10_000);\n  await app.dispose();\n  process.exit(0);\n});\n",[28,398,399,425,442,463,477,496],{"__ignoreMap":62},[66,400,401,403,405,407,409,411,413,415,417,419,421,423],{"class":68,"line":69},[66,402,80],{"class":79},[66,404,84],{"class":83},[66,406,88],{"class":87},[66,408,92],{"class":91},[66,410,96],{"class":95},[66,412,392],{"class":99},[66,414,96],{"class":95},[66,416,105],{"class":83},[66,418,109],{"class":108},[66,420,112],{"class":83},[66,422,116],{"class":115},[66,424,119],{"class":83},[66,426,427,429,431,433,435,438,440],{"class":68,"line":76},[66,428,125],{"class":108},[66,430,317],{"class":79},[66,432,131],{"class":83},[66,434,135],{"class":134},[66,436,437],{"class":87}," useFougereApp",[66,439,281],{"class":141},[66,441,169],{"class":83},[66,443,444,447,449,451,453,455,459,461],{"class":68,"line":122},[66,445,446],{"class":134},"  await",[66,448,317],{"class":79},[66,450,84],{"class":83},[66,452,322],{"class":87},[66,454,92],{"class":141},[66,456,458],{"class":457},"s3dPA","10_000",[66,460,166],{"class":141},[66,462,169],{"class":83},[66,464,465,467,469,471,473,475],{"class":68,"line":172},[66,466,446],{"class":134},[66,468,317],{"class":79},[66,470,84],{"class":83},[66,472,340],{"class":87},[66,474,281],{"class":141},[66,476,169],{"class":83},[66,478,479,482,484,487,489,492,494],{"class":68,"line":208},[66,480,481],{"class":79},"  process",[66,483,84],{"class":83},[66,485,486],{"class":87},"exit",[66,488,92],{"class":141},[66,490,491],{"class":457},"0",[66,493,166],{"class":141},[66,495,169],{"class":83},[66,497,498,500,502],{"class":68,"line":220},[66,499,235],{"class":83},[66,501,166],{"class":91},[66,503,169],{"class":83},[13,505,506,509,510,513,514,517,518,521,522,525,526,529],{},[28,507,508],{},"dispose()"," releases in reverse of construction, at three levels: each extension's ",[28,511,512],{},"down","\n(built last), then the container — each scope disposing the scopes it opened, deepest first,\nthen what it built itself — then the storage connection that was handed in and opened before\nany of it existed.\nA class the container builds that holds something closes it in ",[28,515,516],{},"[Symbol.asyncDispose]()"," — the\nmethod ",[28,519,520],{},"await using"," calls — or ",[28,523,524],{},"[Symbol.dispose]()",": there is then one of it per frond, and that frond's scope closes it.\nThe method is what is read, at runtime, so no ",[28,527,528],{},"implements"," is needed and a port's realization\ncounts like any provider. A class without it is built per consumer and closed by nobody.",[13,531,532,533,536],{},"Failures travel together in an ",[28,534,535],{},"AggregateError"," rather than the first one silencing the\nrest: everything gets told to close.",[41,538,540],{"id":539},"what-is-not-here","What is not here",[13,542,543,544,547],{},"Fougere catches no signal of its own. A process belongs to its host, and the logger it\nships runs on Cloudflare Workers where ",[28,545,546],{},"process.on"," does not exist.",[549,550,551],"style",{},"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 .sPEhv, html code.shiki .sPEhv{--shiki-light:#90A4AE;--shiki-default:#DDE5DA;--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 .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 .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 .scTuO, html code.shiki .scTuO{--shiki-light:#9C3EDA;--shiki-default:#A3B0A5;--shiki-dark:#C792EA}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 .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 .s3dPA, html code.shiki .s3dPA{--shiki-light:#F76D47;--shiki-default:#EE9F6B;--shiki-dark:#F78C6C}",{"title":62,"searchDepth":76,"depth":76,"links":553},[554,555,556,557,558],{"id":43,"depth":76,"text":44},{"id":261,"depth":76,"text":262},{"id":301,"depth":76,"text":302},{"id":385,"depth":76,"text":386},{"id":539,"depth":76,"text":540},"A config re-read under a running app, and a clean drain.","md",[562,563],"app.drain","app.dispose","task",{},true,"\u002Fdocs\u002Frun\u002Flifecycle",{"title":8,"description":559},"docs\u002F6.run\u002F3.lifecycle",null,[572],"configuration","U4rYWjJX3nPkAYz9Jf3ocmtrAx4iOQiyEGybDmCOMtk",[575,578,581,584,587,590,593,596,599,605,610,615,619,623,627,631,635,640,644,648,653,657,662,666,670,674,678,680,684,688,692,696,700,704,708,712,716,719,722,725,728,731,734,737,740,743,746],{"path":576,"title":577,"uses":570},"\u002Fdocs\u002Fconcepts\u002Fentity","Entity",{"path":579,"title":580,"uses":570},"\u002Fdocs\u002Fconcepts\u002Fhandler","Handler",{"path":582,"title":583,"uses":570},"\u002Fdocs\u002Fconcepts\u002Frepository","Repository",{"path":585,"title":586,"uses":570},"\u002Fdocs\u002Fconcepts\u002Ffrond","Frond",{"path":588,"title":589,"uses":570},"\u002Fdocs\u002Fconcepts\u002Ffacade","Facade",{"path":591,"title":592,"uses":570},"\u002Fdocs\u002Fconcepts\u002Ffact","Fact",{"path":594,"title":595,"uses":570},"\u002Fdocs\u002Fconcepts\u002Fport","Port",{"path":597,"title":598,"uses":570},"\u002Fdocs\u002Fconcepts\u002Fconfiguration","Configuration",{"path":600,"title":601,"uses":602},"\u002Fdocs\u002Faccess\u002Fauthentication","Authentication",[603,604],"port","frond",{"path":606,"title":607,"uses":608},"\u002Fdocs\u002Faccess\u002Fstate","Keep a caller's state",[572,609],"handler",{"path":611,"title":612,"uses":613},"\u002Fdocs\u002Fdata\u002Fsql","SQLite or Postgres",[614,572],"entity",{"path":616,"title":617,"uses":618},"\u002Fdocs\u002Fdata\u002Fseveral-databases","Several databases",[572,614],{"path":620,"title":621,"uses":622},"\u002Fdocs\u002Fdata\u002Fcomputed-field","A computed field",[614,603],{"path":624,"title":625,"uses":626},"\u002Fdocs\u002Fdata\u002Fevolve","Evolve a schema",[614],{"path":628,"title":629,"uses":630},"\u002Fdocs\u002Fdata\u002Fseeds","Seed data",[614],{"path":632,"title":633,"uses":634},"\u002Fdocs\u002Fdata\u002Fvalues","Read settings and secrets",[614,572],{"path":636,"title":637,"uses":638},"\u002Fdocs\u002Fdata\u002Fmirror","Mirror a source you cannot query",[639],"repository",{"path":641,"title":642,"uses":643},"\u002Fdocs\u002Fdata\u002Ftogether","Two writes as one",[639],{"path":645,"title":646,"uses":647},"\u002Fdocs\u002Fbehaviour\u002Faround-every-call","Around every call",[603,604],{"path":649,"title":650,"uses":651},"\u002Fdocs\u002Fbehaviour\u002Ffinish-a-fact","Finish a fact",[652],"fact",{"path":654,"title":655,"uses":656},"\u002Fdocs\u002Fserve\u002Frest-graphql","REST, OpenAPI, GraphQL",[609,572],{"path":658,"title":659,"uses":660},"\u002Fdocs\u002Fserve\u002Fpages","Pages: queries and commands",[609,661],"facade",{"path":663,"title":664,"uses":665},"\u002Fdocs\u002Fserve\u002Fforms","A form",[614],{"path":667,"title":668,"uses":669},"\u002Fdocs\u002Fserve\u002Fadmin","An admin panel",[609],{"path":671,"title":672,"uses":673},"\u002Fdocs\u002Frun\u002Fdeploy","Deploy a split",[572,604],{"path":675,"title":676,"uses":677},"\u002Fdocs\u002Frun\u002Fsecure","Secure calls between processes",[572,604],{"path":567,"title":8,"uses":679},[572],{"path":681,"title":682,"uses":683},"\u002Fdocs\u002Frun\u002Fobserve","Observe",[572,609],{"path":685,"title":686,"uses":687},"\u002Fdocs\u002Frun\u002Fdev-panel","The dev panel",[609],{"path":689,"title":690,"uses":691},"\u002Fdocs\u002Frun\u002Ftest","Test",[614,603],{"path":693,"title":694,"uses":695},"\u002Fdocs\u002Fadopt\u002Fnew-project","Start a project",[604,572],{"path":697,"title":698,"uses":699},"\u002Fdocs\u002Fadopt\u002Fexisting-app","Add Fougere to an existing app",[604,572],{"path":701,"title":702,"uses":703},"\u002Fdocs\u002Fadopt\u002Fbring-your-schema","Bring your schema",[614],{"path":705,"title":706,"uses":707},"\u002Fdocs\u002Fadopt\u002Fhosts","Pick a host",[572],{"path":709,"title":710,"uses":711},"\u002Fdocs\u002Fadopt\u002Fanother-repository","A frond from another repository",[661,604],{"path":713,"title":714,"uses":715},"\u002Fdocs\u002Fadopt\u002Fdemos","Demos",[],{"path":717,"title":718,"uses":570},"\u002Fdocs\u002Fextending\u002Fscan","How the scan reads a project",{"path":720,"title":721,"uses":570},"\u002Fdocs\u002Fextending\u002Fwithout-compiler","Boot without the compiler",{"path":723,"title":724,"uses":570},"\u002Fdocs\u002Fextending\u002Fboot","The boot, step by step",{"path":726,"title":727,"uses":570},"\u002Fdocs\u002Fextending\u002Fcard-and-wire","The card and the wire",{"path":729,"title":730,"uses":570},"\u002Fdocs\u002Fextending\u002Fextension-points","Registries and extension points",{"path":732,"title":733,"uses":570},"\u002Fdocs\u002Fextending\u002Fvocabulary","Teach a word",{"path":735,"title":736,"uses":570},"\u002Fdocs\u002Fextending\u002Fextensions","Run code at boot and shutdown",{"path":738,"title":739,"uses":570},"\u002Fdocs\u002Fextending\u002Fsource-adapter","Write a source adapter",{"path":741,"title":742,"uses":570},"\u002Fdocs\u002Fextending\u002Fsurface","Write a surface",{"path":744,"title":745,"uses":570},"\u002Fdocs\u002Fextending\u002Fforeign-frond","A frond in another language",{"path":747,"title":748,"uses":570},"\u002Fdocs","What is Fougere",[750],{"title":751,"path":747,"stem":752,"children":753,"page":-1},"Docs","docs",[754,756,777,786,807,816,829,845,862],{"title":748,"path":747,"stem":755},"docs\u002Findex",{"title":757,"path":758,"stem":759,"children":760,"page":5},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F1.concepts",[761,763,765,767,769,771,773,775],{"title":577,"path":576,"stem":762},"docs\u002F1.concepts\u002F1.entity",{"title":580,"path":579,"stem":764},"docs\u002F1.concepts\u002F2.handler",{"title":583,"path":582,"stem":766},"docs\u002F1.concepts\u002F3.repository",{"title":586,"path":585,"stem":768},"docs\u002F1.concepts\u002F4.frond",{"title":589,"path":588,"stem":770},"docs\u002F1.concepts\u002F5.facade",{"title":592,"path":591,"stem":772},"docs\u002F1.concepts\u002F6.fact",{"title":595,"path":594,"stem":774},"docs\u002F1.concepts\u002F7.port",{"title":598,"path":597,"stem":776},"docs\u002F1.concepts\u002F8.configuration",{"title":778,"path":779,"stem":780,"children":781,"page":5},"Access","\u002Fdocs\u002Faccess","docs\u002F2.access",[782,784],{"title":601,"path":600,"stem":783},"docs\u002F2.access\u002F1.authentication",{"title":607,"path":606,"stem":785},"docs\u002F2.access\u002F2.state",{"title":787,"path":788,"stem":789,"children":790,"page":5},"Data","\u002Fdocs\u002Fdata","docs\u002F3.data",[791,793,795,797,799,801,803,805],{"title":612,"path":611,"stem":792},"docs\u002F3.data\u002F1.sql",{"title":617,"path":616,"stem":794},"docs\u002F3.data\u002F2.several-databases",{"title":621,"path":620,"stem":796},"docs\u002F3.data\u002F3.computed-field",{"title":625,"path":624,"stem":798},"docs\u002F3.data\u002F4.evolve",{"title":629,"path":628,"stem":800},"docs\u002F3.data\u002F5.seeds",{"title":633,"path":632,"stem":802},"docs\u002F3.data\u002F6.values",{"title":637,"path":636,"stem":804},"docs\u002F3.data\u002F7.mirror",{"title":642,"path":641,"stem":806},"docs\u002F3.data\u002F8.together",{"title":808,"path":809,"stem":810,"children":811,"page":5},"Behaviour","\u002Fdocs\u002Fbehaviour","docs\u002F4.behaviour",[812,814],{"title":646,"path":645,"stem":813},"docs\u002F4.behaviour\u002F1.around-every-call",{"title":650,"path":649,"stem":815},"docs\u002F4.behaviour\u002F2.finish-a-fact",{"title":817,"path":818,"stem":819,"children":820,"page":5},"Serve","\u002Fdocs\u002Fserve","docs\u002F5.serve",[821,823,825,827],{"title":655,"path":654,"stem":822},"docs\u002F5.serve\u002F1.rest-graphql",{"title":659,"path":658,"stem":824},"docs\u002F5.serve\u002F2.pages",{"title":664,"path":663,"stem":826},"docs\u002F5.serve\u002F3.forms",{"title":668,"path":667,"stem":828},"docs\u002F5.serve\u002F4.admin",{"title":830,"path":831,"stem":832,"children":833,"page":5},"Run","\u002Fdocs\u002Frun","docs\u002F6.run",[834,836,838,839,841,843],{"title":672,"path":671,"stem":835},"docs\u002F6.run\u002F1.deploy",{"title":676,"path":675,"stem":837},"docs\u002F6.run\u002F2.secure",{"title":8,"path":567,"stem":569},{"title":682,"path":681,"stem":840},"docs\u002F6.run\u002F4.observe",{"title":686,"path":685,"stem":842},"docs\u002F6.run\u002F5.dev-panel",{"title":690,"path":689,"stem":844},"docs\u002F6.run\u002F6.test",{"title":846,"path":847,"stem":848,"children":849,"page":5},"Adopt","\u002Fdocs\u002Fadopt","docs\u002F7.adopt",[850,852,854,856,858,860],{"title":694,"path":693,"stem":851},"docs\u002F7.adopt\u002F1.new-project",{"title":698,"path":697,"stem":853},"docs\u002F7.adopt\u002F2.existing-app",{"title":702,"path":701,"stem":855},"docs\u002F7.adopt\u002F3.bring-your-schema",{"title":706,"path":705,"stem":857},"docs\u002F7.adopt\u002F4.hosts",{"title":710,"path":709,"stem":859},"docs\u002F7.adopt\u002F5.another-repository",{"title":714,"path":713,"stem":861},"docs\u002F7.adopt\u002F6.demos",{"title":863,"path":864,"stem":865,"children":866,"page":5},"Extending","\u002Fdocs\u002Fextending","docs\u002F8.extending",[867,869,871,873,875,877,879,881,883,885],{"title":718,"path":717,"stem":868},"docs\u002F8.extending\u002F1.scan",{"title":721,"path":720,"stem":870},"docs\u002F8.extending\u002F10.without-compiler",{"title":724,"path":723,"stem":872},"docs\u002F8.extending\u002F2.boot",{"title":727,"path":726,"stem":874},"docs\u002F8.extending\u002F3.card-and-wire",{"title":730,"path":729,"stem":876},"docs\u002F8.extending\u002F4.extension-points",{"title":733,"path":732,"stem":878},"docs\u002F8.extending\u002F5.vocabulary",{"title":736,"path":735,"stem":880},"docs\u002F8.extending\u002F6.extensions",{"title":739,"path":738,"stem":882},"docs\u002F8.extending\u002F7.source-adapter",{"title":742,"path":741,"stem":884},"docs\u002F8.extending\u002F8.surface",{"title":745,"path":744,"stem":886},"docs\u002F8.extending\u002F9.foreign-frond",1794396613679]