[{"data":1,"prerenderedAt":373},["ShallowReactive",2],{"navigation_docs":3,"landing":197},[4,30,169,189,193],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"/getting-started","1.getting-started",[10,14,18,22,26],{"title":11,"path":12,"stem":13},"Why Zema?","/getting-started/why-zema","1.getting-started/1.why-zema",{"title":15,"path":16,"stem":17},"Installation","/getting-started/installation","1.getting-started/2.installation",{"title":19,"path":20,"stem":21},"Quick Start","/getting-started/quick-start","1.getting-started/3.quick-start",{"title":23,"path":24,"stem":25},"Core Concepts","/getting-started/core-concepts","1.getting-started/4.core-concepts",{"title":27,"path":28,"stem":29},"Coming from Zod","/getting-started/coming-from-zod","1.getting-started/5.coming-from-zod",{"title":31,"path":32,"stem":33,"children":34,"page":6},"Core","/core","2.core",[35,39,76,97,118,135,152],{"title":36,"path":37,"stem":38},"Overview","/core/overview","2.core/1.overview",{"title":40,"path":41,"stem":42,"children":43,"page":6},"Schemas","/core/schemas","2.core/2.schemas",[44,48,52,56,60,64,68,72],{"title":45,"path":46,"stem":47},"Primitives","/core/schemas/primitives","2.core/2.schemas/1.primitives",{"title":49,"path":50,"stem":51},"Arrays","/core/schemas/arrays","2.core/2.schemas/2.arrays",{"title":53,"path":54,"stem":55},"Objects","/core/schemas/objects","2.core/2.schemas/3.objects",{"title":57,"path":58,"stem":59},"Map","/core/schemas/map","2.core/2.schemas/4.map",{"title":61,"path":62,"stem":63},"Union & Literal","/core/schemas/union-literal","2.core/2.schemas/5.union-literal",{"title":65,"path":66,"stem":67},"Refinements","/core/schemas/refinements","2.core/2.schemas/6.refinements",{"title":69,"path":70,"stem":71},"Modifiers","/core/schemas/modifiers","2.core/2.schemas/7.modifiers",{"title":73,"path":74,"stem":75},"Custom Types","/core/schemas/custom-types","2.core/2.schemas/9.custom-types",{"title":77,"path":78,"stem":79,"children":80,"page":6},"Validations","/core/validation","2.core/3.validation",[81,85,89,93],{"title":82,"path":83,"stem":84},"Basic Validation","/core/validation/basic-validation","2.core/3.validation/1.basic-validation",{"title":86,"path":87,"stem":88},"Async Validation","/core/validation/async-validation","2.core/3.validation/2.async-validation",{"title":90,"path":91,"stem":92},"Custom Validators","/core/validation/custom-validators","2.core/3.validation/3.custom-validators",{"title":94,"path":95,"stem":96},"Error Handling","/core/validation/error-handling","2.core/3.validation/4.error-handling",{"title":98,"path":99,"stem":100,"children":101,"page":6},"Extension Types","/core/extension-types","2.core/4.extension-types",[102,106,110,114],{"title":103,"path":104,"stem":105},"What are Extension Types?","/core/extension-types/what-are-extension-types","2.core/4.extension-types/1.what-are-extension-types",{"title":107,"path":108,"stem":109},"Creating Extension Types","/core/extension-types/creating-extension-types","2.core/4.extension-types/2.creating-extension-types",{"title":111,"path":112,"stem":113},"Extension Types vs Classes","/core/extension-types/vs-classes","2.core/4.extension-types/3.vs-classes",{"title":115,"path":116,"stem":117},"Extension Type Best Practices","/core/extension-types/best-practices","2.core/4.extension-types/4.best-practices",{"title":119,"path":120,"stem":121,"children":122,"page":6},"Transformations","/core/transformations","2.core/5.transformations",[123,127,131],{"title":124,"path":125,"stem":126},"Transforms","/core/transformations/transforms","2.core/5.transformations/1.transforms",{"title":128,"path":129,"stem":130},"Preprocess","/core/transformations/preprocess","2.core/5.transformations/2.preprocess",{"title":132,"path":133,"stem":134},"Coercion","/core/transformations/coercion","2.core/5.transformations/3.coercion",{"title":136,"path":137,"stem":138,"children":139,"page":6},"Composition","/core/composition","2.core/6.composition",[140,144,148],{"title":141,"path":142,"stem":143},"Merging and Extending Schemas","/core/composition/merging-schemas","2.core/6.composition/1.merging-schemas",{"title":145,"path":146,"stem":147},"Picking and Omitting Fields","/core/composition/picking-omitting","2.core/6.composition/2.picking-omitting",{"title":149,"path":150,"stem":151},"Discriminated Unions","/core/composition/discriminated-unions","2.core/6.composition/3.discriminated-unions",{"title":153,"path":154,"stem":155,"children":156,"page":6},"Advanced","/core/advanced","2.core/7.advanced",[157,161,165],{"title":158,"path":159,"stem":160},"Lazy Schema","/core/advanced/lazy-schemas","2.core/7.advanced/1.lazy-schemas",{"title":162,"path":163,"stem":164},"Branded Types","/core/advanced/branded-types","2.core/7.advanced/2.branded-types",{"title":166,"path":167,"stem":168},"Performance","/core/advanced/performance","2.core/7.advanced/3.performance",{"title":170,"path":171,"stem":172,"children":173,"page":6},"Plugins","/plugins","3.plugins",[174,177,181,185],{"title":36,"path":175,"stem":176},"/plugins/overview","3.plugins/1.overview",{"title":178,"path":179,"stem":180},"zema_forms","/plugins/zema_forms","3.plugins/2.zema_forms",{"title":182,"path":183,"stem":184},"zema_firestore","/plugins/zema_firestore","3.plugins/3.zema_firestore",{"title":186,"path":187,"stem":188},"zema_hive","/plugins/zema_hive","3.plugins/4.zema_hive",{"title":190,"path":191,"stem":192},"FAQ","/faq","faq",{"title":194,"path":195,"stem":196},"Troubleshooting","/troubleshooting","troubleshooting",{"id":198,"title":199,"body":200,"description":199,"extension":364,"meta":365,"navigation":366,"path":367,"seo":368,"stem":371,"__hash__":372},"landing/index.md","",{"type":201,"value":202,"toc":361},"minimark",[203,234],[204,205,206,216,219],"u-page-hero",{},[207,208,209,210],"template",{"v-slot:title":199},"Schema validation for Dart. ",[211,212,215],"span",{"className":213},[214],"text-primary","Define once, validate anywhere.",[207,217,218],{"v-slot:description":199},"Zema is a schema validation library for Dart inspired by Zod. A fluent chainable API, exhaustive error collection, and a sealed result type that never throws unless you want it to.",[207,220,221,228],{"v-slot:links":199},[222,223,227],"u-button",{"color":224,"size":225,"to":16,"trailing-icon":226},"neutral","xl","i-lucide-arrow-right","Get started",[222,229,233],{"color":224,"size":225,"to":230,"icon":231,"variant":232},"https://github.com/meragix/zema","simple-icons-github","outline","Star on GitHub",[235,236,237,240],"u-page-section",{},[207,238,239],{"v-slot:title":199},"Everything you need to validate data in Dart",[207,241,242,261,274,302,330,346],{"v-slot:features":199},[243,244,246,253],"u-page-feature",{"icon":245},"i-lucide-layers",[207,247,248,252],{"v-slot:title":199},[211,249,251],{"className":250},[214],"Fluent"," chainable API",[207,254,255,256,260],{"v-slot:description":199},"Build schemas by chaining constraints: ",[257,258,259],"code",{},"z.string().min(2).email()",". Every method returns a new immutable schema instance: no mutation, no side effects.",[243,262,264,271],{"icon":263},"i-lucide-list-checks",[207,265,266,270],{"v-slot:title":199},[211,267,269],{"className":268},[214],"Exhaustive"," error collection",[207,272,273],{"v-slot:description":199},"Every failing field is reported in a single parse call. No silent failures, no early exits. Each issue carries a code, a human-readable message, and a path to the exact location in the input.",[243,275,277,284],{"icon":276},"i-lucide-shield",[207,278,279,283],{"v-slot:title":199},[211,280,282],{"className":281},[214],"Sealed"," result type",[207,285,286,289,290,293,294,297,298,301],{"v-slot:description":199},[257,287,288],{},"safeParse()"," returns ",[257,291,292],{},"ZemaSuccess\u003CT>"," or ",[257,295,296],{},"ZemaFailure\u003CT>",", never throws. Use Dart 3 pattern matching to handle both cases. Call ",[257,299,300],{},"parse()"," when you prefer an exception on failure.",[243,303,305,312],{"icon":304},"i-lucide-blocks",[207,306,307,311],{"v-slot:title":199},[211,308,310],{"className":309},[214],"Composable"," object schemas",[207,313,314,315,318,319,318,322,325,326,329],{"v-slot:description":199},"Build complex schemas from simple ones. ",[257,316,317],{},"extend()",", ",[257,320,321],{},"merge()",[257,323,324],{},"pick()",", and ",[257,327,328],{},"omit()"," let you derive new schemas from existing ones without repetition.",[243,331,333,340],{"icon":332},"i-lucide-zap",[207,334,335,339],{"v-slot:title":199},[211,336,338],{"className":337},[214],"Discriminated"," unions",[207,341,342,345],{"v-slot:description":199},[257,343,344],{},"discriminatedBy()"," selects the matching schema directly from a literal field, O(1) instead of a linear scan. No unnecessary validation of non-matching schemas.",[243,347,349,355],{"icon":348},"i-lucide-repeat",[207,350,351,354],{"v-slot:title":199},[211,352,132],{"className":353},[214]," for raw inputs",[207,356,357,360],{"v-slot:description":199},[257,358,359],{},"z.coerce()"," converts strings from environment variables, query parameters, and form inputs into the correct Dart type before validation runs.",{"title":199,"searchDepth":362,"depth":362,"links":363},2,[],"md",{},true,"/",{"title":369,"description":370},"Zema | Schema Validation for Dart","Type-safe schema validation for Dart and Flutter. Define schemas once, collect all errors in a single pass, and validate anywhere.","index","lw5W_cLJXUdJKi3QvAPisqVkTxQrrJbYng8mlS-T-lM",1774152281307]