[{"data":1,"prerenderedAt":3714},["ShallowReactive",2],{"navigation_docs":3,"-runtypes":399},[4,162,346],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":24},"RPC","icon-park-outline:lightning","\u002Frpc","01.rpc",[10,25,63,77,102,136],{"title":11,"icon":12,"redirect":7,"path":13,"stem":14,"children":15,"page":24},"Introduction","icon-park-outline:home","\u002Frpc\u002Fintroduction","01.rpc\u002F01.introduction",[16,20],{"title":17,"path":18,"stem":19},"Quick Start","\u002Frpc\u002Fintroduction\u002Fquick-start","01.rpc\u002F01.introduction\u002F02.quick-start",{"title":21,"path":22,"stem":23},"Manual Install","\u002Frpc\u002Fintroduction\u002Fmanual-install","01.rpc\u002F01.introduction\u002F03.manual-install",false,{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":24},"Server","icon-park-outline:server","\u002Frpc\u002Fserver","01.rpc\u002F02.server",[31,35,39,43,47,51,55,59],{"title":32,"path":33,"stem":34},"Routes","\u002Frpc\u002Fserver\u002Froutes","01.rpc\u002F02.server\u002F01.routes",{"title":36,"path":37,"stem":38},"Middleware","\u002Frpc\u002Fserver\u002Fmiddleware","01.rpc\u002F02.server\u002F02.middleware",{"title":40,"path":41,"stem":42},"Call Context","\u002Frpc\u002Fserver\u002Fcall-context","01.rpc\u002F02.server\u002F03.call-context",{"title":44,"path":45,"stem":46},"Headers","\u002Frpc\u002Fserver\u002Fheaders","01.rpc\u002F02.server\u002F04.headers",{"title":48,"path":49,"stem":50},"Error Handling","\u002Frpc\u002Fserver\u002Ferror-handling","01.rpc\u002F02.server\u002F05.error-handling",{"title":52,"path":53,"stem":54},"Validation","\u002Frpc\u002Fserver\u002Fvalidation","01.rpc\u002F02.server\u002F06.validation",{"title":56,"path":57,"stem":58},"JSON Round Trip","\u002Frpc\u002Fserver\u002Fjson-round-trip","01.rpc\u002F02.server\u002F07.json-round-trip",{"title":60,"path":61,"stem":62},"Drizzle Tables","\u002Frpc\u002Fserver\u002Fdrizzle-tables","01.rpc\u002F02.server\u002F08.drizzle-tables",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":24},"Middlewares","icon-park-outline:link-one","\u002Frpc\u002Fmiddlewares","01.rpc\u002F03.middlewares",[69,73],{"title":70,"path":71,"stem":72},"fetchMetadata","\u002Frpc\u002Fmiddlewares\u002Ffetch-metadata","01.rpc\u002F03.middlewares\u002F01.fetch-metadata",{"title":74,"path":75,"stem":76},"syncRoutes","\u002Frpc\u002Fmiddlewares\u002Fsync-routes","01.rpc\u002F03.middlewares\u002F02.sync-routes",{"title":78,"icon":79,"path":80,"stem":81,"children":82,"page":24},"Client","icon-park-outline:computer","\u002Frpc\u002Fclient","01.rpc\u002F04.client",[83,87,91,94,98],{"title":84,"path":85,"stem":86},"Client Overview","\u002Frpc\u002Fclient\u002Fclient-overview","01.rpc\u002F04.client\u002F00.client-overview",{"title":88,"path":89,"stem":90},"Client Middleware","\u002Frpc\u002Fclient\u002Fclient-middleware","01.rpc\u002F04.client\u002F01.client-middleware",{"title":48,"path":92,"stem":93},"\u002Frpc\u002Fclient\u002Ferror-handling","01.rpc\u002F04.client\u002F02.error-handling",{"title":95,"path":96,"stem":97},"Batch Requests","\u002Frpc\u002Fclient\u002Fbatch","01.rpc\u002F04.client\u002F03.batch",{"title":99,"path":100,"stem":101},"Cancellation & Timeouts","\u002Frpc\u002Fclient\u002Fcancellation-timeouts","01.rpc\u002F04.client\u002F04.cancellation-timeouts",{"title":103,"redirect":104,"icon":105,"path":106,"stem":107,"children":108,"page":24},"Platforms","\u002Frpc\u002Fplatforms\u002Fnode-js","icon-park-outline:play","\u002Frpc\u002Fplatforms","01.rpc\u002F06.platforms",[109,112,116,120,124,128,132],{"title":110,"path":104,"stem":111},"Node.js","01.rpc\u002F06.platforms\u002F01.node-js",{"title":113,"path":114,"stem":115},"Bun","\u002Frpc\u002Fplatforms\u002Fbun","01.rpc\u002F06.platforms\u002F02.bun",{"title":117,"path":118,"stem":119},"AWS Lambda","\u002Frpc\u002Fplatforms\u002Faws-lambda","01.rpc\u002F06.platforms\u002F03.aws-lambda",{"title":121,"path":122,"stem":123},"Google Cloud Functions","\u002Frpc\u002Fplatforms\u002Fgoogle-cloud-functions","01.rpc\u002F06.platforms\u002F04.google-cloud-functions",{"title":125,"path":126,"stem":127},"Cloudflare Workers","\u002Frpc\u002Fplatforms\u002Fcloudflare","01.rpc\u002F06.platforms\u002F05.cloudflare",{"title":129,"path":130,"stem":131},"Vercel","\u002Frpc\u002Fplatforms\u002Fvercel","01.rpc\u002F06.platforms\u002F06.vercel",{"title":133,"path":134,"stem":135},"uWebSockets.js","\u002Frpc\u002Fplatforms\u002Fuwebsockets","01.rpc\u002F06.platforms\u002F07.uwebsockets",{"title":137,"icon":138,"path":139,"stem":140,"children":141,"page":24},"Devtools","icon-park-outline:tool","\u002Frpc\u002Fdevtools","01.rpc\u002F07.devtools",[142,146,150,154,158],{"title":143,"path":144,"stem":145},"Linter","\u002Frpc\u002Fdevtools\u002Flinter","01.rpc\u002F07.devtools\u002F01.linter",{"title":147,"path":148,"stem":149},"Vite","\u002Frpc\u002Fdevtools\u002Fvite","01.rpc\u002F07.devtools\u002F02.vite",{"title":151,"path":152,"stem":153},"Next.js","\u002Frpc\u002Fdevtools\u002Fnextjs","01.rpc\u002F07.devtools\u002F03.nextjs",{"title":155,"path":156,"stem":157},"CLI","\u002Frpc\u002Fdevtools\u002Fcli","01.rpc\u002F07.devtools\u002F04.cli",{"title":159,"path":160,"stem":161},"API Types","\u002Frpc\u002Fdevtools\u002Fapi-types","01.rpc\u002F07.devtools\u002F05.api-types",{"title":163,"icon":164,"path":165,"stem":166,"children":167,"page":24},"RunTypes","i-lucide-braces","\u002Fruntypes","02.runtypes",[168,184,224,254,268,290,332],{"title":11,"icon":169,"redirect":165,"path":170,"stem":171,"children":172,"page":24},"i-lucide-rocket","\u002Fruntypes\u002Fintroduction","02.runtypes\u002F01.introduction",[173,177,180],{"title":174,"path":175,"stem":176},"Built on typescript-go","\u002Fruntypes\u002Fintroduction\u002Fbuilt-on-typescript-go","02.runtypes\u002F01.introduction\u002F02.built-on-typescript-go",{"title":17,"path":178,"stem":179},"\u002Fruntypes\u002Fintroduction\u002Fquick-start","02.runtypes\u002F01.introduction\u002F03.quick-start",{"title":181,"path":182,"stem":183},"Configuration","\u002Fruntypes\u002Fintroduction\u002Fconfiguration","02.runtypes\u002F01.introduction\u002F04.configuration",{"title":185,"icon":186,"redirect":187,"path":188,"stem":189,"children":190,"page":24},"Guide","i-lucide-book-open","\u002Fruntypes\u002Fguide\u002Ftype-builders","\u002Fruntypes\u002Fguide","02.runtypes\u002F02.guide",[191,194,198,201,204,208,212,216,220],{"title":192,"path":187,"stem":193},"Types vs Type Builders","02.runtypes\u002F02.guide\u002F01.type-builders",{"title":195,"path":196,"stem":197},"Reflection","\u002Fruntypes\u002Fguide\u002Freflection","02.runtypes\u002F02.guide\u002F02.reflection",{"title":52,"path":199,"stem":200},"\u002Fruntypes\u002Fguide\u002Fvalidation","02.runtypes\u002F02.guide\u002F03.validation",{"title":56,"path":202,"stem":203},"\u002Fruntypes\u002Fguide\u002Fjson-round-trip","02.runtypes\u002F02.guide\u002F04.json-round-trip",{"title":205,"path":206,"stem":207},"Data Mocking","\u002Fruntypes\u002Fguide\u002Fmocking","02.runtypes\u002F02.guide\u002F07.mocking",{"title":209,"path":210,"stem":211},"JSON Schemas","\u002Fruntypes\u002Fguide\u002Fjson-schemas","02.runtypes\u002F02.guide\u002F08.json-schemas",{"title":213,"path":214,"stem":215},"Pure Functions","\u002Fruntypes\u002Fguide\u002Fpure-functions","02.runtypes\u002F02.guide\u002F09.pure-functions",{"title":217,"path":218,"stem":219},"Compiler Markers","\u002Fruntypes\u002Fguide\u002Fcompiler-markers","02.runtypes\u002F02.guide\u002F10.compiler-markers",{"title":221,"path":222,"stem":223},"All Compiled Functions","\u002Fruntypes\u002Fguide\u002Fall-compiled-functions","02.runtypes\u002F02.guide\u002F11.all-compiled-functions",{"title":225,"icon":226,"redirect":227,"path":228,"stem":229,"children":230,"page":24},"Type Formats","i-lucide-shapes","\u002Fruntypes\u002Ftype-formats\u002Foverview","\u002Fruntypes\u002Ftype-formats","02.runtypes\u002F03.type-formats",[231,234,238,242,246,250],{"title":232,"path":227,"stem":233},"Overview","02.runtypes\u002F03.type-formats\u002F01.overview",{"title":235,"path":236,"stem":237},"String Formats","\u002Fruntypes\u002Ftype-formats\u002Fstring","02.runtypes\u002F03.type-formats\u002F02.string",{"title":239,"path":240,"stem":241},"Number Formats","\u002Fruntypes\u002Ftype-formats\u002Fnumber","02.runtypes\u002F03.type-formats\u002F03.number",{"title":243,"path":244,"stem":245},"BigInt Formats","\u002Fruntypes\u002Ftype-formats\u002Fbigint","02.runtypes\u002F03.type-formats\u002F04.bigint",{"title":247,"path":248,"stem":249},"Date and Time Formats","\u002Fruntypes\u002Ftype-formats\u002Fdate-time","02.runtypes\u002F03.type-formats\u002F05.date-time",{"title":251,"path":252,"stem":253},"Collection Formats","\u002Fruntypes\u002Ftype-formats\u002Fcollections","02.runtypes\u002F03.type-formats\u002F06.collections",{"title":255,"icon":256,"redirect":257,"path":258,"stem":259,"children":260,"page":24},"Tooling","i-lucide-wrench","\u002Fruntypes\u002Ftooling\u002Flinting","\u002Fruntypes\u002Ftooling","02.runtypes\u002F04.tooling",[261,264],{"title":262,"path":257,"stem":263},"Linting","02.runtypes\u002F04.tooling\u002F01.linting",{"title":265,"path":266,"stem":267},"Source Conversion","\u002Fruntypes\u002Ftooling\u002Fsource-conversion","02.runtypes\u002F04.tooling\u002F02.source-conversion",{"title":269,"icon":270,"redirect":271,"path":272,"stem":273,"children":274,"page":24},"AI Integration","i-lucide-sparkles","\u002Fruntypes\u002Fai-integration\u002Fworkflow-and-commands","\u002Fruntypes\u002Fai-integration","02.runtypes\u002F05.ai-integration",[275,278,282,286],{"title":276,"path":271,"stem":277},"AI Workflow","02.runtypes\u002F05.ai-integration\u002F01.workflow-and-commands",{"title":279,"path":280,"stem":281},"FriendlyText","\u002Fruntypes\u002Fai-integration\u002Ffriendly-text","02.runtypes\u002F05.ai-integration\u002F02.friendly-text",{"title":283,"path":284,"stem":285},"MockData","\u002Fruntypes\u002Fai-integration\u002Fmock-data","02.runtypes\u002F05.ai-integration\u002F03.mock-data",{"title":287,"path":288,"stem":289},"Translations (i18n)","\u002Fruntypes\u002Fai-integration\u002Fi18n","02.runtypes\u002F05.ai-integration\u002F04.i18n",{"title":291,"icon":292,"redirect":293,"path":294,"stem":295,"children":296,"page":24},"Drizzle ORM","i-lineicons-drizzle","\u002Fruntypes\u002Fdrizzle-orm\u002Fdrizzle-overview","\u002Fruntypes\u002Fdrizzle-orm","02.runtypes\u002F06.drizzle-orm",[297,300,304,308,312,316,320,324,328],{"title":298,"path":293,"stem":299},"Drizzle Overview","02.runtypes\u002F06.drizzle-orm\u002F00.drizzle-overview",{"title":301,"path":302,"stem":303},"Column Formats","\u002Fruntypes\u002Fdrizzle-orm\u002Fcolumn-formats","02.runtypes\u002F06.drizzle-orm\u002F01.column-formats",{"title":305,"path":306,"stem":307},"Views","\u002Fruntypes\u002Fdrizzle-orm\u002Fviews","02.runtypes\u002F06.drizzle-orm\u002F02.views",{"title":309,"path":310,"stem":311},"Indexes and Constraints","\u002Fruntypes\u002Fdrizzle-orm\u002Fconstraints","02.runtypes\u002F06.drizzle-orm\u002F03.constraints",{"title":313,"path":314,"stem":315},"Row Level Security","\u002Fruntypes\u002Fdrizzle-orm\u002Frow-level-security","02.runtypes\u002F06.drizzle-orm\u002F04.row-level-security",{"title":317,"path":318,"stem":319},"Relations","\u002Fruntypes\u002Fdrizzle-orm\u002Frelations","02.runtypes\u002F06.drizzle-orm\u002F05.relations",{"title":321,"path":322,"stem":323},"The Schema File","\u002Fruntypes\u002Fdrizzle-orm\u002Fschema-file","02.runtypes\u002F06.drizzle-orm\u002F06.schema-file",{"title":325,"path":326,"stem":327},"Migrate an Existing Schema","\u002Fruntypes\u002Fdrizzle-orm\u002Fmigrate-an-existing-schema","02.runtypes\u002F06.drizzle-orm\u002F07.migrate-an-existing-schema",{"title":329,"path":330,"stem":331},"Cloudflare D1 and Durable Objects","\u002Fruntypes\u002Fdrizzle-orm\u002Fcloudflare-storage","02.runtypes\u002F06.drizzle-orm\u002F08.cloudflare-storage",{"title":333,"icon":334,"redirect":335,"path":336,"stem":337,"children":338,"page":24},"Diagnostics","i-lucide-triangle-alert","\u002Fruntypes\u002Fdiagnostics\u002Ferror-levels","\u002Fruntypes\u002Fdiagnostics","02.runtypes\u002F08.diagnostics",[339,342],{"title":340,"path":335,"stem":341},"Error Levels","02.runtypes\u002F08.diagnostics\u002F01.error-levels",{"title":343,"path":344,"stem":345},"All Diagnostics","\u002Fruntypes\u002Fdiagnostics\u002Fall-diagnostics","02.runtypes\u002F08.diagnostics\u002F02.all-diagnostics",{"title":347,"icon":348,"path":349,"stem":350,"children":351,"page":24},"Benchmarks","i-lucide-gauge","\u002Fbenchmarks","03.benchmarks",[352,372],{"title":5,"icon":6,"redirect":353,"path":354,"stem":355,"children":356,"page":24},"\u002Fbenchmarks\u002Frpc\u002Fhello-world","\u002Fbenchmarks\u002Frpc","03.benchmarks\u002F02.rpc",[357,360,364,368],{"title":358,"path":353,"stem":359},"Hello World","03.benchmarks\u002F02.rpc\u002F01.hello-world",{"title":361,"path":362,"stem":363},"Light Validation","\u002Fbenchmarks\u002Frpc\u002Flight-validation","03.benchmarks\u002F02.rpc\u002F02.light-validation",{"title":365,"path":366,"stem":367},"Heavy Validation","\u002Fbenchmarks\u002Frpc\u002Fheavy-validation","03.benchmarks\u002F02.rpc\u002F03.heavy-validation",{"title":369,"path":370,"stem":371},"Payload Sizes","\u002Fbenchmarks\u002Frpc\u002Fpayload-sizes","03.benchmarks\u002F02.rpc\u002F04.payload-sizes",{"title":163,"icon":164,"redirect":373,"path":374,"stem":375,"children":376,"page":24},"\u002Fbenchmarks\u002Fruntypes\u002Fis-valid","\u002Fbenchmarks\u002Fruntypes","03.benchmarks\u002F03.runtypes",[377,380,384,388,392,395],{"title":378,"path":373,"stem":379},"Is Valid","03.benchmarks\u002F03.runtypes\u002F01.is-valid",{"title":381,"path":382,"stem":383},"Is Valid Formats","\u002Fbenchmarks\u002Fruntypes\u002Fis-valid-formats","03.benchmarks\u002F03.runtypes\u002F02.is-valid-formats",{"title":385,"path":386,"stem":387},"Get Errors","\u002Fbenchmarks\u002Fruntypes\u002Fget-errors","03.benchmarks\u002F03.runtypes\u002F03.get-errors",{"title":389,"path":390,"stem":391},"Get Errors Formats","\u002Fbenchmarks\u002Fruntypes\u002Fget-errors-formats","03.benchmarks\u002F03.runtypes\u002F04.get-errors-formats",{"title":56,"path":393,"stem":394},"\u002Fbenchmarks\u002Fruntypes\u002Fjson-round-trip","03.benchmarks\u002F03.runtypes\u002F05.json-round-trip",{"title":396,"path":397,"stem":398},"Type Checking","\u002Fbenchmarks\u002Fruntypes\u002Ftype-checking","03.benchmarks\u002F03.runtypes\u002F07.type-checking",{"id":400,"title":401,"body":402,"description":3705,"extension":3706,"links":3707,"meta":3708,"navigation":24,"path":165,"seo":3710,"stem":3712,"__hash__":3713},"docs\u002F02.runtypes\u002F01.introduction\u002F01.about-mion-runtypes.md","About mion RunTypes",{"type":403,"value":404},"minimark",[405,469,532,1721,2375,2886,3302,3333,3695,3701],[406,407,410,443],"u-page-hero",{"className":408},[409],"home-hero",[411,412,414,429],"template",{"v-slot:header":413},"",[415,416,419],"slided-title",{":titles":417,"leading":418},"[\"High Perf Validation\",\"Automatic JSON Round Trip\",\"Automatic Data Mocking\",\"RunTime Types Reflection\",\"Say hello to mion\"]","Bringing TypeScript to runtime",[411,420,421,425,428],{"v-slot:description":413},[422,423,424],"strong",{},"Your types are now functionality.",[426,427],"br",{},"RunTypes generates validation, JSON round trip, mocking and reflection from your types at build time. No schemas to write.",[430,431,434],"div",{"className":432},[433],"tsgo-kicker",[435,436,439,440],"a",{"href":175,"className":437},[438],"tsgo-badge","Built on top of Typescript 7 · ",[422,441,442],{},"100% compatible",[411,444,445,452,457,460],{"v-slot:links":413},[446,447,17],"u-button",{"color":448,"icon":449,"size":450,"to":178,"variant":451},"neutral","icon-park-outline:book-one","xl","outline",[446,453,456],{"color":448,"icon":454,"size":450,"to":455,"variant":451},"i-lucide-flask-conical","\u002Fruntypes\u002Fplayground","Playground",[446,458,347],{"color":448,"icon":459,"size":450,"to":373,"variant":451},"i-lucide-zap",[446,461,468],{"color":448,"icon":462,"size":450,"to":463,"variant":451,"rel":464,"target":467},"i-simple-icons-github","https:\u002F\u002Fgithub.com\u002FMionKit\u002Fmion",[465,466],"noopener","noreferrer","_blank","GitHub",[470,471,474,483],"u-page-section",{"className":472},[473],"home-features",[411,475,476,482],{"v-slot:title":413},[477,478,481],"span",{"className":479},[480],"title-tone","Built for"," compiled TypeScript.",[411,484,485,528],{"v-slot:body":413},[430,486,487],{},[430,488,491,509],{"className":489},[490],"rt-standard-split",[430,492,496,501,505],{"className":493},[494,495],"rt-feature-text","rt-standard-prose",[497,498,500],"h3",{"id":499},"compiled-typescript-is-on-its-way-and-we-are-ready-for-it","Compiled TypeScript is on its way and we are ready for it",[502,503,504],"p",{},"TypeScript is starting to compile ahead of time, to native binaries:",[506,507],"stat-tiles",{":tiles":508},"[{\"value\":\"scriptc\",\"label\":\"Vercel Labs, to native\",\"hue\":200,\"to\":\"https:\u002F\u002Fwww.infoq.com\u002Fnews\u002F2026\u002F09\u002Fvercel-scriptc-node\u002F\"},{\"value\":\"Porffor\",\"label\":\"To Wasm and C\",\"hue\":255,\"to\":\"https:\u002F\u002Fgithub.com\u002FCanadaHonk\u002Fporffor\"},{\"value\":\"Perry\",\"label\":\"To native via LLVM\",\"hue\":310,\"to\":\"https:\u002F\u002Fwww.perryts.com\u002F\"},{\"value\":\"Bun\",\"label\":\"Experimental AOT mode\",\"hue\":30,\"to\":\"https:\u002F\u002Fgithub.com\u002Foven-sh\u002FWebKit\u002Fpull\u002F757\"}]",[430,510,512,520,523],{"className":511},[494,495],[502,513,514,515,519],{},"Just-in-time (JIT) validators like Zod 4 only learn your schema when your app runs, then turn it into a string of code with ",[516,517,518],"code",{},"new Function",". An ahead-of-time compiler cannot compile that string, so they drop to a slow path or stop working.",[502,521,522],{},"RunTypes reads the shape of your data from your types and compiles its functions at build time, before your app starts.",[502,524,525],{},[435,526,527],{"href":175},"Built on typescript-go →",[529,530],"code-card",{"name":531},"jit-wall",[470,533,535,542],{"className":534},[473],[411,536,537,541],{"v-slot:title":413},[477,538,540],{"className":539},[480],"One type,"," many functions.",[411,543,544,764,1020,1656],{"v-slot:body":413},[430,545,546],{},[430,547,549,564],{"className":548},[490],[430,550,552,556,559],{"className":551},[494,495],[497,553,555],{"id":554},"the-whole-toolbelt-in-one-box","The whole toolbelt, in one box",[502,557,558],{},"Stop gluing many libraries together. Every function RunTypes generates comes from the same type, so they all agree on what your data looks like.",[502,560,561],{},[435,562,563],{"href":202},"One type in, multiple compiled functions out →",[565,566,570],"pre",{"className":567,"code":568,"language":569,"meta":413,"style":413},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","type Order = {\n  id: TF.UUIDv4;\n  customer: {name: string; email: TF.Email};\n  items: {sku: string; qty: number; price: number}[];\n  total: number;\n  placedAt: Date;\n  status: 'pending' | 'paid' | 'shipped';\n};\n","ts",[516,571,572,591,613,650,695,707,720,759],{"__ignoreMap":413},[477,573,576,580,584,588],{"class":574,"line":575},"line",1,[477,577,579],{"class":578},"spNyl","type",[477,581,583],{"class":582},"sBMFI"," Order",[477,585,587],{"class":586},"sMK4o"," =",[477,589,590],{"class":586}," {\n",[477,592,594,598,601,604,607,610],{"class":574,"line":593},2,[477,595,597],{"class":596},"swJcz","  id",[477,599,600],{"class":586},":",[477,602,603],{"class":582}," TF",[477,605,606],{"class":586},".",[477,608,609],{"class":582},"UUIDv4",[477,611,612],{"class":586},";\n",[477,614,616,619,621,624,627,629,632,635,638,640,642,644,647],{"class":574,"line":615},3,[477,617,618],{"class":596},"  customer",[477,620,600],{"class":586},[477,622,623],{"class":586}," {",[477,625,626],{"class":596},"name",[477,628,600],{"class":586},[477,630,631],{"class":582}," string",[477,633,634],{"class":586},";",[477,636,637],{"class":596}," email",[477,639,600],{"class":586},[477,641,603],{"class":582},[477,643,606],{"class":586},[477,645,646],{"class":582},"Email",[477,648,649],{"class":586},"};\n",[477,651,653,656,658,660,663,665,667,669,672,674,677,679,682,684,686,689,693],{"class":574,"line":652},4,[477,654,655],{"class":596},"  items",[477,657,600],{"class":586},[477,659,623],{"class":586},[477,661,662],{"class":596},"sku",[477,664,600],{"class":586},[477,666,631],{"class":582},[477,668,634],{"class":586},[477,670,671],{"class":596}," qty",[477,673,600],{"class":586},[477,675,676],{"class":582}," number",[477,678,634],{"class":586},[477,680,681],{"class":596}," price",[477,683,600],{"class":586},[477,685,676],{"class":582},[477,687,688],{"class":586},"}",[477,690,692],{"class":691},"sTEyZ","[]",[477,694,612],{"class":586},[477,696,698,701,703,705],{"class":574,"line":697},5,[477,699,700],{"class":596},"  total",[477,702,600],{"class":586},[477,704,676],{"class":582},[477,706,612],{"class":586},[477,708,710,713,715,718],{"class":574,"line":709},6,[477,711,712],{"class":596},"  placedAt",[477,714,600],{"class":586},[477,716,717],{"class":582}," Date",[477,719,612],{"class":586},[477,721,723,726,728,731,735,738,741,743,746,748,750,752,755,757],{"class":574,"line":722},7,[477,724,725],{"class":596},"  status",[477,727,600],{"class":586},[477,729,730],{"class":586}," '",[477,732,734],{"class":733},"sfazB","pending",[477,736,737],{"class":586},"'",[477,739,740],{"class":586}," |",[477,742,730],{"class":586},[477,744,745],{"class":733},"paid",[477,747,737],{"class":586},[477,749,740],{"class":586},[477,751,730],{"class":586},[477,753,754],{"class":733},"shipped",[477,756,737],{"class":586},[477,758,612],{"class":586},[477,760,762],{"class":574,"line":761},8,[477,763,649],{"class":586},[430,765,768,788,917],{"className":766},[767],"rt-object-fns",[430,769,772,775,781],{"className":770},[771],"rt-row-intro",[497,773,52],{"id":774},"validation",[502,776,777,778],{},"Like any other validation library, but here TypeScript is the source of truth. RunTypes generates highly optimized functions at build time, so it keeps up with the fastest validators with no runtime dependencies. ",[435,779,780],{"href":373},"See the benchmarks →",[502,782,783,784,787],{},"The same type is also a Standard Schema, the ",[516,785,786],{},"~standard"," contract that tRPC, TanStack Form and Router, Hono and more accept directly. One call, no adapter to write.",[430,789,792,797,912],{"className":790},[791],"rt-object-fn",[793,794,796],"h4",{"id":795},"type-guard-and-error-list","Type guard and error list",[565,798,800],{"className":567,"code":799,"language":569,"meta":413,"style":413},"const isOrder = createValidateFn\u003COrder>();\nisOrder(order); \u002F\u002F true\n\nconst orderErrors = createGetValidationErrorsFn\u003COrder>();\norderErrors({...order, total: 'free'}); \u002F\u002F [{path: ['total'], expected: 'number'}]\n",[516,801,802,831,845,851,873],{"__ignoreMap":413},[477,803,804,807,810,813,817,820,823,826,829],{"class":574,"line":575},[477,805,806],{"class":578},"const",[477,808,809],{"class":691}," isOrder ",[477,811,812],{"class":586},"=",[477,814,816],{"class":815},"s2Zo4"," createValidateFn",[477,818,819],{"class":586},"\u003C",[477,821,822],{"class":582},"Order",[477,824,825],{"class":586},">",[477,827,828],{"class":691},"()",[477,830,612],{"class":586},[477,832,833,836,839,841],{"class":574,"line":593},[477,834,835],{"class":815},"isOrder",[477,837,838],{"class":691},"(order)",[477,840,634],{"class":586},[477,842,844],{"class":843},"sHwdD"," \u002F\u002F true\n",[477,846,847],{"class":574,"line":615},[477,848,850],{"emptyLinePlaceholder":849},true,"\n",[477,852,853,855,858,860,863,865,867,869,871],{"class":574,"line":652},[477,854,806],{"class":578},[477,856,857],{"class":691}," orderErrors ",[477,859,812],{"class":586},[477,861,862],{"class":815}," createGetValidationErrorsFn",[477,864,819],{"class":586},[477,866,822],{"class":582},[477,868,825],{"class":586},[477,870,828],{"class":691},[477,872,612],{"class":586},[477,874,875,878,881,884,887,890,893,895,897,900,902,904,907,909],{"class":574,"line":697},[477,876,877],{"class":815},"orderErrors",[477,879,880],{"class":691},"(",[477,882,883],{"class":586},"{...",[477,885,886],{"class":691},"order",[477,888,889],{"class":586},",",[477,891,892],{"class":596}," total",[477,894,600],{"class":586},[477,896,730],{"class":586},[477,898,899],{"class":733},"free",[477,901,737],{"class":586},[477,903,688],{"class":586},[477,905,906],{"class":691},")",[477,908,634],{"class":586},[477,910,911],{"class":843}," \u002F\u002F [{path: ['total'], expected: 'number'}]\n",[502,913,914],{},[435,915,916],{"href":199},"How validation works →",[430,918,920,924,1014],{"className":919},[791],[793,921,923],{"id":922},"standard-schema","Standard Schema",[565,925,927],{"className":567,"code":926,"language":569,"meta":413,"style":413},"const orderSchema = createStandardSchema\u003COrder>();\n\n\u002F\u002F a Standard Schema v1 object for any tool that supports the spec\norderSchema['~standard'].validate(order); \u002F\u002F {value: order}\norderSchema['~standard'].validate({}); \u002F\u002F {issues: [{message, path}, …]}\n",[516,928,929,951,955,960,986],{"__ignoreMap":413},[477,930,931,933,936,938,941,943,945,947,949],{"class":574,"line":575},[477,932,806],{"class":578},[477,934,935],{"class":691}," orderSchema ",[477,937,812],{"class":586},[477,939,940],{"class":815}," createStandardSchema",[477,942,819],{"class":586},[477,944,822],{"class":582},[477,946,825],{"class":586},[477,948,828],{"class":691},[477,950,612],{"class":586},[477,952,953],{"class":574,"line":593},[477,954,850],{"emptyLinePlaceholder":849},[477,956,957],{"class":574,"line":615},[477,958,959],{"class":843},"\u002F\u002F a Standard Schema v1 object for any tool that supports the spec\n",[477,961,962,965,967,969,971,974,976,979,981,983],{"class":574,"line":652},[477,963,964],{"class":691},"orderSchema[",[477,966,737],{"class":586},[477,968,786],{"class":733},[477,970,737],{"class":586},[477,972,973],{"class":691},"]",[477,975,606],{"class":586},[477,977,978],{"class":815},"validate",[477,980,838],{"class":691},[477,982,634],{"class":586},[477,984,985],{"class":843}," \u002F\u002F {value: order}\n",[477,987,988,990,992,994,996,998,1000,1002,1004,1007,1009,1011],{"class":574,"line":697},[477,989,964],{"class":691},[477,991,737],{"class":586},[477,993,786],{"class":733},[477,995,737],{"class":586},[477,997,973],{"class":691},[477,999,606],{"class":586},[477,1001,978],{"class":815},[477,1003,880],{"class":691},[477,1005,1006],{"class":586},"{}",[477,1008,906],{"class":691},[477,1010,634],{"class":586},[477,1012,1013],{"class":843}," \u002F\u002F {issues: [{message, path}, …]}\n",[502,1015,1016],{},[435,1017,1019],{"href":1018},"\u002Fruntypes\u002Fguide\u002Fvalidation#standard-schema-support","One spec, every framework →",[430,1021,1023,1038,1327,1651],{"className":1022},[767],[430,1024,1026,1030,1035],{"className":1025},[771],[497,1027,1029],{"id":1028},"json-round-trip","JSON round trip",[502,1031,1032],{},[422,1033,1034],{},"No hand written coercion, no transforms to keep in sync. It also makes RPC calls in JavaScript just work.",[502,1036,1037],{},"Your type compiles into two functions, one that writes JSON and one that reads it back. Date, URL, bigint, Set, Temporal and more come back as real values.",[430,1039,1041,1044],{"className":1040},[791],[793,1042,163],{"id":1043},"runtypes",[565,1045,1047],{"className":567,"code":1046,"language":569,"meta":413,"style":413},"type Session = {\n  user: string;\n  expiresAt: Date;\n  roles: Set\u003Cstring>;\n};\n\nconst toJson = createJsonEncoderFn\u003CSession>();\nconst fromJson = createJsonDecoderFn\u003CSession>();\n\nconst wire = toJson({\n  user: 'ada',\n  expiresAt: new Date(),\n  roles: new Set(['admin']),\n})!;\nconst back = fromJson(wire);\n\nconst expiresAt: Date = back.expiresAt; \u002F\u002F a real Date again\nconst roles: Set\u003Cstring> = back.roles; \u002F\u002F a real Set again\n",[516,1048,1049,1060,1071,1082,1100,1104,1108,1131,1153,1158,1176,1193,1209,1235,1245,1263,1268,1295],{"__ignoreMap":413},[477,1050,1051,1053,1056,1058],{"class":574,"line":575},[477,1052,579],{"class":578},[477,1054,1055],{"class":582}," Session",[477,1057,587],{"class":586},[477,1059,590],{"class":586},[477,1061,1062,1065,1067,1069],{"class":574,"line":593},[477,1063,1064],{"class":596},"  user",[477,1066,600],{"class":586},[477,1068,631],{"class":582},[477,1070,612],{"class":586},[477,1072,1073,1076,1078,1080],{"class":574,"line":615},[477,1074,1075],{"class":596},"  expiresAt",[477,1077,600],{"class":586},[477,1079,717],{"class":582},[477,1081,612],{"class":586},[477,1083,1084,1087,1089,1092,1094,1097],{"class":574,"line":652},[477,1085,1086],{"class":596},"  roles",[477,1088,600],{"class":586},[477,1090,1091],{"class":582}," Set",[477,1093,819],{"class":586},[477,1095,1096],{"class":582},"string",[477,1098,1099],{"class":586},">;\n",[477,1101,1102],{"class":574,"line":697},[477,1103,649],{"class":586},[477,1105,1106],{"class":574,"line":709},[477,1107,850],{"emptyLinePlaceholder":849},[477,1109,1110,1112,1115,1117,1120,1122,1125,1127,1129],{"class":574,"line":722},[477,1111,806],{"class":578},[477,1113,1114],{"class":691}," toJson ",[477,1116,812],{"class":586},[477,1118,1119],{"class":815}," createJsonEncoderFn",[477,1121,819],{"class":586},[477,1123,1124],{"class":582},"Session",[477,1126,825],{"class":586},[477,1128,828],{"class":691},[477,1130,612],{"class":586},[477,1132,1133,1135,1138,1140,1143,1145,1147,1149,1151],{"class":574,"line":761},[477,1134,806],{"class":578},[477,1136,1137],{"class":691}," fromJson ",[477,1139,812],{"class":586},[477,1141,1142],{"class":815}," createJsonDecoderFn",[477,1144,819],{"class":586},[477,1146,1124],{"class":582},[477,1148,825],{"class":586},[477,1150,828],{"class":691},[477,1152,612],{"class":586},[477,1154,1156],{"class":574,"line":1155},9,[477,1157,850],{"emptyLinePlaceholder":849},[477,1159,1161,1163,1166,1168,1171,1173],{"class":574,"line":1160},10,[477,1162,806],{"class":578},[477,1164,1165],{"class":691}," wire ",[477,1167,812],{"class":586},[477,1169,1170],{"class":815}," toJson",[477,1172,880],{"class":691},[477,1174,1175],{"class":586},"{\n",[477,1177,1179,1181,1183,1185,1188,1190],{"class":574,"line":1178},11,[477,1180,1064],{"class":596},[477,1182,600],{"class":586},[477,1184,730],{"class":586},[477,1186,1187],{"class":733},"ada",[477,1189,737],{"class":586},[477,1191,1192],{"class":586},",\n",[477,1194,1196,1198,1200,1203,1205,1207],{"class":574,"line":1195},12,[477,1197,1075],{"class":596},[477,1199,600],{"class":586},[477,1201,1202],{"class":586}," new",[477,1204,717],{"class":815},[477,1206,828],{"class":691},[477,1208,1192],{"class":586},[477,1210,1212,1214,1216,1218,1220,1223,1225,1228,1230,1233],{"class":574,"line":1211},13,[477,1213,1086],{"class":596},[477,1215,600],{"class":586},[477,1217,1202],{"class":586},[477,1219,1091],{"class":815},[477,1221,1222],{"class":691},"([",[477,1224,737],{"class":586},[477,1226,1227],{"class":733},"admin",[477,1229,737],{"class":586},[477,1231,1232],{"class":691},"])",[477,1234,1192],{"class":586},[477,1236,1238,1240,1242],{"class":574,"line":1237},14,[477,1239,688],{"class":586},[477,1241,906],{"class":691},[477,1243,1244],{"class":586},"!;\n",[477,1246,1248,1250,1253,1255,1258,1261],{"class":574,"line":1247},15,[477,1249,806],{"class":578},[477,1251,1252],{"class":691}," back ",[477,1254,812],{"class":586},[477,1256,1257],{"class":815}," fromJson",[477,1259,1260],{"class":691},"(wire)",[477,1262,612],{"class":586},[477,1264,1266],{"class":574,"line":1265},16,[477,1267,850],{"emptyLinePlaceholder":849},[477,1269,1271,1273,1276,1278,1280,1282,1285,1287,1290,1292],{"class":574,"line":1270},17,[477,1272,806],{"class":578},[477,1274,1275],{"class":691}," expiresAt",[477,1277,600],{"class":586},[477,1279,717],{"class":582},[477,1281,587],{"class":586},[477,1283,1284],{"class":691}," back",[477,1286,606],{"class":586},[477,1288,1289],{"class":691},"expiresAt",[477,1291,634],{"class":586},[477,1293,1294],{"class":843}," \u002F\u002F a real Date again\n",[477,1296,1298,1300,1303,1305,1307,1309,1311,1313,1315,1317,1319,1322,1324],{"class":574,"line":1297},18,[477,1299,806],{"class":578},[477,1301,1302],{"class":691}," roles",[477,1304,600],{"class":586},[477,1306,1091],{"class":582},[477,1308,819],{"class":586},[477,1310,1096],{"class":582},[477,1312,825],{"class":586},[477,1314,587],{"class":586},[477,1316,1284],{"class":691},[477,1318,606],{"class":586},[477,1320,1321],{"class":691},"roles",[477,1323,634],{"class":586},[477,1325,1326],{"class":843}," \u002F\u002F a real Set again\n",[430,1328,1330,1334],{"className":1329},[791],[793,1331,1333],{"id":1332},"zod-hand-maintained-coercion-and-transform","Zod (hand maintained coercion and transform)",[565,1335,1337],{"className":567,"code":1336,"language":569,"meta":413,"style":413},"const sessionSchema = z.object({\n  user: z.string(),\n  \u002F\u002F manually revive the Date\n  expiresAt: z.coerce.date(),\n  \u002F\u002F manual Set revive\n  roles: z.array(z.string()).transform((a) => new Set(a)), \n});\n\n\u002F\u002F encoding is also yours: JSON.stringify writes a Set as {}\nconst toJson = (session: Session) =>\n  JSON.stringify({...session, roles: [...session.roles]});\n\nconst wire = toJson({user: 'ada', expiresAt: new Date(), roles: new Set(['admin'])});\nconst back = sessionSchema.parse(JSON.parse(wire));\n\n\u002F\u002F nothing checks toJson and sessionSchema agree:\n\u002F\u002F Devs must manually keep the two directions in sync\n",[516,1338,1339,1360,1376,1381,1403,1408,1460,1468,1472,1477,1500,1541,1545,1609,1637,1641,1646],{"__ignoreMap":413},[477,1340,1341,1343,1346,1348,1351,1353,1356,1358],{"class":574,"line":575},[477,1342,806],{"class":578},[477,1344,1345],{"class":691}," sessionSchema ",[477,1347,812],{"class":586},[477,1349,1350],{"class":691}," z",[477,1352,606],{"class":586},[477,1354,1355],{"class":815},"object",[477,1357,880],{"class":691},[477,1359,1175],{"class":586},[477,1361,1362,1364,1366,1368,1370,1372,1374],{"class":574,"line":593},[477,1363,1064],{"class":596},[477,1365,600],{"class":586},[477,1367,1350],{"class":691},[477,1369,606],{"class":586},[477,1371,1096],{"class":815},[477,1373,828],{"class":691},[477,1375,1192],{"class":586},[477,1377,1378],{"class":574,"line":615},[477,1379,1380],{"class":843},"  \u002F\u002F manually revive the Date\n",[477,1382,1383,1385,1387,1389,1391,1394,1396,1399,1401],{"class":574,"line":652},[477,1384,1075],{"class":596},[477,1386,600],{"class":586},[477,1388,1350],{"class":691},[477,1390,606],{"class":586},[477,1392,1393],{"class":691},"coerce",[477,1395,606],{"class":586},[477,1397,1398],{"class":815},"date",[477,1400,828],{"class":691},[477,1402,1192],{"class":586},[477,1404,1405],{"class":574,"line":697},[477,1406,1407],{"class":843},"  \u002F\u002F manual Set revive\n",[477,1409,1410,1412,1414,1416,1418,1421,1424,1426,1428,1431,1433,1436,1438,1440,1443,1445,1448,1450,1452,1455,1457],{"class":574,"line":709},[477,1411,1086],{"class":596},[477,1413,600],{"class":586},[477,1415,1350],{"class":691},[477,1417,606],{"class":586},[477,1419,1420],{"class":815},"array",[477,1422,1423],{"class":691},"(z",[477,1425,606],{"class":586},[477,1427,1096],{"class":815},[477,1429,1430],{"class":691},"())",[477,1432,606],{"class":586},[477,1434,1435],{"class":815},"transform",[477,1437,880],{"class":691},[477,1439,880],{"class":586},[477,1441,435],{"class":1442},"sHdIc",[477,1444,906],{"class":586},[477,1446,1447],{"class":578}," =>",[477,1449,1202],{"class":586},[477,1451,1091],{"class":815},[477,1453,1454],{"class":691},"(a))",[477,1456,889],{"class":586},[477,1458,1459],{"class":691}," \n",[477,1461,1462,1464,1466],{"class":574,"line":722},[477,1463,688],{"class":586},[477,1465,906],{"class":691},[477,1467,612],{"class":586},[477,1469,1470],{"class":574,"line":761},[477,1471,850],{"emptyLinePlaceholder":849},[477,1473,1474],{"class":574,"line":1155},[477,1475,1476],{"class":843},"\u002F\u002F encoding is also yours: JSON.stringify writes a Set as {}\n",[477,1478,1479,1481,1483,1485,1488,1491,1493,1495,1497],{"class":574,"line":1160},[477,1480,806],{"class":578},[477,1482,1114],{"class":691},[477,1484,812],{"class":586},[477,1486,1487],{"class":586}," (",[477,1489,1490],{"class":1442},"session",[477,1492,600],{"class":586},[477,1494,1055],{"class":582},[477,1496,906],{"class":586},[477,1498,1499],{"class":578}," =>\n",[477,1501,1502,1505,1507,1510,1512,1514,1516,1518,1520,1522,1525,1528,1530,1532,1535,1537,1539],{"class":574,"line":1178},[477,1503,1504],{"class":691},"  JSON",[477,1506,606],{"class":586},[477,1508,1509],{"class":815},"stringify",[477,1511,880],{"class":691},[477,1513,883],{"class":586},[477,1515,1490],{"class":691},[477,1517,889],{"class":586},[477,1519,1302],{"class":596},[477,1521,600],{"class":586},[477,1523,1524],{"class":691}," [",[477,1526,1527],{"class":586},"...",[477,1529,1490],{"class":691},[477,1531,606],{"class":586},[477,1533,1534],{"class":691},"roles]",[477,1536,688],{"class":586},[477,1538,906],{"class":691},[477,1540,612],{"class":586},[477,1542,1543],{"class":574,"line":1195},[477,1544,850],{"emptyLinePlaceholder":849},[477,1546,1547,1549,1551,1553,1555,1557,1560,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607],{"class":574,"line":1211},[477,1548,806],{"class":578},[477,1550,1165],{"class":691},[477,1552,812],{"class":586},[477,1554,1170],{"class":815},[477,1556,880],{"class":691},[477,1558,1559],{"class":586},"{",[477,1561,1562],{"class":596},"user",[477,1564,600],{"class":586},[477,1566,730],{"class":586},[477,1568,1187],{"class":733},[477,1570,737],{"class":586},[477,1572,889],{"class":586},[477,1574,1275],{"class":596},[477,1576,600],{"class":586},[477,1578,1202],{"class":586},[477,1580,717],{"class":815},[477,1582,828],{"class":691},[477,1584,889],{"class":586},[477,1586,1302],{"class":596},[477,1588,600],{"class":586},[477,1590,1202],{"class":586},[477,1592,1091],{"class":815},[477,1594,1222],{"class":691},[477,1596,737],{"class":586},[477,1598,1227],{"class":733},[477,1600,737],{"class":586},[477,1602,1232],{"class":691},[477,1604,688],{"class":586},[477,1606,906],{"class":691},[477,1608,612],{"class":586},[477,1610,1611,1613,1615,1617,1620,1622,1625,1628,1630,1632,1635],{"class":574,"line":1237},[477,1612,806],{"class":578},[477,1614,1252],{"class":691},[477,1616,812],{"class":586},[477,1618,1619],{"class":691}," sessionSchema",[477,1621,606],{"class":586},[477,1623,1624],{"class":815},"parse",[477,1626,1627],{"class":691},"(JSON",[477,1629,606],{"class":586},[477,1631,1624],{"class":815},[477,1633,1634],{"class":691},"(wire))",[477,1636,612],{"class":586},[477,1638,1639],{"class":574,"line":1247},[477,1640,850],{"emptyLinePlaceholder":849},[477,1642,1643],{"class":574,"line":1265},[477,1644,1645],{"class":843},"\u002F\u002F nothing checks toJson and sessionSchema agree:\n",[477,1647,1648],{"class":574,"line":1270},[477,1649,1650],{"class":843},"\u002F\u002F Devs must manually keep the two directions in sync\n",[502,1652,1653],{},[435,1654,1655],{"href":202},"JSON that keeps your types →",[430,1657,1660],{"className":1658},[767,1659],"rt-section-titles",[430,1661,1663,1667,1670,1716],{"className":1662},[771],[497,1664,1666],{"id":1665},"mocking-that-conforms-to-your-types","Mocking that conforms to your types",[502,1668,1669],{},"Sample data generated from your type, so every value has the right shape. Great for tests, demos and seeding a database.",[565,1671,1673],{"className":567,"code":1672,"language":569,"meta":413,"style":413},"const mockOrder = createMockDataFn\u003COrder>();\nconst fake = mockOrder(); \u002F\u002F a valid, randomized Order for your tests\n",[516,1674,1675,1697],{"__ignoreMap":413},[477,1676,1677,1679,1682,1684,1687,1689,1691,1693,1695],{"class":574,"line":575},[477,1678,806],{"class":578},[477,1680,1681],{"class":691}," mockOrder ",[477,1683,812],{"class":586},[477,1685,1686],{"class":815}," createMockDataFn",[477,1688,819],{"class":586},[477,1690,822],{"class":582},[477,1692,825],{"class":586},[477,1694,828],{"class":691},[477,1696,612],{"class":586},[477,1698,1699,1701,1704,1706,1709,1711,1713],{"class":574,"line":593},[477,1700,806],{"class":578},[477,1702,1703],{"class":691}," fake ",[477,1705,812],{"class":586},[477,1707,1708],{"class":815}," mockOrder",[477,1710,828],{"class":691},[477,1712,634],{"class":586},[477,1714,1715],{"class":843}," \u002F\u002F a valid, randomized Order for your tests\n",[502,1717,1718],{},[435,1719,1720],{"href":206},"Mock data from your types →",[470,1722,1723,1730],{},[411,1724,1725,1729],{"v-slot:title":413},[477,1726,1728],{"className":1727},[480],"Two ways to describe a shape,"," one source of truth.",[411,1731,1732,1747,2370],{"v-slot:body":413},[502,1733,1734,1735,1738,1739,1742,1743,1746],{},"We support ",[422,1736,1737],{},"native TypeScript types"," (fastest, zero ceremony) ",[422,1740,1741],{},"or"," the ",[516,1744,1745],{},"RT.*"," type builders if you like the Zod \u002F TypeBox feel. Both compile to the exact same validator, so pick whichever you fancy and mix them in the same file. And when you only take the type back out of a builder, the schema itself adds nothing to your bundle.",[430,1748,1751,2039],{"className":1749},[1750],"rt-define-cols",[1752,1753,1754],"code-group",{},[565,1755,1758],{"className":567,"code":1756,"filename":1757,"language":569,"meta":413,"style":413},"import type * as TF from '@mionjs\u002Frun-types\u002Fformats';\nimport {createValidateFn} from '@mionjs\u002Frun-types';\n\ntype User = {\n  id: number;\n  name: string;\n  email: TF.Email;\n  roles: ('admin' | 'user')[];\n};\n\n\u002F\u002F a specialized validator, generated at build time\nconst isUser = createValidateFn\u003CUser>();\n\nisUser({id: 1, name: 'Ada', email: 'ada@example.com', roles: ['admin']}); \u002F\u002F true\nisUser({id: '1', name: 'Ada'}); \u002F\u002F false\n","Type Definition",[516,1759,1760,1790,1813,1817,1828,1838,1849,1864,1891,1895,1899,1904,1926,1930,1999],{"__ignoreMap":413},[477,1761,1762,1766,1769,1772,1775,1778,1781,1783,1786,1788],{"class":574,"line":575},[477,1763,1765],{"class":1764},"s7zQu","import",[477,1767,1768],{"class":1764}," type",[477,1770,1771],{"class":586}," *",[477,1773,1774],{"class":1764}," as",[477,1776,1777],{"class":691}," TF ",[477,1779,1780],{"class":1764},"from",[477,1782,730],{"class":586},[477,1784,1785],{"class":733},"@mionjs\u002Frun-types\u002Fformats",[477,1787,737],{"class":586},[477,1789,612],{"class":586},[477,1791,1792,1794,1796,1799,1801,1804,1806,1809,1811],{"class":574,"line":593},[477,1793,1765],{"class":1764},[477,1795,623],{"class":586},[477,1797,1798],{"class":691},"createValidateFn",[477,1800,688],{"class":586},[477,1802,1803],{"class":1764}," from",[477,1805,730],{"class":586},[477,1807,1808],{"class":733},"@mionjs\u002Frun-types",[477,1810,737],{"class":586},[477,1812,612],{"class":586},[477,1814,1815],{"class":574,"line":615},[477,1816,850],{"emptyLinePlaceholder":849},[477,1818,1819,1821,1824,1826],{"class":574,"line":652},[477,1820,579],{"class":578},[477,1822,1823],{"class":582}," User",[477,1825,587],{"class":586},[477,1827,590],{"class":586},[477,1829,1830,1832,1834,1836],{"class":574,"line":697},[477,1831,597],{"class":596},[477,1833,600],{"class":586},[477,1835,676],{"class":582},[477,1837,612],{"class":586},[477,1839,1840,1843,1845,1847],{"class":574,"line":709},[477,1841,1842],{"class":596},"  name",[477,1844,600],{"class":586},[477,1846,631],{"class":582},[477,1848,612],{"class":586},[477,1850,1851,1854,1856,1858,1860,1862],{"class":574,"line":722},[477,1852,1853],{"class":596},"  email",[477,1855,600],{"class":586},[477,1857,603],{"class":582},[477,1859,606],{"class":586},[477,1861,646],{"class":582},[477,1863,612],{"class":586},[477,1865,1866,1868,1870,1872,1874,1876,1878,1880,1882,1884,1886,1889],{"class":574,"line":761},[477,1867,1086],{"class":596},[477,1869,600],{"class":586},[477,1871,1487],{"class":691},[477,1873,737],{"class":586},[477,1875,1227],{"class":733},[477,1877,737],{"class":586},[477,1879,740],{"class":586},[477,1881,730],{"class":586},[477,1883,1562],{"class":733},[477,1885,737],{"class":586},[477,1887,1888],{"class":691},")[]",[477,1890,612],{"class":586},[477,1892,1893],{"class":574,"line":1155},[477,1894,649],{"class":586},[477,1896,1897],{"class":574,"line":1160},[477,1898,850],{"emptyLinePlaceholder":849},[477,1900,1901],{"class":574,"line":1178},[477,1902,1903],{"class":843},"\u002F\u002F a specialized validator, generated at build time\n",[477,1905,1906,1908,1911,1913,1915,1917,1920,1922,1924],{"class":574,"line":1195},[477,1907,806],{"class":578},[477,1909,1910],{"class":691}," isUser ",[477,1912,812],{"class":586},[477,1914,816],{"class":815},[477,1916,819],{"class":586},[477,1918,1919],{"class":582},"User",[477,1921,825],{"class":586},[477,1923,828],{"class":691},[477,1925,612],{"class":586},[477,1927,1928],{"class":574,"line":1211},[477,1929,850],{"emptyLinePlaceholder":849},[477,1931,1932,1935,1937,1939,1942,1944,1948,1950,1953,1955,1957,1960,1962,1964,1966,1968,1970,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997],{"class":574,"line":1237},[477,1933,1934],{"class":815},"isUser",[477,1936,880],{"class":691},[477,1938,1559],{"class":586},[477,1940,1941],{"class":596},"id",[477,1943,600],{"class":586},[477,1945,1947],{"class":1946},"sbssI"," 1",[477,1949,889],{"class":586},[477,1951,1952],{"class":596}," name",[477,1954,600],{"class":586},[477,1956,730],{"class":586},[477,1958,1959],{"class":733},"Ada",[477,1961,737],{"class":586},[477,1963,889],{"class":586},[477,1965,637],{"class":596},[477,1967,600],{"class":586},[477,1969,730],{"class":586},[477,1971,1972],{"class":733},"ada@example.com",[477,1974,737],{"class":586},[477,1976,889],{"class":586},[477,1978,1302],{"class":596},[477,1980,600],{"class":586},[477,1982,1524],{"class":691},[477,1984,737],{"class":586},[477,1986,1227],{"class":733},[477,1988,737],{"class":586},[477,1990,973],{"class":691},[477,1992,688],{"class":586},[477,1994,906],{"class":691},[477,1996,634],{"class":586},[477,1998,844],{"class":843},[477,2000,2001,2003,2005,2007,2009,2011,2013,2016,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036],{"class":574,"line":1247},[477,2002,1934],{"class":815},[477,2004,880],{"class":691},[477,2006,1559],{"class":586},[477,2008,1941],{"class":596},[477,2010,600],{"class":586},[477,2012,730],{"class":586},[477,2014,2015],{"class":733},"1",[477,2017,737],{"class":586},[477,2019,889],{"class":586},[477,2021,1952],{"class":596},[477,2023,600],{"class":586},[477,2025,730],{"class":586},[477,2027,1959],{"class":733},[477,2029,737],{"class":586},[477,2031,688],{"class":586},[477,2033,906],{"class":691},[477,2035,634],{"class":586},[477,2037,2038],{"class":843}," \u002F\u002F false\n",[1752,2040,2041],{},[565,2042,2045],{"className":567,"code":2043,"filename":2044,"language":569,"meta":413,"style":413},"import * as TF from '@mionjs\u002Frun-types\u002Fformats';\nimport {createValidateFn, type InferType} from '@mionjs\u002Frun-types';\nimport * as RT from '@mionjs\u002Frun-types\u002Fbuilders';\n\nconst userRunType = RT.object({\n  id: TF.number(),\n  name: TF.string(),\n  email: TF.email(),\n  roles: RT.array(RT.union([RT.literal('admin'), RT.literal('user')])),\n});\n\n\u002F\u002F take the type back out, then generate from it as usual\ntype User = InferType\u003Ctypeof userRunType>;\nconst isUser = createValidateFn\u003CUser>();\n\nisUser({id: 1, name: 'Ada', email: 'ada@example.com', roles: ['admin']}); \u002F\u002F true\n","Type Builder",[516,2046,2047,2067,2094,2116,2120,2140,2157,2173,2190,2249,2257,2261,2266,2284,2304,2308],{"__ignoreMap":413},[477,2048,2049,2051,2053,2055,2057,2059,2061,2063,2065],{"class":574,"line":575},[477,2050,1765],{"class":1764},[477,2052,1771],{"class":586},[477,2054,1774],{"class":1764},[477,2056,1777],{"class":691},[477,2058,1780],{"class":1764},[477,2060,730],{"class":586},[477,2062,1785],{"class":733},[477,2064,737],{"class":586},[477,2066,612],{"class":586},[477,2068,2069,2071,2073,2075,2077,2079,2082,2084,2086,2088,2090,2092],{"class":574,"line":593},[477,2070,1765],{"class":1764},[477,2072,623],{"class":586},[477,2074,1798],{"class":691},[477,2076,889],{"class":586},[477,2078,1768],{"class":1764},[477,2080,2081],{"class":691}," InferType",[477,2083,688],{"class":586},[477,2085,1803],{"class":1764},[477,2087,730],{"class":586},[477,2089,1808],{"class":733},[477,2091,737],{"class":586},[477,2093,612],{"class":586},[477,2095,2096,2098,2100,2102,2105,2107,2109,2112,2114],{"class":574,"line":615},[477,2097,1765],{"class":1764},[477,2099,1771],{"class":586},[477,2101,1774],{"class":1764},[477,2103,2104],{"class":691}," RT ",[477,2106,1780],{"class":1764},[477,2108,730],{"class":586},[477,2110,2111],{"class":733},"@mionjs\u002Frun-types\u002Fbuilders",[477,2113,737],{"class":586},[477,2115,612],{"class":586},[477,2117,2118],{"class":574,"line":652},[477,2119,850],{"emptyLinePlaceholder":849},[477,2121,2122,2124,2127,2129,2132,2134,2136,2138],{"class":574,"line":697},[477,2123,806],{"class":578},[477,2125,2126],{"class":691}," userRunType ",[477,2128,812],{"class":586},[477,2130,2131],{"class":691}," RT",[477,2133,606],{"class":586},[477,2135,1355],{"class":815},[477,2137,880],{"class":691},[477,2139,1175],{"class":586},[477,2141,2142,2144,2146,2148,2150,2153,2155],{"class":574,"line":709},[477,2143,597],{"class":596},[477,2145,600],{"class":586},[477,2147,603],{"class":691},[477,2149,606],{"class":586},[477,2151,2152],{"class":815},"number",[477,2154,828],{"class":691},[477,2156,1192],{"class":586},[477,2158,2159,2161,2163,2165,2167,2169,2171],{"class":574,"line":722},[477,2160,1842],{"class":596},[477,2162,600],{"class":586},[477,2164,603],{"class":691},[477,2166,606],{"class":586},[477,2168,1096],{"class":815},[477,2170,828],{"class":691},[477,2172,1192],{"class":586},[477,2174,2175,2177,2179,2181,2183,2186,2188],{"class":574,"line":761},[477,2176,1853],{"class":596},[477,2178,600],{"class":586},[477,2180,603],{"class":691},[477,2182,606],{"class":586},[477,2184,2185],{"class":815},"email",[477,2187,828],{"class":691},[477,2189,1192],{"class":586},[477,2191,2192,2194,2196,2198,2200,2202,2205,2207,2210,2213,2215,2218,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2242,2244,2247],{"class":574,"line":1155},[477,2193,1086],{"class":596},[477,2195,600],{"class":586},[477,2197,2131],{"class":691},[477,2199,606],{"class":586},[477,2201,1420],{"class":815},[477,2203,2204],{"class":691},"(RT",[477,2206,606],{"class":586},[477,2208,2209],{"class":815},"union",[477,2211,2212],{"class":691},"([RT",[477,2214,606],{"class":586},[477,2216,2217],{"class":815},"literal",[477,2219,880],{"class":691},[477,2221,737],{"class":586},[477,2223,1227],{"class":733},[477,2225,737],{"class":586},[477,2227,906],{"class":691},[477,2229,889],{"class":586},[477,2231,2131],{"class":691},[477,2233,606],{"class":586},[477,2235,2217],{"class":815},[477,2237,880],{"class":691},[477,2239,737],{"class":586},[477,2241,1562],{"class":733},[477,2243,737],{"class":586},[477,2245,2246],{"class":691},")]))",[477,2248,1192],{"class":586},[477,2250,2251,2253,2255],{"class":574,"line":1160},[477,2252,688],{"class":586},[477,2254,906],{"class":691},[477,2256,612],{"class":586},[477,2258,2259],{"class":574,"line":1178},[477,2260,850],{"emptyLinePlaceholder":849},[477,2262,2263],{"class":574,"line":1195},[477,2264,2265],{"class":843},"\u002F\u002F take the type back out, then generate from it as usual\n",[477,2267,2268,2270,2272,2274,2276,2279,2282],{"class":574,"line":1211},[477,2269,579],{"class":578},[477,2271,1823],{"class":582},[477,2273,587],{"class":586},[477,2275,2081],{"class":582},[477,2277,2278],{"class":586},"\u003Ctypeof",[477,2280,2281],{"class":691}," userRunType",[477,2283,1099],{"class":586},[477,2285,2286,2288,2290,2292,2294,2296,2298,2300,2302],{"class":574,"line":1237},[477,2287,806],{"class":578},[477,2289,1910],{"class":691},[477,2291,812],{"class":586},[477,2293,816],{"class":815},[477,2295,819],{"class":586},[477,2297,1919],{"class":582},[477,2299,825],{"class":586},[477,2301,828],{"class":691},[477,2303,612],{"class":586},[477,2305,2306],{"class":574,"line":1247},[477,2307,850],{"emptyLinePlaceholder":849},[477,2309,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366,2368],{"class":574,"line":1265},[477,2311,1934],{"class":815},[477,2313,880],{"class":691},[477,2315,1559],{"class":586},[477,2317,1941],{"class":596},[477,2319,600],{"class":586},[477,2321,1947],{"class":1946},[477,2323,889],{"class":586},[477,2325,1952],{"class":596},[477,2327,600],{"class":586},[477,2329,730],{"class":586},[477,2331,1959],{"class":733},[477,2333,737],{"class":586},[477,2335,889],{"class":586},[477,2337,637],{"class":596},[477,2339,600],{"class":586},[477,2341,730],{"class":586},[477,2343,1972],{"class":733},[477,2345,737],{"class":586},[477,2347,889],{"class":586},[477,2349,1302],{"class":596},[477,2351,600],{"class":586},[477,2353,1524],{"class":691},[477,2355,737],{"class":586},[477,2357,1227],{"class":733},[477,2359,737],{"class":586},[477,2361,973],{"class":691},[477,2363,688],{"class":586},[477,2365,906],{"class":691},[477,2367,634],{"class":586},[477,2369,844],{"class":843},[502,2371,2372],{},[435,2373,2374],{"href":187},"Types and type builders, side by side →",[470,2376,2377,2384],{},[411,2378,2379,2383],{"v-slot:title":413},[477,2380,2382],{"className":2381},[480],"Formats"," baked into your types",[411,2385,2386],{"v-slot:body":413},[430,2387,2390,2447,2672],{"className":2388},[2389],"rt-formats-cols",[430,2391,2393,2397,2418,2421,2442],{"className":2392},[494],[497,2394,2396],{"id":2395},"typeformats","TypeFormats",[502,2398,2399,2400,2402,2404,2405,2404,2408,2404,2411,2404,2414,2417],{},"Ensure type safety with formats like:",[426,2401],{},[516,2403,2185],{},", ",[516,2406,2407],{},"uuidv4",[516,2409,2410],{},"ipv4",[516,2412,2413],{},"int32",[516,2415,2416],{},"positive"," and more.",[502,2419,2420],{},"The validator checks its exact shape, not just its kind. No regex to wire up, no separate schema to keep in sync.",[430,2422,2425,2429],{"className":2423},[2424],"rt-formats-tile",[793,2426,2428],{"id":2427},"temporal-support","Temporal Support",[502,2430,2431,2432,2404,2435,2404,2438,2441],{},"Full TC39 Temporal (",[516,2433,2434],{},"PlainDate",[516,2436,2437],{},"ZonedDateTime",[516,2439,2440],{},"Duration"," and the rest), with validation and the JSON round trip like any built-in.",[502,2443,2444],{},[435,2445,2446],{"href":227},"Every format you can use →",[1752,2448,2449],{},[565,2450,2452],{"className":567,"code":2451,"filename":1757,"language":569,"meta":413,"style":413},"import type * as TF from '@mionjs\u002Frun-types\u002Fformats';\nimport {createValidateFn} from '@mionjs\u002Frun-types';\n\n\u002F\u002F a format brands a string or number\ntype Account = {\n  id: TF.UUIDv4;\n  email: TF.Email;\n  ip: TF.IPv4;\n  logins: TF.PositiveInt;\n};\n\nconst isAccount = createValidateFn\u003CAccount>();\nisAccount({id: 'nope', email: 'ada@x.com', ip: '10.0.0.1', logins: 3}); \u002F\u002F false, id isn't a uuid\n",[516,2453,2454,2476,2496,2500,2505,2516,2530,2544,2560,2576,2580,2584,2606],{"__ignoreMap":413},[477,2455,2456,2458,2460,2462,2464,2466,2468,2470,2472,2474],{"class":574,"line":575},[477,2457,1765],{"class":1764},[477,2459,1768],{"class":1764},[477,2461,1771],{"class":586},[477,2463,1774],{"class":1764},[477,2465,1777],{"class":691},[477,2467,1780],{"class":1764},[477,2469,730],{"class":586},[477,2471,1785],{"class":733},[477,2473,737],{"class":586},[477,2475,612],{"class":586},[477,2477,2478,2480,2482,2484,2486,2488,2490,2492,2494],{"class":574,"line":593},[477,2479,1765],{"class":1764},[477,2481,623],{"class":586},[477,2483,1798],{"class":691},[477,2485,688],{"class":586},[477,2487,1803],{"class":1764},[477,2489,730],{"class":586},[477,2491,1808],{"class":733},[477,2493,737],{"class":586},[477,2495,612],{"class":586},[477,2497,2498],{"class":574,"line":615},[477,2499,850],{"emptyLinePlaceholder":849},[477,2501,2502],{"class":574,"line":652},[477,2503,2504],{"class":843},"\u002F\u002F a format brands a string or number\n",[477,2506,2507,2509,2512,2514],{"class":574,"line":697},[477,2508,579],{"class":578},[477,2510,2511],{"class":582}," Account",[477,2513,587],{"class":586},[477,2515,590],{"class":586},[477,2517,2518,2520,2522,2524,2526,2528],{"class":574,"line":709},[477,2519,597],{"class":596},[477,2521,600],{"class":586},[477,2523,603],{"class":582},[477,2525,606],{"class":586},[477,2527,609],{"class":582},[477,2529,612],{"class":586},[477,2531,2532,2534,2536,2538,2540,2542],{"class":574,"line":722},[477,2533,1853],{"class":596},[477,2535,600],{"class":586},[477,2537,603],{"class":582},[477,2539,606],{"class":586},[477,2541,646],{"class":582},[477,2543,612],{"class":586},[477,2545,2546,2549,2551,2553,2555,2558],{"class":574,"line":761},[477,2547,2548],{"class":596},"  ip",[477,2550,600],{"class":586},[477,2552,603],{"class":582},[477,2554,606],{"class":586},[477,2556,2557],{"class":582},"IPv4",[477,2559,612],{"class":586},[477,2561,2562,2565,2567,2569,2571,2574],{"class":574,"line":1155},[477,2563,2564],{"class":596},"  logins",[477,2566,600],{"class":586},[477,2568,603],{"class":582},[477,2570,606],{"class":586},[477,2572,2573],{"class":582},"PositiveInt",[477,2575,612],{"class":586},[477,2577,2578],{"class":574,"line":1160},[477,2579,649],{"class":586},[477,2581,2582],{"class":574,"line":1178},[477,2583,850],{"emptyLinePlaceholder":849},[477,2585,2586,2588,2591,2593,2595,2597,2600,2602,2604],{"class":574,"line":1195},[477,2587,806],{"class":578},[477,2589,2590],{"class":691}," isAccount ",[477,2592,812],{"class":586},[477,2594,816],{"class":815},[477,2596,819],{"class":586},[477,2598,2599],{"class":582},"Account",[477,2601,825],{"class":586},[477,2603,828],{"class":691},[477,2605,612],{"class":586},[477,2607,2608,2611,2613,2615,2617,2619,2621,2624,2626,2628,2630,2632,2634,2637,2639,2641,2644,2646,2648,2651,2653,2655,2658,2660,2663,2665,2667,2669],{"class":574,"line":1211},[477,2609,2610],{"class":815},"isAccount",[477,2612,880],{"class":691},[477,2614,1559],{"class":586},[477,2616,1941],{"class":596},[477,2618,600],{"class":586},[477,2620,730],{"class":586},[477,2622,2623],{"class":733},"nope",[477,2625,737],{"class":586},[477,2627,889],{"class":586},[477,2629,637],{"class":596},[477,2631,600],{"class":586},[477,2633,730],{"class":586},[477,2635,2636],{"class":733},"ada@x.com",[477,2638,737],{"class":586},[477,2640,889],{"class":586},[477,2642,2643],{"class":596}," ip",[477,2645,600],{"class":586},[477,2647,730],{"class":586},[477,2649,2650],{"class":733},"10.0.0.1",[477,2652,737],{"class":586},[477,2654,889],{"class":586},[477,2656,2657],{"class":596}," logins",[477,2659,600],{"class":586},[477,2661,2662],{"class":1946}," 3",[477,2664,688],{"class":586},[477,2666,906],{"class":691},[477,2668,634],{"class":586},[477,2670,2671],{"class":843}," \u002F\u002F false, id isn't a uuid\n",[1752,2673,2674],{},[565,2675,2677],{"className":567,"code":2676,"filename":2044,"language":569,"meta":413,"style":413},"import * as TF from '@mionjs\u002Frun-types\u002Fformats';\nimport {createValidateFn, type InferType} from '@mionjs\u002Frun-types';\nimport * as RT from '@mionjs\u002Frun-types\u002Fbuilders';\n\nconst account = RT.object({\n  id: TF.uuidv4(),\n  email: TF.email(),\n  ip: TF.ipv4(),\n  logins: TF.positiveInt(),\n});\n\n\u002F\u002F Recover the TypeScript type from the run-type.\ntype Account = InferType\u003Ctypeof account>;\n\nconst isAccount = createValidateFn(account);\n",[516,2678,2679,2699,2725,2745,2749,2768,2784,2800,2816,2833,2841,2845,2850,2867,2871],{"__ignoreMap":413},[477,2680,2681,2683,2685,2687,2689,2691,2693,2695,2697],{"class":574,"line":575},[477,2682,1765],{"class":1764},[477,2684,1771],{"class":586},[477,2686,1774],{"class":1764},[477,2688,1777],{"class":691},[477,2690,1780],{"class":1764},[477,2692,730],{"class":586},[477,2694,1785],{"class":733},[477,2696,737],{"class":586},[477,2698,612],{"class":586},[477,2700,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723],{"class":574,"line":593},[477,2702,1765],{"class":1764},[477,2704,623],{"class":586},[477,2706,1798],{"class":691},[477,2708,889],{"class":586},[477,2710,1768],{"class":1764},[477,2712,2081],{"class":691},[477,2714,688],{"class":586},[477,2716,1803],{"class":1764},[477,2718,730],{"class":586},[477,2720,1808],{"class":733},[477,2722,737],{"class":586},[477,2724,612],{"class":586},[477,2726,2727,2729,2731,2733,2735,2737,2739,2741,2743],{"class":574,"line":615},[477,2728,1765],{"class":1764},[477,2730,1771],{"class":586},[477,2732,1774],{"class":1764},[477,2734,2104],{"class":691},[477,2736,1780],{"class":1764},[477,2738,730],{"class":586},[477,2740,2111],{"class":733},[477,2742,737],{"class":586},[477,2744,612],{"class":586},[477,2746,2747],{"class":574,"line":652},[477,2748,850],{"emptyLinePlaceholder":849},[477,2750,2751,2753,2756,2758,2760,2762,2764,2766],{"class":574,"line":697},[477,2752,806],{"class":578},[477,2754,2755],{"class":691}," account ",[477,2757,812],{"class":586},[477,2759,2131],{"class":691},[477,2761,606],{"class":586},[477,2763,1355],{"class":815},[477,2765,880],{"class":691},[477,2767,1175],{"class":586},[477,2769,2770,2772,2774,2776,2778,2780,2782],{"class":574,"line":709},[477,2771,597],{"class":596},[477,2773,600],{"class":586},[477,2775,603],{"class":691},[477,2777,606],{"class":586},[477,2779,2407],{"class":815},[477,2781,828],{"class":691},[477,2783,1192],{"class":586},[477,2785,2786,2788,2790,2792,2794,2796,2798],{"class":574,"line":722},[477,2787,1853],{"class":596},[477,2789,600],{"class":586},[477,2791,603],{"class":691},[477,2793,606],{"class":586},[477,2795,2185],{"class":815},[477,2797,828],{"class":691},[477,2799,1192],{"class":586},[477,2801,2802,2804,2806,2808,2810,2812,2814],{"class":574,"line":761},[477,2803,2548],{"class":596},[477,2805,600],{"class":586},[477,2807,603],{"class":691},[477,2809,606],{"class":586},[477,2811,2410],{"class":815},[477,2813,828],{"class":691},[477,2815,1192],{"class":586},[477,2817,2818,2820,2822,2824,2826,2829,2831],{"class":574,"line":1155},[477,2819,2564],{"class":596},[477,2821,600],{"class":586},[477,2823,603],{"class":691},[477,2825,606],{"class":586},[477,2827,2828],{"class":815},"positiveInt",[477,2830,828],{"class":691},[477,2832,1192],{"class":586},[477,2834,2835,2837,2839],{"class":574,"line":1160},[477,2836,688],{"class":586},[477,2838,906],{"class":691},[477,2840,612],{"class":586},[477,2842,2843],{"class":574,"line":1178},[477,2844,850],{"emptyLinePlaceholder":849},[477,2846,2847],{"class":574,"line":1195},[477,2848,2849],{"class":843},"\u002F\u002F Recover the TypeScript type from the run-type.\n",[477,2851,2852,2854,2856,2858,2860,2862,2865],{"class":574,"line":1211},[477,2853,579],{"class":578},[477,2855,2511],{"class":582},[477,2857,587],{"class":586},[477,2859,2081],{"class":582},[477,2861,2278],{"class":586},[477,2863,2864],{"class":691}," account",[477,2866,1099],{"class":586},[477,2868,2869],{"class":574,"line":1237},[477,2870,850],{"emptyLinePlaceholder":849},[477,2872,2873,2875,2877,2879,2881,2884],{"class":574,"line":1247},[477,2874,806],{"class":578},[477,2876,2590],{"class":691},[477,2878,812],{"class":586},[477,2880,816],{"class":815},[477,2882,2883],{"class":691},"(account)",[477,2885,612],{"class":586},[470,2887,2888,2895],{},[411,2889,2890,2894],{"v-slot:title":413},[477,2891,2893],{"className":2892},[480],"Your types,"," available at runtime",[411,2896,2897,3145],{"v-slot:body":413},[430,2898,2902,3128],{"className":2899},[2900,2901],"rt-feature-row","rt-stack-reverse",[565,2903,2905],{"className":567,"code":2904,"language":569,"meta":413,"style":413},"import {RunTypeKind} from '@mionjs\u002Frun-types';\nimport {getRunType} from '@mionjs\u002Frun-types';\n\ntype Order = {\n  id: string;\n  total: number;\n  items: {sku: string; qty: number}[];\n};\n\n\u002F\u002F the type graph TypeScript erased\nconst orderRT = getRunType\u003COrder>();\n\nconsole.log(orderRT.kind === RunTypeKind.objectLiteral); \u002F\u002F true\nconsole.log(orderRT.children?.map((prop) => prop.name)); \u002F\u002F ['id', 'total', 'items']\n",[516,2906,2907,2928,2949,2953,2963,2973,2983,3011,3015,3019,3024,3046,3050,3083],{"__ignoreMap":413},[477,2908,2909,2911,2913,2916,2918,2920,2922,2924,2926],{"class":574,"line":575},[477,2910,1765],{"class":1764},[477,2912,623],{"class":586},[477,2914,2915],{"class":691},"RunTypeKind",[477,2917,688],{"class":586},[477,2919,1803],{"class":1764},[477,2921,730],{"class":586},[477,2923,1808],{"class":733},[477,2925,737],{"class":586},[477,2927,612],{"class":586},[477,2929,2930,2932,2934,2937,2939,2941,2943,2945,2947],{"class":574,"line":593},[477,2931,1765],{"class":1764},[477,2933,623],{"class":586},[477,2935,2936],{"class":691},"getRunType",[477,2938,688],{"class":586},[477,2940,1803],{"class":1764},[477,2942,730],{"class":586},[477,2944,1808],{"class":733},[477,2946,737],{"class":586},[477,2948,612],{"class":586},[477,2950,2951],{"class":574,"line":615},[477,2952,850],{"emptyLinePlaceholder":849},[477,2954,2955,2957,2959,2961],{"class":574,"line":652},[477,2956,579],{"class":578},[477,2958,583],{"class":582},[477,2960,587],{"class":586},[477,2962,590],{"class":586},[477,2964,2965,2967,2969,2971],{"class":574,"line":697},[477,2966,597],{"class":596},[477,2968,600],{"class":586},[477,2970,631],{"class":582},[477,2972,612],{"class":586},[477,2974,2975,2977,2979,2981],{"class":574,"line":709},[477,2976,700],{"class":596},[477,2978,600],{"class":586},[477,2980,676],{"class":582},[477,2982,612],{"class":586},[477,2984,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009],{"class":574,"line":722},[477,2986,655],{"class":596},[477,2988,600],{"class":586},[477,2990,623],{"class":586},[477,2992,662],{"class":596},[477,2994,600],{"class":586},[477,2996,631],{"class":582},[477,2998,634],{"class":586},[477,3000,671],{"class":596},[477,3002,600],{"class":586},[477,3004,676],{"class":582},[477,3006,688],{"class":586},[477,3008,692],{"class":691},[477,3010,612],{"class":586},[477,3012,3013],{"class":574,"line":761},[477,3014,649],{"class":586},[477,3016,3017],{"class":574,"line":1155},[477,3018,850],{"emptyLinePlaceholder":849},[477,3020,3021],{"class":574,"line":1160},[477,3022,3023],{"class":843},"\u002F\u002F the type graph TypeScript erased\n",[477,3025,3026,3028,3031,3033,3036,3038,3040,3042,3044],{"class":574,"line":1178},[477,3027,806],{"class":578},[477,3029,3030],{"class":691}," orderRT ",[477,3032,812],{"class":586},[477,3034,3035],{"class":815}," getRunType",[477,3037,819],{"class":586},[477,3039,822],{"class":582},[477,3041,825],{"class":586},[477,3043,828],{"class":691},[477,3045,612],{"class":586},[477,3047,3048],{"class":574,"line":1195},[477,3049,850],{"emptyLinePlaceholder":849},[477,3051,3052,3055,3057,3060,3063,3065,3068,3071,3074,3076,3079,3081],{"class":574,"line":1211},[477,3053,3054],{"class":691},"console",[477,3056,606],{"class":586},[477,3058,3059],{"class":815},"log",[477,3061,3062],{"class":691},"(orderRT",[477,3064,606],{"class":586},[477,3066,3067],{"class":691},"kind ",[477,3069,3070],{"class":586},"===",[477,3072,3073],{"class":691}," RunTypeKind",[477,3075,606],{"class":586},[477,3077,3078],{"class":691},"objectLiteral)",[477,3080,634],{"class":586},[477,3082,844],{"class":843},[477,3084,3085,3087,3089,3091,3093,3095,3098,3101,3104,3106,3108,3111,3113,3115,3118,3120,3123,3125],{"class":574,"line":1237},[477,3086,3054],{"class":691},[477,3088,606],{"class":586},[477,3090,3059],{"class":815},[477,3092,3062],{"class":691},[477,3094,606],{"class":586},[477,3096,3097],{"class":691},"children",[477,3099,3100],{"class":586},"?.",[477,3102,3103],{"class":815},"map",[477,3105,880],{"class":691},[477,3107,880],{"class":586},[477,3109,3110],{"class":1442},"prop",[477,3112,906],{"class":586},[477,3114,1447],{"class":578},[477,3116,3117],{"class":691}," prop",[477,3119,606],{"class":586},[477,3121,3122],{"class":691},"name))",[477,3124,634],{"class":586},[477,3126,3127],{"class":843}," \u002F\u002F ['id', 'total', 'items']\n",[430,3129,3131,3135,3138,3140],{"className":3130},[494],[497,3132,3134],{"id":3133},"walk-your-types-structure","Walk your type's structure",[502,3136,3137],{},"Get back a RunType node you can walk, the same one the library uses internally: kind, property names, nested children, format annotations and more. Bring a type or infer it from a value, then read it however you need, to drive codegen, build forms, or power your own tooling.",[426,3139],{},[502,3141,3142],{},[435,3143,3144],{"href":196},"Reflection you can actually walk →",[430,3146,3148,3281],{"className":3147},[2900,2901],[565,3149,3151],{"className":567,"code":3150,"language":569,"meta":413,"style":413},"const order: Order = {id: 'A-1', total: 42, items: [{sku: 'WIDGET', qty: 2}]};\n\nconst orderRT = getRunType(order);\nconsole.log(orderRT.children?.map((prop) => prop.name)); \u002F\u002F ['id', 'total', 'items']\n",[516,3152,3153,3225,3229,3243],{"__ignoreMap":413},[477,3154,3155,3157,3160,3162,3164,3166,3168,3170,3172,3174,3177,3179,3181,3183,3185,3188,3190,3193,3195,3197,3199,3201,3203,3205,3208,3210,3212,3214,3216,3219,3221,3223],{"class":574,"line":575},[477,3156,806],{"class":578},[477,3158,3159],{"class":691}," order",[477,3161,600],{"class":586},[477,3163,583],{"class":582},[477,3165,587],{"class":586},[477,3167,623],{"class":586},[477,3169,1941],{"class":596},[477,3171,600],{"class":586},[477,3173,730],{"class":586},[477,3175,3176],{"class":733},"A-1",[477,3178,737],{"class":586},[477,3180,889],{"class":586},[477,3182,892],{"class":596},[477,3184,600],{"class":586},[477,3186,3187],{"class":1946}," 42",[477,3189,889],{"class":586},[477,3191,3192],{"class":596}," items",[477,3194,600],{"class":586},[477,3196,1524],{"class":691},[477,3198,1559],{"class":586},[477,3200,662],{"class":596},[477,3202,600],{"class":586},[477,3204,730],{"class":586},[477,3206,3207],{"class":733},"WIDGET",[477,3209,737],{"class":586},[477,3211,889],{"class":586},[477,3213,671],{"class":596},[477,3215,600],{"class":586},[477,3217,3218],{"class":1946}," 2",[477,3220,688],{"class":586},[477,3222,973],{"class":691},[477,3224,649],{"class":586},[477,3226,3227],{"class":574,"line":593},[477,3228,850],{"emptyLinePlaceholder":849},[477,3230,3231,3233,3235,3237,3239,3241],{"class":574,"line":615},[477,3232,806],{"class":578},[477,3234,3030],{"class":691},[477,3236,812],{"class":586},[477,3238,3035],{"class":815},[477,3240,838],{"class":691},[477,3242,612],{"class":586},[477,3244,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279],{"class":574,"line":652},[477,3246,3054],{"class":691},[477,3248,606],{"class":586},[477,3250,3059],{"class":815},[477,3252,3062],{"class":691},[477,3254,606],{"class":586},[477,3256,3097],{"class":691},[477,3258,3100],{"class":586},[477,3260,3103],{"class":815},[477,3262,880],{"class":691},[477,3264,880],{"class":586},[477,3266,3110],{"class":1442},[477,3268,906],{"class":586},[477,3270,1447],{"class":578},[477,3272,3117],{"class":691},[477,3274,606],{"class":586},[477,3276,3122],{"class":691},[477,3278,634],{"class":586},[477,3280,3127],{"class":843},[430,3282,3284,3288],{"className":3283},[494],[497,3285,3287],{"id":3286},"infer-types-from-values","Infer types from values",[502,3289,3290,3291,3293,3294,3297,3298,3301],{},"You don't have to write the type out. Hand ",[516,3292,2936],{}," any value and it reflects that value's static type, so ",[516,3295,3296],{},"getRunType(order)"," returns the same node as ",[516,3299,3300],{},"getRunType\u003COrder>()",". Use it when you already hold the data and just want its shape.",[470,3303,3304,3311],{},[411,3305,3306,3310],{"v-slot:title":413},[477,3307,3309],{"className":3308},[480],"High performance"," validation",[411,3312,3313],{"v-slot:body":413},[430,3314,3316,3320,3323,3326],{"className":3315},[494],[497,3317,3319],{"id":3318},"every-library-says-they-are-the-fastest-we-back-it-up","Every library says they are the fastest, we back it up!",[502,3321,3322],{},"Our performance matches and surpasses the fastest validators (AJV, TypeBox, Typia)\nand we have the most comprehensive benchmark suite to back it up.",[3324,3325],"home-bench-table",{"validation":774},[430,3327,3330],{"className":3328},[3329],"rt-feature-footer",[435,3331,3332],{"href":373},"See the full benchmarks results →",[470,3334,3335,3342],{},[411,3336,3337,3341],{"v-slot:title":413},[477,3338,3340],{"className":3339},[480],"Compile time"," code generation",[411,3343,3344],{"v-slot:body":413},[430,3345,3348,3366,3442,3553],{"className":3346},[3347],"rt-treeshake-cols",[430,3349,3351,3355,3358,3360],{"className":3350},[494],[497,3352,3354],{"id":3353},"ship-only-what-you-use","Ship only what you use",[502,3356,3357],{},"Generated code is demand-driven and every entry is its own module, so bundlers split and tree-shake natively. A file that only reflects an id ships zero validation code, and the Vite plugin adds zero runtime dependencies.",[426,3359],{},[502,3361,3362],{},[435,3363,3365],{"href":3364},"\u002Fruntypes\u002Fintroduction\u002Fbuilt-on-typescript-go#extending-typescript-go-without-modifying-it","How RunTypes extends typescript-go →",[1752,3367,3368],{},[565,3369,3372],{"className":567,"code":3370,"filename":3371,"language":569,"meta":413,"style":413},"type User = {\n  id: string;\n  name: string;\n  email: string;\n};\n\nconst isUser = createValidateFn\u003CUser>();\n","Source Code",[516,3373,3374,3384,3394,3404,3414,3418,3422],{"__ignoreMap":413},[477,3375,3376,3378,3380,3382],{"class":574,"line":575},[477,3377,579],{"class":578},[477,3379,1823],{"class":582},[477,3381,587],{"class":586},[477,3383,590],{"class":586},[477,3385,3386,3388,3390,3392],{"class":574,"line":593},[477,3387,597],{"class":596},[477,3389,600],{"class":586},[477,3391,631],{"class":582},[477,3393,612],{"class":586},[477,3395,3396,3398,3400,3402],{"class":574,"line":615},[477,3397,1842],{"class":596},[477,3399,600],{"class":586},[477,3401,631],{"class":582},[477,3403,612],{"class":586},[477,3405,3406,3408,3410,3412],{"class":574,"line":652},[477,3407,1853],{"class":596},[477,3409,600],{"class":586},[477,3411,631],{"class":582},[477,3413,612],{"class":586},[477,3415,3416],{"class":574,"line":697},[477,3417,649],{"class":586},[477,3419,3420],{"class":574,"line":709},[477,3421,850],{"emptyLinePlaceholder":849},[477,3423,3424,3426,3428,3430,3432,3434,3436,3438,3440],{"class":574,"line":722},[477,3425,806],{"class":578},[477,3427,1910],{"class":691},[477,3429,812],{"class":586},[477,3431,816],{"class":815},[477,3433,819],{"class":586},[477,3435,1919],{"class":582},[477,3437,825],{"class":586},[477,3439,828],{"class":691},[477,3441,612],{"class":586},[1752,3443,3444],{},[565,3445,3448],{"className":567,"code":3446,"filename":3447,"language":569,"meta":413,"style":413},"import {__rt_Eq2V_rN5ExvN} from '.\u002F.mion\u002Ftypes\u002FEq2V_rN5ExvN.js';\n\ntype User = {\n  id: string;\n  name: string;\n  email: string;\n};\n\nconst isUser = createValidateFn\u003CUser>(undefined, undefined, __rt_Eq2V_rN5ExvN);\n","Transformed",[516,3449,3450,3472,3476,3486,3496,3506,3516,3520,3524],{"__ignoreMap":413},[477,3451,3452,3454,3456,3459,3461,3463,3465,3468,3470],{"class":574,"line":575},[477,3453,1765],{"class":1764},[477,3455,623],{"class":586},[477,3457,3458],{"class":691},"__rt_Eq2V_rN5ExvN",[477,3460,688],{"class":586},[477,3462,1803],{"class":1764},[477,3464,730],{"class":586},[477,3466,3467],{"class":733},".\u002F.mion\u002Ftypes\u002FEq2V_rN5ExvN.js",[477,3469,737],{"class":586},[477,3471,612],{"class":586},[477,3473,3474],{"class":574,"line":593},[477,3475,850],{"emptyLinePlaceholder":849},[477,3477,3478,3480,3482,3484],{"class":574,"line":615},[477,3479,579],{"class":578},[477,3481,1823],{"class":582},[477,3483,587],{"class":586},[477,3485,590],{"class":586},[477,3487,3488,3490,3492,3494],{"class":574,"line":652},[477,3489,597],{"class":596},[477,3491,600],{"class":586},[477,3493,631],{"class":582},[477,3495,612],{"class":586},[477,3497,3498,3500,3502,3504],{"class":574,"line":697},[477,3499,1842],{"class":596},[477,3501,600],{"class":586},[477,3503,631],{"class":582},[477,3505,612],{"class":586},[477,3507,3508,3510,3512,3514],{"class":574,"line":709},[477,3509,1853],{"class":596},[477,3511,600],{"class":586},[477,3513,631],{"class":582},[477,3515,612],{"class":586},[477,3517,3518],{"class":574,"line":722},[477,3519,649],{"class":586},[477,3521,3522],{"class":574,"line":761},[477,3523,850],{"emptyLinePlaceholder":849},[477,3525,3526,3528,3530,3532,3534,3536,3538,3540,3542,3545,3548,3551],{"class":574,"line":1155},[477,3527,806],{"class":578},[477,3529,1910],{"class":691},[477,3531,812],{"class":586},[477,3533,816],{"class":815},[477,3535,819],{"class":586},[477,3537,1919],{"class":582},[477,3539,825],{"class":586},[477,3541,880],{"class":691},[477,3543,3544],{"class":586},"undefined,",[477,3546,3547],{"class":586}," undefined,",[477,3549,3550],{"class":691}," __rt_Eq2V_rN5ExvN)",[477,3552,612],{"class":586},[1752,3554,3555],{},[565,3556,3561],{"className":3557,"code":3558,"filename":3559,"language":3560,"meta":413,"style":413},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F shown as a function for clarity, the real emit is a positional\n\u002F\u002F tuple: faster to initialise, fewer bytes on the wire\nexport function __rt_Eq2V_rN5ExvN(value) {\n  return typeof value === \"object\" && value !== null &&\n  typeof value.id === \"string\" &&\n  typeof value.name === \"string\" &&\n  typeof value.email === \"string\";\n}\n",".mion\u002Ftypes\u002FEq2V_rN5ExvN.js","js",[516,3562,3563,3568,3573,3593,3629,3650,3670,3690],{"__ignoreMap":413},[477,3564,3565],{"class":574,"line":575},[477,3566,3567],{"class":843},"\u002F\u002F shown as a function for clarity, the real emit is a positional\n",[477,3569,3570],{"class":574,"line":593},[477,3571,3572],{"class":843},"\u002F\u002F tuple: faster to initialise, fewer bytes on the wire\n",[477,3574,3575,3578,3581,3584,3586,3589,3591],{"class":574,"line":615},[477,3576,3577],{"class":1764},"export",[477,3579,3580],{"class":578}," function",[477,3582,3583],{"class":815}," __rt_Eq2V_rN5ExvN",[477,3585,880],{"class":586},[477,3587,3588],{"class":1442},"value",[477,3590,906],{"class":586},[477,3592,590],{"class":586},[477,3594,3595,3598,3601,3604,3607,3610,3612,3615,3618,3620,3623,3626],{"class":574,"line":652},[477,3596,3597],{"class":1764},"  return",[477,3599,3600],{"class":586}," typeof",[477,3602,3603],{"class":691}," value",[477,3605,3606],{"class":586}," ===",[477,3608,3609],{"class":586}," \"",[477,3611,1355],{"class":733},[477,3613,3614],{"class":586},"\"",[477,3616,3617],{"class":586}," &&",[477,3619,3603],{"class":691},[477,3621,3622],{"class":586}," !==",[477,3624,3625],{"class":586}," null",[477,3627,3628],{"class":586}," &&\n",[477,3630,3631,3634,3636,3638,3640,3642,3644,3646,3648],{"class":574,"line":697},[477,3632,3633],{"class":586},"  typeof",[477,3635,3603],{"class":691},[477,3637,606],{"class":586},[477,3639,1941],{"class":691},[477,3641,3606],{"class":586},[477,3643,3609],{"class":586},[477,3645,1096],{"class":733},[477,3647,3614],{"class":586},[477,3649,3628],{"class":586},[477,3651,3652,3654,3656,3658,3660,3662,3664,3666,3668],{"class":574,"line":709},[477,3653,3633],{"class":586},[477,3655,3603],{"class":691},[477,3657,606],{"class":586},[477,3659,626],{"class":691},[477,3661,3606],{"class":586},[477,3663,3609],{"class":586},[477,3665,1096],{"class":733},[477,3667,3614],{"class":586},[477,3669,3628],{"class":586},[477,3671,3672,3674,3676,3678,3680,3682,3684,3686,3688],{"class":574,"line":722},[477,3673,3633],{"class":586},[477,3675,3603],{"class":691},[477,3677,606],{"class":586},[477,3679,2185],{"class":691},[477,3681,3606],{"class":586},[477,3683,3609],{"class":586},[477,3685,1096],{"class":733},[477,3687,3614],{"class":586},[477,3689,612],{"class":586},[477,3691,3692],{"class":574,"line":761},[477,3693,3694],{"class":586},"}\n",[502,3696,3697],{},[477,3698,3700],{"style":3699},"padding-bottom: 6rem;"," ",[3702,3703,3704],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}","Validation, JSON round trip, mocking and reflection, generated from your TypeScript types.","md",null,{"toc":24,"pageClass":3709},"home-page",{"title":3711,"description":3705},"RunTypes: Bringing TypeScript to runtime","02.runtypes\u002F01.introduction\u002F01.about-mion-runtypes","oJhZOnLR014jmAwR2pAw0FcxFsg0QwzJNLCeuo31ftg",1793324360567]