[{"data":1,"prerenderedAt":1448},["ShallowReactive",2],{"navigation_docs":3,"-platforms-cloudflare":195,"-platforms-cloudflare-surround":1443},[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","/introduction/about-mion","/introduction","1.introduction",[11,14,18,22],{"title":12,"path":7,"stem":13},"About mion","1.introduction/1.about-mion",{"title":15,"path":16,"stem":17},"Quick Start","/introduction/quick-start","1.introduction/2.quick-start",{"title":19,"path":20,"stem":21},"Manual Install","/introduction/manual-install","1.introduction/3.manual-install",{"title":23,"path":24,"stem":25},"What's Next","/introduction/what-is-next","1.introduction/4.what-is-next",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Server","icon-park-outline:server","/server","20.server",[33,37,41,45,49,53,57],{"title":34,"path":35,"stem":36},"Router Overview","/server/overview","20.server/0.overview",{"title":38,"path":39,"stem":40},"Routes","/server/routes","20.server/1.routes",{"title":42,"path":43,"stem":44},"Middleware","/server/middle-fns","20.server/2.middle-fns",{"title":46,"path":47,"stem":48},"Request & Response","/server/request-and-response","20.server/5.request-and-response",{"title":50,"path":51,"stem":52},"Error Handling","/server/error-handling","20.server/6.error-handling",{"title":54,"path":55,"stem":56},"Validation","/server/validation","20.server/7.validation",{"title":58,"path":59,"stem":60},"Serialization","/server/serialization","20.server/8.serialization",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":26},"Drizzle ORM","i-lineicons-drizzle","/drizzle-orm","21.drizzle-orm",[67,71],{"title":68,"path":69,"stem":70},"Drizzle Overview","/drizzle-orm/drizzle-overview","21.drizzle-orm/0.drizzle-overview",{"title":72,"path":73,"stem":74},"Column Mapping","/drizzle-orm/column-mapping","21.drizzle-orm/1.column-mapping",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":26},"Client","icon-park-outline:computer","/client","3.client",[81,85,88,92,96],{"title":82,"path":83,"stem":84},"Client Overview","/client/client-overview","3.client/0.client-overview",{"title":50,"path":86,"stem":87},"/client/error-handling","3.client/1.error-handling",{"title":89,"path":90,"stem":91},"Validation Errors","/client/validation-errors","3.client/2.validation-errors",{"title":93,"path":94,"stem":95},"Routes Flow","/client/client-flow","3.client/3.client-flow",{"title":97,"path":98,"stem":99},"Cancellation & Timeouts","/client/cancellation-timeouts","3.client/4.cancellation-timeouts",{"title":101,"icon":102,"redirect":103,"path":104,"stem":105,"children":106,"page":26},"RunTypes","i-lucide-scan-text","/run-types/overview","/run-types","4.run-types",[107,110,114,118,122],{"title":108,"path":103,"stem":109},"RunTypes Overview","4.run-types/0.overview",{"title":111,"path":112,"stem":113},"Supported Types","/run-types/features","4.run-types/1.features",{"title":115,"path":116,"stem":117},"Type Formats","/run-types/type-formats","4.run-types/2.type-formats",{"title":119,"path":120,"stem":121},"Built-in Formats","/run-types/built-in-formats","4.run-types/3.built-in-formats",{"title":123,"path":124,"stem":125},"Caveats","/run-types/caveats","4.run-types/4.caveats",{"title":127,"path":128,"stem":129,"children":130,"page":26},"Devtools","/devtools","5.devtools",[131,135,139,143],{"title":132,"path":133,"stem":134},"AOT Compilation","/devtools/aot-compilation","5.devtools/0.aot-compilation",{"title":136,"path":137,"stem":138},"Pure Functions","/devtools/pure-functions","5.devtools/1.pure-functions",{"title":140,"path":141,"stem":142},"ESLint Rules","/devtools/eslint-rules","5.devtools/2.eslint-rules",{"title":144,"path":145,"stem":146},"Vite Configuration","/devtools/vite-config","5.devtools/3.vite-config",{"title":148,"redirect":149,"icon":150,"path":151,"stem":152,"children":153,"page":26},"Platforms","/platforms/node-js","icon-park-outline:play","/platforms","6.platforms",[154,157,161,165,169,173],{"title":155,"path":149,"stem":156},"Node.js","6.platforms/1.node-js",{"title":158,"path":159,"stem":160},"Bun","/platforms/bun","6.platforms/2.bun",{"title":162,"path":163,"stem":164},"AWS Lambda","/platforms/aws-lambda","6.platforms/3.aws-lambda",{"title":166,"path":167,"stem":168},"Google Cloud Functions","/platforms/google-cloud-functions","6.platforms/4.google-cloud-functions",{"title":170,"path":171,"stem":172},"Cloudflare Workers","/platforms/cloudflare","6.platforms/5.cloudflare",{"title":174,"path":175,"stem":176},"Vercel","/platforms/vercel","6.platforms/6.vercel",{"title":178,"icon":179,"redirect":180,"path":181,"stem":182,"children":183,"page":26},"Benchmarks","icon-park-outline:chart-line","/benchmarks/hello-world","/benchmarks","7.benchmarks",[184,187,191],{"title":185,"path":180,"stem":186},"Hello World","7.benchmarks/1.hello-world",{"title":188,"path":189,"stem":190},"Light Validation","/benchmarks/light-validation","7.benchmarks/2.light-validation",{"title":192,"path":193,"stem":194},"Heavy Validation","/benchmarks/heavy-validation","7.benchmarks/3.heavy-validation",{"id":196,"title":170,"body":197,"description":1437,"extension":1438,"links":1439,"meta":1440,"navigation":342,"path":171,"seo":1441,"stem":172,"__hash__":1442},"docs/6.platforms/5.cloudflare.md",{"type":198,"value":199},"minimark",[200,213,218,246,249,541,545,552,574,591,595,600,779,802,805,826,835,839,845,1135,1141,1145,1162,1270,1292,1298,1358,1361,1365,1369,1433],[201,202,203,204,208,209,212],"p",{},"mion can run on Cloudflare Workers for globally-distributed edge deployments. The ",[205,206,207],"code",{},"@mionjs/platform-cloudflare"," package provides a Web standard ",[205,210,211],{},"Request -> Response"," fetch handler with access to Worker bindings via the platform context.",[214,215,217],"h2",{"id":216},"installation","Installation",[219,220,225],"pre",{"className":221,"code":222,"language":223,"meta":224,"style":224},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @mionjs/platform-cloudflare @mionjs/router\n","bash","",[205,226,227],{"__ignoreMap":224},[228,229,232,236,240,243],"span",{"class":230,"line":231},"line",1,[228,233,235],{"class":234},"sBMFI","npm",[228,237,239],{"class":238},"sfazB"," install",[228,241,242],{"class":238}," @mionjs/platform-cloudflare",[228,244,245],{"class":238}," @mionjs/router\n",[214,247,15],{"id":248},"quick-start",[250,251,252,402],"code-group",{},[219,253,258],{"className":254,"code":255,"filename":256,"language":257,"meta":224,"style":224},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {initMionRouter} from '@mionjs/router';\nimport {createCloudflareHandler} from '@mionjs/platform-cloudflare';\nimport {routes} from './cloudflare-routes.ts';\n\nawait initMionRouter(routes, {aot: true});\n\nexport default createCloudflareHandler();\n","src/index.ts","ts",[205,259,260,292,314,337,344,380,385],{"__ignoreMap":224},[228,261,262,266,270,274,277,280,283,286,289],{"class":230,"line":231},[228,263,265],{"class":264},"s7zQu","import",[228,267,269],{"class":268},"sMK4o"," {",[228,271,273],{"class":272},"sTEyZ","initMionRouter",[228,275,276],{"class":268},"}",[228,278,279],{"class":264}," from",[228,281,282],{"class":268}," '",[228,284,285],{"class":238},"@mionjs/router",[228,287,288],{"class":268},"'",[228,290,291],{"class":268},";\n",[228,293,295,297,299,302,304,306,308,310,312],{"class":230,"line":294},2,[228,296,265],{"class":264},[228,298,269],{"class":268},[228,300,301],{"class":272},"createCloudflareHandler",[228,303,276],{"class":268},[228,305,279],{"class":264},[228,307,282],{"class":268},[228,309,207],{"class":238},[228,311,288],{"class":268},[228,313,291],{"class":268},[228,315,317,319,321,324,326,328,330,333,335],{"class":230,"line":316},3,[228,318,265],{"class":264},[228,320,269],{"class":268},[228,322,323],{"class":272},"routes",[228,325,276],{"class":268},[228,327,279],{"class":264},[228,329,282],{"class":268},[228,331,332],{"class":238},"./cloudflare-routes.ts",[228,334,288],{"class":268},[228,336,291],{"class":268},[228,338,340],{"class":230,"line":339},4,[228,341,343],{"emptyLinePlaceholder":342},true,"\n",[228,345,347,350,354,357,360,362,366,369,373,375,378],{"class":230,"line":346},5,[228,348,349],{"class":264},"await",[228,351,353],{"class":352},"s2Zo4"," initMionRouter",[228,355,356],{"class":272},"(routes",[228,358,359],{"class":268},",",[228,361,269],{"class":268},[228,363,365],{"class":364},"swJcz","aot",[228,367,368],{"class":268},":",[228,370,372],{"class":371},"sfNiH"," true",[228,374,276],{"class":268},[228,376,377],{"class":272},")",[228,379,291],{"class":268},[228,381,383],{"class":230,"line":382},6,[228,384,343],{"emptyLinePlaceholder":342},[228,386,388,391,394,397,400],{"class":230,"line":387},7,[228,389,390],{"class":264},"export",[228,392,393],{"class":264}," default",[228,395,396],{"class":352}," createCloudflareHandler",[228,398,399],{"class":272},"()",[228,401,291],{"class":268},[219,403,406],{"className":254,"code":404,"filename":405,"language":257,"meta":224,"style":224},"import {Routes, route} from '@mionjs/router';\n\nexport const routes = {\n    sayHello: route((ctx, name: string): string => {\n        return `Hello ${name}!`;\n    }),\n} satisfies Routes;\n","src/routes.ts",[205,407,408,433,437,454,492,519,529],{"__ignoreMap":224},[228,409,410,412,414,416,418,421,423,425,427,429,431],{"class":230,"line":231},[228,411,265],{"class":264},[228,413,269],{"class":268},[228,415,38],{"class":272},[228,417,359],{"class":268},[228,419,420],{"class":272}," route",[228,422,276],{"class":268},[228,424,279],{"class":264},[228,426,282],{"class":268},[228,428,285],{"class":238},[228,430,288],{"class":268},[228,432,291],{"class":268},[228,434,435],{"class":230,"line":294},[228,436,343],{"emptyLinePlaceholder":342},[228,438,439,441,445,448,451],{"class":230,"line":316},[228,440,390],{"class":264},[228,442,444],{"class":443},"spNyl"," const",[228,446,447],{"class":272}," routes ",[228,449,450],{"class":268},"=",[228,452,453],{"class":268}," {\n",[228,455,456,459,461,463,466,468,472,474,477,479,482,485,487,490],{"class":230,"line":339},[228,457,458],{"class":364},"    sayHello",[228,460,368],{"class":268},[228,462,420],{"class":352},[228,464,465],{"class":272},"(",[228,467,465],{"class":268},[228,469,471],{"class":470},"sHdIc","ctx",[228,473,359],{"class":268},[228,475,476],{"class":470}," name",[228,478,368],{"class":268},[228,480,481],{"class":234}," string",[228,483,484],{"class":268},"):",[228,486,481],{"class":234},[228,488,489],{"class":443}," =>",[228,491,453],{"class":268},[228,493,494,497,500,503,506,509,511,514,517],{"class":230,"line":346},[228,495,496],{"class":264},"        return",[228,498,499],{"class":268}," `",[228,501,502],{"class":238},"Hello ",[228,504,505],{"class":268},"${",[228,507,508],{"class":272},"name",[228,510,276],{"class":268},[228,512,513],{"class":238},"!",[228,515,516],{"class":268},"`",[228,518,291],{"class":268},[228,520,521,524,526],{"class":230,"line":382},[228,522,523],{"class":268},"    }",[228,525,377],{"class":272},[228,527,528],{"class":268},",\n",[228,530,531,533,536,539],{"class":230,"line":387},[228,532,276],{"class":268},[228,534,535],{"class":264}," satisfies",[228,537,538],{"class":234}," Routes",[228,540,291],{"class":268},[214,542,544],{"id":543},"wranglertoml-example","wrangler.toml Example",[201,546,547,548,551],{},"A minimal ",[205,549,550],{},"wrangler.toml"," for a mion Worker:",[219,553,557],{"className":554,"code":555,"language":556,"meta":224,"style":224},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name = \"my-mion-api\"\nmain = \"dist/worker.js\"\ncompatibility_date = \"2024-01-01\"\n","toml",[205,558,559,564,569],{"__ignoreMap":224},[228,560,561],{"class":230,"line":231},[228,562,563],{},"name = \"my-mion-api\"\n",[228,565,566],{"class":230,"line":294},[228,567,568],{},"main = \"dist/worker.js\"\n",[228,570,571],{"class":230,"line":316},[228,572,573],{},"compatibility_date = \"2024-01-01\"\n",[201,575,576,577,580,581,586,587,590],{},"The ",[205,578,579],{},"main"," field points to the bundled output produced by Vite (see ",[582,583,585],"a",{"href":584},"#aot-compilation-required","AOT Compilation Required"," below). Run ",[205,588,589],{},"wrangler deploy"," to publish.",[214,592,594],{"id":593},"configuration","Configuration",[201,596,597,598,368],{},"You can pass configuration options to ",[205,599,301],{},[219,601,603],{"className":254,"code":602,"language":257,"meta":224,"style":224},"import {initMionRouter} from '@mionjs/router';\nimport {createCloudflareHandler} from '@mionjs/platform-cloudflare';\nimport {routes} from './cloudflare-routes.ts';\n\nawait initMionRouter(routes, {aot: true, basePath: 'api'});\n\nexport default createCloudflareHandler({\n    basePath: '/api',\n    defaultResponseHeaders: {'access-control-allow-origin': '*'},\n});\n",[205,604,605,625,645,665,669,707,711,724,741,770],{"__ignoreMap":224},[228,606,607,609,611,613,615,617,619,621,623],{"class":230,"line":231},[228,608,265],{"class":264},[228,610,269],{"class":268},[228,612,273],{"class":272},[228,614,276],{"class":268},[228,616,279],{"class":264},[228,618,282],{"class":268},[228,620,285],{"class":238},[228,622,288],{"class":268},[228,624,291],{"class":268},[228,626,627,629,631,633,635,637,639,641,643],{"class":230,"line":294},[228,628,265],{"class":264},[228,630,269],{"class":268},[228,632,301],{"class":272},[228,634,276],{"class":268},[228,636,279],{"class":264},[228,638,282],{"class":268},[228,640,207],{"class":238},[228,642,288],{"class":268},[228,644,291],{"class":268},[228,646,647,649,651,653,655,657,659,661,663],{"class":230,"line":316},[228,648,265],{"class":264},[228,650,269],{"class":268},[228,652,323],{"class":272},[228,654,276],{"class":268},[228,656,279],{"class":264},[228,658,282],{"class":268},[228,660,332],{"class":238},[228,662,288],{"class":268},[228,664,291],{"class":268},[228,666,667],{"class":230,"line":339},[228,668,343],{"emptyLinePlaceholder":342},[228,670,671,673,675,677,679,681,683,685,687,689,692,694,696,699,701,703,705],{"class":230,"line":346},[228,672,349],{"class":264},[228,674,353],{"class":352},[228,676,356],{"class":272},[228,678,359],{"class":268},[228,680,269],{"class":268},[228,682,365],{"class":364},[228,684,368],{"class":268},[228,686,372],{"class":371},[228,688,359],{"class":268},[228,690,691],{"class":364}," basePath",[228,693,368],{"class":268},[228,695,282],{"class":268},[228,697,698],{"class":238},"api",[228,700,288],{"class":268},[228,702,276],{"class":268},[228,704,377],{"class":272},[228,706,291],{"class":268},[228,708,709],{"class":230,"line":382},[228,710,343],{"emptyLinePlaceholder":342},[228,712,713,715,717,719,721],{"class":230,"line":387},[228,714,390],{"class":264},[228,716,393],{"class":264},[228,718,396],{"class":352},[228,720,465],{"class":272},[228,722,723],{"class":268},"{\n",[228,725,727,730,732,734,737,739],{"class":230,"line":726},8,[228,728,729],{"class":364},"    basePath",[228,731,368],{"class":268},[228,733,282],{"class":268},[228,735,736],{"class":238},"/api",[228,738,288],{"class":268},[228,740,528],{"class":268},[228,742,744,747,749,751,753,756,758,760,762,765,767],{"class":230,"line":743},9,[228,745,746],{"class":364},"    defaultResponseHeaders",[228,748,368],{"class":268},[228,750,269],{"class":268},[228,752,288],{"class":268},[228,754,755],{"class":364},"access-control-allow-origin",[228,757,288],{"class":268},[228,759,368],{"class":268},[228,761,282],{"class":268},[228,763,764],{"class":238},"*",[228,766,288],{"class":268},[228,768,769],{"class":268},"},\n",[228,771,773,775,777],{"class":230,"line":772},10,[228,774,276],{"class":268},[228,776,377],{"class":272},[228,778,291],{"class":268},[780,781,782,783,786,787,789,790,793,794,797,798,801],"tip",{},"The Cloudflare handler exposes ",[205,784,785],{},"env"," (your Worker bindings — KV, D1, R2, secrets, etc.) and ",[205,788,471],{}," (the Worker ",[205,791,792],{},"ExecutionContext"," with ",[205,795,796],{},"waitUntil","/",[205,799,800],{},"passThroughOnException",") on the mion call context's platform context. This is the canonical way to access Worker bindings from your route handlers.",[214,803,585],{"id":804},"aot-compilation-required",[806,807,808,809,812,813,816,817,821,822,825],"caution",{},"Cloudflare Workers do not allow ",[205,810,811],{},"new Function()"," or ",[205,814,815],{},"eval()",". You ",[818,819,820],"strong",{},"must"," enable mion's AOT compilation in your Vite build, otherwise the router will throw ",[205,823,824],{},"AOTCacheError"," when it tries to register routes inside the Worker.",[201,827,828,829,831,832,834],{},"mion's default JIT compilation generates validation and serialization functions at runtime using ",[205,830,811],{},". Workers block this for security reasons, so Cloudflare projects must be bundled with pre-compiled AOT caches. The mion Vite plugin handles this automatically — see ",[582,833,132],{"href":133}," for the full explanation.",[836,837,144],"h3",{"id":838},"vite-configuration",[201,840,547,841,844],{},[205,842,843],{},"vite.config.ts"," for a Cloudflare Worker:",[219,846,848],{"className":254,"code":847,"filename":843,"language":257,"meta":224,"style":224},"import {defineConfig} from 'vite';\nimport {mionPlugin} from '@mionjs/devtools/vite-plugin';\n\nexport default defineConfig({\n    plugins: [\n        mionPlugin({\n            aotCaches: {},\n            server: {\n                startScript: 'src/index.ts',\n                runMode: 'buildOnly',\n            },\n        }),\n    ],\n    build: {\n        lib: {\n            entry: 'src/index.ts',\n            formats: ['es'],\n            fileName: 'worker',\n        },\n        rollupOptions: {\n            output: {inlineDynamicImports: true},\n        },\n    },\n});\n",[205,849,850,872,894,898,911,921,930,940,949,964,980,986,996,1004,1014,1024,1040,1063,1080,1086,1096,1115,1120,1126],{"__ignoreMap":224},[228,851,852,854,856,859,861,863,865,868,870],{"class":230,"line":231},[228,853,265],{"class":264},[228,855,269],{"class":268},[228,857,858],{"class":272},"defineConfig",[228,860,276],{"class":268},[228,862,279],{"class":264},[228,864,282],{"class":268},[228,866,867],{"class":238},"vite",[228,869,288],{"class":268},[228,871,291],{"class":268},[228,873,874,876,878,881,883,885,887,890,892],{"class":230,"line":294},[228,875,265],{"class":264},[228,877,269],{"class":268},[228,879,880],{"class":272},"mionPlugin",[228,882,276],{"class":268},[228,884,279],{"class":264},[228,886,282],{"class":268},[228,888,889],{"class":238},"@mionjs/devtools/vite-plugin",[228,891,288],{"class":268},[228,893,291],{"class":268},[228,895,896],{"class":230,"line":316},[228,897,343],{"emptyLinePlaceholder":342},[228,899,900,902,904,907,909],{"class":230,"line":339},[228,901,390],{"class":264},[228,903,393],{"class":264},[228,905,906],{"class":352}," defineConfig",[228,908,465],{"class":272},[228,910,723],{"class":268},[228,912,913,916,918],{"class":230,"line":346},[228,914,915],{"class":364},"    plugins",[228,917,368],{"class":268},[228,919,920],{"class":272}," [\n",[228,922,923,926,928],{"class":230,"line":382},[228,924,925],{"class":352},"        mionPlugin",[228,927,465],{"class":272},[228,929,723],{"class":268},[228,931,932,935,937],{"class":230,"line":387},[228,933,934],{"class":364},"            aotCaches",[228,936,368],{"class":268},[228,938,939],{"class":268}," {},\n",[228,941,942,945,947],{"class":230,"line":726},[228,943,944],{"class":364},"            server",[228,946,368],{"class":268},[228,948,453],{"class":268},[228,950,951,954,956,958,960,962],{"class":230,"line":743},[228,952,953],{"class":364},"                startScript",[228,955,368],{"class":268},[228,957,282],{"class":268},[228,959,256],{"class":238},[228,961,288],{"class":268},[228,963,528],{"class":268},[228,965,966,969,971,973,976,978],{"class":230,"line":772},[228,967,968],{"class":364},"                runMode",[228,970,368],{"class":268},[228,972,282],{"class":268},[228,974,975],{"class":238},"buildOnly",[228,977,288],{"class":268},[228,979,528],{"class":268},[228,981,983],{"class":230,"line":982},11,[228,984,985],{"class":268},"            },\n",[228,987,989,992,994],{"class":230,"line":988},12,[228,990,991],{"class":268},"        }",[228,993,377],{"class":272},[228,995,528],{"class":268},[228,997,999,1002],{"class":230,"line":998},13,[228,1000,1001],{"class":272},"    ]",[228,1003,528],{"class":268},[228,1005,1007,1010,1012],{"class":230,"line":1006},14,[228,1008,1009],{"class":364},"    build",[228,1011,368],{"class":268},[228,1013,453],{"class":268},[228,1015,1017,1020,1022],{"class":230,"line":1016},15,[228,1018,1019],{"class":364},"        lib",[228,1021,368],{"class":268},[228,1023,453],{"class":268},[228,1025,1027,1030,1032,1034,1036,1038],{"class":230,"line":1026},16,[228,1028,1029],{"class":364},"            entry",[228,1031,368],{"class":268},[228,1033,282],{"class":268},[228,1035,256],{"class":238},[228,1037,288],{"class":268},[228,1039,528],{"class":268},[228,1041,1043,1046,1048,1051,1053,1056,1058,1061],{"class":230,"line":1042},17,[228,1044,1045],{"class":364},"            formats",[228,1047,368],{"class":268},[228,1049,1050],{"class":272}," [",[228,1052,288],{"class":268},[228,1054,1055],{"class":238},"es",[228,1057,288],{"class":268},[228,1059,1060],{"class":272},"]",[228,1062,528],{"class":268},[228,1064,1066,1069,1071,1073,1076,1078],{"class":230,"line":1065},18,[228,1067,1068],{"class":364},"            fileName",[228,1070,368],{"class":268},[228,1072,282],{"class":268},[228,1074,1075],{"class":238},"worker",[228,1077,288],{"class":268},[228,1079,528],{"class":268},[228,1081,1083],{"class":230,"line":1082},19,[228,1084,1085],{"class":268},"        },\n",[228,1087,1089,1092,1094],{"class":230,"line":1088},20,[228,1090,1091],{"class":364},"        rollupOptions",[228,1093,368],{"class":268},[228,1095,453],{"class":268},[228,1097,1099,1102,1104,1106,1109,1111,1113],{"class":230,"line":1098},21,[228,1100,1101],{"class":364},"            output",[228,1103,368],{"class":268},[228,1105,269],{"class":268},[228,1107,1108],{"class":364},"inlineDynamicImports",[228,1110,368],{"class":268},[228,1112,372],{"class":371},[228,1114,769],{"class":268},[228,1116,1118],{"class":230,"line":1117},22,[228,1119,1085],{"class":268},[228,1121,1123],{"class":230,"line":1122},23,[228,1124,1125],{"class":268},"    },\n",[228,1127,1129,1131,1133],{"class":230,"line":1128},24,[228,1130,276],{"class":268},[228,1132,377],{"class":272},[228,1134,291],{"class":268},[201,1136,1137,1140],{},[205,1138,1139],{},"inlineDynamicImports: true"," is required because Workers don't support dynamic code splitting — every dependency must be bundled into a single file.",[836,1142,1144],{"id":1143},"worker-entry","Worker Entry",[201,1146,1147,1148,793,1150,1153,1154,1157,1158,1161],{},"The Worker entry file calls ",[205,1149,273],{},[205,1151,1152],{},"aot: true"," to enable strict AOT mode. In strict mode ",[205,1155,1156],{},"@mionjs/run-types"," is ",[818,1159,1160],{},"not loaded at all",", every route must be present in the AOT cache, and the Vite plugin auto-injects the cache contents at bundle time:",[219,1163,1164],{"className":254,"code":255,"language":257,"meta":224,"style":224},[205,1165,1166,1186,1206,1226,1230,1254,1258],{"__ignoreMap":224},[228,1167,1168,1170,1172,1174,1176,1178,1180,1182,1184],{"class":230,"line":231},[228,1169,265],{"class":264},[228,1171,269],{"class":268},[228,1173,273],{"class":272},[228,1175,276],{"class":268},[228,1177,279],{"class":264},[228,1179,282],{"class":268},[228,1181,285],{"class":238},[228,1183,288],{"class":268},[228,1185,291],{"class":268},[228,1187,1188,1190,1192,1194,1196,1198,1200,1202,1204],{"class":230,"line":294},[228,1189,265],{"class":264},[228,1191,269],{"class":268},[228,1193,301],{"class":272},[228,1195,276],{"class":268},[228,1197,279],{"class":264},[228,1199,282],{"class":268},[228,1201,207],{"class":238},[228,1203,288],{"class":268},[228,1205,291],{"class":268},[228,1207,1208,1210,1212,1214,1216,1218,1220,1222,1224],{"class":230,"line":316},[228,1209,265],{"class":264},[228,1211,269],{"class":268},[228,1213,323],{"class":272},[228,1215,276],{"class":268},[228,1217,279],{"class":264},[228,1219,282],{"class":268},[228,1221,332],{"class":238},[228,1223,288],{"class":268},[228,1225,291],{"class":268},[228,1227,1228],{"class":230,"line":339},[228,1229,343],{"emptyLinePlaceholder":342},[228,1231,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252],{"class":230,"line":346},[228,1233,349],{"class":264},[228,1235,353],{"class":352},[228,1237,356],{"class":272},[228,1239,359],{"class":268},[228,1241,269],{"class":268},[228,1243,365],{"class":364},[228,1245,368],{"class":268},[228,1247,372],{"class":371},[228,1249,276],{"class":268},[228,1251,377],{"class":272},[228,1253,291],{"class":268},[228,1255,1256],{"class":230,"line":382},[228,1257,343],{"emptyLinePlaceholder":342},[228,1259,1260,1262,1264,1266,1268],{"class":230,"line":387},[228,1261,390],{"class":264},[228,1263,393],{"class":264},[228,1265,396],{"class":352},[228,1267,399],{"class":272},[228,1269,291],{"class":268},[1271,1272,1273,1274,1277,1278,1281,1282,1285,1286,1288,1289,1291],"note",{},"You don't need to import ",[205,1275,1276],{},"virtual:mion-aot/caches"," or call ",[205,1279,1280],{},"addAOTCaches()"," manually — when the plugin's ",[205,1283,1284],{},"aotCaches"," option is set, the Vite plugin auto-wires everything. For a deeper explanation of how this works see ",[582,1287,132],{"href":133}," and ",[582,1290,144],{"href":145},".",[201,1293,1294,1295,368],{},"For TypeScript support of the virtual modules (only needed if you import them manually), add this to your ",[205,1296,1297],{},"tsconfig.json",[219,1299,1303],{"className":1300,"code":1301,"filename":1297,"language":1302,"meta":224,"style":224},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"compilerOptions\": {\n    \"types\": [\"@mionjs/devtools/virtual-modules\"]\n  }\n}\n","json",[205,1304,1305,1309,1324,1348,1353],{"__ignoreMap":224},[228,1306,1307],{"class":230,"line":231},[228,1308,723],{"class":268},[228,1310,1311,1314,1317,1320,1322],{"class":230,"line":294},[228,1312,1313],{"class":268},"  \"",[228,1315,1316],{"class":443},"compilerOptions",[228,1318,1319],{"class":268},"\"",[228,1321,368],{"class":268},[228,1323,453],{"class":268},[228,1325,1326,1329,1332,1334,1336,1338,1340,1343,1345],{"class":230,"line":316},[228,1327,1328],{"class":268},"    \"",[228,1330,1331],{"class":234},"types",[228,1333,1319],{"class":268},[228,1335,368],{"class":268},[228,1337,1050],{"class":268},[228,1339,1319],{"class":268},[228,1341,1342],{"class":238},"@mionjs/devtools/virtual-modules",[228,1344,1319],{"class":268},[228,1346,1347],{"class":268},"]\n",[228,1349,1350],{"class":230,"line":339},[228,1351,1352],{"class":268},"  }\n",[228,1354,1355],{"class":230,"line":346},[228,1356,1357],{"class":268},"}\n",[1359,1360],"spacer",{},[214,1362,1364],{"id":1363},"type-reference","Type Reference",[836,1366,1368],{"id":1367},"cloudflarehandleroptions","CloudflareHandlerOptions",[219,1370,1372],{"className":254,"code":1371,"language":257,"meta":224,"style":224},"export interface CloudflareHandlerOptions {\n    /** Set of default response headers to add to every response */\n    defaultResponseHeaders: Record\u003Cstring, string>;\n    /** Path prefix to strip from incoming URL (e.g., '/api/mion') */\n    basePath: string;\n}\n",[205,1373,1374,1386,1392,1414,1419,1429],{"__ignoreMap":224},[228,1375,1376,1378,1381,1384],{"class":230,"line":231},[228,1377,390],{"class":264},[228,1379,1380],{"class":443}," interface",[228,1382,1383],{"class":234}," CloudflareHandlerOptions",[228,1385,453],{"class":268},[228,1387,1388],{"class":230,"line":294},[228,1389,1391],{"class":1390},"sHwdD","    /** Set of default response headers to add to every response */\n",[228,1393,1394,1396,1398,1401,1404,1407,1409,1411],{"class":230,"line":316},[228,1395,746],{"class":364},[228,1397,368],{"class":268},[228,1399,1400],{"class":234}," Record",[228,1402,1403],{"class":268},"\u003C",[228,1405,1406],{"class":234},"string",[228,1408,359],{"class":268},[228,1410,481],{"class":234},[228,1412,1413],{"class":268},">;\n",[228,1415,1416],{"class":230,"line":339},[228,1417,1418],{"class":1390},"    /** Path prefix to strip from incoming URL (e.g., '/api/mion') */\n",[228,1420,1421,1423,1425,1427],{"class":230,"line":346},[228,1422,729],{"class":364},[228,1424,368],{"class":268},[228,1426,481],{"class":234},[228,1428,291],{"class":268},[228,1430,1431],{"class":230,"line":382},[228,1432,1357],{"class":268},[1434,1435,1436],"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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 Cloudflare Workers using the Web standard fetch handler.","md",null,{"toc":26},{"title":170,"description":1437},"tr0ZYMbEM45SAXTSgsu-PPv8385kr1UOp8beb-AIxag",[1444,1446],{"title":166,"path":167,"stem":168,"description":1445,"children":-1},"Running mion APIs on Google Cloud Functions for serverless deployments.",{"title":174,"path":175,"stem":176,"description":1447,"children":-1},"Running mion APIs on Vercel using Next.js App Router route handlers.",1777152482296]