[{"data":1,"prerenderedAt":890},["ShallowReactive",2],{"fougere:post.list:{}":3,"reference:\u002Freference\u002Fpackages\u002Fschema":6,"reference-pages":670},{"items":4,"hasMore":5},[],false,{"id":7,"title":8,"body":9,"description":19,"extension":662,"file":663,"meta":664,"navigation":665,"path":666,"seo":667,"stem":668,"__hash__":669},"reference\u002Freference\u002Fpackages\u002Fschema.md","@fougere\u002Fschema",{"type":10,"value":11,"toc":655},"minimark",[12,16,20,25,39,93,98,102,402,406,413],[13,14,8],"h1",{"id":15},"fougereschema",[17,18,19],"p",{},"The entity and its 4 axes — shape, role, lifecycle, boundary. Subject-owned judgments, edge-safe.",[21,22,24],"h2",{"id":23},"what-it-extends","What it extends",[17,26,27,28,32,33,38],{},"The interfaces of Fougere this package adds its words to, with ",[29,30,31],"code",{},"declare module"," — see ",[34,35,37],"a",{"href":36},"\u002Freference\u002Finterfaces","Interfaces to extend",".",[40,41,42,55],"table",{},[43,44,45],"thead",{},[46,47,48,52],"tr",{},[49,50,51],"th",{},"interface",[49,53,54],{},"adds",[56,57,58,71,82],"tbody",{},[46,59,60,66],{},[61,62,63],"td",{},[29,64,65],{},"FougereFieldAxes",[61,67,68],{},[29,69,70],{},"boundary",[46,72,73,77],{},[61,74,75],{},[29,76,65],{},[61,78,79],{},[29,80,81],{},"lifecycle",[46,83,84,88],{},[61,85,86],{},[29,87,65],{},[61,89,90],{},[29,91,92],{},"role",[17,94,95,96],{},"Entries: ",[29,97,8],{},[21,99,101],{"id":100},"what-you-import","What you import",[40,103,104,113],{},[43,105,106],{},[46,107,108,111],{},[49,109,110],{},"name",[49,112],{},[56,114,115,128,137,146,155,164,173,182,191,200,209,219,233,242,251,260,270,280,289,299,308,317,326,343,352,361,370,380,389],{},[46,116,117,122],{},[61,118,119],{},[29,120,121],{},"entity",[61,123,124,125,38],{},"Declares an entity: its fields, and what it states about them. Ex: ",[29,126,127],{},"class Post extends entity({ id: primary(), title: text() }) {}",[46,129,130,135],{},[61,131,132],{},[29,133,134],{},"ANONYMOUS_SCHEMA_NAME",[61,136],{},[46,138,139,144],{},[61,140,141],{},[29,142,143],{},"Schema",[61,145],{},[46,147,148,153],{},[61,149,150],{},[29,151,152],{},"Field",[61,154],{},[46,156,157,162],{},[61,158,159],{},[29,160,161],{},"FieldSet",[61,163],{},[46,165,166,171],{},[61,167,168],{},[29,169,170],{},"Shapes",[61,172],{},[46,174,175,180],{},[61,176,177],{},[29,178,179],{},"Role",[61,181],{},[46,183,184,189],{},[61,185,186],{},[29,187,188],{},"ON_DELETE",[61,190],{},[46,192,193,198],{},[61,194,195],{},[29,196,197],{},"Lifecycle",[61,199],{},[46,201,202,207],{},[61,203,204],{},[29,205,206],{},"Boundary",[61,208],{},[46,210,211,216],{},[61,212,213],{},[29,214,215],{},"applyCreate",[61,217,218],{},"Fills what the declaration leaves to the storage, such as an id or a date.",[46,220,221,226],{},[61,222,223],{},[29,224,225],{},"applyUpdate",[61,227,228,229,232],{},"Fills the ",[29,230,231],{},"update: 'now'"," fields of a patch.",[46,234,235,240],{},[61,236,237],{},[29,238,239],{},"InputRefusal",[61,241],{},[46,243,244,249],{},[61,245,246],{},[29,247,248],{},"SchemaError",[61,250],{},[46,252,253,258],{},[61,254,255],{},[29,256,257],{},"dotted",[61,259],{},[46,261,262,267],{},[61,263,264],{},[29,265,266],{},"Card",[61,268,269],{},"One portable schema description and every decision made about that description.",[46,271,272,277],{},[61,273,274],{},[29,275,276],{},"Bundle",[61,278,279],{},"A portable schema map and the decisions that only a map can make.",[46,281,282,287],{},[61,283,284],{},[29,285,286],{},"Visibility",[61,288],{},[46,290,291,296],{},[61,292,293],{},[29,294,295],{},"Cases",[61,297,298],{},"The validation cases an entity's fields imply, from a valid row of the complete entity.",[46,300,301,306],{},[61,302,303],{},[29,304,305],{},"StringFormats",[61,307],{},[46,309,310,315],{},[61,311,312],{},[29,313,314],{},"Generators",[61,316],{},[46,318,319,324],{},[61,320,321],{},[29,322,323],{},"UUID_GENERATORS",[61,325],{},[46,327,328,333],{},[61,329,330],{},[29,331,332],{},"NamedTerm",[61,334,335,336,339,340,38],{},"A name a field gives for a registry to answer. Ex: ",[29,337,338],{},"format: 'slug'",", ",[29,341,342],{},"generate: 'ulid'",[46,344,345,350],{},[61,346,347],{},[29,348,349],{},"Boundaries",[61,351],{},[46,353,354,359],{},[61,355,356],{},[29,357,358],{},"InputValidator",[61,360],{},[46,362,363,368],{},[61,364,365],{},[29,366,367],{},"FieldValueValidator",[61,369],{},[46,371,372,377],{},[61,373,374],{},[29,375,376],{},"JsonSchemaValidator",[61,378,379],{},"The one door onto the JSON Schema engine.",[46,381,382,387],{},[61,383,384],{},[29,385,386],{},"Axes",[61,388],{},[46,390,391,396],{},[61,392,393],{},[29,394,395],{},"Format",[61,397,398,399,38],{},"A format, written as keys; its JSON Schema and its type are produced. Ex: ",[29,400,401],{},"Format.of('axis\u002Ftenancy').key('scope', Format.tokens(SCOPES)).closed()",[21,403,405],{"id":404},"types","Types",[17,407,408,409,412],{},"TypeScript types only — they do not run. Import them with ",[29,410,411],{},"import type"," to type your own code: a variable, a parameter, an option object.",[40,414,415,423],{},[43,416,417],{},[46,418,419,421],{},[49,420,110],{},[49,422],{},[56,424,425,434,448,457,466,475,496,506,515,525,534,544,553,562,571,580,589,598,607,616,624,633,646],{},[46,426,427,432],{},[61,428,429],{},[29,430,431],{},"SchemaConstructor",[61,433],{},[46,435,436,441],{},[61,437,438],{},[29,439,440],{},"Entity",[61,442,443,444,447],{},"An entity class, whichever its fields — what a relation, a prefab or ",[29,445,446],{},"json()"," is handed.",[46,449,450,455],{},[61,451,452],{},[29,453,454],{},"SchemaView",[61,456],{},[46,458,459,464],{},[61,460,461],{},[29,462,463],{},"Fields",[61,465],{},[46,467,468,473],{},[61,469,470],{},[29,471,472],{},"Shape",[61,474],{},[46,476,477,482],{},[61,478,479],{},[29,480,481],{},"ShapeType",[61,483,484,485,488,489,492,493,38],{},"A shape's type, with ",[29,486,487],{},"date"," and ",[29,490,491],{},"choice"," told apart from ",[29,494,495],{},"string",[46,497,498,503],{},[61,499,500],{},[29,501,502],{},"OnDelete",[61,504,505],{},"What becomes of the rows that name a deleted one.",[46,507,508,513],{},[61,509,510],{},[29,511,512],{},"ValidationError",[61,514],{},[46,516,517,522],{},[61,518,519],{},[29,520,521],{},"Verdict",[61,523,524],{},"A value admitted, or a refusal saying where inside the value.",[46,526,527,532],{},[61,528,529],{},[29,530,531],{},"ValidationResult",[61,533],{},[46,535,536,541],{},[61,537,538],{},[29,539,540],{},"ValidationCase",[61,542,543],{},"One input, and the field the validator must refuse.",[46,545,546,551],{},[61,547,548],{},[29,549,550],{},"FieldDescriptor",[61,552],{},[46,554,555,560],{},[61,556,557],{},[29,558,559],{},"SchemaBundle",[61,561],{},[46,563,564,569],{},[61,565,566],{},[29,567,568],{},"SchemaDescriptor",[61,570],{},[46,572,573,578],{},[61,574,575],{},[29,576,577],{},"Change",[61,579],{},[46,581,582,587],{},[61,583,584],{},[29,585,586],{},"Diff",[61,588],{},[46,590,591,596],{},[61,592,593],{},[29,594,595],{},"SetDiff",[61,597],{},[46,599,600,605],{},[61,601,602],{},[29,603,604],{},"SetDiffOptions",[61,606],{},[46,608,609,614],{},[61,610,611],{},[29,612,613],{},"FougereEntityAdapters",[61,615],{},[46,617,618,622],{},[61,619,620],{},[29,621,65],{},[61,623],{},[46,625,626,631],{},[61,627,628],{},[29,629,630],{},"JsonSchema",[61,632],{},[46,634,635,640],{},[61,636,637],{},[29,638,639],{},"Accepted",[61,641,642,643,38],{},"The values a format lets in, as a type — ",[29,644,645],{},"Accepted\u003Ctypeof Lifecycle.format>",[46,647,648,653],{},[61,649,650],{},[29,651,652],{},"Axis",[61,654],{},{"title":656,"searchDepth":657,"depth":657,"links":658},"",2,[659,660,661],{"id":23,"depth":657,"text":24},{"id":100,"depth":657,"text":101},{"id":404,"depth":657,"text":405},"md",null,{},true,"\u002Freference\u002Fpackages\u002Fschema",{"title":8,"description":19},"reference\u002Fpackages\u002Fschema","u7iw57nJFoMYyIyrpzHZYybgCz0K2dry4QqlhavfEqU",[671,676,681,686,691,696,701,706,711,716,719,724,729,734,739,744,749,754,759,764,769,774,779,784,789,794,799,804,809,814,819,824,829,834,839,844,849,854,855,860,865,870,875,880,885],{"path":672,"title":673,"description":674,"stem":675},"\u002Freference\u002Fcli","CLI","fougere new, serve, call, sync, graph — composing a workspace, hosting one frond, invoking an operation from a shell.","reference\u002F01.cli",{"path":677,"title":678,"description":679,"stem":680},"\u002Freference\u002Ferrors","Error codes","Every code an operation can refuse with, and its HTTP status.","reference\u002F02.errors",{"path":682,"title":683,"description":684,"stem":685},"\u002Freference\u002Fconfig","fougere.config.ts","Every key the app config admits, and which package answers each one.","reference\u002F03.config",{"path":687,"title":688,"description":689,"stem":690},"\u002Freference\u002Ffrond-config","frond.config.ts","Every key a frond's own config admits.","reference\u002F04.frond-config",{"path":692,"title":693,"description":694,"stem":695},"\u002Freference\u002Fsources","Source types","Every type an entry of sources: may name, and the keys it admits.","reference\u002F05.sources",{"path":697,"title":698,"description":699,"stem":700},"\u002Freference\u002Fprotocols","Protocols","What protocols: may serve, and what each admits.","reference\u002F06.protocols",{"path":702,"title":703,"description":704,"stem":705},"\u002Freference\u002Fstates","State keepers","How state: may keep a caller's values.","reference\u002F07.states",{"path":707,"title":708,"description":709,"stem":710},"\u002Freference\u002Fforms","Forms","The types a frond is written with — each one read by the scan.","reference\u002F08.forms",{"path":712,"title":713,"description":714,"stem":715},"\u002Freference\u002Fports","Ports Fougere opens","The classes you stand in front of, or extend, to change what the framework does.","reference\u002F09.ports",{"path":36,"title":37,"description":717,"stem":718},"The empty interfaces a package augments with declare module, and who augments each.","reference\u002F10.interfaces",{"path":720,"title":721,"description":722,"stem":723},"\u002Freference\u002Fdiagnostics","Boot and check diagnostics","Every code a boot, the scan or fougere check can raise, and what it says.","reference\u002F11.diagnostics",{"path":725,"title":726,"description":727,"stem":728},"\u002Freference\u002Fpackages\u002Fadapter-duckdb","@fougere\u002Fadapter-duckdb","Read across an app's sources — one SQL query over what DuckDB can attach.","reference\u002Fpackages\u002Fadapter-duckdb",{"path":730,"title":731,"description":732,"stem":733},"\u002Freference\u002Fpackages\u002Fadapter-env","@fougere\u002Fadapter-env","The process environment as a source — MEILI_URL read as Meili's url, judged at boot.","reference\u002Fpackages\u002Fadapter-env",{"path":735,"title":736,"description":737,"stem":738},"\u002Freference\u002Fpackages\u002Fadapter-file","@fougere\u002Fadapter-file","Rows as files — one JSON or YAML file per row, in a directory per entity.","reference\u002Fpackages\u002Fadapter-file",{"path":740,"title":741,"description":742,"stem":743},"\u002Freference\u002Fpackages\u002Fadapter-graphql","@fougere\u002Fadapter-graphql","Entity → GraphQL types, inputs and CRUD, through Pothos.","reference\u002Fpackages\u002Fadapter-graphql",{"path":745,"title":746,"description":747,"stem":748},"\u002Freference\u002Fpackages\u002Fadapter-memory","@fougere\u002Fadapter-memory","Rows in a Map — the source a first run meets, and the one that ships no driver.","reference\u002Fpackages\u002Fadapter-memory",{"path":750,"title":751,"description":752,"stem":753},"\u002Freference\u002Fpackages\u002Fadapter-rest","@fougere\u002Fadapter-rest","Entity → REST routes.","reference\u002Fpackages\u002Fadapter-rest",{"path":755,"title":756,"description":757,"stem":758},"\u002Freference\u002Fpackages\u002Fadapter-sql","@fougere\u002Fadapter-sql","Entity → SQL tables through Kysely (SQLite, PostgreSQL, MySQL, SQL Server).","reference\u002Fpackages\u002Fadapter-sql",{"path":760,"title":761,"description":762,"stem":763},"\u002Freference\u002Fpackages\u002Fadmin","@fougere\u002Fadmin","A back-office derived from what the app already says it hosts — a react-admin DataProvider over the Fougere wire.","reference\u002Fpackages\u002Fadmin",{"path":765,"title":766,"description":767,"stem":768},"\u002Freference\u002Fpackages\u002Fapp","@fougere\u002Fapp","The host-independent half of a Fougere app: boot, call envelope, REST table, form contract.","reference\u002Fpackages\u002Fapp",{"path":770,"title":771,"description":772,"stem":773},"\u002Freference\u002Fpackages\u002Fauth-better","@fougere\u002Fauth-better","Fougere's auth — a translation layer onto better-auth.","reference\u002Fpackages\u002Fauth-better",{"path":775,"title":776,"description":777,"stem":778},"\u002Freference\u002Fpackages\u002Fcalls","@fougere\u002Fcalls","Optional call log for Fougere: a bounded ring of every dispatch, served as an rpc operation. Read it with `fougere devtools`.","reference\u002Fpackages\u002Fcalls",{"path":780,"title":781,"description":782,"stem":783},"\u002Freference\u002Fpackages\u002Fcli","@fougere\u002Fcli","The Fougere CLI — compose a workspace, serve a frond, call an operation.","reference\u002Fpackages\u002Fcli",{"path":785,"title":786,"description":787,"stem":788},"\u002Freference\u002Fpackages\u002Fcompiler","@fougere\u002Fcompiler","The scan: Fougere reading a project's source to produce the descriptors core boots from. Needs a filesystem and a TypeScript program.","reference\u002Fpackages\u002Fcompiler",{"path":790,"title":791,"description":792,"stem":793},"\u002Freference\u002Fpackages\u002Fcontainer","@fougere\u002Fcontainer","Fougere's DI container: resolution by type, wired from the AST scan. Zero dependencies.","reference\u002Fpackages\u002Fcontainer",{"path":795,"title":796,"description":797,"stem":798},"\u002Freference\u002Fpackages\u002Fcore","@fougere\u002Fcore","The core — scan, call contract, façades, remote stand-ins.","reference\u002Fpackages\u002Fcore",{"path":800,"title":801,"description":802,"stem":803},"\u002Freference\u002Fpackages\u002Fdecorators","@fougere\u002Fdecorators","Configuration sugar (@config) — declarative, never hidden runtime.","reference\u002Fpackages\u002Fdecorators",{"path":805,"title":806,"description":807,"stem":808},"\u002Freference\u002Fpackages\u002Fdefaults","@fougere\u002Fdefaults","The conventional boot of a Fougere app — the one place storage is wired.","reference\u002Fpackages\u002Fdefaults",{"path":810,"title":811,"description":812,"stem":813},"\u002Freference\u002Fpackages\u002Fgraph","@fougere\u002Fgraph","Fougere's graph: a labelled directed multigraph, and the four questions asked of it — order, cycles, components, reach. Zero dependencies.","reference\u002Fpackages\u002Fgraph",{"path":815,"title":816,"description":817,"stem":818},"\u002Freference\u002Fpackages\u002Fhttp","@fougere\u002Fhttp","The words every HTTP door speaks — a method, an answer, the headers a state travels in.","reference\u002Fpackages\u002Fhttp",{"path":820,"title":821,"description":822,"stem":823},"\u002Freference\u002Fpackages\u002Flog","@fougere\u002Flog","Logging for Fougere: two lines for every call, in every process, and a file destination for the lines.","reference\u002Fpackages\u002Flog",{"path":825,"title":826,"description":827,"stem":828},"\u002Freference\u002Fpackages\u002Fnext","@fougere\u002Fnext","The Next.js adapter: mounting, and the one import that is genuinely Next.","reference\u002Fpackages\u002Fnext",{"path":830,"title":831,"description":832,"stem":833},"\u002Freference\u002Fpackages\u002Fnuxt","@fougere\u002Fnuxt","The Nuxt module: Fougere's client primitives and server surface.","reference\u002Fpackages\u002Fnuxt",{"path":835,"title":836,"description":837,"stem":838},"\u002Freference\u002Fpackages\u002Fobservability","@fougere\u002Fobservability","Optional observability for Fougere: one span per operation, W3C Trace Context across any transport.","reference\u002Fpackages\u002Fobservability",{"path":840,"title":841,"description":842,"stem":843},"\u002Freference\u002Fpackages\u002Foclif","@fougere\u002Foclif","A frond's operations, as a terminal: topics, flags and help derived from what it declares.","reference\u002Fpackages\u002Foclif",{"path":845,"title":846,"description":847,"stem":848},"\u002Freference\u002Fpackages\u002Freact","@fougere\u002Freact","Fougere's four primitives as React hooks — host-independent.","reference\u002Fpackages\u002Freact",{"path":850,"title":851,"description":852,"stem":853},"\u002Freference\u002Fpackages\u002Fregistry","@fougere\u002Fregistry","Fougere's registry: one answer per name, refused when a second one arrives, and a reload that says it replaces. Zero dependencies.","reference\u002Fpackages\u002Fregistry",{"path":666,"title":8,"description":19,"stem":668},{"path":856,"title":857,"description":858,"stem":859},"\u002Freference\u002Fpackages\u002Fstate-cookie","@fougere\u002Fstate-cookie","A caller's state kept in a cookie — what `state: { cart: { cookie: {} } }` names, signed by core, carried by every HTTP door.","reference\u002Fpackages\u002Fstate-cookie",{"path":861,"title":862,"description":863,"stem":864},"\u002Freference\u002Fpackages\u002Fstate-session","@fougere\u002Fstate-session","A caller's state kept in a session — what `state: { cart: { session: {} } }` names: one cookie holds a reference, the values a row in a source.","reference\u002Fpackages\u002Fstate-session",{"path":866,"title":867,"description":868,"stem":869},"\u002Freference\u002Fpackages\u002Fsvelte","@fougere\u002Fsvelte","Fougere's four primitives as Svelte stores — host-independent.","reference\u002Fpackages\u002Fsvelte",{"path":871,"title":872,"description":873,"stem":874},"\u002Freference\u002Fpackages\u002Ftesting","@fougere\u002Ftesting","Tests derived from the declaration — cases, stubs and a gradient of realities.","reference\u002Fpackages\u002Ftesting",{"path":876,"title":877,"description":878,"stem":879},"\u002Freference\u002Fpackages\u002Ftransport-http","@fougere\u002Ftransport-http","The call contract on the wire, in JSON-RPC 2.0 (server + client).","reference\u002Fpackages\u002Ftransport-http",{"path":881,"title":882,"description":883,"stem":884},"\u002Freference\u002Fpackages\u002Fvite","@fougere\u002Fvite","The Vite plugin: what any Vite-built host must know to run a Fougere app.","reference\u002Fpackages\u002Fvite",{"path":886,"title":887,"description":888,"stem":889},"\u002Freference\u002Fpackages\u002Fworkflow","@fougere\u002Fworkflow","A release that goes to the end: the journal is three entities, the sweep is an operation, and a shared journal is one line of remotes:.","reference\u002Fpackages\u002Fworkflow",1794396613375]