[{"data":1,"prerenderedAt":2887},["ShallowReactive",2],{"navigation_docs":3,"-run-types-features":195,"-run-types-features-surround":2882},[4,27,61,75,100,126,147,177],{"title":5,"icon":6,"redirect":7,"path":8,"stem":9,"children":10,"page":26},"Introduction","icon-park-outline:home","\u002Fintroduction\u002Fabout-mion","\u002Fintroduction","1.introduction",[11,14,18,22],{"title":12,"path":7,"stem":13},"About mion","1.introduction\u002F1.about-mion",{"title":15,"path":16,"stem":17},"Quick Start","\u002Fintroduction\u002Fquick-start","1.introduction\u002F2.quick-start",{"title":19,"path":20,"stem":21},"Manual Install","\u002Fintroduction\u002Fmanual-install","1.introduction\u002F3.manual-install",{"title":23,"path":24,"stem":25},"What's Next","\u002Fintroduction\u002Fwhat-is-next","1.introduction\u002F4.what-is-next",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Server","icon-park-outline:server","\u002Fserver","20.server",[33,37,41,45,49,53,57],{"title":34,"path":35,"stem":36},"Router Overview","\u002Fserver\u002Foverview","20.server\u002F0.overview",{"title":38,"path":39,"stem":40},"Routes","\u002Fserver\u002Froutes","20.server\u002F1.routes",{"title":42,"path":43,"stem":44},"Middleware","\u002Fserver\u002Fmiddle-fns","20.server\u002F2.middle-fns",{"title":46,"path":47,"stem":48},"Request & Response","\u002Fserver\u002Frequest-and-response","20.server\u002F5.request-and-response",{"title":50,"path":51,"stem":52},"Error Handling","\u002Fserver\u002Ferror-handling","20.server\u002F6.error-handling",{"title":54,"path":55,"stem":56},"Validation","\u002Fserver\u002Fvalidation","20.server\u002F7.validation",{"title":58,"path":59,"stem":60},"Serialization","\u002Fserver\u002Fserialization","20.server\u002F8.serialization",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":26},"Drizzle ORM","i-lineicons-drizzle","\u002Fdrizzle-orm","21.drizzle-orm",[67,71],{"title":68,"path":69,"stem":70},"Drizzle Overview","\u002Fdrizzle-orm\u002Fdrizzle-overview","21.drizzle-orm\u002F0.drizzle-overview",{"title":72,"path":73,"stem":74},"Column Mapping","\u002Fdrizzle-orm\u002Fcolumn-mapping","21.drizzle-orm\u002F1.column-mapping",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":26},"Client","icon-park-outline:computer","\u002Fclient","3.client",[81,85,88,92,96],{"title":82,"path":83,"stem":84},"Client Overview","\u002Fclient\u002Fclient-overview","3.client\u002F0.client-overview",{"title":50,"path":86,"stem":87},"\u002Fclient\u002Ferror-handling","3.client\u002F1.error-handling",{"title":89,"path":90,"stem":91},"Validation Errors","\u002Fclient\u002Fvalidation-errors","3.client\u002F2.validation-errors",{"title":93,"path":94,"stem":95},"Routes Flow","\u002Fclient\u002Fclient-flow","3.client\u002F3.client-flow",{"title":97,"path":98,"stem":99},"Cancellation & Timeouts","\u002Fclient\u002Fcancellation-timeouts","3.client\u002F4.cancellation-timeouts",{"title":101,"icon":102,"redirect":103,"path":104,"stem":105,"children":106,"page":26},"RunTypes","i-lucide-scan-text","\u002Frun-types\u002Foverview","\u002Frun-types","4.run-types",[107,110,114,118,122],{"title":108,"path":103,"stem":109},"RunTypes Overview","4.run-types\u002F0.overview",{"title":111,"path":112,"stem":113},"Supported Types","\u002Frun-types\u002Ffeatures","4.run-types\u002F1.features",{"title":115,"path":116,"stem":117},"Type Formats","\u002Frun-types\u002Ftype-formats","4.run-types\u002F2.type-formats",{"title":119,"path":120,"stem":121},"Built-in Formats","\u002Frun-types\u002Fbuilt-in-formats","4.run-types\u002F3.built-in-formats",{"title":123,"path":124,"stem":125},"Caveats","\u002Frun-types\u002Fcaveats","4.run-types\u002F4.caveats",{"title":127,"path":128,"stem":129,"children":130,"page":26},"Devtools","\u002Fdevtools","5.devtools",[131,135,139,143],{"title":132,"path":133,"stem":134},"AOT Compilation","\u002Fdevtools\u002Faot-compilation","5.devtools\u002F0.aot-compilation",{"title":136,"path":137,"stem":138},"Pure Functions","\u002Fdevtools\u002Fpure-functions","5.devtools\u002F1.pure-functions",{"title":140,"path":141,"stem":142},"ESLint Rules","\u002Fdevtools\u002Feslint-rules","5.devtools\u002F2.eslint-rules",{"title":144,"path":145,"stem":146},"Vite Configuration","\u002Fdevtools\u002Fvite-config","5.devtools\u002F3.vite-config",{"title":148,"redirect":149,"icon":150,"path":151,"stem":152,"children":153,"page":26},"Platforms","\u002Fplatforms\u002Fnode-js","icon-park-outline:play","\u002Fplatforms","6.platforms",[154,157,161,165,169,173],{"title":155,"path":149,"stem":156},"Node.js","6.platforms\u002F1.node-js",{"title":158,"path":159,"stem":160},"Bun","\u002Fplatforms\u002Fbun","6.platforms\u002F2.bun",{"title":162,"path":163,"stem":164},"AWS Lambda","\u002Fplatforms\u002Faws-lambda","6.platforms\u002F3.aws-lambda",{"title":166,"path":167,"stem":168},"Google Cloud Functions","\u002Fplatforms\u002Fgoogle-cloud-functions","6.platforms\u002F4.google-cloud-functions",{"title":170,"path":171,"stem":172},"Cloudflare Workers","\u002Fplatforms\u002Fcloudflare","6.platforms\u002F5.cloudflare",{"title":174,"path":175,"stem":176},"Vercel","\u002Fplatforms\u002Fvercel","6.platforms\u002F6.vercel",{"title":178,"icon":179,"redirect":180,"path":181,"stem":182,"children":183,"page":26},"Benchmarks","icon-park-outline:chart-line","\u002Fbenchmarks\u002Fhello-world","\u002Fbenchmarks","7.benchmarks",[184,187,191],{"title":185,"path":180,"stem":186},"Hello World","7.benchmarks\u002F1.hello-world",{"title":188,"path":189,"stem":190},"Light Validation","\u002Fbenchmarks\u002Flight-validation","7.benchmarks\u002F2.light-validation",{"title":192,"path":193,"stem":194},"Heavy Validation","\u002Fbenchmarks\u002Fheavy-validation","7.benchmarks\u002F3.heavy-validation",{"id":196,"title":111,"body":197,"description":2876,"extension":2877,"links":2878,"meta":2879,"navigation":1411,"path":112,"seo":2880,"stem":113,"__hash__":2881},"docs\u002F4.run-types\u002F1.features.md",{"type":198,"value":199},"minimark",[200,212,217,1350,1354,1357,1506,1509,1514,1843,1845,1849,1853,1856,2012,2022,2026,2029,2168,2176,2180,2193,2199,2582,2588,2818,2821,2823,2827,2833,2852,2858,2869,2872],[201,202,203,207,208,211],"p",{},[204,205,206],"code",{},"@mionjs\u002Frun-types"," supports a comprehensive set of TypeScript types.",[209,210],"br",{},"\nThe long term goal is to fully support all typescript features for full compatibility.",[213,214,216],"h3",{"id":215},"type-support-comparison","Type Support Comparison",[218,219,220,249],"table",{},[221,222,223],"thead",{},[224,225,226,230,233,237,240,243,246],"tr",{},[227,228,229],"th",{},"Type Category",[227,231,232],{},"Type",[227,234,236],{"align":235},"center","run-types",[227,238,239],{"align":235},"Zod",[227,241,242],{"align":235},"Typia",[227,244,245],{"align":235},"AJV",[227,247,248],{"align":235},"TypeBox",[250,251,252,277,296,315,335,354,373,392,411,430,449,468,488,505,522,539,561,581,600,617,634,651,668,690,709,728,750,769,788,807,827,844,861,881,899,916,938,957,976,995,1014,1033,1052,1071,1090,1109,1132,1151,1170,1189,1210,1227,1244,1261,1281,1298,1315,1332],"tbody",{},[224,253,254,261,266,269,271,273,275],{},[255,256,257],"td",{},[258,259,260],"strong",{},"Primitives",[255,262,263],{},[204,264,265],{},"string",[255,267,268],{"align":235},"✅",[255,270,268],{"align":235},[255,272,268],{"align":235},[255,274,268],{"align":235},[255,276,268],{"align":235},[224,278,279,281,286,288,290,292,294],{},[255,280],{},[255,282,283],{},[204,284,285],{},"number",[255,287,268],{"align":235},[255,289,268],{"align":235},[255,291,268],{"align":235},[255,293,268],{"align":235},[255,295,268],{"align":235},[224,297,298,300,305,307,309,311,313],{},[255,299],{},[255,301,302],{},[204,303,304],{},"boolean",[255,306,268],{"align":235},[255,308,268],{"align":235},[255,310,268],{"align":235},[255,312,268],{"align":235},[255,314,268],{"align":235},[224,316,317,319,324,326,328,330,333],{},[255,318],{},[255,320,321],{},[204,322,323],{},"bigint",[255,325,268],{"align":235},[255,327,268],{"align":235},[255,329,268],{"align":235},[255,331,332],{"align":235},"❌",[255,334,268],{"align":235},[224,336,337,339,344,346,348,350,352],{},[255,338],{},[255,340,341],{},[204,342,343],{},"symbol",[255,345,268],{"align":235},[255,347,268],{"align":235},[255,349,268],{"align":235},[255,351,332],{"align":235},[255,353,268],{"align":235},[224,355,356,358,363,365,367,369,371],{},[255,357],{},[255,359,360],{},[204,361,362],{},"null",[255,364,268],{"align":235},[255,366,268],{"align":235},[255,368,268],{"align":235},[255,370,268],{"align":235},[255,372,268],{"align":235},[224,374,375,377,382,384,386,388,390],{},[255,376],{},[255,378,379],{},[204,380,381],{},"undefined",[255,383,268],{"align":235},[255,385,268],{"align":235},[255,387,268],{"align":235},[255,389,332],{"align":235},[255,391,268],{"align":235},[224,393,394,396,401,403,405,407,409],{},[255,395],{},[255,397,398],{},[204,399,400],{},"void",[255,402,268],{"align":235},[255,404,268],{"align":235},[255,406,268],{"align":235},[255,408,332],{"align":235},[255,410,268],{"align":235},[224,412,413,415,420,422,424,426,428],{},[255,414],{},[255,416,417],{},[204,418,419],{},"never",[255,421,268],{"align":235},[255,423,268],{"align":235},[255,425,268],{"align":235},[255,427,332],{"align":235},[255,429,268],{"align":235},[224,431,432,434,439,441,443,445,447],{},[255,433],{},[255,435,436],{},[204,437,438],{},"any",[255,440,268],{"align":235},[255,442,268],{"align":235},[255,444,268],{"align":235},[255,446,268],{"align":235},[255,448,268],{"align":235},[224,450,451,453,458,460,462,464,466],{},[255,452],{},[255,454,455],{},[204,456,457],{},"unknown",[255,459,268],{"align":235},[255,461,268],{"align":235},[255,463,268],{"align":235},[255,465,268],{"align":235},[255,467,268],{"align":235},[224,469,470,475,478,480,482,484,486],{},[255,471,472],{},[258,473,474],{},"Literals",[255,476,477],{},"String literals",[255,479,268],{"align":235},[255,481,268],{"align":235},[255,483,268],{"align":235},[255,485,268],{"align":235},[255,487,268],{"align":235},[224,489,490,492,495,497,499,501,503],{},[255,491],{},[255,493,494],{},"Number literals",[255,496,268],{"align":235},[255,498,268],{"align":235},[255,500,268],{"align":235},[255,502,268],{"align":235},[255,504,268],{"align":235},[224,506,507,509,512,514,516,518,520],{},[255,508],{},[255,510,511],{},"Boolean literals",[255,513,268],{"align":235},[255,515,268],{"align":235},[255,517,268],{"align":235},[255,519,268],{"align":235},[255,521,268],{"align":235},[224,523,524,526,529,531,533,535,537],{},[255,525],{},[255,527,528],{},"Template literals",[255,530,268],{"align":235},[255,532,332],{"align":235},[255,534,268],{"align":235},[255,536,332],{"align":235},[255,538,268],{"align":235},[224,540,541,546,551,553,555,557,559],{},[255,542,543],{},[258,544,545],{},"Objects",[255,547,548],{},[204,549,550],{},"interface",[255,552,268],{"align":235},[255,554,268],{"align":235},[255,556,268],{"align":235},[255,558,268],{"align":235},[255,560,268],{"align":235},[224,562,563,565,571,573,575,577,579],{},[255,564],{},[255,566,567,570],{},[204,568,569],{},"type"," aliases",[255,572,268],{"align":235},[255,574,268],{"align":235},[255,576,268],{"align":235},[255,578,268],{"align":235},[255,580,268],{"align":235},[224,582,583,585,590,592,594,596,598],{},[255,584],{},[255,586,587],{},[204,588,589],{},"class",[255,591,268],{"align":235},[255,593,332],{"align":235},[255,595,268],{"align":235},[255,597,332],{"align":235},[255,599,332],{"align":235},[224,601,602,604,607,609,611,613,615],{},[255,603],{},[255,605,606],{},"Nested objects",[255,608,268],{"align":235},[255,610,268],{"align":235},[255,612,268],{"align":235},[255,614,268],{"align":235},[255,616,268],{"align":235},[224,618,619,621,624,626,628,630,632],{},[255,620],{},[255,622,623],{},"Optional properties",[255,625,268],{"align":235},[255,627,268],{"align":235},[255,629,268],{"align":235},[255,631,268],{"align":235},[255,633,268],{"align":235},[224,635,636,638,641,643,645,647,649],{},[255,637],{},[255,639,640],{},"Readonly properties",[255,642,268],{"align":235},[255,644,268],{"align":235},[255,646,268],{"align":235},[255,648,332],{"align":235},[255,650,268],{"align":235},[224,652,653,655,658,660,662,664,666],{},[255,654],{},[255,656,657],{},"Index signatures",[255,659,268],{"align":235},[255,661,268],{"align":235},[255,663,268],{"align":235},[255,665,268],{"align":235},[255,667,268],{"align":235},[224,669,670,675,680,682,684,686,688],{},[255,671,672],{},[258,673,674],{},"Collections",[255,676,677],{},[204,678,679],{},"Array\u003CT>",[255,681,268],{"align":235},[255,683,268],{"align":235},[255,685,268],{"align":235},[255,687,268],{"align":235},[255,689,268],{"align":235},[224,691,692,694,699,701,703,705,707],{},[255,693],{},[255,695,696],{},[204,697,698],{},"Tuple",[255,700,268],{"align":235},[255,702,268],{"align":235},[255,704,268],{"align":235},[255,706,268],{"align":235},[255,708,268],{"align":235},[224,710,711,713,718,720,722,724,726],{},[255,712],{},[255,714,715],{},[204,716,717],{},"Record\u003CK, V>",[255,719,268],{"align":235},[255,721,268],{"align":235},[255,723,268],{"align":235},[255,725,268],{"align":235},[255,727,268],{"align":235},[224,729,730,735,740,742,744,746,748],{},[255,731,732],{},[258,733,734],{},"Native Objects",[255,736,737],{},[204,738,739],{},"Date",[255,741,268],{"align":235},[255,743,268],{"align":235},[255,745,268],{"align":235},[255,747,332],{"align":235},[255,749,268],{"align":235},[224,751,752,754,759,761,763,765,767],{},[255,753],{},[255,755,756],{},[204,757,758],{},"RegExp",[255,760,268],{"align":235},[255,762,332],{"align":235},[255,764,268],{"align":235},[255,766,332],{"align":235},[255,768,332],{"align":235},[224,770,771,773,778,780,782,784,786],{},[255,772],{},[255,774,775],{},[204,776,777],{},"Map\u003CK, V>",[255,779,268],{"align":235},[255,781,268],{"align":235},[255,783,268],{"align":235},[255,785,332],{"align":235},[255,787,332],{"align":235},[224,789,790,792,797,799,801,803,805],{},[255,791],{},[255,793,794],{},[204,795,796],{},"Set\u003CT>",[255,798,268],{"align":235},[255,800,268],{"align":235},[255,802,268],{"align":235},[255,804,332],{"align":235},[255,806,332],{"align":235},[224,808,809,814,817,819,821,823,825],{},[255,810,811],{},[258,812,813],{},"Enums",[255,815,816],{},"Numeric enums",[255,818,268],{"align":235},[255,820,268],{"align":235},[255,822,268],{"align":235},[255,824,332],{"align":235},[255,826,332],{"align":235},[224,828,829,831,834,836,838,840,842],{},[255,830],{},[255,832,833],{},"String enums",[255,835,268],{"align":235},[255,837,268],{"align":235},[255,839,268],{"align":235},[255,841,332],{"align":235},[255,843,332],{"align":235},[224,845,846,848,851,853,855,857,859],{},[255,847],{},[255,849,850],{},"Const enums",[255,852,268],{"align":235},[255,854,332],{"align":235},[255,856,268],{"align":235},[255,858,332],{"align":235},[255,860,332],{"align":235},[224,862,863,868,871,873,875,877,879],{},[255,864,865],{},[258,866,867],{},"Unions & Intersections",[255,869,870],{},"Union types",[255,872,268],{"align":235},[255,874,268],{"align":235},[255,876,268],{"align":235},[255,878,268],{"align":235},[255,880,268],{"align":235},[224,882,883,885,888,891,893,895,897],{},[255,884],{},[255,886,887],{},"Discriminated unions",[255,889,890],{"align":235},"🚀",[255,892,268],{"align":235},[255,894,268],{"align":235},[255,896,268],{"align":235},[255,898,268],{"align":235},[224,900,901,903,906,908,910,912,914],{},[255,902],{},[255,904,905],{},"Intersection types",[255,907,268],{"align":235},[255,909,268],{"align":235},[255,911,268],{"align":235},[255,913,268],{"align":235},[255,915,268],{"align":235},[224,917,918,923,928,930,932,934,936],{},[255,919,920],{},[258,921,922],{},"Utility Types",[255,924,925],{},[204,926,927],{},"Partial\u003CT>",[255,929,268],{"align":235},[255,931,268],{"align":235},[255,933,268],{"align":235},[255,935,332],{"align":235},[255,937,268],{"align":235},[224,939,940,942,947,949,951,953,955],{},[255,941],{},[255,943,944],{},[204,945,946],{},"Required\u003CT>",[255,948,268],{"align":235},[255,950,268],{"align":235},[255,952,268],{"align":235},[255,954,332],{"align":235},[255,956,268],{"align":235},[224,958,959,961,966,968,970,972,974],{},[255,960],{},[255,962,963],{},[204,964,965],{},"Pick\u003CT, K>",[255,967,268],{"align":235},[255,969,268],{"align":235},[255,971,268],{"align":235},[255,973,332],{"align":235},[255,975,268],{"align":235},[224,977,978,980,985,987,989,991,993],{},[255,979],{},[255,981,982],{},[204,983,984],{},"Omit\u003CT, K>",[255,986,268],{"align":235},[255,988,268],{"align":235},[255,990,268],{"align":235},[255,992,332],{"align":235},[255,994,268],{"align":235},[224,996,997,999,1004,1006,1008,1010,1012],{},[255,998],{},[255,1000,1001],{},[204,1002,1003],{},"Exclude\u003CT, U>",[255,1005,268],{"align":235},[255,1007,332],{"align":235},[255,1009,268],{"align":235},[255,1011,332],{"align":235},[255,1013,268],{"align":235},[224,1015,1016,1018,1023,1025,1027,1029,1031],{},[255,1017],{},[255,1019,1020],{},[204,1021,1022],{},"Extract\u003CT, U>",[255,1024,268],{"align":235},[255,1026,332],{"align":235},[255,1028,268],{"align":235},[255,1030,332],{"align":235},[255,1032,268],{"align":235},[224,1034,1035,1037,1042,1044,1046,1048,1050],{},[255,1036],{},[255,1038,1039],{},[204,1040,1041],{},"NonNullable\u003CT>",[255,1043,268],{"align":235},[255,1045,268],{"align":235},[255,1047,268],{"align":235},[255,1049,332],{"align":235},[255,1051,332],{"align":235},[224,1053,1054,1056,1061,1063,1065,1067,1069],{},[255,1055],{},[255,1057,1058],{},[204,1059,1060],{},"Awaited\u003CT>",[255,1062,268],{"align":235},[255,1064,332],{"align":235},[255,1066,268],{"align":235},[255,1068,332],{"align":235},[255,1070,268],{"align":235},[224,1072,1073,1075,1080,1082,1084,1086,1088],{},[255,1074],{},[255,1076,1077],{},[204,1078,1079],{},"Parameters\u003CF>",[255,1081,268],{"align":235},[255,1083,332],{"align":235},[255,1085,268],{"align":235},[255,1087,332],{"align":235},[255,1089,268],{"align":235},[224,1091,1092,1094,1099,1101,1103,1105,1107],{},[255,1093],{},[255,1095,1096],{},[204,1097,1098],{},"ReturnType\u003CF>",[255,1100,268],{"align":235},[255,1102,332],{"align":235},[255,1104,268],{"align":235},[255,1106,332],{"align":235},[255,1108,268],{"align":235},[224,1110,1111,1116,1121,1124,1126,1128,1130],{},[255,1112,1113],{},[258,1114,1115],{},"String Utilities",[255,1117,1118],{},[204,1119,1120],{},"Uppercase\u003CS>",[255,1122,1123],{"align":235},"⚠️",[255,1125,332],{"align":235},[255,1127,268],{"align":235},[255,1129,332],{"align":235},[255,1131,268],{"align":235},[224,1133,1134,1136,1141,1143,1145,1147,1149],{},[255,1135],{},[255,1137,1138],{},[204,1139,1140],{},"Lowercase\u003CS>",[255,1142,1123],{"align":235},[255,1144,332],{"align":235},[255,1146,268],{"align":235},[255,1148,332],{"align":235},[255,1150,268],{"align":235},[224,1152,1153,1155,1160,1162,1164,1166,1168],{},[255,1154],{},[255,1156,1157],{},[204,1158,1159],{},"Capitalize\u003CS>",[255,1161,1123],{"align":235},[255,1163,332],{"align":235},[255,1165,268],{"align":235},[255,1167,332],{"align":235},[255,1169,268],{"align":235},[224,1171,1172,1174,1179,1181,1183,1185,1187],{},[255,1173],{},[255,1175,1176],{},[204,1177,1178],{},"Uncapitalize\u003CS>",[255,1180,332],{"align":235},[255,1182,332],{"align":235},[255,1184,268],{"align":235},[255,1186,332],{"align":235},[255,1188,268],{"align":235},[224,1190,1191,1196,1199,1202,1204,1206,1208],{},[255,1192,1193],{},[258,1194,1195],{},"Functions",[255,1197,1198],{},"Function types",[255,1200,1201],{"align":235},"💎",[255,1203,268],{"align":235},[255,1205,268],{"align":235},[255,1207,332],{"align":235},[255,1209,268],{"align":235},[224,1211,1212,1214,1217,1219,1221,1223,1225],{},[255,1213],{},[255,1215,1216],{},"Method signatures",[255,1218,268],{"align":235},[255,1220,332],{"align":235},[255,1222,268],{"align":235},[255,1224,332],{"align":235},[255,1226,332],{"align":235},[224,1228,1229,1231,1234,1236,1238,1240,1242],{},[255,1230],{},[255,1232,1233],{},"Call signatures",[255,1235,268],{"align":235},[255,1237,332],{"align":235},[255,1239,268],{"align":235},[255,1241,332],{"align":235},[255,1243,332],{"align":235},[224,1245,1246,1248,1251,1253,1255,1257,1259],{},[255,1247],{},[255,1249,1250],{},"Rest parameters",[255,1252,268],{"align":235},[255,1254,268],{"align":235},[255,1256,268],{"align":235},[255,1258,332],{"align":235},[255,1260,268],{"align":235},[224,1262,1263,1268,1271,1273,1275,1277,1279],{},[255,1264,1265],{},[258,1266,1267],{},"Advanced",[255,1269,1270],{},"Circular references",[255,1272,268],{"align":235},[255,1274,332],{"align":235},[255,1276,268],{"align":235},[255,1278,332],{"align":235},[255,1280,1123],{"align":235},[224,1282,1283,1285,1288,1290,1292,1294,1296],{},[255,1284],{},[255,1286,1287],{},"Generic types",[255,1289,268],{"align":235},[255,1291,268],{"align":235},[255,1293,268],{"align":235},[255,1295,332],{"align":235},[255,1297,268],{"align":235},[224,1299,1300,1302,1305,1307,1309,1311,1313],{},[255,1301],{},[255,1303,1304],{},"Conditional types",[255,1306,1123],{"align":235},[255,1308,332],{"align":235},[255,1310,268],{"align":235},[255,1312,332],{"align":235},[255,1314,1123],{"align":235},[224,1316,1317,1319,1322,1324,1326,1328,1330],{},[255,1318],{},[255,1320,1321],{},"Mapped types",[255,1323,332],{"align":235},[255,1325,332],{"align":235},[255,1327,268],{"align":235},[255,1329,332],{"align":235},[255,1331,332],{"align":235},[224,1333,1334,1336,1339,1341,1343,1346,1348],{},[255,1335],{},[255,1337,1338],{},"Type inference",[255,1340,332],{"align":235},[255,1342,332],{"align":235},[255,1344,1345],{"align":235},"x",[255,1347,332],{"align":235},[255,1349,332],{"align":235},[1351,1352,1353],"note",{},"⚠️ = Partial support with limitations",[1351,1355,1356],{},"🚀 = mion has optimized type checking for discriminated unions.",[1351,1358,1359,1362],{},[201,1360,1361],{},"💎 = mion is the only framework from the table that can extract types directly from functions",[1363,1364,1369],"pre",{"className":1365,"code":1366,"language":1367,"meta":1368,"style":1368},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {reflectFunction} from '@mionjs\u002Frun-types';\n\nfunction sayHello(name: string): string {\n    return `Hello ${name}`;\n}\n\nconst fnType = reflectFunction(sayHello);\n\u002F\u002F fnType = FunctionRunType\u003Ctype (name: string) => string>\n","ts","",[204,1370,1371,1406,1413,1446,1468,1474,1479,1499],{"__ignoreMap":1368},[1372,1373,1376,1380,1384,1388,1391,1394,1397,1400,1403],"span",{"class":1374,"line":1375},"line",1,[1372,1377,1379],{"class":1378},"s7zQu","import",[1372,1381,1383],{"class":1382},"sMK4o"," {",[1372,1385,1387],{"class":1386},"sTEyZ","reflectFunction",[1372,1389,1390],{"class":1382},"}",[1372,1392,1393],{"class":1378}," from",[1372,1395,1396],{"class":1382}," '",[1372,1398,206],{"class":1399},"sfazB",[1372,1401,1402],{"class":1382},"'",[1372,1404,1405],{"class":1382},";\n",[1372,1407,1409],{"class":1374,"line":1408},2,[1372,1410,1412],{"emptyLinePlaceholder":1411},true,"\n",[1372,1414,1416,1420,1424,1427,1431,1434,1438,1441,1443],{"class":1374,"line":1415},3,[1372,1417,1419],{"class":1418},"spNyl","function",[1372,1421,1423],{"class":1422},"s2Zo4"," sayHello",[1372,1425,1426],{"class":1382},"(",[1372,1428,1430],{"class":1429},"sHdIc","name",[1372,1432,1433],{"class":1382},":",[1372,1435,1437],{"class":1436},"sBMFI"," string",[1372,1439,1440],{"class":1382},"):",[1372,1442,1437],{"class":1436},[1372,1444,1445],{"class":1382}," {\n",[1372,1447,1449,1452,1455,1458,1461,1463,1466],{"class":1374,"line":1448},4,[1372,1450,1451],{"class":1378},"    return",[1372,1453,1454],{"class":1382}," `",[1372,1456,1457],{"class":1399},"Hello ",[1372,1459,1460],{"class":1382},"${",[1372,1462,1430],{"class":1386},[1372,1464,1465],{"class":1382},"}`",[1372,1467,1405],{"class":1382},[1372,1469,1471],{"class":1374,"line":1470},5,[1372,1472,1473],{"class":1382},"}\n",[1372,1475,1477],{"class":1374,"line":1476},6,[1372,1478,1412],{"emptyLinePlaceholder":1411},[1372,1480,1482,1485,1488,1491,1494,1497],{"class":1374,"line":1481},7,[1372,1483,1484],{"class":1418},"const",[1372,1486,1487],{"class":1386}," fnType ",[1372,1489,1490],{"class":1382},"=",[1372,1492,1493],{"class":1422}," reflectFunction",[1372,1495,1496],{"class":1386},"(sayHello)",[1372,1498,1405],{"class":1382},[1372,1500,1502],{"class":1374,"line":1501},8,[1372,1503,1505],{"class":1504},"sHwdD","\u002F\u002F fnType = FunctionRunType\u003Ctype (name: string) => string>\n",[1507,1508],"hr",{},[1510,1511,1513],"h2",{"id":1512},"feature-comparison","Feature Comparison",[218,1515,1516,1533],{},[221,1517,1518],{},[224,1519,1520,1523,1525,1527,1529,1531],{},[227,1521,1522],{},"Feature",[227,1524,236],{"align":235},[227,1526,239],{"align":235},[227,1528,242],{"align":235},[227,1530,245],{"align":235},[227,1532,248],{"align":235},[250,1534,1535,1552,1567,1582,1598,1613,1629,1644,1659,1674,1689,1705,1720,1736,1751,1766,1781,1798,1813,1828],{},[224,1536,1537,1542,1544,1546,1548,1550],{},[255,1538,1539],{},[258,1540,1541],{},"Core",[255,1543],{"align":235},[255,1545],{"align":235},[255,1547],{"align":235},[255,1549],{"align":235},[255,1551],{"align":235},[224,1553,1554,1557,1559,1561,1563,1565],{},[255,1555,1556],{},"Type inference from TS",[255,1558,268],{"align":235},[255,1560,332],{"align":235},[255,1562,268],{"align":235},[255,1564,332],{"align":235},[255,1566,332],{"align":235},[224,1568,1569,1572,1574,1576,1578,1580],{},[255,1570,1571],{},"Schema-first approach",[255,1573,332],{"align":235},[255,1575,268],{"align":235},[255,1577,332],{"align":235},[255,1579,268],{"align":235},[255,1581,268],{"align":235},[224,1583,1584,1587,1589,1591,1594,1596],{},[255,1585,1586],{},"JIT compilation",[255,1588,268],{"align":235},[255,1590,332],{"align":235},[255,1592,1593],{"align":235},"AOT",[255,1595,268],{"align":235},[255,1597,268],{"align":235},[224,1599,1600,1603,1605,1607,1609,1611],{},[255,1601,1602],{},"TSC build  required",[255,1604,268],{"align":235},[255,1606,332],{"align":235},[255,1608,268],{"align":235},[255,1610,332],{"align":235},[255,1612,332],{"align":235},[224,1614,1615,1619,1621,1623,1625,1627],{},[255,1616,1617],{},[258,1618,54],{},[255,1620],{"align":235},[255,1622],{"align":235},[255,1624],{"align":235},[255,1626],{"align":235},[255,1628],{"align":235},[224,1630,1631,1634,1636,1638,1640,1642],{},[255,1632,1633],{},"Type validation",[255,1635,268],{"align":235},[255,1637,268],{"align":235},[255,1639,268],{"align":235},[255,1641,268],{"align":235},[255,1643,268],{"align":235},[224,1645,1646,1649,1651,1653,1655,1657],{},[255,1647,1648],{},"Strict validation",[255,1650,268],{"align":235},[255,1652,268],{"align":235},[255,1654,268],{"align":235},[255,1656,268],{"align":235},[255,1658,268],{"align":235},[224,1660,1661,1664,1666,1668,1670,1672],{},[255,1662,1663],{},"Error messages",[255,1665,268],{"align":235},[255,1667,268],{"align":235},[255,1669,268],{"align":235},[255,1671,268],{"align":235},[255,1673,268],{"align":235},[224,1675,1676,1679,1681,1683,1685,1687],{},[255,1677,1678],{},"Custom error messages",[255,1680,268],{"align":235},[255,1682,268],{"align":235},[255,1684,268],{"align":235},[255,1686,268],{"align":235},[255,1688,268],{"align":235},[224,1690,1691,1695,1697,1699,1701,1703],{},[255,1692,1693],{},[258,1694,58],{},[255,1696],{"align":235},[255,1698],{"align":235},[255,1700],{"align":235},[255,1702],{"align":235},[255,1704],{"align":235},[224,1706,1707,1710,1712,1714,1716,1718],{},[255,1708,1709],{},"JSON serialization",[255,1711,268],{"align":235},[255,1713,332],{"align":235},[255,1715,268],{"align":235},[255,1717,332],{"align":235},[255,1719,332],{"align":235},[224,1721,1722,1725,1727,1729,1732,1734],{},[255,1723,1724],{},"Binary serialization",[255,1726,268],{"align":235},[255,1728,332],{"align":235},[255,1730,1731],{"align":235},"PROTOBUF",[255,1733,332],{"align":235},[255,1735,332],{"align":235},[224,1737,1738,1741,1743,1745,1747,1749],{},[255,1739,1740],{},"Date handling",[255,1742,268],{"align":235},[255,1744,332],{"align":235},[255,1746,268],{"align":235},[255,1748,332],{"align":235},[255,1750,268],{"align":235},[224,1752,1753,1756,1758,1760,1762,1764],{},[255,1754,1755],{},"BigInt handling",[255,1757,268],{"align":235},[255,1759,332],{"align":235},[255,1761,268],{"align":235},[255,1763,332],{"align":235},[255,1765,268],{"align":235},[224,1767,1768,1771,1773,1775,1777,1779],{},[255,1769,1770],{},"Map\u002FSet handling",[255,1772,268],{"align":235},[255,1774,332],{"align":235},[255,1776,268],{"align":235},[255,1778,332],{"align":235},[255,1780,332],{"align":235},[224,1782,1783,1788,1790,1792,1794,1796],{},[255,1784,1785],{},[258,1786,1787],{},"Other",[255,1789],{"align":235},[255,1791],{"align":235},[255,1793],{"align":235},[255,1795],{"align":235},[255,1797],{"align":235},[224,1799,1800,1803,1805,1807,1809,1811],{},[255,1801,1802],{},"Mock data generation",[255,1804,268],{"align":235},[255,1806,332],{"align":235},[255,1808,268],{"align":235},[255,1810,332],{"align":235},[255,1812,332],{"align":235},[224,1814,1815,1818,1820,1822,1824,1826],{},[255,1816,1817],{},"Function reflection",[255,1819,268],{"align":235},[255,1821,332],{"align":235},[255,1823,332],{"align":235},[255,1825,332],{"align":235},[255,1827,332],{"align":235},[224,1829,1830,1833,1835,1837,1839,1841],{},[255,1831,1832],{},"AOT code generation",[255,1834,268],{"align":235},[255,1836,332],{"align":235},[255,1838,268],{"align":235},[255,1840,332],{"align":235},[255,1842,268],{"align":235},[1507,1844],{},[1510,1846,1848],{"id":1847},"approach-comparison","Approach Comparison",[213,1850,1852],{"id":1851},"schema-first-zod-ajv","Schema-First (Zod, AJV)",[201,1854,1855],{},"With schema-first libraries, you define schemas separately from your TypeScript types:",[1363,1857,1859],{"className":1365,"code":1858,"language":1367,"meta":1368,"style":1368},"import {z} from 'zod';\n\n\u002F\u002F Zod example - schema is source of truth\nconst UserSchema = z.object({\n    name: z.string(),\n    age: z.number(),\n    email: z.string().email(),\n});\ntype User = z.infer\u003Ctypeof UserSchema>;\n",[204,1860,1861,1883,1887,1892,1915,1935,1952,1976,1985],{"__ignoreMap":1368},[1372,1862,1863,1865,1867,1870,1872,1874,1876,1879,1881],{"class":1374,"line":1375},[1372,1864,1379],{"class":1378},[1372,1866,1383],{"class":1382},[1372,1868,1869],{"class":1386},"z",[1372,1871,1390],{"class":1382},[1372,1873,1393],{"class":1378},[1372,1875,1396],{"class":1382},[1372,1877,1878],{"class":1399},"zod",[1372,1880,1402],{"class":1382},[1372,1882,1405],{"class":1382},[1372,1884,1885],{"class":1374,"line":1408},[1372,1886,1412],{"emptyLinePlaceholder":1411},[1372,1888,1889],{"class":1374,"line":1415},[1372,1890,1891],{"class":1504},"\u002F\u002F Zod example - schema is source of truth\n",[1372,1893,1894,1896,1899,1901,1904,1907,1910,1912],{"class":1374,"line":1448},[1372,1895,1484],{"class":1418},[1372,1897,1898],{"class":1386}," UserSchema ",[1372,1900,1490],{"class":1382},[1372,1902,1903],{"class":1386}," z",[1372,1905,1906],{"class":1382},".",[1372,1908,1909],{"class":1422},"object",[1372,1911,1426],{"class":1386},[1372,1913,1914],{"class":1382},"{\n",[1372,1916,1917,1921,1923,1925,1927,1929,1932],{"class":1374,"line":1470},[1372,1918,1920],{"class":1919},"swJcz","    name",[1372,1922,1433],{"class":1382},[1372,1924,1903],{"class":1386},[1372,1926,1906],{"class":1382},[1372,1928,265],{"class":1422},[1372,1930,1931],{"class":1386},"()",[1372,1933,1934],{"class":1382},",\n",[1372,1936,1937,1940,1942,1944,1946,1948,1950],{"class":1374,"line":1476},[1372,1938,1939],{"class":1919},"    age",[1372,1941,1433],{"class":1382},[1372,1943,1903],{"class":1386},[1372,1945,1906],{"class":1382},[1372,1947,285],{"class":1422},[1372,1949,1931],{"class":1386},[1372,1951,1934],{"class":1382},[1372,1953,1954,1957,1959,1961,1963,1965,1967,1969,1972,1974],{"class":1374,"line":1481},[1372,1955,1956],{"class":1919},"    email",[1372,1958,1433],{"class":1382},[1372,1960,1903],{"class":1386},[1372,1962,1906],{"class":1382},[1372,1964,265],{"class":1422},[1372,1966,1931],{"class":1386},[1372,1968,1906],{"class":1382},[1372,1970,1971],{"class":1422},"email",[1372,1973,1931],{"class":1386},[1372,1975,1934],{"class":1382},[1372,1977,1978,1980,1983],{"class":1374,"line":1501},[1372,1979,1390],{"class":1382},[1372,1981,1982],{"class":1386},")",[1372,1984,1405],{"class":1382},[1372,1986,1988,1990,1993,1996,1998,2000,2003,2006,2009],{"class":1374,"line":1987},9,[1372,1989,569],{"class":1418},[1372,1991,1992],{"class":1436}," User",[1372,1994,1995],{"class":1382}," =",[1372,1997,1903],{"class":1436},[1372,1999,1906],{"class":1382},[1372,2001,2002],{"class":1436},"infer",[1372,2004,2005],{"class":1382},"\u003Ctypeof",[1372,2007,2008],{"class":1386}," UserSchema",[1372,2010,2011],{"class":1382},">;\n",[201,2013,2014,2017,2018,2021],{},[258,2015,2016],{},"Pros",": No build step, works everywhere\n",[258,2019,2020],{},"Cons",": Duplicate definitions, schemas can drift from actual types",[213,2023,2025],{"id":2024},"type-first-run-types-typia","Type-First (run-types, Typia)",[201,2027,2028],{},"With type-first libraries, TypeScript types are the source of truth:",[1363,2030,2032],{"className":1365,"code":2031,"language":1367,"meta":1368,"style":1368},"import {createIsTypeFn} from '@mionjs\u002Frun-types';\nimport {FormatEmail} from '@mionjs\u002Ftype-formats\u002FStringFormats';\n\n\u002F\u002F run-types example - TypeScript is source of truth\ninterface User {\n    name: string;\n    age: number;\n    email: FormatEmail; \u002F\u002F Using type formats for validation\n}\n\nconst validate = await createIsTypeFn\u003CUser>();\n",[204,2033,2034,2055,2077,2081,2086,2094,2104,2115,2130,2134,2139],{"__ignoreMap":1368},[1372,2035,2036,2038,2040,2043,2045,2047,2049,2051,2053],{"class":1374,"line":1375},[1372,2037,1379],{"class":1378},[1372,2039,1383],{"class":1382},[1372,2041,2042],{"class":1386},"createIsTypeFn",[1372,2044,1390],{"class":1382},[1372,2046,1393],{"class":1378},[1372,2048,1396],{"class":1382},[1372,2050,206],{"class":1399},[1372,2052,1402],{"class":1382},[1372,2054,1405],{"class":1382},[1372,2056,2057,2059,2061,2064,2066,2068,2070,2073,2075],{"class":1374,"line":1408},[1372,2058,1379],{"class":1378},[1372,2060,1383],{"class":1382},[1372,2062,2063],{"class":1386},"FormatEmail",[1372,2065,1390],{"class":1382},[1372,2067,1393],{"class":1378},[1372,2069,1396],{"class":1382},[1372,2071,2072],{"class":1399},"@mionjs\u002Ftype-formats\u002FStringFormats",[1372,2074,1402],{"class":1382},[1372,2076,1405],{"class":1382},[1372,2078,2079],{"class":1374,"line":1415},[1372,2080,1412],{"emptyLinePlaceholder":1411},[1372,2082,2083],{"class":1374,"line":1448},[1372,2084,2085],{"class":1504},"\u002F\u002F run-types example - TypeScript is source of truth\n",[1372,2087,2088,2090,2092],{"class":1374,"line":1470},[1372,2089,550],{"class":1418},[1372,2091,1992],{"class":1436},[1372,2093,1445],{"class":1382},[1372,2095,2096,2098,2100,2102],{"class":1374,"line":1476},[1372,2097,1920],{"class":1919},[1372,2099,1433],{"class":1382},[1372,2101,1437],{"class":1436},[1372,2103,1405],{"class":1382},[1372,2105,2106,2108,2110,2113],{"class":1374,"line":1481},[1372,2107,1939],{"class":1919},[1372,2109,1433],{"class":1382},[1372,2111,2112],{"class":1436}," number",[1372,2114,1405],{"class":1382},[1372,2116,2117,2119,2121,2124,2127],{"class":1374,"line":1501},[1372,2118,1956],{"class":1919},[1372,2120,1433],{"class":1382},[1372,2122,2123],{"class":1436}," FormatEmail",[1372,2125,2126],{"class":1382},";",[1372,2128,2129],{"class":1504}," \u002F\u002F Using type formats for validation\n",[1372,2131,2132],{"class":1374,"line":1987},[1372,2133,1473],{"class":1382},[1372,2135,2137],{"class":1374,"line":2136},10,[1372,2138,1412],{"emptyLinePlaceholder":1411},[1372,2140,2142,2144,2147,2149,2152,2155,2158,2161,2164,2166],{"class":1374,"line":2141},11,[1372,2143,1484],{"class":1418},[1372,2145,2146],{"class":1386}," validate ",[1372,2148,1490],{"class":1382},[1372,2150,2151],{"class":1378}," await",[1372,2153,2154],{"class":1422}," createIsTypeFn",[1372,2156,2157],{"class":1382},"\u003C",[1372,2159,2160],{"class":1436},"User",[1372,2162,2163],{"class":1382},">",[1372,2165,1931],{"class":1386},[1372,2167,1405],{"class":1382},[201,2169,2170,2172,2173,2175],{},[258,2171,2016],{},": Single source of truth, no schema duplication\n",[258,2174,2020],{},": Requires TypeScript compiler integration",[213,2177,2179],{"id":2178},"run-types-vs-typia-function-reflection","run-types vs Typia: Function Reflection",[201,2181,2182,2183,2185,2186,2188,2189,2192],{},"The key difference between ",[204,2184,236],{}," and ",[204,2187,242],{}," is ",[258,2190,2191],{},"function reflection",". While both are type-first, Typia cannot extract types directly from function signatures, requiring you to declare types separately and pass them as generic parameters.",[201,2194,2195,2198],{},[258,2196,2197],{},"Typia + Hono example",": (required to create validators manually)",[1363,2200,2202],{"className":1365,"code":2201,"language":1367,"meta":1368,"style":1368},"import {Hono} from 'hono';\nimport {typiaValidator} from '@hono\u002Ftypia-validator';\nimport typia from 'typia';\n\ninterface IBbsArticle {\n    \u002F\u002F ❌ Must declare type separately\n    id: string;\n    title: string;\n    body: string;\n    created_at: string;\n}\n\n\u002F\u002F ❌ Must create validator with explicit generic type\nconst validate = typia.createValidate\u003CIBbsArticle>();\n\nconst app = new Hono();\n\napp.post(\n    '\u002F',\n    typiaValidator('json', validate), \u002F\u002F ❌ Pass validator as middleware\n    (c) => {\n        const data = c.req.valid('json');\n        return c.json({id: data.id, title: data.title, body: data.body});\n    }\n);\n",[204,2203,2204,2226,2248,2267,2271,2280,2285,2296,2307,2318,2329,2333,2338,2344,2372,2377,2397,2402,2416,2429,2455,2471,2507,2569,2575],{"__ignoreMap":1368},[1372,2205,2206,2208,2210,2213,2215,2217,2219,2222,2224],{"class":1374,"line":1375},[1372,2207,1379],{"class":1378},[1372,2209,1383],{"class":1382},[1372,2211,2212],{"class":1386},"Hono",[1372,2214,1390],{"class":1382},[1372,2216,1393],{"class":1378},[1372,2218,1396],{"class":1382},[1372,2220,2221],{"class":1399},"hono",[1372,2223,1402],{"class":1382},[1372,2225,1405],{"class":1382},[1372,2227,2228,2230,2232,2235,2237,2239,2241,2244,2246],{"class":1374,"line":1408},[1372,2229,1379],{"class":1378},[1372,2231,1383],{"class":1382},[1372,2233,2234],{"class":1386},"typiaValidator",[1372,2236,1390],{"class":1382},[1372,2238,1393],{"class":1378},[1372,2240,1396],{"class":1382},[1372,2242,2243],{"class":1399},"@hono\u002Ftypia-validator",[1372,2245,1402],{"class":1382},[1372,2247,1405],{"class":1382},[1372,2249,2250,2252,2255,2258,2260,2263,2265],{"class":1374,"line":1415},[1372,2251,1379],{"class":1378},[1372,2253,2254],{"class":1386}," typia ",[1372,2256,2257],{"class":1378},"from",[1372,2259,1396],{"class":1382},[1372,2261,2262],{"class":1399},"typia",[1372,2264,1402],{"class":1382},[1372,2266,1405],{"class":1382},[1372,2268,2269],{"class":1374,"line":1448},[1372,2270,1412],{"emptyLinePlaceholder":1411},[1372,2272,2273,2275,2278],{"class":1374,"line":1470},[1372,2274,550],{"class":1418},[1372,2276,2277],{"class":1436}," IBbsArticle",[1372,2279,1445],{"class":1382},[1372,2281,2282],{"class":1374,"line":1476},[1372,2283,2284],{"class":1504},"    \u002F\u002F ❌ Must declare type separately\n",[1372,2286,2287,2290,2292,2294],{"class":1374,"line":1481},[1372,2288,2289],{"class":1919},"    id",[1372,2291,1433],{"class":1382},[1372,2293,1437],{"class":1436},[1372,2295,1405],{"class":1382},[1372,2297,2298,2301,2303,2305],{"class":1374,"line":1501},[1372,2299,2300],{"class":1919},"    title",[1372,2302,1433],{"class":1382},[1372,2304,1437],{"class":1436},[1372,2306,1405],{"class":1382},[1372,2308,2309,2312,2314,2316],{"class":1374,"line":1987},[1372,2310,2311],{"class":1919},"    body",[1372,2313,1433],{"class":1382},[1372,2315,1437],{"class":1436},[1372,2317,1405],{"class":1382},[1372,2319,2320,2323,2325,2327],{"class":1374,"line":2136},[1372,2321,2322],{"class":1919},"    created_at",[1372,2324,1433],{"class":1382},[1372,2326,1437],{"class":1436},[1372,2328,1405],{"class":1382},[1372,2330,2331],{"class":1374,"line":2141},[1372,2332,1473],{"class":1382},[1372,2334,2336],{"class":1374,"line":2335},12,[1372,2337,1412],{"emptyLinePlaceholder":1411},[1372,2339,2341],{"class":1374,"line":2340},13,[1372,2342,2343],{"class":1504},"\u002F\u002F ❌ Must create validator with explicit generic type\n",[1372,2345,2347,2349,2351,2353,2356,2358,2361,2363,2366,2368,2370],{"class":1374,"line":2346},14,[1372,2348,1484],{"class":1418},[1372,2350,2146],{"class":1386},[1372,2352,1490],{"class":1382},[1372,2354,2355],{"class":1386}," typia",[1372,2357,1906],{"class":1382},[1372,2359,2360],{"class":1422},"createValidate",[1372,2362,2157],{"class":1382},[1372,2364,2365],{"class":1436},"IBbsArticle",[1372,2367,2163],{"class":1382},[1372,2369,1931],{"class":1386},[1372,2371,1405],{"class":1382},[1372,2373,2375],{"class":1374,"line":2374},15,[1372,2376,1412],{"emptyLinePlaceholder":1411},[1372,2378,2380,2382,2385,2387,2390,2393,2395],{"class":1374,"line":2379},16,[1372,2381,1484],{"class":1418},[1372,2383,2384],{"class":1386}," app ",[1372,2386,1490],{"class":1382},[1372,2388,2389],{"class":1382}," new",[1372,2391,2392],{"class":1422}," Hono",[1372,2394,1931],{"class":1386},[1372,2396,1405],{"class":1382},[1372,2398,2400],{"class":1374,"line":2399},17,[1372,2401,1412],{"emptyLinePlaceholder":1411},[1372,2403,2405,2408,2410,2413],{"class":1374,"line":2404},18,[1372,2406,2407],{"class":1386},"app",[1372,2409,1906],{"class":1382},[1372,2411,2412],{"class":1422},"post",[1372,2414,2415],{"class":1386},"(\n",[1372,2417,2419,2422,2425,2427],{"class":1374,"line":2418},19,[1372,2420,2421],{"class":1382},"    '",[1372,2423,2424],{"class":1399},"\u002F",[1372,2426,1402],{"class":1382},[1372,2428,1934],{"class":1382},[1372,2430,2432,2435,2437,2439,2442,2444,2447,2450,2452],{"class":1374,"line":2431},20,[1372,2433,2434],{"class":1422},"    typiaValidator",[1372,2436,1426],{"class":1386},[1372,2438,1402],{"class":1382},[1372,2440,2441],{"class":1399},"json",[1372,2443,1402],{"class":1382},[1372,2445,2446],{"class":1382},",",[1372,2448,2449],{"class":1386}," validate)",[1372,2451,2446],{"class":1382},[1372,2453,2454],{"class":1504}," \u002F\u002F ❌ Pass validator as middleware\n",[1372,2456,2458,2461,2464,2466,2469],{"class":1374,"line":2457},21,[1372,2459,2460],{"class":1382},"    (",[1372,2462,2463],{"class":1429},"c",[1372,2465,1982],{"class":1382},[1372,2467,2468],{"class":1418}," =>",[1372,2470,1445],{"class":1382},[1372,2472,2474,2477,2480,2482,2485,2487,2490,2492,2495,2497,2499,2501,2503,2505],{"class":1374,"line":2473},22,[1372,2475,2476],{"class":1418},"        const",[1372,2478,2479],{"class":1386}," data",[1372,2481,1995],{"class":1382},[1372,2483,2484],{"class":1386}," c",[1372,2486,1906],{"class":1382},[1372,2488,2489],{"class":1386},"req",[1372,2491,1906],{"class":1382},[1372,2493,2494],{"class":1422},"valid",[1372,2496,1426],{"class":1919},[1372,2498,1402],{"class":1382},[1372,2500,2441],{"class":1399},[1372,2502,1402],{"class":1382},[1372,2504,1982],{"class":1919},[1372,2506,1405],{"class":1382},[1372,2508,2510,2513,2515,2517,2519,2521,2524,2527,2529,2531,2533,2535,2537,2540,2542,2544,2546,2549,2551,2554,2556,2558,2560,2563,2565,2567],{"class":1374,"line":2509},23,[1372,2511,2512],{"class":1378},"        return",[1372,2514,2484],{"class":1386},[1372,2516,1906],{"class":1382},[1372,2518,2441],{"class":1422},[1372,2520,1426],{"class":1919},[1372,2522,2523],{"class":1382},"{",[1372,2525,2526],{"class":1919},"id",[1372,2528,1433],{"class":1382},[1372,2530,2479],{"class":1386},[1372,2532,1906],{"class":1382},[1372,2534,2526],{"class":1386},[1372,2536,2446],{"class":1382},[1372,2538,2539],{"class":1919}," title",[1372,2541,1433],{"class":1382},[1372,2543,2479],{"class":1386},[1372,2545,1906],{"class":1382},[1372,2547,2548],{"class":1386},"title",[1372,2550,2446],{"class":1382},[1372,2552,2553],{"class":1919}," body",[1372,2555,1433],{"class":1382},[1372,2557,2479],{"class":1386},[1372,2559,1906],{"class":1382},[1372,2561,2562],{"class":1386},"body",[1372,2564,1390],{"class":1382},[1372,2566,1982],{"class":1919},[1372,2568,1405],{"class":1382},[1372,2570,2572],{"class":1374,"line":2571},24,[1372,2573,2574],{"class":1382},"    }\n",[1372,2576,2578,2580],{"class":1374,"line":2577},25,[1372,2579,1982],{"class":1386},[1372,2581,1405],{"class":1382},[201,2583,2584,2587],{},[258,2585,2586],{},"mion example"," (types extracted from functions and validated automatically):",[1363,2589,2591],{"className":1365,"code":2590,"language":1367,"meta":1368,"style":1368},"import {Routes, route} from '@mionjs\u002Frouter';\n\ninterface Article {\n    id: string;\n    title: string;\n    body: string;\n}\n\ntype NewArticle = Omit\u003CArticle, 'id'>;\n\ndeclare function generateId(): string;\n\n\u002F\u002F ✅ Types are extracted directly from the function signature\nconst routes = {\n    createArticle: route((ctx, article: NewArticle): Article => {\n        return {id: generateId(), ...article};\n    }),\n} satisfies Routes;\n",[204,2592,2593,2619,2623,2632,2642,2652,2662,2666,2670,2697,2701,2719,2723,2728,2739,2772,2797,2806],{"__ignoreMap":1368},[1372,2594,2595,2597,2599,2601,2603,2606,2608,2610,2612,2615,2617],{"class":1374,"line":1375},[1372,2596,1379],{"class":1378},[1372,2598,1383],{"class":1382},[1372,2600,38],{"class":1386},[1372,2602,2446],{"class":1382},[1372,2604,2605],{"class":1386}," route",[1372,2607,1390],{"class":1382},[1372,2609,1393],{"class":1378},[1372,2611,1396],{"class":1382},[1372,2613,2614],{"class":1399},"@mionjs\u002Frouter",[1372,2616,1402],{"class":1382},[1372,2618,1405],{"class":1382},[1372,2620,2621],{"class":1374,"line":1408},[1372,2622,1412],{"emptyLinePlaceholder":1411},[1372,2624,2625,2627,2630],{"class":1374,"line":1415},[1372,2626,550],{"class":1418},[1372,2628,2629],{"class":1436}," Article",[1372,2631,1445],{"class":1382},[1372,2633,2634,2636,2638,2640],{"class":1374,"line":1448},[1372,2635,2289],{"class":1919},[1372,2637,1433],{"class":1382},[1372,2639,1437],{"class":1436},[1372,2641,1405],{"class":1382},[1372,2643,2644,2646,2648,2650],{"class":1374,"line":1470},[1372,2645,2300],{"class":1919},[1372,2647,1433],{"class":1382},[1372,2649,1437],{"class":1436},[1372,2651,1405],{"class":1382},[1372,2653,2654,2656,2658,2660],{"class":1374,"line":1476},[1372,2655,2311],{"class":1919},[1372,2657,1433],{"class":1382},[1372,2659,1437],{"class":1436},[1372,2661,1405],{"class":1382},[1372,2663,2664],{"class":1374,"line":1481},[1372,2665,1473],{"class":1382},[1372,2667,2668],{"class":1374,"line":1501},[1372,2669,1412],{"emptyLinePlaceholder":1411},[1372,2671,2672,2674,2677,2679,2682,2684,2687,2689,2691,2693,2695],{"class":1374,"line":1987},[1372,2673,569],{"class":1418},[1372,2675,2676],{"class":1436}," NewArticle",[1372,2678,1995],{"class":1382},[1372,2680,2681],{"class":1436}," Omit",[1372,2683,2157],{"class":1382},[1372,2685,2686],{"class":1436},"Article",[1372,2688,2446],{"class":1382},[1372,2690,1396],{"class":1382},[1372,2692,2526],{"class":1399},[1372,2694,1402],{"class":1382},[1372,2696,2011],{"class":1382},[1372,2698,2699],{"class":1374,"line":2136},[1372,2700,1412],{"emptyLinePlaceholder":1411},[1372,2702,2703,2706,2709,2712,2715,2717],{"class":1374,"line":2141},[1372,2704,2705],{"class":1418},"declare",[1372,2707,2708],{"class":1418}," function",[1372,2710,2711],{"class":1422}," generateId",[1372,2713,2714],{"class":1382},"():",[1372,2716,1437],{"class":1436},[1372,2718,1405],{"class":1382},[1372,2720,2721],{"class":1374,"line":2335},[1372,2722,1412],{"emptyLinePlaceholder":1411},[1372,2724,2725],{"class":1374,"line":2340},[1372,2726,2727],{"class":1504},"\u002F\u002F ✅ Types are extracted directly from the function signature\n",[1372,2729,2730,2732,2735,2737],{"class":1374,"line":2346},[1372,2731,1484],{"class":1418},[1372,2733,2734],{"class":1386}," routes ",[1372,2736,1490],{"class":1382},[1372,2738,1445],{"class":1382},[1372,2740,2741,2744,2746,2748,2750,2752,2755,2757,2760,2762,2764,2766,2768,2770],{"class":1374,"line":2374},[1372,2742,2743],{"class":1919},"    createArticle",[1372,2745,1433],{"class":1382},[1372,2747,2605],{"class":1422},[1372,2749,1426],{"class":1386},[1372,2751,1426],{"class":1382},[1372,2753,2754],{"class":1429},"ctx",[1372,2756,2446],{"class":1382},[1372,2758,2759],{"class":1429}," article",[1372,2761,1433],{"class":1382},[1372,2763,2676],{"class":1436},[1372,2765,1440],{"class":1382},[1372,2767,2629],{"class":1436},[1372,2769,2468],{"class":1418},[1372,2771,1445],{"class":1382},[1372,2773,2774,2776,2778,2780,2782,2784,2786,2788,2791,2794],{"class":1374,"line":2379},[1372,2775,2512],{"class":1378},[1372,2777,1383],{"class":1382},[1372,2779,2526],{"class":1919},[1372,2781,1433],{"class":1382},[1372,2783,2711],{"class":1422},[1372,2785,1931],{"class":1919},[1372,2787,2446],{"class":1382},[1372,2789,2790],{"class":1382}," ...",[1372,2792,2793],{"class":1386},"article",[1372,2795,2796],{"class":1382},"};\n",[1372,2798,2799,2802,2804],{"class":1374,"line":2399},[1372,2800,2801],{"class":1382},"    }",[1372,2803,1982],{"class":1386},[1372,2805,1934],{"class":1382},[1372,2807,2808,2810,2813,2816],{"class":1374,"line":2404},[1372,2809,1390],{"class":1382},[1372,2811,2812],{"class":1378}," satisfies",[1372,2814,2815],{"class":1436}," Routes",[1372,2817,1405],{"class":1382},[201,2819,2820],{},"With mion, the router automatically extracts parameter and return types from your route handlers — no separate type declarations, no generic parameters, no middleware wiring, and no risk of types drifting out of sync.",[1507,2822],{},[1510,2824,2826],{"id":2825},"when-to-use-run-types","When to Use run-types",[201,2828,2829,2830],{},"✅ ",[258,2831,2832],{},"Use run-types when:",[2834,2835,2836,2840,2843,2846,2849],"ul",{},[2837,2838,2839],"li",{},"You want TypeScript types as the single source of truth",[2837,2841,2842],{},"You need JSON serialization with complex types (Date, Map, Set, BigInt)",[2837,2844,2845],{},"You need binary serialization for performance",[2837,2847,2848],{},"You want mock data generation from types",[2837,2850,2851],{},"You're building APIs with mion",[201,2853,2854,2855],{},"❌ ",[258,2856,2857],{},"Consider alternatives when:",[2834,2859,2860,2863,2866],{},[2837,2861,2862],{},"You need to share schemas with non-TypeScript consumers",[2837,2864,2865],{},"You're building a library consumed by vanilla JavaScript",[2837,2867,2868],{},"You need schemas defined at runtime",[201,2870,2871],{},"at runtime",[2873,2874,2875],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}","Comprehensive list of supported TypeScript types and feature comparison with other validation libraries.","md",null,{"toc":26},{"title":111,"description":2876},"nF9N3tEnzBx3pujsh7TDVdNJsccUZdCP4mqjjbqkqkQ",[2883,2885],{"title":108,"path":103,"stem":109,"description":2884,"children":-1},"JIT compilation library that generates optimized validation, serialization, and mocking functions from TypeScript types.",{"title":115,"path":116,"stem":117,"description":2886,"children":-1},"Validation and transformation formats for strings and numbers using TypeScript types.",1778674528184]