[{"data":1,"prerenderedAt":249},["ShallowReactive",2],{"navigation_docs":3,"-benchmarks-correctness":132,"-benchmarks-correctness-surround":244},[4,27,69,91,127],{"title":5,"icon":6,"redirect":7,"path":8,"stem":9,"children":10,"page":26},"Introduction","i-lucide-rocket","\u002Fintroduction\u002Fabout-ts-runtypes","\u002Fintroduction","1.introduction",[11,14,18,22],{"title":12,"path":7,"stem":13},"About RunTypes","1.introduction\u002F1.about-ts-runtypes",{"title":15,"path":16,"stem":17},"Built on typescript-go","\u002Fintroduction\u002Fbuilt-on-typescript-go","1.introduction\u002F2.built-on-typescript-go",{"title":19,"path":20,"stem":21},"Quick Start","\u002Fintroduction\u002Fquick-start","1.introduction\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Configuration","\u002Fintroduction\u002Fconfiguration","1.introduction\u002F4.configuration",false,{"title":28,"icon":29,"redirect":30,"path":31,"stem":32,"children":33,"page":26},"Guide","i-lucide-book-open","\u002Fguide\u002Ftypes-vs-schemas","\u002Fguide","2.guide",[34,37,41,45,49,53,57,61,65],{"title":35,"path":30,"stem":36},"Types vs Schemas","2.guide\u002F1.types-vs-schemas",{"title":38,"path":39,"stem":40},"Type Formats","\u002Fguide\u002Ftype-formats","2.guide\u002F2.type-formats",{"title":42,"path":43,"stem":44},"Reflection","\u002Fguide\u002Freflection","2.guide\u002F3.reflection",{"title":46,"path":47,"stem":48},"Serialization","\u002Fguide\u002Fserialization","2.guide\u002F4.serialization",{"title":50,"path":51,"stem":52},"Validation","\u002Fguide\u002Fvalidation","2.guide\u002F5.validation",{"title":54,"path":55,"stem":56},"Data Mocking","\u002Fguide\u002Fmocking","2.guide\u002F6.mocking",{"title":58,"path":59,"stem":60},"Compiler Markers","\u002Fguide\u002Fcompiler-markers","2.guide\u002F7.compiler-markers",{"title":62,"path":63,"stem":64},"Pure Functions","\u002Fguide\u002Fpure-functions","2.guide\u002F8.pure-functions",{"title":66,"path":67,"stem":68},"Linting","\u002Fguide\u002Flinting","2.guide\u002F9.linting",{"title":70,"icon":71,"redirect":72,"path":73,"stem":74,"children":75,"page":26},"AI Integration","i-lucide-sparkles","\u002Fai-integration\u002Fworkflow-and-commands","\u002Fai-integration","3.ai-integration",[76,79,83,87],{"title":77,"path":72,"stem":78},"AI Workflow","3.ai-integration\u002F1.workflow-and-commands",{"title":80,"path":81,"stem":82},"FriendlyText","\u002Fai-integration\u002Ffriendly-type","3.ai-integration\u002F2.friendly-type",{"title":84,"path":85,"stem":86},"MockData","\u002Fai-integration\u002Fmock-data","3.ai-integration\u002F3.mock-data",{"title":88,"path":89,"stem":90},"Translations (i18n)","\u002Fai-integration\u002Fi18n","3.ai-integration\u002F4.i18n",{"title":92,"icon":93,"redirect":94,"path":95,"stem":96,"children":97,"page":26},"Benchmarks","i-lucide-gauge","\u002Fbenchmarks\u002Fvalidation","\u002Fbenchmarks","7.benchmarks",[98,100,104,108,112,115,119,123],{"title":50,"path":94,"stem":99},"7.benchmarks\u002F1.validation",{"title":101,"path":102,"stem":103},"Validation Formats","\u002Fbenchmarks\u002Fvalidation-formats","7.benchmarks\u002F2.validation-formats",{"title":105,"path":106,"stem":107},"Validation Errors","\u002Fbenchmarks\u002Fgetvalidationerrors","7.benchmarks\u002F3.getvalidationerrors",{"title":109,"path":110,"stem":111},"Validation Error Formats","\u002Fbenchmarks\u002Fgetvalidationerrors-formats","7.benchmarks\u002F4.getvalidationerrors-formats",{"title":46,"path":113,"stem":114},"\u002Fbenchmarks\u002Fserialization","7.benchmarks\u002F5.serialization",{"title":116,"path":117,"stem":118},"Serialization Formats","\u002Fbenchmarks\u002Fserialization-formats","7.benchmarks\u002F6.serialization-formats",{"title":120,"path":121,"stem":122},"Compile Time","\u002Fbenchmarks\u002Fcompiletime","7.benchmarks\u002F7.compiletime",{"title":124,"path":125,"stem":126},"Correctness","\u002Fbenchmarks\u002Fcorrectness","7.benchmarks\u002F8.correctness",{"title":128,"path":129,"stem":130,"icon":131},"Diagnostics","\u002Fdiagnostics","8.diagnostics","i-lucide-triangle-alert",{"id":133,"title":124,"body":134,"description":237,"extension":238,"links":239,"meta":240,"navigation":241,"path":125,"seo":242,"stem":126,"__hash__":243},"docs\u002F7.benchmarks\u002F8.correctness.md",{"type":135,"value":136},"minimark",[137,141,145,150,153,205,217,231],[138,139,140],"p",{},"Speed only matters if the answer is right. Before comparing how fast each library runs, this page checks whether they even agree on what counts as a valid value.",[142,143,144],"tip",{},"Across the whole suite, RunTypes and zod agree on every sample, with zero divergences. If you validate with zod today, RunTypes accepts and rejects exactly the same values, so on correctness it is a one-to-one replacement.",[146,147,149],"h2",{"id":148},"what-the-differences-mean","What the differences mean",[138,151,152],{},"Every difference below is a library being more permissive than RunTypes, never the other way around, and on each one RunTypes sits with at least one other mainstream library.",[154,155,156,173,187,199],"ul",{},[157,158,159,163,164,168,169,172],"li",{},[160,161,162],"strong",{},"Non-finite numbers."," ajv and typia accept ",[165,166,167],"code",{},"NaN"," and ",[165,170,171],{},"Infinity","; RunTypes rejects them (with zod and TypeBox), since none can be written to JSON.",[157,174,175,178,179,182,183,186],{},[160,176,177],{},"Invalid dates."," typia accepts a ",[165,180,181],{},"Date"," built from bad input like ",[165,184,185],{},"new Date('invalid')","; RunTypes checks the date is real, as do zod and TypeBox.",[157,188,189,192,193,168,195,198],{},[160,190,191],{},"Plain objects."," For an all-optional object, TypeBox accepts class instances like ",[165,194,181],{},[165,196,197],{},"Map","; RunTypes requires a plain object, matching zod.",[157,200,201,204],{},[160,202,203],{},"Formats."," Each library ships its own email, UUID and IP patterns, so a string one accepts another may reject. The shared data uses RunTypes' patterns.",[206,207,208,209,216],"note",{},"The full cross-library methodology and findings live in the ",[210,211,215],"a",{"href":212,"rel":213},"https:\u002F\u002Fgithub.com\u002Fmionkit\u002Fts-run-types\u002Fblob\u002Fmain\u002Fdocs\u002Fcross-library-validation-alignment-report.md",[214],"nofollow","alignment report"," in the repository.",[138,218,219,220,223,224,227,228,230],{},"Every library is given the exact same test data RunTypes is built against, and each cell counts the samples that library treats differently. A value of ",[165,221,222],{},"0"," means the library agrees with RunTypes everywhere on that case. A higher number means the library accepts values that RunTypes rejects. ",[165,225,226],{},"n-a"," means the library does not support that case at all. RunTypes is the reference column, so it is always ",[165,229,222],{},". Hover any row to see the data tested and each library's validator.",[232,233],"bench-table",{"bench":234,"colorize":235,"tint-misalign":236},"alignment","false","true","Whether each library agrees with RunTypes about which values are valid.","md",null,{"toc":26},true,{"title":124,"description":237},"Ihg5J_6kjzmqf0OeQIsidlVE2yEAFZj5Y39PV0za28A",[245,247],{"title":120,"path":121,"stem":122,"description":246,"children":-1},"What RunTypes and typia cost to build, and what each type costs the TypeScript compiler.",{"title":128,"path":129,"stem":130,"description":248,"icon":131,"children":-1},"Every build-time diagnostic code, what it means, and how to act on it.",1785369665616]