[{"data":1,"prerenderedAt":975},["ShallowReactive",2],{"docs-nav:en":3,"docs:\u002Fdocs\u002Fschema\u002Fviews":186},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,16,20,24,28,50,75,120,145],{"title":10,"path":6,"stem":11},"What is Fougere","docs\u002Findex",{"title":13,"path":14,"stem":15},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started",{"title":17,"path":18,"stem":19},"An app you already have","\u002Fdocs\u002Fexisting-app","docs\u002F02.existing-app",{"title":21,"path":22,"stem":23},"Bring your schema","\u002Fdocs\u002Fbring-your-schema","docs\u002F03.bring-your-schema",{"title":25,"path":26,"stem":27},"The CLI","\u002Fdocs\u002Fcli","docs\u002F04.cli",{"title":29,"path":30,"stem":31,"children":32,"page":49},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F2.concepts",[33,37,41,45],{"title":34,"path":35,"stem":36},"Philosophy","\u002Fdocs\u002Fconcepts\u002Fphilosophy","docs\u002F2.concepts\u002F1.philosophy",{"title":38,"path":39,"stem":40},"The Frond","\u002Fdocs\u002Fconcepts\u002Ffrond","docs\u002F2.concepts\u002F2.frond",{"title":42,"path":43,"stem":44},"The shortest path","\u002Fdocs\u002Fconcepts\u002Fshortest-path","docs\u002F2.concepts\u002F3.shortest-path",{"title":46,"path":47,"stem":48},"The base","\u002Fdocs\u002Fconcepts\u002Fthe-base","docs\u002F2.concepts\u002F4.the-base",false,{"title":51,"path":52,"stem":53,"children":54,"page":49},"Schema","\u002Fdocs\u002Fschema","docs\u002F3.schema",[55,59,63,67,71],{"title":56,"path":57,"stem":58},"Entities","\u002Fdocs\u002Fschema\u002Fentities","docs\u002F3.schema\u002F1.entities",{"title":60,"path":61,"stem":62},"Views","\u002Fdocs\u002Fschema\u002Fviews","docs\u002F3.schema\u002F2.views",{"title":64,"path":65,"stem":66},"The identity card","\u002Fdocs\u002Fschema\u002Fcard","docs\u002F3.schema\u002F3.card",{"title":68,"path":69,"stem":70},"Standard Schema","\u002Fdocs\u002Fschema\u002Fstandard-schema","docs\u002F3.schema\u002F4.standard-schema",{"title":72,"path":73,"stem":74},"How a schema moves","\u002Fdocs\u002Fschema\u002Fevolution","docs\u002F3.schema\u002F5.evolution",{"title":76,"path":77,"stem":78,"children":79,"page":49},"Business","\u002Fdocs\u002Fbusiness","docs\u002F4.business",[80,84,88,92,96,100,104,108,112,116],{"title":81,"path":82,"stem":83},"Handlers","\u002Fdocs\u002Fbusiness\u002Fhandlers","docs\u002F4.business\u002F1.handlers",{"title":85,"path":86,"stem":87},"Ports","\u002Fdocs\u002Fbusiness\u002Fports","docs\u002F4.business\u002F10.ports",{"title":89,"path":90,"stem":91},"Presenters","\u002Fdocs\u002Fbusiness\u002Fpresenters","docs\u002F4.business\u002F2.presenters",{"title":93,"path":94,"stem":95},"Collectors","\u002Fdocs\u002Fbusiness\u002Fcollectors","docs\u002F4.business\u002F3.collectors",{"title":97,"path":98,"stem":99},"Errors","\u002Fdocs\u002Fbusiness\u002Ferrors","docs\u002F4.business\u002F4.errors",{"title":101,"path":102,"stem":103},"Seeds","\u002Fdocs\u002Fbusiness\u002Fseeds","docs\u002F4.business\u002F5.seeds",{"title":105,"path":106,"stem":107},"Facts","\u002Fdocs\u002Fbusiness\u002Ffacts","docs\u002F4.business\u002F6.facts",{"title":109,"path":110,"stem":111},"Storage","\u002Fdocs\u002Fbusiness\u002Fstorage","docs\u002F4.business\u002F7.storage",{"title":113,"path":114,"stem":115},"Writes that stand or fall as one","\u002Fdocs\u002Fbusiness\u002Ftogether","docs\u002F4.business\u002F8.together",{"title":117,"path":118,"stem":119},"Repositories","\u002Fdocs\u002Fbusiness\u002Frepositories","docs\u002F4.business\u002F9.repositories",{"title":121,"path":122,"stem":123,"children":124,"page":49},"Client","\u002Fdocs\u002Fclient","docs\u002F5.client",[125,129,133,137,141],{"title":126,"path":127,"stem":128},"Queries & commands","\u002Fdocs\u002Fclient\u002Fqueries-commands","docs\u002F5.client\u002F1.queries-commands",{"title":130,"path":131,"stem":132},"Forms","\u002Fdocs\u002Fclient\u002Fforms","docs\u002F5.client\u002F2.forms",{"title":134,"path":135,"stem":136},"Session","\u002Fdocs\u002Fclient\u002Fsession","docs\u002F5.client\u002F3.session",{"title":138,"path":139,"stem":140},"invoke","\u002Fdocs\u002Fclient\u002Finvoke","docs\u002F5.client\u002F4.invoke",{"title":142,"path":143,"stem":144},"Back-office","\u002Fdocs\u002Fclient\u002Fadmin","docs\u002F5.client\u002F5.admin",{"title":146,"path":147,"stem":148,"children":149,"page":49},"Infrastructure","\u002Fdocs\u002Finfra","docs\u002F6.infra",[150,154,158,162,166,170,174,178,182],{"title":151,"path":152,"stem":153},"The gradient","\u002Fdocs\u002Finfra\u002Fgradient","docs\u002F6.infra\u002F1.gradient",{"title":155,"path":156,"stem":157},"Surfaces — REST & GraphQL","\u002Fdocs\u002Finfra\u002Fsurfaces","docs\u002F6.infra\u002F2.surfaces",{"title":159,"path":160,"stem":161},"Deployment","\u002Fdocs\u002Finfra\u002Fdeployment","docs\u002F6.infra\u002F3.deployment",{"title":163,"path":164,"stem":165},"Hosts","\u002Fdocs\u002Finfra\u002Fhosts","docs\u002F6.infra\u002F4.hosts",{"title":167,"path":168,"stem":169},"Sources","\u002Fdocs\u002Finfra\u002Fsources","docs\u002F6.infra\u002F5.sources",{"title":171,"path":172,"stem":173},"Lifecycle","\u002Fdocs\u002Finfra\u002Flifecycle","docs\u002F6.infra\u002F6.lifecycle",{"title":175,"path":176,"stem":177},"Identity across Fronds","\u002Fdocs\u002Finfra\u002Fidentity","docs\u002F6.infra\u002F7.identity",{"title":179,"path":180,"stem":181},"Observability","\u002Fdocs\u002Finfra\u002Fobservability","docs\u002F6.infra\u002F8.observability",{"title":183,"path":184,"stem":185},"Testing","\u002Fdocs\u002Finfra\u002Ftesting","docs\u002F6.infra\u002F9.testing",{"id":187,"title":60,"body":188,"description":970,"extension":971,"meta":972,"navigation":301,"path":61,"seo":973,"stem":62,"__hash__":974},"docs_en\u002Fdocs\u002F3.schema\u002F2.views.md",{"type":189,"value":190,"toc":963},"minimark",[191,195,199,414,428,433,503,510,524,528,552,645,671,681,696,700,739,743,746,804,817,821,836,858,861,889,892,939,953,959],[192,193,60],"h1",{"id":194},"views",[196,197,198],"p",{},"A view is a schema class created from an entity:",[200,201,206],"pre",{"className":202,"code":203,"language":204,"meta":205,"style":205},"language-ts shiki shiki-themes material-theme-lighter github-light github-dark","\u002F** What an author may write. *\u002F\nexport class PostDraft extends Post.pick('slug', 'title', 'summary', 'body') {}\n\n\u002F** What the public index shows — no body. *\u002F\nexport class PostCard extends Post.pick('id', 'slug', 'title', 'summary', 'publishedAt') {}\n\n\u002F** Input of a custom read operation. *\u002F\nexport class BySlugInput extends Post.pick('slug') {}\n","ts","",[207,208,209,218,296,303,309,373,378,384],"code",{"__ignoreMap":205},[210,211,214],"span",{"class":212,"line":213},"line",1,[210,215,217],{"class":216},"sutJx","\u002F** What an author may write. *\u002F\n",[210,219,221,225,229,233,236,240,244,248,251,255,259,261,264,267,270,272,274,276,279,281,283,285,288,290,293],{"class":212,"line":220},2,[210,222,224],{"class":223},"sVHd0","export",[210,226,228],{"class":227},"sbsja"," class",[210,230,232],{"class":231},"sbgvK"," PostDraft",[210,234,235],{"class":227}," extends",[210,237,239],{"class":238},"su5hD"," Post",[210,241,243],{"class":242},"sP7_E",".",[210,245,247],{"class":246},"sGLFI","pick",[210,249,250],{"class":238},"(",[210,252,254],{"class":253},"sjJ54","'",[210,256,258],{"class":257},"s_sjI","slug",[210,260,254],{"class":253},[210,262,263],{"class":242},",",[210,265,266],{"class":253}," '",[210,268,269],{"class":257},"title",[210,271,254],{"class":253},[210,273,263],{"class":242},[210,275,266],{"class":253},[210,277,278],{"class":257},"summary",[210,280,254],{"class":253},[210,282,263],{"class":242},[210,284,266],{"class":253},[210,286,287],{"class":257},"body",[210,289,254],{"class":253},[210,291,292],{"class":238},") ",[210,294,295],{"class":242},"{}\n",[210,297,299],{"class":212,"line":298},3,[210,300,302],{"emptyLinePlaceholder":301},true,"\n",[210,304,306],{"class":212,"line":305},4,[210,307,308],{"class":216},"\u002F** What the public index shows — no body. *\u002F\n",[210,310,312,314,316,319,321,323,325,327,329,331,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,367,369,371],{"class":212,"line":311},5,[210,313,224],{"class":223},[210,315,228],{"class":227},[210,317,318],{"class":231}," PostCard",[210,320,235],{"class":227},[210,322,239],{"class":238},[210,324,243],{"class":242},[210,326,247],{"class":246},[210,328,250],{"class":238},[210,330,254],{"class":253},[210,332,333],{"class":257},"id",[210,335,254],{"class":253},[210,337,263],{"class":242},[210,339,266],{"class":253},[210,341,258],{"class":257},[210,343,254],{"class":253},[210,345,263],{"class":242},[210,347,266],{"class":253},[210,349,269],{"class":257},[210,351,254],{"class":253},[210,353,263],{"class":242},[210,355,266],{"class":253},[210,357,278],{"class":257},[210,359,254],{"class":253},[210,361,263],{"class":242},[210,363,266],{"class":253},[210,365,366],{"class":257},"publishedAt",[210,368,254],{"class":253},[210,370,292],{"class":238},[210,372,295],{"class":242},[210,374,376],{"class":212,"line":375},6,[210,377,302],{"emptyLinePlaceholder":301},[210,379,381],{"class":212,"line":380},7,[210,382,383],{"class":216},"\u002F** Input of a custom read operation. *\u002F\n",[210,385,387,389,391,394,396,398,400,402,404,406,408,410,412],{"class":212,"line":386},8,[210,388,224],{"class":223},[210,390,228],{"class":227},[210,392,393],{"class":231}," BySlugInput",[210,395,235],{"class":227},[210,397,239],{"class":238},[210,399,243],{"class":242},[210,401,247],{"class":246},[210,403,250],{"class":238},[210,405,254],{"class":253},[210,407,258],{"class":257},[210,409,254],{"class":253},[210,411,292],{"class":238},[210,413,295],{"class":242},[196,415,416,417,420,421,424,425,243],{},"A view is a full schema class: it has ",[207,418,419],{},"getFields()",", ",[207,422,423],{},"validate()",", and is usable as a\nTypeScript type. Views chain: ",[207,426,427],{},"Post.pick(…).partial()",[429,430,432],"h2",{"id":431},"the-five-derivations","The five derivations",[434,435,436,449],"table",{},[437,438,439],"thead",{},[440,441,442,446],"tr",{},[443,444,445],"th",{},"Derivation",[443,447,448],{},"Produces",[450,451,452,463,473,483,493],"tbody",{},[440,453,454,460],{},[455,456,457],"td",{},[207,458,459],{},"Post.pick('a', 'b')",[455,461,462],{},"only those fields",[440,464,465,470],{},[455,466,467],{},[207,468,469],{},"Post.omit('a')",[455,471,472],{},"all fields but those",[440,474,475,480],{},[455,476,477],{},[207,478,479],{},"Post.rename({ a: 'b' })",[455,481,482],{},"the same fields under other names — the constraints and what each adapter was handed follow",[440,484,485,490],{},[455,486,487],{},[207,488,489],{},"Post.partial()",[455,491,492],{},"every field optional: an absent field is not updated",[440,494,495,500],{},[455,496,497],{},[207,498,499],{},"Post.extend({ extra: text() })",[455,501,502],{},"the same fields plus new ones",[196,504,505,506,509],{},"The ",[207,507,508],{},"partial"," mode is retained when the view is used as an operation input.",[196,511,512,513,516,517,520,521,243],{},"A view describes another schema's rows, and that is why it gets no table. One that dropped\nnothing describes exactly the same rows as its origin, so it is neither — and it is refused\nat boot until it says which: ",[207,514,515],{},".anchor()"," holds rows of its own, which is how ",[207,518,519],{},"User"," extends\n",[207,522,523],{},"AuthUser",[429,525,527],{"id":526},"what-a-view-remembers","What a view remembers",[196,529,530,531,534,535,538,539,543,544,547,548,551],{},"A view keeps two things about where it came from: ",[207,532,533],{},"source",", the declaration it was cut\nfrom, and ",[207,536,537],{},"survived",", what the cut left — keyed by the ",[540,541,542],"strong",{},"origin's"," field names. Both sit on\n",[207,545,546],{},"derivation",", and ",[207,549,550],{},"anchor"," climbs from there to the schema whose rows the view describes.",[200,553,555],{"className":202,"code":554,"language":204,"meta":205,"style":205},"class PostCard extends Post.pick('id', 'title') {}\n\nPostCard.derivation.source     \u002F\u002F Post\nPostCard.derivation.survived   \u002F\u002F { id: 'id', title: 'title', body: undefined, status: undefined }\nPostCard.derivation.anchor     \u002F\u002F Post — whose rows this shape describes\n",[207,556,557,592,596,613,629],{"__ignoreMap":205},[210,558,559,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590],{"class":212,"line":213},[210,560,561],{"class":227},"class",[210,563,318],{"class":231},[210,565,235],{"class":227},[210,567,239],{"class":238},[210,569,243],{"class":242},[210,571,247],{"class":246},[210,573,250],{"class":238},[210,575,254],{"class":253},[210,577,333],{"class":257},[210,579,254],{"class":253},[210,581,263],{"class":242},[210,583,266],{"class":253},[210,585,269],{"class":257},[210,587,254],{"class":253},[210,589,292],{"class":238},[210,591,295],{"class":242},[210,593,594],{"class":212,"line":220},[210,595,302],{"emptyLinePlaceholder":301},[210,597,598,601,603,605,607,610],{"class":212,"line":298},[210,599,600],{"class":238},"PostCard",[210,602,243],{"class":242},[210,604,546],{"class":238},[210,606,243],{"class":242},[210,608,609],{"class":238},"source     ",[210,611,612],{"class":216},"\u002F\u002F Post\n",[210,614,615,617,619,621,623,626],{"class":212,"line":305},[210,616,600],{"class":238},[210,618,243],{"class":242},[210,620,546],{"class":238},[210,622,243],{"class":242},[210,624,625],{"class":238},"survived   ",[210,627,628],{"class":216},"\u002F\u002F { id: 'id', title: 'title', body: undefined, status: undefined }\n",[210,630,631,633,635,637,639,642],{"class":212,"line":311},[210,632,600],{"class":238},[210,634,243],{"class":242},[210,636,546],{"class":238},[210,638,243],{"class":242},[210,640,641],{"class":238},"anchor     ",[210,643,644],{"class":216},"\u002F\u002F Post — whose rows this shape describes\n",[196,646,647,648,651,652,655,656,659,660,663,664,667,668,670],{},"A dropped field is present as ",[207,649,650],{},"undefined",", so the trace says what is missing and not only\nwhat remains. A ",[207,653,654],{},"rename"," carries the new name (",[207,657,658],{},"{ note: 'comment' }","), and both are\ncomposed with the parent's, so ",[207,661,662],{},"Post.pick('a','b','c').omit('c')"," reports against ",[207,665,666],{},"Post","\nand never against the intermediate — exactly as ",[207,669,533],{}," skips it.",[196,672,673,676,677,680],{},[207,674,675],{},"partial()"," and ",[207,678,679],{},"extend()"," keep the trace unchanged: making a field optional does not\nchange where it came from, and an added field has no origin to report.",[196,682,683,684,688,689,695],{},"This is what lets the ",[685,686,687],"a",{"href":65},"identity card"," publish a view as ",[690,691,692,693],"em",{},"a Post without\n",[207,694,287],{}," rather than as an anonymous shape — two views of one entity used to describe\nidentically.",[429,697,699],{"id":698},"where-views-plug-in","Where views plug in",[701,702,703,713,729],"ul",{},[704,705,706,709,710,712],"li",{},[540,707,708],{},"Handler inputs"," — declare the view as the parameter type; the façade validates the\nwire body against it before your code runs (",[685,711,81],{"href":82},").",[704,714,715,718,719,722,723,726,727,712],{},[540,716,717],{},"Handler outputs"," — ",[207,720,721],{},"Crud(Post, { list: PostCard })"," names one op's view;\n",[207,724,725],{},"Crud(Post, PostPublic)"," scopes the whole handler (",[685,728,81],{"href":82},[704,730,731,718,733,736,737,712],{},[540,732,130],{},[207,734,735],{},"useFormFor(PostDraft)"," derives its fields from the view (",[685,738,130],{"href":131},[429,740,742],{"id":741},"the-io-projections","The io projections",[196,744,745],{},"The boundary axis derives two field sets used by every surface:",[200,747,749],{"className":202,"code":748,"language":204,"meta":205,"style":205},"Visibility.of(Post.getFields()).input   \u002F\u002F fields a client may WRITE — readOnly excluded\nVisibility.of(Post.getFields()).output  \u002F\u002F fields a client may READ  — writeOnly excluded\n",[207,750,751,780],{"__ignoreMap":205},[210,752,753,756,758,761,764,766,769,772,774,777],{"class":212,"line":213},[210,754,755],{"class":238},"Visibility",[210,757,243],{"class":242},[210,759,760],{"class":246},"of",[210,762,763],{"class":238},"(Post",[210,765,243],{"class":242},[210,767,768],{"class":246},"getFields",[210,770,771],{"class":238},"())",[210,773,243],{"class":242},[210,775,776],{"class":238},"input   ",[210,778,779],{"class":216},"\u002F\u002F fields a client may WRITE — readOnly excluded\n",[210,781,782,784,786,788,790,792,794,796,798,801],{"class":212,"line":220},[210,783,755],{"class":238},[210,785,243],{"class":242},[210,787,760],{"class":246},[210,789,763],{"class":238},[210,791,243],{"class":242},[210,793,768],{"class":246},[210,795,771],{"class":238},[210,797,243],{"class":242},[210,799,800],{"class":238},"output  ",[210,802,803],{"class":216},"\u002F\u002F fields a client may READ  — writeOnly excluded\n",[196,805,806,807,809,810,813,814,816],{},"This is why a form built on ",[207,808,666],{}," does not show ",[207,811,812],{},"status"," or ",[207,815,366],{}," inputs, without\nadditional per-form configuration.",[429,818,820],{"id":819},"choosing-between-a-field-and-a-view","Choosing between a field and a view",[196,822,823,826,827,676,830,826,832,835],{},[207,824,825],{},"readOnly"," \u002F ",[207,828,829],{},"writeOnly",[207,831,247],{},[207,833,834],{},"omit"," can all remove a field from a surface, but\ntheir scope differs.",[701,837,838,848],{},[704,839,840,843,844,847],{},[540,841,842],{},"boundary"," (on the field) defines a global rule. With ",[207,845,846],{},"writeOnly(password)",", the\npassword is excluded from every output.",[704,849,850,853,854,857],{},[540,851,852],{},"pick \u002F omit"," (on a view) selects fields for a specific use. For example,\n",[207,855,856],{},"Post.pick('id', 'title')"," defines the public index response.",[196,859,860],{},"The two mechanisms are complementary.",[701,862,863,873],{},[704,864,865,866,868,869,872],{},"Without ",[207,867,829],{}," on the field, every output view would need to omit ",[207,870,871],{},"password",". The\nglobal rule prevents that omission.",[704,874,875,876,420,878,880,881,884,885,888],{},"A public response (",[207,877,333],{},[207,879,269],{},") and an admin response (",[207,882,883],{},"+ authorEmail",") instead need\ndifferent views: ",[207,886,887],{},"authorEmail"," is included or excluded depending on the use.",[196,890,891],{},"Choose based on the rule's scope: global or specific to one use.",[434,893,894,907],{},[437,895,896],{},[440,897,898,901,904],{},[443,899,900],{},"The fact is…",[443,902,903],{},"It lives…",[443,905,906],{},"Example",[450,908,909,924],{},[440,910,911,914,921],{},[455,912,913],{},"true everywhere (invariant)",[455,915,916,917,826,919],{},"on the field — ",[207,918,825],{},[207,920,829],{},[455,922,923],{},"a password never leaves",[440,925,926,929,936],{},[455,927,928],{},"true for one use (local)",[455,930,931,932,826,934],{},"in a derivation — ",[207,933,247],{},[207,935,834],{},[455,937,938],{},"this endpoint returns only id + title",[196,940,941,942,944,945,948,949,952],{},"A ",[207,943,842],{}," rule is serialized in the ",[685,946,947],{"href":65},"card"," under\n",[207,950,951],{},"x-fougere.boundary",", so a consumer in another language can apply it. A view derived in\nTypeScript is not serialized.",[196,954,955,956,958],{},"Next: ",[685,957,64],{"href":65}," — the schema's portable form.",[960,961,962],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":205,"searchDepth":220,"depth":220,"links":964},[965,966,967,968,969],{"id":431,"depth":220,"text":432},{"id":526,"depth":220,"text":527},{"id":698,"depth":220,"text":699},{"id":741,"depth":220,"text":742},{"id":819,"depth":220,"text":820},"Create input and output schemas with pick, omit, partial, and extend.","md",{},{"title":60,"description":970},"Gb3pPYcCqzwejVY1sE3SxeoVL6PoQotAv-H34xFuT1w",1788560230169]