[{"data":1,"prerenderedAt":1966},["ShallowReactive",2],{"navigation":3,"-deploy-providers-cloudflare":228,"-deploy-providers-cloudflare-surround":1961},[4,83,212,218,225],{"title":5,"path":6,"stem":7,"children":8,"icon":82},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":53,"path":54,"stem":55,"icon":56},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":58,"path":59,"stem":60,"icon":61},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":63,"path":64,"stem":65,"icon":66},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":68,"path":69,"stem":70,"icon":71},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":73,"path":74,"stem":75,"icon":76},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":78,"path":79,"stem":80,"icon":81},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":84,"path":85,"stem":86,"children":87,"icon":89},"Deploy","/deploy","2.deploy/0.index",[88,90,111],{"title":84,"path":85,"stem":86,"icon":89},"ri:upload-cloud-2-line",{"title":91,"path":92,"stem":93,"children":94,"page":110},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[95,100,105],{"title":96,"path":97,"stem":98,"icon":99},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":101,"path":102,"stem":103,"icon":104},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":106,"path":107,"stem":108,"icon":109},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":112,"path":113,"stem":114,"children":115,"page":110},"Providers","/deploy/providers","2.deploy/20.providers",[116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208],{"title":117,"path":118,"stem":119},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":121,"path":122,"stem":123},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":125,"path":126,"stem":127},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":129,"path":130,"stem":131},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":133,"path":134,"stem":135},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":137,"path":138,"stem":139},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":141,"path":142,"stem":143},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":145,"path":146,"stem":147},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":149,"path":150,"stem":151},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":153,"path":154,"stem":155},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":157,"path":158,"stem":159},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":161,"path":162,"stem":163},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":165,"path":166,"stem":167},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":169,"path":170,"stem":171},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":173,"path":174,"stem":175},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":177,"path":178,"stem":179},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":181,"path":182,"stem":183},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":185,"path":186,"stem":187},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":189,"path":190,"stem":191},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":193,"path":194,"stem":195},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":197,"path":198,"stem":199},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":201,"path":202,"stem":203},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":205,"path":206,"stem":207},"Zephyr Cloud","/deploy/providers/zephyr","2.deploy/20.providers/zephyr",{"title":209,"path":210,"stem":211},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":213,"path":214,"stem":215,"children":216,"icon":36},"Config","/config","3.config/0.index",[217],{"title":213,"path":214,"stem":215,"icon":36},{"title":219,"path":220,"stem":221,"children":222,"icon":224},"Examples","/examples","4.examples/0.index",[223],{"title":219,"path":220,"stem":221,"icon":224},"i-lucide-folder-code",{"title":5,"path":226,"stem":227},"/","index",{"id":229,"title":137,"body":230,"description":1955,"extension":1956,"meta":1957,"navigation":1958,"path":138,"seo":1959,"stem":139,"__hash__":1960},"content/2.deploy/20.providers/cloudflare.md",{"type":231,"value":232,"toc":1931},"minimark",[233,238,250,254,273,283,290,406,429,448,453,462,466,470,474,477,480,483,486,489,493,505,508,551,555,562,637,640,649,658,695,699,716,836,839,843,850,853,859,869,874,941,958,961,966,968,971,974,977,979,981,984,988,997,1013,1017,1028,1037,1051,1181,1185,1195,1221,1237,1241,1264,1275,1285,1289,1300,1309,1317,1322,1326,1497,1501,1515,1529,1540,1543,1545,1552,1672,1676,1687,1692,1824,1831,1835,1838,1841,1850,1855,1858,1927],[234,235,237],"h2",{"id":236},"cloudflare-workers","Cloudflare Workers",[239,240,241,245,246],"p",{},[242,243,244],"strong",{},"Preset:"," ",[247,248,249],"code",{},"cloudflare_module",[251,252],"read-more",{"to":253,"title":237},"https://developers.cloudflare.com/workers/",[255,256,257],"note",{},[239,258,259,260,265,266,272],{},"Integration with this provider is possible with ",[261,262,264],"a",{"href":263},"/deploy#zero-config-providers","zero configuration"," supporting ",[261,267,271],{"href":268,"rel":269},"https://developers.cloudflare.com/workers/ci-cd/builds/",[270],"nofollow","workers builds (beta)",".",[274,275,276],"important",{},[239,277,278,279,282],{},"To use Workers with Static Assets, you need a Nitro compatibility date set to ",[247,280,281],{},"2024-09-19"," or later.",[239,284,285,286,289],{},"The following shows an example ",[247,287,288],{},"nitro.config.ts"," file for deploying a Nitro app to Cloudflare Workers.",[291,292,296],"pre",{"className":293,"code":294,"filename":288,"language":295,"meta":5,"style":5},"language-ts shiki shiki-themes github-light github-dark github-dark","import { defineNitroConfig } from \"nitro/config\";\n\nexport default defineNitroConfig({\n    compatibilityDate: \"2024-09-19\",\n    preset: \"cloudflare_module\",\n    cloudflare: {\n      deployConfig: true,\n      nodeCompat: true\n    }\n})\n","ts",[247,297,298,321,328,344,356,367,373,385,394,400],{"__ignoreMap":5},[299,300,303,307,311,314,318],"span",{"class":301,"line":302},"line",1,[299,304,306],{"class":305},"so5gQ","import",[299,308,310],{"class":309},"slsVL"," { defineNitroConfig } ",[299,312,313],{"class":305},"from",[299,315,317],{"class":316},"sfrk1"," \"nitro/config\"",[299,319,320],{"class":309},";\n",[299,322,324],{"class":301,"line":323},2,[299,325,327],{"emptyLinePlaceholder":326},true,"\n",[299,329,331,334,337,341],{"class":301,"line":330},3,[299,332,333],{"class":305},"export",[299,335,336],{"class":305}," default",[299,338,340],{"class":339},"shcOC"," defineNitroConfig",[299,342,343],{"class":309},"({\n",[299,345,347,350,353],{"class":301,"line":346},4,[299,348,349],{"class":309},"    compatibilityDate: ",[299,351,352],{"class":316},"\"2024-09-19\"",[299,354,355],{"class":309},",\n",[299,357,359,362,365],{"class":301,"line":358},5,[299,360,361],{"class":309},"    preset: ",[299,363,364],{"class":316},"\"cloudflare_module\"",[299,366,355],{"class":309},[299,368,370],{"class":301,"line":369},6,[299,371,372],{"class":309},"    cloudflare: {\n",[299,374,376,379,383],{"class":301,"line":375},7,[299,377,378],{"class":309},"      deployConfig: ",[299,380,382],{"class":381},"suiK_","true",[299,384,355],{"class":309},[299,386,388,391],{"class":301,"line":387},8,[299,389,390],{"class":309},"      nodeCompat: ",[299,392,393],{"class":381},"true\n",[299,395,397],{"class":301,"line":396},9,[299,398,399],{"class":309},"    }\n",[299,401,403],{"class":301,"line":402},10,[299,404,405],{"class":309},"})\n",[239,407,408,409,412,413,416,417,422,423,428],{},"By setting ",[247,410,411],{},"deployConfig: true",", Nitro will automatically generate a ",[247,414,415],{},"wrangler.json"," for you with the correct configuration.\nIf you need to add ",[261,418,421],{"href":419,"rel":420},"https://developers.cloudflare.com/workers/wrangler/configuration/",[270],"Cloudflare Workers configuration",", such as ",[261,424,427],{"href":425,"rel":426},"https://developers.cloudflare.com/workers/runtime-apis/bindings/",[270],"bindings",", you can either:",[430,431,432,442],"ul",{},[433,434,435,436,439,440,272],"li",{},"Set these in your Nitro config under the ",[247,437,438],{},"cloudflare: { wrangler : {} }",". This has the same type as ",[247,441,415],{},[433,443,444,445,447],{},"Provide your own ",[247,446,415],{},". Nitro will merge your config with the appropriate settings, including pointing to the build output.",[449,450,452],"h3",{"id":451},"local-preview","Local Preview",[239,454,455,456,461],{},"You can use ",[261,457,460],{"href":458,"rel":459},"https://github.com/cloudflare/workers-sdk/tree/main/packages/wrangler",[270],"Wrangler"," to preview your app locally:",[463,464],"pm-run",{"script":465},"build",[467,468],"pm-x",{"command":469},"wrangler dev",[449,471,473],{"id":472},"manual-deploy","Manual Deploy",[239,475,476],{},"After having built your application you can manually deploy it with Wrangler.",[239,478,479],{},"First make sure to be logged into your Cloudflare account:",[467,481],{"command":482},"wrangler login",[239,484,485],{},"Then you can deploy the application with:",[467,487],{"command":488},"wrangler deploy",[449,490,492],{"id":491},"runtime-hooks","Runtime Hooks",[239,494,455,495,499,500,272],{},[261,496,498],{"href":497},"/docs/plugins#nitro-runtime-hooks","runtime hooks"," below in order to extend ",[261,501,504],{"href":502,"rel":503},"https://developers.cloudflare.com/workers/runtime-apis/handlers/",[270],"Worker handlers",[251,506],{"to":507},"/guide/plugins#nitro-runtime-hooks",[430,509,510,519,528,537,546],{},[433,511,512],{},[261,513,516],{"href":514,"rel":515},"https://developers.cloudflare.com/workers/runtime-apis/handlers/scheduled/",[270],[247,517,518],{},"cloudflare:scheduled",[433,520,521],{},[261,522,525],{"href":523,"rel":524},"https://developers.cloudflare.com/email-routing/email-workers/runtime-api/",[270],[247,526,527],{},"cloudflare:email",[433,529,530],{},[261,531,534],{"href":532,"rel":533},"https://developers.cloudflare.com/queues/configuration/javascript-apis/#consumer",[270],[247,535,536],{},"cloudflare:queue",[433,538,539],{},[261,540,543],{"href":541,"rel":542},"https://developers.cloudflare.com/workers/runtime-apis/handlers/tail/",[270],[247,544,545],{},"cloudflare:tail",[433,547,548],{},[247,549,550],{},"cloudflare:trace",[449,552,554],{"id":553},"additional-exports","Additional Exports",[239,556,557,558,561],{},"You can add a ",[247,559,560],{},"exports.cloudflare.ts"," file to your project root to export additional handlers or properties to the Cloudflare Worker entrypoint.",[291,563,565],{"className":293,"code":564,"filename":560,"language":295,"meta":5,"style":5},"export class MyWorkflow extends WorkflowEntrypoint {\n  async run(event: WorkflowEvent, step: WorkflowStep) {\n    // ...\n  }\n}\n",[247,566,567,586,621,627,632],{"__ignoreMap":5},[299,568,569,571,574,577,580,583],{"class":301,"line":302},[299,570,333],{"class":305},[299,572,573],{"class":305}," class",[299,575,576],{"class":339}," MyWorkflow",[299,578,579],{"class":305}," extends",[299,581,582],{"class":339}," WorkflowEntrypoint",[299,584,585],{"class":309}," {\n",[299,587,588,591,594,597,601,604,607,610,613,615,618],{"class":301,"line":323},[299,589,590],{"class":305},"  async",[299,592,593],{"class":339}," run",[299,595,596],{"class":309},"(",[299,598,600],{"class":599},"sQHwn","event",[299,602,603],{"class":305},":",[299,605,606],{"class":339}," WorkflowEvent",[299,608,609],{"class":309},", ",[299,611,612],{"class":599},"step",[299,614,603],{"class":305},[299,616,617],{"class":339}," WorkflowStep",[299,619,620],{"class":309},") {\n",[299,622,623],{"class":301,"line":330},[299,624,626],{"class":625},"sCsY4","    // ...\n",[299,628,629],{"class":301,"line":346},[299,630,631],{"class":309},"  }\n",[299,633,634],{"class":301,"line":358},[299,635,636],{"class":309},"}\n",[239,638,639],{},"Nitro will automatically detect this file and include its exports in the final build.",[641,642,643],"warning",{},[239,644,645,646,648],{},"The ",[247,647,560],{}," file must not have a default export.",[239,650,651,652,655,656,603],{},"You can also customize the entrypoint file location using the ",[247,653,654],{},"cloudflare.exports"," option in your ",[247,657,288],{},[291,659,661],{"className":293,"code":660,"filename":288,"language":295,"meta":5,"style":5},"export default defineConfig({\n  cloudflare: {\n    exports: \"custom-exports-entry.ts\"\n  }\n})\n",[247,662,663,674,679,687,691],{"__ignoreMap":5},[299,664,665,667,669,672],{"class":301,"line":302},[299,666,333],{"class":305},[299,668,336],{"class":305},[299,670,671],{"class":339}," defineConfig",[299,673,343],{"class":309},[299,675,676],{"class":301,"line":323},[299,677,678],{"class":309},"  cloudflare: {\n",[299,680,681,684],{"class":301,"line":330},[299,682,683],{"class":309},"    exports: ",[299,685,686],{"class":316},"\"custom-exports-entry.ts\"\n",[299,688,689],{"class":301,"line":346},[299,690,631],{"class":309},[299,692,693],{"class":301,"line":358},[299,694,405],{"class":309},[449,696,698],{"id":697},"scheduled-tasks-cron-triggers","Scheduled Tasks (Cron Triggers)",[239,700,701,702,705,706,709,710,715],{},"When using ",[261,703,704],{"href":54},"Nitro tasks"," with ",[247,707,708],{},"scheduledTasks",", Nitro automatically generates ",[261,711,714],{"href":712,"rel":713},"https://developers.cloudflare.com/workers/configuration/cron-triggers/",[270],"Cron Triggers"," in the wrangler config at build time.",[291,717,719],{"className":293,"code":718,"filename":288,"language":295,"meta":5,"style":5},"import { defineNitroConfig } from \"nitro/config\";\n\nexport default defineNitroConfig({\n  preset: \"cloudflare_module\",\n  experimental: {\n    tasks: true,\n  },\n  scheduledTasks: {\n    \"* * * * *\": [\"cms:update\"],\n    \"0 15 1 * *\": [\"db:cleanup\"],\n  },\n  cloudflare: {\n    deployConfig: true,\n  },\n})\n",[247,720,721,733,737,747,756,761,770,775,780,794,806,811,816,826,831],{"__ignoreMap":5},[299,722,723,725,727,729,731],{"class":301,"line":302},[299,724,306],{"class":305},[299,726,310],{"class":309},[299,728,313],{"class":305},[299,730,317],{"class":316},[299,732,320],{"class":309},[299,734,735],{"class":301,"line":323},[299,736,327],{"emptyLinePlaceholder":326},[299,738,739,741,743,745],{"class":301,"line":330},[299,740,333],{"class":305},[299,742,336],{"class":305},[299,744,340],{"class":339},[299,746,343],{"class":309},[299,748,749,752,754],{"class":301,"line":346},[299,750,751],{"class":309},"  preset: ",[299,753,364],{"class":316},[299,755,355],{"class":309},[299,757,758],{"class":301,"line":358},[299,759,760],{"class":309},"  experimental: {\n",[299,762,763,766,768],{"class":301,"line":369},[299,764,765],{"class":309},"    tasks: ",[299,767,382],{"class":381},[299,769,355],{"class":309},[299,771,772],{"class":301,"line":375},[299,773,774],{"class":309},"  },\n",[299,776,777],{"class":301,"line":387},[299,778,779],{"class":309},"  scheduledTasks: {\n",[299,781,782,785,788,791],{"class":301,"line":396},[299,783,784],{"class":316},"    \"* * * * *\"",[299,786,787],{"class":309},": [",[299,789,790],{"class":316},"\"cms:update\"",[299,792,793],{"class":309},"],\n",[299,795,796,799,801,804],{"class":301,"line":402},[299,797,798],{"class":316},"    \"0 15 1 * *\"",[299,800,787],{"class":309},[299,802,803],{"class":316},"\"db:cleanup\"",[299,805,793],{"class":309},[299,807,809],{"class":301,"line":808},11,[299,810,774],{"class":309},[299,812,814],{"class":301,"line":813},12,[299,815,678],{"class":309},[299,817,819,822,824],{"class":301,"line":818},13,[299,820,821],{"class":309},"    deployConfig: ",[299,823,382],{"class":381},[299,825,355],{"class":309},[299,827,829],{"class":301,"line":828},14,[299,830,774],{"class":309},[299,832,834],{"class":301,"line":833},15,[299,835,405],{"class":309},[239,837,838],{},"No manual Wrangler configuration is needed - Nitro handles it for you.",[234,840,842],{"id":841},"cloudflare-pages","Cloudflare Pages",[239,844,845,245,847],{},[242,846,244],{},[247,848,849],{},"cloudflare_pages",[251,851],{"to":852,"title":842},"https://pages.cloudflare.com/",[255,854,855],{},[239,856,259,857,272],{},[261,858,264],{"href":263},[641,860,861],{},[239,862,863,864,868],{},"Cloudflare ",[261,865,867],{"href":866},"#cloudflare-workers","Workers Module"," is the new recommended preset for deployments. Please consider using the pages only if you need specific features.",[239,870,285,871,873],{},[247,872,288],{}," file for deploying a Nitro app to Cloudflare Pages.",[291,875,877],{"className":293,"code":876,"filename":288,"language":295,"meta":5,"style":5},"import { defineNitroConfig } from \"nitro/config\";\n\nexport default defineNitroConfig({\n    preset: \"cloudflare_pages\",\n    cloudflare: {\n      deployConfig: true,\n      nodeCompat:true\n    }\n})\n",[247,878,879,891,895,905,914,918,926,933,937],{"__ignoreMap":5},[299,880,881,883,885,887,889],{"class":301,"line":302},[299,882,306],{"class":305},[299,884,310],{"class":309},[299,886,313],{"class":305},[299,888,317],{"class":316},[299,890,320],{"class":309},[299,892,893],{"class":301,"line":323},[299,894,327],{"emptyLinePlaceholder":326},[299,896,897,899,901,903],{"class":301,"line":330},[299,898,333],{"class":305},[299,900,336],{"class":305},[299,902,340],{"class":339},[299,904,343],{"class":309},[299,906,907,909,912],{"class":301,"line":346},[299,908,361],{"class":309},[299,910,911],{"class":316},"\"cloudflare_pages\"",[299,913,355],{"class":309},[299,915,916],{"class":301,"line":358},[299,917,372],{"class":309},[299,919,920,922,924],{"class":301,"line":369},[299,921,378],{"class":309},[299,923,382],{"class":381},[299,925,355],{"class":309},[299,927,928,931],{"class":301,"line":375},[299,929,930],{"class":309},"      nodeCompat:",[299,932,393],{"class":381},[299,934,935],{"class":301,"line":387},[299,936,399],{"class":309},[299,938,939],{"class":301,"line":396},[299,940,405],{"class":309},[239,942,943,944,947,948,951,952,957],{},"Nitro automatically generates a ",[247,945,946],{},"_routes.json"," file that controls which routes get served from files and which are served from the Worker script. The auto-generated routes file can be overridden with the config option ",[247,949,950],{},"cloudflare.pages.routes"," (",[261,953,956],{"href":954,"rel":955},"https://developers.cloudflare.com/pages/platform/functions/routing/#functions-invocation-routes",[270],"read more",").",[449,959,452],{"id":960},"local-preview-1",[239,962,455,963,461],{},[261,964,460],{"href":458,"rel":965},[270],[463,967],{"script":465},[467,969],{"command":970},"wrangler pages dev",[449,972,473],{"id":973},"manual-deploy-1",[239,975,976],{},"After having built your application you can manually deploy it with Wrangler, in order to do so first make sure to be\nlogged into your Cloudflare account:",[467,978],{"command":482},[239,980,485],{},[467,982],{"command":983},"wrangler pages deploy",[234,985,987],{"id":986},"deploy-within-cicd-using-github-actions","Deploy within CI/CD using GitHub Actions",[239,989,990,991,996],{},"Regardless on whether you're using Cloudflare Pages or Cloudflare Workers, you can use the ",[261,992,995],{"href":993,"rel":994},"https://github.com/marketplace/actions/deploy-to-cloudflare-workers-with-wrangler",[270],"Wrangler GitHub actions"," to deploy your application.",[255,998,999],{},[239,1000,1001,1004,1005,1009,1010,1012],{},[242,1002,1003],{},"Note:"," Remember to ",[261,1006,1008],{"href":1007},"/deploy#changing-the-deployment-preset","instruct Nitro to use the correct preset"," (note that this is necessary for all presets including the ",[247,1011,849],{}," one).",[234,1014,1016],{"id":1015},"environment-variables","Environment Variables",[239,1018,1019,1020,1023,1024,1027],{},"Nitro allows you to universally access environment variables using ",[247,1021,1022],{},"process.env"," or ",[247,1025,1026],{},"import.meta.env"," or the runtime config.",[255,1029,1030],{},[239,1031,1032,1033,1036],{},"Make sure to only access environment variables ",[242,1034,1035],{},"within the event lifecycle","  and not in global contexts since Cloudflare only makes them available during the request lifecycle and not before.",[239,1038,1039,1042,1043,1046,1047,1050],{},[242,1040,1041],{},"Example:"," If you have set the ",[247,1044,1045],{},"SECRET"," and ",[247,1048,1049],{},"NITRO_HELLO_THERE"," environment variables set you can access them in the following way:",[291,1052,1054],{"className":293,"code":1053,"language":295,"meta":5,"style":5},"import { defineHandler } from \"nitro/h3\";\nimport { useRuntimeConfig } from \"nitro/runtime-config\";\n\nconsole.log(process.env.SECRET) // note that this is in the global scope! so it doesn't actually work and the variable is undefined!\n\nexport default defineHandler((event) => {\n  // note that all the below are valid ways of accessing the above mentioned variables\n  useRuntimeConfig().helloThere\n  useRuntimeConfig().secret\n  process.env.NITRO_HELLO_THERE\n  import.meta.env.SECRET\n});\n",[247,1055,1056,1070,1084,1088,1107,1111,1132,1137,1145,1152,1160,1176],{"__ignoreMap":5},[299,1057,1058,1060,1063,1065,1068],{"class":301,"line":302},[299,1059,306],{"class":305},[299,1061,1062],{"class":309}," { defineHandler } ",[299,1064,313],{"class":305},[299,1066,1067],{"class":316}," \"nitro/h3\"",[299,1069,320],{"class":309},[299,1071,1072,1074,1077,1079,1082],{"class":301,"line":323},[299,1073,306],{"class":305},[299,1075,1076],{"class":309}," { useRuntimeConfig } ",[299,1078,313],{"class":305},[299,1080,1081],{"class":316}," \"nitro/runtime-config\"",[299,1083,320],{"class":309},[299,1085,1086],{"class":301,"line":330},[299,1087,327],{"emptyLinePlaceholder":326},[299,1089,1090,1093,1096,1099,1101,1104],{"class":301,"line":346},[299,1091,1092],{"class":309},"console.",[299,1094,1095],{"class":339},"log",[299,1097,1098],{"class":309},"(process.env.",[299,1100,1045],{"class":381},[299,1102,1103],{"class":309},") ",[299,1105,1106],{"class":625},"// note that this is in the global scope! so it doesn't actually work and the variable is undefined!\n",[299,1108,1109],{"class":301,"line":358},[299,1110,327],{"emptyLinePlaceholder":326},[299,1112,1113,1115,1117,1120,1123,1125,1127,1130],{"class":301,"line":369},[299,1114,333],{"class":305},[299,1116,336],{"class":305},[299,1118,1119],{"class":339}," defineHandler",[299,1121,1122],{"class":309},"((",[299,1124,600],{"class":599},[299,1126,1103],{"class":309},[299,1128,1129],{"class":305},"=>",[299,1131,585],{"class":309},[299,1133,1134],{"class":301,"line":375},[299,1135,1136],{"class":625},"  // note that all the below are valid ways of accessing the above mentioned variables\n",[299,1138,1139,1142],{"class":301,"line":387},[299,1140,1141],{"class":339},"  useRuntimeConfig",[299,1143,1144],{"class":309},"().helloThere\n",[299,1146,1147,1149],{"class":301,"line":396},[299,1148,1141],{"class":339},[299,1150,1151],{"class":309},"().secret\n",[299,1153,1154,1157],{"class":301,"line":402},[299,1155,1156],{"class":309},"  process.env.",[299,1158,1159],{"class":381},"NITRO_HELLO_THERE\n",[299,1161,1162,1165,1167,1170,1173],{"class":301,"line":808},[299,1163,1164],{"class":305},"  import",[299,1166,272],{"class":309},[299,1168,1169],{"class":381},"meta",[299,1171,1172],{"class":309},".env.",[299,1174,1175],{"class":381},"SECRET\n",[299,1177,1178],{"class":301,"line":813},[299,1179,1180],{"class":309},"});\n",[449,1182,1184],{"id":1183},"specify-variables-in-development-mode","Specify Variables in Development Mode",[239,1186,1187,1188,1023,1191,1194],{},"For development, you can use a ",[247,1189,1190],{},".env",[247,1192,1193],{},".env.local"," file to specify environment variables:",[291,1196,1200],{"className":1197,"code":1198,"language":1199,"meta":5,"style":5},"language-ini shiki shiki-themes github-light github-dark github-dark","NITRO_HELLO_THERE=\"captain\"\nSECRET=\"top-secret\"\n","ini",[247,1201,1202,1212],{"__ignoreMap":5},[299,1203,1204,1206,1209],{"class":301,"line":302},[299,1205,1049],{"class":305},[299,1207,1208],{"class":309},"=",[299,1210,1211],{"class":316},"\"captain\"\n",[299,1213,1214,1216,1218],{"class":301,"line":323},[299,1215,1045],{"class":305},[299,1217,1208],{"class":309},[299,1219,1220],{"class":316},"\"top-secret\"\n",[255,1222,1223],{},[239,1224,1225,1227,1228,1046,1230,1232,1233,1236],{},[242,1226,1003],{}," Make sure you add ",[247,1229,1190],{},[247,1231,1193],{}," to the ",[247,1234,1235],{},".gitignore"," file so that you don't commit it as it can contain sensitive information.",[449,1238,1240],{"id":1239},"specify-variables-for-local-previews","Specify Variables for local previews",[239,1242,1243,1244,1023,1246,1248,1249,1252,1253,1046,1258,1263],{},"After build, when you try out your project locally with ",[247,1245,469],{},[247,1247,970],{},", in order to have access to environment variables you will need to specify the in a ",[247,1250,1251],{},".dev.vars"," file in the root of your project (as presented in the ",[261,1254,1257],{"href":1255,"rel":1256},"https://developers.cloudflare.com/pages/functions/bindings/#interact-with-your-environment-variables-locally",[270],"Pages",[261,1259,1262],{"href":1260,"rel":1261},"https://developers.cloudflare.com/workers/configuration/environment-variables/#interact-with-environment-variables-locally",[270],"Workers"," documentation).",[239,1265,1266,1267,1023,1269,1271,1272,1274],{},"If you are using a ",[247,1268,1190],{},[247,1270,1193],{}," file while developing, your ",[247,1273,1251],{}," should be identical to it.",[255,1276,1277],{},[239,1278,1279,1227,1281,1232,1283,1236],{},[242,1280,1003],{},[247,1282,1251],{},[247,1284,1235],{},[449,1286,1288],{"id":1287},"specify-variables-for-production","Specify Variables for Production",[239,1290,1291,1292,1299],{},"For production, use the Cloudflare dashboard or the ",[261,1293,1296],{"href":1294,"rel":1295},"https://developers.cloudflare.com/workers/wrangler/commands/#secret",[270],[247,1297,1298],{},"wrangler secret"," command to set environment variables and secrets.",[449,1301,1303,1304,226,1307],{"id":1302},"specify-variables-using-wranglertomlwranglerjson","Specify Variables using ",[247,1305,1306],{},"wrangler.toml",[247,1308,415],{},[239,1310,1311,1312,226,1314,1316],{},"You can specify a custom ",[247,1313,1306],{},[247,1315,415],{}," file and define vars inside.",[641,1318,1319],{},[239,1320,1321],{},"Note that this isn't recommend for sensitive data like secrets.",[239,1323,1324],{},[242,1325,1041],{},[1327,1328,1329,1392],"code-group",{},[291,1330,1332],{"className":1197,"code":1331,"filename":1306,"language":1199,"meta":5,"style":5},"# Shared\n[vars]\nNITRO_HELLO_THERE=\"general\"\nSECRET=\"secret\"\n\n# Override values for `--env production` usage\n[env.production.vars]\nNITRO_HELLO_THERE=\"captain\"\nSECRET=\"top-secret\"\n",[247,1333,1334,1339,1344,1353,1362,1366,1371,1376,1384],{"__ignoreMap":5},[299,1335,1336],{"class":301,"line":302},[299,1337,1338],{"class":625},"# Shared\n",[299,1340,1341],{"class":301,"line":323},[299,1342,1343],{"class":339},"[vars]\n",[299,1345,1346,1348,1350],{"class":301,"line":330},[299,1347,1049],{"class":305},[299,1349,1208],{"class":309},[299,1351,1352],{"class":316},"\"general\"\n",[299,1354,1355,1357,1359],{"class":301,"line":346},[299,1356,1045],{"class":305},[299,1358,1208],{"class":309},[299,1360,1361],{"class":316},"\"secret\"\n",[299,1363,1364],{"class":301,"line":358},[299,1365,327],{"emptyLinePlaceholder":326},[299,1367,1368],{"class":301,"line":369},[299,1369,1370],{"class":625},"# Override values for `--env production` usage\n",[299,1372,1373],{"class":301,"line":375},[299,1374,1375],{"class":339},"[env.production.vars]\n",[299,1377,1378,1380,1382],{"class":301,"line":387},[299,1379,1049],{"class":305},[299,1381,1208],{"class":309},[299,1383,1211],{"class":316},[299,1385,1386,1388,1390],{"class":301,"line":396},[299,1387,1045],{"class":305},[299,1389,1208],{"class":309},[299,1391,1220],{"class":316},[291,1393,1397],{"className":1394,"code":1395,"filename":415,"language":1396,"meta":5,"style":5},"language-json shiki shiki-themes github-light github-dark github-dark","{\n  \"vars\": {\n    \"NITRO_HELLO_THERE\": \"general\",\n    \"SECRET\": \"secret\"\n  },\n  \"env\": {\n    \"production\": {\n      \"vars\": {\n        \"NITRO_HELLO_THERE\": \"captain\",\n        \"SECRET\": \"top-secret\"\n      }\n    }\n  }\n}\n\n","json",[247,1398,1399,1404,1412,1425,1434,1438,1445,1452,1459,1471,1480,1485,1489,1493],{"__ignoreMap":5},[299,1400,1401],{"class":301,"line":302},[299,1402,1403],{"class":309},"{\n",[299,1405,1406,1409],{"class":301,"line":323},[299,1407,1408],{"class":381},"  \"vars\"",[299,1410,1411],{"class":309},": {\n",[299,1413,1414,1417,1420,1423],{"class":301,"line":330},[299,1415,1416],{"class":381},"    \"NITRO_HELLO_THERE\"",[299,1418,1419],{"class":309},": ",[299,1421,1422],{"class":316},"\"general\"",[299,1424,355],{"class":309},[299,1426,1427,1430,1432],{"class":301,"line":346},[299,1428,1429],{"class":381},"    \"SECRET\"",[299,1431,1419],{"class":309},[299,1433,1361],{"class":316},[299,1435,1436],{"class":301,"line":358},[299,1437,774],{"class":309},[299,1439,1440,1443],{"class":301,"line":369},[299,1441,1442],{"class":381},"  \"env\"",[299,1444,1411],{"class":309},[299,1446,1447,1450],{"class":301,"line":375},[299,1448,1449],{"class":381},"    \"production\"",[299,1451,1411],{"class":309},[299,1453,1454,1457],{"class":301,"line":387},[299,1455,1456],{"class":381},"      \"vars\"",[299,1458,1411],{"class":309},[299,1460,1461,1464,1466,1469],{"class":301,"line":396},[299,1462,1463],{"class":381},"        \"NITRO_HELLO_THERE\"",[299,1465,1419],{"class":309},[299,1467,1468],{"class":316},"\"captain\"",[299,1470,355],{"class":309},[299,1472,1473,1476,1478],{"class":301,"line":402},[299,1474,1475],{"class":381},"        \"SECRET\"",[299,1477,1419],{"class":309},[299,1479,1220],{"class":316},[299,1481,1482],{"class":301,"line":808},[299,1483,1484],{"class":309},"      }\n",[299,1486,1487],{"class":301,"line":813},[299,1488,399],{"class":309},[299,1490,1491],{"class":301,"line":818},[299,1492,631],{"class":309},[299,1494,1495],{"class":301,"line":828},[299,1496,636],{"class":309},[234,1498,1500],{"id":1499},"direct-access-to-cloudflare-bindings","Direct access to Cloudflare bindings",[239,1502,1503,1504,1509,1510,957],{},"Bindings are what allows you to interact with resources from the Cloudflare platform, examples of such resources are key-value data storages (",[261,1505,1508],{"href":1506,"rel":1507},"https://developers.cloudflare.com/kv/",[270],"KVs",") and serverless SQL databases (",[261,1511,1514],{"href":1512,"rel":1513},"https://developers.cloudflare.com/d1/",[270],"D1s",[251,1516,1517],{},[239,1518,1519,1520,1046,1524,1528],{},"For more details on Bindings and how to use them please refer to the Cloudflare ",[261,1521,1257],{"href":1522,"rel":1523},"https://developers.cloudflare.com/pages/functions/bindings/",[270],[261,1525,1262],{"href":1526,"rel":1527},"https://developers.cloudflare.com/workers/configuration/bindings/#bindings",[270]," documentation.",[1530,1531,1532],"tip",{},[239,1533,1534,1535,1046,1537,1539],{},"\nNitro provides high level API to interact with primitives such as ",[261,1536,68],{"href":69},[261,1538,38],{"href":39}," and you are highly recommended to prefer using them instead of directly depending on low-level APIs for usage stability.",[251,1541],{"to":39,"title":1542},"Database Layer",[251,1544],{"to":69,"title":68},[239,1546,1547,1548,1551],{},"In runtime, you can access bindings from the request event, by accessing its ",[247,1549,1550],{},"context.cloudflare.env"," field, this is for example how you can access a D1 bindings:",[291,1553,1555],{"className":293,"code":1554,"language":295,"meta":5,"style":5},"import { defineHandler } from \"nitro/h3\";\n\ndefineHandler(async (event) => {\n  const { cloudflare } = event.context\n  const stmt = await cloudflare.env.MY_D1.prepare('SELECT id FROM table')\n  const { results } = await stmt.all()\n})\n",[247,1556,1557,1569,1573,1593,1612,1644,1668],{"__ignoreMap":5},[299,1558,1559,1561,1563,1565,1567],{"class":301,"line":302},[299,1560,306],{"class":305},[299,1562,1062],{"class":309},[299,1564,313],{"class":305},[299,1566,1067],{"class":316},[299,1568,320],{"class":309},[299,1570,1571],{"class":301,"line":323},[299,1572,327],{"emptyLinePlaceholder":326},[299,1574,1575,1578,1580,1583,1585,1587,1589,1591],{"class":301,"line":330},[299,1576,1577],{"class":339},"defineHandler",[299,1579,596],{"class":309},[299,1581,1582],{"class":305},"async",[299,1584,951],{"class":309},[299,1586,600],{"class":599},[299,1588,1103],{"class":309},[299,1590,1129],{"class":305},[299,1592,585],{"class":309},[299,1594,1595,1598,1601,1604,1607,1609],{"class":301,"line":346},[299,1596,1597],{"class":305},"  const",[299,1599,1600],{"class":309}," { ",[299,1602,1603],{"class":381},"cloudflare",[299,1605,1606],{"class":309}," } ",[299,1608,1208],{"class":305},[299,1610,1611],{"class":309}," event.context\n",[299,1613,1614,1616,1619,1622,1625,1628,1631,1633,1636,1638,1641],{"class":301,"line":358},[299,1615,1597],{"class":305},[299,1617,1618],{"class":381}," stmt",[299,1620,1621],{"class":305}," =",[299,1623,1624],{"class":305}," await",[299,1626,1627],{"class":309}," cloudflare.env.",[299,1629,1630],{"class":381},"MY_D1",[299,1632,272],{"class":309},[299,1634,1635],{"class":339},"prepare",[299,1637,596],{"class":309},[299,1639,1640],{"class":316},"'SELECT id FROM table'",[299,1642,1643],{"class":309},")\n",[299,1645,1646,1648,1650,1653,1655,1657,1659,1662,1665],{"class":301,"line":369},[299,1647,1597],{"class":305},[299,1649,1600],{"class":309},[299,1651,1652],{"class":381},"results",[299,1654,1606],{"class":309},[299,1656,1208],{"class":305},[299,1658,1624],{"class":305},[299,1660,1661],{"class":309}," stmt.",[299,1663,1664],{"class":339},"all",[299,1666,1667],{"class":309},"()\n",[299,1669,1670],{"class":301,"line":375},[299,1671,405],{"class":309},[449,1673,1675],{"id":1674},"access-to-the-bindings-in-local-dev","Access to the bindings in local dev",[239,1677,1678,1679,226,1682,226,1684,1686],{},"To access bindings in dev mode, we first define them. You can do this in a ",[247,1680,1681],{},"wrangler.jsonc",[247,1683,415],{},[247,1685,1306],{}," file",[239,1688,1689,1690,603],{},"For example, to define a variable and a KV namespace in ",[247,1691,1306],{},[1327,1693,1694,1746],{},[291,1695,1697],{"className":1197,"code":1696,"filename":1306,"language":1199,"meta":5,"style":5},"[vars]\nMY_VARIABLE=\"my-value\"\n\n[[kv_namespaces]]\nbinding = \"MY_KV\"\nid = \"xxx\"\n",[247,1698,1699,1703,1713,1717,1725,1736],{"__ignoreMap":5},[299,1700,1701],{"class":301,"line":302},[299,1702,1343],{"class":339},[299,1704,1705,1708,1710],{"class":301,"line":323},[299,1706,1707],{"class":305},"MY_VARIABLE",[299,1709,1208],{"class":309},[299,1711,1712],{"class":316},"\"my-value\"\n",[299,1714,1715],{"class":301,"line":330},[299,1716,327],{"emptyLinePlaceholder":326},[299,1718,1719,1722],{"class":301,"line":346},[299,1720,1721],{"class":339},"[[kv_namespaces]",[299,1723,1724],{"class":309},"]\n",[299,1726,1727,1730,1733],{"class":301,"line":358},[299,1728,1729],{"class":305},"binding",[299,1731,1732],{"class":309}," = ",[299,1734,1735],{"class":316},"\"MY_KV\"\n",[299,1737,1738,1741,1743],{"class":301,"line":369},[299,1739,1740],{"class":305},"id",[299,1742,1732],{"class":309},[299,1744,1745],{"class":316},"\"xxx\"\n",[291,1747,1749],{"className":1394,"code":1748,"filename":415,"language":1396,"meta":5,"style":5},"{\n  \"vars\": {\n    \"MY_VARIABLE\": \"my-value\",\n  },\n  \"kv_namespaces\": [\n    {\n      \"binding\": \"MY_KV\",\n      \"id\": \"xxx\"\n    }\n  ]\n}\n",[247,1750,1751,1755,1761,1773,1777,1785,1790,1802,1811,1815,1820],{"__ignoreMap":5},[299,1752,1753],{"class":301,"line":302},[299,1754,1403],{"class":309},[299,1756,1757,1759],{"class":301,"line":323},[299,1758,1408],{"class":381},[299,1760,1411],{"class":309},[299,1762,1763,1766,1768,1771],{"class":301,"line":330},[299,1764,1765],{"class":381},"    \"MY_VARIABLE\"",[299,1767,1419],{"class":309},[299,1769,1770],{"class":316},"\"my-value\"",[299,1772,355],{"class":309},[299,1774,1775],{"class":301,"line":346},[299,1776,774],{"class":309},[299,1778,1779,1782],{"class":301,"line":358},[299,1780,1781],{"class":381},"  \"kv_namespaces\"",[299,1783,1784],{"class":309},": [\n",[299,1786,1787],{"class":301,"line":369},[299,1788,1789],{"class":309},"    {\n",[299,1791,1792,1795,1797,1800],{"class":301,"line":375},[299,1793,1794],{"class":381},"      \"binding\"",[299,1796,1419],{"class":309},[299,1798,1799],{"class":316},"\"MY_KV\"",[299,1801,355],{"class":309},[299,1803,1804,1807,1809],{"class":301,"line":387},[299,1805,1806],{"class":381},"      \"id\"",[299,1808,1419],{"class":309},[299,1810,1745],{"class":316},[299,1812,1813],{"class":301,"line":396},[299,1814,399],{"class":309},[299,1816,1817],{"class":301,"line":402},[299,1818,1819],{"class":309},"  ]\n",[299,1821,1822],{"class":301,"line":808},[299,1823,636],{"class":309},[239,1825,1826,1827,1830],{},"Next we install the required ",[247,1828,1829],{},"wrangler"," package (if not already installed):",[1832,1833],"pm-install",{"name":1834},"wrangler -D",[239,1836,1837],{},"From this moment, when running",[463,1839],{"script":1840},"dev",[239,1842,1843,1844,1046,1846,1849],{},"you will be able to access the ",[247,1845,1707],{},[247,1847,1848],{},"MY_KV"," from the request event just as illustrated above.",[1851,1852,1854],"h4",{"id":1853},"wrangler-environments","Wrangler environments",[239,1856,1857],{},"If you have multiple Wrangler environments, you can specify which Wrangler environment to use during Cloudflare dev emulation:",[291,1859,1861],{"className":293,"code":1860,"filename":288,"language":295,"meta":5,"style":5},"import { defineNitroConfig } from \"nitro/config\";\n\nexport default defineNitroConfig({\n  preset: 'cloudflare-module',\n  cloudflare: {\n    dev: {\n      environment: 'preview'\n    }\n  }\n})\n",[247,1862,1863,1875,1879,1889,1898,1902,1907,1915,1919,1923],{"__ignoreMap":5},[299,1864,1865,1867,1869,1871,1873],{"class":301,"line":302},[299,1866,306],{"class":305},[299,1868,310],{"class":309},[299,1870,313],{"class":305},[299,1872,317],{"class":316},[299,1874,320],{"class":309},[299,1876,1877],{"class":301,"line":323},[299,1878,327],{"emptyLinePlaceholder":326},[299,1880,1881,1883,1885,1887],{"class":301,"line":330},[299,1882,333],{"class":305},[299,1884,336],{"class":305},[299,1886,340],{"class":339},[299,1888,343],{"class":309},[299,1890,1891,1893,1896],{"class":301,"line":346},[299,1892,751],{"class":309},[299,1894,1895],{"class":316},"'cloudflare-module'",[299,1897,355],{"class":309},[299,1899,1900],{"class":301,"line":358},[299,1901,678],{"class":309},[299,1903,1904],{"class":301,"line":369},[299,1905,1906],{"class":309},"    dev: {\n",[299,1908,1909,1912],{"class":301,"line":375},[299,1910,1911],{"class":309},"      environment: ",[299,1913,1914],{"class":316},"'preview'\n",[299,1916,1917],{"class":301,"line":387},[299,1918,399],{"class":309},[299,1920,1921],{"class":301,"line":396},[299,1922,631],{"class":309},[299,1924,1925],{"class":301,"line":402},[299,1926,405],{"class":309},[1928,1929,1930],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}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 .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":5,"searchDepth":323,"depth":323,"links":1932},[1933,1940,1944,1945,1952],{"id":236,"depth":323,"text":237,"children":1934},[1935,1936,1937,1938,1939],{"id":451,"depth":330,"text":452},{"id":472,"depth":330,"text":473},{"id":491,"depth":330,"text":492},{"id":553,"depth":330,"text":554},{"id":697,"depth":330,"text":698},{"id":841,"depth":323,"text":842,"children":1941},[1942,1943],{"id":960,"depth":330,"text":452},{"id":973,"depth":330,"text":473},{"id":986,"depth":323,"text":987},{"id":1015,"depth":323,"text":1016,"children":1946},[1947,1948,1949,1950],{"id":1183,"depth":330,"text":1184},{"id":1239,"depth":330,"text":1240},{"id":1287,"depth":330,"text":1288},{"id":1302,"depth":330,"text":1951},"Specify Variables using wrangler.toml/wrangler.json",{"id":1499,"depth":323,"text":1500,"children":1953},[1954],{"id":1674,"depth":330,"text":1675},"Deploy Nitro apps to Cloudflare.","md",{},{},{"title":137,"description":1955},"ne9ZYh7SWPD72pKaybAO5jhBQ0Me8APs5PzgI-j42PE",[1962,1964],{"title":133,"path":134,"stem":135,"description":1963,"children":-1},"Deploy Nitro apps to Cleavr.",{"title":141,"path":142,"stem":143,"description":1965,"children":-1},"Deploy Nitro apps to Deno Deploy.",1773176971944]