[{"data":1,"prerenderedAt":5969},["ShallowReactive",2],{"fougere:post.list:{}":3,"docs:\u002Fdocs\u002Fextending\u002Fscan":6,"docs-uses":769,"docs-nav":941,"demo:conventions":1079},{"items":4,"hasMore":5},[],false,{"id":7,"title":8,"body":9,"description":759,"extension":760,"forms":761,"kind":762,"meta":763,"navigation":764,"path":765,"seo":766,"stem":767,"step":761,"uses":761,"__hash__":768},"docs\u002Fdocs\u002F8.extending\u002F1.scan.md","How the scan reads a project",{"type":10,"value":11,"toc":754},"minimark",[12,21,31,38,54,188,211,240,417,438,442,447,450,454,473,500,509,623,648,669,681,685,737,740,750],[13,14,15,16,20],"p",{},"You never register a class. The scan reads where a file sits and what it is, writes the statement\nevery host boots from (",[17,18,19],"code",{},"fronds.ts","), and refuses what does not hold. These are the directories it reads:",[22,23,28],"pre",{"className":24,"code":26,"language":27},[25],"language-text","fronds\u002Fblog\u002F\n  vocabulary\u002F           ← words this frond adds to the declaration — read FIRST\n  entities\u002F             ← the declarations\n  handlers\u002F             ← the operations   (handlers\u002F\u003Csurface>\u002F = a named audience)\n  rules\u002F                ← what the domain computes with nothing injected\n  services\u002F             ← every class injected by type: a repository, a collector, a presenter\n  seeds\u002F                ← data created at startup\n  extensions\u002F           ← what rises and falls with the process\n  versions\u002F             ← what its shapes used to be (`fougere freeze`)\n","text",[17,29,26],{"__ignoreMap":30},"",[13,32,33,34,37],{},"The scanner recognizes a frond through these directories, in a directory under ",[17,35,36],{},"fronds\u002F",".\nA second domain is added beside the first, and the first does not move.",[13,39,40,41,45,46,49,50,53],{},"These directory names are the only place where a name ",[42,43,44],"em",{},"is"," the declaration, so they are the only\nnames a project can change. ",[17,47,48],{},"conventions:"," in ",[17,51,52],{},"fougere.config.ts"," names what differs\nand nothing else:",[22,55,59],{"className":56,"code":57,"language":58,"meta":30,"style":30},"language-ts shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","export default defineFougere({\n  conventions: {\n    scope: '@domains',                        \u002F\u002F default: '@fronds'\n    fronds: 'domains',                        \u002F\u002F default: 'fronds'\n    dirs: { entities: 'models' },             \u002F\u002F the other seven keep their names\n  },\n})\n","ts",[17,60,61,85,98,124,144,173,179],{"__ignoreMap":30},[62,63,66,70,73,77,81],"span",{"class":64,"line":65},"line",1,[62,67,69],{"class":68},"sK6XW","export",[62,71,72],{"class":68}," default",[62,74,76],{"class":75},"s4mR9"," defineFougere",[62,78,80],{"class":79},"srlTG","(",[62,82,84],{"class":83},"s15xx","{\n",[62,86,88,92,95],{"class":64,"line":87},2,[62,89,91],{"class":90},"sHtqg","  conventions",[62,93,94],{"class":83},":",[62,96,97],{"class":83}," {\n",[62,99,101,104,106,110,114,117,120],{"class":64,"line":100},3,[62,102,103],{"class":90},"    scope",[62,105,94],{"class":83},[62,107,109],{"class":108},"sDDC1"," '",[62,111,113],{"class":112},"sN-8n","@domains",[62,115,116],{"class":108},"'",[62,118,119],{"class":83},",",[62,121,123],{"class":122},"skXKP","                        \u002F\u002F default: '@fronds'\n",[62,125,127,130,132,134,137,139,141],{"class":64,"line":126},4,[62,128,129],{"class":90},"    fronds",[62,131,94],{"class":83},[62,133,109],{"class":108},[62,135,136],{"class":112},"domains",[62,138,116],{"class":108},[62,140,119],{"class":83},[62,142,143],{"class":122},"                        \u002F\u002F default: 'fronds'\n",[62,145,147,150,152,155,158,160,162,165,167,170],{"class":64,"line":146},5,[62,148,149],{"class":90},"    dirs",[62,151,94],{"class":83},[62,153,154],{"class":83}," {",[62,156,157],{"class":90}," entities",[62,159,94],{"class":83},[62,161,109],{"class":108},[62,163,164],{"class":112},"models",[62,166,116],{"class":108},[62,168,169],{"class":83}," },",[62,171,172],{"class":122},"             \u002F\u002F the other seven keep their names\n",[62,174,176],{"class":64,"line":175},6,[62,177,178],{"class":83},"  },\n",[62,180,182,185],{"class":64,"line":181},7,[62,183,184],{"class":83},"}",[62,186,187],{"class":79},")\n",[13,189,190,191,195,196,198,199,202,203,206,207,210],{},"It is read ",[192,193,194],"strong",{},"before"," the fronds are discovered, which is what lets it name the scope they\nare found under — so nothing in ",[17,197,52],{}," may import ",[17,200,201],{},"@fronds\u002F*",". The scan, the boot,\nthe CLI and Nuxt follow it. ",[17,204,205],{},"@fougere\u002Fvite"," and ",[17,208,209],{},"@fougere\u002Fnext"," do not yet.",[13,212,213,214,217,218,206,221,224,225,228,229,231,232,235,236,239],{},"TypeScript does not: ",[17,215,216],{},"@fougere\u002Fcore\u002Ftsconfig"," is a file, and it says ",[17,219,220],{},"fronds",[17,222,223],{},"@fronds",". A\nproject that changes ",[17,226,227],{},"scope"," or ",[17,230,220],{}," writes both in its own ",[17,233,234],{},"tsconfig.json",", and a change to\n",[17,237,238],{},"dirs"," asks nothing of it:",[22,241,245],{"className":242,"code":243,"language":244,"meta":30,"style":30},"language-json shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","{\n  \"extends\": \"@fougere\u002Fcore\u002Ftsconfig\",\n  \"include\": [\"domains\", \"fougere.config.ts\", \".fougere\u002Fnames.generated.d.ts\"],\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@fronds\u002Ffacade\": [\".\u002F.fougere\u002Ffacade.generated.ts\"],\n      \"@domains\u002F*\": [\".\u002Fdomains\u002F*\", \".\u002Fremotes\u002F*\"]\n    }\n  }\n}\n","json",[17,246,247,251,275,315,328,343,367,399,405,411],{"__ignoreMap":30},[62,248,249],{"class":64,"line":65},[62,250,84],{"class":83},[62,252,253,256,260,263,265,268,270,272],{"class":64,"line":87},[62,254,255],{"class":83},"  \"",[62,257,259],{"class":258},"s8ClO","extends",[62,261,262],{"class":83},"\"",[62,264,94],{"class":83},[62,266,267],{"class":108}," \"",[62,269,216],{"class":112},[62,271,262],{"class":108},[62,273,274],{"class":83},",\n",[62,276,277,279,282,284,286,289,291,293,295,297,299,301,303,305,307,310,312],{"class":64,"line":100},[62,278,255],{"class":83},[62,280,281],{"class":258},"include",[62,283,262],{"class":83},[62,285,94],{"class":83},[62,287,288],{"class":83}," [",[62,290,262],{"class":108},[62,292,136],{"class":112},[62,294,262],{"class":108},[62,296,119],{"class":83},[62,298,267],{"class":108},[62,300,52],{"class":112},[62,302,262],{"class":108},[62,304,119],{"class":83},[62,306,267],{"class":108},[62,308,309],{"class":112},".fougere\u002Fnames.generated.d.ts",[62,311,262],{"class":108},[62,313,314],{"class":83},"],\n",[62,316,317,319,322,324,326],{"class":64,"line":126},[62,318,255],{"class":83},[62,320,321],{"class":258},"compilerOptions",[62,323,262],{"class":83},[62,325,94],{"class":83},[62,327,97],{"class":83},[62,329,330,333,337,339,341],{"class":64,"line":146},[62,331,332],{"class":83},"    \"",[62,334,336],{"class":335},"sWI7z","paths",[62,338,262],{"class":83},[62,340,94],{"class":83},[62,342,97],{"class":83},[62,344,345,348,352,354,356,358,360,363,365],{"class":64,"line":175},[62,346,347],{"class":83},"      \"",[62,349,351],{"class":350},"sgzKs","@fronds\u002Ffacade",[62,353,262],{"class":83},[62,355,94],{"class":83},[62,357,288],{"class":83},[62,359,262],{"class":108},[62,361,362],{"class":112},".\u002F.fougere\u002Ffacade.generated.ts",[62,364,262],{"class":108},[62,366,314],{"class":83},[62,368,369,371,374,376,378,380,382,385,387,389,391,394,396],{"class":64,"line":181},[62,370,347],{"class":83},[62,372,373],{"class":350},"@domains\u002F*",[62,375,262],{"class":83},[62,377,94],{"class":83},[62,379,288],{"class":83},[62,381,262],{"class":108},[62,383,384],{"class":112},".\u002Fdomains\u002F*",[62,386,262],{"class":108},[62,388,119],{"class":83},[62,390,267],{"class":108},[62,392,393],{"class":112},".\u002Fremotes\u002F*",[62,395,262],{"class":108},[62,397,398],{"class":83},"]\n",[62,400,402],{"class":64,"line":401},8,[62,403,404],{"class":83},"    }\n",[62,406,408],{"class":64,"line":407},9,[62,409,410],{"class":83},"  }\n",[62,412,414],{"class":64,"line":413},10,[62,415,416],{"class":83},"}\n",[13,418,419,206,421,423,424,426,427,429,430,433,434,437],{},[17,420,281],{},[17,422,336],{}," replace what they inherit, so each is written whole. ",[17,425,351],{}," keeps\nits name whatever the scope. Without the ",[17,428,281],{},", ",[17,431,432],{},"tsc"," passes having read none of ",[17,435,436],{},"domains\u002F",".",[439,440],"demo",{"name":441},"conventions",[443,444,446],"h2",{"id":445},"which-typescript","Which TypeScript",[13,448,449],{},"Your project checks its types with the TypeScript it installs, 7 in the starter. The scan carries\nits own TypeScript 6, because it reads types through a program and TypeScript 7 does not offer that\nAPI as stable yet. The two never meet.",[443,451,453],{"id":452},"naming-and-importing-a-frond","Naming and importing a frond",[13,455,456,457,460,461,464,465,468,469,472],{},"The directory name is the frond's name: ",[17,458,459],{},"fronds\u002Fblog\u002F"," is ",[17,462,463],{},"@fronds\u002Fblog",", so a page or another\nFrond writes ",[17,466,467],{},"import Post from '@fronds\u002Fblog\u002Fentities\u002FPost.js'"," with no file to add. The name also\nkeys the entity registrations and any ",[17,470,471],{},"fronds:"," entry.",[13,474,475,478,479,481,482,484,485,487,488,491,492,495,496,499],{},[17,476,477],{},"@fronds\u002F\u003Cname>"," is read where TypeScript reads it — the ",[17,480,336],{}," that the project's ",[17,483,234],{},"\ninherits from ",[17,486,216],{},": ",[17,489,490],{},"fronds\u002F\u003Cname>",", then ",[17,493,494],{},"remotes\u002F\u003Cname>",", where ",[17,497,498],{},"fougere sync","\nwrites a frond another process serves. Each host reads the same rule, so a frond created while the\nserver runs resolves at its first import, and no install links it anywhere.",[13,501,502,503,505,506,508],{},"The one thing the directory cannot say is a name that differs from it. That is a ",[17,504,336],{}," entry of\nthe project's ",[17,507,234],{},", beside the rule it would otherwise inherit:",[22,510,512],{"className":242,"code":511,"language":244,"meta":30,"style":30},"{\n  \"extends\": \"@fougere\u002Fcore\u002Ftsconfig\",\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@fronds\u002Fblog\u002F*\": [\".\u002Ffronds\u002Fblog-v2\u002F*\"],\n      \"@fronds\u002F*\": [\".\u002Ffronds\u002F*\", \".\u002Fremotes\u002F*\"]\n    }\n  }\n}\n",[17,513,514,518,536,548,560,582,611,615,619],{"__ignoreMap":30},[62,515,516],{"class":64,"line":65},[62,517,84],{"class":83},[62,519,520,522,524,526,528,530,532,534],{"class":64,"line":87},[62,521,255],{"class":83},[62,523,259],{"class":258},[62,525,262],{"class":83},[62,527,94],{"class":83},[62,529,267],{"class":108},[62,531,216],{"class":112},[62,533,262],{"class":108},[62,535,274],{"class":83},[62,537,538,540,542,544,546],{"class":64,"line":100},[62,539,255],{"class":83},[62,541,321],{"class":258},[62,543,262],{"class":83},[62,545,94],{"class":83},[62,547,97],{"class":83},[62,549,550,552,554,556,558],{"class":64,"line":126},[62,551,332],{"class":83},[62,553,336],{"class":335},[62,555,262],{"class":83},[62,557,94],{"class":83},[62,559,97],{"class":83},[62,561,562,564,567,569,571,573,575,578,580],{"class":64,"line":146},[62,563,347],{"class":83},[62,565,566],{"class":350},"@fronds\u002Fblog\u002F*",[62,568,262],{"class":83},[62,570,94],{"class":83},[62,572,288],{"class":83},[62,574,262],{"class":108},[62,576,577],{"class":112},".\u002Ffronds\u002Fblog-v2\u002F*",[62,579,262],{"class":108},[62,581,314],{"class":83},[62,583,584,586,588,590,592,594,596,599,601,603,605,607,609],{"class":64,"line":175},[62,585,347],{"class":83},[62,587,201],{"class":350},[62,589,262],{"class":83},[62,591,94],{"class":83},[62,593,288],{"class":83},[62,595,262],{"class":108},[62,597,598],{"class":112},".\u002Ffronds\u002F*",[62,600,262],{"class":108},[62,602,119],{"class":83},[62,604,267],{"class":108},[62,606,393],{"class":112},[62,608,262],{"class":108},[62,610,398],{"class":83},[62,612,613],{"class":64,"line":181},[62,614,404],{"class":83},[62,616,617],{"class":64,"line":401},[62,618,410],{"class":83},[62,620,621],{"class":64,"line":407},[62,622,416],{"class":83},[13,624,625,628,629,632,633,635,636,638,639,641,642,644,645,437],{},[17,626,627],{},"fronds\u002Fblog-v2\u002F"," then stays registered as ",[17,630,631],{},"blog",", keeping its entity keys, its imports and its\n",[17,634,471],{}," entries. The rule is written again because ",[17,637,336],{}," replaces what it inherits. An app whose\n",[17,640,234],{}," states its own ",[17,643,336],{}," (Vite, Next) takes the same entry; Nuxt is told by\n",[17,646,647],{},"@fougere\u002Fnuxt",[13,649,650,653,654,657,658,660,661,664,665,668],{},[17,651,652],{},"services\u002F"," is scanned for every class injected by type, told apart by what it extends. Every\nentity already has a default repository: a handler extending ",[17,655,656],{},"Repository\u003CEntity>"," receives it automatically, and\nother code asks for ",[17,659,656],{}," or a declared ",[17,662,663],{},"\u003CEntity>Repository",". Direct\n",[17,666,667],{},"Storage"," injection into a handler, presenter or collector is refused at boot. Write a\nrepository when a query deserves a name or several entities form an aggregate; write a\nservice for a source that is not storage at all (an external API or a search index).",[13,670,671,672,677,678,680],{},"When one of those classes extends another, the base becomes a\n",[673,674,676],"a",{"href":675},"\u002Fdocs\u002Fconcepts\u002Fport","port",": the handler declares the base and receives the\nimplementation, and which one answers is a line in ",[17,679,52],{}," — never in the\nFrond.",[443,682,684],{"id":683},"what-is-written-what-is-derived","What is written, what is derived",[686,687,688,701],"table",{},[689,690,691],"thead",{},[692,693,694,698],"tr",{},[695,696,697],"th",{},"Fougere generates",[695,699,700],{},"You write",[702,703,704,713,721,729],"tbody",{},[692,705,706,710],{},[707,708,709],"td",{},"validation, derived views, tables\u002Fmetadata",[707,711,712],{},"non-trivial business logic",[692,714,715,718],{},[707,716,717],{},"GraphQL types and inputs, trivial CRUD",[707,719,720],{},"rich invariants, multi-step workflows",[692,722,723,726],{},[707,724,725],{},"projection facades (contract → transport)",[707,727,728],{},"error policies, consistency decisions",[692,730,731,734],{},[707,732,733],{},"typed clients, composition manifests",[707,735,736],{},"sensitive inter-Frond orchestration",[13,738,739],{},"A service layer is optional: a handler can hold the logic or hand it to a service.",[13,741,742,743,745,746,437],{},"To boot without the scan, from a ",[17,744,19],{}," you write: ",[673,747,749],{"href":748},"\u002Fdocs\u002Fextending\u002Fwithout-compiler","Boot without the compiler",[751,752,753],"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 .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 .s15xx, html code.shiki .s15xx{--shiki-light:#39ADB5;--shiki-default:#A3B0A5;--shiki-dark:#89DDFF}html pre.shiki code .sHtqg, html code.shiki .sHtqg{--shiki-light:#E53935;--shiki-default:#93CFC0;--shiki-dark:#F07178}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 .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 .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 .s8ClO, html code.shiki .s8ClO{--shiki-light:#9C3EDA;--shiki-default:#93CFC0;--shiki-dark:#C792EA}html pre.shiki code .sWI7z, html code.shiki .sWI7z{--shiki-light:#E2931D;--shiki-default:#93CFC0;--shiki-dark:#FFCB6B}html pre.shiki code .sgzKs, html code.shiki .sgzKs{--shiki-light:#F76D47;--shiki-default:#93CFC0;--shiki-dark:#F78C6C}",{"title":30,"searchDepth":87,"depth":87,"links":755},[756,757,758],{"id":445,"depth":87,"text":446},{"id":452,"depth":87,"text":453},{"id":683,"depth":87,"text":684},"The convention directories, the names they give, and the statement the scan writes.","md",null,"extending",{},true,"\u002Fdocs\u002Fextending\u002Fscan",{"title":8,"description":759},"docs\u002F8.extending\u002F1.scan","howqvPWt9HZ-yiNk69sw-a-LxIC8w9pZuQFMRlFrKf8",[770,773,776,779,782,785,788,790,793,798,804,809,813,817,821,825,829,834,838,842,847,851,856,860,864,868,872,876,880,884,888,892,896,900,904,908,912,913,914,917,920,923,926,929,932,935,938],{"path":771,"title":772,"uses":761},"\u002Fdocs\u002Fconcepts\u002Fentity","Entity",{"path":774,"title":775,"uses":761},"\u002Fdocs\u002Fconcepts\u002Fhandler","Handler",{"path":777,"title":778,"uses":761},"\u002Fdocs\u002Fconcepts\u002Frepository","Repository",{"path":780,"title":781,"uses":761},"\u002Fdocs\u002Fconcepts\u002Ffrond","Frond",{"path":783,"title":784,"uses":761},"\u002Fdocs\u002Fconcepts\u002Ffacade","Facade",{"path":786,"title":787,"uses":761},"\u002Fdocs\u002Fconcepts\u002Ffact","Fact",{"path":675,"title":789,"uses":761},"Port",{"path":791,"title":792,"uses":761},"\u002Fdocs\u002Fconcepts\u002Fconfiguration","Configuration",{"path":794,"title":795,"uses":796},"\u002Fdocs\u002Faccess\u002Fauthentication","Authentication",[676,797],"frond",{"path":799,"title":800,"uses":801},"\u002Fdocs\u002Faccess\u002Fstate","Keep a caller's state",[802,803],"configuration","handler",{"path":805,"title":806,"uses":807},"\u002Fdocs\u002Fdata\u002Fsql","SQLite or Postgres",[808,802],"entity",{"path":810,"title":811,"uses":812},"\u002Fdocs\u002Fdata\u002Fseveral-databases","Several databases",[802,808],{"path":814,"title":815,"uses":816},"\u002Fdocs\u002Fdata\u002Fcomputed-field","A computed field",[808,676],{"path":818,"title":819,"uses":820},"\u002Fdocs\u002Fdata\u002Fevolve","Evolve a schema",[808],{"path":822,"title":823,"uses":824},"\u002Fdocs\u002Fdata\u002Fseeds","Seed data",[808],{"path":826,"title":827,"uses":828},"\u002Fdocs\u002Fdata\u002Fvalues","Read settings and secrets",[808,802],{"path":830,"title":831,"uses":832},"\u002Fdocs\u002Fdata\u002Fmirror","Mirror a source you cannot query",[833],"repository",{"path":835,"title":836,"uses":837},"\u002Fdocs\u002Fdata\u002Ftogether","Two writes as one",[833],{"path":839,"title":840,"uses":841},"\u002Fdocs\u002Fbehaviour\u002Faround-every-call","Around every call",[676,797],{"path":843,"title":844,"uses":845},"\u002Fdocs\u002Fbehaviour\u002Ffinish-a-fact","Finish a fact",[846],"fact",{"path":848,"title":849,"uses":850},"\u002Fdocs\u002Fserve\u002Frest-graphql","REST, OpenAPI, GraphQL",[803,802],{"path":852,"title":853,"uses":854},"\u002Fdocs\u002Fserve\u002Fpages","Pages: queries and commands",[803,855],"facade",{"path":857,"title":858,"uses":859},"\u002Fdocs\u002Fserve\u002Fforms","A form",[808],{"path":861,"title":862,"uses":863},"\u002Fdocs\u002Fserve\u002Fadmin","An admin panel",[803],{"path":865,"title":866,"uses":867},"\u002Fdocs\u002Frun\u002Fdeploy","Deploy a split",[802,797],{"path":869,"title":870,"uses":871},"\u002Fdocs\u002Frun\u002Fsecure","Secure calls between processes",[802,797],{"path":873,"title":874,"uses":875},"\u002Fdocs\u002Frun\u002Flifecycle","Reload and shut down",[802],{"path":877,"title":878,"uses":879},"\u002Fdocs\u002Frun\u002Fobserve","Observe",[802,803],{"path":881,"title":882,"uses":883},"\u002Fdocs\u002Frun\u002Fdev-panel","The dev panel",[803],{"path":885,"title":886,"uses":887},"\u002Fdocs\u002Frun\u002Ftest","Test",[808,676],{"path":889,"title":890,"uses":891},"\u002Fdocs\u002Fadopt\u002Fnew-project","Start a project",[797,802],{"path":893,"title":894,"uses":895},"\u002Fdocs\u002Fadopt\u002Fexisting-app","Add Fougere to an existing app",[797,802],{"path":897,"title":898,"uses":899},"\u002Fdocs\u002Fadopt\u002Fbring-your-schema","Bring your schema",[808],{"path":901,"title":902,"uses":903},"\u002Fdocs\u002Fadopt\u002Fhosts","Pick a host",[802],{"path":905,"title":906,"uses":907},"\u002Fdocs\u002Fadopt\u002Fanother-repository","A frond from another repository",[855,797],{"path":909,"title":910,"uses":911},"\u002Fdocs\u002Fadopt\u002Fdemos","Demos",[],{"path":765,"title":8,"uses":761},{"path":748,"title":749,"uses":761},{"path":915,"title":916,"uses":761},"\u002Fdocs\u002Fextending\u002Fboot","The boot, step by step",{"path":918,"title":919,"uses":761},"\u002Fdocs\u002Fextending\u002Fcard-and-wire","The card and the wire",{"path":921,"title":922,"uses":761},"\u002Fdocs\u002Fextending\u002Fextension-points","Registries and extension points",{"path":924,"title":925,"uses":761},"\u002Fdocs\u002Fextending\u002Fvocabulary","Teach a word",{"path":927,"title":928,"uses":761},"\u002Fdocs\u002Fextending\u002Fextensions","Run code at boot and shutdown",{"path":930,"title":931,"uses":761},"\u002Fdocs\u002Fextending\u002Fsource-adapter","Write a source adapter",{"path":933,"title":934,"uses":761},"\u002Fdocs\u002Fextending\u002Fsurface","Write a surface",{"path":936,"title":937,"uses":761},"\u002Fdocs\u002Fextending\u002Fforeign-frond","A frond in another language",{"path":939,"title":940,"uses":761},"\u002Fdocs","What is Fougere",[942],{"title":943,"path":939,"stem":944,"children":945,"page":-1},"Docs","docs",[946,948,969,978,999,1008,1021,1038,1055],{"title":940,"path":939,"stem":947},"docs\u002Findex",{"title":949,"path":950,"stem":951,"children":952,"page":5},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F1.concepts",[953,955,957,959,961,963,965,967],{"title":772,"path":771,"stem":954},"docs\u002F1.concepts\u002F1.entity",{"title":775,"path":774,"stem":956},"docs\u002F1.concepts\u002F2.handler",{"title":778,"path":777,"stem":958},"docs\u002F1.concepts\u002F3.repository",{"title":781,"path":780,"stem":960},"docs\u002F1.concepts\u002F4.frond",{"title":784,"path":783,"stem":962},"docs\u002F1.concepts\u002F5.facade",{"title":787,"path":786,"stem":964},"docs\u002F1.concepts\u002F6.fact",{"title":789,"path":675,"stem":966},"docs\u002F1.concepts\u002F7.port",{"title":792,"path":791,"stem":968},"docs\u002F1.concepts\u002F8.configuration",{"title":970,"path":971,"stem":972,"children":973,"page":5},"Access","\u002Fdocs\u002Faccess","docs\u002F2.access",[974,976],{"title":795,"path":794,"stem":975},"docs\u002F2.access\u002F1.authentication",{"title":800,"path":799,"stem":977},"docs\u002F2.access\u002F2.state",{"title":979,"path":980,"stem":981,"children":982,"page":5},"Data","\u002Fdocs\u002Fdata","docs\u002F3.data",[983,985,987,989,991,993,995,997],{"title":806,"path":805,"stem":984},"docs\u002F3.data\u002F1.sql",{"title":811,"path":810,"stem":986},"docs\u002F3.data\u002F2.several-databases",{"title":815,"path":814,"stem":988},"docs\u002F3.data\u002F3.computed-field",{"title":819,"path":818,"stem":990},"docs\u002F3.data\u002F4.evolve",{"title":823,"path":822,"stem":992},"docs\u002F3.data\u002F5.seeds",{"title":827,"path":826,"stem":994},"docs\u002F3.data\u002F6.values",{"title":831,"path":830,"stem":996},"docs\u002F3.data\u002F7.mirror",{"title":836,"path":835,"stem":998},"docs\u002F3.data\u002F8.together",{"title":1000,"path":1001,"stem":1002,"children":1003,"page":5},"Behaviour","\u002Fdocs\u002Fbehaviour","docs\u002F4.behaviour",[1004,1006],{"title":840,"path":839,"stem":1005},"docs\u002F4.behaviour\u002F1.around-every-call",{"title":844,"path":843,"stem":1007},"docs\u002F4.behaviour\u002F2.finish-a-fact",{"title":1009,"path":1010,"stem":1011,"children":1012,"page":5},"Serve","\u002Fdocs\u002Fserve","docs\u002F5.serve",[1013,1015,1017,1019],{"title":849,"path":848,"stem":1014},"docs\u002F5.serve\u002F1.rest-graphql",{"title":853,"path":852,"stem":1016},"docs\u002F5.serve\u002F2.pages",{"title":858,"path":857,"stem":1018},"docs\u002F5.serve\u002F3.forms",{"title":862,"path":861,"stem":1020},"docs\u002F5.serve\u002F4.admin",{"title":1022,"path":1023,"stem":1024,"children":1025,"page":5},"Run","\u002Fdocs\u002Frun","docs\u002F6.run",[1026,1028,1030,1032,1034,1036],{"title":866,"path":865,"stem":1027},"docs\u002F6.run\u002F1.deploy",{"title":870,"path":869,"stem":1029},"docs\u002F6.run\u002F2.secure",{"title":874,"path":873,"stem":1031},"docs\u002F6.run\u002F3.lifecycle",{"title":878,"path":877,"stem":1033},"docs\u002F6.run\u002F4.observe",{"title":882,"path":881,"stem":1035},"docs\u002F6.run\u002F5.dev-panel",{"title":886,"path":885,"stem":1037},"docs\u002F6.run\u002F6.test",{"title":1039,"path":1040,"stem":1041,"children":1042,"page":5},"Adopt","\u002Fdocs\u002Fadopt","docs\u002F7.adopt",[1043,1045,1047,1049,1051,1053],{"title":890,"path":889,"stem":1044},"docs\u002F7.adopt\u002F1.new-project",{"title":894,"path":893,"stem":1046},"docs\u002F7.adopt\u002F2.existing-app",{"title":898,"path":897,"stem":1048},"docs\u002F7.adopt\u002F3.bring-your-schema",{"title":902,"path":901,"stem":1050},"docs\u002F7.adopt\u002F4.hosts",{"title":906,"path":905,"stem":1052},"docs\u002F7.adopt\u002F5.another-repository",{"title":910,"path":909,"stem":1054},"docs\u002F7.adopt\u002F6.demos",{"title":1056,"path":1057,"stem":1058,"children":1059,"page":5},"Extending","\u002Fdocs\u002Fextending","docs\u002F8.extending",[1060,1061,1063,1065,1067,1069,1071,1073,1075,1077],{"title":8,"path":765,"stem":767},{"title":749,"path":748,"stem":1062},"docs\u002F8.extending\u002F10.without-compiler",{"title":916,"path":915,"stem":1064},"docs\u002F8.extending\u002F2.boot",{"title":919,"path":918,"stem":1066},"docs\u002F8.extending\u002F3.card-and-wire",{"title":922,"path":921,"stem":1068},"docs\u002F8.extending\u002F4.extension-points",{"title":925,"path":924,"stem":1070},"docs\u002F8.extending\u002F5.vocabulary",{"title":928,"path":927,"stem":1072},"docs\u002F8.extending\u002F6.extensions",{"title":931,"path":930,"stem":1074},"docs\u002F8.extending\u002F7.source-adapter",{"title":934,"path":933,"stem":1076},"docs\u002F8.extending\u002F8.surface",{"title":937,"path":936,"stem":1078},"docs\u002F8.extending\u002F9.foreign-frond",{"id":1080,"title":441,"body":1081,"count":1202,"description":30,"entry":52,"extension":760,"meta":5964,"name":441,"navigation":764,"path":5965,"runnable":764,"seo":5966,"stem":5967,"__hash__":5968},"demo\u002Fdemo\u002Fconventions.md",{"type":10,"value":1082,"toc":5962},[1083,5959],[1084,1085,1086,1453,1862,1948,2081,2617,2789,2903,3313,3742,3797,3927,3998,4082,4355,4661,5712],"code-tree",{"default-value":52},[22,1087,1091],{"className":1088,"code":1089,"filename":1090,"language":760,"meta":30,"style":30},"language-md shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","# fougere-demo-conventions\n\n## 0.0.1-alpha.3\n\n### Patch Changes\n\n- @fougere\u002Fadapter-memory@0.30.0-alpha.5\n- @fougere\u002Fcompiler@0.30.0-alpha.5\n- @fougere\u002Fcore@0.30.0-alpha.5\n- @fougere\u002Fdefaults@0.30.0-alpha.5\n- @fougere\u002Fschema@0.30.0-alpha.5\n\n## 0.0.1-alpha.2\n\n### Patch Changes\n\n- @fougere\u002Fadapter-memory@0.30.0-alpha.4\n- @fougere\u002Fcompiler@0.30.0-alpha.4\n- @fougere\u002Fcore@0.30.0-alpha.4\n- @fougere\u002Fdefaults@0.30.0-alpha.4\n- @fougere\u002Fschema@0.30.0-alpha.4\n\n## 0.0.1-alpha.1\n\n### Patch Changes\n\n- Updated dependencies [e9a8641]\n  - @fougere\u002Fcore@0.30.0-alpha.3\n  - @fougere\u002Fdefaults@0.30.0-alpha.3\n  - @fougere\u002Fadapter-memory@0.30.0-alpha.3\n  - @fougere\u002Fcompiler@0.30.0-alpha.3\n  - @fougere\u002Fschema@0.30.0-alpha.3\n\n## 0.0.1-alpha.0\n\n### Patch Changes\n\n- Updated dependencies [8044dcd]\n- Updated dependencies [d179658]\n- Updated dependencies [28e9ba0]\n- Updated dependencies [1835e30]\n  - @fougere\u002Fcore@0.30.0-alpha.2\n  - @fougere\u002Fdefaults@0.30.0-alpha.2\n  - @fougere\u002Fadapter-memory@0.30.0-alpha.2\n  - @fougere\u002Fcompiler@0.30.0-alpha.2\n  - @fougere\u002Fschema@0.30.0-alpha.2\n\n","CHANGELOG.md",[17,1092,1093,1103,1108,1116,1120,1128,1132,1141,1148,1155,1162,1170,1175,1183,1188,1195,1200,1208,1216,1224,1232,1240,1245,1253,1258,1265,1270,1286,1295,1303,1311,1319,1327,1332,1340,1345,1352,1357,1371,1385,1399,1413,1421,1429,1437,1445],{"__ignoreMap":30},[62,1094,1095,1099],{"class":64,"line":65},[62,1096,1098],{"class":1097},"sd7zb","#",[62,1100,1102],{"class":1101},"sLf9K"," fougere-demo-conventions\n",[62,1104,1105],{"class":64,"line":87},[62,1106,1107],{"emptyLinePlaceholder":764},"\n",[62,1109,1110,1113],{"class":64,"line":100},[62,1111,1112],{"class":1097},"##",[62,1114,1115],{"class":1101}," 0.0.1-alpha.3\n",[62,1117,1118],{"class":64,"line":126},[62,1119,1107],{"emptyLinePlaceholder":764},[62,1121,1122,1125],{"class":64,"line":146},[62,1123,1124],{"class":1097},"###",[62,1126,1127],{"class":1101}," Patch Changes\n",[62,1129,1130],{"class":64,"line":175},[62,1131,1107],{"emptyLinePlaceholder":764},[62,1133,1134,1137],{"class":64,"line":181},[62,1135,1136],{"class":83},"-",[62,1138,1140],{"class":1139},"sPEhv"," @fougere\u002Fadapter-memory@0.30.0-alpha.5\n",[62,1142,1143,1145],{"class":64,"line":401},[62,1144,1136],{"class":83},[62,1146,1147],{"class":1139}," @fougere\u002Fcompiler@0.30.0-alpha.5\n",[62,1149,1150,1152],{"class":64,"line":407},[62,1151,1136],{"class":83},[62,1153,1154],{"class":1139}," @fougere\u002Fcore@0.30.0-alpha.5\n",[62,1156,1157,1159],{"class":64,"line":413},[62,1158,1136],{"class":83},[62,1160,1161],{"class":1139}," @fougere\u002Fdefaults@0.30.0-alpha.5\n",[62,1163,1165,1167],{"class":64,"line":1164},11,[62,1166,1136],{"class":83},[62,1168,1169],{"class":1139}," @fougere\u002Fschema@0.30.0-alpha.5\n",[62,1171,1173],{"class":64,"line":1172},12,[62,1174,1107],{"emptyLinePlaceholder":764},[62,1176,1178,1180],{"class":64,"line":1177},13,[62,1179,1112],{"class":1097},[62,1181,1182],{"class":1101}," 0.0.1-alpha.2\n",[62,1184,1186],{"class":64,"line":1185},14,[62,1187,1107],{"emptyLinePlaceholder":764},[62,1189,1191,1193],{"class":64,"line":1190},15,[62,1192,1124],{"class":1097},[62,1194,1127],{"class":1101},[62,1196,1198],{"class":64,"line":1197},16,[62,1199,1107],{"emptyLinePlaceholder":764},[62,1201,1203,1205],{"class":64,"line":1202},17,[62,1204,1136],{"class":83},[62,1206,1207],{"class":1139}," @fougere\u002Fadapter-memory@0.30.0-alpha.4\n",[62,1209,1211,1213],{"class":64,"line":1210},18,[62,1212,1136],{"class":83},[62,1214,1215],{"class":1139}," @fougere\u002Fcompiler@0.30.0-alpha.4\n",[62,1217,1219,1221],{"class":64,"line":1218},19,[62,1220,1136],{"class":83},[62,1222,1223],{"class":1139}," @fougere\u002Fcore@0.30.0-alpha.4\n",[62,1225,1227,1229],{"class":64,"line":1226},20,[62,1228,1136],{"class":83},[62,1230,1231],{"class":1139}," @fougere\u002Fdefaults@0.30.0-alpha.4\n",[62,1233,1235,1237],{"class":64,"line":1234},21,[62,1236,1136],{"class":83},[62,1238,1239],{"class":1139}," @fougere\u002Fschema@0.30.0-alpha.4\n",[62,1241,1243],{"class":64,"line":1242},22,[62,1244,1107],{"emptyLinePlaceholder":764},[62,1246,1248,1250],{"class":64,"line":1247},23,[62,1249,1112],{"class":1097},[62,1251,1252],{"class":1101}," 0.0.1-alpha.1\n",[62,1254,1256],{"class":64,"line":1255},24,[62,1257,1107],{"emptyLinePlaceholder":764},[62,1259,1261,1263],{"class":64,"line":1260},25,[62,1262,1124],{"class":1097},[62,1264,1127],{"class":1101},[62,1266,1268],{"class":64,"line":1267},26,[62,1269,1107],{"emptyLinePlaceholder":764},[62,1271,1273,1275,1278,1281,1284],{"class":64,"line":1272},27,[62,1274,1136],{"class":83},[62,1276,1277],{"class":1139}," Updated dependencies ",[62,1279,1280],{"class":83},"[",[62,1282,1283],{"class":112},"e9a8641",[62,1285,398],{"class":83},[62,1287,1289,1292],{"class":64,"line":1288},28,[62,1290,1291],{"class":83},"  -",[62,1293,1294],{"class":1139}," @fougere\u002Fcore@0.30.0-alpha.3\n",[62,1296,1298,1300],{"class":64,"line":1297},29,[62,1299,1291],{"class":83},[62,1301,1302],{"class":1139}," @fougere\u002Fdefaults@0.30.0-alpha.3\n",[62,1304,1306,1308],{"class":64,"line":1305},30,[62,1307,1291],{"class":83},[62,1309,1310],{"class":1139}," @fougere\u002Fadapter-memory@0.30.0-alpha.3\n",[62,1312,1314,1316],{"class":64,"line":1313},31,[62,1315,1291],{"class":83},[62,1317,1318],{"class":1139}," @fougere\u002Fcompiler@0.30.0-alpha.3\n",[62,1320,1322,1324],{"class":64,"line":1321},32,[62,1323,1291],{"class":83},[62,1325,1326],{"class":1139}," @fougere\u002Fschema@0.30.0-alpha.3\n",[62,1328,1330],{"class":64,"line":1329},33,[62,1331,1107],{"emptyLinePlaceholder":764},[62,1333,1335,1337],{"class":64,"line":1334},34,[62,1336,1112],{"class":1097},[62,1338,1339],{"class":1101}," 0.0.1-alpha.0\n",[62,1341,1343],{"class":64,"line":1342},35,[62,1344,1107],{"emptyLinePlaceholder":764},[62,1346,1348,1350],{"class":64,"line":1347},36,[62,1349,1124],{"class":1097},[62,1351,1127],{"class":1101},[62,1353,1355],{"class":64,"line":1354},37,[62,1356,1107],{"emptyLinePlaceholder":764},[62,1358,1360,1362,1364,1366,1369],{"class":64,"line":1359},38,[62,1361,1136],{"class":83},[62,1363,1277],{"class":1139},[62,1365,1280],{"class":83},[62,1367,1368],{"class":112},"8044dcd",[62,1370,398],{"class":83},[62,1372,1374,1376,1378,1380,1383],{"class":64,"line":1373},39,[62,1375,1136],{"class":83},[62,1377,1277],{"class":1139},[62,1379,1280],{"class":83},[62,1381,1382],{"class":112},"d179658",[62,1384,398],{"class":83},[62,1386,1388,1390,1392,1394,1397],{"class":64,"line":1387},40,[62,1389,1136],{"class":83},[62,1391,1277],{"class":1139},[62,1393,1280],{"class":83},[62,1395,1396],{"class":112},"28e9ba0",[62,1398,398],{"class":83},[62,1400,1402,1404,1406,1408,1411],{"class":64,"line":1401},41,[62,1403,1136],{"class":83},[62,1405,1277],{"class":1139},[62,1407,1280],{"class":83},[62,1409,1410],{"class":112},"1835e30",[62,1412,398],{"class":83},[62,1414,1416,1418],{"class":64,"line":1415},42,[62,1417,1291],{"class":83},[62,1419,1420],{"class":1139}," @fougere\u002Fcore@0.30.0-alpha.2\n",[62,1422,1424,1426],{"class":64,"line":1423},43,[62,1425,1291],{"class":83},[62,1427,1428],{"class":1139}," @fougere\u002Fdefaults@0.30.0-alpha.2\n",[62,1430,1432,1434],{"class":64,"line":1431},44,[62,1433,1291],{"class":83},[62,1435,1436],{"class":1139}," @fougere\u002Fadapter-memory@0.30.0-alpha.2\n",[62,1438,1440,1442],{"class":64,"line":1439},45,[62,1441,1291],{"class":83},[62,1443,1444],{"class":1139}," @fougere\u002Fcompiler@0.30.0-alpha.2\n",[62,1446,1448,1450],{"class":64,"line":1447},46,[62,1449,1291],{"class":83},[62,1451,1452],{"class":1139}," @fougere\u002Fschema@0.30.0-alpha.2\n",[22,1454,1457],{"className":1088,"code":1455,"filename":1456,"language":760,"meta":30,"style":30},"# conventions — every name a project may change\n\n```\nscope       @fronds     → @shop\nfronds      fronds\u002F     → domains\u002F\nentities    entities\u002F   → models\u002F\nhandlers    handlers\u002F   → endpoints\u002F\nservices    services\u002F   → providers\u002F\nseeds       seeds\u002F      → fixtures\u002F\nrules       rules\u002F      → logic\u002F\nvocabulary  vocabulary\u002F → terms\u002F\nextensions  extensions\u002F → plugins\u002F\nversions    versions\u002F   → history\u002F\n```\n\n```bash\npnpm dev         # boots, and each line says what its directory did\npnpm typecheck   # reads domains\u002F and resolves @shop\u002F*\n```\n\nThe tools read the same names:\n\n```bash\npnpm exec fougere check            # finds both fronds\npnpm exec fougere build            # compiles domains\u002F, logic\u002F and terms\u002F\npnpm exec fougere serve catalog    # starts what build wrote\npnpm exec fougere freeze v2        # writes under history\u002F\npnpm exec fougere call order.place --productId fern\n```\n\n## Two files\n\n`fougere.config.ts` states what differs, and the scan, the boot and the CLI follow it.\n\nTypeScript reads none of that. `@fougere\u002Fcore\u002Ftsconfig` says `fronds` and `@fronds`, so\n`tsconfig.json` says `domains` and `@shop`. `dirs` asks nothing of it. `@fronds\u002Ffacade` keeps its\nname whatever the scope.\n\n## See it break\n\nDelete `include` from `tsconfig.json` and write a type error under `domains\u002F`: `pnpm typecheck`\npasses, having read none of it. Delete the `@shop\u002F*` line instead and it refuses every import.\n\nRename `domains\u002Forders\u002Fendpoints\u002F` on disk without touching the config and `order.place` refuses:\n`Nothing here answers at 'order'.`\n\n## What does not follow yet\n\n`@fougere\u002Fvite` and `@fougere\u002Fnext` read the defaults. Nuxt reads the config.\n\n","README.md",[17,1458,1459,1466,1470,1476,1482,1487,1492,1497,1502,1507,1512,1517,1522,1527,1531,1535,1543,1548,1553,1557,1561,1566,1570,1576,1581,1586,1591,1596,1601,1605,1609,1616,1620,1632,1636,1667,1713,1718,1722,1729,1733,1772,1787,1791,1816,1825,1829,1837,1842],{"__ignoreMap":30},[62,1460,1461,1463],{"class":64,"line":65},[62,1462,1098],{"class":1097},[62,1464,1465],{"class":1101}," conventions — every name a project may change\n",[62,1467,1468],{"class":64,"line":87},[62,1469,1107],{"emptyLinePlaceholder":764},[62,1471,1472],{"class":64,"line":100},[62,1473,1475],{"class":1474},"siB6D","```\n",[62,1477,1478],{"class":64,"line":126},[62,1479,1481],{"class":1480},"sYNOY","scope       @fronds     → @shop\n",[62,1483,1484],{"class":64,"line":146},[62,1485,1486],{"class":1480},"fronds      fronds\u002F     → domains\u002F\n",[62,1488,1489],{"class":64,"line":175},[62,1490,1491],{"class":1480},"entities    entities\u002F   → models\u002F\n",[62,1493,1494],{"class":64,"line":181},[62,1495,1496],{"class":1480},"handlers    handlers\u002F   → endpoints\u002F\n",[62,1498,1499],{"class":64,"line":401},[62,1500,1501],{"class":1480},"services    services\u002F   → providers\u002F\n",[62,1503,1504],{"class":64,"line":407},[62,1505,1506],{"class":1480},"seeds       seeds\u002F      → fixtures\u002F\n",[62,1508,1509],{"class":64,"line":413},[62,1510,1511],{"class":1480},"rules       rules\u002F      → logic\u002F\n",[62,1513,1514],{"class":64,"line":1164},[62,1515,1516],{"class":1480},"vocabulary  vocabulary\u002F → terms\u002F\n",[62,1518,1519],{"class":64,"line":1172},[62,1520,1521],{"class":1480},"extensions  extensions\u002F → plugins\u002F\n",[62,1523,1524],{"class":64,"line":1177},[62,1525,1526],{"class":1480},"versions    versions\u002F   → history\u002F\n",[62,1528,1529],{"class":64,"line":1185},[62,1530,1475],{"class":1474},[62,1532,1533],{"class":64,"line":1190},[62,1534,1107],{"emptyLinePlaceholder":764},[62,1536,1537,1540],{"class":64,"line":1197},[62,1538,1539],{"class":1474},"```",[62,1541,1542],{"class":1480},"bash\n",[62,1544,1545],{"class":64,"line":1202},[62,1546,1547],{"class":1480},"pnpm dev         # boots, and each line says what its directory did\n",[62,1549,1550],{"class":64,"line":1210},[62,1551,1552],{"class":1480},"pnpm typecheck   # reads domains\u002F and resolves @shop\u002F*\n",[62,1554,1555],{"class":64,"line":1218},[62,1556,1475],{"class":1474},[62,1558,1559],{"class":64,"line":1226},[62,1560,1107],{"emptyLinePlaceholder":764},[62,1562,1563],{"class":64,"line":1234},[62,1564,1565],{"class":1139},"The tools read the same names:\n",[62,1567,1568],{"class":64,"line":1242},[62,1569,1107],{"emptyLinePlaceholder":764},[62,1571,1572,1574],{"class":64,"line":1247},[62,1573,1539],{"class":1474},[62,1575,1542],{"class":1480},[62,1577,1578],{"class":64,"line":1255},[62,1579,1580],{"class":1480},"pnpm exec fougere check            # finds both fronds\n",[62,1582,1583],{"class":64,"line":1260},[62,1584,1585],{"class":1480},"pnpm exec fougere build            # compiles domains\u002F, logic\u002F and terms\u002F\n",[62,1587,1588],{"class":64,"line":1267},[62,1589,1590],{"class":1480},"pnpm exec fougere serve catalog    # starts what build wrote\n",[62,1592,1593],{"class":64,"line":1272},[62,1594,1595],{"class":1480},"pnpm exec fougere freeze v2        # writes under history\u002F\n",[62,1597,1598],{"class":64,"line":1288},[62,1599,1600],{"class":1480},"pnpm exec fougere call order.place --productId fern\n",[62,1602,1603],{"class":64,"line":1297},[62,1604,1475],{"class":1474},[62,1606,1607],{"class":64,"line":1305},[62,1608,1107],{"emptyLinePlaceholder":764},[62,1610,1611,1613],{"class":64,"line":1313},[62,1612,1112],{"class":1097},[62,1614,1615],{"class":1101}," Two files\n",[62,1617,1618],{"class":64,"line":1321},[62,1619,1107],{"emptyLinePlaceholder":764},[62,1621,1622,1625,1627,1629],{"class":64,"line":1329},[62,1623,1624],{"class":83},"`",[62,1626,52],{"class":112},[62,1628,1624],{"class":83},[62,1630,1631],{"class":1139}," states what differs, and the scan, the boot and the CLI follow it.\n",[62,1633,1634],{"class":64,"line":1334},[62,1635,1107],{"emptyLinePlaceholder":764},[62,1637,1638,1641,1643,1645,1647,1650,1652,1654,1656,1658,1660,1662,1664],{"class":64,"line":1342},[62,1639,1640],{"class":1139},"TypeScript reads none of that. ",[62,1642,1624],{"class":83},[62,1644,216],{"class":112},[62,1646,1624],{"class":83},[62,1648,1649],{"class":1139}," says ",[62,1651,1624],{"class":83},[62,1653,220],{"class":112},[62,1655,1624],{"class":83},[62,1657,206],{"class":1139},[62,1659,1624],{"class":83},[62,1661,223],{"class":112},[62,1663,1624],{"class":83},[62,1665,1666],{"class":1139},", so\n",[62,1668,1669,1671,1673,1675,1677,1679,1681,1683,1685,1687,1690,1692,1695,1697,1699,1701,1704,1706,1708,1710],{"class":64,"line":1347},[62,1670,1624],{"class":83},[62,1672,234],{"class":112},[62,1674,1624],{"class":83},[62,1676,1649],{"class":1139},[62,1678,1624],{"class":83},[62,1680,136],{"class":112},[62,1682,1624],{"class":83},[62,1684,206],{"class":1139},[62,1686,1624],{"class":83},[62,1688,1689],{"class":112},"@shop",[62,1691,1624],{"class":83},[62,1693,1694],{"class":1139},". ",[62,1696,1624],{"class":83},[62,1698,238],{"class":112},[62,1700,1624],{"class":83},[62,1702,1703],{"class":1139}," asks nothing of it. ",[62,1705,1624],{"class":83},[62,1707,351],{"class":112},[62,1709,1624],{"class":83},[62,1711,1712],{"class":1139}," keeps its\n",[62,1714,1715],{"class":64,"line":1354},[62,1716,1717],{"class":1139},"name whatever the scope.\n",[62,1719,1720],{"class":64,"line":1359},[62,1721,1107],{"emptyLinePlaceholder":764},[62,1723,1724,1726],{"class":64,"line":1373},[62,1725,1112],{"class":1097},[62,1727,1728],{"class":1101}," See it break\n",[62,1730,1731],{"class":64,"line":1387},[62,1732,1107],{"emptyLinePlaceholder":764},[62,1734,1735,1738,1740,1742,1744,1747,1749,1751,1753,1756,1758,1760,1762,1764,1766,1769],{"class":64,"line":1401},[62,1736,1737],{"class":1139},"Delete ",[62,1739,1624],{"class":83},[62,1741,281],{"class":112},[62,1743,1624],{"class":83},[62,1745,1746],{"class":1139}," from ",[62,1748,1624],{"class":83},[62,1750,234],{"class":112},[62,1752,1624],{"class":83},[62,1754,1755],{"class":1139}," and write a type error under ",[62,1757,1624],{"class":83},[62,1759,436],{"class":112},[62,1761,1624],{"class":83},[62,1763,487],{"class":1139},[62,1765,1624],{"class":83},[62,1767,1768],{"class":112},"pnpm typecheck",[62,1770,1771],{"class":83},"`\n",[62,1773,1774,1777,1779,1782,1784],{"class":64,"line":1415},[62,1775,1776],{"class":1139},"passes, having read none of it. Delete the ",[62,1778,1624],{"class":83},[62,1780,1781],{"class":112},"@shop\u002F*",[62,1783,1624],{"class":83},[62,1785,1786],{"class":1139}," line instead and it refuses every import.\n",[62,1788,1789],{"class":64,"line":1423},[62,1790,1107],{"emptyLinePlaceholder":764},[62,1792,1793,1796,1798,1801,1803,1806,1808,1811,1813],{"class":64,"line":1431},[62,1794,1795],{"class":1139},"Rename ",[62,1797,1624],{"class":83},[62,1799,1800],{"class":112},"domains\u002Forders\u002Fendpoints\u002F",[62,1802,1624],{"class":83},[62,1804,1805],{"class":1139}," on disk without touching the config and ",[62,1807,1624],{"class":83},[62,1809,1810],{"class":112},"order.place",[62,1812,1624],{"class":83},[62,1814,1815],{"class":1139}," refuses:\n",[62,1817,1818,1820,1823],{"class":64,"line":1439},[62,1819,1624],{"class":83},[62,1821,1822],{"class":112},"Nothing here answers at 'order'.",[62,1824,1771],{"class":83},[62,1826,1827],{"class":64,"line":1447},[62,1828,1107],{"emptyLinePlaceholder":764},[62,1830,1832,1834],{"class":64,"line":1831},47,[62,1833,1112],{"class":1097},[62,1835,1836],{"class":1101}," What does not follow yet\n",[62,1838,1840],{"class":64,"line":1839},48,[62,1841,1107],{"emptyLinePlaceholder":764},[62,1843,1845,1847,1849,1851,1853,1855,1857,1859],{"class":64,"line":1844},49,[62,1846,1624],{"class":83},[62,1848,205],{"class":112},[62,1850,1624],{"class":83},[62,1852,206],{"class":1139},[62,1854,1624],{"class":83},[62,1856,209],{"class":112},[62,1858,1624],{"class":83},[62,1860,1861],{"class":1139}," read the defaults. Nuxt reads the config.\n",[22,1863,1866],{"className":56,"code":1864,"filename":1865,"language":58,"meta":30,"style":30},"import { Repository } from '@fougere\u002Fcore';\nimport Product from '@shop\u002Fcatalog\u002Fmodels\u002FProduct.js';\n\nexport default class ProductHandler extends Repository\u003CProduct> {}\n\n","domains\u002Fcatalog\u002Fendpoints\u002FProductHandler.ts",[17,1867,1868,1894,1913,1917],{"__ignoreMap":30},[62,1869,1870,1873,1875,1878,1881,1884,1886,1889,1891],{"class":64,"line":65},[62,1871,1872],{"class":68},"import",[62,1874,154],{"class":83},[62,1876,1877],{"class":1139}," Repository",[62,1879,1880],{"class":83}," }",[62,1882,1883],{"class":68}," from",[62,1885,109],{"class":108},[62,1887,1888],{"class":112},"@fougere\u002Fcore",[62,1890,116],{"class":108},[62,1892,1893],{"class":83},";\n",[62,1895,1896,1898,1901,1904,1906,1909,1911],{"class":64,"line":87},[62,1897,1872],{"class":68},[62,1899,1900],{"class":1139}," Product ",[62,1902,1903],{"class":68},"from",[62,1905,109],{"class":108},[62,1907,1908],{"class":112},"@shop\u002Fcatalog\u002Fmodels\u002FProduct.js",[62,1910,116],{"class":108},[62,1912,1893],{"class":83},[62,1914,1915],{"class":64,"line":100},[62,1916,1107],{"emptyLinePlaceholder":764},[62,1918,1919,1921,1923,1927,1931,1934,1936,1939,1942,1945],{"class":64,"line":126},[62,1920,69],{"class":68},[62,1922,72],{"class":68},[62,1924,1926],{"class":1925},"s76I7"," class",[62,1928,1930],{"class":1929},"sBZYL"," ProductHandler",[62,1932,1933],{"class":1925}," extends",[62,1935,1877],{"class":1929},[62,1937,1938],{"class":83},"\u003C",[62,1940,1941],{"class":1929},"Product",[62,1943,1944],{"class":83},">",[62,1946,1947],{"class":83}," {}\n",[22,1949,1952],{"className":56,"code":1950,"filename":1951,"language":58,"meta":30,"style":30},"export default [\n  { id: 'fern', sku: 'plant-1', title: 'Fern', cents: 1000 },\n  { id: 'moss', sku: 'plant-2', title: 'Moss', cents: 450 },\n];\n\n","domains\u002Fcatalog\u002Ffixtures\u002FProduct.seed.ts",[17,1953,1954,1963,2022,2074],{"__ignoreMap":30},[62,1955,1956,1958,1960],{"class":64,"line":65},[62,1957,69],{"class":68},[62,1959,72],{"class":68},[62,1961,1962],{"class":79}," [\n",[62,1964,1965,1968,1971,1973,1975,1978,1980,1982,1985,1987,1989,1992,1994,1996,1999,2001,2003,2006,2008,2010,2013,2015,2019],{"class":64,"line":87},[62,1966,1967],{"class":83},"  {",[62,1969,1970],{"class":90}," id",[62,1972,94],{"class":83},[62,1974,109],{"class":108},[62,1976,1977],{"class":112},"fern",[62,1979,116],{"class":108},[62,1981,119],{"class":83},[62,1983,1984],{"class":90}," sku",[62,1986,94],{"class":83},[62,1988,109],{"class":108},[62,1990,1991],{"class":112},"plant-1",[62,1993,116],{"class":108},[62,1995,119],{"class":83},[62,1997,1998],{"class":90}," title",[62,2000,94],{"class":83},[62,2002,109],{"class":108},[62,2004,2005],{"class":112},"Fern",[62,2007,116],{"class":108},[62,2009,119],{"class":83},[62,2011,2012],{"class":90}," cents",[62,2014,94],{"class":83},[62,2016,2018],{"class":2017},"s3dPA"," 1000",[62,2020,2021],{"class":83}," },\n",[62,2023,2024,2026,2028,2030,2032,2035,2037,2039,2041,2043,2045,2048,2050,2052,2054,2056,2058,2061,2063,2065,2067,2069,2072],{"class":64,"line":100},[62,2025,1967],{"class":83},[62,2027,1970],{"class":90},[62,2029,94],{"class":83},[62,2031,109],{"class":108},[62,2033,2034],{"class":112},"moss",[62,2036,116],{"class":108},[62,2038,119],{"class":83},[62,2040,1984],{"class":90},[62,2042,94],{"class":83},[62,2044,109],{"class":108},[62,2046,2047],{"class":112},"plant-2",[62,2049,116],{"class":108},[62,2051,119],{"class":83},[62,2053,1998],{"class":90},[62,2055,94],{"class":83},[62,2057,109],{"class":108},[62,2059,2060],{"class":112},"Moss",[62,2062,116],{"class":108},[62,2064,119],{"class":83},[62,2066,2012],{"class":90},[62,2068,94],{"class":83},[62,2070,2071],{"class":2017}," 450",[62,2073,2021],{"class":83},[62,2075,2076,2079],{"class":64,"line":126},[62,2077,2078],{"class":79},"]",[62,2080,1893],{"class":83},[22,2082,2085],{"className":242,"code":2083,"filename":2084,"language":244,"meta":30,"style":30},"{\n  \"$defs\": {\n    \"product\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"x-fougere\": {\n            \"role\": {\n              \"primary\": true\n            },\n            \"lifecycle\": {\n              \"create\": {\n                \"generate\": \"uuidv7\"\n              },\n              \"update\": \"forbidden\"\n            }\n          }\n        },\n        \"sku\": {\n          \"type\": \"string\",\n          \"format\": \"sku\"\n        },\n        \"title\": {\n          \"type\": \"string\",\n          \"minLength\": 1\n        },\n        \"cents\": {\n          \"type\": \"number\",\n          \"minimum\": 0\n        }\n      },\n      \"x-fougere-version\": 1,\n      \"x-fougere-vendor\": \"fougere\",\n      \"title\": \"product\",\n      \"required\": [\n        \"sku\",\n        \"title\",\n        \"cents\"\n      ]\n    }\n  },\n  \"x-fougere-version\": 1,\n  \"x-fougere-vendor\": \"fougere\"\n}\n\n","domains\u002Fcatalog\u002Fhistory\u002Fv1\u002Fshape.json",[17,2086,2087,2091,2104,2117,2137,2150,2164,2185,2198,2213,2229,2234,2247,2260,2280,2285,2303,2308,2313,2318,2331,2349,2366,2370,2383,2401,2415,2419,2432,2451,2465,2470,2475,2491,2511,2529,2542,2552,2562,2570,2575,2579,2583,2597,2613],{"__ignoreMap":30},[62,2088,2089],{"class":64,"line":65},[62,2090,84],{"class":83},[62,2092,2093,2095,2098,2100,2102],{"class":64,"line":87},[62,2094,255],{"class":83},[62,2096,2097],{"class":258},"$defs",[62,2099,262],{"class":83},[62,2101,94],{"class":83},[62,2103,97],{"class":83},[62,2105,2106,2108,2111,2113,2115],{"class":64,"line":100},[62,2107,332],{"class":83},[62,2109,2110],{"class":335},"product",[62,2112,262],{"class":83},[62,2114,94],{"class":83},[62,2116,97],{"class":83},[62,2118,2119,2121,2124,2126,2128,2130,2133,2135],{"class":64,"line":126},[62,2120,347],{"class":83},[62,2122,2123],{"class":350},"type",[62,2125,262],{"class":83},[62,2127,94],{"class":83},[62,2129,267],{"class":108},[62,2131,2132],{"class":112},"object",[62,2134,262],{"class":108},[62,2136,274],{"class":83},[62,2138,2139,2141,2144,2146,2148],{"class":64,"line":146},[62,2140,347],{"class":83},[62,2142,2143],{"class":350},"properties",[62,2145,262],{"class":83},[62,2147,94],{"class":83},[62,2149,97],{"class":83},[62,2151,2152,2155,2158,2160,2162],{"class":64,"line":175},[62,2153,2154],{"class":83},"        \"",[62,2156,2157],{"class":90},"id",[62,2159,262],{"class":83},[62,2161,94],{"class":83},[62,2163,97],{"class":83},[62,2165,2166,2169,2172,2174,2176,2178,2181,2183],{"class":64,"line":181},[62,2167,2168],{"class":83},"          \"",[62,2170,2123],{"class":2171},"sLLcL",[62,2173,262],{"class":83},[62,2175,94],{"class":83},[62,2177,267],{"class":108},[62,2179,2180],{"class":112},"string",[62,2182,262],{"class":108},[62,2184,274],{"class":83},[62,2186,2187,2189,2192,2194,2196],{"class":64,"line":401},[62,2188,2168],{"class":83},[62,2190,2191],{"class":2171},"x-fougere",[62,2193,262],{"class":83},[62,2195,94],{"class":83},[62,2197,97],{"class":83},[62,2199,2200,2203,2207,2209,2211],{"class":64,"line":407},[62,2201,2202],{"class":83},"            \"",[62,2204,2206],{"class":2205},"sqrf7","role",[62,2208,262],{"class":83},[62,2210,94],{"class":83},[62,2212,97],{"class":83},[62,2214,2215,2218,2222,2224,2226],{"class":64,"line":413},[62,2216,2217],{"class":83},"              \"",[62,2219,2221],{"class":2220},"sMGEM","primary",[62,2223,262],{"class":83},[62,2225,94],{"class":83},[62,2227,2228],{"class":108}," true\n",[62,2230,2231],{"class":64,"line":1164},[62,2232,2233],{"class":83},"            },\n",[62,2235,2236,2238,2241,2243,2245],{"class":64,"line":1172},[62,2237,2202],{"class":83},[62,2239,2240],{"class":2205},"lifecycle",[62,2242,262],{"class":83},[62,2244,94],{"class":83},[62,2246,97],{"class":83},[62,2248,2249,2251,2254,2256,2258],{"class":64,"line":1177},[62,2250,2217],{"class":83},[62,2252,2253],{"class":2220},"create",[62,2255,262],{"class":83},[62,2257,94],{"class":83},[62,2259,97],{"class":83},[62,2261,2262,2265,2268,2270,2272,2274,2277],{"class":64,"line":1185},[62,2263,2264],{"class":83},"                \"",[62,2266,2267],{"class":258},"generate",[62,2269,262],{"class":83},[62,2271,94],{"class":83},[62,2273,267],{"class":108},[62,2275,2276],{"class":112},"uuidv7",[62,2278,2279],{"class":108},"\"\n",[62,2281,2282],{"class":64,"line":1190},[62,2283,2284],{"class":83},"              },\n",[62,2286,2287,2289,2292,2294,2296,2298,2301],{"class":64,"line":1197},[62,2288,2217],{"class":83},[62,2290,2291],{"class":2220},"update",[62,2293,262],{"class":83},[62,2295,94],{"class":83},[62,2297,267],{"class":108},[62,2299,2300],{"class":112},"forbidden",[62,2302,2279],{"class":108},[62,2304,2305],{"class":64,"line":1202},[62,2306,2307],{"class":83},"            }\n",[62,2309,2310],{"class":64,"line":1210},[62,2311,2312],{"class":83},"          }\n",[62,2314,2315],{"class":64,"line":1218},[62,2316,2317],{"class":83},"        },\n",[62,2319,2320,2322,2325,2327,2329],{"class":64,"line":1226},[62,2321,2154],{"class":83},[62,2323,2324],{"class":90},"sku",[62,2326,262],{"class":83},[62,2328,94],{"class":83},[62,2330,97],{"class":83},[62,2332,2333,2335,2337,2339,2341,2343,2345,2347],{"class":64,"line":1234},[62,2334,2168],{"class":83},[62,2336,2123],{"class":2171},[62,2338,262],{"class":83},[62,2340,94],{"class":83},[62,2342,267],{"class":108},[62,2344,2180],{"class":112},[62,2346,262],{"class":108},[62,2348,274],{"class":83},[62,2350,2351,2353,2356,2358,2360,2362,2364],{"class":64,"line":1242},[62,2352,2168],{"class":83},[62,2354,2355],{"class":2171},"format",[62,2357,262],{"class":83},[62,2359,94],{"class":83},[62,2361,267],{"class":108},[62,2363,2324],{"class":112},[62,2365,2279],{"class":108},[62,2367,2368],{"class":64,"line":1247},[62,2369,2317],{"class":83},[62,2371,2372,2374,2377,2379,2381],{"class":64,"line":1255},[62,2373,2154],{"class":83},[62,2375,2376],{"class":90},"title",[62,2378,262],{"class":83},[62,2380,94],{"class":83},[62,2382,97],{"class":83},[62,2384,2385,2387,2389,2391,2393,2395,2397,2399],{"class":64,"line":1260},[62,2386,2168],{"class":83},[62,2388,2123],{"class":2171},[62,2390,262],{"class":83},[62,2392,94],{"class":83},[62,2394,267],{"class":108},[62,2396,2180],{"class":112},[62,2398,262],{"class":108},[62,2400,274],{"class":83},[62,2402,2403,2405,2408,2410,2412],{"class":64,"line":1267},[62,2404,2168],{"class":83},[62,2406,2407],{"class":2171},"minLength",[62,2409,262],{"class":83},[62,2411,94],{"class":83},[62,2413,2414],{"class":2017}," 1\n",[62,2416,2417],{"class":64,"line":1272},[62,2418,2317],{"class":83},[62,2420,2421,2423,2426,2428,2430],{"class":64,"line":1288},[62,2422,2154],{"class":83},[62,2424,2425],{"class":90},"cents",[62,2427,262],{"class":83},[62,2429,94],{"class":83},[62,2431,97],{"class":83},[62,2433,2434,2436,2438,2440,2442,2444,2447,2449],{"class":64,"line":1297},[62,2435,2168],{"class":83},[62,2437,2123],{"class":2171},[62,2439,262],{"class":83},[62,2441,94],{"class":83},[62,2443,267],{"class":108},[62,2445,2446],{"class":112},"number",[62,2448,262],{"class":108},[62,2450,274],{"class":83},[62,2452,2453,2455,2458,2460,2462],{"class":64,"line":1305},[62,2454,2168],{"class":83},[62,2456,2457],{"class":2171},"minimum",[62,2459,262],{"class":83},[62,2461,94],{"class":83},[62,2463,2464],{"class":2017}," 0\n",[62,2466,2467],{"class":64,"line":1313},[62,2468,2469],{"class":83},"        }\n",[62,2471,2472],{"class":64,"line":1321},[62,2473,2474],{"class":83},"      },\n",[62,2476,2477,2479,2482,2484,2486,2489],{"class":64,"line":1329},[62,2478,347],{"class":83},[62,2480,2481],{"class":350},"x-fougere-version",[62,2483,262],{"class":83},[62,2485,94],{"class":83},[62,2487,2488],{"class":2017}," 1",[62,2490,274],{"class":83},[62,2492,2493,2495,2498,2500,2502,2504,2507,2509],{"class":64,"line":1334},[62,2494,347],{"class":83},[62,2496,2497],{"class":350},"x-fougere-vendor",[62,2499,262],{"class":83},[62,2501,94],{"class":83},[62,2503,267],{"class":108},[62,2505,2506],{"class":112},"fougere",[62,2508,262],{"class":108},[62,2510,274],{"class":83},[62,2512,2513,2515,2517,2519,2521,2523,2525,2527],{"class":64,"line":1342},[62,2514,347],{"class":83},[62,2516,2376],{"class":350},[62,2518,262],{"class":83},[62,2520,94],{"class":83},[62,2522,267],{"class":108},[62,2524,2110],{"class":112},[62,2526,262],{"class":108},[62,2528,274],{"class":83},[62,2530,2531,2533,2536,2538,2540],{"class":64,"line":1347},[62,2532,347],{"class":83},[62,2534,2535],{"class":350},"required",[62,2537,262],{"class":83},[62,2539,94],{"class":83},[62,2541,1962],{"class":83},[62,2543,2544,2546,2548,2550],{"class":64,"line":1354},[62,2545,2154],{"class":108},[62,2547,2324],{"class":112},[62,2549,262],{"class":108},[62,2551,274],{"class":83},[62,2553,2554,2556,2558,2560],{"class":64,"line":1359},[62,2555,2154],{"class":108},[62,2557,2376],{"class":112},[62,2559,262],{"class":108},[62,2561,274],{"class":83},[62,2563,2564,2566,2568],{"class":64,"line":1373},[62,2565,2154],{"class":108},[62,2567,2425],{"class":112},[62,2569,2279],{"class":108},[62,2571,2572],{"class":64,"line":1387},[62,2573,2574],{"class":83},"      ]\n",[62,2576,2577],{"class":64,"line":1401},[62,2578,404],{"class":83},[62,2580,2581],{"class":64,"line":1415},[62,2582,178],{"class":83},[62,2584,2585,2587,2589,2591,2593,2595],{"class":64,"line":1423},[62,2586,255],{"class":83},[62,2588,2481],{"class":258},[62,2590,262],{"class":83},[62,2592,94],{"class":83},[62,2594,2488],{"class":2017},[62,2596,274],{"class":83},[62,2598,2599,2601,2603,2605,2607,2609,2611],{"class":64,"line":1431},[62,2600,255],{"class":83},[62,2602,2497],{"class":258},[62,2604,262],{"class":83},[62,2606,94],{"class":83},[62,2608,267],{"class":108},[62,2610,2506],{"class":112},[62,2612,2279],{"class":108},[62,2614,2615],{"class":64,"line":1439},[62,2616,416],{"class":83},[22,2618,2621],{"className":56,"code":2619,"filename":2620,"language":58,"meta":30,"style":30},"import { entity, number, primary, text } from '@fougere\u002Fschema';\n\nexport default class Product extends entity({\n  id: primary(),\n  sku: text({ format: 'sku' }),\n  title: text({ min: 1 }),\n  cents: number({ min: 0 }),\n}) {}\n\n","domains\u002Fcatalog\u002Fmodels\u002FProduct.ts",[17,2622,2623,2660,2664,2683,2697,2729,2755,2781],{"__ignoreMap":30},[62,2624,2625,2627,2629,2632,2634,2637,2639,2642,2644,2647,2649,2651,2653,2656,2658],{"class":64,"line":65},[62,2626,1872],{"class":68},[62,2628,154],{"class":83},[62,2630,2631],{"class":1139}," entity",[62,2633,119],{"class":83},[62,2635,2636],{"class":1139}," number",[62,2638,119],{"class":83},[62,2640,2641],{"class":1139}," primary",[62,2643,119],{"class":83},[62,2645,2646],{"class":1139}," text",[62,2648,1880],{"class":83},[62,2650,1883],{"class":68},[62,2652,109],{"class":108},[62,2654,2655],{"class":112},"@fougere\u002Fschema",[62,2657,116],{"class":108},[62,2659,1893],{"class":83},[62,2661,2662],{"class":64,"line":87},[62,2663,1107],{"emptyLinePlaceholder":764},[62,2665,2666,2668,2670,2672,2675,2677,2679,2681],{"class":64,"line":100},[62,2667,69],{"class":68},[62,2669,72],{"class":68},[62,2671,1926],{"class":1925},[62,2673,2674],{"class":1929}," Product",[62,2676,1933],{"class":1925},[62,2678,2631],{"class":75},[62,2680,80],{"class":79},[62,2682,84],{"class":83},[62,2684,2685,2688,2690,2692,2695],{"class":64,"line":126},[62,2686,2687],{"class":90},"  id",[62,2689,94],{"class":83},[62,2691,2641],{"class":75},[62,2693,2694],{"class":79},"()",[62,2696,274],{"class":83},[62,2698,2699,2702,2704,2706,2708,2711,2714,2716,2718,2720,2722,2724,2727],{"class":64,"line":146},[62,2700,2701],{"class":90},"  sku",[62,2703,94],{"class":83},[62,2705,2646],{"class":75},[62,2707,80],{"class":79},[62,2709,2710],{"class":83},"{",[62,2712,2713],{"class":90}," format",[62,2715,94],{"class":83},[62,2717,109],{"class":108},[62,2719,2324],{"class":112},[62,2721,116],{"class":108},[62,2723,1880],{"class":83},[62,2725,2726],{"class":79},")",[62,2728,274],{"class":83},[62,2730,2731,2734,2736,2738,2740,2742,2745,2747,2749,2751,2753],{"class":64,"line":175},[62,2732,2733],{"class":90},"  title",[62,2735,94],{"class":83},[62,2737,2646],{"class":75},[62,2739,80],{"class":79},[62,2741,2710],{"class":83},[62,2743,2744],{"class":90}," min",[62,2746,94],{"class":83},[62,2748,2488],{"class":2017},[62,2750,1880],{"class":83},[62,2752,2726],{"class":79},[62,2754,274],{"class":83},[62,2756,2757,2760,2762,2764,2766,2768,2770,2772,2775,2777,2779],{"class":64,"line":181},[62,2758,2759],{"class":90},"  cents",[62,2761,94],{"class":83},[62,2763,2636],{"class":75},[62,2765,80],{"class":79},[62,2767,2710],{"class":83},[62,2769,2744],{"class":90},[62,2771,94],{"class":83},[62,2773,2774],{"class":2017}," 0",[62,2776,1880],{"class":83},[62,2778,2726],{"class":79},[62,2780,274],{"class":83},[62,2782,2783,2785,2787],{"class":64,"line":401},[62,2784,184],{"class":83},[62,2786,2726],{"class":79},[62,2788,1947],{"class":83},[22,2790,2793],{"className":56,"code":2791,"filename":2792,"language":58,"meta":30,"style":30},"import { StringFormats } from '@fougere\u002Fschema';\n\nexport const sku = StringFormats.term('sku', (value) => \u002F^[a-z]+-\\d+$\u002F.test(value));\n\n","domains\u002Fcatalog\u002Fterms\u002Fsku.ts",[17,2794,2795,2816,2820],{"__ignoreMap":30},[62,2796,2797,2799,2801,2804,2806,2808,2810,2812,2814],{"class":64,"line":65},[62,2798,1872],{"class":68},[62,2800,154],{"class":83},[62,2802,2803],{"class":1139}," StringFormats",[62,2805,1880],{"class":83},[62,2807,1883],{"class":68},[62,2809,109],{"class":108},[62,2811,2655],{"class":112},[62,2813,116],{"class":108},[62,2815,1893],{"class":83},[62,2817,2818],{"class":64,"line":87},[62,2819,1107],{"emptyLinePlaceholder":764},[62,2821,2822,2824,2827,2830,2833,2835,2837,2840,2842,2844,2846,2848,2850,2853,2857,2859,2863,2866,2869,2871,2874,2877,2880,2883,2886,2889,2891,2894,2896,2898,2901],{"class":64,"line":100},[62,2823,69],{"class":68},[62,2825,2826],{"class":1925}," const",[62,2828,2829],{"class":1139}," sku ",[62,2831,2832],{"class":83},"=",[62,2834,2803],{"class":1139},[62,2836,437],{"class":83},[62,2838,2839],{"class":75},"term",[62,2841,80],{"class":79},[62,2843,116],{"class":108},[62,2845,2324],{"class":112},[62,2847,116],{"class":108},[62,2849,119],{"class":83},[62,2851,2852],{"class":83}," (",[62,2854,2856],{"class":2855},"shDUQ","value",[62,2858,2726],{"class":83},[62,2860,2862],{"class":2861},"scTuO"," =>",[62,2864,2865],{"class":108}," \u002F",[62,2867,2868],{"class":68},"^",[62,2870,1280],{"class":83},[62,2872,2873],{"class":112},"a-z",[62,2875,2876],{"class":83},"]+",[62,2878,2879],{"class":112},"-\\d",[62,2881,2882],{"class":83},"+",[62,2884,2885],{"class":68},"$",[62,2887,2888],{"class":108},"\u002F",[62,2890,437],{"class":83},[62,2892,2893],{"class":75},"test",[62,2895,80],{"class":79},[62,2897,2856],{"class":1139},[62,2899,2900],{"class":79},"))",[62,2902,1893],{"class":83},[22,2904,2907],{"className":56,"code":2905,"filename":2906,"language":58,"meta":30,"style":30},"import { ErrorCode, FougereError, type Facade, type Repository } from '@fougere\u002Fcore';\nimport type ProductHandler from '@shop\u002Fcatalog\u002Fendpoints\u002FProductHandler.js';\nimport type Order from '@shop\u002Forders\u002Fmodels\u002FOrder.js';\nimport type Till from '@shop\u002Forders\u002Fproviders\u002FTill.js';\n\nexport default class OrderHandler {\n  constructor(\n    private orders: Repository\u003COrder>,\n    private products: Facade\u003CProductHandler>,\n    private till: Till,\n  ) {}\n\n  async place(productId: string): Promise\u003COrder> {\n    const product = await this.products.findById(productId);\n    if (!product) throw new FougereError({ code: ErrorCode.NOT_FOUND, message: `No product '${productId}'` });\n\n    return this.orders.create({ product: product.title, cents: this.till.total(product.cents) });\n  }\n}\n\n","domains\u002Forders\u002Fendpoints\u002FOrderHandler.ts",[17,2908,2909,2949,2969,2989,3009,3013,3026,3034,3054,3072,3086,3093,3097,3130,3168,3237,3241,3305,3309],{"__ignoreMap":30},[62,2910,2911,2913,2915,2918,2920,2923,2925,2928,2931,2933,2935,2937,2939,2941,2943,2945,2947],{"class":64,"line":65},[62,2912,1872],{"class":68},[62,2914,154],{"class":83},[62,2916,2917],{"class":1139}," ErrorCode",[62,2919,119],{"class":83},[62,2921,2922],{"class":1139}," FougereError",[62,2924,119],{"class":83},[62,2926,2927],{"class":68}," type",[62,2929,2930],{"class":1139}," Facade",[62,2932,119],{"class":83},[62,2934,2927],{"class":68},[62,2936,1877],{"class":1139},[62,2938,1880],{"class":83},[62,2940,1883],{"class":68},[62,2942,109],{"class":108},[62,2944,1888],{"class":112},[62,2946,116],{"class":108},[62,2948,1893],{"class":83},[62,2950,2951,2953,2955,2958,2960,2962,2965,2967],{"class":64,"line":87},[62,2952,1872],{"class":68},[62,2954,2927],{"class":68},[62,2956,2957],{"class":1139}," ProductHandler ",[62,2959,1903],{"class":68},[62,2961,109],{"class":108},[62,2963,2964],{"class":112},"@shop\u002Fcatalog\u002Fendpoints\u002FProductHandler.js",[62,2966,116],{"class":108},[62,2968,1893],{"class":83},[62,2970,2971,2973,2975,2978,2980,2982,2985,2987],{"class":64,"line":100},[62,2972,1872],{"class":68},[62,2974,2927],{"class":68},[62,2976,2977],{"class":1139}," Order ",[62,2979,1903],{"class":68},[62,2981,109],{"class":108},[62,2983,2984],{"class":112},"@shop\u002Forders\u002Fmodels\u002FOrder.js",[62,2986,116],{"class":108},[62,2988,1893],{"class":83},[62,2990,2991,2993,2995,2998,3000,3002,3005,3007],{"class":64,"line":126},[62,2992,1872],{"class":68},[62,2994,2927],{"class":68},[62,2996,2997],{"class":1139}," Till ",[62,2999,1903],{"class":68},[62,3001,109],{"class":108},[62,3003,3004],{"class":112},"@shop\u002Forders\u002Fproviders\u002FTill.js",[62,3006,116],{"class":108},[62,3008,1893],{"class":83},[62,3010,3011],{"class":64,"line":146},[62,3012,1107],{"emptyLinePlaceholder":764},[62,3014,3015,3017,3019,3021,3024],{"class":64,"line":175},[62,3016,69],{"class":68},[62,3018,72],{"class":68},[62,3020,1926],{"class":1925},[62,3022,3023],{"class":1929}," OrderHandler",[62,3025,97],{"class":83},[62,3027,3028,3031],{"class":64,"line":181},[62,3029,3030],{"class":1925},"  constructor",[62,3032,3033],{"class":83},"(\n",[62,3035,3036,3039,3042,3044,3046,3048,3051],{"class":64,"line":401},[62,3037,3038],{"class":1925},"    private",[62,3040,3041],{"class":2855}," orders",[62,3043,94],{"class":83},[62,3045,1877],{"class":1929},[62,3047,1938],{"class":83},[62,3049,3050],{"class":1929},"Order",[62,3052,3053],{"class":83},">,\n",[62,3055,3056,3058,3061,3063,3065,3067,3070],{"class":64,"line":407},[62,3057,3038],{"class":1925},[62,3059,3060],{"class":2855}," products",[62,3062,94],{"class":83},[62,3064,2930],{"class":1929},[62,3066,1938],{"class":83},[62,3068,3069],{"class":1929},"ProductHandler",[62,3071,3053],{"class":83},[62,3073,3074,3076,3079,3081,3084],{"class":64,"line":413},[62,3075,3038],{"class":1925},[62,3077,3078],{"class":2855}," till",[62,3080,94],{"class":83},[62,3082,3083],{"class":1929}," Till",[62,3085,274],{"class":83},[62,3087,3088,3091],{"class":64,"line":1164},[62,3089,3090],{"class":83},"  )",[62,3092,1947],{"class":83},[62,3094,3095],{"class":64,"line":1172},[62,3096,1107],{"emptyLinePlaceholder":764},[62,3098,3099,3102,3106,3108,3111,3113,3116,3119,3122,3124,3126,3128],{"class":64,"line":1177},[62,3100,3101],{"class":1925},"  async",[62,3103,3105],{"class":3104},"shDkW"," place",[62,3107,80],{"class":83},[62,3109,3110],{"class":2855},"productId",[62,3112,94],{"class":83},[62,3114,3115],{"class":1929}," string",[62,3117,3118],{"class":83},"):",[62,3120,3121],{"class":1929}," Promise",[62,3123,1938],{"class":83},[62,3125,3050],{"class":1929},[62,3127,1944],{"class":83},[62,3129,97],{"class":83},[62,3131,3132,3135,3138,3141,3144,3148,3150,3154,3156,3159,3162,3164,3166],{"class":64,"line":1185},[62,3133,3134],{"class":1925},"    const",[62,3136,3137],{"class":1139}," product",[62,3139,3140],{"class":83}," =",[62,3142,3143],{"class":68}," await",[62,3145,3147],{"class":3146},"sxG60"," this",[62,3149,437],{"class":83},[62,3151,3153],{"class":3152},"sy9f4","products",[62,3155,437],{"class":83},[62,3157,3158],{"class":75},"findById",[62,3160,80],{"class":3161},"spAFX",[62,3163,3110],{"class":1139},[62,3165,2726],{"class":3161},[62,3167,1893],{"class":83},[62,3169,3170,3173,3175,3178,3180,3182,3185,3188,3191,3193,3195,3198,3200,3202,3204,3207,3209,3212,3214,3217,3220,3223,3225,3227,3229,3231,3233,3235],{"class":64,"line":1190},[62,3171,3172],{"class":68},"    if",[62,3174,2852],{"class":3161},[62,3176,3177],{"class":83},"!",[62,3179,2110],{"class":1139},[62,3181,2726],{"class":3161},[62,3183,3184],{"class":68}," throw",[62,3186,3187],{"class":83}," new",[62,3189,2922],{"class":3190},"sgjsB",[62,3192,80],{"class":3161},[62,3194,2710],{"class":83},[62,3196,3197],{"class":90}," code",[62,3199,94],{"class":83},[62,3201,2917],{"class":1139},[62,3203,437],{"class":83},[62,3205,3206],{"class":3152},"NOT_FOUND",[62,3208,119],{"class":83},[62,3210,3211],{"class":90}," message",[62,3213,94],{"class":83},[62,3215,3216],{"class":108}," `",[62,3218,3219],{"class":112},"No product '",[62,3221,3222],{"class":83},"${",[62,3224,3110],{"class":1139},[62,3226,184],{"class":83},[62,3228,116],{"class":112},[62,3230,1624],{"class":108},[62,3232,1880],{"class":83},[62,3234,2726],{"class":3161},[62,3236,1893],{"class":83},[62,3238,3239],{"class":64,"line":1197},[62,3240,1107],{"emptyLinePlaceholder":764},[62,3242,3243,3246,3248,3250,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279,3281,3284,3286,3289,3291,3293,3295,3297,3299,3301,3303],{"class":64,"line":1202},[62,3244,3245],{"class":68},"    return",[62,3247,3147],{"class":3146},[62,3249,437],{"class":83},[62,3251,3252],{"class":3152},"orders",[62,3254,437],{"class":83},[62,3256,2253],{"class":75},[62,3258,80],{"class":3161},[62,3260,2710],{"class":83},[62,3262,3137],{"class":90},[62,3264,94],{"class":83},[62,3266,3137],{"class":1139},[62,3268,437],{"class":83},[62,3270,2376],{"class":3152},[62,3272,119],{"class":83},[62,3274,2012],{"class":90},[62,3276,94],{"class":83},[62,3278,3147],{"class":3146},[62,3280,437],{"class":83},[62,3282,3283],{"class":3152},"till",[62,3285,437],{"class":83},[62,3287,3288],{"class":75},"total",[62,3290,80],{"class":3161},[62,3292,2110],{"class":1139},[62,3294,437],{"class":83},[62,3296,2425],{"class":3152},[62,3298,2726],{"class":3161},[62,3300,1880],{"class":83},[62,3302,2726],{"class":3161},[62,3304,1893],{"class":83},[62,3306,3307],{"class":64,"line":1210},[62,3308,410],{"class":83},[62,3310,3311],{"class":64,"line":1218},[62,3312,416],{"class":83},[22,3314,3317],{"className":242,"code":3315,"filename":3316,"language":244,"meta":30,"style":30},"{\n  \"$defs\": {\n    \"order\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"x-fougere\": {\n            \"role\": {\n              \"primary\": true\n            },\n            \"lifecycle\": {\n              \"create\": {\n                \"generate\": \"uuidv7\"\n              },\n              \"update\": \"forbidden\"\n            }\n          }\n        },\n        \"product\": {\n          \"type\": \"string\",\n          \"minLength\": 1\n        },\n        \"cents\": {\n          \"type\": \"number\",\n          \"minimum\": 0\n        }\n      },\n      \"x-fougere-version\": 1,\n      \"x-fougere-vendor\": \"fougere\",\n      \"title\": \"order\",\n      \"required\": [\n        \"product\",\n        \"cents\"\n      ]\n    }\n  },\n  \"x-fougere-version\": 1,\n  \"x-fougere-vendor\": \"fougere\"\n}\n\n","domains\u002Forders\u002Fhistory\u002Fv1\u002Fshape.json",[17,3318,3319,3323,3335,3348,3366,3378,3390,3408,3420,3432,3444,3448,3460,3472,3488,3492,3508,3512,3516,3520,3532,3550,3562,3566,3578,3596,3608,3612,3616,3630,3648,3666,3678,3688,3696,3700,3704,3708,3722,3738],{"__ignoreMap":30},[62,3320,3321],{"class":64,"line":65},[62,3322,84],{"class":83},[62,3324,3325,3327,3329,3331,3333],{"class":64,"line":87},[62,3326,255],{"class":83},[62,3328,2097],{"class":258},[62,3330,262],{"class":83},[62,3332,94],{"class":83},[62,3334,97],{"class":83},[62,3336,3337,3339,3342,3344,3346],{"class":64,"line":100},[62,3338,332],{"class":83},[62,3340,3341],{"class":335},"order",[62,3343,262],{"class":83},[62,3345,94],{"class":83},[62,3347,97],{"class":83},[62,3349,3350,3352,3354,3356,3358,3360,3362,3364],{"class":64,"line":126},[62,3351,347],{"class":83},[62,3353,2123],{"class":350},[62,3355,262],{"class":83},[62,3357,94],{"class":83},[62,3359,267],{"class":108},[62,3361,2132],{"class":112},[62,3363,262],{"class":108},[62,3365,274],{"class":83},[62,3367,3368,3370,3372,3374,3376],{"class":64,"line":146},[62,3369,347],{"class":83},[62,3371,2143],{"class":350},[62,3373,262],{"class":83},[62,3375,94],{"class":83},[62,3377,97],{"class":83},[62,3379,3380,3382,3384,3386,3388],{"class":64,"line":175},[62,3381,2154],{"class":83},[62,3383,2157],{"class":90},[62,3385,262],{"class":83},[62,3387,94],{"class":83},[62,3389,97],{"class":83},[62,3391,3392,3394,3396,3398,3400,3402,3404,3406],{"class":64,"line":181},[62,3393,2168],{"class":83},[62,3395,2123],{"class":2171},[62,3397,262],{"class":83},[62,3399,94],{"class":83},[62,3401,267],{"class":108},[62,3403,2180],{"class":112},[62,3405,262],{"class":108},[62,3407,274],{"class":83},[62,3409,3410,3412,3414,3416,3418],{"class":64,"line":401},[62,3411,2168],{"class":83},[62,3413,2191],{"class":2171},[62,3415,262],{"class":83},[62,3417,94],{"class":83},[62,3419,97],{"class":83},[62,3421,3422,3424,3426,3428,3430],{"class":64,"line":407},[62,3423,2202],{"class":83},[62,3425,2206],{"class":2205},[62,3427,262],{"class":83},[62,3429,94],{"class":83},[62,3431,97],{"class":83},[62,3433,3434,3436,3438,3440,3442],{"class":64,"line":413},[62,3435,2217],{"class":83},[62,3437,2221],{"class":2220},[62,3439,262],{"class":83},[62,3441,94],{"class":83},[62,3443,2228],{"class":108},[62,3445,3446],{"class":64,"line":1164},[62,3447,2233],{"class":83},[62,3449,3450,3452,3454,3456,3458],{"class":64,"line":1172},[62,3451,2202],{"class":83},[62,3453,2240],{"class":2205},[62,3455,262],{"class":83},[62,3457,94],{"class":83},[62,3459,97],{"class":83},[62,3461,3462,3464,3466,3468,3470],{"class":64,"line":1177},[62,3463,2217],{"class":83},[62,3465,2253],{"class":2220},[62,3467,262],{"class":83},[62,3469,94],{"class":83},[62,3471,97],{"class":83},[62,3473,3474,3476,3478,3480,3482,3484,3486],{"class":64,"line":1185},[62,3475,2264],{"class":83},[62,3477,2267],{"class":258},[62,3479,262],{"class":83},[62,3481,94],{"class":83},[62,3483,267],{"class":108},[62,3485,2276],{"class":112},[62,3487,2279],{"class":108},[62,3489,3490],{"class":64,"line":1190},[62,3491,2284],{"class":83},[62,3493,3494,3496,3498,3500,3502,3504,3506],{"class":64,"line":1197},[62,3495,2217],{"class":83},[62,3497,2291],{"class":2220},[62,3499,262],{"class":83},[62,3501,94],{"class":83},[62,3503,267],{"class":108},[62,3505,2300],{"class":112},[62,3507,2279],{"class":108},[62,3509,3510],{"class":64,"line":1202},[62,3511,2307],{"class":83},[62,3513,3514],{"class":64,"line":1210},[62,3515,2312],{"class":83},[62,3517,3518],{"class":64,"line":1218},[62,3519,2317],{"class":83},[62,3521,3522,3524,3526,3528,3530],{"class":64,"line":1226},[62,3523,2154],{"class":83},[62,3525,2110],{"class":90},[62,3527,262],{"class":83},[62,3529,94],{"class":83},[62,3531,97],{"class":83},[62,3533,3534,3536,3538,3540,3542,3544,3546,3548],{"class":64,"line":1234},[62,3535,2168],{"class":83},[62,3537,2123],{"class":2171},[62,3539,262],{"class":83},[62,3541,94],{"class":83},[62,3543,267],{"class":108},[62,3545,2180],{"class":112},[62,3547,262],{"class":108},[62,3549,274],{"class":83},[62,3551,3552,3554,3556,3558,3560],{"class":64,"line":1242},[62,3553,2168],{"class":83},[62,3555,2407],{"class":2171},[62,3557,262],{"class":83},[62,3559,94],{"class":83},[62,3561,2414],{"class":2017},[62,3563,3564],{"class":64,"line":1247},[62,3565,2317],{"class":83},[62,3567,3568,3570,3572,3574,3576],{"class":64,"line":1255},[62,3569,2154],{"class":83},[62,3571,2425],{"class":90},[62,3573,262],{"class":83},[62,3575,94],{"class":83},[62,3577,97],{"class":83},[62,3579,3580,3582,3584,3586,3588,3590,3592,3594],{"class":64,"line":1260},[62,3581,2168],{"class":83},[62,3583,2123],{"class":2171},[62,3585,262],{"class":83},[62,3587,94],{"class":83},[62,3589,267],{"class":108},[62,3591,2446],{"class":112},[62,3593,262],{"class":108},[62,3595,274],{"class":83},[62,3597,3598,3600,3602,3604,3606],{"class":64,"line":1267},[62,3599,2168],{"class":83},[62,3601,2457],{"class":2171},[62,3603,262],{"class":83},[62,3605,94],{"class":83},[62,3607,2464],{"class":2017},[62,3609,3610],{"class":64,"line":1272},[62,3611,2469],{"class":83},[62,3613,3614],{"class":64,"line":1288},[62,3615,2474],{"class":83},[62,3617,3618,3620,3622,3624,3626,3628],{"class":64,"line":1297},[62,3619,347],{"class":83},[62,3621,2481],{"class":350},[62,3623,262],{"class":83},[62,3625,94],{"class":83},[62,3627,2488],{"class":2017},[62,3629,274],{"class":83},[62,3631,3632,3634,3636,3638,3640,3642,3644,3646],{"class":64,"line":1305},[62,3633,347],{"class":83},[62,3635,2497],{"class":350},[62,3637,262],{"class":83},[62,3639,94],{"class":83},[62,3641,267],{"class":108},[62,3643,2506],{"class":112},[62,3645,262],{"class":108},[62,3647,274],{"class":83},[62,3649,3650,3652,3654,3656,3658,3660,3662,3664],{"class":64,"line":1313},[62,3651,347],{"class":83},[62,3653,2376],{"class":350},[62,3655,262],{"class":83},[62,3657,94],{"class":83},[62,3659,267],{"class":108},[62,3661,3341],{"class":112},[62,3663,262],{"class":108},[62,3665,274],{"class":83},[62,3667,3668,3670,3672,3674,3676],{"class":64,"line":1321},[62,3669,347],{"class":83},[62,3671,2535],{"class":350},[62,3673,262],{"class":83},[62,3675,94],{"class":83},[62,3677,1962],{"class":83},[62,3679,3680,3682,3684,3686],{"class":64,"line":1329},[62,3681,2154],{"class":108},[62,3683,2110],{"class":112},[62,3685,262],{"class":108},[62,3687,274],{"class":83},[62,3689,3690,3692,3694],{"class":64,"line":1334},[62,3691,2154],{"class":108},[62,3693,2425],{"class":112},[62,3695,2279],{"class":108},[62,3697,3698],{"class":64,"line":1342},[62,3699,2574],{"class":83},[62,3701,3702],{"class":64,"line":1347},[62,3703,404],{"class":83},[62,3705,3706],{"class":64,"line":1354},[62,3707,178],{"class":83},[62,3709,3710,3712,3714,3716,3718,3720],{"class":64,"line":1359},[62,3711,255],{"class":83},[62,3713,2481],{"class":258},[62,3715,262],{"class":83},[62,3717,94],{"class":83},[62,3719,2488],{"class":2017},[62,3721,274],{"class":83},[62,3723,3724,3726,3728,3730,3732,3734,3736],{"class":64,"line":1373},[62,3725,255],{"class":83},[62,3727,2497],{"class":258},[62,3729,262],{"class":83},[62,3731,94],{"class":83},[62,3733,267],{"class":108},[62,3735,2506],{"class":112},[62,3737,2279],{"class":108},[62,3739,3740],{"class":64,"line":1387},[62,3741,416],{"class":83},[22,3743,3746],{"className":56,"code":3744,"filename":3745,"language":58,"meta":30,"style":30},"export const withTax = (cents: number): number => Math.round(cents * 1.2);\n\n","domains\u002Forders\u002Flogic\u002FwithTax.ts",[17,3747,3748],{"__ignoreMap":30},[62,3749,3750,3752,3754,3758,3760,3762,3764,3766,3768,3770,3772,3774,3777,3779,3782,3784,3787,3790,3793,3795],{"class":64,"line":65},[62,3751,69],{"class":68},[62,3753,2826],{"class":1925},[62,3755,3757],{"class":3756},"slP7D"," withTax",[62,3759,3140],{"class":83},[62,3761,2852],{"class":83},[62,3763,2425],{"class":2855},[62,3765,94],{"class":83},[62,3767,2636],{"class":1929},[62,3769,3118],{"class":83},[62,3771,2636],{"class":1929},[62,3773,2862],{"class":2861},[62,3775,3776],{"class":1139}," Math",[62,3778,437],{"class":83},[62,3780,3781],{"class":75},"round",[62,3783,80],{"class":79},[62,3785,3786],{"class":1139},"cents ",[62,3788,3789],{"class":83},"*",[62,3791,3792],{"class":2017}," 1.2",[62,3794,2726],{"class":79},[62,3796,1893],{"class":83},[22,3798,3801],{"className":56,"code":3799,"filename":3800,"language":58,"meta":30,"style":30},"import { entity, number, primary, text } from '@fougere\u002Fschema';\n\nexport default class Order extends entity({\n  id: primary(),\n  product: text({ min: 1 }),\n  cents: number({ min: 0 }),\n}) {}\n\n","domains\u002Forders\u002Fmodels\u002FOrder.ts",[17,3802,3803,3835,3839,3858,3870,3895,3919],{"__ignoreMap":30},[62,3804,3805,3807,3809,3811,3813,3815,3817,3819,3821,3823,3825,3827,3829,3831,3833],{"class":64,"line":65},[62,3806,1872],{"class":68},[62,3808,154],{"class":83},[62,3810,2631],{"class":1139},[62,3812,119],{"class":83},[62,3814,2636],{"class":1139},[62,3816,119],{"class":83},[62,3818,2641],{"class":1139},[62,3820,119],{"class":83},[62,3822,2646],{"class":1139},[62,3824,1880],{"class":83},[62,3826,1883],{"class":68},[62,3828,109],{"class":108},[62,3830,2655],{"class":112},[62,3832,116],{"class":108},[62,3834,1893],{"class":83},[62,3836,3837],{"class":64,"line":87},[62,3838,1107],{"emptyLinePlaceholder":764},[62,3840,3841,3843,3845,3847,3850,3852,3854,3856],{"class":64,"line":100},[62,3842,69],{"class":68},[62,3844,72],{"class":68},[62,3846,1926],{"class":1925},[62,3848,3849],{"class":1929}," Order",[62,3851,1933],{"class":1925},[62,3853,2631],{"class":75},[62,3855,80],{"class":79},[62,3857,84],{"class":83},[62,3859,3860,3862,3864,3866,3868],{"class":64,"line":126},[62,3861,2687],{"class":90},[62,3863,94],{"class":83},[62,3865,2641],{"class":75},[62,3867,2694],{"class":79},[62,3869,274],{"class":83},[62,3871,3872,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893],{"class":64,"line":146},[62,3873,3874],{"class":90},"  product",[62,3876,94],{"class":83},[62,3878,2646],{"class":75},[62,3880,80],{"class":79},[62,3882,2710],{"class":83},[62,3884,2744],{"class":90},[62,3886,94],{"class":83},[62,3888,2488],{"class":2017},[62,3890,1880],{"class":83},[62,3892,2726],{"class":79},[62,3894,274],{"class":83},[62,3896,3897,3899,3901,3903,3905,3907,3909,3911,3913,3915,3917],{"class":64,"line":175},[62,3898,2759],{"class":90},[62,3900,94],{"class":83},[62,3902,2636],{"class":75},[62,3904,80],{"class":79},[62,3906,2710],{"class":83},[62,3908,2744],{"class":90},[62,3910,94],{"class":83},[62,3912,2774],{"class":2017},[62,3914,1880],{"class":83},[62,3916,2726],{"class":79},[62,3918,274],{"class":83},[62,3920,3921,3923,3925],{"class":64,"line":181},[62,3922,184],{"class":83},[62,3924,2726],{"class":79},[62,3926,1947],{"class":83},[22,3928,3931],{"className":56,"code":3929,"filename":3930,"language":58,"meta":30,"style":30},"export default {\n  name: 'opening',\n  up() {\n    console.log('extensions rose: orders\u002Fplugins\u002Fopening.ts');\n  },\n};\n\n","domains\u002Forders\u002Fplugins\u002Fopening.ts",[17,3932,3933,3941,3957,3966,3989,3993],{"__ignoreMap":30},[62,3934,3935,3937,3939],{"class":64,"line":65},[62,3936,69],{"class":68},[62,3938,72],{"class":68},[62,3940,97],{"class":83},[62,3942,3943,3946,3948,3950,3953,3955],{"class":64,"line":87},[62,3944,3945],{"class":90},"  name",[62,3947,94],{"class":83},[62,3949,109],{"class":108},[62,3951,3952],{"class":112},"opening",[62,3954,116],{"class":108},[62,3956,274],{"class":83},[62,3958,3959,3962,3964],{"class":64,"line":100},[62,3960,3961],{"class":3104},"  up",[62,3963,2694],{"class":83},[62,3965,97],{"class":83},[62,3967,3968,3971,3973,3976,3978,3980,3983,3985,3987],{"class":64,"line":126},[62,3969,3970],{"class":1139},"    console",[62,3972,437],{"class":83},[62,3974,3975],{"class":75},"log",[62,3977,80],{"class":3161},[62,3979,116],{"class":108},[62,3981,3982],{"class":112},"extensions rose: orders\u002Fplugins\u002Fopening.ts",[62,3984,116],{"class":108},[62,3986,2726],{"class":3161},[62,3988,1893],{"class":83},[62,3990,3991],{"class":64,"line":146},[62,3992,178],{"class":83},[62,3994,3995],{"class":64,"line":175},[62,3996,3997],{"class":83},"};\n",[22,3999,4002],{"className":56,"code":4000,"filename":4001,"language":58,"meta":30,"style":30},"import { withTax } from '@shop\u002Forders\u002Flogic\u002FwithTax.js';\n\nexport default class Till {\n  total(cents: number): number {\n    return withTax(cents);\n  }\n}\n\n","domains\u002Forders\u002Fproviders\u002FTill.ts",[17,4003,4004,4025,4029,4041,4060,4074,4078],{"__ignoreMap":30},[62,4005,4006,4008,4010,4012,4014,4016,4018,4021,4023],{"class":64,"line":65},[62,4007,1872],{"class":68},[62,4009,154],{"class":83},[62,4011,3757],{"class":1139},[62,4013,1880],{"class":83},[62,4015,1883],{"class":68},[62,4017,109],{"class":108},[62,4019,4020],{"class":112},"@shop\u002Forders\u002Flogic\u002FwithTax.js",[62,4022,116],{"class":108},[62,4024,1893],{"class":83},[62,4026,4027],{"class":64,"line":87},[62,4028,1107],{"emptyLinePlaceholder":764},[62,4030,4031,4033,4035,4037,4039],{"class":64,"line":100},[62,4032,69],{"class":68},[62,4034,72],{"class":68},[62,4036,1926],{"class":1925},[62,4038,3083],{"class":1929},[62,4040,97],{"class":83},[62,4042,4043,4046,4048,4050,4052,4054,4056,4058],{"class":64,"line":126},[62,4044,4045],{"class":3104},"  total",[62,4047,80],{"class":83},[62,4049,2425],{"class":2855},[62,4051,94],{"class":83},[62,4053,2636],{"class":1929},[62,4055,3118],{"class":83},[62,4057,2636],{"class":1929},[62,4059,97],{"class":83},[62,4061,4062,4064,4066,4068,4070,4072],{"class":64,"line":146},[62,4063,3245],{"class":68},[62,4065,3757],{"class":75},[62,4067,80],{"class":3161},[62,4069,2425],{"class":1139},[62,4071,2726],{"class":3161},[62,4073,1893],{"class":83},[62,4075,4076],{"class":64,"line":175},[62,4077,410],{"class":83},[62,4079,4080],{"class":64,"line":181},[62,4081,416],{"class":83},[22,4083,4085],{"className":56,"code":4084,"filename":52,"language":58,"meta":30,"style":30},"import '@fougere\u002Fadapter-memory';\nimport { defineFougere } from '@fougere\u002Fcore';\n\nexport default defineFougere({\n  conventions: {\n    scope: '@shop',\n    fronds: 'domains',\n    dirs: {\n      entities: 'models',\n      handlers: 'endpoints',\n      services: 'providers',\n      seeds: 'fixtures',\n      rules: 'logic',\n      versions: 'history',\n      vocabulary: 'terms',\n      extensions: 'plugins',\n    },\n  },\n  sources: { main: { type: 'memory' } },\n});\n\n",[17,4086,4087,4100,4120,4124,4136,4144,4158,4172,4180,4195,4211,4227,4243,4259,4275,4291,4307,4312,4316,4347],{"__ignoreMap":30},[62,4088,4089,4091,4093,4096,4098],{"class":64,"line":65},[62,4090,1872],{"class":68},[62,4092,109],{"class":108},[62,4094,4095],{"class":112},"@fougere\u002Fadapter-memory",[62,4097,116],{"class":108},[62,4099,1893],{"class":83},[62,4101,4102,4104,4106,4108,4110,4112,4114,4116,4118],{"class":64,"line":87},[62,4103,1872],{"class":68},[62,4105,154],{"class":83},[62,4107,76],{"class":1139},[62,4109,1880],{"class":83},[62,4111,1883],{"class":68},[62,4113,109],{"class":108},[62,4115,1888],{"class":112},[62,4117,116],{"class":108},[62,4119,1893],{"class":83},[62,4121,4122],{"class":64,"line":100},[62,4123,1107],{"emptyLinePlaceholder":764},[62,4125,4126,4128,4130,4132,4134],{"class":64,"line":126},[62,4127,69],{"class":68},[62,4129,72],{"class":68},[62,4131,76],{"class":75},[62,4133,80],{"class":79},[62,4135,84],{"class":83},[62,4137,4138,4140,4142],{"class":64,"line":146},[62,4139,91],{"class":90},[62,4141,94],{"class":83},[62,4143,97],{"class":83},[62,4145,4146,4148,4150,4152,4154,4156],{"class":64,"line":175},[62,4147,103],{"class":90},[62,4149,94],{"class":83},[62,4151,109],{"class":108},[62,4153,1689],{"class":112},[62,4155,116],{"class":108},[62,4157,274],{"class":83},[62,4159,4160,4162,4164,4166,4168,4170],{"class":64,"line":181},[62,4161,129],{"class":90},[62,4163,94],{"class":83},[62,4165,109],{"class":108},[62,4167,136],{"class":112},[62,4169,116],{"class":108},[62,4171,274],{"class":83},[62,4173,4174,4176,4178],{"class":64,"line":401},[62,4175,149],{"class":90},[62,4177,94],{"class":83},[62,4179,97],{"class":83},[62,4181,4182,4185,4187,4189,4191,4193],{"class":64,"line":407},[62,4183,4184],{"class":90},"      entities",[62,4186,94],{"class":83},[62,4188,109],{"class":108},[62,4190,164],{"class":112},[62,4192,116],{"class":108},[62,4194,274],{"class":83},[62,4196,4197,4200,4202,4204,4207,4209],{"class":64,"line":413},[62,4198,4199],{"class":90},"      handlers",[62,4201,94],{"class":83},[62,4203,109],{"class":108},[62,4205,4206],{"class":112},"endpoints",[62,4208,116],{"class":108},[62,4210,274],{"class":83},[62,4212,4213,4216,4218,4220,4223,4225],{"class":64,"line":1164},[62,4214,4215],{"class":90},"      services",[62,4217,94],{"class":83},[62,4219,109],{"class":108},[62,4221,4222],{"class":112},"providers",[62,4224,116],{"class":108},[62,4226,274],{"class":83},[62,4228,4229,4232,4234,4236,4239,4241],{"class":64,"line":1172},[62,4230,4231],{"class":90},"      seeds",[62,4233,94],{"class":83},[62,4235,109],{"class":108},[62,4237,4238],{"class":112},"fixtures",[62,4240,116],{"class":108},[62,4242,274],{"class":83},[62,4244,4245,4248,4250,4252,4255,4257],{"class":64,"line":1177},[62,4246,4247],{"class":90},"      rules",[62,4249,94],{"class":83},[62,4251,109],{"class":108},[62,4253,4254],{"class":112},"logic",[62,4256,116],{"class":108},[62,4258,274],{"class":83},[62,4260,4261,4264,4266,4268,4271,4273],{"class":64,"line":1185},[62,4262,4263],{"class":90},"      versions",[62,4265,94],{"class":83},[62,4267,109],{"class":108},[62,4269,4270],{"class":112},"history",[62,4272,116],{"class":108},[62,4274,274],{"class":83},[62,4276,4277,4280,4282,4284,4287,4289],{"class":64,"line":1190},[62,4278,4279],{"class":90},"      vocabulary",[62,4281,94],{"class":83},[62,4283,109],{"class":108},[62,4285,4286],{"class":112},"terms",[62,4288,116],{"class":108},[62,4290,274],{"class":83},[62,4292,4293,4296,4298,4300,4303,4305],{"class":64,"line":1197},[62,4294,4295],{"class":90},"      extensions",[62,4297,94],{"class":83},[62,4299,109],{"class":108},[62,4301,4302],{"class":112},"plugins",[62,4304,116],{"class":108},[62,4306,274],{"class":83},[62,4308,4309],{"class":64,"line":1202},[62,4310,4311],{"class":83},"    },\n",[62,4313,4314],{"class":64,"line":1210},[62,4315,178],{"class":83},[62,4317,4318,4321,4323,4325,4328,4330,4332,4334,4336,4338,4341,4343,4345],{"class":64,"line":1218},[62,4319,4320],{"class":90},"  sources",[62,4322,94],{"class":83},[62,4324,154],{"class":83},[62,4326,4327],{"class":90}," main",[62,4329,94],{"class":83},[62,4331,154],{"class":83},[62,4333,2927],{"class":90},[62,4335,94],{"class":83},[62,4337,109],{"class":108},[62,4339,4340],{"class":112},"memory",[62,4342,116],{"class":108},[62,4344,1880],{"class":83},[62,4346,2021],{"class":83},[62,4348,4349,4351,4353],{"class":64,"line":1226},[62,4350,184],{"class":83},[62,4352,2726],{"class":79},[62,4354,1893],{"class":83},[22,4356,4359],{"className":242,"code":4357,"filename":4358,"language":244,"meta":30,"style":30},"{\n  \"name\": \"fougere-demo-conventions\",\n  \"version\": \"0.0.1-alpha.3\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"tsx src\u002Fmain.ts\",\n    \"typecheck\": \"tsc -p .\"\n  },\n  \"dependencies\": {\n    \"@fougere\u002Fadapter-memory\": \"^0.30.0-alpha.5\",\n    \"@fougere\u002Fcompiler\": \"^0.30.0-alpha.5\",\n    \"@fougere\u002Fcore\": \"^0.30.0-alpha.5\",\n    \"@fougere\u002Fdefaults\": \"^0.30.0-alpha.5\",\n    \"@fougere\u002Fschema\": \"^0.30.0-alpha.5\"\n  },\n  \"devDependencies\": {\n    \"@fougere\u002Fcli\": \"^0.30.0-alpha.5\",\n    \"tsx\": \"^4.21.0\"\n  }\n}\n\n","package.json",[17,4360,4361,4365,4385,4405,4421,4440,4453,4473,4491,4495,4508,4527,4546,4564,4583,4599,4603,4616,4635,4653,4657],{"__ignoreMap":30},[62,4362,4363],{"class":64,"line":65},[62,4364,84],{"class":83},[62,4366,4367,4369,4372,4374,4376,4378,4381,4383],{"class":64,"line":87},[62,4368,255],{"class":83},[62,4370,4371],{"class":258},"name",[62,4373,262],{"class":83},[62,4375,94],{"class":83},[62,4377,267],{"class":108},[62,4379,4380],{"class":112},"fougere-demo-conventions",[62,4382,262],{"class":108},[62,4384,274],{"class":83},[62,4386,4387,4389,4392,4394,4396,4398,4401,4403],{"class":64,"line":100},[62,4388,255],{"class":83},[62,4390,4391],{"class":258},"version",[62,4393,262],{"class":83},[62,4395,94],{"class":83},[62,4397,267],{"class":108},[62,4399,4400],{"class":112},"0.0.1-alpha.3",[62,4402,262],{"class":108},[62,4404,274],{"class":83},[62,4406,4407,4409,4412,4414,4416,4419],{"class":64,"line":126},[62,4408,255],{"class":83},[62,4410,4411],{"class":258},"private",[62,4413,262],{"class":83},[62,4415,94],{"class":83},[62,4417,4418],{"class":108}," true",[62,4420,274],{"class":83},[62,4422,4423,4425,4427,4429,4431,4433,4436,4438],{"class":64,"line":146},[62,4424,255],{"class":83},[62,4426,2123],{"class":258},[62,4428,262],{"class":83},[62,4430,94],{"class":83},[62,4432,267],{"class":108},[62,4434,4435],{"class":112},"module",[62,4437,262],{"class":108},[62,4439,274],{"class":83},[62,4441,4442,4444,4447,4449,4451],{"class":64,"line":175},[62,4443,255],{"class":83},[62,4445,4446],{"class":258},"scripts",[62,4448,262],{"class":83},[62,4450,94],{"class":83},[62,4452,97],{"class":83},[62,4454,4455,4457,4460,4462,4464,4466,4469,4471],{"class":64,"line":181},[62,4456,332],{"class":83},[62,4458,4459],{"class":335},"dev",[62,4461,262],{"class":83},[62,4463,94],{"class":83},[62,4465,267],{"class":108},[62,4467,4468],{"class":112},"tsx src\u002Fmain.ts",[62,4470,262],{"class":108},[62,4472,274],{"class":83},[62,4474,4475,4477,4480,4482,4484,4486,4489],{"class":64,"line":401},[62,4476,332],{"class":83},[62,4478,4479],{"class":335},"typecheck",[62,4481,262],{"class":83},[62,4483,94],{"class":83},[62,4485,267],{"class":108},[62,4487,4488],{"class":112},"tsc -p .",[62,4490,2279],{"class":108},[62,4492,4493],{"class":64,"line":407},[62,4494,178],{"class":83},[62,4496,4497,4499,4502,4504,4506],{"class":64,"line":413},[62,4498,255],{"class":83},[62,4500,4501],{"class":258},"dependencies",[62,4503,262],{"class":83},[62,4505,94],{"class":83},[62,4507,97],{"class":83},[62,4509,4510,4512,4514,4516,4518,4520,4523,4525],{"class":64,"line":1164},[62,4511,332],{"class":83},[62,4513,4095],{"class":335},[62,4515,262],{"class":83},[62,4517,94],{"class":83},[62,4519,267],{"class":108},[62,4521,4522],{"class":112},"^0.30.0-alpha.5",[62,4524,262],{"class":108},[62,4526,274],{"class":83},[62,4528,4529,4531,4534,4536,4538,4540,4542,4544],{"class":64,"line":1172},[62,4530,332],{"class":83},[62,4532,4533],{"class":335},"@fougere\u002Fcompiler",[62,4535,262],{"class":83},[62,4537,94],{"class":83},[62,4539,267],{"class":108},[62,4541,4522],{"class":112},[62,4543,262],{"class":108},[62,4545,274],{"class":83},[62,4547,4548,4550,4552,4554,4556,4558,4560,4562],{"class":64,"line":1177},[62,4549,332],{"class":83},[62,4551,1888],{"class":335},[62,4553,262],{"class":83},[62,4555,94],{"class":83},[62,4557,267],{"class":108},[62,4559,4522],{"class":112},[62,4561,262],{"class":108},[62,4563,274],{"class":83},[62,4565,4566,4568,4571,4573,4575,4577,4579,4581],{"class":64,"line":1185},[62,4567,332],{"class":83},[62,4569,4570],{"class":335},"@fougere\u002Fdefaults",[62,4572,262],{"class":83},[62,4574,94],{"class":83},[62,4576,267],{"class":108},[62,4578,4522],{"class":112},[62,4580,262],{"class":108},[62,4582,274],{"class":83},[62,4584,4585,4587,4589,4591,4593,4595,4597],{"class":64,"line":1190},[62,4586,332],{"class":83},[62,4588,2655],{"class":335},[62,4590,262],{"class":83},[62,4592,94],{"class":83},[62,4594,267],{"class":108},[62,4596,4522],{"class":112},[62,4598,2279],{"class":108},[62,4600,4601],{"class":64,"line":1197},[62,4602,178],{"class":83},[62,4604,4605,4607,4610,4612,4614],{"class":64,"line":1202},[62,4606,255],{"class":83},[62,4608,4609],{"class":258},"devDependencies",[62,4611,262],{"class":83},[62,4613,94],{"class":83},[62,4615,97],{"class":83},[62,4617,4618,4620,4623,4625,4627,4629,4631,4633],{"class":64,"line":1210},[62,4619,332],{"class":83},[62,4621,4622],{"class":335},"@fougere\u002Fcli",[62,4624,262],{"class":83},[62,4626,94],{"class":83},[62,4628,267],{"class":108},[62,4630,4522],{"class":112},[62,4632,262],{"class":108},[62,4634,274],{"class":83},[62,4636,4637,4639,4642,4644,4646,4648,4651],{"class":64,"line":1218},[62,4638,332],{"class":83},[62,4640,4641],{"class":335},"tsx",[62,4643,262],{"class":83},[62,4645,94],{"class":83},[62,4647,267],{"class":108},[62,4649,4650],{"class":112},"^4.21.0",[62,4652,2279],{"class":108},[62,4654,4655],{"class":64,"line":1226},[62,4656,410],{"class":83},[62,4658,4659],{"class":64,"line":1234},[62,4660,416],{"class":83},[22,4662,4665],{"className":56,"code":4663,"filename":4664,"language":58,"meta":30,"style":30},"import { createLocalRunner, Invocation, resolveConventions } from '@fougere\u002Fcore';\nimport { loadConfig } from '@fougere\u002Fcore\u002Fnode';\nimport { bootApp } from '@fougere\u002Fdefaults';\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\n\nconst root = join(import.meta.dirname, '..');\nconst { dirs, fronds, scope } = resolveConventions((await loadConfig(root)).conventions);\n\nconst app = await bootApp(root, { migrates: true });\nconst call = createLocalRunner(app);\nconst place = (productId: string) => call({ address: 'order', op: 'place' }, Invocation.from({ params: { productId } }));\nconst addProduct = (input: object) => call({ address: 'product', op: 'create' }, Invocation.from({ input }));\n\nconsole.log(`scope       ${scope}             order.place reached catalog through it: Fern for ${(await place('fern') as { cents: number }).cents}`);\nconsole.log(`fronds      ${fronds}\u002F           answering ${app.fronds.servedNames().join(', ')}`);\nconsole.log(`entities    ${dirs.entities}\u002F            ${app.fronds.entityNames().join(', ')}`);\nconsole.log(`handlers    ${dirs.handlers}\u002F         order.place answered`);\nconsole.log(`seeds       ${dirs.seeds}\u002F          fern and moss were there before the first call`);\nconsole.log(`services    ${dirs.services}\u002F         Till was injected into OrderHandler`);\nconsole.log(`rules       ${dirs.rules}\u002F             1000 became 1200 with its tax`);\nconsole.log(`vocabulary  ${dirs.vocabulary}\u002F             sku '${await addProduct({ sku: 'nope', title: 'x', cents: 1 }).catch((refusal: Error) => refusal.message)}'`);\nconsole.log(`extensions  ${dirs.extensions}\u002F           see the line above the table`);\nconsole.log(`versions    ${dirs.versions}\u002F           ${existsSync(join(root, fronds, 'orders', dirs.versions, 'v1', 'shape.json')) ? 'v1 recorded by `fougere freeze`' : 'nothing frozen'}`);\n\nawait app.dispose();\n\n","src\u002Fmain.ts",[17,4666,4667,4698,4720,4741,4763,4785,4789,4828,4876,4880,4915,4935,5017,5089,5093,5163,5225,5291,5326,5361,5396,5431,5547,5582,5692,5696],{"__ignoreMap":30},[62,4668,4669,4671,4673,4676,4678,4681,4683,4686,4688,4690,4692,4694,4696],{"class":64,"line":65},[62,4670,1872],{"class":68},[62,4672,154],{"class":83},[62,4674,4675],{"class":1139}," createLocalRunner",[62,4677,119],{"class":83},[62,4679,4680],{"class":1139}," Invocation",[62,4682,119],{"class":83},[62,4684,4685],{"class":1139}," resolveConventions",[62,4687,1880],{"class":83},[62,4689,1883],{"class":68},[62,4691,109],{"class":108},[62,4693,1888],{"class":112},[62,4695,116],{"class":108},[62,4697,1893],{"class":83},[62,4699,4700,4702,4704,4707,4709,4711,4713,4716,4718],{"class":64,"line":87},[62,4701,1872],{"class":68},[62,4703,154],{"class":83},[62,4705,4706],{"class":1139}," loadConfig",[62,4708,1880],{"class":83},[62,4710,1883],{"class":68},[62,4712,109],{"class":108},[62,4714,4715],{"class":112},"@fougere\u002Fcore\u002Fnode",[62,4717,116],{"class":108},[62,4719,1893],{"class":83},[62,4721,4722,4724,4726,4729,4731,4733,4735,4737,4739],{"class":64,"line":100},[62,4723,1872],{"class":68},[62,4725,154],{"class":83},[62,4727,4728],{"class":1139}," bootApp",[62,4730,1880],{"class":83},[62,4732,1883],{"class":68},[62,4734,109],{"class":108},[62,4736,4570],{"class":112},[62,4738,116],{"class":108},[62,4740,1893],{"class":83},[62,4742,4743,4745,4747,4750,4752,4754,4756,4759,4761],{"class":64,"line":126},[62,4744,1872],{"class":68},[62,4746,154],{"class":83},[62,4748,4749],{"class":1139}," existsSync",[62,4751,1880],{"class":83},[62,4753,1883],{"class":68},[62,4755,109],{"class":108},[62,4757,4758],{"class":112},"node:fs",[62,4760,116],{"class":108},[62,4762,1893],{"class":83},[62,4764,4765,4767,4769,4772,4774,4776,4778,4781,4783],{"class":64,"line":146},[62,4766,1872],{"class":68},[62,4768,154],{"class":83},[62,4770,4771],{"class":1139}," join",[62,4773,1880],{"class":83},[62,4775,1883],{"class":68},[62,4777,109],{"class":108},[62,4779,4780],{"class":112},"node:path",[62,4782,116],{"class":108},[62,4784,1893],{"class":83},[62,4786,4787],{"class":64,"line":175},[62,4788,1107],{"emptyLinePlaceholder":764},[62,4790,4791,4794,4797,4799,4801,4803,4805,4807,4810,4812,4815,4817,4819,4822,4824,4826],{"class":64,"line":181},[62,4792,4793],{"class":1925},"const",[62,4795,4796],{"class":1139}," root ",[62,4798,2832],{"class":83},[62,4800,4771],{"class":75},[62,4802,80],{"class":79},[62,4804,1872],{"class":68},[62,4806,437],{"class":83},[62,4808,4809],{"class":3152},"meta",[62,4811,437],{"class":83},[62,4813,4814],{"class":3152},"dirname",[62,4816,119],{"class":83},[62,4818,109],{"class":108},[62,4820,4821],{"class":112},"..",[62,4823,116],{"class":108},[62,4825,2726],{"class":79},[62,4827,1893],{"class":83},[62,4829,4830,4832,4834,4837,4839,4842,4844,4847,4849,4851,4853,4856,4859,4861,4863,4866,4868,4870,4872,4874],{"class":64,"line":401},[62,4831,4793],{"class":1925},[62,4833,154],{"class":83},[62,4835,4836],{"class":1139}," dirs",[62,4838,119],{"class":83},[62,4840,4841],{"class":1139}," fronds",[62,4843,119],{"class":83},[62,4845,4846],{"class":1139}," scope ",[62,4848,184],{"class":83},[62,4850,3140],{"class":83},[62,4852,4685],{"class":75},[62,4854,4855],{"class":79},"((",[62,4857,4858],{"class":68},"await",[62,4860,4706],{"class":75},[62,4862,80],{"class":79},[62,4864,4865],{"class":1139},"root",[62,4867,2900],{"class":79},[62,4869,437],{"class":83},[62,4871,441],{"class":3152},[62,4873,2726],{"class":79},[62,4875,1893],{"class":83},[62,4877,4878],{"class":64,"line":407},[62,4879,1107],{"emptyLinePlaceholder":764},[62,4881,4882,4884,4887,4889,4891,4893,4895,4897,4899,4901,4904,4906,4909,4911,4913],{"class":64,"line":413},[62,4883,4793],{"class":1925},[62,4885,4886],{"class":1139}," app ",[62,4888,2832],{"class":83},[62,4890,3143],{"class":68},[62,4892,4728],{"class":75},[62,4894,80],{"class":79},[62,4896,4865],{"class":1139},[62,4898,119],{"class":83},[62,4900,154],{"class":83},[62,4902,4903],{"class":90}," migrates",[62,4905,94],{"class":83},[62,4907,4418],{"class":4908},"slmMI",[62,4910,1880],{"class":83},[62,4912,2726],{"class":79},[62,4914,1893],{"class":83},[62,4916,4917,4919,4922,4924,4926,4928,4931,4933],{"class":64,"line":1164},[62,4918,4793],{"class":1925},[62,4920,4921],{"class":1139}," call ",[62,4923,2832],{"class":83},[62,4925,4675],{"class":75},[62,4927,80],{"class":79},[62,4929,4930],{"class":1139},"app",[62,4932,2726],{"class":79},[62,4934,1893],{"class":83},[62,4936,4937,4939,4941,4943,4945,4947,4949,4951,4953,4955,4958,4960,4962,4965,4967,4969,4971,4973,4975,4978,4980,4982,4985,4987,4989,4991,4993,4995,4997,4999,5002,5004,5006,5009,5011,5013,5015],{"class":64,"line":1172},[62,4938,4793],{"class":1925},[62,4940,3105],{"class":3756},[62,4942,3140],{"class":83},[62,4944,2852],{"class":83},[62,4946,3110],{"class":2855},[62,4948,94],{"class":83},[62,4950,3115],{"class":1929},[62,4952,2726],{"class":83},[62,4954,2862],{"class":2861},[62,4956,4957],{"class":75}," call",[62,4959,80],{"class":79},[62,4961,2710],{"class":83},[62,4963,4964],{"class":90}," address",[62,4966,94],{"class":83},[62,4968,109],{"class":108},[62,4970,3341],{"class":112},[62,4972,116],{"class":108},[62,4974,119],{"class":83},[62,4976,4977],{"class":90}," op",[62,4979,94],{"class":83},[62,4981,109],{"class":108},[62,4983,4984],{"class":112},"place",[62,4986,116],{"class":108},[62,4988,169],{"class":83},[62,4990,4680],{"class":1139},[62,4992,437],{"class":83},[62,4994,1903],{"class":75},[62,4996,80],{"class":79},[62,4998,2710],{"class":83},[62,5000,5001],{"class":90}," params",[62,5003,94],{"class":83},[62,5005,154],{"class":83},[62,5007,5008],{"class":1139}," productId ",[62,5010,184],{"class":83},[62,5012,1880],{"class":83},[62,5014,2900],{"class":79},[62,5016,1893],{"class":83},[62,5018,5019,5021,5024,5026,5028,5031,5033,5036,5038,5040,5042,5044,5046,5048,5050,5052,5054,5056,5058,5060,5062,5064,5066,5068,5070,5072,5074,5076,5078,5080,5083,5085,5087],{"class":64,"line":1177},[62,5020,4793],{"class":1925},[62,5022,5023],{"class":3756}," addProduct",[62,5025,3140],{"class":83},[62,5027,2852],{"class":83},[62,5029,5030],{"class":2855},"input",[62,5032,94],{"class":83},[62,5034,5035],{"class":1929}," object",[62,5037,2726],{"class":83},[62,5039,2862],{"class":2861},[62,5041,4957],{"class":75},[62,5043,80],{"class":79},[62,5045,2710],{"class":83},[62,5047,4964],{"class":90},[62,5049,94],{"class":83},[62,5051,109],{"class":108},[62,5053,2110],{"class":112},[62,5055,116],{"class":108},[62,5057,119],{"class":83},[62,5059,4977],{"class":90},[62,5061,94],{"class":83},[62,5063,109],{"class":108},[62,5065,2253],{"class":112},[62,5067,116],{"class":108},[62,5069,169],{"class":83},[62,5071,4680],{"class":1139},[62,5073,437],{"class":83},[62,5075,1903],{"class":75},[62,5077,80],{"class":79},[62,5079,2710],{"class":83},[62,5081,5082],{"class":1139}," input ",[62,5084,184],{"class":83},[62,5086,2900],{"class":79},[62,5088,1893],{"class":83},[62,5090,5091],{"class":64,"line":1185},[62,5092,1107],{"emptyLinePlaceholder":764},[62,5094,5095,5098,5100,5102,5104,5106,5109,5111,5113,5115,5118,5120,5122,5124,5126,5128,5130,5132,5134,5136,5139,5141,5143,5145,5147,5149,5151,5153,5155,5157,5159,5161],{"class":64,"line":1190},[62,5096,5097],{"class":1139},"console",[62,5099,437],{"class":83},[62,5101,3975],{"class":75},[62,5103,80],{"class":79},[62,5105,1624],{"class":108},[62,5107,5108],{"class":112},"scope       ",[62,5110,3222],{"class":83},[62,5112,227],{"class":1139},[62,5114,184],{"class":83},[62,5116,5117],{"class":112},"             order.place reached catalog through it: Fern for ",[62,5119,3222],{"class":83},[62,5121,80],{"class":79},[62,5123,4858],{"class":68},[62,5125,3105],{"class":75},[62,5127,80],{"class":79},[62,5129,116],{"class":108},[62,5131,1977],{"class":112},[62,5133,116],{"class":108},[62,5135,2726],{"class":79},[62,5137,5138],{"class":68}," as",[62,5140,154],{"class":83},[62,5142,2012],{"class":90},[62,5144,94],{"class":83},[62,5146,2636],{"class":1929},[62,5148,1880],{"class":83},[62,5150,2726],{"class":79},[62,5152,437],{"class":83},[62,5154,2425],{"class":3152},[62,5156,184],{"class":83},[62,5158,1624],{"class":108},[62,5160,2726],{"class":79},[62,5162,1893],{"class":83},[62,5164,5165,5167,5169,5171,5173,5175,5178,5180,5182,5184,5187,5189,5191,5193,5195,5197,5200,5202,5204,5207,5209,5211,5213,5215,5217,5219,5221,5223],{"class":64,"line":1197},[62,5166,5097],{"class":1139},[62,5168,437],{"class":83},[62,5170,3975],{"class":75},[62,5172,80],{"class":79},[62,5174,1624],{"class":108},[62,5176,5177],{"class":112},"fronds      ",[62,5179,3222],{"class":83},[62,5181,220],{"class":1139},[62,5183,184],{"class":83},[62,5185,5186],{"class":112},"\u002F           answering ",[62,5188,3222],{"class":83},[62,5190,4930],{"class":1139},[62,5192,437],{"class":83},[62,5194,220],{"class":3152},[62,5196,437],{"class":83},[62,5198,5199],{"class":75},"servedNames",[62,5201,2694],{"class":79},[62,5203,437],{"class":83},[62,5205,5206],{"class":75},"join",[62,5208,80],{"class":79},[62,5210,116],{"class":108},[62,5212,429],{"class":112},[62,5214,116],{"class":108},[62,5216,2726],{"class":79},[62,5218,184],{"class":83},[62,5220,1624],{"class":108},[62,5222,2726],{"class":79},[62,5224,1893],{"class":83},[62,5226,5227,5229,5231,5233,5235,5237,5240,5242,5244,5246,5249,5251,5254,5256,5258,5260,5262,5264,5267,5269,5271,5273,5275,5277,5279,5281,5283,5285,5287,5289],{"class":64,"line":1202},[62,5228,5097],{"class":1139},[62,5230,437],{"class":83},[62,5232,3975],{"class":75},[62,5234,80],{"class":79},[62,5236,1624],{"class":108},[62,5238,5239],{"class":112},"entities    ",[62,5241,3222],{"class":83},[62,5243,238],{"class":1139},[62,5245,437],{"class":83},[62,5247,5248],{"class":3152},"entities",[62,5250,184],{"class":83},[62,5252,5253],{"class":112},"\u002F            ",[62,5255,3222],{"class":83},[62,5257,4930],{"class":1139},[62,5259,437],{"class":83},[62,5261,220],{"class":3152},[62,5263,437],{"class":83},[62,5265,5266],{"class":75},"entityNames",[62,5268,2694],{"class":79},[62,5270,437],{"class":83},[62,5272,5206],{"class":75},[62,5274,80],{"class":79},[62,5276,116],{"class":108},[62,5278,429],{"class":112},[62,5280,116],{"class":108},[62,5282,2726],{"class":79},[62,5284,184],{"class":83},[62,5286,1624],{"class":108},[62,5288,2726],{"class":79},[62,5290,1893],{"class":83},[62,5292,5293,5295,5297,5299,5301,5303,5306,5308,5310,5312,5315,5317,5320,5322,5324],{"class":64,"line":1210},[62,5294,5097],{"class":1139},[62,5296,437],{"class":83},[62,5298,3975],{"class":75},[62,5300,80],{"class":79},[62,5302,1624],{"class":108},[62,5304,5305],{"class":112},"handlers    ",[62,5307,3222],{"class":83},[62,5309,238],{"class":1139},[62,5311,437],{"class":83},[62,5313,5314],{"class":3152},"handlers",[62,5316,184],{"class":83},[62,5318,5319],{"class":112},"\u002F         order.place answered",[62,5321,1624],{"class":108},[62,5323,2726],{"class":79},[62,5325,1893],{"class":83},[62,5327,5328,5330,5332,5334,5336,5338,5341,5343,5345,5347,5350,5352,5355,5357,5359],{"class":64,"line":1218},[62,5329,5097],{"class":1139},[62,5331,437],{"class":83},[62,5333,3975],{"class":75},[62,5335,80],{"class":79},[62,5337,1624],{"class":108},[62,5339,5340],{"class":112},"seeds       ",[62,5342,3222],{"class":83},[62,5344,238],{"class":1139},[62,5346,437],{"class":83},[62,5348,5349],{"class":3152},"seeds",[62,5351,184],{"class":83},[62,5353,5354],{"class":112},"\u002F          fern and moss were there before the first call",[62,5356,1624],{"class":108},[62,5358,2726],{"class":79},[62,5360,1893],{"class":83},[62,5362,5363,5365,5367,5369,5371,5373,5376,5378,5380,5382,5385,5387,5390,5392,5394],{"class":64,"line":1226},[62,5364,5097],{"class":1139},[62,5366,437],{"class":83},[62,5368,3975],{"class":75},[62,5370,80],{"class":79},[62,5372,1624],{"class":108},[62,5374,5375],{"class":112},"services    ",[62,5377,3222],{"class":83},[62,5379,238],{"class":1139},[62,5381,437],{"class":83},[62,5383,5384],{"class":3152},"services",[62,5386,184],{"class":83},[62,5388,5389],{"class":112},"\u002F         Till was injected into OrderHandler",[62,5391,1624],{"class":108},[62,5393,2726],{"class":79},[62,5395,1893],{"class":83},[62,5397,5398,5400,5402,5404,5406,5408,5411,5413,5415,5417,5420,5422,5425,5427,5429],{"class":64,"line":1234},[62,5399,5097],{"class":1139},[62,5401,437],{"class":83},[62,5403,3975],{"class":75},[62,5405,80],{"class":79},[62,5407,1624],{"class":108},[62,5409,5410],{"class":112},"rules       ",[62,5412,3222],{"class":83},[62,5414,238],{"class":1139},[62,5416,437],{"class":83},[62,5418,5419],{"class":3152},"rules",[62,5421,184],{"class":83},[62,5423,5424],{"class":112},"\u002F             1000 became 1200 with its tax",[62,5426,1624],{"class":108},[62,5428,2726],{"class":79},[62,5430,1893],{"class":83},[62,5432,5433,5435,5437,5439,5441,5443,5446,5448,5450,5452,5455,5457,5460,5462,5464,5466,5468,5470,5472,5474,5476,5479,5481,5483,5485,5487,5489,5492,5494,5496,5498,5500,5502,5504,5506,5508,5511,5513,5515,5518,5520,5523,5525,5527,5530,5532,5535,5537,5539,5541,5543,5545],{"class":64,"line":1242},[62,5434,5097],{"class":1139},[62,5436,437],{"class":83},[62,5438,3975],{"class":75},[62,5440,80],{"class":79},[62,5442,1624],{"class":108},[62,5444,5445],{"class":112},"vocabulary  ",[62,5447,3222],{"class":83},[62,5449,238],{"class":1139},[62,5451,437],{"class":83},[62,5453,5454],{"class":3152},"vocabulary",[62,5456,184],{"class":83},[62,5458,5459],{"class":112},"\u002F             sku '",[62,5461,3222],{"class":83},[62,5463,4858],{"class":68},[62,5465,5023],{"class":75},[62,5467,80],{"class":79},[62,5469,2710],{"class":83},[62,5471,1984],{"class":90},[62,5473,94],{"class":83},[62,5475,109],{"class":108},[62,5477,5478],{"class":112},"nope",[62,5480,116],{"class":108},[62,5482,119],{"class":83},[62,5484,1998],{"class":90},[62,5486,94],{"class":83},[62,5488,109],{"class":108},[62,5490,5491],{"class":112},"x",[62,5493,116],{"class":108},[62,5495,119],{"class":83},[62,5497,2012],{"class":90},[62,5499,94],{"class":83},[62,5501,2488],{"class":2017},[62,5503,1880],{"class":83},[62,5505,2726],{"class":79},[62,5507,437],{"class":83},[62,5509,5510],{"class":75},"catch",[62,5512,80],{"class":79},[62,5514,80],{"class":83},[62,5516,5517],{"class":2855},"refusal",[62,5519,94],{"class":83},[62,5521,5522],{"class":1929}," Error",[62,5524,2726],{"class":83},[62,5526,2862],{"class":2861},[62,5528,5529],{"class":1139}," refusal",[62,5531,437],{"class":83},[62,5533,5534],{"class":3152},"message",[62,5536,2726],{"class":79},[62,5538,184],{"class":83},[62,5540,116],{"class":112},[62,5542,1624],{"class":108},[62,5544,2726],{"class":79},[62,5546,1893],{"class":83},[62,5548,5549,5551,5553,5555,5557,5559,5562,5564,5566,5568,5571,5573,5576,5578,5580],{"class":64,"line":1247},[62,5550,5097],{"class":1139},[62,5552,437],{"class":83},[62,5554,3975],{"class":75},[62,5556,80],{"class":79},[62,5558,1624],{"class":108},[62,5560,5561],{"class":112},"extensions  ",[62,5563,3222],{"class":83},[62,5565,238],{"class":1139},[62,5567,437],{"class":83},[62,5569,5570],{"class":3152},"extensions",[62,5572,184],{"class":83},[62,5574,5575],{"class":112},"\u002F           see the line above the table",[62,5577,1624],{"class":108},[62,5579,2726],{"class":79},[62,5581,1893],{"class":83},[62,5583,5584,5586,5588,5590,5592,5594,5597,5599,5601,5603,5606,5608,5611,5613,5616,5618,5620,5622,5624,5626,5628,5630,5632,5634,5636,5638,5640,5642,5644,5646,5648,5651,5653,5655,5657,5660,5662,5664,5667,5669,5672,5674,5677,5679,5682,5684,5686,5688,5690],{"class":64,"line":1255},[62,5585,5097],{"class":1139},[62,5587,437],{"class":83},[62,5589,3975],{"class":75},[62,5591,80],{"class":79},[62,5593,1624],{"class":108},[62,5595,5596],{"class":112},"versions    ",[62,5598,3222],{"class":83},[62,5600,238],{"class":1139},[62,5602,437],{"class":83},[62,5604,5605],{"class":3152},"versions",[62,5607,184],{"class":83},[62,5609,5610],{"class":112},"\u002F           ",[62,5612,3222],{"class":83},[62,5614,5615],{"class":75},"existsSync",[62,5617,80],{"class":79},[62,5619,5206],{"class":75},[62,5621,80],{"class":79},[62,5623,4865],{"class":1139},[62,5625,119],{"class":83},[62,5627,4841],{"class":1139},[62,5629,119],{"class":83},[62,5631,109],{"class":108},[62,5633,3252],{"class":112},[62,5635,116],{"class":108},[62,5637,119],{"class":83},[62,5639,4836],{"class":1139},[62,5641,437],{"class":83},[62,5643,5605],{"class":3152},[62,5645,119],{"class":83},[62,5647,109],{"class":108},[62,5649,5650],{"class":112},"v1",[62,5652,116],{"class":108},[62,5654,119],{"class":83},[62,5656,109],{"class":108},[62,5658,5659],{"class":112},"shape.json",[62,5661,116],{"class":108},[62,5663,2900],{"class":79},[62,5665,5666],{"class":83}," ?",[62,5668,109],{"class":108},[62,5670,5671],{"class":112},"v1 recorded by `fougere freeze`",[62,5673,116],{"class":108},[62,5675,5676],{"class":83}," :",[62,5678,109],{"class":108},[62,5680,5681],{"class":112},"nothing frozen",[62,5683,116],{"class":108},[62,5685,184],{"class":83},[62,5687,1624],{"class":108},[62,5689,2726],{"class":79},[62,5691,1893],{"class":83},[62,5693,5694],{"class":64,"line":1260},[62,5695,1107],{"emptyLinePlaceholder":764},[62,5697,5698,5700,5703,5705,5708,5710],{"class":64,"line":1267},[62,5699,4858],{"class":68},[62,5701,5702],{"class":1139}," app",[62,5704,437],{"class":83},[62,5706,5707],{"class":75},"dispose",[62,5709,2694],{"class":79},[62,5711,1893],{"class":83},[22,5713,5715],{"className":242,"code":5714,"filename":234,"language":244,"meta":30,"style":30},"{\n  \"extends\": [\"@fougere\u002Fcore\u002Ftsconfig\", \"..\u002F..\u002Ftsconfig.base.json\"],\n  \"include\": [\"domains\", \"src\", \"fougere.config.ts\", \".fougere\u002Fnames.generated.d.ts\"],\n  \"compilerOptions\": {\n    \"noEmit\": true,\n    \"rootDir\": \".\",\n    \"declaration\": false,\n    \"declarationMap\": false,\n    \"sourceMap\": false,\n    \"paths\": {\n      \"@fronds\u002Ffacade\": [\".\u002F.fougere\u002Ffacade.generated.ts\"],\n      \"@shop\u002F*\": [\".\u002Fdomains\u002F*\", \".\u002Fremotes\u002F*\"]\n    }\n  }\n}\n\n",[17,5716,5717,5721,5750,5795,5807,5822,5841,5857,5872,5887,5899,5919,5947,5951,5955],{"__ignoreMap":30},[62,5718,5719],{"class":64,"line":65},[62,5720,84],{"class":83},[62,5722,5723,5725,5727,5729,5731,5733,5735,5737,5739,5741,5743,5746,5748],{"class":64,"line":87},[62,5724,255],{"class":83},[62,5726,259],{"class":258},[62,5728,262],{"class":83},[62,5730,94],{"class":83},[62,5732,288],{"class":83},[62,5734,262],{"class":108},[62,5736,216],{"class":112},[62,5738,262],{"class":108},[62,5740,119],{"class":83},[62,5742,267],{"class":108},[62,5744,5745],{"class":112},"..\u002F..\u002Ftsconfig.base.json",[62,5747,262],{"class":108},[62,5749,314],{"class":83},[62,5751,5752,5754,5756,5758,5760,5762,5764,5766,5768,5770,5772,5775,5777,5779,5781,5783,5785,5787,5789,5791,5793],{"class":64,"line":100},[62,5753,255],{"class":83},[62,5755,281],{"class":258},[62,5757,262],{"class":83},[62,5759,94],{"class":83},[62,5761,288],{"class":83},[62,5763,262],{"class":108},[62,5765,136],{"class":112},[62,5767,262],{"class":108},[62,5769,119],{"class":83},[62,5771,267],{"class":108},[62,5773,5774],{"class":112},"src",[62,5776,262],{"class":108},[62,5778,119],{"class":83},[62,5780,267],{"class":108},[62,5782,52],{"class":112},[62,5784,262],{"class":108},[62,5786,119],{"class":83},[62,5788,267],{"class":108},[62,5790,309],{"class":112},[62,5792,262],{"class":108},[62,5794,314],{"class":83},[62,5796,5797,5799,5801,5803,5805],{"class":64,"line":126},[62,5798,255],{"class":83},[62,5800,321],{"class":258},[62,5802,262],{"class":83},[62,5804,94],{"class":83},[62,5806,97],{"class":83},[62,5808,5809,5811,5814,5816,5818,5820],{"class":64,"line":146},[62,5810,332],{"class":83},[62,5812,5813],{"class":335},"noEmit",[62,5815,262],{"class":83},[62,5817,94],{"class":83},[62,5819,4418],{"class":108},[62,5821,274],{"class":83},[62,5823,5824,5826,5829,5831,5833,5835,5837,5839],{"class":64,"line":175},[62,5825,332],{"class":83},[62,5827,5828],{"class":335},"rootDir",[62,5830,262],{"class":83},[62,5832,94],{"class":83},[62,5834,267],{"class":108},[62,5836,437],{"class":112},[62,5838,262],{"class":108},[62,5840,274],{"class":83},[62,5842,5843,5845,5848,5850,5852,5855],{"class":64,"line":181},[62,5844,332],{"class":83},[62,5846,5847],{"class":335},"declaration",[62,5849,262],{"class":83},[62,5851,94],{"class":83},[62,5853,5854],{"class":108}," false",[62,5856,274],{"class":83},[62,5858,5859,5861,5864,5866,5868,5870],{"class":64,"line":401},[62,5860,332],{"class":83},[62,5862,5863],{"class":335},"declarationMap",[62,5865,262],{"class":83},[62,5867,94],{"class":83},[62,5869,5854],{"class":108},[62,5871,274],{"class":83},[62,5873,5874,5876,5879,5881,5883,5885],{"class":64,"line":407},[62,5875,332],{"class":83},[62,5877,5878],{"class":335},"sourceMap",[62,5880,262],{"class":83},[62,5882,94],{"class":83},[62,5884,5854],{"class":108},[62,5886,274],{"class":83},[62,5888,5889,5891,5893,5895,5897],{"class":64,"line":413},[62,5890,332],{"class":83},[62,5892,336],{"class":335},[62,5894,262],{"class":83},[62,5896,94],{"class":83},[62,5898,97],{"class":83},[62,5900,5901,5903,5905,5907,5909,5911,5913,5915,5917],{"class":64,"line":1164},[62,5902,347],{"class":83},[62,5904,351],{"class":350},[62,5906,262],{"class":83},[62,5908,94],{"class":83},[62,5910,288],{"class":83},[62,5912,262],{"class":108},[62,5914,362],{"class":112},[62,5916,262],{"class":108},[62,5918,314],{"class":83},[62,5920,5921,5923,5925,5927,5929,5931,5933,5935,5937,5939,5941,5943,5945],{"class":64,"line":1172},[62,5922,347],{"class":83},[62,5924,1781],{"class":350},[62,5926,262],{"class":83},[62,5928,94],{"class":83},[62,5930,288],{"class":83},[62,5932,262],{"class":108},[62,5934,384],{"class":112},[62,5936,262],{"class":108},[62,5938,119],{"class":83},[62,5940,267],{"class":108},[62,5942,393],{"class":112},[62,5944,262],{"class":108},[62,5946,398],{"class":83},[62,5948,5949],{"class":64,"line":1177},[62,5950,404],{"class":83},[62,5952,5953],{"class":64,"line":1185},[62,5954,410],{"class":83},[62,5956,5957],{"class":64,"line":1190},[62,5958,416],{"class":83},[751,5960,5961],{},"html pre.shiki code .sd7zb, html code.shiki .sd7zb{--shiki-light:#39ADB5;--shiki-light-font-weight:inherit;--shiki-default:#A3B0A5;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:inherit}html pre.shiki code .sLf9K, html code.shiki .sLf9K{--shiki-light:#E2931D;--shiki-light-font-weight:inherit;--shiki-default:#8FCF86;--shiki-default-font-weight:bold;--shiki-dark:#FFCB6B;--shiki-dark-font-weight:inherit}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 .sN-8n, html code.shiki .sN-8n{--shiki-light:#91B859;--shiki-default:#EE9F6B;--shiki-dark:#C3E88D}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 .siB6D, html code.shiki .siB6D{--shiki-light:#91B859;--shiki-default:#A3B0A5;--shiki-dark:#C3E88D}html pre.shiki code .sYNOY, html code.shiki .sYNOY{--shiki-light:#90A4AE90;--shiki-default:#DDE5DA;--shiki-dark:#BABED890}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 .sDDC1, html code.shiki .sDDC1{--shiki-light:#39ADB5;--shiki-default:#EE9F6B;--shiki-dark:#89DDFF}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 .srlTG, html code.shiki .srlTG{--shiki-light:#90A4AE;--shiki-default:#A3B0A5;--shiki-dark:#BABED8}html pre.shiki code .sHtqg, html code.shiki .sHtqg{--shiki-light:#E53935;--shiki-default:#93CFC0;--shiki-dark:#F07178}html pre.shiki code .s3dPA, html code.shiki .s3dPA{--shiki-light:#F76D47;--shiki-default:#EE9F6B;--shiki-dark:#F78C6C}html pre.shiki code .s8ClO, html code.shiki .s8ClO{--shiki-light:#9C3EDA;--shiki-default:#93CFC0;--shiki-dark:#C792EA}html pre.shiki code .sWI7z, html code.shiki .sWI7z{--shiki-light:#E2931D;--shiki-default:#93CFC0;--shiki-dark:#FFCB6B}html pre.shiki code .sgzKs, html code.shiki .sgzKs{--shiki-light:#F76D47;--shiki-default:#93CFC0;--shiki-dark:#F78C6C}html pre.shiki code .sLLcL, html code.shiki .sLLcL{--shiki-light:#916B53;--shiki-default:#93CFC0;--shiki-dark:#916B53}html pre.shiki code .sqrf7, html code.shiki .sqrf7{--shiki-light:#6182B8;--shiki-default:#93CFC0;--shiki-dark:#82AAFF}html pre.shiki code .sMGEM, html code.shiki .sMGEM{--shiki-light:#FF5370;--shiki-default:#93CFC0;--shiki-dark:#FF9CAC}html pre.shiki code .s4mR9, html code.shiki .s4mR9{--shiki-light:#6182B8;--shiki-default:#C9B6EA;--shiki-dark:#82AAFF}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 .scTuO, html code.shiki .scTuO{--shiki-light:#9C3EDA;--shiki-default:#A3B0A5;--shiki-dark:#C792EA}html pre.shiki code .shDkW, html code.shiki .shDkW{--shiki-light:#E53935;--shiki-default:#C9B6EA;--shiki-dark:#F07178}html pre.shiki code .sxG60, html code.shiki .sxG60{--shiki-light:#39ADB5;--shiki-light-font-style:inherit;--shiki-default:#8FCF86;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:inherit}html pre.shiki code .sy9f4, html code.shiki .sy9f4{--shiki-light:#90A4AE;--shiki-default:#93CFC0;--shiki-dark:#BABED8}html pre.shiki code .spAFX, html code.shiki .spAFX{--shiki-light:#E53935;--shiki-default:#A3B0A5;--shiki-dark:#F07178}html pre.shiki code .sgjsB, html code.shiki .sgjsB{--shiki-light:#6182B8;--shiki-default:#EFCD8F;--shiki-dark:#82AAFF}html pre.shiki code .slP7D, html code.shiki .slP7D{--shiki-light:#90A4AE;--shiki-default:#C9B6EA;--shiki-dark:#BABED8}html pre.shiki code .slmMI, html code.shiki .slmMI{--shiki-light:#FF5370;--shiki-default:#EE9F6B;--shiki-dark:#FF9CAC}",{"title":30,"searchDepth":87,"depth":87,"links":5963},[],{},"\u002Fdemo\u002Fconventions",{"title":441,"description":30},"demo\u002Fconventions","p1ymhD5Q2LoHJ8Ex-We40bOKt-x5yOt7I8i-PgwRVes",1794396615288]