[{"data":1,"prerenderedAt":4929},["ShallowReactive",2],{"navigation":3,"-docs-guide-directory-structure-server":1107,"-docs-guide-directory-structure-server-surround":4924},[4,1018],{"title":5,"titleTemplate":6,"icon":7,"path":8,"stem":9,"children":10,"page":108},"Docs",null,"i-lucide-bookmark","/docs","docs",[11,109,345,805,897,934,976],{"title":12,"titleTemplate":13,"icon":14,"path":15,"stem":16,"children":17,"page":108},"Get Started","%s · Get Started with Nuxt","i-lucide-rocket","/docs/getting-started","docs/1.getting-started",[18,23,28,33,38,43,48,53,58,63,68,73,78,83,88,93,98,103],{"title":19,"path":20,"stem":21,"titleTemplate":6,"icon":22},"Introduction","/docs/getting-started/introduction","docs/1.getting-started/01.introduction","i-lucide-info",{"title":24,"path":25,"stem":26,"titleTemplate":6,"icon":27},"Installation","/docs/getting-started/installation","docs/1.getting-started/02.installation","i-lucide-play",{"title":29,"path":30,"stem":31,"titleTemplate":6,"icon":32},"Configuration","/docs/getting-started/configuration","docs/1.getting-started/03.configuration","i-lucide-cog",{"title":34,"path":35,"stem":36,"titleTemplate":6,"icon":37},"Views","/docs/getting-started/views","docs/1.getting-started/04.views","i-lucide-panels-top-left",{"title":39,"path":40,"stem":41,"titleTemplate":6,"icon":42},"Assets","/docs/getting-started/assets","docs/1.getting-started/05.assets","i-lucide-image",{"title":44,"path":45,"stem":46,"titleTemplate":6,"icon":47},"Styling","/docs/getting-started/styling","docs/1.getting-started/06.styling","i-lucide-palette",{"title":49,"path":50,"stem":51,"titleTemplate":6,"icon":52},"Routing","/docs/getting-started/routing","docs/1.getting-started/07.routing","i-lucide-milestone",{"title":54,"path":55,"stem":56,"titleTemplate":6,"icon":57},"SEO and Meta","/docs/getting-started/seo-meta","docs/1.getting-started/08.seo-meta","i-lucide-file-search",{"title":59,"path":60,"stem":61,"titleTemplate":6,"icon":62},"Transitions","/docs/getting-started/transitions","docs/1.getting-started/09.transitions","i-lucide-toggle-right",{"title":64,"path":65,"stem":66,"titleTemplate":6,"icon":67},"Data Fetching","/docs/getting-started/data-fetching","docs/1.getting-started/10.data-fetching","i-lucide-cable",{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"State Management","/docs/getting-started/state-management","docs/1.getting-started/11.state-management","i-lucide-database",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"Error Handling","/docs/getting-started/error-handling","docs/1.getting-started/12.error-handling","i-lucide-bug-off",{"title":79,"path":80,"stem":81,"titleTemplate":6,"icon":82},"Server","/docs/getting-started/server","docs/1.getting-started/13.server","i-lucide-pc-case",{"title":84,"path":85,"stem":86,"titleTemplate":6,"icon":87},"Layers","/docs/getting-started/layers","docs/1.getting-started/14.layers","i-lucide-layers",{"title":89,"path":90,"stem":91,"titleTemplate":6,"icon":92},"Prerendering","/docs/getting-started/prerendering","docs/1.getting-started/15.prerendering","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"titleTemplate":6,"icon":97},"Deployment","/docs/getting-started/deployment","docs/1.getting-started/16.deployment","i-lucide-cloud",{"title":99,"path":100,"stem":101,"titleTemplate":6,"icon":102},"Testing","/docs/getting-started/testing","docs/1.getting-started/17.testing","i-lucide-circle-check",{"title":104,"path":105,"stem":106,"titleTemplate":6,"icon":107},"Upgrade Guide","/docs/getting-started/upgrade","docs/1.getting-started/18.upgrade","i-lucide-circle-arrow-up",false,{"title":110,"titleTemplate":6,"icon":111,"path":112,"stem":113,"children":114,"page":108},"Guide","i-lucide-book-open","/docs/guide","docs/2.guide",[115,158,271,322],{"title":116,"titleTemplate":117,"icon":118,"path":119,"stem":120,"children":121,"page":108},"Key Concepts","%s · Nuxt Concepts","i-lucide-medal","/docs/guide/concepts","docs/2.guide/1.concepts",[122,126,130,134,138,142,146,150,154],{"title":123,"path":124,"stem":125,"titleTemplate":6},"Auto-imports","/docs/guide/concepts/auto-imports","docs/2.guide/1.concepts/1.auto-imports",{"title":127,"path":128,"stem":129,"titleTemplate":6},"Nuxt Lifecycle","/docs/guide/concepts/nuxt-lifecycle","docs/2.guide/1.concepts/10.nuxt-lifecycle",{"title":131,"path":132,"stem":133,"titleTemplate":6},"Vue.js Development","/docs/guide/concepts/vuejs-development","docs/2.guide/1.concepts/2.vuejs-development",{"title":135,"path":136,"stem":137,"titleTemplate":6},"Rendering Modes","/docs/guide/concepts/rendering","docs/2.guide/1.concepts/3.rendering",{"title":139,"path":140,"stem":141,"titleTemplate":6},"Server Engine","/docs/guide/concepts/server-engine","docs/2.guide/1.concepts/4.server-engine",{"title":143,"path":144,"stem":145,"titleTemplate":6},"Modules","/docs/guide/concepts/modules","docs/2.guide/1.concepts/5.modules",{"title":147,"path":148,"stem":149,"titleTemplate":6},"ES Modules","/docs/guide/concepts/esm","docs/2.guide/1.concepts/7.esm",{"title":151,"path":152,"stem":153,"titleTemplate":6},"TypeScript","/docs/guide/concepts/typescript","docs/2.guide/1.concepts/8.typescript",{"title":155,"path":156,"stem":157,"titleTemplate":6},"Code Style","/docs/guide/concepts/code-style","docs/2.guide/1.concepts/9.code-style",{"title":159,"titleTemplate":160,"icon":161,"path":162,"stem":163,"children":164,"page":108},"Directory Structure","%s · Nuxt Directory Structure","i-lucide-folders","/docs/guide/directory-structure","docs/2.guide/2.directory-structure",[165,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,235,239,243,247,251,255,259,263,267],{"title":166,"path":167,"stem":168,"titleTemplate":6,"icon":169},".nuxt","/docs/guide/directory-structure/nuxt","docs/2.guide/2.directory-structure/0.nuxt","i-lucide-folder",{"title":171,"path":172,"stem":173,"titleTemplate":6,"icon":169},".output","/docs/guide/directory-structure/output","docs/2.guide/2.directory-structure/0.output",{"title":175,"path":176,"stem":177,"titleTemplate":6,"icon":169},"assets","/docs/guide/directory-structure/assets","docs/2.guide/2.directory-structure/1.assets",{"title":179,"path":180,"stem":181,"titleTemplate":6,"icon":169},"components","/docs/guide/directory-structure/components","docs/2.guide/2.directory-structure/1.components",{"title":183,"path":184,"stem":185,"titleTemplate":6,"icon":169},"composables","/docs/guide/directory-structure/composables","docs/2.guide/2.directory-structure/1.composables",{"title":187,"path":188,"stem":189,"titleTemplate":6,"icon":169},"content","/docs/guide/directory-structure/content","docs/2.guide/2.directory-structure/1.content",{"title":191,"path":192,"stem":193,"titleTemplate":6,"icon":169},"layouts","/docs/guide/directory-structure/layouts","docs/2.guide/2.directory-structure/1.layouts",{"title":195,"path":196,"stem":197,"titleTemplate":6,"icon":169},"middleware","/docs/guide/directory-structure/middleware","docs/2.guide/2.directory-structure/1.middleware",{"title":199,"path":200,"stem":201,"titleTemplate":6,"icon":169},"modules","/docs/guide/directory-structure/modules","docs/2.guide/2.directory-structure/1.modules",{"title":203,"path":204,"stem":205,"titleTemplate":6,"icon":169},"node_modules","/docs/guide/directory-structure/node_modules","docs/2.guide/2.directory-structure/1.node_modules",{"title":207,"path":208,"stem":209,"titleTemplate":6,"icon":169},"pages","/docs/guide/directory-structure/pages","docs/2.guide/2.directory-structure/1.pages",{"title":211,"path":212,"stem":213,"titleTemplate":6,"icon":169},"plugins","/docs/guide/directory-structure/plugins","docs/2.guide/2.directory-structure/1.plugins",{"title":215,"path":216,"stem":217,"titleTemplate":6,"icon":169},"public","/docs/guide/directory-structure/public","docs/2.guide/2.directory-structure/1.public",{"title":219,"path":220,"stem":221,"titleTemplate":6,"icon":169},"server","/docs/guide/directory-structure/server","docs/2.guide/2.directory-structure/1.server",{"title":223,"path":224,"stem":225,"titleTemplate":6,"icon":169},"shared","/docs/guide/directory-structure/shared","docs/2.guide/2.directory-structure/1.shared",{"title":227,"path":228,"stem":229,"titleTemplate":6,"icon":169},"utils","/docs/guide/directory-structure/utils","docs/2.guide/2.directory-structure/1.utils",{"title":231,"path":232,"stem":233,"titleTemplate":6,"icon":234},".env","/docs/guide/directory-structure/env","docs/2.guide/2.directory-structure/2.env","i-lucide-file",{"title":236,"path":237,"stem":238,"titleTemplate":6,"icon":234},".gitignore","/docs/guide/directory-structure/gitignore","docs/2.guide/2.directory-structure/2.gitignore",{"title":240,"path":241,"stem":242,"titleTemplate":6,"icon":234},".nuxtignore","/docs/guide/directory-structure/nuxtignore","docs/2.guide/2.directory-structure/2.nuxtignore",{"title":244,"path":245,"stem":246,"titleTemplate":6,"icon":234},".nuxtrc","/docs/guide/directory-structure/nuxtrc","docs/2.guide/2.directory-structure/2.nuxtrc",{"title":248,"path":249,"stem":250,"titleTemplate":6,"icon":234},"app.vue","/docs/guide/directory-structure/app","docs/2.guide/2.directory-structure/3.app",{"title":252,"path":253,"stem":254,"titleTemplate":6,"icon":234},"app.config.ts","/docs/guide/directory-structure/app-config","docs/2.guide/2.directory-structure/3.app-config",{"title":256,"path":257,"stem":258,"titleTemplate":6,"icon":234},"error.vue","/docs/guide/directory-structure/error","docs/2.guide/2.directory-structure/3.error",{"title":260,"path":261,"stem":262,"titleTemplate":6,"icon":234},"nuxt.config.ts","/docs/guide/directory-structure/nuxt-config","docs/2.guide/2.directory-structure/3.nuxt-config",{"title":264,"path":265,"stem":266,"titleTemplate":6,"icon":234},"package.json","/docs/guide/directory-structure/package","docs/2.guide/2.directory-structure/3.package",{"title":268,"path":269,"stem":270,"titleTemplate":6,"icon":234},"tsconfig.json","/docs/guide/directory-structure/tsconfig","docs/2.guide/2.directory-structure/3.tsconfig",{"title":272,"titleTemplate":273,"icon":274,"path":275,"stem":276,"children":277,"page":108},"Going Further","%s · Nuxt Advanced","i-lucide-star","/docs/guide/going-further","docs/2.guide/3.going-further",[278,282,286,290,294,298,302,306,310,314,318],{"title":279,"path":280,"stem":281,"titleTemplate":6},"Experimental Features","/docs/guide/going-further/experimental-features","docs/2.guide/3.going-further/1.experimental-features",{"title":283,"path":284,"stem":285,"titleTemplate":6},"Features","/docs/guide/going-further/features","docs/2.guide/3.going-further/1.features",{"title":287,"path":288,"stem":289,"titleTemplate":6},"How Nuxt Works?","/docs/guide/going-further/internals","docs/2.guide/3.going-further/1.internals",{"title":291,"path":292,"stem":293,"titleTemplate":6},"Runtime Config","/docs/guide/going-further/runtime-config","docs/2.guide/3.going-further/10.runtime-config",{"title":295,"path":296,"stem":297,"titleTemplate":6},"Nightly Release Channel","/docs/guide/going-further/nightly-release-channel","docs/2.guide/3.going-further/11.nightly-release-channel",{"title":299,"path":300,"stem":301,"titleTemplate":6},"Lifecycle Hooks","/docs/guide/going-further/hooks","docs/2.guide/3.going-further/2.hooks",{"title":303,"path":304,"stem":305,"titleTemplate":6},"Module Author Guide","/docs/guide/going-further/modules","docs/2.guide/3.going-further/3.modules",{"title":307,"path":308,"stem":309,"titleTemplate":6},"Nuxt Kit","/docs/guide/going-further/kit","docs/2.guide/3.going-further/4.kit",{"title":311,"path":312,"stem":313,"titleTemplate":6},"NuxtApp","/docs/guide/going-further/nuxt-app","docs/2.guide/3.going-further/6.nuxt-app",{"title":315,"path":316,"stem":317,"titleTemplate":6},"Authoring Nuxt Layers","/docs/guide/going-further/layers","docs/2.guide/3.going-further/7.layers",{"title":319,"path":320,"stem":321,"titleTemplate":6},"Debugging","/docs/guide/going-further/debugging","docs/2.guide/3.going-further/9.debugging",{"title":323,"titleTemplate":324,"icon":325,"path":326,"stem":327,"children":328,"page":108},"Recipes","%s · Recipes","i-lucide-cooking-pot","/docs/guide/recipes","docs/2.guide/4.recipes",[329,333,337,341],{"title":330,"path":331,"stem":332,"titleTemplate":6},"Custom Routing","/docs/guide/recipes/custom-routing","docs/2.guide/4.recipes/1.custom-routing",{"title":334,"path":335,"stem":336,"titleTemplate":6},"Vite Plugins","/docs/guide/recipes/vite-plugin","docs/2.guide/4.recipes/2.vite-plugin",{"title":338,"path":339,"stem":340,"titleTemplate":6},"Custom useFetch","/docs/guide/recipes/custom-usefetch","docs/2.guide/4.recipes/3.custom-usefetch",{"title":342,"path":343,"stem":344,"titleTemplate":6},"Sessions and Authentication","/docs/guide/recipes/sessions-and-authentication","docs/2.guide/4.recipes/4.sessions-and-authentication",{"title":346,"titleTemplate":347,"icon":348,"path":349,"stem":350,"children":351,"page":108},"API","%s · Nuxt API","i-lucide-code-xml","/docs/api","docs/3.api",[352,416,539,654,721,787,800],{"title":353,"titleTemplate":354,"icon":355,"path":356,"stem":357,"children":358,"page":108},"Components","%s · Nuxt Components","i-lucide-box","/docs/api/components","docs/3.api/1.components",[359,363,367,371,375,379,384,388,392,396,400,404,408,412],{"title":360,"path":361,"stem":362,"titleTemplate":6},"\u003CClientOnly>","/docs/api/components/client-only","docs/3.api/1.components/1.client-only",{"title":364,"path":365,"stem":366,"titleTemplate":6},"\u003CDevOnly>","/docs/api/components/dev-only","docs/3.api/1.components/1.dev-only",{"title":368,"path":369,"stem":370,"titleTemplate":6},"\u003CNuxtClientFallback>","/docs/api/components/nuxt-client-fallback","docs/3.api/1.components/1.nuxt-client-fallback",{"title":372,"path":373,"stem":374,"titleTemplate":6},"\u003CNuxtPicture>","/docs/api/components/nuxt-picture","docs/3.api/1.components/10.nuxt-picture",{"title":376,"path":377,"stem":378,"titleTemplate":6},"\u003CTeleport>","/docs/api/components/teleports","docs/3.api/1.components/11.teleports",{"title":380,"path":381,"stem":382,"titleTemplate":6,"badge":383},"\u003CNuxtRouteAnnouncer>","/docs/api/components/nuxt-route-announcer","docs/3.api/1.components/12.nuxt-route-announcer","New",{"title":385,"path":386,"stem":387,"titleTemplate":6},"\u003CNuxtPage>","/docs/api/components/nuxt-page","docs/3.api/1.components/2.nuxt-page",{"title":389,"path":390,"stem":391,"titleTemplate":6},"\u003CNuxtLayout>","/docs/api/components/nuxt-layout","docs/3.api/1.components/3.nuxt-layout",{"title":393,"path":394,"stem":395,"titleTemplate":6},"\u003CNuxtLink>","/docs/api/components/nuxt-link","docs/3.api/1.components/4.nuxt-link",{"title":397,"path":398,"stem":399,"titleTemplate":6},"\u003CNuxtLoadingIndicator>","/docs/api/components/nuxt-loading-indicator","docs/3.api/1.components/5.nuxt-loading-indicator",{"title":401,"path":402,"stem":403,"titleTemplate":6},"\u003CNuxtErrorBoundary>","/docs/api/components/nuxt-error-boundary","docs/3.api/1.components/6.nuxt-error-boundary",{"title":405,"path":406,"stem":407,"titleTemplate":6},"\u003CNuxtWelcome>","/docs/api/components/nuxt-welcome","docs/3.api/1.components/7.nuxt-welcome",{"title":409,"path":410,"stem":411,"titleTemplate":6},"\u003CNuxtIsland>","/docs/api/components/nuxt-island","docs/3.api/1.components/8.nuxt-island",{"title":413,"path":414,"stem":415,"titleTemplate":6},"\u003CNuxtImg>","/docs/api/components/nuxt-img","docs/3.api/1.components/9.nuxt-img",{"title":417,"titleTemplate":418,"icon":419,"path":420,"stem":421,"children":422,"page":108},"Composables","%s · Nuxt Composables","i-lucide-arrow-left-right","/docs/api/composables","docs/3.api/2.composables",[423,427,431,435,439,443,447,451,455,459,463,467,471,475,479,483,487,491,495,499,503,507,511,515,519,523,527,531,535],{"title":424,"path":425,"stem":426,"titleTemplate":6},"onPrehydrate","/docs/api/composables/on-prehydrate","docs/3.api/2.composables/on-prehydrate",{"title":428,"path":429,"stem":430,"titleTemplate":6},"useAppConfig","/docs/api/composables/use-app-config","docs/3.api/2.composables/use-app-config",{"title":432,"path":433,"stem":434,"titleTemplate":6},"useAsyncData","/docs/api/composables/use-async-data","docs/3.api/2.composables/use-async-data",{"title":436,"path":437,"stem":438,"titleTemplate":6},"useCookie","/docs/api/composables/use-cookie","docs/3.api/2.composables/use-cookie",{"title":440,"path":441,"stem":442,"titleTemplate":6},"useError","/docs/api/composables/use-error","docs/3.api/2.composables/use-error",{"title":444,"path":445,"stem":446,"titleTemplate":6},"useFetch","/docs/api/composables/use-fetch","docs/3.api/2.composables/use-fetch",{"title":448,"path":449,"stem":450,"titleTemplate":6},"useHead","/docs/api/composables/use-head","docs/3.api/2.composables/use-head",{"title":452,"path":453,"stem":454,"titleTemplate":6},"useHeadSafe","/docs/api/composables/use-head-safe","docs/3.api/2.composables/use-head-safe",{"title":456,"path":457,"stem":458,"titleTemplate":6},"useHydration","/docs/api/composables/use-hydration","docs/3.api/2.composables/use-hydration",{"title":460,"path":461,"stem":462,"titleTemplate":6},"useLazyAsyncData","/docs/api/composables/use-lazy-async-data","docs/3.api/2.composables/use-lazy-async-data",{"title":464,"path":465,"stem":466,"titleTemplate":6},"useLazyFetch","/docs/api/composables/use-lazy-fetch","docs/3.api/2.composables/use-lazy-fetch",{"title":468,"path":469,"stem":470,"titleTemplate":6},"useLoadingIndicator","/docs/api/composables/use-loading-indicator","docs/3.api/2.composables/use-loading-indicator",{"title":472,"path":473,"stem":474,"titleTemplate":6},"useNuxtApp","/docs/api/composables/use-nuxt-app","docs/3.api/2.composables/use-nuxt-app",{"title":476,"path":477,"stem":478,"titleTemplate":6},"useNuxtData","/docs/api/composables/use-nuxt-data","docs/3.api/2.composables/use-nuxt-data",{"title":480,"path":481,"stem":482,"titleTemplate":6},"usePreviewMode","/docs/api/composables/use-preview-mode","docs/3.api/2.composables/use-preview-mode",{"title":484,"path":485,"stem":486,"titleTemplate":6},"useRequestEvent","/docs/api/composables/use-request-event","docs/3.api/2.composables/use-request-event",{"title":488,"path":489,"stem":490,"titleTemplate":6},"useRequestFetch","/docs/api/composables/use-request-fetch","docs/3.api/2.composables/use-request-fetch",{"title":492,"path":493,"stem":494,"titleTemplate":6},"useRequestHeader","/docs/api/composables/use-request-header","docs/3.api/2.composables/use-request-header",{"title":496,"path":497,"stem":498,"titleTemplate":6},"useRequestHeaders","/docs/api/composables/use-request-headers","docs/3.api/2.composables/use-request-headers",{"title":500,"path":501,"stem":502,"titleTemplate":6},"useRequestURL","/docs/api/composables/use-request-url","docs/3.api/2.composables/use-request-url",{"title":504,"path":505,"stem":506,"titleTemplate":6},"useResponseHeader","/docs/api/composables/use-response-header","docs/3.api/2.composables/use-response-header",{"title":508,"path":509,"stem":510,"titleTemplate":6},"useRoute","/docs/api/composables/use-route","docs/3.api/2.composables/use-route",{"title":512,"path":513,"stem":514,"titleTemplate":6,"badge":383},"useRouteAnnouncer","/docs/api/composables/use-route-announcer","docs/3.api/2.composables/use-route-announcer",{"title":516,"path":517,"stem":518,"titleTemplate":6},"useRouter","/docs/api/composables/use-router","docs/3.api/2.composables/use-router",{"title":520,"path":521,"stem":522,"titleTemplate":6},"useRuntimeConfig","/docs/api/composables/use-runtime-config","docs/3.api/2.composables/use-runtime-config",{"title":524,"path":525,"stem":526,"titleTemplate":6},"useRuntimeHook","/docs/api/composables/use-runtime-hook","docs/3.api/2.composables/use-runtime-hook",{"title":528,"path":529,"stem":530,"titleTemplate":6},"useSeoMeta","/docs/api/composables/use-seo-meta","docs/3.api/2.composables/use-seo-meta",{"title":532,"path":533,"stem":534,"titleTemplate":6},"useServerSeoMeta","/docs/api/composables/use-server-seo-meta","docs/3.api/2.composables/use-server-seo-meta",{"title":536,"path":537,"stem":538,"titleTemplate":6},"useState","/docs/api/composables/use-state","docs/3.api/2.composables/use-state",{"title":540,"titleTemplate":541,"icon":542,"path":543,"stem":544,"children":545,"page":108},"Utils","%s · Nuxt Utils","i-lucide-square-function","/docs/api/utils","docs/3.api/3.utils",[546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638,642,646,650],{"title":547,"path":548,"stem":549,"titleTemplate":6},"$fetch","/docs/api/utils/dollarfetch","docs/3.api/3.utils/$fetch",{"title":551,"path":552,"stem":553,"titleTemplate":6},"abortNavigation","/docs/api/utils/abort-navigation","docs/3.api/3.utils/abort-navigation",{"title":555,"path":556,"stem":557,"titleTemplate":6},"addRouteMiddleware","/docs/api/utils/add-route-middleware","docs/3.api/3.utils/add-route-middleware",{"title":559,"path":560,"stem":561,"titleTemplate":6,"badge":383},"callOnce","/docs/api/utils/call-once","docs/3.api/3.utils/call-once",{"title":563,"path":564,"stem":565,"titleTemplate":6},"clearError","/docs/api/utils/clear-error","docs/3.api/3.utils/clear-error",{"title":567,"path":568,"stem":569,"titleTemplate":6},"clearNuxtData","/docs/api/utils/clear-nuxt-data","docs/3.api/3.utils/clear-nuxt-data",{"title":571,"path":572,"stem":573,"titleTemplate":6},"clearNuxtState","/docs/api/utils/clear-nuxt-state","docs/3.api/3.utils/clear-nuxt-state",{"title":575,"path":576,"stem":577,"titleTemplate":6},"createError","/docs/api/utils/create-error","docs/3.api/3.utils/create-error",{"title":579,"path":580,"stem":581,"titleTemplate":6},"defineNuxtComponent","/docs/api/utils/define-nuxt-component","docs/3.api/3.utils/define-nuxt-component",{"title":583,"path":584,"stem":585,"titleTemplate":6},"defineNuxtRouteMiddleware","/docs/api/utils/define-nuxt-route-middleware","docs/3.api/3.utils/define-nuxt-route-middleware",{"title":587,"path":588,"stem":589,"titleTemplate":6},"definePageMeta","/docs/api/utils/define-page-meta","docs/3.api/3.utils/define-page-meta",{"title":591,"path":592,"stem":593,"titleTemplate":6},"defineRouteRules","/docs/api/utils/define-route-rules","docs/3.api/3.utils/define-route-rules",{"title":595,"path":596,"stem":597,"titleTemplate":6},"navigateTo","/docs/api/utils/navigate-to","docs/3.api/3.utils/navigate-to",{"title":599,"path":600,"stem":601,"titleTemplate":6},"onBeforeRouteLeave","/docs/api/utils/on-before-route-leave","docs/3.api/3.utils/on-before-route-leave",{"title":603,"path":604,"stem":605,"titleTemplate":6},"onBeforeRouteUpdate","/docs/api/utils/on-before-route-update","docs/3.api/3.utils/on-before-route-update",{"title":607,"path":608,"stem":609,"titleTemplate":6},"onNuxtReady","/docs/api/utils/on-nuxt-ready","docs/3.api/3.utils/on-nuxt-ready",{"title":611,"path":612,"stem":613,"titleTemplate":6},"prefetchComponents","/docs/api/utils/prefetch-components","docs/3.api/3.utils/prefetch-components",{"title":615,"path":616,"stem":617,"titleTemplate":6},"preloadComponents","/docs/api/utils/preload-components","docs/3.api/3.utils/preload-components",{"title":619,"path":620,"stem":621,"titleTemplate":6},"preloadRouteComponents","/docs/api/utils/preload-route-components","docs/3.api/3.utils/preload-route-components",{"title":623,"path":624,"stem":625,"titleTemplate":6},"prerenderRoutes","/docs/api/utils/prerender-routes","docs/3.api/3.utils/prerender-routes",{"title":627,"path":628,"stem":629,"titleTemplate":6,"badge":383},"refreshCookie","/docs/api/utils/refresh-cookie","docs/3.api/3.utils/refresh-cookie",{"title":631,"path":632,"stem":633,"titleTemplate":6},"refreshNuxtData","/docs/api/utils/refresh-nuxt-data","docs/3.api/3.utils/refresh-nuxt-data",{"title":635,"path":636,"stem":637,"titleTemplate":6},"reloadNuxtApp","/docs/api/utils/reload-nuxt-app","docs/3.api/3.utils/reload-nuxt-app",{"title":639,"path":640,"stem":641,"titleTemplate":6},"setPageLayout","/docs/api/utils/set-page-layout","docs/3.api/3.utils/set-page-layout",{"title":643,"path":644,"stem":645,"titleTemplate":6},"setResponseStatus","/docs/api/utils/set-response-status","docs/3.api/3.utils/set-response-status",{"title":647,"path":648,"stem":649,"titleTemplate":6},"showError","/docs/api/utils/show-error","docs/3.api/3.utils/show-error",{"title":651,"path":652,"stem":653,"titleTemplate":6},"updateAppConfig","/docs/api/utils/update-app-config","docs/3.api/3.utils/update-app-config",{"title":655,"titleTemplate":656,"icon":657,"path":658,"stem":659,"children":660,"page":108},"Commands","%s · Nuxt Commands","i-lucide-square-terminal","/docs/api/commands","docs/3.api/4.commands",[661,665,669,673,677,681,685,689,693,697,701,705,709,713,717],{"title":662,"path":663,"stem":664,"titleTemplate":6},"nuxi add","/docs/api/commands/add","docs/3.api/4.commands/add",{"title":666,"path":667,"stem":668,"titleTemplate":6},"nuxi analyze","/docs/api/commands/analyze","docs/3.api/4.commands/analyze",{"title":670,"path":671,"stem":672,"titleTemplate":6},"nuxi build","/docs/api/commands/build","docs/3.api/4.commands/build",{"title":674,"path":675,"stem":676,"titleTemplate":6},"nuxi build-module","/docs/api/commands/build-module","docs/3.api/4.commands/build-module",{"title":678,"path":679,"stem":680,"titleTemplate":6},"nuxi cleanup","/docs/api/commands/cleanup","docs/3.api/4.commands/cleanup",{"title":682,"path":683,"stem":684,"titleTemplate":6},"nuxi dev","/docs/api/commands/dev","docs/3.api/4.commands/dev",{"title":686,"path":687,"stem":688,"titleTemplate":6},"nuxi devtools","/docs/api/commands/devtools","docs/3.api/4.commands/devtools",{"title":690,"path":691,"stem":692,"titleTemplate":6},"nuxi generate","/docs/api/commands/generate","docs/3.api/4.commands/generate",{"title":694,"path":695,"stem":696,"titleTemplate":6},"nuxi info","/docs/api/commands/info","docs/3.api/4.commands/info",{"title":698,"path":699,"stem":700,"titleTemplate":6},"nuxi init","/docs/api/commands/init","docs/3.api/4.commands/init",{"title":702,"path":703,"stem":704,"titleTemplate":6},"nuxi module","/docs/api/commands/module","docs/3.api/4.commands/module",{"title":706,"path":707,"stem":708,"titleTemplate":6},"nuxi prepare","/docs/api/commands/prepare","docs/3.api/4.commands/prepare",{"title":710,"path":711,"stem":712,"titleTemplate":6},"nuxi preview","/docs/api/commands/preview","docs/3.api/4.commands/preview",{"title":714,"path":715,"stem":716,"titleTemplate":6},"nuxi typecheck","/docs/api/commands/typecheck","docs/3.api/4.commands/typecheck",{"title":718,"path":719,"stem":720,"titleTemplate":6},"nuxi upgrade","/docs/api/commands/upgrade","docs/3.api/4.commands/upgrade",{"title":307,"titleTemplate":722,"icon":723,"path":724,"stem":725,"children":726,"page":108},"%s · Nuxt Kit","i-lucide-package","/docs/api/kit","docs/3.api/5.kit",[727,730,733,737,741,745,749,753,757,761,765,768,771,775,779,783],{"title":143,"path":728,"stem":729,"titleTemplate":6},"/docs/api/kit/modules","docs/3.api/5.kit/1.modules",{"title":291,"path":731,"stem":732,"titleTemplate":6},"/docs/api/kit/runtime-config","docs/3.api/5.kit/10.runtime-config",{"title":734,"path":735,"stem":736,"titleTemplate":6},"Templates","/docs/api/kit/templates","docs/3.api/5.kit/10.templates",{"title":738,"path":739,"stem":740,"titleTemplate":6},"Nitro","/docs/api/kit/nitro","docs/3.api/5.kit/11.nitro",{"title":742,"path":743,"stem":744,"titleTemplate":6},"Resolving","/docs/api/kit/resolving","docs/3.api/5.kit/12.resolving",{"title":746,"path":747,"stem":748,"titleTemplate":6},"Logging","/docs/api/kit/logging","docs/3.api/5.kit/13.logging",{"title":750,"path":751,"stem":752,"titleTemplate":6},"Builder","/docs/api/kit/builder","docs/3.api/5.kit/14.builder",{"title":754,"path":755,"stem":756,"titleTemplate":6},"Examples","/docs/api/kit/examples","docs/3.api/5.kit/15.examples",{"title":758,"path":759,"stem":760,"titleTemplate":6},"Programmatic Usage","/docs/api/kit/programmatic","docs/3.api/5.kit/2.programmatic",{"title":762,"path":763,"stem":764,"titleTemplate":6},"Compatibility","/docs/api/kit/compatibility","docs/3.api/5.kit/3.compatibility",{"title":123,"path":766,"stem":767,"titleTemplate":6},"/docs/api/kit/autoimports","docs/3.api/5.kit/4.autoimports",{"title":353,"path":769,"stem":770,"titleTemplate":6},"/docs/api/kit/components","docs/3.api/5.kit/5.components",{"title":772,"path":773,"stem":774,"titleTemplate":6},"Context","/docs/api/kit/context","docs/3.api/5.kit/6.context",{"title":776,"path":777,"stem":778,"titleTemplate":6},"Pages","/docs/api/kit/pages","docs/3.api/5.kit/7.pages",{"title":780,"path":781,"stem":782,"titleTemplate":6},"Layout","/docs/api/kit/layout","docs/3.api/5.kit/8.layout",{"title":784,"path":785,"stem":786,"titleTemplate":6},"Plugins","/docs/api/kit/plugins","docs/3.api/5.kit/9.plugins",{"title":788,"titleTemplate":6,"icon":789,"path":790,"stem":791,"children":792,"page":108},"Advanced","i-lucide-brain","/docs/api/advanced","docs/3.api/6.advanced",[793,796],{"title":299,"path":794,"stem":795,"titleTemplate":6},"/docs/api/advanced/hooks","docs/3.api/6.advanced/1.hooks",{"title":797,"path":798,"stem":799,"titleTemplate":6},"Import meta","/docs/api/advanced/import-meta","docs/3.api/6.advanced/2.import-meta",{"title":801,"path":802,"stem":803,"titleTemplate":804,"icon":32},"Nuxt Configuration","/docs/api/nuxt-config","docs/3.api/6.nuxt-config","%s",{"title":754,"titleTemplate":806,"icon":807,"path":808,"stem":809,"children":810,"page":108},"%s · Nuxt Examples","i-lucide-app-window-mac","/docs/examples","docs/4.examples",[811,815,837,852,888],{"title":812,"path":813,"stem":814,"titleTemplate":6},"Hello World","/docs/examples/hello-world","docs/4.examples/0.hello-world",{"title":283,"path":816,"stem":817,"children":818,"page":108},"/docs/examples/features","docs/4.examples/1.features",[819,823,826,829,833],{"title":820,"path":821,"stem":822,"titleTemplate":6},"Auto Imports","/docs/examples/features/auto-imports","docs/4.examples/1.features/1.auto-imports",{"title":64,"path":824,"stem":825,"titleTemplate":6},"/docs/examples/features/data-fetching","docs/4.examples/1.features/2.data-fetching",{"title":69,"path":827,"stem":828,"titleTemplate":6},"/docs/examples/features/state-management","docs/4.examples/1.features/3.state-management",{"title":830,"path":831,"stem":832,"titleTemplate":6},"Meta Tags","/docs/examples/features/meta-tags","docs/4.examples/1.features/4.meta-tags",{"title":834,"path":835,"stem":836,"titleTemplate":6},"Layouts","/docs/examples/features/layouts","docs/4.examples/1.features/5.layouts",{"title":49,"path":838,"stem":839,"children":840,"page":108},"/docs/examples/routing","docs/4.examples/2.routing",[841,845,848],{"title":842,"path":843,"stem":844,"titleTemplate":6},"Middleware","/docs/examples/routing/middleware","docs/4.examples/2.routing/middleware",{"title":776,"path":846,"stem":847,"titleTemplate":6},"/docs/examples/routing/pages","docs/4.examples/2.routing/pages",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Universal Router","/docs/examples/routing/universal-router","docs/4.examples/2.routing/universal-router",{"title":788,"path":853,"stem":854,"children":855,"page":108},"/docs/examples/advanced","docs/4.examples/4.advanced",[856,859,862,866,870,874,878,881,884],{"title":84,"path":857,"stem":858,"titleTemplate":6},"/docs/examples/advanced/config-extends","docs/4.examples/4.advanced/config-extends",{"title":74,"path":860,"stem":861,"titleTemplate":6},"/docs/examples/advanced/error-handling","docs/4.examples/4.advanced/error-handling",{"title":863,"path":864,"stem":865,"titleTemplate":6},"JSX / TSX","/docs/examples/advanced/jsx","docs/4.examples/4.advanced/jsx",{"title":867,"path":868,"stem":869,"titleTemplate":6},"Locale","/docs/examples/advanced/locale","docs/4.examples/4.advanced/locale",{"title":871,"path":872,"stem":873,"titleTemplate":6},"Module Extend Pages","/docs/examples/advanced/module-extend-pages","docs/4.examples/4.advanced/module-extend-pages",{"title":875,"path":876,"stem":877,"titleTemplate":6},"Teleport","/docs/examples/advanced/teleport","docs/4.examples/4.advanced/teleport",{"title":99,"path":879,"stem":880,"titleTemplate":6},"/docs/examples/advanced/testing","docs/4.examples/4.advanced/testing",{"title":436,"path":882,"stem":883,"titleTemplate":6},"/docs/examples/advanced/use-cookie","docs/4.examples/4.advanced/use-cookie",{"title":885,"path":886,"stem":887,"titleTemplate":6},"Use Custom Fetch Composable","/docs/examples/advanced/use-custom-fetch-composable","docs/4.examples/4.advanced/use-custom-fetch-composable",{"title":889,"path":890,"stem":891,"children":892,"page":108},"Experimental","/docs/examples/experimental","docs/4.examples/7.experimental",[893],{"title":894,"path":895,"stem":896,"titleTemplate":6},"WASM","/docs/examples/experimental/wasm","docs/4.examples/7.experimental/wasm",{"title":898,"titleTemplate":899,"icon":900,"path":901,"stem":902,"children":903,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","/docs/community","docs/5.community",[904,909,914,919,924,929],{"title":905,"path":906,"stem":907,"titleTemplate":6,"icon":908},"Getting Help","/docs/community/getting-help","docs/5.community/2.getting-help","i-lucide-life-buoy",{"title":910,"path":911,"stem":912,"titleTemplate":6,"icon":913},"Reporting Bugs","/docs/community/reporting-bugs","docs/5.community/3.reporting-bugs","i-lucide-bug",{"title":915,"path":916,"stem":917,"titleTemplate":6,"icon":918},"Contribution","/docs/community/contribution","docs/5.community/4.contribution","i-lucide-git-pull-request",{"title":920,"path":921,"stem":922,"titleTemplate":6,"icon":923},"Framework","/docs/community/framework-contribution","docs/5.community/5.framework-contribution","i-lucide-github",{"title":925,"path":926,"stem":927,"titleTemplate":6,"icon":928},"Roadmap","/docs/community/roadmap","docs/5.community/6.roadmap","i-lucide-map",{"title":930,"path":931,"stem":932,"titleTemplate":6,"icon":933},"Releases","/docs/community/changelog","docs/5.community/7.changelog","i-lucide-bell-dot",{"title":935,"titleTemplate":936,"icon":937,"path":938,"stem":939,"children":940,"page":108},"Migrate to Nuxt Bridge","Migrate to Nuxt Bridge: %s","i-lucide-ship","/docs/bridge","docs/6.bridge",[941,945,948,951,955,959,963,966,969,972],{"title":942,"path":943,"stem":944,"titleTemplate":6},"Overview","/docs/bridge/overview","docs/6.bridge/1.overview",{"title":29,"path":946,"stem":947,"titleTemplate":6},"/docs/bridge/configuration","docs/6.bridge/10.configuration",{"title":151,"path":949,"stem":950,"titleTemplate":6},"/docs/bridge/typescript","docs/6.bridge/2.typescript",{"title":952,"path":953,"stem":954,"titleTemplate":6},"Legacy Composition API","/docs/bridge/bridge-composition-api","docs/6.bridge/3.bridge-composition-api",{"title":956,"path":957,"stem":958,"titleTemplate":6},"Plugins and Middleware","/docs/bridge/plugins-and-middleware","docs/6.bridge/4.plugins-and-middleware",{"title":960,"path":961,"stem":962,"titleTemplate":6},"New Composition API","/docs/bridge/nuxt3-compatible-api","docs/6.bridge/5.nuxt3-compatible-api",{"title":830,"path":964,"stem":965,"titleTemplate":6},"/docs/bridge/meta","docs/6.bridge/6.meta",{"title":291,"path":967,"stem":968,"titleTemplate":6},"/docs/bridge/runtime-config","docs/6.bridge/7.runtime-config",{"title":738,"path":970,"stem":971,"titleTemplate":6},"/docs/bridge/nitro","docs/6.bridge/8.nitro",{"title":973,"path":974,"stem":975,"titleTemplate":6},"Vite","/docs/bridge/vite","docs/6.bridge/9.vite",{"title":977,"titleTemplate":978,"icon":107,"path":979,"stem":980,"children":981,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","/docs/migration","docs/7.migration",[982,985,989,992,995,998,1001,1004,1007,1011,1015],{"title":942,"path":983,"stem":984,"titleTemplate":6},"/docs/migration/overview","docs/7.migration/1.overview",{"title":986,"path":987,"stem":988,"titleTemplate":6},"Build Tooling","/docs/migration/bundling","docs/7.migration/10.bundling",{"title":79,"path":990,"stem":991,"titleTemplate":6},"/docs/migration/server","docs/7.migration/11.server",{"title":29,"path":993,"stem":994,"titleTemplate":6},"/docs/migration/configuration","docs/7.migration/2.configuration",{"title":143,"path":996,"stem":997,"titleTemplate":6},"/docs/migration/module-authors","docs/7.migration/20.module-authors",{"title":820,"path":999,"stem":1000,"titleTemplate":6},"/docs/migration/auto-imports","docs/7.migration/3.auto-imports",{"title":830,"path":1002,"stem":1003,"titleTemplate":6},"/docs/migration/meta","docs/7.migration/4.meta",{"title":956,"path":1005,"stem":1006,"titleTemplate":6},"/docs/migration/plugins-and-middleware","docs/7.migration/5.plugins-and-middleware",{"title":1008,"path":1009,"stem":1010,"titleTemplate":6},"Pages and Layouts","/docs/migration/pages-and-layouts","docs/7.migration/6.pages-and-layouts",{"title":1012,"path":1013,"stem":1014,"titleTemplate":6},"Component Options","/docs/migration/component-options","docs/7.migration/7.component-options",{"title":291,"path":1016,"stem":1017,"titleTemplate":6},"/docs/migration/runtime-config","docs/7.migration/8.runtime-config",{"title":1019,"path":1020,"stem":1021,"children":1022,"page":108},"Blog","/blog","blog",[1023,1027,1031,1035,1039,1043,1047,1051,1055,1059,1063,1067,1071,1075,1079,1083,1087,1091,1095,1099,1103],{"title":1024,"path":1025,"stem":1026},"Announcing 3.0","/blog/v3","blog/1.v3",{"title":1028,"path":1029,"stem":1030},"Nuxt 3.3","/blog/v3-3","blog/10.v3-3",{"title":1032,"path":1033,"stem":1034},"Nuxt 3.4","/blog/v3-4","blog/11.v3-4",{"title":1036,"path":1037,"stem":1038},"Nuxt 3.5","/blog/v3-5","blog/12.v3-5",{"title":1040,"path":1041,"stem":1042},"Nuxt 3.6","/blog/v3-6","blog/13.v3-6",{"title":1044,"path":1045,"stem":1046},"Nuxt on the Edge","/blog/nuxt-on-the-edge","blog/14.nuxt-on-the-edge",{"title":1048,"path":1049,"stem":1050},"Nuxt DevTools v1.0","/blog/nuxt-devtools-v1-0","blog/18.nuxt-devtools-v1-0",{"title":1052,"path":1053,"stem":1054},"Nuxt: A vision for 2023","/blog/vision-2023","blog/2.vision-2023",{"title":1056,"path":1057,"stem":1058},"The Evolution of Shiki v1.0","/blog/shiki-v1","blog/21.shiki-v1",{"title":1060,"path":1061,"stem":1062},"Refreshed Nuxt ESLint Integrations","/blog/eslint-module","blog/24.eslint-module",{"title":1064,"path":1065,"stem":1066},"Introducing Nuxt Scripts","/blog/nuxt-scripts","blog/26.nuxt-scripts",{"title":1068,"path":1069,"stem":1070},"Introducing Nuxt Icon v1","/blog/nuxt-icon-v1-0","blog/29.nuxt-icon-v1-0",{"title":1072,"path":1073,"stem":1074},"Introducing Nuxt DevTools","/blog/introducing-nuxt-devtools","blog/3.introducing-nuxt-devtools",{"title":1076,"path":1077,"stem":1078},"Announcing Nuxt 3 Release Candidate","/blog/nuxt3-rc","blog/3.nuxt3-rc",{"title":1080,"path":1081,"stem":1082},"Nuxt 2 End-of-Life (EOL)","/blog/nuxt2-eol","blog/4.nuxt2-eol",{"title":1084,"path":1085,"stem":1086},"Introducing Nuxt 3 Beta","/blog/nuxt3-beta","blog/4.nuxt3-beta",{"title":1088,"path":1089,"stem":1090},"Going Full Static","/blog/going-full-static","blog/5.going-full-static",{"title":1092,"path":1093,"stem":1094},"Introducing Smart Prefetching","/blog/introducing-smart-prefetching","blog/6.introducing-smart-prefetching",{"title":1096,"path":1097,"stem":1098},"Understanding how fetch works in Nuxt 2.12","/blog/understanding-how-fetch-works-in-nuxt-2-12","blog/7.understanding-how-fetch-works-in-nuxt-2-12",{"title":1100,"path":1101,"stem":1102},"Nuxt 2 Static Improvements","/blog/nuxt-static-improvements","blog/8.nuxt-static-improvements",{"title":1104,"path":1105,"stem":1106},"Nuxt 2: From Terminal to Browser","/blog/nuxtjs-from-terminal-to-browser","blog/9.nuxtjs-from-terminal-to-browser",{"id":1108,"title":219,"body":1109,"description":4916,"extension":4917,"links":6,"meta":4918,"navigation":4921,"path":220,"seo":4922,"stem":221,"titleTemplate":6,"__hash__":4923},"docs/docs/2.guide/2.directory-structure/1.server.md",{"type":1110,"value":1111,"toc":4888},"minimal",[1112,1116,1215,1226,1237,1318,1321,1441,1446,1457,1467,1473,1503,1517,1527,1531,1538,1541,1546,1551,1615,1678,1682,1689,1693,1752,1758,1762,1771,1775,1781,1784,1788,2031,2035,2041,2048,2086,2094,2097,2101,2111,2198,2208,2218,2222,2244,2273,2302,2309,2331,2338,2452,2456,2459,2469,2522,2532,2579,2583,2647,2655,2658,2780,2803,2807,2813,2901,2908,2911,2918,2925,2932,3093,3097,3105,3111,3158,3161,3368,3384,3388,3452,3456,3463,3516,3550,3554,3561,3567,3709,3713,3717,3733,3739,3777,3779,3783,3905,3909,3914,4017,4021,4081,4085,4145,4155,4222,4236,4240,4257,4262,4267,4438,4441,4610,4615,4618,4884],[1113,1114,1115],"p",{},"Nuxt automatically scans files inside these directories to register API and server handlers with Hot Module Replacement (HMR) support.",[1117,1118,1124],"pre",{"className":1119,"code":1120,"filename":1121,"language":1122,"meta":1123,"style":1123},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","-| server/\n---| api/\n-----| hello.ts      # /api/hello\n---| routes/\n-----| bonjour.ts    # /bonjour\n---| middleware/\n-----| log.ts        # log all requests\n","Directory structure","bash","",[1125,1126,1127,1143,1154,1169,1179,1192,1202],"code",{"__ignoreMap":1123},[1128,1129,1132,1136,1140],"span",{"class":1130,"line":1131},"line",1,[1128,1133,1135],{"class":1134},"sT2Ow","-",[1128,1137,1139],{"class":1138},"sYp4K","|",[1128,1141,1142],{"class":1134}," server/\n",[1128,1144,1146,1149,1151],{"class":1130,"line":1145},2,[1128,1147,1148],{"class":1134},"---",[1128,1150,1139],{"class":1138},[1128,1152,1153],{"class":1134}," api/\n",[1128,1155,1157,1160,1162,1165],{"class":1130,"line":1156},3,[1128,1158,1159],{"class":1134},"-----",[1128,1161,1139],{"class":1138},[1128,1163,1164],{"class":1134}," hello.ts",[1128,1166,1168],{"class":1167},"svXlt","      # /api/hello\n",[1128,1170,1172,1174,1176],{"class":1130,"line":1171},4,[1128,1173,1148],{"class":1134},[1128,1175,1139],{"class":1138},[1128,1177,1178],{"class":1134}," routes/\n",[1128,1180,1182,1184,1186,1189],{"class":1130,"line":1181},5,[1128,1183,1159],{"class":1134},[1128,1185,1139],{"class":1138},[1128,1187,1188],{"class":1134}," bonjour.ts",[1128,1190,1191],{"class":1167},"    # /bonjour\n",[1128,1193,1195,1197,1199],{"class":1130,"line":1194},6,[1128,1196,1148],{"class":1134},[1128,1198,1139],{"class":1138},[1128,1200,1201],{"class":1134}," middleware/\n",[1128,1203,1205,1207,1209,1212],{"class":1130,"line":1204},7,[1128,1206,1159],{"class":1134},[1128,1208,1139],{"class":1138},[1128,1210,1211],{"class":1134}," log.ts",[1128,1213,1214],{"class":1167},"        # log all requests\n",[1113,1216,1217,1218,1221,1222,1225],{},"Each file should export a default function defined with ",[1125,1219,1220],{},"defineEventHandler()"," or ",[1125,1223,1224],{},"eventHandler()"," (alias).",[1113,1227,1228,1229,1232,1233,1236],{},"The handler can directly return JSON data, a ",[1125,1230,1231],{},"Promise",", or use ",[1125,1234,1235],{},"event.node.res.end()"," to send a response.",[1117,1238,1244],{"className":1239,"code":1240,"filename":1241,"language":1242,"meta":1243,"style":1123},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineEventHandler((event) => {\n  return {\n    hello: 'world'\n  }\n})\n","server/api/hello.ts","ts","twoslash",[1125,1245,1246,1279,1286,1305,1310],{"__ignoreMap":1123},[1128,1247,1248,1252,1255,1259,1263,1265,1269,1272,1276],{"class":1130,"line":1131},[1128,1249,1251],{"class":1250},"sFVN2","export",[1128,1253,1254],{"class":1250}," default",[1128,1256,1258],{"class":1257},"szd4z"," defineEventHandler",[1128,1260,1262],{"class":1261},"spdxX","(",[1128,1264,1262],{"class":1138},[1128,1266,1268],{"class":1267},"ssYd4","event",[1128,1270,1271],{"class":1138},")",[1128,1273,1275],{"class":1274},"sRBFq"," =>",[1128,1277,1278],{"class":1138}," {\n",[1128,1280,1281,1284],{"class":1130,"line":1145},[1128,1282,1283],{"class":1250},"  return",[1128,1285,1278],{"class":1138},[1128,1287,1288,1292,1295,1298,1302],{"class":1130,"line":1156},[1128,1289,1291],{"class":1290},"sQ5dg","    hello",[1128,1293,1294],{"class":1138},":",[1128,1296,1297],{"class":1138}," '",[1128,1299,1301],{"class":1300},"s5UST","world",[1128,1303,1304],{"class":1138},"'\n",[1128,1306,1307],{"class":1130,"line":1171},[1128,1308,1309],{"class":1138},"  }\n",[1128,1311,1312,1315],{"class":1130,"line":1181},[1128,1313,1314],{"class":1138},"}",[1128,1316,1317],{"class":1261},")\n",[1113,1319,1320],{},"You can now universally call this API in your pages and components:",[1117,1322,1327],{"className":1323,"code":1324,"filename":1325,"language":1326,"meta":1123,"style":1123},"language-vue shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { data } = await useFetch('/api/hello')\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cpre>{{ data }}\u003C/pre>\n\u003C/template>\n","pages/index.vue","vue",[1125,1328,1329,1356,1390,1399,1405,1414,1433],{"__ignoreMap":1123},[1128,1330,1331,1334,1337,1340,1343,1346,1349,1351,1353],{"class":1130,"line":1131},[1128,1332,1333],{"class":1138},"\u003C",[1128,1335,1336],{"class":1290},"script",[1128,1338,1339],{"class":1274}," setup",[1128,1341,1342],{"class":1274}," lang",[1128,1344,1345],{"class":1138},"=",[1128,1347,1348],{"class":1138},"\"",[1128,1350,1242],{"class":1300},[1128,1352,1348],{"class":1138},[1128,1354,1355],{"class":1138},">\n",[1128,1357,1358,1361,1364,1367,1369,1372,1375,1378,1380,1383,1386,1388],{"class":1130,"line":1145},[1128,1359,1360],{"class":1274},"const",[1128,1362,1363],{"class":1138}," {",[1128,1365,1366],{"class":1261}," data ",[1128,1368,1314],{"class":1138},[1128,1370,1371],{"class":1138}," =",[1128,1373,1374],{"class":1250}," await",[1128,1376,1377],{"class":1257}," useFetch",[1128,1379,1262],{"class":1261},[1128,1381,1382],{"class":1138},"'",[1128,1384,1385],{"class":1300},"/api/hello",[1128,1387,1382],{"class":1138},[1128,1389,1317],{"class":1261},[1128,1391,1392,1395,1397],{"class":1130,"line":1156},[1128,1393,1394],{"class":1138},"\u003C/",[1128,1396,1336],{"class":1290},[1128,1398,1355],{"class":1138},[1128,1400,1401],{"class":1130,"line":1171},[1128,1402,1404],{"emptyLinePlaceholder":1403},true,"\n",[1128,1406,1407,1409,1412],{"class":1130,"line":1181},[1128,1408,1333],{"class":1138},[1128,1410,1411],{"class":1290},"template",[1128,1413,1355],{"class":1138},[1128,1415,1416,1419,1421,1424,1427,1429,1431],{"class":1130,"line":1194},[1128,1417,1418],{"class":1138},"  \u003C",[1128,1420,1117],{"class":1290},[1128,1422,1423],{"class":1138},">",[1128,1425,1426],{"class":1261},"{{ data }}",[1128,1428,1394],{"class":1138},[1128,1430,1117],{"class":1290},[1128,1432,1355],{"class":1138},[1128,1434,1435,1437,1439],{"class":1130,"line":1204},[1128,1436,1394],{"class":1138},[1128,1438,1411],{"class":1290},[1128,1440,1355],{"class":1138},[1442,1443,1445],"h2",{"id":1444},"server-routes","Server Routes",[1113,1447,1448,1449,1452,1453,1456],{},"Files inside the ",[1125,1450,1451],{},"~/server/api"," are automatically prefixed with ",[1125,1454,1455],{},"/api"," in their route.",[1113,1458,1459,1460,1462,1463,1466],{},"To add server routes without ",[1125,1461,1455],{}," prefix, put them into ",[1125,1464,1465],{},"~/server/routes"," directory.",[1113,1468,1469],{},[1470,1471,1472],"strong",{},"Example:",[1117,1474,1477],{"className":1239,"code":1475,"filename":1476,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler(() => 'Hello World!')\n","server/routes/hello.ts",[1125,1478,1479],{"__ignoreMap":1123},[1128,1480,1481,1483,1485,1487,1489,1492,1494,1496,1499,1501],{"class":1130,"line":1131},[1128,1482,1251],{"class":1250},[1128,1484,1254],{"class":1250},[1128,1486,1258],{"class":1257},[1128,1488,1262],{"class":1261},[1128,1490,1491],{"class":1138},"()",[1128,1493,1275],{"class":1274},[1128,1495,1297],{"class":1138},[1128,1497,1498],{"class":1300},"Hello World!",[1128,1500,1382],{"class":1138},[1128,1502,1317],{"class":1261},[1113,1504,1505,1506,1509,1510,1516],{},"Given the example above, the ",[1125,1507,1508],{},"/hello"," route will be accessible at ",[1511,1512,1513],"a",{"href":1513,"rel":1514},"http://localhost:3000/hello",[1515],"nofollow",".",[1518,1519,1520],"note",{},[1113,1521,1522,1523,1526],{},"Note that currently server routes do not support the full functionality of dynamic routes as ",[1511,1524,207],{"href":1525},"/docs/guide/directory-structure/pages#dynamic-routes"," do.",[1442,1528,1530],{"id":1529},"server-middleware","Server Middleware",[1113,1532,1533,1534,1537],{},"Nuxt will automatically read in any file in the ",[1125,1535,1536],{},"~/server/middleware"," to create server middleware for your project.",[1113,1539,1540],{},"Middleware handlers will run on every request before any other server route to add or check headers, log requests, or extend the event's request object.",[1518,1542,1543],{},[1113,1544,1545],{},"Middleware handlers should not return anything (nor close or respond to the request) and only inspect or extend the request context or throw an error.",[1113,1547,1548],{},[1470,1549,1550],{},"Examples:",[1117,1552,1555],{"className":1239,"code":1553,"filename":1554,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  console.log('New request: ' + getRequestURL(event))\n})\n","server/middleware/log.ts",[1125,1556,1557,1577,1609],{"__ignoreMap":1123},[1128,1558,1559,1561,1563,1565,1567,1569,1571,1573,1575],{"class":1130,"line":1131},[1128,1560,1251],{"class":1250},[1128,1562,1254],{"class":1250},[1128,1564,1258],{"class":1257},[1128,1566,1262],{"class":1261},[1128,1568,1262],{"class":1138},[1128,1570,1268],{"class":1267},[1128,1572,1271],{"class":1138},[1128,1574,1275],{"class":1274},[1128,1576,1278],{"class":1138},[1128,1578,1579,1582,1584,1587,1589,1591,1594,1596,1599,1602,1604,1606],{"class":1130,"line":1145},[1128,1580,1581],{"class":1261},"  console",[1128,1583,1516],{"class":1138},[1128,1585,1586],{"class":1257},"log",[1128,1588,1262],{"class":1290},[1128,1590,1382],{"class":1138},[1128,1592,1593],{"class":1300},"New request: ",[1128,1595,1382],{"class":1138},[1128,1597,1598],{"class":1138}," +",[1128,1600,1601],{"class":1257}," getRequestURL",[1128,1603,1262],{"class":1290},[1128,1605,1268],{"class":1261},[1128,1607,1608],{"class":1290},"))\n",[1128,1610,1611,1613],{"class":1130,"line":1156},[1128,1612,1314],{"class":1138},[1128,1614,1317],{"class":1261},[1117,1616,1619],{"className":1239,"code":1617,"filename":1618,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  event.context.auth = { user: 123 }\n})\n","server/middleware/auth.ts",[1125,1620,1621,1641,1672],{"__ignoreMap":1123},[1128,1622,1623,1625,1627,1629,1631,1633,1635,1637,1639],{"class":1130,"line":1131},[1128,1624,1251],{"class":1250},[1128,1626,1254],{"class":1250},[1128,1628,1258],{"class":1257},[1128,1630,1262],{"class":1261},[1128,1632,1262],{"class":1138},[1128,1634,1268],{"class":1267},[1128,1636,1271],{"class":1138},[1128,1638,1275],{"class":1274},[1128,1640,1278],{"class":1138},[1128,1642,1643,1646,1648,1651,1653,1656,1658,1660,1663,1665,1669],{"class":1130,"line":1145},[1128,1644,1645],{"class":1261},"  event",[1128,1647,1516],{"class":1138},[1128,1649,1650],{"class":1261},"context",[1128,1652,1516],{"class":1138},[1128,1654,1655],{"class":1261},"auth",[1128,1657,1371],{"class":1138},[1128,1659,1363],{"class":1138},[1128,1661,1662],{"class":1290}," user",[1128,1664,1294],{"class":1138},[1128,1666,1668],{"class":1667},"sV9sa"," 123",[1128,1670,1671],{"class":1138}," }\n",[1128,1673,1674,1676],{"class":1130,"line":1156},[1128,1675,1314],{"class":1138},[1128,1677,1317],{"class":1261},[1442,1679,1681],{"id":1680},"server-plugins","Server Plugins",[1113,1683,1684,1685,1688],{},"Nuxt will automatically read any files in the ",[1125,1686,1687],{},"~/server/plugins"," directory and register them as Nitro plugins. This allows extending Nitro's runtime behavior and hooking into lifecycle events.",[1113,1690,1691],{},[1470,1692,1472],{},[1117,1694,1697],{"className":1239,"code":1695,"filename":1696,"language":1242,"meta":1123,"style":1123},"export default defineNitroPlugin((nitroApp) => {\n  console.log('Nitro plugin', nitroApp)\n})\n","server/plugins/nitroPlugin.ts",[1125,1698,1699,1721,1746],{"__ignoreMap":1123},[1128,1700,1701,1703,1705,1708,1710,1712,1715,1717,1719],{"class":1130,"line":1131},[1128,1702,1251],{"class":1250},[1128,1704,1254],{"class":1250},[1128,1706,1707],{"class":1257}," defineNitroPlugin",[1128,1709,1262],{"class":1261},[1128,1711,1262],{"class":1138},[1128,1713,1714],{"class":1267},"nitroApp",[1128,1716,1271],{"class":1138},[1128,1718,1275],{"class":1274},[1128,1720,1278],{"class":1138},[1128,1722,1723,1725,1727,1729,1731,1733,1736,1738,1741,1744],{"class":1130,"line":1145},[1128,1724,1581],{"class":1261},[1128,1726,1516],{"class":1138},[1128,1728,1586],{"class":1257},[1128,1730,1262],{"class":1290},[1128,1732,1382],{"class":1138},[1128,1734,1735],{"class":1300},"Nitro plugin",[1128,1737,1382],{"class":1138},[1128,1739,1740],{"class":1138},",",[1128,1742,1743],{"class":1261}," nitroApp",[1128,1745,1317],{"class":1290},[1128,1747,1748,1750],{"class":1130,"line":1156},[1128,1749,1314],{"class":1138},[1128,1751,1317],{"class":1261},[1753,1754],"read-more",{"to":1755,"target":1756,"title":1757},"https://nitro.unjs.io/guide/plugins","_blank","Nitro Plugins",[1442,1759,1761],{"id":1760},"server-utilities","Server Utilities",[1113,1763,1764,1765,1770],{},"Server routes are powered by ",[1511,1766,1769],{"href":1767,"rel":1768},"https://github.com/unjs/h3",[1515],"unjs/h3"," which comes with a handy set of helpers.",[1753,1772],{"to":1773,"target":1756,"title":1774},"https://www.jsdocs.io/package/h3#package-index-functions","Available H3 Request Helpers",[1113,1776,1777,1778,1466],{},"You can add more helpers yourself inside the ",[1125,1779,1780],{},"~/server/utils",[1113,1782,1783],{},"For example, you can define a custom handler utility that wraps the original handler and performs additional operations before returning the final response.",[1113,1785,1786],{},[1470,1787,1472],{},[1117,1789,1792],{"className":1239,"code":1790,"filename":1791,"language":1242,"meta":1123,"style":1123},"import type { EventHandler, EventHandlerRequest } from 'h3'\n\nexport const defineWrappedResponseHandler = \u003CT extends EventHandlerRequest, D> (\n  handler: EventHandler\u003CT, D>\n): EventHandler\u003CT, D> =>\n  defineEventHandler\u003CT>(async event => {\n    try {\n      // do something before the route handler\n      const response = await handler(event)\n      // do something after the route handler\n      return { response }\n    } catch (err) {\n      // Error handling\n      return { err }\n    }\n  })\n","server/utils/handler.ts",[1125,1793,1794,1825,1829,1862,1881,1902,1925,1932,1938,1960,1966,1978,1999,2005,2017,2023],{"__ignoreMap":1123},[1128,1795,1796,1799,1802,1804,1807,1809,1812,1815,1818,1820,1823],{"class":1130,"line":1131},[1128,1797,1798],{"class":1250},"import",[1128,1800,1801],{"class":1250}," type",[1128,1803,1363],{"class":1138},[1128,1805,1806],{"class":1261}," EventHandler",[1128,1808,1740],{"class":1138},[1128,1810,1811],{"class":1261}," EventHandlerRequest",[1128,1813,1814],{"class":1138}," }",[1128,1816,1817],{"class":1250}," from",[1128,1819,1297],{"class":1138},[1128,1821,1822],{"class":1300},"h3",[1128,1824,1304],{"class":1138},[1128,1826,1827],{"class":1130,"line":1145},[1128,1828,1404],{"emptyLinePlaceholder":1403},[1128,1830,1831,1833,1836,1839,1841,1844,1847,1850,1852,1854,1857,1859],{"class":1130,"line":1156},[1128,1832,1251],{"class":1250},[1128,1834,1835],{"class":1274}," const",[1128,1837,1838],{"class":1261}," defineWrappedResponseHandler ",[1128,1840,1345],{"class":1138},[1128,1842,1843],{"class":1138}," \u003C",[1128,1845,1846],{"class":1134},"T",[1128,1848,1849],{"class":1274}," extends",[1128,1851,1811],{"class":1134},[1128,1853,1740],{"class":1138},[1128,1855,1856],{"class":1134}," D",[1128,1858,1423],{"class":1138},[1128,1860,1861],{"class":1261}," (\n",[1128,1863,1864,1867,1869,1871,1873,1875,1877,1879],{"class":1130,"line":1171},[1128,1865,1866],{"class":1267},"  handler",[1128,1868,1294],{"class":1138},[1128,1870,1806],{"class":1134},[1128,1872,1333],{"class":1138},[1128,1874,1846],{"class":1134},[1128,1876,1740],{"class":1138},[1128,1878,1856],{"class":1134},[1128,1880,1355],{"class":1138},[1128,1882,1883,1885,1887,1889,1891,1893,1895,1897,1899],{"class":1130,"line":1181},[1128,1884,1271],{"class":1261},[1128,1886,1294],{"class":1138},[1128,1888,1806],{"class":1134},[1128,1890,1333],{"class":1138},[1128,1892,1846],{"class":1134},[1128,1894,1740],{"class":1138},[1128,1896,1856],{"class":1134},[1128,1898,1423],{"class":1138},[1128,1900,1901],{"class":1274}," =>\n",[1128,1903,1904,1907,1909,1911,1913,1915,1918,1921,1923],{"class":1130,"line":1194},[1128,1905,1906],{"class":1257},"  defineEventHandler",[1128,1908,1333],{"class":1138},[1128,1910,1846],{"class":1134},[1128,1912,1423],{"class":1138},[1128,1914,1262],{"class":1261},[1128,1916,1917],{"class":1274},"async",[1128,1919,1920],{"class":1267}," event",[1128,1922,1275],{"class":1274},[1128,1924,1278],{"class":1138},[1128,1926,1927,1930],{"class":1130,"line":1204},[1128,1928,1929],{"class":1250},"    try",[1128,1931,1278],{"class":1138},[1128,1933,1935],{"class":1130,"line":1934},8,[1128,1936,1937],{"class":1167},"      // do something before the route handler\n",[1128,1939,1941,1944,1947,1949,1951,1954,1956,1958],{"class":1130,"line":1940},9,[1128,1942,1943],{"class":1274},"      const",[1128,1945,1946],{"class":1261}," response",[1128,1948,1371],{"class":1138},[1128,1950,1374],{"class":1250},[1128,1952,1953],{"class":1257}," handler",[1128,1955,1262],{"class":1290},[1128,1957,1268],{"class":1261},[1128,1959,1317],{"class":1290},[1128,1961,1963],{"class":1130,"line":1962},10,[1128,1964,1965],{"class":1167},"      // do something after the route handler\n",[1128,1967,1969,1972,1974,1976],{"class":1130,"line":1968},11,[1128,1970,1971],{"class":1250},"      return",[1128,1973,1363],{"class":1138},[1128,1975,1946],{"class":1261},[1128,1977,1671],{"class":1138},[1128,1979,1981,1984,1987,1990,1993,1996],{"class":1130,"line":1980},12,[1128,1982,1983],{"class":1138},"    }",[1128,1985,1986],{"class":1250}," catch",[1128,1988,1989],{"class":1290}," (",[1128,1991,1992],{"class":1261},"err",[1128,1994,1995],{"class":1290},") ",[1128,1997,1998],{"class":1138},"{\n",[1128,2000,2002],{"class":1130,"line":2001},13,[1128,2003,2004],{"class":1167},"      // Error handling\n",[1128,2006,2008,2010,2012,2015],{"class":1130,"line":2007},14,[1128,2009,1971],{"class":1250},[1128,2011,1363],{"class":1138},[1128,2013,2014],{"class":1261}," err",[1128,2016,1671],{"class":1138},[1128,2018,2020],{"class":1130,"line":2019},15,[1128,2021,2022],{"class":1138},"    }\n",[1128,2024,2026,2029],{"class":1130,"line":2025},16,[1128,2027,2028],{"class":1138},"  }",[1128,2030,1317],{"class":1261},[1442,2032,2034],{"id":2033},"server-types","Server Types",[2036,2037,2038],"tip",{},[1113,2039,2040],{},"This feature is available from Nuxt >= 3.5",[1113,2042,2043,2044,2047],{},"To improve clarity within your IDE between the auto-imports from 'nitro' and 'vue', you can add a ",[1125,2045,2046],{},"~/server/tsconfig.json"," with the following content:",[1117,2049,2054],{"className":2050,"code":2051,"filename":2052,"language":2053,"meta":1123,"style":1123},"language-json shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","{\n  \"extends\": \"../.nuxt/tsconfig.server.json\"\n}\n","server/tsconfig.json","json",[1125,2055,2056,2060,2081],{"__ignoreMap":1123},[1128,2057,2058],{"class":1130,"line":1131},[1128,2059,1998],{"class":1138},[1128,2061,2062,2065,2068,2070,2072,2075,2078],{"class":1130,"line":1145},[1128,2063,2064],{"class":1138},"  \"",[1128,2066,2067],{"class":1274},"extends",[1128,2069,1348],{"class":1138},[1128,2071,1294],{"class":1138},[1128,2073,2074],{"class":1138}," \"",[1128,2076,2077],{"class":1300},"../.nuxt/tsconfig.server.json",[1128,2079,2080],{"class":1138},"\"\n",[1128,2082,2083],{"class":1130,"line":1156},[1128,2084,2085],{"class":1138},"}\n",[1113,2087,2088,2089,2093],{},"Currently, these values won't be respected when type checking (",[1511,2090,2091],{"href":715},[1125,2092,714],{},"), but you should get better type hints in your IDE.",[1442,2095,323],{"id":2096},"recipes",[1822,2098,2100],{"id":2099},"route-parameters","Route Parameters",[1113,2102,2103,2104,2107,2108,1516],{},"Server routes can use dynamic parameters within brackets in the file name like ",[1125,2105,2106],{},"/api/hello/[name].ts"," and be accessed via ",[1125,2109,2110],{},"event.context.params",[1117,2112,2115],{"className":1239,"code":2113,"filename":2114,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  const name = getRouterParam(event, 'name')\n\n  return `Hello, ${name}!`\n})\n","server/api/hello/[name].ts",[1125,2116,2117,2137,2165,2169,2192],{"__ignoreMap":1123},[1128,2118,2119,2121,2123,2125,2127,2129,2131,2133,2135],{"class":1130,"line":1131},[1128,2120,1251],{"class":1250},[1128,2122,1254],{"class":1250},[1128,2124,1258],{"class":1257},[1128,2126,1262],{"class":1261},[1128,2128,1262],{"class":1138},[1128,2130,1268],{"class":1267},[1128,2132,1271],{"class":1138},[1128,2134,1275],{"class":1274},[1128,2136,1278],{"class":1138},[1128,2138,2139,2142,2145,2147,2150,2152,2154,2156,2158,2161,2163],{"class":1130,"line":1145},[1128,2140,2141],{"class":1274},"  const",[1128,2143,2144],{"class":1261}," name",[1128,2146,1371],{"class":1138},[1128,2148,2149],{"class":1257}," getRouterParam",[1128,2151,1262],{"class":1290},[1128,2153,1268],{"class":1261},[1128,2155,1740],{"class":1138},[1128,2157,1297],{"class":1138},[1128,2159,2160],{"class":1300},"name",[1128,2162,1382],{"class":1138},[1128,2164,1317],{"class":1290},[1128,2166,2167],{"class":1130,"line":1156},[1128,2168,1404],{"emptyLinePlaceholder":1403},[1128,2170,2171,2173,2176,2179,2182,2184,2186,2189],{"class":1130,"line":1171},[1128,2172,1283],{"class":1250},[1128,2174,2175],{"class":1138}," `",[1128,2177,2178],{"class":1300},"Hello, ",[1128,2180,2181],{"class":1138},"${",[1128,2183,2160],{"class":1261},[1128,2185,1314],{"class":1138},[1128,2187,2188],{"class":1300},"!",[1128,2190,2191],{"class":1138},"`\n",[1128,2193,2194,2196],{"class":1130,"line":1181},[1128,2195,1314],{"class":1138},[1128,2197,1317],{"class":1261},[2036,2199,2201],{"to":2200},"https://h3.unjs.io/examples/validate-data#validate-params",[1113,2202,2203,2204,2207],{},"Alternatively, use ",[1125,2205,2206],{},"getValidatedRouterParams"," with a schema validator such as Zod for runtime and type safety.",[1113,2209,2210,2211,2214,2215,1516],{},"You can now universally call this API on ",[1125,2212,2213],{},"/api/hello/nuxt"," and get ",[1125,2216,2217],{},"Hello, nuxt!",[1822,2219,2221],{"id":2220},"matching-http-method","Matching HTTP Method",[1113,2223,2224,2225,2228,2229,2228,2232,2228,2235,2238,2239,1516],{},"Handle file names can be suffixed with ",[1125,2226,2227],{},".get",", ",[1125,2230,2231],{},".post",[1125,2233,2234],{},".put",[1125,2236,2237],{},".delete",", ... to match request's ",[1511,2240,2243],{"href":2241,"rel":2242},"https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods",[1515],"HTTP Method",[1117,2245,2248],{"className":1239,"code":2246,"filename":2247,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler(() => 'Test get handler')\n","server/api/test.get.ts",[1125,2249,2250],{"__ignoreMap":1123},[1128,2251,2252,2254,2256,2258,2260,2262,2264,2266,2269,2271],{"class":1130,"line":1131},[1128,2253,1251],{"class":1250},[1128,2255,1254],{"class":1250},[1128,2257,1258],{"class":1257},[1128,2259,1262],{"class":1261},[1128,2261,1491],{"class":1138},[1128,2263,1275],{"class":1274},[1128,2265,1297],{"class":1138},[1128,2267,2268],{"class":1300},"Test get handler",[1128,2270,1382],{"class":1138},[1128,2272,1317],{"class":1261},[1117,2274,2277],{"className":1239,"code":2275,"filename":2276,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler(() => 'Test post handler')\n","server/api/test.post.ts",[1125,2278,2279],{"__ignoreMap":1123},[1128,2280,2281,2283,2285,2287,2289,2291,2293,2295,2298,2300],{"class":1130,"line":1131},[1128,2282,1251],{"class":1250},[1128,2284,1254],{"class":1250},[1128,2286,1258],{"class":1257},[1128,2288,1262],{"class":1261},[1128,2290,1491],{"class":1138},[1128,2292,1275],{"class":1274},[1128,2294,1297],{"class":1138},[1128,2296,2297],{"class":1300},"Test post handler",[1128,2299,1382],{"class":1138},[1128,2301,1317],{"class":1261},[1113,2303,2304,2305,2308],{},"Given the example above, fetching ",[1125,2306,2307],{},"/test"," with:",[2310,2311,2312,2321,2328],"ul",{},[2313,2314,2315,2318,2319],"li",{},[1470,2316,2317],{},"GET"," method: Returns ",[1125,2320,2268],{},[2313,2322,2323,2318,2326],{},[1470,2324,2325],{},"POST",[1125,2327,2297],{},[2313,2329,2330],{},"Any other method: Returns 405 error",[1113,2332,2333,2334,2337],{},"You can also use ",[1125,2335,2336],{},"index.[method].ts"," inside a directory for structuring your code differently, this is useful to create API namespaces.",[2339,2340,2341,2378,2415],"code-group",{},[1117,2342,2345],{"className":1239,"code":2343,"filename":2344,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  // handle GET requests for the `api/foo` endpoint\n})\n","server/api/foo/index.get.ts",[1125,2346,2347,2367,2372],{"__ignoreMap":1123},[1128,2348,2349,2351,2353,2355,2357,2359,2361,2363,2365],{"class":1130,"line":1131},[1128,2350,1251],{"class":1250},[1128,2352,1254],{"class":1250},[1128,2354,1258],{"class":1257},[1128,2356,1262],{"class":1261},[1128,2358,1262],{"class":1138},[1128,2360,1268],{"class":1267},[1128,2362,1271],{"class":1138},[1128,2364,1275],{"class":1274},[1128,2366,1278],{"class":1138},[1128,2368,2369],{"class":1130,"line":1145},[1128,2370,2371],{"class":1167},"  // handle GET requests for the `api/foo` endpoint\n",[1128,2373,2374,2376],{"class":1130,"line":1156},[1128,2375,1314],{"class":1138},[1128,2377,1317],{"class":1261},[1117,2379,2382],{"className":1239,"code":2380,"filename":2381,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  // handle POST requests for the `api/foo` endpoint\n})\n","server/api/foo/index.post.ts",[1125,2383,2384,2404,2409],{"__ignoreMap":1123},[1128,2385,2386,2388,2390,2392,2394,2396,2398,2400,2402],{"class":1130,"line":1131},[1128,2387,1251],{"class":1250},[1128,2389,1254],{"class":1250},[1128,2391,1258],{"class":1257},[1128,2393,1262],{"class":1261},[1128,2395,1262],{"class":1138},[1128,2397,1268],{"class":1267},[1128,2399,1271],{"class":1138},[1128,2401,1275],{"class":1274},[1128,2403,1278],{"class":1138},[1128,2405,2406],{"class":1130,"line":1145},[1128,2407,2408],{"class":1167},"  // handle POST requests for the `api/foo` endpoint\n",[1128,2410,2411,2413],{"class":1130,"line":1156},[1128,2412,1314],{"class":1138},[1128,2414,1317],{"class":1261},[1117,2416,2419],{"className":1239,"code":2417,"filename":2418,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  // handle GET requests for the `api/foo/bar` endpoint\n})\n","server/api/foo/bar.get.ts",[1125,2420,2421,2441,2446],{"__ignoreMap":1123},[1128,2422,2423,2425,2427,2429,2431,2433,2435,2437,2439],{"class":1130,"line":1131},[1128,2424,1251],{"class":1250},[1128,2426,1254],{"class":1250},[1128,2428,1258],{"class":1257},[1128,2430,1262],{"class":1261},[1128,2432,1262],{"class":1138},[1128,2434,1268],{"class":1267},[1128,2436,1271],{"class":1138},[1128,2438,1275],{"class":1274},[1128,2440,1278],{"class":1138},[1128,2442,2443],{"class":1130,"line":1145},[1128,2444,2445],{"class":1167},"  // handle GET requests for the `api/foo/bar` endpoint\n",[1128,2447,2448,2450],{"class":1130,"line":1156},[1128,2449,1314],{"class":1138},[1128,2451,1317],{"class":1261},[1822,2453,2455],{"id":2454},"catch-all-route","Catch-all Route",[1113,2457,2458],{},"Catch-all routes are helpful for fallback route handling.",[1113,2460,2461,2462,2465,2466,1516],{},"For example, creating a file named ",[1125,2463,2464],{},"~/server/api/foo/[...].ts"," will register a catch-all route for all requests that do not match any route handler, such as ",[1125,2467,2468],{},"/api/foo/bar/baz",[1117,2470,2473],{"className":1239,"code":2471,"filename":2472,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  // event.context.path to get the route path: '/api/foo/bar/baz'\n  // event.context.params._ to get the route segment: 'bar/baz'\n  return `Default foo handler`\n})\n","server/api/foo/[...].ts",[1125,2474,2475,2495,2500,2505,2516],{"__ignoreMap":1123},[1128,2476,2477,2479,2481,2483,2485,2487,2489,2491,2493],{"class":1130,"line":1131},[1128,2478,1251],{"class":1250},[1128,2480,1254],{"class":1250},[1128,2482,1258],{"class":1257},[1128,2484,1262],{"class":1261},[1128,2486,1262],{"class":1138},[1128,2488,1268],{"class":1267},[1128,2490,1271],{"class":1138},[1128,2492,1275],{"class":1274},[1128,2494,1278],{"class":1138},[1128,2496,2497],{"class":1130,"line":1145},[1128,2498,2499],{"class":1167},"  // event.context.path to get the route path: '/api/foo/bar/baz'\n",[1128,2501,2502],{"class":1130,"line":1156},[1128,2503,2504],{"class":1167},"  // event.context.params._ to get the route segment: 'bar/baz'\n",[1128,2506,2507,2509,2511,2514],{"class":1130,"line":1171},[1128,2508,1283],{"class":1250},[1128,2510,2175],{"class":1138},[1128,2512,2513],{"class":1300},"Default foo handler",[1128,2515,2191],{"class":1138},[1128,2517,2518,2520],{"class":1130,"line":1181},[1128,2519,1314],{"class":1138},[1128,2521,1317],{"class":1261},[1113,2523,2524,2525,2528,2529,1516],{},"You can set a name for the catch-all route by using ",[1125,2526,2527],{},"~/server/api/foo/[...slug].ts"," and access it via ",[1125,2530,2531],{},"event.context.params.slug",[1117,2533,2536],{"className":1239,"code":2534,"filename":2535,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  // event.context.params.slug to get the route segment: 'bar/baz'\n  return `Default foo handler`\n})\n","server/api/foo/[...slug].ts",[1125,2537,2538,2558,2563,2573],{"__ignoreMap":1123},[1128,2539,2540,2542,2544,2546,2548,2550,2552,2554,2556],{"class":1130,"line":1131},[1128,2541,1251],{"class":1250},[1128,2543,1254],{"class":1250},[1128,2545,1258],{"class":1257},[1128,2547,1262],{"class":1261},[1128,2549,1262],{"class":1138},[1128,2551,1268],{"class":1267},[1128,2553,1271],{"class":1138},[1128,2555,1275],{"class":1274},[1128,2557,1278],{"class":1138},[1128,2559,2560],{"class":1130,"line":1145},[1128,2561,2562],{"class":1167},"  // event.context.params.slug to get the route segment: 'bar/baz'\n",[1128,2564,2565,2567,2569,2571],{"class":1130,"line":1156},[1128,2566,1283],{"class":1250},[1128,2568,2175],{"class":1138},[1128,2570,2513],{"class":1300},[1128,2572,2191],{"class":1138},[1128,2574,2575,2577],{"class":1130,"line":1171},[1128,2576,1314],{"class":1138},[1128,2578,1317],{"class":1261},[1822,2580,2582],{"id":2581},"body-handling","Body Handling",[1117,2584,2587],{"className":1239,"code":2585,"filename":2586,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler(async (event) => {\n  const body = await readBody(event)\n  return { body }\n})\n","server/api/submit.post.ts",[1125,2588,2589,2611,2631,2641],{"__ignoreMap":1123},[1128,2590,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609],{"class":1130,"line":1131},[1128,2592,1251],{"class":1250},[1128,2594,1254],{"class":1250},[1128,2596,1258],{"class":1257},[1128,2598,1262],{"class":1261},[1128,2600,1917],{"class":1274},[1128,2602,1989],{"class":1138},[1128,2604,1268],{"class":1267},[1128,2606,1271],{"class":1138},[1128,2608,1275],{"class":1274},[1128,2610,1278],{"class":1138},[1128,2612,2613,2615,2618,2620,2622,2625,2627,2629],{"class":1130,"line":1145},[1128,2614,2141],{"class":1274},[1128,2616,2617],{"class":1261}," body",[1128,2619,1371],{"class":1138},[1128,2621,1374],{"class":1250},[1128,2623,2624],{"class":1257}," readBody",[1128,2626,1262],{"class":1290},[1128,2628,1268],{"class":1261},[1128,2630,1317],{"class":1290},[1128,2632,2633,2635,2637,2639],{"class":1130,"line":1156},[1128,2634,1283],{"class":1250},[1128,2636,1363],{"class":1138},[1128,2638,2617],{"class":1261},[1128,2640,1671],{"class":1138},[1128,2642,2643,2645],{"class":1130,"line":1171},[1128,2644,1314],{"class":1138},[1128,2646,1317],{"class":1261},[2036,2648,2650],{"to":2649},"https://unjs.io/blog/2023-08-15-h3-towards-the-edge-of-the-web#runtime-type-safe-request-utils",[1113,2651,2203,2652,2207],{},[1125,2653,2654],{},"readValidatedBody",[1113,2656,2657],{},"You can now universally call this API using:",[1117,2659,2661],{"className":1323,"code":2660,"filename":248,"language":1326,"meta":1123,"style":1123},"\u003Cscript setup lang=\"ts\">\nasync function submit() {\n  const { body } = await $fetch('/api/submit', {\n    method: 'post',\n    body: { test: 123 }\n  })\n}\n\u003C/script>\n",[1125,2662,2663,2683,2697,2727,2744,2762,2768,2772],{"__ignoreMap":1123},[1128,2664,2665,2667,2669,2671,2673,2675,2677,2679,2681],{"class":1130,"line":1131},[1128,2666,1333],{"class":1138},[1128,2668,1336],{"class":1290},[1128,2670,1339],{"class":1274},[1128,2672,1342],{"class":1274},[1128,2674,1345],{"class":1138},[1128,2676,1348],{"class":1138},[1128,2678,1242],{"class":1300},[1128,2680,1348],{"class":1138},[1128,2682,1355],{"class":1138},[1128,2684,2685,2687,2690,2693,2695],{"class":1130,"line":1145},[1128,2686,1917],{"class":1274},[1128,2688,2689],{"class":1274}," function",[1128,2691,2692],{"class":1257}," submit",[1128,2694,1491],{"class":1138},[1128,2696,1278],{"class":1138},[1128,2698,2699,2701,2703,2705,2707,2709,2711,2714,2716,2718,2721,2723,2725],{"class":1130,"line":1156},[1128,2700,2141],{"class":1274},[1128,2702,1363],{"class":1138},[1128,2704,2617],{"class":1261},[1128,2706,1814],{"class":1138},[1128,2708,1371],{"class":1138},[1128,2710,1374],{"class":1250},[1128,2712,2713],{"class":1257}," $fetch",[1128,2715,1262],{"class":1290},[1128,2717,1382],{"class":1138},[1128,2719,2720],{"class":1300},"/api/submit",[1128,2722,1382],{"class":1138},[1128,2724,1740],{"class":1138},[1128,2726,1278],{"class":1138},[1128,2728,2729,2732,2734,2736,2739,2741],{"class":1130,"line":1171},[1128,2730,2731],{"class":1290},"    method",[1128,2733,1294],{"class":1138},[1128,2735,1297],{"class":1138},[1128,2737,2738],{"class":1300},"post",[1128,2740,1382],{"class":1138},[1128,2742,2743],{"class":1138},",\n",[1128,2745,2746,2749,2751,2753,2756,2758,2760],{"class":1130,"line":1181},[1128,2747,2748],{"class":1290},"    body",[1128,2750,1294],{"class":1138},[1128,2752,1363],{"class":1138},[1128,2754,2755],{"class":1290}," test",[1128,2757,1294],{"class":1138},[1128,2759,1668],{"class":1667},[1128,2761,1671],{"class":1138},[1128,2763,2764,2766],{"class":1130,"line":1194},[1128,2765,2028],{"class":1138},[1128,2767,1317],{"class":1290},[1128,2769,2770],{"class":1130,"line":1204},[1128,2771,2085],{"class":1138},[1128,2773,2774,2776,2778],{"class":1130,"line":1934},[1128,2775,1394],{"class":1138},[1128,2777,1336],{"class":1290},[1128,2779,1355],{"class":1138},[1518,2781,2782],{},[1113,2783,2784,2785,2788,2789,2791,2792,2795,2796,2798,2799,2802],{},"We are using ",[1125,2786,2787],{},"submit.post.ts"," in the filename only to match requests with ",[1125,2790,2325],{}," method that can accept the request body. When using ",[1125,2793,2794],{},"readBody"," within a GET request, ",[1125,2797,2794],{}," will throw a ",[1125,2800,2801],{},"405 Method Not Allowed"," HTTP error.",[1822,2804,2806],{"id":2805},"query-parameters","Query Parameters",[1113,2808,2809,2810],{},"Sample query ",[1125,2811,2812],{},"/api/query?foo=bar&baz=qux",[1117,2814,2817],{"className":1239,"code":2815,"filename":2816,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  const query = getQuery(event)\n\n  return { a: query.foo, b: query.baz }\n})\n","server/api/query.get.ts",[1125,2818,2819,2839,2857,2861,2895],{"__ignoreMap":1123},[1128,2820,2821,2823,2825,2827,2829,2831,2833,2835,2837],{"class":1130,"line":1131},[1128,2822,1251],{"class":1250},[1128,2824,1254],{"class":1250},[1128,2826,1258],{"class":1257},[1128,2828,1262],{"class":1261},[1128,2830,1262],{"class":1138},[1128,2832,1268],{"class":1267},[1128,2834,1271],{"class":1138},[1128,2836,1275],{"class":1274},[1128,2838,1278],{"class":1138},[1128,2840,2841,2843,2846,2848,2851,2853,2855],{"class":1130,"line":1145},[1128,2842,2141],{"class":1274},[1128,2844,2845],{"class":1261}," query",[1128,2847,1371],{"class":1138},[1128,2849,2850],{"class":1257}," getQuery",[1128,2852,1262],{"class":1290},[1128,2854,1268],{"class":1261},[1128,2856,1317],{"class":1290},[1128,2858,2859],{"class":1130,"line":1156},[1128,2860,1404],{"emptyLinePlaceholder":1403},[1128,2862,2863,2865,2867,2870,2872,2874,2876,2879,2881,2884,2886,2888,2890,2893],{"class":1130,"line":1171},[1128,2864,1283],{"class":1250},[1128,2866,1363],{"class":1138},[1128,2868,2869],{"class":1290}," a",[1128,2871,1294],{"class":1138},[1128,2873,2845],{"class":1261},[1128,2875,1516],{"class":1138},[1128,2877,2878],{"class":1261},"foo",[1128,2880,1740],{"class":1138},[1128,2882,2883],{"class":1290}," b",[1128,2885,1294],{"class":1138},[1128,2887,2845],{"class":1261},[1128,2889,1516],{"class":1138},[1128,2891,2892],{"class":1261},"baz",[1128,2894,1671],{"class":1138},[1128,2896,2897,2899],{"class":1130,"line":1181},[1128,2898,1314],{"class":1138},[1128,2900,1317],{"class":1261},[2036,2902,2903],{"to":2649},[1113,2904,2203,2905,2207],{},[1125,2906,2907],{},"getValidatedQuery",[1822,2909,74],{"id":2910},"error-handling",[1113,2912,2913,2914,2917],{},"If no errors are thrown, a status code of ",[1125,2915,2916],{},"200 OK"," will be returned.",[1113,2919,2920,2921,2924],{},"Any uncaught errors will return a ",[1125,2922,2923],{},"500 Internal Server Error"," HTTP Error.",[1113,2926,2927,2928,1294],{},"To return other error codes, throw an exception with ",[1511,2929,2930],{"href":576},[1125,2931,575],{},[1117,2933,2936],{"className":1239,"code":2934,"filename":2935,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  const id = parseInt(event.context.params.id) as number\n\n  if (!Number.isInteger(id)) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: 'ID should be an integer',\n    })\n  }\n  return 'All good'\n})\n","server/api/validation/[id].ts",[1125,2937,2938,2958,2996,3000,3026,3038,3050,3066,3072,3076,3087],{"__ignoreMap":1123},[1128,2939,2940,2942,2944,2946,2948,2950,2952,2954,2956],{"class":1130,"line":1131},[1128,2941,1251],{"class":1250},[1128,2943,1254],{"class":1250},[1128,2945,1258],{"class":1257},[1128,2947,1262],{"class":1261},[1128,2949,1262],{"class":1138},[1128,2951,1268],{"class":1267},[1128,2953,1271],{"class":1138},[1128,2955,1275],{"class":1274},[1128,2957,1278],{"class":1138},[1128,2959,2960,2962,2965,2967,2970,2972,2974,2976,2978,2980,2983,2985,2988,2990,2993],{"class":1130,"line":1145},[1128,2961,2141],{"class":1274},[1128,2963,2964],{"class":1261}," id",[1128,2966,1371],{"class":1138},[1128,2968,2969],{"class":1257}," parseInt",[1128,2971,1262],{"class":1290},[1128,2973,1268],{"class":1261},[1128,2975,1516],{"class":1138},[1128,2977,1650],{"class":1261},[1128,2979,1516],{"class":1138},[1128,2981,2982],{"class":1261},"params",[1128,2984,1516],{"class":1138},[1128,2986,2987],{"class":1261},"id",[1128,2989,1995],{"class":1290},[1128,2991,2992],{"class":1250},"as",[1128,2994,2995],{"class":1134}," number\n",[1128,2997,2998],{"class":1130,"line":1156},[1128,2999,1404],{"emptyLinePlaceholder":1403},[1128,3001,3002,3005,3007,3009,3012,3014,3017,3019,3021,3024],{"class":1130,"line":1171},[1128,3003,3004],{"class":1250},"  if",[1128,3006,1989],{"class":1290},[1128,3008,2188],{"class":1138},[1128,3010,3011],{"class":1261},"Number",[1128,3013,1516],{"class":1138},[1128,3015,3016],{"class":1257},"isInteger",[1128,3018,1262],{"class":1290},[1128,3020,2987],{"class":1261},[1128,3022,3023],{"class":1290},")) ",[1128,3025,1998],{"class":1138},[1128,3027,3028,3031,3034,3036],{"class":1130,"line":1181},[1128,3029,3030],{"class":1250},"    throw",[1128,3032,3033],{"class":1257}," createError",[1128,3035,1262],{"class":1290},[1128,3037,1998],{"class":1138},[1128,3039,3040,3043,3045,3048],{"class":1130,"line":1194},[1128,3041,3042],{"class":1290},"      statusCode",[1128,3044,1294],{"class":1138},[1128,3046,3047],{"class":1667}," 400",[1128,3049,2743],{"class":1138},[1128,3051,3052,3055,3057,3059,3062,3064],{"class":1130,"line":1204},[1128,3053,3054],{"class":1290},"      statusMessage",[1128,3056,1294],{"class":1138},[1128,3058,1297],{"class":1138},[1128,3060,3061],{"class":1300},"ID should be an integer",[1128,3063,1382],{"class":1138},[1128,3065,2743],{"class":1138},[1128,3067,3068,3070],{"class":1130,"line":1934},[1128,3069,1983],{"class":1138},[1128,3071,1317],{"class":1290},[1128,3073,3074],{"class":1130,"line":1940},[1128,3075,1309],{"class":1138},[1128,3077,3078,3080,3082,3085],{"class":1130,"line":1962},[1128,3079,1283],{"class":1250},[1128,3081,1297],{"class":1138},[1128,3083,3084],{"class":1300},"All good",[1128,3086,1304],{"class":1138},[1128,3088,3089,3091],{"class":1130,"line":1968},[1128,3090,1314],{"class":1138},[1128,3092,1317],{"class":1261},[1822,3094,3096],{"id":3095},"status-codes","Status Codes",[1113,3098,3099,3100,3104],{},"To return other status codes, use the ",[1511,3101,3102],{"href":644},[1125,3103,643],{}," utility.",[1113,3106,3107,3108],{},"For example, to return ",[1125,3109,3110],{},"202 Accepted",[1117,3112,3114],{"className":1239,"code":3113,"filename":2935,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  setResponseStatus(event, 202)\n})\n",[1125,3115,3116,3136,3152],{"__ignoreMap":1123},[1128,3117,3118,3120,3122,3124,3126,3128,3130,3132,3134],{"class":1130,"line":1131},[1128,3119,1251],{"class":1250},[1128,3121,1254],{"class":1250},[1128,3123,1258],{"class":1257},[1128,3125,1262],{"class":1261},[1128,3127,1262],{"class":1138},[1128,3129,1268],{"class":1267},[1128,3131,1271],{"class":1138},[1128,3133,1275],{"class":1274},[1128,3135,1278],{"class":1138},[1128,3137,3138,3141,3143,3145,3147,3150],{"class":1130,"line":1145},[1128,3139,3140],{"class":1257},"  setResponseStatus",[1128,3142,1262],{"class":1290},[1128,3144,1268],{"class":1261},[1128,3146,1740],{"class":1138},[1128,3148,3149],{"class":1667}," 202",[1128,3151,1317],{"class":1290},[1128,3153,3154,3156],{"class":1130,"line":1156},[1128,3155,1314],{"class":1138},[1128,3157,1317],{"class":1261},[1822,3159,291],{"id":3160},"runtime-config",[2339,3162,3163,3300,3347],{},[1117,3164,3167],{"className":1239,"code":3165,"filename":3166,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler(async (event) => {\n  const config = useRuntimeConfig(event)\n\n  const repo = await $fetch('https://api.github.com/repos/nuxt/nuxt', {\n    headers: {\n      Authorization: `token ${config.githubToken}`\n    }\n  })\n\n  return repo\n})\n","server/api/foo.ts",[1125,3168,3169,3191,3209,3213,3239,3248,3273,3277,3283,3287,3294],{"__ignoreMap":1123},[1128,3170,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189],{"class":1130,"line":1131},[1128,3172,1251],{"class":1250},[1128,3174,1254],{"class":1250},[1128,3176,1258],{"class":1257},[1128,3178,1262],{"class":1261},[1128,3180,1917],{"class":1274},[1128,3182,1989],{"class":1138},[1128,3184,1268],{"class":1267},[1128,3186,1271],{"class":1138},[1128,3188,1275],{"class":1274},[1128,3190,1278],{"class":1138},[1128,3192,3193,3195,3198,3200,3203,3205,3207],{"class":1130,"line":1145},[1128,3194,2141],{"class":1274},[1128,3196,3197],{"class":1261}," config",[1128,3199,1371],{"class":1138},[1128,3201,3202],{"class":1257}," useRuntimeConfig",[1128,3204,1262],{"class":1290},[1128,3206,1268],{"class":1261},[1128,3208,1317],{"class":1290},[1128,3210,3211],{"class":1130,"line":1156},[1128,3212,1404],{"emptyLinePlaceholder":1403},[1128,3214,3215,3217,3220,3222,3224,3226,3228,3230,3233,3235,3237],{"class":1130,"line":1171},[1128,3216,2141],{"class":1274},[1128,3218,3219],{"class":1261}," repo",[1128,3221,1371],{"class":1138},[1128,3223,1374],{"class":1250},[1128,3225,2713],{"class":1257},[1128,3227,1262],{"class":1290},[1128,3229,1382],{"class":1138},[1128,3231,3232],{"class":1300},"https://api.github.com/repos/nuxt/nuxt",[1128,3234,1382],{"class":1138},[1128,3236,1740],{"class":1138},[1128,3238,1278],{"class":1138},[1128,3240,3241,3244,3246],{"class":1130,"line":1181},[1128,3242,3243],{"class":1290},"    headers",[1128,3245,1294],{"class":1138},[1128,3247,1278],{"class":1138},[1128,3249,3250,3253,3255,3257,3260,3262,3265,3267,3270],{"class":1130,"line":1194},[1128,3251,3252],{"class":1290},"      Authorization",[1128,3254,1294],{"class":1138},[1128,3256,2175],{"class":1138},[1128,3258,3259],{"class":1300},"token ",[1128,3261,2181],{"class":1138},[1128,3263,3264],{"class":1261},"config",[1128,3266,1516],{"class":1138},[1128,3268,3269],{"class":1261},"githubToken",[1128,3271,3272],{"class":1138},"}`\n",[1128,3274,3275],{"class":1130,"line":1204},[1128,3276,2022],{"class":1138},[1128,3278,3279,3281],{"class":1130,"line":1934},[1128,3280,2028],{"class":1138},[1128,3282,1317],{"class":1290},[1128,3284,3285],{"class":1130,"line":1940},[1128,3286,1404],{"emptyLinePlaceholder":1403},[1128,3288,3289,3291],{"class":1130,"line":1962},[1128,3290,1283],{"class":1250},[1128,3292,3293],{"class":1261}," repo\n",[1128,3295,3296,3298],{"class":1130,"line":1968},[1128,3297,1314],{"class":1138},[1128,3299,1317],{"class":1261},[1117,3301,3303],{"className":1239,"code":3302,"filename":260,"language":1242,"meta":1123,"style":1123},"export default defineNuxtConfig({\n  runtimeConfig: {\n    githubToken: ''\n  }\n})\n",[1125,3304,3305,3318,3327,3337,3341],{"__ignoreMap":1123},[1128,3306,3307,3309,3311,3314,3316],{"class":1130,"line":1131},[1128,3308,1251],{"class":1250},[1128,3310,1254],{"class":1250},[1128,3312,3313],{"class":1257}," defineNuxtConfig",[1128,3315,1262],{"class":1261},[1128,3317,1998],{"class":1138},[1128,3319,3320,3323,3325],{"class":1130,"line":1145},[1128,3321,3322],{"class":1290},"  runtimeConfig",[1128,3324,1294],{"class":1138},[1128,3326,1278],{"class":1138},[1128,3328,3329,3332,3334],{"class":1130,"line":1156},[1128,3330,3331],{"class":1290},"    githubToken",[1128,3333,1294],{"class":1138},[1128,3335,3336],{"class":1138}," ''\n",[1128,3338,3339],{"class":1130,"line":1171},[1128,3340,1309],{"class":1138},[1128,3342,3343,3345],{"class":1130,"line":1181},[1128,3344,1314],{"class":1138},[1128,3346,1317],{"class":1261},[1117,3348,3352],{"className":3349,"code":3350,"filename":231,"language":3351,"meta":1123,"style":1123},"language-ini shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","NUXT_GITHUB_TOKEN='\u003Cmy-super-token>'\n","ini",[1125,3353,3354],{"__ignoreMap":1123},[1128,3355,3356,3359,3361,3363,3366],{"class":1130,"line":1131},[1128,3357,3358],{"class":1290},"NUXT_GITHUB_TOKEN",[1128,3360,1345],{"class":1138},[1128,3362,1382],{"class":1138},[1128,3364,3365],{"class":1300},"\u003Cmy-super-token>",[1128,3367,1304],{"class":1138},[1518,3369,3370],{},[1113,3371,3372,3373,3375,3376,3378,3379,3383],{},"Giving the ",[1125,3374,1268],{}," as argument to ",[1125,3377,520],{}," is optional, but it is recommended to pass it to get the runtime config overwritten by ",[1511,3380,3382],{"href":3381},"/docs/guide/going-further/runtime-config#environment-variables","environment variables"," at runtime for server routes.",[1822,3385,3387],{"id":3386},"request-cookies","Request Cookies",[1117,3389,3392],{"className":1239,"code":3390,"filename":3391,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  const cookies = parseCookies(event)\n\n  return { cookies }\n})\n","server/api/cookies.ts",[1125,3393,3394,3414,3432,3436,3446],{"__ignoreMap":1123},[1128,3395,3396,3398,3400,3402,3404,3406,3408,3410,3412],{"class":1130,"line":1131},[1128,3397,1251],{"class":1250},[1128,3399,1254],{"class":1250},[1128,3401,1258],{"class":1257},[1128,3403,1262],{"class":1261},[1128,3405,1262],{"class":1138},[1128,3407,1268],{"class":1267},[1128,3409,1271],{"class":1138},[1128,3411,1275],{"class":1274},[1128,3413,1278],{"class":1138},[1128,3415,3416,3418,3421,3423,3426,3428,3430],{"class":1130,"line":1145},[1128,3417,2141],{"class":1274},[1128,3419,3420],{"class":1261}," cookies",[1128,3422,1371],{"class":1138},[1128,3424,3425],{"class":1257}," parseCookies",[1128,3427,1262],{"class":1290},[1128,3429,1268],{"class":1261},[1128,3431,1317],{"class":1290},[1128,3433,3434],{"class":1130,"line":1156},[1128,3435,1404],{"emptyLinePlaceholder":1403},[1128,3437,3438,3440,3442,3444],{"class":1130,"line":1171},[1128,3439,1283],{"class":1250},[1128,3441,1363],{"class":1138},[1128,3443,3420],{"class":1261},[1128,3445,1671],{"class":1138},[1128,3447,3448,3450],{"class":1130,"line":1181},[1128,3449,1314],{"class":1138},[1128,3451,1317],{"class":1261},[1822,3453,3455],{"id":3454},"forwarding-context-headers","Forwarding Context & Headers",[1113,3457,3458,3459,3462],{},"By default, neither the headers from the incoming request nor the request context are forwarded when\nmaking fetch requests in server routes. You can use ",[1125,3460,3461],{},"event.$fetch"," to forward the request context and headers when making fetch requests in server routes.",[1117,3464,3467],{"className":1239,"code":3465,"filename":3466,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler((event) => {\n  return event.$fetch('/api/forwarded')\n})\n","server/api/forward.ts",[1125,3468,3469,3489,3510],{"__ignoreMap":1123},[1128,3470,3471,3473,3475,3477,3479,3481,3483,3485,3487],{"class":1130,"line":1131},[1128,3472,1251],{"class":1250},[1128,3474,1254],{"class":1250},[1128,3476,1258],{"class":1257},[1128,3478,1262],{"class":1261},[1128,3480,1262],{"class":1138},[1128,3482,1268],{"class":1267},[1128,3484,1271],{"class":1138},[1128,3486,1275],{"class":1274},[1128,3488,1278],{"class":1138},[1128,3490,3491,3493,3495,3497,3499,3501,3503,3506,3508],{"class":1130,"line":1145},[1128,3492,1283],{"class":1250},[1128,3494,1920],{"class":1261},[1128,3496,1516],{"class":1138},[1128,3498,547],{"class":1257},[1128,3500,1262],{"class":1290},[1128,3502,1382],{"class":1138},[1128,3504,3505],{"class":1300},"/api/forwarded",[1128,3507,1382],{"class":1138},[1128,3509,1317],{"class":1290},[1128,3511,3512,3514],{"class":1130,"line":1156},[1128,3513,1314],{"class":1138},[1128,3515,1317],{"class":1261},[1518,3517,3518],{},[1113,3519,3520,3521,3524,3525,3528,3529,2228,3532,2228,3535,2228,3538,2228,3541,2228,3544,2228,3547],{},"Headers that are ",[1470,3522,3523],{},"not meant to be forwarded"," will ",[1470,3526,3527],{},"not be included"," in the request. These headers include, for example:\n",[1125,3530,3531],{},"transfer-encoding",[1125,3533,3534],{},"connection",[1125,3536,3537],{},"keep-alive",[1125,3539,3540],{},"upgrade",[1125,3542,3543],{},"expect",[1125,3545,3546],{},"host",[1125,3548,3549],{},"accept",[1822,3551,3553],{"id":3552},"awaiting-promises-after-response","Awaiting Promises After Response",[1113,3555,3556,3557,3560],{},"When handling server requests, you might need to perform asynchronous tasks that shouldn't block the response to the client (for example, caching and logging). You can use ",[1125,3558,3559],{},"event.waitUntil"," to await a promise in the background without delaying the response.",[1113,3562,3563,3564,3566],{},"The ",[1125,3565,3559],{}," method accepts a promise that will be awaited before the handler terminates, ensuring the task is completed even if the server would otherwise terminate the handler right after the response is sent. This integrates with runtime providers to leverage their native capabilities for handling asynchronous operations after the response is sent.",[1117,3568,3571],{"className":1239,"code":3569,"filename":3570,"language":1242,"meta":1123,"style":1123},"const timeConsumingBackgroundTask = async () => {\n  await new Promise((resolve) => setTimeout(resolve, 1000))\n};\n\nexport default eventHandler((event) => {\n  // schedule a background task without blocking the response\n  event.waitUntil(timeConsumingBackgroundTask())\n\n  // immediately send the response to the client\n  return 'done'\n});\n","server/api/background-task.ts",[1125,3572,3573,3592,3628,3633,3637,3658,3663,3680,3684,3689,3700],{"__ignoreMap":1123},[1128,3574,3575,3577,3580,3582,3585,3588,3590],{"class":1130,"line":1131},[1128,3576,1360],{"class":1274},[1128,3578,3579],{"class":1261}," timeConsumingBackgroundTask ",[1128,3581,1345],{"class":1138},[1128,3583,3584],{"class":1274}," async",[1128,3586,3587],{"class":1138}," ()",[1128,3589,1275],{"class":1274},[1128,3591,1278],{"class":1138},[1128,3593,3594,3597,3600,3603,3605,3607,3610,3612,3614,3617,3619,3621,3623,3626],{"class":1130,"line":1145},[1128,3595,3596],{"class":1250},"  await",[1128,3598,3599],{"class":1138}," new",[1128,3601,3602],{"class":1134}," Promise",[1128,3604,1262],{"class":1290},[1128,3606,1262],{"class":1138},[1128,3608,3609],{"class":1267},"resolve",[1128,3611,1271],{"class":1138},[1128,3613,1275],{"class":1274},[1128,3615,3616],{"class":1257}," setTimeout",[1128,3618,1262],{"class":1290},[1128,3620,3609],{"class":1261},[1128,3622,1740],{"class":1138},[1128,3624,3625],{"class":1667}," 1000",[1128,3627,1608],{"class":1290},[1128,3629,3630],{"class":1130,"line":1156},[1128,3631,3632],{"class":1138},"};\n",[1128,3634,3635],{"class":1130,"line":1171},[1128,3636,1404],{"emptyLinePlaceholder":1403},[1128,3638,3639,3641,3643,3646,3648,3650,3652,3654,3656],{"class":1130,"line":1181},[1128,3640,1251],{"class":1250},[1128,3642,1254],{"class":1250},[1128,3644,3645],{"class":1257}," eventHandler",[1128,3647,1262],{"class":1261},[1128,3649,1262],{"class":1138},[1128,3651,1268],{"class":1267},[1128,3653,1271],{"class":1138},[1128,3655,1275],{"class":1274},[1128,3657,1278],{"class":1138},[1128,3659,3660],{"class":1130,"line":1194},[1128,3661,3662],{"class":1167},"  // schedule a background task without blocking the response\n",[1128,3664,3665,3667,3669,3672,3674,3677],{"class":1130,"line":1204},[1128,3666,1645],{"class":1261},[1128,3668,1516],{"class":1138},[1128,3670,3671],{"class":1257},"waitUntil",[1128,3673,1262],{"class":1290},[1128,3675,3676],{"class":1257},"timeConsumingBackgroundTask",[1128,3678,3679],{"class":1290},"())\n",[1128,3681,3682],{"class":1130,"line":1934},[1128,3683,1404],{"emptyLinePlaceholder":1403},[1128,3685,3686],{"class":1130,"line":1940},[1128,3687,3688],{"class":1167},"  // immediately send the response to the client\n",[1128,3690,3691,3693,3695,3698],{"class":1130,"line":1962},[1128,3692,1283],{"class":1250},[1128,3694,1297],{"class":1138},[1128,3696,3697],{"class":1300},"done",[1128,3699,1304],{"class":1138},[1128,3701,3702,3704,3706],{"class":1130,"line":1968},[1128,3703,1314],{"class":1138},[1128,3705,1271],{"class":1261},[1128,3707,3708],{"class":1138},";\n",[1442,3710,3712],{"id":3711},"advanced-usage","Advanced Usage",[1822,3714,3716],{"id":3715},"nitro-config","Nitro Config",[1113,3718,3719,3720,3723,3724,3727,3728,1516],{},"You can use ",[1125,3721,3722],{},"nitro"," key in ",[1125,3725,3726],{},"nuxt.config"," to directly set ",[1511,3729,3732],{"href":3730,"rel":3731},"https://nitro.unjs.io/config",[1515],"Nitro configuration",[3734,3735,3736],"warning",{},[1113,3737,3738],{},"This is an advanced option. Custom config can affect production deployments, as the configuration interface might change over time when Nitro is upgraded in semver-minor versions of Nuxt.",[1117,3740,3742],{"className":1239,"code":3741,"filename":260,"language":1242,"meta":1123,"style":1123},"export default defineNuxtConfig({\n  // https://nitro.unjs.io/config\n  nitro: {}\n})\n",[1125,3743,3744,3756,3761,3771],{"__ignoreMap":1123},[1128,3745,3746,3748,3750,3752,3754],{"class":1130,"line":1131},[1128,3747,1251],{"class":1250},[1128,3749,1254],{"class":1250},[1128,3751,3313],{"class":1257},[1128,3753,1262],{"class":1261},[1128,3755,1998],{"class":1138},[1128,3757,3758],{"class":1130,"line":1145},[1128,3759,3760],{"class":1167},"  // https://nitro.unjs.io/config\n",[1128,3762,3763,3766,3768],{"class":1130,"line":1156},[1128,3764,3765],{"class":1290},"  nitro",[1128,3767,1294],{"class":1138},[1128,3769,3770],{"class":1138}," {}\n",[1128,3772,3773,3775],{"class":1130,"line":1171},[1128,3774,1314],{"class":1138},[1128,3776,1317],{"class":1261},[1753,3778],{"to":140},[1822,3780,3782],{"id":3781},"nested-router","Nested Router",[1117,3784,3787],{"className":1239,"code":3785,"filename":3786,"language":1242,"meta":1123,"style":1123},"import { createRouter, defineEventHandler, useBase } from 'h3'\n\nconst router = createRouter()\n\nrouter.get('/test', defineEventHandler(() => 'Hello World'))\n\nexport default useBase('/api/hello', router.handler)\n","server/api/hello/[...slug].ts",[1125,3788,3789,3817,3821,3835,3839,3875,3879],{"__ignoreMap":1123},[1128,3790,3791,3793,3795,3798,3800,3802,3804,3807,3809,3811,3813,3815],{"class":1130,"line":1131},[1128,3792,1798],{"class":1250},[1128,3794,1363],{"class":1138},[1128,3796,3797],{"class":1261}," createRouter",[1128,3799,1740],{"class":1138},[1128,3801,1258],{"class":1261},[1128,3803,1740],{"class":1138},[1128,3805,3806],{"class":1261}," useBase",[1128,3808,1814],{"class":1138},[1128,3810,1817],{"class":1250},[1128,3812,1297],{"class":1138},[1128,3814,1822],{"class":1300},[1128,3816,1304],{"class":1138},[1128,3818,3819],{"class":1130,"line":1145},[1128,3820,1404],{"emptyLinePlaceholder":1403},[1128,3822,3823,3825,3828,3830,3832],{"class":1130,"line":1156},[1128,3824,1360],{"class":1274},[1128,3826,3827],{"class":1261}," router ",[1128,3829,1345],{"class":1138},[1128,3831,3797],{"class":1257},[1128,3833,3834],{"class":1261},"()\n",[1128,3836,3837],{"class":1130,"line":1171},[1128,3838,1404],{"emptyLinePlaceholder":1403},[1128,3840,3841,3844,3846,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873],{"class":1130,"line":1181},[1128,3842,3843],{"class":1261},"router",[1128,3845,1516],{"class":1138},[1128,3847,3848],{"class":1257},"get",[1128,3850,1262],{"class":1261},[1128,3852,1382],{"class":1138},[1128,3854,2307],{"class":1300},[1128,3856,1382],{"class":1138},[1128,3858,1740],{"class":1138},[1128,3860,1258],{"class":1257},[1128,3862,1262],{"class":1261},[1128,3864,1491],{"class":1138},[1128,3866,1275],{"class":1274},[1128,3868,1297],{"class":1138},[1128,3870,812],{"class":1300},[1128,3872,1382],{"class":1138},[1128,3874,1608],{"class":1261},[1128,3876,3877],{"class":1130,"line":1194},[1128,3878,1404],{"emptyLinePlaceholder":1403},[1128,3880,3881,3883,3885,3887,3889,3891,3893,3895,3897,3900,3902],{"class":1130,"line":1204},[1128,3882,1251],{"class":1250},[1128,3884,1254],{"class":1250},[1128,3886,3806],{"class":1257},[1128,3888,1262],{"class":1261},[1128,3890,1382],{"class":1138},[1128,3892,1385],{"class":1300},[1128,3894,1382],{"class":1138},[1128,3896,1740],{"class":1138},[1128,3898,3899],{"class":1261}," router",[1128,3901,1516],{"class":1138},[1128,3903,3904],{"class":1261},"handler)\n",[1822,3906,3908],{"id":3907},"sending-streams","Sending Streams",[2036,3910,3911],{},[1113,3912,3913],{},"This is an experimental feature and is available in all environments.",[1117,3915,3918],{"className":1239,"code":3916,"filename":3917,"language":1242,"meta":1123,"style":1123},"import fs from 'node:fs'\nimport { sendStream } from 'h3'\n\nexport default defineEventHandler((event) => {\n  return sendStream(event, fs.createReadStream('/path/to/file'))\n})\n","server/api/foo.get.ts",[1125,3919,3920,3937,3956,3960,3980,4011],{"__ignoreMap":1123},[1128,3921,3922,3924,3927,3930,3932,3935],{"class":1130,"line":1131},[1128,3923,1798],{"class":1250},[1128,3925,3926],{"class":1261}," fs ",[1128,3928,3929],{"class":1250},"from",[1128,3931,1297],{"class":1138},[1128,3933,3934],{"class":1300},"node:fs",[1128,3936,1304],{"class":1138},[1128,3938,3939,3941,3943,3946,3948,3950,3952,3954],{"class":1130,"line":1145},[1128,3940,1798],{"class":1250},[1128,3942,1363],{"class":1138},[1128,3944,3945],{"class":1261}," sendStream",[1128,3947,1814],{"class":1138},[1128,3949,1817],{"class":1250},[1128,3951,1297],{"class":1138},[1128,3953,1822],{"class":1300},[1128,3955,1304],{"class":1138},[1128,3957,3958],{"class":1130,"line":1156},[1128,3959,1404],{"emptyLinePlaceholder":1403},[1128,3961,3962,3964,3966,3968,3970,3972,3974,3976,3978],{"class":1130,"line":1171},[1128,3963,1251],{"class":1250},[1128,3965,1254],{"class":1250},[1128,3967,1258],{"class":1257},[1128,3969,1262],{"class":1261},[1128,3971,1262],{"class":1138},[1128,3973,1268],{"class":1267},[1128,3975,1271],{"class":1138},[1128,3977,1275],{"class":1274},[1128,3979,1278],{"class":1138},[1128,3981,3982,3984,3986,3988,3990,3992,3995,3997,4000,4002,4004,4007,4009],{"class":1130,"line":1181},[1128,3983,1283],{"class":1250},[1128,3985,3945],{"class":1257},[1128,3987,1262],{"class":1290},[1128,3989,1268],{"class":1261},[1128,3991,1740],{"class":1138},[1128,3993,3994],{"class":1261}," fs",[1128,3996,1516],{"class":1138},[1128,3998,3999],{"class":1257},"createReadStream",[1128,4001,1262],{"class":1290},[1128,4003,1382],{"class":1138},[1128,4005,4006],{"class":1300},"/path/to/file",[1128,4008,1382],{"class":1138},[1128,4010,1608],{"class":1290},[1128,4012,4013,4015],{"class":1130,"line":1194},[1128,4014,1314],{"class":1138},[1128,4016,1317],{"class":1261},[1822,4018,4020],{"id":4019},"sending-redirect","Sending Redirect",[1117,4022,4024],{"className":1239,"code":4023,"filename":3917,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler(async (event) => {\n  await sendRedirect(event, '/path/redirect/to', 302)\n})\n",[1125,4025,4026,4048,4075],{"__ignoreMap":1123},[1128,4027,4028,4030,4032,4034,4036,4038,4040,4042,4044,4046],{"class":1130,"line":1131},[1128,4029,1251],{"class":1250},[1128,4031,1254],{"class":1250},[1128,4033,1258],{"class":1257},[1128,4035,1262],{"class":1261},[1128,4037,1917],{"class":1274},[1128,4039,1989],{"class":1138},[1128,4041,1268],{"class":1267},[1128,4043,1271],{"class":1138},[1128,4045,1275],{"class":1274},[1128,4047,1278],{"class":1138},[1128,4049,4050,4052,4055,4057,4059,4061,4063,4066,4068,4070,4073],{"class":1130,"line":1145},[1128,4051,3596],{"class":1250},[1128,4053,4054],{"class":1257}," sendRedirect",[1128,4056,1262],{"class":1290},[1128,4058,1268],{"class":1261},[1128,4060,1740],{"class":1138},[1128,4062,1297],{"class":1138},[1128,4064,4065],{"class":1300},"/path/redirect/to",[1128,4067,1382],{"class":1138},[1128,4069,1740],{"class":1138},[1128,4071,4072],{"class":1667}," 302",[1128,4074,1317],{"class":1290},[1128,4076,4077,4079],{"class":1130,"line":1156},[1128,4078,1314],{"class":1138},[1128,4080,1317],{"class":1261},[1822,4082,4084],{"id":4083},"legacy-handler-or-middleware","Legacy Handler or Middleware",[1117,4086,4089],{"className":1239,"code":4087,"filename":4088,"language":1242,"meta":1123,"style":1123},"export default fromNodeMiddleware((req, res) => {\n  res.end('Legacy handler')\n})\n","server/api/legacy.ts",[1125,4090,4091,4118,4139],{"__ignoreMap":1123},[1128,4092,4093,4095,4097,4100,4102,4104,4107,4109,4112,4114,4116],{"class":1130,"line":1131},[1128,4094,1251],{"class":1250},[1128,4096,1254],{"class":1250},[1128,4098,4099],{"class":1257}," fromNodeMiddleware",[1128,4101,1262],{"class":1261},[1128,4103,1262],{"class":1138},[1128,4105,4106],{"class":1267},"req",[1128,4108,1740],{"class":1138},[1128,4110,4111],{"class":1267}," res",[1128,4113,1271],{"class":1138},[1128,4115,1275],{"class":1274},[1128,4117,1278],{"class":1138},[1128,4119,4120,4123,4125,4128,4130,4132,4135,4137],{"class":1130,"line":1145},[1128,4121,4122],{"class":1261},"  res",[1128,4124,1516],{"class":1138},[1128,4126,4127],{"class":1257},"end",[1128,4129,1262],{"class":1290},[1128,4131,1382],{"class":1138},[1128,4133,4134],{"class":1300},"Legacy handler",[1128,4136,1382],{"class":1138},[1128,4138,1317],{"class":1290},[1128,4140,4141,4143],{"class":1130,"line":1156},[1128,4142,1314],{"class":1138},[1128,4144,1317],{"class":1261},[4146,4147,4148],"important",{},[1113,4149,4150,4151,4154],{},"Legacy support is possible using ",[1511,4152,1769],{"href":1767,"rel":4153},[1515],", but it is advised to avoid legacy handlers as much as you can.",[1117,4156,4159],{"className":1239,"code":4157,"filename":4158,"language":1242,"meta":1123,"style":1123},"export default fromNodeMiddleware((req, res, next) => {\n  console.log('Legacy middleware')\n  next()\n})\n","server/middleware/legacy.ts",[1125,4160,4161,4190,4209,4216],{"__ignoreMap":1123},[1128,4162,4163,4165,4167,4169,4171,4173,4175,4177,4179,4181,4184,4186,4188],{"class":1130,"line":1131},[1128,4164,1251],{"class":1250},[1128,4166,1254],{"class":1250},[1128,4168,4099],{"class":1257},[1128,4170,1262],{"class":1261},[1128,4172,1262],{"class":1138},[1128,4174,4106],{"class":1267},[1128,4176,1740],{"class":1138},[1128,4178,4111],{"class":1267},[1128,4180,1740],{"class":1138},[1128,4182,4183],{"class":1267}," next",[1128,4185,1271],{"class":1138},[1128,4187,1275],{"class":1274},[1128,4189,1278],{"class":1138},[1128,4191,4192,4194,4196,4198,4200,4202,4205,4207],{"class":1130,"line":1145},[1128,4193,1581],{"class":1261},[1128,4195,1516],{"class":1138},[1128,4197,1586],{"class":1257},[1128,4199,1262],{"class":1290},[1128,4201,1382],{"class":1138},[1128,4203,4204],{"class":1300},"Legacy middleware",[1128,4206,1382],{"class":1138},[1128,4208,1317],{"class":1290},[1128,4210,4211,4214],{"class":1130,"line":1156},[1128,4212,4213],{"class":1257},"  next",[1128,4215,3834],{"class":1290},[1128,4217,4218,4220],{"class":1130,"line":1171},[1128,4219,1314],{"class":1138},[1128,4221,1317],{"class":1261},[3734,4223,4224],{},[1113,4225,4226,4227,4230,4231,4233,4234,1516],{},"Never combine ",[1125,4228,4229],{},"next()"," callback with a legacy middleware that is ",[1125,4232,1917],{}," or returns a ",[1125,4235,1231],{},[1822,4237,4239],{"id":4238},"server-storage","Server Storage",[1113,4241,4242,4243,4248,4249,4252,4253,1516],{},"Nitro provides a cross-platform ",[1511,4244,4247],{"href":4245,"rel":4246},"https://nitro.unjs.io/guide/storage",[1515],"storage layer",". In order to configure additional storage mount points, you can use ",[1125,4250,4251],{},"nitro.storage",", or ",[1511,4254,4256],{"href":4255},"#server-plugins","server plugins",[1113,4258,4259],{},[1470,4260,4261],{},"Example of adding a Redis storage:",[1113,4263,4264,4265,1294],{},"Using ",[1125,4266,4251],{},[1117,4268,4270],{"className":1239,"code":4269,"filename":260,"language":1242,"meta":1123,"style":1123},"export default defineNuxtConfig({\n  nitro: {\n    storage: {\n      redis: {\n        driver: 'redis',\n        /* redis connector options */\n        port: 6379, // Redis port\n        host: \"127.0.0.1\", // Redis host\n        username: \"\", // needs Redis >= 6\n        password: \"\",\n        db: 0, // Defaults to 0\n        tls: {} // tls/ssl\n      }\n    }\n  }\n})\n",[1125,4271,4272,4284,4292,4301,4310,4326,4331,4346,4365,4380,4391,4406,4419,4424,4428,4432],{"__ignoreMap":1123},[1128,4273,4274,4276,4278,4280,4282],{"class":1130,"line":1131},[1128,4275,1251],{"class":1250},[1128,4277,1254],{"class":1250},[1128,4279,3313],{"class":1257},[1128,4281,1262],{"class":1261},[1128,4283,1998],{"class":1138},[1128,4285,4286,4288,4290],{"class":1130,"line":1145},[1128,4287,3765],{"class":1290},[1128,4289,1294],{"class":1138},[1128,4291,1278],{"class":1138},[1128,4293,4294,4297,4299],{"class":1130,"line":1156},[1128,4295,4296],{"class":1290},"    storage",[1128,4298,1294],{"class":1138},[1128,4300,1278],{"class":1138},[1128,4302,4303,4306,4308],{"class":1130,"line":1171},[1128,4304,4305],{"class":1290},"      redis",[1128,4307,1294],{"class":1138},[1128,4309,1278],{"class":1138},[1128,4311,4312,4315,4317,4319,4322,4324],{"class":1130,"line":1181},[1128,4313,4314],{"class":1290},"        driver",[1128,4316,1294],{"class":1138},[1128,4318,1297],{"class":1138},[1128,4320,4321],{"class":1300},"redis",[1128,4323,1382],{"class":1138},[1128,4325,2743],{"class":1138},[1128,4327,4328],{"class":1130,"line":1194},[1128,4329,4330],{"class":1167},"        /* redis connector options */\n",[1128,4332,4333,4336,4338,4341,4343],{"class":1130,"line":1204},[1128,4334,4335],{"class":1290},"        port",[1128,4337,1294],{"class":1138},[1128,4339,4340],{"class":1667}," 6379",[1128,4342,1740],{"class":1138},[1128,4344,4345],{"class":1167}," // Redis port\n",[1128,4347,4348,4351,4353,4355,4358,4360,4362],{"class":1130,"line":1934},[1128,4349,4350],{"class":1290},"        host",[1128,4352,1294],{"class":1138},[1128,4354,2074],{"class":1138},[1128,4356,4357],{"class":1300},"127.0.0.1",[1128,4359,1348],{"class":1138},[1128,4361,1740],{"class":1138},[1128,4363,4364],{"class":1167}," // Redis host\n",[1128,4366,4367,4370,4372,4375,4377],{"class":1130,"line":1940},[1128,4368,4369],{"class":1290},"        username",[1128,4371,1294],{"class":1138},[1128,4373,4374],{"class":1138}," \"\"",[1128,4376,1740],{"class":1138},[1128,4378,4379],{"class":1167}," // needs Redis >= 6\n",[1128,4381,4382,4385,4387,4389],{"class":1130,"line":1962},[1128,4383,4384],{"class":1290},"        password",[1128,4386,1294],{"class":1138},[1128,4388,4374],{"class":1138},[1128,4390,2743],{"class":1138},[1128,4392,4393,4396,4398,4401,4403],{"class":1130,"line":1968},[1128,4394,4395],{"class":1290},"        db",[1128,4397,1294],{"class":1138},[1128,4399,4400],{"class":1667}," 0",[1128,4402,1740],{"class":1138},[1128,4404,4405],{"class":1167}," // Defaults to 0\n",[1128,4407,4408,4411,4413,4416],{"class":1130,"line":1980},[1128,4409,4410],{"class":1290},"        tls",[1128,4412,1294],{"class":1138},[1128,4414,4415],{"class":1138}," {}",[1128,4417,4418],{"class":1167}," // tls/ssl\n",[1128,4420,4421],{"class":1130,"line":2001},[1128,4422,4423],{"class":1138},"      }\n",[1128,4425,4426],{"class":1130,"line":2007},[1128,4427,2022],{"class":1138},[1128,4429,4430],{"class":1130,"line":2019},[1128,4431,1309],{"class":1138},[1128,4433,4434,4436],{"class":1130,"line":2025},[1128,4435,1314],{"class":1138},[1128,4437,1317],{"class":1261},[1113,4439,4440],{},"Then in your API handler:",[1117,4442,4445],{"className":1239,"code":4443,"filename":4444,"language":1242,"meta":1123,"style":1123},"export default defineEventHandler(async (event) => {\n  // List all keys with\n  const keys = await useStorage('redis').getKeys()\n\n  // Set a key with\n  await useStorage('redis').setItem('foo', 'bar')\n\n  // Remove a key with\n  await useStorage('redis').removeItem('foo')\n\n  return {}\n})\n","server/api/storage/test.ts",[1125,4446,4447,4469,4474,4505,4509,4514,4554,4558,4563,4594,4598,4604],{"__ignoreMap":1123},[1128,4448,4449,4451,4453,4455,4457,4459,4461,4463,4465,4467],{"class":1130,"line":1131},[1128,4450,1251],{"class":1250},[1128,4452,1254],{"class":1250},[1128,4454,1258],{"class":1257},[1128,4456,1262],{"class":1261},[1128,4458,1917],{"class":1274},[1128,4460,1989],{"class":1138},[1128,4462,1268],{"class":1267},[1128,4464,1271],{"class":1138},[1128,4466,1275],{"class":1274},[1128,4468,1278],{"class":1138},[1128,4470,4471],{"class":1130,"line":1145},[1128,4472,4473],{"class":1167},"  // List all keys with\n",[1128,4475,4476,4478,4481,4483,4485,4488,4490,4492,4494,4496,4498,4500,4503],{"class":1130,"line":1156},[1128,4477,2141],{"class":1274},[1128,4479,4480],{"class":1261}," keys",[1128,4482,1371],{"class":1138},[1128,4484,1374],{"class":1250},[1128,4486,4487],{"class":1257}," useStorage",[1128,4489,1262],{"class":1290},[1128,4491,1382],{"class":1138},[1128,4493,4321],{"class":1300},[1128,4495,1382],{"class":1138},[1128,4497,1271],{"class":1290},[1128,4499,1516],{"class":1138},[1128,4501,4502],{"class":1257},"getKeys",[1128,4504,3834],{"class":1290},[1128,4506,4507],{"class":1130,"line":1171},[1128,4508,1404],{"emptyLinePlaceholder":1403},[1128,4510,4511],{"class":1130,"line":1181},[1128,4512,4513],{"class":1167},"  // Set a key with\n",[1128,4515,4516,4518,4520,4522,4524,4526,4528,4530,4532,4535,4537,4539,4541,4543,4545,4547,4550,4552],{"class":1130,"line":1194},[1128,4517,3596],{"class":1250},[1128,4519,4487],{"class":1257},[1128,4521,1262],{"class":1290},[1128,4523,1382],{"class":1138},[1128,4525,4321],{"class":1300},[1128,4527,1382],{"class":1138},[1128,4529,1271],{"class":1290},[1128,4531,1516],{"class":1138},[1128,4533,4534],{"class":1257},"setItem",[1128,4536,1262],{"class":1290},[1128,4538,1382],{"class":1138},[1128,4540,2878],{"class":1300},[1128,4542,1382],{"class":1138},[1128,4544,1740],{"class":1138},[1128,4546,1297],{"class":1138},[1128,4548,4549],{"class":1300},"bar",[1128,4551,1382],{"class":1138},[1128,4553,1317],{"class":1290},[1128,4555,4556],{"class":1130,"line":1204},[1128,4557,1404],{"emptyLinePlaceholder":1403},[1128,4559,4560],{"class":1130,"line":1934},[1128,4561,4562],{"class":1167},"  // Remove a key with\n",[1128,4564,4565,4567,4569,4571,4573,4575,4577,4579,4581,4584,4586,4588,4590,4592],{"class":1130,"line":1940},[1128,4566,3596],{"class":1250},[1128,4568,4487],{"class":1257},[1128,4570,1262],{"class":1290},[1128,4572,1382],{"class":1138},[1128,4574,4321],{"class":1300},[1128,4576,1382],{"class":1138},[1128,4578,1271],{"class":1290},[1128,4580,1516],{"class":1138},[1128,4582,4583],{"class":1257},"removeItem",[1128,4585,1262],{"class":1290},[1128,4587,1382],{"class":1138},[1128,4589,2878],{"class":1300},[1128,4591,1382],{"class":1138},[1128,4593,1317],{"class":1290},[1128,4595,4596],{"class":1130,"line":1962},[1128,4597,1404],{"emptyLinePlaceholder":1403},[1128,4599,4600,4602],{"class":1130,"line":1968},[1128,4601,1283],{"class":1250},[1128,4603,3770],{"class":1138},[1128,4605,4606,4608],{"class":1130,"line":1980},[1128,4607,1314],{"class":1138},[1128,4609,1317],{"class":1261},[1753,4611,4612],{"to":4245,"target":1756},[1113,4613,4614],{},"Read more about Nitro Storage Layer.",[1113,4616,4617],{},"Alternatively, you can create a storage mount point using a server plugin and runtime config:",[2339,4619,4620,4808],{},[1117,4621,4624],{"className":1239,"code":4622,"filename":4623,"language":1242,"meta":1123,"style":1123},"import redisDriver from 'unstorage/drivers/redis'\n\nexport default defineNitroPlugin(() => {\n  const storage = useStorage()\n\n  // Dynamically pass in credentials from runtime configuration, or other sources\n  const driver = redisDriver({\n      base: 'redis',\n      host: useRuntimeConfig().redis.host,\n      port: useRuntimeConfig().redis.port,\n      /* other redis connector options */\n    })\n\n  // Mount driver\n  storage.mount('redis', driver)\n})\n","server/plugins/storage.ts",[1125,4625,4626,4642,4646,4662,4675,4679,4684,4700,4715,4736,4758,4763,4769,4773,4778,4802],{"__ignoreMap":1123},[1128,4627,4628,4630,4633,4635,4637,4640],{"class":1130,"line":1131},[1128,4629,1798],{"class":1250},[1128,4631,4632],{"class":1261}," redisDriver ",[1128,4634,3929],{"class":1250},[1128,4636,1297],{"class":1138},[1128,4638,4639],{"class":1300},"unstorage/drivers/redis",[1128,4641,1304],{"class":1138},[1128,4643,4644],{"class":1130,"line":1145},[1128,4645,1404],{"emptyLinePlaceholder":1403},[1128,4647,4648,4650,4652,4654,4656,4658,4660],{"class":1130,"line":1156},[1128,4649,1251],{"class":1250},[1128,4651,1254],{"class":1250},[1128,4653,1707],{"class":1257},[1128,4655,1262],{"class":1261},[1128,4657,1491],{"class":1138},[1128,4659,1275],{"class":1274},[1128,4661,1278],{"class":1138},[1128,4663,4664,4666,4669,4671,4673],{"class":1130,"line":1171},[1128,4665,2141],{"class":1274},[1128,4667,4668],{"class":1261}," storage",[1128,4670,1371],{"class":1138},[1128,4672,4487],{"class":1257},[1128,4674,3834],{"class":1290},[1128,4676,4677],{"class":1130,"line":1181},[1128,4678,1404],{"emptyLinePlaceholder":1403},[1128,4680,4681],{"class":1130,"line":1194},[1128,4682,4683],{"class":1167},"  // Dynamically pass in credentials from runtime configuration, or other sources\n",[1128,4685,4686,4688,4691,4693,4696,4698],{"class":1130,"line":1204},[1128,4687,2141],{"class":1274},[1128,4689,4690],{"class":1261}," driver",[1128,4692,1371],{"class":1138},[1128,4694,4695],{"class":1257}," redisDriver",[1128,4697,1262],{"class":1290},[1128,4699,1998],{"class":1138},[1128,4701,4702,4705,4707,4709,4711,4713],{"class":1130,"line":1934},[1128,4703,4704],{"class":1290},"      base",[1128,4706,1294],{"class":1138},[1128,4708,1297],{"class":1138},[1128,4710,4321],{"class":1300},[1128,4712,1382],{"class":1138},[1128,4714,2743],{"class":1138},[1128,4716,4717,4720,4722,4724,4726,4728,4730,4732,4734],{"class":1130,"line":1940},[1128,4718,4719],{"class":1290},"      host",[1128,4721,1294],{"class":1138},[1128,4723,3202],{"class":1257},[1128,4725,1491],{"class":1290},[1128,4727,1516],{"class":1138},[1128,4729,4321],{"class":1261},[1128,4731,1516],{"class":1138},[1128,4733,3546],{"class":1261},[1128,4735,2743],{"class":1138},[1128,4737,4738,4741,4743,4745,4747,4749,4751,4753,4756],{"class":1130,"line":1962},[1128,4739,4740],{"class":1290},"      port",[1128,4742,1294],{"class":1138},[1128,4744,3202],{"class":1257},[1128,4746,1491],{"class":1290},[1128,4748,1516],{"class":1138},[1128,4750,4321],{"class":1261},[1128,4752,1516],{"class":1138},[1128,4754,4755],{"class":1261},"port",[1128,4757,2743],{"class":1138},[1128,4759,4760],{"class":1130,"line":1968},[1128,4761,4762],{"class":1167},"      /* other redis connector options */\n",[1128,4764,4765,4767],{"class":1130,"line":1980},[1128,4766,1983],{"class":1138},[1128,4768,1317],{"class":1290},[1128,4770,4771],{"class":1130,"line":2001},[1128,4772,1404],{"emptyLinePlaceholder":1403},[1128,4774,4775],{"class":1130,"line":2007},[1128,4776,4777],{"class":1167},"  // Mount driver\n",[1128,4779,4780,4783,4785,4788,4790,4792,4794,4796,4798,4800],{"class":1130,"line":2019},[1128,4781,4782],{"class":1261},"  storage",[1128,4784,1516],{"class":1138},[1128,4786,4787],{"class":1257},"mount",[1128,4789,1262],{"class":1290},[1128,4791,1382],{"class":1138},[1128,4793,4321],{"class":1300},[1128,4795,1382],{"class":1138},[1128,4797,1740],{"class":1138},[1128,4799,4690],{"class":1261},[1128,4801,1317],{"class":1290},[1128,4803,4804,4806],{"class":1130,"line":2025},[1128,4805,1314],{"class":1138},[1128,4807,1317],{"class":1261},[1117,4809,4811],{"className":1239,"code":4810,"filename":260,"language":1242,"meta":1123,"style":1123},"export default defineNuxtConfig({\n  runtimeConfig: {\n    redis: { // Default values\n      host: '',\n      port: 0,\n      /* other redis connector options */\n    }\n  }\n})\n",[1125,4812,4813,4825,4833,4845,4856,4866,4870,4874,4878],{"__ignoreMap":1123},[1128,4814,4815,4817,4819,4821,4823],{"class":1130,"line":1131},[1128,4816,1251],{"class":1250},[1128,4818,1254],{"class":1250},[1128,4820,3313],{"class":1257},[1128,4822,1262],{"class":1261},[1128,4824,1998],{"class":1138},[1128,4826,4827,4829,4831],{"class":1130,"line":1145},[1128,4828,3322],{"class":1290},[1128,4830,1294],{"class":1138},[1128,4832,1278],{"class":1138},[1128,4834,4835,4838,4840,4842],{"class":1130,"line":1156},[1128,4836,4837],{"class":1290},"    redis",[1128,4839,1294],{"class":1138},[1128,4841,1363],{"class":1138},[1128,4843,4844],{"class":1167}," // Default values\n",[1128,4846,4847,4849,4851,4854],{"class":1130,"line":1171},[1128,4848,4719],{"class":1290},[1128,4850,1294],{"class":1138},[1128,4852,4853],{"class":1138}," ''",[1128,4855,2743],{"class":1138},[1128,4857,4858,4860,4862,4864],{"class":1130,"line":1181},[1128,4859,4740],{"class":1290},[1128,4861,1294],{"class":1138},[1128,4863,4400],{"class":1667},[1128,4865,2743],{"class":1138},[1128,4867,4868],{"class":1130,"line":1194},[1128,4869,4762],{"class":1167},[1128,4871,4872],{"class":1130,"line":1204},[1128,4873,2022],{"class":1138},[1128,4875,4876],{"class":1130,"line":1934},[1128,4877,1309],{"class":1138},[1128,4879,4880,4882],{"class":1130,"line":1940},[1128,4881,1314],{"class":1138},[1128,4883,1317],{"class":1261},[4885,4886,4887],"style",{},"html pre.shiki code .sT2Ow, html code.shiki .sT2Ow{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sYp4K, html code.shiki .sYp4K{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .svXlt, html code.shiki .svXlt{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sQ5dg, html code.shiki .sQ5dg{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .sRBFq, html code.shiki .sRBFq{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .s5UST, html code.shiki .s5UST{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html pre.shiki code .spdxX, html code.shiki .spdxX{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sFVN2, html code.shiki .sFVN2{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .szd4z, html code.shiki .szd4z{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .ssYd4, html code.shiki .ssYd4{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sV9sa, html code.shiki .sV9sa{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}",{"title":1123,"searchDepth":1145,"depth":1145,"links":4889},[4890,4891,4892,4893,4894,4895,4908],{"id":1444,"depth":1145,"text":1445},{"id":1529,"depth":1145,"text":1530},{"id":1680,"depth":1145,"text":1681},{"id":1760,"depth":1145,"text":1761},{"id":2033,"depth":1145,"text":2034},{"id":2096,"depth":1145,"text":323,"children":4896},[4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907],{"id":2099,"depth":1156,"text":2100},{"id":2220,"depth":1156,"text":2221},{"id":2454,"depth":1156,"text":2455},{"id":2581,"depth":1156,"text":2582},{"id":2805,"depth":1156,"text":2806},{"id":2910,"depth":1156,"text":74},{"id":3095,"depth":1156,"text":3096},{"id":3160,"depth":1156,"text":291},{"id":3386,"depth":1156,"text":3387},{"id":3454,"depth":1156,"text":3455},{"id":3552,"depth":1156,"text":3553},{"id":3711,"depth":1145,"text":3712,"children":4909},[4910,4911,4912,4913,4914,4915],{"id":3715,"depth":1156,"text":3716},{"id":3781,"depth":1156,"text":3782},{"id":3907,"depth":1156,"text":3908},{"id":4019,"depth":1156,"text":4020},{"id":4083,"depth":1156,"text":4084},{"id":4238,"depth":1156,"text":4239},"The server/ directory is used to register API and server handlers to your application.","md",{"head":4919},{"title":4920},"server/",{"icon":169},{"title":219,"description":4916},"oCz0B7XKsf",[4925,4927],{"title":215,"path":216,"stem":217,"description":4926,"icon":169,"children":-1},"The public/ directory is used to serve your website's static assets.",{"title":223,"path":224,"stem":225,"description":4928,"icon":169,"children":-1},"Use the shared/ directory to share functionality between the Vue app and the Nitro server.",1742651363095]