[{"data":1,"prerenderedAt":803},["ShallowReactive",2],{"navigation_docs":3,"-platforms-google-cloud-functions":195,"-platforms-google-cloud-functions-surround":798},[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":166,"body":197,"description":792,"extension":793,"links":794,"meta":795,"navigation":338,"path":167,"seo":796,"stem":168,"__hash__":797},"docs\u002F6.platforms\u002F4.google-cloud-functions.md",{"type":198,"value":199},"minimark",[200,209,214,242,245,524,528,531,575,579,585,722,726,729,733,738,788],[201,202,203,204,208],"p",{},"mion can run on Google Cloud Functions for serverless deployments. The ",[205,206,207],"code",{},"@mionjs\u002Fplatform-gcloud"," package provides a handler compatible with Cloud Functions events.",[210,211,213],"h2",{"id":212},"installation","Installation",[215,216,221],"pre",{"className":217,"code":218,"language":219,"meta":220,"style":220},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @mionjs\u002Fplatform-gcloud @mionjs\u002Frouter\n","bash","",[205,222,223],{"__ignoreMap":220},[224,225,228,232,236,239],"span",{"class":226,"line":227},"line",1,[224,229,231],{"class":230},"sBMFI","npm",[224,233,235],{"class":234},"sfazB"," install",[224,237,238],{"class":234}," @mionjs\u002Fplatform-gcloud",[224,240,241],{"class":234}," @mionjs\u002Frouter\n",[210,243,15],{"id":244},"quick-start",[246,247,248,384],"code-group",{},[215,249,254],{"className":250,"code":251,"filename":252,"language":253,"meta":220,"style":220},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {createGoogleCFHandler} from '@mionjs\u002Fplatform-gcloud';\nimport {initMionRouter} from '@mionjs\u002Frouter';\nimport {routes} from '.\u002Fgcloud-routes.ts';\n\nawait initMionRouter(routes);\n\nexport const api = createGoogleCFHandler();\n","src\u002Findex.ts","ts",[205,255,256,287,310,333,340,355,360],{"__ignoreMap":220},[224,257,258,262,266,270,273,276,279,281,284],{"class":226,"line":227},[224,259,261],{"class":260},"s7zQu","import",[224,263,265],{"class":264},"sMK4o"," {",[224,267,269],{"class":268},"sTEyZ","createGoogleCFHandler",[224,271,272],{"class":264},"}",[224,274,275],{"class":260}," from",[224,277,278],{"class":264}," '",[224,280,207],{"class":234},[224,282,283],{"class":264},"'",[224,285,286],{"class":264},";\n",[224,288,290,292,294,297,299,301,303,306,308],{"class":226,"line":289},2,[224,291,261],{"class":260},[224,293,265],{"class":264},[224,295,296],{"class":268},"initMionRouter",[224,298,272],{"class":264},[224,300,275],{"class":260},[224,302,278],{"class":264},[224,304,305],{"class":234},"@mionjs\u002Frouter",[224,307,283],{"class":264},[224,309,286],{"class":264},[224,311,313,315,317,320,322,324,326,329,331],{"class":226,"line":312},3,[224,314,261],{"class":260},[224,316,265],{"class":264},[224,318,319],{"class":268},"routes",[224,321,272],{"class":264},[224,323,275],{"class":260},[224,325,278],{"class":264},[224,327,328],{"class":234},".\u002Fgcloud-routes.ts",[224,330,283],{"class":264},[224,332,286],{"class":264},[224,334,336],{"class":226,"line":335},4,[224,337,339],{"emptyLinePlaceholder":338},true,"\n",[224,341,343,346,350,353],{"class":226,"line":342},5,[224,344,345],{"class":260},"await",[224,347,349],{"class":348},"s2Zo4"," initMionRouter",[224,351,352],{"class":268},"(routes)",[224,354,286],{"class":264},[224,356,358],{"class":226,"line":357},6,[224,359,339],{"emptyLinePlaceholder":338},[224,361,363,366,370,373,376,379,382],{"class":226,"line":362},7,[224,364,365],{"class":260},"export",[224,367,369],{"class":368},"spNyl"," const",[224,371,372],{"class":268}," api ",[224,374,375],{"class":264},"=",[224,377,378],{"class":348}," createGoogleCFHandler",[224,380,381],{"class":268},"()",[224,383,286],{"class":264},[215,385,388],{"className":250,"code":386,"filename":387,"language":253,"meta":220,"style":220},"import {Routes, route} from '@mionjs\u002Frouter';\n\nexport const routes = {\n    sayHello: route((ctx, name: string): string => {\n        return `Hello ${name}!`;\n    }),\n} satisfies Routes;\n","src\u002Froutes.ts",[205,389,390,416,420,434,474,501,512],{"__ignoreMap":220},[224,391,392,394,396,398,401,404,406,408,410,412,414],{"class":226,"line":227},[224,393,261],{"class":260},[224,395,265],{"class":264},[224,397,38],{"class":268},[224,399,400],{"class":264},",",[224,402,403],{"class":268}," route",[224,405,272],{"class":264},[224,407,275],{"class":260},[224,409,278],{"class":264},[224,411,305],{"class":234},[224,413,283],{"class":264},[224,415,286],{"class":264},[224,417,418],{"class":226,"line":289},[224,419,339],{"emptyLinePlaceholder":338},[224,421,422,424,426,429,431],{"class":226,"line":312},[224,423,365],{"class":260},[224,425,369],{"class":368},[224,427,428],{"class":268}," routes ",[224,430,375],{"class":264},[224,432,433],{"class":264}," {\n",[224,435,436,440,443,445,448,450,454,456,459,461,464,467,469,472],{"class":226,"line":335},[224,437,439],{"class":438},"swJcz","    sayHello",[224,441,442],{"class":264},":",[224,444,403],{"class":348},[224,446,447],{"class":268},"(",[224,449,447],{"class":264},[224,451,453],{"class":452},"sHdIc","ctx",[224,455,400],{"class":264},[224,457,458],{"class":452}," name",[224,460,442],{"class":264},[224,462,463],{"class":230}," string",[224,465,466],{"class":264},"):",[224,468,463],{"class":230},[224,470,471],{"class":368}," =>",[224,473,433],{"class":264},[224,475,476,479,482,485,488,491,493,496,499],{"class":226,"line":342},[224,477,478],{"class":260},"        return",[224,480,481],{"class":264}," `",[224,483,484],{"class":234},"Hello ",[224,486,487],{"class":264},"${",[224,489,490],{"class":268},"name",[224,492,272],{"class":264},[224,494,495],{"class":234},"!",[224,497,498],{"class":264},"`",[224,500,286],{"class":264},[224,502,503,506,509],{"class":226,"line":357},[224,504,505],{"class":264},"    }",[224,507,508],{"class":268},")",[224,510,511],{"class":264},",\n",[224,513,514,516,519,522],{"class":226,"line":362},[224,515,272],{"class":264},[224,517,518],{"class":260}," satisfies",[224,520,521],{"class":230}," Routes",[224,523,286],{"class":264},[210,525,527],{"id":526},"deployment","Deployment",[201,529,530],{},"Deploy your function using the gcloud CLI:",[215,532,534],{"className":217,"code":533,"language":219,"meta":220,"style":220},"gcloud functions deploy api \\\n  --runtime nodejs18 \\\n  --trigger-http \\\n  --allow-unauthenticated\n",[205,535,536,553,563,570],{"__ignoreMap":220},[224,537,538,541,544,547,550],{"class":226,"line":227},[224,539,540],{"class":230},"gcloud",[224,542,543],{"class":234}," functions",[224,545,546],{"class":234}," deploy",[224,548,549],{"class":234}," api",[224,551,552],{"class":268}," \\\n",[224,554,555,558,561],{"class":226,"line":289},[224,556,557],{"class":234},"  --runtime",[224,559,560],{"class":234}," nodejs18",[224,562,552],{"class":268},[224,564,565,568],{"class":226,"line":312},[224,566,567],{"class":234},"  --trigger-http",[224,569,552],{"class":268},[224,571,572],{"class":226,"line":335},[224,573,574],{"class":234},"  --allow-unauthenticated\n",[210,576,578],{"id":577},"configuration","Configuration",[201,580,581,582,442],{},"You can pass configuration options to ",[205,583,584],{},"initMionGcloud",[215,586,588],{"className":250,"code":587,"language":253,"meta":220,"style":220},"import {createGoogleCFHandler} from '@mionjs\u002Fplatform-gcloud';\nimport {initMionRouter} from '@mionjs\u002Frouter';\nimport {routes} from '.\u002Fgcloud-routes.ts';\n\nawait initMionRouter(routes, {\n    basePath: 'api', \u002F\u002F API prefix\n});\n\nexport const api = createGoogleCFHandler({});\n",[205,589,590,610,630,650,654,667,687,695,700],{"__ignoreMap":220},[224,591,592,594,596,598,600,602,604,606,608],{"class":226,"line":227},[224,593,261],{"class":260},[224,595,265],{"class":264},[224,597,269],{"class":268},[224,599,272],{"class":264},[224,601,275],{"class":260},[224,603,278],{"class":264},[224,605,207],{"class":234},[224,607,283],{"class":264},[224,609,286],{"class":264},[224,611,612,614,616,618,620,622,624,626,628],{"class":226,"line":289},[224,613,261],{"class":260},[224,615,265],{"class":264},[224,617,296],{"class":268},[224,619,272],{"class":264},[224,621,275],{"class":260},[224,623,278],{"class":264},[224,625,305],{"class":234},[224,627,283],{"class":264},[224,629,286],{"class":264},[224,631,632,634,636,638,640,642,644,646,648],{"class":226,"line":312},[224,633,261],{"class":260},[224,635,265],{"class":264},[224,637,319],{"class":268},[224,639,272],{"class":264},[224,641,275],{"class":260},[224,643,278],{"class":264},[224,645,328],{"class":234},[224,647,283],{"class":264},[224,649,286],{"class":264},[224,651,652],{"class":226,"line":335},[224,653,339],{"emptyLinePlaceholder":338},[224,655,656,658,660,663,665],{"class":226,"line":342},[224,657,345],{"class":260},[224,659,349],{"class":348},[224,661,662],{"class":268},"(routes",[224,664,400],{"class":264},[224,666,433],{"class":264},[224,668,669,672,674,676,679,681,683],{"class":226,"line":357},[224,670,671],{"class":438},"    basePath",[224,673,442],{"class":264},[224,675,278],{"class":264},[224,677,678],{"class":234},"api",[224,680,283],{"class":264},[224,682,400],{"class":264},[224,684,686],{"class":685},"sHwdD"," \u002F\u002F API prefix\n",[224,688,689,691,693],{"class":226,"line":362},[224,690,272],{"class":264},[224,692,508],{"class":268},[224,694,286],{"class":264},[224,696,698],{"class":226,"line":697},8,[224,699,339],{"emptyLinePlaceholder":338},[224,701,703,705,707,709,711,713,715,718,720],{"class":226,"line":702},9,[224,704,365],{"class":260},[224,706,369],{"class":368},[224,708,372],{"class":268},[224,710,375],{"class":264},[224,712,378],{"class":348},[224,714,447],{"class":268},[224,716,717],{"class":264},"{}",[224,719,508],{"class":268},[224,721,286],{"class":264},[723,724,725],"tip",{},"For optimal cold start performance, keep your function dependencies minimal and consider using Cloud Run for more control over the runtime environment.",[727,728],"spacer",{},[210,730,732],{"id":731},"type-reference","Type Reference",[734,735,737],"h3",{"id":736},"googlecfoptions","GoogleCFOptions",[215,739,741],{"className":250,"code":740,"language":253,"meta":220,"style":220},"export interface GoogleCFOptions {\n    \u002F** Set of default response header to add to every response*\u002F\n    defaultResponseHeaders: Record\u003Cstring, string>;\n}\n",[205,742,743,755,760,783],{"__ignoreMap":220},[224,744,745,747,750,753],{"class":226,"line":227},[224,746,365],{"class":260},[224,748,749],{"class":368}," interface",[224,751,752],{"class":230}," GoogleCFOptions",[224,754,433],{"class":264},[224,756,757],{"class":226,"line":289},[224,758,759],{"class":685},"    \u002F** Set of default response header to add to every response*\u002F\n",[224,761,762,765,767,770,773,776,778,780],{"class":226,"line":312},[224,763,764],{"class":438},"    defaultResponseHeaders",[224,766,442],{"class":264},[224,768,769],{"class":230}," Record",[224,771,772],{"class":264},"\u003C",[224,774,775],{"class":230},"string",[224,777,400],{"class":264},[224,779,463],{"class":230},[224,781,782],{"class":264},">;\n",[224,784,785],{"class":226,"line":335},[224,786,787],{"class":264},"}\n",[789,790,791],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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}","Running mion APIs on Google Cloud Functions for serverless deployments.","md",null,{"toc":26},{"title":166,"description":792},"cMU-tte9AtD5lwMGNKaqwo8jj-O3APVa6s-NKz-IPdA",[799,801],{"title":162,"path":163,"stem":164,"description":800,"children":-1},"Running mion APIs on AWS Lambda for serverless deployments.",{"title":170,"path":171,"stem":172,"description":802,"children":-1},"Running mion APIs on Cloudflare Workers using the Web standard fetch handler.",1778674524008]