[{"data":1,"prerenderedAt":372},["ShallowReactive",2],{"navigation_docs":3,"-introduction-what-is-next":195,"-introduction-what-is-next-surround":367},[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":23,"body":197,"description":361,"extension":362,"links":363,"meta":364,"navigation":276,"path":24,"seo":365,"stem":25,"__hash__":366},"docs\u002F1.introduction\u002F4.what-is-next.md",{"type":198,"value":199},"minimark",[200,205,213,223,353,357],[201,202,204],"h2",{"id":203},"top-priorities","Top Priorities",[206,207,208,209,212],"p",{},"These are the issues and improvements that we plan to fix before going out of beta",[210,211],"br",{},"\nBut still could take a while 😂",[214,215,217,220],"card",{"title":216},"Mature API",[206,218,219],{},"mion is in the early stages of development, so the first priority is to establish a robust and developer-friendly API.",[206,221,222],{},"To avoid maintainer burnout once we reach v1, we want to maintain long release cycles and not add too many new features.",[214,224,226,229],{"title":225},"RunType Forms and UI",[206,227,228],{},"Generate forms from types, the idea is to create components that can be used by multiple FE frameworks.\nThis will provide a default UI for many apps, and speed up the development of our own dashboard.",[230,231,236],"pre",{"className":232,"code":233,"language":234,"meta":235,"style":235},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\ntype User = {\n  email: FormatEmail\n  birthDate: FormatStringDate\n}\n\nconst userFormSchema = toUIVueForm\u003CUser>()\n\nfunction handleSubmit(data: User) {\n  routes.users.create(data).call()\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CFormRenderer\n    :schema=\"userFormSchema\"\n    @submit=\"handleSubmit\"\n  \u002F>\n\u003C\u002Ftemplate>\n","tsx","",[237,238,239,247,253,259,265,271,278,284,289,295,301,306,312,317,323,329,335,341,347],"code",{"__ignoreMap":235},[240,241,244],"span",{"class":242,"line":243},"line",1,[240,245,246],{},"\u003Cscript setup lang=\"ts\">\n",[240,248,250],{"class":242,"line":249},2,[240,251,252],{},"type User = {\n",[240,254,256],{"class":242,"line":255},3,[240,257,258],{},"  email: FormatEmail\n",[240,260,262],{"class":242,"line":261},4,[240,263,264],{},"  birthDate: FormatStringDate\n",[240,266,268],{"class":242,"line":267},5,[240,269,270],{},"}\n",[240,272,274],{"class":242,"line":273},6,[240,275,277],{"emptyLinePlaceholder":276},true,"\n",[240,279,281],{"class":242,"line":280},7,[240,282,283],{},"const userFormSchema = toUIVueForm\u003CUser>()\n",[240,285,287],{"class":242,"line":286},8,[240,288,277],{"emptyLinePlaceholder":276},[240,290,292],{"class":242,"line":291},9,[240,293,294],{},"function handleSubmit(data: User) {\n",[240,296,298],{"class":242,"line":297},10,[240,299,300],{},"  routes.users.create(data).call()\n",[240,302,304],{"class":242,"line":303},11,[240,305,270],{},[240,307,309],{"class":242,"line":308},12,[240,310,311],{},"\u003C\u002Fscript>\n",[240,313,315],{"class":242,"line":314},13,[240,316,277],{"emptyLinePlaceholder":276},[240,318,320],{"class":242,"line":319},14,[240,321,322],{},"\u003Ctemplate>\n",[240,324,326],{"class":242,"line":325},15,[240,327,328],{},"  \u003CFormRenderer\n",[240,330,332],{"class":242,"line":331},16,[240,333,334],{},"    :schema=\"userFormSchema\"\n",[240,336,338],{"class":242,"line":337},17,[240,339,340],{},"    @submit=\"handleSubmit\"\n",[240,342,344],{"class":242,"line":343},18,[240,345,346],{},"  \u002F>\n",[240,348,350],{"class":242,"line":349},19,[240,351,352],{},"\u003C\u002Ftemplate>\n",[214,354,356],{"title":355},"TypeScript 7 (Go Version) Support","Support for the upcoming TypeScript 7 Go-based compiler. Typescript go is still in early stages and there is no official compiler API or similar available yet, so we will wait until the TypeScript Go ecosystem is more mature before implementing support.",[358,359,360],"style",{},"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);}","Upcoming features and improvements for mion.","md",null,{"toc":26},{"title":23,"description":361},"Sa9UwVrBinfbd6Im-OTZFkvOjewTpZveI6R9Lmd28rc",[368,370],{"title":19,"path":20,"stem":21,"description":369,"children":-1},"How to manually configure a mion app.",{"title":34,"path":35,"stem":36,"description":371,"children":-1},"Core concepts and terminology used in mion APIs.",1778674527215]